vendor: 6,287 bytes, lines 1-9
1var pS=Object.defineProperty;var lx=e=>{throw TypeError(e)};var fS=(e,t,r)=>t in e?pS(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var fn=(e,t,r)=>fS(e,typeof t!="symbol"?t+"":t,r),Yu=(e,t,r)=>t.has(e)||lx("Cannot "+r);var A=(e,t,r)=>(Yu(e,t,"read from private field"),r?r.call(e):t.get(e)),ue=(e,t,r)=>t.has(e)?lx("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),re=(e,t,r,s)=>(Yu(e,t,"write to private field"),s?s.call(e,r):t.set(e,r),r),ht=(e,t,r)=>(Yu(e,t,"access private method"),r);var Gl=(e,t,r,s)=>({set _(i){re(e,t,i,r)},get _(){return A(e,t,s)}});function gS(e,t){for(var r=0;r<t.length;r++){const s=t[r];if(typeof s!="string"&&!Array.isArray(s)){for(const i in s)if(i!=="default"&&!(i in e)){const a=Object.getOwnPropertyDescriptor(s,i);a&&Object.defineProperty(e,i,a.get?a:{enumerable:!0,get:()=>s[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function r(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function s(i){if(i.ep)return;i.ep=!0;const a=r(i);fetch(i.href,a)}})();function Nl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Mb={exports:{}},Gd={},Db={exports:{}},me={};/** 2 * @license React 3 * react.production.min.js 4 * 5 * Copyright (c) Facebook, Inc. and its affiliates. 6 * 7 * This source code is licensed under the MIT license found in the 8 * LICENSE file in the root directory of this source tree. 9 */var Sl=Symbol.for("react.element"),xS=Symbol.for("react.portal"),vS=Symbol.for("react.fragment"),yS=Symbol.for("react.strict_mode"),bS=Symbol.for("react.profiler"),wS=Symbol.for("react.provider"),jS=Symbol.for("react.context"),kS=Symbol.for("react.forward_ref"),NS=Symbol.for("react.suspense"),SS=Symbol.for("react.memo"),CS=Symbol.for("react.lazy"),cx=Symbol.iterator;function ES(e){return e===null||typeof e!="object"?null:(e=cx&&e[cx]||e["@@iterator"],typeof e=="function"?e:null)}var Lb={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Hb=Object.assign,$b={};function qa(e,t,r){this.props=e,this.context=t,this.refs=$b,this.updater=r||Lb}qa.prototype.isReactComponent={};qa.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};qa.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Bb(){}Bb.prototype=qa.prototype;function Xp(e,t,r){this.props=e,this.context=t,this.refs=$b,this.updater=r||Lb}var Gp=Xp.prototype=new Bb;Gp.constructor=Xp;Hb(Gp,qa.prototype);Gp.isPureReactComponent=!0;var dx=Array.isArray,Fb=Object.prototype.hasOwnProperty,Kp={current:null},Ub={key:!0,ref:!0,__self:!0,__source:!0};function Vb(e,t,r){var s,i={},a=null,o=null;if(t!=null)for(s in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(a=""+t.key),t)Fb.call(t,s)&&!Ub.hasOwnProperty(s)&&(i[s]=t[s]);var l=arguments.length-2;if(l===1)i.children=r;else if(1<l){for(var c=Array(l),d=0;d<l;d++)c[d]=arguments[d+2];i.children=c}if(e&&e.defaultProps)for(s in l=e.defaultProps,l)i[s]===void 0&&(i[s]=l[s]);return{$$typeof:Sl,type:e,key:a,ref:o,props:i,_owner:Kp.current}}function AS(e,t){return{$$typeof:Sl,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function Yp(e){return typeof e=="object"&&e!==null&&e.$$typeof===Sl}function PS(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var ux=/\/+/g;function Ju(e,t){return typeof e=="object"&&e!==null&&e.key!=null?PS(""+e.key):t.toString(36)}function Rc(e,t,r,s,i){var a=typeof e;(a==="undefined"||a==="boolean")&&(e=null);var o=!1;if(e===null)o=!0;else switch(a){case"string":case"number":o=!0;break;case"object":switch(e.$$typeof){case Sl:case xS:o=!0}}if(o)return o=e,i=i(o),e=s===""?"."+Ju(o,0):s,dx(i)?(r="",e!=null&&(r=e.replace(ux,"$&/")+"/"),Rc(i,t,r,"",function(d){return d})):i!=null&&(Yp(i)&&(i=AS(i,r+(!i.key||o&&o.key===i.key?"":(""+i.key).replace(ux,"$&/")+"/")+e)),t.push(i)),1;if(o=0,s=s===""?".":s+":",dx(e))for(var l=0;l<e.length;l++){a=e[l];var c=s+Ju(a,l);o+=Rc(a,t,r,c,i)}else if(c=ES(e),typeof c=="function")for(e=c.call(e),l=0;!(a=e.next()).done;)a=a.value,c=s+Ju(a,l++),o+=Rc(a,t,r,c,i);else if(a==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return o}function Kl(e,t,r){if(e==null)return e;var s=[],i=0;return Rc(e,s,"","",function(a){return t.call(r,a,i++)}),s}function TS(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(r){(e._status===0||e._status===-1)&&(e._status=1,e._result=r)},function(r){(e._status===0||e._status===-1)&&(e._status=2,e._result=r)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var It={current:null},Oc={transition:null},_S={ReactCurrentDispatcher:It,ReactCurrentBatchConfig:Oc,ReactCurrentOwner:Kp};function zb(){throw Error("act(...) is not supported in production builds of React.")}me.Children={map:Kl,forEach:function(e,t,r){Kl(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return Kl(e,function(){t++}),t},toArray:function(e){return Kl(e,function(t){return t})||[]},only:function(e){if(!Yp(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};me.Component=qa;me.Fragment=vS;me.Profiler=bS;me.PureComponent=Xp;me.StrictMode=yS;me.Suspense=NS;
vendor: 7,024 bytes, lines 9-25
9me.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=_S;me.act=zb;me.cloneElement=function(e,t,r){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var s=Hb({},e.props),i=e.key,a=e.ref,o=e._owner;if(t!=null){if(t.ref!==void 0&&(a=t.ref,o=Kp.current),t.key!==void 0&&(i=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(c in t)Fb.call(t,c)&&!Ub.hasOwnProperty(c)&&(s[c]=t[c]===void 0&&l!==void 0?l[c]:t[c])}var c=arguments.length-2;if(c===1)s.children=r;else if(1<c){l=Array(c);for(var d=0;d<c;d++)l[d]=arguments[d+2];s.children=l}return{$$typeof:Sl,type:e.type,key:i,ref:a,props:s,_owner:o}};me.createContext=function(e){return e={$$typeof:jS,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:wS,_context:e},e.Consumer=e};me.createElement=Vb;me.createFactory=function(e){var t=Vb.bind(null,e);return t.type=e,t};me.createRef=function(){return{current:null}};me.forwardRef=function(e){return{$$typeof:kS,render:e}};me.isValidElement=Yp;me.lazy=function(e){return{$$typeof:CS,_payload:{_status:-1,_result:e},_init:TS}};me.memo=function(e,t){return{$$typeof:SS,type:e,compare:t===void 0?null:t}};me.startTransition=function(e){var t=Oc.transition;Oc.transition={};try{e()}finally{Oc.transition=t}};me.unstable_act=zb;me.useCallback=function(e,t){return It.current.useCallback(e,t)};me.useContext=function(e){return It.current.useContext(e)};me.useDebugValue=function(){};me.useDeferredValue=function(e){return It.current.useDeferredValue(e)};me.useEffect=function(e,t){return It.current.useEffect(e,t)};me.useId=function(){return It.current.useId()};me.useImperativeHandle=function(e,t,r){return It.current.useImperativeHandle(e,t,r)};me.useInsertionEffect=function(e,t){return It.current.useInsertionEffect(e,t)};me.useLayoutEffect=function(e,t){return It.current.useLayoutEffect(e,t)};me.useMemo=function(e,t){return It.current.useMemo(e,t)};me.useReducer=function(e,t,r){return It.current.useReducer(e,t,r)};me.useRef=function(e){return It.current.useRef(e)};me.useState=function(e){return It.current.useState(e)};me.useSyncExternalStore=function(e,t,r){return It.current.useSyncExternalStore(e,t,r)};me.useTransition=function(){return It.current.useTransition()};me.version="18.3.1";Db.exports=me;var f=Db.exports;const L=Nl(f),Ci=gS({__proto__:null,default:L},[f]);/** 10 * @license React 11 * react-jsx-runtime.production.min.js 12 * 13 * Copyright (c) Facebook, Inc. and its affiliates. 14 * 15 * This source code is licensed under the MIT license found in the 16 * LICENSE file in the root directory of this source tree. 17 */var IS=f,RS=Symbol.for("react.element"),OS=Symbol.for("react.fragment"),MS=Object.prototype.hasOwnProperty,DS=IS.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,LS={key:!0,ref:!0,__self:!0,__source:!0};function Wb(e,t,r){var s,i={},a=null,o=null;r!==void 0&&(a=""+r),t.key!==void 0&&(a=""+t.key),t.ref!==void 0&&(o=t.ref);for(s in t)MS.call(t,s)&&!LS.hasOwnProperty(s)&&(i[s]=t[s]);if(e&&e.defaultProps)for(s in t=e.defaultProps,t)i[s]===void 0&&(i[s]=t[s]);return{$$typeof:RS,type:e,key:a,ref:o,props:i,_owner:DS.current}}Gd.Fragment=OS;Gd.jsx=Wb;Gd.jsxs=Wb;Mb.exports=Gd;var n=Mb.exports,Zb={exports:{}},tr={},qb={exports:{}},Xb={};/** 18 * @license React 19 * scheduler.production.min.js 20 * 21 * Copyright (c) Facebook, Inc. and its affiliates. 22 * 23 * This source code is licensed under the MIT license found in the 24 * LICENSE file in the root directory of this source tree. 25 */(function(e){function t(P,_){var F=P.length;P.push(_);e:for(;0<F;){var Y=F-1>>>1,q=P[Y];if(0<i(q,_))P[Y]=_,P[F]=q,F=Y;else break e}}function r(P){return P.length===0?null:P[0]}function s(P){if(P.length===0)return null;var _=P[0],F=P.pop();if(F!==_){P[0]=F;e:for(var Y=0,q=P.length,Z=q>>>1;Y<Z;){var ee=2*(Y+1)-1,le=P[ee],Ee=ee+1,ce=P[Ee];if(0>i(le,F))Ee<q&&0>i(ce,le)?(P[Y]=ce,P[Ee]=F,Y=Ee):(P[Y]=le,P[ee]=F,Y=ee);else if(Ee<q&&0>i(ce,F))P[Y]=ce,P[Ee]=F,Y=Ee;else break e}}return _}function i(P,_){var F=P.sortIndex-_.sortIndex;return F!==0?F:P.id-_.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,l=o.now();e.unstable_now=function(){return o.now()-l}}var c=[],d=[],u=1,h=null,p=3,m=!1,y=!1,b=!1,w=typeof setTimeout=="function"?setTimeout:null,g=typeof clearTimeout=="function"?clearTimeout:null,v=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function x(P){for(var _=r(d);_!==null;){if(_.callback===null)s(d);else if(_.startTime<=P)s(d),_.sortIndex=_.expirationTime,t(c,_);else break;_=r(d)}}function j(P){if(b=!1,x(P),!y)if(r(c)!==null)y=!0,H(k);else{var _=r(d);_!==null&&U(j,_.startTime-P)}}function k(P,_){y=!1,b&&(b=!1,g(C),C=-1),m=!0;var F=p;try{for(x(_),h=r(c);h!==null&&(!(h.expirationTime>_)||P&&!B());){var Y=h.callback;if(typeof Y=="function"){h.callback=null,p=h.priorityLevel;var q=Y(h.expirationTime<=_);_=e.unstable_now(),typeof q=="function"?h.callback=q:h===r(c)&&s(c),x(_)}else s(c);h=r(c)}if(h!==null)var Z=!0;else{var ee=r(d);ee!==null&&U(j,ee.startTime-_),Z=!1}return Z}finally{h=null,p=F,m=!1}}var N=!1,S=null,C=-1,E=5,I=-1;function B(){return!(e.unstable_now()-I<E)}function R(){if(S!==null){var P=e.unstable_now();I=P;var _=!0;try{_=S(!0,P)}finally{_?O():(N=!1,S=null)}}else N=!1}var O;if(typeof v=="function")O=function(){v(R)};else if(typeof MessageChannel<"u"){var T=new MessageChannel,W=T.port2;T.port1.onmessage=R,O=function(){W.postMessage(null)}}else O=function(){w(R,0)};function H(P){S=P,N||(N=!0,O())}function U(P,_){C=w(function(){P(e.unstable_now())},_)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(P){P.callback=null},e.unstable_continueExecution=function(){y||m||(y=!0,H(k))},e.unstable_forceFrameRate=function(P){0>P||125<P?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):E=0<P?Math.floor(1e3/P):5},e.unstable_getCurrentPriorityLevel=function(){return p},e.unstable_getFirstCallbackNode=function(){return r(c)},e.unstable_next=function(P){switch(p){case 1:case 2:case 3:var _=3;break;default:_=p}var F=p;p=_;try{return P()}finally{p=F}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(P,_){switch(P){case 1:case 2:case 3:case 4:case 5:break;default:P=3}var F=p;p=P;try{return _()}finally{p=F}},e.unstable_scheduleCallback=function(P,_,F){var Y=e.unstable_now();switch(typeof F=="object"&&F!==null?(F=F.delay,F=typeof F=="number"&&0<F?Y+F:Y):F=Y,P){case 1:var q=-1;break;case 2:q=250;break;case 5:q=1073741823;break;case 4:q=1e4;break;default:q=5e3}
vendor: 4,614 bytes, lines 25-33
25return q=F+q,P={id:u++,callback:_,priorityLevel:P,startTime:F,expirationTime:q,sortIndex:-1},F>Y?(P.sortIndex=F,t(d,P),r(c)===null&&P===r(d)&&(b?(g(C),C=-1):b=!0,U(j,F-Y))):(P.sortIndex=q,t(c,P),y||m||(y=!0,H(k))),P},e.unstable_shouldYield=B,e.unstable_wrapCallback=function(P){var _=p;return function(){var F=p;p=_;try{return P.apply(this,arguments)}finally{p=F}}}})(Xb);qb.exports=Xb;var HS=qb.exports;/** 26 * @license React 27 * react-dom.production.min.js 28 * 29 * Copyright (c) Facebook, Inc. and its affiliates. 30 * 31 * This source code is licensed under the MIT license found in the 32 * LICENSE file in the root directory of this source tree. 33 */var $S=f,er=HS;function $(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var Gb=new Set,Bo={};function Ei(e,t){Ma(e,t),Ma(e+"Capture",t)}function Ma(e,t){for(Bo[e]=t,e=0;e<t.length;e++)Gb.add(t[e])}var Mn=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),nm=Object.prototype.hasOwnProperty,BS=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,hx={},mx={};function FS(e){return nm.call(mx,e)?!0:nm.call(hx,e)?!1:BS.test(e)?mx[e]=!0:(hx[e]=!0,!1)}function US(e,t,r,s){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return s?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function VS(e,t,r,s){if(t===null||typeof t>"u"||US(e,t,r,s))return!0;if(s)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Rt(e,t,r,s,i,a,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=s,this.attributeNamespace=i,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=o}var gt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){gt[e]=new Rt(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];gt[t]=new Rt(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){gt[e]=new Rt(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){gt[e]=new Rt(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){gt[e]=new Rt(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){gt[e]=new Rt(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){gt[e]=new Rt(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){gt[e]=new Rt(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){gt[e]=new Rt(e,5,!1,e.toLowerCase(),null,!1,!1)});var Jp=/[\-:]([a-z])/g;function Qp(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode
33-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Jp,Qp);gt[t]=new Rt(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Jp,Qp);gt[t]=new Rt(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Jp,Qp);gt[t]=new Rt(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){gt[e]=new Rt(e,1,!1,e.toLowerCase(),null,!1,!1)});gt.xlinkHref=new Rt("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){gt[e]=new Rt(e,1,!1,e.toLowerCase(),null,!0,!0)});function ef(e,t,r,s){var i=gt.hasOwnProperty(t)?gt[t]:null;(i!==null?i.type!==0:s||!(2<t.length)||t[0]!=="o"&&t[0]!=="O"||t[1]!=="n"&&t[1]!=="N")&&(VS(t,r,i,s)&&(r=null),s||i===null?FS(t)&&(r===null?e.removeAttribute(t):e.setAttribute(t,""+r)):i.mustUseProperty?e[i.propertyName]=r===null?i.type===3?!1:"":r:(t=i.attributeName,s=i.attributeNamespace,r===null?e.removeAttribute(t):(i=i.type,r=i===3||i===4&&r===!0?"":""+r,s?e.setAttributeNS(s,t,r):e.setAttribute(t,r))))}var Vn=$S.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Yl=Symbol.for("react.element"),Ki=Symbol.for("react.portal"),Yi=Symbol.for("react.fragment"),tf=Symbol.for("react.strict_mode"),sm=Symbol.for("react.profiler"),Kb=Symbol.for("react.provider"),Yb=Symbol.for("react.context"),rf=Symbol.for("react.forward_ref"),im=Symbol.for("react.suspense"),am=Symbol.for("react.suspense_list"),nf=Symbol.for("react.memo"),ts=Symbol.for("react.lazy"),Jb=Symbol.for("react.offscreen"),px=Symbol.iterator;function io(e){return e===null||typeof e!="object"?null:(e=px&&e[px]||e["@@iterator"],typeof e=="function"?e:null)}var Ze=Object.assign,Qu;function bo(e){if(Qu===void 0)try{throw Error()}catch(r){var t=r.stack.trim().match(/\n( *(at )?)/);Qu=t&&t[1]||""}return` 34`+Qu+e}var eh=!1;function th(e,t){if(!e||eh)return"";eh=!0;var r=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(t,[])}catch(d){var s=d}Reflect.construct(e,[],t)}else{try{t.call()}catch(d){s=d}e.call(t.prototype)}else{try{throw Error()}catch(d){s=d}e()}}catch(d){if(d&&s&&typeof d.stack=="string"){for(var i=d.stack.split(` 35`),a=s.stack.split(` 36`),o=i.length-1,l=a.length-1;1<=o&&0<=l&&i[o]!==a[l];)l--;for(;1<=o&&0<=l;o--,l--)if(i[o]!==a[l]){if(o!==1||l!==1)do if(o--,l--,0>l||i[o]!==a[l]){var c=` 37`+i[o].replace(" at new "," at ");return e.displayName&&c.includes("<anonymous>")&&(c=c.replace("<anonymous>",e.displayName)),c}while(1<=o&&0<=l);break}}}finally{eh=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?bo(e):""}function zS(e){switch(e.tag){case 5:return bo(e.type);case 16:return bo("Lazy");case 13:return bo("Suspense");case 19:return bo("SuspenseList");case 0:case 2:case 15:return e=th(e.type,!1),e;case 11:return e=th(e.type.render,!1),e;case 1:return e=th(e.type,!0),e;default:return""}}function om(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Yi:return"Fragment";case Ki:return"Portal";case sm:return"Profiler";case tf:return"StrictMode";case im:return"Suspense";case am:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Yb:return(e.displayName||"Context")+".Consumer";case Kb:return(e._context.displayName||"Context")+".Provider";case rf:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case nf:return t=e.displayName||null,t!==null?t:om(e.type)||"Memo";case ts:t=e._payload,e=e._init;try{return om(e(t))}catch{}}return null}function WS(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return om(t);case 8:return t===tf?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function As(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Qb(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function ZS(e){var t=Qb(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),s=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var i=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(o){s=""+o,a.call(this,o)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return s},setValue:function(o){s=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Jl(e){e._valueTracker||(e._valueTracker=ZS(e))}function ew(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),s="";return e&&(s=Qb(e)?e.checked?"true":"false":e.value),e=s,e!==r?(t.setValue(e),!0):!1}function id(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}}function lm(e,t){var r=t.checked;return Ze({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function fx(e,t){var r=t.defaultValue==null?"":t.defaultValue,s=t.checked!=null?t.checked:t.defaultChecked;r=As(t.value!=null?t.value:r),e._wrapperState={initialChecked:s,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}
vendor: 4,651 bytes, line 37
37function tw(e,t){t=t.checked,t!=null&&ef(e,"checked",t,!1)}function cm(e,t){tw(e,t);var r=As(t.value),s=t.type;if(r!=null)s==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(s==="submit"||s==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?dm(e,t.type,r):t.hasOwnProperty("defaultValue")&&dm(e,t.type,As(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function gx(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var s=t.type;if(!(s!=="submit"&&s!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function dm(e,t,r){(t!=="number"||id(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var wo=Array.isArray;function da(e,t,r,s){if(e=e.options,t){t={};for(var i=0;i<r.length;i++)t["$"+r[i]]=!0;for(r=0;r<e.length;r++)i=t.hasOwnProperty("$"+e[r].value),e[r].selected!==i&&(e[r].selected=i),i&&s&&(e[r].defaultSelected=!0)}else{for(r=""+As(r),t=null,i=0;i<e.length;i++){if(e[i].value===r){e[i].selected=!0,s&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function um(e,t){if(t.dangerouslySetInnerHTML!=null)throw Error($(91));return Ze({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function xx(e,t){var r=t.value;if(r==null){if(r=t.children,t=t.defaultValue,r!=null){if(t!=null)throw Error($(92));if(wo(r)){if(1<r.length)throw Error($(93));r=r[0]}t=r}t==null&&(t=""),r=t}e._wrapperState={initialValue:As(r)}}function rw(e,t){var r=As(t.value),s=As(t.defaultValue);r!=null&&(r=""+r,r!==e.value&&(e.value=r),t.defaultValue==null&&e.defaultValue!==r&&(e.defaultValue=r)),s!=null&&(e.defaultValue=""+s)}function vx(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}function nw(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function hm(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?nw(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var Ql,sw=function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(t,r,s,i){MSApp.execUnsafeLocalFunction(function(){return e(t,r,s,i)})}:e}(function(e,t){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=t;else{for(Ql=Ql||document.createElement("div"),Ql.innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=Ql.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Fo(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var Ao={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qS=["Webkit","ms","Moz","O"];Object.keys(Ao).forEach(function(e){qS.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Ao[t]=Ao[e]})});function iw(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||Ao.hasOwnProperty(e)&&Ao[e]?(""+t).trim():t+"px"}function aw(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var s=r.indexOf("--")===0,i=iw(r,t[r],s);r==="float"&&(r="cssFloat"),s?e.setProperty(r,i):e[r]=i}}var XS=Ze({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function mm(e,t){if(t){if(XS[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error($(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error($(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error($(61))}if(t.style!=null&&typeof t.style!="object")throw Error($(62))}}function pm(e,t){if(e.indexOf("-")===-1)return typeof t.is=="str
37ing";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 fm=null;function sf(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var gm=null,ua=null,ha=null;function yx(e){if(e=Al(e)){if(typeof gm!="function")throw Error($(280));var t=e.stateNode;t&&(t=eu(t),gm(e.stateNode,e.type,t))}}function ow(e){ua?ha?ha.push(e):ha=[e]:ua=e}function lw(){if(ua){var e=ua,t=ha;if(ha=ua=null,yx(e),t)for(e=0;e<t.length;e++)yx(t[e])}}function cw(e,t){return e(t)}function dw(){}var rh=!1;function uw(e,t,r){if(rh)return e(t,r);rh=!0;try{return cw(e,t,r)}finally{rh=!1,(ua!==null||ha!==null)&&(dw(),lw())}}function Uo(e,t){var r=e.stateNode;if(r===null)return null;var s=eu(r);if(s===null)return null;r=s[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":(s=!s.disabled)||(e=e.type,s=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!s;break e;default:e=!1}if(e)return null;if(r&&typeof r!="function")throw Error($(231,t,typeof r));return r}var xm=!1;if(Mn)try{var ao={};Object.defineProperty(ao,"passive",{get:function(){xm=!0}}),window.addEventListener("test",ao,ao),window.removeEventListener("test",ao,ao)}catch{xm=!1}function GS(e,t,r,s,i,a,o,l,c){var d=Array.prototype.slice.call(arguments,3);try{t.apply(r,d)}catch(u){this.onError(u)}}var Po=!1,ad=null,od=!1,vm=null,KS={onError:function(e){Po=!0,ad=e}};function YS(e,t,r,s,i,a,o,l,c){Po=!1,ad=null,GS.apply(KS,arguments)}function JS(e,t,r,s,i,a,o,l,c){if(YS.apply(this,arguments),Po){if(Po){var d=ad;Po=!1,ad=null}else throw Error($(198));od||(od=!0,vm=d)}}function Ai(e){var t=e,r=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(r=t.return),e=t.return;while(e)}return t.tag===3?r:null}function hw(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 bx(e){if(Ai(e)!==e)throw Error($(188))}function QS(e){var t=e.alternate;if(!t){if(t=Ai(e),t===null)throw Error($(188));return t!==e?null:e}for(var r=e,s=t;;){var i=r.return;if(i===null)break;var a=i.alternate;if(a===null){if(s=i.return,s!==null){r=s;continue}break}if(i.child===a.child){for(a=i.child;a;){if(a===r)return bx(i),e;if(a===s)return bx(i),t;a=a.sibling}throw Error($(188))}if(r.return!==s.return)r=i,s=a;else{for(var o=!1,l=i.child;l;){if(l===r){o=!0,r=i,s=a;break}if(l===s){o=!0,s=i,r=a;break}l=l.sibling}if(!o){for(l=a.child;l;){if(l===r){o=!0,r=a,s=i;break}if(l===s){o=!0,s=a,r=i;break}l=l.sibling}if(!o)throw Error($(189))}}if(r.alternate!==s)throw Error($(190))}if(r.tag!==3)throw Error($(188));return r.stateNode.current===r?e:t}function mw(e){return e=QS(e),e!==null?pw(e):null}function pw(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var t=pw(e);if(t!==null)return t;e=e.sibling}return null}var fw=er.unstable_scheduleCallback,wx=er.unstable_cancelCallback,eC=er.unstable_shouldYield,tC=er.unstable_requestPaint,Ke=er.unstable_now,rC=er.unstable_getCurrentPriorityLevel,af=er.unstable_ImmediatePriority,gw=er.unstable_UserBlockingPriority,ld=er.unstable_NormalPriority,nC=er.unstable_LowPriority,xw=er.unstable_IdlePriority,Kd=null,tn=null;function sC(e){if(tn&&typeof tn.onCommitFiberRoot=="function")try{tn.onCommitFiberRoot(Kd,e,void 0,(e.current.flags&128)===128)}catch{}}var Hr=Math.clz32?Math.clz32:oC,iC=Math.log,aC=Math.LN2;function oC(e){return e>>>=0,e===0?32:31-(iC(e)/aC|0)|0}var ec=64,tc=4194304;function jo(e){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: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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function cd(e,t){var r=e.pendingLanes;if(r===0)return 0;var s=0,i=e.suspendedLanes,a=e.pingedLanes,o=r&268435455;if(o!==0){var l=o&~i;l!==0?s=jo(l):(a&=o,a!==0&&(s=jo(a)))}else o=r&~i,o!==0?s=jo(o):a!==0&&(s=jo(a));if(s===0)return 0;if(t!==0&&t!==s&&!(t&i)&&(i=s&-s,a=t&-t,i>=a||i===16&&(a&4194240)!==0))return t;if(s&4&&(s|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=s;0<t;)r=31-Hr(t),i=1<<r,s|=e[r],t&=~i;return s}function lC(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64: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:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function cC(e,t){for(var r=e.suspendedLanes,s=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes;0<a;){var o=31-Hr(a),l=1<<o,c=i[o];c===-1?(!(l&r)||l&s)&&(i[o]=lC(l,t)):c<=t&&(e.expiredLanes|=l),a&=~l}}function ym(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function vw(){var e=ec;return ec<<=1,!(ec&4194240)&&(ec=64),e}function nh(e){for(var t=[],r=0;31>r;r++)t.push(e);return t}
vendor: 4,087 bytes, line 37
37function Cl(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Hr(t),e[t]=r}function dC(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var s=e.eventTimes;for(e=e.expirationTimes;0<r;){var i=31-Hr(r),a=1<<i;t[i]=0,s[i]=-1,e[i]=-1,r&=~a}}function of(e,t){var r=e.entangledLanes|=t;for(e=e.entanglements;r;){var s=31-Hr(r),i=1<<s;i&t|e[s]&t&&(e[s]|=t),r&=~i}}var Ae=0;function yw(e){return e&=-e,1<e?4<e?e&268435455?16:536870912:4:1}var bw,lf,ww,jw,kw,bm=!1,rc=[],gs=null,xs=null,vs=null,Vo=new Map,zo=new Map,ns=[],uC="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function jx(e,t){switch(e){case"focusin":case"focusout":gs=null;break;case"dragenter":case"dragleave":xs=null;break;case"mouseover":case"mouseout":vs=null;break;case"pointerover":case"pointerout":Vo.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":zo.delete(t.pointerId)}}function oo(e,t,r,s,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:r,eventSystemFlags:s,nativeEvent:a,targetContainers:[i]},t!==null&&(t=Al(t),t!==null&&lf(t)),e):(e.eventSystemFlags|=s,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function hC(e,t,r,s,i){switch(t){case"focusin":return gs=oo(gs,e,t,r,s,i),!0;case"dragenter":return xs=oo(xs,e,t,r,s,i),!0;case"mouseover":return vs=oo(vs,e,t,r,s,i),!0;case"pointerover":var a=i.pointerId;return Vo.set(a,oo(Vo.get(a)||null,e,t,r,s,i)),!0;case"gotpointercapture":return a=i.pointerId,zo.set(a,oo(zo.get(a)||null,e,t,r,s,i)),!0}return!1}function Nw(e){var t=ti(e.target);if(t!==null){var r=Ai(t);if(r!==null){if(t=r.tag,t===13){if(t=hw(r),t!==null){e.blockedOn=t,kw(e.priority,function(){ww(r)});return}}else if(t===3&&r.stateNode.current.memoizedState.isDehydrated){e.blockedOn=r.tag===3?r.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Mc(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var r=wm(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(r===null){r=e.nativeEvent;var s=new r.constructor(r.type,r);fm=s,r.target.dispatchEvent(s),fm=null}else return t=Al(r),t!==null&&lf(t),e.blockedOn=r,!1;t.shift()}return!0}function kx(e,t,r){Mc(e)&&r.delete(t)}function mC(){bm=!1,gs!==null&&Mc(gs)&&(gs=null),xs!==null&&Mc(xs)&&(xs=null),vs!==null&&Mc(vs)&&(vs=null),Vo.forEach(kx),zo.forEach(kx)}function lo(e,t){e.blockedOn===t&&(e.blockedOn=null,bm||(bm=!0,er.unstable_scheduleCallback(er.unstable_NormalPriority,mC)))}function Wo(e){function t(i){return lo(i,e)}if(0<rc.length){lo(rc[0],e);for(var r=1;r<rc.length;r++){var s=rc[r];s.blockedOn===e&&(s.blockedOn=null)}}for(gs!==null&&lo(gs,e),xs!==null&&lo(xs,e),vs!==null&&lo(vs,e),Vo.forEach(t),zo.forEach(t),r=0;r<ns.length;r++)s=ns[r],s.blockedOn===e&&(s.blockedOn=null);for(;0<ns.length&&(r=ns[0],r.blockedOn===null);)Nw(r),r.blockedOn===null&&ns.shift()}var ma=Vn.ReactCurrentBatchConfig,dd=!0;function pC(e,t,r,s){var i=Ae,a=ma.transition;ma.transition=null;try{Ae=1,cf(e,t,r,s)}finally{Ae=i,ma.transition=a}}function fC(e,t,r,s){var i=Ae,a=ma.transition;ma.transition=null;try{Ae=4,cf(e,t,r,s)}finally{Ae=i,ma.transition=a}}function cf(e,t,r,s){if(dd){var i=wm(e,t,r,s);if(i===null)mh(e,t,s,ud,r),jx(e,s);else if(hC(i,e,t,r,s))s.stopPropagation();else if(jx(e,s),t&4&&-1<uC.indexOf(e)){for(;i!==null;){var a=Al(i);if(a!==null&&bw(a),a=wm(e,t,r,s),a===null&&mh(e,t,s,ud,r),a===i)break;i=a}i!==null&&s.stopPropagation()}else mh(e,t,s,null,r)}}var ud=null;function wm(e,t,r,s){if(ud=null,e=sf(s),e=ti(e),e!==null)if(t=Ai(e),t===null)e=null;else if(r=t.tag,r===13){if(e=hw(t),e!==null)return e;e=null}else if(r===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return ud=e,null}
vendor: 10,401 bytes, line 37
37function Sw(e){switch(e){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"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 1;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"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(rC()){case af:return 1;case gw:return 4;case ld:case nC:return 16;case xw:return 536870912;default:return 16}default:return 16}}var ms=null,df=null,Dc=null;function Cw(){if(Dc)return Dc;var e,t=df,r=t.length,s,i="value"in ms?ms.value:ms.textContent,a=i.length;for(e=0;e<r&&t[e]===i[e];e++);var o=r-e;for(s=1;s<=o&&t[r-s]===i[a-s];s++);return Dc=i.slice(e,1<s?1-s:void 0)}function Lc(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 nc(){return!0}function Nx(){return!1}function rr(e){function t(r,s,i,a,o){this._reactName=r,this._targetInst=i,this.type=s,this.nativeEvent=a,this.target=o,this.currentTarget=null;for(var l in e)e.hasOwnProperty(l)&&(r=e[l],this[l]=r?r(a):a[l]);return this.isDefaultPrevented=(a.defaultPrevented!=null?a.defaultPrevented:a.returnValue===!1)?nc:Nx,this.isPropagationStopped=Nx,this}return Ze(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var r=this.nativeEvent;r&&(r.preventDefault?r.preventDefault():typeof r.returnValue!="unknown"&&(r.returnValue=!1),this.isDefaultPrevented=nc)},stopPropagation:function(){var r=this.nativeEvent;r&&(r.stopPropagation?r.stopPropagation():typeof r.cancelBubble!="unknown"&&(r.cancelBubble=!0),this.isPropagationStopped=nc)},persist:function(){},isPersistent:nc}),t}var Xa={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},uf=rr(Xa),El=Ze({},Xa,{view:0,detail:0}),gC=rr(El),sh,ih,co,Yd=Ze({},El,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:hf,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!==co&&(co&&e.type==="mousemove"?(sh=e.screenX-co.screenX,ih=e.screenY-co.screenY):ih=sh=0,co=e),sh)},movementY:function(e){return"movementY"in e?e.movementY:ih}}),Sx=rr(Yd),xC=Ze({},Yd,{dataTransfer:0}),vC=rr(xC),yC=Ze({},El,{relatedTarget:0}),ah=rr(yC),bC=Ze({},Xa,{animationName:0,elapsedTime:0,pseudoElement:0}),wC=rr(bC),jC=Ze({},Xa,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kC=rr(jC),NC=Ze({},Xa,{data:0}),Cx=rr(NC),SC={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},CC={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"},EC={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function AC(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=EC[e])?!!t[e]:!1}function hf(){return AC}var PC=Ze({},El,{key:function(e){if(e.key){var t=SC[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Lc(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?CC[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:hf,charCode:function(e){return e.type==="keypress"?Lc(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Lc(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),TC=rr(PC),_C=Ze({},Yd,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Ex=rr(_C),IC=Ze({},El,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:hf}),RC=rr(IC),OC=Ze({},Xa,{propertyName:0,elapsedTime:0,pseudoElement:0}),MC=rr(OC),DC=Ze({},Yd,{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}),LC=rr(DC),HC=[9,13,27,32],mf=Mn&&"CompositionEvent"in window,To=null;Mn&&"documentMode"in document&&(To=document.documentMode);var $C=Mn&&"TextEvent"in window&&!To,Ew=Mn&&(!mf||To&&8<To&&11>=To),Ax=" ",Px=!1;function Aw(e,t){switch(e){case"keyup":return HC.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Pw(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ji=!1;function BC(e,t){switch(e){case"compositionend":return Pw(t);case"keypress":return t.which!==32?null:(Px=!0,Ax);case"textInput":return e=t.data,e===Ax&&Px?null:e;default:return null}}function FC(e,t){if(Ji)return e==="compositionend"||!mf&&Aw(e,t)?(e=Cw(),Dc=df=ms=null,Ji=!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 Ew&&t.locale!=="ko"?null:t.data;default:return null}}var UC={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 Tx(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!UC[e.type]:t==="textarea"}function Tw(e,t,r,s){ow(s),t=hd(t,"onChange"),0<t.length&&(r=new uf("onChange","change",null,r,s),e.push({event:r,listeners:t}))}var _o=null,Zo=null;function VC(e){Fw(e,0)}function Jd(e){var t=ta(e);if(ew(t))return e}function zC(e,t){if(e==="change")return t}var _w=!1;if(Mn){var oh;if(Mn){var lh="oninput"in document;if(!lh){var _x=document.createElement("div");_x.setAttribute("oninput","return;"),lh=typeof _x.oninput=="function"}oh=lh}else oh=!1;_w=oh&&(!document.documentMode||9<document.documentMode)}function Ix(){_o&&(_o.detachEvent("onpropertychange",Iw),Zo=_o=null)}function Iw(e){if(e.propertyName==="value"&&Jd(Zo)){var t=[];Tw(t,Zo,e,sf(e)),uw(VC,t)}}function WC(e,t,r){e==="focusin"?(Ix(),_o=t,Zo=r,_o.attachEvent("onpropertychange",Iw)):e==="focusout"&&Ix()}function ZC(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Jd(Zo)}function qC(e,t){if(e==="click")return Jd(t)}function XC(e,t){if(e==="input"||e==="change")return Jd(t)}function GC(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Fr=typeof Object.is=="function"?Object.is:GC;function qo(e,t){if(Fr(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length)return!1;for(s=0;s<r.length;s++){var i=r[s];if(!nm.call(t,i)||!Fr(e[i],t[i]))return!1}return!0}function Rx(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Ox(e,t){var r=Rx(e);e=0;for(var s;r;){if(r.nodeType===3){if(s=e+r.textContent.length,e<=t&&s>=t)return{node:r,offset:t-e};e=s}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Rx(r)}}function Rw(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Rw(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ow(){for(var e=window,t=id();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=id(e.document)}return t}function pf(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")}function KC(e){var t=Ow(),r=e.focusedElem,s=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&Rw(r.ownerDocument.documentElement,r)){if(s!==null&&pf(r)){if(t=s.start,e=s.end,e===void 0&&(e=t),"selectionStart"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=r.textContent.length,a=Math.min(s.start,i);s=s.end===void 0?a:Math.min(s.end,i),!e.extend&&a>s&&(i=s,s=a,a=i),i=Ox(r,a);var o=Ox(r,s);i&&o&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),a>s?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r<t.length;r++)e=t[r],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var YC=Mn&&"documentMode"in document&&11>=document.documentMode,Qi=null,jm=null,Io=null,km=!1;function Mx(e,t,r){var s=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;km||Qi==null||Qi!==id(s)||(s=Qi,"selectionStart"in s&&pf(s)?s={start:s.selectionStart,end:s.selectionEnd}:(s=(s.ownerDocument&&s.ownerDocument.defaultView||window).getSelection(),s={anchorNode:s.anchorNode,anchorOffset:s.anchorOffset,focu
vendor: 4,501 bytes, line 37
37sNode:s.focusNode,focusOffset:s.focusOffset}),Io&&qo(Io,s)||(Io=s,s=hd(jm,"onSelect"),0<s.length&&(t=new uf("onSelect","select",null,t,r),e.push({event:t,listeners:s}),t.target=Qi)))}function sc(e,t){var r={};return r[e.toLowerCase()]=t.toLowerCase(),r["Webkit"+e]="webkit"+t,r["Moz"+e]="moz"+t,r}var ea={animationend:sc("Animation","AnimationEnd"),animationiteration:sc("Animation","AnimationIteration"),animationstart:sc("Animation","AnimationStart"),transitionend:sc("Transition","TransitionEnd")},ch={},Mw={};Mn&&(Mw=document.createElement("div").style,"AnimationEvent"in window||(delete ea.animationend.animation,delete ea.animationiteration.animation,delete ea.animationstart.animation),"TransitionEvent"in window||delete ea.transitionend.transition);function Qd(e){if(ch[e])return ch[e];if(!ea[e])return e;var t=ea[e],r;for(r in t)if(t.hasOwnProperty(r)&&r in Mw)return ch[e]=t[r];return e}var Dw=Qd("animationend"),Lw=Qd("animationiteration"),Hw=Qd("animationstart"),$w=Qd("transitionend"),Bw=new Map,Dx="abort auxClick 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(" ");function Ms(e,t){Bw.set(e,t),Ei(t,[e])}for(var dh=0;dh<Dx.length;dh++){var uh=Dx[dh],JC=uh.toLowerCase(),QC=uh[0].toUpperCase()+uh.slice(1);Ms(JC,"on"+QC)}Ms(Dw,"onAnimationEnd");Ms(Lw,"onAnimationIteration");Ms(Hw,"onAnimationStart");Ms("dblclick","onDoubleClick");Ms("focusin","onFocus");Ms("focusout","onBlur");Ms($w,"onTransitionEnd");Ma("onMouseEnter",["mouseout","mouseover"]);Ma("onMouseLeave",["mouseout","mouseover"]);Ma("onPointerEnter",["pointerout","pointerover"]);Ma("onPointerLeave",["pointerout","pointerover"]);Ei("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));Ei("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Ei("onBeforeInput",["compositionend","keypress","textInput","paste"]);Ei("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Ei("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Ei("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var ko="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(" "),e2=new Set("cancel close invalid load scroll toggle".split(" ").concat(ko));function Lx(e,t,r){var s=e.type||"unknown-event";e.currentTarget=r,JS(s,t,void 0,e),e.currentTarget=null}function Fw(e,t){t=(t&4)!==0;for(var r=0;r<e.length;r++){var s=e[r],i=s.event;s=s.listeners;e:{var a=void 0;if(t)for(var o=s.length-1;0<=o;o--){var l=s[o],c=l.instance,d=l.currentTarget;if(l=l.listener,c!==a&&i.isPropagationStopped())break e;Lx(i,l,d),a=c}else for(o=0;o<s.length;o++){if(l=s[o],c=l.instance,d=l.currentTarget,l=l.listener,c!==a&&i.isPropagationStopped())break e;Lx(i,l,d),a=c}}}if(od)throw e=vm,od=!1,vm=null,e}function De(e,t){var r=t[Am];r===void 0&&(r=t[Am]=new Set);var s=e+"__bubble";r.has(s)||(Uw(t,e,2,!1),r.add(s))}function hh(e,t,r){var s=0;t&&(s|=4),Uw(r,e,s,t)}var ic="_reactListening"+Math.random().toString(36).slice(2);function Xo(e){if(!e[ic]){e[ic]=!0,Gb.forEach(function(r){r!=="selectionchange"&&(e2.has(r)||hh(r,!1,e),hh(r,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[ic]||(t[ic]=!0,hh("selectionchange",!1,t))}}function Uw(e,t,r,s){switch(Sw(t)){case 1:var i=pC;break;case 4:i=fC;break;default:i=cf}r=i.bind(null,t,r,e),i=void 0,!xm||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(i=!0),s?i!==void 0?e.addEventListener(t,r,{capture:!0,passive:i}):e.addEventListener(t,r,!0):i!==void 0?e.addEventListener(t,r,{passive:i}):e.addEventListener(t,r,!1)}function mh(e,t,r,s,i){var a=s;if(!(t&1)&&!(t&2)&&s!==null)e:for(;;){if(s===null)return;var o=s.tag;if(o===3||o===4){var l=s.stateNode.containerInfo;
vendor: 2,527 bytes, line 37
37if(l===i||l.nodeType===8&&l.parentNode===i)break;if(o===4)for(o=s.return;o!==null;){var c=o.tag;if((c===3||c===4)&&(c=o.stateNode.containerInfo,c===i||c.nodeType===8&&c.parentNode===i))return;o=o.return}for(;l!==null;){if(o=ti(l),o===null)return;if(c=o.tag,c===5||c===6){s=a=o;continue e}l=l.parentNode}}s=s.return}uw(function(){var d=a,u=sf(r),h=[];e:{var p=Bw.get(e);if(p!==void 0){var m=uf,y=e;switch(e){case"keypress":if(Lc(r)===0)break e;case"keydown":case"keyup":m=TC;break;case"focusin":y="focus",m=ah;break;case"focusout":y="blur",m=ah;break;case"beforeblur":case"afterblur":m=ah;break;case"click":if(r.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":m=Sx;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":m=vC;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":m=RC;break;case Dw:case Lw:case Hw:m=wC;break;case $w:m=MC;break;case"scroll":m=gC;break;case"wheel":m=LC;break;case"copy":case"cut":case"paste":m=kC;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":m=Ex}var b=(t&4)!==0,w=!b&&e==="scroll",g=b?p!==null?p+"Capture":null:p;b=[];for(var v=d,x;v!==null;){x=v;var j=x.stateNode;if(x.tag===5&&j!==null&&(x=j,g!==null&&(j=Uo(v,g),j!=null&&b.push(Go(v,j,x)))),w)break;v=v.return}0<b.length&&(p=new m(p,y,null,r,u),h.push({event:p,listeners:b}))}}if(!(t&7)){e:{if(p=e==="mouseover"||e==="pointerover",m=e==="mouseout"||e==="pointerout",p&&r!==fm&&(y=r.relatedTarget||r.fromElement)&&(ti(y)||y[Dn]))break e;if((m||p)&&(p=u.window===u?u:(p=u.ownerDocument)?p.defaultView||p.parentWindow:window,m?(y=r.relatedTarget||r.toElement,m=d,y=y?ti(y):null,y!==null&&(w=Ai(y),y!==w||y.tag!==5&&y.tag!==6)&&(y=null)):(m=null,y=d),m!==y)){if(b=Sx,j="onMouseLeave",g="onMouseEnter",v="mouse",(e==="pointerout"||e==="pointerover")&&(b=Ex,j="onPointerLeave",g="onPointerEnter",v="pointer"),w=m==null?p:ta(m),x=y==null?p:ta(y),p=new b(j,v+"leave",m,r,u),p.target=w,p.relatedTarget=x,j=null,ti(u)===d&&(b=new b(g,v+"enter",y,r,u),b.target=x,b.relatedTarget=w,j=b),w=j,m&&y)t:{for(b=m,g=y,v=0,x=b;x;x=Li(x))v++;for(x=0,j=g;j;j=Li(j))x++;for(;0<v-x;)b=Li(b),v--;for(;0<x-v;)g=Li(g),x--;for(;v--;){if(b===g||g!==null&&b===g.alternate)break t;b=Li(b),g=Li(g)}b=null}else b=null;m!==null&&Hx(h,p,m,b,!1),y!==null&&w!==null&&Hx(h,w,y,b,!0)}}
vendor: 6,372 bytes, lines 37-38
37e:{if(p=d?ta(d):window,m=p.nodeName&&p.nodeName.toLowerCase(),m==="select"||m==="input"&&p.type==="file")var k=zC;else if(Tx(p))if(_w)k=XC;else{k=ZC;var N=WC}else(m=p.nodeName)&&m.toLowerCase()==="input"&&(p.type==="checkbox"||p.type==="radio")&&(k=qC);if(k&&(k=k(e,d))){Tw(h,k,r,u);break e}N&&N(e,p,d),e==="focusout"&&(N=p._wrapperState)&&N.controlled&&p.type==="number"&&dm(p,"number",p.value)}switch(N=d?ta(d):window,e){case"focusin":(Tx(N)||N.contentEditable==="true")&&(Qi=N,jm=d,Io=null);break;case"focusout":Io=jm=Qi=null;break;case"mousedown":km=!0;break;case"contextmenu":case"mouseup":case"dragend":km=!1,Mx(h,r,u);break;case"selectionchange":if(YC)break;case"keydown":case"keyup":Mx(h,r,u)}var S;if(mf)e:{switch(e){case"compositionstart":var C="onCompositionStart";break e;case"compositionend":C="onCompositionEnd";break e;case"compositionupdate":C="onCompositionUpdate";break e}C=void 0}else Ji?Aw(e,r)&&(C="onCompositionEnd"):e==="keydown"&&r.keyCode===229&&(C="onCompositionStart");C&&(Ew&&r.locale!=="ko"&&(Ji||C!=="onCompositionStart"?C==="onCompositionEnd"&&Ji&&(S=Cw()):(ms=u,df="value"in ms?ms.value:ms.textContent,Ji=!0)),N=hd(d,C),0<N.length&&(C=new Cx(C,e,null,r,u),h.push({event:C,listeners:N}),S?C.data=S:(S=Pw(r),S!==null&&(C.data=S)))),(S=$C?BC(e,r):FC(e,r))&&(d=hd(d,"onBeforeInput"),0<d.length&&(u=new Cx("onBeforeInput","beforeinput",null,r,u),h.push({event:u,listeners:d}),u.data=S))}Fw(h,t)})}function Go(e,t,r){return{instance:e,listener:t,currentTarget:r}}function hd(e,t){for(var r=t+"Capture",s=[];e!==null;){var i=e,a=i.stateNode;i.tag===5&&a!==null&&(i=a,a=Uo(e,r),a!=null&&s.unshift(Go(e,a,i)),a=Uo(e,t),a!=null&&s.push(Go(e,a,i))),e=e.return}return s}function Li(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function Hx(e,t,r,s,i){for(var a=t._reactName,o=[];r!==null&&r!==s;){var l=r,c=l.alternate,d=l.stateNode;if(c!==null&&c===s)break;l.tag===5&&d!==null&&(l=d,i?(c=Uo(r,a),c!=null&&o.unshift(Go(r,c,l))):i||(c=Uo(r,a),c!=null&&o.push(Go(r,c,l)))),r=r.return}o.length!==0&&e.push({event:t,listeners:o})}var t2=/\r\n?/g,r2=/\u0000|\uFFFD/g;function $x(e){return(typeof e=="string"?e:""+e).replace(t2,` 38`).replace(r2,"")}function ac(e,t,r){if(t=$x(t),$x(e)!==t&&r)throw Error($(425))}function md(){}var Nm=null,Sm=null;function Cm(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Em=typeof setTimeout=="function"?setTimeout:void 0,n2=typeof clearTimeout=="function"?clearTimeout:void 0,Bx=typeof Promise=="function"?Promise:void 0,s2=typeof queueMicrotask=="function"?queueMicrotask:typeof Bx<"u"?function(e){return Bx.resolve(null).then(e).catch(i2)}:Em;function i2(e){setTimeout(function(){throw e})}function ph(e,t){var r=t,s=0;do{var i=r.nextSibling;if(e.removeChild(r),i&&i.nodeType===8)if(r=i.data,r==="/$"){if(s===0){e.removeChild(i),Wo(t);return}s--}else r!=="$"&&r!=="$?"&&r!=="$!"||s++;r=i}while(r);Wo(t)}function ys(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==="$?")break;if(t==="/$")return null}}return e}function Fx(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var r=e.data;if(r==="$"||r==="$!"||r==="$?"){if(t===0)return e;t--}else r==="/$"&&t++}e=e.previousSibling}return null}var Ga=Math.random().toString(36).slice(2),Jr="__reactFiber$"+Ga,Ko="__reactProps$"+Ga,Dn="__reactContainer$"+Ga,Am="__reactEvents$"+Ga,a2="__reactListeners$"+Ga,o2="__reactHandles$"+Ga;function ti(e){var t=e[Jr];if(t)return t;for(var r=e.parentNode;r;){if(t=r[Dn]||r[Jr]){if(r=t.alternate,t.child!==null||r!==null&&r.child!==null)for(e=Fx(e);e!==null;){if(r=e[Jr])return r;e=Fx(e)}return t}e=r,r=e.parentNode}return null}function Al(e){return e=e[Jr]||e[Dn],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function ta(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error($(33))}function eu(e){return e[Ko]||null}var Pm=[],ra=-1;function Ds(e){return{current:e}}function He(e){0>ra||(e.current=Pm[ra],Pm[ra]=null,ra--)}function Oe(e,t){ra++,Pm[ra]=e.current,e.current=t}var Ps={},jt=Ds(Ps),Ft=Ds(!1),gi=Ps;function Da(e,t){var r=e.type.contextTypes;if(!r)return Ps;var s=e.stateNode;if(s&&s.__reactInternalMemoizedUnmaskedChildContext===t)return s.__reactInternalMemoizedMaskedChildContext;var i={},a;for(a in r)i[a]=t[a];return s&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Ut(e){return e=e.childContextTypes,e!=null}function pd(){He(Ft),He(jt)}function Ux(e,t,r){if(jt.current!==Ps)throw Error($(168));Oe(jt,t),Oe(Ft,r)}function Vw(e,t,r){var s=e.stateNode;if(t=t.childContextTypes,typeof s.getChildContext!="function")return r;s=s.getChildContext();for(var i in s)if(!(i in t))throw Error($(108,WS(e)||"Unknown",i));return Ze({},r,s)}function fd(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ps,gi=jt.current,Oe(jt,e),Oe(Ft,Ft.current),!0}function Vx(e,t,r){var s=e.stateNode;if(!s)throw Error($(169));r?(e=Vw(e,t,gi),s.__reactInternalMemoizedMergedChildContext=e,He(Ft),He(jt),Oe(jt,e)):He(Ft),Oe(Ft,r)}var Cn=null,tu=!1,fh=!1;function zw(e){Cn===null?Cn=[e]:Cn.push(e)}function l2(e){tu=!0,zw(e)}function Ls(){if(!fh&&Cn!==null){fh=!0;var e=0,t=Ae;try{var r=Cn;for(Ae=1;e<r.length;e++){var s=r[e];do s=s(!0);while(s!==null)}Cn=null,tu=!1}catch(i){throw Cn!==null&&(Cn=Cn.slice(e+1)),fw(af,Ls),i}finally{Ae=t,fh=!1}}return null}var na=[],sa=0,gd=null,xd=0,dr=[],ur=0,xi=null,Pn=1,Tn="";function Ys(e,t){na[sa++]=xd,na[sa++]=gd,gd=e,xd=t}function Ww(e,t,r){dr[ur++]=Pn,dr[ur++]=Tn,dr[ur++]=xi,xi=e;var s=Pn;e=Tn;var i=32-Hr(s)-1;s&=~(1<<i),r+=1;var a=32-Hr(t)+i;if(30<a){var o=i-i%5;a=(s&(1<<o)-1).toString(32),s>>=o,i-=o,Pn=1<<32-Hr(t)+i|r<<i|s,Tn=a+e}else Pn=1<<a|r<<i|s,Tn=e}function ff(e){e.return!==null&&(Ys(e,1),Ww(e,1,0))}function gf(e){for(;e===gd;)gd=na[--sa],na[sa]=null,xd=na[--sa],na[sa]=null;for(;e===xi;)xi=dr[--ur],dr[ur]=null,Tn=dr[--ur],dr[ur]=null,Pn=dr[--ur],dr[ur]=null}var Yt=null,Kt=null,Fe=!1,Or=null;function Zw(e,t){var r=mr(5,null,null,0);r.elementType="DELETED",r.stateNode=t,r.return=e,t=e.deletions,t===null?(e.deletions=[r],e.flags|=16):t.push(r)}function zx(e,t){switch(e.tag){case 5:var r=e.type;
vendor: 14,506 bytes, line 38
38return t=t.nodeType!==1||r.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,Yt=e,Kt=ys(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,Yt=e,Kt=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(r=xi!==null?{id:Pn,overflow:Tn}:null,e.memoizedState={dehydrated:t,treeContext:r,retryLane:1073741824},r=mr(18,null,null,0),r.stateNode=t,r.return=e,e.child=r,Yt=e,Kt=null,!0):!1;default:return!1}}function Tm(e){return(e.mode&1)!==0&&(e.flags&128)===0}function _m(e){if(Fe){var t=Kt;if(t){var r=t;if(!zx(e,t)){if(Tm(e))throw Error($(418));t=ys(r.nextSibling);var s=Yt;t&&zx(e,t)?Zw(s,r):(e.flags=e.flags&-4097|2,Fe=!1,Yt=e)}}else{if(Tm(e))throw Error($(418));e.flags=e.flags&-4097|2,Fe=!1,Yt=e}}}function Wx(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;Yt=e}function oc(e){if(e!==Yt)return!1;if(!Fe)return Wx(e),Fe=!0,!1;var t;if((t=e.tag!==3)&&!(t=e.tag!==5)&&(t=e.type,t=t!=="head"&&t!=="body"&&!Cm(e.type,e.memoizedProps)),t&&(t=Kt)){if(Tm(e))throw qw(),Error($(418));for(;t;)Zw(e,t),t=ys(t.nextSibling)}if(Wx(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error($(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var r=e.data;if(r==="/$"){if(t===0){Kt=ys(e.nextSibling);break e}t--}else r!=="$"&&r!=="$!"&&r!=="$?"||t++}e=e.nextSibling}Kt=null}}else Kt=Yt?ys(e.stateNode.nextSibling):null;return!0}function qw(){for(var e=Kt;e;)e=ys(e.nextSibling)}function La(){Kt=Yt=null,Fe=!1}function xf(e){Or===null?Or=[e]:Or.push(e)}var c2=Vn.ReactCurrentBatchConfig;function uo(e,t,r){if(e=r.ref,e!==null&&typeof e!="function"&&typeof e!="object"){if(r._owner){if(r=r._owner,r){if(r.tag!==1)throw Error($(309));var s=r.stateNode}if(!s)throw Error($(147,e));var i=s,a=""+e;return t!==null&&t.ref!==null&&typeof t.ref=="function"&&t.ref._stringRef===a?t.ref:(t=function(o){var l=i.refs;o===null?delete l[a]:l[a]=o},t._stringRef=a,t)}if(typeof e!="string")throw Error($(284));if(!r._owner)throw Error($(290,e))}return e}function lc(e,t){throw e=Object.prototype.toString.call(t),Error($(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Zx(e){var t=e._init;return t(e._payload)}function Xw(e){function t(g,v){if(e){var x=g.deletions;x===null?(g.deletions=[v],g.flags|=16):x.push(v)}}function r(g,v){if(!e)return null;for(;v!==null;)t(g,v),v=v.sibling;return null}function s(g,v){for(g=new Map;v!==null;)v.key!==null?g.set(v.key,v):g.set(v.index,v),v=v.sibling;return g}function i(g,v){return g=ks(g,v),g.index=0,g.sibling=null,g}function a(g,v,x){return g.index=x,e?(x=g.alternate,x!==null?(x=x.index,x<v?(g.flags|=2,v):x):(g.flags|=2,v)):(g.flags|=1048576,v)}function o(g){return e&&g.alternate===null&&(g.flags|=2),g}function l(g,v,x,j){return v===null||v.tag!==6?(v=jh(x,g.mode,j),v.return=g,v):(v=i(v,x),v.return=g,v)}function c(g,v,x,j){var k=x.type;return k===Yi?u(g,v,x.props.children,j,x.key):v!==null&&(v.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===ts&&Zx(k)===v.type)?(j=i(v,x.props),j.ref=uo(g,v,x),j.return=g,j):(j=zc(x.type,x.key,x.props,null,g.mode,j),j.ref=uo(g,v,x),j.return=g,j)}function d(g,v,x,j){return v===null||v.tag!==4||v.stateNode.containerInfo!==x.containerInfo||v.stateNode.implementation!==x.implementation?(v=kh(x,g.mode,j),v.return=g,v):(v=i(v,x.children||[]),v.return=g,v)}function u(g,v,x,j,k){return v===null||v.tag!==7?(v=pi(x,g.mode,j,k),v.return=g,v):(v=i(v,x),v.return=g,v)}function h(g,v,x){if(typeof v=="string"&&v!==""||typeof v=="number")return v=jh(""+v,g.mode,x),v.return=g,v;if(typeof v=="object"&&v!==null){switch(v.$$typeof){case Yl:return x=zc(v.type,v.key,v.props,null,g.mode,x),x.ref=uo(g,null,v),x.return=g,x;case Ki:return v=kh(v,g.mode,x),v.return=g,v;case ts:var j=v._init;return h(g,j(v._payload),x)}if(wo(v)||io(v))return v=pi(v,g.mode,x,null),v.return=g,v;lc(g,v)}return null}function p(g,v,x,j){var k=v!==null?v.key:null;if(typeof x=="string"&&x!==""||typeof x=="number")return k!==null?null:l(g,v,""+x,j);if(typeof x=="object"&&x!==null){switch(x.$$typeof){case Yl:return x.key===k?c(g,v,x,j):null;case Ki:return x.key===k?d(g,v,x,j):null;case ts:return k=x._init,p(g,v,k(x._payload),j)}if(wo(x)||io(x))return k!==null?null:u(g,v,x,j,null);lc(g,x)}return null}function m(g,v,x,j,k){if(typeof j=="string"&&j!==""||typeof j=="number")return g=g.get(x)||null,l(v,g,""+j,k);if(typeof j=="object"&&j!==null){switch(j.$$typeof){case Yl:return g=g.get(j.key===null?x:j.key)||null,c(v,g,j,k);case Ki:return g=g.get(j.key===null?x:j.key)||null,d(v,g,j,k);case ts:var N=j._init;return m(g,v,x,N(j._payload),k)}if(wo(j)||io(j))return g=g.get(x)||null,u(v,g,j,k,null);lc(v,j)}return null}function y(g,v,x,j){for(var k=null,N=null,S=v,C=v=0,E=null;S!==null&&C<x.length;C++){S.index>C?(E=S,S=null):E=S.sibling;var I=p(g,S,x[C],j);if(I===null){S===null&&(S=E);break}e&&S&&I.alternate===null&&t(g,S),v=a(I,v,C),N===null?k=I:N.sibling=I,N=I,S=E}if(C===x.length)return r(g,S),Fe&&Ys(g,C),k;if(S===null){for(;C<x.length;C++)S=h(g,x[C],j),S!==null&&(v=a(S,v,C),N===null?k=S:N.sibling=S,N=S);return Fe&&Ys(g,C),k}for(S=s(g,S);C<x.length;C++)E=m(S,g,C,x[C],j),E!==null&&(e&&E.alternate!==null&&S.delete(E.key===null?C:E.key),v=a(E,v,C),N===null?k=E:N.sibling=E,N=E);return e&&S.forEach(function(B){return t(g,B)}),Fe&&Ys(g,C),k}function b(g,v,x,j){var k=io(x);if(typeof k!="function")throw Error($(150));if(x=k.call(x),x==null)throw Error($(151));for(var N=k=null,S=v,C=v=0,E=null,I=x.next();S!==null&&!I.done;C++,I=x.next()){S.index>C?(E=S,S=null):E=S.sibling;var B=p(g,S,I.value,j);if(B===null){S===null&&(S=E);break}e&&S&&B.alternate===null&&t(g,S),v=a(B,v,C),N===null?k=B:N.sibling=B,N=B,S=E}if(I.done)return r(g,S),Fe&&Ys(g,C),k;if(S===null){for(;!I.done;C++,I=x.next())I=h(g,I.value,j),I!==null&&(v=a(I,v,C),N===null?k=I:N.sibling=I,N=I);return Fe&&Ys(g,C),k}for(S=s(g,S);!I.done;C++,I=x.next())I=m(S,g,C,I.value,j),I!==null&&(e&&I.alternate!==null&&S.delete(I.key===null?C:I.key),v=a(I,v,C),N===null?k=I:N.sibling=I,N=I);return e&&S.forEach(function(R){return t(g,R)}),Fe&&Ys(g,C),k}function w(g,v,x,j){if(typeof x=="object"&&x!==null&&x.type===Yi&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case Yl:e:{for(var k=x.key,N=v;N!==null;){if(N.key===k){if(k=x.type,k===Yi){if(N.tag===7){r(g,N.sibling),v=i(N,x.props.children),v.return=g,g=v;break e}}else if(N.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===ts&&Zx(k)===N.type){r(g,N.sibling),v=i(N,x.props),v.ref=uo(g,N,x),v.return=g,g=v;break e}r(g,N);break}else t(g,N);N=N.sibling}x.type===Yi?(v=pi(x.props.children,g.mode,j,x.key),v.return=g,g=v):(j=zc(x.type,x.key,x.props,null,g.mode,j),j.ref=uo(g,v,x),j.return=g,g=j)}return o(g);case Ki:e:{for(N=x.key;v!==null;){if(v.key===N)if(v.tag===4&&v.stateNode.containerInfo===x.containerInfo&&v.stateNode.implementation===x.implementation){r(g,v.sibling),v=i(v,x.children||[]),v.return=g,g=v;break e}else{r(g,v);break}else t(g,v);v=v.sibling}v=kh(x,g.mode,j),v.return=g,g=v}return o(g);case ts:return N=x._init,w(g,v,N(x._payload),j)}if(wo(x))return y(g,v,x,j);if(io(x))return b(g,v,x,j);lc(g,x)}return typeof x=="string"&&x!==""||typeof x=="number"?(x=""+x,v!==null&&v.tag===6?(r(g,v.sibling),v=i(v,x),v.return=g,g=v):(r(g,v),v=jh(x,g.mode,j),v.return=g,g=v),o(g)):r(g,v)}return w}var Ha=Xw(!0),Gw=Xw(!1),vd=Ds(null),yd=null,ia=null,vf=null;function yf(){vf=ia=yd=null}function bf(e){var t=vd.current;He(vd),e._currentValue=t}function Im(e,t,r){for(;e!==null;){var s=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,s!==null&&(s.childLanes|=t)):s!==null&&(s.childLanes&t)!==t&&(s.childLanes|=t),e===r)break;e=e.return}}function pa(e,t){yd=e,vf=ia=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&($t=!0),e.firstContext=null)}function gr(e){var t=e._currentValue;if(vf!==e)if(e={context:e,memoizedValue:t,next:null},ia===null){if(yd===null)throw Error($(308));ia=e,yd.dependencies={lanes:0,firstContext:e}}else ia=ia.next=e;return t}var ri=null;function wf(e){ri===null?ri=[e]:ri.push(e)}function Kw(e,t,r,s){var i=t.interleaved;return i===null?(r.next=r,wf(t)):(r.next=i.next,i.next=r),t.interleaved=r,Ln(e,s)}function Ln(e,t){e.lanes|=t;var r=e.alternate;for(r!==null&&(r.lanes|=t),r=e,e=e.return;e!==null;)e.childLanes|=t,r=e.alternate,r!==null&&(r.childLanes|=t),r=e,e=e.return;return r.tag===3?r.stateNode:null}var rs=!1;function jf(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Yw(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function _n(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function bs(e,t,r){var s=e.updateQueue;if(s===null)return null;if(s=s.shared,we&2){var i=s.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),s.pending=t,Ln(e,r)}return i=s.interleaved,i===null?(t.next=t,wf(s)):(t.next=i.next,i.next=t),s.interleaved=t,Ln(e,r)}function Hc(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194240)!==0)){var s=t.lanes;s&=e.pendingLanes,r|=s,t.lanes=r,of(e,r)}}function qx(e,t){var r=e.updateQueue,s=e.alternate;if(s!==null&&(s=s.updateQueue,r===s)){var i=null,a=null;if(r=r.firstBaseUpdate,r!==null){do{var o={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};a===null?i=a=o:a=a.next=o,r=r.next}while(r!==null);a===null?i=a=t:a=a.next=t}else i=a=t;r={baseState:s.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:s.shared,effects:s.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}function bd(e,t,r,s){var i=e.updateQueue;rs=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,l=i.shared.pending;if(l!==null){i.shared.pending=null;var c=l,d=c.next;c.next=null,o===null?a=d:o.next=d,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,l=u.lastBaseUpdate,l!==o&&(l===null?u.firstBaseUpdate=d:l.next=d,u.lastBaseUpdate=c))}if(a!==null){var h=i.baseState;o=0,u=d=c=null,l=a;do{var p=l.lane,m=l.eventTime;if((s&p)===p){u!==null&&(u=u.next={eventTime:m,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var y=e,b=l;switch(p=t,m=r,b.tag){case 1:if(y=b.payload,typeof y=="function"){h=y.call(m,h,p);break e}h=y;break e;case 3:y.flags=y.flags&-65537|128;case 0:if(y=b.payload,p=typeof y=="function"?y.call(m,h,p):y,p==null)break e;h=Ze({},h,p);break e;case 2:rs=!0}}l.callback!==null&&l.lane!==0&&(e.flags|=64,p=i.effects,p===null?i.effects=[l]:p.push(l))}else m={eventTime:m,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},u===null?(d=u=m,c=h):u=u.next=m,o|=p;if(l=l.next,l===null){if(l=i.shared.pending,l===null)break;p=l,l=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(!0);if(u===null&&(c=h),i.baseState=c,i.firstBaseUpdate=d,i.lastBaseUpdate=u,t=i.shared.interleaved,t!==null){i=t;do o|=i.lane,i=i.next;while(i!==t)}else a===null&&(i.shared.lanes=0);yi|=o,e.lanes=o,e.memoizedState=h}}function Xx(e,t,r){if(e=t.effects,t.effects=null,e!==null)for(t=0;t<e.length;t++){var s=e[t],i=s.callback;if(i!==null){if(s.callback=null,s=r,typeof i!="function")throw Error($(191,i));i.call(s)}}}var Pl={},rn=Ds(Pl),Yo=Ds(Pl),Jo=Ds(Pl);function ni(e){if(e===Pl)throw Error($(174));return e}function kf(e,t){switch(Oe(Jo,t),Oe(Yo,e),Oe(rn,Pl),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:hm(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=hm(t,e)}He(rn),Oe(rn,t)}function $a(){He(rn),He(Yo),He(Jo)}function Jw(e){ni(Jo.current);var t=ni(rn.current),r=hm(t,e.type);t!==r&&(Oe(Yo,e),Oe(rn,r))}function Nf(e){Yo.current===e&&(He(rn),He(Yo))}var ze=Ds(0);function wd(e){for(var t=e;t!==null;){if(t.tag===13){var r=t.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data==="$?"||r.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var gh=[];function Sf(){for(var e=0;e<gh.length;e++)gh[e]._workInProgressVersionPrimary=null;gh.length=0}var $c=Vn.ReactCurrentDispatcher,xh=Vn.ReactCurrentBatchConfig,vi=0,We=null,tt=null,ot=null,jd=!1,Ro=!1,Qo=0,d2=0;function xt(){throw Error($(321))}function Cf(e,t){if(t===null)return!1;for(var r=0;r<t.length&&r<e.length;r++)if(!Fr(e[r],t[r]))return!1;return!0}function Ef(e,t,r,s,i,a){if(vi=a,We=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,$c.current=e===null||e.memoizedState===null?p2:f2,e=r(s,i),Ro){a=0;do{if(Ro=!1,Qo=0,25<=a)throw Error($(301));a+=1,ot=tt=null,t.updateQueue=null,$c.current=g2,e=r(s,i)}while(Ro)}if($c.current=kd,t=tt!==null&&tt.next!==null,vi=0,ot=tt=We=null,jd=!1,t)throw Error($(300));return e}function Af(){var e=Qo!==0;return Qo=0,e}function Zr(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return ot===null?We.memoizedState=ot=e:ot=ot.next=e,ot}function xr(){if(tt===null){var e=We.alternate;e=e!==null?e.memoizedState:null}else e=tt.next;var t=ot===null?We.memoizedState:ot.next;if(t!==null)ot=t,tt=e;else{if(e===null)throw Error($(310));tt=e,e={memoizedState:tt.memoizedState,baseState:tt.baseState,baseQueue:tt.baseQueue,queue:tt.queue,next:null},ot===null?We.memoizedState=ot=e:ot=ot.next=e}return ot}function el(e,t){return typeof t=="function"?t(e):t}function vh(e){var t=xr(),r=t.queue;if(r===null)throw Error($(311));r.lastRenderedReducer=e;var s=tt,i=s.baseQueue,a=r.pending;if(a!==null){if(i!==null){var o=i.next;i.next=a.next,a.next=o}s.baseQueue=i=a,r.pending=null}if(i!==null){a=i.next,s=s.baseState;var l=o=null,c=null,d=a;do{var u=d.lane;if((vi&u)===u)c!==null&&(c=c.next={lane:0,action:d.action,hasEagerState:d.hasEagerState,eagerState:d.eagerState,next:null}),s=d.hasEagerState?d.eagerState:e(s,d.action);else{var h={lane:u,action:d.action,hasEagerState:d.hasEagerState,eagerState:d.eagerState,next:null};c===null?(l=c=h,o=s):c=c.next=h,We.lanes|=u,yi|=u}d=d.next}while(d!==null&&d!==a);c===null?o=s:c.next=l,Fr(s,t.memoizedState)||($t=!0),t.memoizedState=s,t.baseState=o,t.baseQueue=c,r.lastRenderedState=s}if(e=r.interleaved,e!==null){i=e;do a=i.lane,We.lanes|=a,yi|=a,i=i.next;while(i!==e)}else i===null&&(r.lanes=0);
vendor: 4,900 bytes, line 38
38return[t.memoizedState,r.dispatch]}function yh(e){var t=xr(),r=t.queue;if(r===null)throw Error($(311));r.lastRenderedReducer=e;var s=r.dispatch,i=r.pending,a=t.memoizedState;if(i!==null){r.pending=null;var o=i=i.next;do a=e(a,o.action),o=o.next;while(o!==i);Fr(a,t.memoizedState)||($t=!0),t.memoizedState=a,t.baseQueue===null&&(t.baseState=a),r.lastRenderedState=a}return[a,s]}function Qw(){}function e0(e,t){var r=We,s=xr(),i=t(),a=!Fr(s.memoizedState,i);if(a&&(s.memoizedState=i,$t=!0),s=s.queue,Pf(n0.bind(null,r,s,e),[e]),s.getSnapshot!==t||a||ot!==null&&ot.memoizedState.tag&1){if(r.flags|=2048,tl(9,r0.bind(null,r,s,i,t),void 0,null),dt===null)throw Error($(349));vi&30||t0(r,t,i)}return i}function t0(e,t,r){e.flags|=16384,e={getSnapshot:t,value:r},t=We.updateQueue,t===null?(t={lastEffect:null,stores:null},We.updateQueue=t,t.stores=[e]):(r=t.stores,r===null?t.stores=[e]:r.push(e))}function r0(e,t,r,s){t.value=r,t.getSnapshot=s,s0(t)&&i0(e)}function n0(e,t,r){return r(function(){s0(t)&&i0(e)})}function s0(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!Fr(e,r)}catch{return!0}}function i0(e){var t=Ln(e,1);t!==null&&$r(t,e,1,-1)}function Gx(e){var t=Zr();return typeof e=="function"&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:el,lastRenderedState:e},t.queue=e,e=e.dispatch=m2.bind(null,We,e),[t.memoizedState,e]}function tl(e,t,r,s){return e={tag:e,create:t,destroy:r,deps:s,next:null},t=We.updateQueue,t===null?(t={lastEffect:null,stores:null},We.updateQueue=t,t.lastEffect=e.next=e):(r=t.lastEffect,r===null?t.lastEffect=e.next=e:(s=r.next,r.next=e,e.next=s,t.lastEffect=e)),e}function a0(){return xr().memoizedState}function Bc(e,t,r,s){var i=Zr();We.flags|=e,i.memoizedState=tl(1|t,r,void 0,s===void 0?null:s)}function ru(e,t,r,s){var i=xr();s=s===void 0?null:s;var a=void 0;if(tt!==null){var o=tt.memoizedState;if(a=o.destroy,s!==null&&Cf(s,o.deps)){i.memoizedState=tl(t,r,a,s);return}}We.flags|=e,i.memoizedState=tl(1|t,r,a,s)}function Kx(e,t){return Bc(8390656,8,e,t)}function Pf(e,t){return ru(2048,8,e,t)}function o0(e,t){return ru(4,2,e,t)}function l0(e,t){return ru(4,4,e,t)}function c0(e,t){if(typeof t=="function")return e=e(),t(e),function(){t(null)};if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function d0(e,t,r){return r=r!=null?r.concat([e]):null,ru(4,4,c0.bind(null,t,e),r)}function Tf(){}function u0(e,t){var r=xr();t=t===void 0?null:t;var s=r.memoizedState;return s!==null&&t!==null&&Cf(t,s[1])?s[0]:(r.memoizedState=[e,t],e)}function h0(e,t){var r=xr();t=t===void 0?null:t;var s=r.memoizedState;return s!==null&&t!==null&&Cf(t,s[1])?s[0]:(e=e(),r.memoizedState=[e,t],e)}function m0(e,t,r){return vi&21?(Fr(r,t)||(r=vw(),We.lanes|=r,yi|=r,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,$t=!0),e.memoizedState=r)}function u2(e,t){var r=Ae;Ae=r!==0&&4>r?r:4,e(!0);var s=xh.transition;xh.transition={};try{e(!1),t()}finally{Ae=r,xh.transition=s}}function p0(){return xr().memoizedState}function h2(e,t,r){var s=js(e);if(r={lane:s,action:r,hasEagerState:!1,eagerState:null,next:null},f0(e))g0(t,r);else if(r=Kw(e,t,r,s),r!==null){var i=Pt();$r(r,e,s,i),x0(r,t,s)}}function m2(e,t,r){var s=js(e),i={lane:s,action:r,hasEagerState:!1,eagerState:null,next:null};if(f0(e))g0(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,l=a(o,r);if(i.hasEagerState=!0,i.eagerState=l,Fr(l,o)){var c=t.interleaved;c===null?(i.next=i,wf(t)):(i.next=c.next,c.next=i),t.interleaved=i;return}}catch{}finally{}r=Kw(e,t,i,s),r!==null&&(i=Pt(),$r(r,e,s,i),x0(r,t,s))}}function f0(e){var t=e.alternate;return e===We||t!==null&&t===We}function g0(e,t){Ro=jd=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function x0(e,t,r){if(r&4194240){var s=t.lanes;s&=e.pendingLanes,r|=s,t.lanes=r,of(e,r)}}var kd={readContext:gr,useCallback:xt,useContext:xt,useEffect:xt,useImperativeHandle:xt,useInsertionEffect:xt,useLayoutEffect:xt,useMemo:xt,useReducer:xt,useRef:xt,useState:xt,useDebugValue:xt,useDeferredValue:xt,useTransition:xt,useMutableSource:xt,useSyncExternalStore:xt,useId:xt,unstable_isNewReconciler:!1},p2={readContext:gr,useCallback:function(e,t){return Zr().memoizedState=[e,t===void 0?null:t],e},useContext:gr,useEffect:Kx,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,Bc(4194308,4,c0.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Bc(4194308,4,e,t)},useInsertionEffect:function(e,t){return Bc(4,2,e,t)},useMemo:function(e,t){var r=Zr();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var s=Zr();return t=r!==void 0?r(t):t,s.memoizedState=s.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},s.queue=e,e=e.dispatch=h2.bind(null,We,e),[s.memoizedState,e]}
vendor: 7,431 bytes, lines 38-40
38,useRef:function(e){var t=Zr();return e={current:e},t.memoizedState=e},useState:Gx,useDebugValue:Tf,useDeferredValue:function(e){return Zr().memoizedState=e},useTransition:function(){var e=Gx(!1),t=e[0];return e=u2.bind(null,e[1]),Zr().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var s=We,i=Zr();if(Fe){if(r===void 0)throw Error($(407));r=r()}else{if(r=t(),dt===null)throw Error($(349));vi&30||t0(s,t,r)}i.memoizedState=r;var a={value:r,getSnapshot:t};return i.queue=a,Kx(n0.bind(null,s,a,e),[e]),s.flags|=2048,tl(9,r0.bind(null,s,a,r,t),void 0,null),r},useId:function(){var e=Zr(),t=dt.identifierPrefix;if(Fe){var r=Tn,s=Pn;r=(s&~(1<<32-Hr(s)-1)).toString(32)+r,t=":"+t+"R"+r,r=Qo++,0<r&&(t+="H"+r.toString(32)),t+=":"}else r=d2++,t=":"+t+"r"+r.toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},f2={readContext:gr,useCallback:u0,useContext:gr,useEffect:Pf,useImperativeHandle:d0,useInsertionEffect:o0,useLayoutEffect:l0,useMemo:h0,useReducer:vh,useRef:a0,useState:function(){return vh(el)},useDebugValue:Tf,useDeferredValue:function(e){var t=xr();return m0(t,tt.memoizedState,e)},useTransition:function(){var e=vh(el)[0],t=xr().memoizedState;return[e,t]},useMutableSource:Qw,useSyncExternalStore:e0,useId:p0,unstable_isNewReconciler:!1},g2={readContext:gr,useCallback:u0,useContext:gr,useEffect:Pf,useImperativeHandle:d0,useInsertionEffect:o0,useLayoutEffect:l0,useMemo:h0,useReducer:yh,useRef:a0,useState:function(){return yh(el)},useDebugValue:Tf,useDeferredValue:function(e){var t=xr();return tt===null?t.memoizedState=e:m0(t,tt.memoizedState,e)},useTransition:function(){var e=yh(el)[0],t=xr().memoizedState;return[e,t]},useMutableSource:Qw,useSyncExternalStore:e0,useId:p0,unstable_isNewReconciler:!1};function Pr(e,t){if(e&&e.defaultProps){t=Ze({},t),e=e.defaultProps;for(var r in e)t[r]===void 0&&(t[r]=e[r]);return t}return t}function Rm(e,t,r,s){t=e.memoizedState,r=r(s,t),r=r==null?t:Ze({},t,r),e.memoizedState=r,e.lanes===0&&(e.updateQueue.baseState=r)}var nu={isMounted:function(e){return(e=e._reactInternals)?Ai(e)===e:!1},enqueueSetState:function(e,t,r){e=e._reactInternals;var s=Pt(),i=js(e),a=_n(s,i);a.payload=t,r!=null&&(a.callback=r),t=bs(e,a,i),t!==null&&($r(t,e,i,s),Hc(t,e,i))},enqueueReplaceState:function(e,t,r){e=e._reactInternals;var s=Pt(),i=js(e),a=_n(s,i);a.tag=1,a.payload=t,r!=null&&(a.callback=r),t=bs(e,a,i),t!==null&&($r(t,e,i,s),Hc(t,e,i))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var r=Pt(),s=js(e),i=_n(r,s);i.tag=2,t!=null&&(i.callback=t),t=bs(e,i,s),t!==null&&($r(t,e,s,r),Hc(t,e,s))}};function Yx(e,t,r,s,i,a,o){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(s,a,o):t.prototype&&t.prototype.isPureReactComponent?!qo(r,s)||!qo(i,a):!0}function v0(e,t,r){var s=!1,i=Ps,a=t.contextType;return typeof a=="object"&&a!==null?a=gr(a):(i=Ut(t)?gi:jt.current,s=t.contextTypes,a=(s=s!=null)?Da(e,i):Ps),t=new t(r,a),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=nu,e.stateNode=t,t._reactInternals=e,s&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=a),t}function Jx(e,t,r,s){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(r,s),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(r,s),t.state!==e&&nu.enqueueReplaceState(t,t.state,null)}function Om(e,t,r,s){var i=e.stateNode;i.props=r,i.state=e.memoizedState,i.refs={},jf(e);var a=t.contextType;typeof a=="object"&&a!==null?i.context=gr(a):(a=Ut(t)?gi:jt.current,i.context=Da(e,a)),i.state=e.memoizedState,a=t.getDerivedStateFromProps,typeof a=="function"&&(Rm(e,t,a,r),i.state=e.memoizedState),typeof t.getDerivedStateFromProps=="function"||typeof i.getSnapshotBeforeUpdate=="function"||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(t=i.state,typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount(),t!==i.state&&nu.enqueueReplaceState(i,i.state,null),bd(e,r,i,s),i.state=e.memoizedState),typeof i.componentDidMount=="function"&&(e.flags|=4194308)}function Ba(e,t){try{var r="",s=t;do r+=zS(s),s=s.return;while(s);var i=r}catch(a){i=` 39Error generating stack: `+a.message+` 40`+a.stack}return{value:e,source:t,stack:i,digest:null}}function bh(e,t,r){return{value:e,source:null,stack:r??null,digest:t??null}}function Mm(e,t){try{console.error(t.value)}catch(r){setTimeout(function(){throw r})}}var x2=typeof WeakMap=="function"?WeakMap:Map;function y0(e,t,r){r=_n(-1,r),r.tag=3,r.payload={element:null};var s=t.value;return r.callback=function(){Sd||(Sd=!0,Wm=s),Mm(e,t)},r}function b0(e,t,r){r=_n(-1,r),r.tag=3;var s=e.type.getDerivedStateFromError;if(typeof s=="function"){var i=t.value;r.payload=function(){return s(i)},r.callback=function(){Mm(e,t)}}var a=e.stateNode;return a!==null&&typeof a.componentDidCatch=="function"&&(r.callback=function(){Mm(e,t),typeof s!="function"&&(ws===null?ws=new Set([this]):ws.add(this));var o=t.stack;this.componentDidCatch(t.value,{componentStack:o!==null?o:""})}),r}function Qx(e,t,r){var s=e.pingCache;if(s===null){s=e.pingCache=new x2;var i=new Set;s.set(t,i)}else i=s.get(t),i===void 0&&(i=new Set,s.set(t,i));i.has(r)||(i.add(r),e=_2.bind(null,e,t,r),t.then(e,e))}function ev(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function tv(e,t,r,s,i){return e.mode&1?(e.flags|=65536,e.lanes=i,e):(e===t?e.flags|=65536:(e.flags|=128,r.flags|=131072,r.flags&=-52805,r.tag===1&&(r.alternate===null?r.tag=17:(t=_n(-1,1),t.tag=2,bs(r,t,1))),r.lanes|=1),e)}var v2=Vn.ReactCurrentOwner,$t=!1;function Nt(e,t,r,s){t.child=e===null?Gw(t,null,r,s):Ha(t,e.child,r,s)}function rv(e,t,r,s,i){r=r.render;var a=t.ref;return pa(t,i),s=Ef(e,t,r,s,a,i),r=Af(),e!==null&&!$t?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,Hn(e,t,i)):(Fe&&r&&ff(t),t.flags|=1,Nt(e,t,s,i),t.child)}function nv(e,t,r,s,i){if(e===null){var a=r.type;return typeof a=="function"&&!Hf(a)&&a.defaultProps===void 0&&r.compare===null&&r.defaultProps===void 0?(t.tag=15,t.type=a,w0(e,t,a,s,i)):(e=zc(r.type,null,s,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!(e.lanes&i)){var o=a.memoizedProps;if(r=r.compare,r=r!==null?r:qo,r(o,s)&&e.ref===t.ref)return Hn(e,t,i)}return t.flags|=1,e=ks(a,s),e.ref=t.ref,e.return=t,t.child=e}function w0(e,t,r,s,i){if(e!==null){var a=e.memoizedProps;if(qo(a,s)&&e.ref===t.ref)if($t=!1,t.pendingProps=s=a,(e.lanes&i)!==0)e.flags&131072&&($t=!0);else return t.lanes=e.lanes,Hn(e,t,i)}return Dm(e,t,r,s,i)}function j0(e,t,r){var s=t.pendingProps,i=s.children,a=e!==null?e.memoizedState:null;if(s.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Oe(oa,Zt),Zt|=r;else{if(!(r&1073741824))return e=a!==null?a.baseLanes|r:r,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Oe(oa,Zt),Zt|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},s=a!==null?a.baseLanes:r,Oe(oa,Zt),Zt|=s}else a!==null?(s=a.baseLanes|r,t.memoizedState=null):s=r,Oe(oa,Zt),Zt|=s;return Nt(e,t,i,r),t.child}function k0(e,t){var r=t.ref;(e===null&&r!==null||e!==null&&e.ref!==r)&&(t.flags|=512,t.flags|=2097152)}
vendor: 4,711 bytes, line 40
40function Dm(e,t,r,s,i){var a=Ut(r)?gi:jt.current;return a=Da(t,a),pa(t,i),r=Ef(e,t,r,s,a,i),s=Af(),e!==null&&!$t?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,Hn(e,t,i)):(Fe&&s&&ff(t),t.flags|=1,Nt(e,t,r,i),t.child)}function sv(e,t,r,s,i){if(Ut(r)){var a=!0;fd(t)}else a=!1;if(pa(t,i),t.stateNode===null)Fc(e,t),v0(t,r,s),Om(t,r,s,i),s=!0;else if(e===null){var o=t.stateNode,l=t.memoizedProps;o.props=l;var c=o.context,d=r.contextType;typeof d=="object"&&d!==null?d=gr(d):(d=Ut(r)?gi:jt.current,d=Da(t,d));var u=r.getDerivedStateFromProps,h=typeof u=="function"||typeof o.getSnapshotBeforeUpdate=="function";h||typeof o.UNSAFE_componentWillReceiveProps!="function"&&typeof o.componentWillReceiveProps!="function"||(l!==s||c!==d)&&Jx(t,o,s,d),rs=!1;var p=t.memoizedState;o.state=p,bd(t,s,o,i),c=t.memoizedState,l!==s||p!==c||Ft.current||rs?(typeof u=="function"&&(Rm(t,r,u,s),c=t.memoizedState),(l=rs||Yx(t,r,l,s,p,c,d))?(h||typeof o.UNSAFE_componentWillMount!="function"&&typeof o.componentWillMount!="function"||(typeof o.componentWillMount=="function"&&o.componentWillMount(),typeof o.UNSAFE_componentWillMount=="function"&&o.UNSAFE_componentWillMount()),typeof o.componentDidMount=="function"&&(t.flags|=4194308)):(typeof o.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=s,t.memoizedState=c),o.props=s,o.state=c,o.context=d,s=l):(typeof o.componentDidMount=="function"&&(t.flags|=4194308),s=!1)}else{o=t.stateNode,Yw(e,t),l=t.memoizedProps,d=t.type===t.elementType?l:Pr(t.type,l),o.props=d,h=t.pendingProps,p=o.context,c=r.contextType,typeof c=="object"&&c!==null?c=gr(c):(c=Ut(r)?gi:jt.current,c=Da(t,c));var m=r.getDerivedStateFromProps;(u=typeof m=="function"||typeof o.getSnapshotBeforeUpdate=="function")||typeof o.UNSAFE_componentWillReceiveProps!="function"&&typeof o.componentWillReceiveProps!="function"||(l!==h||p!==c)&&Jx(t,o,s,c),rs=!1,p=t.memoizedState,o.state=p,bd(t,s,o,i);var y=t.memoizedState;l!==h||p!==y||Ft.current||rs?(typeof m=="function"&&(Rm(t,r,m,s),y=t.memoizedState),(d=rs||Yx(t,r,d,s,p,y,c)||!1)?(u||typeof o.UNSAFE_componentWillUpdate!="function"&&typeof o.componentWillUpdate!="function"||(typeof o.componentWillUpdate=="function"&&o.componentWillUpdate(s,y,c),typeof o.UNSAFE_componentWillUpdate=="function"&&o.UNSAFE_componentWillUpdate(s,y,c)),typeof o.componentDidUpdate=="function"&&(t.flags|=4),typeof o.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof o.componentDidUpdate!="function"||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof o.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=s,t.memoizedState=y),o.props=s,o.state=y,o.context=c,s=d):(typeof o.componentDidUpdate!="function"||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof o.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),s=!1)}return Lm(e,t,r,s,a,i)}function Lm(e,t,r,s,i,a){k0(e,t);var o=(t.flags&128)!==0;if(!s&&!o)return i&&Vx(t,r,!1),Hn(e,t,a);s=t.stateNode,v2.current=t;var l=o&&typeof r.getDerivedStateFromError!="function"?null:s.render();return t.flags|=1,e!==null&&o?(t.child=Ha(t,e.child,null,a),t.child=Ha(t,null,l,a)):Nt(e,t,l,a),t.memoizedState=s.state,i&&Vx(t,r,!0),t.child}function N0(e){var t=e.stateNode;t.pendingContext?Ux(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Ux(e,t.context,!1),kf(e,t.containerInfo)}function iv(e,t,r,s,i){return La(),xf(i),t.flags|=256,Nt(e,t,r,s),t.child}var Hm={dehydrated:null,treeContext:null,retryLane:0};function $m(e){return{baseLanes:e,cachePool:null,transitions:null}}function S0(e,t,r){var s=t.pendingProps,i=ze.current,a=!1,o=(t.flags&128)!==0,l;if((l=o)||(l=e!==null&&e.memoizedState===null?!1:(i&2)!==0),l?(a=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(i|=1),Oe(ze,i&1),e===null)return _m(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(o=s.children,e=s.fallback,a?(s=t.mode,a=t.child,o={mode:"hidden",children:o},!(s&1)&&a!==null?(a.childLanes=0,a.pendingProps=o):a=au(o,s,0,null),e=pi(e,s,r,null),a.return=t,e.return=t,a.sibling=e,t.child=a,t.child.memoizedState=$m(r),t.memoizedState=Hm,e):_f(t,o));if(i=e.memoizedState,i!==null&&(l=i.dehydrated,l!==null))return y2(e,t,o,s,l,i,r);if(a){a=s.fallback,o=t.mode,i=e.child,l=i.sibling;var c={mode:"hidden",children:s.children};return!(o&1)&&t.child!==i?(s=t.child,s.childLanes=0,s.pendingProps=c,t.deletions=null):(s=ks(i,c),s.subtreeFlags=i.subtreeFlags&14680064),l!==null?a=ks(l,a):(a=pi(a,o,r,null),a.flags|=2),a.return=t,s.return=t,s.sibling=a,t.child=s,s=a,a=t.child,o=e.child.memoizedState,o=o===null?$m(r):{base
vendor: 7,075 bytes, line 40
40Lanes:o.baseLanes|r,cachePool:null,transitions:o.transitions},a.memoizedState=o,a.childLanes=e.childLanes&~r,t.memoizedState=Hm,s}return a=e.child,e=a.sibling,s=ks(a,{mode:"visible",children:s.children}),!(t.mode&1)&&(s.lanes=r),s.return=t,s.sibling=null,e!==null&&(r=t.deletions,r===null?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=s,t.memoizedState=null,s}function _f(e,t){return t=au({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function cc(e,t,r,s){return s!==null&&xf(s),Ha(t,e.child,null,r),e=_f(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function y2(e,t,r,s,i,a,o){if(r)return t.flags&256?(t.flags&=-257,s=bh(Error($(422))),cc(e,t,o,s)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(a=s.fallback,i=t.mode,s=au({mode:"visible",children:s.children},i,0,null),a=pi(a,i,o,null),a.flags|=2,s.return=t,a.return=t,s.sibling=a,t.child=s,t.mode&1&&Ha(t,e.child,null,o),t.child.memoizedState=$m(o),t.memoizedState=Hm,a);if(!(t.mode&1))return cc(e,t,o,null);if(i.data==="$!"){if(s=i.nextSibling&&i.nextSibling.dataset,s)var l=s.dgst;return s=l,a=Error($(419)),s=bh(a,s,void 0),cc(e,t,o,s)}if(l=(o&e.childLanes)!==0,$t||l){if(s=dt,s!==null){switch(o&-o){case 4:i=2;break;case 16:i=8;break;case 64: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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:i=32;break;case 536870912:i=268435456;break;default:i=0}i=i&(s.suspendedLanes|o)?0:i,i!==0&&i!==a.retryLane&&(a.retryLane=i,Ln(e,i),$r(s,e,i,-1))}return Lf(),s=bh(Error($(421))),cc(e,t,o,s)}return i.data==="$?"?(t.flags|=128,t.child=e.child,t=I2.bind(null,e),i._reactRetry=t,null):(e=a.treeContext,Kt=ys(i.nextSibling),Yt=t,Fe=!0,Or=null,e!==null&&(dr[ur++]=Pn,dr[ur++]=Tn,dr[ur++]=xi,Pn=e.id,Tn=e.overflow,xi=t),t=_f(t,s.children),t.flags|=4096,t)}function av(e,t,r){e.lanes|=t;var s=e.alternate;s!==null&&(s.lanes|=t),Im(e.return,t,r)}function wh(e,t,r,s,i){var a=e.memoizedState;a===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:s,tail:r,tailMode:i}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=s,a.tail=r,a.tailMode=i)}function C0(e,t,r){var s=t.pendingProps,i=s.revealOrder,a=s.tail;if(Nt(e,t,s.children,r),s=ze.current,s&2)s=s&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&av(e,r,t);else if(e.tag===19)av(e,r,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}s&=1}if(Oe(ze,s),!(t.mode&1))t.memoizedState=null;else switch(i){case"forwards":for(r=t.child,i=null;r!==null;)e=r.alternate,e!==null&&wd(e)===null&&(i=r),r=r.sibling;r=i,r===null?(i=t.child,t.child=null):(i=r.sibling,r.sibling=null),wh(t,!1,i,r,a);break;case"backwards":for(r=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&wd(e)===null){t.child=i;break}e=i.sibling,i.sibling=r,r=i,i=e}wh(t,!0,r,null,a);break;case"together":wh(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Fc(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hn(e,t,r){if(e!==null&&(t.dependencies=e.dependencies),yi|=t.lanes,!(r&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error($(153));if(t.child!==null){for(e=t.child,r=ks(e,e.pendingProps),t.child=r,r.return=t;e.sibling!==null;)e=e.sibling,r=r.sibling=ks(e,e.pendingProps),r.return=t;r.sibling=null}return t.child}function b2(e,t,r){switch(t.tag){case 3:N0(t),La();break;case 5:Jw(t);break;case 1:Ut(t.type)&&fd(t);break;case 4:kf(t,t.stateNode.containerInfo);break;case 10:var s=t.type._context,i=t.memoizedProps.value;Oe(vd,s._currentValue),s._currentValue=i;break;case 13:if(s=t.memoizedState,s!==null)return s.dehydrated!==null?(Oe(ze,ze.current&1),t.flags|=128,null):r&t.child.childLanes?S0(e,t,r):(Oe(ze,ze.current&1),e=Hn(e,t,r),e!==null?e.sibling:null);Oe(ze,ze.current&1);break;case 19:if(s=(r&t.childLanes)!==0,e.flags&128){if(s)return C0(e,t,r);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),Oe(ze,ze.current),s)break;return null;case 22:case 23:return t.lanes=0,j0(e,t,r)}return Hn(e,t,r)}var E0,Bm,A0,P0;E0=function(e,t){for(var r=t.child;r!==null;){if(r.tag===5||r.tag===6)e.appendChild(r.stateNode);else if(r.tag!==4&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break;for(;r.sibling===null;){if(r.return===null||r.return===t)return;r=r.return}r.sibling.return=r.return,r=r.sibling}};Bm=function(){};A0=function(e,t,r,s){var i=e.memoizedProps;if(i!==s){e=t.stateNode,ni(rn.current);var a=null;switch(r){case"input":i=lm(e,i),s=lm(e,s),a=[];break;case"select":i=Ze({},i,{value:void 0}),s=Ze({},s,{value:void 0}),a=[];break;case"textarea":i=um(e,i),s=um(e,s),a=[];break;default:typeof i.onClick!="function"&&typeof s.onClick=="function"&&(e.onclick=md)}mm(r,s);var o;r=null;for(d in i)if(!s.hasOwnProperty(d)&&i.hasOwnProperty(d)&&i[d]!=null)if(d==="style"){var l=i[d];for(o in l)l.hasOwnProperty(o)&&(r||(r={}),r[o]="")}else d!=="dangerouslySetInnerHTML"&&d!=="children"&&d!=="suppressContentEditableWarning"&&d!=="suppressHydrationWarning"&&d!=="autoFocus"&&(Bo.hasOwnProperty(d)?a||(a=[]):(a=a||[]).push(d,null));for(d in s){var c=s[d];if(l=i!=null?i[d]:void 0,s.hasOwnProperty(d)&&c!==l&&(c!=null||l!=null))if(d==="style")if(l){for(o in l)!l.hasOwnProperty(o)||c&&c.hasOwnProperty(o)||(r||(r={}),r[o]="");for(o in c)c.hasOwnProperty(o)&&l[o]!==c[o]&&(r||(r={}),r[o]=c[o])}else r||(a||(a=[]),a.push(d,r)),r=c;else d==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,l=l?l.__html:void 0,c!=null&&l!==c&&(a=a||[]).push(d,c)):d==="children"?typeof c!="string"&&typeof c!="number"||(a=a||[]).push(d,""+c):d!=="suppressContentEditableWarning"&&d!=="suppressHydrationWarning"&&(Bo.hasOwnProperty(d)?(c!=null&&d==="onScroll"&&De("scroll",e),a||l===c||(a=[])):(a=a||[]).push(d,c))}r&&(a=a||[]).push("style",r);var d=a;(t.updateQueue=d)&&(t.flags|=4)}};P0=function(e,t,r,s){r!==s&&(t.flags|=4)};function ho(e,t){if(!Fe)switch(e.tailMode){case"hidden":t=e.tail;for(var r=null;t!==null;)t.alternate!==null&&(r=t),t=t.sibling;r===null?e.tail=null:r.sibling=null;break;case"collapsed":r=e.tail;for(var s=null;r!==null;)r.alternate!==null&&(s=r),r=r.sibling;s===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:s.sibling=null}}function vt(e){var t=e.alternate!==null&&e.alternate.child===e.child,r=0,s=0;if(t)for(var i=e.child;i!==null;)r|=i.lanes|i.childLanes,s|=i.subtreeFlags&14680064,s|=i.flags&14680064,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)r|=i.lanes|i.childLanes,s|=i.subtreeFlags,s|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=s,e.childLanes=r,t}function w2(e,t,r){var s=t.pendingProps;switch(gf(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return vt(t),null;case 1:return Ut(t.type)&&pd(),vt(t),null;
vendor: 32,833 bytes, line 40
40case 3:return s=t.stateNode,$a(),He(Ft),He(jt),Sf(),s.pendingContext&&(s.context=s.pendingContext,s.pendingContext=null),(e===null||e.child===null)&&(oc(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Or!==null&&(Xm(Or),Or=null))),Bm(e,t),vt(t),null;case 5:Nf(t);var i=ni(Jo.current);if(r=t.type,e!==null&&t.stateNode!=null)A0(e,t,r,s,i),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!s){if(t.stateNode===null)throw Error($(166));return vt(t),null}if(e=ni(rn.current),oc(t)){s=t.stateNode,r=t.type;var a=t.memoizedProps;switch(s[Jr]=t,s[Ko]=a,e=(t.mode&1)!==0,r){case"dialog":De("cancel",s),De("close",s);break;case"iframe":case"object":case"embed":De("load",s);break;case"video":case"audio":for(i=0;i<ko.length;i++)De(ko[i],s);break;case"source":De("error",s);break;case"img":case"image":case"link":De("error",s),De("load",s);break;case"details":De("toggle",s);break;case"input":fx(s,a),De("invalid",s);break;case"select":s._wrapperState={wasMultiple:!!a.multiple},De("invalid",s);break;case"textarea":xx(s,a),De("invalid",s)}mm(r,a),i=null;for(var o in a)if(a.hasOwnProperty(o)){var l=a[o];o==="children"?typeof l=="string"?s.textContent!==l&&(a.suppressHydrationWarning!==!0&&ac(s.textContent,l,e),i=["children",l]):typeof l=="number"&&s.textContent!==""+l&&(a.suppressHydrationWarning!==!0&&ac(s.textContent,l,e),i=["children",""+l]):Bo.hasOwnProperty(o)&&l!=null&&o==="onScroll"&&De("scroll",s)}switch(r){case"input":Jl(s),gx(s,a,!0);break;case"textarea":Jl(s),vx(s);break;case"select":case"option":break;default:typeof a.onClick=="function"&&(s.onclick=md)}s=i,t.updateQueue=s,s!==null&&(t.flags|=4)}else{o=i.nodeType===9?i:i.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=nw(r)),e==="http://www.w3.org/1999/xhtml"?r==="script"?(e=o.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof s.is=="string"?e=o.createElement(r,{is:s.is}):(e=o.createElement(r),r==="select"&&(o=e,s.multiple?o.multiple=!0:s.size&&(o.size=s.size))):e=o.createElementNS(e,r),e[Jr]=t,e[Ko]=s,E0(e,t,!1,!1),t.stateNode=e;e:{switch(o=pm(r,s),r){case"dialog":De("cancel",e),De("close",e),i=s;break;case"iframe":case"object":case"embed":De("load",e),i=s;break;case"video":case"audio":for(i=0;i<ko.length;i++)De(ko[i],e);i=s;break;case"source":De("error",e),i=s;break;case"img":case"image":case"link":De("error",e),De("load",e),i=s;break;case"details":De("toggle",e),i=s;break;case"input":fx(e,s),i=lm(e,s),De("invalid",e);break;case"option":i=s;break;case"select":e._wrapperState={wasMultiple:!!s.multiple},i=Ze({},s,{value:void 0}),De("invalid",e);break;case"textarea":xx(e,s),i=um(e,s),De("invalid",e);break;default:i=s}mm(r,i),l=i;for(a in l)if(l.hasOwnProperty(a)){var c=l[a];a==="style"?aw(e,c):a==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,c!=null&&sw(e,c)):a==="children"?typeof c=="string"?(r!=="textarea"||c!=="")&&Fo(e,c):typeof c=="number"&&Fo(e,""+c):a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&a!=="autoFocus"&&(Bo.hasOwnProperty(a)?c!=null&&a==="onScroll"&&De("scroll",e):c!=null&&ef(e,a,c,o))}switch(r){case"input":Jl(e),gx(e,s,!1);break;case"textarea":Jl(e),vx(e);break;case"option":s.value!=null&&e.setAttribute("value",""+As(s.value));break;case"select":e.multiple=!!s.multiple,a=s.value,a!=null?da(e,!!s.multiple,a,!1):s.defaultValue!=null&&da(e,!!s.multiple,s.defaultValue,!0);break;default:typeof i.onClick=="function"&&(e.onclick=md)}switch(r){case"button":case"input":case"select":case"textarea":s=!!s.autoFocus;break e;case"img":s=!0;break e;default:s=!1}}s&&(t.flags|=4)}t.ref!==null&&(t.flags|=512,t.flags|=2097152)}return vt(t),null;case 6:if(e&&t.stateNode!=null)P0(e,t,e.memoizedProps,s);else{if(typeof s!="string"&&t.stateNode===null)throw Error($(166));if(r=ni(Jo.current),ni(rn.current),oc(t)){if(s=t.stateNode,r=t.memoizedProps,s[Jr]=t,(a=s.nodeValue!==r)&&(e=Yt,e!==null))switch(e.tag){case 3:ac(s.nodeValue,r,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&ac(s.nodeValue,r,(e.mode&1)!==0)}a&&(t.flags|=4)}else s=(r.nodeType===9?r:r.ownerDocument).createTextNode(s),s[Jr]=t,t.stateNode=s}return vt(t),null;case 13:if(He(ze),s=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(Fe&&Kt!==null&&t.mode&1&&!(t.flags&128))qw(),La(),t.flags|=98560,a=!1;else if(a=oc(t),s!==null&&s.dehydrated!==null){if(e===null){if(!a)throw Error($(318));if(a=t.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error($(317));a[Jr]=t}else La(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;vt(t),a=!1}else Or!==null&&(Xm(Or),Or=null),a=!0;if(!a)return t.flags&65536?t:null}return t.flags&128?(t.lanes=r,t):(s=s!==null,s!==(e!==null&&e.memoizedState!==null)&&s&&(t.child.flags|=8192,t.mode&1&&(e===null||ze.current&1?nt===0&&(nt=3):Lf())),t.updateQueue!==null&&(t.flags|=4),vt(t),null);case 4:return $a(),Bm(e,t),e===null&&Xo(t.stateNode.containerInfo),vt(t),null;case 10:return bf(t.type._context),vt(t),null;case 17:return Ut(t.type)&&pd(),vt(t),null;case 19:if(He(ze),a=t.memoizedState,a===null)return vt(t),null;if(s=(t.flags&128)!==0,o=a.rendering,o===null)if(s)ho(a,!1);else{if(nt!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=wd(e),o!==null){for(t.flags|=128,ho(a,!1),s=o.updateQueue,s!==null&&(t.updateQueue=s,t.flags|=4),t.subtreeFlags=0,s=r,r=t.child;r!==null;)a=r,e=s,a.flags&=14680066,o=a.alternate,o===null?(a.childLanes=0,a.lanes=e,a.child=null,a.subtreeFlags=0,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null,a.stateNode=null):(a.childLanes=o.childLanes,a.lanes=o.lanes,a.child=o.child,a.subtreeFlags=0,a.deletions=null,a.memoizedProps=o.memoizedProps,a.memoizedState=o.memoizedState,a.updateQueue=o.updateQueue,a.type=o.type,e=o.dependencies,a.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),r=r.sibling;return Oe(ze,ze.current&1|2),t.child}e=e.sibling}a.tail!==null&&Ke()>Fa&&(t.flags|=128,s=!0,ho(a,!1),t.lanes=4194304)}else{if(!s)if(e=wd(o),e!==null){if(t.flags|=128,s=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),ho(a,!0),a.tail===null&&a.tailMode==="hidden"&&!o.alternate&&!Fe)return vt(t),null}else 2*Ke()-a.renderingStartTime>Fa&&r!==1073741824&&(t.flags|=128,s=!0,ho(a,!1),t.lanes=4194304);a.isBackwards?(o.sibling=t.child,t.child=o):(r=a.last,r!==null?r.sibling=o:t.child=o,a.last=o)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=Ke(),t.sibling=null,r=ze.current,Oe(ze,s?r&1|2:r&1),t):(vt(t),null);case 22:case 23:return Df(),s=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==s&&(t.flags|=8192),s&&t.mode&1?Zt&1073741824&&(vt(t),t.subtreeFlags&6&&(t.flags|=8192)):vt(t),null;case 24:return null;case 25:return null}throw Error($(156,t.tag))}function j2(e,t){switch(gf(t),t.tag){case 1:return Ut(t.type)&&pd(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return $a(),He(Ft),He(jt),Sf(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Nf(t),null;case 13:if(He(ze),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error($(340));La()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return He(ze),null;case 4:return $a(),null;case 10:return bf(t.type._context),null;case 22:case 23:return Df(),null;case 24:return null;default:return null}}var dc=!1,wt=!1,k2=typeof WeakSet=="function"?WeakSet:Set,X=null;function aa(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(s){Ge(e,t,s)}else r.current=null}function Fm(e,t,r){try{r()}catch(s){Ge(e,t,s)}}var ov=!1;function N2(e,t){if(Nm=dd,e=Ow(),pf(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var s=r.getSelection&&r.getSelection();if(s&&s.rangeCount!==0){r=s.anchorNode;var i=s.anchorOffset,a=s.focusNode;s=s.focusOffset;try{r.nodeType,a.nodeType}catch{r=null;break e}var o=0,l=-1,c=-1,d=0,u=0,h=e,p=null;t:for(;;){for(var m;h!==r||i!==0&&h.nodeType!==3||(l=o+i),h!==a||s!==0&&h.nodeType!==3||(c=o+s),h.nodeType===3&&(o+=h.nodeValue.length),(m=h.firstChild)!==null;)p=h,h=m;for(;;){if(h===e)break t;if(p===r&&++d===i&&(l=o),p===a&&++u===s&&(c=o),(m=h.nextSibling)!==null)break;h=p,p=h.parentNode}h=m}r=l===-1||c===-1?null:{start:l,end:c}}else r=null}r=r||{start:0,end:0}}else r=null;for(Sm={focusedElem:e,selectionRange:r},dd=!1,X=t;X!==null;)if(t=X,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,X=e;else for(;X!==null;){t=X;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var b=y.memoizedProps,w=y.memoizedState,g=t.stateNode,v=g.getSnapshotBeforeUpdate(t.elementType===t.type?b:Pr(t.type,b),w);g.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var x=t.stateNode.containerInfo;x.nodeType===1?x.textContent="":x.nodeType===9&&x.documentElement&&x.removeChild(x.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error($(163))}}catch(j){Ge(t,t.return,j)}if(e=t.sibling,e!==null){e.return=t.return,X=e;break}X=t.return}return y=ov,ov=!1,y}function Oo(e,t,r){var s=t.updateQueue;if(s=s!==null?s.lastEffect:null,s!==null){var i=s=s.next;do{if((i.tag&e)===e){var a=i.destroy;i.destroy=void 0,a!==void 0&&Fm(t,r,a)}i=i.next}while(i!==s)}}function su(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var s=r.create;r.destroy=s()}r=r.next}while(r!==t)}}function Um(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t=="function"?t(e):t.current=e}}function T0(e){var t=e.alternate;t!==null&&(e.alternate=null,T0(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Jr],delete t[Ko],delete t[Am],delete t[a2],delete t[o2])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function _0(e){return e.tag===5||e.tag===3||e.tag===4}function lv(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||_0(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.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 Vm(e,t,r){var s=e.tag;if(s===5||s===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=md));else if(s!==4&&(e=e.child,e!==null))for(Vm(e,t,r),e=e.sibling;e!==null;)Vm(e,t,r),e=e.sibling}function zm(e,t,r){var s=e.tag;if(s===5||s===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(s!==4&&(e=e.child,e!==null))for(zm(e,t,r),e=e.sibling;e!==null;)zm(e,t,r),e=e.sibling}var pt=null,Rr=!1;function Yn(e,t,r){for(r=r.child;r!==null;)I0(e,t,r),r=r.sibling}function I0(e,t,r){if(tn&&typeof tn.onCommitFiberUnmount=="function")try{tn.onCommitFiberUnmount(Kd,r)}catch{}switch(r.tag){case 5:wt||aa(r,t);case 6:var s=pt,i=Rr;pt=null,Yn(e,t,r),pt=s,Rr=i,pt!==null&&(Rr?(e=pt,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):pt.removeChild(r.stateNode));break;case 18:pt!==null&&(Rr?(e=pt,r=r.stateNode,e.nodeType===8?ph(e.parentNode,r):e.nodeType===1&&ph(e,r),Wo(e)):ph(pt,r.stateNode));break;case 4:s=pt,i=Rr,pt=r.stateNode.containerInfo,Rr=!0,Yn(e,t,r),pt=s,Rr=i;break;case 0:case 11:case 14:case 15:if(!wt&&(s=r.updateQueue,s!==null&&(s=s.lastEffect,s!==null))){i=s=s.next;do{var a=i,o=a.destroy;a=a.tag,o!==void 0&&(a&2||a&4)&&Fm(r,t,o),i=i.next}while(i!==s)}Yn(e,t,r);break;case 1:if(!wt&&(aa(r,t),s=r.stateNode,typeof s.componentWillUnmount=="function"))try{s.props=r.memoizedProps,s.state=r.memoizedState,s.componentWillUnmount()}catch(l){Ge(r,t,l)}Yn(e,t,r);break;case 21:Yn(e,t,r);break;case 22:r.mode&1?(wt=(s=wt)||r.memoizedState!==null,Yn(e,t,r),wt=s):Yn(e,t,r);break;default:Yn(e,t,r)}}function cv(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new k2),t.forEach(function(s){var i=R2.bind(null,e,s);r.has(s)||(r.add(s),s.then(i,i))})}}function Nr(e,t){var r=t.deletions;if(r!==null)for(var s=0;s<r.length;s++){var i=r[s];try{var a=e,o=t,l=o;e:for(;l!==null;){switch(l.tag){case 5:pt=l.stateNode,Rr=!1;break e;case 3:pt=l.stateNode.containerInfo,Rr=!0;break e;case 4:pt=l.stateNode.containerInfo,Rr=!0;break e}l=l.return}if(pt===null)throw Error($(160));I0(a,o,i),pt=null,Rr=!1;var c=i.alternate;c!==null&&(c.return=null),i.return=null}catch(d){Ge(i,t,d)}}if(t.subtreeFlags&12854)for(t=t.child;t!==null;)R0(t,e),t=t.sibling}function R0(e,t){var r=e.alternate,s=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(Nr(t,e),zr(e),s&4){try{Oo(3,e,e.return),su(3,e)}catch(b){Ge(e,e.return,b)}try{Oo(5,e,e.return)}catch(b){Ge(e,e.return,b)}}break;case 1:Nr(t,e),zr(e),s&512&&r!==null&&aa(r,r.return);break;case 5:if(Nr(t,e),zr(e),s&512&&r!==null&&aa(r,r.return),e.flags&32){var i=e.stateNode;try{Fo(i,"")}catch(b){Ge(e,e.return,b)}}if(s&4&&(i=e.stateNode,i!=null)){var a=e.memoizedProps,o=r!==null?r.memoizedProps:a,l=e.type,c=e.updateQueue;if(e.updateQueue=null,c!==null)try{l==="input"&&a.type==="radio"&&a.name!=null&&tw(i,a),pm(l,o);var d=pm(l,a);for(o=0;o<c.length;o+=2){var u=c[o],h=c[o+1];u==="style"?aw(i,h):u==="dangerouslySetInnerHTML"?sw(i,h):u==="children"?Fo(i,h):ef(i,u,h,d)}switch(l){case"input":cm(i,a);break;case"textarea":rw(i,a);break;case"select":var p=i._wrapperState.wasMultiple;i._wrapperState.wasMultiple=!!a.multiple;var m=a.value;m!=null?da(i,!!a.multiple,m,!1):p!==!!a.multiple&&(a.defaultValue!=null?da(i,!!a.multiple,a.defaultValue,!0):da(i,!!a.multiple,a.multiple?[]:"",!1))}i[Ko]=a}catch(b){Ge(e,e.return,b)}}break;case 6:if(Nr(t,e),zr(e),s&4){if(e.stateNode===null)throw Error($(162));i=e.stateNode,a=e.memoizedProps;try{i.nodeValue=a}catch(b){Ge(e,e.return,b)}}break;case 3:if(Nr(t,e),zr(e),s&4&&r!==null&&r.memoizedState.isDehydrated)try{Wo(t.containerInfo)}catch(b){Ge(e,e.return,b)}break;case 4:Nr(t,e),zr(e);break;case 13:Nr(t,e),zr(e),i=e.child,i.flags&8192&&(a=i.memoizedState!==null,i.stateNode.isHidden=a,!a||i.alternate!==null&&i.alternate.memoizedState!==null||(Of=Ke())),s&4&&cv(e);break;case 22:if(u=r!==null&&r.memoizedState!==null,e.mode&1?(wt=(d=wt)||u,Nr(t,e),wt=d):Nr(t,e),zr(e),s&8192){if(d=e.memoizedState!==null,(e.stateNode.isHidden=d)&&!u&&e.mode&1)for(X=e,u=e.child;u!==null;){for(h=X=u;X!==null;){switch(p=X,m=p.child,p.tag){case 0:case 11:case 14:case 15:Oo(4,p,p.return);break;case 1:aa(p,p.return);var y=p.stateNode;if(typeof y.componentWillUnmount=="function"){s=p,r=p.return;try{t=s,y.props=t.memoizedProps,y.state=t.memoizedState,y.componentWillUnmount()}catch(b){Ge(s,r,b)}}break;case 5:aa(p,p.return);break;case 22:if(p.memoizedState!==null){uv(h);continue}}m!==null?(m.return=p,X=m):uv(h)}u=u.sibling}e:for(u=null,h=e;;){if(h.tag===5){if(u===null){u=h;try{i=h.stateNode,d?(a=i.style,typeof a.setProperty=="function"?a.setProperty("display","none","important"):a.display="none"):(l=h.stateNode,c=h.memoizedProps.style,o=c!=null&&c.hasOwnProperty("display")?c.display:null,l.style.display=iw("display",o))}catch(b){Ge(e,e.return,b)}}}else if(h.tag===6){if(u===null)try{h.stateNode.nodeValue=d?"":h.memoizedProps}catch(b){Ge(e,e.return,b)}}else if((h.tag!==22&&h.tag!==23||h.memoizedState===null||h===e)&&h.child!==null){h.child.return=h,h=h.child;continue}if(h===e)break e;for(;h.sibling===null;){if(h.return===null||h.return===e)break e;u===h&&(u=null),h=h.return}u===h&&(u=null),h.sibling.return=h.return,h=h.sibling}}break;case 19:Nr(t,e),zr(e),s&4&&cv(e);break;case 21:break;default:Nr(t,e),zr(e)}}function zr(e){var t=e.flags;if(t&2){try{e:{for(var r=e.return;r!==null;){if(_0(r)){var s=r;break e}r=r.return}throw Error($(160))}switch(s.tag){case 5:var i=s.stateNode;s.flags&32&&(Fo(i,""),s.flags&=-33);var a=lv(e);zm(e,a,i);break;case 3:case 4:var o=s.stateNode.containerInfo,l=lv(e);Vm(e,l,o);break;default:throw Error($(161))}}catch(c){Ge(e,e.return,c)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function S2(e,t,r){X=e,O0(e)}function O0(e,t,r){for(var s=(e.mode&1)!==0;X!==null;){var i=X,a=i.child;if(i.tag===22&&s){var o=i.memoizedState!==null||dc;if(!o){var l=i.alternate,c=l!==null&&l.memoizedState!==null||wt;l=dc;var d=wt;if(dc=o,(wt=c)&&!d)for(X=i;X!==null;)o=X,c=o.child,o.tag===22&&o.memoizedState!==null?hv(i):c!==null?(c.return=o,X=c):hv(i);for(;a!==null;)X=a,O0(a),a=a.sibling;X=i,dc=l,wt=d}dv(e)}else i.subtreeFlags&8772&&a!==null?(a.return=i,X=a):dv(e)}}function dv(e){for(;X!==null;){var t=X;if(t.flags&8772){var r=t.alternate;try{if(t.flags&8772)switch(t.tag){case 0:case 11:case 15:wt||su(5,t);break;case 1:var s=t.stateNode;if(t.flags&4&&!wt)if(r===null)s.componentDidMount();else{var i=t.elementType===t.type?r.memoizedProps:Pr(t.type,r.memoizedProps);s.componentDidUpdate(i,r.memoizedState,s.__reactInternalSnapshotBeforeUpdate)}var a=t.updateQueue;a!==null&&Xx(t,a,s);break;case 3:var o=t.updateQueue;if(o!==null){if(r=null,t.child!==null)switch(t.child.tag){case 5:r=t.child.stateNode;break;case 1:r=t.child.stateNode}Xx(t,o,r)}break;case 5:var l=t.stateNode;if(r===null&&t.flags&4){r=l;var c=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&r.focus();break;case"img":c.src&&(r.src=c.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(t.memoizedState===null){var d=t.alternate;if(d!==null){var u=d.memoizedState;if(u!==null){var h=u.dehydrated;h!==null&&Wo(h)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error($(163))}wt||t.flags&512&&Um(t)}catch(p){Ge(t,t.return,p)}}if(t===e){X=null;break}if(r=t.sibling,r!==null){r.return=t.return,X=r;break}X=t.return}}function uv(e){for(;X!==null;){var t=X;if(t===e){X=null;break}var r=t.sibling;if(r!==null){r.return=t.return,X=r;break}X=t.return}}function hv(e){for(;X!==null;){var t=X;try{switch(t.tag){case 0:case 11:case 15:var r=t.return;try{su(4,t)}catch(c){Ge(t,r,c)}break;case 1:var s=t.stateNode;if(typeof s.componentDidMount=="function"){var i=t.return;try{s.componentDidMount()}catch(c){Ge(t,i,c)}}var a=t.return;try{Um(t)}catch(c){Ge(t,a,c)}break;case 5:var o=t.return;try{Um(t)}catch(c){Ge(t,o,c)}}}catch(c){Ge(t,t.return,c)}if(t===e){X=null;break}var l=t.sibling;if(l!==null){l.return=t.return,X=l;break}X=t.return}}var C2=Math.ceil,Nd=Vn.ReactCurrentDispatcher,If=Vn.ReactCurrentOwner,fr=Vn.ReactCurrentBatchConfig,we=0,dt=null,et=null,ft=0,Zt=0,oa=Ds(0),nt=0,rl=null,yi=0,iu=0,Rf=0,Mo=null,Lt=null,Of=0,Fa=1/0,bn=null,Sd=!1,Wm=null,ws=null,uc=!1,ps=null,Cd=0,Do=0,Zm=null,Uc=-1,Vc=0;function Pt(){return we&6?Ke():Uc!==-1?Uc:Uc=Ke()}function js(e){return e.mode&1?we&2&&ft!==0?ft&-ft:c2.transition!==null?(Vc===0&&(Vc=vw()),Vc):(e=Ae,e!==0||(e=window.event,e=e===void 0?16:Sw(e.type)),e):1}function $r(e,t,r,s){if(50<Do)throw Do=0,Zm=null,Error($(185));Cl(e,r,s),(!(we&2)||e!==dt)&&(e===dt&&(!(we&2)&&(iu|=r),nt===4&&ss(e,ft)),Vt(e,s),r===1&&we===0&&!(t.mode&1)&&(Fa=Ke()+500,tu&&Ls()))}function Vt(e,t){var r=e.callbackNode;cC(e,t);var s=cd(e,e===dt?ft:0);if(s===0)r!==null&&wx(r),e.callbackNode=null,e.callbackPriority=0;else if(t=s&-s,e.callbackPriority!==t){if(r!=null&&wx(r),t===1)e.tag===0?l2(mv.bind(null,e)):zw(mv.bind(null,e)),s2(function(){!(we&6)&&Ls()}),r=null;else{switch(yw(s)){case 1:r=af;break;case 4:r=gw;break;case 16:r=ld;break;case 536870912:r=xw;break;default:r=ld}r=U0(r,M0.bind(null,e))}e.callbackPriority=t,e.callbackNode=r}}function M0(e,t){if(Uc=-1,Vc=0,we&6)throw Error($(327));var r=e.callbackNode;if(fa()&&e.callbackNode!==r)return null;var s=cd(e,e===dt?ft:0);if(s===0)return null;if(s&30||s&e.expiredLanes||t)t=Ed(e,s);else{t=s;var i=we;we|=2;var a=L0();(dt!==e||ft!==t)&&(bn=null,Fa=Ke()+500,mi(e,t));do try{P2();break}catch(l){D0(e,l)}while(!0);yf(),Nd.current=a,we=i,et!==null?t=0:(dt=null,ft=0,t=nt)}if(t!==0){if(t===2&&(i=ym(e),i!==0&&(s=i,t=qm(e,i))),t===1)throw r=rl,mi(e,0),ss(e,s),Vt(e,Ke()),r;if(t===6)ss(e,s);else{if(i=e.current.alternate,!(s&30)&&!E2(i)&&(t=Ed(e,s),t===2&&(a=ym(e),a!==0&&(s=a,t=qm(e,a))),t===1))throw r=rl,mi(e,0),ss(e,s),Vt(e,Ke()),r;switch(e.finishedWork=i,e.finishedLanes=s,t){case 0:case 1:throw Error($(345));case 2:Js(e,Lt,bn);break;case 3:if(ss(e,s),(s&130023424)===s&&(t=Of+500-Ke(),10<t)){if(cd(e,0)!==0)break;if(i=e.suspendedLanes,(i&s)!==s){Pt(),e.pingedLanes|=e.suspendedLanes&i;break}e.timeoutHandle=Em(Js.bind(null,e,Lt,bn),t);break}Js(e,Lt,bn);break;case 4:if(ss(e,s),(s&4194240)===s)break;for(t=e.eventTimes,i=-1;0<s;){var o=31-Hr(s);a=1<<o,o=t[o],o>i&&(i=o),s&=~a}if(s=i,s=Ke()-s,s=(120>s?120:480>s?480:1080>s?1080:1920>s?1920:3e3>s?3e3:4320>s?4320:1960*C2(s/1960))-s,10<s){e.timeoutHandle=Em(Js.bind(null,e,Lt,bn),s);break}Js(e,Lt,bn);break;case 5:Js(e,Lt,bn);break;default:throw Error($(329))}}}return Vt(e,Ke()),e.callbackNode===r?M0.bind(null,e):null}function qm(e,t){var r=Mo;return e.current.memoizedState.isDehydrated&&(mi(e,t).flags|=256),e=Ed(e,t),e!==2&&(t=Lt,Lt=r,t!==null&&Xm(t)),e}function Xm(e){Lt===null?Lt=e:Lt.push.apply(Lt,e)}function E2(e){for(var t=e;;){if(t.flags&16384){var r=t.updateQueue;if(r!==null&&(r=r.stores,r!==null))for(var s=0;s<r.length;s++){var i=r[s],a=i.getSnapshot;i=i.value;try{if(!Fr(a(),i))return!1}catch{return!1}}}if(r=t.child,t.subtreeFlags&16384&&r!==null)r.return=t,t=r;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 ss(e,t){for(t&=~Rf,t&=~iu,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var r=31-Hr(t),s=1<<r;e[r]=-1,t&=~s}}function mv(e){if(we&6)throw Error($(327));fa();var t=cd(e,0);if(!(t&1))return Vt(e,Ke()),null;var r=Ed(e,t);if(e.tag!==0&&r===2){var s=ym(e);s!==0&&(t=s,r=qm(e,s))}if(r===1)throw r=rl,mi(e,0),ss(e,t),Vt(e,Ke()),r;if(r===6)throw Error($(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,Js(e,Lt,bn),Vt(e,Ke()),null}function Mf(e,t){var r=we;we|=1;try{return e(t)}finally{we=r,we===0&&(Fa=Ke()+500,tu&&Ls())}}function bi(e){ps!==null&&ps.tag===0&&!(we&6)&&fa();var t=we;we|=1;var r=fr.transition,s=Ae;try{if(fr.transition=null,Ae=1,e)return e()}finally{Ae=s,fr.transition=r,we=t,!(we&6)&&Ls()}}function Df(){Zt=oa.current,He(oa)}function mi(e,t){e.finishedWork=null,e.finishedLanes=0;var r=e.timeoutHandle;if(r!==-1&&(e.timeoutHandle=-1,n2(r)),et!==null)for(r=et.return;r!==null;){var s=r;switch(gf(s),s.tag){case 1:s=s.type.childContextTypes,s!=null&&pd();break;case 3:$a(),He(Ft),He(jt),Sf();break;case 5:Nf(s);break;case 4:$a();break;case 13:He(ze);break;case 19:He(ze);break;case 10:bf(s.type._context);break;case 22:case 23:Df()}r=r.return}if(dt=e,et=e=ks(e.current,null),ft=Zt=t,nt=0,rl=null,Rf=iu=yi=0,Lt=Mo=null,ri!==null){for(t=0;t<ri.length;t++)if(r=ri[t],s=r.interleaved,s!==null){r.interleaved=null;var i=s.next,a=r.pending;if(a!==null){var o=a.next;a.next=i,s.next=o}r.pending=s}ri=null}return e}function D0(e,t){do{var r=et;try{if(yf(),$c.current=kd,jd){for(var s=We.memoizedState;s!==null;){var i=s.queue;i!==null&&(i.pending=null),s=s.next}jd=!1}if(vi=0,ot=tt=We=null,Ro=!1,Qo=0,If.current=null,r===null||r.return===null){nt=1,rl=t,et=null;break}e:{var a=e,o=r.return,l=r,c=t;if(t=ft,l.flags|=32768,c!==null&&typeof c=="object"&&typeof c.then=="function"){var d=c,u=l,h=u.tag;if(!(u.mode&1)&&(h===0||h===11||h===15)){var p=u.alternate;p?(u.updateQueue=p.updateQueue,u.memoizedState=p.memoizedState,u.lanes=p.lanes):(u.updateQueue=null,u.memoizedState=null)}var m=ev(o);if(m!==null){m.flags&=-257,tv(m,o,l,a,t),m.mode&1&&Qx(a,d,t),t=m,c=d;var y=t.updateQueue;if(y===null){var b=new Set;b.add(c),t.updateQueue=b}else y.add(c);break e}else{if(!(t&1)){Qx(a,d,t),Lf();break e}c=Error($(426))}}else if(Fe&&l.mode&1){var w=ev(o);if(w!==null){!(w.flags&65536)&&(w.flags|=256),tv(w,o,l,a,t),xf(Ba(c,l));break e}}a=c=Ba(c,l),nt!==4&&(nt=2),Mo===null?Mo=[a]:Mo.push(a),a=o;do{switch(a.tag){case 3:a.flags|=65536,t&=-t,a.lanes|=t;var g=y0(a,c,t);qx(a,g);break e;case 1:l=c;var v=a.type,x=a.stateNode;if(!(a.flags&128)&&(typeof v.getDerivedStateFromError=="function"||x!==null&&typeof x.componentDidCatch=="function"&&(ws===null||!ws.has(x)))){a.flags|=65536,t&=-t,a.lanes|=t;var j=b0(a,l,t);qx(a,j);break e}}a=a.return}while(a!==null)}$0(r)}catch(k){t=k,et===r&&r!==null&&(et=r=r.return);continue}break}while(!0)}function L0(){var e=Nd.current;return Nd.current=kd,e===null?kd:e}function Lf(){(nt===0||nt===3||nt===2)&&(nt=4),dt===null||!(yi&268435455)&&!(iu&268435455)||ss(dt,ft)}function Ed(e,t){var r=we;we|=2;var s=L0();(dt!==e||ft!==t)&&(bn=null,mi(e,t));do try{A2();break}catch(i){D0(e,i)}while(!0);if(yf(),we=r,Nd.current=s,et!==null)throw Error($(261));return dt=null,ft=0,nt}function A2(){for(;et!==null;)H0(et)}function P2(){for(;et!==null&&!eC();)H0(et)}function H0(e){var t=F0(e.alternate,e,Zt);e.memoizedProps=e.pendingProps,t===null?$0(e):et=t,If.current=null}function $0(e){var t=e;do{var r=t.alternate;if(e=t.return,t.flags&32768){if(r=j2(r,t),r!==null){r.flags&=32767,et=r;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{nt=6,et=null;return}}else if(r=w2(r,t,Zt),r!==null){et=r;return}if(t=t.sibling,t!==null){et=t;return}et=t=e}while(t!==null);nt===0&&(nt=5)}function Js(e,t,r){var s=Ae,i=fr.transition;try{fr.transition=null,Ae=1,T2(e,t,r,s)}finally{fr.transition=i,Ae=s}return null}function T2(e,t,r,s){do fa();while(ps!==null);if(we&6)throw Error($(327));r=e.finishedWork;var i=e.finishedLanes;if(r===null)return null;if(e.finishedWork=null,e.finishedLanes=0,r===e.current)throw Error($(177));e.callbackNode=null,e.callbackPriority=0;var a=r.lanes|r.childLanes;if(dC(e,a),e===dt&&(et=dt=null,ft=0),!(r.subtreeFlags&2064)&&!(r.flags&2064)||uc||(uc=!0,U0(ld,function(){return fa(),null})),a=(r.flags&15990)!==0,r.subtreeFlags&15990||a){a=fr.transition,fr.transition=null;var o=Ae;Ae=1;var l=we;we|=4,If.current=null,N2(e,r),R0(r,e),KC(Sm),dd=!!Nm,Sm=Nm=null,e.current=r,S2(r),tC(),we=l,Ae=o,fr.transition=a}else e.current=r;if(uc&&(uc=!1,ps=e,Cd=i),a=e.pendingLanes,a===0&&(ws=null),sC(r.stateNode),Vt(e,Ke()),t!==null)for(s=e.onRecoverableError,r=0;r<t.length;r++)i=t[r],s(i.value,{componentStack:i.stack,digest:i.digest});if(Sd)throw Sd=!1,e=Wm,Wm=null,e;return Cd&1&&e.tag!==0&&fa(),a=e.pendingLanes,a&1?e===Zm?Do++:(Do=0,Zm=e):Do=0,Ls(),null}function fa(){if(ps!==null){var e=yw(Cd),t=fr.transition,r=Ae;try{if(fr.transition=null,Ae=16>e?16:e,ps===null)var s=!1;else{if(e=ps,ps=null,Cd=0,we&6)throw Error($(331));var i=we;for(we|=4,X=e.current;X!==null;){var a=X,o=a.child;if(X.flags&16){var l=a.deletions;if(l!==null){for(var c=0;c<l.length;c++){var d=l[c];for(X=d;X!==null;){var u=X;switch(u.tag){case 0:case 11:case 15:Oo(8,u,a)}var h=u.child;if(h!==null)h.return=u,X=h;else for(;X!==null;){u=X;var p=u.sibling,m=u.return;if(T0(u),u===d){X=null;break}if(p!==null){p.return=m,X=p;break}X=m}}}var y=a.alternate;if(y!==null){var b=y.child;if(b!==null){y.child=null;do{var w=b.sibling;b.sibling=null,b=w}while(b!==null)}}X=a}}if(a.subtreeFlags&2064&&o!==null)o.return=a,X=o;else e:for(;X!==null;){if(a=X,a.flags&2048)switch(a.tag){case 0:case 11:case 15:Oo(9,a,a.return)}var g=a.sibling;if(g!==null){g.return=a.return,X=g;break e}X=a.return}}var v=e.current;for(X=v;X!==null;){o=X;var x=o.child;if(o.subtreeFlags&2064&&x!==null)x.return=o,X=x;else e:for(o=v;X!==null;){if(l=X,l.flags&2048)try{switch(l.tag){case 0:case 11:case 15:su(9,l)}}catch(k){Ge(l,l.return,k)}if(l===o){X=null;break e}var j=l.sibling;if(j!==null){j.return=l.return,X=j;break e}X=l.return}}if(we=i,Ls(),tn&&typeof tn.onPostCommitFiberRoot=="function")try{tn.onPostCommitFiberRoot(Kd,e)}catch{}s=!0}return s}finally{Ae=r,fr.transition=t}}return!1}function pv(e,t,r){t=Ba(r,t),t=y0(e,t,1),e=bs(e,t,1),t=Pt(),e!==null&&(Cl(e,1,t),Vt(e,t))}function Ge(e,t,r){if(e.tag===3)pv(e,e,r);else for(;t!==null;){if(t.tag===3){pv(t,e,r);break}else if(t.tag===1){var s=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof s.componentDidCatch=="function"&&(ws===null||!ws.has(s))){e=Ba(r,e),e=b0(t,e,1),t=bs(t,e,1),e=Pt(),t!==null&&(Cl(t,1,e),Vt(t,e));break}}t=t.return}}function _2(e,t,r){var s=e.pingCache;s!==null&&s.delete(t),t=Pt(),e.pingedLanes|=e.suspendedLanes&r,dt===e&&(ft&r)===r&&(nt===4||nt===3&&(ft&130023424)===ft&&500>Ke()-Of?mi(e,0):Rf|=r),Vt(e,t)}function B0(e,t){t===0&&(e.mode&1?(t=tc,tc<<=1,!(tc&130023424)&&(tc=4194304)):t=1);var r=Pt();e=Ln(e,t),e!==null&&(Cl(e,t,r),Vt(e,r))}function I2(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),B0(e,r)}function R2(e,t){var r=0;switch(e.tag){case 13:var s=e.stateNode,i=e.memoizedState;i!==null&&(r=i.retryLane);break;case 19:s=e.stateNode;break;default:throw Error($(314))}s!==null&&s.delete(t),B0(e,r)}var F0;F0=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||Ft.current)$t=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return $t=!1,b2(e,t,r);$t=!!(e.flags&131072)}else $t=!1,Fe&&t.flags&1048576&&Ww(t,xd,t.index);switch(t.lanes=0,t.tag){case 2:var s=t.type;Fc(e,t),e=t.pendingProps;var i=Da(t,jt.current);pa(t,r),i=Ef(null,t,s,e,i,r);var a=Af();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ut(s)?(a=!0,fd(t)):a=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,jf(t),i.updater=nu,t.stateNode=i,i._reactInternals=t,Om(t,s,e,r),t=Lm(null,t,s,!0,a,r)):(t.tag=0,Fe&&a&&ff(t),Nt(null,t,i,r),t=t.child),t;case 16:s=t.elementType;e:{switch(Fc(e,t),e=t.pendingProps,i=s._init,s=i(s._payload),t.type=s,i=t.tag=M2(s),e=Pr(s,e),i){case 0:t=Dm(null,t,s,e,r);break e;case 1:t=sv(null,t,s,e,r);break e;case 11:t=rv(null,t,s,e,r);break e;case 14:t=nv(null,t,s,Pr(s.type,e),r);break e}throw Error($(306,s,""))}return t;case 0:return s=t.type,i=t.pendingProps,i=t.elementType===s?i:Pr(s,i),Dm(e,t,s,i,r);case 1:return s=t.type,i=t.pendingProps,i=t.elementType===s?i:Pr(s,i),sv(e,t,s,i,r);case 3:e:{if(N0(t),e===null)throw Error($(387));s=t.pendingProps,a=t.memoizedState,i=a.element,Yw(e,t),bd(t,s,null,r);var o=t.memoizedState;if(s=o.element,a.isDehydrated)if(a={element:s,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=a,t.memoizedState=a,t.flags&256){i=Ba(Error($(423)),t),t=iv(e,t,s,r,i);break e}else if(s!==i){i=Ba(Error($(424)),t),t=iv(e,t,s,r,i);break e}else for(Kt=ys(t.stateNode.containerInfo.firstChild),Yt=t,Fe=!0,Or=null,r=Gw(t,null,s,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(La(),s===i){t=Hn(e,t,r);break e}Nt(e,t,s,r)}t=t.child}return t;case 5:return Jw(t),e===null&&_m(t),s=t.type,i=t.pendingProps,a=e!==null?e.memoizedProps:null,o=i.children,Cm(s,i)?o=null:a!==null&&Cm(s,a)&&(t.flags|=32),k0(e,t),Nt(e,t,o,r),t.child;case 6:return e===null&&_m(t),null;case 13:return S0(e,t,r);case 4:return kf(t,t.stateNode.containerInfo),s=t.pendingProps,e===null?t.child=Ha(t,null,s,r):Nt(e,t,s,r),t.child;case 11:return s=t.type,i=t.pendingProps,i=t.elementType===s?i:Pr(s,i),rv(e,t,s,i,r);case 7:return Nt(e,t,t.pendingProps,r),t.child;case 8:return Nt(e,t,t.pendingProps.children,r),t.child;case 12:return Nt(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(s=t.type._context,i=t.pendingProps,a=t.memoizedProps,o=i.value,Oe(vd,s._currentValue),s._currentValue=o,a!==null)if(Fr(a.value,o)){if(a.children===i.children&&!Ft.current){t=Hn(e,t,r);break e}}else for(a=t.child,a!==null&&(a.return=t);a!==null;){var l=a.dependencies;if(l!==null){o=a.child;for(var c=l.firstContext;c!==null;){if(c.context===s){if(a.tag===1){c=_n(-1,r&-r),c.tag=2;var d=a.updateQueue;if(d!==null){d=d.shared;var u=d.pending;u===null?c.next=c:(c.next=u.next,u.next=c),d.pending=c}}a.lanes|=r,c=a.alternate,c!==null&&(c.lanes|=r),Im(a.return,r,t),l.lanes|=r;break}c=c.next}}else if(a.tag===10)o=a.type===t.type?null:a.child;else if(a.tag===18){if(o=a.return,o===null)throw Error($(341));o.lanes|=r,l=o.alternate,l!==null&&(l.lanes|=r),Im(o,r,t),o=a.sibling}else o=a.child;if(o!==null)o.return=a;else for(o=a;o!==null;){if(o===t){o=null;break}if(a=o.sibling,a!==null){a.return=o.return,o=a;break}o=o.return}a=o}Nt(e,t,i.children,r),t=t.child}return t;case 9:return i=t.type,s=t.pendingProps.children,pa(t,r),i=gr(i),s=s(i),t.flags|=1,Nt(e,t,s,r),t.child;case 14:return s=t.type,i=Pr(s,t.pendingProps),i=Pr(s.type,i),nv(e,t,s,i,r);case 15:return w0(e,t,t.type,t.pendingProps,r);case 17:return s=t.type,i=t.pendingProps,i=t.elementType===s?i:Pr(s,i),Fc(e,t),t.tag=1,Ut(s)?(e=!0,fd(t)):e=!1,pa(t,r),v0(t,s,i),Om(t,s,i,r),Lm(null,t,s,!0,e,r);case 19:return C0(e,t,r);case 22:return j0(e,t,r)}throw Error($(156,t.tag))};function U0(e,t){return fw(e,t)}function O2(e,t,r,s){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.t
vendor: 9,313 bytes, line 40
40ype=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=s,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function mr(e,t,r,s){return new O2(e,t,r,s)}function Hf(e){return e=e.prototype,!(!e||!e.isReactComponent)}function M2(e){if(typeof e=="function")return Hf(e)?1:0;if(e!=null){if(e=e.$$typeof,e===rf)return 11;if(e===nf)return 14}return 2}function ks(e,t){var r=e.alternate;return r===null?(r=mr(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function zc(e,t,r,s,i,a){var o=2;if(s=e,typeof e=="function")Hf(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case Yi:return pi(r.children,i,a,t);case tf:o=8,i|=8;break;case sm:return e=mr(12,r,t,i|2),e.elementType=sm,e.lanes=a,e;case im:return e=mr(13,r,t,i),e.elementType=im,e.lanes=a,e;case am:return e=mr(19,r,t,i),e.elementType=am,e.lanes=a,e;case Jb:return au(r,i,a,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Kb:o=10;break e;case Yb:o=9;break e;case rf:o=11;break e;case nf:o=14;break e;case ts:o=16,s=null;break e}throw Error($(130,e==null?e:typeof e,""))}return t=mr(o,r,t,i),t.elementType=e,t.type=s,t.lanes=a,t}function pi(e,t,r,s){return e=mr(7,e,s,t),e.lanes=r,e}function au(e,t,r,s){return e=mr(22,e,s,t),e.elementType=Jb,e.lanes=r,e.stateNode={isHidden:!1},e}function jh(e,t,r){return e=mr(6,e,null,t),e.lanes=r,e}function kh(e,t,r){return t=mr(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function D2(e,t,r,s,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=nh(0),this.expirationTimes=nh(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=nh(0),this.identifierPrefix=s,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function $f(e,t,r,s,i,a,o,l,c){return e=new D2(e,t,r,l,c),t===1?(t=1,a===!0&&(t|=8)):t=0,a=mr(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:s,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},jf(a),e}function L2(e,t,r){var s=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Ki,key:s==null?null:""+s,children:e,containerInfo:t,implementation:r}}function V0(e){if(!e)return Ps;e=e._reactInternals;e:{if(Ai(e)!==e||e.tag!==1)throw Error($(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Ut(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(t!==null);throw Error($(171))}if(e.tag===1){var r=e.type;if(Ut(r))return Vw(e,r,t)}return t}function z0(e,t,r,s,i,a,o,l,c){return e=$f(r,s,!0,e,i,a,o,l,c),e.context=V0(null),r=e.current,s=Pt(),i=js(r),a=_n(s,i),a.callback=t??null,bs(r,a,i),e.current.lanes=i,Cl(e,i,s),Vt(e,s),e}function ou(e,t,r,s){var i=t.current,a=Pt(),o=js(i);return r=V0(r),t.context===null?t.context=r:t.pendingContext=r,t=_n(a,o),t.payload={element:e},s=s===void 0?null:s,s!==null&&(t.callback=s),e=bs(i,t,o),e!==null&&($r(e,i,o,a),Hc(e,i,o)),o}function Ad(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function fv(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var r=e.retryLane;e.retryLane=r!==0&&r<t?r:t}}function Bf(e,t){fv(e,t),(e=e.alternate)&&fv(e,t)}function H2(){return null}var W0=typeof reportError=="function"?reportError:function(e){console.error(e)};function Ff(e){this._internalRoot=e}lu.prototype.render=Ff.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error($(409));ou(e,t,null,null)};lu.prototype.unmount=Ff.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;bi(function(){ou(null,e,null,null)}),t[Dn]=null}};function lu(e){this._internalRoot=e}lu.prototype.unstable_scheduleHydration=function(e){if(e){var t=jw();e={blockedOn:null,target:e,priority:t};for(var r=0;r<ns.length&&t!==0&&t<ns[r].priority;r++);ns.splice(r,0,e),r===0&&Nw(e)}};function Uf(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function cu(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function gv(){}function $2(e,t,r,s,i){if(i){if(typeof s=="function"){var a=s;s=function(){var d=Ad(o);a.call(d)}}var o=z0(t,s,e,0,null,!1,!1,"",gv);return e._reactRootContainer=o,e[Dn]=o.current,Xo(e.nodeType===8?e.parentNode:e),bi(),o}for(;i=e.lastChild;)e.removeChild(i);if(typeof s=="function"){var l=s;s=function(){var d=Ad(c);l.call(d)}}var c=$f(e,0,!1,null,null,!1,!1,"",gv);return e._reactRootContainer=c,e[Dn]=c.current,Xo(e.nodeType===8?e.parentNode:e),bi(function(){ou(t,c,r,s)}),c}function du(e,t,r,s,i){var a=r._reactRootContainer;if(a){var o=a;if(typeof i=="function"){var l=i;i=function(){var c=Ad(o);l.call(c)}}ou(t,o,e,i)}else o=$2(r,t,e,i,s);return Ad(o)}bw=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var r=jo(t.pendingLanes);r!==0&&(of(t,r|1),Vt(t,Ke()),!(we&6)&&(Fa=Ke()+500,Ls()))}break;case 13:bi(function(){var s=Ln(e,1);if(s!==null){var i=Pt();$r(s,e,1,i)}}),Bf(e,1)}};lf=function(e){if(e.tag===13){var t=Ln(e,134217728);if(t!==null){var r=Pt();$r(t,e,134217728,r)}Bf(e,134217728)}};ww=function(e){if(e.tag===13){var t=js(e),r=Ln(e,t);if(r!==null){var s=Pt();$r(r,e,t,s)}Bf(e,t)}};jw=function(){return Ae};kw=function(e,t){var r=Ae;try{return Ae=e,t()}finally{Ae=r}};gm=function(e,t,r){switch(t){case"input":if(cm(e,r),t=r.name,r.type==="radio"&&t!=null){for(r=e;r.parentNode;)r=r.parentNode;for(r=r.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<r.length;t++){var s=r[t];if(s!==e&&s.form===e.form){var i=eu(s);if(!i)throw Error($(90));ew(s),cm(s,i)}}}break;case"textarea":rw(e,r);break;case"select":t=r.value,t!=null&&da(e,!!r.multiple,t,!1)}};cw=Mf;dw=bi;var B2={usingClientEntryPoint:!1,Events:[Al,ta,eu,ow,lw,Mf]},mo={findFiberByHostInstance:ti,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},F2={bundleType:mo.bundleType,version:mo.version,rendererPackageName:mo.rendererPackageName,rendererConfig:mo.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Vn.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=mw(e),e===null?null:e.stateNode},findFiberByHostInstance:mo.findFiberByHostInstance||H2,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var hc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!hc.isDisabled&&hc.supportsFiber)try{Kd=hc.inject(F2),tn=hc}catch{}}tr.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=B2;tr.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!Uf(t))throw Error($(200));return L2(e,t,null,r)};tr.createRoot=function(e,t){if(!Uf(e))throw Error($(299));var r=!1,s="",i=W0;return t!=null&&(t.unstable_strictMode===!0&&(r=!0),t.identifierPrefix!==void 0&&(s=t.identifierPrefix),t.onRecoverableError!==void 0&&(i=t.onRecoverableError)),t=$f(e,1,!1,null,null,r,!1,s,i),e[Dn]=t.current,Xo(e.nodeType===8?e.parentNode:e),new Ff(t)};tr.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error($(188)):(e=Object.keys(e).join(","),Error($(268,e)));return e=mw(t),e=e===null?null:e.stateNode,e};tr.flushSync=function(e){return bi(e)};tr.hydrate=function(e,t,r){if(!cu(t))throw Error($(200));return du(null,e,t,!0,r)};tr.hydrateRoot=function(e,t,r){if(!Uf(e))throw Error($(405));var s=r!=null&&r.hydratedSources||null,i=!1,a="",o=W0;if(r!=null&&(r.unstable_strictMode===!0&&(i=!0),r.identifierPrefix!==void 0&&(a=r.identifierPrefix),r.onRecoverableError!==void 0&&(o=r.onRecoverableError)),t=z0(t,null,e,1,r??null,i,!1,a,o),e[Dn]=t.current,Xo(e),s)for(e=0;e<s.length;e++)r=s[e],i=r._getVersion,i=i(r._source),t.mutableSourceEagerHydrationData==null?t.mutableSourceEagerHydrationData=[r,i]:t.mutableSourceEagerHydrationData.push(r,i);return new lu(t)};tr.render=function(e,t,r){if(!cu(t))throw Error($(200));return du(null,e,t,!1,r)};tr.unmountComponentAtNode=function(e){if(!cu(e))throw Error($(40
40));return e._reactRootContainer?(bi(function(){du(null,null,e,!1,function(){e._reactRootContainer=null,e[Dn]=null})}),!0):!1};tr.unstable_batchedUpdates=Mf;tr.unstable_renderSubtreeIntoContainer=function(e,t,r,s){if(!cu(r))throw Error($(200));if(e==null||e._reactInternals===void 0)throw Error($(38));return du(e,t,r,!1,s)};tr.version="18.3.1-next-f1338f8080-20240426";function Z0(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Z0)}catch(e){console.error(e)}}Z0(),Zb.exports=tr;var Hs=Zb.exports;const U2=Nl(Hs);var q0,X0,xv=Hs;X0=xv.createRoot,q0=xv.hydrateRoot;var V2=typeof Element<"u",z2=typeof Map=="function",W2=typeof Set=="function",Z2=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Wc(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var r,s,i;if(Array.isArray(e)){if(r=e.length,r!=t.length)return!1;for(s=r;s--!==0;)if(!Wc(e[s],t[s]))return!1;return!0}var a;if(z2&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(a=e.entries();!(s=a.next()).done;)if(!t.has(s.value[0]))return!1;for(a=e.entries();!(s=a.next()).done;)if(!Wc(s.value[1],t.get(s.value[0])))return!1;return!0}if(W2&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(a=e.entries();!(s=a.next()).done;)if(!t.has(s.value[0]))return!1;return!0}if(Z2&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(r=e.length,r!=t.length)return!1;for(s=r;s--!==0;)if(e[s]!==t[s])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")return e.toString()===t.toString();if(i=Object.keys(e),r=i.length,r!==Object.keys(t).length)return!1;for(s=r;s--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[s]))return!1;if(V2&&e instanceof Element)return!1;for(s=r;s--!==0;)if(!((i[s]==="_owner"||i[s]==="__v"||i[s]==="__o")&&e.$$typeof)&&!Wc(e[i[s]],t[i[s]]))return!1;return!0}return e!==e&&t!==t}var q2=function(t,r){try{return Wc(t,r)}catch(s){if((s.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw s}};const X2=Nl(q2);var G2=function(e,t,r,s,i,a,o,l){if(!e){var c;if(t===void 0)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var d=[r,s,i,a,o,l],u=0;c=new Error(t.replace(/%s/g,function(){return d[u++]})),c.name="Invariant Violation"}throw c.framesToPop=1,c}},K2=G2;const vv=Nl(K2);var Y2=function(t,r,s,i){var a=s?s.call(i,t,r):void 0;if(a!==void 0)return!!a;if(t===r)return!0;if(typeof t!="object"||!t||typeof r!="object"||!r)return!1;var o=Object.keys(t),l=Object.keys(r);if(o.length!==l.length)return!1;for(var c=Object.prototype.hasOwnProperty.bind(r),d=0;d<o.length;d++){var u=o[d];if(!c(u))return!1;var h=t[u],p=r[u];if(a=s?s.call(i,h,p,u):void 0,a===!1||a===void 0&&h!==p)return!1}return!0};const J2=Nl(Y2);var G0=(e=>(e.BASE="base",e.BODY="body",e.HEAD="head",e.HTML="html",e.LINK="link",e.META="meta",e.NOSCRIPT="noscript",e.SCRIPT="script",e.STYLE="style",e.TITLE="title",e.FRAGMENT="Symbol(react.fragment)",e))(G0||{}),Nh={link:{rel:["amphtml","canonical","alternate"]},script:{type:["application/ld+json"]},meta:{charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]}},yv=Object.values(G0),uu={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},K0=Object.entries(uu).reduce((e,[t,r])=>(e[r]=t,e),{}),Lr="data-rh",ga={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},xa=(e,t)=>{for(let r=e.length-1;r>=0;r-=1){const s=e[r];if(Object.prototype.hasOwnProperty.call(s,t))return s[t]}return null},Q2=e=>{let t=xa(e,"title");const r=xa(e,ga.TITLE_TEMPLATE);if(Array.isArray(t)&&(t=t.join("")),r&&t)return r.replace(/%s/g,()=>t);const s=xa(e,ga.DEFAULT_TITLE);return t||s||void 0},eE=e=>xa(e,ga.ON_CHANGE_CLIENT_STATE)||(()=>{}),Sh=(e,t)=>t.filter(r=>typeof r[e]<"u").map(r=>r[e]).reduce((r,s)=>({...r,...s}),{}),tE=(e,t)=>t.filter(r=>typeof r.base<"u").map(r=>r.base).reverse().reduce((r,s)=>{if(!r.length){const i=Object.keys(s);for(let a=0;a<i.length;a+=1){const l=i[a].toLowerCase();if(e.indexOf(l)!==-1&&s[l])return r.concat(s)}}return r},[]),rE=e=>console&&typeof console.warn=="function"&&console.warn(e),po=(e,t,r)=>{const s={};return r.filter(i=>Array.isArray(i[e])?!0:(typeof i[e]<"u"&&rE(`Helmet: ${e} should be of type "Array". Instead found type "${typeof i[e]}"`),!1)).map(i=>i[e]).reverse().reduce((i,a)=>{const o={};a.filter(c=>{let d;const u=Object.keys(c);for(let p=0;p<u.length;p+=1){const m=u[p],y=m.toLowerCase();t.indexOf(y)!==-1&&!(d==="rel"&&c[d].toLowerCase()==="canonical")&&!(y==="rel"&&c[y].toLowerCase()==="stylesheet")&&(d=y),t.indexOf(m)!==-1&&(m==="innerHTML"||m==="cssText"||m==="itemprop")&&(d=m)}if(!d||!c[d])return!1;const h=c[d].toLowerCase();return s[d]||(s[d]={}),o[d]||(o[d]={}),s[d][h]?!1:(o[d][h]=!0,!0)}
40).reverse().forEach(c=>i.push(c));const l=Object.keys(o);for(let c=0;c<l.length;c+=1){const d=l[c],u={...s[d],...o[d]};s[d]=u}return i},[]).reverse()},nE=(e,t)=>{if(Array.isArray(e)&&e.length){for(let r=0;r<e.length;r+=1)if(e[r][t])return!0}return!1},sE=e=>({baseTag:tE(["href"],e),bodyAttributes:Sh("bodyAttributes",e),defer:xa(e,ga.DEFER),encode:xa(e,ga.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:Sh("htmlAttributes",e),linkTags:po("link",["rel","href"],e),metaTags:po("meta",["name","charset","http-equiv","property","itemprop"],e),noscriptTags:po("noscript",["innerHTML"],e),onChangeClientState:eE(e),scriptTags:po("script",["src","innerHTML"],e),styleTags:po("style",["cssText"],e),title:Q2(e),titleAttributes:Sh("titleAttributes",e),prioritizeSeoTags:nE(e,ga.PRIORITIZE_SEO_TAGS)}),Y0=e=>Array.isArray(e)?e.join(""):e,iE=(e,t)=>{const r=Object.keys(e);for(let s=0;s<r.length;s+=1)if(t[r[s]]&&t[r[s]].includes(e[r[s]]))return!0;return!1},Ch=(e,t)=>Array.isArray(e)?e.reduce((r,s)=>(iE(s,t)?r.priority.push(s):r.default.push(s),r),{priority:[],default:[]}):{default:e,priority:[]},bv=(e,t)=>({...e,[t]:void 0}),aE=["noscript","script","style"],Gm=(e,t=!0)=>t===!1?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),J0=e=>Object.keys(e).reduce((t,r)=>{const s=typeof e[r]<"u"?`${r}="${e[r]}"`:`${r}`;return t?`${t} ${s}`:s},""),oE=(e,t,r,s)=>{const i=J0(r),a=Y0(t);return i?`<${e} ${Lr}="true" ${i}>${Gm(a,s)}</${e}>`:`<${e} ${Lr}="true">${Gm(a,s)}</${e}>`},lE=(e,t,r=!0)=>t.reduce((s,i)=>{const a=i,o=Object.keys(a).filter(d=>!(d==="innerHTML"||d==="cssText")).reduce((d,u)=>{const h=typeof a[u]>
40"u"?u:`${u}="${Gm(a[u],r)}"`;return d?`${d} ${h}`:h},""),l=a.innerHTML||a.cssText||"",c=aE.indexOf(e)===-1;return`${s}<${e} ${Lr}="true" ${o}${c?"/>":`>${l}</${e}>`}`},""),Q0=(e,t={})=>Object.keys(e).reduce((r,s)=>{const i=uu[s];return r[i||s]=e[s],r},t),cE=(e,t,r)=>{const s={key:t,[Lr]:!0},i=Q0(r,s);return[L.createElement("title",i,t)]},Zc=(e,t)=>t.map((r,s)=>{const i={key:s,[Lr]:!0};return Object.keys(r).forEach(a=>{const l=uu[a]||a;if(l==="innerHTML"||l==="cssText"){const c=r.innerHTML||r.cssText;i.dangerouslySetInnerHTML={__html:c}}else i[l]=r[a]}),L.createElement(e,i)}),or=(e,t,r=!0)=>{switch(e){case"title":return{toComponent:()=>cE(e,t.title,t.titleAttributes),toString:()=>oE(e,t.title,t.titleAttributes,r)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>Q0(t),toString:()=>J0(t)};default:return{toComponent:()=>Zc(e,t),toString:()=>lE(e,t,r)}}},dE=({metaTags:e,linkTags:t,scriptTags:r,encode:s})=>{const i=Ch(e,Nh.meta),a=Ch(t,Nh.link),o=Ch(r,Nh.script);return{priorityMethods:{toComponent:()=>[...Zc("meta",i.priority),...Zc("link",a.priority),...Zc("script",o.priority)],toString:()=>`${or("meta",i.priority,s)} ${or("link",a.priority,s)} ${or("script",o.priority,s)}`},metaTags:i.default,linkTags:a.default,scriptTags:o.default}},uE=e=>{const{baseTag:t,bodyAttributes:r,encode:s=!0,htmlAttributes:i,noscriptTags:a,styleTags:o,title:l="",titleAttributes:c,prioritizeSeoTags:d}=e;let{linkTags:u,metaTags:h,scriptTags:p}=e,m={toComponent:()=>[],toString:()=>""};return d&&({priorityMethods:m,linkTags:u,metaTags:h,scriptTags:p}=dE(e)),{priority:m,base:or("base",t,s),bodyAttributes:or("bodyAttributes",r,s),htmlAttributes:or("htmlAttributes",i,s),link:or("link",u,s),meta:or("meta",h,s),noscript:or("noscript",a,s),script:or("script",p,s),style:or("style",o,s),title:or("title",{title:l,titleAttributes:c},s)}},Km=uE,mc=[],Vf=!!(typeof window<"u"&&window.document&&window.document.createElement),Ym=class{constructor(e,t){fn(this,"instances",[]);fn(this,"canUseDOM",Vf);fn(this,"context");fn(this,"value",{setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?mc:this.instances,add:e=>{(this.canUseDOM?mc:this.instances).push(e)},remove:e=>{const t=(this.canUseDOM?mc:this.instances).indexOf(e);(this.canUseDOM?mc:this.instances).splice(t,1)}}});this.context=e,this.canUseDOM=t||!1,t||(e.helmet=Km({baseTag:[],bodyAttributes:{},htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},hE=parseInt(L.version.split(".")[0],10),Jm=hE>=19,mE={},ej=L.createContext(mE),ai,tj=(ai=class extends f.Component{constructor(r){super(r);fn(this,"helmetData");Jm?this.helmetData=null:this.helmetData=new Ym(this.props.context||{},ai.canUseDOM)}render(){return Jm?L.createElement(L.Fragment,null,this.props.children):L.createElement(ej.Provider,{value:this.helmetData.value},this.props.children)}},fn(ai,"canUseDOM",Vf),ai),Hi=(e,t)=>{const r=document.head||document.querySelector("head"),s=r.querySelectorAll(`${e}[${Lr}]`),i=[].slice.call(s),a=[];let o;return t&&t.length&&t.forEach(l=>{const c=document.createElement(e);for(const d in l)if(Object.prototype.hasOwnProperty.call(l,d))if(d==="innerHTML")c.innerHTML=l.innerHTML;else if(d==="cssText"){const u=l.cssText;c.appendChild(document.createTextNode(u))}else{const u=d,h=typeof l[u]>"u"?"":l[u];c.setAttribute(d,h)}c.setAttribute(Lr,"true"),i.some((d,u)=>(o=u,c.isEqualNode(d)))?i.splice(o,1):a.push(c)}
40),i.forEach(l=>{var c;return(c=l.parentNode)==null?void 0:c.removeChild(l)}),a.forEach(l=>r.appendChild(l)),{oldTags:i,newTags:a}},Qm=(e,t)=>{const r=document.getElementsByTagName(e)[0];if(!r)return;const s=r.getAttribute(Lr),i=s?s.split(","):[],a=[...i],o=Object.keys(t);for(const l of o){const c=t[l]||"";r.getAttribute(l)!==c&&r.setAttribute(l,c),i.indexOf(l)===-1&&i.push(l);const d=a.indexOf(l);d!==-1&&a.splice(d,1)}for(let l=a.length-1;l>=0;l-=1)r.removeAttribute(a[l]);i.length===a.length?r.removeAttribute(Lr):r.getAttribute(Lr)!==o.join(",")&&r.setAttribute(Lr,o.join(","))},pE=(e,t)=>{typeof e<"u"&&document.title!==e&&(document.title=Y0(e)),Qm("title",t)},wv=(e,t)=>{const{baseTag:r,bodyAttributes:s,htmlAttributes:i,linkTags:a,metaTags:o,noscriptTags:l,onChangeClientState:c,scriptTags:d,styleTags:u,title:h,titleAttributes:p}=e;Qm("body",s),Qm("html",i),pE(h,p);const m={baseTag:Hi("base",r),linkTags:Hi("link",a),metaTags:Hi("meta",o),noscriptTags:Hi("noscript",l),scriptTags:Hi("script",d),styleTags:Hi("style",u)},y={},b={};Object.keys(m).forEach(w=>{const{newTags:g,oldTags:v}=m[w];g.length&&(y[w]=g),v.length&&(b[w]=m[w].oldTags)}),t&&t(),c(e,y,b)},fo=null,fE=e=>{fo&&cancelAnimationFrame(fo),e.defer?fo=requestAnimationFrame(()=>{wv(e,()=>{fo=null})}):(wv(e),fo=null)},gE=fE,jv=class extends f.Component{constructor(){super(...arguments);fn(this,"rendered",!1)}shouldComponentUpdate(t){return!J2(t,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:t}=this.props.context;t.remove(this),this.emitChange()}emitChange(){const{helmetInstances:t,setHelmet:r}=this.props.context;let s=null;const i=sE(t.get().map(a=>{const{context:o,...l}=a.props;return l}));tj.canUseDOM?gE(i):Km&&(s=Km(i)),r(s)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:t}=this.props.context;t.add(this),this.emitChange()}render(){return this.init(),null}},qc=[],kv=e=>{const t={};for(const r of Object.keys(e))t[K0[r]||r]=e[r];return t},Xs=e=>{const t={};for(const r of Object.keys(e)){const s=uu[r];t[s||r]=e[r]}return t},Nv=(e,t)=>{if(!Vf)return;const r=document.getElementsByTagName(e)[0];if(!r)return;const s="data-rh-managed",i=r.getAttribute(s),a=i?i.split(","):[],o=Object.keys(t);for(const l of a)o.includes(l)||r.removeAttribute(l);for(const l of o){const c=t[l];c==null||c===!1?r.removeAttribute(l):c===!0?r.setAttribute(l,""):r.setAttribute(l,String(c))}o.length>0?r.setAttribute(s,o.join(",")):r.removeAttribute(s)},Eh=()=>{const e={},t={};for(const r of qc){const{htmlAttributes:s,bodyAttributes:i}=r.props;s&&Object.assign(e,kv(s)),i&&Object.assign(t,kv(i))}Nv("html",e),Nv("body",t)},xE=class extends f.Component{componentDidMount(){qc.push(this),Eh()}componentDidUpdate(){Eh()}componentWillUnmount(){const e=qc.indexOf(this);e!==-1&&qc.splice(e,1),Eh()}resolveTitle(){const{title:e,titleTemplate:t,defaultTitle:r}=this.props;return e&&t?t.replace(/%s/g,()=>Array.isArray(e)?e.join(""):e):e||r||void 0}renderTitle(){const e=this.resolveTitle();if(e===void 0)return null;const t=this.props.titleAttributes||{};return L.createElement("title",Xs(t),e)}renderBase(){const{base:e}=this.props;return e?L.createElement("base",Xs(e)):null}renderMeta(){const{meta:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,r)=>L.createElement("meta",{key:r,...Xs(t)}))}renderLink(){const{link:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,r)=>L.createElement("link",{key:r,...Xs(t)}))}renderScript(){const{script:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,r)=>{const{innerHTML:s,...i}=t,a=Xs(i);return s&&(a.dangerouslySetInnerHTML={__html:s}),L.createElement("script",{key:r,...a})})}renderStyle(){const{style:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,r)=>{const{cssText:s,...i}=t,a=Xs(i);return s&&(a.dangerouslySetInnerHTML={__html:s}),L.createElement("style",{key:r,...a})})}renderNoscript(){const{noscript:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,r)=>{const{innerHTML:s,...i}=t,a=Xs(i);return s&&(a.dangerouslySetInnerHTML={__html:s}),L.createElement("noscript",{key:r,...a})})}render(){return L.createElement(L.Fragment,null,this.renderTitle(),this.renderBase(),this.renderMeta(),this.renderLink(),this.renderScript(),this.renderStyle(),this.renderNoscript())}},rm,zf=(rm=class extends f.Component{shouldComponentUpdate(e){return!X2(bv(this.props,"helmetData"),bv(e,"helmetData"))}mapNestedChildrenToProps(e,t){if(!t)return null;switch(e.type){case"script":case"noscript":return{innerHTML:t};case"style":return{cssText:t};default:throw new Error(`<${e.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(e,t,r,s){return{...t,[e.type]:[...t[e.type]||[],{...r,...this.mapNestedChildrenToProps(e,s)}]}}mapObjectTypeChildren(e,t,r,s){switch(e.type){case"title":return{...t,[e.type]:s,titleAttributes:{...r}};case"body":return{...t,bodyAttributes:{...r}};case"html":return{...t,htmlAttributes:{...r}};default:return{...t,[e.type]:{...r}}}}mapArrayTypeChildrenToProps(e,t){let r={...t};return Object.keys(e).forEach(s=>{r={...r,[s]:e[s]}}),r}
40warnOnInvalidChildren(e,t){return vv(yv.some(r=>e.type===r),typeof e.type=="function"?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":`Only elements types ${yv.join(", ")} are allowed. Helmet does not support rendering <${e.type}> elements. Refer to our API for more information.`),vv(!t||typeof t=="string"||Array.isArray(t)&&!t.some(r=>typeof r!="string"),`Helmet expects a string as a child of <${e.type}>. Did you forget to wrap your children in braces? ( <${e.type}>{\`\`}</${e.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(e,t){let r={};return L.Children.forEach(e,s=>{if(!s||!s.props)return;const{children:i,...a}=s.props,o=Object.keys(a).reduce((c,d)=>(c[K0[d]||d]=a[d],c),{});let{type:l}=s;switch(typeof l=="symbol"?l=l.toString():this.warnOnInvalidChildren(s,i),l){case"Symbol(react.fragment)":t=this.mapChildrenToProps(i,t);break;case"link":case"meta":case"noscript":case"script":case"style":r=this.flattenArrayTypeChildren(s,r,o,i);break;default:t=this.mapObjectTypeChildren(s,t,o,i);break}}),this.mapArrayTypeChildrenToProps(r,t)}render(){const{children:e,...t}=this.props;let r={...t},{helmetData:s}=t;if(e&&(r=this.mapChildrenToProps(e,r)),s&&!(s instanceof Ym)){const i=s;s=new Ym(i.context,!0),delete r.helmetData}return Jm?L.createElement(xE,{...r}):s?L.createElement(jv,{...r,context:s.value}):L.createElement(ej.Consumer,null,i=>L.createElement(jv,{...r,context:i}))}},fn(rm,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),rm);/** 41 * @remix-run/router v1.23.3 42 * 43 * Copyright (c) Remix Software Inc. 44 * 45 * This source code is licensed under the MIT license found in the 46 * LICENSE.md file in the root directory of this source tree. 47 * 48 * @license MIT 49 */function nl(){return nl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var s in r)({}
vendor: 14,249 bytes, lines 49-58
49).hasOwnProperty.call(r,s)&&(e[s]=r[s])}return e},nl.apply(null,arguments)}var fs;(function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"})(fs||(fs={}));const Sv="popstate";function vE(e){e===void 0&&(e={});function t(s,i){let{pathname:a,search:o,hash:l}=s.location;return ep("",{pathname:a,search:o,hash:l},i.state&&i.state.usr||null,i.state&&i.state.key||"default")}function r(s,i){return typeof i=="string"?i:Pd(i)}return bE(t,r,null,e)}function Ye(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function Wf(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function yE(){return Math.random().toString(36).substr(2,8)}function Cv(e,t){return{usr:e.state,key:e.key,idx:t}}function ep(e,t,r,s){return r===void 0&&(r=null),nl({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Ka(t):t,{state:r,key:t&&t.key||s||yE()})}function Pd(e){let{pathname:t="/",search:r="",hash:s=""}=e;return r&&r!=="?"&&(t+=r.charAt(0)==="?"?r:"?"+r),s&&s!=="#"&&(t+=s.charAt(0)==="#"?s:"#"+s),t}function Ka(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let s=e.indexOf("?");s>=0&&(t.search=e.substr(s),e=e.substr(0,s)),e&&(t.pathname=e)}return t}function bE(e,t,r,s){s===void 0&&(s={});let{window:i=document.defaultView,v5Compat:a=!1}=s,o=i.history,l=fs.Pop,c=null,d=u();d==null&&(d=0,o.replaceState(nl({},o.state,{idx:d}),""));function u(){return(o.state||{idx:null}).idx}function h(){l=fs.Pop;let w=u(),g=w==null?null:w-d;d=w,c&&c({action:l,location:b.location,delta:g})}function p(w,g){l=fs.Push;let v=ep(b.location,w,g);d=u()+1;let x=Cv(v,d),j=b.createHref(v);try{o.pushState(x,"",j)}catch(k){if(k instanceof DOMException&&k.name==="DataCloneError")throw k;i.location.assign(j)}a&&c&&c({action:l,location:b.location,delta:1})}function m(w,g){l=fs.Replace;let v=ep(b.location,w,g);d=u();let x=Cv(v,d),j=b.createHref(v);o.replaceState(x,"",j),a&&c&&c({action:l,location:b.location,delta:0})}function y(w){let g=i.location.origin!=="null"?i.location.origin:i.location.href,v=typeof w=="string"?w:Pd(w);return v=v.replace(/ $/,"%20"),Ye(g,"No window.location.(origin|href) available to create URL for href: "+v),new URL(v,g)}let b={get action(){return l},get location(){return e(i,o)},listen(w){if(c)throw new Error("A history only accepts one active listener");return i.addEventListener(Sv,h),c=w,()=>{i.removeEventListener(Sv,h),c=null}},createHref(w){return t(i,w)},createURL:y,encodeLocation(w){let g=y(w);return{pathname:g.pathname,search:g.search,hash:g.hash}},push:p,replace:m,go(w){return o.go(w)}};return b}var Ev;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Ev||(Ev={}));function wE(e,t,r){return r===void 0&&(r="/"),jE(e,t,r)}function jE(e,t,r,s){let i=typeof t=="string"?Ka(t):t,a=Zf(i.pathname||"/",r);if(a==null)return null;let o=rj(e);kE(o);let l=null,c=ME(a);for(let d=0;l==null&&d<o.length;++d)l=IE(o[d],c);return l}function rj(e,t,r,s){t===void 0&&(t=[]),r===void 0&&(r=[]),s===void 0&&(s="");let i=(a,o,l)=>{let c={relativePath:l===void 0?a.path||"":l,caseSensitive:a.caseSensitive===!0,childrenIndex:o,route:a};c.relativePath.startsWith("/")&&(Ye(c.relativePath.startsWith(s),'Absolute route path "'+c.relativePath+'" nested under path '+('"'+s+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),c.relativePath=c.relativePath.slice(s.length));let d=Ns([s,c.relativePath]),u=r.concat(c);a.children&&a.children.length>0&&(Ye(a.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+d+'".')),rj(a.children,t,u,d)),!(a.path==null&&!a.index)&&t.push({path:d,score:TE(d,a.index),routesMeta:u})};return e.forEach((a,o)=>{var l;if(a.path===""||!((l=a.path)!=null&&l.includes("?")))i(a,o);else for(let c of nj(a.path))i(a,o,c)}),t}function nj(e){let t=e.split("/");if(t.length===0)return[];let[r,...s]=t,i=r.endsWith("?"),a=r.replace(/\?$/,"");if(s.length===0)return i?[a,""]:[a];let o=nj(s.join("/")),l=[];return l.push(...o.map(c=>c===""?a:[a,c].join("/"))),i&&l.push(...o),l.map(c=>e.startsWith("/")&&c===""?"/":c)}function kE(e){e.sort((t,r)=>t.score!==r.score?r.score-t.score:_E(t.routesMeta.map(s=>s.childrenIndex),r.routesMeta.map(s=>s.childrenIndex)))}const NE=/^:[\w-]+$/,SE=3,CE=2,EE=1,AE=10,PE=-2,Av=e=>e==="*";function TE(e,t){let r=e.split("/"),s=r.length;return r.some(Av)&&(s+=PE),t&&(s+=CE),r.filter(i=>!Av(i)).reduce((i,a)=>i+(NE.test(a)?SE:a===""?EE:AE),s)}function _E(e,t){return e.length===t.length&&e.slice(0,-1).every((s,i)=>s===t[i])?e[e.length-1]-t[t.length-1]:0}function IE(e,t,r){let{routesMeta:s}=e,i={},a="/",o=[];for(let l=0;l<s.length;++l){let c=s[l],d=l===s.length-1,u=a==="/"?t:t.slice(a.length)||"/",h=RE({path:c.relativePath,caseSensitive:c.caseSensitive,end:d},u),p=c.route;if(!h)return null;Object.assign(i,h.params),o.push({params:i,pathname:Ns([a,h.pathname]),pathnameBase:BE(Ns([a,h.pathnameBase])),route:p}),h.pathnameBase!=="/"&&(a=Ns([a,h.pathnameBase]))}return o}function RE(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[r,s]=OE(e.path,e.caseSensitive,e.end),i=t.match(r);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,"$1"),l=i.slice(1);return{params:s.reduce((d,u,h)=>{let{paramName:p,isOptional:m}=u;if(p==="*"){let b=l[h]||"";o=a.slice(0,a.length-b.length).replace(/(.)\/+$/,"$1")}const y=l[h];return m&&!y?d[p]=void 0:d[p]=(y||"").replace(/%2F/g,"/"),d},{}),pathname:a,pathnameBase:o,pattern:e}}function OE(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!0),Wf(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let s=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(o,l,c)=>(s.push({paramName:l,isOptional:c!=null}),c?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(s.push({paramName:"*"}),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?i+="\\/*$":e!==""&&e!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,t?void 0:"i"),s]}function ME(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Wf(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Zf(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,s=e.charAt(r);return s&&s!=="/"?null:e.slice(r)||"/"}const DE=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,LE=e=>DE.test(e);function HE(e,t){t===void 0&&(t="/");let{pathname:r,search:s="",hash:i=""}=typeof e=="string"?Ka(e):e,a;if(r)if(LE(r))a=r;else{if(r.includes("//")){let o=r;r=sj(r),Wf(!1,"Pathnames cannot have embedded double slashes - normalizing "+(o+" -> "+r))}r.startsWith("/")?a=Pv(r.substring(1),"/"):a=Pv(r,t)}else a=t;return{pathname:a,search:FE(s),hash:UE(i)}}function Pv(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(i=>{i===".."?r.length>1&&r.pop():i!=="."&&r.push(i)}),r.length>1?r.join("/"):"/"}function Ah(e,t,r,s){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(s)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function $E(e){return e.filter((t,r)=>r===0||t.route.path&&t.route.path.length>0)}function qf(e,t){let r=$E(e);return t?r.map((s,i)=>i===r.length-1?s.pathname:s.pathnameBase):r.map(s=>s.pathnameBase)}function Xf(e,t,r,s){s===void 0&&(s=!1);let i;typeof e=="string"?i=Ka(e):(i=nl({},e),Ye(!i.pathname||!i.pathname.includes("?"),Ah("?","pathname","search",i)),Ye(!i.pathname||!i.pathname.includes("#"),Ah("#","pathname","hash",i)),Ye(!i.search||!i.search.includes("#"),Ah("#","search","hash",i)));let a=e===""||i.pathname==="",o=a?"/":i.pathname,l;if(o==null)l=r;else{let h=t.length-1;if(!s&&o.startsWith("..")){let p=o.split("/");for(;p[0]==="..";)p.shift(),h-=1;i.pathname=p.join("/")}l=h>=0?t[h]:"/"}let c=HE(i,l),d=o&&o!=="/"&&o.endsWith("/"),u=(a||o===".")&&r.endsWith("/");return!c.pathname.endsWith("/")&&(d||u)&&(c.pathname+="/"),c}const sj=e=>e.replace(/\/\/+/g,"/"),Ns=e=>sj(e.join("/")),BE=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),FE=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,UE=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function VE(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const ij=["post","put","patch","delete"];new Set(ij);const zE=["get",...ij];new Set(zE);/** 50 * React Router v6.30.4 51 * 52 * Copyright (c) Remix Software Inc. 53 * 54 * This source code is licensed under the MIT license found in the 55 * LICENSE.md file in the root directory of this source tree. 56 * 57 * @license MIT 58 */function sl(){return sl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var s in r)({}).hasOwnProperty.call(r,s)&&(e[s]=r[s])}return e},sl.apply(null,arguments)}const Gf=f.createContext(null),WE=f.createContext(null),$s=f.createContext(null),hu=f.createContext(null),zn=f.createContext({outlet:null,matches:[],isDataRoute:!1}),aj=f.createContext(null);function ZE(e,t){let{relative:r}=t===void 0?{}:t;Ya()||Ye(!1);let{basename:s,navigator:i}=f.useContext($s),{hash:a,pathname:o,search:l}=lj(e,{relative:r}),c=o;return s!=="/"&&(c=o==="/"?s:Ns([s,o])),i.createHref({pathname:c,search:l,hash:a})}function Ya(){return f.useContext(hu)!=null}function Bs(){return Ya()||Ye(!1),f.useContext(hu).location}function oj(e){f.useContext($s).static||f.useLayoutEffect(e)}function Kf(){let{isDataRoute:e}=f.useContext(zn);return e?iA():qE()}function qE(){Ya()||Ye(!1);let e=f.useContext(Gf),{basename:t,future:r,navigator:s}=f.useContext($s),{matches:i}=f.useContext(zn),{pathname:a}=Bs(),o=JSON.stringify(qf(i,r.v7_relativeSplatPath)),l=f.useRef(!1);return oj(()=>{l.current=!0}),f.useCallback(function(d,u){if(u===void 0&&(u={}),!l.current)return;if(typeof d=="number"){s.go(d);return}let h=Xf(d,JSON.parse(o),a,u.relative==="path");e==null&&t!=="/"&&(h.pathname=h.pathname==="/"?t:Ns([t,h.pathname])),(u.replace?s.replace:s.push)(h,u.state,u)},[t,s,o,a,e])}function Yf(){let{matches:e}=f.useContext(zn),t=e[e.length-1];return t?t.params:{}}function lj(e,t){let{relative:r}=t===void 0?{}:t,{future:s}=f.useContext($s),{matches:i}=f.useContext(zn),{pathname:a}=Bs(),o=JSON.stringify(qf(i,s.v7_relativeSplatPath));return f.useMemo(()=>Xf(e,JSON.parse(o),a,r==="path"),[e,o,a,r])}function XE(e,t){return GE(e,t)}function GE(e,t,r,s){Ya()||Ye(!1);let{navigator:i}=f.useContext($s),{matches:a}=f.useContext(zn),o=a[a.length-1],l=o?o.params:{};o&&o.pathname;let c=o?o.pathnameBase:"/";o&&o.route;let d=Bs(),u;if(t){var h;let w=typeof t=="string"?Ka(t):t;c==="/"||(h=w.pathname)!=null&&h.startsWith(c)||Ye(!1),u=w}else u=d;let p=u.pathname||"/",m=p;if(c!=="/"){let w=c.replace(/^\//,"").split("/");m="/"+p.replace(/^\//,"").split("/").slice(w.length).join("/")}let y=wE(e,{pathname:m}),b=eA(y&&y.map(w=>Object.assign({},w,{params:Object.assign({},l,w.params),pathname:Ns([c,i.encodeLocation?i.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?c:Ns([c,i.encodeLocation?i.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),a,r,s);return t&&b?f.createElement(hu.Provider,{value:{location:sl({pathname:"/",search:"",hash:"",state:null,key:"default"},u),navigationType:fs.Pop}},b):b}function KE(){let e=sA(),t=VE(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,i={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return f.createElement(f.Fragment,null,f.createElement("h2",null,"Unexpected Application Error!"),f.createElement("h3",{style:{fontStyle:"italic"}},t),r?f.createElement("pre",{style:i},r):null,null)}const YE=f.createElement(KE,null);class JE extends f.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,r){return r.location!==t.location||r.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:r.error,location:r.location,revalidation:t.revalidation||r.revalidation}}componentDidCatch(t,r){console.error("React Router caught the following error during render",t,r)}render(){return this.state.error!==void 0?f.createElement(zn.Provider,{value:this.props.routeContext},f.createElement(aj.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function QE(e){let{routeContext:t,match:r,children:s}=e,i=f.useContext(Gf);return i&&i.static&&i.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=r.route.id),f.createElement(zn.Provider,{value:t},s)}function eA(e,t,r,s){var i;if(t===void 0&&(t=[]),r===void 0&&(r=null),s===void 0&&(s=null),e==null){var a;if(!r)return null;if(r.errors)e=r.matches;else if((a=s)!=null&&a.v7_partialHydration&&t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let o=e,l=(i=r)==null?void 0:i.errors;if(l!=null){let u=o.findIndex(h=>h.route.id&&(l==null?void 0:l[h.route.id])!==void 0);u>=0||Ye(!1),o=o.slice(0,Math.min(o.length,u+1))}let c=!1,d=-1;if(r&&s&&s.v7_partialHydration)for(let u=0;u<o.length;u++){let h=o[u];if((h.route.HydrateFallback||h.route.hydrateFallbackElement)&&(d=u),h.route.id){let{loaderData:p,errors:m}=r,y=h.route.loader&&p[h.route.id]===void 0&&(!m||m[h.route.id]===void 0);if(h.route.lazy||y){c=!0,d>=0?o=o.slice(0,d+1):o=[o[0]];break}}}return o.reduceRight((u,h,p)=>{let m,y=!1,b=null,w=null;r&&(m=l&&h.route.id?l[h.route.id]:void 0,b=h.route.errorElement||YE,c&&(d<0&&p===0?(aA("route-fallback"),y=!0,w=null):d===p&&(y=!0,w=h.route.hydrateFallbackElement||null)));let g=t.concat(o.slice(0,p+1)),v=()=>{let x;
vendor: 3,856 bytes, lines 58-67
58return m?x=b:y?x=w:h.route.Component?x=f.createElement(h.route.Component,null):h.route.element?x=h.route.element:x=u,f.createElement(QE,{match:h,routeContext:{outlet:u,matches:g,isDataRoute:r!=null},children:x})};return r&&(h.route.ErrorBoundary||h.route.errorElement||p===0)?f.createElement(JE,{location:r.location,revalidation:r.revalidation,component:b,error:m,children:v(),routeContext:{outlet:null,matches:g,isDataRoute:!0}}):v()},null)}var cj=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(cj||{}),dj=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(dj||{});function tA(e){let t=f.useContext(Gf);return t||Ye(!1),t}function rA(e){let t=f.useContext(WE);return t||Ye(!1),t}function nA(e){let t=f.useContext(zn);return t||Ye(!1),t}function uj(e){let t=nA(),r=t.matches[t.matches.length-1];return r.route.id||Ye(!1),r.route.id}function sA(){var e;let t=f.useContext(aj),r=rA(),s=uj();return t!==void 0?t:(e=r.errors)==null?void 0:e[s]}function iA(){let{router:e}=tA(cj.UseNavigateStable),t=uj(dj.UseNavigateStable),r=f.useRef(!1);return oj(()=>{r.current=!0}),f.useCallback(function(i,a){a===void 0&&(a={}),r.current&&(typeof i=="number"?e.navigate(i):e.navigate(i,sl({fromRouteId:t},a)))},[e,t])}const Tv={};function aA(e,t,r){Tv[e]||(Tv[e]=!0)}function oA(e,t){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function Tl(e){let{to:t,replace:r,state:s,relative:i}=e;Ya()||Ye(!1);let{future:a,static:o}=f.useContext($s),{matches:l}=f.useContext(zn),{pathname:c}=Bs(),d=Kf(),u=Xf(t,qf(l,a.v7_relativeSplatPath),c,i==="path"),h=JSON.stringify(u);return f.useEffect(()=>d(JSON.parse(h),{replace:r,state:s,relative:i}),[d,h,i,r,s]),null}function fe(e){Ye(!1)}function lA(e){let{basename:t="/",children:r=null,location:s,navigationType:i=fs.Pop,navigator:a,static:o=!1,future:l}=e;Ya()&&Ye(!1);let c=t.replace(/^\/*/,"/"),d=f.useMemo(()=>({basename:c,navigator:a,static:o,future:sl({v7_relativeSplatPath:!1},l)}),[c,l,a,o]);typeof s=="string"&&(s=Ka(s));let{pathname:u="/",search:h="",hash:p="",state:m=null,key:y="default"}=s,b=f.useMemo(()=>{let w=Zf(u,c);return w==null?null:{location:{pathname:w,search:h,hash:p,state:m,key:y},navigationType:i}},[c,u,h,p,m,y,i]);return b==null?null:f.createElement($s.Provider,{value:d},f.createElement(hu.Provider,{children:r,value:b}))}function cA(e){let{children:t,location:r}=e;return XE(tp(t),r)}new Promise(()=>{});function tp(e,t){t===void 0&&(t=[]);let r=[];return f.Children.forEach(e,(s,i)=>{if(!f.isValidElement(s))return;let a=[...t,i];if(s.type===f.Fragment){r.push.apply(r,tp(s.props.children,a));return}s.type!==fe&&Ye(!1),!s.props.index||!s.props.children||Ye(!1);let o={id:s.props.id||a.join("-"),caseSensitive:s.props.caseSensitive,element:s.props.element,Component:s.props.Component,index:s.props.index,path:s.props.path,loader:s.props.loader,action:s.props.action,errorElement:s.props.errorElement,ErrorBoundary:s.props.ErrorBoundary,hasErrorBoundary:s.props.ErrorBoundary!=null||s.props.errorElement!=null,shouldRevalidate:s.props.shouldRevalidate,handle:s.props.handle,lazy:s.props.lazy};s.props.children&&(o.children=tp(s.props.children,a)),r.push(o)}),r}/** 59 * React Router DOM v6.30.4 60 * 61 * Copyright (c) Remix Software Inc. 62 * 63 * This source code is licensed under the MIT license found in the 64 * LICENSE.md file in the root directory of this source tree. 65 * 66 * @license MIT 67 */function rp(){return rp=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var s in r)({}
67).hasOwnProperty.call(r,s)&&(e[s]=r[s])}return e},rp.apply(null,arguments)}function dA(e,t){if(e==null)return{};var r={};for(var s in e)if({}.hasOwnProperty.call(e,s)){if(t.indexOf(s)!==-1)continue;r[s]=e[s]}return r}function uA(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function hA(e,t){return e.button===0&&(!t||t==="_self")&&!uA(e)}function np(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,r)=>{let s=e[r];return t.concat(Array.isArray(s)?s.map(i=>[r,i]):[[r,s]])},[]))}function mA(e,t){let r=np(e);return t&&t.forEach((s,i)=>{r.has(i)||t.getAll(i).forEach(a=>{r.append(i,a)})}),r}const pA=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],fA="6";try{window.__reactRouterVersion=fA}catch{}const gA="startTransition",_v=Ci[gA];function xA(e){let{basename:t,children:r,future:s,window:i}=e,a=f.useRef();a.current==null&&(a.current=vE({window:i,v5Compat:!0}));let o=a.current,[l,c]=f.useState({action:o.action,location:o.location}),{v7_startTransition:d}=s||{},u=f.useCallback(h=>{d&&_v?_v(()=>c(h)):c(h)},[c,d]);return f.useLayoutEffect(()=>o.listen(u),[o,u]),f.useEffect(()=>oA(s),[s]),f.createElement(lA,{basename:t,children:r,location:l.location,navigationType:l.action,navigator:o,future:s})}const vA=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",yA=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,V=f.forwardRef(function(t,r){let{onClick:s,relative:i,reloadDocument:a,replace:o,state:l,target:c,to:d,preventScrollReset:u,viewTransition:h}=t,p=dA(t,pA),{basename:m}=f.useContext($s),y,b=!1;if(typeof d=="string"&&yA.test(d)&&(y=d,vA))try{let x=new URL(window.location.href),j=d.startsWith("//")?new URL(x.protocol+d):new URL(d),k=Zf(j.pathname,m);j.origin===x.origin&&k!=null?d=k+j.search+j.hash:b=!0}catch{}let w=ZE(d,{relative:i}),g=bA(d,{replace:o,state:l,target:c,preventScrollReset:u,relative:i,viewTransition:h});function v(x){s&&s(x),x.defaultPrevented||g(x)}return f.createElement("a",rp({},p,{href:y||w,onClick:b||a?s:v,ref:r,target:c}))});var Iv;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Iv||(Iv={}));var Rv;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Rv||(Rv={}));function bA(e,t){let{target:r,replace:s,state:i,preventScrollReset:a,relative:o,viewTransition:l}=t===void 0?{}:t,c=Kf(),d=Bs(),u=lj(e,{relative:o});return f.useCallback(h=>{if(hA(h,r)){h.preventDefault();let p=s!==void 0?s:Pd(d)===Pd(u);c(e,{replace:p,state:i,preventScrollReset:a,relative:o,viewTransition:l})}},[d,c,u,s,i,r,e,a,o,l])}function wA(e){let t=f.useRef(np(e)),r=f.useRef(!1),s=Bs(),i=f.useMemo(()=>mA(s.search,r.current?null:t.current),[s.search]),a=Kf(),o=f.useCallback((l,c)=>{const d=np(typeof l=="function"?l(i):l);r.current=!0,a("?"+d,c)},[a,i]);return[i,o]}const jA=1,kA=1e6;let Ph=0;function NA(){return Ph=(Ph+1)%Number.MAX_SAFE_INTEGER,Ph.toString()}const Th=new Map,Ov=e=>{if(Th.has(e))return;const t=setTimeout(()=>{Th.delete(e),Lo({type:"REMOVE_TOAST",toastId:e})},kA);Th.set(e,t)},SA=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,jA)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(r=>r.id===t.toast.id?{...r,...t.toast}:r)};case"DISMISS_TOAST":{const{toastId:r}=t;return r?Ov(r):e.toasts.forEach(s=>{Ov(s.id)}),{...e,toasts:e.toasts.map(s=>
67s.id===r||r===void 0?{...s,open:!1}:s)}}case"REMOVE_TOAST":return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(r=>r.id!==t.toastId)}}},Xc=[];let Gc={toasts:[]};function Lo(e){Gc=SA(Gc,e),Xc.forEach(t=>{t(Gc)})}function CA({...e}){const t=NA(),r=i=>Lo({type:"UPDATE_TOAST",toast:{...i,id:t}}),s=()=>Lo({type:"DISMISS_TOAST",toastId:t});return Lo({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:i=>{i||s()}}}),{id:t,dismiss:s,update:r}}function _l(){const[e,t]=f.useState(Gc);return f.useEffect(()=>(Xc.push(t),()=>{const r=Xc.indexOf(t);r>-1&&Xc.splice(r,1)}),[e]),{...e,toast:CA,dismiss:r=>Lo({type:"DISMISS_TOAST",toastId:r})}}var EA=Object.defineProperty,Ja=(e,t)=>EA(e,"name",{value:t,configurable:!0}),hj=!!(typeof window<"u"&&window.document&&window.document.createElement);function te(e,t,{checkForDefaultPrevented:r=!0}={}){return Ja(function(i){if(e==null||e(i),r===!1||!i||!i.defaultPrevented)return t==null?void 0:t(i)},"handleEvent")}Ja(te,"composeEventHandlers");function AA(e){var t;if(!hj)throw new Error("Cannot access window outside of the DOM");return((t=e==null?void 0:e.ownerDocument)==null?void 0:t.defaultView)??window}Ja(AA,"getOwnerWindow");function sp(e){if(!hj)throw new Error("Cannot access document outside of the DOM");return(e==null?void 0:e.ownerDocument)??document}Ja(sp,"getOwnerDocument");function mj(e,t=!1){const{activeElement:r}=sp(e);if(!(r!=null&&r.nodeName))return null;if(pj(r)&&r.contentDocument)return mj(r.contentDocument.body,t);if(t){const s=r.getAttribute("aria-activedescendant");if(s){const i=sp(r).getElementById(s);if(i)return i}}return r}Ja(mj,"getActiveElement");function pj(e){return e.tagName==="IFRAME"}Ja(pj,"isFrame");var PA=Object.defineProperty,Jf=(e,t)=>PA(e,"name",{value:t,configurable:!0});function ip(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}Jf(ip,"setRef");function fj(...e){return t=>{let r=!1;const s=e.map(i=>{const a=ip(i,t);return!r&&typeof a=="function"&&(r=!0),a});if(r)return()=>{for(let i=0;i<s.length;i++){const a=s[i];typeof a=="function"?a():ip(e[i],null)}}}}Jf(fj,"composeRefs");function ye(...e){return f.useCallback(fj(...e),e)}Jf(ye,"useComposedRefs");var TA=Object.defineProperty,hr=(e,t)=>TA(e,"name",{value:t,configurable:!0});function _A(e,t){const r=f.createContext(t);r.displayName=e+"Context";const s=hr(a=>{const{children:o,...l}=a,c=f.useMemo(()=>l,Object.values(l));return n.jsx(r.Provider,{value:c,children:o})},"Provider");s.displayName=e+"Provider";function i(a,o={}){const{optional:l=!1}=o,c=f.useContext(r);if(c)return c;if(t!==void 0)return t;if(!l)throw new Error(`\`${a}\` must be used within \`${e}\``)}return hr(i,"useContext"),[s,i]}hr(_A,"createContext");function Wt(e,t=[]){let r=[];function s(a,o){const l=f.createContext(o);l.displayName=a+"Context";const c=r.length;r=[...r,o];const d=hr(h=>{var g;const{scope:p,children:m,...y}=h,b=((g=p==null?void 0:p[e])==null?void 0:g[c])||l,w=f.useMemo(()=>y,Object.values(y));return n.jsx(b.Provider,{value:w,children:m})},"Provider");d.displayName=a+"Provider";function u(h,p,m={}){var g;const{optional:y=!1}=m,b=((g=p==null?void 0:p[e])==null?void 0:g[c])||l,w=f.useContext(b);if(w)return w;if(o!==void 0)return o;if(!y)throw new Error(`\`${h}\` must be used within \`${a}\``)}return hr(u,"useContext"),[d,u]}hr(s,"createContext");const i=hr(()=>{const a=r.map(o=>f.createContext(o));return hr(function(l){const c=(l==null?void 0:l[e])||a;return f.useMemo(()=>({[`__scope${e}`]:{...l,[e]:c}}),[l,c])},"useScope")},"createScope");return i.scopeName=e,[s,gj(i,...t)]}hr(Wt,"createContextScope");function gj(...e){const t=e[0];if(e.length===1)return t;const r=hr(()=>{const s=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return hr(function(a){const o=s.reduce((l,{useScope:c,scopeName:d})=>{const h=c(a)[`__scope${d}`];return{...l,...h}},{});return f.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])},"useComposedScopes")},"createScope");return r.scopeName=t.scopeName,r}hr(gj,"composeContextScopes");var IA=Object.defineProperty,Ur=(e,t)=>IA(e,"name",{value:t,configurable:!0});function $n(e){const t=f.forwardRef((r,s)=>{let{children:i,...a}=r,o=null,l=!1;const c=[];ap(i)&&typeof pc=="function"&&(i=pc(i._payload)),f.Children.forEac
67h(i,p=>{var m;if(wj(p)){l=!0;const y=p;let b="child"in y.props?y.props.child:y.props.children;ap(b)&&typeof pc=="function"&&(b=pc(b._payload)),o=OA(y,b),c.push((m=o==null?void 0:o.props)==null?void 0:m.children)}else c.push(p)}),o?o=f.cloneElement(o,void 0,c):!l&&f.Children.count(i)===1&&f.isValidElement(i)&&(o=i);const d=o?bj(o):void 0,u=ye(s,d);if(!o){if(i||i===0)throw new Error(l?LA(e):DA(e));return i}const h=yj(a,o.props??{});return o.type!==f.Fragment&&(h.ref=s?u:d),f.cloneElement(o,h)});return t.displayName=`${e}.Slot`,t}Ur($n,"createSlot");var RA=$n("Slot"),xj=Symbol.for("radix.slottable");function vj(e){const t=Ur(r=>"child"in r?r.children(r.child):r.children,"Slottable");return t.displayName=`${e}.Slottable`,t.__radixId=xj,t}Ur(vj,"createSlottable");var OA=Ur((e,t)=>{if("child"in e.props){const r=e.props.child;return f.isValidElement(r)?f.cloneElement(r,void 0,e.props.children(r.props.children)):null}return f.isValidElement(t)?t:null},"getSlottableElementFromSlottable");function yj(e,t){const r={...t};for(const s in t){const i=e[s],a=t[s];/^on[A-Z]/.test(s)?i&&a?r[s]=(...l)=>{const c=a(...l);return i(...l),c}:i&&(r[s]=i):s==="style"?r[s]={...i,...a}:s==="className"&&(r[s]=[i,a].filter(Boolean).join(" "))}return{...e,...r}}Ur(yj,"mergeProps");function bj(e){var s,i;let t=(s=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:s.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}Ur(bj,"getElementRef");function wj(e){return f.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===xj}Ur(wj,"isSlottable");var MA=Symbol.for("react.lazy");function ap(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===MA&&"_payload"in e&&jj(e._payload)}Ur(ap,"isLazyComponent");function jj(e){return typeof e=="object"&&e!==null&&"then"in e}Ur(jj,"isPromiseLike");var DA=Ur(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,"createSlotError"),LA=Ur(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,"createSlottableError"),pc=Ci[" use ".trim().toString()],HA=Object.defineProperty,lt=(e,t)=>HA(e,"name",{value:t,configurable:!0});function Il(e){const t=e+"CollectionProvider",[r,s]=Wt(t),[i,a]=r(t,{collectionRef:{current:null},itemMap:new Map}),o=lt(b=>{const{scope:w,children:g}=b,v=f.useRef(null),x=f.useRef(new Map).current;return n.jsx(i,{scope:w,itemMap:x,collectionRef:v,children:g})},"CollectionProvider");o.displayName=t;const l=e+"CollectionSlot",c=$n(l),d=f.forwardRef((b,w)=>{const{scope:g,children:v}=b,x=a(l,g),j=ye(w,x.collectionRef);return n.jsx(c,{ref:j,children:v})});d.displayName=l;const u=e+"CollectionItemSlot",h="data-radix-collection-item",p=$n(u),m=f.forwardRef((b,w)=>{const{scope:g,children:v,...x}=b,j=f.useRef(null),k=ye(w,j),N=a(u,g);return f.useEffect(()=>(N.itemMap.set(j,{ref:j,...x}),()=>void N.itemMap.delete(j))),n.jsx(p,{[h]:"",ref:k,children:v})});m.displayName=u;function y(b){const w=a(e+"CollectionConsumer",b);return f.useCallback(()=>{const v=w.collectionRef.current;if(!v)return[];const x=Array.from(v.querySelectorAll(`[${h}]`));return Array.from(w.itemMap.values()).sort((N,S)=>x.indexOf(N.ref.current)-x.indexOf(S.ref.current))},[w.collectionRef,w.itemMap])}return lt(y,"useCollection"),[{Provider:o,Slot:d,ItemSlot:m},y,s]}lt(Il,"createCollection");var Mv=new WeakMap,Je,qt,_h=(qt=class extends Map{constructor(r){super(r);ue(this,Je);re(this,Je,[...super.keys()]),Mv.set(this,!0)}set(r,s){return Mv.get(this)&&(this.has(r)?A(this,Je)[A(this,Je).indexOf(r)]=r:A(this,Je).push(r)),super.set(r,s),this}insert(r,s,i){const a=this.has(s),o=A(this,Je).length,l=Qf(r);let c=l>=0?l:o+l;const d=c<0||c>=o?-1:c;if(d===this.size||a&&d===this.size-1||d===-1)return this.set(s,i),this;const u=this.size+(a?0:1);l<0&&c++;const h=[...A(this,Je)];let p,m=!1;for(let y=c;y<u;y++)if(c===y){let b=h[y];h[y]===s&&(b=h[y+1]),a&&this.delete(s),p=this.get(b),this.set(s,i)}else{!m&&h[y-1]===s&&(m=!0);const b=h[m?y:y-1],w=p;p=this.get(b),this.delete(b),this.set(b,w)}return this}with(r,s,i){const a=new qt(this);return a.insert(r,s,i),a}before(r){const s=A(this,Je).indexOf(r)-1;if(!(s<0))return this.entryAt(s)}
67setBefore(r,s,i){const a=A(this,Je).indexOf(r);return a===-1?this:this.insert(a,s,i)}after(r){let s=A(this,Je).indexOf(r);if(s=s===-1||s===this.size-1?-1:s+1,s!==-1)return this.entryAt(s)}setAfter(r,s,i){const a=A(this,Je).indexOf(r);return a===-1?this:this.insert(a+1,s,i)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return re(this,Je,[]),super.clear()}delete(r){const s=super.delete(r);return s&&A(this,Je).splice(A(this,Je).indexOf(r),1),s}deleteAt(r){const s=this.keyAt(r);return s!==void 0?this.delete(s):!1}at(r){const s=Kc(A(this,Je),r);if(s!==void 0)return this.get(s)}entryAt(r){const s=Kc(A(this,Je),r);if(s!==void 0)return[s,this.get(s)]}indexOf(r){return A(this,Je).indexOf(r)}keyAt(r){return Kc(A(this,Je),r)}from(r,s){const i=this.indexOf(r);if(i===-1)return;let a=i+s;return a<0&&(a=0),a>=this.size&&(a=this.size-1),this.at(a)}keyFrom(r,s){const i=this.indexOf(r);if(i===-1)return;let a=i+s;return a<0&&(a=0),a>=this.size&&(a=this.size-1),this.keyAt(a)}find(r,s){let i=0;for(const a of this){if(Reflect.apply(r,s,[a,i,this]))return a;i++}}findIndex(r,s){let i=0;for(const a of this){if(Reflect.apply(r,s,[a,i,this]))return i;i++}return-1}filter(r,s){const i=[];let a=0;for(const o of this)Reflect.apply(r,s,[o,a,this])&&i.push(o),a++;return new qt(i)}map(r,s){const i=[];let a=0;for(const o of this)i.push([o[0],Reflect.apply(r,s,[o,a,this])]),a++;return new qt(i)}reduce(...r){const[s,i]=r;let a=0,o=i??this.at(0);for(const l of this)a===0&&r.length===1?o=l:o=Reflect.apply(s,this,[o,l,a,this]),a++;return o}reduceRight(...r){const[s,i]=r;let a=i??this.at(-1);for(let o=this.size-1;o>=0;o--){const l=this.at(o);o===this.size-1&&r.length===1?a=l:a=Reflect.apply(s,this,[a,l,o,this])}return a}toSorted(r){const s=[...this.entries()].sort(r);return new qt(s)}toReversed(){const r=new qt;for(let s=this.size-1;s>=0;s--){const i=this.keyAt(s),a=this.get(i);r.set(i,a)}return r}toSpliced(...r){const s=[...this.entries()];return s.splice(...r),new qt(s)}slice(r,s){const i=new qt;let a=this.size-1;if(r===void 0)return i;r<0&&(r=r+this.size),s!==void 0&&s>0&&(a=s-1);for(let o=r;o<=a;o++){const l=this.keyAt(o),c=this.get(l);i.set(l,c)}return i}every(r,s){let i=0;for(const a of this){if(!Reflect.apply(r,s,[a,i,this]))return!1;i++}return!0}some(r,s){let i=0;for(const a of this){if(Reflect.apply(r,s,[a,i,this]))return!0;i++}return!1}},Je=new WeakMap,lt(qt,"OrderedDict"),qt);function Kc(e,t){if("at"in Array.prototype)return Array.prototype.at.call(e,t);const r=kj(e,t);return r===-1?void 0:e[r]}lt(Kc,"at");function kj(e,t){const r=e.length,s=Qf(t),i=s>=0?s:r+s;return i<0||i>=r?-1:i}lt(kj,"toSafeIndex");function Qf(e){return e!==e||e===0?0:Math.trunc(e)}lt(Qf,"toSafeInteger");function $A(e){const t=e+"CollectionProvider",[r,s]=Wt(t),[i,a]=r(t,{collectionElement:null,collectionRef:{current:null},collectionRefObject:{current:null},itemMap:new _h,setItemMap:lt(()=>{},"setItemMap")}),o=lt(({state:x,...j})=>x?n.jsx(c,{...j,state:x}):n.jsx(l,{...j}),"CollectionProvider");o.displayName=t;const l=lt(x=>{const j=w();return n.jsx(c,{...x,state:j})},"CollectionInit");l.displayName=t+"Init";const c=lt(x=>{const{scope:j,children:k,state:N}=x,S=f.useRef(null),[C,E]=f.useState(null),I=ye(S,E),[B,R]=N;return f.useEffect(()=>{if(!C)return;const O=Cj(()=>{});return O.observe(C,{childList:!0,subtree:!0}),()=>{O.disconnect()}},[C]),n.jsx(i,{scope:j,itemMap:B,setItemMap:R,collectionRef:I,collectionRefObject:S,collectionElement:C,children:k})},"CollectionProviderImpl");c.displayName=t+"Impl";const d=e+"CollectionSlot",u=$n(d),h=f.forwardRef((x,j)=>{const{scope:k,children:N}=x,S=a(d,k),C=ye(j,S.collectionRef);return n.jsx(u,{ref:C,children:N})});h.displayName=d;const p=e+"CollectionItemSlot",m="data-radix-collection-item",y=$n(p),b=f.forwardRef((x,j)=>{const{scope:k,children:N,...S}=x,C=f.useRef(null),[E,I]=f.useState(null),B=ye(j,C,I),R=a(p,k),{setItemMap:O}=R,T=f.useRef(S);Nj(T.current,S)||(T.current=S);const W=T.current;return f.useEffect(()=>{const H=W;return O(U=>E?U.has(E)?U.set(E,{...H,element:E}).toSorted(op):(U.set(E,{...H,element:E}),U.toSorted(op)):U),()=>{O(U=>!E||!U.has(E)?U:(U.delete(E),new _h(U)))}},[E,W,O]),n.jsx(y,{[m]:"",ref:B,children:N})});b.displayName=p;function w(){return f.useState(new _h)}lt(w,"useInitCollection");function g(x){const{itemMap:j}=a(e+"CollectionConsumer",x);return j}return lt(g,"useCollection"),[{Provider:o,Slot:h,ItemSlot:b},{createCollectionScope:s,useCollection:g,useInitCollection:w}]}lt($A,"createCollection");function Nj(e,t){if(e===t)return!0;
67if(typeof e!="object"||typeof t!="object"||e==null||t==null)return!1;const r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length)return!1;for(const i of r)if(!Object.prototype.hasOwnProperty.call(t,i)||e[i]!==t[i])return!1;return!0}lt(Nj,"shallowEqual");function Sj(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}lt(Sj,"isElementPreceding");function op(e,t){return!e[1].element||!t[1].element?0:Sj(e[1].element,t[1].element)?-1:1}lt(op,"sortByDocumentPosition");function Cj(e){return new MutationObserver(r=>{for(const s of r)if(s.type==="childList"){e();return}})}lt(Cj,"getChildListObserver");var BA=Object.defineProperty,FA=(e,t)=>BA(e,"name",{value:t,configurable:!0}),UA=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],se=UA.reduce((e,t)=>{const r=$n(`Primitive.${t}`),s=f.forwardRef((i,a)=>{const{asChild:o,...l}=i,c=o?r:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),n.jsx(c,{...l,ref:a})});return s.displayName=`Primitive.${t}`,{...e,[t]:s}},{});function eg(e,t){e&&Hs.flushSync(()=>e.dispatchEvent(t))}FA(eg,"dispatchDiscreteCustomEvent");var VA=Object.defineProperty,zA=(e,t)=>VA(e,"name",{value:t,configurable:!0});function _t(e){const t=f.useRef(e);return f.useEffect(()=>{t.current=e}),f.useMemo(()=>(...r)=>{var s;return(s=t.current)==null?void 0:s.call(t,...r)},[])}zA(_t,"useCallbackRef");var WA=Object.defineProperty,rt=(e,t)=>WA(e,"name",{value:t,configurable:!0}),lp="dismissableLayer.update",ZA="dismissableLayer.pointerDownOutside",qA="dismissableLayer.focusOutside",Dv,tg=f.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),mu=f.forwardRef(rt(function(t,r){const{disableOutsidePointerEvents:s=!1,deferPointerDownOutside:i=!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:l,onInteractOutside:c,onDismiss:d,...u}=t,h=f.useContext(tg),[p,m]=f.useState(null),y=(p==null?void 0:p.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,b]=f.useState({}),w=ye(r,m),g=Array.from(h.layers),[v]=[...h.layersWithOutsidePointerEventsDisabled].slice(-1),x=v?g.indexOf(v):-1,j=p?g.indexOf(p):-1,k=h.layersWithOutsidePointerEventsDisabled.size>0,N=j>=x,S=f.useRef(!1),C=Aj(R=>{o==null||o(R),c==null||c(R),R.defaultPrevented||d==null||d()},{ownerDocument:y,deferPointerDownOutside:i,isDeferredPointerDownOutsideRef:S,dismissableSurfaces:h.dismissableSurfaces,shouldHandlePointerDownOutside:f.useCallback(R=>{if(!(R instanceof Node))return!1;const O=[...h.branches].some(T=>T.contains(R));return N&&!O},[h.branches,N])}),E=Pj(R=>{if(i&&S.current)return;const O=R.target;[...h.branches].some(W=>W.contains(O))||(l==null||l(R),c==null||c(R),R.defaultPrevented||d==null||d())},y),I=p?j===g.length-1:!1,B=_t(R=>{R.key==="Escape"&&(a==null||a(R),!R.defaultPrevented&&d&&(R.preventDefault(),d()))});return f.useEffect(()=>{if(I)return y.addEventListener("keydown",B,{capture:!0}),()=>y.removeEventListener("keydown",B,{capture:!0})},[y,I,B]),f.useEffect(()=>{if(p)return s&&(h.layersWithOutsidePointerEventsDisabled.size===0&&(Dv=y.body.style.pointerEvents,y.body.style.pointerEvents="none"),h.layersWithOutsidePointerEventsDisabled.add(p)),h.layers.add(p),cp(),()=>{s&&(h.layersWithOutsidePointerEventsDisabled.delete(p),h.layersWithOutsidePointerEventsDisabled.size===0&&(y.body.style.pointerEvents=Dv))}},[p,y,s,h]),f.useEffect(()=>()=>{p&&(h.layers.delete(p),h.layersWithOutsidePointerEventsDisabled.delete(p),cp())},[p,h]),f.useEffect(()=>{const R=rt(()=>b({}),"handleUpdate");return document.addEventListener(lp,R),()=>document.removeEventListener(lp,R)},[]),n.jsx(se.div,{...u,ref:w,style:{pointerEvents:k?N?"auto":"none":void 0,...t.style},onFocusCapture:te(t.onFocusCapture,E.onFocusCapture),onBlurCapture:te(t.onBlurCapture,E.onBlurCapture),onPointerDownCapture:te(t.onPointerDownCapture,C.onPointerDownCapture)})},"DismissableLayer")),XA=f.forwardRef(rt(function(t,r){const s=f.useContext(tg),i=f.useRef(null),a=ye(r,i);return f.useEffect(()=>{const o=i.current;if(o)return s.branches.add(o),()=>{s.branches.delete(o)}}
67,[s.branches]),n.jsx(se.div,{...t,ref:a})},"DismissableLayerBranch"));function Ej(){const e=f.useContext(tg),[t,r]=f.useState(null);return f.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),r}rt(Ej,"useDismissableLayerSurface");var GA=rt(()=>!0,"IS_TRUE");function Aj(e,t){const{ownerDocument:r=globalThis==null?void 0:globalThis.document,deferPointerDownOutside:s=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a,shouldHandlePointerDownOutside:o=GA}=t,l=_t(e),c=f.useRef(!1),d=f.useRef(!1),u=f.useRef(new Map),h=f.useRef(()=>{});return f.useEffect(()=>{function p(){d.current=!1,i.current=!1,u.current.clear()}rt(p,"resetOutsideInteraction");function m(){return Array.from(u.current.values()).some(Boolean)}rt(m,"isOutsideInteractionIntercepted");function y(x){if(!d.current)return;const j=x.target;j instanceof Node&&[...a].some(N=>N.contains(j))||u.current.set(x.type,!0),x.type==="click"&&window.setTimeout(()=>{d.current&&h.current()},0)}rt(y,"handleInteractionCapture");function b(x){d.current&&u.current.set(x.type,!1)}rt(b,"handleInteractionBubble");const w=rt(x=>{if(x.target&&!c.current){let j=function(){r.removeEventListener("click",h.current);const N=m();p(),N||rg(ZA,l,k,{discrete:!0})};if(rt(j,"handleAndDispatchPointerDownOutsideEvent"),!o(x.target)){r.removeEventListener("click",h.current),p(),c.current=!1;return}const k={originalEvent:x};d.current=!0,i.current=s&&x.button===0,u.current.clear(),!s||x.button!==0?j():(r.removeEventListener("click",h.current),h.current=j,r.addEventListener("click",h.current,{once:!0}))}else r.removeEventListener("click",h.current),p();c.current=!1},"handlePointerDown"),g=["pointerup","mousedown","mouseup","touchstart","touchend","click"];for(const x of g)r.addEventListener(x,y,!0),r.addEventListener(x,b);const v=window.setTimeout(()=>{r.addEventListener("pointerdown",w)},0);return()=>{window.clearTimeout(v),r.removeEventListener("pointerdown",w),r.removeEventListener("click",h.current);for(const x of g)r.removeEventListener(x,y,!0),r.removeEventListener(x,b)}},[r,l,s,i,a,o]),{onPointerDownCapture:rt(()=>c.current=!0,"onPointerDownCapture")}}rt(Aj,"usePointerDownOutside");function Pj(e,t=globalThis==null?void 0:globalThis.document){const r=_t(e),s=f.useRef(!1);return f.useEffect(()=>{const i=rt(a=>{a.target&&!s.current&&rg(qA,r,{originalEvent:a},{discrete:!1})},"handleFocus");return t.addEventListener("focusin",i),()=>t.removeEventListener("focusin",i)},[t,r]),{onFocusCapture:rt(()=>s.current=!0,"onFocusCapture"),onBlurCapture:rt(()=>s.current=!1,"onBlurCapture")}}rt(Pj,"useFocusOutside");function cp(){const e=new CustomEvent(lp);document.dispatchEvent(e)}rt(cp,"dispatchUpdate");function rg(e,t,r,{discrete:s}){const i=r.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),s?eg(i,a):i.dispatchEvent(a)}rt(rg,"handleAndDispatchCustomEvent");var KA=mu,YA=XA,Ue=globalThis!=null&&globalThis.document?f.useLayoutEffect:()=>{},JA=Object.defineProperty,QA=(e,t)=>JA(e,"name",{value:t,configurable:!0}),ng=f.forwardRef(QA(function(t,r){var c;const{container:s,...i}=t,[a,o]=f.useState(!1);Ue(()=>o(!0),[]);const l=s||a&&((c=globalThis==null?void 0:globalThis.document)==null?void 0:c.body);return l?Hs.createPortal(n.jsx(se.div,{...i,ref:r}),l):null},"Portal")),eP=Object.defineProperty,Bn=(e,t)=>eP(e,"name",{value:t,configurable:!0});function Tj(e,t){return f.useReducer((r,s)=>t[r][s]??r,e)}Bn(Tj,"useStateMachine");var Wn=Bn(e=>{const{present:t,children:r}=e,s=_j(t),i=typeof r=="function"?r({present:s.isPresent}):f.Children.only(r),a=Ij(s.ref,Rj(i));return typeof r=="function"||s.isPresent?f.cloneElement(i,{ref:a}):null},"Presence");function _j(e){const[t,r]=f.useState(),s=f.useRef(null),i=f.useRef(e),a=f.useRef("none"),o=f.useRef(void 0),l=e?"mounted":"unmounted",[c,d]=Tj(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return f.useEffect(()=>{c==="mounted"?(a.current=o.current??Zi(s.current),o.current=void 0):a.current="none"},[c]),Ue(()=>{const u=s.current,h=i.current;if(h!==e){const m=a.current,y=Zi(u);e?(o.current=y,d("MOUNT")):y==="none"||(u==null?void 0:u.display)==="none"?d("UNMOUNT"):d(h&&m!==y?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,d]),Ue(()=>{if(t){let u;const h=t.ownerDocument.defaultView??window,p=Bn(y=>
67{const w=Zi(s.current).includes(CSS.escape(y.animationName));if(y.target===t&&w&&(d("ANIMATION_END"),!i.current)){const g=t.style.animationFillMode;t.style.animationFillMode="forwards",u=h.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=g)})}},"handleAnimationEnd"),m=Bn(y=>{y.target===t&&(a.current=Zi(s.current))},"handleAnimationStart");return t.addEventListener("animationstart",m),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{h.clearTimeout(u),t.removeEventListener("animationstart",m),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:f.useCallback(u=>{if(u){const h=getComputedStyle(u);s.current=h,o.current=Zi(h)}else s.current=null;r(u)},[])}}Bn(_j,"usePresence");function dp(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}Bn(dp,"setRef");function Ij(...e){const t=f.useRef(e);return t.current=e,f.useCallback(r=>{const s=t.current;let i=!1;const a=s.map(o=>{const l=dp(o,r);return!i&&typeof l=="function"&&(i=!0),l});if(i)return()=>{for(let o=0;o<a.length;o++){const l=a[o];typeof l=="function"?l():dp(s[o],null)}}},[])}Bn(Ij,"useStableComposedRefs");function Zi(e){return(e==null?void 0:e.animationName)||"none"}Bn(Zi,"getAnimationName");function Rj(e){var s,i;let t=(s=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:s.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=(i=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:i.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}Bn(Rj,"getElementRef");var tP=Object.defineProperty,rP=(e,t)=>tP(e,"name",{value:t,configurable:!0}),Lv=Ci[" useEffectEvent ".trim().toString()],Hv=Ci[" useInsertionEffect ".trim().toString()];function Oj(e){if(typeof Lv=="function")return Lv(e);const t=f.useRef(()=>{throw new Error("Cannot call an event handler while rendering.")});return typeof Hv=="function"?Hv(()=>{t.current=e}):Ue(()=>{t.current=e}),f.useMemo(()=>(...r)=>{var s;return(s=t.current)==null?void 0:s.call(t,...r)},[])}rP(Oj,"useEffectEvent");var nP=Object.defineProperty,Rl=(e,t)=>nP(e,"name",{value:t,configurable:!0}),sP=Ci[" useInsertionEffect ".trim().toString()]||Ue;function vr({prop:e,defaultProp:t,onChange:r=Rl(()=>{},"onChange"),caller:s}){const[i,a,o]=Mj({defaultProp:t,onChange:r}),l=e!==void 0,c=l?e:i,d=f.useCallback(u=>{var h;if(l){const p=Dj(u)?u(e):u;p!==e&&((h=o.current)==null||h.call(o,p))}else a(u)},[l,e,a,o]);return[c,d]}Rl(vr,"useControllableState");function Mj({defaultProp:e,onChange:t}){const[r,s]=f.useState(e),i=f.useRef(r),a=f.useRef(t);return sP(()=>{a.current=t},[t]),f.useEffect(()=>{var o;i.current!==r&&((o=a.current)==null||o.call(a,r),i.current=r)},[r,i]),[r,s,a]}Rl(Mj,"useUncontrolledState");function Dj(e){return typeof e=="function"}Rl(Dj,"isFunction");var $v=Symbol("RADIX:SYNC_STATE");function iP(e,t,r,s){const{prop:i,defaultProp:a,onChange:o,caller:l}=t,c=i!==void 0,d=Oj(o),u=[{...r,state:a}];s&&u.push(s);const[h,p]=f.useReducer((w,g)=>{if(g.type===$v)return{...w,state:g.state};const v=e(w,g);return c&&!Object.is(v.state,w.state)&&d(v.state),v},...u),m=h.state,y=f.useRef(m);f.useEffect(()=>{y.current!==m&&(y.current=m,c||d(m))},[m,y,c]);const b=f.useMemo(()=>i!==void 0?{...h,state:i}:h,[h,i]);return f.useEffect(()=>{c&&!Object.is(i,h.state)&&p({type:$v,state:i})},[i,h.state,c]),[b,p]}Rl(iP,"useControllableStateReducer");var aP=Object.defineProperty,oP=(e,t)=>
67aP(e,"name",{value:t,configurable:!0}),Lj=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),sg=f.forwardRef(oP(function(t,r){return n.jsx(se.span,{...t,ref:r,style:{...Lj,...t.style}})},"VisuallyHidden")),lP=sg,cP=Object.defineProperty,_e=(e,t)=>cP(e,"name",{value:t,configurable:!0}),Hj="ToastProvider",[ig,$j,dP]=Il("Toast"),[Bj,u$]=Wt("Toast",[dP]),[uP,pu]=Bj(Hj),hP=_e(e=>{const{__scopeToast:t,label:r="Notification",duration:s=5e3,swipeDirection:i="right",swipeThreshold:a=50,announcerContainer:o,children:l}=e,[c,d]=f.useState(null),[u,h]=f.useState(0),p=f.useRef(!1);return r.trim()||console.error(`Invalid prop \`label\` supplied to \`${Hj}\`. Expected non-empty \`string\`.`),n.jsx(ig.Provider,{scope:t,children:n.jsx(uP,{scope:t,label:r,duration:s,swipeDirection:i,swipeThreshold:a,toastCount:u,viewport:c,onViewportChange:d,onToastAdd:f.useCallback(()=>h(m=>m+1),[]),onToastRemove:f.useCallback(()=>h(m=>m-1),[]),isClosePausedRef:p,announcerContainer:o,children:l})})},"ToastProvider"),mP="ToastViewport",pP=["F8"],up="toast.viewportPause",hp="toast.viewportResume",fP=f.forwardRef(_e(function(t,r){const{__scopeToast:s,hotkey:i=pP,label:a="Notifications ({hotkey})",...o}=t,l=pu(mP,s),c=$j(s),d=f.useRef(null),u=f.useRef(null),h=f.useRef(null),p=f.useRef(null),m=ye(r,p,l.onViewportChange),y=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),b=l.toastCount>0;f.useEffect(()=>{const g=_e(v=>{var j;i.length!==0&&i.every(k=>v[k]||v.code===k)&&((j=p.current)==null||j.focus())},"handleKeyDown");return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[i]),f.useEffect(()=>{const g=d.current,v=p.current;if(b&&g&&v){const x=_e(()=>{if(!l.isClosePausedRef.current){const S=new CustomEvent(up);v.dispatchEvent(S),l.isClosePausedRef.current=!0}},"handlePause"),j=_e(()=>{if(l.isClosePausedRef.current){const S=new CustomEvent(hp);v.dispatchEvent(S),l.isClosePausedRef.current=!1}},"handleResume"),k=_e(S=>{!g.contains(S.relatedTarget)&&j()},"handleFocusOutResume"),N=_e(()=>{g.contains(document.activeElement)||j()},"handlePointerLeaveResume");return g.addEventListener("focusin",x),g.addEventListener("focusout",k),g.addEventListener("pointermove",x),g.addEventListener("pointerleave",N),window.addEventListener("blur",x),window.addEventListener("focus",j),()=>{g.removeEventListener("focusin",x),g.removeEventListener("focusout",k),g.removeEventListener("pointermove",x),g.removeEventListener("pointerleave",N),window.removeEventListener("blur",x),window.removeEventListener("focus",j)}}},[b,l.isClosePausedRef]);const w=f.useCallback(({tabbingDirection:g})=>{const x=c().map(j=>{const k=j.ref.current,N=[k,...Wj(k)];return g==="forwards"?N:N.reverse()});return(g==="forwards"?x.reverse():x).flat()},[c]);return f.useEffect(()=>{const g=p.current;if(g){const v=_e(x=>{var N,S,C;const j=x.altKey||x.ctrlKey||x.metaKey;if(x.key==="Tab"&&!j){const E=document.activeElement,I=x.shiftKey;if(x.target===g&&I){(N=u.current)==null||N.focus();return}const O=w({tabbingDirection:I?"backwards":"forwards"}),T=O.findIndex(W=>W===E);Yc(O.slice(T+1))?x.preventDefault():I?(S=u.current)==null||S.focus():(C=h.current)==null||C.focus()}},"handleKeyDown");return g.addEventListener("keydown",v),()=>g.removeEventListener("keydown",v)}},[c,w]),n.jsxs(YA,{ref:d,role:"region","aria-label":a.replace("{hotkey}",y),tabIndex:-1,style:{pointerEvents:b?void 0:"none"},children:[b&&n.jsx(Bv,{ref:u,onFocusFromOutsideViewport:()=>{const g=w({tabbingDirection:"forwards"});Yc(g)}}),n.jsx(ig.Slot,{scope:s,children:n.jsx(se.ol,{tabIndex:-1,...o,ref:m})}),b&&n.jsx(Bv,{ref:h,onFocusFromOutsideViewport:()=>{const g=w({tabbingDirection:"backwards"});Yc(g)}})]})},"ToastViewport")),gP="ToastFocusProxy",Bv=f.forwardRef(_e(function(t,r){const{__scopeToast:s,onFocusFromOutsideViewport:i,...a}=t,o=pu(gP,s);return n.jsx(sg,{tabIndex:0,...a,ref:r,style:{position:"fixed"},onFocus:l=>{var u;const c=l.relatedTarget;!((u=o.viewport)!=null&&u.contains(c))&&i()}})},"ToastFocusProxy")),fu="Toast",xP="toast.swipeStart",vP="toast.swipeMove",yP="toast.swipeCancel",bP="toast.swipeEnd",wP=f.forwardRef(_e(function(t,r){const{forceMount:s,open:i,defaultOpen:a,onOpenChange:o,...l}=t,[c,d]=vr({prop:i,defaultProp:a??!0,onChange:o,caller:fu});return n.jsx(Wn,{present:s||c,children:n.jsx(NP,{open:c,...l,ref:r,onClose:()=>d(!1),onPause:_t(t.onPause),onResume:_t(t.onResume),onSwipeStart:te(t.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:te(t.onSwipeMove,u=>{const{x:h,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${h}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${p}px`)}),onSwipeCancel:te(t.onSwipeCancel,u=>{u.currentTarget.setAttribute("data-swipe","cancel"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:te(t.onSwipeEnd,u=>{const{x:h,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","end"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${h}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${p}px`),d(!1)})})})},"Toast")),[jP,kP]=Bj(fu,{onClose(){}}),NP=f.forwardRef(_e(function(t,r){const{__scopeToast:s,type:i="foreground",duration:a,open:o,onClose:l,onEscapeKeyDown:c,onPause:d,onResume:u,onSwipeStart:h,onSwipeMove:p,onSwipeCancel:m,onSwipeEnd:y,...b}=t,w=pu(fu,s),g=$j(s),[v,x]=f.useState(null),j=ye(r,x),k=f.useRef(null),N=f.useRef(null),S=a||w.duration,C=f.useRef(0),E=f.useRef(S),I=f.useRef(0),{onToastAdd:B,onToastRemove:R}=w,O=_t(()=>{var U;(v==null?void 0:v.contains(document.activeElement))&&((U=w.viewport)==null||U.focus()),l()}),T=f.useCallback(H=>
67{!H||H===1/0||(window.clearTimeout(I.current),C.current=new Date().getTime(),I.current=window.setTimeout(O,H))},[O]);f.useEffect(()=>{const H=w.viewport;if(H){const U=_e(()=>{T(E.current),u==null||u()},"handleResume"),P=_e(()=>{const _=new Date().getTime()-C.current;E.current=E.current-_,window.clearTimeout(I.current),d==null||d()},"handlePause");return H.addEventListener(up,P),H.addEventListener(hp,U),()=>{H.removeEventListener(up,P),H.removeEventListener(hp,U)}}},[w.viewport,S,d,u,T]),f.useEffect(()=>{o&&!w.isClosePausedRef.current&&T(S)},[o,S,w.isClosePausedRef,T]),f.useEffect(()=>()=>{window.clearTimeout(I.current)},[]),f.useEffect(()=>(B(),()=>R()),[B,R]);const W=f.useMemo(()=>v?ag(v):null,[v]);return w.viewport?n.jsxs(n.Fragment,{children:[W&&n.jsx(SP,{__scopeToast:s,role:"status","aria-live":i==="foreground"?"assertive":"polite",children:W}),n.jsx(jP,{scope:s,onClose:O,children:Hs.createPortal(n.jsx(ig.ItemSlot,{scope:s,children:n.jsx(KA,{asChild:!0,onEscapeKeyDown:te(c,H=>{g().some(P=>{var _;return(_=P.ref.current)==null?void 0:_.contains(H.target)})||O()}),children:n.jsx(se.li,{tabIndex:0,"data-state":o?"open":"closed","data-swipe-direction":w.swipeDirection,...b,ref:j,style:{userSelect:"none",touchAction:"none",...t.style},onKeyDown:te(t.onKeyDown,H=>{H.key==="Escape"&&(c==null||c(H.nativeEvent),H.nativeEvent.defaultPrevented||O())}),onPointerDown:te(t.onPointerDown,H=>{H.button===0&&(k.current={x:H.clientX,y:H.clientY})}),onPointerMove:te(t.onPointerMove,H=>{if(!k.current)return;const U=H.clientX-k.current.x,P=H.clientY-k.current.y,_=!!N.current,F=["left","right"].includes(w.swipeDirection),Y=["left","up"].includes(w.swipeDirection)?Math.min:Math.max,q=F?Y(0,U):0,Z=F?0:Y(0,P),ee=H.pointerType==="touch"?10:2,le={x:q,y:Z},Ee={originalEvent:H,delta:le};_?(N.current=le,No(vP,p,Ee,{discrete:!1})):Fv(le,w.swipeDirection,ee)?(N.current=le,No(xP,h,Ee,{discrete:!1}),H.target.setPointerCapture(H.pointerId)):(Math.abs(U)>ee||Math.abs(P)>ee)&&(k.current=null)}),onPointerUp:te(t.onPointerUp,H=>{const U=N.current,P=H.target;if(P.hasPointerCapture(H.pointerId)&&P.releasePointerCapture(H.pointerId),N.current=null,k.current=null,U){const _=H.currentTarget,F={originalEvent:H,delta:U};Fv(U,w.swipeDirection,w.swipeThreshold)?No(bP,y,F,{discrete:!0}):No(yP,m,F,{discrete:!0}),_.addEventListener("click",Y=>Y.preventDefault(),{once:!0})}})})})}),w.viewport)})]}):null},"ToastImpl")),SP=_e(e=>{const{__scopeToast:t,children:r,...s}=e,i=pu(fu,t),[a,o]=f.useState(!1),[l,c]=f.useState(!1);return Vj(()=>o(!0)),f.useEffect(()=>{const d=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(d)},[]),l?null:n.jsx(ng,{asChild:!0,container:i.announcerContainer||void 0,children:n.jsx(sg,{...s,children:a&&n.jsxs(n.Fragment,{children:[i.label," ",r]})})})},"ToastAnnounce"),CP=f.forwardRef(_e(function(t,r){const{__scopeToast:s,...i}=t;return n.jsx(se.div,{...i,ref:r})},"ToastTitle")),EP=f.forwardRef(_e(function(t,r){const{__scopeToast:s,...i}=t;return n.jsx(se.div,{...i,ref:r})},"ToastDescription")),AP="ToastAction",PP=f.forwardRef(_e(function(t,r){const{altText:s,...i}=t;return s.trim()?n.jsx(Uj,{altText:s,asChild:!0,children:n.jsx(Fj,{...i,ref:r})}):(console.error(`Invalid prop \`altText\` supplied to \`${AP}\`. Expected non-empty \`string\`.`),null)},"ToastAction")),TP="ToastClose",Fj=f.forwardRef(_e(function(t,r){const{__scopeToast:s,...i}=t,a=kP(TP,s);return n.jsx(Uj,{asChild:!0,children:n.jsx(se.button,{type:"button",...i,ref:r,onClick:te(t.onClick,a.onClose)})})},"ToastClose")),Uj=f.forwardRef(_e(function(t,r){const{__scopeToast:s,altText:i,...a}=t;return n.jsx(se.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":i||void 0,...a,ref:r})},"ToastAnnounceExclude"));function ag(e){const t=[];return Array.from(e.childNodes).forEach(s=>{if(s.nodeType===s.TEXT_NODE&&s.textContent&&t.push(s.textContent),zj(s)){const i=s.ariaHidden||s.hidden||s.style.display==="none",a=s.dataset.radixToastAnnounceExclude==="";if(!i)if(a){const o=s.dataset.radixToastAnnounceAlt;o&&t.push(o)}else t.push(...ag(s))}}),t}_e(ag,"getAnnounceTextContent");function No(e,t,r,{discrete:s}){const i=r.originalEvent.currentTarget,a=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),s?eg(i,a):i.dispatchEvent(a)}_e(No,"handleAndDispatchCustomEvent");var Fv=_e((e,t,r=0)=>{const s=Math.abs(e.x),i=Math.abs(e.y),a=s>i;return t==="left"||t==="right"?a&&s>r:!a&&i>r},"isDeltaInDirection");function Vj(e=()=>{}){const t=_t(e);Ue(()=>{let r=0,s=0;return r=window.requestAnimationFrame(()=>s=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(r),window.cancelAnimationFrame(s)}},[t])}_e(Vj,"useNextFrame");
vendor: 8,365 bytes, lines 67-142
67function zj(e){return e.nodeType===e.ELEMENT_NODE}_e(zj,"isHTMLElement");function Wj(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:_e(s=>{const i=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||i?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},"acceptNode")});for(;r.nextNode();)t.push(r.currentNode);return t}_e(Wj,"getTabbableCandidates");function Yc(e){const t=document.activeElement;return e.some(r=>r===t?!0:(r.focus(),document.activeElement!==t))}_e(Yc,"focusFirst");var _P=hP,Zj=fP,qj=wP,Xj=CP,Gj=EP,Kj=PP,Yj=Fj;function Jj(e){var t,r,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(r=Jj(e[t]))&&(s&&(s+=" "),s+=r)}else for(r in e)e[r]&&(s&&(s+=" "),s+=r);return s}function Qj(){for(var e,t,r=0,s="",i=arguments.length;r<i;r++)(e=arguments[r])&&(t=Jj(e))&&(s&&(s+=" "),s+=t);return s}const Uv=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Vv=Qj,gu=(e,t)=>r=>{var s;if((t==null?void 0:t.variants)==null)return Vv(e,r==null?void 0:r.class,r==null?void 0:r.className);const{variants:i,defaultVariants:a}=t,o=Object.keys(i).map(d=>{const u=r==null?void 0:r[d],h=a==null?void 0:a[d];if(u===null)return null;const p=Uv(u)||Uv(h);return i[d][p]}),l=r&&Object.entries(r).reduce((d,u)=>{let[h,p]=u;return p===void 0||(d[h]=p),d},{}),c=t==null||(s=t.compoundVariants)===null||s===void 0?void 0:s.reduce((d,u)=>{let{class:h,className:p,...m}=u;return Object.entries(m).every(y=>{let[b,w]=y;return Array.isArray(w)?w.includes({...a,...l}[b]):{...a,...l}[b]===w})?[...d,h,p]:d},[]);return Vv(e,o,c,r==null?void 0:r.class,r==null?void 0:r.className)};/** 68 * @license lucide-react v0.462.0 - ISC 69 * 70 * This source code is licensed under the ISC license. 71 * See the LICENSE file in the root directory of this source tree. 72 */const IP=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),ek=(...e)=>e.filter((t,r,s)=>!!t&&t.trim()!==""&&s.indexOf(t)===r).join(" ").trim();/** 73 * @license lucide-react v0.462.0 - ISC 74 * 75 * This source code is licensed under the ISC license. 76 * See the LICENSE file in the root directory of this source tree. 77 */var RP={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** 78 * @license lucide-react v0.462.0 - ISC 79 * 80 * This source code is licensed under the ISC license. 81 * See the LICENSE file in the root directory of this source tree. 82 */const OP=f.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:s,className:i="",children:a,iconNode:o,...l},c)=>f.createElement("svg",{ref:c,...RP,width:t,height:t,stroke:e,strokeWidth:s?Number(r)*24/Number(t):r,className:ek("lucide",i),...l},[...o.map(([d,u])=>f.createElement(d,u)),...Array.isArray(a)?a:[a]]));/** 83 * @license lucide-react v0.462.0 - ISC 84 * 85 * This source code is licensed under the ISC license. 86 * See the LICENSE file in the root directory of this source tree. 87 */const D=(e,t)=>{const r=f.forwardRef(({className:s,...i},a)=>f.createElement(OP,{ref:a,iconNode:t,className:ek(`lucide-${IP(e)}`,s),...i}));return r.displayName=`${e}`,r};/** 88 * @license lucide-react v0.462.0 - ISC 89 * 90 * This source code is licensed under the ISC license. 91 * See the LICENSE file in the root directory of this source tree. 92 */const yr=D("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/** 93 * @license lucide-react v0.462.0 - ISC 94 * 95 * This source code is licensed under the ISC license. 96 * See the LICENSE file in the root directory of this source tree. 97 */const K=D("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/** 98 * @license lucide-react v0.462.0 - ISC 99 * 100 * This source code is licensed under the ISC license. 101 * See the LICENSE file in the root directory of this source tree. 102 */const og=D("Banknote",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M6 12h.01M18 12h.01",key:"113zkx"}]]);/** 103 * @license lucide-react v0.462.0 - ISC 104 * 105 * This source code is licensed under the ISC license. 106 * See the LICENSE file in the root directory of this source tree. 107 */const MP=D("Bell",[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]]);/** 108 * @license lucide-react v0.462.0 - ISC 109 * 110 * This source code is licensed under the ISC license. 111 * See the LICENSE file in the root directory of this source tree. 112 */const tk=D("BookOpen",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);/** 113 * @license lucide-react v0.462.0 - ISC 114 * 115 * This source code is licensed under the ISC license. 116 * See the LICENSE file in the root directory of this source tree. 117 */const va=D("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** 118 * @license lucide-react v0.462.0 - ISC 119 * 120 * This source code is licensed under the ISC license. 121 * See the LICENSE file in the root directory of this source tree. 122 */const zv=D("Box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);/** 123 * @license lucide-react v0.462.0 - ISC 124 * 125 * This source code is licensed under the ISC license. 126 * See the LICENSE file in the root directory of this source tree. 127 */const rk=D("Boxes",[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]]);/** 128 * @license lucide-react v0.462.0 - ISC 129 * 130 * This source code is licensed under the ISC license. 131 * See the LICENSE file in the root directory of this source tree. 132 */const qi=D("Brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]);/** 133 * @license lucide-react v0.462.0 - ISC 134 * 135 * This source code is licensed under the ISC license. 136 * See the LICENSE file in the root directory of this source tree. 137 */const lg=D("Briefcase",[["path",{d:"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",key:"jecpp"}],["rect",{width:"20",height:"14",x:"2",y:"6",rx:"2",key:"i6l2r4"}]]);/** 138 * @license lucide-react v0.462.0 - ISC 139 * 140 * This source code is licensed under the ISC license. 141 * See the LICENSE file in the root directory of this source tree. 142 */const ut=D("Building2",[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}
142],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);/** 143 * @license lucide-react v0.462.0 - ISC 144 * 145 * This source code is licensed under the ISC license. 146 * See the LICENSE file in the root directory of this source tree. 147 */const DP=D("Building",[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",ry:"2",key:"76otgf"}],["path",{d:"M9 22v-4h6v4",key:"r93iot"}],["path",{d:"M8 6h.01",key:"1dz90k"}],["path",{d:"M16 6h.01",key:"1x0f13"}],["path",{d:"M12 6h.01",key:"1vi96p"}],["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 10h.01",key:"1m94wz"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M8 14h.01",key:"6423bh"}]]);/** 148 * @license lucide-react v0.462.0 - ISC 149 * 150 * This source code is licensed under the ISC license. 151 * See the LICENSE file in the root directory of this source tree. 152 */const LP=D("CalendarCheck",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"m9 16 2 2 4-4",key:"19s6y9"}]]);/** 153 * @license lucide-react v0.462.0 - ISC 154 * 155 * This source code is licensed under the ISC license. 156 * See the LICENSE file in the root directory of this source tree. 157 */const xu=D("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);/** 158 * @license lucide-react v0.462.0 - ISC 159 * 160 * This source code is licensed under the ISC license. 161 * See the LICENSE file in the root directory of this source tree. 162 */const cg=D("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** 163 * @license lucide-react v0.462.0 - ISC 164 * 165 * This source code is licensed under the ISC license. 166 * See the LICENSE file in the root directory of this source tree. 167 */const vu=D("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** 168 * @license lucide-react v0.462.0 - ISC 169 * 170 * This source code is licensed under the ISC license. 171 * See the LICENSE file in the root directory of this source tree. 172 */const wi=D("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** 173 * @license lucide-react v0.462.0 - ISC 174 * 175 * This source code is licensed under the ISC license. 176 * See the LICENSE file in the root directory of this source tree. 177 */const HP=D("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** 178 * @license lucide-react v0.462.0 - ISC 179 * 180 * This source code is licensed under the ISC license. 181 * See the LICENSE file in the root directory of this source tree. 182 */const $P=D("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** 183 * @license lucide-react v0.462.0 - ISC 184 * 185 * This source code is licensed under the ISC license. 186 * See the LICENSE file in the root directory of this source tree. 187 */const Ol=D("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/** 188 * @license lucide-react v0.462.0 - ISC 189 * 190 * This source code is licensed under the ISC license. 191 * See the LICENSE file in the root directory of this source tree. 192 */const ie=D("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** 193 * @license lucide-react v0.462.0 - ISC 194 * 195 * This source code is licensed under the ISC license. 196 * See the LICENSE file in the root directory of this source tree. 197 */const BP=D("ClipboardCheck",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"m9 14 2 2 4-4",key:"df797q"}]]);/** 198 * @license lucide-react v0.462.0 - ISC 199 * 200 * This source code is licensed under the ISC license. 201 * See the LICENSE file in the root directory of this source tree. 202 */const yu=D("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** 203 * @license lucide-react v0.462.0 - ISC 204 * 205 * This source code is licensed under the ISC license. 206 * See the LICENSE file in the root directory of this source tree. 207 */const st=D("Cloud",[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]]);/** 208 * @license lucide-react v0.462.0 - ISC 209 * 210 * This source code is licensed under the ISC license. 211 * See the LICENSE file in the root directory of this source tree. 212 */const FP=D("CodeXml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);/** 213 * @license lucide-react v0.462.0 - ISC 214 * 215 * This source code is licensed under the ISC license. 216 * See the LICENSE file in the root directory of this source tree. 217 */const UP=D("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);/** 218 * @license lucide-react v0.462.0 - ISC 219 * 220 * This source code is licensed under the ISC license. 221 * See the LICENSE file in the root directory of this source tree. 222 */const VP=D("Compass",[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",ke
222y:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** 223 * @license lucide-react v0.462.0 - ISC 224 * 225 * This source code is licensed under the ISC license. 226 * See the LICENSE file in the root directory of this source tree. 227 */const zP=D("Cookie",[["path",{d:"M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5",key:"laymnq"}],["path",{d:"M8.5 8.5v.01",key:"ue8clq"}],["path",{d:"M16 15.5v.01",key:"14dtrp"}],["path",{d:"M12 12v.01",key:"u5ubse"}],["path",{d:"M11 17v.01",key:"1hyl5a"}],["path",{d:"M7 14v.01",key:"uct60s"}]]);/** 228 * @license lucide-react v0.462.0 - ISC 229 * 230 * This source code is licensed under the ISC license. 231 * See the LICENSE file in the root directory of this source tree. 232 */const Ve=D("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}
232],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/** 233 * @license lucide-react v0.462.0 - ISC 234 * 235 * This source code is licensed under the ISC license. 236 * See the LICENSE file in the root directory of this source tree. 237 */const mp=D("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** 238 * @license lucide-react v0.462.0 - ISC 239 * 240 * This source code is licensed under the ISC license. 241 * See the LICENSE file in the root directory of this source tree. 242 */const Td=D("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/** 243 * @license lucide-react v0.462.0 - ISC 244 * 245 * This source code is licensed under the ISC license. 246 * See the LICENSE file in the root directory of this source tree. 247 */const Wv=D("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** 248 * @license lucide-react v0.462.0 - ISC 249 * 250 * This source code is licensed under the ISC license. 251 * See the LICENSE file in the root directory of this source tree. 252 */const Ua=D("Factory",[["path",{d:"M2 20a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8l-7 5V8l-7 5V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z",key:"159hny"}],["path",{d:"M17 18h1",key:"uldtlt"}],["path",{d:"M12 18h1",key:"s9uhes"}],["path",{d:"M7 18h1",key:"1neino"}]]);/** 253 * @license lucide-react v0.462.0 - ISC 254 * 255 * This source code is licensed under the ISC license. 256 * See the LICENSE file in the root directory of this source tree. 257 */const Va=D("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/** 258 * @license lucide-react v0.462.0 - ISC 259 * 260 * This source code is licensed under the ISC license. 261 * See the LICENSE file in the root directory of this source tree. 262 */const WP=D("Gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);/** 263 * @license lucide-react v0.462.0 - ISC 264 * 265 * This source code is licensed under the ISC license. 266 * See the LICENSE file in the root directory of this source tree. 267 */const nk=D("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** 268 * @license lucide-react v0.462.0 - ISC 269 * 270 * This source code is licensed under the ISC license. 271 * See the LICENSE file in the root directory of this source tree. 272 */const kt=D("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/** 273 * @license lucide-react v0.462.0 - ISC 274 * 275 * This source code is licensed under the ISC license. 276 * See the LICENSE file in the root directory of this source tree. 277 */const sk=D("GraduationCap",[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]]);/** 278 * @license lucide-react v0.462.0 - ISC 279 * 280 * This source code is licensed under the ISC license. 281 * See the LICENSE file in the root directory of this source tree. 282 */const dg=D("Handshake",[["path",{d:"m11 17 2 2a1 1 0 1 0 3-3",key:"efffak"}],["path",{d:"m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4",key:"9pr0kb"}],["path",{d:"m21 3 1 11h-2",key:"1tisrp"}],["path",{d:"M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3",key:"1uvwmv"}],["path",{d:"M3 4h8",key:"1ep09j"}]]);/** 283 * @license lucide-react v0.462.0 - ISC 284 * 285 * This source code is licensed under the ISC license. 286 * See the LICENSE file in the root directory of this source tree. 287 */const _d=D("HardDrive",[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}
287]]);/** 288 * @license lucide-react v0.462.0 - ISC 289 * 290 * This source code is licensed under the ISC license. 291 * See the LICENSE file in the root directory of this source tree. 292 */const Br=D("Headphones",[["path",{d:"M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 18 0v7a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3",key:"1xhozi"}]]);/** 293 * @license lucide-react v0.462.0 - ISC 294 * 295 * This source code is licensed under the ISC license. 296 * See the LICENSE file in the root directory of this source tree. 297 */const ZP=D("Headset",[["path",{d:"M3 11h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5Zm0 0a9 9 0 1 1 18 0m0 0v5a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3Z",key:"12oyoe"}],["path",{d:"M21 16v2a4 4 0 0 1-4 4h-5",key:"1x7m43"}]]);/** 298 * @license lucide-react v0.462.0 - ISC 299 * 300 * This source code is licensed under the ISC license. 301 * See the LICENSE file in the root directory of this source tree. 302 */const ug=D("Hospital",[["path",{d:"M12 6v4",key:"16clxf"}],["path",{d:"M14 14h-4",key:"esezmu"}],["path",{d:"M14 18h-4",key:"16mqa2"}],["path",{d:"M14 8h-4",key:"z8ypaz"}],["path",{d:"M18 12h2a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2h2",key:"b1k337"}],["path",{d:"M18 22V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v18",key:"16g51d"}]]);/** 303 * @license lucide-react v0.462.0 - ISC 304 * 305 * This source code is licensed under the ISC license. 306 * See the LICENSE file in the root directory of this source tree. 307 */const ik=D("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);/** 308 * @license lucide-react v0.462.0 - ISC 309 * 310 * This source code is licensed under the ISC license. 311 * See the LICENSE file in the root directory of this source tree. 312 */const ak=D("Landmark",[["line",{x1:"3",x2:"21",y1:"22",y2:"22",key:"j8o0r"}],["line",{x1:"6",x2:"6",y1:"18",y2:"11",key:"10tf0k"}],["line",{x1:"10",x2:"10",y1:"18",y2:"11",key:"54lgf6"}],["line",{x1:"14",x2:"14",y1:"18",y2:"11",key:"380y"}],["line",{x1:"18",x2:"18",y1:"18",y2:"11",key:"1kevvc"}],["polygon",{points:"12 2 20 7 4 7",key:"jkujk7"}]]);/** 313 * @license lucide-react v0.462.0 - ISC 314 * 315 * This source code is licensed under the ISC license. 316 * See the LICENSE file in the root directory of this source tree. 317 */const Ts=D("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);/** 318 * @license lucide-react v0.462.0 - ISC 319 * 320 * This source code is licensed under the ISC license. 321 * See the LICENSE file in the root directory of this source tree. 322 */const hg=D("LayoutDashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);/** 323 * @license lucide-react v0.462.0 - ISC 324 * 325 * This source code is licensed under the ISC license. 326 * See the LICENSE file in the root directory of this source tree. 327 */const qP=D("LifeBuoy",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.93 4.93 4.24 4.24",key:"1ymg45"}],["path",{d:"m14.83 9.17 4.24-4.24",key:"1cb5xl"}],["path",{d:"m14.83 14.83 4.24 4.24",key:"q42g0n"}],["path",{d:"m9.17 14.83-4.24 4.24",key:"bqpfvv"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]]);/** 328 * @license lucide-react v0.462.0 - ISC 329 * 330 * This source code is licensed under the ISC license. 331 * See the LICENSE file in the root directory of this source tree. 332 */const Id=D("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);/** 333 * @license lucide-react v0.462.0 - ISC 334 * 335 * This source code is licensed under the ISC license. 336 * See the LICENSE file in the root directory of this source tree.
337 */const XP=D("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** 338 * @license lucide-react v0.462.0 - ISC 339 * 340 * This source code is licensed under the ISC license. 341 * See the LICENSE file in the root directory of this source tree. 342 */const Ml=D("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);/** 343 * @license lucide-react v0.462.0 - ISC 344 * 345 * This source code is licensed under the ISC license. 346 * See the LICENSE file in the root directory of this source tree. 347 */const GP=D("LogIn",[["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}],["polyline",{points:"10 17 15 12 10 7",key:"1ail0h"}],["line",{x1:"15",x2:"3",y1:"12",y2:"12",key:"v6grx8"}]]);/** 348 * @license lucide-react v0.462.0 - ISC 349 * 350 * This source code is licensed under the ISC license. 351 * See the LICENSE file in the root directory of this source tree. 352 */const ji=D("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/** 353 * @license lucide-react v0.462.0 - ISC 354 * 355 * This source code is licensed under the ISC license. 356 * See the LICENSE file in the root directory of this source tree. 357 */const ok=D("MapPin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);/** 358 * @license lucide-react v0.462.0 - ISC 359 * 360 * This source code is licensed under the ISC license. 361 * See the LICENSE file in the root directory of this source tree. 362 */const Zv=D("Megaphone",[["path",{d:"m3 11 18-5v12L3 14v-3z",key:"n962bs"}],["path",{d:"M11.6 16.8a3 3 0 1 1-5.8-1.6",key:"1yl0tm"}]]);/** 363 * @license lucide-react v0.462.0 - ISC 364 * 365 * This source code is licensed under the ISC license. 366 * See the LICENSE file in the root directory of this source tree. 367 */const KP=D("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/** 368 * @license lucide-react v0.462.0 - ISC 369 * 370 * This source code is licensed under the ISC license. 371 * See the LICENSE file in the root directory of this source tree. 372 */const qv=D("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);/** 373 * @license lucide-react v0.462.0 - ISC 374 * 375 * This source code is licensed under the ISC license. 376 * See the LICENSE file in the root directory of this source tree. 377 */const Jt=D("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/** 378 * @license lucide-react v0.462.0 - ISC 379 * 380 * This source code is licensed under the ISC license. 381 * See the LICENSE file in the root directory of this source tree. 382 */const YP=D("Mic",[["path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",key:"131961"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/** 383 * @license lucide-react v0.462.0 - ISC 384 * 385 * This source code is licensed under the ISC license. 386 * See the LICENSE file in the root directory of this source tree. 387 */const lk=D("MonitorPlay",[["path",{d:"M10 7.75a.75.75 0 0 1 1.142-.638l3.664 2.249a.75.75 0 0 1 0 1.278l-3.664 2.25a.75.75 0 0 1-1.142-.64z",key:"1pctta"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",key:"x3v2xh"}]]);/** 388 * @license lucide-react v0.462.0 - ISC 389 * 390 * This source code is licensed under the ISC license. 391 * See the LICENSE file in the root directory of this source tree. 392 */const ck=D("Monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);/** 393 * @license lucide-react v0.462.0 - ISC 394 * 395 * This source code is licensed under the ISC license. 396 * See the LICENSE file in the root directory of this source tree. 397 */const JP=D("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/** 398 * @license lucide-react v0.462.0 - ISC 399 * 400 * This source code is licensed under the ISC license. 401 * See the LICENSE file in the root directory of this source tree. 402 */const Ie=D("Network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);/** 403 * @license lucide-react v0.462.0 - ISC 404 * 405 * This source code is licensed under the ISC license. 406 * See the LICENSE file in the root directory of this source tree. 407 */const QP=D("Package",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["path",{d:"m3.3 7 7.703 4.734a2 2 0 0 0 1.994 0L20.7 7",key:"yx3hmr"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);/** 408 * @license lucide-react v0.462.0 - ISC 409 * 410 * This source code is licensed under the ISC license. 411 * See the LICENSE file in the root directory of this source tree. 412 */const Tt=D("Phone",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** 413 * @license lucide-react v0.462.0 - ISC 414 * 415 * This source code is licensed under the ISC license. 416 * See the LICENSE file in the root directory of this source tree. 417 */const mg=D("Plane",[["path",{d:"M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.
4171-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z",key:"1v9wt8"}]]);/** 418 * @license lucide-react v0.462.0 - ISC 419 * 420 * This source code is licensed under the ISC license. 421 * See the LICENSE file in the root directory of this source tree. 422 */const eT=D("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** 423 * @license lucide-react v0.462.0 - ISC 424 * 425 * This source code is licensed under the ISC license. 426 * See the LICENSE file in the root directory of this source tree. 427 */const tT=D("Radar",[["path",{d:"M19.07 4.93A10 10 0 0 0 6.99 3.34",key:"z3du51"}],["path",{d:"M4 6h.01",key:"oypzma"}],["path",{d:"M2.29 9.62A10 10 0 1 0 21.31 8.35",key:"qzzz0"}],["path",{d:"M16.24 7.76A6 6 0 1 0 8.23 16.67",key:"1yjesh"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M17.99 11.66A6 6 0 0 1 15.77 16.67",key:"1u2y91"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"m13.41 10.59 5.66-5.66",key:"mhq4k0"}]]);/** 428 * @license lucide-react v0.462.0 - ISC 429 * 430 * This source code is licensed under the ISC license. 431 * See the LICENSE file in the root directory of this source tree. 432 */const Et=D("Radio",[["path",{d:"M4.9 19.1C1 15.2 1 8.8 4.9 4.9",key:"1vaf9d"}],["path",{d:"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5",key:"u1ii0m"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5",key:"1j5fej"}],["path",{d:"M19.1 4.9C23 8.8 23 15.1 19.1 19",key:"10b0cb"}]]);/** 433 * @license lucide-react v0.462.0 - ISC 434 * 435 * This source code is licensed under the ISC license. 436 * See the LICENSE file in the root directory of this source tree. 437 */const rT=D("Receipt",[["path",{d:"M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z",key:"q3az6g"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 17.5v-11",key:"1jc1ny"}]]);/** 438 * @license lucide-react v0.462.0 - ISC 439 * 440 * This source code is licensed under the ISC license. 441 * See the LICENSE file in the root directory of this source tree. 442 */const nT=D("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** 443 * @license lucide-react v0.462.0 - ISC 444 * 445 * This source code is licensed under the ISC license. 446 * See the LICENSE file in the root directory of this source tree. 447 */const sT=D("Rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]);/** 448 * @license lucide-react v0.462.0 - ISC 449 * 450 * This source code is licensed under the ISC license. 451 * See the LICENSE file in the root directory of this source tree. 452 */const dk=D("Route",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]);/** 453 * @license lucide-react v0.462.0 - ISC 454 * 455 * This source code is licensed under the ISC license. 456 * See the LICENSE file in the root directory of this source tree. 457 */const iT=D("Rss",[["path",{d:"M4 11a9 9 0 0 1 9 9",key:"pv89mb"}],["path",{d:"M4 4a16 16 0 0 1 16 16",key:"k0647b"}],["circle",{cx:"5",cy:"19",r:"1",key:"bfqh0e"}]]);/** 458 * @license lucide-react v0.462.0 - ISC 459 * 460 * This source code is licensed under the ISC license. 461 * See the LICENSE file in the root directory of this source tree. 462 */const uk=D("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** 463 * @license lucide-react v0.462.0 - ISC 464 * 465 * This source code is licensed under the ISC license. 466 * See the LICENSE file in the root directory of this source tree. 467 */const hk=D("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/** 468 * @license lucide-react v0.462.0 - ISC 469 * 470 * This source code is licensed under the ISC license. 471 * See the LICENSE file in the root directory of this source tree. 472 */const Te=D("Server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);/** 473 * @license lucide-react v0.462.0 - ISC 474 * 475 * This source code is licensed under the ISC license. 476 * See the LICENSE file in the root directory of this source tree. 477 */const mk=D("Settings2",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);/** 478 * @license lucide-react v0.462.0 - ISC 479 * 480 * This source code is licensed under the ISC license. 481 * See the LICENSE file in the root directory of this source tree. 482 */const ya=D("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** 483 * @license lucide-react v0.462.0 - ISC 484 * 485 * This source code is licensed under the ISC license. 486 * See the LICENSE file in the root directory of this source tree. 487 */const pg=D("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",ke
487y:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** 488 * @license lucide-react v0.462.0 - ISC 489 * 490 * This source code is licensed under the ISC license. 491 * See the LICENSE file in the root directory of this source tree. 492 */const Ce=D("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/** 493 * @license lucide-react v0.462.0 - ISC 494 * 495 * This source code is licensed under the ISC license. 496 * See the LICENSE file in the root directory of this source tree. 497 */const bu=D("ShoppingBag",[["path",{d:"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z",key:"hou9p0"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M16 10a4 4 0 0 1-8 0",key:"1ltviw"}]]);/** 498 * @license lucide-react v0.462.0 - ISC 499 * 500 * This source code is licensed under the ISC license. 501 * See the LICENSE file in the root directory of this source tree. 502 */const aT=D("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);/** 503 * @license lucide-react v0.462.0 - ISC 504 * 505 * This source code is licensed under the ISC license. 506 * See the LICENSE file in the root directory of this source tree. 507 */const oT=D("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);/** 508 * @license lucide-react v0.462.0 - ISC 509 * 510 * This source code is licensed under the ISC license. 511 * See the LICENSE file in the root directory of this source tree. 512 */const ba=D("Store",[["path",{d:"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7",key:"ztvudi"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["path",{d:"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4",key:"2ebpfo"}],["path",{d:"M2 7h20",key:"1fcdvo"}],["path",{d:"M22 7v3a2 2 0 0 1-2 2a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12a2 2 0 0 1-2-2V7",key:"6c3vgh"}]]);/** 513 * @license lucide-react v0.462.0 - ISC 514 * 515 * This source code is licensed under the ISC license. 516 * See the LICENSE file in the root directory of this source tree. 517 */const lT=D("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/** 518 * @license lucide-react v0.462.0 - ISC 519 * 520 * This source code is licensed under the ISC license. 521 * See the LICENSE file in the root directory of this source tree. 522 */const pk=D("Target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);/** 523 * @license lucide-react v0.462.0 - ISC 524 * 525 * This source code is licensed under the ISC license. 526 * See the LICENSE file in the root directory of this source tree. 527 */const cT=D("TrendingDown",[["polyline",{points:"22 17 13.5 8.5 8.5 13.5 2 7",key:"1r2t7k"}],["polyline",{points:"16 17 22 17 22 11",key:"11uiuu"}]]);/** 528 * @license lucide-react v0.462.0 - ISC 529 * 530 * This source code is licensed under the ISC license. 531 * See the LICENSE file in the root directory of this source tree. 532 */const dT=D("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/** 533 * @license lucide-react v0.462.0 - ISC 534 * 535 * This source code is licensed under the ISC license. 536 * See the LICENSE file in the root directory of this source tree. 537 */const fk=D("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** 538 * @license lucide-react v0.462.0 - ISC 539 * 540 * This source code is licensed under the ISC license. 541 * See the LICENSE file in the root directory of this source tree. 542 */const il=D("Truck",[["path",{d:"M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2",key:"wrbu53"}],["path",{d:"M15 18H9",key:"1lyqi6"}],["path",{d:"M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14",key:"lysw3i"}],["circle",{cx:"17",cy:"18",r:"2",key:"332jqn"}],["circle",{cx:"7",cy:"18",r:"2",key:"19iecd"}]]);/** 543 * @license lucide-react v0.462.0 - ISC 544 * 545 * This source code is licensed under the ISC license. 546 * See the LICENSE file in the root directory of this source tree. 547 */const uT=D("UserPlus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);/** 548 * @license lucide-react v0.462.0 - ISC 549 * 550 * This source code is licensed under the ISC license. 551 * See the LICENSE file in the root directory of this source tree. 552 */const an=D("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);/** 553 * @license lucide-react v0.462.0 - ISC 554 * 555 * This source code is licensed under the ISC license. 556 * See the LICENSE file in the root directory of this source tree. 557 */const Pi=D("Video",[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]]);/** 558 * @license lucide-react v0.462.0 - ISC 559 * 560 * This source code is licensed under the ISC license. 561 * See the LICENSE file in the root directory of this source tree. 562 */const hT=D("Webhook",[["path",{d:"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2",key:"q3hayz"}],["path",{d:"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06",key:"1go1hn"}],["path",{d:"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8",key:"qlwsc0"}]]);/** 563 * @license lucide-react v0.462.0 - ISC 564 * 565 * This source code is licensed under the ISC license. 566 * See the LICENSE file in the root directory of this source tree. 567 */const Xv=D("Wifi",[["path",{d:"M12 20h.01",key:"zekei9"}
vendor: 6,334 bytes, lines 567-587
567],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);/** 568 * @license lucide-react v0.462.0 - ISC 569 * 570 * This source code is licensed under the ISC license. 571 * See the LICENSE file in the root directory of this source tree. 572 */const gk=D("Workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]]);/** 573 * @license lucide-react v0.462.0 - ISC 574 * 575 * This source code is licensed under the ISC license. 576 * See the LICENSE file in the root directory of this source tree. 577 */const fg=D("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);/** 578 * @license lucide-react v0.462.0 - ISC 579 * 580 * This source code is licensed under the ISC license. 581 * See the LICENSE file in the root directory of this source tree. 582 */const Dl=D("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** 583 * @license lucide-react v0.462.0 - ISC 584 * 585 * This source code is licensed under the ISC license. 586 * See the LICENSE file in the root directory of this source tree. 587 */const on=D("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),gg="-",mT=e=>{const t=fT(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:s}=e;return{getClassGroupId:o=>{const l=o.split(gg);return l[0]===""&&l.length!==1&&l.shift(),xk(l,t)||pT(o)},getConflictingClassGroupIds:(o,l)=>{const c=r[o]||[];return l&&s[o]?[...c,...s[o]]:c}}},xk=(e,t)=>{var o;if(e.length===0)return t.classGroupId;const r=e[0],s=t.nextPart.get(r),i=s?xk(e.slice(1),s):void 0;if(i)return i;if(t.validators.length===0)return;const a=e.join(gg);return(o=t.validators.find(({validator:l})=>l(a)))==null?void 0:o.classGroupId},Gv=/^\[(.+)\]$/,pT=e=>{if(Gv.test(e)){const t=Gv.exec(e)[1],r=t==null?void 0:t.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}},fT=e=>{const{theme:t,prefix:r}=e,s={nextPart:new Map,validators:[]};return xT(Object.entries(e.classGroups),r).forEach(([a,o])=>{pp(o,s,a,t)}),s},pp=(e,t,r,s)=>{e.forEach(i=>{if(typeof i=="string"){const a=i===""?t:Kv(t,i);a.classGroupId=r;return}if(typeof i=="function"){if(gT(i)){pp(i(s),t,r,s);return}t.validators.push({validator:i,classGroupId:r});return}Object.entries(i).forEach(([a,o])=>{pp(o,Kv(t,a),r,s)})})},Kv=(e,t)=>{let r=e;return t.split(gg).forEach(s=>{r.nextPart.has(s)||r.nextPart.set(s,{nextPart:new Map,validators:[]}),r=r.nextPart.get(s)}),r},gT=e=>e.isThemeGetter,xT=(e,t)=>t?e.map(([r,s])=>{const i=s.map(a=>typeof a=="string"?t+a:typeof a=="object"?Object.fromEntries(Object.entries(a).map(([o,l])=>[t+o,l])):a);return[r,i]}):e,vT=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=new Map,s=new Map;const i=(a,o)=>{r.set(a,o),t++,t>e&&(t=0,s=r,r=new Map)};return{get(a){let o=r.get(a);if(o!==void 0)return o;if((o=s.get(a))!==void 0)return i(a,o),o},set(a,o){r.has(a)?r.set(a,o):i(a,o)}}},vk="!",yT=e=>{const{separator:t,experimentalParseClassName:r}=e,s=t.length===1,i=t[0],a=t.length,o=l=>{const c=[];let d=0,u=0,h;for(let w=0;w<l.length;w++){let g=l[w];if(d===0){if(g===i&&(s||l.slice(w,w+a)===t)){c.push(l.slice(u,w)),u=w+a;continue}if(g==="/"){h=w;continue}}g==="["?d++:g==="]"&&d--}const p=c.length===0?l:l.substring(u),m=p.startsWith(vk),y=m?p.substring(1):p,b=h&&h>u?h-u:void 0;return{modifiers:c,hasImportantModifier:m,baseClassName:y,maybePostfixModifierPosition:b}};return r?l=>r({className:l,parseClassName:o}):o},bT=e=>{if(e.length<=1)return e;const t=[];let r=[];return e.forEach(s=>{s[0]==="["?(t.push(...r.sort(),s),r=[]):r.push(s)}),t.push(...r.sort()),t},wT=e=>({cache:vT(e.cacheSize),parseClassName:yT(e),...mT(e)}),jT=/\s+/,kT=(e,t)=>{const{parseClassName:r,getClassGroupId:s,getConflictingClassGroupIds:i}=t,a=[],o=e.trim().split(jT);let l="";for(let c=o.length-1;c>=0;c-=1){const d=o[c],{modifiers:u,hasImportantModifier:h,baseClassName:p,maybePostfixModifierPosition:m}=r(d);let y=!!m,b=s(y?p.substring(0,m):p);if(!b){if(!y){l=d+(l.length>0?" "+l:l);continue}if(b=s(p),!b){l=d+(l.length>0?" "+l:l);continue}y=!1}const w=bT(u).join(":"),g=h?w+vk:w,v=g+b;if(a.includes(v))continue;a.push(v);const x=i(b,y);for(let j=0;j<x.length;++j){const k=x[j];a.push(g+k)}l=d+(l.length>0?" "+l:l)}return l};function NT(){let e=0,t,r,s="";for(;e<arguments.length;)(t=arguments[e++])&&(r=yk(t))&&(s&&(s+=" "),s+=r);return s}const yk=e=>{if(typeof e=="string")return e;let t,r="";for(let s=0;s<e.length;s++)e[s]&&(t=yk(e[s]))&&(r&&(r+=" "),r+=t);return r};function ST(e,...t){let r,s,i,a=o;function o(c){const d=t.reduce((u,h)=>h(u),e());return r=wT(d),s=r.cache.get,i=r.cache.set,a=l,l(c)}function l(c){const d=s(c);if(d)return d;const u=kT(c,r);return i(c,u),u}return function(){return a(NT.apply(null,arguments))}}const Me=e=>{const t=r=>r[e]||[];return t.isThemeGetter=!0,t},bk=/^\[(?:([a-z-]+):)?(.+)\]$/i,CT=/^\d+\/\d+$/,ET=new Set(["px","full","screen"]),AT=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,PT=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,TT=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,_T=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,IT=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,gn=e=>wa(e)||ET.has(e)||CT.test(e),Jn=e=>Qa(e,"length",BT),wa=e=>!!e&&!Number.isNaN(Number(e)),Ih=e=>Qa(e,"number",wa),go=e=>!!e&&Number.isInteger(Number(e)),RT=e=>e.endsWith("%")&&wa(e.slice(0,-1)),oe=e=>bk.test(e),Qn=e=>AT.test(e),OT=new Set(["length","size","percentage"]),MT=e=>Qa(e,OT,wk),DT=e=>Qa(e,"position",wk),LT=new Set(["image","url"]),HT=e=>Qa(e,LT,UT),$T=e=>Qa(e,"",FT),xo=()=>!0,Qa=(e,t,r)=>{const s=bk.exec(e);return s?s[1]?typeof t=="string"?s[1]===t:t.has(s[1]):r(s[2]):!1},BT=e=>PT.test(e)&&!TT.test(e),wk=()=>!1,FT=e=>_T.test(e),UT=e=>IT.test(e),VT=()=>{const e=Me("colors"),t=Me("spacing"),r=Me("blur"),s=Me("brightness"),i=Me("borderColor"),a=Me("borderRadius"),o=Me("borderSpacing"),l=
vendor: 12,634 bytes, line 587
587Me("borderWidth"),c=Me("contrast"),d=Me("grayscale"),u=Me("hueRotate"),h=Me("invert"),p=Me("gap"),m=Me("gradientColorStops"),y=Me("gradientColorStopPositions"),b=Me("inset"),w=Me("margin"),g=Me("opacity"),v=Me("padding"),x=Me("saturate"),j=Me("scale"),k=Me("sepia"),N=Me("skew"),S=Me("space"),C=Me("translate"),E=()=>["auto","contain","none"],I=()=>["auto","hidden","clip","visible","scroll"],B=()=>["auto",oe,t],R=()=>[oe,t],O=()=>["",gn,Jn],T=()=>["auto",wa,oe],W=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],H=()=>["solid","dashed","dotted","double","none"],U=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],P=()=>["start","end","center","between","around","evenly","stretch"],_=()=>["","0",oe],F=()=>["auto","avoid","all","avoid-page","page","left","right","column"],Y=()=>[wa,oe];return{cacheSize:500,separator:":",theme:{colors:[xo],spacing:[gn,Jn],blur:["none","",Qn,oe],brightness:Y(),borderColor:[e],borderRadius:["none","","full",Qn,oe],borderSpacing:R(),borderWidth:O(),contrast:Y(),grayscale:_(),hueRotate:Y(),invert:_(),gap:R(),gradientColorStops:[e],gradientColorStopPositions:[RT,Jn],inset:B(),margin:B(),opacity:Y(),padding:R(),saturate:Y(),scale:Y(),sepia:_(),skew:Y(),space:R(),translate:R()},classGroups:{aspect:[{aspect:["auto","square","video",oe]}],container:["container"],columns:[{columns:[Qn]}],"break-after":[{"break-after":F()}],"break-before":[{"break-before":F()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...W(),oe]}],overflow:[{overflow:I()}],"overflow-x":[{"overflow-x":I()}],"overflow-y":[{"overflow-y":I()}],overscroll:[{overscroll:E()}],"overscroll-x":[{"overscroll-x":E()}],"overscroll-y":[{"overscroll-y":E()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[b]}],"inset-x":[{"inset-x":[b]}],"inset-y":[{"inset-y":[b]}],start:[{start:[b]}],end:[{end:[b]}],top:[{top:[b]}],right:[{right:[b]}],bottom:[{bottom:[b]}],left:[{left:[b]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",go,oe]}],basis:[{basis:B()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",oe]}],grow:[{grow:_()}],shrink:[{shrink:_()}],order:[{order:["first","last","none",go,oe]}],"grid-cols":[{"grid-cols":[xo]}],"col-start-end":[{col:["auto",{span:["full",go,oe]},oe]}],"col-start":[{"col-start":T()}],"col-end":[{"col-end":T()}],"grid-rows":[{"grid-rows":[xo]}],"row-start-end":[{row:["auto",{span:[go,oe]},oe]}],"row-start":[{"row-start":T()}],"row-end":[{"row-end":T()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",oe]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",oe]}],gap:[{gap:[p]}],"gap-x":[{"gap-x":[p]}],"gap-y":[{"gap-y":[p]}],"justify-content":[{justify:["normal",...P()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...P(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...P(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[v]}],px:[{px:[v]}],py:[{py:[v]}],ps:[{ps:[v]}],pe:[{pe:[v]}],pt:[{pt:[v]}],pr:[{pr:[v]}],pb:[{pb:[v]}],pl:[{pl:[v]}],m:[{m:[w]}],mx:[{mx:[w]}],my:[{my:[w]}],ms:[{ms:[w]}],me:[{me:[w]}],mt:[{mt:[w]}],mr:[{mr:[w]}],mb:[{mb:[w]}],ml:[{ml:[w]}],"space-x":[{"space-x":[S]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[S]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",oe,t]}],"min-w":[{"min-w":[oe,t,"min","max","fit"]}],"max-w":[{"max-w":[oe,t,"none","full","min","max","fit","prose",{screen:[Qn]},Qn]}],h:[{h:[oe,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[oe,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[oe,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[oe,t,"auto","min","max","fit"]}],"font-size":[{text:["base",Qn,Jn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Ih]}],"font-family":[{font:[xo]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",oe]}],"line-clamp":[{"line-clamp":["none",wa,Ih]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",gn,oe]}],"list-image":[{"list-image":["none",oe]}],"list-style-type":[{list:["none","disc","decimal",oe]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[g]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[g]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...H(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",gn,Jn]}],"underline-offset":[{"underline-offset":["auto",gn,oe]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",oe]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",oe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[g]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...W(),DT]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",MT]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},HT]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[y]}],"gradient-via-pos":[{via:[y]}],"gradient-to-pos":[{to:[y]}],"gradient-from":[{from:[m]}],"gradient-via":[{via:[m]}],"gradient-to":[{to:[m]}],rounded:[{rounded:[a]}],"rounded-s":[{"rounded-s":[a]}],"rounded-e":[{"rounded-e":[a]}],"rounded-t":[{"rounded-t":[a]}],"rounded-r":[{"rounded-r":[a]}],"rounded-b":[{"rounded-b":[a]}],"rounded-l":[{"rounded-l":[a]}],"rounded-ss":[{"rounded-ss":[a]}],"rounded-se":[{"rounded-se":[a]}],"rounded-ee":[{"rounded-ee":[a]}],"rounded-es":[{"rounded-es":[a]}],"rounded-tl":[{"rounded-tl":[a]}],"rounded-tr":[{"rounded-tr":[a]}],"rounded-br":[{"rounded-br":[a]}],"rounded-bl":[{"rounded-bl":[a]}],"border-w":[{border:[l]}],"border-w-x":[{"border-x":[l]}],"border-w-y":[{"border-y":[l]}],"border-w-s":[{"border-s":[l]}],"border-w-e":[{"border-e":[l]}],"border-w-t":[{"border-t":[l]}],"border-w-r":[{"border-r":[l]}],"border-w-b":[{"border-b":[l]}],"border-w-l":[{"border-l":[l]}],"border-opacity":[{"border-opacity":[g]}],"border-style":[{border:[...H(),"hidden"]}],"divide-x":[{"divide-x":[l]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[l]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[g]}],"divide-style":[{divide:H()}],"border-color":[{border:[i]}],"border-color-x":[{"border-x":[i]}],"border-color-y":[{"border-y":[i]}],"border-color-s":[{"border-s":[i]}],"border-color-e":[{"border-e":[i]}],"border-color-t":[{"border-t":[i]}],"border-color-r":[{"border-r":[i]}],"border-color-b":[{"border-b":[i]}],"border-color-l":[{"border-l":[i]}],"divide-color":[{divide:[i]}],"outline-style":[{outline:["",...H()]}],"outline-offset":[{"outline-offset":[gn,oe]}],"outline-w":[{outline:[gn,Jn]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:O()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[g]}],"ring-offset-w":[{"ring-offset":[gn,Jn]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Qn,$T]}],"shadow-color":[{shadow:[xo]}],opacity:[{opacity:[g]}],"mix-blend":[{"mix-blend":[...U(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":U()}],filter:[{filter:["","none"]}],blur:[{blur:[r]}],brightness:[{brightness:[s]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":["","none",Qn,oe]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[h]}],saturate:[{saturate:[x]}],sepia:[{sepia:[k]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[r]}],"backdrop-brightness":[{"backdrop-brightness":[s]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[h]}],"backdrop-opacity":[{"backdrop-opacity":[g]}],"backdrop-saturate":[{"backdrop-saturate":[x]}],"backdrop-sepia":[{"backdrop-sepia":[k]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[o]}],"border-spacing-x":[{"border-spacing-x":[o]}],"border-spacing-y":[{"border-spacing-y":[o]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",oe]}],duration:[{duration:Y()}],ease:[{ease:["linear","in","out","in-out",oe]}],delay:[{delay:Y()}],animate:[{animate:["none","spin","ping","pulse","bounce",oe]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[j]}],"scale-x":[{"scale-x":[j]}],"scale-y":[{"scale-y":[j]}],rotate:[{rotate:[go,oe]}],"translate-x":[{"translate-x":[C]}],"translate-y":[{"translate-y":[C]}],"skew-x":[{"skew-x":[N]}],"skew-y":[{"skew-y":[N]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",oe]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",oe]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}
vendor: 4,642 bytes, line 587
587],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",oe]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[gn,Jn,Ih]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},zT=ST(VT);function J(...e){return zT(Qj(e))}const WT=_P,jk=f.forwardRef(({className:e,...t},r)=>n.jsx(Zj,{ref:r,className:J("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));jk.displayName=Zj.displayName;const ZT=gu("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),kk=f.forwardRef(({className:e,variant:t,...r},s)=>n.jsx(qj,{ref:s,className:J(ZT({variant:t}),e),...r}));kk.displayName=qj.displayName;const qT=f.forwardRef(({className:e,...t},r)=>n.jsx(Kj,{ref:r,className:J("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",e),...t}));qT.displayName=Kj.displayName;const Nk=f.forwardRef(({className:e,...t},r)=>n.jsx(Yj,{ref:r,className:J("absolute right-2 top-2 rounded-md p-1 text-foreground
587/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:n.jsx(Dl,{className:"h-4 w-4"})}));Nk.displayName=Yj.displayName;const Sk=f.forwardRef(({className:e,...t},r)=>n.jsx(Xj,{ref:r,className:J("text-sm font-semibold",e),...t}));Sk.displayName=Xj.displayName;const Ck=f.forwardRef(({className:e,...t},r)=>n.jsx(Gj,{ref:r,className:J("text-sm opacity-90",e),...t}));Ck.displayName=Gj.displayName;function XT(){const{toasts:e}=_l();return n.jsxs(WT,{children:[e.map(function({id:t,title:r,description:s,action:i,...a}){return n.jsxs(kk,{...a,children:[n.jsxs("div",{className:"grid gap-1",children:[r&&n.jsx(Sk,{children:r}),s&&n.jsx(Ck,{children:s})]}),i,n.jsx(Nk,{})]},t)}),n.jsx(jk,{})]})}var Yv=["light","dark"],GT="(prefers-color-scheme: dark)",KT=f.createContext(void 0),YT={setTheme:e=>{},themes:[]},JT=()=>{var e;return(e=f.useContext(KT))!=null?e:YT};f.memo(({forcedTheme:e,storageKey:t,attribute:r,enableSystem:s,enableColorScheme:i,defaultTheme:a,value:o,attrs:l,nonce:c})=>{let d=a==="system",u=r==="class"?`var d=document.documentElement,c=d.classList;${`c.remove(${l.map(y=>`'${y}'`).join(",")})`};`:`var d=document.documentElement,n='${r}',s='setAttribute';`,h=i?Yv.includes(a)&&a?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${a}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",p=(y,b=!1,w=!0)=>{let g=o?o[y]:y,v=b?y+"|| ''":`'${g}'`,x="";return i&&w&&!b&&Yv.includes(y)&&(x+=`d.style.colorScheme = '${y}';`),r==="class"?b||g?x+=`c.add(${v})`:x+="null":g&&(x+=`d[s](n,${v})`),x},m=e?`!function(){${u}${p(e)}}()`:s?`!function(){try{${u}var e=localStorage.getItem('${t}');if('system'===e||(!e&&${d})){var t='${GT}',m=window.matchMedia(t);if(m.media!==t||m.matches){${p("dark")}}else{${p("light")}}}else if(e){${o?`var x=${JSON.stringify(o)};`:""}${p(o?"x[e]":"e",!0)}}${d?"":"else{"+p(a,!1,!1)+"}"}${h}}catch(e){}}()`:`!function(){try{${u}var e=localStorage.getItem('${t}');if(e){${o?`var x=${JSON.stringify(o)};`:""}${p(o?"x[e]":"e",!0)}}else{${p(a,!1,!1)};}${h}}catch(t){}}();`;return f.createElement("script",{nonce:c,dangerouslySetInnerHTML:{__html:m}})});var QT=e=>{switch(e){case"success":return r_;case"info":return s_;case"warning":return n_;case"error":return i_;default:return null}},e_=Array(12).fill(0),t_=({visible:e,className:t})=>L.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},L.createElement("div",{className:"sonner-spinner"},e_.map((r,s)=>L.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${s}`})))),r_=L.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},L.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),n_=L.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},L.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),s_=L.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},L.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),i_=L.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},L.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),a_=L.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},L.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),L.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),o_=()=>{let[e,t]=L.useState(document.hidden);return L.useEffect(()=>{let r=()=>{t(document.hidden)};return document.addEventListener("visibilitychange",r),()=>window.removeEventListener("visibilitychange",r)},[]),e},fp=1,l_=class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>
vendor: 1,050 bytes, line 587
587{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{var t;let{message:r,...s}=e,i=typeof(e==null?void 0:e.id)=="number"||((t=e.id)==null?void 0:t.length)>0?e.id:fp++,a=this.toasts.find(l=>l.id===i),o=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(i)&&this.dismissedToasts.delete(i),a?this.toasts=this.toasts.map(l=>l.id===i?(this.publish({...l,...e,id:i,title:r}),{...l,...e,id:i,dismissible:o,title:r}):l):this.addToast({title:r,...s,dismissible:o,id:i}),i},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(t=>{this.subscribers.forEach(r=>r({id:t.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:"error"}),this.success=(e,t)=>this.create({...t,type:"success",message:e}),this.info=(e,t)=>this.create({...t,type:"info",message:e}),this.warning=(e,t)=>this.create({...t,type:"warning",message:e}),this.loading=(e,t)=>
587this.create({...t,type:"loading",message:e}),this.promise=(e,t)=>{if(!t)return;let r;t.loading!==void 0&&(r=this.create({...t,promise:e,type:"loading",message:t.loading,description:typeof t.description!="function"?t.description:void 0}));let s=e instanceof Promise?e:e(),i=r!==void 0,a,o=s.then(async c=>{if(a=["resolve",c],L.isValidElement(c))i=!1,this.create({id:r,type:"default",message:c});else if(d_(c)&&!c.ok){i=!1;let d=typeof t.error=="function"?await t.error(`HTTP error! status: ${c.status}`):t.error,u=typeof t.description=="function"?await t.description(`HTTP error! status: ${c.status}`):t.description;this.create({id:r,type:"error",message:d,description:u})}else if(t.success!==void 0){i=!1;let d=typeof t.success=="function"?await t.success(c):t.success,u=typeof t.description=="function"?await t.description(c):t.description;this.create({id:r,type:"success",message:d,description:u})}}).catch(async c=>{if(a=["reject",c],t.error!==void 0){i=!1;let d=typeof t.error=="function"?await t.error(c):t.error,u=typeof t.description=="function"?await t.description(c):t.description;this.create({id:r,type:"error",message:d,description:u})}}).finally(()=>{var c;i&&(this.dismiss(r),r=void 0),(c=t.finally)==null||c.call(t)}),l=()=>new Promise((c,d)=>o.then(()=>a[0]==="reject"?d(a[1]):c(a[1])).catch(d));return typeof r!="string"&&typeof r!="number"?{unwrap:l}:Object.assign(r,{unwrap:l})},this.custom=(e,t)=>{let r=(t==null?void 0:t.id)||fp++;return this.create({jsx:e(r),id:r,...t}),r},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},Dt=new l_,c_=(e,t)=>{let r=(t==null?void 0:t.id)||fp++;return Dt.addToast({title:e,...t,id:r}),r},d_=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",u_=c_,h_=()=>Dt.toasts,m_=()=>Dt.getActiveToasts();Object.assign(u_,{success:Dt.success,info:Dt.info,warning:Dt.warning,error:Dt.error,custom:Dt.custom,message:Dt.message,promise:Dt.promise,dismiss:Dt.dismiss,loading:Dt.loading},{getHistory:h_,getToasts:m_});function p_(e,{insertAt:t}={}){if(typeof document>"u")return;let r=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css",t==="top"&&r.firstChild?r.insertBefore(s,r.firstChild):r.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}p_(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
587left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
587:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
587--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} 588`);function fc(e){return e.label!==void 0}var f_=3,g_="32px",x_="16px",Jv=4e3,v_=356,y_=14,b_=20,w_=200;function Sr(...e){return e.filter(Boolean).join(" ")}function j_(e){let[t,r]=e.split("-"),s=[];return t&&s.push(t),r&&s.push(r),s}var k_=e=>{var t,r,s,i,a,o,l,c,d,u,h;let{invert:p,toast:m,unstyled:y,interacting:b,setHeights:w,visibleToasts:g,heights:v,index:x,toasts:j,expanded:k,removeToast:N,defaultRichColors:S,closeButton:C,style:E,cancelButtonStyle:I,actionButtonStyle:B,className:R="",descriptionClassName:O="",duration:T,position:W,gap:H,loadingIcon:U,expandByDefault:P,classNames:_,icons:F,closeButtonAriaLabel:Y="Close toast",pauseWhenPageIsHidden:q}=e,[Z,ee]=L.useState(null),[le,Ee]=L.useState(null),[ce,ne]=L.useState(!1),[ve,$e]=L.useState(!1),[pe,de]=L.useState(!1),[be,nr]=L.useState(!1),[sr,Vr]=L.useState(!1),[qn,pn]=L.useState(0),[Xu,ql]=L.useState(0),zs=L.useRef(m.duration||T||Jv),Ws=L.useRef(null),Zs=L.useRef(null),iS=x===0,aS=x+1<=g,ir=m.type,Oi=m.dismissible!==!1,oS=m.className||"",lS=m.descriptionClassName||"",Xl=L.useMemo(()=>v.findIndex(ae=>ae.toastId===m.id)||0,[v,m.id]),cS=L.useMemo(()=>{var ae;return(ae=m.closeButton)!=null?ae:C},[m.closeButton,C]),sx=L.useMemo(()=>m.duration||T||Jv,[m.duration,T]),Gu=L.useRef(0),Mi=L.useRef(0),ix=L.useRef(0),Di=L.useRef(null),[dS,uS]=W.split("-"),ax=L.useMemo(()=>v.reduce((ae,Pe,Be)=>
588Be>=Xl?ae:ae+Pe.height,0),[v,Xl]),ox=o_(),hS=m.invert||p,Ku=ir==="loading";Mi.current=L.useMemo(()=>Xl*H+ax,[Xl,ax]),L.useEffect(()=>{zs.current=sx},[sx]),L.useEffect(()=>{ne(!0)},[]),L.useEffect(()=>{let ae=Zs.current;if(ae){let Pe=ae.getBoundingClientRect().height;return ql(Pe),w(Be=>[{toastId:m.id,height:Pe,position:m.position},...Be]),()=>w(Be=>Be.filter(wr=>wr.toastId!==m.id))}},[w,m.id]),L.useLayoutEffect(()=>{if(!ce)return;let ae=Zs.current,Pe=ae.style.height;ae.style.height="auto";let Be=ae.getBoundingClientRect().height;ae.style.height=Pe,ql(Be),w(wr=>wr.find(jr=>jr.toastId===m.id)?wr.map(jr=>jr.toastId===m.id?{...jr,height:Be}:jr):[{toastId:m.id,height:Be,position:m.position},...wr])},[ce,m.title,m.description,w,m.id]);let Xn=L.useCallback(()=>{$e(!0),pn(Mi.current),w(ae=>ae.filter(Pe=>Pe.toastId!==m.id)),setTimeout(()=>{N(m)},w_)},[m,N,w,Mi]);L.useEffect(()=>{if(m.promise&&ir==="loading"||m.duration===1/0||m.type==="loading")return;let ae;return k||b||q&&ox?(()=>{if(ix.current<Gu.current){let Pe=new Date().getTime()-Gu.current;zs.current=zs.current-Pe}ix.current=new Date().getTime()})():zs.current!==1/0&&(Gu.current=new Date().getTime(),ae=setTimeout(()=>{var Pe;(Pe=m.onAutoClose)==null||Pe.call(m,m),Xn()},zs.current)),()=>clearTimeout(ae)},[k,b,m,ir,q,ox,Xn]),L.useEffect(()=>{m.delete&&Xn()},[Xn,m.delete]);function mS(){var ae,Pe,Be;return F!=null&&F.loading?L.createElement("div",{className:Sr(_==null?void 0:_.loader,(ae=m==null?void 0:m.classNames)==null?void 0:ae.loader,"sonner-loader"),"data-visible":ir==="loading"},F.loading):U?L.createElement("div",{className:Sr(_==null?void 0:_.loader,(Pe=m==null?void 0:m.classNames)==null?void 0:Pe.loader,"sonner-loader"),"data-visible":ir==="loading"},U):L.createElement(t_,{className:Sr(_==null?void 0:_.loader,(Be=m==null?void 0:m.classNames)==null?void 0:Be.loader),visible:ir==="loading"})}return L.createElement("li",{tabIndex:0,ref:Zs,className:Sr(R,oS,_==null?void 0:_.toast,(t=m==null?void 0:m.classNames)==null?void 0:t.toast,_==null?void 0:_.default,_==null?void 0:_[ir],(r=m==null?void 0:m.classNames)==null?void 0:r[ir]),"data-sonner-toast":"","data-rich-colors":(s=m.richColors)!=null?s:S,"data-styled":!(m.jsx||m.unstyled||y),"data-mounted":ce,"data-promise":!!m.promise,"data-swiped":sr,"data-removed":ve,"data-visible":aS,"data-y-position":dS,"data-x-position":uS,"data-index":x,"data-front":iS,"data-swiping":pe,"data-dismissible":Oi,"data-type":ir,"data-invert":hS,"data-swipe-out":be,"data-swipe-direction":le,"data-expanded":!!(k||P&&ce),style:{"--index":x,"--toasts-before":x,"--z-index":j.length-x,"--offset":`${ve?qn:Mi.current}px`,"--initial-height":P?"auto":`${Xu}px`,...E,...m.style},onDragEnd:()=>{de(!1),ee(null),Di.current=null},onPointerDown:ae=>{Ku||!Oi||(Ws.current=new Date,pn(Mi.current),ae.target.setPointerCapture(ae.pointerId),ae.target.tagName!=="BUTTON"&&(de(!0),Di.current={x:ae.clientX,y:ae.clientY}))},onPointerUp:()=>{var ae,Pe,Be,wr;if(be||!Oi)return;Di.current=null;let jr=Number(((ae=Zs.current)==null?void 0:ae.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Gn=Number(((Pe=Zs.current)==null?void 0:Pe.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),qs=new Date().getTime()-((Be=Ws.current)==null?void 0:Be.getTime()),kr=Z==="x"?jr:Gn,Kn=Math.abs(kr)/qs;if(Math.abs(kr)>=b_||Kn>.11){pn(Mi.current),(wr=m.onDismiss)==null||wr.call(m,m),Ee(Z==="x"?jr>0?"right":"left":Gn>0?"down":"up"),Xn(),nr(!0),Vr(!1);return}de(!1),ee(null)},onPointerMove:ae=>{var Pe,Be,wr,jr;if(!Di.current||!Oi||((Pe=window.getSelection())==null?void 0:Pe.toString().length)>0)return;let Gn=ae.clientY-Di.current.y,qs=ae.clientX-Di.current.x,kr=(Be=e.swipeDirections)!=null?Be:j_(W);!Z&&(Math.abs(qs)>1||Math.abs(Gn)>1)&&ee(Math.abs(qs)>Math.abs(Gn)?"x":"y");let Kn={x:0,y:0};Z==="y"?(kr.includes("top")||kr.includes("bottom"))&&(kr.includes("top")&&Gn<0||kr.includes("bottom")&&Gn>0)&&(Kn.y=Gn):Z==="x"&&(kr.includes("left")||kr.includes("right"))&&(kr.includes("left")&&qs<0||kr.includes("right")&&qs>0)&&(Kn.x=qs),(Math.abs(Kn.x)>0||Math.abs(Kn.y)>0)&&Vr(!0),(wr=Zs.current)==null||wr.style.setProperty("--swipe-amount-x",`${Kn.x}px`),(jr=Zs.current)==null||jr.style.setProperty("--swipe-amount-y",`${Kn.y}px`)}},cS&&!m.jsx?L.createElement("button",{"aria-label":Y,"data-disabled":Ku,"data-close-button":!0,onClick:Ku||!Oi?()=>{}:()=>{var ae;Xn(),(ae=m.onDismiss)==null||ae.call(m,m)},className:Sr(_==null?void 0:_.closeButton,(i=m==null?void 0:m.classNames)==null?void 0:i.closeButton)},(a=F==null?void 0:F.close)!=null?a:a_):null,m.jsx||f.isValidElement(m.title)?m.jsx?m.jsx:typeof m.title=="function"?m.title():m.title:L.createElement(L.Fragment,null,ir||m.icon||m.promise?L.createElement("div",{"data-icon":"",className:Sr(_==null?void 0:_.icon,(o=m==null?void 0:m.classNames)==null?void 0:o.icon)},m.promise||m.type==="loading"&&!m.icon?m.icon||mS():null,m.type!=="loading"?m.
vendor: 6,553 bytes, line 588
588icon||(F==null?void 0:F[ir])||QT(ir):null):null,L.createElement("div",{"data-content":"",className:Sr(_==null?void 0:_.content,(l=m==null?void 0:m.classNames)==null?void 0:l.content)},L.createElement("div",{"data-title":"",className:Sr(_==null?void 0:_.title,(c=m==null?void 0:m.classNames)==null?void 0:c.title)},typeof m.title=="function"?m.title():m.title),m.description?L.createElement("div",{"data-description":"",className:Sr(O,lS,_==null?void 0:_.description,(d=m==null?void 0:m.classNames)==null?void 0:d.description)},typeof m.description=="function"?m.description():m.description):null),f.isValidElement(m.cancel)?m.cancel:m.cancel&&fc(m.cancel)?L.createElement("button",{"data-button":!0,"data-cancel":!0,style:m.cancelButtonStyle||I,onClick:ae=>{var Pe,Be;fc(m.cancel)&&Oi&&((Be=(Pe=m.cancel).onClick)==null||Be.call(Pe,ae),Xn())},className:Sr(_==null?void 0:_.cancelButton,(u=m==null?void 0:m.classNames)==null?void 0:u.cancelButton)},m.cancel.label):null,f.isValidElement(m.action)?m.action:m.action&&fc(m.action)?L.createElement("button",{"data-button":!0,"data-action":!0,style:m.actionButtonStyle||B,onClick:ae=>{var Pe,Be;fc(m.action)&&((Be=(Pe=m.action).onClick)==null||Be.call(Pe,ae),!ae.defaultPrevented&&Xn())},className:Sr(_==null?void 0:_.actionButton,(h=m==null?void 0:m.classNames)==null?void 0:h.actionButton)},m.action.label):null))};function Qv(){if(typeof window>"u"||typeof document>"u")return"ltr";let e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function N_(e,t){let r={};return[e,t].forEach((s,i)=>{let a=i===1,o=a?"--mobile-offset":"--offset",l=a?x_:g_;function c(d){["top","right","bottom","left"].forEach(u=>{r[`${o}-${u}`]=typeof d=="number"?`${d}px`:d})}typeof s=="number"||typeof s=="string"?c(s):typeof s=="object"?["top","right","bottom","left"].forEach(d=>{s[d]===void 0?r[`${o}-${d}`]=l:r[`${o}-${d}`]=typeof s[d]=="number"?`${s[d]}px`:s[d]}):c(l)}),r}var S_=f.forwardRef(function(e,t){let{invert:r,position:s="bottom-right",hotkey:i=["altKey","KeyT"],expand:a,closeButton:o,className:l,offset:c,mobileOffset:d,theme:u="light",richColors:h,duration:p,style:m,visibleToasts:y=f_,toastOptions:b,dir:w=Qv(),gap:g=y_,loadingIcon:v,icons:x,containerAriaLabel:j="Notifications",pauseWhenPageIsHidden:k}=e,[N,S]=L.useState([]),C=L.useMemo(()=>Array.from(new Set([s].concat(N.filter(q=>q.position).map(q=>q.position)))),[N,s]),[E,I]=L.useState([]),[B,R]=L.useState(!1),[O,T]=L.useState(!1),[W,H]=L.useState(u!=="system"?u:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),U=L.useRef(null),P=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),_=L.useRef(null),F=L.useRef(!1),Y=L.useCallback(q=>{S(Z=>{var ee;return(ee=Z.find(le=>le.id===q.id))!=null&&ee.delete||Dt.dismiss(q.id),Z.filter(({id:le})=>le!==q.id)})},[]);return L.useEffect(()=>Dt.subscribe(q=>{if(q.dismiss){S(Z=>Z.map(ee=>ee.id===q.id?{...ee,delete:!0}:ee));return}setTimeout(()=>{U2.flushSync(()=>{S(Z=>{let ee=Z.findIndex(le=>le.id===q.id);return ee!==-1?[...Z.slice(0,ee),{...Z[ee],...q},...Z.slice(ee+1)]:[q,...Z]})})})}),[]),L.useEffect(()=>{if(u!=="system"){H(u);return}if(u==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?H("dark"):H("light")),typeof window>"u")return;let q=window.matchMedia("(prefers-color-scheme: dark)");try{q.addEventListener("change",({matches:Z})=>{H(Z?"dark":"light")})}catch{q.addListener(({matches:ee})=>{try{H(ee?"dark":"light")}catch(le){console.error(le)}})}},[u]),L.useEffect(()=>{N.length<=1&&R(!1)},[N]),L.useEffect(()=>{let q=Z=>{var ee,le;i.every(Ee=>Z[Ee]||Z.code===Ee)&&(R(!0),(ee=U.current)==null||ee.focus()),Z.code==="Escape"&&(document.activeElement===U.current||(le=U.current)!=null&&le.contains(document.activeElement))&&R(!1)};return document.addEventListener("keydown",q),()=>document.removeEventListener("keydown",q)},[i]),L.useEffect(()=>{if(U.current)return()=>{_.current&&(_.current.focus({preventScroll:!0}),_.current=null,F.current=!1)}},[U.current]),L.createElement("section",{ref:t,"aria-label":`${j} ${P}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},C.map((q,Z)=>{var ee;let[le,Ee]=q.split("-");return N.length?L.createElement("ol",{key:q,dir:w==="auto"?Qv():w,tabIndex:-1,ref:U,className:l,"data-sonner-toaster":!0,"data-theme":W,"data-y-position":le,"data-lifted":B&&N.length>1&&!a,"data-x-position":Ee,style:{"--front-toast-height":`${((ee=E[0])==null?void 0:ee.height)||0}px`,"--width":`${v_}px`,"--gap":`${g}px`,...m,...N_(c,d)},onBlur:ce=>{F.current&&!ce.currentTarget.contains(ce.relatedTarget)&&(F.current=!1,_.current&&(_.current.focus({preventScroll:!0}),_.current=null))},onFocus:ce=>{ce.target instanceof HTMLElement&&ce.target.dataset.dismissible==="false"||F.current||(F.current=!0,_.current=ce.relatedTarget)},onMouseEnter:()=>R(!0),onMouseMove:()=>R(!0),onMouseLeave:()=>{O||R(!1)},onDragEnd:()=>R(!1),onPointerDown:ce=>{ce.target instanceof HTMLElement&&ce.target.dataset.dismissible==="false"||T(!0)},onPointerUp:()=>T(!1)},N.filter(ce=>!ce.position&&Z===0||ce.position===q).map((ce,ne)=>{var ve,$e;return L.createElement(k_,{key:ce.id,icons:x,index:ne,toast:ce,defaultRichColors:h,duration:(ve=b==null?void 0:b.duration)!=null?ve:p,className:b==null?void 0:b.className,descriptionClassName:b==null?void 0:b.descriptionClassName,invert:r,visibleToasts:y,closeButton:($e=b==null?void 0:b.closeButton)!=null?$e:o,interacting:O,position:q,style:b==null?void 0:b.style,unstyled:b==null?void 0:b.unstyled,classNames:b==null?void 0:b.classNames,cancelButtonStyle:b==null?void 0:b.cancelButtonStyle,actionButtonStyle:b==null?void 0:b.actionButtonStyle,removeToast:Y,toasts:N.filter(pe=>pe.position==ce.position),heights:E.filter(pe=>pe.position==ce.position),setHeights:I,expandByDefault:a,gap:g,loadingIcon:v,expanded:B,pauseWhenPageIsHidden:k,swipeDirections:e.swipeDirections})})):null}))});const C_=({...e})=>{const{theme:t="system"}=JT();return n.jsx(S_,{theme:t,className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e})};var E_=Object.defineProperty,A_=(e,t)=>
vendor: 7,356 bytes, line 588
588E_(e,"name",{value:t,configurable:!0}),P_=Ci[" useId ".trim().toString()]||(()=>{}),T_=0;function nn(e){const[t,r]=f.useState(P_());return Ue(()=>{e||r(s=>s??String(T_++))},[e]),e||(t?`radix-${t}`:"")}A_(nn,"useId");const __=["top","right","bottom","left"],_s=Math.min,In=Math.max,Rd=Math.round,gc=Math.floor,Rn=e=>({x:e,y:e}),I_={left:"right",right:"left",bottom:"top",top:"bottom"};function Ek(e,t,r){return In(e,_s(t,r))}function Fn(e,t){return typeof e=="function"?e(t):e}function Is(e){return e.split("-")[0]}function eo(e){return e.split("-")[1]}function xg(e){return e==="x"?"y":"x"}function vg(e){return e==="y"?"height":"width"}function en(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function yg(e){return xg(en(e))}function R_(e,t,r){r===void 0&&(r=!1);const s=eo(e),i=yg(e),a=vg(i);let o=i==="x"?s===(r?"end":"start")?"right":"left":s==="start"?"bottom":"top";return t.reference[a]>t.floating[a]&&(o=Od(o)),[o,Od(o)]}function O_(e){const t=Od(e);return[gp(e),t,gp(t)]}function gp(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const ey=["left","right"],ty=["right","left"],M_=["top","bottom"],D_=["bottom","top"];function L_(e,t,r){switch(e){case"top":case"bottom":return r?t?ty:ey:t?ey:ty;case"left":case"right":return t?M_:D_;default:return[]}}function H_(e,t,r,s){const i=eo(e);let a=L_(Is(e),r==="start",s);return i&&(a=a.map(o=>o+"-"+i),t&&(a=a.concat(a.map(gp)))),a}function Od(e){const t=Is(e);return I_[t]+e.slice(t.length)}function $_(e){var t,r,s,i;return{top:(t=e.top)!=null?t:0,right:(r=e.right)!=null?r:0,bottom:(s=e.bottom)!=null?s:0,left:(i=e.left)!=null?i:0}}function Ak(e){return typeof e!="number"?$_(e):{top:e,right:e,bottom:e,left:e}}function Md(e){const{x:t,y:r,width:s,height:i}=e;return{width:s,height:i,top:r,left:t,right:t+s,bottom:r+i,x:t,y:r}}function ry(e,t,r){let{reference:s,floating:i}=e;const a=en(t),o=yg(t),l=vg(o),c=Is(t),d=a==="y",u=s.x+s.width/2-i.width/2,h=s.y+s.height/2-i.height/2,p=s[l]/2-i[l]/2;let m;switch(c){case"top":m={x:u,y:s.y-i.height};break;case"bottom":m={x:u,y:s.y+s.height};break;case"right":m={x:s.x+s.width,y:h};break;case"left":m={x:s.x-i.width,y:h};break;default:m={x:s.x,y:s.y}}const y=eo(t);return y&&(m[o]+=p*(y==="end"?1:-1)*(r&&d?-1:1)),m}async function B_(e,t){var r;t===void 0&&(t={});const{x:s,y:i,platform:a,rects:o,elements:l,strategy:c}=e,{boundary:d="clippingAncestors",rootBoundary:u="viewport",elementContext:h="floating",altBoundary:p=!1,padding:m=0}=Fn(t,e),y=Ak(m),w=l[p?h==="floating"?"reference":"floating":h],g=Md(await a.getClippingRect({element:(r=await(a.isElement==null?void 0:a.isElement(w)))==null||r?w:w.contextElement||await(a.getDocumentElement==null?void 0:a.getDocumentElement(l.floating)),boundary:d,rootBoundary:u,strategy:c})),v=h==="floating"?{x:s,y:i,width:o.floating.width,height:o.floating.height}:o.reference,x=await(a.getOffsetParent==null?void 0:a.getOffsetParent(l.floating)),j=await(a.isElement==null?void 0:a.isElement(x))&&await(a.getScale==null?void 0:a.getScale(x))||{x:1,y:1},k=Md(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:v,offsetParent:x,strategy:c}):v);return{top:(g.top-k.top+y.top)/j.y,bottom:(k.bottom-g.bottom+y.bottom)/j.y,left:(g.left-k.left+y.left)/j.x,right:(k.right-g.right+y.right)/j.x}}const F_=50,U_=async(e,t,r)=>{const{placement:s="bottom",strategy:i="absolute",middleware:a=[],platform:o}=r,l=o.detectOverflow?o:{...o,detectOverflow:B_},c=await(o.isRTL==null?void 0:o.isRTL(t));let d=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:h}=ry(d,s,c),p=s,m=0;const y={};for(let b=0;b<a.length;b++){const w=a[b];if(!w)continue;const{name:g,fn:v}=w,{x,y:j,data:k,reset:N}=await v({x:u,y:h,initialPlacement:s,placement:p,strategy:i,middlewareData:y,rects:d,platform:l,elements:{reference:e,floating:t}});u=x??u,h=j??h,y[g]={...y[g],...k},N&&m<F_&&(m++,typeof N=="object"&&(N.placement&&(p=N.placement),N.rects&&(d=N.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):N.rects),{x:u,y:h}=ry(d,p,c)),b=-1)}return{x:u,y:h,placement:p,strategy:i,middlewareData:y}},V_=e=>({name:"arrow",options:e,async fn(t){const{x:r,y:s,placement:i,rects:a,platform:o,elements:l,middlewareData:c}=t,{element:d,padding:u=0}=Fn(e,t)||{};if(d==null)return{};const h=Ak(u),p={x:r,y:s},m=yg(i),y=vg(m),b=await o.getDimensions(d),w=m==="y",g=w?"top":"left",v=w?"bottom":"right",x=w?"clientHeight":"clientWidth",j=a.reference[y]+a.reference[m]-p[m]-a.floating[y],k=p[m]-a.reference[m],N=await(o.getOffsetParent==null?void 0:o.getOffsetParent(d));let S=N?N[x]:0;(!S||!await(o.isElement==null?void 0:o.isElement(N)))&&(S=l.floating[x]||a.floating[y]);const C=j/2-k/2,E=S/2-b[y]/2-1,I=_s(h[g],E),B=_s(h[v],E),R=S-b[y]-B,O=S/2-b[y]/2+C,T=Ek(I,O,R),W=!c.arrow&&eo(i)!=null&&O!==T&&a.reference[y]/2-(O<I?I:B)-b[y]/2<0,H=W?O<I?O-I:O-R:0;return{[m]:p[m]+H,data:{[m]:T,centerOffset:O-T-H,...W&&{alignmentOffset:H}},reset:W}}}),z_=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var r,s;const{placement:i,middlewareData:a,rects:o,initialPlacement:l,platform:c,elements:d}=t,{mainAxis:u=!0,crossAxis:h=!0,fallbackPlacements:p,fallbackStrategy:m="bestFit",fallbackAxisSideDirection:y="none",flipAlignment:b=!0,...w}=Fn(e,t);if((r=a.arrow)!=null&&r.alignmentOffset)return{};const g=Is(i),v=en(l),x=Is(l)===l,j=await(c.isRTL==null?void 0:c.isRTL(d.floating)),k=p||(x||!b?[Od(l)]:O_(l)),N=y!=="none";!p&&N&&k.push(...H_(l,b,y,j));const S=[l,...k],C=await c.detectOverflow(t,w),E=[];let I=((s=a.flip)==null?void 0:s.overflows)||[];if(u&&E.push(C[g]),h){const T=R_(i,o,j);E.push(C[T[0]],C[T[1]])}if(I=[...I,{placement:i,overflows:E}],!E.every(T=>T<=0)){var B,R;const T=(((B=a.flip)==null?void 0:B.index)||0)+1,W=S[T];if(W&&(!(h==="alignment"?v!==en(W):!1)||I.every(P=>en(P.placement)===v?P.overflows[0]>0:!0)))return{data:{index:T,overflows:I},reset:{placement:W}};let H=(R=I.filter(U=>U.overflows[0]<=0).sort((U,P)=>U.overflows[1]-P.overflows[1])[0])==null?void 0:R.placement;if(!H)switch(m){case"bestFit":{var O;const U=(O=I.filter(P=>{if(N){const _=en(P.placement);return _===v||_==="y"}return!0}).map(P=>[P.placement,P.overflows.filter(_=>_>0).reduce((_,F)=>_+F,0)]).sort((P,_)=>P[1]-_[1])[0])==null?void 0:O[0];U&&(H=U);break}case"initialPlacement":H=l;break}if(i!==H)return{reset:{placement:H}}}return{}}}};function ny(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function sy(e){return __.some(t=>e[t]>=0)}const W_=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:r,platform:s}=t,{strategy:i="referenceHidden",...a}=Fn(e,t);switch(i){case"referenceHidden":{const o=await s.detectOverflow(t,{...a,elementContext:"reference"}),l=ny(o,r.reference);return{data:{referenceHiddenOffsets:l,referenceHidden:sy(l)}}}case"escaped":{const o=await s.detectOverflow(t,{...a,altBoundary:!0}),l=ny(o,r.floating);return{data:{escapedOffsets:l,escaped:sy(l)}}}default:return{}}}}},Pk=new Set(["left","top"]);async function Z_(e,t){const{placement:r,platform:s,elements:i}=e,a=await(s.isRTL==null?void 0:s.isRTL(i.floating)),o=Is(r),l=eo(r),c=en(r)==="y",d=Pk.has(o)?-1:1,u=a&&c?-1:1,h=Fn(t,e);let{mainAxis:p,crossAxis:m,alignmentAxis:y}=typeof h=="number"?{mainAxis:h,crossAxis:0,alignmentAxis:null}
vendor: 4,514 bytes, line 588
588:{mainAxis:h.mainAxis||0,crossAxis:h.crossAxis||0,alignmentAxis:h.alignmentAxis};return l&&typeof y=="number"&&(m=l==="end"?y*-1:y),c?{x:m*u,y:p*d}:{x:p*d,y:m*u}}const q_=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var r,s;const{x:i,y:a,placement:o,middlewareData:l}=t,c=await Z_(t,e);return o===((r=l.offset)==null?void 0:r.placement)&&(s=l.arrow)!=null&&s.alignmentOffset?{}:{x:i+c.x,y:a+c.y,data:{...c,placement:o}}}}},X_=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:r,y:s,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:l=!1,limiter:c={fn:v=>{let{x,y:j}=v;return{x,y:j}}},...d}=Fn(e,t),u={x:r,y:s},h=await a.detectOverflow(t,d),p=en(i),m=xg(p);let y=u[m],b=u[p];const w=(v,x)=>Ek(x+h[v==="y"?"top":"left"],x,x-h[v==="y"?"bottom":"right"]);o&&(y=w(m,y)),l&&(b=w(p,b));const g=c.fn({...t,[m]:y,[p]:b});return{...g,data:{x:g.x-r,y:g.y-s,enabled:{[m]:o,[p]:l}}}}}},G_=function(e){return e===void 0&&(e={}),{options:e,fn(t){var r,s;const{x:i,y:a,placement:o,rects:l,middlewareData:c}=t,{offset:d=0,mainAxis:u=!0,crossAxis:h=!0}=Fn(e,t),p={x:i,y:a},m=en(o),y=xg(m);let b=p[y],w=p[m];const g=Fn(d,t),v=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:(r=g.mainAxis)!=null?r:0,crossAxis:(s=g.crossAxis)!=null?s:0};if(u){const k=y==="y"?"height":"width",N=l.reference[y]-l.floating[k]+v.mainAxis,S=l.reference[y]+l.reference[k]-v.mainAxis;b<N?b=N:b>S&&(b=S)}if(h){var x,j;const k=y==="y"?"width":"height",N=Pk.has(Is(o)),S=l.reference[m]-l.floating[k]+(N&&((x=c.offset)==null?void 0:x[m])||0)+(N?0:v.crossAxis),C=l.reference[m]+l.reference[k]+(N?0:((j=c.offset)==null?void 0:j[m])||0)-(N?v.crossAxis:0);w<S?w=S:w>C&&(w=C)}return{[y]:b,[m]:w}}}},K_=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:r,rects:s,platform:i,elements:a}=t,{apply:o=()=>{},...l}=Fn(e,t),c=await i.detectOverflow(t,l),d=Is(r),u=eo(r),h=en(r)==="y",{width:p,height:m}=s.floating;let y,b;d==="top"||d==="bottom"?(y=d,b=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?"start":"end")?"left":"right"):(b=d,y=u==="end"?"top":"bottom");const w=m-c.top-c.bottom,g=p-c.left-c.right,v=_s(m-c[y],w),x=_s(p-c[b],g),j=t.middlewareData.shift,k=!j;let N=v,S=x;j!=null&&j.enabled.x&&(S=g),j!=null&&j.enabled.y&&(N=w),k&&!u&&(h?S=p-2*In(c.left,c.right):N=m-2*In(c.top,c.bottom)),await o({...t,availableWidth:S,availableHeight:N});const C=await i.getDimensions(a.floating);return p!==C.width||m!==C.height?{reset:{rects:!0}}:{}}}};function wu(){return typeof window<"u"}function to(e){return Tk(e)?(e.nodeName||"").toLowerCase():"#document"}function zt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Zn(e){var t;return(t=(Tk(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Tk(e){return wu()?e instanceof Node||e instanceof zt(e).Node:!1}function ln(e){return wu()?e instanceof Element||e instanceof zt(e).Element:!1}function Fs(e){return wu()?e instanceof HTMLElement||e instanceof zt(e).HTMLElement:!1}function iy(e){return!wu()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof zt(e).ShadowRoot}function ju(e){const{overflow:t,overflowX:r,overflowY:s,display:i}=cn(e);return/auto|scroll|overlay|hidden|clip/.test(t+s+r)&&i!=="inline"&&i!=="contents"}function Y_(e){return/^(table|td|th)$/.test(to(e))}function ku(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const J_=/transform|translate|scale|rotate|perspective|filter/,Q_=/paint|layout|strict|content/,Gs=e=>!!e&&e!=="none";let Rh;function bg(e){const t=ln(e)?cn(e):e;return Gs(t.transform)||Gs(t.translate)||Gs(t.scale)||Gs(t.rotate)||Gs(t.perspective)||!wg()&&(Gs(t.backdropFilter)||Gs(t.filter))||J_.test(t.willChange||"")||Q_.test(t.contain||"")}function eI(e){let t=ki(e);for(;Fs(t)&&!al(t);){if(bg(t))return t;if(ku(t))return null;t=ki(t)}return null}function wg(){return Rh==null&&(Rh=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),Rh}function al(e){return/^(html|body|#document)$/.test(to(e))}function cn(e){return zt(e).getComputedStyle(e)}function Nu(e){return ln(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ki(e){if(to(e)==="html")return e;const t=e.assignedSlot||e.parentNode||iy(e)&&e.host||Zn(e);return iy(t)?t.host:t}function _k(e){const t=ki(e);return al(t)?(e.ownerDocument||e).body:Fs(t)&&ju(t)?t:_k(t)}function ol(e,t,r){var s;
vendor: 2,052 bytes, line 588
588t===void 0&&(t=[]),r===void 0&&(r=!0);const i=_k(e),a=i===((s=e.ownerDocument)==null?void 0:s.body),o=zt(i);if(a){const l=xp(o);return t.concat(o,o.visualViewport||[],ju(i)?i:[],l&&r?ol(l):[])}else return t.concat(i,ol(i,[],r))}function xp(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Ik(e){const t=cn(e);let r=parseFloat(t.width)||0,s=parseFloat(t.height)||0;const i=Fs(e),a=i?e.offsetWidth:r,o=i?e.offsetHeight:s,l=Rd(r)!==a||Rd(s)!==o;return l&&(r=a,s=o),{width:r,height:s,$:l}}function jg(e){return ln(e)?e:e.contextElement}function ja(e){const t=jg(e);if(!Fs(t))return Rn(1);const r=t.getBoundingClientRect(),{width:s,height:i,$:a}=Ik(t);let o=(a?Rd(r.width):r.width)/s,l=(a?Rd(r.height):r.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!l||!Number.isFinite(l))&&(l=1),{x:o,y:l}}const tI=Rn(0);function Rk(e){const t=zt(e);return!wg()||!t.visualViewport?tI:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function rI(e,t,r){return t===void 0&&(t=!1),!!r&&t&&r===zt(e)}function Ni(e,t,r,s){t===void 0&&(t=!1),r===void 0&&(r=!1);const i=e.getBoundingClientRect(),a=jg(e);let o=Rn(1);t&&(s?ln(s)&&(o=ja(s)):o=ja(e));const l=rI(a,r,s)?Rk(a):Rn(0);let c=(i.left+l.x)/o.x,d=(i.top+l.y)/o.y,u=i.width/o.x,h=i.height/o.y;if(a&&s){const p=zt(a),m=ln(s)?zt(s):s;let y=p,b=xp(y);for(;b&&m!==y;){const w=ja(b),g=b.getBoundingClientRect(),v=cn(b),x=g.left+(b.clientLeft+parseFloat(v.paddingLeft))*w.x,j=g.top+(b.clientTop+parseFloat(v.paddingTop))*w.y;c*=w.x,d*=w.y,u*=w.x,h*=w.y,c+=x,d+=j,y=zt(b),b=xp(y)}}return Md({width:u,height:h,x:c,y:d})}function Su(e,t){const r=Nu(e).scrollLeft;return t?t.left+r:Ni(Zn(e)).left+r}function Ok(e,t){const r=e.getBoundingClientRect(),s=r.left+t.scrollLeft-Su(e,r),i=r.top+t.scrollTop;return{x:s,y:i}}function nI(e){let{elements:t,rect:r,offsetParent:s,strategy:i}=e;const a=i==="fixed",o=Zn(s),l=t?ku(t.floating):!1;if(s===o||l&&a)return r;let c={scrollLeft:0,scrollTop:0},d=Rn(1);const u=Rn(0),h=Fs(s);if((h||!a)&&((to(s)!=="body"||ju(o))&&(c=Nu(s)),h)){const m=Ni(s);
588d=ja(s),u.x=m.x+s.clientLeft,u.y=m.y+s.clientTop}const p=o&&!h&&!a?Ok(o,c):Rn(0);return{width:r.width*d.x,height:r.height*d.y,x:r.x*d.x-c.scrollLeft*d.x+u.x+p.x,y:r.y*d.y-c.scrollTop*d.y+u.y+p.y}}function sI(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function iI(e){const t=Nu(e),r=e.ownerDocument.body,s=In(e.scrollWidth,e.clientWidth,r.scrollWidth,r.clientWidth),i=In(e.scrollHeight,e.clientHeight,r.scrollHeight,r.clientHeight);let a=-t.scrollLeft+Su(e);const o=-t.scrollTop;return cn(r).direction==="rtl"&&(a+=In(e.clientWidth,r.clientWidth)-s),{width:s,height:i,x:a,y:o}}const aI=25;function oI(e,t,r){r===void 0&&(r="viewport");const s=r==="layoutViewport",i=zt(e),a=Zn(e),o=i.visualViewport;let l=a.clientWidth,c=a.clientHeight,d=0,u=0;if(o){const p=!wg()||t==="fixed";s?p||(d=-o.offsetLeft,u=-o.offsetTop):(l=o.width,c=o.height,p&&(d=o.offsetLeft,u=o.offsetTop))}if(Su(a)<=0){const p=a.ownerDocument,m=p.body,y=getComputedStyle(m),b=p.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,w=Math.abs(a.clientWidth-m.clientWidth-b),g=getComputedStyle(a).scrollbarGutter==="stable both-edges"?w/2:w;g<=aI&&(l-=g)}return{width:l,height:c,x:d,y:u}}function lI(e,t){const r=Ni(e,!0,t==="fixed"),s=r.top+e.clientTop,i=r.left+e.clientLeft,a=ja(e),o=e.clientWidth*a.x,l=e.clientHeight*a.y,c=i*a.x,d=s*a.y;return{width:o,height:l,x:c,y:d}}function ay(e,t,r){let s;if(t==="viewport"||t==="layoutViewport")s=oI(e,r,t);else if(t==="document")s=iI(Zn(e));else if(ln(t))s=lI(t,r);else{const i=Rk(e);s={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height}}return Md(s)}function cI(e,t){const r=t.get(e);if(r)return r;let s=ol(e,[],!1).filter(l=>ln(l)&&to(l)!=="body"),i=null;const a=cn(e).position==="fixed";let o=a?ki(e):e;for(;ln(o)&&!al(o);){const l=cn(o),c=bg(o),d=i?i.position:a?"fixed":"";!c&&(d==="fixed"||d==="absolute"&&l.position==="static")?s=s.filter(h=>h!==o):i=l,o=ki(o)}return t.set(e,s),s}function dI(e){let{element:t,boundary:r,rootBoundary:s,strategy:i}=e;const o=[...r==="clippingAncestors"?ku(t)?[]:cI(t,this._c):[].concat(r),s],l=ay(t,o[0],i);let c=l.top,d=l.right,u=l.bottom,h=l.left;for(let p=1;p<o.length;p++){const m=ay(t,o[p],i);c=In(m.top,c),d=_s(m.right,d),u=_s(m.bottom,u),h=In(m.left,h)}return{width:d-h,height:u-c,x:h,y:c}}function uI(e){const{width:t,height:r}=Ik(e);return{width:t,height:r}}function hI(e,t,r){const s=Fs(t),i=Zn(t),a=r==="fixed",o=Ni(e,!0,a,t);let l={scrollLeft:0,scrollTop:0};const c=Rn(0);if((s||!a)&&((to(t)!=="body"||ju(i))&&(l=Nu(t)),s)){const p=Ni(t,!0,a,t);c.x=p.x+t.clientLeft,c.y=p.y+t.clientTop}!s&&i&&(c.x=Su(i));const d=i&&!s&&!a?Ok(i,l):Rn(0),u=o.left+l.scrollLeft-c.x-d.x,h=o.top+l.scrollTop-c.y-d.y;return{x:u,y:h,width:o.width,height:o.height}}function Oh(e){return cn(e).position==="static"}function oy(e,t){if(!Fs(e)||cn(e).position==="fixed")return null;if(t)return t(e);let r=e.offsetParent;return Zn(e)===r&&(r=r.ownerDocument.body),r}function Mk(e,t){const r=zt(e);if(ku(e))return r;if(!Fs(e)){let i=ki(e);for(;i&&!al(i);){if(ln(i)&&!Oh(i))return i;i=ki(i)}return r}let s=oy(e,t);for(;s&&Y_(s)&&Oh(s);)s=oy(s,t);return s&&al(s)&&Oh(s)&&!bg(s)?r:s||eI(e)||r}const mI=async function(e){const t=this.getOffsetParent||Mk,r=this.getDimensions,s=await r(e.floating);return{reference:hI(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function pI(e){return cn(e).direction==="rtl"}const fI={convertOffsetParentRelativeRectToViewportRelativeRect:nI,getDocumentElement:Zn,getClippingRect:dI,getOffsetParent:Mk,getElementRects:mI,getClientRects:sI,getDimensions:uI,getScale:ja,isElement:ln,isRTL:pI};function Dk(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function gI(e,t,r){let s=null,i;const a=Zn(e);function o(){var u;clearTimeout(i),(u=s)==null||u.disconnect(),s=null}function l(u,h){u===void 0&&(u=!1),h===void 0&&(h=1),o();const p=e.getBoundingClientRect(),{left:m,top:y,width:b,height:w}=p;if(u||t(),!b||!w)return;const g=gc(y),v=gc(a.clientWidth-(m+b)),x=gc(a.clientHeight-(y+w)),j=gc(m),N={rootMargin:-g+"px "+-v+"px "+-x+"px "+-j+"px",threshold:In(0,_s(1,h))||1};let S=!0;function C(E){const I=E[0].intersectionRatio;if(!Dk(p,e.getBoundingClientRect()))return l();if(I!==h){if(!S)return l();I?l(!1,I):i=setTimeout(()=>{l(!1,1e-7)},1e3)}S=!1}try{s=new IntersectionObserver(C,{...N,root:a.ownerDocument})}catch{s=new IntersectionObserver(C,N)}s.observe(e)}const c=zt(e),d=()=>l(r);return c.addEventListener("resize",d),l(!0),()=>{c.removeEventListener("resize",d),o()}}function xI(e,t,r,s){s===void 0&&(s={});const{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:c=!1}=s,d=jg(e),u=i||a?[...d?ol(d):[],...t?ol(t):[]]:[];u.forEach(g=>{i&&g.addEventListener("scroll",r),a&&g.addEventListener("resize",r)});const h=d&&l?gI(d,r,a):null;let p=-1,m=null;o&&(m=new ResizeObserver(g=>{let[v]=g;v&&v.target===d&&m&&t&&(m.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var x;(x=m)==null||x.observe(t)})),r()}),d&&!c&&m.observe(d),t&&m.observe(t));let y,b=c?Ni(e):null;c&&w();function w(){const g=Ni(e);b&&!Dk(b,g)&&r(),b=g,y=requestAnimationFrame(w)}return r(),()=>{var g;u.forEach(v=>{i&&v.removeEventListener("scroll",r),a&&v.removeEventListener("resize",r)}),h==null||h(),(g=m)==null||g.disconnect(),m=null,c&&cancelAnimationFrame(y)}}const vI=q_,yI=X_,bI=z_,wI=K_,jI=W_,ly=V_,kI=G_,NI=(e,t,r)=>{const s=new Map,i=r??{},a={...fI,...i.platform,_c:s};return U_(e,t,{...i,platform:a})};var SI=typeof document<"u",CI=function(){},Jc=SI?f.useLayoutEffect:CI;function Dd(e,t){if(e===t)return!0;
vendor: 7,816 bytes, line 588
588if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let r,s,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(r=e.length,r!==t.length)return!1;for(s=r;s--!==0;)if(!Dd(e[s],t[s]))return!1;return!0}if(i=Object.keys(e),r=i.length,r!==Object.keys(t).length)return!1;for(s=r;s--!==0;)if(!{}.hasOwnProperty.call(t,i[s]))return!1;for(s=r;s--!==0;){const a=i[s];if(!(a==="_owner"&&e.$$typeof)&&!Dd(e[a],t[a]))return!1}return!0}return e!==e&&t!==t}function Lk(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function cy(e,t){const r=Lk(e);return Math.round(t*r)/r}function Mh(e){const t=f.useRef(e);return Jc(()=>{t.current=e}),t}function EI(e){e===void 0&&(e={});const{placement:t="bottom",strategy:r="absolute",middleware:s=[],platform:i,elements:{reference:a,floating:o}={},transform:l=!0,whileElementsMounted:c,open:d}=e,[u,h]=f.useState({x:0,y:0,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[p,m]=f.useState(s);Dd(p,s)||m(s);const[y,b]=f.useState(null),[w,g]=f.useState(null),v=f.useCallback(P=>{P!==N.current&&(N.current=P,b(P))},[]),x=f.useCallback(P=>{P!==S.current&&(S.current=P,g(P))},[]),j=a||y,k=o||w,N=f.useRef(null),S=f.useRef(null),C=f.useRef(u),E=c!=null,I=Mh(c),B=Mh(i),R=Mh(d),O=f.useCallback(()=>{if(!N.current||!S.current)return;const P={placement:t,strategy:r,middleware:p};B.current&&(P.platform=B.current),NI(N.current,S.current,P).then(_=>{const F={..._,isPositioned:R.current!==!1};T.current&&!Dd(C.current,F)&&(C.current=F,Hs.flushSync(()=>{h(F)}))})},[p,t,r,B,R]);Jc(()=>{d===!1&&C.current.isPositioned&&(C.current.isPositioned=!1,h(P=>({...P,isPositioned:!1})))},[d]);const T=f.useRef(!1);Jc(()=>(T.current=!0,()=>{T.current=!1}),[]),Jc(()=>{if(j&&(N.current=j),k&&(S.current=k),j&&k){if(I.current)return I.current(j,k,O);O()}},[j,k,O,I,E]);const W=f.useMemo(()=>({reference:N,floating:S,setReference:v,setFloating:x}),[v,x]),H=f.useMemo(()=>({reference:j,floating:k}),[j,k]),U=f.useMemo(()=>{const P={position:r,left:0,top:0};if(!H.floating)return P;const _=cy(H.floating,u.x),F=cy(H.floating,u.y);return l?{...P,transform:"translate("+_+"px, "+F+"px)",...Lk(H.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:_,top:F}},[r,l,H.floating,u.x,u.y]);return f.useMemo(()=>({...u,update:O,refs:W,elements:H,floatingStyles:U}),[u,O,W,H,U])}const AI=e=>{function t(r){return{}.hasOwnProperty.call(r,"current")}return{name:"arrow",options:e,fn(r){const{element:s,padding:i}=typeof e=="function"?e(r):e;return s&&t(s)?s.current!=null?ly({element:s.current,padding:i}).fn(r):{}:s?ly({element:s,padding:i}).fn(r):{}}}},PI=(e,t)=>{const r=vI(e);return{name:r.name,fn:r.fn,options:[e,t]}},TI=(e,t)=>{const r=yI(e);return{name:r.name,fn:r.fn,options:[e,t]}},_I=(e,t)=>({fn:kI(e).fn,options:[e,t]}),II=(e,t)=>{const r=bI(e);return{name:r.name,fn:r.fn,options:[e,t]}},RI=(e,t)=>{const r=wI(e);return{name:r.name,fn:r.fn,options:[e,t]}},OI=(e,t)=>{const r=jI(e);return{name:r.name,fn:r.fn,options:[e,t]}},MI=(e,t)=>{const r=AI(e);return{name:r.name,fn:r.fn,options:[e,t]}};var DI=Object.defineProperty,LI=(e,t)=>DI(e,"name",{value:t,configurable:!0});function Cu(e){const[t,r]=f.useState(void 0);return Ue(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});const s=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const a=i[0];let o,l;if("borderBoxSize"in a){const c=a.borderBoxSize,d=Array.isArray(c)?c[0]:c;o=d.inlineSize,l=d.blockSize}else o=e.offsetWidth,l=e.offsetHeight;r({width:o,height:l})});return s.observe(e,{box:"border-box"}),()=>s.unobserve(e)}else r(void 0)},[e]),t}LI(Cu,"useSize");var HI=Object.defineProperty,Ss=(e,t)=>HI(e,"name",{value:t,configurable:!0}),Hk="Popper",[$k,Eu]=Wt(Hk),[$I,Bk]=$k(Hk),BI=Ss(e=>{const{__scopePopper:t,children:r}=e,[s,i]=f.useState(null),[a,o]=f.useState(void 0);return n.jsx($I,{scope:t,anchor:s,onAnchorChange:i,placementState:a,setPlacementState:o,children:r})},"Popper"),FI="PopperAnchor",UI=f.forwardRef(Ss(function(t,r){const{__scopePopper:s,virtualRef:i,...a}=t,o=Bk(FI,s),l=f.useRef(null),c=o.onAnchorChange,d=f.useCallback(b=>{l.current=b,b&&c(b)},[c]),u=ye(r,d),h=f.useRef(null);f.useEffect(()=>{if(!i)return;const b=h.current;h.current=i.current,b!==h.current&&c(h.current)});const p=o.placementState&&Au(o.placementState),m=p==null?void 0:p[0],y=p==null?void 0:p[1];return i?null:n.jsx(se.div,{"data-radix-popper-side":m,"data-radix-popper-align":y,...a,ref:u})},"PopperAnchor")),Fk="PopperContent",[VI,h$]=$k(Fk),zI=f.forwardRef(Ss(function(t,r){var ve,$e,pe,de,be,nr,sr;const{__scopePopper:s,side:i="bottom",sideOffset:a=0,align:o="center",alignOffset:l=0,arrowPadding:c=0,avoidCollisions:d=!0,collisionBoundary:u=[],collisionPadding:h=0,sticky:p="partial",hideWhenDetached:m=!1,updatePositionStrategy:y="optimized",onPlaced:b,...w}=t,g=Bk(Fk,s),[v,x]=f.useState(null),j=ye(r,x),[k,N]=f.useState(null),S=Cu(k),C=(S==null?void 0:S.width)??0,E=(S==null?void 0:S.height)??0,I=i+(o!=="center"?"-"+o:""),B=typeof h=="number"?h:{top:0,right:0,bottom:0,left:0,...h},R=Array.isArray(u)?u:[u],O=R.length>0,T={padding:B,boundary:R.filter(Uk),altBoundary:O},{refs:W,floatingStyles:H,placement:U,isPositioned:P,middlewareData:_}=EI({strategy:"fixed",placement:I,whileElementsMounted:Ss((...Vr)=>xI(...Vr,{animationFrame:y==="always"}),"whileElementsMounted"),elements:{reference:g.anchor},middleware:[PI({mainAxis:a+E,alignmentAxis:l}),d&&TI({mainAxis:!0,crossAxis:!1,limiter:p==="partial"?_I():void 0,...T}),d&&II({...T}),RI({...T,apply:Ss(({elements:Vr,rects:qn,availableWidth:pn,availableHeight:Xu})=>{const{width:ql,height:zs}=qn.reference,Ws=Vr.floating.style;Ws.setProperty("--radix-popper-available-width",`${pn}px`),Ws.setProperty("--radix-popper-available-height",`${Xu}px`),Ws.setProperty("--radix-popper-anchor-width",`${ql}px`),Ws.setProperty("--radix-popper-anchor-height",`${zs}px`)},"apply")}),k&&MI({element:k,padding:c}),WI({arrowWidth:C,arrowHeight:E}),m&&OI({strategy:"referenceHidden",...T,boundary:O?T.boundary:void 0})]}),F=g.setPlacementState;Ue(()=>(F(U),()=>{F(void 0)}),[U,F]);const[Y,q]=Au(U),Z=_t(b);Ue(()=>{P&&(Z==null||Z())},[P,Z]);const ee=(ve=_.arrow)==null?void 0:ve.x,le=($e=_.arrow)==null?void 0:$e.y,Ee=((pe=_.arrow)==null?void 0:pe.centerOffset)!==0,[ce,ne]=f.useState();return Ue(()=>{v&&ne(window.getComputedStyle(v).zIndex)},[v]),n.jsx("div",{ref:W.setFloating,"data-radix-popper-content-wrapper":"",style:{...H,transform:P?H.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ce,"--radix-popper-transform-origin":[(de=_.transformOrigin)==null?void 0:de.x,(be=_.transformOrigin)==null?void 0:be.y].join(" "),...((nr=_.hide)==null?void 0:nr.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:n.jsx(VI,{scope:s,placedSide:Y,placedAlign:q,onArrowChange:N,arrowX:ee,arrowY:le,shouldHideArrow:Ee,children:n.jsx(se.div,{"data-side":Y,"data-align":q,...w,ref:j,style:{...w.style,animation:P?(sr=w.style)==null?void 0:sr.animation:"none"}})})})},"PopperContent"));function Uk(e){return e!==null}Ss(Uk,"isNotNull");var WI=Ss(e=>({name:"transformOrigin",options:e,fn(t){var w,g,v;const{placement:r,rects:s,middlewareData:i}=t,o=((w=i.arrow)==null?void 0:w.centerOffset)!==0,l=o?0:e.arrowWidth,c=o?0:e.arrowHeight,[d,u]=Au(r),h={start:"0%",center:"50%",end:"100%"}[u],p=(((g=i.arrow)==null?void 0:g.x)??0)+l/2,m=(((v=i.arrow)==null?void 0:v.y)??0)+c/2;let y="",b="";return d==="bottom"?(y=o?h:`${p}px`,b=`${-c}px`):d==="top"?(y=o?h:`${p}px`,b=`${s.floating.height+c}px`):d==="right"?(y=`${-c}px`,b=o?h:`${m}px`):d==="left"&&(y=`${s.floating.width+c}px`,b=o?h:`${m}px`),{data:{x:y,y:b}}}}),"transformOrigin");function Au(e){const[t,r="center"]=e.split("-");return[t,r]}Ss(Au,"getSideAndAlignFromPlacement");var ZI=BI,qI=UI,Vk=zI,XI=Object.defineProperty,Bt=(e,t)=>
588XI(e,"name",{value:t,configurable:!0}),[kg,m$]=Wt("Tooltip",[Eu]),GI=Eu(),KI="TooltipProvider",YI=700,dy="tooltip.open",[JI,QI]=kg(KI),eR=Bt(e=>{const{__scopeTooltip:t,delayDuration:r=YI,skipDelayDuration:s=300,disableHoverableContent:i=!1,children:a}=e,o=f.useRef(!0),l=f.useRef(!1),c=f.useRef(0);return f.useEffect(()=>{const d=c.current;return()=>window.clearTimeout(d)},[]),n.jsx(JI,{scope:t,isOpenDelayedRef:o,delayDuration:r,onOpen:f.useCallback(()=>{s<=0||(window.clearTimeout(c.current),o.current=!1)},[s]),onClose:f.useCallback(()=>{s<=0||(window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,s))},[s]),isPointerInTransitRef:l,onPointerInTransitChange:f.useCallback(d=>{l.current=d},[]),disableHoverableContent:i,children:a})},"TooltipProvider"),tR="Tooltip",[p$,Ng]=kg(tR),rR="TooltipPortal",[f$,nR]=kg(rR,{forceMount:void 0}),ll="TooltipContent",sR=f.forwardRef(Bt(function(t,r){const s=nR(ll,t.__scopeTooltip),{forceMount:i=s.forceMount,side:a="top",...o}=t,l=Ng(ll,t.__scopeTooltip);return n.jsx(Wn,{present:i||l.open,children:l.disableHoverableContent?n.jsx(zk,{side:a,...o,ref:r}):n.jsx(iR,{side:a,...o,ref:r})})},"TooltipContent")),iR=f.forwardRef(Bt(function(t,r){const s=Ng(ll,t.__scopeTooltip),i=QI(ll,t.__scopeTooltip),a=f.useRef(null),o=ye(r,a),[l,c]=f.useState(null),{trigger:d,onClose:u}=s,h=a.current,{onPointerInTransitChange:p}=i,m=f.useCallback(()=>{c(null),p(!1)},[p]),y=f.useCallback((b,w)=>{const g=b.currentTarget,v={x:b.clientX,y:b.clientY},x=Wk(v,g.getBoundingClientRect()),j=Zk(v,x),k=qk(w.getBoundingClientRect()),N=Gk([...j,...k]);c(N),p(!0)},[p]);return f.useEffect(()=>()=>m(),[m]),f.useEffect(()=>{if(d&&h){const b=Bt(g=>y(g,h),"handleTriggerLeave"),w=Bt(g=>y(g,d),"handleContentLeave");return d.addEventListener("pointerleave",b),h.addEventListener("pointerleave",w),()=>{d.removeEventListener("pointerleave",b),h.removeEventListener("pointerleave",w)}}},[d,h,y,m]),f.useEffect(()=>{if(l){const b=Bt(w=>{const g=w.target,v={x:w.clientX,y:w.clientY},x=(d==null?void 0:d.contains(g))||(h==null?void 0:h.contains(g)),j=!Xk(v,l);x?m():j&&(m(),u())},"handleTrackPointerGrace");return document.addEventListener("pointermove",b),()=>document.removeEventListener("pointermove",b)}},[d,h,l,u,m]),n.jsx(zk,{...t,ref:o})},"TooltipContentHoverable")),aR=vj("TooltipContent"),zk=f.forwardRef(Bt(function(t,r){const{__scopeTooltip:s,children:i,"aria-label":a,id:o,onEscapeKeyDown:l,onPointerDownOutside:c,...d}=t,u=Ng(ll,s),h=GI(s),{onClose:p}=u;f.useEffect(()=>(document.addEventListener(dy,p),()=>document.removeEventListener(dy,p)),[p]),f.useEffect(()=>{if(u.trigger){const y=Bt(b=>{b.target instanceof Node&&b.target.contains(u.trigger)&&p()},"handleScroll");return window.addEventListener("scroll",y,{capture:!0}),()=>window.removeEventListener("scroll",y,{capture:!0})}},[u.trigger,p]);const{setContentId:m}=u;return Ue(()=>(m(o),()=>{m(void 0)}),[o,m]),n.jsx(mu,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:y=>y.preventDefault(),onDismiss:p,children:n.jsxs(Vk,{"data-state":u.stateAttribute,role:a?void 0:"tooltip",id:a?void 0:u.contentId,...h,...d,ref:r,style:{...d.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[n.jsx(aR,{children:i}),a?n.jsx(lP,{id:u.contentId,role:"tooltip",children:a}):null]})})},"TooltipContentImpl"));function Wk(e,t){const r=Math.abs(t.top-e.y),s=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(r,s,i,a)){case a:return"left";case i:return"right";case r:return"top";case s:return"bottom";default:throw new Error("unreachable")}}Bt(Wk,"getExitSideFromRect");function Zk(e,t,r=5){const s=[];
588switch(t){case"top":s.push({x:e.x-r,y:e.y+r},{x:e.x+r,y:e.y+r});break;case"bottom":s.push({x:e.x-r,y:e.y-r},{x:e.x+r,y:e.y-r});break;case"left":s.push({x:e.x+r,y:e.y-r},{x:e.x+r,y:e.y+r});break;case"right":s.push({x:e.x-r,y:e.y-r},{x:e.x-r,y:e.y+r});break}return s}Bt(Zk,"getPaddedExitPoints");function qk(e){const{top:t,right:r,bottom:s,left:i}=e;return[{x:i,y:t},{x:r,y:t},{x:r,y:s},{x:i,y:s}]}Bt(qk,"getPointsFromRect");function Xk(e,t){const{x:r,y:s}=e;let i=!1;for(let a=0,o=t.length-1;a<t.length;o=a++){const l=t[a],c=t[o],d=l.x,u=l.y,h=c.x,p=c.y;u>s!=p>s&&r<(h-d)*(s-u)/(p-u)+d&&(i=!i)}return i}Bt(Xk,"isPointInPolygon");function Gk(e){const t=e.slice();return t.sort((r,s)=>r.x<s.x?-1:r.x>s.x?1:r.y<s.y?-1:r.y>s.y?1:0),Kk(t)}Bt(Gk,"getHull");function Kk(e){if(e.length<=1)return e.slice();const t=[];for(let s=0;s<e.length;s++){const i=e[s];for(;t.length>=2;){const a=t[t.length-1],o=t[t.length-2];if((a.x-o.x)*(i.y-o.y)>=(a.y-o.y)*(i.x-o.x))t.pop();else break}t.push(i)}t.pop();const r=[];for(let s=e.length-1;s>=0;s--){const i=e[s];for(;r.length>=2;){const a=r[r.length-1],o=r[r.length-2];if((a.x-o.x)*(i.y-o.y)>=(a.y-o.y)*(i.x-o.x))r.pop();else break}r.push(i)}return r.pop(),t.length===1&&r.length===1&&t[0].x===r[0].x&&t[0].y===r[0].y?t:t.concat(r)}Bt(Kk,"getHullPresorted");var oR=eR,Yk=sR;const lR=oR,cR=f.forwardRef(({className:e,sideOffset:t=4,...r},s)=>n.jsx(Yk,{ref:s,sideOffset:t,className:J("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...r}));cR.displayName=Yk.displayName;var Pu=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},oi,os,Ca,Cb,dR=(Cb=class extends Pu{constructor(){super();ue(this,oi);ue(this,os);ue(this,Ca);re(this,Ca,t=>{if(typeof window<"u"&&window.addEventListener){const r=()=>t();return window.addEventListener("visibilitychange",r,!1),()=>{window.removeEventListener("visibilitychange",r)}}})}onSubscribe(){A(this,os)||this.setEventListener(A(this,Ca))}onUnsubscribe(){var t;this.hasListeners()||((t=A(this,os))==null||t.call(this),re(this,os,void 0))}setEventListener(t){var r;re(this,Ca,t),(r=A(this,os))==null||r.call(this),re(this,os,t(s=>{typeof s=="boolean"?this.setFocused(s):this.onFocus()}))}setFocused(t){A(this,oi)!==t&&(re(this,oi,t),this.onFocus())}onFocus(){const t=this.isFocused();this.listeners.forEach(r=>{r(t)})}isFocused(){var t;return typeof A(this,oi)=="boolean"?A(this,oi):((t=globalThis.document)==null?void 0:t.visibilityState)!=="hidden"}},oi=new WeakMap,os=new WeakMap,Ca=new WeakMap,Cb),Jk=new dR,uR={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},ls,qp,Eb,hR=(Eb=class{constructor(){ue(this,ls,uR);ue(this,qp,!1)}setTimeoutProvider(e){re(this,ls,e)}setTimeout(e,t){return A(this,ls).setTimeout(e,t)}clearTimeout(e){A(this,ls).clearTimeout(e)}setInterval(e,t){return A(this,ls).setInterval(e,t)}clearInterval(e){A(this,ls).clearInterval(e)}},ls=new WeakMap,qp=new WeakMap,Eb),vp=new hR;function mR(e){setTimeout(e,0)}var pR=typeof window>"u"||"Deno"in globalThis;function Tr(){}function fR(e,t){return typeof e=="function"?e(t):e}function gR(e){return typeof e=="number"&&e>=0&&e!==1/0}function xR(e,t){return Math.max(e+(t||0)-Date.now(),0)}function yp(e,t){return typeof e=="function"?e(t):e}function vR(e,t){return typeof e=="function"?e(t):e}function uy(e,t){const{type:r="all",exact:s,fetchStatus:i,predicate:a,queryKey:o,stale:l}=e;if(o){if(s){if(t.queryHash!==Sg(o,t.options))return!1}else if(!za(t.queryKey,o))return!1}if(r!=="all"){const c=t.isActive();if(r==="active"&&!c||r==="inactive"&&c)return!1}return!(typeof l=="boolean"&&t.isStale()!==l||i&&i!==t.state.fetchStatus||a&&!a(t))}function hy(e,t){const{exact:r,status:s,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(r){if(cl(t.options.mutationKey)!==cl(a))return!1}else if(!za(t.options.mutationKey,a))return!1}return!(s&&t.state.status!==s||i&&!i(t))}function Sg(e,t){return((t==null?void 0:t.queryKeyHashFn)||cl)(e)}function cl(e){return JSON.stringify(e,(t,r)=>bp(r)?Object.keys(r).sort().reduce((s,i)=>(s[i]=r[i],s),{}):r)}function za(e,t){if(e===t)return!0;
588if(typeof e!=typeof t)return!1;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(Array.isArray(e)&&Array.isArray(t)){for(let s=0;s<t.length;s++)if(!za(e[s],t[s]))return!1;return!0}const r=Object.keys(t);for(const s of r)if(!za(e[s],t[s]))return!1;return!0}return!1}var yR=Object.prototype.hasOwnProperty;function Qk(e,t,r=0){if(e===t)return e;if(r>500)return t;const s=my(e)&&my(t);if(!s&&!(bp(e)&&bp(t)))return t;const a=(s?e:Object.keys(e)).length,o=s?t:Object.keys(t),l=o.length,c=s?new Array(l):{};let d=0;for(let u=0;u<l;u++){const h=s?u:o[u],p=e[h],m=t[h];if(p===m){c[h]=p,(s?u<a:yR.call(e,h))&&d++;continue}if(p===null||m===null||typeof p!="object"||typeof m!="object"){c[h]=m;continue}const y=Qk(p,m,r+1);c[h]=y,y===p&&d++}return a===l&&d===a?e:c}function my(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function bp(e){if(!py(e))return!1;const t=e.constructor;if(t===void 0)return!0;const r=t.prototype;return!(!py(r)||!r.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(e)!==Object.prototype)}function py(e){return Object.prototype.toString.call(e)==="[object Object]"}function bR(e){return new Promise(t=>{vp.setTimeout(t,e)})}function wR(e,t,r){return typeof r.structuralSharing=="function"?r.structuralSharing(e,t):r.structuralSharing!==!1?Qk(e,t):t}function jR(e,t,r=0){const s=[...e,t];return r&&s.length>r?s.slice(1):s}function kR(e,t,r=0){const s=[t,...e];return r&&s.length>r?s.slice(0,-1):s}var Cg=Symbol();function e1(e,t){return!e.queryFn&&(t!=null&&t.initialPromise)?()=>t.initialPromise:!e.queryFn||e.queryFn===Cg?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function NR(e,t,r){let s=!1,i;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??(i=t()),s||(s=!0,i.aborted?r():i.addEventListener("abort",r,{once:!0})),i)}),e}var t1=(()=>{let e=()=>pR;return{isServer(){return e()},setIsServer(t){e=t}}})();function SR(){let e,t;const r=new Promise((i,a)=>{e=i,t=a});r.status="pending",r.catch(()=>{});function s(i){Object.assign(r,i),delete r.resolve,delete r.reject}return r.resolve=i=>{s({status:"fulfilled",value:i}),e(i)},r.reject=i=>{s({status:"rejected",reason:i}),t(i)},r}var CR=mR;function ER(){let e=[],t=0,r=l=>{l()},s=l=>{l()},i=CR;const a=l=>{t?e.push(l):i(()=>{r(l)})},o=()=>{const l=e;e=[],l.length&&i(()=>{s(()=>{l.forEach(c=>{r(c)})})})};return{batch:l=>{let c;t++;try{c=l()}finally{t--,t||o()}return c},batchCalls:l=>(...c)=>{a(()=>{l(...c)})},schedule:a,setNotifyFunction:l=>{r=l},setBatchNotifyFunction:l=>{s=l},setScheduler:l=>{i=l}}}var St=ER(),Ea,cs,Aa,Ab,AR=(Ab=class extends Pu{constructor(){super();ue(this,Ea,!0);ue(this,cs);ue(this,Aa);re(this,Aa,t=>{if(typeof window<"u"&&window.addEventListener){const r=()=>t(!0),s=()=>t(!1);return window.addEventListener("online",r,!1),window.addEventListener("offline",s,!1),()=>{window.removeEventListener("online",r),window.removeEventListener("offline",s)}}})}onSubscribe(){A(this,cs)||this.setEventListener(A(this,Aa))}onUnsubscribe(){var t;this.hasListeners()||((t=A(this,cs))==null||t.call(this),re(this,cs,void 0))}setEventListener(t){var r;re(this,Aa,t),(r=A(this,cs))==null||r.call(this),re(this,cs,t(this.setOnline.bind(this)))}setOnline(t){A(this,Ea)!==t&&(re(this,Ea,t),this.listeners.forEach(s=>{s(t)}))}isOnline(){return A(this,Ea)}},Ea=new WeakMap,cs=new WeakMap,Aa=new WeakMap,Ab),Ld=new AR;function PR(e){return Math.min(1e3*2**e,3e4)}function r1(e){return(e??"online")==="online"?Ld.isOnline():!0}var wp=class extends Error{constructor(e){super("CancelledError"),this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}};function n1(e){let t=!1,r=0,s;const i=SR(),a=()=>i.status!=="pending",o=b=>{var w;if(!a()){const g=new wp(b);p(g),(w=e.onCancel)==null||w.call(e,g)}},l=()=>{t=!0},c=()=>{t=!1},d=()=>Jk.isFocused()&&(e.networkMode==="always"||Ld.isOnline())&&e.canRun(),u=()=>r1(e.networkMode)&&e.canRun(),h=b=>{a()||(s==null||s(),i.resolve(b))},p=b=>{a()||(s==null||s(),i.reject(b))},m=()=>new Promise(b=>{var w;s=g=>{(a()||d())&&b(g)},(w=e.onPause)==null||w.call(e)}).then(()=>{var b;s=void 0,a()||(b=e.onContinue)==null||b.call(e)}),y=()=>
588{if(a())return;let b;const w=r===0?e.initialPromise:void 0;try{b=w??e.fn()}catch(g){b=Promise.reject(g)}Promise.resolve(b).then(h).catch(g=>{var N;if(a())return;const v=e.retry??(t1.isServer()?0:3),x=e.retryDelay??PR,j=typeof x=="function"?x(r,g):x,k=v===!0||typeof v=="number"&&r<v||typeof v=="function"&&v(r,g);if(t||!k){p(g);return}r++,(N=e.onFail)==null||N.call(e,r,g),bR(j).then(()=>d()?void 0:m()).then(()=>{t?p(g):y()})})};return{promise:i,status:()=>i.status,cancel:o,continue:()=>(s==null||s(),i),cancelRetry:l,continueRetry:c,canStart:u,start:()=>(u()?y():m().then(y),i)}}var li,Pb,s1=(Pb=class{constructor(){ue(this,li)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),gR(this.gcTime)&&re(this,li,vp.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(t1.isServer()?1/0:5*60*1e3))}clearGcTimeout(){A(this,li)!==void 0&&(vp.clearTimeout(A(this,li)),re(this,li,void 0))}},li=new WeakMap,Pb);function TR(e){return{onFetch:(t,r)=>{var u,h,p,m,y;const s=t.options,i=(p=(h=(u=t.fetchOptions)==null?void 0:u.meta)==null?void 0:h.fetchMore)==null?void 0:p.direction,a=((m=t.state.data)==null?void 0:m.pages)||[],o=((y=t.state.data)==null?void 0:y.pageParams)||[];let l={pages:[],pageParams:[]},c=0;const d=async()=>{let b=!1;const w=x=>{NR(x,()=>t.signal,()=>b=!0)},g=e1(t.options,t.fetchOptions),v=async(x,j,k)=>{if(b)return Promise.reject(t.signal.reason);if(j==null&&x.pages.length)return Promise.resolve(x);const S=(()=>{const B={client:t.client,queryKey:t.queryKey,pageParam:j,direction:k?"backward":"forward",meta:t.options.meta};return w(B),B})(),C=await g(S),{maxPages:E}=t.options,I=k?kR:jR;return{pages:I(x.pages,C,E),pageParams:I(x.pageParams,j,E)}};if(i&&a.length){const x=i==="backward",j=x?_R:fy,k={pages:a,pageParams:o},N=j(s,k);l=await v(k,N,x)}else{const x=e??a.length;do{const j=c===0?o[0]??s.initialPageParam:fy(s,l);if(c>0&&j==null)break;l=await v(l,j),c++}while(c<x)}return l};t.options.persister?t.fetchFn=()=>{var b,w;return(w=(b=t.options).persister)==null?void 0:w.call(b,d,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r)}:t.fetchFn=d}}}function fy(e,{pages:t,pageParams:r}){const s=t.length-1;return t.length>0?e.getNextPageParam(t[s],t,r[s],r):void 0}function _R(e,{pages:t,pageParams:r}){var s;return t.length>0?(s=e.getPreviousPageParam)==null?void 0:s.call(e,t[0],t,r[0],r):void 0}var Pa,ci,Ta,lr,di,at,wl,ui,Xt,i1,vn,Tb,IR=(Tb=class extends s1{constructor(t){super();ue(this,Xt);ue(this,Pa);ue(this,ci);ue(this,Ta);ue(this,lr);ue(this,di);ue(this,at);ue(this,wl);ue(this,ui);re(this,ui,!1),re(this,wl,t.defaultOptions),this.setOptions(t.options),this.observers=[],re(this,di,t.client),re(this,lr,A(this,di).getQueryCache()),this.queryKey=t.queryKey,this.queryHash=t.queryHash,re(this,ci,xy(this.options)),this.state=t.state??A(this,ci),this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return A(this,Pa)}get promise(){var t;return(t=A(this,at))==null?void 0:t.promise}setOptions(t){if(this.options={...A(this,wl),...t},t!=null&&t._type&&re(this,Pa,t._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const r=xy(this.options);r.data!==void 0&&(this.setState(gy(r.data,r.dataUpdatedAt)),re(this,ci,r))}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&A(this,lr).remove(this)}setData(t,r){const s=wR(this.state.data,t,this.options);return ht(this,Xt,vn).call(this,{data:s,type:"success",dataUpdatedAt:r==null?void 0:r.updatedAt,manual:r==null?void 0:r.manual}),s}setState(t){ht(this,Xt,vn).call(this,{type:"setState",state:t})}cancel(t){var s,i;const r=(s=A(this,at))==null?void 0:s.promise;return(i=A(this,at))==null||i.cancel(t),r?r.then(Tr).catch(Tr):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return A(this,ci)}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(t=>vR(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Cg||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdate
588Count>0}isStatic(){return this.getObserversCount()>0?this.observers.some(t=>yp(t.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(t=0){return this.state.data===void 0?!0:t==="static"?!1:this.state.isInvalidated?!0:!xR(this.state.dataUpdatedAt,t)}onFocus(){var r;const t=this.observers.find(s=>s.shouldFetchOnWindowFocus());t==null||t.refetch({cancelRefetch:!1}),(r=A(this,at))==null||r.continue()}onOnline(){var r;const t=this.observers.find(s=>s.shouldFetchOnReconnect());t==null||t.refetch({cancelRefetch:!1}),(r=A(this,at))==null||r.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),A(this,lr).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(r=>r!==t),this.observers.length||(A(this,at)&&(A(this,ui)||ht(this,Xt,i1).call(this)?A(this,at).cancel({revert:!0}):A(this,at).cancelRetry()),this.scheduleGc()),A(this,lr).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||ht(this,Xt,vn).call(this,{type:"invalidate"})}async fetch(t,r){var d,u,h,p,m,y,b,w,g,v,x;if(this.state.fetchStatus!=="idle"&&((d=A(this,at))==null?void 0:d.status())!=="rejected"){if(this.state.data!==void 0&&(r!=null&&r.cancelRefetch))this.cancel({silent:!0});else if(A(this,at))return A(this,at).continueRetry(),A(this,at).promise}if(t&&this.setOptions(t),!this.options.queryFn){const j=this.observers.find(k=>k.options.queryFn);j&&this.setOptions(j.options)}const s=new AbortController,i=j=>{Object.defineProperty(j,"signal",{enumerable:!0,get:()=>(re(this,ui,!0),s.signal)})},a=()=>{const j=e1(this.options,r),N=(()=>{const S={client:A(this,di),queryKey:this.queryKey,meta:this.meta};return i(S),S})();return re(this,ui,!1),this.options.persister?this.options.persister(j,N,this):j(N)},l=(()=>{const j={fetchOptions:r,options:this.options,queryKey:this.queryKey,client:A(this,di),state:this.state,fetchFn:a};return i(j),j})(),c=A(this,Pa)==="infinite"?TR(this.options.pages):this.options.behavior;c==null||c.onFetch(l,this),re(this,Ta,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((u=l.fetchOptions)==null?void 0:u.meta))&&ht(this,Xt,vn).call(this,{type:"fetch",meta:(h=l.fetchOptions)==null?void 0:h.meta}),re(this,at,n1({initialPromise:r==null?void 0:r.initialPromise,fn:l.fetchFn,onCancel:j=>{j instanceof wp&&j.revert&&this.setState({...A(this,Ta),fetchStatus:"idle"}),s.abort()},onFail:(j,k)=>{ht(this,Xt,vn).call(this,{type:"failed",failureCount:j,error:k})},onPause:()=>{ht(this,Xt,vn).call(this,{type:"pause"})},onContinue:()=>{ht(this,Xt,vn).call(this,{type:"continue"})},retry:l.options.retry,retryDelay:l.options.retryDelay,networkMode:l.options.networkMode,canRun:()=>!0}));try{const j=await A(this,at).start();if(j===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(j),(m=(p=A(this,lr).config).onSuccess)==null||m.call(p,j,this),(b=(y=A(this,lr).config).onSettled)==null||b.call(y,j,this.state.error,this),j}catch(j){if(j instanceof wp){if(j.silent)return A(this,at).promise;if(j.revert){if(this.state.data===void 0)throw j;return this.state.data}}throw ht(this,Xt,vn).call(this,{type:"error",error:j}),(g=(w=A(this,lr).config).onError)==null||g.call(w,j,this),(x=(v=A(this,lr).config).onSettled)==null||x.call(v,this.state.data,j,this),j}finally{this.scheduleGc()}}},Pa=new WeakMap,ci=new WeakMap,Ta=new WeakMap,lr=new WeakMap,di=new WeakMap,at=new WeakMap,wl=new WeakMap,ui=new WeakMap,Xt=new WeakSet,i1=function(){return this.state.fetchStatus==="paused"&&this.state.status==="pending"},vn=function(t){const r=s=>{switch(t.type){case"failed":return{...s,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...s,fetchStatus:"paused"};case"continue":return{...s,fetchStatus:"fetching"};case"fetch":return{...s,...RR(s.data,this.options),fetchMeta:t.meta??null};case"success":const i={...s,...gy(t.data,t.dataUpdatedAt),dataUpdateCount:s.dataUpdateCount+1,...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return re(this,Ta,t.manual?i:void 0),i;case"error":const a=t.error;
588return{...s,error:a,errorUpdateCount:s.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:s.fetchFailureCount+1,fetchFailureReason:a,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...s,isInvalidated:!0};case"setState":return{...s,...t.state}}};this.state=r(this.state),St.batch(()=>{this.observers.forEach(s=>{s.onQueryUpdate()}),A(this,lr).notify({query:this,type:"updated",action:t})})},Tb);function RR(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:r1(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function gy(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function xy(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,r=t!==void 0,s=r?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?s??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}var jl,Xr,yt,hi,Gr,es,_b,OR=(_b=class extends s1{constructor(t){super();ue(this,Gr);ue(this,jl);ue(this,Xr);ue(this,yt);ue(this,hi);re(this,jl,t.client),this.mutationId=t.mutationId,re(this,yt,t.mutationCache),re(this,Xr,[]),this.state=t.state||MR(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){A(this,Xr).includes(t)||(A(this,Xr).push(t),this.clearGcTimeout(),A(this,yt).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){re(this,Xr,A(this,Xr).filter(r=>r!==t)),this.scheduleGc(),A(this,yt).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){A(this,Xr).length||(this.state.status==="pending"?this.scheduleGc():A(this,yt).remove(this))}continue(){var t;return((t=A(this,hi))==null?void 0:t.continue())??this.execute(this.state.variables)}async execute(t){var o,l,c,d,u,h,p,m,y,b,w,g,v,x,j,k,N,S;const r=()=>{ht(this,Gr,es).call(this,{type:"continue"})},s={client:A(this,jl),meta:this.options.meta,mutationKey:this.options.mutationKey};re(this,hi,n1({fn:()=>this.options.mutationFn?this.options.mutationFn(t,s):Promise.reject(new Error("No mutationFn found")),onFail:(C,E)=>{ht(this,Gr,es).call(this,{type:"failed",failureCount:C,error:E})},onPause:()=>{ht(this,Gr,es).call(this,{type:"pause"})},onContinue:r,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>A(this,yt).canRun(this)}));const i=this.state.status==="pending",a=!A(this,hi).canStart();try{if(i)r();else{ht(this,Gr,es).call(this,{type:"pending",variables:t,isPaused:a}),A(this,yt).config.onMutate&&await A(this,yt).config.onMutate(t,this,s);const E=await((l=(o=this.options).onMutate)==null?void 0:l.call(o,t,s));E!==this.state.context&&ht(this,Gr,es).call(this,{type:"pending",context:E,variables:t,isPaused:a})}const C=await A(this,hi).start();return await((d=(c=A(this,yt).config).onSuccess)==null?void 0:d.call(c,C,t,this.state.context,this,s)),await((h=(u=this.options).onSuccess)==null?void 0:h.call(u,C,t,this.state.context,s)),await((m=(p=A(this,yt).config).onSettled)==null?void 0:m.call(p,C,null,this.state.variables,this.state.context,this,s)),await((b=(y=this.options).onSettled)==null?void 0:b.call(y,C,null,t,this.state.context,s)),ht(this,Gr,es).call(this,{type:"success",data:C}),C}catch(C){try{await((g=(w=A(this,yt).config).onError)==null?void 0:g.call(w,C,t,this.state.context,this,s))}catch(E){Promise.reject(E)}try{await((x=(v=this.options).onError)==null?void 0:x.call(v,C,t,this.state.context,s))}catch(E){Promise.reject(E)}try{await((k=(j=A(this,yt).config).onSettled)==null?void 0:k.call(j,void 0,C,this.state.variables,this.state.context,this,s))}catch(E){Promise.reject(E)}try{await((S=(N=this.options).onSettled)==null?void 0:S.call(N,void 0,C,t,this.state.context,s))}catch(E){Promise.reject(E)}throw ht(this,Gr,es).call(this,{type:"error",error:C}),C}finally{A(this,yt).runNext(this)}}},jl=new WeakMap,Xr=new WeakMap,yt=new WeakMap,hi=new WeakMap,Gr=new WeakSet,es=function(t){const r=s=>{switch(t.type){case"failed":return{...s,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...s,isPaused:!0};case"continue":return{...s,isPaused:!1};
588case"pending":return{...s,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...s,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...s,data:void 0,error:t.error,failureCount:s.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=r(this.state),St.batch(()=>{A(this,Xr).forEach(s=>{s.onMutationUpdate(t)}),A(this,yt).notify({mutation:this,type:"updated",action:t})})},_b);function MR(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var En,Ir,kl,Ib,DR=(Ib=class extends Pu{constructor(t={}){super();ue(this,En);ue(this,Ir);ue(this,kl);this.config=t,re(this,En,new Set),re(this,Ir,new Map),re(this,kl,0)}build(t,r,s){const i=new OR({client:t,mutationCache:this,mutationId:++Gl(this,kl)._,options:t.defaultMutationOptions(r),state:s});return this.add(i),i}add(t){A(this,En).add(t);const r=xc(t);if(typeof r=="string"){const s=A(this,Ir).get(r);s?s.push(t):A(this,Ir).set(r,[t])}this.notify({type:"added",mutation:t})}remove(t){if(A(this,En).delete(t)){const r=xc(t);if(typeof r=="string"){const s=A(this,Ir).get(r);if(s)if(s.length>1){const i=s.indexOf(t);i!==-1&&s.splice(i,1)}else s[0]===t&&A(this,Ir).delete(r)}}this.notify({type:"removed",mutation:t})}canRun(t){const r=xc(t);if(typeof r=="string"){const s=A(this,Ir).get(r),i=s==null?void 0:s.find(a=>a.state.status==="pending");return!i||i===t}else return!0}runNext(t){var s;const r=xc(t);if(typeof r=="string"){const i=(s=A(this,Ir).get(r))==null?void 0:s.find(a=>a!==t&&a.state.isPaused);return(i==null?void 0:i.continue())??Promise.resolve()}else return Promise.resolve()}clear(){St.batch(()=>{A(this,En).forEach(t=>{this.notify({type:"removed",mutation:t})}),A(this,En).clear(),A(this,Ir).clear()})}getAll(){return Array.from(A(this,En))}find(t){const r={exact:!0,...t};return this.getAll().find(s=>hy(r,s))}findAll(t={}){return this.getAll().filter(r=>hy(t,r))}notify(t){St.batch(()=>{this.listeners.forEach(r=>{r(t)})})}resumePausedMutations(){const t=this.getAll().filter(r=>
vendor: 7,622 bytes, line 588
588r.state.isPaused);return St.batch(()=>Promise.all(t.map(r=>r.continue().catch(Tr))))}},En=new WeakMap,Ir=new WeakMap,kl=new WeakMap,Ib);function xc(e){var t;return(t=e.options.scope)==null?void 0:t.id}var Kr,Rb,LR=(Rb=class extends Pu{constructor(t={}){super();ue(this,Kr);this.config=t,re(this,Kr,new Map)}build(t,r,s){const i=r.queryKey,a=r.queryHash??Sg(i,r);let o=this.get(a);return o||(o=new IR({client:t,queryKey:i,queryHash:a,options:t.defaultQueryOptions(r),state:s,defaultOptions:t.getQueryDefaults(i)}),this.add(o)),o}add(t){A(this,Kr).has(t.queryHash)||(A(this,Kr).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const r=A(this,Kr).get(t.queryHash);r&&(t.destroy(),r===t&&A(this,Kr).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){St.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return A(this,Kr).get(t)}getAll(){return[...A(this,Kr).values()]}find(t){const r={exact:!0,...t};return this.getAll().find(s=>uy(r,s))}findAll(t={}){const r=this.getAll();return Object.keys(t).length>0?r.filter(s=>uy(t,s)):r}notify(t){St.batch(()=>{this.listeners.forEach(r=>{r(t)})})}onFocus(){St.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){St.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},Kr=new WeakMap,Rb),qe,ds,us,_a,Ia,hs,Ra,Oa,Ob,HR=(Ob=class{constructor(e={}){ue(this,qe);ue(this,ds);ue(this,us);ue(this,_a);ue(this,Ia);ue(this,hs);ue(this,Ra);ue(this,Oa);re(this,qe,e.queryCache||new LR),re(this,ds,e.mutationCache||new DR),re(this,us,e.defaultOptions||{}),re(this,_a,new Map),re(this,Ia,new Map),re(this,hs,0)}mount(){Gl(this,hs)._++,A(this,hs)===1&&(re(this,Ra,Jk.subscribe(async e=>{e&&(await this.resumePausedMutations(),A(this,qe).onFocus())})),re(this,Oa,Ld.subscribe(async e=>{e&&(await this.resumePausedMutations(),A(this,qe).onOnline())})))}unmount(){var e,t;Gl(this,hs)._--,A(this,hs)===0&&((e=A(this,Ra))==null||e.call(this),re(this,Ra,void 0),(t=A(this,Oa))==null||t.call(this),re(this,Oa,void 0))}isFetching(e){return A(this,qe).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return A(this,ds).findAll({...e,status:"pending"}).length}getQueryData(e){var r;const t=this.defaultQueryOptions({queryKey:e});return(r=A(this,qe).get(t.queryHash))==null?void 0:r.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),r=A(this,qe).build(this,t),s=r.state.data;return s===void 0?this.fetchQuery(e):(e.revalidateIfStale&&r.isStaleByTime(yp(t.staleTime,r))&&this.prefetchQuery(t),Promise.resolve(s))}getQueriesData(e){return A(this,qe).findAll(e).map(({queryKey:t,state:r})=>{const s=r.data;return[t,s]})}setQueryData(e,t,r){const s=this.defaultQueryOptions({queryKey:e}),i=A(this,qe).get(s.queryHash),a=i==null?void 0:i.state.data,o=fR(t,a);if(o!==void 0)return A(this,qe).build(this,s).setData(o,{...r,manual:!0})}setQueriesData(e,t,r){return St.batch(()=>A(this,qe).findAll(e).map(({queryKey:s})=>[s,this.setQueryData(s,t,r)]))}getQueryState(e){var r;const t=this.defaultQueryOptions({queryKey:e});return(r=A(this,qe).get(t.queryHash))==null?void 0:r.state}removeQueries(e){const t=A(this,qe);St.batch(()=>{t.findAll(e).forEach(r=>{t.remove(r)})})}resetQueries(e,t){const r=A(this,qe);return St.batch(()=>(r.findAll(e).forEach(s=>{s.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){const r={revert:!0,...t},s=St.batch(()=>A(this,qe).findAll(e).map(i=>i.cancel(r)));return Promise.all(s).then(Tr).catch(Tr)}invalidateQueries(e,t={}){return St.batch(()=>(A(this,qe).findAll(e).forEach(r=>{r.invalidate()}),(e==null?void 0:e.refetchType)==="none"?Promise.resolve():this.refetchQueries({...e,type:(e==null?void 0:e.refetchType)??(e==null?void 0:e.type)??"active"},t)))}refetchQueries(e,t={}){const r={...t,cancelRefetch:t.cancelRefetch??!0},s=St.batch(()=>A(this,qe).findAll(e).filter(i=>!i.isDisabled()&&!i.isStatic()).map(i=>{let a=i.fetch(void 0,r);return r.throwOnError||(a=a.catch(Tr)),i.state.fetchStatus==="paused"?Promise.resolve():a}));return Promise.all(s).then(Tr)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const r=A(this,qe).build(this,t);return r.isStaleByTime(yp(t.staleTime,r))?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(Tr).catch(Tr)}fetchInfiniteQuery(e){return e._type="infinite",this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(Tr).catch(Tr)}ensureInfiniteQueryData(e){return e._type="infinite",this.ensureQueryData(e)}resumePausedMutations(){return Ld.isOnline()?A(this,ds).resumePausedMutations():Promise.resolve()}getQueryCache(){return A(this,qe)}getMutationCache(){return A(this,ds)}getDefaultOptions(){return A(this,us)}setDefaultOptions(e){re(this,us,e)}setQueryDefaults(e,t){A(this,_a).set(cl(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...A(this,_a).values()],r={};return t.forEach(s=>{za(e,s.queryKey)&&Object.assign(r,s.defaultOptions)}),r}setMutationDefaults(e,t){A(this,Ia).set(cl(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...A(this,Ia).values()],r={};return t.forEach(s=>{za(e,s.mutationKey)&&Object.assign(r,s.defaultOptions)}),r}defaultQueryOptions(e){if(e._defaulted)return e;const t={...A(this,us).queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=Sg(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===Cg&&(t.enabled=!1),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:{...A(this,us).mutations,...(e==null?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){A(this,qe).clear(),A(this,ds).clear()}},qe=new WeakMap,ds=new WeakMap,us=new WeakMap,_a=new WeakMap,Ia=new WeakMap,hs=new WeakMap,Ra=new WeakMap,Oa=new WeakMap,Ob),$R=f.createContext(void 0),BR=({client:e,children:t})=>(f.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),n.jsx($R.Provider,{value:e,children:t}));const FR=()=>{const{pathname:e}=Bs();return f.useEffect(()=>{window.scrollTo(0,0)},[e]),null},UR=gu("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90 shadow-glow hover:shadow-[0_0_60px_hsl(68_100%_50%/0.15)]",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-border bg-transparent hover:bg-secondary hover:text-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-secondary hover:text-foreground",link:"text-brand-ink underline-offset-4 hover:underline",hero:"bg-primary text-primary-foreground font-semibold shadow-glow hover:shadow-[0_0_60px_hsl(68_100%_50%/0.15)] hover:scale-105",heroOutline:"border border-primary/50 bg-transparent text-foreground hover:bg-primary/10 hover:border-primary",heroBlue:"bg-primary text-primary-foreground font-semibold shadow-glow hover:shadow-[0_0_60px_hsl(68_100%_50%/0.15)] hover:scale-105",heroBlueOutline:"border border-primary/50 bg-transparent text-foreground hover:bg-primary/10 hover:border-primary"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-12 rounded-lg px-8 text-base",xl:"h-14 roun
588ded-xl px-10 text-lg",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),M=f.forwardRef(({className:e,variant:t,size:r,asChild:s=!1,...i},a)=>{const o=s?RA:"button";return n.jsx(o,{className:J(UR({variant:t,size:r,className:e})),ref:a,...i})});M.displayName="Button";var VR=Object.defineProperty,At=(e,t)=>VR(e,"name",{value:t,configurable:!0}),Dh="focusScope.autoFocusOnMount",Lh="focusScope.autoFocusOnUnmount",vy={bubbles:!1,cancelable:!0},a1=f.forwardRef(At(function(t,r){const{loop:s=!1,trapped:i=!1,onMountAutoFocus:a,onUnmountAutoFocus:o,...l}=t,[c,d]=f.useState(null),u=_t(a),h=_t(o),p=f.useRef(null),m=ye(r,d),y=f.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;f.useEffect(()=>{if(i){let w=function(j){if(y.paused||!c)return;const k=j.target;c.contains(k)?p.current=k:wn(p.current,{select:!0})},g=function(j){if(y.paused||!c)return;const k=j.relatedTarget;k!==null&&(c.contains(k)||wn(p.current,{select:!0}))},v=function(j){if(document.activeElement===document.body)for(const N of j)N.removedNodes.length>0&&wn(c)};At(w,"handleFocusIn"),At(g,"handleFocusOut"),At(v,"handleMutations"),document.addEventListener("focusin",w),document.addEventListener("focusout",g);const x=new MutationObserver(v);return c&&x.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",w),document.removeEventListener("focusout",g),x.disconnect()}}},[i,c,y.paused]),f.useEffect(()=>{if(c){yy.add(y);const w=document.activeElement;if(!c.contains(w)){const v=new CustomEvent(Dh,vy);c.addEventListener(Dh,u),c.dispatchEvent(v),v.defaultPrevented||(o1(h1(Eg(c)),{select:!0}),document.activeElement===w&&wn(c))}return()=>{c.removeEventListener(Dh,u),setTimeout(()=>{const v=new CustomEvent(Lh,vy);c.addEventListener(Lh,h),c.dispatchEvent(v),v.defaultPrevented||wn(w??document.body,{select:!0}),c.removeEventListener(Lh,h),yy.remove(y)},0)}}},[c,u,h,y]);const b=f.useCallback(w=>{if(!s&&!i||y.paused)return;const g=w.key==="Tab"&&!w.altKey&&!w.ctrlKey&&!w.metaKey,v=document.activeElement;if(g&&v){const x=w.currentTarget,[j,k]=l1(x);j&&k?!w.shiftKey&&v===k?(w.preventDefault(),s&&wn(j,{select:!0})):w.shiftKey&&v===j&&(w.preventDefault(),s&&wn(k,{select:!0})):v===x&&w.preventDefault()}},[s,i,y.paused]);return n.jsx(se.div,{tabIndex:-1,...l,ref:m,onKeyDown:b})},"FocusScope"));function o1(e,{select:t=!1}={}){const r=document.activeElement;for(const s of e)if(wn(s,{select:t}),document.activeElement!==r)return}At(o1,"focusFirst");function l1(e){const t=Eg(e),r=jp(t,e),s=jp(t.reverse(),e);return[r,s]}At(l1,"getTabbableEdges");function Eg(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:At(s=>{const i=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||i?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},"acceptNode")});for(;r.nextNode();)t.push(r.currentNode);return t}At(Eg,"getTabbableCandidates");function jp(e,t){const r=typeof t.checkVisibility=="function"&&t.checkVisibility({checkVisibilityCSS:!0});for(const s of e)if(!(r?!s.checkVisibility({checkVisibilityCSS:!0}):c1(s,{upTo:t})))return s}At(jp,"findVisible");function c1(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}At(c1,"isHidden");function d1(e){return e instanceof HTMLInputElement&&"select"in e}At(d1,"isSelectableInput");function wn(e,{select:t=!1}={}){if(e&&e.focus){const r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&d1(e)&&t&&e.select()}}At(wn,"focus");var yy=u1();function u1(){let e=[];return{add(t){const r=e[0];t!==r&&(r==null||r.pause()),e=kp(e,t),e.unshift(t)},remove(t){var r;e=kp(e,t),(r=e[0])==null||r.resume()}}}At(u1,"createFocusScopesStack");function kp(e,t){const r=[...e],s=r.indexOf(t);return s!==-1&&r.splice(s,1),r}At(kp,"arrayRemove");function h1(e){return e.filter(t=>t.tagName!=="A")}At(h1,"removeLinks");var zR=Object.defineProperty,Ag=(e,t)=>zR(e,"name",{value:t,configurable:!0}),vc=0,Wr=null;function WR(e){return Tu(),e.children}Ag(WR,"FocusGuards");function Tu(){f.useEffect(()=>{Wr||(Wr={start:Np(),end:Np()});const{start:e,end:t}=Wr;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement("afterbegin",e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement("beforeend",t),vc++,()=>{vc===1&&(Wr==null||Wr.start.remove(),Wr==null||Wr.end.remove(),Wr=null),vc=Math.max(0,vc-1)}},[])}Ag(Tu,"useFocusGuards");function Np(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.
vendor: 5,677 bytes, lines 588-603
588style.position="fixed",e.style.pointerEvents="none",e}Ag(Np,"createFocusGuard");var Qr=function(){return Qr=Object.assign||function(t){for(var r,s=1,i=arguments.length;s<i;s++){r=arguments[s];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(t[a]=r[a])}return t},Qr.apply(this,arguments)};function m1(e,t){var r={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,s=Object.getOwnPropertySymbols(e);i<s.length;i++)t.indexOf(s[i])<0&&Object.prototype.propertyIsEnumerable.call(e,s[i])&&(r[s[i]]=e[s[i]]);return r}function ZR(e,t,r){if(r||arguments.length===2)for(var s=0,i=t.length,a;s<i;s++)(a||!(s in t))&&(a||(a=Array.prototype.slice.call(t,0,s)),a[s]=t[s]);return e.concat(a||Array.prototype.slice.call(t))}var Qc="right-scroll-bar-position",ed="width-before-scroll-bar",qR="with-scroll-bars-hidden",XR="--removed-body-scroll-bar-size";function Hh(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function GR(e,t){var r=f.useState(function(){return{value:e,callback:t,facade:{get current(){return r.value},set current(s){var i=r.value;i!==s&&(r.value=s,r.callback(s,i))}}}})[0];return r.callback=t,r.facade}var KR=typeof window<"u"?f.useLayoutEffect:f.useEffect,by=new WeakMap;function YR(e,t){var r=GR(null,function(s){return e.forEach(function(i){return Hh(i,s)})});return KR(function(){var s=by.get(r);if(s){var i=new Set(s),a=new Set(e),o=r.current;i.forEach(function(l){a.has(l)||Hh(l,null)}),a.forEach(function(l){i.has(l)||Hh(l,o)})}by.set(r,e)},[e]),r}function JR(e){return e}function QR(e,t){t===void 0&&(t=JR);var r=[],s=!1,i={read:function(){if(s)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return r.length?r[r.length-1]:e},useMedium:function(a){var o=t(a,s);return r.push(o),function(){r=r.filter(function(l){return l!==o})}},assignSyncMedium:function(a){for(s=!0;r.length;){var o=r;r=[],o.forEach(a)}r={push:function(l){return a(l)},filter:function(){return r}}},assignMedium:function(a){s=!0;var o=[];if(r.length){var l=r;r=[],l.forEach(a),o=r}var c=function(){var u=o;o=[],u.forEach(a)},d=function(){return Promise.resolve().then(c)};d(),r={push:function(u){o.push(u),d()},filter:function(u){return o=o.filter(u),r}}}};return i}function e4(e){e===void 0&&(e={});var t=QR(null);return t.options=Qr({async:!0,ssr:!1},e),t}var p1=function(e){var t=e.sideCar,r=m1(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var s=t.read();if(!s)throw new Error("Sidecar medium not found");return f.createElement(s,Qr({},r))};p1.isSideCarExport=!0;function t4(e,t){return e.useMedium(t),p1}var f1=e4(),$h=function(){},_u=f.forwardRef(function(e,t){var r=f.useRef(null),s=f.useState({onScrollCapture:$h,onWheelCapture:$h,onTouchMoveCapture:$h}),i=s[0],a=s[1],o=e.forwardProps,l=e.children,c=e.className,d=e.removeScrollBar,u=e.enabled,h=e.shards,p=e.sideCar,m=e.noRelative,y=e.noIsolation,b=e.inert,w=e.allowPinchZoom,g=e.as,v=g===void 0?"div":g,x=e.gapMode,j=m1(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),k=p,N=YR([r,t]),S=Qr(Qr({},j),i);return f.createElement(f.Fragment,null,u&&f.createElement(k,{sideCar:f1,removeScrollBar:d,shards:h,noRelative:m,noIsolation:y,inert:b,setCallbacks:a,allowPinchZoom:!!w,lockRef:r,gapMode:x}),o?f.cloneElement(f.Children.only(l),Qr(Qr({},S),{ref:N})):f.createElement(v,Qr({},S,{className:c,ref:N}),l))});_u.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};_u.classNames={fullWidth:ed,zeroRight:Qc};var r4=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function n4(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=r4();return t&&e.setAttribute("nonce",t),e}function s4(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function i4(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var a4=function(){var e=0,t=null;return{add:function(r){e==0&&(t=n4())&&(s4(t,r),i4(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},o4=function(){var e=a4();return function(t,r){f.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&r])}},g1=function(){var e=o4(),t=function(r){var s=r.styles,i=r.dynamic;return e(s,i),null};return t},l4={left:0,top:0,right:0,gap:0},Bh=function(e){return parseInt(e||"",10)||0},c4=function(e){var t=window.getComputedStyle(document.body),r=t[e==="padding"?"paddingLeft":"marginLeft"],s=t[e==="padding"?"paddingTop":"marginTop"],i=t[e==="padding"?"paddingRight":"marginRight"];return[Bh(r),Bh(s),Bh(i)]},d4=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return l4;var t=c4(e),r=document.documentElement.clientWidth,s=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,s-r+t[2]-t[0])}},u4=g1(),ka="data-scroll-locked",h4=function(e,t,r,s){var i=e.left,a=e.top,o=e.right,l=e.gap;return r===void 0&&(r="margin"),` 589 .`.concat(qR,` { 590 overflow: hidden `).concat(s,`; 591 padding-right: `).concat(l,"px ").concat(s,`; 592 } 593 body[`).concat(ka,`] { 594 overflow: hidden `).concat(s,`; 595 overscroll-behavior: contain; 596 `).concat([t&&"position: relative ".concat(s,";"),r==="margin"&&` 597 padding-left: `.concat(i,`px; 598 padding-top: `).concat(a,`px; 599 padding-right: `).concat(o,`px; 600 margin-left:0; 601 margin-top:0; 602 margin-right: `).concat(l,"px ").concat(s,`; 603 `),r==="padding"&&"padding-right: ".concat(l,"px ").concat(s,";
603")].filter(Boolean).join(""),` 604 } 605 606 .`).concat(Qc,` { 607 right: `).concat(l,"px ").concat(s,`; 608 } 609 610 .`).concat(ed,` { 611 margin-right: `).concat(l,"px ").concat(s,`; 612 } 613 614 .`).concat(Qc," .").concat(Qc,` { 615 right: 0 `).concat(s,`; 616 } 617 618 .`).concat(ed," .").concat(ed,` { 619 margin-right: 0 `).concat(s,`; 620 } 621 622 body[`).concat(ka,`] { 623 `).concat(XR,": ").concat(l,`px; 624 } 625`)},wy=function(){var e=parseInt(document.body.getAttribute(ka)||"0",10);return isFinite(e)?e:0},m4=function(){f.useEffect(function(){return document.body.setAttribute(ka,(wy()+1).toString()),function(){var e=wy()-1;e<=0?document.body.removeAttribute(ka):document.body.setAttribute(ka,e.toString())}},[])},p4=function(e){var t=e.noRelative,r=e.noImportant,s=e.gapMode,i=s===void 0?"margin":s;m4();var a=f.useMemo(function(){return d4(i)},[i]);return f.createElement(u4,{styles:h4(a,!t,i,r?"":"!important")})},Sp=!1;if(typeof window<"u")try{var yc=Object.defineProperty({},"passive",{get:function(){return Sp=!0,!0}});window.addEventListener("test",yc,yc),window.removeEventListener("test",yc,yc)}catch{Sp=!1}var $i=Sp?{passive:!1}:!1,f4=function(e){return e.tagName==="TEXTAREA"},x1=function(e,t){if(!(e instanceof Element))return!1;var r=window.getComputedStyle(e);return r[t]!=="hidden"&&!(r.overflowY===r.overflowX&&!f4(e)&&r[t]==="visible")},g4=function(e){return x1(e,"overflowY")},x4=function(e){return x1(e,"overflowX")},jy=function(e,t){var r=t.ownerDocument,s=t;do{typeof ShadowRoot<"u"&&s instanceof ShadowRoot&&(s=s.host);var i=v1(e,s);if(i){var a=y1(e,s),o=a[1],l=a[2];if(o>l)return!0}s=s.parentNode}while(s&&s!==r.body);return!1},v4=function(e){var t=e.scrollTop,r=e.scrollHeight,s=e.clientHeight;return[t,r,s]},y4=function(e){var t=e.scrollLeft,r=e.scrollWidth,s=e.clientWidth;return[t,r,s]},v1=function(e,t){return e==="v"?g4(t):x4(t)},y1=function(e,t){return e==="v"?v4(t):y4(t)},b4=function(e,t){return e==="h"&&t==="rtl"?-1:1},w4=function(e,t,r,s,i){var a=b4(e,window.getComputedStyle(t).direction),o=a*s,l=r.target,c=t.contains(l),d=!1,u=o>0,h=0,p=0;do{if(!l)break;var m=y1(e,l),y=m[0],b=m[1],w=m[2],g=b-w-a*y;(y||g)&&v1(e,l)&&(h+=g,p+=y);var v=l.parentNode;l=v&&v.nodeType===Node.DOCUMENT_FRAGMENT_NODE?v.host:v}while(!c&&l!==document.body||c&&(t.contains(l)||t===l));return(u&&Math.abs(h)<1||!u&&Math.abs(p)<1)&&(d=!0),d},bc=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},ky=function(e){return[e.deltaX,e.deltaY]},Ny=function(e){return e&&"current"in e?e.current:e},j4=function(e,t){return e[0]===t[0]&&e[1]===t[1]},k4=function(e){return` 626 .block-interactivity-`.concat(e,` {pointer-events: none;} 627 .allow-interactivity-`).concat(e,` {pointer-events: all;} 628`)},N4=0,Bi=[];function S4(e){var t=f.useRef([]),r=f.useRef([0,0]),s=f.useRef(),i=f.useState(N4++)[0],a=f.useState(g1)[0],o=f.useRef(e);f.useEffect(function(){o.current=e},[e]),f.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var b=ZR([e.lockRef.current],(e.shards||[]).map(Ny),!0).filter(Boolean);return b.forEach(function(w){return w.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),b.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var l=f.useCallback(function(b,w){if("touches"in b&&b.touches.length===2||b.type==="wheel"&&b.ctrlKey)return!o.current.allowPinchZoom;var g=bc(b),v=r.current,x="deltaX"in b?b.deltaX:v[0]-g[0],j="deltaY"in b?b.deltaY:v[1]-g[1],k,N=b.target,S=Math.abs(x)>Math.abs(j)?"h":"v";if("touches"in b&&S==="h"&&N.type==="range")return!1;var C=window.getSelection(),E=C&&C.anchorNode,I=E?E===N||E.contains(N):!1;if(I)return!1;var B=jy(S,N);if(!B)return!0;if(B?k=S:(k=S==="v"?"h":"v",B=jy(S,N)),!B)return!1;if(!s.current&&"changedTouches"in b&&(x||j)&&(s.current=k),!k)return!0;var R=s.current||k;return w4(R,w,b,R==="h"?x:j)},[]),c=f.useCallback(function(b){var w=b;if(!(!Bi.length||Bi[Bi.length-1]!==a)){var g="deltaY"in w?ky(w):bc(w),v=t.current.filter(function(k){return k.name===w.t
vendor: 5,020 bytes, line 628
628ype&&(k.target===w.target||w.target===k.shadowParent)&&j4(k.delta,g)})[0];if(v&&v.should){w.cancelable&&w.preventDefault();return}if(!v){var x=(o.current.shards||[]).map(Ny).filter(Boolean).filter(function(k){return k.contains(w.target)}),j=x.length>0?l(w,x[0]):!o.current.noIsolation;j&&w.cancelable&&w.preventDefault()}}},[]),d=f.useCallback(function(b,w,g,v){var x={name:b,delta:w,target:g,should:v,shadowParent:C4(g)};t.current.push(x),setTimeout(function(){t.current=t.current.filter(function(j){return j!==x})},1)},[]),u=f.useCallback(function(b){r.current=bc(b),s.current=void 0},[]),h=f.useCallback(function(b){d(b.type,ky(b),b.target,l(b,e.lockRef.current))},[]),p=f.useCallback(function(b){d(b.type,bc(b),b.target,l(b,e.lockRef.current))},[]);f.useEffect(function(){return Bi.push(a),e.setCallbacks({onScrollCapture:h,onWheelCapture:h,onTouchMoveCapture:p}),document.addEventListener("wheel",c,$i),document.addEventListener("touchmove",c,$i),document.addEventListener("touchstart",u,$i),function(){Bi=Bi.filter(function(b){return b!==a}),document.removeEventListener("wheel",c,$i),document.removeEventListener("touchmove",c,$i),document.removeEventListener("touchstart",u,$i)}},[]);var m=e.removeScrollBar,y=e.inert;return f.createElement(f.Fragment,null,y?f.createElement(a,{styles:k4(i)}):null,m?f.createElement(p4,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function C4(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const E4=t4(f1,S4);var Pg=f.forwardRef(function(e,t){return f.createElement(_u,Qr({},e,{ref:t,sideCar:E4}))});Pg.classNames=_u.classNames;var A4=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Fi=new WeakMap,wc=new WeakMap,jc={},Fh=0,b1=function(e){return e&&(e.host||b1(e.parentNode))},P4=function(e,t){return t.map(function(r){if(e.contains(r))return r;var s=b1(r);return s&&e.contains(s)?s:(console.error("aria-hidden",r,"in not contained inside",e,". Doing nothing"),null)}).filter(function(r){return!!r})},T4=function(e,t,r,s){var i=P4(t,Array.isArray(e)?e:[e]);jc[r]||(jc[r]=new WeakMap);var a=jc[r],o=[],l=new Set,c=new Set(i),d=function(h){!h||l.has(h)||(l.add(h),d(h.parentNode))};i.forEach(d);var u=function(h){!h||c.has(h)||Array.prototype.forEach.call(h.children,function(p){if(l.has(p))u(p);else try{var m=p.getAttribute(s),y=m!==null&&m!=="false",b=(Fi.get(p)||0)+1,w=(a.get(p)||0)+1;Fi.set(p,b),a.set(p,w),o.push(p),b===1&&y&&wc.set(p,!0),w===1&&p.setAttribute(r,"true"),y||p.setAttribute(s,"true")}catch(g){console.error("aria-hidden: cannot operate on ",p,g)}})};return u(t),l.clear(),Fh++,function(){o.forEach(function(h){var p=Fi.get(h)-1,m=a.get(h)-1;Fi.set(h,p),a.set(h,m),p||(wc.has(h)||h.removeAttribute(s),wc.delete(h)),m||h.removeAttribute(r)}),Fh--,Fh||(Fi=new WeakMap,Fi=new WeakMap,wc=new WeakMap,jc={})}},w1=function(e,t,r){r===void 0&&(r="data-aria-hidden");var s=Array.from(Array.isArray(e)?e:[e]),i=A4(e);return i?(s.push.apply(s,Array.from(i.querySelectorAll("[aria-live], script"))),T4(s,i,r,"aria-hidden")):function(){return null}},_4=Object.defineProperty,br=(e,t)=>_4(e,"name",{value:t,configurable:!0}),Tg="Dialog",[j1,g$]=Wt(Tg),[I4,dn]=j1(Tg),R4=br(e=>{const{__scopeDialog:t,children:r,open:s,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,l=f.useRef(null),c=f.useRef(null),[d,u]=vr({prop:s,defaultProp:i??!1,onChange:a,caller:Tg}),[h,p]=f.useState(0),[m,y]=f.useState(0);return n.jsx(I4,{scope:t,triggerRef:l,contentRef:c,contentId:nn(),titleId:nn(),descriptionId:nn(),titlePresent:h>0,descriptionPresent:m>0,setTitleCount:p,setDescriptionCount:y,open:d,onOpenChange:u,onOpenToggle:f.useCallback(()=>u(b=>!b),[u]),modal:o,children:r})},"Dialog"),k1="DialogPortal",[O4,N1]=j1(k1,{forceMount:void 0}),M4=br(e=>{const{__scopeDialog:t,forceMount:r,children:s,container:i}=e,a=dn(k1,t);return n.jsx(O4,{scope:t,forceMount:r,children:f.Children.map(s,o=>n.jsx(Wn,{present:r||a.open,children:n.jsx(ng,{asChild:!0,container:i,children:o})}))})},"DialogPortal"),Cp="DialogOverlay",S1=f.forwardRef(br(function(t,r){const s=N1(Cp,t.__scopeDialog),{forceMount:i=s.forceMount,...a}=t,o=dn(Cp,t.__scopeDialog);return o.modal?n.jsx(Wn,{present:i||o.open,children:n.jsx(L4,{...a,ref:r})}):null},"DialogOverlay")),D4=$n("DialogOverlay.RemoveScroll"),L4=f.forwardRef(br(function(t,r){const{__scopeDialog:s,...i}=t,a=dn(Cp,s),o=Ej(),l=ye(r,o);return n.jsx(Pg,{as:D4,allowPinchZoom:!0,shards:[a.contentRef],children:n.jsx(se.div,{"data-state":_g(a.open),...i,ref:l,style:{pointerEvents:"auto",...i.style}})})},"DialogOverlayImpl")),dl="DialogContent",C1=f.forwardRef(br(function(t,r){const s=N1(dl,t.__scopeDialog),{forceMount:i=s.forceMount,...a}=t,o=dn(dl,t.__scopeDialog);return n.jsx(Wn,{present:i||o.open,children:o.modal?n.jsx(H4,{...a,ref:r}):n.jsx($4,{...a,ref:r})})},"DialogContent")),H4=f.forwardRef(br(function(t,r){const s=dn(dl,t.__scopeDialog),i=f.useRef(null),a=ye(r,s.contentRef,i);return f.useEffect(()=>{const o=i.current;if(o)return w1(o)}
628,[]),n.jsx(E1,{...t,ref:a,trapFocus:s.open,disableOutsidePointerEvents:s.open,onCloseAutoFocus:te(t.onCloseAutoFocus,o=>{var l;o.preventDefault(),(l=s.triggerRef.current)==null||l.focus()}),onPointerDownOutside:te(t.onPointerDownOutside,o=>{const l=o.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0;(l.button===2||c)&&o.preventDefault()}),onFocusOutside:te(t.onFocusOutside,o=>o.preventDefault())})},"DialogContentModal")),$4=f.forwardRef(br(function(t,r){const s=dn(dl,t.__scopeDialog),i=f.useRef(!1),a=f.useRef(!1);return n.jsx(E1,{...t,ref:r,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{var l,c;(l=t.onCloseAutoFocus)==null||l.call(t,o),o.defaultPrevented||(i.current||(c=s.triggerRef.current)==null||c.focus(),o.preventDefault()),i.current=!1,a.current=!1},onInteractOutside:o=>{var d,u;(d=t.onInteractOutside)==null||d.call(t,o),o.defaultPrevented||(i.current=!0,o.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const l=o.target;((u=s.triggerRef.current)==null?void 0:u.contains(l))&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&a.current&&o.preventDefault()}})},"DialogContentNonModal")),E1=f.forwardRef(br(function(t,r){const{__scopeDialog:s,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,...l}=t,c=dn(dl,s);return Tu(),n.jsx(n.Fragment,{children:n.jsx(a1,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:a,onUnmountAutoFocus:o,children:n.jsx(mu,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionPresent?c.descriptionId:void 0,"aria-labelledby":c.titlePresent?c.titleId:void 0,"data-state":_g(c.open),...l,ref:r,deferPointerDownOutside:!0,onDismiss:()=>c.onOpenChange(!1)})})})},"DialogContentImpl")),B4="DialogTitle",A1=f.forwardRef(br(function(t,r){const{__scopeDialog:s,...i}=t,a=dn(B4,s),{setTitleCount:o}=a;return Ue(()=>(o(l=>l+1),()=>o(l=>l-1)),[o]),n.jsx(se.h2,{id:a.titleId,...i,ref:r})},"DialogTitle")),F4="DialogDescription",P1=f.forwardRef(br(function(t,r){const{__scopeDialog:s,...i}=t,a=dn(F4,s),{setDescriptionCount:o}=a;return Ue(()=>(o(l=>l+1),()=>o(l=>l-1)),[o]),n.jsx(se.p,{id:a.descriptionId,...i,ref:r})},"DialogDescription")),U4="DialogClose",V4=f.forwardRef(br(function(t,r){const{__scopeDialog:s,...i}=t,a=dn(U4,s);return n.jsx(se.button,{type:"button",...i,ref:r,onClick:te(t.onClick,()=>a.onOpenChange(!1))})},"DialogClose"));function _g(e){return e?"open":"closed"}br(_g,"getState");const Iu=R4,z4=M4,T1=f.forwardRef(({className:e,...t},r)=>n.jsx(S1,{ref:r,className:J("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));T1.displayName=S1.displayName;const Ll=f.forwardRef(({className:e,children:t,...r},s)=>n.jsxs(z4,{children:[n.jsx(T1,{}),n.jsxs(C1,{ref:s,className:J("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...r,children:[t,n.jsxs(V4,{className:"absolute right-4 top-4 roun
628ded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[n.jsx(Dl,{className:"h-4 w-4"}),n.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Ll.displayName=C1.displayName;const Hl=({className:e,...t})=>n.jsx("div",{className:J("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Hl.displayName="DialogHeader";const _1=({className:e,...t})=>n.jsx("div",{className:J("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});_1.displayName="DialogFooter";const Rs=f.forwardRef(({className:e,...t},r)=>n.jsx(A1,{ref:r,className:J("text-lg font-semibold leading-none tracking-tight",e),...t}));Rs.displayName=A1.displayName;const $l=f.forwardRef(({className:e,...t},r)=>n.jsx(P1,{ref:r,className:J("text-sm text-muted-foreground",e),...t}));$l.displayName=P1.displayName;var W4=Object.defineProperty,Os=(e,t)=>W4(e,"name",{value:t,configurable:!0}),Ig="Switch",[Z4,x$]=Wt(Ig),[q4,Rg]=Z4(Ig);function I1(e){const{__scopeSwitch:t,checked:r,children:s,defaultChecked:i,disabled:a,form:o,name:l,onCheckedChange:c,required:d,value:u="on",internal_do_not_use_render:h}=e,[p,m]=vr({prop:r,defaultProp:i??!1,onChange:c,caller:Ig}),[y,b]=f.useState(null),[w,g]=f.useState(null),v=f.useRef(!1),[x,j]=f.useReducer(S=>S+1,0),k=y?!!o||!!y.closest("form"):!0,N={checked:p,setChecked:m,disabled:a,control:y,setControl:b,name:l,form:o,value:u,hasConsumerStoppedPropagationRef:v,userInteractionCount:x,onUserInteraction:j,required:d,defaultChecked:i,isFormControl:k,bubbleInput:w,setBubbleInput:g};return n.jsx(q4,{scope:t,...N,children:O1(h)?h(N):s})}Os(I1,"SwitchProvider");var X4="SwitchTrigger",G4=f.forwardRef(Os(function({__scopeSwitch:t,onClick:r,...s},i){const{control:a,form:o,value:l,disabled:c,checked:d,required:u,setControl:h,setChecked:p,hasConsumerStoppedPropagationRef:m,onUserInteraction:y,isFormControl:b,bubbleInput:w}=Rg(X4,t),g=ye(i,h),v=f.useRef(d);return f.useEffect(()=>{const x=o?a==null?void 0:a.ownerDocument.getElementById(o):a==null?void 0:a.form;if(x instanceof HTMLFormElement){const j=Os(()=>p(v.current),"reset");return x.addEventListener("reset",j),()=>x.removeEventListener("reset",j)}},[a,o,p]),n.jsx(se.button,{type:"button",role:"switch","aria-checked":d,"aria-required":u,"data-state":Og(d),"data-disabled":c?"":void 0,disabled:c,value:l,...s,ref:g,onClick:te(r,x=>{y(),p(j=>!j),w&&b&&(m.current=x.isPropagationStopped(),m.current||x.stopPropagation())})})},"SwitchTrigger")),R1=f.forwardRef(Os(function(t,r){const{__scopeSwitch:s,name:i,checked:a,defaultChecked:o,required:l,disabled:c,value:d,onCheckedChange:u,form:h,...p}=t;return n.jsx(I1,{__scopeSwitch:s,checked:a,defaultChecked:o,disabled:c,required:l,onCheckedChange:u,name:i,form:h,value:d,internal_do_not_use_render:({isFormControl:m})=>n.jsxs(n.Fragment,{children:[n.jsx(G4,{...p,ref:r,__scopeSwitch:s}),m&&n.jsx(Q4,{__scopeSwitch:s})]})})},"Switch")),K4="SwitchThumb",Y4=f.forwardRef(Os(function(t,r){const{__scopeSwitch:s,...i}=t,a=Rg(K4,s);return n.jsx(se.span,{"data-state":Og(a.checked),"data-disabled":a.disabled?"":void 0,...i,ref:r})},"SwitchThumb")),J4="SwitchBubbleInput",Q4=f.forwardRef(Os(function({__scopeSwitch:t,onClick:r,...s},i){const{control:a,hasConsumerStoppedPropagationRef:o,userInteractionCount:l,checked:c,defaultChecked:d,required:u,disabled:h,name:p,value:m,form:y,bubbleInput:b,setBubbleInput:w}=Rg(J4,t),g=ye(i,w),v=Cu(a),x=f.useRef(!1),j=f.useRef(c),k=f.useRef(l);f.useEffect(()=>{const S=b;if(!S)return;const C=window.HTMLInputElement.prototype,I=Object.getOwnPropertyDescriptor(C,"checked").set,B=l!==k.current;k.current=l;const R=j.current!==c;j.current=c;const O=!(B&&o.current);if(R&&I){x.current=!B;const T=new Event("click",{bubbles:O});I.call(S,c),S.dispatchEvent(T),x.current=!1}},[b,c,o,l]);const N=f.useRef(c);return n.jsx(se.input,{type:"checkbox","aria-hidden":!0,defaultChecked:d??N.current,required:u,disabled:h,name:p,value:m,form:y,...s,tabIndex:-1,ref:g,onClick:te(r,S=>{x.current&&S.stopPropagation()}),style:{...s.style,...v,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})}
628,"SwitchBubbleInput"));function O1(e){return typeof e=="function"}Os(O1,"isFunction");function Og(e){return e?"checked":"unchecked"}Os(Og,"getState");const td=f.forwardRef(({className:e,...t},r)=>n.jsx(R1,{className:J("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50",e),...t,ref:r,children:n.jsx(Y4,{className:J("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));td.displayName=R1.displayName;const eO={essential:!0,analytics:!1,marketing:!1},Sy="hookz_cookie_consent",tO=()=>{const[e,t]=f.useState(!1),[r,s]=f.useState(!1),[i,a]=f.useState(eO);f.useEffect(()=>{if(!localStorage.getItem(Sy)){const h=setTimeout(()=>t(!0),1500);return()=>clearTimeout(h)}},[]);const o=u=>{localStorage.setItem(Sy,JSON.stringify(u)),t(!1),s(!1)},l=()=>{o({essential:!0,analytics:!0,marketing:!0})},c=()=>{o({essential:!0,analytics:!1,marketing:!1})},d=()=>{o(i)};return!e&&!r?null:n.jsxs(n.Fragment,{children:[e&&!r&&n.jsx("div",{className:"fixed bottom-0 left-0 right-0 z-[100] animate-in slide-in-from-bottom duration-500",children:n.jsx("div",{className:"border-t border-border/50 bg-background/95 backdrop-blur-xl shadow-2xl",children:n.jsx("div",{className:"container mx-auto px-4 sm:px-6 py-3 sm:py-4",children:n.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-3 sm:gap-4",children:[n.jsxs("div",{className:"flex items-start gap-2 sm:gap-3 flex-1 min-w-0",children:[n.jsx("div",{className:"p-1.5 sm:p-2 rounded-lg bg-primary/10 mt-0.5 flex-shrink-0",children:n.jsx(zP,{className:"h-4 w-4 sm:h-5 sm:w-5 text-brand-ink"})}),n.jsxs("div",{className:"flex-1 min-w-0",children:[n.jsx("p",{className:"text-sm text-foreground font-medium mb-0.5 sm:mb-1",children:"We value your privacy"}),n.jsxs("p",{className:"text-xs text-muted-foreground leading-snug line-clamp-2 sm:line-clamp-none",children:["We use cookies to enhance your experience and analyze site traffic.",n.jsx("span",{className:"hidden sm:inline",children:" You can manage your preferences or accept all cookies."})]})]})]}),n.jsxs("div",{className:"flex items-center gap-2 w-full sm:w-auto flex-shrink-0",children:[n.jsxs(M,{variant:"ghost",size:"sm",onClick:()=>s(!0),className:"text-xs gap-1.5 h-8 px-2 sm:px-3","aria-label":"Cookie settings",children:[n.jsx(ya,{className:"h-3.5 w-3.5"}),n.jsx("span",{className:"hidden sm:inline",children:"Settings"})]}),n.jsx(M,{variant:"outline",size:"sm",onClick:c,className:"text-xs h-8 px-2 sm:px-3 flex-1 sm:flex-none",children:"Decline"}),n.jsx(M,{size:"sm",onClick:l,className:"text-xs h-8 px-3 flex-1 sm:flex-none",children:"Accept All"})]})]})})})}),n.jsx(Iu,{open:r,onOpenChange:s,children:n.jsxs(Ll,{className:"sm:max-w-md bg-background border-border",children:[n.jsxs(Hl,{children:[n.jsxs(Rs,{className:"flex items-center gap-2 text-foreground",children:[n.jsx(Ce,{className:"h-5 w-5 text-brand-ink"}),"Cookie Preferences"]}),n.jsx($l,{children:"Manage how we use cookies on HookZ.ai. Essential cookies are always active as they are necessary for the site to function."})]}),n.jsxs("div",{className:"space-y-4 py-2",children:[n.jsxs("div",{className:"flex items-center justify-between p-3 rounded-lg border border-border/50 bg-muted/30",children:[n.jsxs("div",{className:"flex-1 pr-4",children:[n.jsx("p",{className:"text-sm font-medium text-foreground",children:"Essential Cookies"}),n.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Required for the website to function. Cannot be disabled."})]}),n.jsx(td,{checked:!0,disabled:!0,className:"opacity-60"})]}),n.jsxs("div",{className:"flex items-center justify-between p-3 rounded-lg border border-border/50 hover:border-primary/20 transition-colors",children:[n.jsxs("div",{className:"flex-1 pr-4",children:[n.jsx("p",{className:"text-sm font-medium text-foreground",children:"Analytics Co
628okies"}),n.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Help us understand how visitors interact with our website."})]}),n.jsx(td,{checked:i.analytics,onCheckedChange:u=>a(h=>({...h,analytics:u}))})]}),n.jsxs("div",{className:"flex items-center justify-between p-3 rounded-lg border border-border/50 hover:border-primary/20 transition-colors",children:[n.jsxs("div",{className:"flex-1 pr-4",children:[n.jsx("p",{className:"text-sm font-medium text-foreground",children:"Marketing Cookies"}),n.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Used to deliver relevant advertisements and track campaign performance."})]}),n.jsx(td,{checked:i.marketing,onCheckedChange:u=>a(h=>({...h,marketing:u}))})]})]}),n.jsxs(_1,{className:"flex-row gap-2 sm:gap-2",children:[n.jsx(M,{variant:"outline",size:"sm",onClick:c,className:"flex-1",children:"Decline All"}),n.jsx(M,{size:"sm",onClick:d,className:"flex-1",children:"Save Preferences"})]})]})})]})},ct=f.forwardRef(({className:e,type:t,...r},s)=>n.jsx("input",{type:t,className:J("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:s,...r}));ct.displayName="Input";var rO=Object.defineProperty,nO=(e,t)=>rO(e,"name",{value:t,configurable:!0}),sO=f.forwardRef(nO(function(t,r){return n.jsx(se.label,{...t,ref:r,onMouseDown:s=>{var a;s.target.closest("button, input, select, textarea")||((a=t.onMouseDown)==null||a.call(t,s),!s.defaultPrevented&&s.detail>1&&s.preventDefault())}})},"Label")),M1=sO;const iO=gu("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),Le=f.forwardRef(({className:e,...t},r)=>n.jsx(M1,{ref:r,className:J(iO(),e),...t}));Le.displayName=M1.displayName;var aO=Object.defineProperty,Un=(e,t)=>aO(e,"name",{value:t,configurable:!0}),Mg="Checkbox",[oO,v$]=Wt(Mg),[lO,Dg]=oO(Mg);function D1(e){const{__scopeCheckbox:t,checked:r,children:s,defaultChecked:i,disabled:a,form:o,name:l,onCheckedChange:c,required:d,value:u="on",internal_do_not_use_render:h}=e,[p,m]=vr({prop:r,defaultProp:i??!1,onChange:c,caller:Mg}),[y,b]=f.useState(null),[w,g]=f.useState(null),v=f.useRef(!1),[x,j]=f.useReducer(S=>S+1,0),k=y?!!o||!!y.closest("form"):!0,N={checked:p,disabled:a,setChecked:m,control:y,setControl:b,name:l,form:o,value:u,hasConsumerStoppedPropagationRef:v,userInteractionCount:x,onUserInteraction:j,required:d,defaultChecked:On(i)?!1:i,isFormControl:k,bubbleInput:w,setBubbleInput:g};return n.jsx(lO,{scope:t,...N,children:H1(h)?h(N):s})}Un(D1,"CheckboxProvider");var cO="CheckboxTrigger",dO=f.forwardRef(Un(function({__scopeCheckbox:t,onKeyDown:r,onClick:s,...i},a){const{control:o,value:l,disabled:c,checked:d,required:u,setControl:h,setChecked:p,hasConsumerStoppedPropagationRef:m,onUserInteraction:y,isFormControl:b,bubbleInput:w}=Dg(cO,t),g=ye(a,h),v=f.useRef(d);return f.useEffect(()=>{const x=o==null?void 0:o.form;if(x){const j=Un(()=>p(v.current),"reset");return x.addEventListener("reset",j),()=>x.removeEventListener("reset",j)}},[o,p]),n.jsx(se.button,{type:"button",role:"checkbox","aria-checked":On(d)?"mixed":d,"aria-required":u,"data-state":Lg(d),"data-disabled":c?"":void 0,disabled:c,value:l,...i,ref:g,onKeyDown:te(r,x=>{x.key==="Enter"&&x.preventDefault()}),onClick:te(s,x=>{y(),p(j=>On(j)?!0:!j),w&&b&&(m.current=x.isPropagationStopped(),m.current||x.stopPropagation())})})},"CheckboxTrigger")),L1=f.forwardRef(Un(function(t,r){const{__scopeCheckbox:s,name:i,checked:a,defaultChecked:o,required:l,disabled:c,value:d,onCheckedChange:u,form:h,...p}=t;return n.jsx(D1,{__scopeCheckbox:s,checked:a,defaultChecked:o,disabled:c,required:l,onCheckedChange:u,name:i,form:h,value:d,internal_do_not_use_render:({isFormControl:m})=>n.jsxs(n.Fragment,{children:[n.jsx(dO,{...p,ref:r,__scopeCheckbox:s}),m&&n.jsx(pO,{__scopeCheckbox:s})]})})},"Checkbox")),uO="CheckboxIndicator",hO=f.forwardRef(Un(function(t,r){const{__scopeCheckbox:s,forceMount:i,...a}=t,o=Dg(uO,s);return n.jsx(Wn,{present:i||On(o.checked)||o.checked===!0,children:n.jsx(se.span,{"data-state":Lg(o.checked),"data-disabled":o.disabled?"":void 0,...a,ref:r,style:{pointerEvents:"none",...t.style}})})},"CheckboxIndicator")),mO="CheckboxBubbleInput",pO=f.forwardRef(Un(function({__scopeCheckbox:t,onClick:r,...s},i){const{control:a,hasConsumerStoppedPropagationRef:o,userInteractionCount:l,checked:c,defaultChecked:d,required:u,disabled:h,name:p,value:m,form:y,bubbleInput:b,setBubbleInput:w}=Dg(mO,t),g=ye(i,w),v=Cu(a),x=f.useRef(!1),j=f.useRef(c),k=f.useRef(l);f.useEffect(()=>{const S=b;if(!S)return;const C=window.HTMLInputElement.prototype,I=Object.getOwnPropertyDescriptor(C,"checked").set,B=l!==k.current;k.current=l;const R=j.current!==c;j.current=c;const O=!(B&&o.current);if(R&&I){x.current=!B;const T=new Event("click",{bubbles:O});S.indeterminate=On(c),I.call(S,On(c)?!1:c),S.dispatchEvent(T),x.current=!1}},[b,c,o,l]);const N=f.useRef(On(c)?!1:c);return n.jsx(se.input,{type:"checkbox","aria-hidden":!0,defaultChecked:d??N.current,required:u,disabled:h,name:p,value:m,form:y,...s,tabIndex:-1,ref:g,onClick:te(r,S=>{x.current&&S.stopPropagation()}),style:{...s.style,...v,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})},"CheckboxBubbleInput"));function H1(e){return typeof e=="function"}Un(H1,"isFunction");function On(e){return e==="indeterminate"}Un(On,"isIndeterminate");function Lg(e){return On(e)?"indeterminate":e?"checked":"unchecked"}Un(Lg,"getState");const la=f.forwardRef(({className:e,...t},r)=>n.jsx(L1,{ref:r,className:J("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:n.jsx(hO,{className:J("flex items-center justify-center text-current"),children:n.jsx(vu,{className:"h-4 w-4"})})}));la.displayName=L1.displayName;const Hg=f.forwardRef(({className:e,...t},r)=>n.jsx("textarea",{className:J("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm r
628ing-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:r,...t}));Hg.displayName="Textarea";const Cy=[{id:"hookz-cx",label:"HookZ CX"},{id:"hookz-connect",label:"HookZ Connect"},{id:"hookz-voice-edge",label:"HookZ Voice Edge"},{id:"hookz-meet",label:"HookZ Meet"},{id:"hookz-infrax",label:"HookZ InfraX"},{id:"corex",label:"CoreX"},{id:"edgex",label:"EdgeX"}],he=({children:e})=>{const[t,r]=f.useState(!1),[s,i]=f.useState(!1),[a,o]=f.useState([]),{toast:l}=_l(),c=h=>{o(p=>p.includes(h)?p.filter(m=>m!==h):[...p,h])},d=h=>{var N,S,C,E,I;h.preventDefault();const p=h.currentTarget,m=new FormData(p),y=(N=m.get("businessName"))==null?void 0:N.trim(),b=(S=m.get("email"))==null?void 0:S.trim(),w=(C=m.get("contactName"))==null?void 0:C.trim(),g=(E=m.get("phone"))==null?void 0:E.trim(),v=(I=m.get("notes"))==null?void 0:I.trim();if(!y||!b||!w){l({title:"Please fill in all required fields.",variant:"destructive"});return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(b)){l({title:"Please enter a valid email address.",variant:"destructive"});return}if(a.length===0){l({title:"Please select at least one product.",variant:"destructive"});return}const x=a.map(B=>{var R;return(R=Cy.find(O=>O.id===B))==null?void 0:R.label}).filter(Boolean).join(", "),j=encodeURIComponent(`Demo Request â ${y}`),k=encodeURIComponent(`Business: ${y} 629Contact: ${w} 630Email: ${b} 631Phone: ${g||"N/A"} 632Products: ${x} 633 634Notes: 635${v||"â"}`);window.open(`mailto:[email protected]?subject=${j}&body=${k}`,"_self"),i(!0)},u=h=>{r(h),h||(setTimeout(()=>i(!1),300),o([]))};return n.jsxs(Iu,{open:t,onOpenChange:u,children:[n.jsx("div",{onClick:()=>r(!0),children:e}),n.jsx(Ll,{className:"sm:max-w-lg border-border/50 bg-card max-h-[90vh] overflow-y-auto",children:s?n.jsxs("div",{className:"py-8 text-center space-y-4",children:[n.jsx(Ol,{className:"h-12 w-12 text-brand-ink mx-auto"}),n.jsx(Rs,{className:"text-2xl",children:"Thank You!"}),n.jsx("p",{className:"text-muted-foreground",children:"Our sales team will reach out within 24 hours to schedule your demo."}),n.jsx(M,{variant:"outline",onClick:()=>u(!1),children:"Close"})]}):n.jsxs(n.Fragment,{children:[n.jsxs(Hl,{children:[n.jsx(Rs,{className:"text-xl",children:"Book a Demo"}),n.jsx($l,{children:"Tell us about your business and we'll tailor a demo to your needs."})]}),n.jsxs("form",{onSubmit:d,className:"space-y-4 mt-2",children:[n.jsxs("div",{className:"grid sm:grid-cols-2 gap-4",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{htmlFor:"businessName",children:"Business Name *"}),n.jsx(ct,{id:"businessName",name:"businessName",placeholder:"Acme Corp",maxLength:100,required:!0})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{htmlFor:"contactName",children:"Contact Name *"}),n.jsx(ct,{id:"contactName",name:"contactName",placeholder:"Jane Smith",maxLength:100,required:!0})]})]}),n.jsxs("div",{className:"grid sm:grid-cols-2 gap-4",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{htmlFor:"email",children:"Business Email *"}),n.jsx(ct,{id:"email",name:"email",type:"email",placeholder:"[email protected]",maxLength:255,required:!0})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{htmlFor:"phone",children:"Phone"}),n.jsx(ct,{id:"phone",name:"phone",type:"tel",placeholder:"+1 (555) 000-0000",maxLength:20})]})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{children:"Products of Interest *"}),n.jsx("div",{className:"grid grid-cols-2 gap-2",children:Cy.map(h=>n.jsxs("label",{className:"flex items-center gap-2 rounded-lg border border-border/50 p-2.5 cursor-pointer hover:border-primary/30 transition-colors has-[:checked]:border-primary/50 has-[:checked]:bg-primary/5",children:[n.jsx(la,{checked:a.includes(h.id),onCheckedChange:()=>c(h.id)}),n.jsx("span",{className:"text-sm",children:h.label})]},h.id))})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{htmlFor:"notes",children:"Additional Notes"}),n.jsx(Hg,{id:"notes",name:"notes",placeholder:"Tell us about your use case...",maxLength:1e3,rows:3})]}),n.jsxs(M,{type:"submit",size:"lg",className:"w-full group",children:["Request Demo",n.jsx(K,{className:"h-4 w-4 group-hover:translate-x-1 transition-transform"})]})]})]})})]})},fO=()=>{const[e,t]=f.useState(!1),r=f.useRef(null),s=()=>{r.current&&clearTimeout(r.current),t(!0)},i=()=>{r.current&&clearTimeout(r.current),r.current=setTimeout(()=>t(!1),120)},a=[{title:"Enterprise Communications",description:"CCaaS, CPaaS, SBCaaS unified",href:"/enterprise-communications",products:[{name:"HookZ CX",tag:"CCaaS",icon:Jt,href:"/products/ho
635okz-cx"},{name:"HookZ Connect",tag:"CPaaS",icon:Tt,href:"/products/hookz-connect"},{name:"HookZ Voice Edge",tag:"SBCaaS",icon:Et,href:"/products/hookz-voice-edge"},{name:"HookZ Meet",tag:"Video",icon:Pi,href:"/enterprise-communications"}]},{title:"Distributed Infrastructure",description:"Alternative to VMware & Nutanix",href:"/products/distributed-infrastructure",products:[{name:"Edge Cloud & Edge AI",tag:"Distributed",icon:Ie,href:"/edge-cloud"},{name:"HookZ InfraX",tag:"Platform",icon:Ve,href:"/products/distributed-infrastructure"},{name:"CoreX",tag:"DC",icon:Te,href:"/products/corex"},{name:"EdgeX",tag:"Edge",icon:Ie,href:"/products/edgex"}]}];return n.jsxs("div",{className:"static",onMouseEnter:s,onMouseLeave:i,onFocusCapture:s,onBlurCapture:i,children:[n.jsxs(V,{to:"/products",className:"flex items-center gap-1 py-5 text-sm text-muted-foreground hover:text-foreground transition-colors",children:["Products",n.jsx(wi,{className:`w-4 h-4 transition-transform duration-200 ${e?"rotate-180":""}`})]}),n.jsx("div",{className:`absolute top-full left-4 right-4 pt-2 transform-gpu transition-[opacity,transform] duration-200 ease-out motion-reduce:transition-none ${e?"opacity-100 translate-y-0 pointer-events-auto":"opacity-0 -translate-y-1 pointer-events-none"}`,"aria-hidden":!e,style:{willChange:"opacity, transform"},children:n.jsxs("div",{className:"w-[min(640px,calc(100vw-2rem))] mx-auto p-6 rounded-2xl border border-border bg-card shadow-2xl shadow-black/20",children:[n.jsx("div",{className:"grid grid-cols-2 gap-6",children:a.map(o=>n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{children:[n.jsx("h3",{className:"font-bold text-foreground",children:o.title}),n.jsx("p",{className:"text-xs text-muted-foreground",children:o.description})]}),n.jsx("div",{className:"space-y-2",children:o.products.map(l=>{const c=n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"w-8 h-8 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(l.icon,{className:"w-4 h-4 text-brand-ink"})}),n.jsx("div",{className:"flex-1",children:n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"text-sm font-medium",children:l.name}),n.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-secondary text-muted-foreground",children:l.tag})]})})]});return l.href?n.jsx(V,{to:l.href,className:"flex items-center gap-3 p-2 rounded-lg hover:bg-secondary/50 transition-colors cursor-pointer",children:c},l.name):n.jsx("div",{className:"flex items-center gap-3 p-2 rounded-lg hover:bg-secondary/50 transition-colors cursor-pointer",children:c},l.name)})}),n.jsxs(V,{to:o.href,className:"inline-flex items-center gap-1 text-xs text-brand-ink hover:underline",children:["View all",n.jsx(K,{className:"w-3 h-3"})]})]},o.title))}),n.jsx("div",{className:"mt-6 pt-4 border-t border-border",children:n.jsxs(V,{to:"/products",className:"flex items-center justify-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors",children:["View all products",n.jsx(K,{className:"w-4 h-4"})]})})]})})]})},gO=()=>{const[e,t]=f.useState(!1),r=f.useRef(null),s=()=>{r.current&&clearTimeout(r.current),t(!0)},i=()=>{r.current&&clearTimeout(r.current),r.current=setTimeout(()=>t(!1),120)},a=[{title:"Enterprise Communications",description:"Unified communications solutions",href:"/solutions/enterprise-communications",solutions:[{name:"Contact Center",description:"Omnichannel customer engagement",icon:Br,href:"/solutions/comms/contact-center"},{name:"Unified Communications",description:"Voice, video & messaging",icon:Pi,href:"/solutions/comms/unified-communications"},{name:"Communications API",description:"Embed comms in your apps",icon:kt,href:"/solutions/comms/cpaas-integration"},{name:"SBC as a Service",description:"Enterprise SBC without the burden",icon:Ce,href:"/solutions/comms/sbc-as-a-service"},{name:"Global SIP",description:"Global PSTN reach for enterprise voice",icon:kt,href:"/solutions/comms/global-sip"}]},{title:"Distributed Infrastructure",description:"Edge & data center solutions",href:"/solutions/distributed-infrastru
635cture",solutions:[{name:"Private Cloud",description:"CoreX enterprise cloud",icon:st,href:"/solutions/infra/private-cloud"},{name:"Managed VMaaS",description:"VM as a Service",icon:Te,href:"/solutions/infra/managed-vmaas"},{name:"GPU as a Service",description:"AI & ML workloads",icon:Ve,href:"/solutions/infra/gpu-as-a-service"},{name:"Retail in a Box",description:"EdgeX for retail",icon:ba,href:"/solutions/edge/retail-in-a-box"},{name:"Hospital in a Box",description:"EdgeX for healthcare",icon:ut,href:"/solutions/edge/hospital-in-a-box"},{name:"Utility in a Box",description:"EdgeX for substations",icon:on,href:"/solutions/edge/utility-in-a-box"},{name:"Vehicle in a Box",description:"EdgeX for fleets",icon:il,href:"/solutions/edge/vehicle-in-a-box"},{name:"Bank in a Box",description:"EdgeX for banking",icon:ak,href:"/solutions/edge/bank-in-a-box"},{name:"Factory in a Box",description:"EdgeX for manufacturing",icon:Ua,href:"/solutions/edge/factory-in-a-box"}]}];return n.jsxs("div",{className:"static",onMouseEnter:s,onMouseLeave:i,onFocusCapture:s,onBlurCapture:i,children:[n.jsxs(V,{to:"/solutions",className:"flex items-center gap-1 py-5 text-sm text-muted-foreground hover:text-foreground transition-colors",children:["Solutions",n.jsx(wi,{className:`w-4 h-4 transition-transform duration-200 ${e?"rotate-180":""}`})]}),n.jsx("div",{className:`absolute top-full left-4 right-4 pt-2 transform-gpu transition-[opacity,transform] duration-200 ease-out motion-reduce:transition-none ${e?"opacity-100 translate-y-0 pointer-events-auto":"opacity-0 -translate-y-1 pointer-events-none"}`,"aria-hidden":!e,style:{willChange:"opacity, transform"},children:n.jsxs("div",{className:"w-[min(760px,calc(100vw-2rem))] mx-auto p-6 rounded-2xl border border-border bg-card shadow-2xl shadow-black/20",children:[n.jsx("div",{className:"grid grid-cols-2 gap-8",children:a.map(o=>n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{children:[n.jsx("h3",{className:"font-bold text-foreground",children:o.title}),n.jsx("p",{className:"text-xs text-muted-foreground",children:o.description})]}),n.jsx("div",{className:"space-y-1",children:o.solutions.map(l=>n.jsxs(V,{to:l.href,className:"flex items-center gap-3 p-2 rounded-lg hover:bg-secondary/50 transition-colors",children:[n.jsx("div",{className:"w-8 h-8 rounded-lg bg-brand/10 border border-brand/20 flex items-center justify-center shrink-0",children:n.jsx(l.icon,{className:"w-4 h-4 text-brand-ink"})}),n.jsxs("div",{className:"flex-1",children:[n.jsx("span",{className:"text-sm font-medium block",children:l.name}),n.jsx("span",{className:"text-xs text-muted-foreground",children:l.description})]})]},l.name))}),n.jsxs(V,{to:o.href,className:"inline-flex items-center gap-1 text-xs text-brand-ink hover:underline",children:["View all solutions",n.jsx(K,{className:"w-3 h-3"})]})]},o.title))}),n.jsx("div",{className:"mt-6 pt-4 border-t border-border",children:n.jsxs(V,{to:"/solutions",className:"flex items-center justify-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors",children:["View all solutions",n.jsx(K,{className:"w-4 h-4"})]})})]})})]})},xO="/__l5e/assets-v1/d9cd0c9a-4005-4fb9-8719-4a580432c282/hookz-logo.png",vO={url:xO},Bl="/hookz-logo.png",yO=vO.url;function Fl(e){$1(e.currentTarget)}function Ul(e){e&&e.complete&&e.naturalWidth===0&&$1(e)}function $1(e){e.dataset.fallbackApplied!=="true"&&(e.dataset.fallbackApplied="true",e.src=yO)}const bO=Symbol.for("@supabase/supabase-js.traceContextExtractor");function wO(){return globalThis[bO]}function jO(e,t,r,s){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function l(u){try{d(s.next(u))}catch(h){o(h)}}function c(u){try{d(s.throw(u))}catch(h){o(h)}}function d(u){u.done?a(u.value):i(u.value).then(l,c)}d((s=s.apply(e,t||[])).next())})}const kO=e=>e?(...t)=>e(...t):(...t)=>fetch(...t);class $g extends Error{constructor(t,r="FunctionsError",s){super(t),this.name=r,this.context=s}toJSON(){return{name:this.name,message:this.message,context:this.context}}}class NO extends $g{constructor(t){super("Failed to send a request to the Edge Function","FunctionsFetchError",t)}}class Ey extends $g{constructor(t){super("Relay Error invoking the Edge Function","FunctionsRelayError",t)}}class Ay extends $g{constructor(t){super("Edge Function returned a non-2xx status code","FunctionsHttpError",t)}}var Ep;(function(e){e.Any="any",e.ApNortheast1="ap-northeast-1",e.ApNortheast2="ap-northeast-2",e.ApSouth1="ap-south-1",e.ApSoutheast1="ap-southeast-1",e.ApSoutheast2="ap-southeast-2",e.CaCentral1="ca-central-1",e.EuCentral1="eu-central-1",e.EuWest1="eu-west-1",e.EuWest2="eu-west-2",e.EuWest3="eu-west-3",e.SaEast1="sa-east-1",e.UsEast1="us-east-1",e.UsWest1="us-west-1",e.UsWest2="us-west-2"})(Ep||(Ep={}));class SO{constructor(t,{headers:r={},customFetch:s,region:i=Ep.Any}={}){this.url=t,this.headers=r,this.region=i,this.fetch=kO(s)}setAuth(t){this.headers.Authorization=`Bearer ${t}`}invoke(t){return jO(this,arguments,void 0,function*(r,s={}){var i,a;let o,l,c;try{const{headers:d,method:u,body:h,signal:p,timeout:m}=s;let y={},{region:b}=s;b||(b=this.region);const w=new URL(`${this.url}/${r}`);b&&b!=="any"&&(y["x-region"]=b,w.searchParams.set("forceFunctionRegion",b));let g;const v=!!d&&Object.keys(d).some(C=>C.toLowerCase()==="content-type");h&&!v?typeof Blob<"u"&&h instanceof Blob||h instanceof ArrayBuffer?(y["Content-Type"]="application/octet-stream",g=h):typeof h=="string"?(y["Content-Type"]="text/plain",g=h):typeof FormData<"u"&&h instanceof FormData?g=h:(y["Content-Type"]="application/json",g=JSON.stringify(h)):h&&typeof h!="string"&&!(typeof Blob<"u"&&h instanceof Blob)&&!(h instanceof ArrayBuffer)&&!(typeof FormData<"u"&&h instanceof FormData)?g=JSON.stringify(h):g=h;let x=p;m&&(l=new AbortController,o=setTimeout(()=>l.abort(),m),p?(x=l.signal,c=()=>l.abort(),p.addEventListener("abort",c)):x=l.signal);const j=yield this.fetch(w.toString(),{method:u||"POST",headers:Object.assign(Object.assign(Object.assign({},y),this.headers),d),body:g,signal:x}).catch(C=>{throw new NO(C)}),k=j.headers.get("x-relay-error");
635if(k&&k==="true")throw new Ey(j);if(!j.ok)throw new Ay(j);let N=((i=j.headers.get("Content-Type"))!==null&&i!==void 0?i:"text/plain").split(";")[0].trim().toLowerCase(),S;return N==="application/json"?S=yield j.json():N==="application/octet-stream"||N==="application/pdf"?S=yield j.blob():N==="text/event-stream"?S=j:N==="multipart/form-data"?S=yield j.formData():S=yield j.text(),{data:S,error:null,response:j}}catch(d){return{data:null,error:d,response:d instanceof Ay||d instanceof Ey?d.context:void 0}}finally{o&&clearTimeout(o),c&&((a=s.signal)===null||a===void 0||a.removeEventListener("abort",c))}})}}const B1=3,Py=e=>Math.min(1e3*2**e,3e4),CO=[520,503],F1=["GET","HEAD","OPTIONS"];var Uh=class extends Error{constructor(e){super(e.message),this.name="PostgrestError",this.details=e.details,this.hint=e.hint,this.code=e.code}toJSON(){return{name:this.name,message:this.message,details:this.details,hint:this.hint,code:this.code}}};function ul(e){"@babel/helpers - typeof";return ul=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ul(e)}function EO(e,t){if(ul(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var s=r.call(e,t);if(ul(s)!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function AO(e){var t=EO(e,"string");return ul(t)=="symbol"?t:t+""}function PO(e,t,r){return(t=AO(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ty(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,s)}return r}function ca(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Ty(Object(r),!0).forEach(function(s){PO(e,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ty(Object(r)).forEach(function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(r,s))})}return e}function _y(e,t){return new Promise(r=>{if(t!=null&&t.aborted){r();return}const s=setTimeout(()=>{t==null||t.removeEventListener("abort",i),r()},e);function i(){clearTimeout(s),r()}t==null||t.addEventListener("abort",i)})}function TO(e,t,r,s){return!(!s||r>=B1||!F1.includes(e)||!CO.includes(t))}var _O=class{constructor(e){var t,r,s,i,a;this.shouldThrowOnError=!1,this.retryEnabled=!0,this.method=e.method,this.url=e.url,this.headers=new Headers(e.headers),this.schema=e.schema,this.body=e.body,this.shouldThrowOnError=(t=e.shouldThrowOnError)!==null&&t!==void 0?t:!1,this.signal=e.signal,this.isMaybeSingle=(r=e.isMaybeSingle)!==null&&r!==void 0?r:!1,this.shouldStripNulls=(s=e.shouldStripNulls)!==null&&s!==void 0?s:!1,this.urlLengthLimit=(i=e.urlLengthLimit)!==null&&i!==void 0?i:8e3,this.retryEnabled=(a=e.retry)!==null&&a!==void 0?a:!0,e.fetch?this.fetch=e.fetch:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}stripNulls(){if(this.headers.get("Accept")==="text/csv")throw new Error("stripNulls() cannot be used with csv()");return this.shouldStripNulls=!0,this}setHeader(e,t){return this.headers=new Headers(this.headers),this.headers.set(e,t),this}retry(e){return this.retryEnabled=e,this}then(e,t){var r=this;if(this.schema===void 0||(["GET","HEAD"].includes(this.method)?this.headers.set("Accept-Profile",this.schema):this.headers.set("Content-Profile",this.schema)),this.method!=="GET"&&this.method!=="HEAD"&&this.headers.set("Content-Type","application/json"),this.shouldStripNulls){const o=this.headers.get("Accept");o==="application/vnd.pgrst.object+json"?this.headers.set("Accept","application/vnd.pgrst.object+json;nulls=stripped"):(!o||o==="application/json")&&this.headers.set("Accept","application/vnd.pgrst.array+json;nulls=stripped")}const s=this.fetch;let a=(async()=>{let o=0;for(;;){const d={};r.headers.forEach((h,p)=>{d[p]=h}),o>0&&(d["X-Retry-Count"]=String(o));let u;
635try{u=await s(r.url.toString(),{method:r.method,headers:d,body:JSON.stringify(r.body,(h,p)=>typeof p=="bigint"?p.toString():p),signal:r.signal})}catch(h){if((h==null?void 0:h.name)==="AbortError"||(h==null?void 0:h.code)==="ABORT_ERR"||!F1.includes(r.method))throw h;if(r.retryEnabled&&o<B1){const p=Py(o);o++,await _y(p,r.signal);continue}throw h}if(TO(r.method,u.status,o,r.retryEnabled)){var l,c;const h=(l=(c=u.headers)===null||c===void 0?void 0:c.get("Retry-After"))!==null&&l!==void 0?l:null,p=h!==null?Math.max(0,parseInt(h,10)||0)*1e3:Py(o);await u.text(),o++,await _y(p,r.signal);continue}return await r.processResponse(u)}})();return this.shouldThrowOnError||(a=a.catch(o=>{var l;let c="",d="",u="";const h=o==null?void 0:o.cause;if(h){var p,m,y,b;const v=(p=h==null?void 0:h.message)!==null&&p!==void 0?p:"",x=(m=h==null?void 0:h.code)!==null&&m!==void 0?m:"";c=`${(y=o==null?void 0:o.name)!==null&&y!==void 0?y:"FetchError"}: ${o==null?void 0:o.message}`,c+=` 636 637Caused by: ${(b=h==null?void 0:h.name)!==null&&b!==void 0?b:"Error"}: ${v}`,x&&(c+=` (${x})`),h!=null&&h.stack&&(c+=` 638${h.stack}`)}else{var w;c=(w=o==null?void 0:o.stack)!==null&&w!==void 0?w:""}const g=this.url.toString().length;return(o==null?void 0:o.name)==="AbortError"||(o==null?void 0:o.code)==="ABORT_ERR"?(u="",d="Request was aborted (timeout or manual cancellation)",g>this.urlLengthLimit&&(d+=`. Note: Your request URL is ${g} characters, which may exceed server limits. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [many IDs])), consider using an RPC function to pass values server-side.`)):((h==null?void 0:h.name)==="HeadersOverflowError"||(h==null?void 0:h.code)==="UND_ERR_HEADERS_OVERFLOW")&&(u="",d="HTTP headers exceeded server limits (typically 16KB)",g>this.urlLengthLimit&&(d+=`. Your request URL is ${g} characters. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [200+ IDs])), consider using an RPC function instead.`)),{success:!1,error:{message:`${(l=o==null?void 0:o.name)!==null&&l!==void 0?l:"FetchError"}: ${o==null?void 0:o.message}`,details:c,hint:d,code:u},data:null,count:null,status:0,statusText:""}})),a.then(e,t)}async processResponse(e){var t=this;let r=null,s=null,i=null,a=e.status,o=e.statusText;if(e.ok){var l,c;if(t.method!=="HEAD"){var d;const m=await e.text();if(m!=="")if(t.headers.get("Accept")==="text/csv")s=m;else if(t.headers.get("Accept")&&(!((d=t.headers.get("Accept"))===null||d===void 0)&&d.includes("application/vnd.pgrst.plan+text")))s=m;else try{s=JSON.parse(m)}catch{if(r={message:m},s=null,t.shouldThrowOnError)throw new Uh({message:m,details:"",hint:"",code:""})}}const h=(l=t.headers.get("Prefer"))===null||l===void 0?void 0:l.match(/count=(exact|planned|estimated)/),p=(c=e.headers.get("content-range"))===null||c===void 0?void 0:c.split("/");if(h&&p&&p.length>1&&(i=parseInt(p[1])),t.isMaybeSingle&&Array.isArray(s))if(s.length>1){if(r={code:"PGRST116",details:`Results contain ${s.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},s=null,i=null,a=406,o="Not Acceptable",t.shouldThrowOnError){var u;throw new Uh(ca(ca({},r),{},{hint:(u=r.hint)!==null&&u!==void 0?u:""}))}}else s.length===1?s=s[0]:s=null}else{const h=await e.text();try{r=JSON.parse(h),Array.isArray(r)&&e.status===404&&(s=[],r=null,a=200,o="OK")}catch{e.status===404&&h===""?(a=204,o="No Content"):r={message:h}}if(r&&t.shouldThrowOnError)throw new Uh(r)}return{success:r===null,error:r,data:s,count:i,status:a,statusText:o}}returns(){return this}overrideTypes(){return this}},IO=class extends _O{throwOnError(){return super.throwOnError()}select(e){let t=!1;const r=(e??"*").split("").map(s=>/\s/.test(s)&&!t?"":(s==='"'&&(t=!t),s)).join("");return this.url.searchParams.set("select",r),this.headers.append("Prefer","return=representation"),this}order(e,{ascending:t=!0,nullsFirst:r,foreignTable:s,referencedTable:i=s}={}){const a=i?`${i}.order`:"order",o=this.url.searchParams.get(a);return this.url.searchParams.set(a,`${o?`${o},`:""}${e}.${t?"asc":"desc"}${r===void 0?"":r?".nullsfirst":".nullslast"}`),this}limit(e,{foreignTable:t,referencedTable:r=t}={}){const s=typeof r>"u"?"limit":`${r}.limit`;return this.url.searchParams.set(s,`${e}`),this}range(e,t,{foreignTable:r,referencedTable:s=r}={}){const i=typeof s>"u"?"offset":`${s}.offset`,a=typeof s>"u"?"limit":`${s}.limit`;return this.url.searchParams.set(i,`${e}`),this.url.searchParams.set(a,`${t-e+1}`),this}abortSignal(e){return this.signal=e,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}
638explain({analyze:e=!1,verbose:t=!1,settings:r=!1,buffers:s=!1,wal:i=!1,format:a="text"}={}){var o;const l=[e?"analyze":null,t?"verbose":null,r?"settings":null,s?"buffers":null,i?"wal":null].filter(Boolean).join("|"),c=(o=this.headers.get("Accept"))!==null&&o!==void 0?o:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${a}; for="${c}"; options=${l};`),a==="json"?this:this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(e){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${e}`),this}};const Iy=new RegExp("[,()]");var Xi=class extends IO{throwOnError(){return super.throwOnError()}eq(e,t){return this.url.searchParams.append(e,`eq.${t}`),this}neq(e,t){return this.url.searchParams.append(e,`neq.${t}`),this}gt(e,t){return this.url.searchParams.append(e,`gt.${t}`),this}gte(e,t){return this.url.searchParams.append(e,`gte.${t}`),this}lt(e,t){return this.url.searchParams.append(e,`lt.${t}`),this}lte(e,t){return this.url.searchParams.append(e,`lte.${t}`),this}like(e,t){return this.url.searchParams.append(e,`like.${t}`),this}likeAllOf(e,t){return this.url.searchParams.append(e,`like(all).{${t.join(",")}}`),this}likeAnyOf(e,t){return this.url.searchParams.append(e,`like(any).{${t.join(",")}}`),this}ilike(e,t){return this.url.searchParams.append(e,`ilike.${t}`),this}ilikeAllOf(e,t){return this.url.searchParams.append(e,`ilike(all).{${t.join(",")}}`),this}ilikeAnyOf(e,t){return this.url.searchParams.append(e,`ilike(any).{${t.join(",")}}`),this}regexMatch(e,t){return this.url.searchParams.append(e,`match.${t}`),this}regexIMatch(e,t){return this.url.searchParams.append(e,`imatch.${t}`),this}is(e,t){return this.url.searchParams.append(e,`is.${t}`),this}isDistinct(e,t){return this.url.searchParams.append(e,`isdistinct.${t}`),this}in(e,t){const r=Array.from(new Set(t)).map(s=>typeof s=="string"&&Iy.test(s)?`"${s}"`:`${s}`).join(",");return this.url.searchParams.append(e,`in.(${r})`),this}notIn(e,t){const r=Array.from(new Set(t)).map(s=>typeof s=="string"&&Iy.test(s)?`"${s}"`:`${s}`).join(",");return this.url.searchParams.append(e,`not.in.(${r})`),this}contains(e,t){return typeof t=="string"?this.url.searchParams.append(e,`cs.${t}`):Array.isArray(t)?this.url.searchParams.append(e,`cs.{${t.join(",")}}`):this.url.searchParams.append(e,`cs.${JSON.stringify(t)}`),this}containedBy(e,t){return typeof t=="string"?this.url.searchParams.append(e,`cd.${t}`):Array.isArray(t)?this.url.searchParams.append(e,`cd.{${t.join(",")}}`):this.url.searchParams.append(e,`cd.${JSON.stringify(t)}`),this}rangeGt(e,t){return this.url.searchParams.append(e,`sr.${t}`),this}rangeGte(e,t){return this.url.searchParams.append(e,`nxl.${t}`),this}rangeLt(e,t){return this.url.searchParams.append(e,`sl.${t}`),this}rangeLte(e,t){return this.url.searchParams.append(e,`nxr.${t}`),this}rangeAdjacent(e,t){return this.url.searchParams.append(e,`adj.${t}`),this}overlaps(e,t){return typeof t=="string"?this.url.searchParams.append(e,`ov.${t}`):this.url.searchParams.append(e,`ov.{${t.join(",")}}`),this}textSearch(e,t,{config:r,type:s}={}){let i="";s==="plain"?i="pl":s==="phrase"?i="ph":s==="websearch"&&(i="w");const a=r===void 0?"":`(${r})`;return this.url.searchParams.append(e,`${i}fts${a}.${t}`),this}match(e){return Object.entries(e).filter(([t,r])=>r!==void 0).forEach(([t,r])=>{this.url.searchParams.append(t,`eq.${r}`)}),this}not(e,t,r){return this.url.searchParams.append(e,`not.${t}.${r}`),this}or(e,{foreignTable:t,referencedTable:r=t}={}){const s=r?`${r}.or`:"or";return this.url.searchParams.append(s,`(${e})`),this}filter(e,t,r){return this.url.searchParams.append(e,`${t}.${r}`),this}},RO=class{constructor(e,{headers:t={},schema:r,fetch:s,urlLengthLimit:i=8e3,retry:a}){this.url=e,this.headers=new Headers(t),this.schema=r,this.fetch=s,this.urlLengthLimit=i,this.retry=a}cloneRequestState(){return{url:new URL(this.url.toString()),headers:new Headers(this.headers)}}select(e,t){const{head:r=!1,count:s}=t??{},i=r?"HEAD":"GET";let a=!1;const o=(e??"*").split("").map(d=>/\s/.test(d)&&!a?"":(d==='"'&&(a=!a),d)).join(""),{url:l,headers:c}=this.cloneRequestState();return l.searchParams.set("select",o),s&&c.append("Prefer",`count=${s}`),new Xi({method:i,url:l,headers:c,schema:this.schema,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}insert(e,{count:t,defaultToNull:r=!0}={}){var s;const i="POST",{url:a,headers:o}=this.cloneRequestState();if(t&&o.append("Prefer",`count=${t}`),r||o.append("Prefer","missing=default"),Array.isArray(e)){const l=e.reduce((c,d)=>c.concat(Object.keys(d)),[]);if(l.length>0){const c=[...new Set(l)].map(d=>`"${d}"`);a.searchParams.set("columns",c.join(","))}}return new Xi({method:i,url:a,headers:o,schema:this.schema,body:e,fetch:(s=this.fetch)!==null&&s!==void 0?s:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}upsert(e,{onConflict:t,ignoreDuplicates:r=!1,count:s,defaultToNull:i=!0}={}){var a;const o="POST",{url:l,headers:c}=this.cloneRequestState();if(c.append("Prefer",`resolution=${r?"ignore":"merge"}-duplicates`),t!==void 0&&l.searchParams.set("on_conflict",t),s&&c.append("Prefer",`count=${s}`),i||c.append("Prefer","missing=default"),Array.isArray(e)){const d=e.reduce((u,h)=>u.concat(Object.keys(h)),[]);if(d.length>0){const u=[...new Set(d)].map(h=>`"${h}"`);l.searchParams.set("columns",u.join(","))}}return new Xi({method:o,url:l,headers:c,schema:this.schema,body:e,fetch:(a=this.fetch)!==null&&a!==void 0?a:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}update(e,{count:t}={}){var r;const s="PATCH",{url:i,headers:a}=this.cloneRequestState();return t&&a.append("Prefer",`count=${t}`),new Xi({method:s,url:i,headers:a,schema:this.schema,body:e,fetch:(r=this.fetch)!==null&&r!==void 0?r:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}delete({count:e}={}){var t;const r="DELETE",{url:s,headers:i}=this.cloneRequestState();return e&&i.append("Prefer",`count=${e}`),new Xi({method:r,url:s,headers:i,schema:this.schema,fetch:(t=this.fetch)!==null&&t!==void 0?t:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}},OO=class U1{constructor(t,{headers:r={},schema:s,fetch:i,timeout:a,urlLengthLimit:o=8e3,retry:l}={}){this.url=t,this.headers=new Headers(r),this.schemaName=s,this.urlLengthLimit=o;const c=i??globalThis.fetch;a!==void 0&&a>0?this.fetch=(d,u)=>{const h=new AbortController,p=setTimeout(()=>h.abort(),a),m=u==null?void 0:u.signal;if(m){if(m.aborted)return clearTimeout(p),c(d,u);const y=()=>{clearTimeout(p),h.abort()};return m.addEventListener("abort",y,{once:!0}),c(d,ca(ca({},u),{},{signal:h.signal})).finally(()=>{clearTimeout(p),m.removeEventListener("abort",y)})}return c(d,ca(ca({},u),{},{signal:h.signal})).finally(()=>clearTimeout(p))}:this.fetch=c,this.retry=l}from(t){if(!t||typeof t!="string"||t.trim()==="")throw new Error("Invalid relation name: relation must be a non-empty string.");
638return new RO(new URL(`${this.url}/${t}`),{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}schema(t){return new U1(this.url,{headers:this.headers,schema:t,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}rpc(t,r={},{head:s=!1,get:i=!1,count:a}={}){var o;let l;const c=new URL(`${this.url}/rpc/${t}`);let d;const u=m=>m!==null&&typeof m=="object"&&(!Array.isArray(m)||m.some(u)),h=s&&Object.values(r).some(u);h?(l="POST",d=r):s||i?(l=s?"HEAD":"GET",Object.entries(r).filter(([m,y])=>y!==void 0).map(([m,y])=>[m,Array.isArray(y)?`{${y.join(",")}}`:`${y}`]).forEach(([m,y])=>{c.searchParams.append(m,y)})):(l="POST",d=r);const p=new Headers(this.headers);return h?p.set("Prefer",a?`count=${a},return=minimal`:"return=minimal"):a&&p.set("Prefer",`count=${a}`),new Xi({method:l,url:c,headers:p,schema:this.schemaName,body:d,fetch:(o=this.fetch)!==null&&o!==void 0?o:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};class MO{constructor(){}static detectEnvironment(){var t;if(typeof WebSocket<"u")return{type:"native",wsConstructor:WebSocket};const r=globalThis;if(typeof globalThis<"u"&&typeof r.WebSocket<"u")return{type:"native",wsConstructor:r.WebSocket};const s=typeof global<"u"?global:void 0;if(s&&typeof s.WebSocket<"u")return{type:"native",wsConstructor:s.WebSocket};if(typeof globalThis<"u"&&typeof r.WebSocketPair<"u"&&typeof globalThis.WebSocket>"u")return{type:"cloudflare",error:"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.",workaround:"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime."};if(typeof globalThis<"u"&&r.EdgeRuntime||typeof navigator<"u"&&(!((t=navigator.userAgent)===null||t===void 0)&&t.includes("Vercel-Edge")))return{type:"unsupported",error:"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.",workaround:"Use serverless functions or a different deployment target for WebSocket functionality."};const i=globalThis.process;if(i){const a=i.versions;if(a&&a.node)return{type:"unsupported",error:"Node.js detected but native WebSocket not found.",workaround:"Ensure you are running Node.js 22+ or provide a WebSocket implementation via the transport option."}}return{type:"unsupported",error:"Unknown JavaScript runtime without WebSocket support.",workaround:"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation."}}static getWebSocketConstructor(){const t=this.detectEnvironment();if(t.wsConstructor)return t.wsConstructor;let r=t.error||"WebSocket not supported in this environment.";throw t.workaround&&(r+=` 639 640Suggested solution: ${t.workaround}`),new Error(r)}static isWebSocketSupported(){try{return this.detectEnvironment().type==="native"}catch{return!1}}}const DO="2.112.3",LO=`realtime-js/${DO}`,HO="1.0.0",V1="2.0.0",$O=V1,BO=1e4,FO=100,is={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},z1={close:"phx_close",error:"phx_error",join:"phx_join",leave:"phx_leave",access_token:"access_token"},Ap={connecting:"connecting",closing:"closing",closed:"closed"};class UO{constructor(t){this.HEADER_LENGTH=1,this.USER_BROADCAST_PUSH_META_LENGTH=6,this.KINDS={userBroadcastPush:3,userBroadcast:4},this.BINARY_ENCODING=0,this.JSON_ENCODING=1,this.BROADCAST_EVENT="broadcast",this.allowedMetadataKeys=[],this.allowedMetadataKeys=t??[]}encode(t,r){if(t.event===this.BROADCAST_EVENT&&!(t.payload instanceof ArrayBuffer)&&typeof t.payload.event=="string")return r(this._binaryEncodeUserBroadcastPush(t));let s=[t.join_ref,t.ref,t.topic,t.event,t.payload];return r(JSON.stringify(s))}_binaryEncodeUserBroadcastPush(t){var r;return this._isArrayBuffer((r=t.payload)===null||r===void 0?void 0:r.payload)?this._encodeBinaryUserBroadcastPush(t):this._encodeJsonUserBroadcastPush(t)}_encodeBinaryUserBroadcastPush(t){var r,s;const i=(s=(r=t.payload)===null||r===void 0?void 0:r.payload)!==null&&s!==void 0?s:new ArrayBuffer(0);return this._encodeUserBroadcastPush(t,this.BINARY_ENCODING,i)}_encodeJsonUserBroadcastPush(t){var r,s;const i=(s=(r=t.payload)===null||r===void 0?void 0:r.payload)!==null&&s!==void 0?s:{},o=new TextEncoder().encode(JSON.stringify(i)).buffer;return this._encodeUserBroadcastPush(t,this.JSON_ENCODING,o)}_encodeUserBroadcastPush(t,r,s){var i,a;const o=new TextEncoder,l=o.encode(t.topic),c=o.encode((i=t.ref)!==null&&i!==void 0?i:""),d=o.encode((a=t.join_ref)!==null&&a!==void 0?a:""),u=o.encode(t.payload.event),h=this.allowedMetadataKeys?this._pick(t.payload,this.allowedMetadataKeys):{},p=o.encode(Object.keys(h).length===0?"":JSON.stringify(h));if(d.length>255)throw new Error(`joinRef length ${d.length} exceeds maximum of 255`);if(c.length>255)throw new Error(`ref length ${c.length} exceeds maximum of 255`);if(l.length>255)throw new Error(`topic length ${l.length} exceeds maximum of 255`);if(u.length>255)throw new Error(`userEvent length ${u.length} exceeds maximum of 255`);if(p.length>255)throw new Error(`metadata length ${p.length} exceeds maximum of 255`);const m=this.USER_BROADCAST_PUSH_META_LENGTH+d.length+c.length+l.length+u.length+p.length,y=new ArrayBuffer(this.HEADER_LENGTH+m),b=new DataView(y),w=new Uint8Array(y);let g=0;b.setUint8(g++,this.KINDS.userBroadcastPush),b.setUint8(g++,d.length),b.setUint8(g++,c.length),b.setUint8(g++,l.length),b.setUint8(g++,u.length),b.setUint8(g++,p.length),b.setUint8(g++,r),w.set(d,g),g+=d.length,w.set(c,g),g+=c.length,w.set(l,g),g+=l.length,w.set(u,g),g+=u.length,w.set(p,g),g+=p.length;var v=new Uint8Array(y.byteLength+s.byteLength);return v.set(new Uint8Array(y),0),v.set(new Uint8Array(s),y.byteLength),v.buffer}decode(t,r){if(this._isArrayBuffer(t)){let s=this._binaryDecode(t);return r(s)}if(typeof t=="string"){const s=JSON.parse(t),[i,a,o,l,c]=s;return r({join_ref:i,ref:a,topic:o,event:l,payload:c})}return r({})}_binaryDecode(t){const r=new DataView(t),s=r.getUint8(0),i=new TextDecoder;switch(s){case this.KINDS.userBroadcast:return this._decodeUserBroadcast(t,r,i)}}_decodeUserBroadcast(t,r,s){const i=r.getUint8(1),a=r.getUint8(2),o=r.getUint8(3),l=r.getUint8(4);let c=this.HEADER_LENGTH+4;const d=s.decode(t.slice(c,c+i));c=c+i;const u=s.decode(t.slice(c,c+a));c=c+a;
640const h=s.decode(t.slice(c,c+o));c=c+o;const p=t.slice(c,t.byteLength),m=l===this.JSON_ENCODING?JSON.parse(s.decode(p)):p,y={type:this.BROADCAST_EVENT,event:u,payload:m};return o>0&&(y.meta=JSON.parse(h)),{join_ref:null,ref:null,topic:d,event:this.BROADCAST_EVENT,payload:y}}_isArrayBuffer(t){var r;return t instanceof ArrayBuffer||((r=t==null?void 0:t.constructor)===null||r===void 0?void 0:r.name)==="ArrayBuffer"}_pick(t,r){return!t||typeof t!="object"?{}:Object.fromEntries(Object.entries(t).filter(([s])=>r.includes(s)))}}var Re;(function(e){e.abstime="abstime",e.bool="bool",e.date="date",e.daterange="daterange",e.float4="float4",e.float8="float8",e.int2="int2",e.int4="int4",e.int4range="int4range",e.int8="int8",e.int8range="int8range",e.json="json",e.jsonb="jsonb",e.money="money",e.numeric="numeric",e.oid="oid",e.reltime="reltime",e.text="text",e.time="time",e.timestamp="timestamp",e.timestamptz="timestamptz",e.timetz="timetz",e.tsrange="tsrange",e.tstzrange="tstzrange"})(Re||(Re={}));const Ry=(e,t,r={})=>{var s;const i=(s=r.skipTypes)!==null&&s!==void 0?s:[];return t?Object.keys(t).reduce((a,o)=>(a[o]=VO(o,e,t,i),a),{}):{}},VO=(e,t,r,s)=>{const i=t.find(l=>
vendor: 5,530 bytes, line 640
640l.name===e),a=i==null?void 0:i.type,o=r[e];return a&&!s.includes(a)?W1(a,o):Pp(o)},W1=(e,t)=>{if(e.charAt(0)==="_"){const r=e.slice(1,e.length);return qO(t,r)}switch(e){case Re.bool:return zO(t);case Re.float4:case Re.float8:case Re.int2:case Re.int4:case Re.int8:case Re.numeric:case Re.oid:return WO(t);case Re.json:case Re.jsonb:return ZO(t);case Re.timestamp:return XO(t);case Re.abstime:case Re.date:case Re.daterange:case Re.int4range:case Re.int8range:case Re.money:case Re.reltime:case Re.text:case Re.time:case Re.timestamptz:case Re.timetz:case Re.tsrange:case Re.tstzrange:return Pp(t);default:return Pp(t)}},Pp=e=>e,zO=e=>{switch(e){case"t":return!0;case"f":return!1;default:return e}},WO=e=>{if(typeof e=="string"){const t=parseFloat(e);if(!Number.isNaN(t))return t}return e},ZO=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return e}return e},qO=(e,t)=>{if(typeof e!="string")return e;const r=e.length-1,s=e[r];if(e[0]==="{"&&s==="}"){let a;const o=e.slice(1,r);try{a=JSON.parse("["+o+"]")}catch{a=o?o.split(","):[]}return a.map(l=>W1(t,l))}return e},XO=e=>typeof e=="string"?e.replace(" ","T"):e,Z1=e=>{const t=new URL(e);return t.protocol=t.protocol.replace(/^ws/i,"http"),t.pathname=t.pathname.replace(/\/+$/,"").replace(/\/socket\/websocket$/i,"").replace(/\/socket$/i,"").replace(/\/websocket$/i,""),t.pathname===""||t.pathname==="/"?t.pathname="/api/broadcast":t.pathname=t.pathname+"/api/broadcast",t.href};var Na=e=>typeof e=="function"?e:function(){return e},GO=typeof self<"u"?self:null,Gi=typeof window<"u"?window:null,qr=GO||Gi||globalThis,KO="2.0.0",YO=1e4,JO=1e3,QO=100,Yr={connecting:0,open:1,closing:2,closed:3},Ot={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},jn={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},Tp={longpoll:"longpoll",websocket:"websocket"},e3={complete:4},_p="base64url.bearer.phx.",kc=class{constructor(e,t,r,s){this.channel=e,this.event=t,this.payload=r||function(){return{}},this.receivedResp=null,this.timeout=s,this.timeoutTimer=null,this.recHooks=[],this.sent=!1,this.ref=void 0}resend(e){this.timeout=e,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(e,t){return this.hasReceived(e)&&t(this.receivedResp.response),this.recHooks.push({status:e,callback:t}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}destroy(){this.cancelRefEvent(),this.cancelTimeout()}matchReceive({status:e,response:t,_ref:r}){this.recHooks.filter(s=>s.status===e).forEach(s=>s.callback(t))}cancelRefEvent(){this.refEvent&&this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,e=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=e,this.matchReceive(e)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}trigger(e,t){this.channel.trigger(this.refEvent,{status:e,response:t})}},q1=class{constructor(e,t){this.callback=e,this.timerCalc=t,this.timer=void 0,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},t3=class{constructor(e,t,r){this.state=Ot.closed,this.topic=e,this.params=Na(t||{}),this.socket=r,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new kc(this,jn.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new q1(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=Ot.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(s=>s.send()),this.pushBuffer=[]}),this.joinPush.receive("error",s=>{this.state=Ot.errored,this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,s),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic}`),this.state=Ot.closed,this.socket.remove(this)}),this.onError(s=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,s),this.isJoining()&&this.joinPush.reset(),this.state=Ot.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),new kc(this,jn.leave,Na({}),this.timeout).send(),this.state=Ot.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(jn.reply,(s,i)=>{this.trigger(this.replyEventName(i),s)})}join(e=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=e,this.joinedOnce=!0,this.rejoin(),this.joinPush}
vendor: 19,019 bytes, lines 640-641
640teardown(){this.pushBuffer.forEach(e=>e.destroy()),this.pushBuffer=[],this.rejoinTimer.reset(),this.joinPush.destroy(),this.state=Ot.closed,this.bindings=[]}onClose(e){this.on(jn.close,e)}onError(e){return this.on(jn.error,t=>e(t))}on(e,t){let r=this.bindingRef++;return this.bindings.push({event:e,ref:r,callback:t}),r}off(e,t){this.bindings=this.bindings.filter(r=>!(r.event===e&&(typeof t>"u"||t===r.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(e,t,r=this.timeout){if(t=t||{},!this.joinedOnce)throw new Error(`tried to push '${e}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let s=new kc(this,e,function(){return t},r);return this.canPush()?s.send():(s.startTimeout(),this.pushBuffer.push(s)),s}leave(e=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=Ot.leaving;let t=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(jn.close,"leave")},r=new kc(this,jn.leave,Na({}),e);return r.receive("ok",()=>t()).receive("timeout",()=>t()),r.send(),this.canPush()||r.trigger("ok",{}),r}onMessage(e,t,r){return t}filterBindings(e,t,r){return!0}isMember(e,t,r,s){return this.topic!==e?!1:s&&s!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:e,event:t,payload:r,joinRef:s}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(e=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=Ot.joining,this.joinPush.resend(e))}trigger(e,t,r,s){let i=this.onMessage(e,t,r,s);if(t&&!i)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let a=this.bindings.filter(o=>o.event===e&&this.filterBindings(o,t,r));for(let o=0;o<a.length;o++)a[o].callback(i,r,s||this.joinRef())}replyEventName(e){return`chan_reply_${e}`}isClosed(){return this.state===Ot.closed}isErrored(){return this.state===Ot.errored}isJoined(){return this.state===Ot.joined}isJoining(){return this.state===Ot.joining}isLeaving(){return this.state===Ot.leaving}},Hd=class{static request(e,t,r,s,i,a,o){if(qr.XDomainRequest){let l=new qr.XDomainRequest;return this.xdomainRequest(l,e,t,s,i,a,o)}else if(qr.XMLHttpRequest){let l=new qr.XMLHttpRequest;return this.xhrRequest(l,e,t,r,s,i,a,o)}else{if(qr.fetch&&qr.AbortController)return this.fetchRequest(e,t,r,s,i,a,o);throw new Error("No suitable XMLHttpRequest implementation found")}}static fetchRequest(e,t,r,s,i,a,o){let l={method:e,headers:r,body:s},c=null;return i&&(c=new AbortController,setTimeout(()=>c.abort(),i),l.signal=c.signal),qr.fetch(t,l).then(d=>d.text()).then(d=>this.parseJSON(d)).then(d=>o&&o(d)).catch(d=>{d.name==="AbortError"&&a?a():o&&o(null)}),c}static xdomainRequest(e,t,r,s,i,a,o){return e.timeout=i,e.open(t,r),e.onload=()=>{let l=this.parseJSON(e.responseText);o&&o(l)},a&&(e.ontimeout=a),e.onprogress=()=>{},e.send(s),e}static xhrRequest(e,t,r,s,i,a,o,l){e.open(t,r,!0),e.timeout=a;for(let[c,d]of Object.entries(s))e.setRequestHeader(c,d);return e.onerror=()=>l&&l(null),e.onreadystatechange=()=>{if(e.readyState===e3.complete&&l){let c=this.parseJSON(e.responseText);l(c)}},o&&(e.ontimeout=o),e.send(i),e}static parseJSON(e){if(!e||e==="")return null;try{return JSON.parse(e)}catch{return console&&console.log("failed to parse JSON response",e),null}}static serialize(e,t){let r=[];for(var s in e){if(!Object.prototype.hasOwnProperty.call(e,s))continue;let i=t?`${t}[${s}]`:s,a=e[s];typeof a=="object"?r.push(this.serialize(a,i)):r.push(encodeURIComponent(i)+"="+encodeURIComponent(a))}return r.join("&")}static appendParams(e,t){if(Object.keys(t).length===0)return e;let r=e.match(/\?/)?"&":"?";return`${e}${r}${this.serialize(t)}`}},r3=e=>{let t="",r=new Uint8Array(e),s=r.byteLength;for(let i=0;i<s;i++)t+=String.fromCharCode(r[i]);return btoa(t)},Ui=class{constructor(e,t){t&&t.length===2&&t[1].startsWith(_p)&&(this.authToken=atob(t[1].slice(_p.length))),this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.awaitingBatchAck=!1,this.currentBatch=null,this.currentBatchTimer=null,this.batchBuffer=[],this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(e),this.readyState=Yr.connecting,setTimeout(()=>this.poll(),0)}normalizeEndpoint(e){return e.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Tp.websocket),"$1/"+Tp.longpoll)}endpointURL(){return Hd.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(e,t,r){this.close(e,t,r),this.readyState=Yr.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===Yr.open||this.readyState===Yr.connecting}poll(){const e={Accept:"application/json"};this.authToken&&(e["X-Phoenix-AuthToken"]=this.authToken),this.ajax("GET",e,null,()=>this.ontimeout(),t=>{if(t){var{status:r,token:s,messages:i}=t;if(r===410&&this.token!==null){this.onerror(410),this.closeAndRetry(3410,"session_gone",!1);return}this.token=s}else r=0;switch(r){case 200:i.forEach(a=>{setTimeout(()=>this.onmessage({data:a}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=Yr.open,this.onopen({}),this.poll();break;case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw new Error(`unhandled poll status ${r}`)}})}send(e){typeof e!="string"&&(e=r3(e)),this.currentBatch?this.currentBatch.push(e):this.awaitingBatchAck?this.batchBuffer.push(e):(this.currentBatch=[e],this.currentBatchTimer=setTimeout(()=>{this.batchSend(this.currentBatch),this.currentBatch=null},0))}batchSend(e,t=0){this.awaitingBatchAck=!0;const r=t+QO,s=e.slice(t,r);this.ajax("POST",{"Content-Type":"application/x-ndjson"},s.join(` 641`),()=>this.onerror("timeout"),i=>{!i||i.status!==200?(this.awaitingBatchAck=!1,this.onerror(i&&i.status),this.closeAndRetry(1011,"internal server error",!1)):r<e.length?this.batchSend(e,r):this.batchBuffer.length>0?(this.batchSend(this.batchBuffer),this.batchBuffer=[]):this.awaitingBatchAck=!1})}close(e,t,r){for(let i of this.reqs)i.abort();this.readyState=Yr.closed;let s=Object.assign({code:1e3,reason:void 0,wasClean:!0},{code:e,reason:t,wasClean:r});this.batchBuffer=[],clearTimeout(this.currentBatchTimer),this.currentBatchTimer=null,typeof CloseEvent<"u"?this.onclose(new CloseEvent("close",s)):this.onclose(s)}ajax(e,t,r,s,i){let a,o=()=>{this.reqs.delete(a),s()};a=Hd.request(e,this.endpointURL(),t,r,this.timeout,o,l=>{this.reqs.delete(a),this.isActive()&&i(l)}),this.reqs.add(a)}},n3=class So{constructor(t,r={}){let s=r.events||{state:"presence_state",diff:"presence_diff"};this.state=Object.create(null),this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(s.state,i=>{let{onJoin:a,onLeave:o,onSync:l}=this.caller;this.joinRef=this.channel.joinRef(),this.state=So.syncState(this.state,i,a,o),this.pendingDiffs.forEach(c=>{this.state=So.syncDiff(this.state,c,a,o)}),this.pendingDiffs=[],l()}),this.channel.on(s.diff,i=>{let{onJoin:a,onLeave:o,onSync:l}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(i):(this.state=So.syncDiff(this.state,i,a,o),l())})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return So.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,r,s,i){let a=this.toNullProtoObj(this.clone(t));r=this.toNullProtoObj(r);let o=Object.create(null),l=Object.create(null);return this.map(a,(c,d)=>{r[c]||(l[c]=d)}),this.map(r,(c,d)=>{let u=a[c];if(u){let h=d.metas.map(b=>b.phx_ref),p=u.metas.map(b=>b.phx_ref),m=d.metas.filter(b=>p.indexOf(b.phx_ref)<0),y=u.metas.filter(b=>h.indexOf(b.phx_ref)<0);m.length>0&&(o[c]=d,o[c].metas=m),y.length>0&&(l[c]=this.clone(u),l[c].metas=y)}else o[c]=d}),this.syncDiff(a,{joins:o,leaves:l},s,i)}static syncDiff(t,r,s,i){t=this.toNullProtoObj(t);let{joins:a,leaves:o}=this.clone(r);return s||(s=function(){}),i||(i=function(){}),this.map(a,(l,c)=>{let d=t[l];if(t[l]=this.clone(c),d){let u=t[l].metas.map(p=>p.phx_ref),h=d.metas.filter(p=>u.indexOf(p.phx_ref)<0);t[l].metas.unshift(...h)}s(l,d,c)}),this.map(o,(l,c)=>{let d=t[l];if(!d)return;let u=c.metas.map(h=>h.phx_ref);d.metas=d.metas.filter(h=>u.indexOf(h.phx_ref)<0),i(l,d,c),d.metas.length===0&&delete t[l]}),t}static list(t,r){return r||(r=function(s,i){return i}),this.map(t,(s,i)=>r(s,i))}static map(t,r){return Object.getOwnPropertyNames(t).map(s=>r(s,t[s]))}static toNullProtoObj(t){if(Object.getPrototypeOf(t)===null)return t;let r=Object.create(null);return Object.getOwnPropertyNames(t).forEach(s=>{r[s]=t[s]}),r}static clone(t){return JSON.parse(JSON.stringify(t))}},Nc={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(e,t){if(e.payload.constructor===ArrayBuffer)return t(this.binaryEncode(e));{let r=[e.join_ref,e.ref,e.topic,e.event,e.payload];return t(JSON.stringify(r))}},decode(e,t){if(e.constructor===ArrayBuffer)return t(this.binaryDecode(e));{let[r,s,i,a,o]=JSON.parse(e);return t({join_ref:r,ref:s,topic:i,event:a,payload:o})}},binaryEncode(e){let{join_ref:t,ref:r,event:s,topic:i,payload:a}=e,o=new TextEncoder,l=o.encode(t),c=o.encode(r),d=o.encode(i),u=o.encode(s);this.assertFieldSize(l.byteLength,"join_ref"),this.assertFieldSize(c.byteLength,"ref"),this.assertFieldSize(d.byteLength,"topic"),this.assertFieldSize(u.byteLength,"event");let h=this.META_LENGTH+l.byteLength+c.byteLength+d.byteLength+u.byteLength,p=new ArrayBuffer(this.HEADER_LENGTH+h),m=new Uint8Array(p),y=new DataView(p),b=0;y.setUint8(b++,this.KINDS.push),y.setUint8(b++,l.byteLength),y.setUint8(b++,c.byteLength),y.setUint8(b++,d.byteLength),y.setUint8(b++,u.byteLength),m.set(l,b),b+=l.byteLength,m.set(c,b),b+=c.byteLength,m.set(d,b),b+=d.byteLength,m.set(u,b),b+=u.byteLength;var w=new Uint8Array(p.byteLength+a.byteLength);return w.set(m,0),w.set(new Uint8Array(a),p.byteLength),w.buffer},assertFieldSize(e,t){if(e>255)throw new Error(`unable to convert ${t} to binary: must be less than or equal to 255 bytes, but is ${e} bytes`)},binaryDecode(e){let t=new DataView(e),r=t.getUint8(0),s=new TextDecoder;switch(r){case this.KINDS.push:return this.decodePush(e,t,s);case this.KINDS.reply:return this.decodeReply(e,t,s);case this.KINDS.broadcast:return this.decodeBroadcast(e,t,s)}},decodePush(e,t,r){let s=t.getUint8(1),i=t.getUint8(2),a=t.getUint8(3),o=this.HEADER_LENGTH+this.META_LENGTH-1,l=r.decode(e.slice(o,o+s));o=o+s;let c=r.decode(e.slice(o,o+i));o=o+i;let d=r.decode(e.slice(o,o+a));o=o+a;let u=e.slice(o,e.byteLength);return{join_ref:l,ref:null,topic:c,event:d,payload:u}},decodeReply(e,t,r){let s=t.getUint8(1),i=t.getUint8(2),a=t.getUint8(3),o=t.getUint8(4),l=this.HEADER_LENGTH+this.META_LENGTH,c=r.decode(e.slice(l,l+s));l=l+s;let d=r.decode(e.slice(l,l+i));l=l+i;let u=r.decode(e.slice(l,l+a));l=l+a;let h=r.decode(e.slice(l,l+o));l=l+o;let p=e.slice(l,e.byteLength),m={status:h,response:p};return{join_ref:c,ref:d,topic:u,event:jn.reply,payload:m}},decodeBroadcast(e,t,r){let s=t.getUint8(1),i=t.getUint8(2),a=this.HEADER_LENGTH+2,o=r.decode(e.slice(a,a+s));a=a+s;let l=r.decode(e.slice(a,a+i));a=a+i;let c=e.slice(a,e.byteLength);return{join_ref:null,ref:null,topic:o,event:l,payload:c}}},s3=class{constructor(e,t={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.fallbackRef=null,this.timeout=t.timeout||YO,this.transport=t.transport||qr.WebSocket||Ui,this.conn=void 0,this.primaryPassedHealthCheck=!1,this.longPollFallbackMs=t.longPollFallbackMs,this.fallbackTimer=null;let r=null;try{r=qr&&qr.sessionStorage}catch{}this.sessionStore=t.sessionStorage||r,this.establishedConnections=0,this.defaultEncoder=Nc.encode.bind(Nc),this.defaultDecoder=Nc.decode.bind(Nc),this.closeWasClean=!0,this.disconnecting=!1,this.binaryType=t.binaryType||"arraybuffer",this.connectClock=1,this.pageHidden=!1,this.encode=void 0,this.decode=void 0,this.transport!==Ui?(this.encode=t.encode||this.defaultEncoder,this.decode=t.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let s=null;Gi&&Gi.addEventListener&&(Gi.addEventListener("pagehide",i=>{this.conn&&(this.disconnect(),s=this.connectClock)}),Gi.addEventListener("pageshow",i=>{s===this.connectClock&&(s=null,this.connect())}),Gi.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"?this.pageHidden=!0:(this.pageHidden=!1,!this.isConnected()&&!this.closeWasClean&&this.teardown(()=>this.connect()))})),this.heartbeatIntervalMs=t.heartbeatIntervalMs||3e4,this.autoSendHeartbeat=t.autoSendHeartbeat??!0,this.heartbeatCallback=t.heartbeatCallback??(()=>{}),this.rejoinAfterMs=i=>t.rejoinAfterMs?t.rejoinAfterMs(i):[1e3,2e3,5e3][i-1]||1e4,this.reconnectAfterMs=i=>t.reconnectAfterMs?t.reconnectAfterMs(i):[10,50,100,150,200,250,500,1e3,2e3][i-1]||5e3,this.logger=t.logger||null,!this.logger&&t.debug&&(this.logger=(i,a,o)=>{console.log(`${i}: ${a}`,o)}),this.longpollerTimeout=t.longpollerTimeout||2e4,this.params=Na(t.params||{}),this.endPoint=`${e}/${Tp.websocket}`,this.vsn=t.vsn||KO,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.heartbeatSentAt=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new q1(()=>{if(this.pageHidden){this.log("Not reconnecting as page is hidden!"),this.teardown();return}this.teardown(async()=>{t.beforeReconnect&&await t.beforeReconnect(),this.connect()})},this.reconnectAfterMs),this.authToken=t.authToken&&Na(t.authToken)}getLongPollTransport(){return Ui}replaceTransport(e){this.connectClock++,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.conn&&(this.conn.close(),this.conn=null),this.transport=e}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let e=Hd.appendParams(Hd.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return e.charAt(0)!=="/"?e:e.charAt(1)==="/"?`${this.protocol()}:${e}`:`${this.protocol()}://${location.host}${e}`}disconnect(e,t,r){this.connectClock++,this.disconnecting=!0,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.teardown(()=>{this.disconnecting=!1,e&&e()},t,r)}connect(e){e&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=Na(e)),!(this.conn&&!this.disconnecting)&&(this.longPollFallbackMs&&this.transport!==Ui?this.connectWithFallback(Ui,this.longPollFallbackMs):this.transportConnect())}log(e,t,r){this.logger&&this.logger(e,t,r)}hasLogger(){return this.logger!==null}onOpen(e){let t=this.makeRef();return this.stateChangeCallbacks.open.push([t,e]),t}onClose(e){let t=this.makeRef();return this.stateChangeCallbacks.close.push([t,e]),t}onError(e){let t=this.makeRef();return this.stateChangeCallbacks.error.push([t,e]),t}onMessage(e){let t=this.makeRef();return this.stateChangeCallbacks.message.push([t,e]),t}onHeartbeat(e){this.heartbeatCallback=e}ping(e){if(!this.isConnected())return!1;let t=this.makeRef(),r=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:t});let s=this.onMessage(i=>{i.ref===t&&(this.off([s]),e(Date.now()-r))});return!0}transportName(e){switch(e){case Ui:return"LongPoll";default:return e.name}}transportConnect(){this.connectClock++,this.closeWasClean=!1;let e;this.authToken&&(e=["phoenix",`${_p}${btoa(this.authToken()).replace(/=/g,"")}`]),this.conn=new this.transport(this.endPointURL(),e),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=t=>this.onConnError(t),this.conn.onmessage=t=>this.onConnMessage(t),this.conn.onclose=t=>this.onConnClose(t)}getSession(e){return this.sessionStore&&this.sessionStore.getItem(e)}storeSession(e,t){this.sessionStore&&this.sessionStore.setItem(e,t)}connectWithFallback(e,t=2500){clearTimeout(this.fallbackTimer);let r=!1,s=!0,i,a,o=this.transportName(e),l=c=>{this.log("transport",`falling back to ${o}...`,c),this.off([i,a]),s=!1,this.replaceTransport(e),this.transportConnect()};if(this.getSession(`phx:fallback:${o}`))return l("memorized");this.fallbackTimer=setTimeout(l,t),a=this.onError(c=>{this.log("transport","error",c),s&&!r&&(clearTimeout(this.fallbackTimer),l(c))}),this.fallbackRef&&this.off([this.fallbackRef]),this.fallbackRef=this.onOpen(()=>{if(r=!0,!s){let c=this.transportName(e);return this.primaryPassedHealthCheck||this.storeSession(`phx:fallback:${c}`,"true"),this.log("transport",`established ${c} fallback`)}clearTimeout(this.fallbackTimer),this.fallbackTimer=setTimeout(l,t),this.ping(c=>{this.log("transport","connected to primary after",c),this.primaryPassedHealthCheck=!0,clearTimeout(this.fallbackTimer)})}),this.transportConnect()}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.disconnecting=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.autoSendHeartbeat&&this.resetHeartbeat(),this.triggerStateCallbacks("open")}heartbeatTimeout(){if(this.pendingHeartbeatRef){this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection");try{this.heartbeatCallback("timeout")}catch(e){this.log("error","error in heartbeat callback",e)}this.triggerChanError(new Error("heartbeat timeout")),this.closeWasClean=!1,this.teardown(()=>this.reconnectTimer.scheduleTimeout(),JO,"heartbeat timeout")}}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(e,t,r){if(!this.conn)return e&&e();const s=this.conn;this.waitForBufferDone(s,()=>{t?s.close(t,r||""):s.close(),this.waitForSocketClosed(s,()=>{this.conn===s&&(this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){},this.conn.onclose=function(){},this.conn=null),e&&e()})})}waitForBufferDone(e,t,r=1){if(r===5||!e.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(e,t,r+1)},150*r)}waitForSocketClosed(e,t,r=1){if(r===5||e.readyState===Yr.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(e,t,r+1)},150*r)}onConnClose(e){this.conn&&(this.conn.onclose=()=>{}),this.hasLogger()&&this.log("transport","close",e),this.triggerChanError(e),this.clearHeartbeats(),this.closeWasClean||this.reconnectTimer.scheduleTimeout(),this.triggerStateCallbacks("close",e)}onConnError(e){this.hasLogger()&&this.log("transport","error",e);let t=this.transport,r=this.establishedConnections;this.triggerStateCallbacks("error",e,t,r),(t===this.transport||r>0)&&this.triggerChanError(e)}
vendor: 4,209 bytes, line 641
641triggerChanError(e){this.channels.forEach(t=>{t.isErrored()||t.isLeaving()||t.isClosed()||t.trigger(jn.error,e)})}connectionState(){switch(this.conn&&this.conn.readyState){case Yr.connecting:return"connecting";case Yr.open:return"open";case Yr.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(e){this.off(e.stateChangeRefs),this.channels=this.channels.filter(t=>t!==e)}off(e){for(let t in this.stateChangeCallbacks)this.stateChangeCallbacks[t]=this.stateChangeCallbacks[t].filter(([r])=>e.indexOf(r)===-1)}channel(e,t={}){let r=new t3(e,t,this);return this.channels.push(r),r}push(e){if(this.hasLogger()){let{topic:t,event:r,payload:s,ref:i,join_ref:a}=e;this.log("push",`${t} ${r} (${a}, ${i})`,s)}this.isConnected()?this.encode(e,t=>this.conn.send(t)):this.sendBuffer.push(()=>this.encode(e,t=>this.conn.send(t)))}makeRef(){let e=this.ref+1;return e===this.ref?this.ref=0:this.ref=e,this.ref.toString()}sendHeartbeat(){if(!this.isConnected()){try{this.heartbeatCallback("disconnected")}catch(e){this.log("error","error in heartbeat callback",e)}return}if(this.pendingHeartbeatRef){this.heartbeatTimeout();return}this.pendingHeartbeatRef=this.makeRef(),this.heartbeatSentAt=Date.now(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef});try{this.heartbeatCallback("sent")}catch(e){this.log("error","error in heartbeat callback",e)}this.heartbeatTimeoutTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs)}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(e=>e()),this.sendBuffer=[])}onConnMessage(e){this.decode(e.data,t=>{let{topic:r,event:s,payload:i,ref:a,join_ref:o}=t;if(a&&a===this.pendingHeartbeatRef){const l=this.heartbeatSentAt?Date.now()-this.heartbeatSentAt:void 0;this.clearHeartbeats();try{this.heartbeatCallback(i.status==="ok"?"ok":"error",l)}catch(c){this.log("error","error in heartbeat callback",c)}this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.autoSendHeartbeat&&(this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}this.hasLogger()&&this.log("receive",`${i.status||""} ${r} ${s} ${a&&"("+a+")"||""}`.trim(),i);for(let l=0;l<this.channels.length;l++){const c=this.channels[l];c.isMember(r,s,i,o)&&c.trigger(s,i,a,o)}this.triggerStateCallbacks("message",t)})}triggerStateCallbacks(e,...t){try{this.stateChangeCallbacks[e].forEach(([r,s])=>{try{s(...t)}catch(i){this.log("error",`error in ${e} callback`,i)}})}catch(r){this.log("error",`error triggering ${e} callbacks`,r)}}leaveOpenTopic(e){let t=this.channels.find(r=>r.topic===e&&(r.isJoined()||r.isJoining()));t&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${e}"`),t.leave())}};class Ho{constructor(t,r){const s=a3(r);this.presence=new n3(t.getChannel(),s),this.presence.onJoin((i,a,o)=>{const l=Ho.onJoinPayload(i,a,o);t.getChannel().trigger("presence",l)}),this.presence.onLeave((i,a,o)=>{const l=Ho.onLeavePayload(i,a,o);t.getChannel().trigger("presence",l)}),this.presence.onSync(()=>{t.getChannel().trigger("presence",{event:"sync"})})}get state(){return Ho.transformState(this.presence.state)}static transformState(t){return t=i3(t),Object.getOwnPropertyNames(t).reduce((r,s)=>{const i=t[s];return r[s]=rd(i),r},{})}static onJoinPayload(t,r,s){const i=Oy(r),a=rd(s);return{event:"join",key:t,currentPresences:i,newPresences:a}}static onLeavePayload(t,r,s){const i=Oy(r),a=rd(s);return{event:"leave",key:t,currentPresences:i,leftPresences:a}}}function rd(e){return e.metas.map(t=>{const r=Object.getOwnPropertyDescriptors(t),s=Object.defineProperties({},r);return s.presence_ref=s.phx_ref,delete s.phx_ref,delete s.phx_ref_prev,s})}function i3(e){return JSON.parse(JSON.stringify(e))}function a3(e){return(e==null?void 0:e.events)&&{events:e.events}}function Oy(e){return e!=null&&e.metas?rd(e):[]}var My;(function(e){e.SYNC="sync",e.JOIN="join",e.LEAVE="leave"})(My||(My={}));class o3{get state(){return this.presenceAdapter.state}constructor(t,r){this.channel=t,this.presenceAdapter=new Ho(this.channel.channelAdapter,r)}}function l3(e){if(e instanceof Error)return e;if(typeof e=="string")return new Error(e);
641if(e&&typeof e=="object"){const t=e;if(typeof t.code=="number"){const r=typeof t.reason=="string"&&t.reason?` (${t.reason})`:"";return new Error(`socket closed: ${t.code}${r}`,{cause:e})}return new Error("channel error: transport failure",{cause:e})}return new Error("channel error: connection lost")}class c3{constructor(t,r,s){const i=d3(s);this.channel=t.getSocket().channel(r,i),this.socket=t}get state(){return this.channel.state}set state(t){this.channel.state=t}get joinedOnce(){return this.channel.joinedOnce}get joinPush(){return this.channel.joinPush}get rejoinTimer(){return this.channel.rejoinTimer}on(t,r){return this.channel.on(t,r)}off(t,r){this.channel.off(t,r)}subscribe(t){return this.channel.join(t)}unsubscribe(t){return this.channel.leave(t)}teardown(){this.channel.teardown()}onClose(t){this.channel.onClose(t)}onError(t){return this.channel.onError(t)}push(t,r,s){let i;try{i=this.channel.push(t,r,s)}catch{throw new Error(`tried to push '${t}' to '${this.channel.topic}' before joining. Use channel.subscribe() before pushing events`)}if(this.channel.pushBuffer.length>FO){const a=this.channel.pushBuffer.shift();a.cancelTimeout(),this.socket.log("channel",`discarded push due to buffer overflow: ${a.event}`,a.payload())}return i}updateJoinPayload(t){const r=this.channel.joinPush.payload();this.channel.joinPush.payload=()=>Object.assign(Object.assign({},r),t)}canPush(){return this.socket.isConnected()&&this.state===is.joined}isJoined(){return this.state===is.joined}isJoining(){return this.state===is.joining}isClosed(){return this.state===is.closed}isLeaving(){return this.state===is.leaving}updateFilterBindings(t){this.channel.filterBindings=t}updatePayloadTransform(t){this.channel.onMessage=t}getChannel(){return this.channel}}function d3(e){return{config:Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},e.config)}}const u3=/[,()"\\]/,h3=e=>u3.test(e)||e!==e.trim(),m3=e=>`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`,Dy=e=>{const t=e===null?"null":String(e);return h3(t)?m3(t):t},p3=e=>e===null?"null":String(e),f3=(e,t)=>{if(e==="in"){const r=Array.isArray(t)?t:[t];if(r.length===0)throw new Error("Realtime `in` filter requires at least one value.");return`in.(${Array.from(new Set(r)).map(i=>Dy(i)).join(",")})`}return e==="is"?`is.${p3(t)}`:`${e}.${Dy(t)}`};class g3{constructor(){this.filters=[]}add(t,r,s,i=!1){const a=i?"not.":"";return this.filters.push(`${t}=${a}${f3(r,s)}`),this}eq(t,r){return this.add(t,"eq",r)}neq(t,r){return this.add(t,"neq",r)}gt(t,r){return this.add(t,"gt",r)}gte(t,r){return this.add(t,"gte",r)}lt(t,r){return this.add(t,"lt",r)}lte(t,r){return this.add(t,"lte",r)}in(t,r){return this.add(t,"in",r)}like(t,r){return this.add(t,"like",r)}ilike(t,r){return this.add(t,"ilike",r)}match(t,r){return this.add(t,"match",r)}imatch(t,r){return this.add(t,"imatch",r)}is(t,r){return this.add(t,"is",r)}isDistinct(t,r){return this.add(t,"isdistinct",r)}not(t,r,s){return this.add(t,r,s,!0)}build(){return this.filters.join(",")}toString(){return this.build()}}var Ly;(function(e){e.ALL="*",e.INSERT="INSERT",e.UPDATE="UPDATE",e.DELETE="DELETE"})(Ly||(Ly={}));var ei;(function(e){e.BROADCAST="broadcast",e.PRESENCE="presence",e.POSTGRES_CHANGES="postgres_changes",e.SYSTEM="system"})(ei||(ei={}));var kn;(function(e){e.SUBSCRIBED="SUBSCRIBED",e.TIMED_OUT="TIMED_OUT",e.CLOSED="CLOSED",e.CHANNEL_ERROR="CHANNEL_ERROR"})(kn||(kn={}));class Nn{get state(){return this.channelAdapter.state}set state(t){this.channelAdapter.state=t}get joinedOnce(){return this.channelAdapter.joinedOnce}get timeout(){return this.socket.timeout}get joinPush(){return this.channelAdapter.joinPush}get rejoinTimer(){return this.channelAdapter.rejoinTimer}constructor(t,r={config:{}},s){var i,a;if(this.topic=t,this.params=r,this.socket=s,this.bindings={},this.subTopic=t.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},r.config),this.channelAdapter=new c3(this.socket.socketAdapter,t,this.params),this.presence=new o3(this),this._onClose(()=>{this.socket._remove(this)}),this._updateFilterTransform(),this.broadcastEndpointURL=Z1(this.socket.socketAdapter.endPointURL()),this.private=this.params.config.private||!1,!this.private&&(!((a=(i=this.params.config)===null||i===void 0?void 0:i.broadcast)===null||a===void 0)&&a.replay))throw new Error(`tried to use replay on public channel '${this.topic}'. It must be a private channel.`)}subscribe(t,r=this.timeout){var s,i,a;if(this.socket.isConnected()||this.socket.connect(),this.channelAdapter.isClosed()){const{config:{broadcast:o,presence:l,private:c}}=this.params,d=(i=(s=this.bindings.postgres_changes)===null||s===void 0?void 0:s.map(m=>m.filter))!==null&&i!==void 0?i:[],u=!!this.bindings[ei.PRESENCE]&&this.bindings[ei.PRESENCE].length>0||((a=this.params.config.presence)===null||a===void 0?void 0:a.enabled)===!0,h={},p={broadcast:o,presence:Object.assign(Object.assign({},l),{enabled:u}),postgres_changes:d,private:c};this.socket.accessTokenValue&&(h.access_token=this.socket.accessTokenValue),this._onError(m=>{t==null||t(kn.CHANNEL_ERROR,l3(m))}),this._onClose(()=>t==null?void 0:t(kn.CLOSED)),this.updateJoinPayload(Object.assign({config:p},h)),this._updateFilterMessage(),this.channelAdapter.subscribe(r).receive("ok",async({postgres_changes:m})=>
641{if(this.socket._isManualToken()||this.socket.setAuth(),m===void 0){t==null||t(kn.SUBSCRIBED);return}this._updatePostgresBindings(m,t)}).receive("error",m=>{this.state=is.errored;const y=Object.values(m).join(", ")||"error";t==null||t(kn.CHANNEL_ERROR,new Error(y,{cause:m}))}).receive("timeout",()=>{t==null||t(kn.TIMED_OUT)})}return this}_updatePostgresBindings(t,r){var s;const i=this.bindings.postgres_changes,a=(s=i==null?void 0:i.length)!==null&&s!==void 0?s:0,o=[];for(let l=0;l<a;l++){const c=i[l],{filter:{event:d,schema:u,table:h,filter:p}}=c,m=t&&t[l];if(m&&m.event===d&&Nn.isFilterValueEqual(m.schema,u)&&Nn.isFilterValueEqual(m.table,h)&&Nn.isFilterValueEqual(m.filter,p))o.push(Object.assign(Object.assign({},c),{id:m.id}));else{this.unsubscribe(),this.state=is.errored,r==null||r(kn.CHANNEL_ERROR,new Error("mismatch between server and client bindings for postgres changes"));return}}this.bindings.postgres_changes=o,this.state!=is.errored&&r&&r(kn.SUBSCRIBED)}presenceState(){return this.presence.state}async track(t,r={}){return await this.send({type:"presence",event:"track",payload:t},r)}async untrack(t={}){return await this.send({type:"presence",event:"untrack"},t)}on(t,r,s){const i=this.channelAdapter.isJoined()||this.channelAdapter.isJoining(),a=t===ei.PRESENCE||t===ei.POSTGRES_CHANGES;if(i&&a)throw this.socket.log("channel",`cannot add \`${t}\` callbacks for ${this.topic} after \`subscribe()\`.`),new Error(`cannot add \`${t}\` callbacks for ${this.topic} after \`subscribe()\`.`);return this._on(t,r,s)}async httpSend(t,r,s={}){var i;if(r==null)return Promise.reject(new Error("Payload is required for httpSend()"));const a=r instanceof ArrayBuffer||ArrayBuffer.isView(r),o={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":a?"application/octet-stream":"application/json"};this.socket.accessTokenValue&&(o.Authorization=`Bearer ${this.socket.accessTokenValue}`);const l=new URL(this.broadcastEndpointURL);l.pathname+=`/${encodeURIComponent(this.subTopic)}/events/${encodeURIComponent(t)}`,this.private&&l.searchParams.set("private","true");const c={method:"POST",headers:o,body:a?r:JSON.stringify(r)},d=await this._fetchWithTimeout(l.toString(),c,(i=s.timeout)!==null&&i!==void 0?i:this.timeout);if(d.status===202)return{success:!0};if(d.status===404)return Promise.reject(new Error("httpSend() requires Realtime server v2.97.0 or newer; the endpoint returned 404. Update your Supabase CLI to a recent version, or upgrade the Realtime server in your self-hosted setup. See https://github.com/supabase/supabase-js/blob/master/packages/core/realtime-js/migrations/httpsend-server-version.md"));let u=d.statusText;try{const h=await d.json();u=h.error||h.message||u}catch{}return Promise.reject(new Error(u))}async send(t,r={}){var s,i;if(!this.channelAdapter.canPush()&&t.type==="broadcast"){console.warn("Realtime send() is automatically falling back to REST API. This behavior will be deprecated
641in the future. Please use httpSend() explicitly for REST delivery.");const{event:a,payload:o}=t,l={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};this.socket.accessTokenValue&&(l.Authorization=`Bearer ${this.socket.accessTokenValue}`);const c={method:"POST",headers:l,body:JSON.stringify({messages:[{topic:this.subTopic,event:a,payload:o,private:this.private}]})};try{const d=await this._fetchWithTimeout(this.broadcastEndpointURL,c,(s=r.timeout)!==null&&s!==void 0?s:this.timeout);return await((i=d.body)===null||i===void 0?void 0:i.cancel()),d.ok?"ok":"error"}catch(d){return d instanceof Error&&d.name==="AbortError"?"timed out":"error"}}else return new Promise(a=>{var o,l,c;const d=this.channelAdapter.push(t.type,t,r.timeout||this.timeout);t.type==="broadcast"&&!(!((c=(l=(o=this.params)===null||o===void 0?void 0:o.config)===null||l===void 0?void 0:l.broadcast)===null||c===void 0)&&c.ack)&&a("ok"),d.receive("ok",()=>a("ok")),d.receive("error",()=>a("error")),d.receive("timeout",()=>a("timed out"))})}updateJoinPayload(t){this.channelAdapter.updateJoinPayload(t)}async unsubscribe(t=this.timeout){return new Promise(r=>{this.channelAdapter.unsubscribe(t).receive("ok",()=>r("ok")).receive("timeout",()=>r("timed out")).receive("error",()=>r("error"))})}teardown(){this.channelAdapter.teardown()}async _fetchWithTimeout(t,r,s){const i=new AbortController,a=setTimeout(()=>i.abort(),s),o=await this.socket.fetch(t,Object.assign(Object.assign({},r),{signal:i.signal}));return clearTimeout(a),o}_on(t,r,s){var i;const a=t.toLocaleLowerCase(),o=r==null?void 0:r.filter;if((o instanceof g3||typeof o=="object"&&o!==null&&typeof o.build=="function")&&(r=Object.assign(Object.assign({},r),{filter:o.build()})),a===ei.POSTGRES_CHANGES&&((i=this.bindings[a])===null||i===void 0?void 0:i.find(u=>Nn.isSamePostgresFilter(u.filter,r))))return this.socket.log("error",`duplicate \`postgres_changes\` binding for ${this.topic} ignored`,r),this;const l=this.channelAdapter.on(t,s),c={type:a,filter:r,callback:s,ref:l};return this.bindings[a]?this.bindings[a].push(c):this.bindings[a]=[c],this._updateFilterMessage(),this}_onClose(t){this.channelAdapter.onClose(t)}_onError(t){this.channelAdapter.onError(t)}_updateFilterMessage(){this.channelAdapter.updateFilterBindings((t,r,s)=>{var i,a,o,l,c,d,u;const h=t.event.toLocaleLowerCase();if(this._notThisChannelEvent(h,s))return!1;const p=(i=this.bindings[h])===null||i===void 0?void 0:i.find(m=>m.ref===t.ref);if(!p)return!0;if(["broadcast","presence","postgres_changes"].includes(h))if("id"in p){const m=p.id,y=(a=p.filter)===null||a===void 0?void 0:a.event;return m&&((o=r.ids)===null||o===void 0?void 0:o.includes(m))&&(y==="*"||(y==null?void 0:y.toLocaleLowerCase())===((l=r.data)===null||l===void 0?void 0:l.type.toLocaleLowerCase()))}else{const m=(d=(c=p==null?void 0:p.filter)===null||c===void 0?void 0:c.event)===null||d===void 0?void 0:d.toLocaleLowerCase();return m==="*"||m===((u=r==null?void 0:r.event)===null||u===void 0?void 0:u.toLocaleLowerCase())}else return p.type.toLocaleLowerCase()===h})}_notThisChannelEvent(t,r){const{close:s,error:i,leave:a,join:o}=z1;return r&&[s,i,a,o].includes(t)&&r!==this.joinPush.ref}_updateFilterTransform(){this.channelAdapter.updatePayloadTransform((t,r,s)=>{if(typeof r=="object"&&"ids"in r){const i=r.data,{schema:a,table:o,commit_timestamp:l,type:c,errors:d}=i;return Object.assign(Object.assign({},{schema:a,table:o,commit_timestamp:l,eventType:c,new:{},old:{},errors:d}),this._getPayloadRecords(i))}return r})}copyBindings(t){if(this.joinedOnce)throw new Error("cannot copy bindings into joined channel");for(const r in t.bindings)for(const s of t.bindings[r])this._on(s.type,s.filter,s.callback)}static isFilterValueEqual(t,r){return(t??void 0)===(r??void 0)}static isSamePostgresFilter(t,r){var s,i,a,o;const l=(i=(s=t==null?void 0:t.select)===null||s===void 0?void 0:s.join())!==null&&i!==void 0?i:void 0,c=(o=(a=r==null?void 0:r.select)===null||a===void 0?void 0:a.join())!==null&&o!==void 0?o:void 0;return(t==null?void 0:t.event)===(r==null?void 0:r.event)&&Nn.isFilterValueEqual(t==null?void 0:t.schema,r==null?void 0:r.schema)&&Nn.isFilterValueEqual(t==null?void 0:t.table,r==null?void 0:r.table)&&Nn.isFilterValueEqual(t==null?void 0:t.filter,r==null?void 0:r.filter)&&l===c}_getPayloadRecords(t){const r={new:{},old:{}};return(t.type==="INSERT"||t.type==="UPDATE")&&(r.new=Ry(t.columns,t.record)),(t.type==="UPDATE"||t.type==="DELETE")&&(r.old=Ry(t.columns,t.old_record)),r}}class x3{constructor(t,r){this.socket=new s3(t,r)}get timeout(){return this.socket.timeout}get endPoint(){return this.socket.endPoint}get transport(){return this.socket.transport}get heartbeatIntervalMs(){return this.socket.heartbeatIntervalMs}get heartbeatCallback(){return this.socket.heartbeatCallback}set heartbeatCallback(t){this.socket.heartbeatCallback=t}get heartbeatTimer(){return this.socket.heartbeatTimer}get pendingHeartbeatRef(){return this.socket.pendingHeartbeatRef}get reconnectTimer(){return this.socket.reconnectTimer}get vsn(){return this.socket.vsn}get encode(){return this.socket.encode}get decode(){return this.socket.decode}get reconnectAfterMs(){return this.socket.reconnectAfterMs}get sendBuffer(){return this.socket.sendBuffer}get stateChangeCallbacks(){return this.socket.stateChangeCallbacks}connect(){this.socket.connect()}disconnect(t,r,s,i=1e4){return new Promise(a=>{setTimeout(()=>a("timeout"),i),this.socket.disconnect(()=>{t(),a("ok")},r,s)})}push(t){this.socket.push(t)}log(t,r,s){this.socket.log(t,r,s)}makeRef(){return this.socket.makeRef()}onOpen(t){this.socket.onOpen(t)}onClose(t){this.socket.onClose(t)}onError(t){this.socket.onError(t)}onMessage(t){this.socket.onMessage(t)}isConnected(){return this.socket.isConnected()}isConnecting(){return this.socket.connectionState()==Ap.connecting}isDisconnecting(){return this.socket.connectionState()==Ap.closing}connectionState(){return this.socket.connectionState()}endPointURL(){return this.socket.endPointURL()}sendHeartbeat(){this.socket.sendHeartbeat()}getSocket(){return this.socket}}const Hy={HEARTBEAT_INTERVAL:25e3},v3=[1e3,2e3,5e3,1e4],y3=1e4;function b3(){const e=new Map;return{get length(){return e.size},clear(){e.clear()},getItem(t){return e.has(t)?e.get(t):null},key(t){var r;return(r=Array.from(e.keys())[t])!==null&&r!==void 0?r:null},removeItem(t){e.delete(t)},setItem(t,r){e.set(t,String(r))}}}function w3(){try{if(typeof globalThis<"u"&&globalThis.sessionStorage)return globalThis.sessionStorage}catch{}return b3()}const j3=` 642 addEventListener("message", (e) => { 643 if (e.data.event === "start") { 644 setInterval(() => postMessage({ event: "keepAlive" }), e.data.interval); 645 } 646 });`;class k3{get endPoint(){return this.socketAdapter.endPoint}get timeout(){return this.socketAdapter.timeout}get transport(){return this.socketAdapter.transport}get heartbeatCallback(){return this.socketAdapter.heartbeatCallback}get heartbeatIntervalMs(){return this.socketAdapter.heartbeatIntervalMs}get heartbeatTimer(){return this.worker?this._workerHeartbeatTimer:this.socketAdapter.heartbeatTimer}get pendingHeartbeatRef(){return this.worker?this._pendingWorkerHeartbeatRef:this.socketAdapter.pendingHeartbeatRef}get reconnectTimer(){return this.socketAdapter.reconnectTimer}get vsn(){return this.socketAdapter.vsn}get encode(){return this.socketAdapter.encode}get decode(){return this.socketAdapter.decode}get reconnectAfterMs(){return this.socketAdapter.reconnectAfterMs}get sendBuffer(){return this.socketAdapter.sendBuffer}get stateChangeCallbacks(){return this.socketAdapter.stateChangeCallbacks}constructor(t,r){var s;if(this.channels=new Array,this.accessTokenValue=null,this.accessToken=null,this.apiKey=null,this.httpEndpoint="",this.headers={},this.params={}
646,this.ref=0,this.serializer=new UO,this._manuallySetToken=!1,this._authPromise=null,this._authGeneration=0,this._workerHeartbeatTimer=void 0,this._pendingWorkerHeartbeatRef=null,this._pendingDisconnectTimer=null,this._disconnectOnEmptyChannelsAfterMs=0,this._resolveFetch=a=>a?(...o)=>a(...o):(...o)=>fetch(...o),!(!((s=r==null?void 0:r.params)===null||s===void 0)&&s.apikey))throw new Error("API key is required to connect to Realtime");this.apiKey=r.params.apikey;const i=this._initializeOptions(r);this.socketAdapter=new x3(t,i),this.httpEndpoint=Z1(t),this.fetch=this._resolveFetch(r==null?void 0:r.fetch)}connect(){if(!(this.isConnecting()||this.isDisconnecting()||this.isConnected())){this.accessToken&&!this._authPromise&&this._setAuthSafely("connect"),this._setupConnectionHandlers();try{this.socketAdapter.connect()}catch(t){const r=t.message;throw new Error(`WebSocket not available: ${r}`)}this._handleNodeJsRaceCondition()}}endpointURL(){return this.socketAdapter.endPointURL()}async disconnect(t,r){return this._cancelPendingDisconnect(),this.isDisconnecting()?"ok":await this.socketAdapter.disconnect(()=>{clearInterval(this._workerHeartbeatTimer),this._terminateWorker()},t,r)}getChannels(){return this.channels}async removeChannel(t){const r=await t.unsubscribe();return r==="ok"&&t.teardown(),r}async removeAllChannels(){const t=this.channels.map(async s=>{const i=await s.unsubscribe();return s.teardown(),i}),r=await Promise.all(t);return await this.disconnect(),r}log(t,r,s){this.socketAdapter.log(t,r,s)}connectionState(){return this.socketAdapter.connectionState()||Ap.closed}isConnected(){return this.socketAdapter.isConnected()}isConnecting(){return this.socketAdapter.isConnecting()}isDisconnecting(){return this.socketAdapter.isDisconnecting()}channel(t,r={config:{}}){const s=`realtime:${t}`,i=this.getChannels().find(a=>a.topic===s);if(i)return i;{const a=new Nn(`realtime:${t}`,r,this);return this._cancelPendingDisconnect(),this.channels.push(a),a}}push(t){this.socketAdapter.push(t)}async setAuth(t=null){const r=++this._authGeneration,s=this._performAuth(t,r);r===this._authGeneration&&(this._authPromise=s);try{await s}finally{this._authPromise===s&&(this._authPromise=null)}}_isManualToken(){return this._manuallySetToken}async sendHeartbeat(){this.socketAdapter.sendHeartbeat()}onHeartbeat(t){this.socketAdapter.heartbeatCallback=this._wrapHeartbeatCallback(t)}_makeRef(){return this.socketAdapter.makeRef()}_remove(t){this.channels=this.channels.filter(r=>r.topic!==t.topic),this.channels.length===0&&(this.log("transport","no channels remaining, scheduling disconnect"),this._schedulePendingDisconnect())}_schedulePendingDisconnect(){if(this._cancelPendingDisconnect(),this._disconnectOnEmptyChannelsAfterMs===0){this.log("transport","disconnecting immediately - no channels"),this.disconnect();return}
646this._pendingDisconnectTimer=setTimeout(()=>{this._pendingDisconnectTimer=null,this.channels.length===0&&(this.log("transport","deferred disconnect fired - no channels, disconnecting"),this.disconnect())},this._disconnectOnEmptyChannelsAfterMs),this.log("transport",`deferred disconnect scheduled in ${this._disconnectOnEmptyChannelsAfterMs}ms`)}_cancelPendingDisconnect(){this._pendingDisconnectTimer!==null&&(this.log("transport","pending disconnect cancelled - channel activity detected"),clearTimeout(this._pendingDisconnectTimer),this._pendingDisconnectTimer=null)}async _performAuth(t,r){let s,i=!1;if(t)s=t,i=!0;else if(this.accessToken)try{s=await this.accessToken()}catch(a){this.log("error","Error fetching access token from callback",a),s=this.accessTokenValue}else s=this.accessTokenValue;r===this._authGeneration&&(this.accessToken?this._manuallySetToken=!1:i&&(this._manuallySetToken=!0),this.accessTokenValue!=s&&(this.accessTokenValue=s,this.channels.forEach(a=>{const o={access_token:s,version:LO};a.updateJoinPayload(o),a.joinedOnce&&a.channelAdapter.isJoined()&&a.channelAdapter.push(z1.access_token,{access_token:s})})))}async _waitForAuthIfNeeded(){this._authPromise&&await this._authPromise}_setAuthSafely(t="general"){this._isManualToken()||this.setAuth().catch(r=>{this.log("error",`Error setting auth in ${t}`,r)})}_setupConnectionHandlers(){this.socketAdapter.onOpen(()=>{(this._authPromise||(this.accessToken&&!this.accessTokenValue?this.setAuth():Promise.resolve())).catch(r=>{this.log("error","error waiting for auth on connect",r)}),this.worker&&!this.workerRef&&this._startWorkerHeartbeat()}),this.socketAdapter.onClose(()=>{this.worker&&this.workerRef&&this._terminateWorker()}),this.socketAdapter.onMessage(t=>{t.ref&&t.ref===this._pendingWorkerHeartbeatRef&&(this._pendingWorkerHeartbeatRef=null)})}_handleNodeJsRaceCondition(){this.socketAdapter.isConnected()&&this.socketAdapter.getSocket().onConnOpen()}_wrapHeartbeatCallback(t){return(r,s)=>{r!=="disconnected"&&(r=="sent"&&this._setAuthSafely(),t&&t(r,s))}}_startWorkerHeartbeat(){this.workerUrl?this.log("worker",`starting worker for from ${this.workerUrl}`):this.log("worker","starting default worker");const t=this._workerObjectUrl(this.workerUrl);this.workerRef=new Worker(t),this.workerRef.onerror=r=>{this.log("worker","worker error",r.message),this._terminateWorker(),this.disconnect()},this.workerRef.onmessage=r=>{r.data.event==="keepAlive"&&this.sendHeartbeat()},this.workerRef.postMessage({event:"start",interval:this.heartbeatIntervalMs})}_terminateWorker(){this.workerRef&&(this.log("worker","terminating worker"),this.workerRef.terminate(),this.workerRef=void 0)}_workerObjectUrl(t){let r;if(t)r=t;else{const s=new Blob([j3],{type:"application/javascript"});r=URL.createObjectURL(s)}return r}_initializeOptions(t){var r,s,i,a,o,l,c,d,u,h,p,m;this.worker=(r=t==null?void 0:t.worker)!==null&&r!==void 0?r:!1,this.accessToken=(s=t==null?void 0:t.accessToken)!==null&&s!==void 0?s:null;const y={};y.timeout=(i=t==null?void 0:t.timeout)!==null&&i!==void 0?i:BO,y.heartbeatIntervalMs=(a=t==null?void 0:t.heartbeatIntervalMs)!==null&&a!==void 0?a:Hy.HEARTBEAT_INTERVAL,this._disconnectOnEmptyChannelsAfterMs=(o=t==null?void 0:t.disconnectOnEmptyChannelsAfterMs)!==null&&o!==void 0?o:2*((l=t==null?void 0:t.heartbeatIntervalMs)!==null&&l!==void 0?l:Hy.HEARTBEAT_INTERVAL),y.transport=(c=t==null?void 0:t.transport)!==null&&c!==void 0?c:MO.getWebSocketConstructor(),y.params=t==null?void 0:t.params,y.logger=t==null?void 0:t.logger,y.heartbeatCallback=this._wrapHeartbeatCallback(t==null?void 0:t.heartbeatCallback),y.sessionStorage=(d=t==null?void 0:t.sessionStorage)!==null&&d!==void 0?d:w3(),y.reconnectAfterMs=(u=t==null?void 0:t.reconnectAfterMs)!==null&&u!==void 0?u:v=>v3[v-1]||y3;let b,w;const g=(h=t==null?void 0:t.vsn)!==null&&h!==void 0?h:$O;switch(g){case HO:b=(v,x)=>x(JSON.stringify(v)),w=(v,x)=>x(JSON.parse(v));break;case V1:b=this.serializer.encode.bind(this.serializer),w=this.serializer.decode.bind(this.serializer);break;default:throw new Error(`Unsupported serializer version: ${y.vsn}`)}if(y.vsn=g,y.encode=(p=t==null?void 0:t.encode)!==null&&p!==void 0?p:b,y.decode=(m=t==null?void 0:t.decode)!==null&&m!==void 0?m:w,y.beforeReconnect=this._reconnectAuth.bind(this),(t!=null&&t.logLevel||t!=null&&t.log_level)&&(this.logLevel=t.logLevel||t.log_level,y.params=Object.assign(Object.assign({},y.params),{log_level:this.logLevel})),this.worker){if(typeof window<"u"&&!window.Worker)throw new Error("Web Worker is not supported");this.workerUrl=t==null?void 0:t.workerUrl,y.autoSendHeartbeat=!this.worker}return y}async _reconnectAuth(){await this._waitForAuthIfNeeded(),this.isConnected()||this.connect()}}
646var hl=class extends Error{constructor(e,t){var r;super(e),this.name="IcebergError",this.status=t.status,this.icebergType=t.icebergType,this.icebergCode=t.icebergCode,this.details=t.details,this.isCommitStateUnknown=t.icebergType==="CommitStateUnknownException"||[500,502,504].includes(t.status)&&((r=t.icebergType)==null?void 0:r.includes("CommitState"))===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function N3(e,t,r){const s=new URL(t,e);if(r)for(const[i,a]of Object.entries(r))a!==void 0&&s.searchParams.set(i,a);return s.toString()}async function S3(e){return!e||e.type==="none"?{}:e.type==="bearer"?{Authorization:`Bearer ${e.token}`}:e.type==="header"?{[e.name]:e.value}:e.type==="custom"?await e.getHeaders():{}}function C3(e){const t=e.fetchImpl??globalThis.fetch;return{async request({method:r,path:s,query:i,body:a,headers:o}){const l=N3(e.baseUrl,s,i),c=await S3(e.auth),d=await t(l,{method:r,headers:{...a?{"Content-Type":"application/json"}:{},...c,...o},body:a?JSON.stringify(a):void 0}),u=await d.text(),h=(d.headers.get("content-type")||"").includes("application/json"),p=h&&u?JSON.parse(u):u;if(!d.ok){const m=h?p:void 0,y=m==null?void 0:m.error;throw new hl((y==null?void 0:y.message)??`Request failed with status ${d.status}`,{status:d.status,icebergType:y==null?void 0:y.type,icebergCode:y==null?void 0:y.code,details:m})}return{status:d.status,headers:d.headers,data:p}}}}function Sc(e){return e.join("�")}var E3=class{constructor(e,t=""){this.client=e,this.prefix=t}async listNamespaces(e){const t=e?{parent:Sc(e.namespace)}:void 0;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces`,query:t})).data.namespaces.map(s=>({namespace:s}))}async createNamespace(e,t){const r={namespace:e.namespace,properties:t==null?void 0:t.properties};return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces`,body:r})).data}async dropNamespace(e){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${Sc(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Sc(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${Sc(e.namespace)}`}),!0}catch(t){if(t instanceof hl&&t.status===404)return!1;throw t}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(r){if(r instanceof hl&&r.status===409)return;throw r}}};function Vi(e){return e.join("�")}var A3=class{constructor(e,t="",r){this.client=e,this.prefix=t,this.accessDelegation=r}async listTables(e){return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Vi(e.namespace)}/tables`})).data.identifiers}async createTable(e,t){const r={};return this.accessDelegation&&(r["X-Iceberg-Access-Delegation"]=this.accessDelegation),(await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${Vi(e.namespace)}/tables`,body:t,headers:r})).data.metadata}async updateTable(e,t){const r=await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${Vi(e.namespace)}/tables/${e.name}`,body:t});return{"metadata-location":r.data["metadata-location"],metadata:r.data.metadata}}async dropTable(e,t){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${Vi(e.namespace)}/tables/${e.name}`,query:{purgeRequested:String((t==null?void 0:t.purge)??!1)}})}async loadTable(e){const t={};return this.accessDelegation&&(t["X-Iceberg-Access-Delegation"]=this.accessDelegation),(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Vi(e.namespace)}/tables/${e.name}`,headers:t})).data.metadata}async tableExists(e){const t={};this.accessDelegation&&(t["X-Iceberg-Access-Delegation"]=this.accessDelegation);try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${Vi(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(r){if(r instanceof hl&&r.status===404)return!1;throw r}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(r){if(r instanceof hl&&r.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw r}}},P3=class{constructor(e){var s;let t="v1";e.catalogName&&(t+=`/${e.catalogName}`);const r=e.baseUrl.endsWith("/")?e.baseUrl:`${e.baseUrl}/`;this.client=C3({baseUrl:r,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=(s=e.accessDelegation)==null?void 0:s.join(","),this.namespaceOps=new E3(this.client,t),this.tableOps=new A3(this.client,t,this.accessDelegation)}async listNamespaces(e){return this.namespaceOps.listNamespaces(e)}async createNamespace(e,t){return this.namespaceOps.createNamespace(e,t)}async dropNamespace(e){await this.namespaceOps.dropNamespace(e)}async loadNamespaceMetadata(e){return this.namespaceOps.loadNamespaceMetadata(e)}async listTables(e){return this.tableOps.listTables(e)}
646async createTable(e,t){return this.tableOps.createTable(e,t)}async updateTable(e,t){return this.tableOps.updateTable(e,t)}async dropTable(e,t){await this.tableOps.dropTable(e,t)}async loadTable(e){return this.tableOps.loadTable(e)}async namespaceExists(e){return this.namespaceOps.namespaceExists(e)}async tableExists(e){return this.tableOps.tableExists(e)}async createNamespaceIfNotExists(e,t){return this.namespaceOps.createNamespaceIfNotExists(e,t)}async createTableIfNotExists(e,t){return this.tableOps.createTableIfNotExists(e,t)}};function ml(e){"@babel/helpers - typeof";return ml=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ml(e)}function T3(e,t){if(ml(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var s=r.call(e,t);if(ml(s)!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function _3(e){var t=T3(e,"string");return ml(t)=="symbol"?t:t+""}function I3(e,t,r){return(t=_3(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function $y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,s)}return r}function Q(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?$y(Object(r),!0).forEach(function(s){I3(e,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):$y(Object(r)).forEach(function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(r,s))})}return e}var Ru=class extends Error{constructor(e,t="storage",r,s){super(e),this.__isStorageError=!0,this.namespace=t,this.name=t==="vectors"?"StorageVectorsError":"StorageError",this.status=r,this.statusCode=s}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}};function Ou(e){return typeof e=="object"&&e!==null&&"__isStorageError"in e}var Ip=class extends Ru{constructor(e,t,r,s="storage",i){super(e,s,t,r),this.name=s==="vectors"?"StorageVectorsApiError":"StorageApiError",this.status=t,this.statusCode=r,this.co
646de=i}toJSON(){return Q(Q({},super.toJSON()),{},{code:this.code})}},X1=class extends Ru{constructor(e,t,r="storage"){super(e,r),this.name=r==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=t}};function $d(e,t,r){const s=Q({},e),i=t.toLowerCase();for(const a of Object.keys(s))a.toLowerCase()===i&&delete s[a];return s[i]=r,s}function R3(e){const t={};for(const[r,s]of Object.entries(e))t[r.toLowerCase()]=s;return t}const O3=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),M3=e=>{if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},Rp=e=>{if(Array.isArray(e))return e.map(r=>Rp(r));if(typeof e=="function"||e!==Object(e))return e;const t={};return Object.entries(e).forEach(([r,s])=>{const i=r.replace(/([-_][a-z])/gi,a=>a.toUpperCase().replace(/[-_]/g,""));t[i]=Rp(s)}),t},D3=e=>!e||typeof e!="string"||e.length===0||e.length>100||e.trim()!==e||e.includes("/")||e.includes("\\")?!1:/^[\w!.\*'() &$@=;:+,?-]+$/.test(e),G1=e=>e.split("/").map(encodeURIComponent).join("/"),By=e=>{if(typeof e=="object"&&e!==null){const t=e;if(typeof t.msg=="string")return t.msg;if(typeof t.message=="string")return t.message;if(typeof t.error_description=="string")return t.error_description;if(typeof t.error=="string")return t.error;if(typeof t.error=="object"&&t.error!==null){const r=t.error;if(typeof r.message=="string")return r.message}}return JSON.stringify(e)},L3=async(e,t,r,s)=>{if(e!==null&&typeof e=="object"&&"json"in e&&typeof e.json=="function"){const i=e;let a=parseInt(String(i.status),10);Number.isFinite(a)||(a=500),i.json().then(o=>{const l=(o==null?void 0:o.statusCode)||(o==null?void 0:o.code)||a+"";t(new Ip(By(o),a,l,s,o==null?void 0:o.code))}).catch(()=>{const o=a+"";t(new Ip(i.statusText||`HTTP ${a} error`,a,o,s))})}else t(new X1(By(e),e,s))},H3=(e,t,r,s)=>{const i={method:e,headers:(t==null?void 0:t.headers)||{}};if(e==="GET"||e==="HEAD"||!s)return Q(Q({},i),r);if(M3(s)){var a;const o=(t==null?void 0:t.headers)||{};let l;for(const[c,d]of Object.entries(o))c.toLowerCase()==="content-type"&&(l=d);i.headers=$d(o,"Content-Type",(a=l)!==null&&a!==void 0?a:"application/json"),i.body=JSON.stringify(s)}else i.body=s;return t!=null&&t.duplex&&(i.duplex=t.duplex),Q(Q({},i),r)};async function vo(e,t,r,s,i,a,o){return new Promise((l,c)=>{e(r,H3(t,s,i,a)).then(d=>{if(!d.ok)throw d;if(s!=null&&s.noResolveJson)return d;if(o==="vectors"){const u=d.headers.get("content-type");if(d.headers.get("content-length")==="0"||d.status===204)return{};if(!u||!u.includes("application/json"))return{}}return d.json()}).then(d=>l(d)).catch(d=>L3(d,c,s,o))})}function K1(e="storage"){return{get:async(t,r,s,i)=>vo(t,"GET",r,s,i,void 0,e),post:async(t,r,s,i,a)=>vo(t,"POST",r,i,a,s,e),put:async(t,r,s,i,a)=>vo(t,"PUT",r,i,a,s,e),head:async(t,r,s,i)=>vo(t,"HEAD",r,Q(Q({},s),{},{noResolveJson:!0}),i,void 0,e),remove:async(t,r,s,i,a)=>vo(t,"DELETE",r,i,a,s,e)}}const $3=K1("storage"),{get:pl,post:_r,put:Op,head:B3,remove:fl}=$3,Gt=K1("vectors");var ro=class{constructor(e,t={},r,s="storage"){this.shouldThrowOnError=!1,this.url=e,this.headers=R3(t),this.fetch=O3(r),this.namespace=s}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(e,t){return this.headers=$d(this.headers,e,t),this}async handleOperation(e){var t=this;try{return{data:await e(),error:null}}catch(r){if(t.shouldThrowOnError)throw r;if(Ou(r))return{data:null,error:r};throw r}}};let Y1;Y1=Symbol.toStringTag;var F3=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[Y1]="StreamDownloadBuilder",this.promise=null}then(e,t){return this.getPromise().then(e,t)}catch(e){return this.getPromise().catch(e)}finally(e){return this.getPromise().finally(e)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}async execute(){var e=this;try{return{data:(await e.downloadFn()).body,error:null}}catch(t){if(e.shouldThrowOnError)throw t;if(Ou(t))return{data:null,error:t};throw t}}};let J1;J1=Symbol.toStringTag;var U3=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[J1]="BlobDownloadBuilder",this.promise=null}asStream(){return new F3(this.downloadFn,this.shouldThrowOnError)}then(e,t){return this.getPromise().then(e,t)}catch(e){return this.getPromise().catch(e)}finally(e){return this.getPromise().finally(e)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}async execute(){var e=this;try{return{data:await(await e.downloadFn()).blob(),error:null}}catch(t){if(e.shouldThrowOnError)throw t;if(Ou(t))return{data:null,error:t};throw t}}};const Vh={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},Fy={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};var V3=class extends ro{constructor(e,t={},r,s){super(e,t,s,"storage"),this.bucketId=r}async uploadOrUpdate(e,t,r,s){var i=this;return i.handleOperation(async()=>{let a;const o=Q(Q({},Fy),s);let l=Q(Q({},i.headers),e==="POST"&&{"x-upsert":String(o.upsert)});const c=o.metadata;if(typeof Blob<"u"&&r instanceof Blob?(a=new FormData,a.append("cacheControl",o.cacheControl),c&&a.append("metadata",i.encodeMetadata(c)),a.append("",r)):typeof FormData<"u"&&r instanceof FormData?(a=r,a.has("cacheControl")||a.append("cacheControl",o.cacheControl),c&&!a.has("metadata")&&a.append("metadata",i.encodeMetadata(c))):(a=r,l["cache-control"]=`max-age=${o.cacheControl}`,l["content-type"]=o.contentType,c&&(l["x-metadata"]=i.toBase64(i.encodeMetadata(c))),(typeof ReadableStream<"u"&&a
646instanceof ReadableStream||a&&typeof a=="object"&&"pipe"in a&&typeof a.pipe=="function")&&!o.duplex&&(o.duplex="half")),s!=null&&s.headers)for(const[p,m]of Object.entries(s.headers))l=$d(l,p,m);const d=i._removeEmptyFolders(t),u=i._getFinalPath(d),h=await(e=="PUT"?Op:_r)(i.fetch,`${i.url}/object/${u}`,a,Q({headers:l},o!=null&&o.duplex?{duplex:o.duplex}:{}));return{path:d,id:h.Id,fullPath:h.Key}})}async upload(e,t,r){return this.uploadOrUpdate("POST",e,t,r)}async uploadToSignedUrl(e,t,r,s){var i=this;const a=i._removeEmptyFolders(e),o=i._getFinalPath(a),l=new URL(i.url+`/object/upload/sign/${o}`);return l.searchParams.set("token",t),i.handleOperation(async()=>{let c;const d=Q(Q({},Fy),s);let u=Q(Q({},i.headers),{"x-upsert":String(d.upsert)});const h=d.metadata;if(typeof Blob<"u"&&r instanceof Blob?(c=new FormData,c.append("cacheControl",d.cacheControl),h&&c.append("metadata",i.encodeMetadata(h)),c.append("",r)):typeof FormData<"u"&&r instanceof FormData?(c=r,c.has("cacheControl")||c.append("cacheControl",d.cacheControl),h&&!c.has("metadata")&&c.append("metadata",i.encodeMetadata(h))):(c=r,u["cache-control"]=`max-age=${d.cacheControl}`,u["content-type"]=d.contentType,h&&(u["x-metadata"]=i.toBase64(i.encodeMetadata(h))),(typeof ReadableStream<"u"&&c instanceof ReadableStream||c&&typeof c=="object"&&"pipe"in c&&typeof c.pipe=="function")&&!d.duplex&&(d.duplex="half")),s!=null&&s.headers)for(const[p,m]of Object.entries(s.headers))u=$d(u,p,m);return{path:a,fullPath:(await Op(i.fetch,l.toString(),c,Q({headers:u},d!=null&&d.duplex?{duplex:d.duplex}:{}))).Key}})}async createSignedUploadUrl(e,t){var r=this;return r.handleOperation(async()=>{let s=r._getFinalPath(e);const i=Q({},r.headers);t!=null&&t.upsert&&(i["x-upsert"]="true");const a=await _r(r.fetch,`${r.url}/object/upload/sign/${s}`,{},{headers:i}),o=new URL(r.url+a.url),l=o.searchParams.get("token");if(!l)throw new Ru("No token returned by API");return{signedUrl:o.toString(),path:e,token:l}})}async update(e,t,r){return this.uploadOrUpdate("PUT",e,t,r)}async move(e,t,r){var s=this;return s.handleOperation(async()=>await _r(s.fetch,`${s.url}/object/move`,{bucketId:s.bucketId,sourceKey:e,destinationKey:t,de
646stinationBucket:r==null?void 0:r.destinationBucket},{headers:s.headers}))}async copy(e,t,r){var s=this;return s.handleOperation(async()=>({path:(await _r(s.fetch,`${s.url}/object/copy`,{bucketId:s.bucketId,sourceKey:e,destinationKey:t,destinationBucket:r==null?void 0:r.destinationBucket},{headers:s.headers})).Key}))}async createSignedUrl(e,t,r){var s=this;return s.handleOperation(async()=>{let i=s._getFinalPath(e);const a=typeof(r==null?void 0:r.transform)=="object"&&r.transform!==null&&Object.keys(r.transform).length>0;let o=await _r(s.fetch,`${s.url}/object/sign/${i}`,Q({expiresIn:t},a?{transform:r.transform}:{}),{headers:s.headers});const l=new URLSearchParams;r!=null&&r.download&&l.set("download",r.download===!0?"":r.download),(r==null?void 0:r.cacheNonce)!=null&&l.set("cacheNonce",String(r.cacheNonce));const c=l.toString();return{signedUrl:encodeURI(`${s.url}${o.signedURL}${c?`&${c}`:""}`)}})}async createSignedUrls(e,t,r){var s=this;return s.handleOperation(async()=>{const i=await _r(s.fetch,`${s.url}/object/sign/${s.bucketId}`,{expiresIn:t,paths:e},{headers:s.headers}),a=new URLSearchParams;r!=null&&r.download&&a.set("download",r.download===!0?"":r.download),(r==null?void 0:r.cacheNonce)!=null&&a.set("cacheNonce",String(r.cacheNonce));const o=a.toString();return i.map(l=>Q(Q({},l),{},{signedUrl:l.signedURL?encodeURI(`${s.url}${l.signedURL}${o?`&${o}`:""}`):null}))})}download(e,t,r){const s=typeof(t==null?void 0:t.transform)=="object"&&t.transform!==null&&Object.keys(t.transform).length>0?"render/image/authenticated":"object",i=new URLSearchParams;t!=null&&t.transform&&this.applyTransformOptsToQuery(i,t.transform),(t==null?void 0:t.cacheNonce)!=null&&i.set("cacheNonce",String(t.cacheNonce));const a=i.toString(),o=this._getFinalPath(e),l=()=>pl(this.fetch,`${this.url}/${s}/${o}${a?`?${a}`:""}`,{headers:this.headers,noResolveJson:!0},r);return new U3(l,this.shouldThrowOnError)}async info(e){var t=this;const r=t._getFinalPath(e);return t.handleOperation(async()=>Rp(await pl(t.fetch,`${t.url}/object/info/${r}`,{headers:t.headers})))}async exists(e){var t=this;const r=t._getFinalPath(e);try{return await B3(t.fetch,`${t.url}/object/${r}`,{headers:t.headers}),{data:!0,error:null}}catch(i){if(t.shouldThrowOnError)throw i;if(Ou(i)){var s;const a=i instanceof Ip?i.status:i instanceof X1?(s=i.originalError)===null||s===void 0?void 0:s.status:void 0;if(a!==void 0&&[400,404].includes(a))return{data:!1,error:i}}throw i}}getPublicUrl(e,t){const r=this._getFinalPath(e),s=new URLSearchParams;t!=null&&t.download&&s.set("download",t.download===!0?"":t.download),t!=null&&t.transform&&this.applyTransformOptsToQuery(s,t.transform),(t==null?void 0:t.cacheNonce)!=null&&s.set("cacheNonce",String(t.cacheNonce));const i=s.toString(),a=typeof(t==null?void 0:t.transform)=="object"&&t.transform!==null&&Object.keys(t.transform).length>0?"render/image":"object";return{data:{publicUrl:encodeURI(`${this.url}/${a}/public/${r}`)+(i?`?${i}`:"")}}}async remove(e){var t=this;return t.handleOperation(async()=>await fl(t.fetch,`${t.url}/object/${t.bucketId}`,{prefixes:e},{headers:t.headers}))}async purgeCache(e,t,r){var s=this;return s.handleOperation(async()=>{const i=G1(s._getFinalPath(e)),a=new URLSearchParams;t!=null&&t.transformations&&a.set("transformations","true");const o=a.toString();return await fl(s.fetch,`${s.url}/cdn/${i}${o?`?${o}`:""}`,{},{headers:s.headers},r)})}async list(e,t,r){var s=this;return s.handleOperation(async()=>{const i=t!=null&&t.sortBy?Q(Q({},Vh.sortBy),t.sortBy):Vh.sortBy,a=Q(Q(Q({},Vh),t),{},{sortBy:i,prefix:e||""});return await _r(s.fetch,`${s.url}/object/list/${s.bucketId}`,a,{headers:s.headers},r)})}async listV2(e,t){var r=this;return r.handleOperation(async()=>{const s=Q({},e);return await _r(r.fetch,`${r.url}/object/list-v2/${r.bucketId}`,s,{headers:r.headers},t)})}encodeMetadata(e){return JSON.stringify(e)}toBase64(e){return typeof Buffer<"u"?Buffer.from(e).toString("base64"):btoa(e)}_getFinalPath(e){return`${this.bucketId}/${e.replace(/^\/+/,"")}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}applyTransformOptsToQuery(e,t){return t.width&&e.set("width",t.width.toString()),t.height&&e.set("height",t.height.toString()),t.resize&&e.set("resize",t.resize),t.format&&e.set("format",t.format),t.quality&&e.set("qual
646ity",t.quality.toString()),e}};const z3="2.112.3",Vl={"X-Client-Info":`storage-js/${z3}`};var W3=class extends ro{constructor(e,t={},r,s){const i=new URL(e);s!=null&&s.useNewHostname&&/supabase\.(co|in|red)$/.test(i.hostname)&&!i.hostname.includes("storage.supabase.")&&(i.hostname=i.hostname.replace("supabase.","storage.supabase."));const a=i.href.replace(/\/$/,""),o=Q(Q({},Vl),t);super(a,o,r,"storage")}async listBuckets(e){var t=this;return t.handleOperation(async()=>{const r=t.listBucketOptionsToQueryString(e);return await pl(t.fetch,`${t.url}/bucket${r}`,{headers:t.headers})})}async getBucket(e){var t=this;return t.handleOperation(async()=>await pl(t.fetch,`${t.url}/bucket/${e}`,{headers:t.headers}))}async createBucket(e,t={public:!1}){var r=this;return r.handleOperation(async()=>await _r(r.fetch,`${r.url}/bucket`,{id:e,name:e,type:t.type,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:r.headers}))}async updateBucket(e,t){var r=this;return r.handleOperation(async()=>await Op(r.fetch,`${r.url}/bucket/${e}`,{id:e,name:e,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:r.headers}))}async emptyBucket(e){var t=this;return t.handleOperation(async()=>await _r(t.fetch,`${t.url}/bucket/${e}/empty`,{},{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await fl(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}async purgeBucketCache(e,t,r){var s=this;return s.handleOperation(async()=>{const i=new URLSearchParams;t!=null&&t.transformations&&i.set("transformations","true");const a=i.toString();return await fl(s.fetch,`${s.url}/cdn/${G1(e)}${a?`?${a}`:""}`,{},{headers:s.headers},r)})}listBucketOptionsToQueryString(e){const t={};return e&&("limit"in e&&(t.limit=String(e.limit)),"offset"in e&&(t.offset=String(e.offset)),e.search&&(t.search=e.search),e.sortColumn&&(t.sortColumn=e.sortColumn),e.sortOrder&&(t.sortOrder=e.sortOrder)),Object.keys(t).length>0?"?"+new URLSearchParams(t).toString():""}},Z3=class extends ro{constructor(e,t={},r){const s=e.replace(/\/$/,""),i=Q(Q({},Vl),t);super(s,i,r,"storage")}async createBucket(e){var t=this;return t.handleOperation(async()=>await _r(t.fetch,`${t.url}/bucket`,{name:e},{headers:t.headers}))}async listBuckets(e){var t=this;return t.handleOperation(async()=>{const r=new URLSearchParams;(e==null?void 0:e.limit)!==void 0&&r.set("limit",e.limit.toString()),(e==null?void 0:e.offset)!==void 0&&r.set("offset",e.offset.toString()),e!=null&&e.sortColumn&&r.set("sortColumn",e.sortColumn),e!=null&&e.sortOrder&&r.set("sortOrder",e.sortOrder),e!=null&&e.search&&r.set("search",e.search);const s=r.toString(),i=s?`${t.url}/bucket?${s}`:`${t.url}/bucket`;return await pl(t.fetch,i,{headers:t.headers})})}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await fl(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}from(e){var t=this;if(!D3(e))throw new Ru("Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.");const r=new P3({baseUrl:this.url,catalogName:e,auth:{type:"custom",getHeaders:async()=>t.headers},fetch:this.fetch}),s=this.shouldThrowOnError;return new Proxy(r,{get(i,a){const o=i[a];return typeof o!="function"?o:async(...l)=>{try{return{data:await o.apply(i,l),error:null}}catch(c){if(s)throw c;return{data:null,error:c}}}}})}},q3=class extends ro{constructor(e,t={},r){const s=e.replace(/\/$/,""),i=Q(Q({},Vl),{},{"Content-Type":"application/json"},t);super(s,i,r,"vectors")}async createIndex(e){var t=this;return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/CreateIndex`,e,{headers:t.headers})||{})}async getIndex(e,t){var r=this;return r.handleOperation(async()=>await Gt.post(r.fetch,`${r.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers}))}async listIndexes(e){var t=this;return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/ListIndexes`,e,{headers:t.headers}))}async deleteIndex(e,t){var r=this;return r.handleOperation(async()=>await Gt.post(r.fetch,`${r.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers})||{})}},X3=class extends ro{constructor(e,t={},r){const s=e.replace(/\/$/,""),i=Q(Q({},Vl),{},{"Content-Type":"application/json"},t);super(s,i,r,"vectors")}async putVectors(e){var t=this;if(e.vectors.length<1||e.vectors.length>500)throw new Error("Vector batch size must be between 1 and 500 items");return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/PutVectors`,e,{headers:t.headers})||{})}async getVectors(e){var t=this;return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/GetVectors`,e,{headers:t.headers}))}async listVectors(e){var t=this;if(e.segmentCount!==void 0){if(e.segmentCount<1||e.segmentCount>16)throw new Error("segmentCount must be between 1 and 16");
646if(e.segmentIndex!==void 0&&(e.segmentIndex<0||e.segmentIndex>=e.segmentCount))throw new Error(`segmentIndex must be between 0 and ${e.segmentCount-1}`)}return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/ListVectors`,e,{headers:t.headers}))}async queryVectors(e){var t=this;return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/QueryVectors`,e,{headers:t.headers}))}async deleteVectors(e){var t=this;if(e.keys.length<1||e.keys.length>500)throw new Error("Keys batch size must be between 1 and 500 items");return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/DeleteVectors`,e,{headers:t.headers})||{})}},G3=class extends ro{constructor(e,t={},r){const s=e.replace(/\/$/,""),i=Q(Q({},Vl),{},{"Content-Type":"application/json"},t);super(s,i,r,"vectors")}async createBucket(e){var t=this;return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}async getBucket(e){var t=this;return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/GetVectorBucket`,{vectorBucketName:e},{headers:t.headers}))}async listBuckets(e={}){var t=this;return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/ListVectorBuckets`,e,{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await Gt.post(t.fetch,`${t.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}},K3=class extends G3{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new Y3(this.url,this.headers,e,this.fetch)}async createBucket(e){var t=()=>super.createBucket,r=this;return t().call(r,e)}async getBucket(e){var t=()=>super.getBucket,r=this;return t().call(r,e)}async listBuckets(e={}){var t=()=>super.listBuckets,r=this;return t().call(r,e)}async deleteBucket(e){var t=()=>super.deleteBucket,r=this;return t().call(r,e)}},Y3=class extends q3{constructor(e,t,r,s){super(e,t,s),this.vectorBucketName=r}async createIndex(e){var t=()=>super.createIndex,r=this;return t().call(r,Q(Q({},e),{},{vectorBucketName:r.vectorBucketName}))}async listIndexes(e={}){var t=()=>super.listIndexes,r=this;return t().call(r,Q(Q({},e),{},{vectorBucketName:r.vectorBucketName}))}async getIndex(e){var t=()=>super.getIndex,r=this;return t().call(r,r.vectorBucketName,e)}async deleteIndex(e){var t=()=>super.deleteIndex,r=this;return t().call(r,r.vectorBucketName,e)}index(e){return new J3(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},J3=class extends X3{constructor(e,t,r,s,i){super(e,t,i),this.vectorBucketName=r,this.indexName=s}async putVectors(e){var t=()=>super.putVectors,r=this;return t().call(r,Q(Q({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async getVectors(e){var t=()=>super.getVectors,r=this;return t().call(r,Q(Q({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async listVectors(e={}){var t=()=>super.listVectors,r=this;return t().call(r,Q(Q({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async queryVectors(e){var t=()=>super.queryVectors,r=this;return t().call(r,Q(Q({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async deleteVectors(e){var t=()=>super.deleteVectors,r=this;return t().call(r,Q(Q({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}},Q3=class extends W3{constructor(e,t={},r,s){super(e,t,r,s)}from(e){return new V3(this.url,this.headers,e,this.fetch)}get vectors(){return new K3(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new Z3(this.url+"/iceberg",this.headers,this.fetch)}};function Mu(e,t){var r={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,s=Object.getOwnPropertySymbols(e);i<s.length;i++)t.indexOf(s[i])<0&&Object.prototype.propertyIsEnumerable.call(e,s[i])&&(r[s[i]]=e[s[i]]);return r}const Q1="2.112.3",Sn=30*1e3,Co=3,zh=Co*Sn,eM=2*Sn,tM="http://localhost:9999",rM="supabase.auth.token",nM={"X-Client-Info":`gotrue-js/${Q1}`},Mp="X-Supabase-Api-Version",eN={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},sM=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,si="sb_flow_id",iM=5,aM=10*60*1e3;
646class gl extends Error{constructor(t,r,s){super(t),this.__isAuthError=!0,this.name="AuthError",this.status=r,this.code=s}toJSON(){return{name:this.name,message:this.message,status:this.status,code:this.code}}}function z(e){return typeof e=="object"&&e!==null&&"__isAuthError"in e}class oM extends gl{constructor(t,r,s){super(t,r,s),this.name="AuthApiError",this.status=r,this.code=s}}function Uy(e){return z(e)&&e.name==="AuthApiError"}class Dr extends gl{constructor(t,r){super(t),this.name="AuthUnknownError",this.originalError=r}}class un extends gl{constructor(t,r,s,i){super(t,s,i),this.name=r,this.status=s}}class it extends un{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function Cc(e){return z(e)&&e.name==="AuthSessionMissingError"}class zi extends un{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Ec extends un{constructor(t){super(t,"AuthInvalidCredentialsError",400,void 0)}}class Ac extends un{constructor(t,r=null){super(t,"AuthImplicitGrantRedirectError",500,void 0),this.details=null,this.details=r}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{details:this.details})}}function lM(e){return z(e)&&e.name==="AuthImplicitGrantRedirectError"}class Vy extends un{constructor(t,r=null){super(t,"AuthPKCEGrantCodeExchangeError",500,void 0),this.details=null,this.details=r}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{details:this.details})}}class cM extends un{constructor(){super("PKCE code verifier not found in storage. This can happen if the auth flow was initiated in a different browser or device, or if the storage was cleared. For SSR frameworks (Next.js, SvelteKit, etc.), use @supabase/ssr on both the server and client to store the code verifier in cookies.","AuthPKCECodeVerifierMissingError",400,"pkce_code_verifier_not_found")}}class nd extends un{constructor(t,r){super(t,"AuthRetryableFetchError",r,void 0)}}function Pc(e){return z(e)&&e.name==="AuthRetryableFetchError"}class zy extends un{constructor(t="Refresh result discarded: session state changed mid-flight (e.g., concurrent signOut)"){super(t,"AuthRefreshDiscardedError",409,void 0)}}function dM(e){return z(e)&&e.name==="AuthRefreshDiscardedError"}class Wy extends un{constructor(t,r,s){super(t,"AuthWeakPasswordError",r,"weak_password"),this.reasons=s}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{reasons:this.reasons})}}class Bd extends un{constructor(t){super(t,"AuthInvalidJwtError",400,"invalid_jwt")}}const Fd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),Zy=` 647\r=`.split(""),uM=(()=>{const e=new Array(128);for(let t=0;t<e.length;t+=1)e[t]=-1;for(let t=0;t<Zy.length;t+=1)e[Zy[t].charCodeAt(0)]=-2;for(let t=0;t<Fd.length;t+=1)e[Fd[t].charCodeAt(0)]=t;return e})();function qy(e,t,r){if(e!==null)for(t.queue=t.queue<<8|e,t.queuedBits+=8;t.queuedBits>=6;){const s=t.queue>>t.queuedBits-6&63;r(Fd[s]),t.queuedBits-=6}else if(t.queuedBits>0)for(t.queue=t.queue<<6-t.queuedBits,t.queuedBits=6;t.queuedBits>=6;){const s=t.queue>>t.queuedBits-6&63;r(Fd[s]),t.queuedBits-=6}}function tN(e,t,r){const s=uM[e];if(s>-1)for(t.queue=t.queue<<6|s,t.queuedBits+=6;t.queuedBits>=8;)r(t.queue>>t.queuedBits-8&255),t.queuedBits-=8;else{if(s===-2)return;throw new Error(`Invalid Base64-URL character "${String.fromCharCode(e)}"`)}}function Xy(e){const t=[],r=o=>{t.push(String.fromCodePoint(o))},s={utf8seq:0,codepoint:0},i={queue:0,queuedBits:0},a=o=>{pM(o,s,r)};for(let o=0;o<e.length;o+=1)tN(e.charCodeAt(o),i,a);return t.join("")}function hM(e,t){if(e<=127){t(e);return}else if(e<=2047){t(192|e>>6),t(128|e&63);return}else if(e<=65535){t(224|e>>12),t(128|e>>6&63),t(128|e&63);return}else if(e<=1114111){t(240|e>>18),t(128|e>>12&63),t(128|e>>6&63),t(128|e&63);return}throw new Error(`Unrecognized Unicode codepoint: ${e.toString(16)}`)}function mM(e,t){for(let r=0;r<e.length;r+=1){let s=e.charCodeAt(r);if(s>55295&&s<=56319){const i=(s-55296)*1024&65535;s=(e.charCodeAt(r+1)-56320&65535|i)+65536,r+=1}hM(s,t)}}function pM(e,t,r){if(t.utf8seq===0){if(e<=127){r(e);return}for(let s=1;s<6;s+=1)if(!(e>>7-s&1)){t.utf8seq=s;break}if(t.utf8seq===2)t.codepoint=e&31;else if(t.utf8seq===3)t.codepoint=e&15;else if(t.utf8seq===4)t.codepoint=e&7;else throw new Error("Invalid UTF-8 sequence");t.utf8seq-=1}else if(t.utf8seq>0){if(e<=127)throw new Error("Invalid UTF-8 sequence");t.codepoint=t.codepoint<<6|e&63,t.utf8seq-=1,t.utf8seq===0&&r(t.codepoint)}}function Sa(e){const t=[],r={queue:0,queuedBits:0},s=i=>{t.push(i)};for(let i=0;i<e.length;i+=1)tN(e.charCodeAt(i),r,s);return new Uint8Array(t)}function fM(e){const t=[];return mM(e,r=>t.push(r)),new Uint8Array(t)}function ii(e){const t=[],r={queue:0,queuedBits:0},s=i=>{t.push(i)};return e.forEach(i=>
647qy(i,r,s)),qy(null,r,s),t.join("")}function gM(e){return Math.round(Date.now()/1e3)+e}function xM(){return Symbol("auth-callback")}const mt=()=>typeof window<"u"&&typeof document<"u",Ks={tested:!1,writable:!1},rN=()=>{if(!mt())return!1;try{if(typeof globalThis.localStorage!="object")return!1}catch{return!1}if(Ks.tested)return Ks.writable;const e=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),Ks.tested=!0,Ks.writable=!0}catch{Ks.tested=!0,Ks.writable=!1}return Ks.writable};function Gy(e){const t={},r=new URL(e);if(r.hash&&r.hash[0]==="#")try{new URLSearchParams(r.hash.substring(1)).forEach((i,a)=>{t[a]=i})}catch{}return r.searchParams.forEach((s,i)=>{t[i]=s}),t}const nN=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),vM=e=>typeof e=="object"&&e!==null&&"status"in e&&"ok"in e&&"json"in e&&typeof e.json=="function",An=async(e,t,r)=>{await e.setItem(t,JSON.stringify(r))},bt=async(e,t)=>{const r=await e.getItem(t);if(!r)return null;try{return JSON.parse(r)}catch{return null}},Ht=async(e,t)=>{await e.removeItem(t)};class Du{constructor(){this.promise=new Du.promiseConstructor((t,r)=>{this.resolve=t,this.reject=r})}}Du.promiseConstructor=Promise;function Tc(e){const t=e.split(".");if(t.length!==3)throw new Bd("Invalid JWT structure");for(let s=0;s<t.length;s++)if(!sM.test(t[s]))throw new Bd("JWT not in base64url format");return{header:JSON.parse(Xy(t[0])),payload:JSON.parse(Xy(t[1])),signature:Sa(t[2]),raw:{header:t[0],payload:t[1]}}}async function yM(e){return await new Promise(t=>{setTimeout(()=>t(null),e)})}function bM(e,t){return new Promise((s,i)=>{(async()=>{for(let a=0;a<1/0;a++)try{const o=await e(a);if(!t(a,null,o)){s(o);return}}catch(o){if(!t(a,o)){i(o);return}}})()})}function sN(e){return("0"+e.toString(16)).substr(-2)}function wM(){const t=new Uint32Array(56);if(typeof crypto>"u"){const r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",s=r.length;let i="";for(let a=0;a<56;a++)i+=r.charAt(Math.floor(Math.random()*s));return i}return crypto.getRandomValues(t),Array.from(t,sN).join("")}async function jM(e){const r=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",r),i=new Uint8Array(s);return Array.from(i).map(a=>String.fromCharCode(a)).join("")}async function kM(e){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),e;const r=await jM(e);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}const NM=/^[a-zA-Z0-9_-]{8,64}$/;function sd(e){return typeof e=="string"&&NM.test(e)?e:null}function SM(){if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function"){const t=new Uint8Array(16);return crypto.getRandomValues(t),Array.from(t,sN).join("")}let e="";for(let t=0;t<32;t++)e+=Math.floor(Math.random()*16).toString(16);return e}const Wa=(e,t)=>`${e}-flow-${t}-code-verifier`,xl=e=>`${e}-flows-code-verifier`;async function Bg(e,t){const r=await bt(e,xl(t));return Array.isArray(r)?r.filter(s=>sd(s)!==null):[]}async function CM(e,t,r,s,i){await An(e,Wa(t,r),s);const a=(await Bg(e,t)).filter(o=>o!==r);for(a.push(r);a.length>iM;){const o=a.shift();await Ht(e,Wa(t,o)),i==null||i(o)}await An(e,xl(t),a),await An(e,`${t}-code-verifier`,s)}async function EM(e,t,r){if(r){const i=await bt(e,Wa(t,r));return{verifier:typeof i=="string"?i:null,flowId:r}}const s=await bt(e,`${t}-code-verifier`);return{verifier:typeof s=="string"?s:null,flowId:null}}async function Cr(e,t,r){const s=`${t}-code-verifier`;if(!r){await Ht(e,s);return}const i=Wa(t,r),a=await bt(e,i);await Ht(e,i);const o=await Bg(e,t),l=o.filter(c=>c!==r);l.length!==o.length&&(l.length>0?await An(e,xl(t),l):await Ht(e,xl(t))),a!=null&&a===await bt(e,s)&&await Ht(e,s)}async function AM(e,t){const r=await Bg(e,t);for(const s of r)await Ht(e,Wa(t,s));await Ht(e,xl(t)),await Ht(e,`${t}-code-verifier`)}function PM(e,t){const r=e.indexOf("#");let s=r===-1?e:e.slice(0,r);const i=r===-1?"":e.slice(r),a=s.indexOf("?");if(a!==-1){const l=s.slice(0,a),c=s.slice(a+1).split("&").filter(d=>
647d!==""&&d!==si&&!d.startsWith(`${si}=`));s=c.length>0?`${l}?${c.join("&")}`:l}const o=s.includes("?")?"&":"?";return`${s}${o}${si}=${encodeURIComponent(t)}${i}`}async function TM(e,t,r=!1,s){const i=wM();let a=i;r&&(a+="/recovery");const o=SM();await CM(e,t,o,a,s);const l=await kM(i);return[l,i===l?"plain":"s256",o]}const _M=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function IM(e){const t=e.headers.get(Mp);if(!t||!t.match(_M))return null;try{return new Date(`${t}T00:00:00.0Z`)}catch{return null}}function RM(e){if(!e)throw new Error("Missing exp claim");const t=Math.floor(Date.now()/1e3);if(e<=t)throw new Error("JWT has expired")}function OM(e){switch(e){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:{name:"SHA-256"}};default:throw new Error("Invalid alg claim")}}const MM=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function xn(e){if(!MM.test(e))throw new Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function Er(e){if(!e.passkey)throw new Error("@supabase/auth-js: the passkey API is experimental and disabled by default. Enable it by passing `auth: { experimental: { passkey: true } }` to createClient (or to the GoTrueClient constructor).")}function Wh(){const e={};return new Proxy(e,{get:(t,r)=>{if(r==="__isUserNotAvailableProxy")return!0;if(typeof r=="symbol"){const s=r.toString();if(s==="Symbol(Symbol.toPrimitive)"||s==="Symbol(Symbol.toStringTag)"||s==="Symbol(util.inspect.custom)")return}throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${r}" property of the session object is not supported. Please use getUser() instead.`)},set:(t,r)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${r}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)},deleteProperty:(t,r)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${r}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)}})}function DM(e,t){return new Proxy(e,{get:(r,s,i)=>{if(s==="__isInsecureUserWarningProxy")return!0;if(typeof s=="symbol"){const a=s.toString();if(a==="Symbol(Symbol.toPrimitive)"||a==="Symbol(Symbol.toStringTag)"||a==="Symbol(util.inspect.custom)"||a==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(r,s,i)}return!t.value&&typeof s=="string"&&(console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),t.value=!0),Reflect.get(r,s,i)}})}function Ky(e){return JSON.parse(JSON.stringify(e))}const Qs=e=>{if(typeof e=="object"&&e!==null){const t=e;if(typeof t.msg=="string")return t.msg;if(typeof t.message=="string")return t.message;if(typeof t.error_description=="string")return t.error_description;if(typeof t.error=="string")return t.error}return JSON.stringify(e)},Yy=[500,501,502,503,504,520,521,522,523,524,525,526,527,528,529,530];async function Jy(e){var t;if(!vM(e))throw new nd(Qs(e),0);let r;try{r=await e.json()}catch(a){throw Yy.includes(e.status)?new nd(e.statusText||`HTTP ${e.status}`,e.status):new Dr(Qs(a),a)}if(Yy.includes(e.status))throw new nd(Qs(r),e.status);let s;const i=IM(e);if(i&&i.getTime()>=eN["2024-01-01"].timestamp&&typeof r=="object"&&r&&typeof r.code=="string"?s=r.code:typeof r=="object"&&r&&typeof r.error_code=="string"&&(s=r.error_code),s){if(s==="weak_password")throw new Wy(Qs(r),e.status,((t=r.weak_password)===null||t===void 0?void 0:t.reasons)||[]);if(s==="session_not_found")throw new it}else if(typeof r=="object"&&r&&typeof r.weak_password=="object"&&r.weak_password&&Array.isArray(r.weak_password.reasons)&&r.weak_password.reasons.length&&r.weak_password.reasons.reduce((a,o)=>
647a&&typeof o=="string",!0))throw new Wy(Qs(r),e.status,r.weak_password.reasons);throw new oM(Qs(r),e.status||500,s)}const LM=(e,t,r,s)=>{const i={method:e,headers:(t==null?void 0:t.headers)||{}};return e==="GET"?i:(i.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},t==null?void 0:t.headers),i.body=JSON.stringify(s),Object.assign(Object.assign({},i),r))};async function G(e,t,r,s){var i;const a=Object.assign({},s==null?void 0:s.headers);a[Mp]||(a[Mp]=eN["2024-01-01"].name),s!=null&&s.jwt&&(a.Authorization=`Bearer ${s.jwt}`);const o=(i=s==null?void 0:s.query)!==null&&i!==void 0?i:{};s!=null&&s.redirectTo&&(o.redirect_to=s.redirectTo);const l=Object.keys(o).length?"?"+new URLSearchParams(o).toString():"",c=await HM(e,t,r+l,{headers:a,noResolveJson:s==null?void 0:s.noResolveJson},{},s==null?void 0:s.body);return s!=null&&s.xform?s==null?void 0:s.xform(c):{data:Object.assign({},c),error:null}}async function HM(e,t,r,s,i,a){const o=LM(t,s,i,a);let l;try{l=await e(r,Object.assign({},o))}catch(c){throw new nd(Qs(c),0)}if(l.ok||await Jy(l),s!=null&&s.noResolveJson)return l;try{return await l.json()}catch(c){await Jy(c)}}function ar(e){var t;let r=null;FM(e)&&(r=Object.assign({},e),e.expires_at||(r.expires_at=gM(e.expires_in)));const s=(t=e.user)!==null&&t!==void 0?t:typeof(e==null?void 0:e.id)=="string"?e:null;return{data:{session:r,user:s},error:null}}function Qy(e){const t=ar(e);return!t.error&&e.weak_password&&typeof e.weak_password=="object"&&Array.isArray(e.weak_password.reasons)&&e.weak_password.reasons.length&&e.weak_password.message&&typeof e.weak_password.message=="string"&&e.weak_password.reasons.reduce((r,s)=>r&&typeof s=="string",!0)&&(t.data.weak_password=e.weak_password),t}function as(e){var t;return{data:{user:(t=e.user)!==null&&t!==void 0?t:e},error:null}}function $M(e){return{data:e,error:null}}function BM(e){const{action_link:t,email_otp:r,hashed_token:s,redirect_to:i,verification_type:a}=e,o=Mu(e,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),l={action_link:t,email_otp:r,hashed_token:s,redirect_to:i,verification_type:a},c=Object.assign({},o);return{data:{properties:l,user:c},error:null}}function eb(e){return e}function FM(e){return!!e.access_token&&!!e.refresh_token&&!!e.expires_in}const Zh=["global","local","others"];class UM{constructor({url:t="",headers:r={},fetch:s,experimental:i}){this.url=t,this.headers=r,this.fetch=nN(s),this.experimental=i??{},this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)},this.oauth={listClients:this._listOAuthClients.bind(this),createClient:this._createOAuthClient.bind(this),getClient:this._getOAuthClient.bind(this),updateClient:this._updateOAuthClient.bind(this),deleteClient:this._deleteOAuthClient.bind(this),regenerateClientSecret:this._regenerateOAuthClientSecret.bind(this)},this.customProviders={listProviders:this._listCustomProviders.bind(this),createProvider:this._createCustomProvider.bind(this),getProvider:this._getCustomProvider.bind(this),updateProvider:this._updateCustomProvider.bind(this),deleteProvider:this._deleteCustomProvider.bind(this)},this.passkey={listPasskeys:this._adminListPasskeys.bind(this),deletePasskey:this._adminDeletePasskey.bind(this)}}async signOut(t,r=Zh[0]){if(Zh.indexOf(r)<0)throw new Error(`@supabase/auth-js: Parameter scope must be one of ${Zh.join(", ")}`);try{return await G(this.fetch,"POST",`${this.url}/logout?scope=${r}`,{headers:this.headers,jwt:t,noResolveJson:!0}),{data:null,error:null}}catch(s){if(z(s))return{data:null,error:s};throw s}}async inviteUserByEmail(t,r={}){try{return await G(this.fetch,"POST",`${this.url}/invite`,{body:{email:t,data:r.data},headers:this.headers,redirectTo:r.redirectTo,xform:as})}catch(s){if(z(s))return{data:{user:null},error:s};throw s}}async generateLink(t){try{const{options:r}=t,s=Mu(t,["options"]),i=Object.assign(Object.assign({},s),r);return"newEmail"in s&&(i.new_email=s==null?void 0:s.newEmail,delete i.newEmail),await G(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:i,headers:this.headers,xform:BM,redirectTo:r==null?void 0:r.redirectTo})}catch(r){if(z(r))return{data:{properties:null,user:null},error:r};throw r}}async createUser(t){try{return await G(this.fetch,"POST",`${this.url}/admin/users`,{body:t,headers:this.headers,xform:as})}catch(r){if(z(r))return{data:{user:null},error:r};throw r}}async listUsers(t){var r,s,i,a,o,l,c;try{const d={nextPage:null,lastPage:0,total:0},u=await G(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(s=(r=t==null?void 0:t.page)===null||r===void 0?void 0:r.toString())!==null&&s!==void 0?s:"",per_page:(a=(i=t==null?void 0:t.perPage)===null||i===void 0?void 0:i.toString())!==null&&a!==void 0?a:""},xform:eb});if(u.error)throw u.error;const h=await u.json(),p=(o=u.headers.get("x-total-count"))!==null&&o!==void 0?o:0,m=(c=(l=u.headers.get("link"))===null||l===void 0?void 0:l.split(","))!==null&&c!==void 0?c:[];return m.length>0&&(m.forEach(y=>{const b=parseInt(y.split(";")[0].split("=")[1].substring(0,1)),w=JSON.parse(y.split(";")[1].split("=")[1]);d[`${w}Page`]=b}),d.total=parseInt(p)),{data:Object.assign(Object.assign({},h),d),error:null}}catch(d){if(z(d))return{data:{users:[]},error:d};throw d}}async getUserById(t){xn(t);try{return await G(this.fetch,"GET",`${this.url}/admin/users/${t}`,{headers:this.headers,xform:as})}catch(r){if(z(r))return{data:{user:null},error:r};throw r}}async updateUserById(t,r){xn(t);try{return await G(this.fetch,"PUT",`${this.url}/admin/users/${t}`,{body:r,headers:this.headers,xform:as})}catch(s){if(z(s))return{data:{user:null},error:s};throw s}}async deleteUser(t,r=!1){xn(t);
647try{return await G(this.fetch,"DELETE",`${this.url}/admin/users/${t}`,{headers:this.headers,body:{should_soft_delete:r},xform:as})}catch(s){if(z(s))return{data:{user:null},error:s};throw s}}async _listFactors(t){xn(t.userId);try{const{data:r,error:s}=await G(this.fetch,"GET",`${this.url}/admin/users/${t.userId}/factors`,{headers:this.headers,xform:i=>({data:{factors:i},error:null})});return{data:r,error:s}}catch(r){if(z(r))return{data:null,error:r};throw r}}async _deleteFactor(t){xn(t.userId),xn(t.id);try{return{data:await G(this.fetch,"DELETE",`${this.url}/admin/users/${t.userId}/factors/${t.id}`,{headers:this.headers}),error:null}}catch(r){if(z(r))return{data:null,error:r};throw r}}async _listOAuthClients(t){var r,s,i,a,o,l,c;try{const d={nextPage:null,lastPage:0,total:0},u=await G(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(s=(r=t==null?void 0:t.page)===null||r===void 0?void 0:r.toString())!==null&&s!==void 0?s:"",per_page:(a=(i=t==null?void 0:t.perPage)===null||i===void 0?void 0:i.toString())!==null&&a!==void 0?a:""},xform:eb});if(u.error)throw u.error;const h=await u.json(),p=(o=u.headers.get("x-total-count"))!==null&&o!==void 0?o:0,m=(c=(l=u.headers.get("link"))===null||l===void 0?void 0:l.split(","))!==null&&c!==void 0?c:[];return m.length>0&&(m.forEach(y=>{const b=parseInt(y.split(";")[0].split("=")[1].substring(0,1)),w=JSON.parse(y.split(";")[1].split("=")[1]);d[`${w}Page`]=b}),d.total=parseInt(p)),{data:Object.assign(Object.assign({},h),d),error:null}}catch(d){if(z(d))return{data:{clients:[]},error:d};throw d}}async _createOAuthClient(t){try{return await G(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:t,headers:this.headers,xform:r=>({data:r,error:null})})}catch(r){if(z(r))return{data:null,error:r};throw r}}async _getOAuthClient(t){try{return await G(this.fetch,"GET",`${this.url}/admin/oauth/clients/${t}`,{headers:this.headers,xform:r=>({data:r,error:null})})}catch(r){if(z(r))return{data:null,error:r};throw r}}async _updateOAuthClient(t,r){try{return await G(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${t}`,{body:r,headers:this.headers,xform:s=>({data:s,error:null})})}catch(s){if(z(s))return{data:null,error:s};throw s}}async _deleteOAuthClient(t){try{return await G(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${t}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(r){if(z(r))return{data:null,error:r};throw r}}async _regenerateOAuthClientSecret(t){try{return await G(this.fetch,"POST",`${this.url}/admin/oauth/clients/${t}/regenerate_secret`,{headers:this.headers,xform:r=>({data:r,error:null})})}catch(r){if(z(r))return{data:null,error:r};throw r}}async _listCustomProviders(t){try{const r={};return t!=null&&t.type&&(r.type=t.type),await G(this.fetch,"GET",`${this.url}/admin/custom-providers`,{headers:this.headers,query:r,xform:s=>{var i;return{data:{providers:(i=s==null?void 0:s.providers)!==null&&i!==void 0?i:[]},error:null}}})}catch(r){if(z(r))return{data:{providers:[]},error:r};throw r}}async _createCustomProvider(t){try{return await G(this.fetch,"POST",`${this.url}/admin/custom-providers`,{body:t,headers:this.headers,xform:r=>({data:r,error:null})})}catch(r){if(z(r))return{data:null,error:r};throw r}}async _getCustomProvider(t){try{return await G(this.fetch,"GET",`${this.url}/admin/custom-providers/${t}`,{headers:this.headers,xform:r=>({data:r,error:null})})}catch(r){if(z(r))return{data:null,error:r};throw r}}async _updateCustomProvider(t,r){try{return await G(this.fetch,"PUT",`${this.url}/admin/custom-providers/${t}`,{body:r,headers:this.headers,xform:s=>({data:s,error:null})})}catch(s){if(z(s))return{data:null,error:s};throw s}}async _deleteCustomProvider(t){try{return await G(this.fetch,"DELETE",`${this.url}/admin/custom-providers/${t}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(r){if(z(r))return{data:null,error:r};throw r}}async _adminListPasskeys(t){Er(this.experimental),xn(t.userId);try{return await G(this.fetch,"GET",`${this.url}/admin/users/${t.userId}/passkeys`,{headers:this.headers,xform:r=>({data:r,error:null})})}catch(r){if(z(r))return{data:null,error:r};throw r}}async _adminDeletePasskey(t){Er(this.experimental),xn(t.userId),xn(t.passkeyId);
647try{return await G(this.fetch,"DELETE",`${this.url}/admin/users/${t.userId}/passkeys/${t.passkeyId}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(r){if(z(r))return{data:null,error:r};throw r}}}function tb(e={}){return{getItem:t=>e[t]||null,setItem:(t,r)=>{e[t]=r},removeItem:t=>{delete e[t]}}}globalThis&&rN()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug");class VM extends Error{constructor(t){super(t),this.isAcquireTimeout=!0}}function zM(){if(typeof globalThis!="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{typeof self<"u"&&(self.globalThis=self)}}function iN(e){if(!/^0x[a-fA-F0-9]{40}$/.test(e))throw new Error(`@supabase/auth-js: Address "${e}" is invalid.`);return e.toLowerCase()}function WM(e){return parseInt(e,16)}function ZM(e){const t=new TextEncoder().encode(e);return"0x"+Array.from(t,s=>s.toString(16).padStart(2,"0")).join("")}function qM(e){var t;const{chainId:r,domain:s,expirationTime:i,issuedAt:a=new Date,nonce:o,notBefore:l,requestId:c,resources:d,scheme:u,uri:h,version:p}=e;{if(!Number.isInteger(r))throw new Error(`@supabase/auth-js: Invalid SIWE message field "chainId". Chain ID must be a EIP-155 chain ID. Provided value: ${r}`);if(!s)throw new Error('@supabase/auth-js: Invalid SIWE message field "domain". Domain must be provided.');if(o&&o.length<8)throw new Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${o}`);if(!h)throw new Error('@supabase/auth-js: Invalid SIWE message field "uri". URI must be provided.');if(p!=="1")throw new Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${p}`);if(!((t=e.statement)===null||t===void 0)&&t.includes(` 648`))throw new Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${e.statement}`)}const m=iN(e.address),y=u?`${u}://${s}`:s,b=e.statement?`${e.statement} 649`:"",w=`${y} wants you to sign in with your Ethereum account: 650${m} 651 652${b}`;let g=`URI: ${h} 653Version: ${p} 654Chain ID: ${r}${o?` 655Nonce: ${o}`:""} 656Issued At: ${a.toISOString()}`;if(i&&(g+=` 657Expiration Time: ${i.toISOString()}`),l&&(g+=` 658Not Before: ${l.toISOString()}`),c&&(g+=` 659Request ID: ${c}`),d){let v=` 660Resources:`;for(const x of d){if(!x||typeof x!="string")throw new Error(`@supabase/auth-js: Invalid SIWE message field "resources". Every resource must be a valid string. Provided value: ${x}`);v+=` 661- ${x}`}g+=v}return`${w} 662${g}`}class Qe extends Error{constructor({message:t,code:r,cause:s,name:i}){var a;super(t,{cause:s}),this.__isWebAuthnError=!0,this.name=(a=i??(s instanceof Error?s.name:void 0))!==null&&a!==void 0?a:"Unknown Error",this.code=r}toJSON(){return{name:this.name,message:this.message,code:this.code}}}class Ud extends Qe{constructor(t,r){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:r,message:t}),this.name="WebAuthnUnknownError",this.originalError=r}}function XM({error:e,options:t}){var r,s,i;const{publicKey:a}=t;if(!a)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new Qe({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(((r=a.authenticatorSelection)===null||r===void 0?void 0:r.requireResidentKey)===!0)return new Qe({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});if(t.mediation==="conditional"&&((s=a.authenticatorSelection)===null||s===void 0?void 0:s.userVerification)==="required")return new Qe({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});if(((i=a.authenticatorSelection)===null||i===void 0?void 0:i.userVerification)==="required")return new Qe({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else{if(e.name==="InvalidStateError")return new Qe({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if(e.name==="NotAllowedError")return new Qe({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="NotSupportedError")return a.pubKeyCredParams.filter(l=>l.type==="public-key").length===0?new Qe({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new Qe({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e});if(e.name==="SecurityError"){const o=window.location.hostname;if(aN(o)){if(a.rp.id!==o)return new Qe({message:`The RP ID "${a.rp.id}
662" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new Qe({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="TypeError"){if(a.user.id.byteLength<1||a.user.id.byteLength>64)return new Qe({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if(e.name==="UnknownError")return new Qe({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return new Qe({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}function GM({error:e,options:t}){const{publicKey:r}=t;if(!r)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new Qe({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else{if(e.name==="NotAllowedError")return new Qe({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="SecurityError"){const s=window.location.hostname;if(aN(s)){if(r.rpId!==s)return new Qe({message:`The RP ID "${r.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new Qe({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="UnknownError")return new Qe({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return new Qe({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}class KM{createNewAbortSignal(){if(this.controller){const r=new Error("Cancelling existing WebAuthn API call for new one");r.name="AbortError",this.controller.abort(r)}const t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){const t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}}const Dp=new KM;function rb(e){if(!e)throw new Error("Credential creation options are required");if(typeof PublicKeyCredential<"u"&&"parseCreationOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseCreationOptionsFromJSON=="function")return PublicKeyCredential.parseCreationOptionsFromJSON(e);const{challenge:t,user:r,excludeCredentials:s}=e,i=Mu(e,["challenge","user","excludeCredentials"]),a=Sa(t).buffer,o=Object.assign(Object.assign({},r),{id:Sa(r.id).buffer}),l=Object.assign(Object.assign({},i),{challenge:a,user:o});if(s&&s.length>0){l.excludeCredentials=new Array(s.length);for(let c=0;c<s.length;c++){const d=s[c];l.excludeCredentials[c]=Object.assign(Object.assign({},d),{id:Sa(d.id).buffer,type:d.type||"public-key",transports:d.transports})}}return l}function nb(e){if(!e)throw new Error("Credential request options are required");if(typeof PublicKeyCredential<"u"&&"parseRequestOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseRequestOptionsFromJSON=="function")return PublicKeyCredential.parseRequestOptionsFromJSON(e);const{challenge:t,allowCredentials:r}=e,s=Mu(e,["challenge","allowCredentials"]),i=Sa(t).buffer,a=Object.assign(Object.assign({},s),{challenge:i});if(r&&r.length>0){a.allowCredentials=new Array(r.length);for(let o=0;o<r.length;o++){const l=r[o];a.allowCredentials[o]=Object.assign(Object.assign({},l),{id:Sa(l.id).buffer,type:l.type||"public-key",transports:l.transports})}}return a}function sb(e){var t;if("toJSON"in e&&typeof e.toJSON=="function")return e.toJSON();const r=e;return{id:e.id,rawId:e.id,response:{attestationObject:ii(new Uint8Array(e.response.attestationObject)),clientDataJSON:ii(new Uint8Array(e.response.clientDataJSON))},type:"public-key",clientExtensionResults:e.getClientExtensionResults(),authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function ib(e){var t;if("toJSON"in e&&typeof e.toJSON=="function")return e.toJSON();const r=e,s=e.getClientExtensionResults(),i=e.response;return{id:e.id,rawId:e.id,response:{authenticatorData:ii(new Uint8Array(i.authenticatorData)),clientDataJSON:ii(new Uint8Array(i.clientDataJSON)),signature:ii(new Uint8Array(i.signature)),userHandle:i.userHandle?ii(new Uint8Array(i.userHandle)):void 0},type:"public-key",clientExtensionResults:s,authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function aN(e){return e==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}function Vd(){var e,t;return!!(mt()&&"PublicKeyCredential"in window&&window.PublicKeyCredential&&"credentials"in navigator&&typeof((e=navigator==null?void 0:navigator.credentials)===null||e===void 0?void 0:e.create)=="function"&&typeof((t=navigator==null?void 0:navigator.credentials)===null||t===void 0?void 0:t.get)=="function")}async function oN(e){try{const t=await navigator.credentials.create(e);return t?t instanceof PublicKeyCredential?{data:t,error:null}:{data:null,error:new Ud("Browser returned unexpected credential type",t)}:{data:null,error:new Ud("Empty credential response",t)}}
662catch(t){return{data:null,error:XM({error:t,options:e})}}}async function lN(e){try{const t=await navigator.credentials.get(e);return t?t instanceof PublicKeyCredential?{data:t,error:null}:{data:null,error:new Ud("Browser returned unexpected credential type",t)}:{data:null,error:new Ud("Empty credential response",t)}}catch(t){return{data:null,error:GM({error:t,options:e})}}}const YM={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},JM={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function zd(...e){const t=i=>i!==null&&typeof i=="object"&&!Array.isArray(i),r=i=>i instanceof ArrayBuffer||ArrayBuffer.isView(i),s={};for(const i of e)if(i)for(const a in i){const o=i[a];if(o!==void 0)if(Array.isArray(o))s[a]=o;else if(r(o))s[a]=o;else if(t(o)){const l=s[a];t(l)?s[a]=zd(l,o):s[a]=zd(o)}else s[a]=o}return s}function QM(e,t){return zd(YM,e,t||{})}function eD(e,t){return zd(JM,e,t||{})}class tD{constructor(t){this.client=t,this.enroll=this._enroll.bind(this),this.challenge=this._challenge.bind(this),this.verify=this._verify.bind(this),this.authenticate=this._authenticate.bind(this),this.register=this._register.bind(this)}async _enroll(t){return this.client.mfa.enroll(Object.assign(Object.assign({},t),{factorType:"webauthn"}))}async _challenge({factorId:t,webauthn:r,friendlyName:s,signal:i},a){var o;try{const{data:l,error:c}=await this.client.mfa.challenge({factorId:t,webauthn:r});if(!l)return{data:null,error:c};const d=i??Dp.createNewAbortSignal();if(l.webauthn.type==="create"){const{user:u}=l.webauthn.credential_options.publicKey;if(!u.name){const h=s;if(h)u.name=`${u.id}:${h}`;else{const m=(await this.client.getUser()).data.user,y=((o=m==null?void 0:m.user_metadata)===null||o===void 0?void 0:o.name)||(m==null?void 0:m.email)||(m==null?void 0:m.id)||"User";u.name=`${u.id}:${y}`}}u.displayName||(u.displayName=u.name)}switch(l.webauthn.type){case"create":{const u=QM(l.webauthn.credential_options.publicKey,a==null?void 0:a.create),{data:h,error:p}=await oN({publicKey:u,signal:d});return h?{data:{factorId:t,challengeId:l.id,webauthn:{type:l.webauthn.type,credential_response:h}},error:null}:{data:null,error:p}}case"request":{const u=eD(l.webauthn.credential_options.publicKey,a==null?void 0:a.request),{data:h,error:p}=await lN(Object.assign(Object.assign({},l.webauthn.credential_options),{publicKey:u,signal:d}));return h?{data:{factorId:t,challengeId:l.id,webauthn:{type:l.webauthn.type,credential_response:h}},error:null}:{data:null,error:p}}}}catch(l){return z(l)?{data:null,error:l}:{data:null,error:new Dr("Unexpected error in challenge",l)}}}async _verify({challengeId:t,factorId:r,webauthn:s}){return this.client.mfa.verify({factorId:r,challengeId:t,webauthn:s})}async _authenticate({factorId:t,webauthn:{rpId:r=typeof window<"u"?window.location.hostname:void 0,rpOrigins:s=typeof window<"u"?[window.location.origin]:void 0,signal:i}={}},a){if(!r)return{data:null,error:new gl("rpId is required for WebAuthn authentication")};try{if(!Vd())return{data:null,error:new Dr("Browser does not support WebAuthn",null)};const{data:o,error:l}=await this.challenge({factorId:t,webauthn:{rpId:r,rpOrigins:s},signal:i},{request:a});if(!o)return{data:null,error:l};const{webauthn:c}=o;return this._verify({factorId:t,challengeId:o.challengeId,webauthn:{type:c.type,rpId:r,rpOrigins:s,credential_response:c.credential_response}})}catch(o){return z(o)?{data:null,error:o}:{data:null,error:new Dr("Unexpected error in authenticate",o)}}}async _register({friendlyName:t,webauthn:{rpId:r=typeof window<"u"?window.location.hostname:void 0,rpOrigins:s=typeof window<"u"?[window.location.origin]:void 0,signal:i}={}},a){if(!r)return{data:null,error:new gl("rpId is required for WebAuthn registration")};try{if(!Vd())return{data:null,error:new Dr("Browser does not support WebAuthn",null)};const{data:o,error:l}=await this._enroll({friendlyName:t});if(!o)return await this.client.mfa.listFactors().then(u=>{var h;
662return(h=u.data)===null||h===void 0?void 0:h.all.find(p=>p.factor_type==="webauthn"&&p.friendly_name===t&&p.status!=="unverified")}).then(u=>u?this.client.mfa.unenroll({factorId:u==null?void 0:u.id}):void 0),{data:null,error:l};const{data:c,error:d}=await this._challenge({factorId:o.id,friendlyName:o.friendly_name,webauthn:{rpId:r,rpOrigins:s},signal:i},{create:a});return c?this._verify({factorId:o.id,challengeId:c.challengeId,webauthn:{rpId:r,rpOrigins:s,type:c.webauthn.type,credential_response:c.webauthn.credential_response}}):{data:null,error:d}}catch(o){return z(o)?{data:null,error:o}:{data:null,error:new Dr("Unexpected error in register",o)}}}}zM();const rD={url:tM,storageKey:rM,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:nM,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:5e3,skipAutoInitialize:!1,experimental:{}},Wi={};class vl{get jwks(){var t,r;return(r=(t=Wi[this.storageKey])===null||t===void 0?void 0:t.jwks)!==null&&r!==void 0?r:{keys:[]}}set jwks(t){Wi[this.storageKey]=Object.assign(Object.assign({},Wi[this.storageKey]),{jwks:t})}get jwks_cached_at(){var t,r;return(r=(t=Wi[this.storageKey])===null||t===void 0?void 0:t.cachedAt)!==null&&r!==void 0?r:Number.MIN_SAFE_INTEGER}set jwks_cached_at(t){Wi[this.storageKey]=Object.assign(Object.assign({},Wi[this.storageKey]),{cachedAt:t})}constructor(t){var r,s,i;this.userStorage=null,this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.autoRefreshTickTimeout=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.lastRefreshFailure=null,this._sessionRemovalEpoch=0,this.initializePromise=null,this._pendingInitNotifications=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lock=null,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log;const a=Object.assign(Object.assign({},rD),t);if(this.storageKey=a.storageKey,this.instanceID=(r=vl.nextInstanceID[this.storageKey])!==null&&r!==void 0?r:0,vl.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!a.debug,typeof a.debug=="function"&&(this.logger=a.debug),this.instanceID>0&&mt()){const o=`${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;console.warn(o),this.logDebugMessages&&console.trace(o)}if(this.persistSession=a.persistSession,this.autoRefreshToken=a.autoRefreshToken,this.experimental=(s=a.experimental)!==null&&s!==void 0?s:{},this.admin=new UM({url:a.url,headers:a.headers,fetch:a.fetch,experimental:this.experimental}),this.url=a.url,this.headers=a.headers,this.fetch=nN(a.fetch),this.detectSessionInUrl=a.detectSessionInUrl,this.flowType=a.flowType,this.hasCustomAuthorizationHeader=a.hasCustomAuthorizationHeader,this.throwOnError=a.throwOnError,this.lockAcquireTimeout=a.lockAcquireTimeout,a.lock!=null&&(this.lock=a.lock),this.jwks||(this.jwks={keys:[]},this.jwks_cached_at=Number.MIN_SAFE_INTEGER),this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this),webauthn:new tD(this)},this.oauth={getAuthorizationDetails:this._getAuthorizationDetails.bind(this),approveAuthorization:this._approveAuthorization.bind(this),denyAuthorization:this._denyAuthorization.bind(this),listGrants:this._listOAuthGrants.bind(this),revokeGrant:this._revokeOAuthGrant.bind(this)},this.passkey={startRegistration:this._startPasskeyRegistration.bind(this),verifyRegistration:this._verifyPasskeyRegistration.bind(this),startAuthentication:this._startPasskeyAuthentication.bind(this),verifyAuthentication:this._verifyPasskeyAuthentication.bind(this),list:this._listPasskeys.bind(this),update:this._updatePasskey.bind(this),delete:this._deletePasskey.bind(this)},this.persistSession?(a.storage?this.storage=a.storage:rN()?this.storage=globalThis.localStorage:(this.memoryStorage={},this.storage=tb(this.memoryStorage)),a.userStorage&&(this.userStorage=a.userStorage)):(this.memoryStorage={},this.storage=tb(this.memoryStorage)),mt()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(o){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",o)}(i=this.broadcastChannel)===null||i===void 0||i.addEventListener("message",async o=>{this._debug("received broadcast notification from other tab or client",o),(o.data.event==="TOKEN_REFRESHED"||o.data.event==="SIGNED_IN")&&(this.lastRefreshFailure=null);try{await this._notifyAllSubscribers(o.data.event,o.data.session,!1)}catch(l){this._debug("#broadcastChannel","error",l)}})}a.skipAutoInitialize||this.initialize().catch(o=>{this._debug("#initialize()","error",o)})}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(t){if(this.throwOnError&&t&&t.error)throw t.error;return t}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${Q1}) ${new Date().toISOString()}`}_debug(...t){return this.logDebugMessages&&this.logger(this._logPrefix(),...t),this}async initialize(){var t;if(this.initializePromise)return await this.initializePromise;this._pendingInitNotifications=[],this.initializePromise=(async()=>this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._initialize()):await this._initialize())();
662const r=await this.initializePromise,s=(t=this._pendingInitNotifications)!==null&&t!==void 0?t:[];this._pendingInitNotifications=null;for(const i of s)await this._notifyAllSubscribers(i.event,i.session,i.broadcast);return r}async _initialize(){var t;try{let r={},s="none";if(mt()&&(r=Gy(window.location.href),this._isImplicitGrantCallback(r)?s="implicit":await this._isPKCECallback(r)&&(s="pkce")),mt()&&this.detectSessionInUrl&&s!=="none"){const{data:i,error:a}=await this._getSessionFromURL(r,s);if(a){if(this._debug("#_initialize()","error detecting session from URL",a),lM(a)){const c=(t=a.details)===null||t===void 0?void 0:t.code;if(c==="identity_already_exists"||c==="identity_not_found"||c==="single_identity_not_deletable")return{error:a}}return{error:a}}const{session:o,redirectType:l}=i;return this._debug("#_initialize()","detected session in URL",o,"redirect type",l),await this._saveSession(o),setTimeout(async()=>{l==="recovery"?await this._notifyAllSubscribers("PASSWORD_RECOVERY",o):await this._notifyAllSubscribers("SIGNED_IN",o)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(r){return z(r)?this._returnResult({error:r}):this._returnResult({error:new Dr("Unexpected error during initialization",r)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(t){var r,s,i;try{const a=await G(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(s=(r=t==null?void 0:t.options)===null||r===void 0?void 0:r.data)!==null&&s!==void 0?s:{},gotrue_meta_security:{captcha_token:(i=t==null?void 0:t.options)===null||i===void 0?void 0:i.captchaToken}},xform:ar}),{data:o,error:l}=a;if(l||!o)return this._returnResult({data:{user:null,session:null},error:l});const c=o.session,d=o.user;return o.session&&(await this._saveSession(o.session),await this._notifyAllSubscribers("SIGNED_IN",c)),this._returnResult({data:{user:d,session:c},error:null})}catch(a){if(z(a))return this._returnResult({data:{user:null,session:null},error:a});throw a}}async signUp(t){var r,s,i;let a=null;try{let o;if("email"in t){const{email:h,password:p,options:m}=t;let y=null,b=null;this.flowType==="pkce"&&([y,b,a]=await this._getCodeChallengeAndMethod()),o=await G(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:this._maybeAppendFlowIdToRedirect(m==null?void 0:m.emailRedirectTo,a),body:{email:h,password:p,data:(r=m==null?void 0:m.data)!==null&&r!==void 0?r:{},gotrue_meta_security:{captcha_token:m==null?void 0:m.captchaToken},code_challenge:y,code_challenge_method:b},xform:ar})}else if("phone"in t){const{phone:h,password:p,options:m}=t;o=await G(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:h,password:p,data:(s=m==null?void 0:m.data)!==null&&s!==void 0?s:{},channel:(i=m==null?void 0:m.channel)!==null&&i!==void 0?i:"sms",gotrue_meta_security:{captcha_token:m==null?void 0:m.captchaToken}},xform:ar})}else throw new Ec("You must provide either an email or phone number and a password");const{data:l,error:c}=o;if(c||!l)return await Cr(this.storage,this.storageKey,a),this._returnResult({data:{user:null,session:null},error:c});const d=l.session,u=l.user;return l.session&&(await this._saveSession(l.session),await this._notifyAllSubscribers("SIGNED_IN",d)),this._returnResult({data:{user:u,session:d},error:null})}catch(o){if(await Cr(this.storage,this.storageKey,a),z(o))return this._returnResult({data:{user:null,session:null},error:o});throw o}}async signInWithPassword(t){try{let r;if("email"in t){const{email:a,password:o,options:l}=t;r=await G(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:a,password:o,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken}},xform:Qy})}else if("phone"in t){const{phone:a,password:o,options:l}=t;r=await G(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:a,password:o,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken}},xform:Qy})}else throw new Ec("You must provide either an email or phone number and a password");const{data:s,error:i}=r;if(i)return this._returnResult({data:{user:null,session:null},error:i});if(!s||!s.session||!s.user){const a=new zi;return this._returnResult({data:{user:null,session:null},error:a})}return s.session&&(await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",s.session)),this._returnResult({data:Object.assign({user:s.user,session:s.session},s.weak_password?{weakPassword:s.weak_password}:null),error:i})}catch(r){if(z(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}}async signInWithOAuth(t){var r,s,i,a;return await this._handleProviderSignIn(t.provider,{redirectTo:(r=t.options)===null||r===void 0?void 0:r.redirectTo,scopes:(s=t.options)===null||s===void 0?void 0:s.scopes,queryParams:(i=t.options)===null||i===void 0?void 0:i.queryParams,skipBrowserRedirect:(a=t.o
662ptions)===null||a===void 0?void 0:a.skipBrowserRedirect})}async exchangeCodeForSession(t,r){return await this.initializePromise,this.lock!=null?this._acquireLock(this.lockAcquireTimeout,async()=>this._exchangeCodeForSession(t,r)):this._exchangeCodeForSession(t,r)}async signInWithWeb3(t){const{chain:r}=t;switch(r){case"ethereum":return await this.signInWithEthereum(t);case"solana":return await this.signInWithSolana(t);default:throw new Error(`@supabase/auth-js: Unsupported chain "${r}"`)}}async signInWithEthereum(t){var r,s,i,a,o,l,c,d,u,h,p;let m,y;if("message"in t)m=t.message,y=t.signature;else{const{chain:b,wallet:w,statement:g,options:v}=t;let x;if(mt())if(typeof w=="object")x=w;else{const E=window;if("ethereum"in E&&typeof E.ethereum=="object"&&"request"in E.ethereum&&typeof E.ethereum.request=="function")x=E.ethereum;else throw new Error("@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.")}else{if(typeof w!="object"||!(v!=null&&v.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");x=w}const j=new URL((r=v==null?void 0:v.url)!==null&&r!==void 0?r:window.location.href),k=await x.request({method:"eth_requestAccounts"}).then(E=>E).catch(()=>{throw new Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!k||k.length===0)throw new Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");const N=iN(k[0]);let S=(s=v==null?void 0:v.signInWithEthereum)===null||s===void 0?void 0:s.chainId;if(!S){const E=await x.request({method:"eth_chainId"});S=WM(E)}const C={domain:j.host,address:N,statement:g,uri:j.href,version:"1",chainId:S,nonce:(i=v==null?void 0:v.signInWithEthereum)===null||i===void 0?void 0:i.nonce,issuedAt:(o=(a=v==null?void 0:v.signInWithEthereum)===null||a===void 0?void 0:a.issuedAt)!==null&&o!==void 0?o:new Date,expirationTime:(l=v==null?void 0:v.signInWithEthereum)===null||l===void 0?void 0:l.expirationTime,notBefore:(c=v==null?void 0:v.signInWithEthereum)===null||c===void 0?void 0:c.notBefore,requestId:(d=v==null?void 0:v.signInWithEthereum)===null||d===void 0?void 0:d.requestId,resources:(u=v==null?void 0:v.signInWithEthereum)===null||u===void 0?void 0:u.resources};m=qM(C),y=await x.request({method:"personal_sign",params:[ZM(m),N]})}try{const{data:b,error:w}=await G(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:m,signature:y},!((h=t.options)===null||h===void 0)&&h.captchaToken?{gotrue_meta_security:{captcha_token:(p=t.options)===null||p===void 0?void 0:p.captchaToken}}:null),xform:ar});if(w)throw w;if(!b||!b.session||!b.user){const g=new zi;return this._returnResult({data:{user:null,session:null},error:g})}return b.session&&(await this._saveSession(b.session),await this._notifyAllSubscribers("SIGNED_IN",b.session)),this._returnResult({data:Object.assign({},b),error:w})}catch(b){if(z(b))return this._returnResult({data:{user:null,session:null},error:b});throw b}}async signInWithSolana(t){var r,s,i,a,o,l,c,d,u,h,p,m;let y,b;if("message"in t)y=t.message,b=t.signature;else{const{chain:w,wallet:g,statement:v,options:x}=t;let j;if(mt())if(typeof g=="object")j=g;else{const N=window;if("solana"in N&&typeof N.solana=="object"&&("signIn"in N.solana&&typeof N.solana.signIn=="function"||"signMessage"in N.solana&&typeof N.solana.signMessage=="function"))j=N.solana;else throw new Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.")}else{if(typeof g!="object"||!(x!=null&&x.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");j=g}const k=new URL((r=x==null?void 0:x.url)!==null&&r!==void 0?r:window.location.href);if("signIn"in j&&j.signIn){const N=await j.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},x==null?void 0:x.signInWithSolana),{version:"1",domain:k.host,uri:k.href}),v?{statement:v}:null));let S;if(Array.isArray(N)&&N[0]&&typeof N[0]=="object")S=N[0];else if(N&&typeof N=="object"&&"signedMessage"in N&&"signature"in N)S=N;else throw new Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in S&&"signature"in S&&(typeof S.signedMessage=="string"||S.signedMessage instanceof Uint8Array)&&S.signature instanceof Uint8Array)y=typeof S.signedMessage=="string"?S.signedMessage:new TextDecoder().decode(S.signedMessage),b=S.signature;else throw new Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in j)||typeof j.signMessage!="function"||!("publicKey"in j)||typeof j!="object"||!j.publicKey||!("toBase58"in j.publicKey)||typeof j.publicKey.toBase58!="function")throw new Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");y=[`${k.host} wants you to sign in with your Solana account:`,j.publicKey.toBase58(),...v?["",v,""]:[""],"Version: 1",`URI: ${k.href}`,`Issued At: ${(i=(s=x==null?void 0:x.signInWithSolana)===null||s===void 0?void 0:s.issuedAt)!==null&&i!==void 0?i:new Date().toISOString()}`,...!((a=x==null?void 0:x.signInWithSolana)===null||a===void 0)&&a.notBefore?[`Not Before: ${x.signInWithSolana.notBefore}`]:[],...!((o=x==null?void 0:x.signInWithSolana)===null||o===void 0)&&o.expirationTime?[`Expiration Time: ${x.signInWithSolana.expirationTime}`]:[],...!((l=x==null?void 0:x.signInWithSolana)===null||l===void 0)&&l.chainId?[`Chain ID: ${x.signInWithSolana.chainId}`]:[],...!((c=x==null?void 0:x.signInWithSolana)===null||c===void 0)&&c.nonce?[`Nonce: ${x.signInWithSolana.nonce}`]:[],...!((d=x==null?void 0:x.signInWithSolana)===null||d===void 0)&&d.requestId?[`Request ID: ${x.signInWithSolana.requestId}`]:[],...!((h=(u=x==null?void 0:x.signInWithSolana)===null||u===void 0?void 0:u.resources)===null||h===void 0)&&h.length?["Resources",...x.signInWithSolana.resources.map(S=>`- ${S}`)]:[]].join(` 663`);const N=await j.signMessage(new TextEncoder().encode(y),"utf8");if(!N||!(N instanceof Uint8Array))throw new Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");b=N}}try{const{data:w,error:g}=await G(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:y,signature:ii(b)},!((p=t.options)===null||p===void 0)&&p.captchaToken?{gotrue_meta_security:{captcha_token:(m=t.options)===null||m===void 0?void 0:m.captchaToken}}:null),xform:ar});if(g)throw g;if(!w||!w.session||!w.user){const v=new zi;return this._returnResult({data:{user:null,session:null},error:v})}return w.session&&(await this._saveSession(w.session),await this._notifyAllSubscribers("SIGNED_IN",w.session)),this._returnResult({data:Object.assign({},w),error:g})}catch(w){if(z(w))return this._returnResult({data:{user:null,session:null},error:w});throw w}}async _exchangeCodeForSession(t,r){const s=(r==null?void 0:r.flowId)!=null,i=s?sd(r==null?void 0:r.flowId):mt()?sd(Gy(window.location.href)[si]
663):null;s&&!i&&this._debug("#_exchangeCodeForSession()","provided flowId is not a valid flow id",r==null?void 0:r.flowId);const{verifier:a,flowId:o}=s&&!i?{verifier:null,flowId:null}:await EM(this.storage,this.storageKey,i),[l,c]=(a??"").split("/");try{if(!l&&this.flowType==="pkce")throw new cM;const{data:d,error:u}=await G(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:t,code_verifier:l},xform:ar});if(await Cr(this.storage,this.storageKey,o),u)throw u;if(!d||!d.session||!d.user){const h=new zi;return this._returnResult({data:{user:null,session:null,redirectType:null},error:h})}return d.session&&(await this._saveSession(d.session),await this._notifyAllSubscribers(c==="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",d.session)),this._returnResult({data:Object.assign(Object.assign({},d),{redirectType:c??null}),error:u})}catch(d){if(await Cr(this.storage,this.storageKey,o),z(d))return this._returnResult({data:{user:null,session:null,redirectType:null},error:d});throw d}}async signInWithIdToken(t){try{const{options:r,provider:s,token:i,access_token:a,nonce:o}=t,l=await G(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:s,id_token:i,access_token:a,nonce:o,gotrue_meta_security:{captcha_token:r==null?void 0:r.captchaToken}},xform:ar}),{data:c,error:d}=l;if(d)return this._returnResult({data:{user:null,session:null},error:d});if(!c||!c.session||!c.user){const u=new zi;return this._returnResult({data:{user:null,session:null},error:u})}return c.session&&(await this._saveSession(c.session),await this._notifyAllSubscribers("SIGNED_IN",c.session)),this._returnResult({data:c,error:d})}catch(r){if(z(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}}async signInWithOtp(t){var r,s,i,a,o;let l=null;try{if("email"in t){const{email:c,options:d}=t;let u=null,h=null;this.flowType==="pkce"&&([u,h,l]=await this._getCodeChallengeAndMethod());const{error:p}=await G(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:c,data:(r=d==null?void 0:d.data)!==null&&r!==void 0?r:{},create_user:(s=d==null?void 0:d.shouldCreateUser)!==null&&s!==void 0?s:!0,gotrue_meta_security:{captcha_token:d==null?void 0:d.captchaToken},code_challenge:u,code_challenge_method:h},redirectTo:this._maybeAppendFlowIdToRedirect(d==null?void 0:d.emailRedirectTo,l)});return this._returnResult({data:{user:null,session:null},error:p})}if("phone"in t){const{phone:c,options:d}=t,{data:u,error:h}=await G(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:c,data:(i=d==null?void 0:d.data)!==null&&i!==void 0?i:{},create_user:(a=d==null?void 0:d.shouldCreateUser)!==null&&a!==void 0?a:!0,gotrue_meta_security:{captcha_token:d==null?void 0:d.captchaToken},channel:(o=d==null?void 0:d.channel)!==null&&o!==void 0?o:"sms"}});return this._returnResult({data:{user:null,session:null,messageId:u==null?void 0:u.message_id},error:h})}throw new Ec("You must provide either an email or phone number.")}catch(c){if(await Cr(this.storage,this.storageKey,l),z(c))return this._returnResult({data:{user:null,session:null},error:c});throw c}}async verifyOtp(t){var r,s;try{let i,a;"options"in t&&(i=(r=t.options)===null||r===void 0?void 0:r.redirectTo,a=(s=t.options)===null||s===void 0?void 0:s.captchaToken);const{data:o,error:l}=await G(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},t),{gotrue_meta_security:{captcha_token:a}}),redirectTo:i,xform:ar});if(l)throw l;if(!o)throw new Error("An error occurred on token verification.");const c=o.session,d=o.user;return c!=null&&c.access_token&&(await this._saveSession(c),await this._notifyAllSubscribers(t.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",c)),this._returnResult({data:{user:d,session:c},error:null})}catch(i){if(z(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}}async signInWithSSO(t){var r,s,i,a;let o=null;try{let l=null,c=null;this.flowType==="pkce"&&([l,c,o]=await this._getCodeChallengeAndMethod());const d=await G(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in t?{provider_id:t.providerId}:null),"domain"in t?{domain:t.domain}:null),{redirect_to:this._maybeAppendFlowIdToRedirect((r=t.options)===null||r===void 0?void 0:r.redirectTo,o)}),!((s=t==null?void 0:t.options)===null||s===void 0)&&s.captchaToken?{gotrue_meta_security:{captcha_token:t.options.captchaToken}}:null),{skip_http_redirect:!0,code_challenge:l,code_challenge_method:c}),headers:this.headers,xform:$M});return!((i=d.data)===null||i===void 0)&&i.url&&mt()&&!(!((a=t.options)===null||a===void 0)&&a.skipBrowserRedirect)&&window.location.assign(d.data.url),this._returnResult(d)}catch(l){if(await Cr(this.storage,this.storageKey,o),z(l))return this._returnResult({data:null,error:l});throw l}}async reauthenticate(){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._reauthenticate()):await this._reauthenticate()}async _reauthenticate(){try{return await this._useSession(async t=>{const{data:{session:r},error:s}=t;if(s)throw s;if(!r)throw new it;const{error:i}=await G(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:r.access_token});return this._returnResult({data:{user:null,session:null},error:i})})}catch(t){if(z(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async resend(t){let r=null;try{const s=`${this.url}/resend`;if("email"in t){const{email:i,type:a,options:o}=t;let l=null,c=null;this.flowType==="pkce"&&([l,c,r]=await this._getCodeChallengeAndMethod());const{error:d}=await G(this.fetch,"POST",s,{headers:this.headers,body:{email:i,type:a,gotrue_meta_security:{captcha_token:o==null?void 0:o.captchaToken},code_challenge:l,code_challenge_method:c},redirectTo:this._maybeAppendFlowIdToRedirect(o==null?void 0:o.emailRedirectTo,r)});return d&&await Cr(this.storage,this.storageKey,r),this._returnResult({data:{user:null,session:null},error:d})}else if("phone"in t){const{phone:i,type:a,options:o}=t,{data:l,error:c}=await G(this.fetch,"POST",s,{headers:this.headers,body:{phone:i,type:a,gotrue_meta_security:{captcha_token:o==null?void 0:o.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:l==null?void 0:l.message_id},error:c})}throw new Ec("You must provide either an email or phone number and a type")}catch(s){if(await Cr(this.storage,this.storageKey,r),z(s))return this._returnResult({data:{user:null,session:null},error:s});throw s}}async getSession(){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>this._useSession(async t=>t)):await this._useSession(async t=>t)}async _acquireLock(t,r){this._debug("#_acquireLock","begin",t);try{if(this.lockAcquired){const s=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),i=(async()=>(await s,await r()))();return this.pendingInLock.push((async()=>{try{await i}catch{}})()),i}return await this.lock(`lock:${this.storageKey}`,t,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;const s=r();for(this.pendingInLock.push((async()=>{try{await s}catch{}})()),await s;this.pendingInLock.length;){const i=[...this.pendingInLock];await Promise.all(i),this.pendingInLock.splice(0,i.length)}return await s}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(t){this._debug("#_useSession","begin");try{const r=await this.__loadSession();return await t(r)}finally{this._debug("#_useSession","end")}}async __loadSession(){this._debug("#__loadSession()","begin"),this.lock!=null&&!this.lockAcquired&&this._debug("#__loadSession()","used outside of an acquired lock!",new Error().stack);try{let t=null;const r=await bt(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",r),r!==null&&(this._isValidSession(r)?t=r:(this._debug("#getSession()","session from storage is not val
663id"),await this._removeSession())),!t)return{data:{session:null},error:null};const s=t.expires_at?t.expires_at*1e3-Date.now()<zh:!1;if(this._debug("#__loadSession()",`session has${s?"":" not"} expired`,"expires_at",t.expires_at),!s){if(this.userStorage){const o=await bt(this.userStorage,this.storageKey+"-user");o!=null&&o.user?t.user=o.user:t.user=Wh()}if(this.storage.isServer&&t.user&&!t.user.__isUserNotAvailableProxy){const o={value:this.suppressGetSessionWarning};t.user=DM(t.user,o),o.value&&(this.suppressGetSessionWarning=!0)}return{data:{session:t},error:null}}const{data:i,error:a}=await this._callRefreshToken(t.refresh_token);if(a){if(!!(t.expires_at&&t.expires_at*1e3>Date.now())){const l=await bt(this.storage,this.storageKey);if(l&&l.refresh_token===t.refresh_token)return this._returnResult({data:{session:t},error:null})}return this._returnResult({data:{session:null},error:a})}return this._returnResult({data:{session:i},error:null})}finally{this._debug("#__loadSession()","end")}}async getUser(t){if(t)return await this._getUser(t);await this.initializePromise;let r;return this.lock!=null?r=await this._acquireLock(this.lockAcquireTimeout,async()=>await this._getUser()):r=await this._getUser(),r.data.user&&(this.suppressGetSessionWarning=!0),r}async _getUser(t){try{return t?await G(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:t,xform:as}):await this._useSession(async r=>{var s,i,a;const{data:o,error:l}=r;if(l)throw l;return!(!((s=o.session)===null||s===void 0)&&s.access_token)&&!this.hasCustomAuthorizationHeader?{data:{user:null},error:new it}:await G(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(a=(i=o.session)===null||i===void 0?void 0:i.access_token)!==null&&a!==void 0?a:void 0,xform:as})})}catch(r){if(z(r))return Cc(r)&&await this._removeSession(),this._returnResult({data:{user:null},error:r});throw r}}async updateUser(t,r={}){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._updateUser(t,r)):await this._updateUser(t,r)}async _updateUser(t,r={}){let s=null;try{return await this._useSession(async i=>{const{data:a,error:o}=i;if(o)throw o;if(!a.session)throw new it;const l=a.session;let c=null,d=null;this.flowType==="pkce"&&t.email!=null&&([c,d,s]=await this._getCodeChallengeAndMethod());const{data:u,error:h}=await G(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:this._maybeAppendFlowIdToRedirect(r==null?void 0:r.emailRedirectTo,s),body:Object.assign(Object.assign({},t),{code_challenge:c,code_challenge_method:d}),jwt:l.access_token,xform:as});if(h)throw h;return l.user=u.user,await this._saveSession(l),await this._notifyAllSubscribers("USER_UPDATED",l),this._returnResult({data:{user:l.user},error:null})})}catch(i){if(await Cr(this.storage,this.storageKey,s),z(i))return this._returnResult({data:{user:null},error:i});throw i}}async setSession(t){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._setSession(t)):await this._setSession(t)}async _setSession(t){try{if(!t.access_token||!t.refresh_token)throw new it;const r=Date.now()/1e3;let s=r,i=!0,a=null;const{payload:o}=Tc(t.access_token);if(o.exp&&(s=o.exp,i=s<=r),i){const{data:l,error:c}=await this._callRefreshToken(t.refresh_token);if(c)return this._returnResult({data:{user:null,session:null},error:c});if(!l)return{data:{user:null,session:null},error:null};a=l}else{const{data:l,error:c}=await this._getUser(t.access_token);if(c)return this._returnResult({data:{user:null,session:null},error:c});a={access_token:t.access_token,refresh_token:t.refresh_token,user:l.user,token_type:"bearer",expires_in:s-r,expires_at:s},await this._saveSession(a),await this._notifyAllSubscribers("SIGNED_IN",a)}return this._returnResult({data:{user:a.user,session:a},error:null})}catch(r){if(z(r))return this._returnResult({data:{session:null,user:null},error:r});throw r}}async refreshSession(t){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._refreshSession(t)):await this._refreshSession(t)}async _refreshSession(t){try{return await this._useSession(async r=>{var s;if(!t){const{data:o,error:l}=r;if(l)throw l;t=(s=o.session)!==null&&s!==void 0?s:void 0}if(!(t!=null&&t.refresh_token))throw new it;const{data:i,error:a}=await this._callRefreshToken(t.refresh_token);return a?this._returnResult({data:{user:null,session:null},error:a}):i?this._returnResult({data:{user:i.user,session:i},error:null}):this._returnResult({data:{user:null,session:null},error:null})})}catch(r){if(z(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}}async _getSessionFromURL(t,r){var s;try{if(!mt())throw new Ac("No browser detected.");
663if(t.error||t.error_description||t.error_code)throw new Ac(t.error_description||"Error in URL with unspecified error_description",{error:t.error||"unspecified_error",code:t.error_code||"unspecified_code"});switch(r){case"implicit":if(this.flowType==="pkce")throw new Vy("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new Ac("Not a valid implicit grant flow url.");break;default:}if(r==="pkce"){if(this._debug("#_initialize()","begin","is PKCE flow",!0),!t.code)throw new Vy("No code detected.");const{data:x,error:j}=await this._exchangeCodeForSession(t.code,{flowId:t[si]});if(j)throw j;const k=new URL(window.location.href);return k.searchParams.delete("code"),k.searchParams.delete(si),window.history.replaceState(window.history.state,"",k.toString()),{data:{session:x.session,redirectType:(s=x.redirectType)!==null&&s!==void 0?s:null},error:null}}const{provider_token:i,provider_refresh_token:a,access_token:o,refresh_token:l,expires_in:c,expires_at:d,token_type:u}=t;if(!o||!c||!l||!u)throw new Ac("No session defined in URL");const h=Math.round(Date.now()/1e3),p=parseInt(c);let m=h+p;d&&(m=parseInt(d));const y=m-h;y*1e3<=Sn&&console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${y}s, should have been closer to ${p}s`);const b=m-p;h-b>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",b,m,h):h-b<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",b,m,h);const{data:w,error:g}=await this._getUser(o);if(g)throw g;const v={provider_token:i,provider_refresh_token:a,access_token:o,expires_in:p,expires_at:m,refresh_token:l,token_type:u,user:w.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:v,redirectType:t.type},error:null})}catch(i){if(z(i))return this._returnResult({data:{session:null,redirectType:null},error:i});throw i}}_isImplicitGrantCallback(t){return typeof this.detectSessionInUrl=="function"?this.detectSessionInUrl(new URL(window.location.href),t):!!(t.access_token||t.error||t.error_description||t.error_code)}async _isPKCECallback(t){if(!t.code)return!1;const r=sd(t[si]);return r&&await bt(this.storage,Wa(this.storageKey,r))?!0:!!await bt(this.storage,`${this.storageKey}-code-verifier`)}async signOut(t={scope:"global"}){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._signOut(t)):await this._signOut(t)}async _signOut({scope:t}={scope:"global"}){return await this._useSession(async r=>{var s;const i=async()=>{await this._removeSession()},{data:a,error:o}=r;if(o&&!Cc(o))return this._returnResult({error:o});const l=(s=a.session)===null||s===void 0?void 0:s.access_token;if(l){const{error:c}=await this.admin.signOut(l,t);if(c&&!(Uy(c)&&(c.status===404||c.status===401||c.status===403)||Cc(c)))return t!=="others"&&await i(),this._returnResult({error:c})}return t!=="others"&&await i(),this._returnResult({error:null})})}onAuthStateChange(t){const r=xM(),s={id:r,callback:t,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",r),this.stateChangeEmitters.delete(r)}};return this._debug("#onAuthStateChange()","registered callback with id",r),this.stateChangeEmitters.set(r,s),(async()=>(await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>{this._emitInitialSession(r)}):await this._emitInitialSession(r)))(),{data:{subscription:s}}}async _emitInitialSession(t){return await this._useSession(async r=>{var s,i;try{const{data:{session:a},error:o}=r;if(o)throw o;await((s=this.stateChangeEmitters.get(t))===null||s===void 0?void 0:s.callback("INITIAL_SESSION",a)),this._debug("INITIAL_SESSION","callback id",t,"session",a)}catch(a){await((i=this.stateChangeEmitters.get(t))===null||i===void 0?void 0:i.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",t,"error",a),Cc(a)||Pc(a)||Uy(a)&&(a.code==="refresh_token_not_found"||a.code==="refresh_token_already_used"||a.code==="session_expired")?console.warn(a):console.error(a)}})}async resetPasswordForEmail(t,r={}){let s=null,i=null,a=null;this.flowType==="pkce"&&([s,i,a]=await this._getCodeChallengeAndMethod(!0));try{return await G(this.fetch,"POST",`${this.url}/recover`,{body:{email:t,code_challenge:s,code_challenge_method:i,gotrue_meta_security:{captcha_token:r.captchaToken}},headers:this.headers,redirectTo:this._maybeAppendFlowIdToRedirect(r.redirectTo,a)})}catch(o){if(await Cr(this.storage,this.storageKey,a),z(o))return this._returnResult({data:null,error:o});throw o}}async getUserIdentities(){var t;try{const{data:r,error:s}=await this.getUser();if(s)throw s;return this._returnResult({data:{identities:(t=r.user.identities)!==null&&t!==void 0?t:[]},error:null})}catch(r){if(z(r))return this._returnResult({data:null,error:r});throw r}}async linkIdentity(t){return"token"in t?this.linkIdentityIdToken(t):this.linkIdentityOAuth(t)}async linkIdentityOAuth(t){var r;let s=null;try{const{data:i,error:a}=await this._useSession(async o=>{var l,c,d,u,h;const{data:p,error:m}=o;if(m)throw m;const{url:y,flowId:b}=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,t.provider,{redirectTo:(l=t.options)===null||l===void 0?void 0:l.redirectTo,scopes:(c=t.options)===null||c===void 0?void 0:c.scopes,queryParams:(d=t.options)===null||d===void 0?void 0:d.queryParams,skipBrowserRedirect:!0});return s=b,await G(this.fetch,"GET",y,{headers:this.headers,jwt:(h=(u=p.session)===null||u===void 0?void 0:u.access_token)!==null&&h!==void 0?h:void 0})});if(a)throw a;return mt()&&!(!((r=t.options)===null||r===void 0)&&r.skipBrowserRedirect)&&window.location.assign(i==null?void 0:i.url),this._returnResult({data:{provider:t.provider,url:i==null?void 0:i.url,flowId:s},error:null})}catch(i){if(z(i))return this._returnResult({data:{provider:t.provider,url:null,flowId:s},error:i});throw i}}async linkIdentityIdToken(t){return await this._useSession(async r=>{var s;try{const{error:i,data:{session:a}}=r;if(i)throw i;const{options:o,provider:l,token:c,access_token:d,nonce:u}=t,h=await G(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(s=a==null?void 0:a.access_token)!==null&&s!==void 0?s:void 0,body:{provider:l,id_token:c,access_token:d,nonce:u,link_identity:!0,gotrue_meta_security:{captcha_token:o==null?void 0:o.captchaToken}},xform:ar}),{data:p,error:m}=h;return m?this._returnResult({data:{user:null,session:null},error:m}):!p||!p.session||!p.user?this._returnResult({data:{user:null,session:null},error:new zi}):(p.session&&(await this._saveSession(p.session),await this._notifyAllSubscribers("USER_UPDATED",p.session)),this._returnResult({data:p,error:m}))}catch(i){if(await Cr(this.storage,this.storageKey,null),z(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}})}async unlinkIdentity(t){try{return await this._useSession(async r=>{var s,i;const{data:a,error:o}=r;if(o)throw o;
663return await G(this.fetch,"DELETE",`${this.url}/user/identities/${t.identity_id}`,{headers:this.headers,jwt:(i=(s=a.session)===null||s===void 0?void 0:s.access_token)!==null&&i!==void 0?i:void 0})})}catch(r){if(z(r))return this._returnResult({data:null,error:r});throw r}}async _refreshAccessToken(t){const r="#_refreshAccessToken()";this._debug(r,"begin");try{const s=Date.now();return await bM(async i=>(i>0&&await yM(200*Math.pow(2,i-1)),this._debug(r,"refreshing attempt",i),await G(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:t},headers:this.headers,xform:ar})),(i,a)=>{const o=200*Math.pow(2,i);return a&&Pc(a)&&Date.now()+o-s<Sn})}catch(s){if(this._debug(r,"error",s),z(s))return this._returnResult({data:{session:null,user:null},error:s});throw s}finally{this._debug(r,"end")}}_isValidSession(t){return typeof t=="object"&&t!==null&&"access_token"in t&&"refresh_token"in t&&"expires_at"in t}async _handleProviderSignIn(t,r){const{url:s,flowId:i}=await this._getUrlForProvider(`${this.url}/authorize`,t,{redirectTo:r.redirectTo,scopes:r.scopes,queryParams:r.queryParams});return this._debug("#_handleProviderSignIn()","provider",t,"options",r,"url",s),mt()&&!r.skipBrowserRedirect&&window.location.assign(s),{data:{provider:t,url:s,flowId:i},error:null}}async _recoverAndRefresh(){var t,r;const s="#_recoverAndRefresh()";this._debug(s,"begin");try{const i=await bt(this.storage,this.storageKey);if(i&&this.userStorage){let o=await bt(this.userStorage,this.storageKey+"-user");!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!o&&(o={user:i.user},await An(this.userStorage,this.storageKey+"-user",o)),i.user=(t=o==null?void 0:o.user)!==null&&t!==void 0?t:Wh()}else if(i&&!i.user&&!i.user){const o=await bt(this.storage,this.storageKey+"-user");o&&(o!=null&&o.user)?(i.user=o.user,await Ht(this.storage,this.storageKey+"-user"),await An(this.storage,this.storageKey,i)):i.user=Wh()}if(this._debug(s,"session from storage",i),!this._isValidSession(i)){this._debug(s,"session is not valid"),i!==null&&await this._removeSession();return}const a=((r=i.expires_at)!==null&&r!==void 0?r:1/0)*1e3-Date.now()<zh;if(this._debug(s,`session has${a?"":" not"} expired with margin of ${zh}s`),a){if(this.autoRefreshToken&&i.refresh_token){const{error:o}=await this._callRefreshToken(i.refresh_token);o&&(dM(o)?this._debug(s,"refresh discarded by commit guard",o):this._debug(s,"refresh failed",o))}}else if(i.user&&i.user.__isUserNotAvailableProxy===!0)try{const{data:o,error:l}=await this._getUser(i.access_token);!l&&(o!=null&&o.user)?(i.user=o.user,await this._saveSession(i),await this._notifyAllSubscribers("SIGNED_IN",i)):this._debug(s,"could not get user data, skipping SIGNED_IN notification")}catch(o){console.error("Error getting user data:",o),this._debug(s,"error getting user data, skipping SIGNED_IN notification",o)}else await this._notifyAllSubscribers("SIGNED_IN",i)}catch(i){this._debug(s,"error",i),Pc(i)?console.warn(i):console.error(i);return}finally{this._debug(s,"end")}}async _callRefreshToken(t){var r,s;if(!t)throw new it;if(this.refreshingDeferred)return this.refreshingDeferred.promise;if(this.lastRefreshFailure&&this.lastRefreshFailure.refreshToken===t&&Date.now()<this.lastRefreshFailure.expiresAt)return this._debug("#_callRefreshToken()","returning cached failure (cooldown active)"),this.lastRefreshFailure.result;const i="#_callRefreshToken()";this._debug(i,"begin");try{this.refreshingDeferred=new Du;const a=await bt(this.storage,this.storageKey),{data:o,error:l}=await this._refreshAccessToken(t);if(l)throw l;if(!o.session)throw new it;const c=await bt(this.storage,this.storageKey);if(a!==null&&(c===null||c.refresh_token!==a.refresh_token)){this._debug(i,"commit guard: storage changed since refresh started, discarding rotated tokens",{startedWith:"present",nowHolds:c?"replaced":"cleared"});const p={data:null,error:new zy};return this.refreshingDeferred.resolve(p),p}const u=this._sessionRemovalEpoch;if(await this._saveSession(o.session),this._sessionRemovalEpoch!==u){this._debug(i,"commit guard (post-save): _removeSession ran during _saveSession, und
663oing write"),await Ht(this.storage,this.storageKey),this.userStorage&&await Ht(this.userStorage,this.storageKey+"-user");const p={data:null,error:new zy};return this.refreshingDeferred.resolve(p),p}await this._notifyAllSubscribers("TOKEN_REFRESHED",o.session);const h={data:o.session,error:null};return this.lastRefreshFailure=null,this.refreshingDeferred.resolve(h),h}catch(a){if(this._debug(i,"error",a),z(a)){const o={data:null,error:a};if(!Pc(a)){const l=await bt(this.storage,this.storageKey);!!(l!=null&&l.expires_at&&l.expires_at*1e3>Date.now())?this._debug(i,"proactive refresh failed, access token still valid â preserving session"):await this._removeSession()}return this.lastRefreshFailure={refreshToken:t,result:o,expiresAt:Date.now()+eM},(r=this.refreshingDeferred)===null||r===void 0||r.resolve(o),o}throw(s=this.refreshingDeferred)===null||s===void 0||s.reject(a),a}finally{this.refreshingDeferred=null,this._debug(i,"end")}}async _notifyAllSubscribers(t,r,s=!0){if(this._pendingInitNotifications!==null&&s){this._pendingInitNotifications.push({event:t,session:r,broadcast:s});return}const i=`#_notifyAllSubscribers(${t})`;this._debug(i,"begin",r,`broadcast = ${s}`);try{this.broadcastChannel&&s&&this.broadcastChannel.postMessage({event:t,session:r});const a=[],o=Array.from(this.stateChangeEmitters.values()).map(async l=>{try{await l.callback(t,r)}catch(c){a.push(c)}});if(await Promise.all(o),a.length>0){for(let l=0;l<a.length;l+=1)console.error(a[l]);throw a[0]}}finally{this._debug(i,"end")}}async _saveSession(t){this._debug("#_saveSession()",t),this.suppressGetSessionWarning=!0;const r=Object.assign({},t),s=r.user&&r.user.__isUserNotAvailableProxy===!0;if(this.userStorage){!s&&r.user&&await An(this.userStorage,this.storageKey+"-user",{user:r.user});const i=Object.assign({},r);delete i.user;const a=Ky(i);await An(this.storage,this.storageKey,a)}else{const i=Ky(r);await An(this.storage,this.storageKey,i)}}async _removeSession(){this._sessionRemovalEpoch+=1,this._debug("#_removeSession()"),this.lastRefreshFailure=null,this.suppressGetSessionWarning=!1,await Ht(this.storage,this.storageKey),await AM(this.storage,this.storageKey),await Ht(this.storage,this.storageKey+"-user"),this.userStorage&&await Ht(this.userStorage,this.storageKey+"-user"),await this._notifyAllSubscribers("SIGNED_OUT",null)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");const t=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{t&&mt()&&(window!=null&&window.removeEventListener)&&window.removeEventListener("visibilitychange",t)}catch(r){console.error("removing visibilitychange callback failed",r)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");const t=setInterval(()=>this._autoRefreshTokenTick(),Sn);this.autoRefreshTicker=t,t&&typeof t=="object"&&typeof t.unref=="function"?t.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(t);const r=setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0);this.autoRefreshTickTimeout=r,r&&typeof r=="object"&&typeof r.unref=="function"?r.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(r)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");const t=this.autoRefreshTicker;this.autoRefreshTicker=null,t&&clearInterval(t);const r=this.autoRefreshTickTimeout;this.autoRefreshTickTimeout=null,r&&clearTimeout(r)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async dispose(){var t;this._removeVisibilityChangedCallback(),await this._stopAutoRefresh(),(t=this.broadcastChannel)===null||t===void 0||t.close(),this.broadcastChannel=null,this.stateChangeEmitters.clear()}async _autoRefreshTokenTick(){if(this._debug("#_autoRefreshTokenTick()","begin"),this.lock!=null){try{await this._acquireLock(0,async()=>{try{const t=Date.now();try{return await this._useSession(async r=>{const{data:{session:s}}=r;if(!s||!s.refresh_token||!s.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const i=Math.floor((s.expires_at*1e3-t)/Sn);this._debug("#_autoRefreshTokenTick()",`access token expires in ${i} ticks, a tick lasts ${Sn}ms, refresh threshold is ${Co} ticks`),i<=Co&&await this._callRefreshToken(s.refresh_token)})}catch(r){console.error("Auto refresh tick failed with error. This is likely a transient error.",r)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(t){if(t instanceof VM)this._debug("auto refresh token tick lock not available");else throw t}return}if(this.refreshingDeferred!==null){this._debug("#_autoRefreshTokenTick()","refresh already in flight, skipping");return}try{const t=Date.now();try{await this._useSession(async r=>{const{data:{session:s}}=r;if(!s||!s.refresh_token||!s.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const i=Math.floor((s.expires_at*1e3-t)/Sn);this._debug("#_autoRefreshTokenTick()",`access token expires in ${i} ticks, a tick lasts ${Sn}ms, refresh threshold is ${Co} ticks`),i<=Co&&await this._callRefreshToken(s.refresh_token)})}catch(r){console.error("Auto refresh tick failed with error. This is likely a transient error.",r)}}finally{this._debug("#_autoRefreshTokenTick()","end")}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!mt()||!(window!=null&&window.addEventListener))return this.autoRefreshToken&&this.startAutoRefresh(),!1;try{this.visibilityChangedCallback=async()=>{try{await this._onVisibilityChanged(!1)}catch(t){this._debug("#visibilityChangedCallback","error",t)}},window==null||window.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(t){console.error("_handleVisibilityChange",t)}}async _onVisibilityChanged(t){const r=`#_onVisibilityChanged(${t})`;if(this._debug(r,"visibilityState",document.visibilityState),document.visibilityState==="visible"){if(this.autoRefreshToken&&this._startAutoRefresh(),!t)if(await this.initializePromise,this.lock!=null)await this._acquireLock(this.lockAcquireTimeout,async()=>
663{if(document.visibilityState!=="visible"){this._debug(r,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()});else{if(document.visibilityState!=="visible"){this._debug(r,"visibilityState is no longer visible, skipping recovery");return}await this._recoverAndRefresh()}}else document.visibilityState==="hidden"&&this.autoRefreshToken&&this._stopAutoRefresh()}async _getUrlForProvider(t,r,s){let i=s==null?void 0:s.redirectTo,a=null,o=null,l=null;this.flowType==="pkce"&&([a,o,l]=await this._getCodeChallengeAndMethod(),i=this._maybeAppendFlowIdToRedirect(i,l));const c=[`provider=${encodeURIComponent(r)}`];if(i&&c.push(`redirect_to=${encodeURIComponent(i)}`),s!=null&&s.scopes&&c.push(`scopes=${encodeURIComponent(s.scopes)}`),a!=null&&o!=null){const d=new URLSearchParams({code_challenge:`${encodeURIComponent(a)}`,code_challenge_method:`${encodeURIComponent(o)}`});c.push(d.toString())}if(s!=null&&s.queryParams){const d=new URLSearchParams(s.queryParams);c.push(d.toString())}return s!=null&&s.skipBrowserRedirect&&c.push(`skip_http_redirect=${s.skipBrowserRedirect}`),{url:`${t}?${c.join("&")}`,flowId:l}}_maybeAppendFlowIdToRedirect(t,r){return!t||!r||!this.experimental.appendPkceFlowIdToRedirects?t??void 0:PM(t,r)}async _getCodeChallengeAndMethod(t=!1){return TM(this.storage,this.storageKey,t,r=>this._debug("#_getCodeChallengeAndMethod()","evicted oldest pending PKCE verifier slot",r))}async _unenroll(t){try{return await this._useSession(async r=>{var s;const{data:i,error:a}=r;return a?this._returnResult({data:null,error:a}):await G(this.fetch,"DELETE",`${this.url}/factors/${t.factorId}`,{headers:this.headers,jwt:(s=i==null?void 0:i.session)===null||s===void 0?void 0:s.access_token})})}catch(r){if(z(r))return this._returnResult({data:null,error:r});throw r}}async _enroll(t){try{return await this._useSession(async r=>{var s,i;const{data:a,error:o}=r;if(o)return this._returnResult({data:null,error:o});const l=Object.assign({friendly_name:t.friendlyName,factor_type:t.factorType},t.factorType==="phone"?{phone:t.phone}:t.factorType==="totp"?{issuer:t.issuer}:{}),{data:c,error:d}=await G(this.fetch,"POST",`${this.url}/factors`,{body:l,headers:this.headers,jwt:(s=a==null?void 0:a.session)===null||s===void 0?void 0:s.access_token});return d?this._returnResult({data:null,error:d}):(t.factorType==="totp"&&c.type==="totp"&&(!((i=c==null?void 0:c.totp)===null||i===void 0)&&i.qr_code)&&(c.totp.qr_code=`data:image/svg+xml;utf-8,${c.totp.qr_code}`),this._returnResult({data:c,error:null}))})}catch(r){if(z(r))return this._returnResult({data:null,error:r});throw r}}async _verify(t){const r=async()=>{try{return await this._useSession(async s=>{var i;const{data:a,error:o}=s;if(o)return this._returnResult({data:null,error:o});const l=Object.assign({challenge_id:t.challengeId},"webauthn"in t?{webauthn:Object.assign(Object.assign({},t.webauthn),{credential_response:t.webauthn.type==="create"?sb(t.webauthn.credential_response):ib(t.webauthn.credential_response)})}:{code:t.code}),{data:c,error:d}=await G(this.fetch,"POST",`${this.url}/factors/${t.factorId}/verify`,{body:l,headers:this.headers,jwt:(i=a==null?void 0:a.session)===null||i===void 0?void 0:i.access_token});return d?this._returnResult({data:null,error:d}):(await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1e3)+c.expires_in},c)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",c),this._returnResult({data:c,error:d}))})}catch(s){if(z(s))return this._returnResult({data:null,error:s});throw s}};return this.lock!=null?this._acquireLock(this.lockAcquireTimeout,r):r()}async _challenge(t){const r=async()=>{try{return await this._useSession(async s=>{var i;const{data:a,error:o}=s;if(o)return this._returnResult({data:null,error:o});const l=await G(this.fetch,"POST",`${this.url}/factors/${t.factorId}/challenge`,{body:t,headers:this.headers,jwt:(i=a==null?void 0:a.session)===null||i===void 0?void 0:i.access_token});if(l.error)return l;const{data:c}=l;if(c.type!=="webauthn")return{data:c,error:null};switch(c.webauthn.type){case"create":return{data:Object.assign(Object.assign({},c),{webauthn:Object.assign(Object.assign({},c.webauthn),{credential_options:Object.assign(Object.assign({},c.webauthn.credential_options),{publicKey:rb(c.webauthn.credential_options.publicKey)})})}),error:null};case"request":return{data:Object.assign(Object.assign({},c),{webauthn:Object.assign(Object.assign({},c.webauthn),{credential_options:Object.assign(Object.assign({},c.webauthn.credential_options),{publicKey:nb(c.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(s){if(z(s))return this._returnResult({data:null,error:s});throw s}};return this.lock!=null?this._acquireLock(this.lockAcquireTimeout,r):r()}async _challengeAndVerify(t){const{data:r,error:s}=await this._challenge({factorId:t.factorId});return s?this._returnResult({data:null,error:s}):await this._verify({factorId:t.factorId,challengeId:r.id,code:t.code})}async _listFactors(){var t;const{data:{user:r},error:s}=await this.getUser();if(s)return{data:null,error:s};const i={all:[],phone:[],totp:[],webauthn:[]};for(const a of(t=r==null?void 0:r.factors)!==null&&t!==void 0?t:[])i.all.push(a),a.status==="verified"&&i[a.factor_type].push(a);return{data:i,error:null}}async _getAuthenticatorAssuranceLevel(t){var r,s,i,a;if(t)try{const{payload:m}=Tc(t);let y=null;m.aal&&(y=m.aal);let b=y;const{data:{user:w},error:g}=await this.getUser(t);if(g)return this._returnResult({data:null,error:g});((s=(r=w==null?void 0:w.factors)===null||r===void 0?void 0:r.filter(j=>j.status==="verified"))!==null&&s!==void 0?s:[]).length>0&&(b="aal2");const x=m.amr||[];return{data:{currentLevel:y,nextLevel:b,currentAuthenticationMethods:x},error:null}}catch(m){if(z(m))return this._returnResult({data:null,error:m});throw m}const{data:{session:o},error:l}
663=await this.getSession();if(l)return this._returnResult({data:null,error:l});if(!o)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};const{payload:c}=Tc(o.access_token);let d=null;c.aal&&(d=c.aal);let u=d;((a=(i=o.user.factors)===null||i===void 0?void 0:i.filter(m=>m.status==="verified"))!==null&&a!==void 0?a:[]).length>0&&(u="aal2");const p=c.amr||[];return{data:{currentLevel:d,nextLevel:u,currentAuthenticationMethods:p},error:null}}async _getAuthorizationDetails(t){try{return await this._useSession(async r=>{const{data:{session:s},error:i}=r;return i?this._returnResult({data:null,error:i}):s?await G(this.fetch,"GET",`${this.url}/oauth/authorizations/${t}`,{headers:this.headers,jwt:s.access_token,xform:a=>({data:a,error:null})}):this._returnResult({data:null,error:new it})})}catch(r){if(z(r))return this._returnResult({data:null,error:r});throw r}}async _approveAuthorization(t,r){try{return await this._useSession(async s=>{const{data:{session:i},error:a}=s;if(a)return this._returnResult({data:null,error:a});if(!i)return this._returnResult({data:null,error:new it});const o=await G(this.fetch,"POST",`${this.url}/oauth/authorizations/${t}/consent`,{headers:this.headers,jwt:i.access_token,body:{action:"approve"},xform:l=>({data:l,error:null})});return o.data&&o.data.redirect_url&&mt()&&!(r!=null&&r.skipBrowserRedirect)&&window.location.assign(o.data.redirect_url),o})}catch(s){if(z(s))return this._returnResult({data:null,error:s});throw s}}async _denyAuthorization(t,r){try{return await this._useSession(async s=>{const{data:{session:i},error:a}=s;
663if(a)return this._returnResult({data:null,error:a});if(!i)return this._returnResult({data:null,error:new it});const o=await G(this.fetch,"POST",`${this.url}/oauth/authorizations/${t}/consent`,{headers:this.headers,jwt:i.access_token,body:{action:"deny"},xform:l=>({data:l,error:null})});return o.data&&o.data.redirect_url&&mt()&&!(r!=null&&r.skipBrowserRedirect)&&window.location.assign(o.data.redirect_url),o})}catch(s){if(z(s))return this._returnResult({data:null,error:s});throw s}}async _listOAuthGrants(){try{return await this._useSession(async t=>{const{data:{session:r},error:s}=t;return s?this._returnResult({data:null,error:s}):r?await G(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:r.access_token,xform:i=>({data:i,error:null})}):this._returnResult({data:null,error:new it})})}catch(t){if(z(t))return this._returnResult({data:null,error:t});throw t}}async _revokeOAuthGrant(t){try{return await this._useSession(async r=>{const{data:{session:s},error:i}=r;return i?this._returnResult({data:null,error:i}):s?(await G(this.fetch,"DELETE",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:s.access_token,query:{client_id:t.clientId},noResolveJson:!0}),{data:{},error:null}):this._returnResult({data:null,error:new it})})}catch(r){if(z(r))return this._returnResult({data:null,error:r});throw r}}async fetchJwk(t,r={keys:[]}){let s=r.keys.find(l=>l.kid===t);if(s)return s;const i=Date.now();if(s=this.jwks.keys.find(l=>l.kid===t),s&&this.jwks_cached_at+aM>i)return s;const{data:a,error:o}=await G(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(o)throw o;return!a.keys||a.keys.length===0||(this.jwks=a,this.jwks_cached_at=i,s=a.keys.find(l=>l.kid===t),!s)?null:s}async getClaims(t,r={}){try{let s=t;if(!s){const{data:m,error:y}
663=await this.getSession();if(y||!m.session)return this._returnResult({data:null,error:y});s=m.session.access_token}const{header:i,payload:a,signature:o,raw:{header:l,payload:c}}=Tc(s);if(!(r!=null&&r.allowExpired))try{RM(a.exp)}catch(m){throw new Bd(m instanceof Error?m.message:"JWT validation failed")}const d=!i.alg||i.alg.startsWith("HS")||!i.kid||!("crypto"in globalThis&&"subtle"in globalThis.crypto)?null:await this.fetchJwk(i.kid,r!=null&&r.keys?{keys:r.keys}:r==null?void 0:r.jwks);if(!d){const{error:m}=await this.getUser(s);if(m)throw m;return{data:{claims:a,header:i,signature:o},error:null}}const u=OM(i.alg),h=await crypto.subtle.importKey("jwk",d,u,!0,["verify"]);if(!await crypto.subtle.verify(u,h,o,fM(`${l}.${c}`)))throw new Bd("Invalid JWT signature");return{data:{claims:a,header:i,signature:o},error:null}}catch(s){if(z(s))return this._returnResult({data:null,error:s});throw s}}async signInWithPasskey(t){var r,s,i;Er(this.experimental);try{if(!Vd())return this._returnResult({data:null,error:new Dr("Browser does not support WebAuthn",null)});const{data:a,error:o}=await this._startPasskeyAuthentication({options:{captchaToken:(r=t==null?void 0:t.options)===null||r===void 0?void 0:r.captchaToken}});if(o||!a)return this._returnResult({data:null,error:o});const l=nb(a.options),c=(i=(s=t==null?void 0:t.options)===null||s===void 0?void 0:s.signal)!==null&&i!==void 0?i:Dp.createNewAbortSignal(),{data:d,error:u}=await lN({publicKey:l,signal:c});if(u||!d)return this._returnResult({data:null,error:u??new Dr("WebAuthn ceremony failed",null)});const h=ib(d);return this._verifyPasskeyAuthentication({challengeId:a.challenge_id,credential:h})}catch(a){if(z(a))return this._returnResult({data:null,error:a});throw a}}async registerPasskey(t){var r,s;Er(this.experimental);try{if(!Vd())return this._returnResult({data:null,error:new Dr("Browser does not support WebAuthn",null)});const{data:i,error:a}=await this._startPasskeyRegistration();if(a||!i)return this._returnResult({data:null,error:a});const o=rb(i.options),l=(s=(r=t==null?void 0:t.options)===null||r===void 0?void 0:r.signal)!==null&&s!==void 0?s:Dp.createNewAbortSignal(),{data:c,error:d}=await oN({publicKey:o,signal:l});if(d||!c)return this._returnResult({data:null,error:d??new Dr("WebAuthn ceremony failed",null)});const u=sb(c);return this._verifyPasskeyRegistration({challengeId:i.challenge_id,credential:u})}catch(i){if(z(i))return this._returnResult({data:null,error:i});throw i}}async _startPasskeyRegistration(){Er(this.experimental);try{return await this._useSession(async t=>{const{data:{session:r},error:s}=t;if(s)return this._returnResult({data:null,error:s});if(!r)return this._returnResult({data:null,error:new it});const{data:i,error:a}=await G(this.fetch,"POST",`${this.url}/passkeys/registration/options`,{headers:this.headers,jwt:r.access_token,body:{}});return a?this._returnResult({data:null,error:a}):this._returnResult({data:i,error:null})})}catch(t){if(z(t))return this._returnResult({data:null,error:t});throw t}}async _verifyPasskeyRegistration(t){Er(this.experimental);try{return await this._useSession(async r=>{const{data:{session:s},error:i}=r;if(i)return this._returnResult({data:null,error:i});if(!s)return this._returnResult({data:null,error:new it});const{data:a,error:o}=await G(this.fetch,"POST",`${this.url}/passkeys/registration/verify`,{headers:this.headers,jwt:s.access_token,body:{challenge_id:t.challengeId,credential:t.credential}});return o?this._returnResult({data:null,error:o}):this._returnResult({data:a,error:null})})}catch(r){if(z(r))return this._returnResult({data:null,error:r});throw r}}async _startPasskeyAuthentication(t){var r;Er(this.experimental);try{const{data:s,error:i}=await G(this.fetch,"POST",`${this.url}/passkeys/authentication/options`,{headers:this.headers,body:{gotrue_meta_security:{captcha_token:(r=t==null?void 0:t.options)===null||r===void 0?void 0:r.captchaToken}}});return i?this._returnResult({data:null,error:i}):this._returnResult({data:s,error:null})}catch(s){if(z(s))return this._returnResult({data:null,error:s});throw s}}async _verifyPasskeyAuthentication(t){Er(this.experimental);try{const{data:r,error:s}=await G(this.fetch,"POST",`${this.url}/passkeys/authentication/verify`,{headers:this.headers,body:{challenge_id:t.challengeId,credential:t.credential},xform:ar});return s?this._returnResult({data:null,error:s}):(r.session&&(await this._saveSession(r.session),await this._notifyAllSubscribers("SIGNED_IN",r.session)),this._returnResult({data:r,error:null}))}catch(r){if(z(r))return this._returnResult({data:null,error:r});throw r}}async _listPasskeys(){Er(this.experimental);try{return await this._useSession(async t=>{const{data:{session:r},error:s}=t;if(s)return this._returnResult({data:null,error:s});if(!r)return this._returnResult({data:null,error:new it});const{data:i,error:a}=await G(this.fetch,"GET",`${this.url}/passkeys`,{headers:this.headers,jwt:r.access_token,xform:o=>({data:o,error:null})});return a?this._returnResult({data:null,error:a}):this._returnResult({data:i,error:null})})}catch(t){if(z(t))return this._returnResult({data:null,error:t});throw t}}async _updatePasskey(t){Er(this.experimental);try{return await this._useSession(async r=>{const{data:{session:s},error:i}=r;if(i)return this._returnResult({data:null,error:i});if(!s)return this._returnResult({data:null,error:new it});const{data:a,error:o}=await G(this.fetch,"PATCH",`${this.url}/passkeys/${t.passkeyId}`,{headers:this.headers,jwt:s.access_token,body:{friendly_name:t.friendlyName}});return o?this._returnResult({data:null,error:o}):this._returnResult({data:a,error:null})})}catch(r){if(z(r))return this._returnResult({data:null,error:r});throw r}}async _deletePasskey(t){Er(this.experimental);try{return await this._useSession(async r=>{const{data:{session:s},error:i}=r;if(i)return this._returnResult({data:null,error:i});if(!s)return this._returnResult({data:null,error:new it});const{error:a}
663=await G(this.fetch,"DELETE",`${this.url}/passkeys/${t.passkeyId}`,{headers:this.headers,jwt:s.access_token,noResolveJson:!0});return a?this._returnResult({data:null,error:a}):this._returnResult({data:null,error:null})})}catch(r){if(z(r))return this._returnResult({data:null,error:r});throw r}}}vl.nextInstanceID={};const nD=vl,sD="2.112.3";let Eo="",Wd;if(typeof Deno<"u"){var qh;Eo="deno",Wd=(qh=Deno.version)===null||qh===void 0?void 0:qh.deno}else if(typeof document<"u")Eo="web";else if(typeof navigator<"u"&&navigator.product==="ReactNative")Eo="react-native";else{var Xh;Eo="node";const e=globalThis.process;Wd=e==null||(Xh=e.version)===null||Xh===void 0?void 0:Xh.replace(/^v/,"")}const cN=[`runtime=${Eo}`];Wd&&cN.push(`runtime-version=${Wd}`);const iD={"X-Client-Info":`supabase-js/${sD}; ${cN.join("; ")}`},aD={headers:iD},oD={schema:"public"},lD={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},cD={},dD={enabled:!1,respectSamplingDecision:!0};function uD(e){if(!e||typeof e!="string")return null;const t=e.split("-");if(t.length!==4)return null;const[r,s,i,a]=t;if(r.length!==2||s.length!==32||i.length!==16||a.length!==2)return null;const o=/^[0-9a-f]+$/i;return!o.test(r)||!o.test(s)||!o.test(i)||!o.test(a)||s==="00000000000000000000000000000000"||i==="0000000000000000"?null:{version:r,traceId:s,parentId:i,traceFlags:a,isSampled:(parseInt(a,16)&1)===1}}function hD(e,t){if(!e||!t||t.length===0)return!1;let r;if(e instanceof URL)r=e;else try{r=new URL(e)}catch{return!1}for(const s of t)try{if(typeof s=="string"){if(mD(r.hostname,s))return!0}else if(s instanceof RegExp){if(s.test(r.hostname))return!0}else if(typeof s=="function"&&s(r))return!0}catch{continue}return!1}function mD(e,t){if(t===e)return!0;if(t.startsWith("*.")){const r=t.slice(2);if(e.endsWith(r)&&(e===r||e.endsWith("."+r)))return!0}return!1}function pD(e){const t=[];try{const r=new URL(e);t.push(r.hostname)}catch{}return t.push("*.supabase.co","*.supabase.in"),t.push("localhost","127.0.0.1","[::1]"),t}function yl(e){"@babel/helpers - typeof";return yl=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yl(e)}function fD(e,t){if(yl(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var s=r.call(e,t);if(yl(s)!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function gD(e){var t=fD(e,"string");return yl(t)=="symbol"?t:t+""}function xD(e,t,r){return(t=gD(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ab(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,s)}return r}function Xe(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?ab(Object(r),!0).forEach(function(s){xD(e,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ab(Object(r)).forEach(function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(r,s))})}return e}const vD=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),yD=()=>Headers,dN=e=>e.startsWith("sb_publishable_")||e.startsWith("sb_secret_"),bD="sb_temp_",ob=new Set,wD=e=>{var t,r;if(!e.startsWith("sb_")||dN(e)||e.startsWith(bD))return;const s=(t=(r=e.match(/^sb_[a-zA-Z0-9]+_/))===null||r===void 0?void 0:r[0])!==null&&t!==void 0?t:"unknown";ob.has(s)||(ob.add(s),console.warn("@supabase/supabase-js: Unrecognized Supabase API key format. The client will proceed and send this key as-is; if you see authentication errors you may need to upgrade @supabase/supabase-js to a version that recognizes this key type."))},lb=(e,t,r,s,i,a)=>{const o=vD(s),l=yD(),c=(i==null?void 0:i.enabled)===!0,d=(i==null?void 0:i.respectSamplingDecision)!==!1,u=c?pD(t):null,h=!(a!=null&&a.omitApiKeyAsBearer&&dN(e));return async(p,m)=>{const y=await r();let b=new l(m==null?void 0:m.headers);if(b.has("apikey")||b.set("apikey",e),!b.has("Authorization")){const w=y??(h?e:null);
663w&&b.set("Authorization",`Bearer ${w}`)}if(u){const w=jD(p,u,d);w&&(w.traceparent&&!b.has("traceparent")&&b.set("traceparent",w.traceparent),w.tracestate&&!b.has("tracestate")&&b.set("tracestate",w.tracestate),w.baggage&&!b.has("baggage")&&b.set("baggage",w.baggage))}return o(p,Xe(Xe({},m),{},{headers:b}))}};let cb=!1,db=!1;function jD(e,t,r){const s=wO();if(!s)return cb||(cb=!0,console.warn("@supabase/supabase-js: tracePropagation is enabled but the tracing runtime is not loaded, so trace headers will not be attached. Add `import '@supabase/supabase-js/tracing'` at your application entry point (requires the OpenTelemetry API package to be installed). The CDN/UMD build does not support trace propagation.")),null;if(!hD(typeof e=="string"||e instanceof URL?e:e.url,t))return null;const i=s();if(!i||!i.traceparent){var a;if(!(i==null||(a=i.carrierKeys)===null||a===void 0)&&a.length&&!db){db=!0;const o=i.carrierKeys.includes("sentry-trace")?" Sentry detected: set `propagateTraceparent: true` in Sentry.init() to emit it.":" Configure your tracing SDK to emit W3C trace context on outgoing requests.";console.warn(`@supabase/supabase-js: tracePropagation is enabled and a tracing SDK is active, but its propagator wrote [${i.carrierKeys.join(", ")}] and no W3C traceparent header, so trace headers will not be attached.`+o)}return null}if(r){const o=uD(i.traceparent);if(o&&!o.isSampled)return{traceparent:i.traceparent}}return i}function ub(e){return typeof e=="boolean"?{enabled:e}:e}function kD(e){return e.endsWith("/")?e:e+"/"}function ND(e,t){var r,s,i,a,o,l;const{db:c,auth:d,realtime:u,global:h}=e,{db:p,auth:m,realtime:y,global:b}=t,w=ub(e.tracePropagation),g=ub(t.tracePropagation),v={db:Xe(Xe({},p),c),auth:Xe(Xe({},m),d),realtime:Xe(Xe({},y),u),storage:{},global:Xe(Xe(Xe({},b),h),{},{headers:Xe(Xe({},(r=b==null?void 0:b.headers)!==null&&r!==void 0?r:{}),(s=h==null?void 0:h.headers)!==null&&s!==void 0?s:{})}),tracePropagation:{enabled:(i=(a=w==null?void 0:w.enabled)!==null&&a!==void 0?a:g==null?void 0:g.enabled)!==null&&i!==void 0?i:!1,respectSamplingDecision:(o=(l=w==null?void 0:w.respectSamplingDecision)!==null&&l!==void 0?l:g==null?void 0:g.respectSamplingDecision)!==null&&o!==void 0?o:!0},accessToken:async()=>""};return e.accessToken?v.accessToken=e.accessToken:delete v.accessToken,v}function SD(e){const t=e==null?void 0:e.trim();if(!t)throw new Error("supabaseUrl is required.");if(!t.match(/^https?:\/\//i))throw new Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(kD(t))}catch{throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var CD=class extends nD{constructor(e){super(e)}},ED=class{constructor(e,t,r){var s,i;this.supabaseUrl=e,this.supabaseKey=t;const a=SD(e);if(!t)throw new Error("supabaseKey is required.");wD(t),this.realtimeUrl=new URL("realtime/v1",a),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",a),this.storageUrl=new URL("storage/v1",a),this.functionsUrl=new URL("functions/v1",a);const o=`sb-${a.hostname.split(".")[0]}-auth-token`,l={db:oD,realtime:cD,auth:Xe(Xe({},lD),{},{storageKey:o}),global:aD,tracePropagation:dD},c=ND(r??{},l);if(this.settings=c,this.storageKey=(s=c.auth.storageKey)!==null&&s!==void 0?s:"",this.headers=(i=c.global.headers)!==null&&i!==void 0?i:{},c.accessToken)this.accessToken=c.accessToken,this.auth=new Proxy({},{get:(u,h)=>{throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(h)} is not possible`)}});else{var d;this.auth=this._initSupabaseAuthClient((d=c.auth)!==null&&d!==void 0?d:{},this.headers,c.global.fetch)}this.fetch=lb(t,e,this._getSessionToken.bind(this),c.global.fetch,c.tracePropagation),this.functionsFetch=lb(t,e,this._getSessionToken.bind(this),c.global.fetch,c.tracePropagation,{omitApiKeyAsBearer:!0}),this.realtime=this._initRealtimeClient(Xe({headers:this.headers,accessToken:this._getAccessToken.bind(this),fetch:this.fetch},c.realtime)),this.accessToken&&Promise.resolve(this.accessToken()).then(u=>this.realtime.setAuth(u)).catch(u=>console.warn("Failed to set initial Realtime auth token:",u)),this.rest=new OO(new URL("rest/v1",a).href,{headers:this.headers,schema:c.db.schema,fetch:this.fetch,timeout:c.db.timeout,urlLengthLimit:c.db.urlLengthLimit,retry:c.db.retry}),this.storage=new Q3(this.storageUrl.href,this.headers,this.fetch,r==null?void 0:r.storage),c.accessToken||this._listenForAuthEvents()}get functions(){return new SO(this.functionsUrl.href,{headers:this.headers,customFetch:this.functionsFetch})}from(e){return this.rest.from(e)}schema(e){return this.rest.schema(e)}rpc(e,t={},r={head:!1,get:!1,count:void 0}){return this.rest.rpc(e,t,r)}
663channel(e,t={config:{}}){return this.realtime.channel(e,t)}getChannels(){return this.realtime.getChannels()}removeChannel(e){return this.realtime.removeChannel(e)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getSessionToken(){var e=this,t,r;if(e.accessToken)return await e.accessToken();const{data:s}=await e.auth.getSession();return(t=(r=s.session)===null||r===void 0?void 0:r.access_token)!==null&&t!==void 0?t:null}async _getAccessToken(){var e=this,t;return(t=await e._getSessionToken())!==null&&t!==void 0?t:e.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:e,persistSession:t,detectSessionInUrl:r,storage:s,userStorage:i,storageKey:a,flowType:o,lock:l,debug:c,throwOnError:d,experimental:u,lockAcquireTimeout:h,skipAutoInitialize:p},m,y){const b={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new CD({url:this.authUrl.href,headers:Xe(Xe({},b),m),storageKey:a,autoRefreshToken:e,persistSession:t,detectSessionInUrl:r,storage:s,userStorage:i,flowType:o,lock:l,debug:c,throwOnError:d,experimental:u,fetch:y,lockAcquireTimeout:h,skipAutoInitialize:p,hasCustomAuthorizationHeader:Object.keys(this.headers).some(w=>w.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new k3(this.realtimeUrl.href,Xe(Xe({},e),{},{params:Xe(Xe({},{apikey:this.supabaseKey}),e==null?void 0:e.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((e,t)=>{this._handleTokenChanged(e,"CLIENT",t==null?void 0:t.access_token)})}_handleTokenChanged(e,t,r){(e==="TOKEN_REFRESHED"||e==="SIGNED_IN"||e==="INITIAL_SESSION")&&this.changedAccessToken!==r?(this.changedAccessToken=r,this.realtime.setAuth(r)):e==="SIGNED_OUT"&&(this.realtime.setAuth(),t=="STORAGE"&&this.auth.signOut(),this.changedAccessToken=void 0)}};const AD=(e,t,r)=>new ED(e,t,r);function PD(){if(typeof window<"u"||globalThis.Deno!==void 0)return!1;const e=globalThis.process;if(!e)return!1;const t=e.version;if(t==null)return!1;const r=t.match(/^v(\d+)\./);return r?parseInt(r[1],10)<=20:!1}PD()&&console.warn("â ï¸ Node.js 20 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 22 or later. For more information, visit: https://github.com/orgs/supabase/discussions/45715");function TD(){var w,g;if(typeof window>"u")return;const e=location.hostname,r=["lovableproject.com","lovableproject-dev.com","lovable.app","gpt-eng.com","gptengineer.run"].some(v=>e===v||e.endsWith("."+v)),s="[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}",i=r?((w=e.match(new RegExp("^(?:id-preview(?:-[a-z0-9]+)?|project)--("+s+")(?:-dev)?(?=\\.|$)","i")))==null?void 0:w[1])??((g=e.match(new RegExp("^("+s+")(?=[.-])","i")))==null?void 0:g[1]):void 0,a=window.parent&&window.parent!==window;if(!i||!a)return localStorage;const o=e.endsWith(".lovableproject-dev.com")||e.endsWith(".gpt-eng.com"),l=o?/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$|^http:\/\/localhost:3000$/:/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$/,c=location.ancestorOrigins&&location.ancestorOrigins[0]||(document.referrer?new URL(document.referrer).origin:""),d=c&&l.test(c)?[c]:o?["https://lovable.dev","http://localhost:3000"]:["https://lovable.dev"],u="lovable-preview-auth:result",h=2e3,p=()=>Math.random().toString(36).slice(2)+Date.now().toString(36),m=(v,x,j)=>new Promise(k=>{const N=p();let S=!1,C;const E=R=>{S||(S=!0,clearTimeout(C),window.removeEventListener("message",I),k(R))},I=R=>{if(d.indexOf(R.origin)<0)return;const O=R.data;O&&O.type===u&&O.requestId===N&&E(O)};window.addEventListener("message",I);const B={type:v,requestId:N,projectId:i,key:x};j!==void 0&&(B.value=j);for(const R of d)window.parent.postMessage(B,R);C=setTimeout(()=>E(null),h)});let y=!0;const b=250;return{getItem:async v=>{let x=await m("lovable-preview-auth:get",v);return!x&&y&&(await new Promise(j=>setTimeout(j,b)),x=await m("lovable-preview-auth:get",v)),y=!1,x&&x.ok&&typeof x.value=="string"?x.value===""?(localStorage.removeItem(v),null):x.value:localStorage.getItem(v)},setItem:(v,x)=>(localStorage.setItem(v,x),m("lovable-preview-auth:set",v,x).then(j=>
663{j&&j.ok&&typeof j.value=="string"&&localStorage.getItem(v)===x&&(j.value===""?localStorage.removeItem(v):localStorage.setItem(v,j.value))})),removeItem:v=>(localStorage.removeItem(v),m("lovable-preview-auth:remove",v).then(()=>{}))}}const _D="https://wdxgcqtsqytbwocaesqx.supabase.co",hb="sb_publishable_byYPZutqTr1RwCWvJoWV0w_A_ot0rfx";function ID(e){return e.startsWith("sb_publishable_")||e.startsWith("sb_secret_")}function RD(e){return(t,r)=>{const s=new Headers(typeof Request<"u"&&t instanceof Request?t.headers:void 0);return r!=null&&r.headers&&new Headers(r.headers).forEach((i,a)=>s.set(a,i)),ID(e)&&s.get("Authorization")===`Bearer ${e}`&&s.delete("Authorization"),s.set("apikey",e),fetch(t,{...r,headers:s})}}const uN=AD(_D,hb,{global:{fetch:RD(hb)},auth:{storage:TD(),persistSession:!0,autoRefreshToken:!0}}),OD="hookz_cookie_consent",MD=()=>{var e;try{const t=localStorage.getItem(OD);return t?!!((e=JSON.parse(t))!=null&&e.analytics):!1}catch{return!1}},$o=e=>{typeof window>"u"||MD()&&uN.from("hub_clicks").insert({source:e,path:window.location.pathname,referrer:document.referrer||null,user_agent:navigator.userAgent}).then(({error:t})=>{t&&console.warn("hub click tracking failed",t.message)})},DD="hookz-theme",hN=f.createContext(void 0),LD=()=>typeof document>"u"?"dark":document.documentElement.classList.contains("light")?"light":"dark",HD=({children:e})=>{const[t,r]=f.useState(LD),s=f.useCallback((o,l)=>{const c=document.documentElement;l&&(c.classList.add("theme-transition"),window.setTimeout(()=>c.classList.remove("theme-transition"),400)),c.classList.toggle("dark",o==="dark"),c.classList.toggle("light",o==="light"),c.style.colorScheme=o;const d=document.querySelector('meta[name="theme-color"]');d&&d.setAttribute("content",o==="dark"?"#0a0e1a":"#f7f9fb")},[]);f.useEffect(()=>{s(t,!1)},[s,t]);const i=f.useCallback(o=>{s(o,!0);try{localStorage.setItem(DD,o)}catch{}r(o)},[s]),a=f.useCallback(()=>{i(t==="dark"?"light":"dark")},[i,t]);return n.jsx(hN.Provider,{value:{theme:t,setTheme:i,toggleTheme:a},children:e})},mN=()=>{const e=f.useContext(hN);return e||{theme:"dark",setTheme:()=>{},toggleTheme:()=>{}}},mb=({className:e})=>{const{theme:t,toggleTheme:r}=mN(),s=t==="dark";return n.jsxs("button",{type:"button",onClick:r,role:"switch","aria-checked":!s,"aria-label":s?"Switch to light theme":"Switch to dark theme",title:s?"Switch to light theme":"Switch to dark theme",className:J("relative inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-full","border border-border bg-secondary/60 text-muted-foreground","transition-colors hover:text-foreground hover:border-primary/40 hover:bg-secondary","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",e),children:[n.jsx(lT,{size:16,"aria-hidden":"true",className:J("absolute transition-all duration-300",s?"scale-100 rotate-0 opacity-100":"scale-50 -rotate-90 opacity-0")}),n.jsx(JP,{size:16,"aria-hidden":"true",className:J("absolute transition-all duration-300",s?"scale-50 rotate-90 opacity-0":"scale-100 rotate-0 opacity-100")})]})},je=()=>{const[e,t]=f.useState(!1),[r,s]=f.useState(!1),[i,a]=f.useState(!1),o=()=>{t(!1),s(!1),a(!1)},l=[{label:"Edge Cloud",href:"/edge-cloud"},{label:"HookZ Systems",href:"/systems"},{label:"Pricing",href:"/pricing"},{label:"Partners",href:"/partners"},{label:"Resources",href:"/resources"}];return n.jsx("nav",{className:"fixed top-0 left-0 right-0 z-50 border-b border-border/50 bg-background/80 backdrop-blur-xl",children:n.jsxs("div",{className:"container relative mx-auto px-6",children:[n.jsxs("div",{className:"flex h-16 items-center justify-between gap-4",children:[n.jsx(V,{to:"/",className:"flex items-center shrink-0",children:n.jsx("img",{src:Bl,onError:Fl,ref:Ul,alt:"HookZ.ai",className:"h-10 w-auto logo-plate"})}),n.jsxs("div",{className:"hidden md:flex items-center gap-4 lg:gap-6 flex-1 justify-center min-w-0 px-4",children:[n.jsx(fO,{}),n.jsx(gO,{}),l.map(c=>c.href.startsWith("/")?n.jsx(V,{to:c.href,className:"text-sm text-muted-foreground hover:text-foreground transition-colors whitespace-nowrap",children:c.label},c.label):n.jsx("a",{href:c.href,className:"text-sm text-muted-foreground hover:text-foreground transition-colors whitespace-nowrap",children:c.label},c.label))]}),n.jsxs("div",{className:"hidden md:flex items-center gap-3 shrink-0",children:[n.jsx(mb,{}),n.jsxs("a",{href:"https://hub.hookz.ai",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 rounded-full border border-primary/30 bg-primary/10 hover:bg-primary/20 transition-all cursor-pointer group",onClick:()=>$o("navbar-desktop"),children:[n.jsx("span",{className:"text-sm font-semibold text-brand-ink whitespace-nowrap",children:"HookZ Hub"}),n.jsx("span",{className:"hidden lg:inline text-xs text-muted-foreground group-hover:text-foreground transition-colors whitespace-nowrap",children:"Sign Up / Sign In"}),n.jsx(Td,{size:12,className:"text-brand-ink opacity-70 group-hover:opacity-100 transition-opacity"})]}),n.jsx(he,{children:n.jsx(M,{variant:"default",size:"sm",children:"Book a Demo"})})]}),n.jsxs("div",{className:"flex md:hidden items-center gap-2",children:[n.jsx(mb,{}),n.jsx("button",{className:"text-foreground",onClick:()=>t(!e),"aria-label":"Toggle menu","aria-expanded":e,"aria-controls":"mobile-navigation",children:e?n.jsx(Dl,{size:24}):n.jsx(KP,{size:24})})]})]}),e&&n.jsx("div",{id:"mobile-navigation",className:"md:hidden py-4 border-t border-border/50",children:n.jsxs("div",{className:"flex flex-col gap-4",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsxs("button",{type:"button",onClick:()=>s(c=>!c),"aria-expanded":r,className:"w-full flex items-center justify-between font-medium text-foreground py-2",children:[n.jsx("span",{children:"Products"}),n.jsx(wi,{className:`w-4 h-4 transition-transform duration-200 ${r?"rotate-180":""}`})]}),n.jsx("div",{className:`grid transition-[grid-template-rows,opacity] duration-300 ease-out motion-reduce:transition-none ${r?"grid-rows-[1fr] opacity-100":"grid-rows-[0fr] opacity-0"}`,children:n.jsx("div",{className:"overflow-hidden",children:n.jsxs("div",{className:"pl-4 space-y-2 border-l-2 border-brand/30",children:[n.jsx(V,{to:"/products",className:"block text-sm text-brand-ink hover:underline",onClick:o,children:"All Products"}),n.jsx(V,{to:"/enterprise-communications",className:"block text-sm text-muted-foreground hover:text-foreground transition-colors",onClick:o,children:"Enterprise Communications"}
663),n.jsx(V,{to:"/products/distributed-infrastructure",className:"block text-sm text-muted-foreground hover:text-foreground transition-colors",onClick:o,children:"Distributed Infrastructure"})]})})})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsxs("button",{type:"button",onClick:()=>a(c=>!c),"aria-expanded":i,className:"w-full flex items-center justify-between font-medium text-foreground py-2",children:[n.jsx("span",{children:"Solutions"}),n.jsx(wi,{className:`w-4 h-4 transition-transform duration-200 ${i?"rotate-180":""}`})]}),n.jsx("div",{className:`grid transition-[grid-template-rows,opacity] duration-300 ease-out motion-reduce:transition-none ${i?"grid-rows-[1fr] opacity-100":"grid-rows-[0fr] opacity-0"}`,children:n.jsx("div",{className:"overflow-hidden",children:n.jsxs("div",{className:"pl-4 space-y-2 border-l-2 border-brand/30",children:[n.jsx(V,{to:"/solutions",className:"block text-sm text-brand-ink hover:underline",onClick:o,children:"All Solutions"}),n.jsx(V,{to:"/solutions/enterprise-communications",className:"block text-sm text-muted-foreground hover:text-foreground transition-colors",onClick:o,children:"Communications Solutions"}),n.jsx(V,{to:"/solutions/distributed-infrastructure",className:"block text-sm text-muted-foreground hover:text-foreground transition-colors",onClick:o,children:"Infrastructure Solutions"})]})})})]}),l.map(c=>c.href.startsWith("/")?n.jsx(V,{to:c.href,className:"text-muted-foreground hover:text-foreground transition-colors",onClick:()=>t(!1),children:c.label},c.label):n.jsx("a",{href:c.href,className:"text-muted-foreground hover:text-foreground transition-colors",onClick:()=>t(!1),children:c.label},c.label)),n.jsxs("div",{className:"flex flex-col gap-2 pt-4 border-t border-border/50",children:[n.jsxs("a",{href:"https://hub.hookz.ai",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-2 px-4 py-2.5 rounded-full border border-primary/30 bg-primary/10 hover:bg-primary/20 transition-all w-full justify-center",onClick:()=>{$o("navbar-mobile"),o()},children:[n.jsx("span",{className:"text-sm font-semibold text-brand-ink whitespace-nowrap",children:"HookZ Hub"}),n.jsx("span",{className:"text-xs text-muted-foreground",children:"Sign Up / Sign In"}),n.jsx(Td,{size:12,className:"text-brand-ink opacity-70"})]}),n.jsx(he,{children:n.jsx(M,{variant:"default",children:"Book a Demo"})})]})]})})]})})},Gh=768;function $D(){const[e,t]=f.useState(void 0);return f.useEffect(()=>{const r=window.matchMedia(`(max-width: ${Gh-1}px)`),s=()=>{t(window.innerWidth<Gh)};return r.addEventListener("change",s),t(window.innerWidth<Gh),()=>r.removeEventListener("change",s)},[]),!!e}const pN={r:195,g:255,b:0},BD={r:88,g:122,b:0},Se={...pN},FD=e=>{if(e<.5){const r=e*2;return r*r*r/2}const t=(e-.5)*2;return .5+(1-Math.pow(1-t,3))*.5},Mt=(e,t)=>e+Math.random()*(t-e),UD=()=>{const e=f.useRef(null),t=$D(),{theme:r}=mN();f.useEffect(()=>{const o=r==="dark"?pN:BD;Se.r=o.r,Se.g=o.g,Se.b=o.b},[r]);const s=f.useRef(0),i=f.useRef({lines:[],nodes:[],lastLineSpawn:0,sweepPhase:-1,sweepNext:0,gridSize:60,reducedMotion:!1}),a=f.useCallback((o,l,c)=>{const d=Math.floor(o/c),u=Math.floor(l/c),h=Math.floor(Mt(4,8)),p=[];let m=Math.floor(Mt(0,d))*c,y=Math.floor(Mt(0,u))*c;p.push({x:m,y});for(let b=0;b<h;b++){const w=Math.random()>.5,g=Math.floor(Mt(2,6));w?m+=g*c*(Math.random()>.5?1:-1):y+=g*c*(Math.random()>.5?1:-1),m=Math.max(0,Math.min(o,m)),y=Math.max(0,Math.min(l,y)),p.push({x:m,y})}return p},[]);return f.useEffect(()=>{var E,I,B,R;const o=e.current;if(!o)return;const l=o.getContext("2d");if(!l)return;const c=window.matchMedia("(prefers-reduced-motion: reduce)").matches,d=i.current;d.reducedMotion=c,d.sweepNext=performance.now()+Mt(18e3,3e4);const u=t?2:5,h=t?4:8,p=t?.7:1,m=t?40:60;d.gridSize=m;const y=.19,b=8*p,w=.05,g=()=>{var W;const O=Math.min(window.devicePixelRatio,2),T=(W=o.parentElement)==null?void 0:W.getBoundingClientRect();T&&(o.width=T.width*O,o.height=T.height*O,o.style.width=`${T.width}px`,o.style.height=`${T.height}px`,l.setTransform(O,0,0,O,0,0))};g(),window.addEventListener("resize",g),d.nodes=[];
663const v=((E=o.parentElement)==null?void 0:E.clientWidth)||1200,x=((I=o.parentElement)==null?void 0:I.clientHeight)||800;for(let O=0;O<h;O++){const T=Math.floor(v/m),W=Math.floor(x/m);d.nodes.push({x:Math.floor(Mt(1,T-1))*m,y:Math.floor(Mt(1,W-1))*m,phase:-1,duration:Mt(1800,2600),nextPulse:performance.now()+Mt(2e3,12e3),active:!1})}const j=(O,T)=>{l.strokeStyle="rgba(255,255,255,0.06)",l.lineWidth=.5,l.beginPath();for(let W=0;W<=O;W+=m)l.moveTo(W,0),l.lineTo(W,T);for(let W=0;W<=T;W+=m)l.moveTo(0,W),l.lineTo(O,W);l.stroke()},k=O=>{const{points:T,progress:W,trailLength:H}=O;if(T.length<2)return;let U=0;const P=[];for(let Z=1;Z<T.length;Z++){const ee=T[Z].x-T[Z-1].x,le=T[Z].y-T[Z-1].y,Ee=Math.sqrt(ee*ee+le*le);P.push(Ee),U+=Ee}const _=W*U,F=Math.max(0,_-H*U);l.save(),l.shadowColor=`rgba(${Se.r},${Se.g},${Se.b},0.35)`,l.shadowBlur=b,l.strokeStyle=`rgba(${Se.r},${Se.g},${Se.b},${y})`,l.lineWidth=1.5,l.lineCap="round",l.lineJoin="round",l.beginPath();let Y=0,q=!1;for(let Z=1;Z<T.length;Z++){const ee=Y,le=Y+P[Z-1];if(le<F){Y=le;continue}if(ee>_)break;const Ee=Math.max(F,ee),ce=Math.min(_,le),ne=(Ee-ee)/P[Z-1],ve=(ce-ee)/P[Z-1],$e=T[Z-1].x+(T[Z].x-T[Z-1].x)*ne,pe=T[Z-1].y+(T[Z].y-T[Z-1].y)*ne,de=T[Z-1].x+(T[Z].x-T[Z-1].x)*ve,be=T[Z-1].y+(T[Z].y-T[Z-1].y)*ve;q?l.lineTo($e,pe):(l.moveTo($e,pe),q=!0),l.lineTo(de,be),Y=le}l.stroke(),l.restore()},N=O=>{for(const T of d.nodes){if(!T.active&&O>=T.nextPulse&&(T.active=!0,T.phase=0),!T.active){l.fillStyle=`rgba(${Se.r},${Se.g},${Se.b},0.08)`,l.beginPath(),l.arc(T.x,T.y,1.5,0,Math.PI*2),l.fill();continue}if(T.phase+=16.67/T.duration,T.phase>=1){T.active=!1,T.nextPulse=O+Mt(6e3,12e3),T.phase=-1;continue}const W=T.phase,H=2+W*22,U=.28*(1-W),P=.3+.2*Math.sin(W*Math.PI);l.fillStyle=`rgba(${Se.r},${Se.g},${Se.b},${P})`,l.beginPath(),l.arc(T.x,T.y,2.5,0,Math.PI*2),l.fill(),l.strokeStyle=`rgba(${Se.r},${Se.g},${Se.b},${U})`,l.lineWidth=1,l.beginPath(),l.arc(T.x,T.y,H,0,Math.PI*2),l.stroke()}},S=(O,T,W)=>{if(d.sweepPhase<0){W>=d.sweepNext&&(d.sweepPhase=0);return}if(d.sweepPhase+=16.67/3e3,d.sweepPhase>=1){d.sweepPhase=-1,d.sweepNext=W+Mt(18e3,3e4);return}const H=d.sweepPhase*(O+T),U=l.createLinearGradient(H-200,0,H+200,T);U.addColorStop(0,`rgba(${Se.r},${Se.g},${Se.b},0)`),U.addColorStop(.5,`rgba(${Se.r},${Se.g},${Se.b},${w})`),U.addColorStop(1,`rgba(${Se.r},${Se.g},${Se.b},0)`),l.fillStyle=U,l.fillRect(0,0,O,T)};if(c){const O=((B=o.parentElement)==null?void 0:B.clientWidth)||1200,T=((R=o.parentElement)==null?void 0:R.clientHeight)||800;l.clearRect(0,0,O,T),j(O,T);for(const W of d.nodes)l.fillStyle=`rgba(${Se.r},${Se.g},${Se.b},0.06)`,l.beginPath(),l.arc(W.x,W.y,12,0,Math.PI*2),l.fill();return()=>window.removeEventListener("resize",g)}const C=()=>{var H,U;const O=performance.now(),T=((H=o.parentElement)==null?void 0:H.clientWidth)||1200,W=((U=o.parentElement)==null?void 0:U.clientHeight)||800;l.clearRect(0,0,T,W),j(T,W),d.lines.length<u&&O-d.lastLineSpawn>Mt(900,1800)&&(d.lines.push({points:a(T,W,m),progress:0,duration:Mt(3200,5800),startTime:O,trailLength:Mt(.25,.4)}),d.lastLineSpawn=O),d.lines=d.lines.filter(P=>{const _=O-P.startTime;return P.progress=FD(Math.min(1,_/P.duration)),k(P),P.progress<1}),N(O),S(T,W,O),s.current=requestAnimationFrame(C)};return s.current=requestAnimationFrame(C),()=>{cancelAnimationFrame(s.current),window.removeEventListener("resize",g)}},[t,a]),n.jsx("canvas",{ref:e,className:"absolute inset-0 w-full h-full pointer-events-none","aria-hidden":"true"})},pb=["e& Enterprise","Gopa Consulting","SRTA","Nvidia","Cisco","Cloudflare","MoroHub","Alef Education","Beond Airline","Arista","Dell","IACAD","Electrolux","Servion Global Solutions","Network International","Loro Piana"],VD=()=>n.jsxs("section",{className:"relative min-h-[calc(100vh-4rem)] flex items-center justify-center overflow-hidden pt-16",children:[n.jsx(UD,{}),n.jsx("div",{className:"container relative z-10 mx-auto px-4 sm:px-6 py-12 sm:py-16 lg:py-24",children:n.jsxs("div",{className:"max-w-5xl mx-auto text-center",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-3 sm:px-4 py-1.5 sm:py-2 rounded-full border border-primary/20 bg-primary/5 text-xs sm:text-sm text-muted-foreground mb-6 sm:mb-8 animate-fade-in",children:[n.jsx("span",{className:"flex h-2 w-2 rounded-full bg-primary"}),"The AI-Native Platform Company"]}),n.jsxs("h1",{className:"text-2xl sm:text-3xl md:text-4xl lg:text-5xl xl:text-6xl font-bold leading-tight mb-4 sm:mb-6 animate-slide-up",children:["The AI-Native Fabric for",n.jsx("br",{}),n.jsx("span",{className:"text-brand-ink",children:"Distributed Hybrid Infrastru
663cture"}),n.jsx("br",{}),"& ",n.jsx("span",{className:"text-brand-ink",children:"Enterprise Communications"})]}),n.jsx("p",{className:"text-base sm:text-lg md:text-xl text-muted-foreground max-w-3xl mx-auto mb-8 sm:mb-10 animate-slide-up",style:{animationDelay:"0.1s"},children:"One platform to run, connect and orchestrate infrastructure, applications and communications â from cloud to data centre to edge."}),n.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4 animate-slide-up",style:{animationDelay:"0.2s"},children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"xl",children:["Book a Demo",n.jsx(K,{className:"ml-2",size:20})]})}),n.jsx(M,{variant:"heroOutline",size:"xl",asChild:!0,children:n.jsxs(V,{to:"/pricing",children:[n.jsx(eT,{size:20,className:"mr-2"}),"Plans & Pricing"]})})]}),n.jsxs("div",{className:"mt-12 sm:mt-16 lg:mt-20 pt-8 sm:pt-12 border-t border-border/50 animate-fade-in",style:{animationDelay:"0.3s"},children:[n.jsx("p",{className:"text-xs sm:text-sm text-foreground/70 mb-6 sm:mb-8 tracking-widest uppercase font-medium",children:"Global Brands and Partners who trust us"}),n.jsxs("div",{className:"relative overflow-hidden w-full",children:[n.jsx("div",{className:"absolute left-0 top-0 bottom-0 w-24 bg-gradient-to-r from-background to-transparent z-10"}),n.jsx("div",{className:"absolute right-0 top-0 bottom-0 w-24 bg-gradient-to-l from-background to-transparent z-10"}),n.jsx("div",{className:"flex w-max animate-marquee whitespace-nowrap",children:[...pb,...pb].map((e,t)=>n.jsx("span",{className:"mx-8 text-base md:text-lg font-semibold text-muted-foreground/40 select-none shrink-0",children:e},t))})]})]})]})})]}),zD=()=>n.jsxs("section",{className:"py-16 sm:py-20 lg:py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-transparent via-primary/[0.02] to-transparent"}),n.jsx("div",{className:"container relative z-10 mx-auto px-4 sm:px-6",children:n.jsxs("div",{className:"max-w-6xl mx-auto",children:[n.jsxs("div",{className:"text-center mb-16",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â HookZ Insight â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-6",children:["The Market Is Solving",n.jsx("span",{className:"text-brand-ink",children:" the Wrong Problem"})]}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-3xl mx-auto",children:"Enterprises are being pushed into fragmented decisions â communications in one stack, infrastru
663cture in another, AI somewhere else."})]}),n.jsxs("div",{className:"grid lg:grid-cols-[1fr_auto_1fr] gap-6 lg:gap-0 items-stretch",children:[n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 rounded-2xl bg-gradient-to-br from-red-500/[0.03] to-transparent border border-red-500/10"}),n.jsxs("div",{className:"relative p-8 space-y-5",children:[n.jsx("p",{className:"text-xs tracking-widest uppercase text-red-400 font-medium mb-6",children:"Today's Reality"}),[{icon:qv,label:"Communications Vendors",problem:"Build engagement layers â but largely stop at the communications layer."},{icon:Te,label:"Infrastructure Vendors",problem:"Optimise compute and storage â but typically have no native enterprise communications stack."},{icon:st,label:"Hyperscalers",problem:"Offer massive scale â but can increase dependency, cost complexity and sovereignty challenges."}].map((e,t)=>n.jsxs("div",{className:"group relative flex items-start gap-4 p-4 rounded-xl bg-card/50 border border-border hover:border-red-500/20 transition-all duration-300",children:[n.jsx("div",{className:"flex-shrink-0 w-10 h-10 rounded-lg bg-red-500/10 border border-red-500/15 flex items-center justify-center",children:n.jsx(e.icon,{className:"w-5 h-5 text-red-400"})}),n.jsxs("div",{className:"flex-1 min-w-0",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("h4",{className:"font-semibold text-sm",children:e.label}),n.jsx(Dl,{className:"w-3.5 h-3.5 text-red-400"})]}),n.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:e.problem})]})]},t)),n.jsx("p",{className:"text-sm text-muted-foreground pt-2 border-t border-border/50 italic",children:"The result: fragmented architectures, vendor lock-in, rising costs and loss of operational control."})]})]}),n.jsxs("div",{className:"hidden lg:flex flex-col items-center justify-center px-6",children:[n.jsx("div",{className:"w-px h-16 bg-gradient-to-b from-transparent to-border"}),n.jsx("div",{className:"w-12 h-12 rounded-full border-2 border-primary bg-primary/10 flex items-center justify-center shadow-[0_0_30px_hsl(var(--primary)/0.3)] my-3",children:n.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:"text-brand-ink",children:n.jsx("path",{d:"M3 8h10M9 4l4 4-4 4",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),n.jsx("div",{className:"w-px h-16 bg-gradient-to-b from-border to-transparent"})]}),n.jsx("div",{className:"flex lg:hidden items-center justify-center py-2",children:n.jsx("div",{className:"w-12 h-12 rounded-full border-2 border-primary bg-primary/10 flex items-center justify-center shadow-[0_0_30px_hsl(var(--primary)/0.3)]",children:n.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:"text-brand-ink rotate-90",children:n.jsx("path",{d:"M3 8h10M9 4l4 4-4 4",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 rounded-2xl bg-gradient-to-br from-primary/[0.05] to-transparent border border-primary/20"}),n.jsxs("div",{className:"relative p-8 h-full flex flex-col",children:[n.jsx("p",{className:"text-xs tracking-widest uppercase text-brand-ink font-medium mb-6",children:"The HookZ Approach"}),n.jsxs("div",{className:"flex-1 flex flex-col justify-center",children:[n.jsxs("div",{className:"text-center mb-8",children:[n.jsx("span",{className:"text-3xl font-bold text-brand-ink tracking-tight",children:"HOOKZ.AI"}),n.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"AI Control Fabric"})]}),n.jsx("div",{className:"space-y-4",children:[{icon:qv,label:"Communications",desc:"Full-stack enterprise communications built in."},{icon:ck,label:"Infrastructure",desc:"Distributed hybrid infrastructure from data centre to edge."},{icon:Ml,label:"Sovereignty & Control",desc:"Deploy where you choose. Retain control of data, infrastru
663cture and economics."}].map((e,t)=>n.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-xl bg-primary/[0.04] border border-primary/10",children:[n.jsx("div",{className:"flex-shrink-0 w-10 h-10 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(e.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{className:"flex-1 min-w-0",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-0.5",children:[n.jsx("h4",{className:"font-semibold text-sm",children:e.label}),n.jsx(vu,{className:"w-3.5 h-3.5 text-brand-ink"})]}),n.jsx("p",{className:"text-sm text-muted-foreground",children:e.desc})]})]},t))})]}),n.jsx("p",{className:"text-sm text-foreground font-semibold pt-6 border-t border-primary/10 text-center mt-6",children:"Not another siloed platform â one control fabric across your infrastructure, applications and communications."})]})]})]})]})})]}),WD=[{icon:an,title:"EX",subtitle:"Employee Experience",description:"Unified communications, AI assistance and reliable infrastructure â without tool sprawl."},{icon:Br,title:"CX",subtitle:"Customer Experience",description:"Omnichannel engagement powered by AI, running on infrastructure you control."},{icon:UP,title:"DX",subtitle:"Developer Experience",description:"APIs, automation and orchestration without unnecessary platform dependency."},{icon:Te,title:"IX",subtitle:"Infrastructure Experience",description:"Visibility, sovereignty and lifecycle control across data centre, cloud and edge."}],ZD=()=>n.jsxs("section",{className:"py-16 sm:py-20 lg:py-24 relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-transparent via-primary/[0.02] to-transparent"}),n.jsxs("div",{className:"container relative z-10 mx-auto px-4 sm:px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Outcomes â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-6",children:["One Control Fabric.",n.jsx("br",{}),n.jsx("span",{className:"text-brand-ink",children:"Across Every Enterprise Experience."})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Because communications and infrastructure are unified, different technology stakeholders can operate through a common platform without separate silos."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-6 max-w-5xl mx-auto",children:WD.map(e=>n.jsxs("div",{className:"group glass p-6 rounded-2xl hover:border-primary/30 transition-all duration-300",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-4 group-hover:shadow-[0_0_20px_hsl(var(--primary)/0.2)] transition-all",children:n.jsx(e.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-2xl font-bold text-brand-ink mb-1",children:e.title}),n.jsx("p",{className:"text-sm font-semibold mb-3",children:e.subt
663itle}),n.jsx("p",{className:"text-sm text-muted-foreground",children:e.description})]},e.title))}),n.jsxs("p",{className:"text-center mt-12 text-muted-foreground text-lg",children:["Not four platforms. ",n.jsx("span",{className:"text-foreground font-semibold",children:"One AI-native control fabric."})]})]})]}),qD=()=>{const e=[{icon:lg,title:"CIO / CTO / CDO",points:["Unified technology strategy","Vendor consolidation","Cross-functional ROI"]},{icon:Te,title:"Head of Infrastructure",points:["Hybrid infrastructure complexity","VMware migration strategy","Infrastructure control"]},{icon:Br,title:"Head of UC / Contact Centre",points:["Platform consolidation","AI-powered engagement","SLA & uptime ownership"]},{icon:Ce,title:"CISO / Regulatory Lead",points:["Data sovereignty","Cross-environment security","Compliance assurance"]},{icon:Id,title:"AI / Innovation Lead",points:["Enterprise AI deployment","GPU-ready infrastructure","Edge AI & inference"]}];return n.jsxs("section",{className:"py-16 sm:py-20 lg:py-24 relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-transparent via-brand/3 to-transparent"}),n.jsxs("div",{className:"container relative z-10 mx-auto px-4 sm:px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Buyer Personas â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-6",children:["Built for",n.jsx("span",{className:"text-brand-ink",children:" Enterprise Technology"}),n.jsx("br",{}),"Leaders"]})]}),n.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-5 gap-4",children:e.map(t=>n.jsxs("div",{className:"group p-6 rounded-2xl border border-border bg-card/50 hover:bg-card hover:border-brand/30 transition-all duration-300",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4 group-hover:shadow-[0_0_20px_#c3ff0030] transition-all",children:n.jsx(t.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-lg font-bold mb-4",children:t.title}),n.jsx("ul",{className:"space-y-2 mb-4",children:t.points.map(r=>n.jsxs("li",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand mt-1.5 flex-shrink-0"}),r]},r))})]},t.title))}),n.jsx("div",{className:"mt-12 text-center",children:n.jsxs("p",{className:"text-muted-foreground",children:["Different priorities. ",n.jsx("span",{className:"text-brand-ink font-semibold",children:"One unified technology platform."})]})})]})]})},XD=[{icon:Ce,category:"Sovereign Authority",customer:"SRTA",customerFull:"Sharjah Road Transport Authority",description:"HookZ CX deployed on EdgeX on-premises for sovereign, secure customer engagement."},{icon:Et,category:"Telco",customer:"e& Enterprise",customerFull:"e& Enterprise",description:"Delivering Voice Edge â SBC as a Service through HookZ Systems."},{icon:Te,category:"Data Centre",customer:"iXAfrica",customerFull:"iXAfrica Data Centres",description:"Managed VM as a Service using CoreX as an alternative to VMware."},{icon:ut,category:"Enterprise",customer:"GOPA",customerFull:"GOPA Consulting Group",description:"Unified Communications systems integration for global operations."}],GD=()=>n.jsx("section",{className:"py-16 sm:py-20 lg:py-24 relative overflow-hidden",children:n.jsxs("div",{className:"container mx-auto px-4 sm:px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Use Cases â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-6",children:["Real-World ",n.jsx("span",{className:"text-brand-ink",children:"Deployments"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"See how organisations use HookZ.ai across communications, infrastru
663cture and sovereign environments."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-6 max-w-6xl mx-auto",children:XD.map((e,t)=>n.jsxs("div",{className:"group/card relative glass p-6 rounded-2xl hover:border-primary/30 transition-all duration-500 overflow-hidden [perspective:800px]",style:{animationDelay:`${t*.15}s`},children:[n.jsxs("div",{className:"transition-transform duration-1000 ease-in-out [transform-style:preserve-3d] group-hover/card:[transform:rotateY(360deg)]",children:[n.jsxs("div",{className:"inline-flex items-center gap-1.5 px-3 py-1 rounded-full text-xs font-semibold mb-5 border border-primary/20 bg-primary/10 text-brand-ink",children:[n.jsx(e.icon,{className:"w-3 h-3"}),e.category]}),n.jsx("h3",{className:"text-2xl font-extrabold mb-1 tracking-tight text-foreground",children:e.customer}),n.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:e.customerFull}),n.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:e.description})]}),n.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[2px] opacity-0 group-hover/card:opacity-100 transition-opacity duration-500 bg-gradient-to-r from-transparent via-primary to-transparent"})]},e.customer))})]})}),KD=()=>n.jsx("section",{id:"solutions",className:"py-16 sm:py-20 lg:py-24",children:n.jsxs("div",{className:"container mx-auto px-4 sm:px-6",children:[n.jsxs("div",{className:"text-center max-w-4xl mx-auto mb-8",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Product Portfolio â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-2",children:"Two Portfolios."}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-6",children:["One ",n.jsx("span",{className:"text-brand-ink",children:"AI Control Fabric."})]}),n.jsxs("p",{className:"text-lg text-muted-foreground max-w-3xl mx-auto",children:["HookZ.ai operates at the intersection of ",n.jsx("strong",{className:"text-foreground",children:"distributed hybrid infrastructure"})," and"," ",n.jsx("strong",{className:"text-foreground",children:"enterprise communications"})," â unified by an AI-native platform."]})]}),n.jsx("div",{className:"flex justify-center mb-16",children:n.jsxs("div",{className:"inline-flex items-center gap-3 px-6 py-3 rounded-full border border-brand/30 bg-brand/5",children:[n.jsx("img",{src:Bl,onError:Fl,ref:Ul,alt:"HookZ.ai",className:"h-6 w-auto logo-plate"}),n.jsx("span",{className:"text-muted-foreground",children:"AI Control Fabric"})]})}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-8 lg:gap-12",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"mb-8",children:[n.jsx("h3",{className:"text-2xl font-bold mb-2",children:"Enterprise Communications"}),n.jsx("p",{className:"text-muted-foreground",children:"Full-stack enterprise communications without stitching together multiple vendors."})]}),n.jsxs("div",{className:"space-y-4",children:[n.jsx("div",{className:"group p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all duration-300",children:n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx("div",{className:"flex-shrink-0 w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center group-hover:shadow-[0_0_20px_#c3ff0030] transition-all",children:n.jsx(Jt,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{className:"flex-1",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("h4",{className:"text-xl font-bold",children:"HookZ CX"}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:"CCaaS"})]}),n.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:"Cloud Contact Centre"}),n.jsxs("ul",{className:"text-sm space-y-1",children:[n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"Omnichannel Conversations"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"AI-Agent Copilot"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"Customer Insights"]})]})]})]})}),n.jsx("div",{className:"group p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all duration-300",children:n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx("div",{className:"flex-shrink-0 w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center group-hover:shadow-[0_0_20px_#c3ff0030] transition-all",children:n.jsx(Tt,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{className:"flex-1",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("h4",{className:"text-xl font-bold",children:"HookZ Connect"}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:"CPaaS"})]}),n.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:"Communications Platform"}),n.jsxs("ul",{className:"text-sm space-y-1",children:[n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"APIs & Low-Code"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"AI Messaging & Chatbots"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"SMS, Voice & WhatsApp"]})]})]})]})}),n.jsx("div",{className:"group p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all duration-300",children:n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx("div",{className:"flex-shrink-0 w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center group-hover:shadow-[0_0_20px_#c3ff0030] transition-all",children:n.jsx(Et,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{className:"flex-1",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("h4",{className:"text-xl font-bold",children:"HookZ Voice Edge"}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:"SBCaaS"})]}),n.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:"SIP & Numbers"}),n.jsxs("ul",{className:"text-sm space-y-1",children:[n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"Intelligent Session Border Controller"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"SIP / Number Management"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"Carrier Integrations"]})]})]})]})}),n.jsx("div",{className:"group p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all duration-300",children:n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx("div",{className:"flex-shrink-0 w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center group-hover:shadow-[0_0_20px_#c3ff0030] transition-all",children:n.jsx(Pi,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{className:"flex-1",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("h4",{className:"text-xl font-bold",children:"HookZ Meet"}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:"Video"})]}),n.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:"Video Conferencing"}),n.jsxs("ul",{className:"text-sm space-y-1",children:[n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"Any Device, Anytime"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"AI Meeting Assistant"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-brand"}),"HD Video & Audio"]})]})]})]})})]})]}),n.jsxs("div",{children:[n.jsxs("div",{className:"mb-8",children:[n.jsx("h3",{className:"text-2xl font-bold mb-2",children:"Distributed Hybrid Infrastru
663cture"}),n.jsx("p",{className:"text-muted-foreground",children:"Virtualisation and orchestration across data centre and edge."})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/20 bg-gradient-to-br from-brand/[0.02] to-transparent mb-4",children:[n.jsxs("div",{className:"flex items-center gap-4 mb-4",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center",children:n.jsx(Ve,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("h4",{className:"text-xl font-bold",children:"HookZ InfraX"}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-brand/20 text-brand-ink font-medium",children:"Platform"})]}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Distributed Hybrid Infrastructure Platform"})]})]}),n.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[n.jsx("span",{className:"text-xs px-3 py-1 rounded-full bg-secondary text-muted-foreground",children:"ControlX Orchestration Layer"}),n.jsx("span",{className:"text-xs px-3 py-1 rounded-full bg-secondary text-muted-foreground",children:"Unified Data Centre & Edge Management"}),n.jsx("span",{className:"text-xs px-3 py-1 rounded-full bg-secondary text-muted-foreground",children:"AI & GPU-ready infrastructure"}),n.jsx("span",{className:"text-xs px-3 py-1 rounded-full border border-brand/30 bg-brand/5 text-brand-ink/90",children:"NVIDIA Inception Member"})]}),n.jsx("div",{className:"p-4 rounded-xl border border-border bg-card/50 mb-4",children:n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("div",{className:"flex-shrink-0 w-10 h-10 rounded-lg bg-brand/10 border border-brand/20 flex items-center justify-center",children:n.jsx(Ie,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("h5",{className:"text-lg font-bold",children:"ControlX"}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:"Orchestration"})]}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"Unified orchestration and control across CoreX and EdgeX."})]})]})}),n.jsxs("div",{className:"grid sm:grid-cols-2 gap-4",children:[n.jsx("div",{className:"group p-5 rounded-xl border border-border bg-card hover:border-brand/30 transition-all duration-300",children:n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx("div",{className:"flex-shrink-0 w-10 h-10 rounded-lg bg-brand/10 border border-brand/20 flex items-center justify-center group-hover:shadow-[0_0_15px_#c3ff0030] transition-all",children:n.jsx(Te,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{className:"flex-1",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("h5",{className:"text-lg font-bold",children:"CoreX"}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:"Data Centre"})]}),n.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:"Data Centre Cloud & Virtualisation"}),n.jsxs("ul",{className:"text-xs space-y-1",children:[n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1 h-1 rounded-full bg-brand"}),"OpenStack / KVM-based"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1 h-1 rounded-full bg-brand"}),"VMware & Hyper-V Migration"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1 h-1 rounded-full bg-brand"}),"Virtual Machines, Bare Metal & Kubernetes"]})]})]})]})}),n.jsx("div",{className:"group p-5 rounded-xl border border-border bg-card hover:border-brand/30 transition-all duration-300",children:n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx("div",{className:"flex-shrink-0 w-10 h-10 rounded-lg bg-brand/10 border border-brand/20 flex items-center justify-center group-hover:shadow-[0_0_15px_#c3ff0030] transition-all",children:n.jsx(Ie,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{className:"flex-1",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("h5",{className:"text-lg font-bold",children:"EdgeX"}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:"Edge"})]}),n.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:"Distributed Edge Cloud & Virtualisation"}),n.jsxs("ul",{className:"text-xs space-y-1",children:[n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1 h-1 rounded-full bg-brand"}),"SD-WAN, Security & SBC workloads"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1 h-1 rounded-full bg-brand"}),"Edge AI inference & local applications"]}),n.jsxs("li",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"w-1 h-1 rounded-full bg-brand"}
663),"Software-defined edge infrastructure"]})]})]})]})})]})]})]})]})]})}),YD=[{icon:ut,title:"Enterprises",description:"Consolidate communications, private cloud and edge infrastructure under unified control."},{icon:Et,title:"Telcos & Service Providers",description:"Launch carrier-grade communications and distributed infrastructure services."},{icon:Te,title:"Data Centres",description:"Deliver VMaaS, private cloud, Kubernetes and GPU infrastructure on an open platform."},{icon:Ce,title:"Sovereign & Regulated Environments",description:"Keep infrastructure, applications and data within controlled environments with on-premises orchestration options."}],JD=()=>n.jsxs("section",{className:"py-16 sm:py-20 lg:py-24 relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-transparent via-primary/[0.02] to-transparent"}),n.jsxs("div",{className:"container relative z-10 mx-auto px-4 sm:px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Solutions â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-6",children:["Industry ",n.jsx("span",{className:"text-brand-ink",children:"Solutions"})]}),n.jsxs("p",{className:"text-lg text-muted-foreground",children:["Pre-configured, validated deployments for mission-critical environments â see all"," ",n.jsx(V,{to:"/solutions",className:"text-brand-ink underline underline-offset-4 hover:opacity-80",children:"industry solutions for distributed enterprises"}),"."]})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-6 max-w-5xl mx-auto",children:YD.map(e=>n.jsxs("div",{className:"group glass p-6 rounded-2xl hover:border-primary/30 transition-all duration-300",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-4 group-hover:shadow-[0_0_20px_hsl(var(--primary)/0.2)] transition-all",children:n.jsx(e.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-bold mb-2",children:e.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:e.description})]},e.title))})]})]}),QD=[{name:"VMware Alternative",href:"/vmware-alternative",icon:Ts,description:"Modernise beyond traditional virtualisation with CoreX â the AI-native VMware alternative built on KVM and OpenStack."},{name:"Edge Cloud & Edge AI",href:"/edge-cloud",icon:st,description:"Enterprise edge cloud with EdgeX and ControlX â distributed infrastructure, edge AI and unified lifecycle management."},{name:"Enterprise Communications",href:"/enterprise-communications",icon:Jt,description:"HookZ CX, Connect, Voice Edge and Meet â engagement, programmable comms and secure voice on one AI Control Fabric."},{name:"Industry Solutions",href:"/solutions",icon:ut,description:"Solutions built for your industry â validated deployments for enterprises, telcos, data centres and regulated environments."},{name:"HookZ Systems",href:"/systems",icon:fg,description:"Enterprise systems integration and professional services â architecture, migration, deployment and managed services."},{name:"HookZ Hub",href:"/hub",icon:hg,description:"Customer portal and marketplace â provisioning, licensing, billing, subscriptions, support and downloads."},{name:"Book a Demo",href:"/book-demo",icon:LP,description:"Discovery workshop, architecture review, product demonstration and migration assessment with our experts."}],e5=()=>n.jsx("section",{className:"py-16 sm:py-24 border-t border-border","aria-labelledby":"explore-heading",children:n.jsxs("div",{className:"container mx-auto px-4 sm:px-6",children:[n.jsxs("div",{className:"max-w-3xl mb-10 sm:mb-14",children:[n.jsxs("h2",{id:"explore-heading",className:"text-3xl sm:text-4xl font-bold mb-4",children:["Explore ",n.jsx("span",{className:"text-brand-ink",children:"HookZ.ai"})]}),n.jsx("p",{className:"text-foreground/70 text-base sm:text-lg",children:"From VMware modernisation and edge cloud to enterprise communications, customer services and professional delivery â start with the area that matters most to you."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-6",children:QD.map(({name:e,href:t,icon:r,description:s})=>n.jsxs(V,{to:t,className:"group relative rounded-xl border border-primary/25 bg-card/40 p-6 backdrop-blur transition-all hover:border-primary/60 hover:bg-card/60 hover:shadow-[0_0_30px_hsl(68_100%_50%/0.
66312)]",children:[n.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[n.jsx("span",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-brand-ink",children:n.jsx(r,{className:"h-5 w-5"})}),n.jsx("h3",{className:"text-lg font-semibold group-hover:text-brand-ink transition-colors",children:e})]}),n.jsx("p",{className:"text-sm text-foreground/70 leading-relaxed mb-4",children:s}),n.jsxs("span",{className:"inline-flex items-center gap-1 text-sm font-medium text-brand-ink",children:["Explore ",e," ",n.jsx(K,{className:"h-4 w-4 transition-transform group-hover:translate-x-1"})]})]},t))}),n.jsx("p",{className:"mt-8 text-xs text-foreground/50 max-w-3xl",children:'Legal note: "Beyond VMware" is an informational resource for organisations evaluating virtualisation modernisation and is intentionally limited to this section. VMware, vSphere and related marks are trademarks of Broadcom Inc. and/or its subsidiaries; HookZ.ai is not affiliated with, endorsed by, or sponsored by Broadcom. References are for interoperability and migration comparison purposes only.'})]})}),t5=()=>n.jsxs("section",{className:"py-16 sm:py-20 lg:py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-transparent via-primary/[0.03] to-transparent"}),n.jsx("div",{className:"absolute top-0 left-1/4 w-64 sm:w-96 h-64 sm:h-96 bg-primary/[0.03] rounded-full blur-3xl"}),n.jsx("div",{className:"absolute bottom-0 right-1/4 w-64 sm:w-96 h-64 sm:h-96 bg-primary/[0.03] rounded-full blur-3xl"}),n.jsx("div",{className:"container relative z-10 mx-auto px-4 sm:px-6",children:n.jsxs("div",{className:"max-w-4xl mx-auto text-center",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl lg:text-6xl font-bold mb-6",children:["Ready to ",n.jsx("span",{className:"text-brand-ink",children:"Unify"})," Your",n.jsx("br",{}),"Infrastructure & Communications?"]}),n.jsx("p",{className:"text-lg sm:text-xl text-muted-foreground max-w-2xl mx-auto mb-10",children:"Bring infrastructure, applications and communications under one AI-native control fabric."}),n.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"xl",children:["Book a Demo",n.jsx(K,{className:"ml-2",size:20})]})}),n.jsx(he,{children:n.jsx(M,{variant:"heroOutline",size:"xl",children:"Talk to Our Enterprise Team"})})]}),n.jsx("p",{className:"text-sm text-muted-foreground mt-6",children:"Enterprise ⢠Telcos ⢠Data Centres ⢠Edge ⢠Sovereign Environments"})]})})]}),ke=()=>{const e={Infrastructure:[{name:"VMware Alternative",href:"/vmware-alternative"},{name:"Edge Cloud & Edge AI",href:"/edge-cloud"},{name:"HookZ InfraX",href:"/products/distributed-infrastructure"},{name:"CoreX",href:"/products/distributed-infrastructure#corex"},{name:"EdgeX",href:"/products/distributed-infrastructure#edgex"},{name:"ControlX",href:"/products/distributed-infrastructure"}],Communications:[{name:"Enterprise Communications",href:"/enterprise-communications"},{name:"HookZ CX",href:"/enterprise-communications#hookz-cx"},{name:"HookZ Connect",href:"/enterprise-communications#hookz-connect"},{name:"HookZ Voice Edge",href:"/enterprise-communications#hookz-voice-edge"},{name:"HookZ Meet",href:"/enterprise-communications#hookz-meet"}],Solutions:[{name:"Industry Solutions",href:"/solutions"},{name:"Private Cloud",href:"/solutions/distributed-infrastructure"},{name:"Managed VMaaS",href:"/solutions/distributed-infrastructure"},{name:"GPU as a Service",href:"/solutions/distributed-infrastructure"},{name:"Edge Solutions",href:"/solutions/distributed-infrastructure"}],Company:[{name:"About",href:"/about"},{name:"Careers",href:"/careers"},{name:"Partners",href:"/partners"},{name:"Contact Us",href:"/contact"},{name:"Book a Demo",href:"/book-demo"}]};return n.jsxs("footer",{className:"dark bg-background text-foreground border-t border-border",children:[n.jsx("div",{className:"border-t border-border",children:n.jsx("div",{className:"container mx-auto px-4 sm:px-6 py-10 sm:py-16",children:n.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 ga
663p-8",children:[n.jsxs("div",{className:"col-span-2 md:col-span-1",children:[n.jsx(V,{to:"/",className:"inline-block mb-4",children:n.jsx("img",{src:Bl,onError:Fl,ref:Ul,alt:"HookZ.ai",className:"h-10 w-auto"})}),n.jsx("p",{className:"text-sm text-foreground/80 mb-4",children:"The AI-Native Platform Company"}),n.jsx("p",{className:"text-xs text-foreground/60",children:"Distributed Hybrid Infrastructure & Enterprise Communications"})]}),Object.entries(e).map(([t,r])=>n.jsxs("div",{children:[n.jsx("h4",{className:"font-semibold mb-4 text-brand-ink",children:t}),n.jsx("ul",{className:"space-y-2",children:r.map(s=>n.jsx("li",{children:n.jsx(V,{to:s.href,className:"text-sm text-foreground/60 hover:text-foreground transition-colors",children:s.name})},s.name))})]},t))]})})}),n.jsx("div",{className:"border-t border-primary/20",style:{background:"linear-gradient(135deg, hsl(68 100% 50% / 0.12), hsl(80 100% 45% / 0.06), hsl(68 100% 50% / 0.03))"},children:n.jsxs("div",{className:"container mx-auto px-4 sm:px-6 py-8 sm:py-12",children:[n.jsx("h4",{className:"font-semibold mb-4 text-brand-ink",children:"Global Offices"}),n.jsxs("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-6 text-sm text-foreground/60",children:[n.jsxs("div",{children:[n.jsx("span",{className:"text-foreground font-medium",children:"Dubai (HQ)"}),n.jsx("p",{children:"6th Floor, Meydan Grand Stand, Nad Al Sheba 1, Dubai"})]}),n.jsxs("div",{children:[n.jsx("span",{className:"text-foreground font-medium",children:"India"}),n.jsx("p",{children:"WeWork, Embassy Golf Links, Cinnabar Hills, Bangalore"})]}),n.jsxs("div",{children:[n.jsx("span",{className:"text-foreground font-medium",children:"UK"}),n.jsx("p",{children:"Battle Square, Reading"})]})]}),n.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-8 pt-8 border-t border-primary/10",children:[n.jsxs("p",{className:"text-sm text-foreground/50",children:["© ",new Date().getFullYear()," HookZ.ai. All rights reserved."]}),n.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4 sm:gap-6 text-sm",children:[n.jsx("span",{className:"text-foreground/70 font-medium",children:"Legal â"}),n.jsx(V,{to:"/terms",className:"text-foreground/50 hover:text-foreground transition-colors",children:"Terms of Use"}),n.jsx("span",{className:"text-foreground/30",children:"|"}),n.jsx(V,{to:"/eua",className:"text-foreground/50 hover:text-foreground transition-colors",children:"End User Agreement"}),n.jsx("span",{className:"text-foreground/30",children:"|"}),n.jsx(V,{to:"/privacy",className:"text-foreground/50 hover:text-foreground transition-colors",children:"Privacy Policy"}),n.jsx("span",{className:"text-foreground/30",children:"|"}),n.jsx(V,{to:"/cookies",className:"text-foreground/50 hover:text-foreground transition-colors",children:"Cookie Policy"}),n.jsx("a",{href:"https://www.linkedin.com/company/hookzai/?viewAsMember=true",target:"_blank",rel:"noopener noreferrer",className:"text-foreground/50 hover:text-foreground transition-colors",children:"LinkedIn"}),n.jsx("a",{href:"#",className:"text-foreground/50 hover:text-foreground transition-colors",children:"YouTube"})]})]})]})})]})},fN="https://hookz.ai",r5="hookz.ai",n5=()=>typeof window>"u"?!0:window.location.hostname===r5,s5=`${fN}/HookZ.ai_logo_Black Text_transparent_background.png`,Ne=({title:e,description:t,path:r,image:s=s5,type:i="website",jsonLd:a,noindex:o})=>{const l=`${fN}${r}`,c=a?Array.isArray(a)?a:[a]:[],d=n5()?o?"noindex, follow":"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1":"noindex, nofollow";return n.jsxs(zf,{children:[n.jsx("title",{children:e}),n.jsx("meta",{name:"description",content:t}),n.jsx("meta",{name:"robots",content:d}),n.jsx("link",{rel:"canonical",href:l}),n.jsx("meta",{property:"og:title",content:e}),n.jsx("meta",{property:"og:description",content:t}),n.jsx("meta",{property:"og:url",content:l}),n.jsx("meta",{property:"og:type",content:i}),n.jsx("meta",{property:"og:image",content:s}),n.jsx("meta",{name:"twitter:title",content:e}),n.jsx("meta",{name:"twitter:description",content:t}),n.jsx("meta",{name:"twitter:image",content:s}),c.map((u,h)=>n.jsx("script",{type:"application/ld+json",children:JSON.stringify(u)},h))]})},fi="https://hookz.ai",Lu=e=>({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.map((t,r)=>({"@type":"ListItem",position:r+1,name:t.name,item:`${fi}${t.path}`}))}),i5=[{name:"VMware Alternative",path:"/vmware-alternative"},{name:"Edge Cloud & Edge AI",path:"/edge-cloud"},{name:"Enterprise Communications",path:"/enterprise-communications"},{name:"Industry Solutions",path:"/solutions"},{name:"HookZ Systems",path:"/systems"},{name:"HookZ Hub",path:"/hub"}],a5=()=>({"@context":"https://schema.org","@type":"ItemList",itemListElement:i5.map((e,t)=>({"@type":"SiteNavigationElement",position:t+1,name:e.name,url:`${fi}${e.path}`}))}),no=()=>({"@context":"https://schema.org","@type":"WebSite",name:"HookZ.ai",alternateName:"HookZ",url:`${fi}/`,potentialAction:{"@type":"SearchAction",target:{"@type":"EntryPoint",urlTemplate:`${fi}/search?q={search_term_string}`},"query-input":"required name=search_term_string"}}
663),o5={infrax:{name:"HookZ InfraX",path:"/products/distributed-infrastructure",category:"Distributed hybrid infrastructure platform",description:"HookZ InfraX is a distributed hybrid infrastructure platform unifying CoreX private cloud, EdgeX edge infrastructure, ControlX orchestration and Cortex observability from data centre to edge."},corex:{name:"HookZ CoreX",path:"/products/corex",category:"Enterprise private cloud and virtualisation",description:"HookZ CoreX is an enterprise private-cloud and virtualisation platform built for virtual machines, Kubernetes, bare-metal and GPU infrastructure."},edgex:{name:"HookZ EdgeX",path:"/products/edgex",category:"Distributed edge infrastructure",description:"HookZ EdgeX is a distributed edge infrastructure platform that consolidates edge compute, storage, AI inference, SD-WAN, firewall, SBC and local applications on a single licensed node."},cx:{name:"HookZ CX",path:"/products/hookz-cx",category:"Contact centre as a service (CCaaS)",description:"HookZ CX is an enterprise customer experience and contact centre platform with omnichannel routing, AI agents and agent assist, deployable in cloud or on-premises."},connect:{name:"HookZ Connect",path:"/products/hookz-connect",category:"Communications platform as a service (CPaaS)",description:"HookZ Connect is an enterprise CPaaS providing one API for SMS, WhatsApp Business and RCS messaging with smart routing, fallback and unified webhooks."},voiceEdge:{name:"HookZ Voice Edge",path:"/products/hookz-voice-edge",category:"SBC as a service and enterprise voice infrastructure",description:"HookZ Voice Edge is enterprise voice infrastructure delivering SBC as a service and global SIP connectivity for Microsoft Teams, UC platforms, contact centres and carrier interconnects."}},Us=e=>{const t=o5[e];return{"@context":"https://schema.org","@type":"SoftwareApplication",name:t.name,applicationCategory:"BusinessApplication",applicationSubCategory:t.category,operatingSystem:"Web-based, Linux (KVM), on-premises and cloud deployment",url:`${fi}${t.path}`,description:t.description,brand:{"@type":"Brand",name:"HookZ.ai"},publisher:{"@type":"Organization",name:"HookZ.ai",url:`${fi}/`},isPartOf:{"@type":"WebSite",name:"HookZ.ai",url:`${fi}/`}}},l5=()=>n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"HookZ.ai | AI-Native Fabric",description:"HookZ.ai delivers AI-native private cloud, edge cloud, enterprise communications and managed infrastructure for distributed enterprises.",path:"/",jsonLd:[no(),a5()]}),n.jsx(je,{}),n.jsxs("main",{children:[n.jsx(VD,{}),n.jsx(zD,{}),n.jsx(ZD,{}),n.jsx(KD,{}),n.jsx(GD,{}),n.jsx(qD,{}),n.jsx(JD,{}),n.jsx(e5,{}),n.jsx(t5,{})]}),n.jsx(ke,{})]}),pr=f.forwardRef(({className:e,...t},r)=>n.jsx("div",{ref:r,className:J("rounded-lg border bg-card text-card-foreground shadow-sm",e),...t}));pr.displayName="Card";const Lp=f.forwardRef(({className:e,...t},r)=>n.jsx("div",{ref:r,className:J("flex flex-col space-y-1.5 p-6",e),...t}));Lp.displayName="CardHeader";const Hp=f.forwardRef(({className:e,...t},r)=>n.jsx("h3",{ref:r,className:J("text-2xl font-semibold leading-none tracking-tight",e),...t}));Hp.displayName="CardTitle";const c5=f.forwardRef(({className:e,...t},r)=>n.jsx("p",{ref:r,className:J("text-sm text-muted-foreground",e),...t}));c5.displayName="CardDescription";const sn=f.forwardRef(({className:e,...t},r)=>n.jsx("div",{ref:r,className:J("p-6 pt-0",e),...t}));sn.displayName="CardContent";const d5=f.forwardRef(({className:e,...t},r)=>n.jsx("div",{ref:r,className:J("flex items-center p-6 pt-0",e),...t}));d5.displayName="CardFooter";const u5="/assets/spec-cloud-B76D5XsF.jpg",h5="/assets/spec-network-DFHJFBHl.jpg",m5="/assets/spec-uc-sPXc6DvI.jpg",p5="/assets/spec-security-Cy-Y07xw.jpg",Ti=({title:e="Explore the connected platform",links:t})=>n.jsx("section",{className:"py-16 border-t border-primary/10",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsx("h2",{className:"text-2xl font-bold mb-8",children:e}),n.jsx("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:t.map(r=>n.jsxs(V,{to:r.to,className:"group rounded-xl border border-primary/20 bg-card/40 p-5 transition-colors hover:border-primary/60",children:[n.jsxs("span",{className:"flex items-center gap-2 font-semibold text-foreground group-hover:text-brand-ink",children:[r.label,n.jsx(K,{className:"h-4 w-4 transition-transform group-hover:translate-x-1"})]}),n.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:r.description})]},r.to))})]})}),f5=()=>{const e=[{icon:ya,title:"Architecture",description:"Enterprise architecture and target-state design across infrastru
663cture, cloud and communications"},{icon:fg,title:"Professional Services",description:"Design, build and integration engagements delivered by certified enterprise engineers"},{icon:nT,title:"Migration Services",description:"VMware, Hyper-V, OpenStack and legacy platform migration with wave planning and rollback gates"},{icon:sT,title:"Deployment",description:"End-to-end implementation, zero-touch site rollout and integration of HookZ and third-party solutions"},{icon:st,title:"Cloud Transformation",description:"Private, hybrid and sovereign cloud transformation programmes with operating-model design"},{icon:Ve,title:"Enterprise AI",description:"AI platform enablement, GPU infrastructure and inference workloads brought into production"},{icon:Br,title:"Managed Services",description:"24x7 operations, monitoring and proactive management with business outcome ownership"},{icon:Te,title:"Infrastructure Modernisation",description:"Virtualisation, storage, network and data centre modernisation across distributed estates"},{icon:Tt,title:"Communication Transformation",description:"Contact centre, UC, voice edge and CPaaS transformation with carrier and platform integration"},{icon:BP,title:"Assessment Services",description:"Estate discovery, dependency mapping, licence exposure analysis and readiness assessments"},{icon:sk,title:"Training",description:"Administrator, operator and partner enablement programmes with certification paths"},{icon:Ce,title:"Customer Success",description:"Adoption planning, service reviews and continuous optimisation throughout the lifecycle"}],t=["NVIDIA","Cisco","HPE","Lenovo","Dell","Supermicro","Microsoft","AWS","Arista","Cloudflare"],r=[{icon:Ie,title:"Network",description:"Enterprise networking, SD-WAN, data center fabrics, and edge connectivity solutions"},{icon:Tt,title:"Unified Communications",description:"Voice, video, messaging, and collaboration platforms for modern enterprises"},{icon:Ml,title:"IT/OT Security",description:"Comprehensive security for both information technology and operational technology environments"}],s=[{icon:st,title:"Cloud",image:u5,alt:"Isometric cloud infrastructure illustration with neon green glow",description:"Private, hybrid and sovereign cloud design, migration and lifecycle operations."},{icon:Ie,title:"Network",image:h5,alt:"Isometric enterprise network mesh illustration with neon green links",description:"Data centre fabrics, SD-WAN, campus and edge connectivity built for scale."},{icon:Tt,title:"Unified Communications",image:m5,alt:"Isometric unified communications illustration with voice, video and chat panels",description:"Voice, video, messaging and contact centre platforms integrated across estates."},{icon:Ce,title:"Security",image:p5,alt:"Isometric cybersecurity shield illustration over a network grid",description:"IT/OT security architecture, hardening, compliance and continuous assurance."}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"HookZ Systems | Systems Integration & Managed Services",description:"HookZ Systems is the consulting and services arm of HookZ.ai â architecture, professional services, migration, deployment, cloud transformation, enterprise AI and managed services.",path:"/systems",jsonLd:[no(),{"@context":"https://schema.org","@type":"Service",name:"HookZ Systems â Enterprise Systems Integration & Professional Services",provider:{"@type":"Organization",name:"HookZ.ai"},serviceType:"Systems Integration, Professional Services, Managed Services",url:"https://hookz.ai/systems"},Lu([{name:"Home",path:"/"},{name:"HookZ Systems",path:"/systems"}])]}),n.jsx(je,{}),n.jsxs("section",{className:"relative min-h-[70vh] flex items-center justify-center overflow-hidden pt-16",children:[n.jsx("div",{className:"absolute inset-0 bg-hero-glow"}),n.jsx("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] rounded-full bg-brand/5 blur-3xl animate-pulse-slow"}),n.jsx("div",{className:"container relative z-10 mx-auto px-6 py-24",children:n.jsxs("div",{className:"max-w-4xl mx-auto text-center",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full border border-brand/30 bg-brand/5 text-sm text-muted-foreground mb-8 animate-fade-in",children:[n.jsxs("div",{className:"flex gap-1",children:[n.jsx("div",{className:"w-2 h-2 rounded-full bg-brand"}),n.jsx("div",{className:"w-2 h-2 rounded-full bg-brand"}),n.jsx("div",{className:"w-2 h-2 rounded-full bg-brand"})]}),"Consulting & Professional Services"]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold leading-tight mb-6 animate-slide-up",children:["From Architecture",n.jsx("br",{}),"to ",n.jsx("span",{className:"text-brand-ink",children:"Operations"})]}),n.jsx("p",{className:"text-lg sm:text-xl text-muted-foreground max-w-3xl mx-auto mb-10 animate-slide-up",style:{animationDelay:"0.1s"},children:"The consulting and services arm of HookZ.ai â architecture, migration, deployment, cloud transformation, enterprise AI and managed services, delivered directly and through our partner network."}),n.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4 animate-slide-up",style:{animationDelay:"0.2s"},children:[n.jsxs(M,{variant:"hero",size:"xl",children:["Get a Consultation",n.jsx(K,{className:"ml-2",size:20})]}),n.jsx(M,{variant:"heroOutline",size:"xl",children:"Partner With Us"})]})]})})]}),n.jsxs("section",{className:"py-16 sm:py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-hero-glow"}),n.jsxs("div",{className:"container relative z-10 mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-12 sm:mb-16",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Our Specialities â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["Four Pillars of ",n.jsx("span",{className:"text-brand-ink",children:"Deep Expertise"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Cloud, Network, Unified Communications and
663Security â engineered, integrated and managed end to end."})]}),n.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6",children:s.map(i=>n.jsxs("div",{className:"group relative rounded-2xl overflow-hidden glass hover:border-primary/40 transition-all duration-300",children:[n.jsxs("div",{className:"relative aspect-[4/3] overflow-hidden",children:[n.jsx("img",{src:i.image,alt:i.alt,loading:"lazy",width:1024,height:768,className:"w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"}),n.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-background via-background/30 to-transparent"})]}),n.jsxs("div",{className:"relative p-6 -mt-10",children:[n.jsx("div",{className:"w-11 h-11 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center mb-4 group-hover:bg-primary/20 transition-colors",children:n.jsx(i.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-semibold mb-2",children:i.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:i.description})]})]},i.title))})]})]}),n.jsx("section",{className:"py-24 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Our Services â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["End-to-End ",n.jsx("span",{className:"text-brand-ink",children:"Solution Delivery"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Comprehensive integration services for HookZ products and third-party technologies"})]}),n.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:e.map((i,a)=>n.jsx(pr,{className:"bg-card border-border hover:border-brand/30 transition-all duration-300 group",children:n.jsxs(sn,{className:"p-6",children:[n.jsx("div",{className:"w-12 h-12 rounded-lg bg-brand/10 flex items-center justify-center mb-4 group-hover:bg-brand/20 transition-colors",children:n.jsx(i.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-semibold mb-2",children:i.title}),n.jsx("p",{className:"text-muted-foreground",children:i.description})]})},a))})]})}),n.jsx("section",{className:"py-24",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Integration Areas â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["Expertise ",n.jsx("span",{className:"text-brand-ink",children:"Domains"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Deep specialization across critical enterprise technology domains"})]}),n.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-8",children:r.map((i,a)=>n.jsxs("div",{className:"relative group",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-brand/10 to-transparent rounded-2xl blur-xl opacity-0 group-hover:opacity-100 transition-opacity"}),n.jsx(pr,{className:"relative bg-card border-border hover:border-brand/50 transition-all duration-300 h-full",children:n.jsxs(sn,{className:"p-8 text-center",children:[n.jsx("div",{className:"w-16 h-16 rounded-full bg-brand/10 flex items-center justify-center mx-auto mb-6",children:n.jsx(i.icon,{className:"w-8 h-8 text-brand-ink"})}),n.jsx("h3",{className:"text-2xl font-bold mb-4",children:i.title}),n.jsx("p",{className:"text-muted-foreground",children:i.description})]})})]},a))})]})}),n.jsx("section",{className:"py-24 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Technology Partners â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["Powered by ",n.jsx("span",{className:"text-brand-ink",children:"Industry Leaders"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Strategic partnerships with the world's leading technology vendors"})]}),n.jsx("div",{className:"flex flex-wrap items-center justify-center gap-8 md:gap-12",children:t.map((i,a)=>n.jsx("div",{className:"px-8 py-4 rounded-lg border border-border bg-card/50 hover:border-brand/30 hover:bg-brand/5 transition-all duration-300",children:n.jsx("span",{className:"text-lg font-semibold text-muted-foreground hover:text-foreground transition-colors",children:i})},a))})]})}),n.jsx(Ti,{title:"Where HookZ Systems delivers",links:[{to:"/vmware-alternative",label:"VMware migration and virtualisation modernisation",description:"Assessment, migration and cutover to HookZ CoreX private cloud."},{to:"/edge-cloud",label:"Edge cloud rollouts across remote sites",description:"Design and deploy EdgeX at branch, retail and industrial locations."},{to:"/solutions",label:"Industry solutions built for your sector",description:"Validated deployments for enterprises, telcos and regulated environments."},{to:"/hub",label:"Service management in HookZ Hub",description:"Subscriptions, licensing, support and marketplace in the customer portal."}]}),n.jsxs("section",{className:"py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-brand/10 via-trans
663parent to-brand/5"}),n.jsx("div",{className:"absolute top-0 left-1/4 w-96 h-96 bg-brand/15 rounded-full blur-3xl"}),n.jsx("div",{className:"container relative z-10 mx-auto px-6",children:n.jsxs("div",{className:"max-w-4xl mx-auto text-center",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-6",children:["Ready to transform your",n.jsx("br",{}),n.jsx("span",{className:"text-brand-ink",children:"enterprise infrastructure?"})]}),n.jsx("p",{className:"text-lg sm:text-xl text-muted-foreground max-w-2xl mx-auto mb-10",children:"Partner with HookZ Systems for end-to-end solution delivery and business outcome ownership."}),n.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4",children:[n.jsxs(M,{variant:"hero",size:"xl",children:["Schedule a Consultation",n.jsx(K,{className:"ml-2",size:20})]}),n.jsx(M,{variant:"heroOutline",size:"xl",children:"Become a Partner"})]})]})})]}),n.jsx(ke,{})]})};var g5=Object.defineProperty,zl=(e,t)=>g5(e,"name",{value:t,configurable:!0}),Fg="Collapsible",[x5,gN]=Wt(Fg),[v5,Ug]=x5(Fg),y5=f.forwardRef(zl(function(t,r){const{__scopeCollapsible:s,open:i,defaultOpen:a,disabled:o,onOpenChange:l,...c}=t,[d,u]=vr({prop:i,defaultProp:a??!1,onChange:l,caller:Fg});return n.jsx(v5,{scope:s,disabled:o,contentId:nn(),open:d,onOpenToggle:f.useCallback(()=>u(h=>!h),[u]),children:n.jsx(se.div,{"data-state":Hu(d),"data-disabled":o?"":void 0,...c,ref:r})})},"Collapsible")),b5="CollapsibleTrigger",w5=f.forwardRef(zl(function(t,r){const{__scopeCollapsible:s,...i}=t,a=Ug(b5,s);return n.jsx(se.button,{type:"button","aria-controls":a.open?a.contentId:void 0,"aria-expanded":a.open||!1,"data-state":Hu(a.open),"data-disabled":a.disabled?"":void 0,disabled:a.disabled,...i,ref:r,onClick:te(t.onClick,a.onOpenToggle)})},"CollapsibleTrigger")),xN="CollapsibleContent",j5=f.forwardRef(zl(function(t,r){const{forceMount:s,...i}=t,a=Ug(xN,t.__scopeCollapsible);return n.jsx(Wn,{present:s||a.open,children:({present:o})=>n.jsx(k5,{...i,ref:r,present:o})})},"CollapsibleContent")),k5=f.forwardRef(zl(function(t,r){const{__scopeCollapsible:s,present:i,children:a,...o}=t,l=Ug(xN,s),[c,d]=f.useState(i),u=f.useRef(null),h=ye(r,u),p=f.useRef(0),m=p.current,y=f.useRef(0),b=y.current,w=l.open||c,g=f.useRef(w),v=f.useRef(void 0);return f.useEffect(()=>{const x=requestAnimationFrame(()=>g.current=!1);return()=>cancelAnimationFrame(x)},[]),Ue(()=>{const x=u.current;if(x){v.current=v.current||{transitionDuration:x.style.transitionDuration,animationName:x.style.animationName},x.style.transitionDuration="0s",x.style.animationName="none";const j=x.getBoundingClientRect();p.current=j.height,y.current=j.width,g.current||(x.style.transitionDuration=v.current.transitionDuration,x.style.animationName=v.current.animationName),d(i)}},[l.open,i]),n.jsx(se.div,{"data-state":Hu(l.open),"data-disabled":l.disabled?"":void 0,id:l.contentId,hidden:!w,...o,ref:h,style:{"--radix-collapsible-content-height":m?`${m}px`:void 0,"--radix-collapsible-content-width":b?`${b}px`:void 0,...t.style},children:w&&a})},"CollapsibleContentImpl"));function Hu(e){return e?"open":"closed"}zl(Hu,"getState");var N5=y5,S5=w5,C5=j5,E5=Object.defineProperty,A5=(e,t)=>E5(e,"name",{value:t,configurable:!0}),P5=f.createContext(void 0);function Wl(e){const t=f.useContext(P5);return e||t||"ltr"}A5(Wl,"useDirection");var T5=Object.defineProperty,Qt=(e,t)=>T5(e,"name",{value:t,configurable:!0}),hn="Accordion",_5=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Vg,I5,R5]=Il(hn),[$u,y$]=Wt(hn,[R5,gN]),zg=gN(),O5=f.forwardRef(Qt(function(t,r){const{type:s,...i}=t,a=i,o=i;return n.jsx(Vg.Provider,{scope:t.__scopeAccordion,children:s==="multiple"?n.jsx(H5,{...o,ref:r}):n.jsx(L5,{...a,ref:r})})},"Accordion")),[vN,M5]=$u(hn),[yN,D5]=$u(hn,{collapsible:!1}),L5=f.forwardRef(Qt(function(t,r){const{value:s,defaultValue:i,onValueChange:a=Qt(()=>{},"onValueChange"),collapsible:o=!1,...l}=t,[c,d]=vr({prop:s,defaultProp:i??"",onChange:a,caller:hn});return n.jsx(vN,{scope:t.__scopeAccordion,value:f.useMemo(()=>c?[c]:[],[c]),onItemOpen:d,onItemClose:f.useCallback(()=>o&&d(""),[o,d]),children:n.jsx(yN,{scope:t.__scopeAccordion,collapsible:o,children:n.jsx(bN,{...l,ref:r})})})},"AccordionImplSingle")),H5=f.forwardRef(Qt(function(t,r){const{value:s,defaultValue:i,onValueChange:a=Qt(()=>{},"onValueChange"),...o}=t,[l,c]=vr({prop:s,defaultProp:i??[],onChange:a,caller:hn}),d=f.useCallback(h=>c((p=[])=>[...p,h]),[c]),u=f.useCallback(h=>c((p=[])=>p.filter(m=>m!==h)),[c]);return n.jsx(vN,{scope:t.__scopeAccordion,value:l,onItemOpen:d,onItemClose:u,children:n.jsx(yN,{scope:t.__scopeAccordion,collapsible:!0,children:n.jsx(bN,{...o,ref:r})})})},"AccordionImplMultiple")),[$5,Bu]=$u(hn),bN=f.forwardRef(Qt(function(t,r){const{__scopeAccordion:s,disabled:i,dir:a,orientation:o="vertical",...l}=t,c=f.useRef(null),d=ye(c,r),u=I5(s),p=Wl(a)==="ltr",m=te(t.onKeyDown,y=>{var E;if(!_5.includes(y.key))return;const b=y.target,w=u().filter(I=>{var B;return!((B=I.ref.current)!=null&&B.disabled)}),g=w.findIndex(I=>I.ref.current===b),v=w.length;if(g===-1)return;y.preventDefault();let x=g;const j=0,k=v-1,N=Qt(()=>{x=g+1,x>k&&(x=j)},"moveNext"),S=Qt(()=>{x=g-1,x<j&&(x=k)},"movePrev");switch(y.key){case"Home":x=j;break;case"End":x=k;break;case"ArrowRight":o==="horizontal"&&(p?N():S());break;case"ArrowDown":o==="vertical"&&N();break;case"ArrowLeft":o==="horizontal"&&(p?S():N());break;case"ArrowUp":o==="vertical"&&S();break}const C=x%v;(E=w[C].ref.current)==null||E.focus()});return n.jsx($5,{scope:s,disabled:i,direction:a,orientation:o,children:n.jsx(Vg.Slot,{scope:s,children:n.jsx(se.div,{...l,"data-orientation":o,ref:d,onKeyDown:i?void 0:m})})})},"AccordionImpl")),$p="AccordionItem",[B5,Wg]=$u($p),F5=f.forwardRef(Qt(function(t,r){const{__scopeAccordion:s,value:i,...a}=t,o=Bu($p,s),l=M5($p,s),c=zg(s),d=nn(),u=i&&l.value.includes(i)||!1,h=o.disabled||t.disabled;return n.jsx(B5,{scope:s,open:u,disabled:h,triggerId:d,children:n.jsx(N5,{"data-orientation":o.orientation,"data-state":Zg(u),...c,...a,ref:r,disabled:h,open:u,onOpenChange:p=>{p?l.onItemOpen(i):l.onItemClose(i)}})})},"AccordionItem")),U5="AccordionHeader",V5=f.forwardRef(Qt(function(t,r){const{__scopeAccordion:s,...i}=t,a=Bu(hn,s),o=Wg(U5,s);return n.jsx(se.h3,{"data-orientation":a.orientation,"data-state":Zg(o.open),"data-disabled":o.disabled?"":void 0,...i,ref:r})},"AccordionHeader")),fb="AccordionTrigger",z5=f.forwardRef(Qt(function(t,r){const{__scopeAccordion:s,...i}=t,a=Bu(hn,s),o=Wg(fb,s),l=D5(fb,s),c=zg(s);return n.jsx(Vg.ItemSlot,{scope:s,children:n.jsx(S5,{"aria-disabled":o.open&&!l.collapsible||void 0,"data-orientation":a.orientation,id:o.triggerId,...c,...i,ref:r})})},"AccordionTrigger")),W5="AccordionContent",Z5=f.forwardRef(Qt(function(t,r){const{__scopeAccordion:s,...i}=t,a=Bu(hn,s),o=Wg(W5,s),l=zg(s);return n.jsx(C5,{role:"region","aria-labelledby":o.triggerId,"data-orientation":a.orientation,...l,...i,ref:r,
663style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...t.style}})},"AccordionContent"));function Zg(e){return e?"open":"closed"}Qt(Zg,"getState");var q5=O5,X5=F5,G5=V5,wN=z5,jN=Z5;const K5=q5,kN=f.forwardRef(({className:e,...t},r)=>n.jsx(X5,{ref:r,className:J("border-b",e),...t}));kN.displayName="AccordionItem";const NN=f.forwardRef(({className:e,children:t,...r},s)=>n.jsx(G5,{className:"flex",children:n.jsxs(wN,{ref:s,className:J("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",e),...r,children:[t,n.jsx(wi,{className:"h-4 w-4 shrink-0 transition-transform duration-200"})]})}));NN.displayName=wN.displayName;const SN=f.forwardRef(({className:e,children:t,...r},s)=>n.jsx(jN,{ref:s,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...r,children:n.jsx("div",{className:J("pb-4 pt-0",e),children:t})}));SN.displayName=jN.displayName;const mn=({title:e="Frequently Asked Questions",subtitle:t,faqs:r,emitJsonLd:s=!0})=>{const i={"@context":"https://schema.org","@type":"FAQPage",mainEntity:r.map(a=>({"@type":"Question",name:a.question,acceptedAnswer:{"@type":"Answer",text:a.answer}}))};return n.jsxs("section",{className:"py-24",children:[s&&r.length>0&&n.jsx(zf,{children:n.jsx("script",{type:"application/ld+json",children:JSON.stringify(i)})}),n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"max-w-3xl mx-auto",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:e}),t&&n.jsx("p",{className:"text-lg text-muted-foreground",children:t})]}),n.jsx(K5,{type:"single",collapsible:!0,className:"space-y-3",children:r.map((a,o)=>n.jsxs(kN,{value:`faq-${o}`,className:"border border-border rounded-xl px-6 data-[state=open]:border-primary/30 transition-colors",children:[n.jsx(NN,{className:"hover:no-underline text-left",children:a.question}),n.jsx(SN,{className:"text-muted-foreground",children:a.answer})]},o))})]})})]})},Y5=[{icon:cT,title:"Licensing Cost Escalation",description:"Bundled subscription repackaging and core-count minimums have reset virtualisation budgets across the enterprise."},{icon:pg,title:"Vendor & Sovereignty Risk",description:"Concentration on a single hypervisor vendor conflicts with sovereignty, resilience and procurement policy."},{icon:Ts,title:"Architectural Lock-In",description:"Proprietary formats and management planes restrict portability across cloud, data centre and edge."},{icon:WP,title:"AI & GPU Workloads",description:"Legacy virtualisation was never designed for GPU pass-through, inference pipelines and distributed AI estates."}],J5=[{step:"01",title:"Discovery & Assessment",description:"Inventory of clusters, hosts, VMs, storage, networking and licence exposure with a dependency map and risk register."},{step:"02",title:"Target Architecture",description:"CoreX design covering KVM compute, storage topology, network fabric, HA domains, backup and DR posture."},{step:"03",title:"Pilot Migration",description:"A representative wave is migrated and validated for performance, resiliency, backup and operational runbooks."},{step:"04",title:"Wave Migration",description:"Automated conversion of VMware, Hyper-V and OpenStack workloads in scheduled waves with rollback at every gate."},{step:"05",title:"Operate & Optimise",description:"Unified lifecycle management, observability, patching and capacity optimisation under one control fabric."}],Q5=[{icon:Ve,title:"Open Virtualisation on KVM",description:"Enterprise KVM/HXI virtualisation with live migration, HA, snapshots and no per-VM licence caps."},{icon:st,title:"Private Cloud & OpenStack",description:"Self-service private cloud with tenancy, quotas and OpenStack-compatible operating models."},{icon:rk,title:"VMs and Containers Together",description:"Run virtual machines and Kubernetes workloads side by side on the same distributed platform."},{icon:nk,title:"Hyper-V & VMware Conversion",description:"Automated image conversion and cutover tooling for VMware vSphere, Hyper-V and OpenStack estates."},{icon:Ie,title:"Cloud to Data Centre to Edge",description:"One
663control plane spanning public cloud, private cloud, data centre and edge nodes."},{icon:Te,title:"GPU & AI Ready",description:"GPU pass-through and inference-optimised scheduling for enterprise AI workloads."}],e6=["Predictable per-node licensing with no core counting or VM counting","Materially lower total cost of ownership versus renewed VMware subscriptions","Portability across cloud, private cloud, data centre and edge","Sovereign and regulated deployment options","Unified lifecycle management, observability and support","Migration services delivered by HookZ Systems and certified partners"],t6=[{question:"Is HookZ CoreX an alternative to VMware?",answer:"Yes. HookZ CoreX is an enterprise private cloud and virtualisation platform that organisations evaluating alternatives to VMware vSphere can adopt for production workloads. It provides high availability, live migration, snapshots, backup and DR integration across data centre, private cloud and edge. VMware and vSphere are trademarks of Broadcom; HookZ.ai is not affiliated with or endorsed by Broadcom."},{question:"What virtualisation technology does CoreX use?",answer:"CoreX is built on enterprise KVM, the open-source hypervisor integrated in the Linux kernel, with an OpenStack-compatible private cloud control plane. This avoids proprietary disk and management formats and keeps workloads portable across cloud, data centre and edge."},{question:"Can VMware workloads migrate to CoreX?",answer:"Yes. The migration framework converts VMware vSphere, Microsoft Hyper-V and OpenStack workloads into CoreX using automated image conversion and scheduled cutover waves with rollback at every gate. A typical enterprise programme runs eight to sixteen weeks including assessment, pilot wave and production waves."},{question:"Does CoreX support Kubernetes?",answer:"Yes. CoreX runs virtual machines and Kubernetes container workloads side by side on the same platform, managed through the ControlX orchestration layer and observed through Cortex, so container and VM estates share one operating model."},{question:"Can CoreX support GPU infrastructure?",answer:"Yes. CoreX supports GPU pass-through and inference-optimised scheduling for enterprise AI workloads, and the same model extends to distributed AI inference at the edge with EdgeX."},{question:"How is CoreX licensed?",answer:"CoreX is licensed per physical node. CPU sockets, cores and VM density are governed by hardware capacity rather than licence uplift, which removes core counting and VM counting from budget planning."},{question:"Can you migrate Hyper-V and OpenStack workloads as well?",answer:"Yes. The same migration framework converts Microsoft Hyper-V and OpenStack estates into CoreX alongside VMware vSphere workloads."},{question:"What happens to our existing backup, DR and security tooling?",answer:"CoreX integrates with mainstream enterprise backup, replication and security tooling. Integration validation is part of the pilot wave before any production migration proceeds."},{question:"Do you provide the migration services or do we run it ourselves?",answer:"Both models are supported. HookZ Systems and certified regional partners can deliver the full migration programme, or provide architecture, tooling and assurance while your teams execute."}],r6=()=>n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"VMware Alternative | HookZ CoreX",description:"Move beyond VMware with HookZ CoreX â an AI-native distributed hybrid infrastructure platform for cloud, private cloud, data centre and edge, with proven migration services.",path:"/vmware-alternative",jsonLd:[Us("corex"),{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://hookz.ai/"},{"@type":"ListItem",position:2,name:"Beyond VMware",item:"https://hookz.ai/vmware-alternative"}]}]}),n.jsx(je,{}),n.jsxs("main",{children:[n.jsxs("section",{className:"relative min-h-[70vh] flex items-center overflow-hidden pt-16",children:[n.jsx("div",{className:"absolute inset-0 bg-hero-glow"}),n.jsx("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] rounded-full bg-brand/5 blur-3xl animate-pulse-slow"}),n.jsx("div",{className:"container relative z-10 mx-auto px-6 py-24",children:n.jsxs("div",{className:"max-w-4xl",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full border border-brand/30 bg-brand/5 text-sm text-muted-foreground mb-8 animate-fade-in",children:[n.jsx(Te,{className:"w-4 h-4 text-brand-ink"}
663),"CoreX â Distributed Hybrid Infrastructure"]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold leading-tight mb-6 animate-slide-up",children:["Move Beyond",n.jsx("br",{}),n.jsx("span",{className:"text-brand-ink",children:"Traditional Virtualisation"})]}),n.jsx("p",{className:"text-lg sm:text-xl text-muted-foreground max-w-3xl mb-10 animate-slide-up",style:{animationDelay:"0.1s"},children:"Modernise your infrastructure with an AI-native distributed hybrid infrastructure platform built for cloud, private cloud, data centre and edge."}),n.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 animate-slide-up",style:{animationDelay:"0.2s"},children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"xl",children:["Book a Demo",n.jsx(K,{className:"ml-2",size:20})]})}),n.jsx(M,{variant:"heroOutline",size:"xl",asChild:!0,children:n.jsx(V,{to:"/products/corex",children:"Explore CoreX"})})]})]})})]}),n.jsx("section",{className:"py-20 sm:py-24 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"max-w-3xl mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Why Move â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["Why organisations are moving ",n.jsx("span",{className:"text-brand-ink",children:"beyond VMware"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Licensing economics, sovereignty obligations and AI workloads have changed the virtualisation decision for every enterprise infrastructure team."})]}),n.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:Y5.map(e=>n.jsxs("div",{className:"glass rounded-2xl p-6 hover:border-primary/40 transition-all duration-300",children:[n.jsx("div",{className:"w-11 h-11 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center mb-4",children:n.jsx(e.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-semibold mb-2",children:e.title}),n.jsx("p",{className:"text-muted-foreground",children:e.description})]},e.title))})]})}),n.jsxs("section",{className:"py-20 sm:py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-hero-glow"}),n.jsxs("div",{className:"container relative z-10 mx-auto px-6",children:[n.jsxs("div",{className:"max-w-3xl mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Migration Methodology â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["A proven ",n.jsx("span",{className:"text-brand-ink",children:"five-stage migration"})," framework"]})]}),n.jsx("div",{className:"space-y-4",children:J5.map(e=>n.jsxs("div",{className:"glass rounded-2xl p-6 flex flex-col sm:flex-row gap-4 sm:gap-6 hover:border-primary/40 transition-all duration-300",children:[n.jsx("span",{className:"text-2xl font-bold text-brand-ink shrink-0",children:e.step}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-xl font-semibold mb-1",children:e.title}),n.jsx("p",{className:"text-muted-foreground",children:e.description})]})]},e.step))})]})]}),n.jsx("section",{className:"py-20 sm:py-24 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"max-w-3xl mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Architecture â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["Open virtualisation, ",n.jsx("span",{className:"text-brand-ink",children:"one control fabric"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"CoreX combines KVM-based virtualisation, private cloud and OpenStack-compatible operations with unified orchestration across every location you run workloads."})]}),n.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:Q5.map(e=>n.jsxs("div",{className:"glass rounded-2xl p-6 hover:border-primary/40 transition-all duration-300",children:[n.jsx("div",{className:"w-11 h-11 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center mb-4",children:n.jsx(e.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsx("h3",{className:"text-lg font-semibold mb-2",children:e.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:e.description})]},e.title))})]})}),n.jsx("section",{className:"py-20 sm:py-24",children:n.jsxs("div",{className:"container mx-auto px-6 grid lg:grid-cols-2 gap-12 items-start",children:[n.jsxs("div",{children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Business Benefits â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:["Lower
663cost. ",n.jsx("span",{className:"text-brand-ink",children:"More control."})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"Modernisation is a commercial decision as much as a technical one. CoreX changes both sides of the equation."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsx(M,{variant:"hero",size:"lg",asChild:!0,children:n.jsxs(V,{to:"/pricing",children:["View Pricing",n.jsx(K,{className:"ml-2 h-4 w-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",asChild:!0,children:n.jsx(V,{to:"/systems",children:"Migration Services"})})]})]}),n.jsx("ul",{className:"space-y-4",children:e6.map(e=>n.jsxs("li",{className:"flex items-start gap-3 glass rounded-xl p-4",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink shrink-0 mt-0.5"}),n.jsx("span",{className:"text-muted-foreground",children:e})]},e))})]})}),n.jsx("section",{className:"py-16 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsx("h2",{className:"text-2xl sm:text-3xl font-bold mb-8",children:"Continue exploring"}),n.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"CoreX Platform",to:"/products/corex"},{label:"Private Cloud Solution",to:"/solutions/infra/private-cloud"},{label:"EdgeX Platform",to:"/products/edgex"},{label:"Edge Cloud & Edge AI",to:"/edge-cloud"},{label:"Distributed Infrastructure",to:"/products/distributed-infrastructure"},{label:"Migration & Managed Services",to:"/systems"}].map(e=>n.jsxs(V,{to:e.to,className:"glass rounded-xl p-5 flex items-center justify-between hover:border-primary/40 transition-all duration-300",children:[n.jsx("span",{className:"font-medium",children:e.label}),n.jsx(K,{className:"w-4 h-4 text-brand-ink"})]},e.to))})]})}),n.jsx(mn,{faqs:t6})]}),n.jsx(ke,{})]}),n6="/assets/edge-cloud-hero-i15l_Mt8.jpg",s6=[{icon:Ve,title:"Edge Computing",description:"Compute and storage consolidated into a single certified node at branch, site or plant."},{icon:qi,title:"Edge AI & Inference",description:"GPU-accelerated inference at the point of data creation for vision, quality and safety use cases."},{icon:rk,title:"Edge Virtualisation",description:"Run SD-WAN, firewall, SBC and local applications as workloads on one node â no appliance sprawl."},{icon:mk,title:"Edge Orchestration",description:"Zero-touch provisioning, templated rollouts and fleet-wide lifecycle management from one console."},{icon:pg,title:"Edge Security",description:"Hardened images, segmentation, encrypted transport and continuous posture monitoring."},{icon:tT,title:"Distributed Cloud",description:"Cloud, data centre and edge operated as one estate under the HookZ.ai AI Control Fabric."}],i6=[{icon:ba,title:"Retail",description:"Store-in-a-box consolidation for POS, networking, security and in-store AI analytics."},{icon:Ua,title:"Manufacturing & OT",description:"Plant-floor inference, OT segmentation and deterministic local survivability."},{icon:on,title:"Utilities",description:"Substation and field edge nodes with resilient operations and remote lifecycle control."},{icon:ut,title:"Branch & Distributed Enterprise",description:"Standardised branch stacks deployed by ZTP across hundreds of locations."}],a6=["One node replacing multiple single-function appliances","Zero-touch provisioning with templated site rollouts","Local survivability when the WAN or cloud is unavailable","Fleet-wide observability, patching and lifecycle management","AI inference executed locally for latency and data-residency control","Per-node licensing with no core counting or VM counting"],o6=[{question:"What is enterprise edge cloud?",answer:"Enterprise edge cloud extends cloud operating models to sites where data is created â branches, stores, plants and substations â with centralised orchestration, local compute and local survivability."},{question:"Is EdgeX hardware or software?",answer:"EdgeX is a software orchestration and virtualisation platform that runs on standard x86 servers. HookZ can supply certified hardware as part of a turnkey bundle, but the product value is the softw
663are control plane."},{question:"How are sites deployed?",answer:"Sites are deployed with zero-touch provisioning. A node ships to site, connects, authenticates and pulls its templated configuration and workloads automatically â no engineer visit required."},{question:"What runs on an EdgeX node?",answer:"SD-WAN, firewall, SBC, local business applications, container workloads and AI inference services all run as virtualised workloads on the same node, monitored by CortexAI."},{question:"How does ControlX relate to EdgeX?",answer:"ControlX provides the centralised orchestration, observability and lifecycle plane across the EdgeX fleet, giving one console for provisioning, policy, updates and health across all sites."},{question:"Can edge nodes keep operating if connectivity fails?",answer:"Yes. Workloads continue to run locally during WAN or cloud outages, and configuration state reconciles with the control plane once connectivity is restored."}],l6=()=>n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"Edge Cloud & Edge AI | HookZ EdgeX",description:"Deploy AI-native distributed infrastructure from branch to edge with unified lifecycle management â edge computing, edge AI, orchestration and security with HookZ EdgeX.",path:"/edge-cloud",jsonLd:[no(),Us("edgex"),{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://hookz.ai/"},{"@type":"ListItem",position:2,name:"Edge Cloud",item:"https://hookz.ai/edge-cloud"}]}]}),n.jsx(je,{}),n.jsxs("main",{children:[n.jsxs("section",{className:"relative min-h-[70vh] flex items-center overflow-hidden pt-16 bg-background",children:[n.jsx("div",{className:"absolute inset-0 lg:left-auto lg:w-[60%] overflow-hidden opacity-0 animate-fade-in",style:{animationDelay:"0.45s",animationFillMode:"forwards"},children:n.jsx("img",{src:n6,alt:"Edge cloud infrastructure connecting distributed enterprise sites",className:"absolute inset-0 w-full h-full object-cover object-center lg:object-right scale-105 lg:scale-110 brightness-[0.45] md:brightness-75 lg:brightness-95",style:{WebkitMaskImage:"radial-gradient(115% 105% at 72% 50%, black 52%, transparent 98%)",maskImage:"radial-gradient(115% 105% at 72% 50%, black 52%, transparent 98%)"}})}),n.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-background via-background/90 to-background/40 md:via-background/80 md:to-background/20 lg:from-background lg:via-background/80 lg:to-transparent"}),n.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-background via-background/30 to-background/40 lg:from-background/70 lg:via-transparent lg:to-background/25"}),n.jsx("div",{className:"absolute inset-0 bg-hero-glow"}),n.jsx("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] rounded-full bg-brand/5 blur-3xl animate-pulse-slow"}),n.jsx("div",{className:"container relative z-10 mx-auto px-6 py-24",children:n.jsxs("div",{className:"max-w-4xl",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full border border-brand/30 bg-brand/5 text-sm text-muted-foreground mb-8 animate-fade-in",children:[n.jsx(Ie,{className:"w-4 h-4 text-brand-ink"}),"EdgeX & ControlX"]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold leading-tight mb-6 animate-slide-up",children:[n.jsx("span",{className:"text-brand-ink",children:"Edge Cloud & Edge AI"}),n.jsx("br",{}),"for Distributed Enterprises"]}),n.jsx("p",{className:"text-lg sm:text-xl text-muted-foreground max-w-3xl mb-10 animate-slide-up",style:{animationDelay:"0.1s"},children:"Deploy AI-native distributed infrastructure from branch to edge with unified lifecycle management."}),n.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 animate-slide-up",style:{animationDelay:"0.2s"},children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"xl",children:["Book a Demo",n.jsx(K,{className:"ml-2",size:20})]})}),n.jsx(M,{variant:"heroOutline",size:"xl",asChild:!0,children:n.jsx(V,{to:"/products/edgex",children:"Explore EdgeX"})})]})]})})]}),n.jsx("section",{className:"py-20 sm:py-24 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"max-w-3xl mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Capabilities â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["Distributed cloud, ",n.jsx("span",{className:"text-brand-ink",children:"operated as one"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Edge computing, edge AI, virtualisation, orchestration and security converged into a single AI-native platform."})]}),n.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:s6.map(e=>n.jsxs("div",{className:"glass rounded-2xl p-6 hover:border-primary/40 transition-all duration-300",children:[n.jsx("div",{className:"w-11 h-11 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center mb-4",children:n.jsx(e.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsx("h3",{className:"text-lg font-semibold mb-2",children:e.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:e.description})]},e.title))})]})}),n.jsxs("section",{className:"py-20 sm:py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-hero-glow"}),n.jsxs("div",{className:"container relative z-10 mx-auto px-6",children:[n.jsxs("div",{className:"max-w-3xl mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Where It Runs â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold",children:["Built for ",n.jsx("span",{className:"text-brand-ink",children:"distributed industries"})]})]}),n.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-6",children:i6.map(e=>n.jsxs("div",{className:"glass rounded-2xl p-6 hover:border-primary/40 transition-all duration-300",children:[n.jsx("div",{className:"w-11 h-11 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center mb-4",children:n.jsx(e.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-semibold mb-2",children:e.title}),n.jsx("p",{className:"text-muted-foreground",children:e.description})]},e.title))})]})]}),n.jsx("section",{className:"py-20 sm:py-24 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6 grid lg:grid-cols-2 gap-12 items-start",children:[n.jsxs("div",{children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Outcomes â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:["Fewer appliances. ",n.jsx("span",{className:"text-brand-ink",children:"Faster rollouts."})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"Standardise every site on one node, one licence and one lifecycle â then scale across the fleet."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsx(M,{variant:"hero",size:"lg",asChild:!0,children:n.jsxs(V,{to:"/pricing",children:["EdgeX Pricing",n.jsx(K,{className:"ml-2 h-4 w-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",asChild:!0,children:n.jsx(V,{to:"/solutions/distributed-infrastru
663cture",children:"Edge Solutions"})})]})]}),n.jsx("ul",{className:"space-y-4",children:a6.map(e=>n.jsxs("li",{className:"flex items-start gap-3 glass rounded-xl p-4",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink shrink-0 mt-0.5"}),n.jsx("span",{className:"text-muted-foreground",children:e})]},e))})]})}),n.jsx("section",{className:"py-16",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsx("h2",{className:"text-2xl sm:text-3xl font-bold mb-8",children:"Continue exploring"}),n.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"EdgeX Platform",to:"/products/edgex"},{label:"Retail in a Box",to:"/solutions/edge/retail-in-a-box"},{label:"Factory in a Box",to:"/solutions/edge/factory-in-a-box"},{label:"VMware Alternative",to:"/vmware-alternative"},{label:"Industry Solutions",to:"/solutions"}].map(e=>n.jsxs(V,{to:e.to,className:"glass rounded-xl p-5 flex items-center justify-between hover:border-primary/40 transition-all duration-300",children:[n.jsx("span",{className:"font-medium",children:e.label}),n.jsx(K,{className:"w-4 h-4 text-brand-ink"})]},e.to))})]})}),n.jsx(mn,{faqs:o6})]}),n.jsx(ke,{})]}),Kh="https://hub.hookz.ai",c6=[{icon:GP,title:"Customer Login",description:"Secure single entry point to every HookZ.ai service you consume."},{icon:uT,title:"Customer Registration",description:"Self-service onboarding for new accounts, users and organisations."},{icon:bu,title:"Marketplace",description:"Browse and subscribe to HookZ products, add-ons and partner offerings."},{icon:mk,title:"Provisioning",description:"Activate services, nodes, numbers and tenants without raising a ticket."},{icon:ik,title:"Licensing",description:"View, assign and manage entitlements across your estate in one place."},{icon:qP,title:"Support",description:"Raise, track and escalate cases with visibility of response targets."},{icon:rT,title:"Billing",description:"Invoices, consumption reporting and subscription management."},{icon:mp,title:"Downloads",description:"Software images, agents, documentation and deployment tooling."},{icon:hg,title:"Service Dashboard",description:"Live health, usage and service status across your subscribed services."},{icon:tk,title:"Knowledge Base",description:"Implementation guides, runbooks and technical reference material."},{icon:MP,title:"Product Updates",description:"Release notes, roadmap notices and maintenance announcements."}],d6=[{icon:ut,title:"Existing Customers",description:"Manage subscriptions, licences, provisioning, billing and support for every HookZ service in production.",points:["Service dashboard and health","Licence and entitlement management","Case management and escalation"]},{icon:dg,title:"Partners",description:"Quote, provision and support customer deployments with the tooling and enablement content you need.",points:["Customer provisioning","Deal and order visibility","Enablement and downloads"]},{icon:Ie,title:"Service Providers",description:"Operate multi-tenant estates at scale with programmatic provisioning and consolidated consumption reporting.",points:["Multi-tenant administration","Consumption and billing reporting","API-driven provisioning"]}],u6=[{question:"What is HookZ Hub?",answer:"HookZ Hub is the customer portal and service console for HookZ.ai. It brings login, registration, marketplace, provisioning, licensing, billing, downloads, support and product updates into one place."},{question:"How do I get access?",answer:"Existing customers sign in with their organisation account. New customers can register directly in the Hub, and partners or service providers are onboarded with the appropriate tenant permissions."},{question:"Can partners provision services for their customers?",answer:"Yes. Partner and service-provider accounts include multi-tenant administration so services can be quoted, provisioned and supported on behalf of end customers."},{question:"Where do I raise a support case?",answer:"Support cases are raised and tracked in the Hub, with visibility of the response targets attached to your support tier."}],h6=()=>n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"HookZ Hub | Customer Portal & Marketplace",description:"HookZ Hub is the customer portal and service console for HookZ.ai â login, registration, marketplace, provisioning, licensing, billing, downloads, support and product updates.",path:"/hub",jsonLd:[no(),{"@context":"https://schema.org","@type":"WebPage",name:"HookZ Hub â Customer Portal & Service Console",description:"Customer portal and service console for HookZ.ai customers, partners and service providers.",url:"https://hookz.ai/hub"},Lu([{name:"Home",path:"/"},{name:"HookZ Hub",path:"/hub"}])]}),n.jsx(je,{}),n.jsxs("main",{children:[n.jsxs("section",{className:"relative min-h-[70vh] flex items-center overflow-hidden pt-16",children:[n.jsx("div",{className:"absolute inset-0 bg-hero-glow"}),n.jsx("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] rounded-full bg-brand/5 blur-3xl animate-pulse-slow"}),n.jsx("div",{className:"container relative z-10 mx-auto px-6 py-24",children:n.jsxs("div",{className:"max-w-4xl",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full border border-brand/30 bg-brand/5 text-sm text-muted-foreground mb-8 animate-fade-in",children:[n.jsx(hg,{className:"w-4 h-4 text-brand-ink"}),"Customer Portal & Service Console"]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold leading-tight mb-6 animate-slide-up",children:["Your Gateway to ",n.jsx("span",{className:"text-brand-ink",children:"HookZ"})]}),n.jsx("p",{className:"text-lg sm:text-xl text-muted-foreground max-w-3xl mb-10 animate-slide-up",style:{animationDelay:"0.1s"},children:"One console for customers, partners and service providers â registration, marketplace, provisioning, licensing, billing, downloads and support across every HookZ.ai service."}),n.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 animate-slide-up",style:{animationDelay:"0.2s"},children:[n.jsx(M,{variant:"hero",size:"xl",asChild:!0,children:n.jsxs("a",{href:Kh,target:"_blank",rel:"noopener noreferrer",onClick:()=>$o("hub-page-signin"),children:["Sign In",n.jsx(Td,{className:"ml-2",size:18})]})}),n.jsx(M,{variant:"heroOutline",size:"xl",asChild:!0,children:n.jsxs("a",{href:Kh,target:"_blank",rel:"noopener noreferrer",onClick:()=>$o("hub-page-register"),children:["Register",n.jsx(K,{className:"ml-2",size:18})]})})]})]})})]}),n.jsx("section",{className:"py-20 sm:py-24 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"max-w-3xl mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Capabilities â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["Everything you run with HookZ, ",n.jsx("span",{className:"text-brand-ink",children:"in one console"})]})]}),n.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:c6.map(e=>n.jsxs("div",{className:"glass rounded-2xl p-6 hover:border-primary/40 transition-all duration-300",children:[n.jsx("div",{className:"w-11 h-11 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center mb-4",children:n.jsx(e.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsx("h3",{className:"text-lg font-semibold mb-2",children:e.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:e.description})]},e.title))})]})}),n.jsxs("section",{className:"py-20 sm:py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-hero-glow"}),n.jsxs("div",{className:"container relative z-10 mx-auto px-6",children:[n.jsxs("div",{className:"max-w-3xl mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Who It Supports â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold",children:["Built for ",n.jsx("span",{className:"text-brand-ink",children:"customers, partners and service providers"})]})]}),n.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:d6.map(e=>n.jsxs("div",{className:"glass rounded-2xl p-6 hover:border-primary/40 transition-all duration-300",children:[n.jsx("div",{className:"w-11 h-11 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center mb-4",children:n.jsx(e.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-semibold mb-2",children:e.title}),n.jsx("p",{className:"text-muted-foreground mb-4",children:e.description}),n.jsx("ul",{className:"space-y-2",children:e.points.map(t=>n.jsxs("li",{className:"text-sm text-muted-foreground flex items-start gap-2",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-primary mt-1.5 shrink-0"}),t]},t))})]},e.title))})]})]}),n.jsx(Ti,{title:"Manage across the HookZ portfolio",links:[{to:"/enterprise-communications",label:"Enterprise communications subscriptions",description:"HookZ CX, Connect and Voice Edge services managed from one console."},{to:"/edge-cloud",label:"Edge cloud and edge AI services",description:"Provision and license EdgeX and ControlX across distributed sites."},{to:"/systems",label:"Professional and managed services",description:"Engage HookZ Systems for deployment and ongoing operations."}]}),n.jsx("section",{className:"py-20 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6 text-center max-w-3xl",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:["Access the ",n.jsx("span",{className:"text-brand-ink",children:"service console"})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"Sign in to manage your services, or talk to us about onboarding your organisation."}),n.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[n.jsx(M,{variant:"hero",size:"lg",asChild:!0,children:n.jsxs("a",{href:Kh,target:"_blank",rel:"noopener noreferrer",onClick:()=>$o("hub-page-footer"),children:["Go to HookZ Hub",n.jsx(Td,{className:"ml-2 h-4 w-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",asChild:!0,children:n.jsx(V,{to:"/book-demo",children:"Book a Demo"})})]})]})}),n.jsx(mn,{faqs:u6})]}),n.jsx(ke,{})]}),m6=[{icon:an,title:"Discovery Workshop",duration:"60â90 minutes",description:"A structured session with your infrastru
663cture, communications and security stakeholders to capture current estate, constraints, commercial drivers and success criteria."},{icon:Ts,title:"Architecture Review",duration:"90 minutes",description:"Our solution architects review your existing virtualisation, edge and communications architecture and map a target-state design across cloud, data centre and edge."},{icon:lk,title:"Product Demonstration",duration:"60 minutes",description:"A live, scenario-based walkthrough of CoreX, EdgeX, HookZ CX, Connect or Voice Edge â driven by your use cases rather than a generic script."},{icon:dk,title:"Migration Assessment",duration:"1â2 weeks",description:"Workload inventory, dependency mapping, licence exposure analysis and a wave-based migration plan with effort, risk and rollback gates."},{icon:lg,title:"Enterprise Consultation",duration:"Ongoing",description:"Commercial modelling, business case support, procurement alignment and a delivery proposal from HookZ Systems or a certified regional partner."}],p6=[{step:"Day 0",title:"Request received",description:"Your enquiry is routed to the right regional enterprise team."},{step:"Within 24h",title:"Initial response",description:"We confirm scope, participants and the most relevant engagement track."},{step:"Week 1",title:"Discovery & demonstration",description:"Discovery workshop and tailored product demonstration are delivered."},{step:"Weeks 2â3",title:"Architecture & assessment",description:"Target architecture review and, where relevant, migration assessment output."},{step:"Weeks 3â4",title:"Proposal",description:"Commercial model, delivery plan and support tier recommendation presented."}],f6=["Current virtualisation, edge or communications platform in use","Approximate estate size â hosts, VMs, sites or agent seats","Renewal dates and commercial drivers","Regulatory, sovereignty or data-residency requirements","Target timelines and internal decision process"],g6=[{question:"Is the demo tailored to our environment?",answer:"Yes. Every demonstration is scenario-based and built around the use cases, platforms and constraints captured during the discovery conversation."},{question:"Who should attend from our side?",answer:"Typically infrastructure or communications leadership, an enterprise architect, and â where migration is in scope â security and procurement stakeholders."},{question:"How quickly can we get started?",answer:"Initial response is within 24 hours, with discovery and a tailored demonstration usually delivered in the first week."},{question:"Is the migration assessment chargeable?",answer:"A high-level assessment is provided as part of the engagement. Detailed, deliverable-backed assessments are scoped as a professional services engagement by HookZ Systems."},{question:"Can a partner deliver the engagement?",answer:"Yes. Engagements can be delivered directly by HookZ or jointly with a certified partner in your region."}],x6=()=>n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"Book a Demo | Enterprise Engagement & Architecture Review | HookZ.ai",description:"Book an enterprise engagement with HookZ.ai â discovery workshop, architecture review, tailored product demonstration, migration assessment and enterprise consultation.",path:"/book-demo",jsonLd:[no(),{"@context":"https://schema.org","@type":"WebPage",name:"Book a Demo â HookZ.ai Enterprise Engagement",description:"Enterprise engagement programme covering discovery, architecture review, product demonstration and migration assessment.",url:"https://hookz.ai/book-demo"},Lu([{name:"Home",path:"/"},{name:"Book a Demo",path:"/book-demo"}])]}),n.jsx(je,{}),n.jsxs("main",{children:[n.jsxs("section",{className:"relative min-h-[70vh] flex items-center overflow-hidden pt-16",children:[n.jsx("div",{className:"absolute inset-0 bg-hero-glow"}),n.jsx("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] rounded-full bg-brand/5 blur-3xl animate-pulse-slow"}),n.jsx("div",{className:"container relative z-10 mx-auto px-6 py-24",children:n.jsxs("div",{className:"max-w-4xl",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full border border-brand/30 bg-brand/5 text-sm text-muted-foreground mb-8 animate-fade-in",children:[n.jsx(xu,{className:"w-4 h-4 text-brand-ink"}),"Enterprise Engagement Programme"]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold leading-tight mb-6 animate-slide-up",children:["Book a ",n.jsx("span",{className:"text-brand-ink",children:"Demo"})]}),n.jsx("p",{className:"text-lg sm:text-xl text-muted-foreground max-w-3xl mb-10 animate-slide-up",style:{animationDelay:"0.1s"},children:"More than a product walkthrough. A structured enterprise engagement covering discovery, architecture review, tailored demonstration and migration asse
663ssment."}),n.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 animate-slide-up",style:{animationDelay:"0.2s"},children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"xl",children:["Request Your Engagement",n.jsx(K,{className:"ml-2",size:20})]})}),n.jsx(M,{variant:"heroOutline",size:"xl",asChild:!0,children:n.jsx(V,{to:"/contact",children:"Talk to Sales"})})]})]})})]}),n.jsx("section",{className:"py-20 sm:py-24 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"max-w-3xl mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â What You Will Experience â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["Five stages of a ",n.jsx("span",{className:"text-brand-ink",children:"serious evaluation"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Every engagement is scoped to your estate, your constraints and your decision timeline."})]}),n.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:m6.map(e=>n.jsxs("div",{className:"glass rounded-2xl p-6 hover:border-primary/40 transition-all duration-300",children:[n.jsx("div",{className:"w-11 h-11 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center mb-4",children:n.jsx(e.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsx("div",{className:"flex items-center gap-2 mb-2",children:n.jsx("h3",{className:"text-lg font-semibold",children:e.title})}),n.jsxs("p",{className:"text-xs text-brand-ink mb-3 flex items-center gap-1.5",children:[n.jsx(yu,{className:"w-3 h-3"}),e.duration]}),n.jsx("p",{className:"text-sm text-muted-foreground",children:e.description})]},e.title))})]})}),n.jsxs("section",{className:"py-20 sm:py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-hero-glow"}),n.jsxs("div",{className:"container relative z-10 mx-auto px-6",children:[n.jsxs("div",{className:"max-w-3xl mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Expected Timelines â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold",children:["From enquiry to ",n.jsx("span",{className:"text-brand-ink",children:"proposal in four weeks"})]})]}),n.jsx("div",{className:"space-y-4",children:p6.map(e=>n.jsxs("div",{className:"glass rounded-2xl p-6 flex flex-col sm:flex-row gap-3 sm:gap-6 hover:border-primary/40 transition-all duration-300",children:[n.jsx("span",{className:"text-sm font-semibold text-brand-ink shrink-0 sm:w-32",children:e.step}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-lg font-semibold mb-1",children:e.title}),n.jsx("p",{className:"text-muted-foreground",children:e.description})]})]},e.step))})]})]}),n.jsx("section",{className:"py-20 sm:py-24 bg-card/30",children:n.jsxs("div",{className:"container mx-auto px-6 grid lg:grid-cols-2 gap-12 items-start",children:[n.jsxs("div",{children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Come Prepared â"}),n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:["Useful to have ",n.jsx("span",{className:"text-brand-ink",children:"on the first call"})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"None of this is mandatory, but it lets us make the first session materially more valuable."}),n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Book a Demo",n.jsx(K,{className:"ml-2 h-4 w-4"})]})})]}),n.jsx("ul",{className:"space-y-4",children:f6.map(e=>n.jsxs("li",{className:"flex items-start gap-3 glass rounded-xl p-4",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink shrink-0 mt-0.5"}),n.jsx("span",{className:"text-muted-foreground",children:e})]},e))})]})}),n.jsx(mn,{faqs:g6})]}),n.jsx(ke,{})]}),v6=()=>{const e=[{id:"enterprise-communications",title:"Enterprise Communications",description:"Full-stack communications without stitching 5 vendors. CCaaS, CPaaS, and SBCaaS unified by AI.",href:"/enterprise-communications",products:[{name:"HookZ CX",tag:"CCaaS",description:"Cloud Contact Center",icon:Jt},{name:"HookZ Connect",tag:"CPaaS",description:"Communications Platform",icon:Tt},{name:"HookZ Voice Edge",tag:"SBCaaS",description:"SIP & Numbers",
663icon:Et},{name:"HookZ Meet",tag:"Video",description:"Video Conferencing",icon:Pi}]},{id:"distributed-infrastructure",title:"Distributed Hybrid Infrastructure",description:"AI-native alternative to VMware, Nutanix & Microsoft Hyper-V. Data center to edge, unified.",href:"/products/distributed-infrastructure",products:[{name:"HookZ InfraX",tag:"Platform",description:"Unified Virtualization Platform",icon:Ve},{name:"CoreX",tag:"DC",description:"Data Center Virtualization",icon:Te},{name:"EdgeX",tag:"Edge",description:"AI-Native Edge Cloud Platform",icon:Ie}]}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"HookZ.ai Products â Communications & Infrastructure Portfolio",description:"Explore the full HookZ.ai portfolio: CX, Connect, Voice Edge, Meet, CoreX, EdgeX, and ControlX.",path:"/products"}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-dual"}),n.jsx("div",{className:"absolute top-0 right-1/4 w-[500px] h-[500px] bg-primary/[0.03] rounded-full blur-3xl"}),n.jsx("div",{className:"container mx-auto px-6 relative",children:n.jsxs("div",{className:"text-center max-w-4xl mx-auto",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 tracking-widest uppercase",children:"â Product Portfolio â"}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-6",children:["Two Portfolios.",n.jsx("br",{}),"One ",n.jsx("span",{className:"text-brand-ink",children:"AI Control Fabric"}),"."]}),n.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mx-auto",children:"HookZ.ai operates at the intersection of enterprise communications and distributed hybrid infrastructure â unified by an AI-native platform."})]})})]}),n.jsx("section",{className:"py-16",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsx("div",{className:"grid lg:grid-cols-2 gap-8",children:e.map((t,r)=>n.jsxs("div",{className:"group p-8 rounded-3xl glass-strong hover:border-primary/20 transition-all duration-300",children:[n.jsx("h2",{className:"text-2xl font-bold mb-3",children:t.title}),n.jsx("p",{className:"text-muted-foreground mb-8",children:t.description}),n.jsx("div",{className:"space-y-4 mb-8",children:t.products.map(s=>n.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-xl glass hover:border-primary/15 transition-all",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl flex items-center justify-center bg-primary/10 border border-primary/20",children:n.jsx(s.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{className:"flex-1",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("h3",{className:"font-bold",children:s.name}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:s.tag})]}),n.jsx("p",{className:"text-sm text-muted-foreground",children:s.description})]})]},s.name))}),n.jsx(M,{variant:r===0?"hero":"heroOutline",asChild:!0,className:"w-full sm:w-auto",children:n.jsxs(V,{to:t.href,children:["Explore ",t.title.split(" ")[0]," Portfolio",n.jsx(K,{className:"w-4 h-4"})]})})]},t.id))})})}),n.jsxs("section",{className:"py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-dual"}),n.jsx("div",{className:"container mx-auto px-6 relative",children:n.jsxs("div",{className:"text-center max-w-3xl mx-auto",children:[n.jsxs("div",{className:"inline-flex items-center gap-3 px-6 py-3 rounded-full glass-strong border-primary/30 mb-8",children:[n.jsx("img",{src:Bl,onError:Fl,ref:Ul,alt:"HookZ.ai",className:"h-6 w-auto logo-plate"}),n.jsx("span",{className:"text-muted-foreground",children:"AI Control Fabric"})]}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:"Unified Intelligence Across All Products"}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"Every HookZ product is connected through our AI Control Fabric â enabling cross-platform automation, unified observability, and intelligent operations that learn and adapt to your business."}),n.jsxs(M,{variant:"heroOutline",size:"lg",children:["Learn About Our AI Platform",n.jsx(K,{className:"w-4 h-4"})]})]})})]}),n.jsx(ke,{})]})},y6="/assets/hero-corex-54wGgOne.png",b6="/downloads/HookZ-VMware-Exit-Guide.pdf",w6="HookZ-VMware-Exit-Guide.pdf",Yh=({children:e})=>{const[t,r]=f.useState(!1),[s,i]=f.useState(!1),[a,o]=f.useState(!1),[l,c]=f.useState(!0),d=f.useRef(Date.now()),{toast:u}=_l();f.useEffect(()=>{t&&(d.current=Date.now())},[t]);const h=()=>{const y=document.createElement("a");
663y.href=b6,y.download=w6,document.body.appendChild(y),y.click(),document.body.removeChild(y)},p=async y=>{var j,k,N;y.preventDefault();const b=new FormData(y.currentTarget),w=(j=b.get("name"))==null?void 0:j.trim(),g=(k=b.get("email"))==null?void 0:k.trim(),v=(N=b.get("company"))==null?void 0:N.trim(),x=b.get("website")??"";if(!w||!g){u({title:"Please enter your name and business email.",variant:"destructive"});return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(g)){u({title:"Please enter a valid business email address.",variant:"destructive"});return}o(!0);try{const{data:S,error:C}=await uN.functions.invoke("submit-guide-lead",{body:{name:w,email:g,company:v,website:x,formLoadedAt:d.current,source:`${window.location.origin}${window.location.pathname}`}});if(C){let E="Something went wrong. Please try again.";const I=C.context;if(I&&typeof I.text=="function")try{const B=JSON.parse(await I.text());B!=null&&B.error&&(E=B.error)}catch{}console.error("submit-guide-lead failed:",C),u({title:E,variant:"destructive"});return}c(!!(S!=null&&S.guideEmailDelivered)),h(),i(!0)}finally{o(!1)}},m=y=>{r(y),y||setTimeout(()=>i(!1),300)};return n.jsxs(Iu,{open:t,onOpenChange:m,children:[n.jsx("div",{onClick:()=>r(!0),children:e}),n.jsx(Ll,{className:"sm:max-w-md border-border/50 bg-card max-h-[90vh] overflow-y-auto",children:s?n.jsxs("div",{className:"py-8 text-center space-y-4",children:[n.jsx(Ol,{className:"h-12 w-12 text-brand-ink mx-auto"}),n.jsx(Rs,{className:"text-2xl",children:"Your guide is downloading"}),n.jsx("p",{className:"text-muted-foreground text-sm",children:l?"We've also emailed you a copy â check your inbox.":"If the download didn't start automatically, use the button below."}),n.jsxs(M,{variant:"outline",onClick:h,children:[n.jsx(mp,{className:"h-4 w-4"}),"Download again"]})]}):n.jsxs(n.Fragment,{children:[n.jsxs(Hl,{children:[n.jsx(Rs,{className:"text-xl",children:"Download the VMware Exit Guide"}),n.jsx($l,{children:"A 13-page enterprise-architect framework for assessing, deciding and executing a VMware exit."})]}),n.jsxs("form",{onSubmit:p,className:"space-y-4 mt-2",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{htmlFor:"lead-name",children:"Name *"}),n.jsx(ct,{id:"lead-name",name:"name",placeholder:"Jane Smith",maxLength:100,required:!0})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{htmlFor:"lead-email",children:"Business Email *"}),n.jsx(ct,{id:"lead-email",name:"email",type:"email",placeholder:"[email protected]",maxLength:255,required:!0})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{htmlFor:"lead-company",children:"Company"}),n.jsx(ct,{id:"lead-company",name:"company",placeholder:"Acme Corp",maxLength:100})]}),n.jsxs("div",{className:"absolute left-[-9999px] top-auto h-px w-px overflow-hidden","aria-hidden":"true",children:[n.jsx("label",{htmlFor:"lead-website",children:"Website"}),n.jsx("input",{id:"lead-website",name:"website",type:"text",tabIndex:-1,autoComplete:"off"})]}),n.jsxs(M,{type:"submit",size:"lg",className:"w-full",disabled:a,children:[a?n.jsx(XP,{className:"h-4 w-4 animate-spin"}):n.jsx(mp,{className:"h-4 w-4"}),a?"Sending your guideâ¦":"Get the Guide"]}),n.jsx("p",{className:"text-xs text-muted-foreground",children:"We'll only use your details to follow up about your infrastructure plans."})]})]})})]})},Fu=f.forwardRef(({className:e,...t},r)=>n.jsx("div",{className:"relative w-full overflow-auto",children:n.jsx("table",{ref:r,className:J("w-full caption-bottom text-sm",e),...t})}));Fu.displayName="Table";const Uu=f.forwardRef(({className:e,...t},r)=>n.jsx("thead",{ref:r,className:J("[&_tr]:border-b",e),...t}));Uu.displayName="TableHeader";const Vu=f.forwardRef(({className:e,...t},r)=>n.jsx("tbody",{ref:r,className:J("[&_tr:last-child]:border-0",e),...t}));Vu.displayName="TableBody";const j6=f.forwardRef(({className:e,...t},r)=>n.jsx("tfoot",{ref:r,className:J("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...t}));j6.displayName="TableFooter";const Mr=f.forwardRef(({className:e,...t},r)=>n.jsx("tr",{ref:r,className:J("border-b transition-colors data-[state=selected]:bg-muted hover:bg-muted/50",e),...t}));Mr.displayName="TableRow";const Ct=f.forwardRef(({className:e,...t},r)=>n.jsx("th",{ref:r,className:J("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",e),...t}));Ct.displayName="TableHead";const ge=f.forwardRef(({className:e,...t},r)=>n.jsx("td",{ref:r,className:J("p-4 align-middle [&:has([role=checkbox])]:pr-0",e),...t}));ge.displayName="TableCell";const k6=f.forwardRef(({className:e,...t},r)=>n.jsx("caption",{ref:r,className:J("mt-4 text-sm text-muted-foreground",e),...t}));k6.displayName="TableCaption";const N6=()=>{const e=[{title:"HXI â KVM-Optimised Hypervisor",description:"Enterprise-grade, hardened KVM engine tuned for performance, isolation and stability.",icon:Ve,features:["VM live migration","HA clustering","NUMA optimisation","GPU pass-through for AI","SR-IOV support"]},{title:"OpenStack Orchestration Layer",description:"Full-featured orchestration for multi-node, multi-tenant environments.",icon:Ts,features:["Multi-node management","Multi-tenant isolation","Role-based access control","API-driven automation","Infrastru
663cture-as-Code ready"]},{title:"Software-Defined Infrastructure",description:"Complete software-defined stack for compute, storage, networking and observability.",icon:Ie,features:["Compute virtualisation","Ceph-based SDS (optional)","Virtual Networking (SDN-ready)","Observability layer","NVMe-backed storage"]}],t=[{capability:"Vendor Lock-In",vmware:"High",nutanix:"Medium",hyperv:"Medium",proxmox:"Low",corex:"None"},{capability:"Licensing Predictability",vmware:"Unstable",nutanix:"Medium",hyperv:"Medium",proxmox:"High",corex:"Transparent"},{capability:"AI GPU Support",vmware:"Yes",nutanix:"Yes",hyperv:"Limited",proxmox:"Limited",corex:"Native Pass-through"},{capability:"Sovereign Deployment",vmware:"Limited",nutanix:"Limited",hyperv:"Limited",proxmox:"Yes",corex:"Designed for Sovereignty"},{capability:"Open API",vmware:"Partial",nutanix:"Limited",hyperv:"Limited",proxmox:"Yes",corex:"Full OpenStack API"},{capability:"Multi-Tenant DC Grade",vmware:"Yes",nutanix:"Yes",hyperv:"Partial",proxmox:"Partial",corex:"Enterprise-Grade"}],r=["Offer VMaaS (Virtual Machine as a Service)","Provide sovereign cloud services","Compete with hyperscalers","Onboard enterprise VMware exit clients","Launch AI-ready infrastructure zones"],s=["VNF / CNF hosting","5G core workloads","Multi-site DC clustering","Network function virtualisation","API-driven infrastructure provisioning"],i=["GPU passthrough","AI workload isolation","Air-gapped deployments","Private LLM hosting","RAG infrastructure"],a=["Migration playbooks","VM compatibility assessment","Cost modelling vs VMware","Phased migration support","Hybrid co-existence mode"],o=["Role-based access control","Micro-segmentation support","Multi-tenant isolation","Full audit logs","API governance","Data sovereignty by design"],l=[{name:"Enterprise On-Prem",icon:ut},{name:"Data Center Hosted",icon:Te},{name:"Telco Core",icon:Et},{name:"Edge Sites (EdgeX)",icon:Ie},{name:"Air-Gapped Government",icon:Ce}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"CoreX | Enterprise Private Cloud & Virtualisation | HookZ.ai",description:"HookZ CoreX is an enterprise private-cloud and virtualisation platform built for VMs, Kubernetes, bare-metal and GPU infrastructure.",path:"/products/corex",jsonLd:Us("corex")}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-20 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-primary/5 via-transparent to-transparent"}),n.jsx("div",{className:"absolute top-20 right-1/4 w-[600px] h-[600px] bg-primary/[0.03] rounded-full blur-3xl"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:"/products/distributed-infrastructure",className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-6 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),"Back to Distributed Infrastructure"]}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-primary/10 border border-primary/20 mb-6",children:[n.jsx(Te,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:"Part of HookZ InfraX Platform"})]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold mb-6",children:["CoreX",n.jsx("span",{className:"text-brand-ink",children:"â¢"})]}),n.jsx("p",{className:"text-2xl sm:text-3xl font-semibold text-foreground/90 mb-4",children:"The Sovereign Virtualisation Platform for Data Centers"}),n.jsx("p",{className:"text-xl text-brand-ink font-medium mb-6",children:"Exit VMware. Eliminate Lock-In. Own Your Infrastructure."}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-3xl mb-10",children:"CoreX is an OpenStack KVM-based data center virtualisation platform built for enterprises, telcos and DC operators seeking control, cost predictability and AI workload readiness. Replace VMware-era licensing complexity with a sovereign, modular, AI-ready private cloud."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Request CoreX Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(Yh,{children:n.jsxs(M,{variant:"heroOutline",size:"lg",children:[n.jsx(Va,{className:"w-4 h-4"}),"Download VMware Exit Guide"]})}),n.jsxs(M,{variant:"heroOutline",size:"lg",children:[n.jsx(an,{className:"w-4 h-4"}),"Talk to InfraX Architect"]})]})]}),n.jsx("div",{className:"relative",children:n.jsx("div",{className:"relative animate-float-subtle",children:n.jsx("img",{src:y6,alt:"CoreX data center virtualisation platform with server racks, cloud orchestration and VM containers",className:"w-full h-auto rounded-2xl",style:{background:"transparent"}})})})]})]})]}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"max-w-4xl mx-auto",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["The VMware Era Is Ending. ",n.jsx("span",{className:"text-brand-ink",children:"Control Must Return to the Operator."})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-10",children:"Broadcom-era VMware pricing, hypervisor lock-in, and bundled licensing are forcing enterprises into reactive decisions. CoreX provides a deliberate, strategic alternative."}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4 mb-8",children:[{text:"Open KVM-based hypervisor (no vendor trap)",icon:Ml},{text:"OpenStack-native orchestration",icon:Ts}
663,{text:"AI workload infrastructure support",icon:Ve},{text:"Sovereign deployment model",icon:Ce},{text:"Transparent pricing per core / per node",icon:cg}].map(c=>n.jsxs("div",{className:"flex items-start gap-3 p-4 rounded-xl border border-border bg-card",children:[n.jsx(c.icon,{className:"w-5 h-5 text-brand-ink mt-0.5 shrink-0"}),n.jsx("span",{className:"text-sm",children:c.text})]},c.text))}),n.jsx("div",{className:"p-6 rounded-2xl border border-primary/20 bg-primary/5",children:n.jsxs("p",{className:"text-lg font-semibold text-foreground",children:["This is not a workaround. ",n.jsx("span",{className:"text-brand-ink",children:"This is a control-layer replacement."})]})})]})})}),n.jsx("section",{className:"py-24",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["What Is ",n.jsx("span",{className:"text-brand-ink",children:"CoreX"}),"?"]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"CoreX is the data center virtualisation layer within InfraX â purpose-built for enterprise private clouds, telco infrastructure modernisation, government sovereign clouds, AI workload infrastructure, and VMware migration programmes."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-5 gap-4 mb-12",children:["Enterprise private clouds","Telco infrastructure","Government sovereign clouds","AI workload infrastructure","VMware migration"].map(c=>n.jsxs("div",{className:"p-4 rounded-xl border border-border bg-card text-center",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink mx-auto mb-2"}),n.jsx("span",{className:"text-sm font-medium",children:c})]},c))}),n.jsxs("div",{className:"p-8 rounded-3xl border border-border bg-card",children:[n.jsx("h3",{className:"text-xl font-bold mb-6 text-center",children:"CoreX Replaces"}),n.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:["VMware vSphere","Nutanix AHV","Microsoft Hyper-V","Proxmox VE"].map(c=>n.jsx("div",{className:"p-4 rounded-xl bg-secondary/50 text-center",children:n.jsx("span",{className:"text-sm text-muted-foreground line-through",children:c})},c))}),n.jsx("p",{className:"text-center text-sm text-muted-foreground mt-6",children:"With a unified AI-ready, KVM-optimised control fabric."})]})]})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsx("div",{className:"text-center max-w-3xl mx-auto mb-16",children:n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["CoreX ",n.jsx("span",{className:"text-brand-ink",children:"Architecture"})]})}),n.jsx("div",{className:"grid lg:grid-cols-3 gap-8",children:e.map(c=>n.jsxs("div",{className:"p-8 rounded-3xl border border-border bg-card hover:border-primary/30 transition-all duration-300",children:[n.jsx("div",{className:"w-14 h-14 rounded-2xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-6 shadow-glow",children:n.jsx(c.icon,{className:"w-7 h-7 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-bold mb-3",children:c.title}),n.jsx("p",{className:"text-sm text-muted-foreground mb-6",children:c.description}),n.jsx("div",{className:"space-y-2",children:c.features.map(d=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm",children:d})]},d))})]},c.title))})]})}),n.jsx("section",{className:"py-24",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-12",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["CoreX vs ",n.jsx("span",{className:"text-brand-ink",children:"Competitors"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Why enterprises are switching."})]}),n.jsx("div",{className:"overflow-x-auto rounded-2xl border border-border",children:n.jsxs(Fu,{className:"min-w-[800px]",children:[n.jsx(Uu,{children:n.jsxs(Mr,{className:"border-border bg-secondary/50",children:[n.jsx(Ct,{className:"text-foreground font-bold",children:"Capability"}),n.jsx(Ct,{children:"VMware"}),n.jsx(Ct,{children:"Nutanix"}),n.jsx(Ct,{children:"Hyper-V"}),n.jsx(Ct,{children:"Proxmox"}),n.jsx(Ct,{className:"text-brand-ink font-bold",children:"CoreX"})]})}),n.jsx(Vu,{children:t.map(c=>n.jsxs(Mr,{className:"border-border",children:[n.jsx(ge,{className:"font-medium",children:c.capability}),n.jsx(ge,{className:"text-muted-foreground",children:c.vmware}),n.jsx(ge,{className:"text-muted-foreground",children:c.nutanix}),n.jsx(ge,{className:"text-muted-foreground",children:c.hyperv}),n.jsx(ge,{className:"text-muted-foreground",children:c.proxmox}),n.jsx(ge,{className:"text-brand-ink font-semibold",children:c.corex})]},c.capability))})]})}),n.jsx("p",{className:"text-center text-sm text-muted-foreground mt-6",children:"CoreX gives you enterprise-grade control without hyperscaler dependency."})]})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-3 gap-8",children:[n.jsxs("div",{className:"p-8 rounded-3xl border border-border bg-card",children:[n.jsx("div",{className:"w-14 h-14 roun
663ded-2xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-6",children:n.jsx(ut,{className:"w-7 h-7 text-brand-ink"})}),n.jsx("h3",{className:"text-2xl font-bold mb-3",children:"Built for DC Operators"}),n.jsx("p",{className:"text-muted-foreground mb-6",children:"CoreX turns infrastructure into a revenue engine."}),n.jsx("div",{className:"space-y-3",children:r.map(c=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm",children:c})]},c))})]}),n.jsxs("div",{className:"p-8 rounded-3xl border border-border bg-card",children:[n.jsx("div",{className:"w-14 h-14 rounded-2xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-6",children:n.jsx(Et,{className:"w-7 h-7 text-brand-ink"})}),n.jsx("h3",{className:"text-2xl font-bold mb-3",children:"Built for Telcos"}),n.jsx("p",{className:"text-muted-foreground mb-6",children:"Edge + Core infrastructure unification with NFV hosting."}),n.jsx("div",{className:"space-y-3",children:s.map(c=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm",children:c})]},c))})]}),n.jsxs("div",{className:"p-8 rounded-3xl border border-border bg-card",children:[n.jsx("div",{className:"w-14 h-14 rounded-2xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-6",children:n.jsx(Ce,{className:"w-7 h-7 text-brand-ink"})}),n.jsx("h3",{className:"text-2xl font-bold mb-3",children:"Built for Sovereign AI"}),n.jsx("p",{className:"text-muted-foreground mb-6",children:"AI must run where your data lives. CoreX enables that."}),n.jsx("div",{className:"space-y-3",children:i.map(c=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm",children:c})]},c))})]})]})})}),n.jsx("section",{className:"py-24",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-16 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-destructive/10 border border-destructive/20 mb-6",children:[n.jsx(on,{className:"w-4 h-4 text-destructive"}),n.jsx("span",{className:"text-sm font-medium text-destructive",children:"VMware Exit Strategy"})]}),n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Planning a ",n.jsx("span",{className:"text-brand-ink",children:"VMware Exit"}),"?"]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:'You do not need a "big bang" migration. You migrate strategically. CoreX includes everything you need for a phased, risk-managed transition.'}),n.jsx("div",{className:"space-y-3 mb-8",children:a.map(c=>n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:c})]},c))}),n.jsx(Yh,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Download VMware Exit Guide",n.jsx(K,{className:"w-4 h-4"})]})})]}),n.jsx("div",{className:"grid grid-cols-2 gap-4",children:[{label:"Migration Cost Savings",value:"60%+",desc:"vs VMware TCO"},{label:"Migration Timeline",value:"Weeks",desc:"Not months"},{label:"VM Compatibility",value:"99%",desc:"Workload portability"},{label:"Zero Downtime",value:"Live",desc:"Migration support"}].map(c=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card text-center",children:[n.jsx("p",{className:"text-3xl font-bold text-brand-ink mb-1",children:c.value}),n.jsx("p",{className:"text-sm font-medium",children:c.label}),n.jsx("p",{className:"text-xs text-muted-foreground",children:c.desc})]},c.label))})]})})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["AI Workload ",n.jsx("span",{className:"text-brand-ink",children:"Infrastru
663cture"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"CoreX is built for NVIDIA GPU clusters, inference workloads, LLM hosting, edge AI clusters, and AI-ready private clouds."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-5 gap-4",children:["GPU passthrough","High-speed storage","NVMe-backed SDS","Network segmentation","Container + VM coexistence"].map(c=>n.jsxs("div",{className:"p-4 rounded-xl border border-primary/20 bg-primary/5 text-center",children:[n.jsx(Ve,{className:"w-5 h-5 text-brand-ink mx-auto mb-2"}),n.jsx("span",{className:"text-sm font-medium",children:c})]},c))})]})}),n.jsx("section",{className:"py-24",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-16 items-center",children:[n.jsxs("div",{children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Security & ",n.jsx("span",{className:"text-brand-ink",children:"Compliance"})]}),n.jsx("div",{className:"space-y-3",children:o.map(c=>n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(Ce,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:c})]},c))})]}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-2xl font-bold mb-6",children:"Deployment Models"}),n.jsx("div",{className:"space-y-3",children:l.map(c=>n.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-xl border border-border bg-card",children:[n.jsx("div",{className:"w-10 h-10 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(c.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsx("span",{className:"font-medium",children:c.name})]},c.name))})]})]})})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsxs("div",{className:"container mx-auto px-6 text-center",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-8",children:"Pricing Philosophy"}),n.jsx("div",{className:"grid sm:grid-cols-3 gap-6 max-w-3xl mx-auto mb-8",children:["No per-VM tax.","No hidden feature unlocks.","No forced bundles."].map(c=>n.jsx("div",{className:"p-6 rounded-2xl border border-border bg-card",children:n.jsx("p",{className:"text-lg font-semibold",children:c})},c))}),n.jsx("p",{className:"text-xl text-brand-ink font-semibold",children:"Transparent per-core or per-node pricing."})]})}),n.jsxs("section",{className:"py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-primary/10 via-background to-background"}),n.jsxs("div",{className:"container mx-auto px-6 text-center relative",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-6",children:["Own Your Virtualisation Layer ",n.jsx("span",{className:"text-brand-ink",children:"Again"}),"."]}),n.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mx-auto mb-10",children:"CoreX is not just a hypervisor. It is your sovereign infrastructure control layer."}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Book a CoreX Strategy Call",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(Yh,{children:n.jsxs(M,{variant:"heroOutline",size:"lg",children:[n.jsx(Va,{className:"w-4 h-4"}),"Download VMware Exit Guide"]})}),n.jsxs(M,{variant:"heroOutline",size:"lg",children:[n.jsx(an,{className:"w-4 h-4"}),"Talk to InfraX Architect"]})]})]})]}),n.jsx(Ti,{links:[{to:"/products/distributed-infrastructure",label:"HookZ InfraX platform",description:"See how enterprise private cloud with CoreX fits the wider distributed hybrid infrastructure platform."},{to:"/products/edgex",label:"Distributed edge infrastructure with EdgeX",description:"Extend CoreX private cloud operations out to branch, retail, factory and remote edge sites."},{to:"/vmware-alternative",label:"Beyond VMware migration path",description:"Migration methodology for moving virtualisation estates onto CoreX private cloud."}]}),n.jsx(ke,{})]})},S6="/assets/hero-edgex-CGj3sBl2.png",C6=()=>{const e=[{title:"Hardware Layer",icon:_d,features:["x86 edge appliance / uCPE / rugged server","Optional GPU acceleration","Multiple Ethernet ports"]},{title:"Virtualisation Layer",icon:Ts,features:["Hardened KVM hy
663pervisor","VM and container support","Resource isolation","SR-IOV and GPU passthrough"]},{title:"Multi-VNF Layer",icon:Ie,features:["SD-WAN","Firewall","SBC","Local apps","AI workloads"]},{title:"Cognitive Layer",icon:qi,features:["CortexAI decision engine","Policy automation","Event correlation","Local anomaly detection"]},{title:"Control Layer",icon:ya,features:["Fleet management via ControlX","Marketplace deployment","Zero-touch provisioning"]}],t=["SD-WAN (multi-link bonding, VLAN, QoS, traffic shaping)","Next-Generation Firewall","SIP Session Border Controller (SBC)","Local application servers","Backup & caching services","OT monitoring tools","AI inference engines"],r=["Real-time anomaly detection","Network behaviour analysis","Device health scoring","Predictive alerts","Automated policy decisions","Local response during WAN outages"],s=[{capability:"Separate Hardware per Function",appliance:"Yes",edgex:"No"},{capability:"Multi-VNF Support",appliance:"Limited",edgex:"Native"},{capability:"AI at Edge",appliance:"Rare",edgex:"Embedded"},{capability:"Central Marketplace",appliance:"No",edgex:"Yes"},{capability:"Sovereign Deployment",appliance:"Limited",edgex:"Full"},{capability:"Offline Operation",appliance:"Partial",edgex:"Autonomous"}],i=["Secure SD-WAN","Integrated firewall","POS server hosting","Inventory sync","CCTV AI analytics","Local caching","Loss prevention AI"],a=["SD-WAN","Firewall","SIP SBC","Local directory services","File caching","Backup","AI-based network monitoring"],o=["Role-based access control","Network segmentation","Multi-tenant isolation","Encrypted communication","Full observability","Audit logging"],l=[{name:"Enterprise branches",icon:ut},{name:"Retail chains",icon:ba},{name:"Telco POPs",icon:Et},{name:"Industrial substations",icon:Ua},{name:"Smart city nodes",icon:Xv},{name:"Remote sites",icon:Ie},{name:"Air-gapped facilities",icon:Ce}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"EdgeX | Distributed Edge Infrastructure | HookZ.ai",description:"HookZ EdgeX consolidates edge compute, storage and AI inference with SD-WAN, firewall, SBC and local apps on one licensed node, monitored by Cortex.",path:"/products/edgex",jsonLd:Us("edgex")}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-20 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-primary/5 via-transparent to-transparent"}),n.jsx("div",{className:"absolute top-20 right-1/4 w-[600px] h-[600px] bg-primary/[0.03] rounded-full blur-3xl"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:"/products/distributed-infrastructure",className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-6 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),"Back to Distributed Infrastructure"]}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-primary/10 border border-primary/20 mb-6",children:[n.jsx(Ie,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:"Part of HookZ InfraX Platform"})]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold mb-6",children:["EdgeX",n.jsx("span",{className:"text-brand-ink",children:"â¢"})]}),n.jsx("p",{className:"text-2xl sm:text-3xl font-semibold text-foreground/90 mb-4",children:"AI-Native Edge Cloud Platform"}),n.jsx("p",{className:"text-xl text-brand-ink font-medium mb-6",children:"SD-WAN. Security. SBC. AI. Local Applications â Unified at the Edge."}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-3xl mb-4",children:"EdgeX is a distributed edge cloud platform designed to run networking, security, communications and AI workloads on a single, software-defined infrastructure."}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-3xl mb-4",children:"Eliminate appliance sprawl. Deploy once. Operate everythingâfrom VNFs to AI inferenceâon a unified edge fabric."}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-3xl mb-10",children:"Built for enterprises, telcos and sovereign infrastru
663cture, EdgeX brings cloud capabilities to every site with low latency, full control and local intelligence."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Request EdgeX Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsxs(M,{variant:"heroOutline",size:"lg",children:[n.jsx(an,{className:"w-4 h-4"}),"Talk to an Edge Architect"]}),n.jsxs(M,{variant:"heroOutline",size:"lg",children:[n.jsx(Va,{className:"w-4 h-4"}),"Download Architecture Brief"]})]})]}),n.jsxs("div",{className:"flex flex-col items-center",children:[n.jsxs("div",{className:"flex flex-col items-center mb-3",children:[n.jsxs("div",{className:"flex items-center gap-2 px-4 py-1.5 rounded-full border border-primary/40 bg-primary/10 text-brand-ink text-sm font-semibold",children:[n.jsx(Xv,{className:"w-4 h-4"}),"Internet / 5G"]}),n.jsx("div",{className:"w-px h-6 bg-gradient-to-b from-primary/60 to-primary/20"}),n.jsx("svg",{width:"12",height:"8",viewBox:"0 0 12 8",className:"text-brand-ink/60",children:n.jsx("polygon",{points:"6,8 0,0 12,0",fill:"currentColor"})})]}),n.jsx("div",{className:"relative animate-float-subtle",children:n.jsx("img",{src:S6,alt:"EdgeX software orchestrator displaying K8s containers and VMs sitting on top of an x86 server hardware box",className:"w-full h-auto max-w-[400px] mx-auto",style:{background:"transparent"}})}),n.jsxs("div",{className:"w-full max-w-[400px] mt-4 space-y-2",children:[n.jsxs("div",{className:"flex items-center justify-center gap-2 px-4 py-2 rounded-lg bg-purple-500/15 border border-purple-400/30",children:[n.jsx(Wv,{className:"w-3.5 h-3.5 text-purple-400"}),n.jsx("span",{className:"text-xs font-semibold text-purple-300 tracking-wide uppercase",children:"CortexAI Monitoring"})]}),n.jsxs("div",{className:"rounded-xl bg-primary/[0.07] border border-primary/20 p-3",children:[n.jsx("p",{className:"text-[10px] text-muted-foreground uppercase tracking-widest text-center mb-2 font-medium",children:"Applications"}),n.jsx("div",{className:"grid grid-cols-4 gap-1.5",children:[{icon:Ie,label:"SD-WAN"},{icon:Ce,label:"Firewall"},{icon:Et,label:"SBC"},{icon:zv,label:"Local Apps"}].map(({icon:c,label:d})=>n.jsxs("div",{className:"flex flex-col items-center gap-1 py-2 px-1 rounded-lg bg-background/40 border border-primary/10 hover:border-primary/30 transition-colors",children:[n.jsx(c,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-[10px] font-medium text-foreground/80 text-center leading-tight",children:d})]},d))})]}),n.jsxs("div",{className:"flex items-center justify-center gap-3 px-4 py-2.5 rounded-lg bg-brand/[0.06] border border-primary/25",children:[n.jsx(_d,{className:"w-4 h-4 text-brand-ink/80"}),n.jsx("span",{className:"text-xs font-semibold text-brand-ink/90 tracking-wide",children:"Edge Compute & Storage"}),n.jsx("span",{className:"text-[10px] text-muted-foreground",children:"+"}),n.jsx(qi,{className:"w-4 h-4 text-brand-ink/80"}),n.jsx("span",{className:"text-xs font-semibold text-brand-ink/90 tracking-wide",children:"AI Inference"})]})]})]})]})]})]}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"max-w-4xl mx-auto",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Why ",n.jsx("span",{className:"text-brand-ink",children:"EdgeX"}),"?"]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-10",children:"Today's branch and edge environments are overloaded with hardware. EdgeX replaces multiple appliances with a unified, multi-VNF virtualisation layer running on a single edge device â centrally managed through ControlX."}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4 mb-8",children:["SD-WAN appliance","Firewall appliance","SBC appliance","Router","Local server","AI analytics box"].map(c=>n.jsx("div",{className:"flex items-center gap-3 p-4 rounded-xl bg-destructive/5 border border-destructive/20",children:n.jsx("span",{className:"text-destructive line-through text-sm",children:c})},c))}),n.jsx("div",{className:"p-6 rounded-2xl border border-primary/20 bg-primary/5",children:n.jsxs("p",{className:"text-lg font-semibold text-foreground",children:["This model is expensive, complex and operationally fragile."," ",n.jsx("span",{className:"text-brand-ink",children:"EdgeX consolidates all of it into one programmable node."})]})})]})})}),n.jsx("section",{className:"py-24",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["What Is ",n.jsx("span",{className:"text-brand-ink",children:"EdgeX"}),"?"]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"EdgeX is a KVM-based edge virtualisation platform built on Ubuntu LTS, designed for enterprise branches, retail chains, telco uCPE replacement, industrial sites and AI-enabled edge deployments."})]}
663),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-5 gap-4 mb-12",children:["Virtual Machines","Containerised apps","Multi-VNF networking","GPU AI inference","Offline autonomous operation"].map(c=>n.jsxs("div",{className:"p-4 rounded-xl border border-border bg-card text-center",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink mx-auto mb-2"}),n.jsx("span",{className:"text-sm font-medium",children:c})]},c))}),n.jsx("div",{className:"p-6 rounded-2xl border border-primary/20 bg-primary/5 text-center",children:n.jsxs("p",{className:"text-lg font-semibold",children:["EdgeX turns edge hardware into a ",n.jsx("span",{className:"text-brand-ink",children:"programmable infrastructure node"}),"."]})})]})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-16 items-start",children:[n.jsxs("div",{children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Multi-VNF ",n.jsx("span",{className:"text-brand-ink",children:"Consolidation"})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"Run multiple virtual network and application functions simultaneously on one node. No hardware stacking. No vendor lock-in."}),n.jsx("div",{className:"space-y-3",children:t.map(c=>n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink shrink-0"}),n.jsx("span",{children:c})]},c))})]}),n.jsxs("div",{className:"p-8 rounded-3xl border border-primary/20 bg-card",children:[n.jsx("div",{className:"w-14 h-14 rounded-2xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-6 shadow-glow",children:n.jsx(qi,{className:"w-7 h-7 text-brand-ink"})}),n.jsx("h3",{className:"text-2xl font-bold mb-3",children:"CortexAI â Edge Intelligence"}),n.jsx("p",{className:"text-muted-foreground mb-6",children:"Edge infrastructure should not depend on the cloud to think. EdgeX enables local intelligence."}),n.jsx("div",{className:"space-y-3",children:r.map(c=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm",children:c})]},c))})]})]})})}),n.jsx("section",{className:"py-24",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Application ",n.jsx("span",{className:"text-brand-ink",children:"Marketplace"})," via ControlX"]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Deploy to EdgeX nodes with one click. This transforms EdgeX from infrastructure into an edge application platform."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{name:"Firewall VNFs",icon:Ce},{name:"SD-WAN stacks",icon:Ie},{name:"SBC packages",icon:Et},{name:"Retail applications",icon:ba},{name:"Office services",icon:ut},{name:"AI models",icon:qi},{name:"Monitoring tools",icon:Wv},{name:"Custom VNFs",icon:zv}].map(c=>n.jsxs("div",{className:"p-5 rounded-xl border border-border bg-card hover:border-primary/30 transition-all text-center",children:[n.jsx(c.icon,{className:"w-8 h-8 text-brand-ink mx-auto mb-3"}),n.jsx("span",{className:"text-sm font-medium",children:c.name})]},c.name))})]})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["EdgeX ",n.jsx("span",{className:"text-brand-ink",children:"Architecture"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Designed for distributed intelligence."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 gap-6",children:e.map((c,d)=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-primary/30 transition-all duration-300 relative",children:[n.jsx("div",{className:"absolute -top-3 -left-3 w-8 h-8 rounded-full bg-primary flex items-center justify-center text-primary-foreground text-sm font-bold",children:d+1}),n.jsx("div",{className:"w-12 h-12 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-4 shadow-glow",children:n.jsx(c.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-lg font-bold mb-3",children:c.title}),n.jsx("div",{className:"space-y-2",children:c.features.map(u=>n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx(ie,{className:"w-3.5 h-3.5 text-brand-ink shrink-0 mt-0.5"}),n.jsx("span",{className:"text-xs text-muted-foreground",children:u})]},u))})]},c.title))})]})}),n.jsx("section",{className:"py-24",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsx("div",{className:"text-center max-w-3xl mx-auto mb-16",children:n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Edge ",n.jsx("span",{className:"text-brand-ink",children:"In a Box"})]})}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-8",children:[n.jsxs("div",{className:"p-8 rounded-3xl border border-border bg-card hover:border-primary/30 transition-all",children:[n.jsxs("div",{className:"flex items-center gap-3 mb-6",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(ba,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-xl font-bold",children:"Retail in a Box"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Deploy new stores in hours, not weeks."})]})]}),n.jsx("div",{className:"grid grid-cols-2 gap-2",children:i.map(c=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm",children:c})]},c))})]}),n.jsxs("div",{className:"p-8 rounded-3xl border border-border bg-card hover:border-primary/30 transition-all",children:[n.jsxs("div",{className:"flex items-center gap-3 mb-6",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(ut,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-xl font-bold",children:"Office in a Box"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"One device. Fully operational branch."})]})]}),n.jsx("div",{className:"grid grid-cols-2 gap-2",children:a.map(c=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm",children:c})]},c))})]})]})]})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-8",children:[n.jsxs("div",{className:"p-8 rounded-3xl border border-border bg-card",children:[n.jsx("div",{className:"w-14 h-14 roun
663ded-2xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-6",children:n.jsx(Et,{className:"w-7 h-7 text-brand-ink"})}),n.jsx("h3",{className:"text-2xl font-bold mb-3",children:"Telco Edge & uCPE Replacement"}),n.jsx("p",{className:"text-muted-foreground mb-6",children:"EdgeX enables telcos to replace proprietary uCPE appliances with programmable virtualised infrastructure."}),n.jsx("div",{className:"space-y-3",children:["Multi-tenant edge hosting","VNF chaining","Service isolation","Fleet visibility","Edge AI zones","5G edge services"].map(c=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm",children:c})]},c))})]}),n.jsxs("div",{className:"p-8 rounded-3xl border border-border bg-card",children:[n.jsx("div",{className:"w-14 h-14 rounded-2xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-6",children:n.jsx(Ua,{className:"w-7 h-7 text-brand-ink"})}),n.jsx("h3",{className:"text-2xl font-bold mb-3",children:"Industrial & OT Edge"}),n.jsx("p",{className:"text-muted-foreground mb-6",children:"Built for sovereign and secure deployments in regulated and critical environments."}),n.jsx("div",{className:"space-y-3",children:["IDS hosting","Log collection","Asset inventory","Backup services","IAM node","AI-based anomaly detection","Air-gapped deployment mode"].map(c=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm",children:c})]},c))})]})]})})}),n.jsx("section",{className:"py-24",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-16 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-primary/10 border border-primary/20 mb-6",children:[n.jsx(qi,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:"AI-Ready Edge"})]}),n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["AI Workloads ",n.jsx("span",{className:"text-brand-ink",children:"at the Edge"})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"Data remains local. Compliance preserved. Latency minimised."}),n.jsx("div",{className:"space-y-3",children:["GPU passthrough","AI inference models","Smart video analytics","Predictive maintenance","Edge-hosted LLM workloads","Low-latency processing"].map(c=>n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:c})]},c))})]}),n.jsx("div",{className:"grid grid-cols-2 gap-6",children:[{value:"6+",label:"VNFs on one node"},{value:"<5ms",label:"Edge latency"},{value:"100%",label:"Offline capable"},{value:"1-Click",label:"Marketplace deploy"}].map(c=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card text-center",children:[n.jsx("p",{className:"text-3xl font-bold text-brand-ink mb-2",children:c.value}),n.jsx("p",{className:"text-sm text-muted-foreground",children:c.label})]},c.label))})]})})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-12",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["EdgeX vs ",n.jsx("span",{className:"text-brand-ink",children:"Traditional Appliance Model"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"EdgeX consolidates cost, complexity and operational risk."})]}),n.jsx("div",{className:"overflow-x-auto rounded-2xl border border-border",children:n.jsxs(Fu,{className:"min-w-[600px]",children:[n.jsx(Uu,{children:n.jsxs(Mr,{className:"border-border bg-secondary/50",children:[n.jsx(Ct,{className:"text-foreground font-bold",children:"Capability"}),n.jsx(Ct,{children:"Appliance Model"}),n.jsx(Ct,{className:"text-brand-ink font-bold",children:"EdgeX"})]})}),n.jsx(Vu,{children:s.map(c=>n.jsxs(Mr,{className:"border-border",children:[n.jsx(ge,{className:"font-medium",children:c.capability}
663),n.jsx(ge,{className:"text-muted-foreground",children:c.appliance}),n.jsx(ge,{className:"text-brand-ink font-semibold",children:c.edgex})]},c.capability))})]})})]})}),n.jsx("section",{className:"py-24",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsx("div",{className:"text-center max-w-3xl mx-auto mb-12",children:n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Deployment ",n.jsx("span",{className:"text-brand-ink",children:"Models"})]})}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-4",children:l.map(c=>n.jsxs("div",{className:"p-5 rounded-xl border border-border bg-card text-center hover:border-primary/30 transition-all",children:[n.jsx(c.icon,{className:"w-8 h-8 text-brand-ink mx-auto mb-3"}),n.jsx("span",{className:"text-sm font-medium",children:c.name})]},c.name))})]})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-12",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Security & ",n.jsx("span",{className:"text-brand-ink",children:"Compliance"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Designed for enterprise and regulated industries."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4",children:o.map(c=>n.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-xl border border-border bg-card",children:[n.jsx(Ce,{className:"w-5 h-5 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm",children:c})]},c))})]})}),n.jsx("section",{className:"py-24",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"text-center max-w-3xl mx-auto",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Pricing ",n.jsx("span",{className:"text-brand-ink",children:"Philosophy"})]}),n.jsx("p",{className:"text-xl text-muted-foreground mb-8",children:"One edge node. Multiple services."}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-4 mb-8",children:["No per-VNF tax","No forced appliance bundles","Predictable per-node pricing","Scalable licensing model"].map(c=>n.jsxs("div",{className:"p-4 rounded-xl border border-primary/20 bg-primary/5",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink mx-auto mb-2"}),n.jsx("span",{className:"text-sm font-medium",children:c})]},c))}),n.jsx("p",{className:"text-muted-foreground",children:"Edge infrastructure should scale without licensing shock."})]})})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"text-center max-w-3xl mx-auto",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Transform Your Edge into ",n.jsx("span",{className:"text-brand-ink",children:"Intelligent Infrastructure"})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-4",children:"EdgeX is not another appliance. It is a programmable edge platform combining networking, security, communications and AI in one sovereign architecture."}),n.jsx("p",{className:"text-xl font-semibold text-foreground mb-10",children:"Deploy faster. Operate smarter. Control everything."}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Request EdgeX Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsxs(M,{variant:"heroOutline",size:"lg",children:[n.jsx(an,{className:"w-4 h-4"}),"Talk to an Edge Architect"]}),n.jsxs(M,{variant:"heroOutline",size:"lg",children:[n.jsx(Va,{className:"w-4 h-4"}),"Download Architecture Brief"]})]})]})})}),n.jsx(Ti,{links:[{to:"/products/distributed-infrastructure",label:"HookZ InfraX platform",description:"ControlX orchestration and Cortex observability manage every EdgeX node from one control plane."},{to:"/products/corex",label:"Enterprise private cloud with CoreX",description:"Pair distributed edge infrastructure with a CoreX data centre and private cloud core."},{to:"/edge-cloud",label:"Enterprise edge cloud solutions",description:"Retail, manufacturing, utilities and branch edge deployments built on E
663dgeX."}]}),n.jsx(ke,{})]})},E6="/assets/hero-entcomms-DUH8131z.png",A6=()=>{const e=[{id:"hookz-cx",name:"HookZ CX",tagline:"CCaaS",subtitle:"Cloud and On-Prem Contact Center",description:"AI-powered omnichannel contact center that transforms customer experience with intelligent routing, real-time analytics, and agent copilot capabilities.",icon:Jt,features:[{icon:an,title:"Omnichannel Conversations",description:"Voice, chat, email, SMS, WhatsApp, and social media in one unified platform"},{icon:va,title:"AI-Agent Copilot",description:"Real-time AI assistance for agents with suggested responses and sentiment analysis"},{icon:on,title:"Customer Insights",description:"Deep analytics and reporting with predictive customer behavior modeling"},{icon:Br,title:"Quality Management",description:"Automated call scoring, coaching tools, and performance dashboards"}],benefits:["40% faster resolution times","25% improvement in CSAT scores","Single pane of glass for all channels"]},{id:"hookz-connect",name:"HookZ Connect",tagline:"CPaaS",subtitle:"Communications Platform",description:"Developer-friendly APIs and low-code tools to embed communications capabilities into any application with AI-powered messaging and automation.",icon:Tt,features:[{icon:kt,title:"APIs & Low-Code",description:"RESTful APIs and visual builders for rapid integration"},{icon:va,title:"AI Messaging & Chatbots",description:"Conversational AI with natural language processing"},{icon:Jt,title:"SMS, Voice, WhatsApp",description:"Global reach with carrier-grade reliability"},{icon:Ce,title:"Enterprise Security",description:"End-to-end encryption and compliance certifications"}],benefits:["99.99% uptime SLA","Global carrier network","Pay-as-you-go pricing"]},{id:"hookz-voice-edge",name:"HookZ Voice Edge",tagline:"SBCaaS",subtitle:"Ai Voice Fabric for SIP, SBC and DID Numbers",description:"Enterprise voice infrastructure for Microsoft Teams, UC platforms, Cloud Telephony, Contact centres and Carrier interconnects.",icon:Et,features:[{icon:Ce,title:"Intelligent SBC",description:"AI-enhanced session border control with threat detection"},{icon:Tt,title:"SIP / Number Management",description:"Global DID inventory with porting and provisioning"},{icon:kt,title:"Carrier Integrations",description:"Pre-built integrations with tier-1 carriers worldwide"},{icon:on,title:"Voice Analytics",description:"Real-time call quality monitoring and optimization"}],benefits:["Fraud protection built-in","HD voice quality","Seamless UC integration"]},{id:"hookz-meet",name:"HookZ Meet",tagline:"Video",subtitle:"Video Conferencing",description:"Enterprise-grade video conferencing that works on any device, anytime. Crystal-clear meetings with AI-powered features for enhanced collaboration and productivity.",icon:Pi,features:[{icon:lk,title:"HD Video & Audio",description:"Crystal-clear video with noise cancellation and virtual backgrounds"},{icon:aT,title:"Any Device, Anytime",description:"Seamless experience across desktop, mobile, and room systems"},{icon:va,title:"AI Meeting Assistant",description:"Real-time transcription, meeting summaries, and action items"},{icon:xu,title:"Calendar Integration",description:"Native integration with Outlook, Google Calendar, and Teams"}],benefits:["Join from any device in seconds","AI-powered meeting notes","Enterprise-grade security"]}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"Enterprise Communications | HookZ.ai",description:"Customer engagement, programmable communications, secure voice infrastructure and enterprise collaboration delivered through one AI Control Fabric.",path:"/enterprise-communications",jsonLd:[no(),{"@context":"https://schema.org","@type":"Service",name:"HookZ Enterprise Communications",description:"Customer engagement, programmable communications, secure voice infrastructure and enterprise collaboration delivered through one AI Control Fabric.",provider:{"@type":"Organization",name:"HookZ.ai",url:"https://hookz.ai/"},serviceType:"Enterprise communications platform (CCaaS, CPaaS, SBC as a service)",url:"https://hookz.ai/enterprise-communications"},Lu([{name:"Home",path:"/"},{name:"Enterprise Communications",path:"/enterprise-communications"}])]}),n.jsx(je,{}),n.jsxs("section",{className:"pt-24 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-brand/5 via-trans
663parent to-transparent"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:"/products",className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-4 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),"Back to Products"]}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-brand/10 border border-brand/20 mb-6",children:[n.jsx(Jt,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:"Enterprise Communications Portfolio"})]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-6",children:["Enterprise ",n.jsx("span",{className:"text-brand-ink",children:"Communications"}),n.jsx("br",{}),"on One AI-Native Platform"]}),n.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mb-8",children:"Customer engagement, programmable communications, secure voice infrastructure and enterprise collaboration delivered through one AI Control Fabric."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Request Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",children:"View Pricing"})]})]}),n.jsx("div",{className:"relative",children:n.jsx("div",{className:"relative animate-float-subtle",children:n.jsx("img",{src:E6,alt:"Enterprise communications platform showing laptop dashboard, smartphone, headset and chat interface",className:"w-full h-auto rounded-2xl",style:{background:"transparent"}})})})]})]})]}),e.map((t,r)=>n.jsx("section",{id:t.id,className:`py-24 ${r%2===1?"bg-secondary/30":""}`,children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-16 items-start",children:[n.jsxs("div",{className:r%2===1?"lg:order-2":"",children:[n.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[n.jsx("div",{className:"w-16 h-16 rounded-2xl bg-brand/10 border border-brand/20 flex items-center justify-center shadow-[0_0_30px_#c3ff0030]",children:n.jsx(t.icon,{className:"w-8 h-8 text-brand-ink"})}),n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("h2",{className:"text-3xl font-bold",children:t.name}),n.jsx("span",{className:"text-sm px-3 py-1 rounded-full bg-secondary text-muted-foreground",children:t.tagline})]}),n.jsx("p",{className:"text-muted-foreground",children:t.subtitle})]})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:t.description}),n.jsx("div",{className:"space-y-3 mb-8",children:t.benefits.map((s,i)=>n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:s})]},i))}),n.jsx(he,{children:n.jsxs(M,{variant:"hero",children:["Learn More About ",t.name,n.jsx(K,{className:"w-4 h-4"})]})})]}),n.jsx("div",{className:`grid sm:grid-cols-2 gap-4 ${r%2===1?"lg:order-1":""}`,children:t.features.map((s,i)=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all duration-300",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(s.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-bold mb-2",children:s.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:s.description})]},i))})]})})},t.id)),n.jsx(mn,{title:"Enterprise Communications FAQ",subtitle:"Common questions about HookZ communications products",faqs:[{question:"What is HookZ CX and how does it differ from traditional contact centers?",answer:"HookZ CX is an AI-native Cloud Contact Center (CCaaS) that unifies voice, chat, email, SMS, WhatsApp, and social media into a single platform. Unlike traditional contact centers, AI is built into the core â powering intelligent routing, real-time agent copilot, and predictive analytics from day one."},{question:"Can I integrate HookZ Connect APIs into my existing applications?",answer:"Yes. HookZ Connect provides RESTful APIs and low-code visual builders that let you embed voice, messaging, video, and AI-powered chatbots into any application. It supports all major programming languages and frameworks with comprehensive SDKs."}
663,{question:"What is SBCaaS and why do I need HookZ Voice Edge?",answer:"SBCaaS (Session Border Controller as a Service) secures and manages SIP-based voice traffic at the network edge. HookZ Voice Edge provides intelligent SBC capabilities, global DID number management, carrier integrations, and AI-enhanced fraud protection â essential for enterprise telephony."},{question:"Does HookZ Meet work with existing video conferencing tools?",answer:"HookZ Meet is designed as a standalone enterprise video conferencing solution with native calendar integrations (Outlook, Google, Teams). It supports join-from-anywhere on any device, AI meeting transcription, and enterprise-grade security."},{question:"How does the unified AI Control Fabric benefit my communications stack?",answer:"The AI Control Fabric connects all HookZ communications products â CX, Connect, Voice Edge, and Meet â enabling cross-platform automation, unified analytics, and intelligent operations that learn and adapt to your business patterns."},{question:"What kind of support and SLAs does HookZ offer?",answer:"HookZ provides 99.99% uptime SLAs, 24/7 enterprise support, dedicated customer success managers, and comprehensive onboarding. We also offer professional services for custom integrations and migrations."}]}),n.jsx(Ti,{links:[{to:"/solutions",label:"Industry solutions for contact centre and voice",description:"Validated communications deployments by sector and use case."},{to:"/edge-cloud",label:"Edge cloud for local voice and AI processing",description:"Keep media, AI inference and survivability close to each site."},{to:"/vmware-alternative",label:"Private cloud to host communications workloads",description:"Run CX and Voice Edge on HookZ CoreX instead of legacy virtualisation."},{to:"/hub",label:"HookZ Hub customer portal",description:"Explore HookZ services and access your customer workspace."}]}),n.jsx("section",{className:"py-24 bg-gradient-to-br from-brand/10 via-background to-background",children:n.jsxs("div",{className:"container mx-auto px-6 text-center",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:"Ready to Transform Your Communications?"}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8",children:"Join enterprises worldwide who have unified their communications stack with HookZ."}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Schedule a Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(he,{children:n.jsx(M,{variant:"heroOutline",size:"lg",children:"Contact Sales"})})]})]})}),n.jsx(ke,{})]})},P6="/assets/hero-hookz-cx-DKLQlUYt.jpg",T6="/assets/hookz-cx-agent-CoU63126.jpg",_6="/assets/hookz-cx-agentic-ai-D2IdtoB1.jpg",I6=()=>{const e=[{icon:st,title:"HookZ CX Cloud",tag:"Public / Private Cloud",description:"Fully managed, multi-tenant CCaaS. Elastic scale, global PoPs, zero infrastructure to operate. Onboard agents in days, not quarters.",points:["Geo-redundant active-active","Auto-scaling seat licenses","Continuous AI model updates","Pay-as-you-grow billing"]},{icon:Te,title:"HookZ CX On-Premise",tag:"Sovereign / Air-gapped",description:"Same platform, deployed inside your data center on HookZ InfraX. Built for regulated industries, sovereign data, and zero-trust environments.",points:["Full data residency control","Air-gapped LLM inference","BYO PSTN / SIP carrier","Runs on CoreX or EdgeX"]}],t=[{icon:an,title:"Omnichannel Routing",description:"Unified voice, video, email, chat, SMS, WhatsApp, Messenger, Instagram, and social â all in one agent desktop with single conversation history."},{icon:gk,title:"Intelligent ACD & IVR",description:"Skill-based, attribute-based, and predictive routing. Visual IVR / IVA designer with low-code flow builder and real-time A/B routing."},{icon:va,title:"Agent Copilot",description:"Real-time transcription, next-best-action prompts, knowledge-base lookups, sentiment cues, and post-call auto-summaries â built into the agent screen."},{icon:YP,title:"Conversational IVR & Voicebots",description:"Natural-language self
663-service across 40+ languages, replacing rigid DTMF trees with goal-oriented agentic conversations."},{icon:cg,title:"Real-Time Analytics & WFO",description:"Live wallboards, historical reporting, speech & text analytics, AI-driven quality monitoring, forecasting, and workforce scheduling."},{icon:Br,title:"Quality Management",description:"100% interaction recording, AI auto-scoring across every call, coaching workflows, screen capture, and PCI redaction."},{icon:Ce,title:"Compliance & Security",description:"PCI-DSS, HIPAA, GDPR, SOC 2. End-to-end encryption, role-based access, tenant isolation, and granular audit trails."},{icon:kt,title:"Open Integrations",description:"Pre-built connectors for Salesforce, ServiceNow, Microsoft Dynamics, Zendesk, SAP, and any CRM/CDP/ITSM via REST + webhooks."}],r=[{title:"Agentic AI â Not Just Chatbots",description:"HookZ CX ships with goal-driven AI agents that can hold multi-turn conversations, call back-office APIs, complete transactions, and hand off to humans with full context. Both voice and chat, in the same brain."},{title:"One Platform, Cloud or On-Prem",description:"Identical experience, identical APIs, identical AI â whether hosted in HookZ Cloud or air-gapped inside your data center. No feature gap, no migration tax."},{title:"Native to HookZ AI Control Fabric",description:"Unified with HookZ Connect (CPaaS), Voice Edge (SBCaaS), and InfraX. One control plane, one observability layer, one data lake â no integration projects."},{title:"Transparent, Per-Outcome Pricing",description:"Predictable per-agent licensing with no per-minute AI premiums or hidden bot-message surcharges. Built to scale economically against Genesys, NICE, and Avaya."}],s=["Goal-oriented voice & chat bots that resolve, not deflect","Real-time agent assist with grounded LLM responses","Auto-summarization, disposition coding & CRM update","Sentiment, intent, and compliance detection on every interaction","Knowledge-grounded answers using your private documents (RAG)","Bring your own LLM â OpenAI, Anthropic, Llama, or sovereign models"],i=[{icon:og,name:"Banking & FinTech",use:"PCI-compliant voice, fraud-aware IVR, agentic dispute resolution."},{icon:ug,name:"Healthcare",use:"HIPAA-grade patient engagement, appointment bots, triage assist."},{icon:bu,name:"Retail & E-commerce",use:"Order-status bots, WhatsApp commerce, post-purchase support."},{icon:ut,name:"Government & Public Sector",use:"Sovereign on-prem deployment, multilingual citizen services."},{icon:mg,name:"Travel & Hospitality",use:"24/7 booking assistance, disruption management, loyalty support."},{icon:sk,name:"Education",use:"Student services, admissions bots, alumni outreach."},{icon:Ve,name:"Technology & SaaS",use:"Tier-1/2 deflection, developer support, proactive churn outreach."},{icon:Tt,name:"Telecom & Utilities",use:"Outage notifications, billing self-service, field-tech routing."}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"HookZ CX | Enterprise Contact Centre (CCaaS) | HookZ.ai",description:"HookZ CX is an enterprise customer experience and contact centre platform with omnichannel routing, AI agents and agent assist, in cloud or on-premises.",path:"/products/hookz-cx",jsonLd:Us("cx")}),n.jsx(je,{}),n.jsxs("section",{className:"pt-24 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-brand/5 via-transparent to-transparent"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:"/enterprise-communications",className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-4 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),"Back to Enterprise Communications"]}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-brand/10 border border-brand/20 mb-6",children:[n.jsx(Jt,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:"HookZ CX â CCaaS"})]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-6 leading-tight",children:["The ",n.jsx("span",{className:"text-brand-ink",children:"Agentic AI"})," Contact Center.",n.jsx("br",{}),"Cloud or On-Prem."]}),n.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mb-8",children:"Replace Genesys, NICE, and Avaya stacks with one AI-native platform. Omnichannel routing, agentic voice & chat bots, agent copilot, and enterprise-grade analytics â deployed your way."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Request Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",asChild:!0,children:n.jsx(V,{to:"/pricing",children:"View Pricing"})})]})]}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-radial from-brand/15 via-trans
663parent to-transparent blur-3xl"}),n.jsx("img",{src:P6,alt:"Enterprise contact center agents collaborating on AI-powered HookZ CX dashboards",width:1536,height:1024,className:"relative w-full h-auto rounded-2xl border border-border shadow-2xl"})]})]})]})]}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â Deployment â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Cloud or On-Premise. Same Platform."}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"Most CCaaS vendors force you cloud-only. HookZ CX ships as a true dual-mode platform â pick the deployment that matches your data, compliance, and sovereignty posture."})]}),n.jsx("div",{className:"grid lg:grid-cols-2 gap-8",children:e.map(a=>n.jsxs("div",{className:"p-8 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsxs("div",{className:"flex items-center gap-4 mb-4",children:[n.jsx("div",{className:"w-14 h-14 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center",children:n.jsx(a.icon,{className:"w-7 h-7 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-2xl font-bold",children:a.title}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:a.tag})]})]}),n.jsx("p",{className:"text-muted-foreground mb-5",children:a.description}),n.jsx("ul",{className:"space-y-2",children:a.points.map(o=>n.jsxs("li",{className:"flex items-start gap-2 text-sm",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink mt-0.5 shrink-0"}),n.jsx("span",{children:o})]},o))})]},a.title))})]})}),n.jsx("section",{className:"py-20 border-t border-border bg-secondary/20",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â Capabilities â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Everything a Modern Contact Center Needs"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"Feature parity with Genesys Cloud and Avaya Experience Platform â re-engineered around an AI-first architecture."})]}),n.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-4 gap-
6635",children:t.map(a=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(a.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-bold mb-2",children:a.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:a.description})]},a.title))})]})}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{className:"relative order-2 lg:order-1",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-radial from-brand/15 via-transparent to-transparent blur-3xl"}),n.jsx("img",{src:_6,alt:"Agentic AI voice waveform and chat bubble representing HookZ CX bots",width:1024,height:1024,loading:"lazy",className:"relative w-full h-auto rounded-2xl border border-border"})]}),n.jsxs("div",{className:"order-1 lg:order-2",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-brand/10 border border-brand/20 mb-4",children:[n.jsx(va,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-xs font-medium uppercase tracking-wider",children:"Agentic AI"})]}),n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:["Voice & Chat Agents That ",n.jsx("span",{className:"text-brand-ink",children:"Actually Resolve"})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-6",children:"HookZ Agentic AI goes beyond IVR menus and FAQ bots. Our agents understand intent, hold multi-turn conversations, call your APIs, complete transactions, and hand off to a human with full context when needed â in voice or chat, in 40+ languages."}),n.jsx("div",{className:"space-y-3",children:s.map(a=>n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink mt-0.5 shrink-0"}),n.jsx("span",{children:a})]},a))})]})]})})}),n.jsx("section",{className:"py-20 border-t border-border bg-secondary/20",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â Why HookZ CX â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Key Differentiators"})]}),n.jsx("div",{className:"grid md:grid-cols-2 gap-6",children:r.map((a,o)=>n.jsxs("div",{className:"p-8 rounded-2xl border border-brand/20 bg-card",children:[n.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-brand text-background flex items-center justify-center font-bold text-sm",children:o+1}),n.jsx("h3",{className:"text-xl font-bold",children:a.title})]}),n.jsx("p",{className:"text-muted-foreground",children:a.description})]},a.title))})]})}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"A Calmer Day for Your Agents"}),n.jsx("p",{className:"text-lg text-muted-foreground mb-6",children:"Agent burnout is the silent CSAT killer. HookZ CX gives every agent a unified desktop, an AI copilot that listens, and automation that handles the after-call work."}),n.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[n.jsxs("div",{className:"p-5 rounded-xl border border-border bg-card",children:[n.jsx("div",{className:"text-3xl font-bold text-brand-ink",children:"40%"}),n.jsx("div",{className:"text-sm text-muted-foreground",children:"Faster average handle time"})]}),n.jsxs("div",{className:"p-5 rounded-xl border border-border bg-card",children:[n.jsx("div",{className:"text-3xl font-bold text-brand-ink",children:"+25"}),n.jsx("div",{className:"text-sm text-muted-foreground",children:"CSAT point improvement"})]}),n.jsxs("div",{className:"p-5 rounded-xl border border-border bg-card",children:[n.jsx("div",{className:"text-3xl font-bold text-brand-ink",children:"60%"}),n.jsx("div",{className:"text-sm text-muted-foreground",children:"Self-service containment"})]}),n.jsxs("div",{className:"p-5 rounded-xl border border-border bg-card",children:[n.jsx("div",{className:"text-3xl font-bold text-brand-ink",children:"-35%"}),n.jsx("div",{className:"text-sm text-muted-foreground",children:"Reduction in agent attrition"})]})]})]}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-radial from-brand/10 via-trans
663parent to-transparent blur-3xl"}),n.jsx("img",{src:T6,alt:"Smiling HookZ CX contact center agent wearing a headset",width:1024,height:1024,loading:"lazy",className:"relative w-full h-auto rounded-2xl border border-border"})]})]})})}),n.jsx("section",{className:"py-20 border-t border-border bg-secondary/20",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â Industries â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Built for Mission-Critical CX"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"From regulated banks to sovereign government deployments â HookZ CX adapts to your industry."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-5",children:i.map(a=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(a.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-bold mb-2",children:a.name}),n.jsx("p",{className:"text-sm text-muted-foreground",children:a.use})]},a.name))})]})}),n.jsx(mn,{title:"HookZ CX FAQ",subtitle:"Common questions from CX, IT and contact center leaders",faqs:[{question:"How does HookZ CX compare to Genesys Cloud, NICE CXone, and Avaya Experience Platform?",answer:"HookZ CX delivers full feature parity â omnichannel routing, WFO, QM, analytics â but is AI-native at the core (not bolted on) and ships in both cloud and on-prem editions. Pricing is transparent per-agent with no per-minute AI surcharges."},{question:"Can HookZ CX run fully on-premise or air-gapped?",answer:"Yes. HookZ CX On-Premise runs on HookZ InfraX (CoreX in the DC or EdgeX at branch sites), supports air-gapped LLM inference, BYO SIP carrier, and full data residency â ideal for banks, healthcare, defense, and government."},{question:"What does 'Agentic AI' mean in HookZ CX?",answer:"Agentic AI agents are goal-driven: they understand intent, ask clarifying questions, call back-office APIs to complete tasks (refund, status check, appointment booking), and escalate to humans with full conversation context. They work in both voice and chat."},{question:"Which LLMs and AI providers are supported?",answer:"Bring your own â OpenAI, Anthropic, Google Gemini, Meta Llama, or sovereign / on-prem models hosted on HookZ InfraX with GPU pass-through. Switching providers is a configuration change, not a re-architecture."},{question:"What integrations are available out of the box?",answer:"Pre-built connectors for Salesforce, ServiceNow, Microsoft Dynamics, Zendesk, SAP, HubSpot, and Oracle. Plus open REST APIs, webhooks, and an event bus for any custom system."},{question:"How long does a typical deployment take?",answer:"Cloud pilots typically launch in 2â4 weeks. Full enterprise rollouts (1,000+ seats) range from 8â16 weeks. On-prem deployments depend on infrastructure readiness â HookZ Professional Services co-delivers with our channel partners."}]}),n.jsx("section",{className:"py-24 bg-gradient-to-br from-brand/10 via-background to-background",children:n.jsxs("div",{className:"container mx-auto px-6 text-center",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:"Rebuild Your Contact Center for the Agentic Era"}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8",children:"See HookZ CX live â with your data, your channels, and your AI models. Cloud or on-prem."}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Schedule a Live Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",asChild:!0,children:n.jsxs(V,{to:"/contact",children:[n.jsx(ji,{className:"w-4 h-4"}),"Talk to Sales"]})})]})]})}),n.jsx(ke,{})]})},R6="/assets/hero-hookz-connect-8Y87PGVR.jpg",O6="/assets/hookz-connect-routing-BC0xeMoL.jpg",M6="/assets/hookz-connect-developer-Dmy7q-1c.jpg",D6=()=>{const e=["Different APIs per channel","Different payload formats","Separate webhooks per provider","Manual fallback logic in your app","Unpredictable cost per message","Fragmented delivery tracking"],t=[{icon:Ts,title:"One API, Every Channel",description:"A single endpoint for SMS, WhatsApp Business, and RCS â with a unified payload model and consistent media handling."},{icon:nk,title:"Smart Routing & Fallback",description:"Route by cost, speed, or order. Automatically fail over from RCS â WhatsApp â SMS so a message never drops."},{icon:hT,title:"Unified Webhook & Tracking",description:"One message ID, one webhook, one schema. Statuses, failures, and timestamps for every channel in one stream."},{icon:on,title:"Smart Delivery Engine",description:"Picks the best channel for every recipient using historical performance, capability detection, and
663your priority rules."}],r=[{title:"Order",description:"Deliver in the exact channel sequence you define."},{title:"Budget",description:"Automatically select the lowest-cost channel that meets your SLA."},{title:"Quick",description:"Choose the fastest channel based on historical delivery performance."}],s=[{icon:Jt,name:"SMS",tag:"100+ countries",description:"Tier-1 carrier routes, A2P 10DLC ready, OTP-grade latency, and global short/long-code support."},{icon:Tt,name:"WhatsApp Business API",tag:"Official BSP",description:"Templated messaging, two-way conversations, rich media, quick replies, and WhatsApp Business Calling (beta)."},{icon:Zv,name:"RCS Business Messaging",tag:"Branded",description:"Verified sender, carousels, suggested actions, and rich media on native Android messaging."},{icon:Tt,name:"Voice Broadcast & OTP",tag:"PSTN + IP",description:"Programmable voice OTP and broadcast as an additional fallback channel for mission-critical delivery."}],i=[{icon:ik,title:"OTP & Authentication",description:"WhatsApp-first OTP with SMS and Voice fallback â sustain 98%+ delivery rates globally."},{icon:Zv,title:"Marketing Campaigns",description:"Launch RCS-rich campaigns with WhatsApp/SMS fallback from a single no-code broadcast portal."},{icon:il,title:"Order & Shipping Updates",description:"Transactional alerts that always arrive â even when one channel is throttled or unavailable."},{icon:ji,title:"Transactional Alerts",description:"Account changes, payment confirmations, and security notices across the customer's preferred channel."},{icon:ut,title:"Government Notifications",description:"Citizen messaging with sovereign delivery, audit trails, and multi-language templates."},{icon:va,title:"AI Agent Conversations",description:"Plug agentic voice and chat AI directly into the same unified messaging stream."}],a=[{icon:og,name:"Banking & FinTech",use:"OTP delivery, fraud alerts, statement notifications with full audit trail."},{icon:ug,name:"Healthcare",use:"Appointment reminders, prescription pickups, HIPAA-grade patient messaging."},{icon:bu,name:"Retail & E-commerce",use:"Cart recovery, order updates, WhatsApp commerce, RCS catalog campaigns."},{icon:mg,name:"Travel & Hospitality",use:"Itinerary updates, disruption alerts, multilingual concierge messaging."},{icon:ut,name:"Government & Public Sector",use:"Multi-channel citizen notifications with sovereign deployment options."},{icon:il,name:"Logistics & Supply Chain",use:"Real-time delivery tracking, driver dispatch, proof-of-delivery flows."}],o=["Project-based authentication & API keys","Signed (HMAC) webhook validation","Multi-region active-active infrastru
663cture","SLA-backed uptime (99.95%+)","Compliance-ready: GDPR, HIPAA, SOC 2","Bring-your-own carrier & WhatsApp BSP"];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"HookZ Connect | Enterprise CPaaS Messaging APIs | HookZ.ai",description:"HookZ Connect is an enterprise CPaaS with one API for SMS, WhatsApp Business and RCS, including smart routing, fallback and unified webhooks.",path:"/products/hookz-connect",jsonLd:Us("connect")}),n.jsx(je,{}),n.jsxs("section",{className:"pt-24 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-brand/5 via-transparent to-transparent"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:"/enterprise-communications",className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-4 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),"Back to Enterprise Communications"]}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-brand/10 border border-brand/20 mb-6",children:[n.jsx(Jt,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:"HookZ Connect â CPaaS"})]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-6 leading-tight",children:["Write Once. Deliver ",n.jsx("span",{className:"text-brand-ink",children:"Everywhere."})]}),n.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mb-8",children:"One omnichannel messaging API for SMS, WhatsApp Business, and RCS. Route across channels, fall back automatically, and reach customers in 100+ countries â from a single endpoint."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Request Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",asChild:!0,children:n.jsx(V,{to:"/pricing",children:"View Pricing"})})]})]}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-radial from-brand/15 via-transparent to-transparent blur-3xl"}),n.jsx("img",{src:R6,alt:"HookZ Connect unified messaging API routing SMS, WhatsApp, and RCS through one central hub",width:1536,height:1024,className:"relative w-full h-auto rounded-2xl border border-border shadow-2xl"})]})]})]})]}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â The Problem â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Multi-Channel Messaging Is Broken"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"Most enterprises bolt together SMS, WhatsApp, and RCS through separate vendors â each with its own SDK, payload, and webhook. The result is integration debt and dropped messages."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4 max-w-4xl mx-auto",children:e.map(l=>n.jsx("div",{className:"p-5 rounded-xl border border-border bg-card text-sm text-muted-foreground",children:l},l))})]})}),n.jsx("section",{className:"py-20 border-t border-border bg-secondary/20",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â The Platform â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"One API. Every Channel. Zero Complexity."}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"HookZ Connect unifies SMS, WhatsApp, and RCS under one intelligent orchestration engine â a single endpoint, smart routing, automatic fallback, and unified tracking."})]}),n.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-4 gap-
6635",children:t.map(l=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(l.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-bold mb-2",children:l.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:l.description})]},l.title))})]})}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-radial from-brand/15 via-transparent to-transparent blur-3xl"}),n.jsx("img",{src:O6,alt:"Smart delivery engine showing intelligent message routing and fallback paths",width:1024,height:1024,loading:"lazy",className:"relative w-full h-auto rounded-2xl border border-border"})]}),n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-brand/10 border border-brand/20 mb-4",children:[n.jsx(on,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-xs font-medium uppercase tracking-wider",children:"Smart Delivery Engine"})]}),n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:["Pick the ",n.jsx("span",{className:"text-brand-ink",children:"Best Channel"})," for Every Message"]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-6",children:"Configure delivery rules per message type. The engine inspects recipient capability, applies your priority logic, and cascades across channels when a message fails to land."}),n.jsx("div",{className:"space-y-3 mb-6",children:r.map(l=>n.jsxs("div",{className:"flex items-start gap-3 p-4 rounded-xl border border-border bg-card",children:[n.jsx("div",{className:"px-3 py-1 rounded-full bg-brand/10 border border-brand/20 text-xs font-bold text-brand-ink uppercase tracking-wider shrink-0",children:l.title}),n.jsx("span",{className:"text-sm text-muted-foreground",children:l.description})]},l.title))}),n.jsxs("div",{className:"p-4 rounded-xl border border-brand/20 bg-card",children:[n.jsx("p",{className:"text-sm font-medium mb-2",children:"Automatic Fallback Examples"}),n.jsxs("div",{className:"text-sm text-muted-foreground space-y-1",children:[n.jsx("div",{children:"RCS â WhatsApp â SMS"}),n.jsx("div",{children:"WhatsApp â SMS"}),n.jsx("div",{children:"SMS â Voice OTP"})]})]})]})]})})}),n.jsx("section",{className:"py-20 border-t border-border bg-secondary/20",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â Channels â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Every Channel Your Customers Use"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"Native, first-party integrations â not screen-scraped aggregation."})]}),n.jsx("div",{className:"grid md:grid-cols-2 gap-5",children:s.map(l=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsxs("div",{className:"flex items-center gap-4 mb-3",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center",children:n.jsx(l.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h3",{className:"font-bold",children:l.name}),n.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:l.tag})]})]}),n.jsx("p",{className:"text-sm text-muted-foreground",children:l.description})]},l.name))})]})}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â Use Cases â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Built for Every Messaging Workload"})]}),n.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-5",children:i.map(l=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(l.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-bold mb-2",children:l.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:l.description})]}
663,l.title))})]})}),n.jsx("section",{className:"py-20 border-t border-border bg-secondary/20",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-brand/10 border border-brand/20 mb-4",children:[n.jsx(FP,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-xs font-medium uppercase tracking-wider",children:"Developer Experience"})]}),n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:["Integrate in ",n.jsx("span",{className:"text-brand-ink",children:"Hours"}),", Not Quarters"]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-6",children:"One REST endpoint. Official SDKs for Node.js, Python, Java, PHP, and .NET. Postman collections, quickstart tutorials, and webhook samples â plus a no-code workflow builder for marketers."}),n.jsxs("div",{className:"rounded-xl border border-border bg-card p-5 font-mono text-xs text-muted-foreground overflow-x-auto",children:[n.jsx("div",{className:"text-brand-ink mb-2",children:"POST /v1/messages"}),n.jsx("pre",{children:`{ 664 "to": "+14155550123", 665 "channels": ["rcs", "whatsapp", "sms"], 666 "mode": "quick", 667 "content": { 668 "text": "Your OTP is 482910", 669 "template": "otp_v2" 670 }, 671 "callback_url": "https://api.you.com/hooks" 672}`})]})]}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-radial from-brand/15 via-transparent to-transparent blur-3xl"}),n.jsx("img",{src:M6,alt:"Developer integrating HookZ Connect messaging API",width:1024,height:1024,loading:"lazy",className:"relative w-full h-auto rounded-2xl border border-border"})]})]})})}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-brand/10 border border-brand/20 mb-4",children:[n.jsx(pg,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-xs font-medium uppercase tracking-wider",children:"Enterprise Ready"})]}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Built for Regulated, Global Scale"})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4 max-w-5xl mx-auto",children:o.map(l=>n.jsxs("div",{className:"flex items-start gap-3 p-5 rounded-xl border border-border bg-card",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink mt-0.5 shrink-0"}),n.jsx("span",{className:"text-sm",children:l})]},l))})]})}),n.jsx("section",{className:"py-20 border-t border-border bg-secondary/20",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â Industries â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Powering Messaging Across Industries"})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-5",children:a.map(l=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(l.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-bold mb-2",children:l.name}),n.jsx("p",{className:"text-sm text-muted-foreground",children:l.use})]},l.name))})]})}),n.jsx(mn,{title:"HookZ Connect FAQ",subtitle:"Common questions from developers, product, and CX leaders",faqs:[{question:"What is a unified messaging API?",answer:"A single integration endpoint that lets you send messages across SMS, WhatsApp Business, RCS, and Voice without coding against each provider separately. HookZ Connect handles channel selection, templating, rate limits, and per-channel compliance."},{question:"How does smart routing and fallback work?",answer:"HookZ Connect inspects the recipient's registered channels (WhatsApp opt-in, RCS capability, SMS reachability), applies your channel-priority rules, and routes accordingly. If a primary channel fails, the engine automatically retries on the next channel â e.g. RCS â WhatsApp â SMS."},{question:"Which channels are supported?",answer:"SMS, WhatsApp Business API, RCS Business Messaging, and Voice broadcast from a single integration â with reach into 100+ countries via Tier-1 carrier routes."},{question:"Is HookZ Connect an official WhatsApp Business API provider?",answer:"Yes â HookZ Connect uses s
672anctioned WhatsApp Business infrastructure via certified BSP partners and complies with Meta's Business Messaging Policy. Includes templated messaging, session-window handling, and WhatsApp Business Calling."},{question:"Can I send OTPs through HookZ Connect?",answer:"Yes. OTP and 2FA delivery is supported across SMS, WhatsApp, and Voice with automatic fallback â sustaining delivery rates above 98%. Configure WhatsApp-first OTP with SMS fallback, or SMS-first with Voice OTP fallback, from the same API call."},{question:"How do I integrate?",answer:"Sign up, generate an API key, and call the /messages REST endpoint. Official SDKs for Node.js, Python, Java, PHP, and .NET. Most integrations go live in under 48 hours for SMS and RCS; WhatsApp typically within a week after template approvals."},{question:"Can I add a chatbot or AI agent?",answer:"Yes. HookZ Connect plugs directly into HookZ CX agentic AI â so your voice and chat AI agents can send and receive across SMS, WhatsApp, and RCS from the same workflow, with handoff to human agents and full context."},{question:"Does HookZ Connect support on-premise deployment?",answer:"Yes. HookZ Connect can deploy on HookZ InfraX (CoreX or EdgeX) for sovereign, hybrid, or telco white-label scenarios â ideal for BFSI, government, and regulated industries."}]}),n.jsx("section",{className:"py-24 bg-gradient-to-br from-brand/10 via-background to-background",children:n.jsxs("div",{className:"container mx-auto px-6 text-center",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:"Start Building Smarter Messaging Today"}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8",children:"One API, every channel. See HookZ Connect live with your traffic, your fallback rules, and your AI workflows."}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Schedule a Live Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",asChild:!0,children:n.jsxs(V,{to:"/contact",children:[n.jsx(ji,{className:"w-4 h-4"}),"Talk to Sales"]})})]})]})}),n.jsx(ke,{})]})},L6="/assets/hero-hookz-voice-edge-B3YsCjeS.jpg",H6="/assets/hookz-voice-edge-sbc-0A1pL3WK.jpg",$6="/assets/hookz-voice-edge-integration-DZHG_qCi.jpg",B6=()=>{const e=["Fragmented SIP carriers per country","Costly on-prem SBC hardware refresh","Manual number provisioning & porting","No unified policy across UC & CCaaS","Regulatory blockers in restricted markets","Limited fraud & toll-bypass protection"],t=[{icon:kt,title:"Global SIP & DIDs",description:"DID, 2-Way DID, Toll-Free and enterprise SIP trunking across the HookZ global voice network with Tier-1 carrier reach."},{icon:Ie,title:"Customer BYOS",description:"Bring your own SIP carrier or telco interconnect for regulated markets like UAE, India, China â stay compliant with local licensed operators."},{icon:Ce,title:"SBCaaS â Cloud & On-Prem",description:"Carrier-grade Session Border Controller delivered as a service or deployed on-premises for secure SIP interop."},{icon:dk,title:"Intelligent SIP Routing",description:"Dynamic call routing, policy control, failover, least-cost routing and traffic optimisation for resilient global voice."}],r=[{layer:"Global SIP Layer",component:"HookZ Global SIP & Customer BYOS Support",icon:kt},{layer:"SBC Layer",component:"HookZ SBCaaS (Cloud & On-Prem Deployment Models)",icon:Ce},{layer:"Cloud Integration Layer",component:"UC, PBX & Cloud Telephony Integration",icon:st},{layer:"CX Integration Layer",component:"Cloud Contact Centre SIP Integration",icon:Br},{layer:"Voice Intelligence Layer",component:"Routing, Security & Policy Control",icon:Ve}],s=[{icon:st,name:"Microsoft Teams",tag:"Direct Routing",description:"Certified SBC interconnect for Teams Phone Direct Routing with global PSTN reach."},{icon:Tt,name:"Zoom Phone",tag:"BYOC",description:"Bring Your Own Carrier into Zoom Phone with HookZ SIP trunks and managed numbers."},{icon:Ie,name:"Cisco & SIP PBX",tag:"UC",description:"Interoperable with Cisco UCM, Webex Calling, and standards-based SIP PBX deployments."},{icon:Br,name:"NICE CXone / Genesys / Five9",tag:"CCaaS",description:"Direct SIP integration into leading cloud contact centre platforms and CX ecosystems."}],i=["TLS 1.3 signaling encryption","SRTP media encryption end-to-e
672nd","SIP firewall & topology hiding","Real-time fraud & toll-bypass detection","DoS / DDoS protection on SIP & RTP","Geo-fencing & call admission control"],a=[{icon:ut,title:"Enterprise Voice Backbone",description:"Replace legacy PRI/TDM trunks with a global, software-defined SIP backbone."},{icon:Br,title:"Cloud Contact Centre Connectivity",description:"Plug Genesys, NICE, Five9 or HookZ CX into 100+ countries via a single voice fabric."},{icon:st,title:"Teams / Zoom Direct Routing",description:"Certified Microsoft Teams and Zoom Phone interconnect with global PSTN coverage."},{icon:Ce,title:"Regulated Market Voice",description:"BYOS into UAE, India, China and other licensed markets without giving up your central UC stack."},{icon:Te,title:"On-Prem SBC Modernisation",description:"Replace ageing AudioCodes / Oracle SBC fleets with HookZ SBCaaS â cloud or appliance."},{icon:Ml,title:"Sovereign Voice Edge",description:"Deploy SBCaaS on HookZ EdgeX for sovereign, air-gapped voice in BFSI, defence and government."}],o=[{icon:og,name:"Banking & FinTech",use:"Secure trading turrets, fraud-protected voice, recorded SIP trunks with regulatory archival."},{icon:ug,name:"Healthcare",use:"HIPAA-aligned voice connectivity for hospitals, telehealth, and clinical contact centres."},{icon:bu,name:"Retail & BPO",use:"Global SIP & contact centre interconnect for omnichannel commerce and outsourced CX."},{icon:mg,name:"Travel & Hospitality",use:"Toll-free numbers, IVR, and multilingual voice routing across regions."},{icon:ut,name:"Government & Public Sector",use:"Sovereign SBCaaS and licensed-operator BYOS for citizen contact centres."},{icon:Ie,name:"UC & CX Service Providers",use:"White-label HookZ SIP and SBCaaS to power your own UCaaS / CCaaS offerings."}],l=[{question:"What is HookZ Voice Edge?",answer:"A unified global voice platform combining HookZ Global SIP, SBC-as-a-Service (cloud & on-prem), UC integration, cloud contact centre SIP connectivity, and intelligent routing â all under one architecture and policy plane."},{question:"How does HookZ provide Global SIP and PSTN connectivity?",answer:"HookZ Voice Edge⢠provides Global SIP (GSIP), PSTN connectivity and telephone numbers through licensed carriers and authorised PSTN partners worldwide. HookZ provides the unified managed service and control layer for SBC, routing, connectivity and number management, while applicable telecom licensing and regulatory obligations remain with the underlying licensed provider."},{question:"Can I use my existing SIP carrier (BYOS)?",answer:"Yes. HookZ Voice Edge⢠supports Bring Your Own SIP (BYOS), allowing you to retain your existing carrier while HookZ manages the SBC, security and routing layer. Alternatively, customers can use HookZ GSIP for managed global PSTN connectivity through our licensed carrier ecosystem."},{question:"Can SBCaaS run on-premises?",answer:"Yes. The same HookZ SBC software runs as a managed cloud service or as an on-prem deployment on standard x86 or HookZ EdgeX appliances â ideal for sovereign, air-gapped, or carrier-edge scenarios."},{question:"Which UC and contact centre platforms are supported?",answer:"Microsoft Teams (Direct Routing), Zoom Phone (BYOC), Cisco UCM / Webex Calling, standards-based SIP PBXs, plus direct SIP integration into NICE CXone, Genesys, Five9, HookZ CX and other CCaaS platforms."},{question:"What about voice security and fraud protection?",answer:"Every session is protected by TLS 1.3 signaling, SRTP media encryption, SIP firewall and topology hiding, geo-fencing, call admission control, and real-time fraud / toll-bypass detection."},{question:"How is routing handled?",answer:"The Voice Intelligence Layer applies dynamic least-cost routing, policy-based selection, automatic failover between carriers and regions, and traffic optimisation for global resilience."},{question:"How does this fit with HookZ CX and HookZ Connect?",answer:"HookZ Voice Edge is the underlying voice fabric for HookZ CX (CCaaS) and provides PSTN reach for HookZ Connect Voice OTP and broadcast â one carrier plane across the entire HookZ Enterprise Communications portfolio."},{question:"What deployment models are available?",answer:"Fully managed multi-tenant cloud, single-tenant private cloud, on-prem appliance, or HookZ EdgeX sovereign deployment â billed per session, per channel and per minute, with hybrid combinations supp
672orted."}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"HookZ Voice Edge | Enterprise SBC as a Service",description:"HookZ Voice Edge delivers SBC as a service and global SIP connectivity for Microsoft Teams, UC platforms, contact centres and carrier interconnects.",path:"/products/hookz-voice-edge",jsonLd:Us("voiceEdge")}),n.jsx(je,{}),n.jsxs("section",{className:"pt-24 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-brand/5 via-transparent to-transparent"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:"/enterprise-communications",className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-4 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),"Back to Enterprise Communications"]}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-brand/10 border border-brand/20 mb-6",children:[n.jsx(Et,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:"HookZ Voice Edge â SBCaaS & Global SIP"})]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-6 leading-tight",children:["Global Voice. ",n.jsx("span",{className:"text-brand-ink",children:"Securely Connected."})]}),n.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mb-8",children:"A next-generation global voice platform for enterprises, cloud contact centres, UC providers, and CX platforms â delivering global SIP, carrier-grade SBCaaS, and seamless cloud telephony integration through one unified architecture."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Request Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",asChild:!0,children:n.jsx(V,{to:"/pricing",children:"View Pricing"})})]})]}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-radial from-brand/15 via-transparent to-transparent blur-3xl"}),n.jsx("img",{src:L6,alt:"HookZ Voice Edge global SIP network connecting continents with carrier-grade voice trunks",width:1920,height:1080,className:"relative w-full h-auto rounded-2xl border border-border shadow-2xl"})]})]})]})]}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â The Problem â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Enterprise Voice Is Still Fragmented"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"Most enterprises run a patchwork of regional SIP carriers, ageing on-prem SBC appliances, and disconnected UC and CCaaS stacks â driving up cost, risk, and integration debt."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4 max-w-4xl mx-auto",children:e.map(c=>n.jsx("div",{className:"p-5 rounded-xl border border-border bg-card text-sm text-muted-foreground",children:c},c))})]})}),n.jsx("section",{className:"py-20 border-t border-border bg-secondary/20",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â Core Capabilities â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"One Voice Fabric. Every Country. Every Stack."}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"HookZ Voice Edge unifies global SIP, SBCaaS, UC integration and CX connectivity under one intelligent voice architecture â cloud, on-prem, or hybrid."})]}),n.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-4 gap-
6725",children:t.map(c=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(c.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-bold mb-2",children:c.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:c.description})]},c.title))})]})}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-radial from-brand/15 via-transparent to-transparent blur-3xl"}),n.jsx("img",{src:H6,alt:"Carrier-grade Session Border Controller with secure SIP signaling and encrypted voice traffic",width:1024,height:1024,loading:"lazy",className:"relative w-full h-auto rounded-2xl border border-border"})]}),n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-brand/10 border border-brand/20 mb-4",children:[n.jsx(Ce,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-xs font-medium uppercase tracking-wider",children:"SBCaaS â Cloud & On-Prem"})]}),n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:["Carrier-Grade ",n.jsx("span",{className:"text-brand-ink",children:"Session Border Control"}),", Your Way"]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-6",children:"Consume HookZ SBC as-a-service from our global edge, or deploy on-premises on standard x86 / EdgeX appliances for sovereign and regulated environments. Same software, same policy plane, same observability."}),n.jsx("div",{className:"space-y-3",children:i.map(c=>n.jsxs("div",{className:"flex items-start gap-3 p-3 rounded-xl border border-border bg-card",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink mt-0.5 shrink-0"}),n.jsx("span",{className:"text-sm",children:c})]},c))})]})]})})}),n.jsx("section",{className:"py-20 border-t border-border bg-secondary/20",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-brand/10 border border-brand/20 mb-4",children:[n.jsx(st,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-xs font-medium uppercase tracking-wider",children:"UC & CX Integration"})]}),n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:["Plug Into Every ",n.jsx("span",{className:"text-brand-ink",children:"UC & CCaaS"})," Platform"]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-6",children:"Certified and standards-based SIP integration into leading UC, PBX and cloud contact centre platforms â without rebuilding your voice plane."}),n.jsx("div",{className:"grid sm:grid-cols-2 gap-4",children:s.map(c=>n.jsxs("div",{className:"p-5 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx("div",{className:"w-10 h-10 rounded-lg bg-brand/10 border border-brand/20 flex items-center justify-center mb-3",children:n.jsx(c.icon,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("h3",{className:"font-bold text-sm",children:c.name}),n.jsx("span",{className:"text-[10px] px-2 py-0.5 rounded-full bg-secondary text-muted-foreground",children:c.tag})]}),n.jsx("p",{className:"text-xs text-muted-foreground",children:c.description})]},c.name))})]}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-radial from-brand/15 via-transparent to-transparent blur-3xl"}),n.jsx("img",{src:$6,alt:"HookZ Voice Edge integrating with Microsoft Teams, Zoom, Cisco and cloud contact centres",width:1024,height:1024,loading:"lazy",className:"relative w-full h-auto rounded-2xl border border-border"})]})]})})}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-brand/10 border border-brand/20 mb-4",children:[n.jsx(Ts,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-xs font-medium uppercase tracking-wider",children:"Architecture"})]}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"HookZ Voice Edge⢠â Layered Architecture"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"A five-layer architecture delivering a future-ready global voice backbone for enterprises and service providers."})]}
672),n.jsx("div",{className:"max-w-4xl mx-auto space-y-3",children:r.map((c,d)=>n.jsxs("div",{className:"flex items-center gap-4 p-5 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsxs("div",{className:"w-10 h-10 rounded-full bg-brand/10 border border-brand/20 flex items-center justify-center text-xs font-bold text-brand-ink shrink-0",children:["0",d+1]}),n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center shrink-0",children:n.jsx(c.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{className:"flex-1",children:[n.jsx("h3",{className:"font-bold",children:c.layer}),n.jsx("p",{className:"text-sm text-muted-foreground",children:c.component})]})]},c.layer))})]})}),n.jsx("section",{className:"py-20 border-t border-border bg-secondary/20",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â Use Cases â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Built for Every Voice Workload"})]}),n.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-5",children:a.map(c=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(c.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-bold mb-2",children:c.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:c.description})]},c.title))})]})}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-2 tracking-widest uppercase",children:"â Industries â"}),n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Powering Voice Across Industries"})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-5",children:o.map(c=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(c.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-bold mb-2",children:c.name}),n.jsx("p",{className:"text-sm text-muted-foreground",children:c.use})]},c.name))})]})}),n.jsx(mn,{title:"HookZ Voice Edge FAQ",subtitle:"Common questions from voice, network and CX leaders",faqs:l}),n.jsx("section",{className:"py-24 bg-gradient-to-br from-brand/10 via-background to-background",children:n.jsxs("div",{className:"container mx-auto px-6 text-center",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:"Modernise Your Global Voice Backbone"}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8",children:"See HookZ Voice Edge live â global SIP, SBCaaS, and UC / CCaaS integration with your traffic, your carriers, and your policies."}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Schedule a Live Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",asChild:!0,children:n.jsxs(V,{to:"/contact",children:[n.jsx(ji,{className:"w-4 h-4"}),"Talk to Sales"]})})]})]})}),n.jsx(ke,{})]})};var F6=Object.defineProperty,qg=(e,t)=>F6(e,"name",{value:t,configurable:!0}),Jh=!1;function CN(){const[e,t]=f.useState(Jh);return f.useEffect(()=>{Jh||(Jh=!0,t(!0))},[]),e}qg(CN,"useIsHydrated");var EN=Ci[" useSyncExternalStore ".trim().toString()];function AN(){return()=>{}}qg(AN,"subscribe");function PN(){return EN(AN,()=>!0,()=>!1)}qg(PN,"useIsHydratedModern");var U6=typeof EN=="function"?PN:CN,V6=Object.defineProperty,_i=(e,t)=>V6(e,"name",{value:t,configurable:!0}),Qh="rovingFocusGroup.onEntryFocus",z6={bubbles:!1,cancelable:!0},zu="RovingFocusGroup",[Bp,TN,W6]=Il(zu),[Z6,_N]=Wt(zu,[W6]),[q6,X6]=Z6(zu),G6=f.forwardRef(_i(function(t,r){return n.jsx(Bp.Provider,{scope:t.__scopeRovingFocusGroup,children:n.jsx(Bp.Slot,{scope:t.__scopeRovingFocusGroup,children:n.jsx(K6,{...t,ref:r})})})},"RovingFocusGroup")),K6=f.forwardRef(_i(function(t,r){const{__scopeRovingFocusGroup:s,orientation:i,loop:a=!1,dir:o,currentTabStopId:l,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:d,onEntryFocus:u,preventScrollOnEntryFocus:h=!1,...p}=t,m=f.useRef(null),y=ye(r,m),b=Wl(o),[w,g]=vr({prop:l,defaultProp:c??null,onChange:d,caller:zu}),[v,x]=f.useState(!1),j=_t(u),k=TN(s),N=f.useRef(!1),[S,C]=f.useState(0);return f.useEffect(()=>{const E=m.current;if(E)return E.addEventListener(Qh,j),()=>E.removeEventListener(Qh,j)},[j]),n.jsx(q6,{scope:s,orientation:i,dir:b,loop:a,currentTabStopId:w,onItemFocus:f.useCallback(E=>g(E),[g]),onItemShiftTab:f.useCallback(()=>x(!0),[]),onFocusableItemAdd:f.useCallback(()=>C(E=>E+1),[]),onFocusableItemRemove:f.useCallback(()=>C(E=>E-1),[]),children:n.jsx(se.div,{tabIndex:v||S===0?-1:0,"data-orientation":i,...p,ref:y,style:{outline:"none",...t.style},onMouseDown:te(t.onMouseDown,()=>{N.current=!0}),onFocus:te(t.onFocus,E=>{const I=!N.current;if(E.target===E.currentTarget&&I&&!v){const B=new CustomEvent(Qh,z6);if(E.currentTarget.dispatchEvent(B),!B.defaultPrevented){const R=k().filter(U=>U.focusable),O=R.find(U=>U.active),T=R.find(U=>
672U.id===w),H=[O,T,...R].filter(Boolean).map(U=>U.ref.current);Xg(H,h)}}N.current=!1}),onBlur:te(t.onBlur,()=>x(!1))})})},"RovingFocusGroupImpl")),Y6="RovingFocusGroupItem",J6=f.forwardRef(_i(function(t,r){const{__scopeRovingFocusGroup:s,focusable:i=!0,active:a=!1,tabStopId:o,children:l,...c}=t,d=nn(),u=o||d,h=X6(Y6,s),p=h.currentTabStopId===u,m=TN(s),{onFocusableItemAdd:y,onFocusableItemRemove:b,currentTabStopId:w}=h,g=U6();return Ue(()=>{if(!(!g||!i))return y(),()=>b()},[g,i,y,b]),f.useEffect(()=>{if(!(g||!i))return y(),()=>b()},[g,i,y,b]),n.jsx(Bp.ItemSlot,{scope:s,id:u,focusable:i,active:a,children:n.jsx(se.span,{tabIndex:p?0:-1,"data-orientation":h.orientation,...c,ref:r,onMouseDown:te(t.onMouseDown,v=>{i?h.onItemFocus(u):v.preventDefault()}),onFocus:te(t.onFocus,()=>h.onItemFocus(u)),onKeyDown:te(t.onKeyDown,v=>{if(v.key==="Tab"&&v.shiftKey){h.onItemShiftTab();return}if(v.target!==v.currentTarget)return;const x=RN(v,h.orientation,h.dir);if(x!==void 0){if(v.metaKey||v.ctrlKey||v.altKey||v.shiftKey)return;v.preventDefault();let k=m().filter(N=>N.focusable).map(N=>N.ref.current);if(x==="last")k.reverse();else if(x==="prev"||x==="next"){x==="prev"&&k.reverse();const N=k.indexOf(v.currentTarget);k=h.loop?ON(k,N+1):k.slice(N+1)}setTimeout(()=>Xg(k))}}),children:typeof l=="function"?l({isCurrentTabStop:p,hasTabStop:w!=null}):l})})},"RovingFocusGroupItem")),Q6={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function IN(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}_i(IN,"getDirectionAwareKey");function RN(e,t,r){const s=IN(e.key,r);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(s))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(s)))return Q6[s]}_i(RN,"getFocusIntent");function Xg(e,t=!1){const r=document.activeElement;for(const s of e)if(s===r||(s.focus({preventScroll:t}),document.activeElement!==r))return}_i(Xg,"focusFirst");function ON(e,t){return e.map((r,s)=>e[(t+s)%e.length])}_i(ON,"wrapArray");var eL=G6,tL=J6,rL=Object.defineProperty,so=(e,t)=>rL(e,"name",{value:t,configurable:!0}),Gg="Tabs",[nL,b$]=Wt(Gg,[_N]),MN=_N(),[sL,Kg]=nL(Gg),iL=f.forwardRef(so(function(t,r){const{__scopeTabs:s,value:i,onValueChange:a,defaultValue:o,orientation:l="horizontal",dir:c,activationMode:d="automatic",...u}=t,h=Wl(c),[p,m]=vr({prop:i,onChange:a,defaultProp:o??"",caller:Gg});return n.jsx(sL,{scope:s,baseId:nn(),value:p,onValueChange:m,orientation:l,dir:h,activationMode:d,children:n.jsx(se.div,{dir:h,"data-orientation":l,...u,ref:r})})},"Tabs")),aL="TabsList",oL=f.forwardRef(so(function(t,r){const{__scopeTabs:s,loop:i=!0,...a}=t,o=Kg(aL,s),l=MN(s);return n.jsx(eL,{asChild:!0,...l,orientation:o.orientation,dir:o.dir,loop:i,children:n.jsx(se.div,{role:"tablist","aria-orientation":o.orientation,...a,ref:r})})},"TabsList")),lL="TabsTrigger",cL=f.forwardRef(so(function(t,r){const{__scopeTabs:s,value:i,disabled:a=!1,...o}=t,l=Kg(lL,s),c=MN(s),d=Yg(l.baseId,i),u=Jg(l.baseId,i),h=i===l.value;return n.jsx(tL,{asChild:!0,...c,focusable:!a,active:h,children:n.jsx(se.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":u,"data-state":h?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:d,...o,ref:r,onMouseDown:te(t.onMouseDown,p=>{!a&&p.button===0&&p.ctrlKey===!1?l.onValueChange(i):p.preventDefault()}),onKeyDown:te(t.onKeyDown,p=>{a||p.target!==p.currentTarget||[" ","Enter"].includes(p.key)&&l.onValueChange(i)}),onFocus:te(t.onFocus,()=>{const p=l.activationMode!=="manual";!h&&!a&&p&&l.onValueChange(i)})})})},"TabsTrigger")),dL="TabsContent",uL=f.forwardRef(so(function(t,r){const{__scopeTabs:s,value:i,forceMount:a,children:o,...l}=t,c=Kg(dL,s),d=Yg(c.baseId,i),u=Jg(c.baseId,i),h=i===c.value,p=f.useRef(h);return f.useEffect(()=>{const m=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(m)},[]),n.jsx(Wn,{present:a||h,children:({present:m})=>n.jsx(se.div,{"data-state":h?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":d,hidden:!m,id:u,tabIndex:0,...l,ref:r,style:{...t.style,animationDuration:p.current?"0s":void 0},children:m&&o})})},"TabsContent"));function Yg(e,t){return`${e}-trigger-${t}`}so(Yg,"makeTriggerId");function Jg(e,t){return`${e}-content-${t}`}so(Jg,"makeContentId");var hL=iL,DN=oL,LN=cL,HN=uL;const Qg=hL,Wu=f.forwardRef(({className:e,...t},r)=>n.jsx(DN,{ref:r,className:J("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));Wu.displayName=DN.displayName;const Cs=f.forwardRef(({className:e,...t},r)=>n.jsx(LN,{ref:r,className:J("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",e),...t}));Cs.displayName=LN.displayName;const Es=f.forwardRef(({className:e,...t},r)=>n.jsx(HN,{ref:r,className:J("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...t}));Es.displayName=HN.displayName;
672const mL="/assets/hero-infrastructure-DoP0tebt.png",pL=()=>n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"HookZ InfraX | Distributed Hybrid Infrastructure Platform",description:"HookZ InfraX unifies CoreX private cloud, EdgeX edge infrastructure, ControlX orchestration and Cortex observability across data centre, cloud and edge.",path:"/products/distributed-infrastructure",jsonLd:Us("infrax")}),n.jsx(je,{}),n.jsxs("section",{className:"pt-24 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-brand/5 via-transparent to-transparent"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:"/products",className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-4 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),"Back to Products"]}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-brand/10 border border-brand/20 mb-6",children:[n.jsx(Ve,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:"Distributed Hybrid Infrastructure (DHI)"})]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-6",children:[n.jsx("span",{className:"text-brand-ink",children:"AI-First"})," Distributed",n.jsx("br",{}),"Hybrid Infrastructure"]}),n.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mb-8",children:"HookZ InfraX is designed for the DHI eraâwhere workloads span data centres, multiple clouds and edge environments. An open, AI-first alternative to proprietary virtualisation stacks."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Request Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",children:"Download Whitepaper"})]})]}),n.jsx("div",{className:"relative",children:n.jsx("div",{className:"relative animate-float-subtle",children:n.jsx("img",{src:mL,alt:"Distributed hybrid infrastructure with edge servers, data center racks and global network",className:"w-full h-auto rounded-2xl",style:{background:"transparent"}})})})]})]})]}),n.jsx("section",{className:"py-24",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["HookZ ",n.jsx("span",{className:"text-brand-ink",children:"InfraX"})," Platform"]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"A distributed, AI-ready architecture with unified governance, networking, security and orchestration across DC, cloud and edge as one fabric."})]}),n.jsxs("div",{className:"grid md:grid-cols-2 lg:grid-cols-4 gap-6 mb-16",children:[n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4 shadow-[0_0_20px_#c3ff0030]",children:n.jsx(Te,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-bold mb-2",children:"CoreX"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Private cloud virtualisation for enterprise data centres"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4 shadow-[0_0_20px_#c3ff0030]",children:n.jsx(Ie,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-bold mb-2",children:"EdgeX"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"AI-native edge cloud platform unifying networking, security, communications and AI at the edge"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4 shadow-[0_0_20px_#c3ff0030]",children:n.jsx(Ve,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-bold mb-2",children:"HXI"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"KVM-based hypervisor layer optimised for performance"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4 shadow-[0_0_20px_#c3ff0030]",children:n.jsx(ya,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-bold mb-2",children:"ControlX"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Unified lifecycle, automation and policy management"})]})]}),n.jsxs("div",{className:"p-8 rounded-3xl border border-border bg-card mb-16",children:[n.jsx("h3",{className:"text-2xl font-bold mb-6 text-center",children:"Addressing CIO & CXO Pain Points"}),n.jsxs("div",{className:"grid sm:grid-cols-2 md:grid-cols-5 ga
672p-6",children:[n.jsxs("div",{className:"text-center",children:[n.jsx("div",{className:"w-12 h-12 rounded-full bg-brand/10 flex items-center justify-center mx-auto mb-3",children:n.jsx("span",{className:"text-xl",children:"ð°"})}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Increasing licensing costs"})]}),n.jsxs("div",{className:"text-center",children:[n.jsx("div",{className:"w-12 h-12 rounded-full bg-brand/10 flex items-center justify-center mx-auto mb-3",children:n.jsx("span",{className:"text-xl",children:"ð"})}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Complexity from bundled systems"})]}),n.jsxs("div",{className:"text-center",children:[n.jsx("div",{className:"w-12 h-12 rounded-full bg-brand/10 flex items-center justify-center mx-auto mb-3",children:n.jsx("span",{className:"text-xl",children:"ð"})}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Single vendor dependency"})]}),n.jsxs("div",{className:"text-center",children:[n.jsx("div",{className:"w-12 h-12 rounded-full bg-brand/10 flex items-center justify-center mx-auto mb-3",children:n.jsx("span",{className:"text-xl",children:"ð¢"})}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"DC-centric architectures"})]}),n.jsxs("div",{className:"text-center",children:[n.jsx("div",{className:"w-12 h-12 rounded-full bg-brand/10 flex items-center justify-center mx-auto mb-3",children:n.jsx("span",{className:"text-xl",children:"ð¤"})}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"AI bolted-on, not built-in"})]})]})]})]})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-12",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Competitive ",n.jsx("span",{className:"text-brand-ink",children:"Positioning"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"InfraX focuses where AI, edge workloads, telecom-grade networking and cost discipline meetâdelivering DHI capability without heavy proprietary dependency."})]}),n.jsx("div",{className:"overflow-x-auto",children:n.jsxs(Fu,{className:"min-w-[800px]",children:[n.jsx(Uu,{children:n.jsxs(Mr,{className:"border-border",children:[n.jsx(Ct,{className:"text-foreground font-bold",children:"Capability"}),n.jsx(Ct,{className:"text-brand-ink font-bold",children:"HookZ InfraX"}),n.jsx(Ct,{children:"VMware"}),n.jsx(Ct,{children:"Nutanix"}),n.jsx(Ct,{children:"Others"})]})}),n.jsxs(Vu,{children:[n.jsxs(Mr,{className:"border-border",children:[n.jsx(ge,{className:"font-medium",children:"AI-First Architecture"}),n.jsx(ge,{className:"text-brand-ink",children:"â Built-in"}),n.jsx(ge,{className:"text-muted-foreground",children:"Bolt-on"}),n.jsx(ge,{className:"text-muted-foreground",children:"Bolt-on"}),n.jsx(ge,{className:"text-muted-foreground",children:"Limited"})]}),n.jsxs(Mr,{className:"border-border",children:[n.jsx(ge,{className:"font-medium",children:"Edge-Native Design"}),n.jsx(ge,{className:"text-brand-ink",children:"â EdgeX"}),n.jsx(ge,{className:"text-muted-foreground",children:"DC-centric"}),n.jsx(ge,{className:"text-muted-foreground",children:"DC-centric"}),n.jsx(ge,{className:"text-muted-foreground",children:"Varies"})]}),n.jsxs(Mr,{className:"border-border",children:[n.jsx(ge,{className:"font-medium",children:"Vendor Lock-in"}),n.jsx(ge,{className:"text-brand-ink",children:"â Open / KVM"}),n.jsx(ge,{className:"text-muted-foreground",children:"Proprietary"}),n.jsx(ge,{className:"text-muted-foreground",children:"Proprietary"}),n.jsx(ge,{className:"text-muted-foreground",children:"Mixed"})]}),n.jsxs(Mr,{className:"border-border",children:[n.jsx(ge,{className:"font-medium",children:"Licensing Model"}),n.jsx(ge,{className:"text-brand-ink",children:"â Modular"}),n.jsx(ge,{className:"text-muted-foreground",children:"Bundled"}),n.jsx(ge,{className:"text-muted-foreground",children:"Bundled"}),n.jsx(ge,{className:"text-muted-foreground",children:"Varies"})]}),n.jsxs(Mr,{className:"border-border",children:[n.jsx(ge,{className:"font-medium",children:"Telco-Grade"}),n.jsx(ge,{className:"text-brand-ink",children:"â VNF Ready"}),n.jsx(ge,{className:"text-muted-foreground",children:"Limited"}),n.jsx(ge,{className:"text-muted-foreground",children:"Limited"}),n.jsx(ge,{className:"text-muted-foreground",children:"Limited"})]})]})]})}),n.jsx("p",{className:"text-center text-sm text-muted-foreground mt-6",children:"InfraX is a credible alternative to VMware, Nutanix, SUSE Harvester, Red Hat and Proxmoxâparticularly when AI, edge and hybrid complexity matter."})]})}),n.jsx("section",{className:"py-24",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs(Qg,{defaultValue:"corex",className:"w-full",children:[n.jsxs(Wu,{className:"grid w-full max-w-md mx-auto grid-cols-2 mb-12",children:[n.jsxs(Cs,{value:"corex",className:"data-[state=active]:bg-brand data-[state=active]:text-black",children:[n.jsx(Te,{className:"w-4 h-4 mr-2"}),"CoreX"]}),n.jsxs(Cs,{value:"edgex",className:"data-[state=active]:bg-brand data-[state=active]:text-black",children:[n.jsx(Ie,{className:"w-4 h-4 mr-2"}),"EdgeX"]})]}),n.jsx(Es,{value:"corex",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-16 items-start",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[n.jsx("div",{className:"w-16 h-16 rounded-2xl bg-brand/10 border border-brand/20 flex items-center justify-center shadow-[0_0_30px_#c3ff0030]",children:n.jsx(Te,{className:"w-8 h-8 text-brand-ink"})}),n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("h2",{className:"text-3xl font-bold",children:"CoreX"}),n.jsx("span",{className:"text-sm px-3 py-1 rounded-full bg-secondary text-muted-foreground",children:"Data Center"})]}),n.jsx("p",{className:"text-muted-foreground",children:"Private Cloud Virtualisation"})]})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"OpenStack KVM-based virtualisation platform designed for enterprise data centres. Private cloud infrastru
672cture with AI readiness and modular adoption."}),n.jsxs("div",{className:"space-y-3 mb-8",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"HXI KVM-optimised hypervisor"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"AI infrastructure ready"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"OpenStack-based with no vendor lock-in"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"VMaaS & Kubernetes offerings"})]})]}),n.jsx(M,{variant:"hero",asChild:!0,children:n.jsxs(V,{to:"/products/corex",children:["Explore CoreX",n.jsx(K,{className:"w-4 h-4"})]})})]}),n.jsxs("div",{className:"grid sm:grid-cols-2 gap-4",children:[n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx(_d,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Compute Virtualisation"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"High-performance VMs with live migration and resource optimisation"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx(st,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Software-Defined Storage"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Distributed storage with automatic tiering"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx(Ie,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Virtual Networking"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"SDN with micro-segmentation and tenant isolation"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx(cg,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Observability"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Full-stack monitoring with AI-driven insights"})]})]})]})}),n.jsx(Es,{value:"edgex",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-16 items-start",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[n.jsx("div",{className:"w-16 h-16 rounded-2xl bg-brand/10 border border-brand/20 flex items-center justify-center shadow-[0_0_30px_#c3ff0030]",children:n.jsx(Ie,{className:"w-8 h-8 text-brand-ink"})}),n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("h2",{className:"text-3xl font-bold",children:"EdgeX"}),n.jsx("span",{className:"text-sm px-3 py-1 rounded-full bg-secondary text-muted-foreground",children:"Edge"})]}),n.jsx("p",{className:"text-muted-foreground",children:"AI-Native Edge Cloud Platform"})]})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"EdgeX is a distributed edge cloud platform designed to run networking, security, communications and AI workloads on a single, software-defined infrastructure. Eliminate appliance sprawl. Deploy once. Operate everything from VNFs to AI inference on a unified edge fabric."}),n.jsxs("div",{className:"space-y-3 mb-8",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"VNFs: SD-WAN, Firewall, SDP, SBC"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"Distributed AI inference at the edge"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"NVIDIA GPU passthrough support"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"Zero-touch provisioning"})]})]}),n.jsx(M,{variant:"hero",asChild:!0,children:n.jsxs(V,{to:"/products/edgex",children:["Explore EdgeX",n.jsx(K,{className:"w-4 h-4"})]})})]}),n.jsxs("div",{className:"grid sm:grid-cols-2 gap-4",children:[n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx(Ce,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Network Functions"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"SD-WAN, Next-Gen Firewall, SDP, and SBC as VNFs"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx(Ve,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"AI at the Edge"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Run inference models locally with GPU acceleration"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx(on,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Low Latency"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Sub-millisecond response for real-time applications"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsx(ya,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Remote Management"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Centralised control with offline resilience"})]})]})]})})]})})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-12",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Security & ",n.jsx("span",{className:"text-brand-ink",children:"Compliance"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"ControlX enforces policies consistently across CoreX and EdgeX deployments with enterprise-grade security architecture."})]}),n.jsxs("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6",children:[n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsx(Ml,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Zero-Trust Segmentation"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Network isolation and identity-based access controls"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsx(Ce,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Secure Boot & Attestation"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Hardware-rooted trust for edge devices"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsx(Ie,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Policy-Driven Micro-Segmentation"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Granular workload isolation and traffic control"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsx(_d,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Encrypted Planes"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Encrypted management and workload planes"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsx(ie,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Regulatory Alignment"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Built for compliance with industry frameworks"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsx(ya,{className:"w-8 h-8 text-brand-ink mb-4"}),n.jsx("h3",{className:"font-bold mb-2",children:"Unified Policy Engine"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Consistent enforcement across all deployments"})]})]})]})}),n.jsx("section",{className:"py-24",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-12",children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["DHI ",n.jsx("span",{className:"text-brand-ink",children:"Use Cases"})]}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"InfraX supports multiple adoption scenarios, each leveraging AI readiness, openness and distributed design."})]}),n.jsxs("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6",children:[n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx(ut,{className:"w-10 h-10 text-brand-ink mb-4"}),n.jsx("h3",{className:"text-lg font-bold mb-2",children:"CIO Private Cloud + AI"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Enterprise private cloud with integrated AI infrastru
672cture for modern workloads"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx(Et,{className:"w-10 h-10 text-brand-ink mb-4"}),n.jsx("h3",{className:"text-lg font-bold mb-2",children:"Telco Edge & Network Services"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Network service hosting at the edge for telecommunications providers"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx(Te,{className:"w-10 h-10 text-brand-ink mb-4"}),n.jsx("h3",{className:"text-lg font-bold mb-2",children:"Data Centre VMaaS/K8s"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Virtual Machine as a Service and Kubernetes offerings for DC operators"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx(st,{className:"w-10 h-10 text-brand-ink mb-4"}),n.jsx("h3",{className:"text-lg font-bold mb-2",children:"MSP Managed Hybrid Cloud"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Managed service providers delivering hybrid cloud services to customers"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx(Ua,{className:"w-10 h-10 text-brand-ink mb-4"}),n.jsx("h3",{className:"text-lg font-bold mb-2",children:"Utility & Smart Infrastructure"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"AI edge computing for utilities and smart infrastructure deployments"})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx(gk,{className:"w-10 h-10 text-brand-ink mb-4"}),n.jsx("h3",{className:"text-lg font-bold mb-2",children:"Hybrid Workload Management"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Unified orchestration across on-premises, edge and public cloud"})]})]})]})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-16 items-center",children:[n.jsxs("div",{children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Migration & ",n.jsx("span",{className:"text-brand-ink",children:"Co-Existence"})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"InfraX is built to co-exist with existing VMware or Nutanix environments. Start new workloads on InfraX, followed by phased transitions driven by performance, licensing and operational priorities."}),n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-brand text-black flex items-center justify-center font-bold shrink-0",children:"1"}),n.jsxs("div",{children:[n.jsx("h4",{className:"font-bold mb-1",children:"Assess & Plan"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Evaluate current infrastru
672cture and identify migration candidates"})]})]}),n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-brand text-black flex items-center justify-center font-bold shrink-0",children:"2"}),n.jsxs("div",{children:[n.jsx("h4",{className:"font-bold mb-1",children:"New Workloads on InfraX"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Deploy new applications directly on InfraX platform"})]})]}),n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-brand text-black flex items-center justify-center font-bold shrink-0",children:"3"}),n.jsxs("div",{children:[n.jsx("h4",{className:"font-bold mb-1",children:"Phased Migration"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Transition selected systems based on priority and readiness"})]})]}),n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-brand text-black flex items-center justify-center font-bold shrink-0",children:"4"}),n.jsxs("div",{children:[n.jsx("h4",{className:"font-bold mb-1",children:"Unified Operations"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Manage hybrid environment through ControlX"})]})]})]})]}),n.jsxs("div",{className:"p-8 rounded-3xl border border-brand/30 bg-gradient-to-br from-brand/5 to-transparent",children:[n.jsx("h3",{className:"text-xl font-bold mb-6",children:"Why Consider InfraX?"}),n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"Distributed, secure, AI-aware infrastructure"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"Commercially sustainable licensing"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"No unnecessary vendor lock-in"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"Modular adoption approach"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:"Supports private, hybrid and edge computing"})]})]})]})]})})}),n.jsx(mn,{title:"Infrastructure FAQ",subtitle:"Common questions about HookZ InfraX and distributed hybrid infrastructure",faqs:[{question:"What is HookZ InfraX and how does it compare to VMware?",answer:"HookZ InfraX is an AI-native distributed hybrid infrastructure platform built on KVM/OpenStack. Unlike VMware's proprietary, DC-centric architecture, InfraX is designed for distributed workloads across data centers, edge, and cloud â with modular licensing and no vendor lock-in."},{question:"What is the difference between CoreX and EdgeX?",answer:"CoreX is designed for enterprise data center virtualisation â private cloud, VMaaS, and Kubernetes workloads. EdgeX is a lightweight edge virtualisation platform for branch offices, IoT, and network functions (VNFs). Both are managed centrally through ControlX."},{question:"Can InfraX co-exist with my existing VMware or Nutanix environment?",answer:"Yes. InfraX is built for co-existence. You can start new workloads on InfraX while maintaining existing environments, then phase migrations based on your licensing cycles, performance needs, and operational priorities."},{question:"Does InfraX support GPU workloads and AI inference?",answer:"Yes. InfraX supports NVIDIA GPU passthrough for AI/ML workloads in both CoreX (data center) and EdgeX (edge) deployments. This enables distributed AI inference, model training, and GPU-as-a-Service offerings."},{question:"What is ControlX?",answer:"ControlX is the unified lifecycle, automation, and policy management layer for InfraX. It provides consistent governance, security enforcement, and operational control across all CoreX and EdgeX deployments from a single pane of glass."},{question:"How does InfraX handle security and compliance?",answer:"InfraX implements zero-trust segmentation, secure boot and attestation, encrypted management planes, policy-driven micro-segmentation, and regulatory alignment â all enforced consistently through ControlX across every deployment."}]}),n.jsx("section",{className:"py-24 bg-gradient-to-br from-brand/10 via-background to-background",children:n.jsxs("div",{className:"container mx-auto px-6 text-center",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:"DHI is the New Reality"}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8",children:"Organisations need infrastru
672cture that is distributed, secure, AI-aware and commercially sustainableâwithout unnecessary lock-in. HookZ InfraX provides this pathway."}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Get Migration Assessment",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(he,{children:n.jsx(M,{variant:"heroOutline",size:"lg",children:"Download Whitepaper"})})]})]})}),n.jsx(Ti,{links:[{to:"/products/corex",label:"CoreX â enterprise private cloud & virtualisation",description:"VMs, Kubernetes, bare-metal and GPU infrastructure in your data centre."},{to:"/products/edgex",label:"EdgeX â distributed edge infrastructure",description:"Edge compute, storage and AI inference on a single licensed node."},{to:"/enterprise-communications",label:"Enterprise Communications portfolio",description:"Run HookZ CX, Connect and Voice Edge workloads on the same infrastructure fabric."},{to:"/hub",label:"HookZ Hub customer portal",description:"Explore HookZ services and access your customer workspace."}]}),n.jsx(ke,{})]}),fL=()=>{const e=[{title:"Enterprise Communications Solutions",description:"Transform customer and employee experiences with unified communications solutions powered by AI.",href:"/solutions/enterprise-communications",icon:Jt,solutions:[{name:"Contact Center Transformation",description:"Modernize your contact center with omnichannel AI"},{name:"Unified Communications",description:"Voice, video, and messaging in one platform"},{name:"Communications API Platform",description:"Embed communications into your applications"},{name:"SBC as a Service",description:"Enterprise SBC without the infrastructure burden"},{name:"Global SIP",description:"Global PSTN reach for multinational voice"}]},{title:"Distributed Infrastructure Solutions",description:"Deploy AI-ready infrastructure from data center to edge with HookZ InfraX platform solutions.",href:"/solutions/distributed-infrastructure",icon:Ve,solutions:[{name:"Private Cloud",description:"CoreX enterprise private cloud"},{name:"Managed VMaaS",description:"Virtual machines as a service"},{name:"GPU as a Service",description:"AI/ML workload acceleration"},{name:"Retail Store-in-a-Box",description:"Complete retail edge solution"},{name:"Hospital-in-a-Box",description:"Healthcare edge infrastructure"},{name:"Utility-in-a-Box",description:"Substation & OT edge"},{name:"Vehicle-in-a-Box",description:"Fleet edge computing"},{name:"Bank-in-a-Box",description:"Financial services edge"},{name:"Factory-in-a-Box",description:"Manufacturing OT edge"}]}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"Industry Solutions | HookZ.ai",description:"Industry solutions for distributed enterprises â private cloud, edge cloud, edge AI and enterprise communications, validated for telcos, data centres and regulated environments.",path:"/solutions"}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-dual"}),n.jsx("div",{className:"absolute top-0 left-1/4 w-[500px] h-[500px] bg-primary/[0.03] rounded-full blur-3xl"}),n.jsx("div",{className:"container mx-auto px-6 relative",children:n.jsxs("div",{className:"max-w-4xl",children:[n.jsx("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full glass border-primary/30 mb-6",children:n.jsx("span",{className:"text-sm font-medium text-brand-ink",children:"Industry Solutions"})}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-6",children:["Solutions Built for ",n.jsx("span",{className:"text-brand-ink",children:"Your Industry"})]}),n.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl",children:"Pre-configured, validated solutions that combine HookZ products to solve specific business challenges across communications and infrastructure."})]})})]}),n.jsx("section",{className:"py-24",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsx("div",{className:"grid lg:grid-cols-2 gap-8",children:e.map((t,r)=>n.jsxs("div",{className:"p-8 rounded-3xl glass-strong hover:border-primary/20 transition-all duration-300",children:[n.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[n.jsx("div",{className:"w-14 h-14 roun
672ded-2xl flex items-center justify-center bg-primary/10 border border-primary/20",children:n.jsx(t.icon,{className:"w-7 h-7 text-brand-ink"})}),n.jsx("h2",{className:"text-2xl font-bold",children:t.title})]}),n.jsx("p",{className:"text-muted-foreground mb-6",children:t.description}),n.jsx("div",{className:"space-y-3 mb-8",children:t.solutions.map(s=>n.jsxs("div",{className:"flex items-start gap-3 p-3 rounded-xl glass",children:[n.jsx("div",{className:"w-2 h-2 rounded-full mt-2 bg-primary"}),n.jsxs("div",{children:[n.jsx("span",{className:"font-medium",children:s.name}),n.jsx("p",{className:"text-sm text-muted-foreground",children:s.description})]})]},s.name))}),n.jsx(V,{to:t.href,children:n.jsxs(M,{variant:r===0?"hero":"heroOutline",children:["Explore Solutions",n.jsx(K,{className:"w-4 h-4"})]})})]},t.title))})})}),n.jsx(Ti,{links:[{to:"/vmware-alternative",label:"VMware alternative and private cloud migration",description:"Modernise virtualisation with HookZ CoreX on KVM and OpenStack."},{to:"/edge-cloud",label:"Edge cloud and edge AI for distributed sites",description:"Run EdgeX and ControlX across branch, retail and factory locations."},{to:"/enterprise-communications",label:"Enterprise communications, CX and CPaaS",description:"Contact centre, programmable messaging and enterprise voice on one platform."},{to:"/systems",label:"Systems integration and managed services",description:"Architecture, deployment and managed operations from HookZ Systems."}]}),n.jsxs("section",{className:"py-24 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-dual"}),n.jsxs("div",{className:"container mx-auto px-6 text-center relative",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:"Need a Custom Solution?"}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8",children:"Our solution architects can design a tailored deployment for your unique requirements."}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsxs(M,{variant:"hero",size:"lg",children:["Talk to an Expert",n.jsx(K,{className:"w-4 h-4"})]}),n.jsx(M,{variant:"heroOutline",size:"lg",children:"View Case Studies"})]})]})]}),n.jsx(ke,{})]})},gL=()=>{const e=[{id:"contact-center",name:"Contact Center Transformation",description:"Modernize your contact center with AI-powered omnichannel customer engagement. Reduce costs while improving CSAT scores.",icon:Br,products:["HookZ CX","HookZ Connect"],benefits:["40% reduction in average handle time","25% improvement in first call resolution","Unified view of customer journey","AI-powered agent assistance"],useCases:["Customer Support Centers","S
672ales Operations","Technical Support"]},{id:"unified-communications",name:"Unified Communications",description:"Bring voice, video, and messaging together in a seamless platform that works across all devices and locations.",icon:Pi,products:["HookZ Meet","HookZ Connect","HookZ Voice Edge"],benefits:["Single platform for all communications","Any device, anywhere access","Enterprise-grade security","Seamless calendar integration"],useCases:["Remote & Hybrid Work","Global Teams","Executive Communications"]},{id:"cpaas-integration",name:"Communications API Platform",description:"Embed communications capabilities directly into your business applications with developer-friendly APIs.",icon:kt,products:["HookZ Connect","HookZ Voice Edge"],benefits:["Rapid time-to-market","Custom workflows and automation","Global carrier connectivity","Pay-as-you-go scalability"],useCases:["SaaS Applications","Customer Portals","Workflow Automation"]},{id:"sbc-as-a-service",name:"SBC as a Service",description:"Enterprise SBC without the infrastructure burden. HookZ VoiceEdge SBCaaS delivers enterprise-grade Session Border Controller capability as a service â removing the complexity of procuring, licensing, maintaining and supporting SBC infrastructure.",icon:Ce,products:["HookZ Voice Edge"],benefits:["Cloud-hosted or on-premises deployment options","High-availability architecture","Microsoft Teams Direct Routing","TLS and SRTP support","24Ã7 support options","Lifecycle management included"],useCases:["Cloud-first enterprises","Microsoft Teams deployments","Contact centres and CCaaS","Regulated on-premises environments"]},{id:"global-sip",name:"Global SIP",description:"One enterprise voice strategy. Global PSTN reach. HookZ VoiceEdge Global SIP simplifies how multinational organisations connect their communications platforms to voice services across countries through a consistent service and operational layer.",icon:kt,products:["HookZ Voice Edge"],benefits:["Inbound and outbound enterprise voice","Geographic and non-geographic numbers","Microsoft Teams Direct Routing","Contact centre connectivity","International voice termination","Centralised service management"],useCases:["Multinational enterprises","Microsoft Teams Direct Routing","Contact centres","UC and PBX integration","Global carrier consolidation"]}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"Enterprise Communications Solutions â HookZ.ai",description:"AI-native CX, UCaaS, voice edge, and meetings solutions for modern enterprises.",path:"/solutions/enterprise-communications"}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-brand/5 via-transparent to-transparent"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:"/solutions",className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-8 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),"Back to Solutions"]}),n.jsxs("div",{className:"max-w-4xl",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-brand/10 border border-brand/20 mb-6",children:[n.jsx(Jt,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:"Enterprise Communications Solutions"})]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-6",children:["Transform Customer & Employee ",n.jsx("span",{className:"text-brand-ink",children:"Experiences"})]}),n.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mb-8",children:"Pre-built solutions combining HookZ CX, Connect, Meet, and Voice Edge to solve your most pressing communications challenges."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsxs(M,{variant:"hero",size:"lg",children:["Explore Solutions",n.jsx(K,{className:"w-4 h-4"})]}),n.jsx(M,{variant:"heroOutline",size:"lg",children:"Talk to Sales"})]})]})]})]}),e.map((t,r)=>n.jsx("section",{id:t.id,className:`py-24 ${r%2===1?"bg-secondary/30":""}`,children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-16 items-start",children:[n.jsxs("div",{className:r%2===1?"lg:order-2":"",children:[n.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[n.jsx("div",{className:"w-16 h-16 rounded-2xl bg-brand/10 border border-brand/20 flex items-center justify-center shadow-[0_0_30px_#c3ff0030]",children:n.jsx(t.icon,{className:"w-8 h-8 text-brand-ink"})}),n.jsx("h2",{className:"text-3xl font-bold",children:t.name})]}),n.jsx("p",{className:"text-lg text-muted-foreground mb-6",children:t.description}),n.jsxs("div",{className:"mb-6",children:[n.jsx("span",{className:"text-sm text-muted-foreground font-medium",children:"Powered by:"}),n.jsx("div",{className:"flex flex-wrap gap-2 mt-2",children:t.products.map(s=>n.jsx("span",{className:"px-3 py-1 rounded-full bg-brand/10 border border-brand/20 text-brand-ink text-sm font-semibold shadow-[0_0_15px_rgba(195,255,0,0.1)]",children:s},s))})]}),n.jsx("div",{className:"space-y-3 mb-8",children:t.benefits.map((s,i)=>n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{children:s})]},i))}),n.jsx(V,{to:`/solutions/comms/${t.id}`,children:n.jsxs(M,{variant:"hero",children:["Learn More",n.jsx(K,{className:"w-4 h-4"})]})})]}),n.jsxs("div",{className:`p-8 rounded-3xl border border-border bg-card ${r%2===1?"lg:order-1":""}`,children:[n.jsx("h3",{className:"font-bold mb-4",children:"Ideal For"}),n.jsx("div",{className:"space-y-3",children:t.useCases.map((s,i)=>n.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-xl bg-secondary/50",children:[n.jsx("div",{className:"w-2 h-2 rounded-full bg-brand"}),n.jsx("span",{className:"font-medium",children:s})]},i))})]})]})})},t.id)),n.jsx("section",{className:"py-24 bg-gradient-to-br from-brand/10 via-background to-background",children:n.jsxs("div",{className:"container mx-auto px-6 text-center",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:"Ready to Transform Your Communications?"}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8",children:"Let our solution architects design the perfect communications stack for your business."}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsxs(M,{variant:"hero",size:"lg",children:["Schedule Consultation",n.jsx(K,{className:"w-4 h-4"})]}),n.jsx(M,{variant:"heroOutline",size:"lg",children:"View Case Studies"})]})]})}),n.jsx(ke,{})]})},$N=[{id:"retail-in-a-box",name:"Retail Store-in-a-Box",shortName:"Retail",tagline:"Secure. Resilient. AI-Ready. At Every Store.",description:"Complete edge computing solution for retail locations. Run POS, inventory, and AI-powered analytics locally with central management.",icon:ba,edgexLabel:"In-Store",edgexCapabilities:["Secure Network (SD-WAN, 5G)","PCI & IoT Segmentation","Local App Runtime","Edge AI Inference"],cioReality:{title:"THE CIO REALITY",items:["Stores = mini data centres","Cyber risk at the store edge","AI needs real-time decisions","Tool sprawl â cost & fragility"]},outcomes:["Always-on stores","Reduced cyber blast radius","AI at scale (governed)","Faster store rollout","Lower TCO"],controlx:["Zero-Touch Provisioning","Policy & Patching","Observability & Compliance"],pillars:[{name:"Network",details:["Multi-WAN, POS first QoS"]},{name:"Security",details:["PCI isolation","Zero-Trust Access"]},{name:"AI",details:["Queues","Loss Prevention","Shelf Analytics"]},{name:"Store Apps",details:["Local Integration","Caching","IoT Gateway"]}],vision:"Every store becomes a secure, AI-ready digital asset â centrally controlled, locally intelligent.",useCases:["Retail Chains","Quick Service Restaurants","Convenience Stores"]},{id:"hospital-in-a-box",name:"Hospital-in-a-Box",shortName:"Hospital",tagline:"Secure. Reliable. AI-Ready. At Every Site.",description:"All-in-one edge infrastru
672cture for healthcare. Run clinical apps, medical device management, and AI diagnostics locally with compliance-ready security.",icon:ut,edgexLabel:"On-Site",edgexCapabilities:["Secure Network (SD-WAN, NGFW)","Medical LAN Segmentation","Local Health Apps (VMs + containers)","Edge AI Inference"],cioReality:{title:"THE CIO REALITY",items:["High stakes uptime","Threats at the clinical edge","AI-driven hospital operations","Disjointed network & security"]},outcomes:["Mission-critical uptime","Reduced attack surface","Safe edge AI deployment","Lower TCO"],controlx:["Zero-Touch Provisioning","Policy & Patching","Observability & Compliance"],pillars:[{name:"Network",details:["Multi-WAN","Medical LAN Segments"]},{name:"Security",details:["Medical VLANs","BioMed Device Protection"]},{name:"AI",details:["Bed, Asset, Patient Monitoring","IoT-aware NAC"]},{name:"Clinical Apps",details:["WMS, Conveyor, Palletizer adaptors","Scanner/threat/event caching"]}],vision:"Every hospital site becomes a secure, AI-enabled care zone â centrally controlled, locally intelligent.",useCases:["Hospitals","Clinics","Remote Medical Sites"]},{id:"utility-in-a-box",name:"Utility-in-a-Box",shortName:"Utility",tagline:"Secure. Resilient. Intelligent. At Every Control Node.",description:"Edge infrastructure for utilities and energy. Run SCADA, historian, and AI fault detection locally at substations with OT-grade security.",icon:on,edgexLabel:"Substation",edgexCapabilities:["Dual-Connected WAN (Fiber + LTE/5G)","IT/OT Segmentation Zones","Local SCADA/Historian Runtime","Edge AI Inference (fault, leak, load)"],cioReality:{title:"THE UTILITY CIO REALITY",items:["WA, Substations, Pumping Stations","Cyber risk on unmanned OT","Local AI at substation latency","Regulators demand resilience"]},outcomes:["Resilient substations","Critical OT segregated from IT","AI detection at substation","Local ops, central visibility","Regulator-compliant design"],controlx:["Zero-Touch Provisioning","Resilient Policy Enforcement","Audit-Ready Reporting"],pillars:[{name:"Network",details:["Dual WAN (fiber + LTE/5G)","Deterministic routing for OT SCADA"]},{name:"Security",details:["IT/OT Segmentation (IEC 62443)","Zero-Trust vendor access"]},{name:"AI",details:["Fault prediction","Leak detection","Load forecasting"]},{name:"Local Apps",details:["SCADA gateways","Historian caching","Modbus/DNP3 translation"]}],vision:"Every substation becomes a secure, AI-enabled control node â centrally controlled, regulator compliant.",useCases:["Power Substations","Water Treatment","Gas Distribution"]},{id:"vehicle-in-a-box",name:"Vehicle-in-a-Box",shortName:"Vehicle",tagline:"Secure. Connected. AI-Ready. At Every Fleet Node.",description:"On-board edge computing for fleets. Run AI inference, telematics, and driver safety locally with central fleet orchestration.",icon:il,edgexLabel:"Vehicle-on-Board",edgexCapabilities:["Multi-4G/LTE/5G Network Edge","In-Vehicle Segmentation (CAN bus â infotainment)","AI Inference (ADAS, Driver, Cargo)","Local Apps Runtime (Machine vision, DVR, telematics)"],cioReality:{title:"THE CIO REALITY",items:["Mixed Fleets: EVs, AVs, IoT-Telematics","Cyber risk away from the garage","Vehicle AI needs local inferencing","Operations require real-time data"]},outcomes:["Connected, secure fleets","CAN bus and infotainment walled-off","AI inferencing on-board","Lower costs: diagnostic to dispatch","Regulation-ready by default"],controlx:["Zero-Touch Provisioning","Policy & Patching","Fleetwide Analytic & Compliance"],pillars:[{name:"Network",details:["Multi-4G/Wi-Fi/LTE/5G edge","High-speed, low-latency routing"]},{name:"Security",details:["Infotainment â Engine CAN bus isolation","Zero-trust remote diagnostics/OTA"]},{name:"AI",details:["Driver monitoring (DMS) and ADAS","Cargo monitoring, Anomaly alerts"]},{name:"Vehicle Apps",details:["DVR history & telematics caching","Navigation, dashcam streaming"]}],vision:"Every vehicle becomes an intelligent, AI-ready fleet endpoint â centrally controlled, driver intelligent.",useCases:["Logistics Fleets","Public Transport","Emergency Vehicles"]},{id:"bank-in-a-box",name:"Bank-in-a-Box",shortName:"Bank",tagline:"Secure. Resilient. AI-Enabled. At Every Branch & ATM.",description:"Secure edge infrastru
672cture for financial services. Run banking applications locally with compliance-ready security and real-time fraud detection.",icon:ak,edgexLabel:"at the Edge",edgexCapabilities:["Multi-Access Network Edge (multi-WAN, 5G)","Regulator-Ready Security & Isolation Zones","ATM-Scale AI (Anomaly + Object Detection)","Local Banking Apps (Core, Fraud, Payments)"],cioReality:{title:"THE CIO REALITY",items:["24/7 Branch & ATM continuity","ATMs as branches: Fraud targets","Zero-trust, regulator-ready","Fragmented banking silos"]},outcomes:["24/7 resilient branches + ATMs","Segmented banking zones","AI: Fraud detection + Forensics","Regulation-ready by default"],controlx:["Zero-Touch Provisioning","Policy & Patching","Compliance-Ready Telemetry"],pillars:[{name:"Network",details:["Dual WAN (fiber + LTE/5G)","App-aware routing (POS, ATM, TCR)"]},{name:"Security",details:["PCI isolation","Zero Trust vendor access ATMs"]},{name:"AI",details:["Card, User, ATM fraud patterns","Object detection + people counting"]},{name:"Branch Apps",details:["ATM / TCR / Kiosk core apps","Ledger caching, ATX/FX apps"]}],vision:"Every bank branch & ATM becomes a secure, AI-enabled care zone â centrally orchestrated, regulator compliant.",useCases:["Bank Branches","ATM Networks","Mobile Banking Units"]},{id:"factory-in-a-box",name:"Factory-in-a-Box",shortName:"Factory",tagline:"Secure. AI-Driven. Reliable. At Every Plant.",description:"OT-grade edge infrastructure for manufacturing. Run MES protocols, AI visual inspection, and predictive maintenance locally with IEC-62443 security.",icon:Ua,edgexLabel:"at the Edge",edgexCapabilities:["Multi-Connected OT Edge (fiber + LTE/5G)","IT/OT Segmentation + Security (Zones 0â3)","AI Inspection Inference (Vision, Defect)","Local MES Protocol Runtime (PLC, Modbus, OPC-UA)"],cioReality:{title:"THE COO REALITY",items:["24/7 line + robot uptime","OT exposed to IT threats","Zero-trust, regulator ready","Supply chain + IP risks"]},outcomes:["No unplanned downtime","OT air-gapped from IT","On-site AI visual inspection","Security & supply chain posture"],controlx:["Zero-Touch Provisioning","Policy & Patching","SecOps / Compliance Integration"],pillars:[{name:"Network",details:["Dual WAN (fiber + LTE/5G)","App-aware deterministic routing"]},{name:"Security",details:["OT/IT Zones (IEC-62443)","SecOps vendor access"]},{name:"AI/ML",details:["Real-time vision inference","Predictive maintenance"]},{name:"OT Apps",details:["PLC connectivity","MES integration & local HMI"]}],vision:"Every factory becomes a secure, AI-powered plant-site â centrally controlled, regulator compliant.",useCases:["Manufacturing Plants","Assembly Lines","Warehouses"]}];function xL(e){return $N.find(t=>t.id===e)}const vL=[{id:"private-cloud",name:"Private Cloud",description:"Enterprise-grade private cloud built on CoreX. Replace VMware with an open, AI-ready platform that reduces costs while improving performance.",icon:st,benefits:["60% lower TCO vs VMware","No vendor lock-in with KVM","AI workload ready","Full OpenStack compatibility"],useCases:["Enterprise Data Centers","Government Cloud","Financial Services"]},{id:"managed-vmaas",name:"Managed VMaaS",description:"Virtual Machines as a Service with enterprise SLAs. Fully managed infrastructure without the operational overhead.",icon:Te,benefits:["99.99% uptime SLA","24/7 managed operations","Automated patching & updates","Flexible scaling on demand"],useCases:["Development & Test","Production Workloads","Disaster Recovery"]},{id:"gpu-as-a-service",name:"GPU as a Service",description:"On-demand GPU compute for AI/ML workloads. Access NVIDIA GPUs without capital investment.",icon:Ve,benefits:["Pay-per-use GPU access","Pre-configured ML frameworks","Secure multi-tenant isolation","Direct connection to data"],useCases:["AI Model Training","Inference Workloads","Data Science"]}],yL=()=>{const e=()=>n.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6",children:vL.map(r=>n.jsxs(V,{to:`/solutions/infra/${r.id}`,className:"group p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all duration-300",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(r.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-bold mb-3 group-hover:text-brand-ink transition-colors",children:r.name}),n.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:r.description}),n.jsx("div",{className:"space-y-2 mb-6",children:r.benefits.slice(0,3).map((s,i)=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm",children:s})]},i))}),n.jsxs("div",{className:"pt-4 border-t border-border",children:[n.jsx("span",{className:"text-xs text-muted-foreground",children:"Ideal for:"}),n.jsx("div",{className:"flex flex-wrap gap-1 mt-2",children:r.useCases.map(s=>n.jsx("span",{className:"text-xs px-2 py-1 rounded-full bg-secondary",children:s},s))})]}),n.jsxs("div",{className:"mt-4 flex items-center gap-2 text-sm font-medium text-brand-ink opacity-0 group-hover:opacity-100 transition-opacity",children:["View Details ",n.jsx(K,{className:"w-4 h-4"})]})]},r.id))}),t=()=>n.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6",children:$N.map(r=>{const s=r.icon;return n.jsxs(V,{to:`/solutions/edge/${r.id}`,className:"group p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all duration-300",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center mb-4",children:n.jsx(s,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"text-xl font-bold mb-2 group-hover:text-brand-ink transition-colors",children:r.name}),n.jsx("p",{className:"text-sm italic text-brand-ink/60 mb-3",children:r.tagline}),n.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:r.description}),n.jsx("div",{className:"space-y-2 mb-6",children:r.outcomes.slice(0,3).map((i,a)=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm",children:i})]},a))}),n.jsxs("div",{className:"pt-4 border-t border-border",children:[n.jsx("span",{className:"text-xs text-muted-foreground",children:"Ideal for:"}),n.jsx("div",{className:"flex flex-wrap gap-1 mt-2",children:r.useCases.map(i=>n.jsx("span",{className:"text-xs px-2 py-1 rounded-full bg-secondary",children:i},i))})]}),n.jsxs("div",{className:"mt-4 flex items-center gap-2 text-sm font-medium text-brand-ink opacity-0 group-hover:opacity-100 transition-opacity",children:["View Details ",n.jsx(K,{className:"w-4 h-4"})]})]},r.id)})});return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"Distributed Infrastru
672cture Solutions â HookZ.ai",description:"Private cloud, Managed VMaaS, GPU-as-a-Service, and edge solutions built on HookZ InfraX.",path:"/solutions/distributed-infrastructure"}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-brand/5 via-transparent to-transparent"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:"/solutions",className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-8 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),"Back to Solutions"]}),n.jsxs("div",{className:"max-w-4xl",children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-brand/10 border border-brand/20 mb-6",children:[n.jsx(Ve,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:"Distributed Infrastructure Solutions"})]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-6",children:["From Data Center to ",n.jsx("span",{className:"text-brand-ink",children:"Edge"})]}),n.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mb-8",children:"Pre-configured solutions built on HookZ InfraX platform. Deploy private cloud, managed services, or edge infrastructure in weeks, not months."}),n.jsxs("div",{className:"flex flex-wrap gap-4",children:[n.jsxs(M,{variant:"hero",size:"lg",children:["Explore Solutions",n.jsx(K,{className:"w-4 h-4"})]}),n.jsx(M,{variant:"heroOutline",size:"lg",children:"Request Assessment"})]})]})]})]}),n.jsx("section",{className:"py-24",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs(Qg,{defaultValue:"corex",className:"w-full",children:[n.jsxs(Wu,{className:"grid w-full max-w-md mx-auto grid-cols-2 mb-12",children:[n.jsxs(Cs,{value:"corex",className:"data-[state=active]:bg-brand data-[state=active]:text-black",children:[n.jsx(Te,{className:"w-4 h-4 mr-2"}),"CoreX Solutions"]}),n.jsxs(Cs,{value:"edgex",className:"data-[state=active]:bg-brand data-[state=active]:text-black",children:[n.jsx(Ve,{className:"w-4 h-4 mr-2"}),"EdgeX Solutions"]})]}),n.jsxs(Es,{value:"corex",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Data Center Solutions"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"Enterprise private cloud and managed services built on CoreX. Replace VMware and Nutanix with an open, cost-effective platform."})]}),e()]}),n.jsxs(Es,{value:"edgex",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Edge Solutions"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"Industry-specific edge computing solutions built on EdgeX. Complete infrastru
672cture in a box for every vertical."})]}),t()]})]})})}),n.jsx("section",{className:"py-24 bg-gradient-to-br from-brand/10 via-background to-background",children:n.jsxs("div",{className:"container mx-auto px-6 text-center",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:"Ready to Modernize Your Infrastructure?"}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8",children:"Get a free assessment of your current infrastructure and learn how HookZ InfraX can reduce costs while improving performance."}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsxs(M,{variant:"hero",size:"lg",children:["Get Free Assessment",n.jsx(K,{className:"w-4 h-4"})]}),n.jsx(M,{variant:"heroOutline",size:"lg",children:"Download TCO Calculator"})]})]})}),n.jsx(ke,{})]})},bL="/assets/retail-in-a-box-CRmGxAKO.png",wL="/assets/hospital-in-a-box-0t6ZdU3P.png",jL="/assets/utility-in-a-box-kZoIbWVq.png",kL="/assets/vehicle-in-a-box-CX5QvIpw.png",NL="/assets/bank-in-a-box-Dmv7kc2Z.png",SL="/assets/factory-in-a-box-BosZnV3f.png",CL={"retail-in-a-box":bL,"hospital-in-a-box":wL,"utility-in-a-box":jL,"vehicle-in-a-box":kL,"bank-in-a-box":NL,"factory-in-a-box":SL},EL=()=>{const{solutionId:e}=Yf(),t=e?xL(e):void 0;if(!t)return n.jsx(Tl,{to:"/solutions/distributed-infrastructure",replace:!0});const r=t.icon;return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:`${t.name} â HookZ EdgeX | HookZ.ai`,description:t.description.slice(0,155),path:`/solutions/edge/${t.id}`}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-brand/5 via-transparent to-transparent"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:"/solutions/distributed-infrastructure",className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-8 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),"Back to Infrastructure Solutions"]}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-brand/10 border border-brand/20 mb-6",children:[n.jsx(r,{className:"w-4 h-4 text-brand-ink"}),n.jsxs("span",{className:"text-sm font-medium",children:["HookZ EdgeX â ",t.shortName]})]}),n.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-4",children:[t.name.split("-in-a-Box")[0],"-",n.jsx("span",{className:"text-brand-ink",children:"in-a-Box"})]}),n.jsx("p",{className:"text-xl italic text-brand-ink/80 mb-4",children:t.tagline}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:t.description}),n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Talk to an Expert",n.jsx(K,{className:"w-4 h-4"})]})})]}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-radial from-brand/15 via-transparent to-transparent blur-3xl"}),n.jsx("img",{src:CL[t.id],alt:`${t.name} edge architecture diagram`,width:1280,height:896,loading:"lazy",className:"relative w-full h-auto drop-shadow-[0_0_40px_rgba(195,255,0,0.15)]"})]})]})]})]}),n.jsx("section",{className:"py-24",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-3 gap-8",children:[n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-6",children:[n.jsx(fk,{className:"w-5 h-5 text-yellow-500"}),n.jsx("h3",{className:"text-lg font-bold uppercase tracking-wider text-yellow-500",children:t.cioReality.title})]}),n.jsx("ul",{className:"space-y-3",children:t.cioReality.items.map((s,i)=>n.jsxs("li",{className:"flex items-start gap-3 text-muted-foreground",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-yellow-500 mt-2 shrink-0"}),s]},i))})]}),n.jsxs("div",{className:"p-6 rounded-2xl border-2 border-brand/30 bg-brand/[0.03]",children:[n.jsx("div",{className:"text-center mb-6",children:n.jsxs("h3",{className:"text-xl font-bold",children:["HookZ EdgeX ",n.jsxs("span",{className:"text-brand-ink",children:["(",t.edgexLabel,")"]})]})}),n.jsx("div",{className:"space-y-4",children:t.edgexCapabilities.map((s,i)=>n.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-xl border border-brand/10 bg-brand/[0.02]",children:[n.jsx(Ce,{className:"w-4 h-4 text-brand-ink shrink-0"}),n.jsx("span",{className:"text-sm font-medium",children:s})]},i))}),n.jsxs("div",{className:"mt-6 pt-6 border-t border-brand/20",children:[n.jsx("h4",{className:"text-sm font-bold text-muted-foreground mb-3",children:"ControlX (Central Orchestration)"}),n.jsx("ul",{className:"space-y-2",children:t.controlx.map((s,i)=>n.jsxs("li",{className:"text-sm text-muted-foreground flex items-center gap-2",children:[n.jsx("span",{className:"w-1 h-1 rounded-full bg-brand"}),s]},i))})]})]}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-6",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink"}),n.jsx("h3",{className:"text-lg font-bold uppercase tracking-wider text-brand-ink",children:"BUSINESS OUTCOMES"})]}),n.jsx("ul",{className:"space-y-3",children:t.outcomes.map((s,i)=>n.jsxs("li",{className:"flex items-start gap-3",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink mt-0.5 shrink-0"}),n.jsx("span",{children:s})]},i))})]})]})})}),n.jsx("section",{className:"py-24 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsx("h2",{className:"text-3xl font-bold text-center mb-12",children:"Platform Pillars"}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-6",children:t.pillars.map(s=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card text-center",children:[n.jsx("h3",{className:"text-lg font-bold text-brand-ink mb-4",children:s.name}),n.jsx("ul",{className:"space-y-2",children:s.details.map((i,a)=>n.jsx("li",{className:"text-sm text-muted-foreground",children:i},a))})]},s.name))})]})}),n.jsx("section",{className:"py-16 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsx("h2",{className:"text-3xl font-bold text-center mb-8",children:"Ideal For"}),n.jsx("div",{className:"flex flex-wrap justify-center gap-4",children:t.useCases.map(s=>n.jsx("span",{className:"px-6 py-3 rounded-full border border-brand/20 bg-brand/5 text-sm font-medium",children:s},s))})]})}),n.jsx("section",{className:"py-24 bg-gradient-to-br from-brand/10 via-background to-background",children:n.jsxs("div",{className:"container mx-auto px-6 text-center",children:[n.jsxs("p",{className:"text-xl md:text-2xl italic text-muted-foreground max-w-3xl mx-auto mb-10",children:['"',t.vision,'"']}
672),n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Talk to an Expert",n.jsx(K,{className:"w-4 h-4"})]})})]})}),n.jsx(ke,{})]})},AL="/assets/private-cloud-CPI20cby.png",PL="/assets/managed-vmaas-5ti1GHYg.png",TL="/assets/gpu-as-a-service-Cy8ZtXnP.png",_L="/assets/contact-center-Ce0mo3m-.png",IL="/assets/unified-communications-BPtzD_ql.png",RL="/assets/cpaas-integration-DIG2d_L-.png",OL="/assets/sbc-as-a-service-DtDyd83z.png",ML="/assets/global-sip-Bk-CKx6d.png",DL=[{slug:"private-cloud",category:"infra",categoryLabel:"HookZ CoreX â Private Cloud",backHref:"/solutions/distributed-infrastructure",backLabel:"Back to Infrastructure Solutions",name:"Private Cloud",tagline:"Open. Sovereign. AI-Ready. The VMware Alternative.",description:"An enterprise-grade private cloud built on CoreX. Replace legacy virtualisation with an open, KVM-based platform that runs traditional VMs, containers and AI workloads â without vendor lock-in or per-core taxes.",icon:st,diagram:AL,diagramAlt:"HookZ CoreX private cloud architecture diagram",audience:["CIO / CTO","Head of Infrastructure","Cloud Architect"],challenges:{title:"THE CIO REALITY",items:["VMware licensing costs spiralling post-Broadcom","AI workloads stranded on legacy hypervisors","Sovereignty and data residency mandates","Skills lock-in to a single vendor stack"]},capabilities:[{name:"KVM Hypervisor",detail:"Open, hardened, carrier-grade virtualisation"},{name:"Software-Defined Storage",detail:"Distributed block + object, no proprietary SAN"},{name:"GPU Pass-Through",detail:"Native NVIDIA GPU + vGPU for AI inference & training"},{name:"Multi-Tenancy",detail:"Hard isolation for business units and regulated workloads"},{name:"OpenStack-Compatible APIs",detail:"Portable workloads, no proprietary control plane"},{name:"Built-In DR",detail:"Async replication, snapshots, immutable backups"}],outcomes:[{metric:"60%",label:"Lower TCO vs VMware"},{metric:"0",label:"Vendor lock-in"},{metric:"99.99%",label:"Platform uptime"},{metric:"Weeks",label:"Time-to-deploy (not months)"}],poweredBy:["HookZ CoreX","HookZ ControlX"],useCases:["Enterprise Data Centres","Sovereign / Government Cloud","Banking & Financial Services","Telco NFV"],vision:"A private cloud you actually own â open, AI-ready, and economically sane at any scale."},{slug:"managed-vmaas",category:"infra",categoryLabel:"HookZ CoreX â Managed Service",backHref:"/solutions/distributed-infrastructure",backLabel:"Back to Infrastructure Solutions",name:"Managed VMaaS",tagline:"Virtual Machines as a Service. Operated. Patched. Guaranteed.",description:"Enterprise virtual machines delivered as a fully managed service on HookZ CoreX. We run the platform, patch the stack, monitor the SLOs â you ship workloads.",icon:Te,diagram:PL,diagramAlt:"HookZ Managed VMaaS service architecture diagram",audience:["VP IT Operations","Platform Engineering Lead","Procurement"],
672challenges:{title:"THE OPS REALITY",items:["Hyperscaler bills unpredictable and rising","In-house ops teams stretched thin","Compliance audits demand evidence, not promises","Test/dev environments multiplying out of control"]},capabilities:[{name:"Enterprise SLAs",detail:"99.99% availability, 24Ã7 follow-the-sun NOC"},{name:"Automated Patching",detail:"OS, hypervisor and firmware managed end-to-end"},{name:"Elastic Capacity",detail:"Scale CPU, RAM and storage on demand â pay for what you use"},{name:"Backup & DR Included",detail:"Daily backups, cross-region replication, tested restores"},{name:"Single Pane Observability",detail:"Performance, cost and compliance in one console"},{name:"Predictable Billing",detail:"Reserved capacity + burst â no surprise egress fees"}],outcomes:[{metric:"40%",label:"Cheaper than hyperscaler IaaS"},{metric:"24/7",label:"Managed operations"},{metric:"<15 min",label:"VM provisioning"},{metric:"0",label:"Capex required"}],poweredBy:["HookZ CoreX","HookZ ControlX","HookZ Managed Services"],useCases:["Dev / Test Environments","Production Workloads","Disaster Recovery","SAP & Database Hosting"],vision:"Cloud economics with private-cloud control â operated by people who answer the phone."},{slug:"gpu-as-a-service",category:"infra",categoryLabel:"HookZ CoreX â AI Infrastructure",backHref:"/solutions/distributed-infrastructure",backLabel:"Back to Infrastructure Solutions",name:"GPU as a Service",tagline:"On-Demand AI Compute. Sovereign. Multi-Tenant. Production-Ready.",description:"Access NVIDIA H100, L40S and A100 GPUs on demand for AI training and inference â without the capital cost or lead-time of building your own AI factory.",icon:Ve,diagram:TL,diagramAlt:"HookZ GPU-as-a-Service AI compute platform diagram",audience:["Head of AI / ML","Chief Data Officer","Research & Innovation Lead"],challenges:{title:"THE AI REALITY",items:["GPU supply constrained, hyperscaler quotas blocked","Sovereign data can't leave national borders","Inference latency kills real-time use cases","MLOps team drowning in cluster operations"]},capabilities:[{name:"Latest NVIDIA GPUs",detail:"H100, L40S, A100 â bare-metal or virtualised vGPU"},{name:"Pre-Built ML Stack",detail:"PyTorch, TensorFlow, Triton, NeMo, vLLM ready to go"},{name:"Secure Multi-Tenancy",detail:"Tenant-isolated networks, encrypted at rest and in flight"},{name:"InfiniBand Fabric",detail:"Non-blocking 400 Gb/s for large-model training"},{name:"Sovereign Hosting",detail:"Deployed in-country, no data crosses borders"},{name:"Per-Hour Billing",detail:"Burst or reserve â no minimum commit"}],outcomes:[{metric:"Hours",label:"From signup to first training job"},{metric:"70%",label:"Cheaper than hyperscaler GPU rental"},{metric:"100%",label:"Sovereign data residency"},{metric:"400 Gb/s",label:"Inter-node fabric"}],poweredBy:["HookZ CoreX","HookZ CortexAI","NVIDIA Reference Architecture"],useCases:["LLM Training & Fine-Tuning","Production Inference","Computer Vision","Scientific Computing"],vision:"An AI factory you can rent by the hour â built where your data lives."},{slug:"contact-center",category:"comms",categoryLabel:"HookZ CX â Contact Center",backHref:"/solutions/enterprise-communications",backLabel:"Back to Communications Solutions",name:"Contact Center Transformation",tagline:"AI-Native Customer Engagement. Every Channel. Every Conversation.",description:"Modernise legacy contact centres with an AI-native omnichannel platform. Unify voice, chat, email, social and messaging behind a single agent desktop with real-time AI assist and conversational analytics.",icon:Br,diagram:_L,diagramAlt:"HookZ CX AI-powered omnichannel contact center diagram",audience:["VP Customer Experience","Head of Contact Centre","CX Operations"],challenges:{title:"THE CX REALITY",items:["Customers expect Amazon-level service on every channel","Agent attrition above 30% â training never catches up","Legacy IVRs frustrate customers and inflate AHT","Quality assurance limited to 2% of conversations"]},capabilities:[{name:"Omnichannel Routing",detail:"Voice, web chat, WhatsApp, email, SMS, social â one queue"}
672,{name:"Conversational AI",detail:"Self-serve voice and chatbots that actually resolve issues"},{name:"Real-Time Agent Assist",detail:"AI suggests answers, next-best-action and compliance prompts"},{name:"Voice Analytics",detail:"100% of calls scored for sentiment, intent and compliance"},{name:"Workforce Management",detail:"AI-driven forecasting, scheduling and adherence"},{name:"Open CRM Integration",detail:"Salesforce, Dynamics, ServiceNow, custom â pre-built connectors"}],outcomes:[{metric:"40%",label:"Reduction in average handle time"},{metric:"25%",label:"Improvement in first-call resolution"},{metric:"+18pts",label:"CSAT lift in 90 days"},{metric:"100%",label:"Call coverage for QA"}],poweredBy:["HookZ CX","HookZ Connect","HookZ CortexAI"],useCases:["Customer Support Centres","Sales & Telemarketing","Technical Support","Collections"],vision:"Every conversation is a competitive advantage â measured, assisted and continuously improved."},{slug:"unified-communications",category:"comms",categoryLabel:"HookZ Meet & Connect â UCaaS",backHref:"/solutions/enterprise-communications",backLabel:"Back to Communications Solutions",name:"Unified Communications",tagline:"Voice. Video. Messaging. One Platform. Any Device.",description:"Replace fragmented PBX, meetings and chat tools with one enterprise-grade UCaaS platform. Carrier-grade voice, HD video, persistent messaging and presence â secure by default, integrated with the tools your teams already use.",icon:Pi,diagram:IL,diagramAlt:"HookZ Unified Communications platform architecture diagram",audience:["CIO","Head of Workplace Technology","IT Director"],challenges:{title:"THE WORKPLACE REALITY",items:["Legacy PBX nearing end-of-life and unsupportable","Hybrid workforce needs consistent UX everywhere","Shadow IT meeting tools fragmenting collaboration","Telco bills opaque, contracts long, control limited"]},capabilities:[{name:"Cloud PBX",detail:"Global enterprise telephony with carrier-grade voice quality"},{name:"HD Video Meetings",detail:"Up to 1000 participants, native room-system support"},{name:"Persistent Messaging",detail:"Team channels, DMs, file share, search â federated"},{name:"E2E Encryption",detail:"Encrypted media and signalling, SSO/MFA enforced"},{name:"SBC + Voice Edge",detail:"Bring your own carrier, hybrid analogue/SIP, survivable branch"},{name:"Calendar & CRM Hooks",detail:"Microsoft 365, Google Workspace, Salesforce native"}],outcomes:[{metric:"1",label:"Platform replacing 4+ tools"},{metric:"35%",label:"Comms cost reduction"},{metric:"Any",label:"Device, anywhere access"},{metric:"SOC 2",label:"+ ISO 27001 certified"}],poweredBy:["HookZ Meet","HookZ Connect","HookZ Voice Edge"],useCases:["Remote & Hybrid Work","Global Distributed Teams","Executive Comms","Frontline Workers"],vision:"One conversation, continuous across every device â built for how enterprises actually work."},{slug:"cpaas-integration",category:"comms",categoryLabel:"HookZ Connect â CPaaS",backHref:"/solutions/enterprise-communications",backLabel:"Back to Communications Solutions",name:"Communications API Platform",tagline:"Embed Voice, Messaging & Video. Programmable. Global. Pay-As-You-Go.",description:"A developer-first CPaaS that puts voice, SMS, WhatsApp, video and verification behind clean APIs and SDKs. Embed enterprise-grade communications into any product, workflow or customer journey.",icon:kt,diagram:RL,diagramAlt:"HookZ Connect Communications Platform-as-a-Service architecture",audience:["VP Engineering","Head of Product","Digital Transformation Lead"],challenges:{title:"THE PRODUCT REALITY",items:["Building comms in-house is a 12-month detour","Global carrier coverage is messy and expensive","Verification and 2FA fraud growing fast","Apps need conversational, not transactional, comms"]},capabilities:[{name:"Voice & Video APIs",detail:"Programmable PSTN, WebRTC, conferencing and recording"},{name:"Messaging APIs",detail:"SMS, WhatsApp, RCS, Viber â single endpoint, global reach"},{name:"Verification & 2FA",detail:"OTP, silent network auth, flash call, signal-grade fraud protection"},{name:"Number Management",detail:"Local, mobile and toll-free in 100+ countries"},{name:"Visual Flow Builder",detail:"Low-code orchestration of journeys without re-deploying"}
672,{name:"Webhooks + SDKs",detail:"Node, Python, Go, Java, .NET, mobile native"}],outcomes:[{metric:"<1 day",label:"From signup to first message"},{metric:"100+",label:"Country coverage"},{metric:"99.95%",label:"API availability SLA"},{metric:"Usage",label:"Based pricing â no commit"}],poweredBy:["HookZ Connect","HookZ Voice Edge"],useCases:["SaaS Applications","Customer Portals","Workflow Automation","Marketplaces & Fintech"],vision:"Communications as a building block â composable, global, and ready when your roadmap is."},{slug:"sbc-as-a-service",category:"comms",categoryLabel:"HookZ Voice Edge â SBC as a Service",backHref:"/solutions/enterprise-communications",backLabel:"Back to Communications Solutions",name:"SBC as a Service",tagline:"Enterprise SBC without the infrastructure burden.",description:"HookZ VoiceEdge SBCaaS delivers enterprise-grade Session Border Controller capability as a service â removing the complexity of procuring, licensing, maintaining and supporting SBC infrastructure. Choose between Cloud SBCaaS for a fully hosted voice edge or On-Premises SBCaaS when regulatory, security, architecture or local survivability requirements demand an SBC within your environment.",icon:Ce,diagram:OL,diagramAlt:"Architecture diagram: enterprise Microsoft Teams, UC platform and contact centre connect over encrypted TLS and SRTP tunnels to a highly available cloud-hosted SBCaaS cluster and an on-premises SBC appliance, which in turn connect to SIP carrier and PSTN networks.",diagramCaption:"SBCaaS architecture â enterprise UC, Teams and contact centre traffic secured through cloud-hosted or on-premises session border controllers before reaching SIP and PSTN carriers.",audience:["Head of Voice","CIO","Network Architect","Compliance Officer"],challenges:{title:"THE VOICE EDGE REALITY",items:["SBC procurement cycles are slow and capital-intensive","Firmware, security patches and lifecycle management drain operations","Teams, contact centres and UC platforms need secure, interoperable SIP","On-premises requirements clash with as-a-service operating models"]},capabilities:[{name:"Cloud SBCaaS",detail:"Fully hosted, managed SBC with dedicated or shared options"},{name:"On-Premises SBCaaS",detail:"Appliance as a subscription â HookZ owns the hardware lifecycle"},{name:"High Availability",detail:"Multi-region, redundant voice-edge architecture"},{name:"Teams Direct Routing",detail:"Certified Microsoft Teams SIP connectivity"},{name:"SIP Security",detail:"Topology hiding, TLS, SRTP and fraud protection"},{name:"Hot Spare Continuity",detail:"Shared or dedicated regional spares for rapid recovery"}],outcomes:[{metric:"0",label:"SBC capital outlay"},{metric:"24/7",label:"Operational support options"},{metric:"Hours",label:"To restore with hot spare"},{metric:"1",label:"Vendor for SBC lifecycle"}],poweredBy:["HookZ Voice Edge"],useCases:["Cloud-first enterprises","Microsoft Teams","CCaaS","UCaaS","Regulated on-premises"],vision:"Consume enterprise voice security as a service â not as a hardware project.",faqs:[{question:"How does onboarding to SBCaaS work?",answer:"Onboarding starts with a voice discovery workshop covering your platforms, SIP carriers, numbering and security requirements. HookZ then produces a target design, builds the cloud SBC tenancy or ships the on-premises appliance, completes interoperability testing with your UC, Teams or contact centre platform, and runs a controlled cutover with rollback in place."},{question:"What are typical deployment timelines?",answer:"Cloud SBCaaS deployments are typically live within 2 to 4 weeks, including Microsoft Teams Direct Routing and carrier interconnect testing. On-premises SBCaaS timelines depend on hardware logistics and import clearance for the target country, and are usually 4 to 8 weeks from order confirmation."},{question:"Which deployment options are available?",answer:"You can choose Cloud SBCaaS as a fully hosted, HookZ-operated voice edge with dedicated or shared SBC options and multi-region resilience, or On-Premises SBCaaS where a physical or virtual SBC sits in your data centre, office or edge site on a subscription basis with HookZ retaining hardware ownership and lifecycle responsibility. Hybrid designs combining both are supported."},{question:"What support levels are offered?",answer:"Business-hours and 24x7x365 support options are available, with defined response targets by severity. All tiers include softw
672are and firmware lifecycle management, security patching, OEM support management and RMA coordination. Optional Managed Operations adds centralised monitoring and management through a HookZ-hosted platform such as AudioCodes OVOC or Ribbon RAMP."},{question:"What happens if on-premises SBC hardware fails?",answer:"Eligible On-Prem SBCaaS deployments can use Shared Regional Hot Spares on a best-efforts basis, subject to compatible inventory being available, so service can be restored while the permanent replacement progresses through the purchased RMA service. Mission-critical sites can purchase a Dedicated Regional Hot Spare reserved for their deployment with a next-business-day local delivery target, subject to service location and logistics conditions."},{question:"Do we still own our carrier and numbering relationships?",answer:"Yes. SBCaaS is carrier-neutral. You can keep existing SIP trunks and number ranges, bring your own carrier, or consolidate onto HookZ VoiceEdge Global SIP later without redesigning the voice edge."}]},{slug:"global-sip",category:"comms",categoryLabel:"HookZ Voice Edge â Global SIP",backHref:"/solutions/enterprise-communications",backLabel:"Back to Communications Solutions",name:"Global SIP",tagline:"One enterprise voice strategy. Global PSTN reach.",description:"HookZ VoiceEdge Global SIP simplifies how multinational organisations connect their communications platforms to voice services across countries. Instead of managing a fragmented estate of SIP providers, commercial agreements and integrations, enterprises gain a consistent service and operational layer for connecting Microsoft Teams, contact centres, UC platforms and enterprise telephony to PSTN services across supported markets.",icon:kt,diagram:ML,diagramAlt:"Architecture diagram: enterprise UC, Microsoft Teams and contact centre platforms connect into a single global SIP connectivity service layer providing high availability, SBC security and monitoring, which links to regional PSTN points across North America, Europe, Middle East, India and Asia through multiple licensed carriers.",diagramCaption:"Global SIP architecture â one enterprise service layer for SIP trunking, SBC security and monitoring across multiple regional carriers and PSTN markets.",audience:["Global CIO","Head of Telecom","UC Architect","Procurement"],
672challenges:{title:"THE GLOBAL VOICE REALITY",items:["Fragmented SIP providers in every country","Different commercial terms, support models and integrations","Regulatory and numbering complexity per market","Inconsistent voice quality and operational visibility"]},capabilities:[{name:"Global PSTN Reach",detail:"Inbound, outbound, local and international calling across markets"},{name:"Teams Direct Routing",detail:"Consistent Microsoft Teams voice connectivity worldwide"},{name:"Number Services",detail:"Geographic, non-geographic, porting and CLI where available"},{name:"Carrier Abstraction",detail:"One service layer across multiple underlying operators"},{name:"SBC Security",detail:"Integrated SBC security, TLS and SRTP"},{name:"Centralised Operations",detail:"Single support model, consolidated billing and monitoring"}],outcomes:[{metric:"1",label:"Global voice service layer"},{metric:"Many",label:"Markets, one operating model"},{metric:"24/7",label:"Operational support"},{metric:"Simplified",label:"Carrier sourcing and support"}],poweredBy:["HookZ Voice Edge"],useCases:["Multinational enterprises","Microsoft Teams Direct Routing","Contact centres","UC and PBX integration"],vision:"One enterprise voice strategy that respects every country's telecommunications reality.",faqs:[{question:"How does onboarding to Global SIP work?",answer:"HookZ begins with a country-by-country requirements review covering existing carriers, number ranges, calling patterns and regulatory obligations. We then confirm availability in each market with the underlying licensed telecommunications providers, configure SIP connectivity and SBC security, complete test calling, and migrate market by market to avoid business disruption."},{question:"What are typical activation timelines?",answer:"Service activation in an established market is typically 2 to 4 weeks. Number porting timelines are set by the local regulator and losing carrier and commonly add a further 2 to 8 weeks. New market enablement or regulated number types can take longer depending on local licensing and documentation requirements."},{question:"What deployment options are supported?",answer:"Global SIP can terminate into a HookZ-hosted cloud SBC, into an on-premises or hybrid SBC estate, or directly into Microsoft Teams Direct Routing, contact centre and UC platforms. Enterprises can adopt it globally or run it alongside incumbent carriers during a ph
672ased consolidation."},{question:"What support levels are available?",answer:"A single consolidated support model covers every supported market, with business-hours and 24x7x365 options, defined severity-based response targets, proactive monitoring, call-quality reporting and one escalation path across all underlying carriers."},{question:"Can we keep our existing numbers and carriers?",answer:"Yes. Number porting is supported where the local regulatory framework allows, and existing carrier contracts can remain in place in selected markets while HookZ provides the consistent service and operational layer around them."},{question:"How are country regulations handled?",answer:"PSTN connectivity is delivered through appropriately licensed local and international telecommunications providers according to the regulatory requirements of each supported country. Availability, functionality, emergency calling and numbering rules vary by market and underlying licensed provider."}]}];function LL(e){return DL.find(t=>t.slug===e)}const gb=({expectedCategory:e})=>{const{slug:t}=Yf(),r=t?LL(t):void 0;if(!r||r.category!==e)return n.jsx(Tl,{to:e==="infra"?"/solutions/distributed-infrastructure":"/solutions/enterprise-communications",replace:!0});const s=r.icon;return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:`${r.name} â ${r.categoryLabel} | HookZ.ai`,description:r.description.slice(0,155),path:`/solutions/${r.category}/${r.slug}`}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-brand/5 via-transparent to-transparent"}),n.jsxs("div",{className:"container mx-auto px-6 relative",children:[n.jsxs(V,{to:r.backHref,className:"inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-8 transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"}),r.backLabel]}),n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-brand/10 border border-brand/20 mb-6",children:[n.jsx(s,{className:"w-4 h-4 text-brand-ink"}),n.jsx("span",{className:"text-sm font-medium",children:r.categoryLabel})]}),n.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-bold mb-4 leading-tight",children:r.name}),n.jsx("p",{className:"text-xl italic text-brand-ink/80 mb-6",children:r.tagline}),n.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:r.description}),n.jsx("div",{className:"flex flex-wrap gap-3 mb-8",children:r.audience.map(i=>n.jsxs("span",{className:"px-3 py-1 rounded-full border border-border bg-card text-xs font-medium text-muted-foreground",children:["For ",i]},i))}),n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Talk to an Expert",n.jsx(K,{className:"w-4 h-4"})]})})]}),n.jsxs("figure",{className:"relative m-0",children:[n.jsx("div",{"aria-hidden":"true",className:"absolute inset-0 bg-gradient-radial from-brand/15 via-transparent to-transparent blur-3xl"}),n.jsx("img",{src:r.diagram,alt:r.diagramAlt,width:1536,height:1024,loading:"eager",decoding:"async",fetchpriority:"high",className:"relative w-full h-auto drop-shadow-[0_0_40px_rgba(195,255,0,0.15)]"}),r.diagramCaption&&n.jsx("figcaption",{className:"relative mt-4 text-sm text-muted-foreground text-center max-w-xl mx-auto",children:r.diagramCaption})]})]})]})]}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-8",children:[n.jsxs("div",{className:"p-8 rounded-2xl border border-yellow-500/20 bg-yellow-500/[0.02]",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-6",children:[n.jsx(fk,{className:"w-5 h-5 text-yellow-500"}),n.jsx("h3",{className:"text-lg font-bold uppercase tracking-wider text-yellow-500",children:r.challenges.title})]}),n.jsx("ul",{className:"space-y-4",children:r.challenges.items.map((i,a)=>n.jsxs("li",{className:"flex items-start gap-3 text-muted-foreground",children:[n.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-yellow-500 mt-2 shrink-0"}),n.jsx("span",{children:i})]},a))})]}),n.jsxs("div",{className:"p-8 rounded-2xl border-2 border-brand/30 bg-brand/[0.03]",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-6",children:[n.jsx(oT,{className:"w-5 h-5 text-brand-ink"}),n.jsx("h3",{className:"text-lg font-bold uppercase tracking-wider text-brand-ink",children:"Business Outcomes"})]}),n.jsx("div",{className:"grid grid-cols-2 gap-4",children:r.outcomes.map((i,a)=>n.jsxs("div",{className:"p-4 rounded-xl border border-brand/10 bg-background/40",children:[n.jsx("div",{className:"text-3xl font-bold text-brand-ink mb-1",children:i.metric}),n.jsx("div",{className:"text-sm text-muted-foreground",children:i.label})]},a))})]})]})})}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-4",children:"Platform Capabilities"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"Production-grade building blocks â battle-tested in mission-critical enterprise environments."})]}),n.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6",children:r.capabilities.map((i,a)=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-brand/30 transition-all",children:[n.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[n.jsx(ie,{className:"w-5 h-5 text-brand-ink shrink-0"}),n.jsx("h3",{className:"font-bold",children:i.name})]}),n.jsx("p",{className:"text-sm text-muted-foreground",children:i.detail})]},a))})]})}),n.jsx("section",{className:"py-20 border-t border-border",children:n.jsxs("div",{className:"container mx-auto px-6 grid lg:grid-cols-2 gap-12",children:[n.jsxs("div",{children:[n.jsx("h3",{className:"text-2xl font-bold mb-6 text-foreground",children:"Powered By"}),n.jsx("div",{className:"flex flex-wrap gap-3",children:r.poweredBy.map(i=>n.jsx("span",{className:"px-4 py-2 rounded-full border border-brand/30 bg-brand/10 text-sm font-semibold text-brand-ink shadow-[0_0_15px_rgba(195,255,0,0.15)]",children:i},i))})]}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-2xl font-bold mb-6",children:"Ideal For"}),n.jsx("div",{className:"flex flex-wrap gap-3",children:r.useCases.map(i=>n.jsx("span",{className:"px-4 py-2 rounded-full border border-border bg-card text-sm font-medium",children:i},i))})]})]})}),r.faqs&&r.faqs.length>0&&n.jsx("div",{className:"border-t border-border",children:n.jsx(mn,{title:`${r.name} â Frequently Asked Questions`,subtitle:"Onboarding, timelines, deployment options and support levels.",faqs:r.faqs})}),n.jsx("section",{className:"py-24 bg-gradient-to-br from-brand/10 via-background to-background",children:n.jsxs("div",{className:"container mx-auto px-6 text-center",children:[n.jsxs("p",{className:"text-xl md:text-2xl italic text-muted-foreground max-w-3xl mx-auto mb-10",children:['"',r.vision,'"']}
672),n.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",children:["Talk to an Expert",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(V,{to:r.backHref,children:n.jsx(M,{variant:"heroOutline",size:"lg",children:"View All Solutions"})})]})]})}),n.jsx(ke,{})]})},HL=()=>{const e=[{icon:pk,title:"Mission-Driven",description:"We exist to give enterprises sovereign control over their communications and infrastructure â without the complexity or lock-in of legacy vendors."},{icon:Id,title:"AI-Native Thinking",description:"Every product is built with AI at the core, not bolted on. Intelligence is woven into orchestration, security, and operations from day one."},{icon:Ce,title:"Open & Sovereign",description:"We champion open standards, modular architectures, and data sovereignty â ensuring customers own their infrastructure destiny."},{icon:an,title:"Customer-Centric",description:"We build for CIOs, CTOs, and platform teams who demand transparency, performance, and commercially sustainable partnerships."}],t=[{value:"2",label:"Product Portfolios"},{value:"7+",label:"Core Products"},{value:"Global",label:"Reach"},{value:"AI-Native",label:"Architecture"}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"About HookZ.ai â The AI-Native Platform Company",description:"HookZ.ai builds AI-native enterprise communications and distributed hybrid infrastructure across Dubai, India, and the UK.",path:"/about"}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-16 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-dual"}),n.jsx("div",{className:"absolute top-0 right-1/4 w-[500px] h-[500px] bg-primary/[0.03] rounded-full blur-3xl"}),n.jsx("div",{className:"container mx-auto px-6 relative",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 items-center",children:[n.jsx("div",{className:"relative",children:n.jsxs("div",{className:"bg-primary rounded-[2rem] rounded-br-[4rem] p-10 md:p-12 relative overflow-hidden",children:[n.jsx("div",{className:"absolute bottom-0 right-0 w-24 h-24 bg-background rounded-tl-[3rem]"}),n.jsx("p",{className:"text-sm text-primary-foreground/70 mb-4 tracking-widest uppercase font-medium",children:"â About Us â"}),n.jsx("h1",{className:"text-3xl sm:text-4xl md:text-5xl font-bold text-primary-foreground mb-6 leading-tight",children:"About HookZ.ai â The AI-Native Platform Company"}),n.jsx("p",{className:"text-lg text-primary-foreground/80 max-w-lg",children:"HookZ.ai is building the future of enterprise communications and distributed hybrid infrastructure â unified by intelligence, driven by openness."})]})}),n.jsx("div",{className:"space-y-6",children:n.jsx("div",{className:"grid grid-cols-2 gap-4",children:t.map(r=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsx("p",{className:"text-3xl sm:text-4xl font-bold text-brand-ink mb-1",children:r.value}),n.jsx("p",{className:"text-sm text-muted-foreground",children:r.label})]},r.label))})})]})})]}),n.jsx("section",{className:"py-24",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-16 items-center",children:[n.jsxs("div",{children:[n.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:["Why ",n.jsx("span",{className:"text-brand-ink",children:"HookZ.ai"})," Exists"]}),n.jsxs("div",{className:"space-y-4 text-muted-foreground",children:[n.jsx("p",{children:"Enterprises today face a fragmented landscape: communications platforms that ignore infrastructure, infrastructure platforms that ignore communications, and hyperscalers that remove sovereignty and pricing control."}),n.jsx("p",{children:"HookZ.ai was founded to solve this false choice. We bring together enterprise communications (CCaaS, CPaaS, SBCaaS) and distributed hybrid infrastructure (data center, edge, cloud) under one AI-native control fabric."}),n.jsx("p",{children:"The result: a platform company that lets enterprises communicate, compute, and operate â without the vendor sprawl, lock-in, or bolt-on AI that defines the industry today."})]})]}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"absolute -top-4 -left-4 w-full h-full bg-primary/10 rounded-[2rem] rounded-tl-[4rem]"}),n.jsxs("div",{className:"relative p-8 rounded-3xl glass-strong border-primary/20",children:[n.jsx("div",{className:"flex items-center gap-4 mb-6",children:n.jsx("img",{src:Bl,onError:Fl,ref:Ul,alt:"HookZ.ai",className:"h-10 w-auto logo-plate"})}),n.jsx("h3",{className:"text-xl font-bold mb-4",children:"What defines HookZ.ai"}),n.jsxs("div",{className:"space-y-6",children:[n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx(kt,{className:"w-6 h-6 text-brand-ink shrink-0 mt-1"}),n.jsxs("div",{children:[n.jsx("h4",{className:"font-bold mb-1",children:"Two Portfolios, One Fabric"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Enterprise Communications + Distributed Infrastru
672cture, unified by AI."})]})]}),n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx(Ve,{className:"w-6 h-6 text-brand-ink shrink-0 mt-1"}),n.jsxs("div",{children:[n.jsx("h4",{className:"font-bold mb-1",children:"AI-First Architecture"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Intelligence built into every layer â not added as an afterthought."})]})]}),n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx(Ce,{className:"w-6 h-6 text-brand-ink shrink-0 mt-1"}),n.jsxs("div",{children:[n.jsx("h4",{className:"font-bold mb-1",children:"Open & Sovereign"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"No vendor lock-in. KVM-based, modular, and commercially sustainable."})]})]})]})]})]})]})})}),n.jsx("section",{className:"py-24 bg-secondary/30",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[n.jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-6",children:"What Drives Us"}),n.jsx("p",{className:"text-lg text-muted-foreground",children:"Our principles shape every product decision, partnership, and platform capability."})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-6",children:e.map((r,s)=>n.jsxs("div",{className:"relative group",children:[(s===0||s===3)&&n.jsx("div",{className:"absolute -inset-1 bg-primary/10 rounded-[1.5rem] -z-10 group-hover:bg-primary/15 transition-colors"}),n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card hover:border-primary/30 transition-all duration-300 h-full",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center mb-4",children:n.jsx(r.icon,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-bold mb-2",children:r.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:r.description})]})]},r.title))})]})}),n.jsx("section",{className:"py-24 relative overflow-hidden",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"grid lg:grid-cols-2 gap-8 items-center",children:[n.jsxs("div",{className:"bg-primary rounded-[2rem] rounded-tr-[4rem] p-10 md:p-12 relative overflow-hidden",children:[n.jsx("div",{className:"absolute top-0 right-0 w-20 h-20 bg-background rounded-bl-[3rem]"}),n.jsx("h2",{className:"text-2xl sm:text-3xl md:text-4xl font-bold text-primary-foreground mb-4",children:"Let's Build the Future Together"}),n.jsx("p",{className:"text-primary-foreground/80 mb-6",children:"Whether you're modernising communications or rethinking infrastructure, HookZ.ai is your AI-native platform partner."}),n.jsx(he,{children:n.jsxs(M,{variant:"outline",size:"lg",className:"bg-primary-foreground text-brand-ink hover:bg-primary-foreground/90 border-none font-semibold",children:["Contact Us",n.jsx(K,{className:"w-4 h-4"})]})})]}),n.jsxs("div",{className:"flex flex-col gap-4",children:[n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",className:"w-full sm:w-auto",children:["Book a Demo",n.jsx(K,{className:"w-4 h-4"})]})}),n.jsx(M,{variant:"heroOutline",size:"lg",className:"w-full sm:w-auto",asChild:!0,children:n.jsx(V,{to:"/products",children:"View Products"})})]})]})})}),n.jsx(ke,{})]})},$L=gu("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function cr({className:e,variant:t,...r}){return n.jsx("div",{className:J($L({variant:t}),e),...r})}var BL=Object.defineProperty,FL=(e,t)=>BL(e,"name",{value:t,configurable:!0});function Fp(e,[t,r]){return Math.min(r,Math.max(t,e))}FL(Fp,"clamp");var UL=Object.defineProperty,VL=(e,t)=>UL(e,"name",{value:t,configurable:!0});function BN(e){const t=f.useRef({value:e,previous:e});return f.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}VL(BN,"usePrevious");var zL=Object.defineProperty,xe=(e,t)=>zL(e,"name",{value:t,configurable:!0}),WL=[" ","Enter","ArrowUp","ArrowDown"],ZL=[" ","Enter"],Za="Select",[Zu,qu,qL]=Il(Za),[Ii,w$]=Wt(Za,[qL,Eu]),ex=Eu(),[XL,Vs]=Ii(Za),[GL,KL]=Ii(Za);function FN(e){const{__scopeSelect:t,children:r,open:s,defaultOpen:i,onOpenChange:a,value:o,defaultValue:l,onValueChange:c,dir:d,name:u,autoComplete:h,disabled:p,required:m,form:y,internal_do_not_use_render:b}=e,w=ex(t),[g,v]=f.useState(null),[x,j]=f.useState(null),[k,N]=f.useState(!1),S=Wl(d),[C,E]=vr({prop:s,defaultProp:i??!1,onChange:a,caller:Za}),[I,B]=vr({prop:o,defaultProp:l,onChange:c,caller:Za}),R=f.useRef(null),O=f.useRef(I);f.useEffect(()=>{const q=y?g==null?void 0:g.ownerDocument.getElementById(y):g==null?void 0:g.form;if(q instanceof HTMLFormElement){const Z=xe(()=>B(O.current),"reset");return q.addEventListener("reset",Z),()=>q.removeEventListener("reset",Z)}},[y,g,B]);const T=g?!!y||!!g.closest("form"):!0,[W,H]=f.useState(new Set),U=nn(),P=Array.from(W).map(q=>q.props.value).join(";"),_=f.useCallback(q=>{H(Z=>new Set(Z).add(q))},[]),F=f.useCallback(q=>{H(Z=>{const ee=new Set(Z);return ee.delete(q),ee})},[]),Y={required:m,trigger:g,onTriggerChange:v,valueNode:x,onValueNodeChange:j,valueNodeHasChildren:k,onValueNodeHasChildrenChange:N,contentId:U,value:
672I,onValueChange:B,open:C,onOpenChange:E,dir:S,triggerPointerDownPosRef:R,disabled:p,name:u,autoComplete:h,form:y,nativeOptions:W,nativeSelectKey:P,isFormControl:T};return n.jsx(ZI,{...w,children:n.jsx(XL,{scope:t,...Y,children:n.jsx(Zu.Provider,{scope:t,children:n.jsx(GL,{scope:t,onNativeOptionAdd:_,onNativeOptionRemove:F,children:JN(b)?b(Y):r})})})})}xe(FN,"SelectProvider");var YL=xe(e=>{const{__scopeSelect:t,children:r,...s}=e;return n.jsx(FN,{__scopeSelect:t,...s,internal_do_not_use_render:({isFormControl:i})=>n.jsxs(n.Fragment,{children:[r,i?n.jsx(bH,{__scopeSelect:t}):null]})})},"Select"),JL="SelectTrigger",UN=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,disabled:i=!1,...a}=t,o=ex(s),l=Vs(JL,s),c=l.disabled||i,d=ye(r,l.onTriggerChange),u=qu(s),h=f.useRef("touch"),[p,m,y]=rx(w=>{const g=u().filter(j=>!j.disabled),v=g.find(j=>j.value===l.value),x=nx(g,w,v);x!==void 0&&l.onValueChange(x.value)}),b=xe(w=>{c||(l.onOpenChange(!0),y()),w&&(l.triggerPointerDownPosRef.current={x:Math.round(w.pageX),y:Math.round(w.pageY)})},"handleOpen");return n.jsx(qI,{asChild:!0,...o,children:n.jsx(se.button,{type:"button",role:"combobox","aria-controls":l.open?l.contentId:void 0,"aria-expanded":l.open,"aria-required":l.required,"aria-autocomplete":"none",dir:l.dir,"data-state":l.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":Zl(l.value)?"":void 0,...a,ref:d,onClick:te(a.onClick,w=>{w.currentTarget.focus(),h.current!=="mouse"&&b(w)}),onPointerDown:te(a.onPointerDown,w=>{h.current=w.pointerType;const g=w.target;g.hasPointerCapture(w.pointerId)&&g.releasePointerCapture(w.pointerId),w.button===0&&w.ctrlKey===!1&&w.pointerType==="mouse"&&(b(w),w.preventDefault())}),onKeyDown:te(a.onKeyDown,w=>{const g=p.current!=="";!(w.ctrlKey||w.altKey||w.metaKey)&&w.key.length===1&&m(w.key),!(g&&w.key===" ")&&WL.includes(w.key)&&(b(),w.preventDefault())})})})},"SelectTrigger")),QL="SelectValue",eH=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,className:i,style:a,children:o,placeholder:l="",...c}=t,d=Vs(QL,s),{onValueNodeHasChildrenChange:u}=d,h=o!==void 0,p=ye(r,d.onValueNodeChange);Ue(()=>{u(h)},[u,h]);const m=Zl(d.value);return n.jsx(se.span,{...c,asChild:m?!1:c.asChild,ref:p,style:{pointerEvents:"none"},children:n.jsx(f.Fragment,{children:m?l:o},m?"placeholder":"value")})},"SelectValue")),tH=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,children:i,...a}=t;return n.jsx(se.span,{"aria-hidden":!0,...a,ref:r,children:i||"â¼"})},"SelectIcon")),rH="SelectPortal",[nH,sH]=Ii(rH,{forceMount:void 0}),iH=xe(e=>{const{__scopeSelect:t,forceMount:r,...s}=e;return n.jsx(nH,{scope:e.__scopeSelect,forceMount:r,children:n.jsx(ng,{asChild:!0,...s})})},"SelectPortal"),Si="SelectContent",VN=f.forwardRef(xe(function(t,r){const s=sH(Si,t.__scopeSelect),{forceMount:i=s.forceMount,...a}=t,o=Vs(Si,t.__scopeSelect),[l,c]=f.useState();return Ue(()=>{c(new DocumentFragment)},[]),n.jsx(Wn,{present:i||o.open,children:({present:d})=>d?n.jsx(lH,{...a,ref:r}):n.jsx(aH,{...a,fragment:l})})},"SelectContent")),aH=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,children:i,fragment:a}=t;return a?Hs.createPortal(n.jsx(zN,{scope:s,children:n.jsx(Zu.Slot,{scope:s,children:n.jsx("div",{ref:r,children:i})})}),a):null},"SelectContentFragment")),Ar=10,[zN,Ri]=Ii(Si),oH=$n("SelectContent.RemoveScroll"),lH=f.forwardRef(xe(function(t,r){const{__scopeSelect:s}=t,{position:i="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:o,onPointerDownOutside:l,side:c,sideOffset:d,align:u,alignOffset:h,arrowPadding:p,collisionBoundary:m,collisionPadding:y,sticky:b,hideWhenDetached:w,avoidCollisions:g,...v}=t,x=Vs(Si,s),[j,k]=f.useState(null),[N,S]=f.useState(null),C=ye(r,k),[E,I]=f.useState(null),[B,R]=f.useState(null),O=qu(s),[T,W]=f.useState(!1),H=f.useRef(!1);f.useEffect(()=>{if(j)return w1(j)},[j]),Tu();const U=f.useCallback(ne=>{const[ve,...$e]=O().map(be=>be.ref.current),[pe]=$e.slice(-1),de=document.activeElement;for(const be of ne)if(be===de||(be==null||be.scrollIntoView({block:"nearest"}),be===ve&&N&&(N.scrollTop=0),be===pe&&N&&(N.scrollTop=N.scrollHeight),be==null||be.focus(),document.activeElement!==de))return},[O,N]),P=f.useCallback(()=>U([E,j]),[U,E,j]);f.useEffect(()=>{T&&P()},[T,P]);const{onOpenChange:_,triggerPointerDownPosRef:F}=x;f.useEffect(()=>{if(j){let ne={x:0,y:0};const ve=xe(pe=>{var de,be;ne={x:Math.abs(Math.round(pe.pageX)-(((de=F.current)==null?void 0:de.x)??0)),y:Math.abs(Math.round(pe.pageY)-(((be=F.current)==null?void 0:be.y)??0))}},"handlePointerMove"),$e=xe(pe=>{ne.x<=10&&ne.y<=10?pe.preventDefault():pe.composedPath().includes(j)||_(!1),document.removeEventListener("pointermove",ve),F.current=null},"handlePointerUp");return F.current!==null&&(document.addEventListener("pointermove",ve),document.addEventListener("pointerup",$e,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ve),document.removeEventListener("pointerup",$e,{capture:!0})}}},[j,_,F]),f.useEffect(()=>{const ne=xe(()=>_(!1),"close");return window.addEventListener("blur",ne),window.addEventListener("resize",ne),()=>{window.removeEventListener("blur",ne),window.removeEventListener("resize",ne)}},[_]);const[Y,q]=rx(ne=>{const ve=O().filter(de=>!de.disabled),$e=ve.find(de=>de.ref.current===document.activeElement),pe=nx(ve,ne,$e);pe&&setTimeout(()=>{var de;
vendor: 5,786 bytes, line 672
672return(de=pe.ref.current)==null?void 0:de.focus()})}),Z=f.useCallback((ne,ve,$e)=>{const pe=!H.current&&!$e;(x.value!==void 0&&x.value===ve||pe)&&(I(ne),pe&&(H.current=!0))},[x.value]),ee=f.useCallback(()=>j==null?void 0:j.focus(),[j]),le=f.useCallback((ne,ve,$e)=>{const pe=!H.current&&!$e;(x.value!==void 0&&x.value===ve||pe)&&R(ne)},[x.value]),Ee=i==="popper"?xb:cH,ce=Ee===xb?{side:c,sideOffset:d,align:u,alignOffset:h,arrowPadding:p,collisionBoundary:m,collisionPadding:y,sticky:b,hideWhenDetached:w,avoidCollisions:g}:{};return n.jsx(zN,{scope:s,content:j,viewport:N,onViewportChange:S,itemRefCallback:Z,selectedItem:E,onItemLeave:ee,itemTextRefCallback:le,focusSelectedItem:P,selectedItemText:B,position:i,isPositioned:T,searchRef:Y,children:n.jsx(Pg,{as:oH,allowPinchZoom:!0,children:n.jsx(a1,{asChild:!0,trapped:x.open,onMountAutoFocus:ne=>{ne.preventDefault()},onUnmountAutoFocus:te(a,ne=>{var ve;(ve=x.trigger)==null||ve.focus({preventScroll:!0}),ne.preventDefault()}),children:n.jsx(mu,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:o,onPointerDownOutside:l,onFocusOutside:ne=>ne.preventDefault(),onDismiss:()=>x.onOpenChange(!1),children:n.jsx(Ee,{role:"listbox",id:x.contentId,"data-state":x.open?"open":"closed",dir:x.dir,onContextMenu:ne=>ne.preventDefault(),...v,...ce,onPlaced:()=>W(!0),ref:C,style:{display:"flex",flexDirection:"column",outline:"none",...v.style},onKeyDown:te(v.onKeyDown,ne=>{const ve=ne.ctrlKey||ne.altKey||ne.metaKey;if(ne.key==="Tab"&&ne.preventDefault(),!ve&&ne.key.length===1&&q(ne.key),["ArrowUp","ArrowDown","Home","End"].includes(ne.key)){let pe=O().filter(de=>!de.disabled).map(de=>de.ref.current);if(["ArrowUp","End"].includes(ne.key)&&(pe=pe.slice().reverse()),["ArrowUp","ArrowDown"].includes(ne.key)){const de=ne.target,be=pe.indexOf(de);pe=pe.slice(be+1)}setTimeout(()=>U(pe)),ne.preventDefault()}})})})})})})},"SelectContentImpl")),cH=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,onPlaced:i,...a}=t,o=Vs(Si,s),l=Ri(Si,s),[c,d]=f.useState(null),[u,h]=f.useState(null),p=ye(r,h),m=qu(s),y=f.useRef(!1),b=f.useRef(!0),{viewport:w,selectedItem:g,selectedItemText:v,focusSelectedItem:x}=l,j=f.useCallback(()=>{if(o.trigger&&o.valueNode&&c&&u&&w&&g&&v){const C=o.trigger.getBoundingClientRect(),E=u.getBoundingClientRect(),I=o.valueNode.getBoundingClientRect(),B=v.getBoundingClientRect();if(o.dir!=="rtl"){const de=B.left-E.left,be=I.left-de,nr=C.left-be,sr=C.width+nr,Vr=Math.max(sr,E.width),qn=window.innerWidth-Ar,pn=Fp(be,[Ar,Math.max(Ar,qn-Vr)]);c.style.minWidth=sr+"px",c.style.left=pn+"px"}else{const de=E.right-B.right,be=window.innerWidth-I.right-de,nr=window.innerWidth-C.right-be,sr=C.width+nr,Vr=Math.max(sr,E.width),qn=window.innerWidth-Ar,pn=Fp(be,[Ar,Math.max(Ar,qn-Vr)]);c.style.minWidth=sr+"px",c.style.right=pn+"px"}const R=m(),O=window.innerHeight-Ar*2,T=w.scrollHeight,W=window.getComputedStyle(u),H=parseInt(W.borderTopWidth,10),U=parseInt(W.paddingTop,10),P=parseInt(W.borderBottomWidth,10),_=parseInt(W.paddingBottom,10),F=H+U+T+_+P,Y=Math.min(g.offsetHeight*5,F),q=window.getComputedStyle(w),Z=parseInt(q.paddingTop,10),ee=parseInt(q.paddingBottom,10),le=C.top+C.height/2-Ar,Ee=O-le,ce=g.offsetHeight/2,ne=g.offsetTop+ce,ve=H+U+ne,$e=F-ve;if(ve<=le){const de=R.length>0&&g===R[R.length-1].ref.current;c.style.bottom="0px";const be=u.clientHeight-w.offsetTop-w.offsetHeight,nr=Math.max(Ee,ce+(de?ee:0)+be+P),sr=ve+nr;c.style.height=sr+"px"}else{const de=R.length>0&&g===R[0].ref.current;c.style.top="0px";const nr=Math.max(le,H+w.offsetTop+(de?Z:0)+ce)+$e;c.style.height=nr+"px",w.scrollTop=ve-le+w.offsetTop}c.style.margin=`${Ar}px 0`,c.style.minHeight=Y+"px",c.style.maxHeight=O+"px",i==null||i(),requestAnimationFrame(()=>y.current=!0)}},[m,o.trigger,o.valueNode,c,u,w,g,v,o.dir,i]);Ue(()=>j(),[j]);const[k,N]=f.useState();Ue(()=>{u&&N(window.getComputedStyle(u).zIndex)},[u]);const S=f.useCallback(C=>{C&&b.current===!0&&(j(),x==null||x(),b.current=!1)},[j,x]);return n.jsx(dH,{scope:s,contentWrapper:c,shouldExpandOnScrollRef:y,onScrollButtonChange:S,children:n.jsx("div",{ref:d,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:k},children:n.jsx(se.div,{...a,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}})})})},"SelectItemAlignedPosition")),xb=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,align:i="start",collisionPadding:a=Ar,...o}=t,l=ex(s);return n.jsx(Vk,{...l,...o,ref:r,align:i,collisionPadding:a,style:{boxSizing:"border-box",...o.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})},"SelectPopperPosition")),[dH,tx]=Ii(Si,{}),vb="SelectViewport",uH=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,nonce:i,...a}=t,o=Ri(vb,s),l=tx(vb,s),c=ye(r,o.onViewportChange),d=f.useRef(0);return n.jsxs(n.Fragment,{children:[n.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),n.jsx(Zu.Slot,{scope:s,children:n.jsx(se.div,{"data-radix-select-viewport":"",role:"presentation",...a,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...a.style},onScroll:te(a.onScroll,u=>{const h=u.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:m}=l;if(m!=null&&m.current&&p){const y=Math.abs(d.current-h.scrollTop);if(y>0){const b=window.innerHeight-Ar*2,w=parseFloat(p.style.minHeight),g=parseFloat(p.style.height),v=Math.max(w,g);
672if(v<b){const x=v+y,j=Math.min(b,x),k=x-j;p.style.height=j+"px",p.style.bottom==="0px"&&(h.scrollTop=k>0?k:0,p.style.justifyContent="flex-end")}}}d.current=h.scrollTop})})})]})},"SelectViewport")),hH="SelectGroup",[j$,mH]=Ii(hH),pH="SelectLabel",WN=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,...i}=t,a=mH(pH,s);return n.jsx(se.div,{id:a.id,...i,ref:r})},"SelectLabel")),Up="SelectItem",[fH,ZN]=Ii(Up),qN=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,value:i,disabled:a=!1,textValue:o,...l}=t,c=Vs(Up,s),d=Ri(Up,s),u=c.value===i,[h,p]=f.useState(o??""),[m,y]=f.useState(!1),b=_t(j=>{var k;return(k=d.itemRefCallback)==null?void 0:k.call(d,j,i,a)}),w=ye(r,b),g=nn(),v=f.useRef("touch"),x=xe(()=>{a||(c.onValueChange(i),c.onOpenChange(!1))},"handleSelect");return n.jsx(fH,{scope:s,value:i,disabled:a,textId:g,isSelected:u,onItemTextChange:f.useCallback(j=>{p(k=>k||((j==null?void 0:j.textContent)??"").trim())},[]),children:n.jsx(Zu.ItemSlot,{scope:s,value:i,disabled:a,textValue:h,children:n.jsx(se.div,{role:"option","aria-labelledby":g,"data-highlighted":m?"":void 0,"aria-selected":u&&m,"data-state":u?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1,...l,ref:w,onFocus:te(l.onFocus,()=>y(!0)),onBlur:te(l.onBlur,()=>y(!1)),onClick:te(l.onClick,()=>{v.current!=="mouse"&&x()}),onPointerUp:te(l.onPointerUp,()=>{v.current==="mouse"&&x()}),onPointerDown:te(l.onPointerDown,j=>{v.current=j.pointerType}),onPointerMove:te(l.onPointerMove,j=>{var k;v.current=j.pointerType,a?(k=d.onItemLeave)==null||k.call(d):v.current==="mouse"&&j.currentTarget.focus({preventScroll:!0})}),onPointerLeave:te(l.onPointerLeave,j=>{var k;j.currentTarget===document.activeElement&&((k=d.onItemLeave)==null||k.call(d))}),onKeyDown:te(l.onKeyDown,j=>{var N;a||j.target!==j.currentTarget||((N=d.searchRef)==null?void 0:N.current)!==""&&j.key===" "||(ZL.includes(j.key)&&x(),j.key===" "&&j.preventDefault())})})})})},"SelectItem")),_c="SelectItemText",gH=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,className:i,style:a,...o}=t,l=Vs(_c,s),c=Ri(_c,s),d=ZN(_c,s),u=KL(_c,s),[h,p]=f.useState(null),m=_t(x=>{var j;return(j=c.itemTextRefCallback)==null?void 0:j.call(c,x,d.value,d.disabled)}),y=ye(r,p,d.onItemTextChange,m),b=h==null?void 0:h.textContent,w=f.useMemo(()=>n.jsx("option",{value:d.value,disabled:d.disabled,children:b},d.value),[d.disabled,d.value,b]),{onNativeOptionAdd:g,onNativeOptionRemove:v}=u;return Ue(()=>(g(w),()=>v(w)),[g,v,w]),n.jsxs(n.Fragment,{children:[n.jsx(se.span,{id:d.textId,...o,ref:y}),d.isSelected&&l.valueNode&&!l.valueNodeHasChildren&&!Zl(l.value)?Hs.createPortal(o.children,l.valueNode):null]})},"SelectItemText")),xH="SelectItemIndicator",vH=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,...i}=t;return ZN(xH,s).isSelected?n.jsx(se.span,{"aria-hidden":!0,...i,ref:r}):null},"SelectItemIndicator")),yb="SelectScrollUpButton",XN=f.forwardRef(xe(function(t,r){const s=Ri(yb,t.__scopeSelect),i=tx(yb,t.__scopeSelect),[a,o]=f.useState(!1),l=ye(r,i.onScrollButtonChange);return Ue(()=>{if(s.viewport&&s.isPositioned){let c=function(){const u=d.scrollTop>0;o(u)};xe(c,"handleScroll");const d=s.viewport;return c(),d.addEventListener("scroll",c),()=>d.removeEventListener("scroll",c)}},[s.viewport,s.isPositioned]),a?n.jsx(KN,{...t,ref:l,onAutoScroll:()=>{const{viewport:c,selectedItem:d}=s;c&&d&&(c.scrollTop=c.scrollTop-d.offsetHeight)}}):null},"SelectScrollUpButton")),bb="SelectScrollDownButton",GN=f.forwardRef(xe(function(t,r){const s=Ri(bb,t.__scopeSelect),i=tx(bb,t.__scopeSelect),[a,o]=f.useState(!1),l=ye(r,i.onScrollButtonChange);return Ue(()=>{if(s.viewport&&s.isPositioned){let c=function(){const u=d.scrollHeight-d.clientHeight,h=Math.ceil(d.scrollTop)<u;o(h)};xe(c,"handleScroll");const d=s.viewport;return c(),d.addEventListener("scroll",c),()=>d.removeEventListener("scroll",c)}},[s.viewport,s.isPositioned]),a?n.jsx(KN,{...t,ref:l,onAutoScroll:()=>{const{viewport:c,selectedItem:d}=s;c&&d&&(c.scrollTop=c.scrollTop+d.offsetHeight)}}):null},"SelectScrollDownButton")),KN=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,onAutoScroll:i,...a}=t,o=Ri("SelectScrollButton",s),l=f.useRef(null),c=qu(s),d=f.useCallback(()=>{l.current!==null&&(window.clearInterval(l.current),l.current=null)},[]);return f.useEffect(()=>()=>d(),[d]),Ue(()=>{var h;const u=c().find(p=>p.ref.current===document.activeElement);(h=u==null?void 0:u.ref.current)==null||h.scrollIntoView({block:"nearest"})},[c]),n.jsx(se.div,{"aria-hidden":!0,...a,ref:r,style:{flexShrink:0,...a.style},onPointerDown:te(a.onPointerDown,()=>{l.current===null&&(l.current=window.setInterval(i,50))}),onPointerMove:te(a.onPointerMove,()=>{var u;(u=o.onItemLeave)==null||u.call(o),l.current===null&&(l.current=window.setInterval(i,50))}),onPointerLeave:te(a.onPointerLeave,()=>{d()})})},"SelectScrollButtonImpl")),YN=f.forwardRef(xe(function(t,r){const{__scopeSelect:s,...i}=t;return n.jsx(se.div,{"aria-hidden":!0,...i,ref:r})},"SelectSeparator")),yH="SelectBubbleInput",bH=f.forwardRef(xe(function({__scopeSelect:t,...r},s){const i=Vs(yH,t),{value:a,onValueChange:o,required:l,disabled:c,name:d,autoComplete:u,form:h}=i,{nativeOptions:p,nativeSelectKey:m}=i,y=f.useRef(null),b=ye(s,y),w=a??"",g=BN(w),v=Array.from(p).some(x=>(x.props.value??"")==="");return f.useEffect(()=>{const x=y.current;if(!x)return;const j=window.HTMLSelectElement.prototype,N=Object.getOwnPropertyDescriptor(j,"value").set;if(g!==w&&N){const S=new Event("change",{bubbles:!0});N.call(x,w),x.dispatchEvent(S)}},[g,w]),n.jsxs(se.select,{"aria-hidden":!0,required:l,tabIndex:-1,name:d,autoComplete:u,disabled:c,form:h,onChange:x=>o(x.target.value),...r,style:{...Lj,...r.style},ref:b,defaultValue:w,children:[Zl(a)&&!v?n.jsx("option",{value:""}):null,Array.from(p)]},m)},"SelectBubbleInput"));function JN(e){return typeof e=="function"}xe(JN,"isFunction");function Zl(e){return e===""||e===void 0}xe(Zl,"shouldShowPlaceholder");function rx(e){const t=_t(e),r=f.useRef(""),s=f.useRef(0),i=f.useCallback(o=>{const l=r.current+o;t(l),xe(function c(d){r.current=d,window.clearTimeout(s.current),d!==""&&(s.current=window.setTimeout(()=>c(""),1e3))},"updateSearch")(l)},[t]),a=f.useCallback(()=>{r.current="",window.clearTimeout(s.current)},[]);return f.useEffect(()=>()=>window.clearTimeout(s.current),[]),[r,i,a]}xe(rx,"useTypeaheadSearch");function nx(e,t,r){const i=t.length>1&&Array.from(t).every(d=>d===t[0])?t[0]:t,a=r?e.indexOf(r):-1;let o=QN(e,Math.max(a,0));i.length===1&&(o=o.filter(d=>d!==r));const c=o.find(d=>d.textValue.toLowerCase().startsWith(i.toLowerCase()));return c!==r?c:void 0}xe(nx,"findNextItem");function QN(e,t){return e.map((r,s)=>e[(t+s)%e.length])}xe(QN,"wrapArray");const Vp=YL,zp=eH,Zd=f.forwardRef(({className:e,children:t,...r},s)=>n.jsxs(UN,{ref:s,className:J("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm r
672ing-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",e),...r,children:[t,n.jsx(tH,{asChild:!0,children:n.jsx(wi,{className:"h-4 w-4 opacity-50"})})]}));Zd.displayName=UN.displayName;const eS=f.forwardRef(({className:e,...t},r)=>n.jsx(XN,{ref:r,className:J("flex cursor-default items-center justify-center py-1",e),...t,children:n.jsx($P,{className:"h-4 w-4"})}));eS.displayName=XN.displayName;const tS=f.forwardRef(({className:e,...t},r)=>n.jsx(GN,{ref:r,className:J("flex cursor-default items-center justify-center py-1",e),...t,children:n.jsx(wi,{className:"h-4 w-4"})}));tS.displayName=GN.displayName;const qd=f.forwardRef(({className:e,children:t,position:r="popper",...s},i)=>n.jsx(iH,{children:n.jsxs(VN,{ref:i,className:J("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",r==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,...s,children:[n.jsx(eS,{}),n.jsx(uH,{className:J("p-1",r==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t}),n.jsx(tS,{})]})}));qd.displayName=VN.displayName;const wH=f.forwardRef(({className:e,...t},r)=>n.jsx(WN,{ref:r,className:J("py-1.5 pl-8 pr-2 text-sm font-semibold",e),...t}));wH.displayName=WN.displayName;const Xd=f.forwardRef(({className:e,children:t,...r},s)=>n.jsxs(qN,{ref:s,className:J("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",e),...r,children:[n.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:n.jsx(vH,{children:n.jsx(vu,{className:"h-4 w-4"})})}),n.jsx(gH,{children:t})]}));Xd.displayName=qN.displayName;const jH=f.forwardRef(({className:e,...t},r)=>n.jsx(YN,{ref:r,className:J("-mx-1 my-1 h-px bg-muted",e),...t}));jH.displayName=YN.displayName;const kH=[{id:"enterprise-comms",label:"Enterprise Communications (HookZ CX, Meet, Connect)"}
672,{id:"infrastructure",label:"Distributed Infrastructure (InfraX, CoreX, EdgeX)"},{id:"voice-edge",label:"Voice Edge (SBC as a Service)"},{id:"managed-services",label:"Managed Services & Sovereign Cloud"}],NH=["Cisco","Dell Technologies","HPE","Lenovo","Supermicro","NVIDIA","Microsoft","AWS","Arista","VMware/Broadcom","Juniper","Fortinet","Palo Alto Networks","Other"],SH=["United Kingdom","United States","United Arab Emirates","India","Saudi Arabia","Africa","Southeast Asia","Europe (Other)","Other"],CH=({children:e})=>{const[t,r]=f.useState(!1),[s,i]=f.useState(!1),[a,o]=f.useState([]),[l,c]=f.useState([]),[d,u]=f.useState(!1),[h,p]=f.useState(!1),[m,y]=f.useState(!1),{toast:b}=_l(),w=j=>{o(k=>k.includes(j)?k.filter(N=>N!==j):[...k,j])},g=j=>{c(k=>k.includes(j)?k.filter(N=>N!==j):[...k,j])},v=j=>{var B,R,O,T;j.preventDefault();const k=j.currentTarget,N=new FormData(k),S=(B=N.get("name"))==null?void 0:B.trim(),C=(R=N.get("email"))==null?void 0:R.trim(),E=(O=N.get("company"))==null?void 0:O.trim(),I=(T=N.get("role"))==null?void 0:T.trim();if(!S||!C||!E||!I){b({title:"Please fill in all required fields.",variant:"destructive"});return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(C)){b({title:"Please enter a valid email address.",variant:"destructive"});return}if(a.length===0){b({title:"Please select at least one area of interest.",variant:"destructive"});return}i(!0)},x=j=>{r(j),j||setTimeout(()=>{i(!1),o([]),c([]),u(!1),p(!1),y(!1)},300)};return n.jsxs(Iu,{open:t,onOpenChange:x,children:[n.jsx("div",{onClick:()=>r(!0),className:"inline-block",children:e}),n.jsx(Ll,{className:"sm:max-w-lg border-border/50 bg-card max-h-[90vh] overflow-y-auto",children:s?n.jsxs("div",{className:"py-8 text-center space-y-4",children:[n.jsx(Ol,{className:"h-12 w-12 text-brand-ink mx-auto"}),n.jsx(Rs,{className:"text-2xl",children:"Application Received!"}),n.jsx("p",{className:"text-muted-foreground",children:"Thank you for your interest in partnering with HookZ. Our partnerships team will review your application and be in touch shortly."}),n.jsx(M,{variant:"outline",onClick:()=>x(!1),children:"Close"})]}):n.jsxs(n.Fragment,{children:[n.jsxs(Hl,{children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(dg,{className:"h-5 w-5 text-brand-ink"}),n.jsx(Rs,{className:"text-xl",children:"Apply to Partner Program"})]}),n.jsx($l,{children:"Join the HookZ partner ecosystem. Fill in your details and our team will follow up."})]}),n.jsxs("form",{onSubmit:v,className:"space-y-4 mt-2",children:[n.jsxs("div",{className:"grid sm:grid-cols-2 gap-3",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Le,{htmlFor:"partner-name",children:"Full Name *"}),n.jsx(ct,{id:"partner-name",name:"name",placeholder:"John Smith",maxLength:100,required:!0})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Le,{htmlFor:"partner-email",children:"Business Email *"}),n.jsx(ct,{id:"partner-email",name:"email",type:"email",placeholder:"[email protected]",maxLength:255,required:!0})]})]}),n.jsxs("div",{className:"grid sm:grid-cols-2 gap-3",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Le,{htmlFor:"partner-company",children:"Company Name *"}),n.jsx(ct,{id:"partner-company",name:"company",placeholder:"Acme Partners Ltd",maxLength:100,required:!0})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Le,{htmlFor:"partner-role",children:"Your Role *"}),n.jsx(ct,{id:"partner-role",name:"role",placeholder:"VP of Partnerships",maxLength:100,required:!0})]})]}),n.jsxs("div",{className:"grid sm:grid-cols-2 gap-3",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Le,{htmlFor:"partner-phone",children:"Phone Number"}),n.jsx(ct,{id:"partner-phone",name:"phone",type:"tel",placeholder:"+44 7700 900000",maxLength:20})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Le,{htmlFor:"partner-region",children:"Region *"}),n.jsxs(Vp,{name:"region",required:!0,children:[n.jsx(Zd,{id:"partner-region",children:n.jsx(zp,{placeholder:"Select region"})}),n.jsx(qd,{children:SH.map(j=>n.jsx(Xd,{value:j,children:j},j))})]})]})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{children:"Areas of Interest *"}),n.jsx("div",{className:"space-y-2",children:kH.map(j=>n.jsxs("label",{className:"flex items-center gap-3 rounded-lg border border-border/50 p-3 cursor-pointer hover:border-primary/30 transition-colors has-[:checked]:border-primary/50 has-[:checked]:bg-primary/5",children:[n.jsx(la,{checked:a.includes(j.id
672),onCheckedChange:()=>w(j.id)}),n.jsx("span",{className:"text-sm",children:j.label})]},j.id))})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(Le,{children:"Current OEM / Distributor Partnerships"}),n.jsx("div",{className:"flex flex-wrap gap-2",children:NH.map(j=>n.jsx("button",{type:"button",onClick:()=>g(j),className:`text-xs px-3 py-1.5 rounded-full border transition-colors ${l.includes(j)?"bg-primary/10 border-primary/50 text-brand-ink":"border-border/50 text-muted-foreground hover:border-primary/30"}`,children:j},j))})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Le,{htmlFor:"partner-notes",children:"Additional Notes"}),n.jsx(Hg,{id:"partner-notes",name:"notes",placeholder:"Tell us about your business, customer base, or what you'd like to achieve as a HookZ partner...",maxLength:1e3,rows:3})]}),n.jsxs("div",{className:"space-y-3 pt-2 border-t border-border/50",children:[n.jsx(Le,{className:"text-xs text-muted-foreground uppercase tracking-wider",children:"Communication Preferences"}),n.jsxs("label",{className:"flex items-start gap-3 cursor-pointer",children:[n.jsx(la,{checked:d,onCheckedChange:j=>u(!!j),className:"mt-0.5"}),n.jsx("span",{className:"text-sm text-muted-foreground",children:"I consent to being contacted by the HookZ partnerships team via phone or email"})]}),n.jsxs("label",{className:"flex items-start gap-3 cursor-pointer",children:[n.jsx(la,{checked:h,onCheckedChange:j=>p(!!j),className:"mt-0.5"}),n.jsx("span",{className:"text-sm text-muted-foreground",children:"Subscribe me to the HookZ partner newsletter for program updates and enablement resources"})]}),n.jsxs("label",{className:"flex items-start gap-3 cursor-pointer",children:[n.jsx(la,{checked:m,onCheckedChange:j=>y(!!j),className:"mt-0.5"}),n.jsx("span",{className:"text-sm text-muted-foreground",children:"I agree to receive marketing materials, co-selling opportunities, and event invitations"})]})]}),n.jsxs(M,{type:"submit",size:"lg",className:"w-full group",children:["Submit Application",n.jsx(K,{className:"h-4 w-4 group-hover:translate-x-1 transition-transform"})]}),n.jsxs("p",{className:"text-xs text-center text-muted-foreground",children:["By submitting, you agree to our"," ",n.jsx(V,{to:"/privacy",className:"underline hover:text-brand-ink",children:"Privacy Policy"}),"."]})]})]})})]})},EH=[{icon:dT,title:"Recurring Revenue",description:"Earn predictable margins on AI-native platform subscriptions with multi-year customer retention."},{icon:Ce,title:"Sovereign Differentiation",description:"Sell solutions that keep customer data in-country â a competitive edge hyperscalers can't match."},{icon:an,title:"Sales & Technical Enablement",description:"Full access to co-selling resources, demo environments, and certified training programs."},{icon:kt,title:"Protected Deal Registration",description:"Transparent deal reg with margin protection and no channel conflict."}],wb=[{region:"North America",partners:[{name:"Telarus",type:"Master Agent"},{name:"Avant Communications",type:"Master Agent"},{name:"Intelemedia",type:"Master Agent"},{name:"Sandler Partners",type:"Master Agent"},{name:"AppSmart",type:"Master Agent"},{name:"TCG",type:"Master Agent"}]},{region:"Europe",partners:[],opportunity:"Partner opportunities available across UK, DACH, and Nordics."},{region:"Middle East",partners:[{name:"Tecnomic System MEA",type:"Value-Added Distributor"},{name:"Precedence Technologies",type:"Systems Integrator"},{name:"CTech IT Solutions",type:"IT Solutions Provider"}]},{region:"Asia",partners:[{name:"DevOpsLabs Tech",type:"Cloud & DevOps Integrator"}]},{region:"India",partners:[{name:"Intuitor SoftTech Services",type:"Enterprise IT Services"}]}],AH=[{name:"NVIDIA",partnership:"Inception Partner",description:"AI compute acceleration across HookZ InfraX deployments with NVIDIA GPU orchestration and inference optimization.",icon:Ve},{name:"Dell Technologies",partnership:"OEM & Resell Partner",description:"Enterprise-grade server and storage infrastructure powering HookZ CoreX and EdgeX node deployments.",icon:Te}
672,{name:"Lenovo",partnership:"Infrastructure Partner",description:"ThinkSystem and ThinkEdge platforms certified for HookZ distributed infrastructure at edge and core.",icon:Te},{name:"Supermicro",partnership:"Hardware Partner",description:"High-density GPU and storage servers optimized for HookZ AI workloads and sovereign cloud deployments.",icon:Ve},{name:"Cisco",partnership:"Networking Partner",description:"Enterprise networking and security fabric integration across HookZ managed infrastructure environments.",icon:Ie},{name:"Cloudflare",partnership:"Edge & Security Partner",description:"Global edge network and zero-trust security services complementing HookZ distributed architecture.",icon:st},{name:"Arista",partnership:"Network Infrastructure Partner",description:"High-performance data center switching and routing for HookZ CoreX backbone connectivity.",icon:Ie}],PH=()=>{const[e,t]=f.useState(""),[r,s]=f.useState("All"),i=f.useMemo(()=>["All",...wb.map(l=>l.region)],[]),a=f.useMemo(()=>{const l=e.trim().toLowerCase();return wb.filter(c=>r==="All"||c.region===r).map(c=>{const d=l?c.partners.filter(u=>u.name.toLowerCase().includes(l)||u.type.toLowerCase().includes(l)):c.partners;return{...c,partners:d}}).filter(c=>c.partners.length>0||e===""&&c.opportunity)},[e,r]),o=a.some(l=>l.partners.length>0);return n.jsxs("div",{className:"min-h-screen bg-background text-foreground",children:[n.jsx(Ne,{title:"HookZ.ai Partner Program â Channel & Technology Partners",description:"Join the HookZ.ai partner ecosystem â channel resellers, system integrators, and technology alliances.",path:"/partners"}),n.jsx(je,{}),n.jsx("section",{className:"pt-32 pb-20 px-6",children:n.jsxs("div",{className:"container mx-auto max-w-4xl text-center",children:[n.jsx(cr,{variant:"outline",className:"mb-6 border-primary/30 text-brand-ink",children:"Partner Ecosystem"}),n.jsxs("h1",{className:"text-4xl md:text-6xl font-bold mb-6 tracking-tight",children:["Build With Us."," ",n.jsx("span",{className:"text-brand-ink",children:"Grow With Us."})]}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto",children:"HookZ.ai partners with leading channel organizations and technology vendors to deliver sovereign, AI-native solutions worldwide."})]})}),n.jsx("section",{className:"py-20 px-6 border-t border-border/50",children:n.jsxs("div",{className:"container mx-auto max-w-6xl",children:[n.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[n.jsx(dg,{className:"h-6 w-6 text-brand-ink"}),n.jsx("span",{className:"text-sm font-mono text-brand-ink tracking-wider uppercase",children:"Channel Partners"})]}),n.jsx("h2",{className:"text-3xl md:text-4xl font-bold mb-4",children:"Partners Who Sell HookZ"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mb-16",children:"Our channel partners bring HookZ enterprise communications and infrastructure solutions to market â earning recurring revenue while solving real problems for their customers."}),n.jsxs("div",{className:"flex flex-col md:flex-row gap-4 mb-10",children:[n.jsxs("div",{className:"relative flex-1",children:[n.jsx(uk,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),n.jsx(ct,{type:"text",placeholder:"Search partners by name or type...",value:e,onChange:l=>t(l.target.value),className:"pl-10 pr-10 bg-background/60 border-border/50"}),e&&n.jsx("button",{type:"button",onClick:()=>t(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground","aria-label":"Clear search",children:n.jsx(Dl,{className:"h-4 w-4"})})]}),n.jsx("div",{className:"flex flex-wrap gap-2",children:i.map(l=>n.jsx(M,{variant:r===l?"default":"outline",size:"sm",onClick:()=>s(l),className:r===l?"bg-primary text-primary-foreground hover:bg-primary/90":"border-border/50 hover:border-primary/30 hover:bg-primary/5",children:l},l))})]}),n.jsx("div",{className:"space-y-12 mb-16",children:o?a.map(({region:l,partners:c,opportunity:d})=>n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[n.jsx(kt,{className:"h-4 w-4 text-brand-ink"}),n.jsx("h3",{className:"text-lg font-semibold tracking-wide",children:l})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4",children:c.length>0?c.map(u=>n.jsx(pr,{className:"bg-card/50 border-border/50 backdrop-blur-sm hover:border-primary/30 transition-colors",children:n.jsx(sn,{className:"p-5",children:n.jsxs("div",{className:"flex items-start justify-between",children:[n.jsxs("div",{children:[n.jsx("h4",{className:"font-semibold text-lg",children:u.name}),n.jsx("p",{className:"text-sm text-muted-foreground",children:u.type})]}),n.jsx(cr,{variant:"secondary",className:"text-xs",children:l})]})})},u.name)):n.jsx(pr,{className:"bg-card/30 border-dashed border-border/50",children:n.jsx(sn,{className:"p-5",children:n.jsx("p",{className:"text-sm text-muted-foreground",children:d})})})})]},l)):n.jsxs("div",{className:"text-center py-16 border border-dashed border-border/50 rounded-2xl bg-card/30",children:[n.jsx("p",{className:"text-muted-foreground",children:"No partners match your search."}),n.jsx(M,{variant:"link",onClick:()=>{t(""),s("All")},className:"mt-2 text-brand-ink",children:"Clear filters"})]})}),n.jsx("div",{className:"rounded-2xl border border-primary/20 bg-primary/5 p-6 sm:p-8 md:p-12",children:n.jsxs("div",{className:"grid lg:grid-cols-[1fr_1.2fr] gap-8 lg:gap-12 items-start",children:[n.jsxs("div",{children:[n.jsx("h3",{className:"text-2xl md:text-3xl font-bold mb-4",children:"Why Partner With HookZ?"}),n.jsx("p",{className:"text-muted-foreground mb-6 text-sm sm:text-base",children:"Join a partner program built for the AI era â sell sovereign communications and infrastru
672cture solutions that enterprises actually need, with margins that respect your business."}),n.jsx(CH,{children:n.jsxs(M,{size:"lg",className:"group w-full sm:w-auto",children:["Apply to Partner Program",n.jsx(K,{className:"h-4 w-4 group-hover:translate-x-1 transition-transform"})]})})]}),n.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4 mt-2 lg:mt-0",children:EH.map(l=>n.jsxs("div",{className:"p-4 rounded-xl bg-background/60 border border-border/50",children:[n.jsx(l.icon,{className:"h-5 w-5 text-brand-ink mb-3"}),n.jsx("h4",{className:"font-semibold text-sm mb-1",children:l.title}),n.jsx("p",{className:"text-xs text-muted-foreground",children:l.description})]},l.title))})]})})]})}),n.jsx("section",{className:"py-20 px-6 border-t border-border/50",children:n.jsxs("div",{className:"container mx-auto max-w-6xl",children:[n.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[n.jsx(on,{className:"h-6 w-6 text-brand-ink"}),n.jsx("span",{className:"text-sm font-mono text-brand-ink tracking-wider uppercase",children:"Technology Partners"})]}),n.jsx("h2",{className:"text-3xl md:text-4xl font-bold mb-4",children:"Built on Industry Leaders"}),n.jsx("p",{className:"text-muted-foreground max-w-2xl mb-16",children:"HookZ.ai maintains strategic technology partnerships with the world's leading hardware and infrastructure vendors â ensuring enterprise-grade performance at every layer of the stack."}),n.jsx("div",{className:"space-y-4",children:AH.map(l=>n.jsx("div",{className:"group rounded-xl border border-border/50 bg-card/50 backdrop-blur-sm p-6 hover:border-primary/30 transition-all",children:n.jsxs("div",{className:"flex flex-col md:flex-row md:items-center gap-4 md:gap-8",children:[n.jsxs("div",{className:"flex items-center gap-4 md:w-64 shrink-0",children:[n.jsx("div",{className:"h-12 w-12 rounded-lg bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(l.icon,{className:"h-6 w-6 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h3",{className:"font-bold text-lg",children:l.name}),n.jsx(cr,{variant:"outline",className:"text-xs border-primary/30 text-brand-ink mt-1",children:l.partnership})]})]}),n.jsx("p",{className:"text-sm text-muted-foreground flex-1",children:l.description}),n.jsx(HP,{className:"h-5 w-5 text-muted-foreground group-hover:text-brand-ink transition-colors hidden md:block shrink-0"})]})},l.name))})]})}),n.jsx(ke,{})]})},TH=()=>n.jsxs("div",{className:"min-h-screen bg-background text-foreground",children:[n.jsx(Ne,{title:"Privacy Policy â HookZ.ai",description:"How HookZ.ai collects, uses, and protects personal data across our communications and infrastructure services.",path:"/privacy"}),n.jsx(je,{}),n.jsx("main",{className:"pt-24 pb-16",children:n.jsxs("div",{className:"container mx-auto px-6 max-w-4xl",children:[n.jsx("div",{className:"mb-8",children:n.jsx(V,{to:"/",className:"text-sm text-muted-foreground hover:text-foreground transition-colors",children:"â Back to Home"})}),n.jsx("h1",{className:"text-4xl font-bold mb-2",children:"Privacy Policy"}),n.jsx("p",{className:"text-muted-foreground mb-12",children:"Last updated: February 15, 2026"}),n.jsxs("div",{className:"prose prose-invert max-w-none space-y-8 text-muted-foreground [&_h2]:text-foreground [&_h2]:text-2xl [&_h2]:font-semibold [&_h2]:mt-10 [&_h2]:mb-4 [&_h3]:text-foreground [&_h3]:text-lg [&_h3]:font-medium [&_h3]:mt-6 [&_h3]:mb-3 [&_ul]:list-disc [&_ul]:pl-6 [&_ul]:space-y-1",children:[n.jsxs("section",{children:[n.jsx("h2",{children:"1. Introduction"}),n.jsx("p",{children:'HookZ.ai ("HookZ", "we", "us", or "our") is committed to protecting the privacy and security of your personal information. This Privacy Policy describes how we collect, use, disclose, and safeguard your data when you use our websites, platforms, products, and services, including but not limited to HookZ CX, HookZ Connect, HookZ Voice Edge, HookZ Meet, and the HookZ InfraX platform (collectively, the "Services").'}),n.jsx("p",{children:"By accessing or using our Services, you agree to the collection and use of information in accordance with this Privacy Policy. If you do not agree, please discontinue use of our Services."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"2. Information We Collect"}),n.jsx("h3",{children:"2.1 Information You Provide"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Account Information:"}
672)," Name, email address, phone number, company name, job title, and billing information when you create an account or request a demo."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Communications Data:"})," Call recordings, messages, video conference content, and related metadata processed through HookZ CX, HookZ Connect, HookZ Voice Edge, and HookZ Meet, as directed by your organization."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Support Data:"})," Information you provide when contacting support, including diagnostic data, system logs, and correspondence."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Payment Information:"})," Credit card details, billing addresses, and transaction records processed through our secure payment providers."]})]}),n.jsx("h3",{children:"2.2 Information Collected Automatically"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Usage Data:"})," Service usage patterns, feature interactions, session duration, API call volumes, and performance metrics."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Device & Network Data:"})," IP addresses, browser type, operating system, device identifiers, and network configuration data."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Infrastructure Telemetry:"})," For InfraX platform users â VM performance metrics, resource utilization data, cluster health indicators, and system event logs collected for service optimization and support."]}
672),n.jsxs("li",{children:[n.jsx("strong",{children:"Cookies & Tracking Technologies:"})," We use cookies, web beacons, and similar technologies to enhance your experience and gather analytics. See Section 7 for details."]})]}),n.jsx("h3",{children:"2.3 Information from Third Parties"}),n.jsxs("ul",{children:[n.jsx("li",{children:"Business contact information from partners and resellers."}),n.jsx("li",{children:"Publicly available business information for lead enrichment."}),n.jsx("li",{children:"Data from integrated third-party services you connect to our platform."})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"3. How We Use Your Information"}),n.jsx("p",{children:"We use collected information for the following purposes:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Service Delivery:"})," To provide, maintain, and improve our communications and infrastructure services."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Customer Support:"})," To respond to inquiries, troubleshoot issues, and provide technical assistance."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Security & Compliance:"})," To detect, prevent, and address fraud, security threats, and technical issues; to comply with legal obligations and regulatory requirements."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Analytics & Improvement:"})," To analyze usage trends, optimize performance, and develop new features."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Communications:"})," To send service notifications, product updates, and, where permitted, marketing communications."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Billing:"})," To process payments, manage subscriptions, and maintain financial records."]})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"4. Data Sharing & Disclosure"}),n.jsx("p",{children:"We do not sell your personal information. We may share data with:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Service Providers:"})," Trusted vendors who assist in delivering our Services (hosting, payment processing, analytics), bound by contractual data protection obligations."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Business Partners:"})," Channel partners and resellers, only as necessary to fulfill service delivery."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Legal Compliance:"})," When required by law, regulation, legal process, or enforceable governmental request."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Business Transfers:"})," In connection with a merger, acquisition, reorganization, or sale of assets, with appropriate confidentiality protections."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"With Your Consent:"})," For any purpose disclosed to you at the time of collection with your explicit consent."]})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"5. Data Security"}),n.jsx("p",{children:"We implement industry-standard technical and organizational measures to protect your data, including:"}),n.jsxs("ul",{children:[n.jsx("li",{children:"AES-256 encryption for data at rest and TLS 1.3 for data in transit."}),n.jsx("li",{children:"SOC 2 Type II compliant infrastructure and processes."}),n.jsx("li",{children:"Role-based access controls and multi-factor authentication."}),n.jsx("li",{children:"Regular penetration testing and vulnerability assessments."}),n.jsx("li",{children:"24/7 security monitoring and incident response capabilities."})]}),n.jsx("p",{children:"While we strive to protect your information, no method of electronic transmission or storage is 100% secure. We cannot guarantee absolute security."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"6. Data Retention"}),n.jsx("p",{children:"We retain personal data only for as long as necessary to fulfill the purposes outlined in this policy, comply with legal obligations, resolve disputes, and enforce our agreements. Retention periods vary based on the type of data:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Account Data:"})," Duration of account plus 12 months after termination."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Communications Content:"})," As configured by your organization's retention policies, or 90 days by default."]}
672),n.jsxs("li",{children:[n.jsx("strong",{children:"Infrastructure Logs:"})," Up to 12 months for operational and compliance purposes."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Billing Records:"})," As required by applicable tax and financial regulations."]})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"7. Cookies & Tracking"}),n.jsx("p",{children:"We use the following types of cookies:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Essential Cookies:"})," Required for platform functionality and security."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Analytics Cookies:"})," Help us understand usage patterns and improve services."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Preference Cookies:"})," Remember your settings and preferences."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Marketing Cookies:"})," Used to deliver relevant advertising (only with consent)."]})]}),n.jsx("p",{children:"You can manage cookie preferences through your browser settings or our cookie consent tool."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"8. International Data Transfers"}),n.jsx("p",{children:"HookZ operates globally with offices in the UAE, India, and the United Kingdom. Your data may be transferred to and processed in countries other than your own. We ensure appropriate safeguards are in place, including:"}),n.jsxs("ul",{children:[n.jsx("li",{children:"Standard Contractual Clauses (SCCs) approved by relevant authorities."}),n.jsx("li",{children:"Compliance with UAE Federal Decree-Law No. 45 of 2021 on Personal Data Protection."}),n.jsx("li",{children:"Adherence to GDPR requirements for EU/EEA data subjects."}),n.jsx("li",{children:"Compliance with India's Digital Personal Data Protection Act, 2023."})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"9. Your Rights"}),n.jsx("p",{children:"Depending on your jurisdiction, you may have the right to:"}),n.jsxs("ul",{children:[n.jsx("li",{children:"Access, correct, or delete your personal data."}),n.jsx("li",{children:"Restrict or object to certain processing activities."}),n.jsx("li",{children:"Data portability â receive your data in a structured, machine-readable format."}),n.jsx("li",{children:"Withdraw consent at any time where processing is consent-based."}),n.jsx("li",{children:"Lodge a complaint with a relevant data protection authority."})]}),n.jsxs("p",{children:["To exercise any of these rights, contact us at ",n.jsx("strong",{children:"[email protected]"}),"."]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"10. Children's Privacy"}),n.jsx("p",{children:"Our Services are designed for business use and are not intended for individuals under 18 years of age. We do not knowingly collect personal information from children."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"11. Changes to This Policy"}),n.jsx("p",{children:"We may update this Privacy Policy from time to time. We will notify you of material changes by posting the updated policy on our website and, where appropriate, by email. Your continued use of the Services after changes take effect constitutes acceptance of the revised policy."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"12. Contact Us"}),n.jsx("p",{children:"For questions, concerns, or requests regarding this Privacy Policy:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Email:"})," [email protected]"]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Data Protection Officer:"})," [email protected]"]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Mailing Address:"})," HookZ.ai, 6th Floor, Meydan Grand Stand, Nad Al Sheba 1, Dubai, UAE"]})]})]})]})]})}),n.jsx(ke,{})]}),_H=()=>n.jsxs("div",{className:"min-h-screen bg-background text-foreground",children:[n.jsx(Ne,{title:"Terms of Use â HookZ.ai",description:"The terms governing use of HookZ.ai websites, platforms, products, and services.",path:"/terms"}),n.jsx(je,{}),n.jsx("main",{className:"pt-24 pb-16",children:n.jsxs("div",{className:"container mx-auto px-6 max-w-4xl",children:[n.jsx("div",{className:"mb-8",children:n.jsx(V,{to:"/",className:"text-sm text-muted-foreground hover:text-foreground transition-colors",children:"â Back to Home"})}),n.jsx("h1",{className:"text-4xl font-bold mb-2",children:"Terms of Use"}),n.jsx("p",{className:"text-muted-foreground mb-12",children:"Last updated: February 15, 2026"}),n.jsxs("div",{className:"prose prose-invert max-w-none space-y-8 text-muted-foreground [&_h2]:text-foreground [&_h2]:text-2xl [&_h2]:font-semibold [&_h2]:mt-10 [&_h2]:mb-4 [&_h3]:text-foreground [&_h3]:text-lg [&_h3]:font-medium [&_h3]:mt-6 [&_h3]:mb-3 [&_h4]:text-foreground [&_h4]:font-medium [&_h4]:mt-4 [&_h4]:mb-2 [&_ul]:list-disc [&_ul]:pl-6 [&_ul]:space-y-1 [&_ol]:list-decimal [&_ol]:pl-6 [&_ol]:space-y-1",children:[n.jsxs("section",{children:[n.jsx("h2",{children:"1. Acceptance of Terms"}),n.jsx("p",{children:'These Terms of Use ("Terms") constitute a legally binding agreement between you ("Customer", "you", or "your") and HookZ.ai FZ-LLC ("HookZ", "we", "us", or "our"), governing your access to and use of our software products, platforms, and services (collectively, the "Services"). By accessing, installing, or using any of our Services, you agree to be bound by these Terms.'}),n.jsx("p",{children:"These Terms apply to all HookZ software products, including but not limited to: HookZ CX, HookZ Connect, HookZ Voice Edge, HookZ Meet, HookZ InfraX (including CoreX, EdgeX, and ControlX modules), and all associated APIs, SDKs, documentation, and updates."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"2. Definitions"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:'"Authorized User"'})," means any individual authorized by Customer to access and use the Services under Customer's account."]}),n.jsxs("li",{children:[n.jsx("strong",{children:'"Customer Data"'})," means all data, content, and information submitted to or processed by the Services on Customer's behalf."]}),n.jsxs("li",{children:[n.jsx("strong",{children:'"Documentation"'})," means the technical manuals, user guides, API references, and online help materials provided by HookZ."]}),n.jsxs("li",{children:[n.jsx("strong",{children:'"Order Form"'})," means a mutually executed ordering document specifying the Services, subscription term, fees, and other commercial terms."]}),n.jsxs("li",{children:[n.jsx("strong",{children:'"Subscription Term"'}
672)," means the period during which Customer has the right to access and use the Services as specified in the applicable Order Form."]})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"3. End User License Agreement (EULA)"}),n.jsx("p",{children:"This section constitutes the End User License Agreement applicable to all HookZ software products. By installing, copying, or otherwise using any HookZ software, you agree to the following terms."}),n.jsx("h3",{children:"3.1 License Grant"}),n.jsx("p",{children:"Subject to compliance with these Terms and payment of applicable fees, HookZ grants you a limited, non-exclusive, non-transferable, non-sublicensable license to access and use the applicable Services during the Subscription Term, solely for your internal business purposes and in accordance with the Documentation and applicable Order Form."}),n.jsx("h3",{children:"3.2 License Restrictions"}),n.jsx("p",{children:"You shall not, and shall not permit any third party to:"}),n.jsxs("ul",{children:[n.jsx("li",{children:"Copy, modify, adapt, translate, or create derivative works of the Services or any component thereof."}),n.jsx("li",{children:"Reverse engineer, disassemble, decompile, or otherwise attempt to derive the source code, algorithms, or data models of the Services."}),n.jsx("li",{children:"Rent, lease, lend, sell, sublicense, distribute, or otherwise make the Services available to any third party (except Authorized Users)."}),n.jsx("li",{children:"Remove, alter, or obscure any proprietary notices, labels, or marks on the Services."}),n.jsx("li",{children:"Use the Services to develop a competing product or service, or for competitive benchmarking or analysis."}),n.jsx("li",{children:"Circumvent or disable any security, authentication, or access control features of the Services."}),n.jsx("li",{children:"Use the Services in violation of any applicable law, regulation, or third-party rights."}),n.jsx("li",{children:"Exceed the usage limits, user counts, or capacity thresholds specified in your Order Form."})]}),n.jsx("h3",{children:"3.3 Product-Specific Terms"}),n.jsx("h4",{children:"A. HookZ InfraX Platform (CoreX, EdgeX, ControlX)"}),n.jsx("p",{children:"The following additional terms apply to the HookZ InfraX virtualization and infrastructure platform:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Hypervisor License:"})," The HXI hypervisor is licensed per physical CPU socket. Each host running HXI requires a valid license key. Clustering and high-availability features require appropriate edition licensing."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"VM Portability:"})," Virtual machines created on HookZ InfraX may be exported in standard formats (OVA/OVF, QCOW2). HookZ does not guarantee compatibility with third-party hypervisors."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Resource Limits:"})," Evaluation and starter licenses are limited to the number of CPU cores, RAM allocation, and VM instances specified in the Order Form. Exceeding these limits requires a license upgrade."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"ControlX Management:"})," The ControlX management plane is licensed separately. Multi-cluster management, policy automation, and lifecycle management features are available based on your subscription tier."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"EdgeX Deployments:"})," Edge node licenses are specific to the deployment location and hardware profile specified in the Order Form. Relocation requires prior written approval."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Updates & Patches:"})," Critical security patches are provided for all active licenses. Feature updates and major version upgrades require an active support and subscription agreement."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Hardware Compatibility:"})," HookZ InfraX is certified for use on the hardware configurations listed in our Hardware Compatibility List (HCL). Operation on non-certified hardware is not supported."]})]}),n.jsx("h4",{children:"B. HookZ CX (Contact Center as a Service)"}),n.jsx("p",{children:"The following additional terms apply to HookZ CX:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Agent Licensing:"})," HookZ CX is licensed on a per-named-agent or per-concurrent-agent basis as specified in your Order Form. Unauthorized sharing of agent credentials is prohibited."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Recording & Storage:"})," Call recordings, screen captures, and interaction transcripts are stored in accordance with your configured retention policy. Default retention is 90 days. Extended retention is available at additional cost."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"AI Features:"})," AI-powered features including sentiment analysis, automatic summarization, agent assist, and predictive routing are subject to our AI Acceptable Use Policy. AI outputs are provided as recommendations and do not constitute professional advice."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Telephony Integration:"})," You are responsible for procuring and maintaining your own PSTN connectivity or SIP trunking, unless provisioned through HookZ. Toll and usage charges from third-party carriers are your responsibility."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Compliance:"})," You are responsible for compliance with call recording consent laws, PCI-DSS requirements for payment processing, and industry-specific regulations (HIPAA, GDPR, etc.) applicable to your use case."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Uptime SLA:"})," HookZ CX is backed by a 99.95% platform availability SLA, excluding scheduled maintenance windows and force majeure events. SLA credits are applied as service credits per the terms of your Order Form."]})]}),n.jsx("h4",{children:"C. HookZ Connect (Communications Platform as a Service)"}),n.jsx("p",{children:"The following additional terms apply to HookZ Connect:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"API Usage:"})," API access is metered based on message volume, API calls, and channel usage as specified in your plan. Rate limits apply per API endpoint. Exceeding rate limits may result in throttling or temporary suspension."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Messaging Compliance:"})," You are solely responsible for obtaining proper consent from message recipients, complying with anti-spam legislation (CAN-SPAM, GDPR, PDPA, UAE Telecommunications Regulatory Authority rules), and maintaining opt-out mechanisms."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Channel Availability:"})," Availability of messaging channels (SMS, WhatsApp, Viber, RCS, etc.) varies by region and is subject to carrier and platform provider policies. HookZ does not guarantee message delivery across all channels in all regions."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Sender Registration:"})," You are responsible for registering sender IDs, short codes, and business profiles with the applicable carriers and platforms. HookZ will provide reasonable assistance but registration approval is at the discretion of the carriers."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Content Restrictions:"})," You shall not use HookZ Connect to send unsolicited messages, phishing content, malware, or any content that violates applicable laws or our Acceptable Use Policy."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Webhook & Callback Security:"})," You are responsible for securing your webhook endpoints and validating callback signatures. HookZ is not liable for data exposure resulting from misconfigured customer endpoints."]})]}),n.jsx("h4",{children:"D. HookZ Voice Edge (Session Border Controller as a Service)"}),n.jsx("p",{children:"The following additional terms apply to HookZ Voice Edge:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Session Licensing:"})," HookZ Voice Edge is licensed based on the number of concurrent sessions (calls). Each session represents one active call leg traversing the SBC. Exceeding the licensed session count may result in call rejection."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Network Requirements:"})," You are responsible for maintaining adequate network infrastru
672cture, including sufficient bandwidth, QoS configuration, and firewall rules to support real-time voice traffic. HookZ provides configuration guidelines but is not responsible for your network performance."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Interoperability:"})," HookZ Voice Edge supports standard SIP (RFC 3261) and is tested for interoperability with major PBX systems, UC platforms, and PSTN gateways. Compatibility with specific third-party equipment is not guaranteed outside our certified interoperability list."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Security Features:"})," TLS/SRTP encryption, topology hiding, SIP normalization, and fraud detection features are included. You are responsible for configuring security policies appropriate to your deployment."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Emergency Calling:"})," HookZ Voice Edge is not intended as a replacement for direct PSTN connectivity for emergency services (e.g., 999, 911, 112). You are responsible for maintaining alternative emergency calling capabilities."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Regulatory Compliance:"})," You are responsible for compliance with local telecommunications regulations, lawful intercept requirements, and numbering plan regulations in your jurisdiction of deployment."]})]}),n.jsx("h4",{children:"E. HookZ Meet (Video Conferencing)"}),n.jsx("p",{children:"The following additional terms apply to HookZ Meet:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Participant Limits:"})," Meeting capacity is determined by your subscription tier. Free-tier meetings are limited to 45 minutes and 100 participants. Enterprise plans support up to 1,000 participants and unlimited duration."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Recording & Transcription:"})," Meeting recordings and AI-generated transcripts are stored in your designated region. Cloud recording storage is metered and billed per your plan. Local recording is available at no additional cost."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"AI Meeting Features:"})," AI-powered features (real-time transcription, meeting summaries, action item extraction, noise suppression) are provided as-is. Accuracy is not guaranteed, and AI outputs should be reviewed by participants."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Content Sharing:"})," You are responsible for ensuring you have the rights to share any content presented during meetings. HookZ is not liable for intellectual property infringement by users."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Data Residency:"})," Meeting data is processed in the region selected in your account settings. Cross-region data transfer may occur for participants joining from outside the designated region."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Integration Use:"})," Calendar integrations, SSO, and third-party app integrations are subject to the terms and privacy policies of the respective third-party providers."]})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"4. Customer Responsibilities"}),n.jsxs("ul",{children:[n.jsx("li",{children:"Maintain the confidentiality of account credentials and restrict access to Authorized Users only."}),n.jsx("li",{children:"Ensure all use of the Services complies with applicable laws and regulations."}),n.jsx("li",{children:"Obtain all necessary consents for Customer Data processed through the Services."}),n.jsx("li",{children:"Implement appropriate security measures for systems that interface with the Services."}),n.jsx("li",{children:"Promptly notify HookZ of any unauthorized access or security breach."}),n.jsx("li",{children:"Maintain backups of Customer Data as appropriate for your business requirements."})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"5. Intellectual Property"}),n.jsx("p",{children:"All right, title, and interest in and to the Services, including all intellectual property rights therein, remain with HookZ and its licensors. These Terms do not grant you any rights to HookZ's trademarks, service marks, or logos. Customer retains all rights in Customer Data."}),n.jsx("p",{children:"You grant HookZ a limited license to use Customer Data solely to provide and improve the Services. We will not use Customer Data for purposes unrelated to the Services without your consent."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"6. Fees & Payment"}),n.jsxs("ul",{children:[n.jsx("li",{children:"Fees are as specified in the applicable Order Form and are non-refundable except as expressly stated herein."}),n.jsx("li",{children:"Usage-based charges (API calls, messaging volume, storage overages) are billed monthly in arrears."}),n.jsx("li",{children:"HookZ may increase fees upon renewal with at least 60 days' prior written notice."}),n.jsx("li",{children:"Late payments accrue interest at 1.5% per month or the maximum rate permitted by law."}),n.jsx("li",{children:"All fees are exclusive of applicable taxes, which are your responsibility."})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"7. Service Level Agreement"}),n.jsx("p",{children:"HookZ provides service level commitments as specified in the applicable SLA documentation for each product. In the event of a confirmed SLA breach, your sole remedy is the receipt of service credits as described
672in the SLA. Service credits may not exceed 30% of the monthly fees for the affected Service."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"8. Data Protection"}),n.jsxs("p",{children:["HookZ processes Customer Data in accordance with our ",n.jsx(V,{to:"/privacy",className:"text-[hsl(var(--primary))] hover:underline",children:"Privacy Policy"})," and applicable Data Processing Addendum (DPA). We implement appropriate technical and organizational measures to protect Customer Data. For enterprise customers, a custom DPA is available upon request."]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"9. Warranties & Disclaimers"}),n.jsx("p",{children:"HookZ warrants that the Services will perform materially in accordance with the Documentation during the Subscription Term. Your exclusive remedy for breach of this warranty is, at HookZ's option, repair, replacement, or a pro-rata refund of prepaid fees for the affected period."}),n.jsx("p",{children:'EXCEPT AS EXPRESSLY SET FORTH HEREIN, THE SERVICES ARE PROVIDED "AS IS" AND "AS AVAILABLE." HOOKZ DISCLAIMS ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. HOOKZ DOES NOT WARRANT THAT THE SERVICES WILL BE UNINTERRUPTED, ERROR-FREE, OR COMPLETELY SECURE.'})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"10. Limitation of Liability"}),n.jsx("p",{children:"TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL HOOKZ'S TOTAL AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THESE TERMS EXCEED THE AMOUNTS PAID BY CUSTOMER DURING THE TWELVE (12) MONTHS PRECEDING THE CLAIM."}),n.jsx("p",{children:"IN NO EVENT SHALL HOOKZ BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, OR DAMAGES FOR LOSS OF PROFITS, REVENUE, DATA, BUSINESS OPPORTUNITIES, OR GOODWILL, REGARDLESS OF THE THEORY OF LIABILITY."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"11. Term & Termination"}),n.jsxs("ul",{children:[n.jsx("li",{children:"These Terms remain in effect for the duration of your Subscription Term and any renewal periods."}),n.jsx("li",{children:"Either party may terminate for cause upon 30 days' written notice of a material breach, if such breach remains uncured."}),n.jsx("li",{children:"HookZ may suspend access immediately if your use poses a security risk or violates these Terms."}),n.jsx("li",{children:"Upon termination, your license to use the Services ceases. Customer Data will be available for export for 30 days following termination, after which it will be deleted."})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"12. Indemnification"}),n.jsx("p",{children:"You agree to indemnify and hold harmless HookZ from any claims, damages, losses, and expenses arising from: (a) your use of the Services in violation of these Terms; (b) your Customer Data; (c) your violation of any applicable law or third-party rights."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"13. Governing Law & Dispute Resolution"}),n.jsx("p",{children:"These Terms are governed by the laws of the Emirate of Dubai and the applicable federal laws of the United Arab Emirates, without regard to conflict of laws principles. Any dispute arising from these Terms shall be resolved through binding arbitration administered by the Dubai International Arbitration Centre (DIAC), conducted in English in Dubai, UAE."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"14. General Provisions"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Entire Agreement:"})," These Terms, together with the applicable Order Form and DPA, constitute the entire agreement between the parties."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Amendments:"})," HookZ may modify these Terms with 30 days' notice. Continued use constitutes acceptance."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Assignment:"})," You may not assign these Terms without HookZ's prior written consent."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Severability:"})," If any provision is held unenforceable, the remaining provisions remain in full force."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Force Majeure:"})," Neither party is liable for delays caused by events beyond reasonable control."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Notices:"})," Legal notices to HookZ should be sent to [email protected] or to our registered address."]})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"15. Contact"}),n.jsx("p",{children:"For questions about these Terms of Use:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Email:"})," [email protected]"]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Mailing Address:"})," HookZ.ai FZ-LLC, 6th Floor, Meydan Grand Stand, Nad Al Sheba 1, Dubai, UAE"]})]})]})]})]})}),n.jsx(ke,{})]}),IH=()=>n.jsxs("div",{className:"min-h-screen bg-background text-foreground",children:[n.jsx(Ne,{title:"Enterprise End User Agreement â HookZ.ai",description:"HookZ.ai Enterprise End User Agreement (EUA) v1.0 â Master Licence & Service Agreement governing use of HookZ.ai products, cloud services, subscriptions and APIs.",path:"/eua"}),n.jsx(je,{}),n.jsx("main",{className:"pt-24 pb-16",children:n.jsxs("div",{className:"container mx-auto px-6 max-w-4xl",children:[n.jsx("div",{className:"mb-8",children:n.jsx(V,{to:"/",className:"text-sm text-muted-foreground hover:text-foreground transition-colors",children:"â Back to Home"})}),n.jsx("p",{className:"text-sm uppercase tracking-wider text-brand-ink mb-2",children:"Master Licence & Service Agreement â Version 1.0"}),n.jsx("h1",{className:"text-4xl font-bold mb-2",children:"Enterprise End User Agreement (EUA)"}),n.jsx("p",{className:"text-muted-foreground mb-8",children:"Effective Date: 18 April 2026 · Owner: Legal & Compliance, HookZ.ai"}),n.jsxs("div",{className:"rounded-xl border border-primary/20 bg-primary/5 p-5 mb-10 text-sm text-muted-foreground",children:[n.jsx("p",{className:"text-foreground font-medium mb-1",children:"Enterprise Trust · Cloud & Edge Ready · Secure by Design · Partner Driven · Global Compliance"}),n.jsx("p",{children:'This Enterprise End User Agreement ("EUA") governs Your access to and use of the HookZ.ai products, software, cloud services and related documentation as specified in the applicable Order or Offer Description. Applies to all HookZ.ai products, software, cloud services, subscriptions, APIs and related documentation.'})]}),n.jsxs("div",{className:"prose prose-invert max-w-none space-y-8 text-muted-foreground [&_h2]:text-foreground [&_h2]:text-2xl [&_h2]:font-semibold [&_h2]:mt-10 [&_h2]:mb-4 [&_h3]:text-foreground [&_h3]:text-lg [&_h3]:font-medium [&_h3]:mt-6 [&_h3]:mb-3 [&_ul]:list-disc [&_ul]:pl-6 [&_ul]:space-y-1",children:[n.jsxs("section",{children:[n.jsx("h2",{children:"1. Parties, Scope and Acceptance"}),n.jsx("p",{children:"1.1 This Agreement is between HookZ.ai L.L.C-FZ (âHookZ.aiâ) and the entity identified in the applicable Transaction Document as the ultimate customer, end user or authorized beneficiary of an Offer (âCustomerâ or âEnd Userâ
672), irrespective of whether the Offer is acquired directly from HookZ.ai or through a Channel Partner."}),n.jsx("p",{children:"1.2 âOfferâ means any HookZ.ai software, hosted or cloud service, subscription, virtual appliance, API, platform, feature, support service or related Documentation made available to Customer."}),n.jsx("p",{children:"1.3 Customer accepts this Agreement by signing or accepting a Transaction Document that incorporates it, electronically accepting it, activating an Offer, or accessing or using an Offer after being given notice that the Offer is subject to this Agreement."}),n.jsx("p",{children:"1.4 If Customer acquires an Offer through a Channel Partner, the Channel Partnerâs commercial terms govern price, invoicing, payment and delivery between Customer and the Channel Partner. This Agreement and the applicable HookZ.ai Supplemental Terms govern Customerâs access to and use of the HookZ.ai Offer. A Channel Partner has no authority to amend HookZ.ai terms or make commitments on HookZ.aiâs behalf unless expressly authorised in writing by HookZ.ai."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"2. Definitions"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Affiliate"})," â an entity that directly or indirectly controls, is controlled by, or is under common control with a party."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Authorised User"})," â Customer personnel, contractors and other persons permitted to access an Offer for Customerâs internal business purposes."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Channel Partner"})," â an authorised reseller, distributor, system integrator, managed service provider or other intermediary supplying or managing an Offer."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Customer Data"})," â data, content, configurations and communications submitted to, transmitted through or processed by an Offer on Customerâs behalf."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Documentation"})," â HookZ.aiâs then-current technical and user documentation for an Offer."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Entitlement"})," â the purchased scope of rights measured by the applicable licence metric, including users, sessions, channels, instances, virtual machines, nodes, hosts, CPUs/cores, sites, capacity, throughput, consumption, territory and/or term."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Supplemental Terms"})," â an Offer Description, Product Schedule, Service Description, SLA, DPA, AUP, support policy, country-specific terms or other HookZ.ai terms applicable to an Offer."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Transaction Document"})," â an accepted order form, quotation, subscription document, statement of work or other purchasing document identifying the Offer and Entitlement."]})]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"3. Licence and Access Rights"}),n.jsx("p",{children:"3.1 Software is licensed, not sold. Subject to Customerâs compliance with this Agreement and the applicable Transaction Document, HookZ.ai grants Customer a limited, non-exclusive, non-transferable except as expressly permitted, non-sublicensable right during the applicable Term to access and use the Offer for Customerâs internal business purposes within the Entitlement."}),n.jsx("p",{children:"3.2 For SaaS and hosted Offers, Customer receives a right to access the service and no ownership interest in the underlying software or infrastru
672cture. For deployed software or virtual appliances, Customer may install and operate only the instances and capacity expressly permitted by the Entitlement and applicable Offer Description."}),n.jsx("p",{children:"3.3 Customer Affiliates may use an Offer only if the Transaction Document or applicable Offer Description permits Affiliate use. Customer remains responsible for their compliance."}),n.jsx("p",{children:"3.4 Rights are specific to the applicable licence metric. Use above the purchased Entitlement requires additional licences or subscription capacity. Technical ability to exceed an Entitlement does not constitute a licence to do so."}),n.jsx("p",{children:"3.5 HookZ.ai may use technical controls, activation, entitlement records and reasonable usage telemetry to administer licensing, capacity, security and service operation."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"4. Virtualisation, Hosting and Outsourcing"}),n.jsx("p",{children:"4.1 Where an Offer is licensed for deployment on Customer-controlled infrastructure, Customer may deploy it only on physical or virtual infrastructure permitted by the applicable Offer Description."}),n.jsx("p",{children:"4.2 Operation by an outsourcer, hosting provider or managed service provider on Customerâs behalf does not transfer the licence to that provider. The provider may access the Offer solely to operate it for Customer and must be bound by confidentiality and use restrictions at least as protective as this Agreement."}),n.jsx("p",{children:"4.3 Customer may not use an internally licensed Offer to provide a bureau service, commercial hosting service, multi-tenant service or service to unrelated third parties unless the applicable Entitlement expressly permits such use."}),n.jsx("p",{children:"4.4 Licence portability, disaster-recovery instances, standby instances, test/dev rights, migration rights and hardware reassignment rights are governed by the applicable Offer Description."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"5. Restrictions"}),n.jsx("p",{children:"Customer will not, and will not permit any third party to: (a) reverse engineer, decompile or disassemble an Offer except to the limited extent such restriction is prohibited by law; (b) circumvent licence, capacity, authentication or security controls; (c) copy, modify or create derivative works except where expressly permitted; (d) sublicense, sell, rent, lease, distribute or make an Offer available to an unrelated third party; (e) remove proprietary notices; (f) use non-public APIs except as authorised; (g) benchmark or publish performance/security testing results in a misleading manner or in breach of confidentiality; (h) conduct penetration, vulnerability, stress or load testing against HookZ.ai-hosted infrastructure without written authorisation; (i) use an Offer for unlawful, fraudulent, abusive or malicious activity; or (j) access an Offer to build or materially assist a directly competing product through unauthorised extraction of proprietary functionality or confidential information."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"6. Channel Partner / System Integrator Model"}),n.jsx("p",{children:"6.1 A Channel Partner may bundle an Offer with its own implementation, managed services or third-party products. HookZ.ai is responsible only for the HookZ.ai Offer and obligations expressly assumed in the applicable HookZ.ai terms."}),n.jsx("p",{children:"6.2 Customerâs payment obligations to a Channel Partner, and the Channel Partnerâs obligations, products, services, representations or commitments to Customer, do not enlarge, modify or otherwise affect HookZ.aiâs obligations unless expressly accepted by HookZ.ai in writing."}),n.jsx("p",{children:"6.3 HookZ.ai may provide technical support through the Channel Partner, directly to Customer, or through a tiered support model identified in the applicable Transaction Document, Offer Description, Service Description or SLA."}),n.jsxs("p",{children:["6.4 ",n.jsx("strong",{children:"End-User Flow-Down."})," Where a Channel Partner supplies, resells, bundles, provisions or manages a HookZ.ai Offer for an End User, the Channel Partner must ensure that the End User is provided with and contractually bound by this Agreement and all applicable Supplemental Terms before the End User accesses or uses the Offer in production."]}),n.jsxs("p",{children:["6.5 ",n.jsx("strong",{children:"Channel Partner Authority."})," A Channel Partner may separately establish pricing, invoicing, payment, implementation and other commercial terms with Customer but may
672not modify this Agreement or applicable Supplemental Terms, or make representations, warranties or commitments on behalf of HookZ.ai unless expressly authorized in writing."]}),n.jsxs("p",{children:["6.6 ",n.jsx("strong",{children:"End User Rights."})," Where a Channel Partner executes or places a Transaction Document but the Offer is provisioned for an identified End User, the license, subscription and service-use rights granted under this Agreement are solely for the benefit and authorized use of that identified End User, unless the applicable Transaction Document expressly provides otherwise."]}),n.jsxs("p",{children:["6.7 ",n.jsx("strong",{children:"Channel Partner Responsibility."})," The Channel Partner remains solely responsible for its own products, professional services, managed services, pricing, representations and commercial commitments to Customer."]}),n.jsxs("p",{children:["6.8 ",n.jsx("strong",{children:"Change or Termination of Channel Partner."})," If the Channel Partner relationship ends, HookZ.ai may, subject to commercial, contractual and technical feasibility, permit Customer to continue the remaining paid Entitlement directly with HookZ.ai or through another authorized Channel Partner."]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"7. Customer Responsibilities and Acceptable Use"}),n.jsx("p",{children:"Customer is responsible for its Authorised Users; account and credential security; lawful Customer Data; Customer-controlled endpoints, LAN/WAN, routing, firewall, DNS and integrations; compliance with Documentation; and obtaining necessary permissions and consents. Customer must promptly report suspected compromise, fraud or material misuse. Customer and its End Users must comply with HookZ.aiâs applicable AUP and Supplemental Terms."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"8. Communications, Voice and Telecom Services"}),n.jsx("p",{children:"8.1 For SIP, SBC, PSTN, messaging, CPaaS or communications Offers, Customer is responsible for lawful use of telephone numbers, caller identity, trunks, credentials, recording features and communications content."}),n.jsx("p",{children:"8.2 Customer is responsible for telecommunications, privacy, consent, recording, anti-spam, calling-line identification and other regulatory obligations applicable to its use unless a Transaction Document expressly allocates a specific obligation to HookZ.ai."}),n.jsx("p",{children:"8.3 Emergency calling, emergency location, lawful intercept, number portability and regulated carrier functionality are not included unless expressly identified in the applicable Offer Description or Transaction Document."}),n.jsx("p",{children:"8.4 HookZ.ai may block, rate-limit, quarantine or suspend traffic reasonably suspected to be fraudulent, abusive, unlawful, security-threatening or materially harmful to the service or other customers, and will provide notice where reasonably practicable."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"9. Security and Data Protection"}),n.jsx("p",{children:"9.1 Each party will maintain reasonable administrative, technical and organisational safeguards appropriate to its responsibilities."}),n.jsx("p",{children:"9.2 Where HookZ.ai processes personal data as processor on Customerâs behalf, the applicable DPA governs that processing. Customer is responsible for determining whether the Offer is suitable for its regulatory and data-classification requirements and for establishing a lawful basis for processing."}),n.jsx("p",{children:"9.3 HookZ.ai may process service telemetry, logs, metadata and diagnostic information as reasonably necessary to provide, secure, troubleshoot, meter and improve the Offer, subject to applicable law and contractual confidentiality/data-protection obligations."}),n.jsx("p",{children:"9.4 Security obligations for a specific hosted Offer may be supplemented by a Security Schedule or security documentation incorporated into the Transaction Document."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"10. Intellectual Property and Customer Data"}),n.jsx("p",{children:"10.1 HookZ.ai and its licensors retain all rights, title and interest in the Offers, software, Documentation, interfaces, designs, algorithms,
672know-how, trademarks, updates and improvements. No implied licence is granted."}),n.jsx("p",{children:"10.2 Customer retains ownership of Customer Data. Customer grants HookZ.ai and its authorised subprocessors the rights necessary to host, transmit, process and otherwise handle Customer Data to provide, secure and support the Offer."}),n.jsx("p",{children:"10.3 Customer grants HookZ.ai a perpetual, irrevocable, royalty-free right to use feedback voluntarily provided by Customer, provided HookZ.ai does not identify Customer or disclose Customer Confidential Information through such use."}),n.jsx("p",{children:"10.4 Third-party and open-source components may be governed by separate licence notices. To the extent a third-party licence expressly overrides a restriction in this Agreement for that component, that third-party licence controls for that component."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"11. Service Operation, Changes and Lifecycle"}),n.jsx("p",{children:"11.1 HookZ.ai may update, patch, replace or modify cloud and subscription Offers to improve security, reliability, interoperability, performance and functionality."}),n.jsx("p",{children:"11.2 HookZ.ai may introduce successor technology or change underlying hosting, cloud regions, infrastru
672cture components or subcontractors where the contracted service is materially preserved and applicable data-residency commitments remain satisfied."}),n.jsx("p",{children:"11.3 Material reductions to a committed service level during a committed Term will be handled in accordance with the applicable SLA or Transaction Document."}),n.jsx("p",{children:"11.4 End-of-sale, end-of-support and end-of-life treatment for licensed software will be governed by the applicable lifecycle policy or written notice. HookZ.ai will use commercially reasonable efforts to provide advance notice of material lifecycle events."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"12. Support, SLA and Service Credits"}),n.jsx("p",{children:"12.1 Support scope and service levels apply only where included in the applicable Entitlement."}),n.jsx("p",{children:"12.2 The applicable SLA exclusively governs availability calculations, covered service boundaries, maintenance exclusions, incident targets and service credits."}),n.jsx("p",{children:"12.3 Service credits are Customerâs sole and exclusive monetary remedy for failure to achieve an SLA availability commitment, unless the applicable SLA expressly states otherwise."}),n.jsx("p",{children:"12.4 A Channel Partner may offer additional service levels at its own responsibility. Such commitments do not bind HookZ.ai unless HookZ.ai expressly accepts them in writing."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"13. Evaluation, Beta, Trial and Pre-Release Offers"}),n.jsx("p",{children:"Evaluation, beta, trial, proof-of-concept and pre-release Offers are provided solely for evaluation during the stated period, may be changed or discontinued at any time, may have reduced support/security/availability commitments, and are provided âas isâ to the maximum extent permitted by law. They must not be used for production workloads unless HookZ.ai expressly authorises production use in writing."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"14. Fees, Metering and True-Up"}),n.jsx("p",{children:"14.1 Commercial charges are stated in the applicable Transaction Document or, for channel transactions, in the CustomerâChannel Partner agreement."}),n.jsx("p",{children:"14.2 Customer must not intentionally evade metering or licensing controls. If verified usage exceeds the purchased Entitlement, HookZ.ai may require Customer or the Channel Partner, as applicable, to purchase the additional capacity from the date the excess use began, subject to the governing commercial agreement."}),n.jsx("p",{children:"14.3 Unless otherwise stated, subscription rights expire at the end of the purchased Term. Continued technical operation after expiry does not create a continuing licence."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"15. Licence Verification"}),n.jsx("p",{children:"HookZ.ai may verify compliance using service records, licence-management systems and reasonable telemetry. If these are insufficient, HookZ.ai may, no more than once in any twelve-month period unless a material discrepancy is reasonably suspected, request records reasonably necessary to verify Entitlement compliance. Any review will be conducted on reasonable notice, during normal business hours, with reasonable measures to minimise disruption and protect Customer Confidential Information. Customer will remedy verified under-licensing by purchasing required Entitlements. This section does not authorise access to Customer content unrelated to licence verification."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"16. Confidentiality"}),n.jsx("p",{children:"Each receiving party will protect the other partyâs non-public information using at least reasonable care and use it only to perform or exercise r
672ights under the Agreement. Disclosure is permitted to Affiliates, employees, contractors, professional advisers and subprocessors with a need to know and appropriate confidentiality duties, or as required by law. Exclusions apply to information lawfully public, previously known without restriction, independently developed or lawfully obtained from a third party. Trade secrets remain protected for so long as they qualify as trade secrets under applicable law; other Confidential Information remains protected for five years after disclosure unless a directly executed agreement states otherwise."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"17. Warranties"}),n.jsx("p",{children:"17.1 HookZ.ai warrants that paid Offers will materially conform to applicable Documentation during the applicable Term when used as authorised. HookZ.aiâs obligation for breach is to use commercially reasonable efforts to correct the material non-conformity and, if HookZ.ai cannot do so, Customer may terminate the materially affected Offer and obtain a pro-rata refund of prepaid unused fees actually received by HookZ.ai for that Offer."}),n.jsx("p",{children:"17.2 Except for express warranties, and to the maximum extent permitted by law, Offers are provided without implied or statutory warranties, including merchantability, satisfactory quality, fitness for a particular purpose and non-infringement. HookZ.ai does not warrant uninterrupted or error-free operation or third-party telecommunications, internet, cloud or carrier services."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"18. Intellectual Property Indemnification"}),n.jsx("p",{children:"18.1 HookZ.ai will defend Customer against a third-party claim alleging that Customerâs authorised use of a paid HookZ.ai Offer infringes that third partyâs patent, copyright or trade secret, and will pay damages finally awarded or settlements approved by HookZ.ai, subject to this Section."}),n.jsx("p",{children:"18.2 HookZ.ai has no obligation for claims arising from Customer modifications, combinations not supplied or required by HookZ.ai where the Offer alone would not infringe, use outside the Entitlement or Documentation, continued use after notice to stop, Customer Data, third-party products, or free/beta/evaluation Offers."}),n.jsx("p",{children:"18.3 If an Offer becomes or is likely to become subject to an infringement claim, HookZ.ai may procure continued use rights, modify or replace the affected Offer with materially equivalent functionality, or terminate the affected Offer and refund prepaid unused fees actually received by HookZ.ai."}),n.jsx("p",{children:"18.4 Customer will defend and indemnify HookZ.ai against third-party claims arising from Customer Data, Customer-provided applications/content, unlawful communications, or Customer/End User use in material breach of Sections 5, 7 or 8."}),n.jsx("p",{children:"18.5 Indemnification requires prompt notice, control of defence and settlement by the indemnifying party, and reasonable cooperation. No settlement may admit fault of or impose non-monetary obligations on the indemnified party without consent. This Section states the exclusive remedy for third-party IP infringement claims."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"19. Limitation of Liability"}),n.jsx("p",{children:"19.1 Neither party will be liable for indirect, incidental, special, punitive or consequential damages, or loss of profits, revenue, goodwill, anticipated savings, business opportunity or business interruption, to the maximum extent permitted by law."}),n.jsx("p",{children:"19.2 Except for Excluded Claims, each partyâs aggregate liability arising from an affected Offer will not exceed the fees paid or payable for that affected Offer during the twelve months preceding the first event giving rise to liability. For channel transactions, HookZ.aiâs cap is calculated by reference to fees paid or payable to HookZ.ai for the affected End User Offer, not the Channel Partnerâs resale price."}),n.jsx("p",{children:"19.3 âExcluded Claimsâ means liability that cannot lawfully be limited; fraud or fraudulent misrepresentation; Customerâs payment obligations; and Customerâs infringement or misappropriation of HookZ.ai intellectual property."}),n.jsx("p",{children:"19.4 SLA availability failures remain subject to the exclusive service-credit remedy in the applicable SLA. Nothing in this Section creates liability for third-party networks, carriers, customer systems or excluded dependencies."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"20. Suspension"}),n.jsx("p",{children:"HookZ.ai may suspend affected access where: (a) Customer materially breaches the AUP or use restrictions; (b) use threatens security, integrity or availability; (c) fraudulent or abusive traffic is detected; (d) provision is prohibited by law or regulator; (e) required fees for the Offer remain unpaid under the applicable commercial arrangement; or (f) the Entitlement has expired. HookZ.ai will limit suspension to the affected Offer or traffic where reasonably practicable and will restore service after the cause is remedied. Prior notice will be provided where reasonably practicable, but immediate action is permitted for urgent security, fraud, legal or service-integrity risks."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"21. Term, Termination and Effect"}),n.jsx("p",{children:"21.1 This Agreement continues while Customer holds an active Entitlement."}),n.jsx("p",{children:"21.2 HookZ.ai or Customer may terminate the Customerâs rights to an affected Offer for material breach not cured within thirty (30) days after written notice; a shorter cure period may apply to non-payment where stated in the applicable Transaction Document. Immediate termination or suspension is permitted for incurable unlawful use, serious security abuse, infringement of HookZ.ai intellectual property or where required by law."}),n.jsx("p",{children:"21.3 Upon expiry or termination, rights to the affected Offer cease. Customer must stop use and delete deployed copies where applicable. If technically supported and legally permitted, Customer may retrieve Customer Data during any documented post-termination retrieval peri
672od."}),n.jsx("p",{children:"21.4 Provisions that by nature should survive do survive, including accrued payment, IP ownership, confidentiality, indemnification, liability, compliance and dispute provisions."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"22. Compliance, Export and Sanctions"}),n.jsx("p",{children:"Each party will comply with laws applicable to its performance. Customer will not export, re-export, transfer, access or use an Offer in violation of applicable export controls, sanctions or trade restrictions, or permit use by prohibited persons or for prohibited end uses. Customer is responsible for sector-specific regulatory approvals applicable to its own business and use of the Offer unless expressly allocated otherwise."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"23. Assignment and Change of Control"}),n.jsx("p",{children:"Neither party may assign this Agreement without the otherâs consent, not to be unreasonably withheld, except that either party may assign to an Affiliate or in connection with a merger, reorganisation or sale of substantially all relevant business/assets, provided the assignee assumes the applicable obligations. Customer may not assign to a direct competitor of HookZ.ai without HookZ.aiâs consent. Licence transfers between separate legal entities remain subject to applicable Offer Description and Entitlement rules."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"24. Governing Law and Disputes"}),n.jsx("p",{children:"This Agreement and non-contractual obligations arising from it are governed by the laws of England and Wales, without regard to conflict-of-law principles. The courts of England and Wales have exclusive jurisdiction, unless a directly executed agreement expressly provides otherwise. The United Nations Convention on Contracts for the International Sale of Goods does not apply."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"25. Order of Precedence"}),n.jsx("p",{children:"25.1 The documents applicable to an Offer are intended to operate together. If there is a conflict or inconsistency concerning the same subject matter, the following order of precedence applies:"}),n.jsxs("ul",{children:[n.jsx("li",{children:"(a) any agreement, amendment or addendum executed by HookZ.ai and Customer that expressly identifies and overrides the conflicting provision;"}),n.jsx("li",{children:"(b) the applicable Offer Description / Product Schedule, for product-specific license metrics, entitlements, permitted deployment, technical use rights and restrictions;"}),n.jsx("li",{children:"(c) this Enterprise End User Agreement;"}),n.jsx("li",{children:"(d) the applicable Transaction Document, for transaction-specific particulars including the Offer, quantity or capacity, term, territory, authorized sites and deployment selection;"}),n.jsx("li",{children:"(e) the applicable Service Description and SLA; and"}),n.jsx("li",{children:"(f) other applicable Supplemental Terms and Documentation."})]}),n.jsx("p",{children:"25.2 Notwithstanding Section 25.1, the DPA controls for personal-data processing, the SLA controls for service-level measurements, availability, exclusions and service credits, and the applicable Product Schedule controls for product-specific license and technical-use matters."}),n.jsx("p",{children:"25.3 A Transaction Document may override this Agreement or other HookZ.ai terms only where it expressly identifies the provision being overridden and states the agreed deviation. Terms contained in a Customer or Channel Partner purchase order, procurement portal or similar document do not modify HookZ.ai terms unless expressly accepted in writing by HookZ.ai."}),n.jsx("p",{children:"25.4 Commercial terms agreed solely between Customer and a Channel Partner govern only their relationship and do not modify or expand HookZ.aiâs obligations, rights, warranties, service commitments or liability unless expressly agreed by HookZ.ai in writing."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"26. Updates to Online Terms"}),n.jsx("p",{children:"HookZ.ai may update generally applicable online Supplemental Terms for legal, regulatory, security, operational or product-evolution reasons. Material changes will receive reasonable advance notice and will not materially reduce a committed paid Entitlement during its then-current Term except where required by law, necessary to address material security/compliance risk, or agreed by the parties. Product-specific operational terms may evolve as de
672scribed in the applicable Service Description or SLA."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"27. General"}),n.jsx("p",{children:"This Agreement and incorporated documents form the agreement concerning use of the Offer and supersede prior representations on that subject. No waiver is effective unless in writing. If a provision is unenforceable it will be modified to the minimum extent necessary and the remainder remains effective. Neither party is liable for delay caused by events beyond reasonable control, except payment obligations already due. Independent contractors are not partners, agents or joint venturers. Notices may be delivered to the contractual contacts, through HookZ Hub where applicable, or another agreed written method. English is the controlling language unless mandatory law requires otherwise."})]}),n.jsx("section",{children:n.jsx("p",{className:"text-sm italic",children:"HOOKZ.AI PROPRIETARY · ENTERPRISE END USER AGREEMENT · EUA v1.0 â © HookZ.ai. All rights reserved."})})]})]})}),n.jsx(ke,{})]}),RH=()=>{const e=()=>{localStorage.removeItem("hookz_cookie_consent"),window.location.reload()};return n.jsxs("div",{className:"min-h-screen bg-background text-foreground",children:[n.jsx(Ne,{title:"Cookie Policy â HookZ.ai",description:"How HookZ.ai uses cookies and similar technologies, your choices, and your rights under the EU/UK GDPR, ePrivacy Directive, CCPA/CPRA and other US state privacy laws.",path:"/cookies"}),n.jsx(je,{}),n.jsx("main",{className:"pt-24 pb-16",children:n.jsxs("div",{className:"container mx-auto px-6 max-w-4xl",children:[n.jsx("div",{className:"mb-8",children:n.jsx(V,{to:"/",className:"text-sm text-muted-foreground hover:text-foreground transition-colors",children:"â Back to Home"})}),n.jsx("h1",{className:"text-4xl font-bold mb-2",children:"Cookie Policy"}),n.jsx("p",{className:"text-muted-foreground mb-8",children:"Last updated: July 27, 2026"}),n.jsxs("div",{className:"mb-10 p-4 rounded-lg border border-primary/20 bg-primary/5 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3",children:[n.jsx("p",{className:"text-sm text-foreground/80",children:"You can review or change your cookie choices at any time."}),n.jsx(M,{size:"sm",onClick:e,children:"Manage Cookie Preferences"})]}),n.jsxs("div",{className:"prose prose-invert max-w-none space-y-8 text-muted-foreground [&_h2]:text-foreground [&_h2]:text-2xl [&_h2]:font-semibold [&_h2]:mt-10 [&_h2]:mb-4 [&_h3]:text-foreground [&_h3]:text-lg [&_h3]:font-medium [&_h3]:mt-6 [&_h3]:mb-3 [&_ul]:list-disc [&_ul]:pl-6 [&_ul]:space-y-1 [&_table]:w-full [&_table]:text-sm [&_th]:text-foreground [&_th]:text-left [&_th]:p-2 [&_td]:p-2 [&_td]:align-top [&_th]:border-b [&_th]:border-border [&_td]:border-b [&_td]:border-border/50",children:[n.jsxs("section",{children:[n.jsx("h2",{children:"1. About this Policy"}),n.jsxs("p",{children:['This Cookie Policy explains how HookZ.ai ("HookZ", "we", "us", "our") uses cookies and similar tracking technologies on our websites and web-based applications (the "Sites"). It should be read together with our'," ",n.jsx(V,{to:"/privacy",className:"text-brand-ink hover:underline",children:"Privacy Policy"})," and"," ",n.jsx(V,{to:"/terms",className:"text-brand-ink hover:underline",children:"Terms of Use"}),"."]}),n.jsx("p",{children:'This Policy is designed to help us comply with the EU General Data Protection Regulation (GDPR), the UK GDPR and Data Protection Act 2018, the EU ePrivacy Directive (2002/58/EC) as implemented in EU/EEA member states (the "Cookie Law"), the California Consumer Privacy Act as amended by the California Privacy Rights Act (CCPA/CPRA), and other US state privacy laws including the Virginia CDPA, Colorado CPA, Connecticut CTDPA and Utah UCPA.'})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"2. What Are Cookies?"}),n.jsx("p",{children:'Cookies are small text files placed on your device (computer, tablet, or mobile) when you visit a website. They are widely used to make websites work, or work more efficiently, and to provide reporting and personalization information. We also use similar technologies such as pixels, web beacons, local storage, and software development kits ("SDKs"), which we collectively refer to as "cookies" in this Policy.'}),n.jsx("p",{children:'Cookies may be "session" cookies (deleted when you close your browser) or "persistent" cookies (remaining until they expire or are deleted). They may be set by us ("first-party") or by third-party services we use ("third-party").'})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"3. Categories of Cookies We Use"}),n.jsx("p",{children:"We group cookies into the following categories:"}
672),n.jsx("h3",{children:"3.1 Strictly Necessary (Essential) Cookies"}),n.jsx("p",{children:"These cookies are essential to operate our Sites, enable core functionality such as security, network management, session integrity, and to remember your cookie preferences. Under the EU/UK ePrivacy rules, these do not require your consent, but we still inform you about them."}),n.jsx("h3",{children:"3.2 Analytics / Performance Cookies"}),n.jsx("p",{children:"These cookies help us understand how visitors interact with our Sites by collecting information such as pages visited, time on page, referral source, and aggregated usage metrics. They help us improve our Sites and services. These are set only with your prior consent (or, where applicable US state laws apply, subject to your right to opt out)."}),n.jsx("h3",{children:"3.3 Marketing / Advertising Cookies"}),n.jsx("p",{children:'These cookies are used to deliver content and advertisements that are more relevant to you and your interests, to measure campaign effectiveness, and to limit repeat exposure to the same ad. They may involve sharing information with advertising partners and social networks. These are set only with your prior consent (or opt-out where applicable under US state law), and we treat any related activity that constitutes a "sale" or "sharing" of personal information under CCPA/CPRA accordingly.'})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"4. Cookies We Use"}),n.jsx("p",{children:"The specific cookies used may change over time. A representative list is set out below:"}),n.jsx("div",{className:"overflow-x-auto",children:n.jsxs("table",{children:[n.jsx("thead",{children:n.jsxs("tr",{children:[n.jsx("th",{children:"Name"}),n.jsx("th",{children:"Provider"}),n.jsx("th",{children:"Category"}),n.jsx("th",{children:"Purpose"}),n.jsx("th",{children:"Duration"})]})}),n.jsxs("tbody",{children:[n.jsxs("tr",{children:[n.jsx("td",{children:"hookz_cookie_consent"}),n.jsx("td",{children:"HookZ.ai (first-party)"}),n.jsx("td",{children:"Strictly Necessary"}),n.jsx("td",{children:"Stores your cookie consent choices."}),n.jsx("td",{children:"12 months"})]}),n.jsxs("tr",{children:[n.jsx("td",{children:"Session / auth tokens"}),n.jsx("td",{children:"HookZ.ai (first-party)"}),n.jsx("td",{children:"Strictly Necessary"}),n.jsx("td",{children:"Maintains authenticated sessions and security."}),n.jsx("td",{children:"Session"})]}),n.jsxs("tr",{children:[n.jsx("td",{children:"_ga, _ga_*"}),n.jsx("td",{children:"Google Analytics (third-party, if enabled)"}),n.jsx("td",{children:"Analytics"}),n.jsx("td",{children:"Distinguishes users and measures site usage."}),n.jsx("td",{children:"Up to 24 months"})]}),n.jsxs("tr",{children:[n.jsx("td",{children:"li_*, bcookie"}),n.jsx("td",{children:"LinkedIn Insight (third-party, if enabled)"}),n.jsx("td",{children:"Marketing"}),n.jsx("td",{children:"Ad measurement, retargeting, and conversion tracking."}),n.jsx("td",{children:"Up to 24 months"})]}),n.jsxs("tr",{children:[n.jsx("td",{children:"_fbp"}),n.jsx("td",{children:"Meta / Facebook (third-party, if enabled)"}),n.jsx("td",{children:"Marketing"}),n.jsx("td",{children:"Ad measurement and retargeting."}),n.jsx("td",{children:"Up to 3 months"})]})]})]})}),n.jsx("p",{className:"text-xs",children:"Third-party cookies are only set after you consent (in EU/UK/EEA) or subject to your opt-out rights (in applicable US states). Third parties may act as independent controllers of the data they collect; please refer to their own privacy notices for details."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"5. Legal Basis (EU/UK/EEA)"}),n.jsx("p",{children:"Under the GDPR and the ePrivacy Directive, we rely on the following legal bases for the use of cookies:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Strictly Necessary cookies:"})," our legitimate interests in operating a secure, reliable website (Article 6(1)(f) GDPR); consent is not required under the ePrivacy Directive."]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Analytics and Marketing cookies:"}
672)," your prior, freely given, specific, informed and unambiguous ",n.jsx("em",{children:"consent"})," (Article 6(1)(a) GDPR and Article 5(3) of the ePrivacy Directive)."]})]}),n.jsx("p",{children:'You can withdraw your consent at any time by using the "Manage Cookie Preferences" control on this page or by clearing your browser storage. Withdrawal does not affect the lawfulness of processing carried out before withdrawal.'})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"6. Your Rights and Choices"}),n.jsx("h3",{children:"6.1 Consent Banner and Preference Center"}),n.jsx("p",{children:'When you first visit our Sites from the EU/UK/EEA, we display a cookie banner allowing you to Accept All, Decline (non-essential), or open Settings to make granular choices. You can change your choices at any time via the "Manage Cookie Preferences" link on this page or in the site footer.'}),n.jsx("h3",{children:"6.2 Browser Controls and Global Privacy Signals"}),n.jsx("p",{children:'Most browsers allow you to block or delete cookies through their settings. Where required by law (including under CCPA/CPRA and Colorado CPA), we honor recognized opt-out preference signals such as the Global Privacy Control (GPC) as an opt-out of "sale" or "sharing" of personal information and targeted advertising.'}),n.jsx("h3",{children:"6.3 Rights Under the EU/UK GDPR"}),n.jsx("p",{children:"Where the GDPR or UK GDPR applies, you have the right to: access, rectify, erase, restrict processing of, and port your personal data; object to processing based on our legitimate interests; withdraw consent; and lodge a complaint with your local data protection authority (in the UK, the Information Commissioner's Office)."}),n.jsx("h3",{children:"6.4 Rights Under US State Privacy Laws"}),n.jsx("p",{children:"If you are a resident of California, Virginia, Colorado, Connecticut, Utah or another US state with a comprehensive privacy law, you may have the right to:"}),n.jsxs("ul",{children:[n.jsx("li",{children:"Know or access the categories and specific pieces of personal information we collect;"}),n.jsx("li",{children:"Request deletion or correction of your personal information;"}),n.jsx("li",{children:'Opt out of the "sale" or "sharing" of personal information and of targeted advertising / profiling;'}),n.jsx("li",{children:"Limit the use of sensitive personal information;"}),n.jsx("li",{children:"Not be discriminated against for exercising these rights."})]}),n.jsxs("p",{children:['HookZ does not knowingly sell personal information for money. To the extent that use of certain third-party advertising cookies constitutes "sale" or "sharing" under CCPA/CPRA, you may exercise your right to opt out by declining Marketing cookies in the preference center, enabling Global Privacy Control in your browser, or contacting us at'," ",n.jsx("a",{href:"mailto:[email protected]",className:"text-brand-ink hover:underline",children:"[email protected]"}),"."]})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"7. International Data Transfers"}),n.jsx("p",{children:"Some cookie providers may process personal data outside your country of residence, including in the United States. Where such transfers occur from the EU/UK/EEA, we rely on appropriate safeguards, including the European Commission's Standard Contractual Clauses, the UK International Data Transfer Addendum, and, where applicable, certifications under the EU-US Data Privacy Framework."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"8. Children"}),n.jsx("p",{children:"Our Sites are not directed to children under 16, and we do not knowingly set non-essential cookies or collect personal information from children through cookies."})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"9. Changes to this Policy"}),n.jsx("p",{children:'We may update this Cookie Policy from time to time to reflect changes in technology, law, or our practices. When we make material changes, we will update the "Last updated" date at the top and, where required by law, re-request your consent.'})]}),n.jsxs("section",{children:[n.jsx("h2",{children:"10. Contact Us"}),n.jsx("p",{children:"If you have questions about this Cookie Policy or wish to exercise your privacy rights, contact us at:"}),n.jsxs("ul",{children:[n.jsxs("li",{children:[n.jsx("strong",{children:"Email:"})," ",n.jsx("a",{href:"mailto:[email protected]",className:"text-brand-ink hover:underline",children:"[email protected]"})]}),n.jsxs("li",{children:[n.jsx("strong",{children:"Postal:"})," HookZ.ai, 6th Floor, Meydan Grand Stand, Nad Al Sheba 1, Dubai, UAE"]})]})]})]})]})}),n.jsx(ke,{})]})},bl=[{slug:"why-cios-are-abandoning-vmware-post-broadcom-playbook",title:"Why CIOs Are Abandoning VMware: The Post-Broadcom Playbook",excerpt:"Broadcom's acquisition has forced a reckoning. We break down the five critical decisions every infrastru
672cture leader must make in 2025âand why an AI-native hypervisor changes the calculus entirely.",category:"HookZ InfraX",date:"Feb 10, 2025",isoDate:"2025-02-10",readTime:"8 min read",featured:!0,author:"HookZ.ai Research",authorRole:"Infrastructure Strategy Practice",strategicPlanningAssumption:"Through 2027, more than half of enterprises running VMware vSphere at scale will have formally evaluated at least one alternative virtualisation platform, and a third will have migrated a meaningful production workload off VMware.",keyFindings:["Post-acquisition subscription bundling has repriced mid-size vSphere estates by 2x-4x at renewal, with the sharpest increases concentrated in estates below 500 cores that previously bought perpetual licences.","Migration riskânot licence costâis the dominant blocker. Most infrastructure leaders can quantify the savings but cannot quantify the cutover risk, so renewal becomes the default decision.","KVM-based platforms have closed the enterprise feature gap on live migration, high availability, distributed storage and VM-level DR; the remaining differentiation is operational tooling and ecosystem certification.","Estates that treat the exit as a platform modernisationârather than a like-for-like hypervisor swapârealise materially better outcomes because consolidation, right-sizing and automation compound with the licence saving."],recommendations:["Model three renewal scenarios (renew, partial exit, full exit) on a five-year horizon before entering commercial negotiation; walk-away credibility is the single largest lever on renewal price.","Classify the estate into migration tiers by workload criticality, ISV certification dependency and I/O profile. Move Tier 3 and Tier 2 first to build operational muscle before touching Tier 1.","Insist on a proof of value that migrates real production-shaped workloadsânot synthetic VMsâand measures density, failover time and rollback, not just raw benchmark throughput.","Budget 15-25% of the projected first-year saving for migration tooling, training and parallel-run capacity; underfunding the transition is the most common cause of stalled exits."],sections:[{heading:"Market Context",paragraphs:["The virtualisation market spent fifteen years as a settled question. A single vendor held effective standard status, procurement teams renewed on autopilot, and infrastructure architects designed against a platform they assumed would remain economically stable. The Broadcom acquisition of VMware ended that assumption in a single procurement cycle.","The change was structural, not incremental. Perpetual licensing was retired in favour of subscription. Discrete SKUs were consolidated into large bundles. The partner and reseller channel was restructured, removing a negotiation path that many mid-market buyers had relied on for a decade. The net effect for a large share of enterprises was not a price increase but a repricingâa fundamentally different commercial relationship with a platform embedded in every tier of the estate.","The strategic consequence matters more than the invoice. Infrastructure leaders who had never treated the hypervisor as a competitive decision are now required to defend it as one. Once a platform is re-opened for evaluation, it rarely closes without change."]},{heading:"The Five Decisions",bullets:["Decision 1 â Renew, partial exit, or full exit. These are not points on a spectrum; they demand different budgets, different skills and different timelines. Choosing late is the expensive outcome.","Decision 2 â Hypervisor lineage. KVM-based platforms now carry the majority of public cloud compute globally, which makes the underlying kernel technology a low-risk choice. The differentiation sits in the management plane above it.","Decision 3 â Storage strategy. vSAN-dependent estates carry the heaviest exit cost. Decoupling storage from the hypervisor before migration converts a single high-risk cutover into two manageable ones.","Decision 4 â Operational model. A hypervisor swap that preserves manual, ticket-driven operations captures the licence saving and nothing else. Policy-driven automation is where the secondâand largerâtranche of value sits.","Decision 5 â Edge and branch. Distributed sites are frequently excluded from migration analysis, then discovered late as the most expensive remainder. Include them in scope from day one."]},{heading:"Competitive Benchmarking",table:{title:"Enterprise virtualisation platforms â capability and commercial posture",columns:["Dimension","VMware vSphere (post-Broadcom)","Nutanix AHV","Red Hat OpenShift Virt","HookZ InfraX"],rows:[["Licensing model","Subscription, core-based, bundled","Subscription, node-based","Subscription, core-based","Subscription, capacity-based, unbundled"],["Hypervisor lineage","ESXi (proprietary)","KVM-derived","KVM (KubeVirt)","KVM-native"],["Hardware independence","Broad HCL, vendor-certified","Appliance-oriented","Broad, container-first","Commodity x86, no appliance lock-in"],["Edge footprint","Separate SKU and stack","Limited small-node support","Requires cluster overhead","Single control plane, core to edge"],["Telco / VNF workloads","Separate telco stack","Limited","Partner-dependent","Native SR-IOV, DPDK, VNF hosting"],["AI-assisted o
672perations","Add-on tooling","Analytics add-on","Third-party","Built into the control plane"],["Typical 5-yr TCO index","100 (baseline)","78-88","72-85","42-58"]],note:"TCO index is directional, normalised to a 200-node estate including licensing, support, migration and operational labour. Actual results vary with estate composition, storage strategy and existing automation maturity."}},{heading:"Risks and Mitigations",paragraphs:["The two failure modes we observe most often are underestimating ISV certification dependencies and treating migration as an infrastructure-only project. Business-critical applications frequently carry vendor support statements tied to a named hypervisor; discovering this mid-migration stalls programmes for quarters.","The mitigation is unglamorous and effective: complete an application dependency and certification audit before committing to a cutover schedule, and negotiate support statements with ISVs in parallel with the platform evaluation rather than after it."]},{heading:"Bottom Line",paragraphs:["The post-Broadcom environment has converted the hypervisor from a settled standard into an active strategic decision. Enterprises that treat this as a renewal negotiation will capture, at best, a temporary discount. Enterprises that treat it as a platform modernisation eventâconsolidating storage, adopting policy-driven automation, and unifying core and edge under one control planeâwill capture a durable structural cost advantage and an operating model suited to AI-era workloads."]}]},{slug:"tco-reality-check-infrax-vs-vmware-vsphere",title:"TCO Reality Check: InfraX vs. VMware vSphere in a 200-Node Estate",excerpt:"A side-by-side total cost of ownership analysis across licensing, operations, and migrationâshowing how InfraX delivers 40-60% savings without compromising enterprise-grade SLAs.",category:"HookZ InfraX",date:"Jan 28, 2025",isoDate:"2025-01-28",readTime:"12 min read",featured:!1,author:"HookZ.ai Research",authorRole:"Infrastructure Economics",strategicPlanningAssumption:"By 2028, infrastructure organisations that shift from licence-centric to workload-centric cost modelling will reduce virtualisation platform spend by 40% or more without reducing service levels.",keyFindings:["Licensing is typically 35-45% of five-year virtualisation TCO. Operational labour is comparable in scale and is almost always excluded from vendor-supplied comparisons.","Migration is a one-time cost that most models overweight: in a 200-node estate it typically amortises within 14-20 months of the licence saving.","Density improvements from AI-assisted workload placement contribute a second-order savingâfewer physical nodesâthat often exceeds the direct licence delta in the later years of the model.","Support and renewal escalators, not year-one price, drive the divergence between platforms after year three."],recommendations:["Build the TCO model on five years, not three; three-year models systematically favour the incumbent by hiding renewal escalation.","Include operational labour, power and rack space. A platform that improves VM density reduces all three simultaneously.","Treat migration cost as a capital-like, one-time line and report payback period separately from steady-state run rate.","Validate density assumptions with a proof of value on representative workloads before signing the business case."],sections:[{heading:"Model Assumptions",paragraphs:["The reference estate is 200 dual-socket x86 nodes, 32 cores per node, supporting approximately 3,600 virtual machines across production, test and DR. Storage is a mix of external SAN and hyperconverged. The estate runs a standard enterprise mix: databases, middleware, VDI, and a small VNF footprint at branch sites.","All figures are modelled over five years and normalised. The intent is not to publish a universal numberâno such number existsâbut to expose which cost categories actually move, and by how much."]},{heading:"Five-Year Cost Comparison",table:{title:"200-node estate, five-year normalised TCO",columns:["Cost category","vSphere (indexed)","InfraX (indexed)","Delta"],rows:[["Platform licensing & subscription","100","34","-66%"],["Vendor support & renewal escalation","28","11","-61%"],["Operational labour (FTE-equivalent)","62","38","-39%"],["Hardware refresh (density-adjusted)","70","52","-26%"],["Power, cooling, rack space","24","18","-25%"],["Migration & training (one-time)","0","19","n/a"],["Five-year total","284","172","-39%"]],note:"Indexed against vSphere licensing = 100. Estates with heavy vSAN depen
672dency or strict ISV certification constraints sit at the lower end of the savings range; estates with mature automation and commodity storage sit at the upper end."}},{heading:"Where the Savings Actually Come From",bullets:["Unbundled licensing. Paying for the capabilities in use rather than a consolidated bundle removes the largest single line item.","Density. AI-assisted placement and overcommit governance typically lift VM-per-node density by 25-40%, which compounds into hardware, power and rack savings from the first refresh cycle.","Automation. Policy-driven lifecycle operations reduce routine ticket volume, which is where the operational labour delta originates.","Unified core-to-edge management. Removing a separate edge stack eliminates a duplicated toolchain, its licences and its dedicated operational skills."]},{heading:"Sensitivity Analysis",paragraphs:["The model is most sensitive to three variables: the renewal escalator applied by the incumbent, achieved density improvement, and migration duration. A one-percentage-point change in the escalator moves the five-year total by roughly 3%. A ten-point swing in density moves hardware and facilities cost by roughly 8%. Migration duration beyond 12 months erodes payback faster than any other single factor, because parallel-run capacity is carried twice.","This is why programme velocity matters more than programme perfection. A pragmatic migration completed in two quarters outperforms an exhaustive one completed in six."]},{heading:"Bottom Line",paragraphs:["A 40-60% five-year TCO reduction is achievable and defensible, but only when the business case is built on the full cost stack rather than licence price aloneâand only when migration is executed with enough pace that parallel-run cost does not consume the saving. Infrastructure leaders should present payback period and steady-state run rate as separate figures; conflating them is the most common reason sound business cases fail at the finance review."]}]},{slug:"zero-trust-at-the-edge",title:"Zero-Trust at the Edge: How InfraX Secures Distributed Infrastructure",excerpt:"Traditional perimeter security collapses at the edge. Learn how InfraX's hardware-rooted trust and micro-segmentation deliver zero-trust from core to edgeâwithout the complexity tax.",category:"HookZ InfraX",date:"Jan 15, 2025",isoDate:"2025-01-15",readTime:"7 min read",featured:!1,author:"HookZ.ai Research",authorRole:"Security Architecture Practice",strategicPlanningAssumption:"By 2028, the majority of enterprise security incidents involving operational technology will originate at a distributed or edge site rather than a core data centre.",keyFindings:["Edge sites inherit data-centre security policy but rarely inherit data-centre security controls, creating a systematic gap between stated and enforced posture.","Physical access assumptions that hold in a data centre do not hold in a retail store, substation or clinic; hardware-rooted trust and encrypted-at-rest workloads are therefore mandatory, not optional.","Micro-segmentation at the workload level is more effective at the edge than network-tier segmentation, because edge networks are frequently third-party managed and outside enterprise control.","Operational simplicity is a security control. Every additional edge-specific toolchain increases configuration drift, which is the leading cause of edge policy failure."],recommendations:["Extend the same policy engine used in the core to every edge node; do not operate a parallel edge security stack.","Require measured boot and hardware root of trust on all edge hardware refreshes from this budget cycle forward.","Segment by workload identity rather than IP or VLAN, so policy survives network changes made by site or third-party providers.","Instrument for drift detection and treat any unreconciled configuration delta at an edge site as a security incident, not a hygiene task."],sections:[{heading:"The Perimeter Problem",paragraphs:["Perimeter security assumes a defensible boundary and trusted interior. Distributed infrastructure violates both assumptions simultaneously. An edge node sits in a physically accessible location, connects over a network the enterprise frequently does not own, and often runs workloads that cannot tolerate the latency of round-tripping to a central inspection point.","The common responseâextending VPN tunnels to every site and declaring the interior trustedâreproduces the flat-network failure mode at national scale. One compromised site becomes a lateral path into the core."]},{heading:"Control Layers That Matter at the Edge",bullets:["Hardware root of trust and measured boot, so a tampered node fails to join the fabric rather than joining it silently.","Full-disk and workload-level encryption, so physical removal of a device does not constitute data loss.","Workload-identity micro-segmentation, so east-west movement is denied by default regardless of network topology.","Signed, atomic platform updates with automatic rollback, so patching does not require a site visit or create a maintenance-window gap.","Continuous attestation and drift reconciliation against a central policy source of truth."]},{heading:"Competitive Benchmarking",table:{title:"Edge security capability comparison",columns:["Control","Traditional branch stack","Cloud-managed edge","InfraX EdgeX"],rows:[["Hardware root of trust","Rarely deployed","Vendor-dependent","Required at enrolment"],["Workload micro-segmentation","VLAN-based","Partial","Identity-based, default deny"],["Policy source of truth","Per-site config","Cloud console","Unified core-to-edge control plane"],["Offline operation","Full","Degraded","Full, with policy cached and attested"],["Patch model","Manual / scheduled","Cloud push","Signed, atomic, auto-rollback"],["Compliance evidence","Manual collection","Partial export","Continuous, per-node attestation"]]}},{heading:"Bottom Line",paragraphs:["Zero-trust at the edge fails when it is implemented as a separate programme with separate tooling. It succeeds when the edge is treated as an extension of the same control plane, policy engine and evidence pipeline that governs the core. The organisations achieving this are not spending more on edge securityâthey are spending less, because they removed a duplicate stack and the drift it generated."]}]},{slug:"the-contact-centre-is-dead",title:"The Contact Centre Is Dead. Long Live the AI Experience Engine.",excerpt:"HookZ CX isn't another CCaaS bolt-on. It's a re-architecture of customer experienceâwhere AI agents handle 70% of interactions and human agents focus on high-value moments.",category:"HookZ CX",date:"Feb 5, 2025",isoDate:"2025-02-05",readTime:"6 min read",featured:!0,author:"HookZ.ai Research",authorRole:"Customer Experience Practice",strategicPlanningAssumption:"By 2028, agentic AI
672will autonomously resolve a majority of routine customer service interactions in enterprises that have unified their channel, context and knowledge layersâand a small minority in those that have not.",keyFindings:["Deflection metrics are actively misleading. An interaction pushed to a bot and abandoned scores as a success while destroying customer trust; resolution rate and effort score are the only defensible measures.","The binding constraint on AI resolution is not model quality but context availability. Enterprises with fragmented CRM, order and identity data cap out early regardless of which model they deploy.","Human agent roles bifurcate rather than disappear: routine handling collapses, while complex, emotive and high-value interactions grow as a share of human timeârequiring different hiring and compensation models.","Voice remains the highest-value and lowest-automated channel in most enterprises, and is where the largest untapped gain sits."],recommendations:["Retire deflection as a board-level metric this quarter. Replace it with first-contact resolution, containment-with-resolution, and customer effort.","Sequence the programme as context first, automation second. Unify identity, order and interaction history before scaling AI handling.","Design explicit escalation paths with full context transfer; the handover experience determines whether AI handling is perceived as service or obstruction.","Re-band the agent workforce for complexity, not volume, and move quality assurance from call sampling to outcome analysis."],sections:[{heading:"From Channel Routing to Outcome Orchestration",paragraphs:["The traditional contact centre is a routing engine. Its core competency is getting an interaction to an available human with the right skill tag, as cheaply as possible. Every metricâoccupancy, average handle time, service levelâoptimises that function.","An AI experience engine has a different core competency: resolving the customer's intent, with a human involved only when human judgement adds value. This is not the same product with a chatbot attached. It requires the knowledge layer, the transaction systems and the identity graph to be addressable in real time by an autonomous agent, with governed permission to act rather than merely to answer."]},{heading:"Benchmark: Where Enterprises Actually Sit",table:{title:"AI resolution maturity benchmark",columns:["Maturity stage","Autonomous resolution","Human handle time","Typical blocker"],rows:[["Stage 1 â Scripted IVR / FAQ bot","5-12%","Unchanged","No context access"],["Stage 2 â Assisted agent (suggestions)","10-18%","-8 to -15%","Knowledge fragmentation"],["Stage 3 â Contained AI handling","30-45%","-20 to -30%","No permission to transact"],["Stage 4 â Agentic resolution","55-70%","-35 to -50%","Governance and audit readiness"],["Stage 5 â Proactive orchestration","70%+","Reallocated to value","Organisational design"]],note:"Most large enterprises currently sit between Stage 1 and Stage 2 despite significant AI investment, because investment has concentrated in models rather than in the context and permission layers."}},{heading:"The Governance Requirement",paragraphs:["Autonomous resolution means an AI agent takes actions with commercial and regulatory consequence: issuing refunds, changing entitlements, disclosing account data. This makes auditability a precondition rather than a follow-up. Every autonomous action needs a recorded rationale, a policy reference and a reversible path.","Enterprises that build this governance early move faster later, because risk and compliance functions stop being a gate on each new use case and become a standing approval framework."]},{heading:"Bottom Line",paragraphs:["The contact centre as a routing cost centre is ending. What replaces it is an outcome engine where the scarce resource is human judgement, not human availability. The enterprises that reach Stage 4 will do so by fixing context and governanceânot by buying a better model."]}]},{slug:"predictive-workforce-optimisation-hookz-cx",title:"From Reactive to Predictive: AI-Driven Workforce Optimisation with HookZ CX",excerpt:"How predictive analytics and real-time sentiment analysis are transforming workforce planningâturning contact centres from cost centres into revenue engines.",category:"HookZ CX",date:"Jan 20, 2025",isoDate:"2025-01-20",readTime:"9 min read",featured:!1,author:"HookZ.ai Research",authorRole:"Customer Experience Practice",strategicPlanningAssumption:"Through 2027, enterprises applying intraday predictive scheduling will reduce over-staffing cost by 12-20% while improving service-level attainment, outperforming enterprises using weekly forecast cycles.",keyFindings:["Forecast error, not staffing budget, is the primary driver of both over-staffing cost and service-level breach. Most enterprises still forecast at weekly granularity against volumes that vary hourly.","Sentiment signals available in the first 40 seconds of an interaction predict escalation risk with sufficient accuracy to
672justify live routing intervention.","Shrinkage modelling is the most under-invested area of workforce planning and the fastest source of measurable gain.","Attrition is a schedule-quality problem as much as a compensation problem; preference-aware scheduling reduces regretted attrition materially in high-volume operations."],recommendations:["Move to intraday re-forecasting with automated schedule adjustment; weekly cycles cannot track modern demand volatility.","Deploy sentiment-triggered routing for escalation-risk interactions before deploying it for post-hoc quality scoringâthe value is in prevention.","Model shrinkage explicitly by cause and treat it as a managed variable rather than a fixed percentage.","Tie workforce optimisation outcomes to revenue metrics (save rate, attach rate) alongside cost metrics, or the function stays budget-constrained."],sections:[{heading:"Why Traditional WFM Under-Performs",paragraphs:["Classical workforce management was designed for a stable, predominantly voice, single-channel operation with predictable seasonality. Contemporary demand is multi-channel, asynchronous, campaign-driven and increasingly shaped by upstream AI containmentâwhich removes the simplest interactions and leaves a residual that is longer, more complex and less predictable.","Applying a forecasting method built for the former to the demand profile of the latter produces systematic error in a consistent direction: over-staffing in quiet periods and breach in peaks. Both are expensive."]},{heading:"Benchmark: Planning Maturity and Outcomes",table:{title:"Workforce planning maturity benchmark",columns:["Capability","Weekly forecast (typical)","Daily forecast","Intraday predictive"],rows:[["Forecast error (MAPE)","12-18%","8-12%","4-7%"],["Over-staffing cost index","100","84","68"],["Service-level attainment","78-86%","86-92%","92-96%"],["Schedule adherence","82-88%","86-91%","90-95%"],["Regretted attrition (annualised)","28-38%","24-32%","18-26%"]],note:"Ranges reflect high-volume multi-channel operations. Gains from intraday prediction depend on the operation's ability to act on the forecastâflexible shift structures are a prerequisite."}},{heading:"Sentiment as an Operational Signal",bullets:["Escalation prediction: route at-risk interactions to specialist agents before dissatisfaction crystallises.","Live coaching: surface guidance to the agent during the interaction rather than in a review the following week.","Retention triggers: identify churn-intent language and invoke a save workflow with pre-approved commercial latitude.","Quality at full coverage: score every interaction rather than a 2% sample, which changes quality management from audit to insight."]},{heading:"Bottom Line",paragraphs:["Predictive workforce optimisation is the rare initiative that reduces cost and improves both customer and employee experience simultaneously. The constraint is rarely analytics capabilityâit is operational flexibility. Enterprises should invest in shift structures and agent skilling that allow them to act on a forecast, or the forecast improvement will not convert into outcome improvement."]}]},{slug:"sbc-as-a-service",title:"SBC-as-a-Service: Why Enterprises Are Ditching On-Prem Session Border Controllers",excerpt:"On-premises SBCs are a relic of the TDM era. HookZ Voice Edge delivers carrier-grade session management with zero hardware, elastic scaling, and built-in compliance recording.",category:"HookZ Voice Edge",date:"Feb 1, 2025",isoDate:"2025-02-01",readTime:"7 min read",featured:!1,author:"HookZ.ai Research",authorRole:"Real-Time Communications Practice",strategicPlanningAssumption:"By 2028, the majority of new enterprise session border controller capacity will be consumed as a service rather than deployed as customer-owned appliances.",keyFindings:["Appliance SBCs are sized for peak plus headroom and therefore run at low average utilisation across the estateâtypically well under 30%.","The hidden cost of appliance SBCs is lifecycle: firmware maintenance, certificate management, hardware refresh and dual-site redundancy, which together frequently exceed the original capital cost over five years.","Regulatory recording and lawful intercept obligations are the most common reason enterprises believe they must keep SBCs on-premises; in most jurisdictions this is no longer technically or legally required.","Multi-cloud UC adoption has made distributed session control a requirement, which appliance topologies serve poorly."],recommendations:["Model SBC cost per concurrent session including lifecycle and redundancy, not per appliance; the comparison changes materially.","Validate recording, retention and residency requirements against the actual regulation rather than
672inherited assumption before ruling out a service model.","Adopt a session-based commercial model for variable workloads and a channel-based model for stable trunk capacity; most enterprises need both.","Retain on-premises session control only where deterministic sub-10ms media handling or physical isolation is a hard requirement."],sections:[{heading:"The Appliance Model Under Strain",paragraphs:["The on-premises SBC made sense when voice traffic terminated on physical trunks in a small number of buildings. Enterprise voice today originates from cloud UC platforms, contact-centre-as-a-service, mobile clients and application-embedded calling, and terminates across multiple carriers in multiple jurisdictions. Anchoring that topology to a pair of appliances in a data centre adds latency, cost and a single point of architectural rigidity.","Elastic demand makes the mismatch worse. An enterprise that occasionally runs a campaign requiring five times its baseline concurrency must either buy for that peak permanently or refuse the campaign."]},{heading:"Benchmark: Appliance vs. Service",table:{title:"Session border control delivery models",columns:["Dimension","On-premises appliance","Virtual SBC (self-managed)","SBC-as-a-Service"],rows:[["Capacity model","Peak + headroom, fixed","Fixed VM sizing","Elastic per session"],["Typical utilisation","20-30%","30-45%","70-90%"],["Time to add capacity","Weeks to months","Days","Minutes"],["Redundancy cost","Duplicate hardware","Duplicate VMs","Included in fabric"],["Lifecycle burden","Enterprise","Enterprise","Provider"],["Multi-region reach","Per-site deployment","Per-region deployment","Native distributed mesh"],["5-yr cost index","100","72","44-58"]]}},{heading:"When On-Premises Still Wins",bullets:["Hard media-latency requirements in trading, broadcast or industrial control environments.","Air-gapped or classified networks where external session control is prohibited by policy.","Existing sunk investment with more than two years of remaining useful life and stable, non-growing concurrency."]},{heading:"Bottom Line",paragraphs:["The strategic question is no longer whether session border control can be consumed as a serviceâit demonstrably can, at carrier gradeâbut whether the enterprise's remaining on-premises footprint is justified by a genuine constraint or by inherited assumption. Most enterprises find, on audit, that it is the latter."]}]},{slug:"voice-edge-at-scale-sip-trunk-security",title:"Voice Edge at Scale: Securing SIP Trunks Across Multi-Cloud Environments",excerpt:"As enterprises adopt multi-cloud, SIP trunk security becomes a blind spot. We explore how Voice Edge's distributed SBC mesh protects voice traffic without latency penalties.",category:"HookZ Voice Edge",date:"Jan 10, 2025",isoDate:"2025-01-10",readTime:"10 min read",featured:!1,author:"HookZ.ai Research",authorRole:"Real-Time Communications Practice",strategicPlanningAssumption:"Through 2027, toll fraud and SIP-based service abuse will remain among the most under-monitored sources of direct financial loss in enterprise communications.",ke
672yFindings:["Voice traffic is frequently excluded from enterprise security monitoring because it traverses a separate operational domain owned by a different team.","Toll fraud losses are typically discovered on the carrier invoice rather than by detection systems, meaning the exposure window is a full billing cycle.","Registration flooding and INVITE-based denial of service degrade service well below the thresholds that trigger conventional network alerting.","Multi-cloud UC deployments multiply the number of trust boundaries where SIP signalling crosses provider domains, and each boundary is a distinct policy surface."],recommendations:["Feed SIP signalling telemetry into the enterprise SIEM; voice must not remain a monitoring island.","Enforce per-destination and per-time-window call spend caps at the session control layer rather than relying on carrier fraud alerts.","Terminate and re-originate signalling at every provider boundary so that trust is never transitive across clouds.","Deploy session control geographically close to media endpoints to avoid the latency penalty that causes teams to bypass security controls."],sections:[{heading:"The Multi-Cloud Voice Attack Surface",paragraphs:["A typical large enterprise now runs voice across a cloud UC platform, a separate contact centre platform, application-embedded calling, and two or more carriers for redundancy and least-cost routing. Each interconnect is a signalling trust boundary. Each boundary has its own authentication model, its own transport security posture and its own logging format.","Attackers do not need to defeat the strongest boundary. They target the weakest, and in most enterprises the weakest is a legacy trunk retained for a niche application that nobody has reviewed in three years."]},{heading:"Threat and Control Mapping",table:{title:"SIP threat classes and effective controls",columns:["Threat","Typical impact","Effective control","Common gap"],rows:[["Toll fraud","Direct financial loss","Per-destination spend caps, anomaly detection","Discovered on invoice"],["Registration flood","Service degradation","Rate limiting, device attestation","Below network alert thresholds"],["INVITE flood / SIP DoS","Outage","Distributed scrubbing at edge","Centralised chokepoint"],["Signalling interception","Data exposure","TLS everywhere, SRTP media","Unencrypted legacy trunks"],["Caller ID spoofing","Fraud, compliance breach","STIR/SHAKEN attestation","Inconsistent across jurisdictions"],["Media eavesdropping","Data exposure","SRTP with per-session keys","Recording pipelines unencrypted"]]}},{heading:"Architecture: Distributed Mesh vs. Centralised Chokepoint",paragraphs:["The instinct when securing voice is to funnel all signalling through one hardened pair of session controllers. This creates two problems: it adds a geographic latency penalty for distributed users, and it makes the chokepoint itself the highest-value denial-of-service target.","A distributed mesh places session control adjacent to each media source and each carrier interconnect, applying a single centrally-defined policy at many enforcement points. Latency stays low, blast radius stays small, and policy stays consistentâwhich is the combination that prevents teams from engineering their way around the controls."]},{heading:"Bottom Line",paragraphs:["Voice security failures are rarely sophisticated. They are the predictable consequence of an operational domain that sits outside the enterprise security programme. Bringing SIP telemetry into the SIEM, enforcing spend caps at the session layer, and distributing enforcement to the edge addresses the overwhelming majority of realised loss."]}]},{slug:"building-an-ai-native-data-fabric",title:"Building an AI-Native Data Fabric: The Architecture Behind HookZ Systems",excerpt:"A deep dive into the unified control plane that connects communications and infrastructureâand why the 'data fabric' approach matters for enterprise AI adoption.",category:"Platform",date:"Dec 18, 2024",isoDate:"2024-12-18",readTime:"11 min read",featured:!1,author:"HookZ.ai Research",authorRole:"Platform Architecture",strategicPlanningAssumption:"By 2029, enterprises that operate communications and infrastru
672cture under a single AI-addressable control plane will resolve incidents materially faster and deploy new digital services at several times the rate of peers running siloed stacks.",keyFindings:["The dominant barrier to enterprise AI operations is not model access but the absence of a consistent, real-time, permissioned representation of the estate for models to reason over.","Communications and infrastructure telemetry are causally linkedâvoice quality degradation frequently originates in compute or network stateâyet are almost universally analysed in separate tools by separate teams.","Control planes that expose read-only observability deliver insight; control planes that expose governed write actions deliver autonomy. The gap between the two is governance, not technology.","Federated data fabrics outperform centralised data lakes for operational AI because operational decisions require low-latency local state, not a warehoused copy."],recommendations:["Define a single canonical entity model spanning sites, nodes, workloads, sessions and users before selecting AI tooling.","Instrument for causalityâcorrelated traces across communications and infrastructureârather than for dashboards.","Grant AI systems governed write access incrementally, starting with reversible, low-blast-radius actions, and require recorded rationale for every action.","Federate rather than centralise operational state; reserve the warehouse for analytics, not for control-loop decisions."],sections:[{heading:"Why Silos Cap AI Value",paragraphs:["Enterprises have spent a decade instrumenting individual domains well: network monitoring, infrastructure observability, communications analytics, application performance management. Each domain has a competent tool and a competent team. What almost none have is a shared representation across domains in which a question like 'why did customer experience degrade in the Gulf region at 14:20' can be answered mechanically rather than by convening four teams.","An AI system inherits that limitation exactly. Given four disconnected data sources, it produces four disconnected observations. The intelligence people expect from AI operations is largely a function of the correlation the underlying data model permits."]},{heading:"Fabric Architecture Layers",bullets:["Entity layer â a canonical model of sites, nodes, workloads, tenants, sessions and identities with stable identifiers across domains.","Telemetry layer â high-cardinality metrics, events and traces emitted with entity references rather than free-text labels.","Correlation layer â causal graph construction linking communications events to underlying infrastructure state in near real time.","Policy layer â declarative intent covering placement, security, quality and compliance, evaluated continuously rather than at deploy time.","Action layer â governed, auditable, reversible operations exposed to both humans and AI agents through the same interface."]},{heading:"Benchmark: Operating Model Outcomes",table:{title:"Siloed stack vs. unified control fabric",columns:["Metric","Siloed domain tooling","Integrated dashboards","Unified AI control fabric"],rows:[["Mean time to detect","Baseline","-20 to -30%","-55 to -70%"],["Mean time to resolve","Baseline","-15 to -25%","-50 to -65%"],["Cross-domain incidents requiring >2 teams","60-75%","45-60%","15-25%"],["Change failure rate","Baseline","-10%","-35 to -45%"],["New service deployment lead time","Baseline","-15%","-60 to -75%"]],note:"Improvements assume the entity model and policy layer are established first. Deploying AI tooling over unreconciled domain data produces the middle column, not the right-hand one."}},{heading:"Governance as an Enabler",paragraphs:["The instinct to restrict AI to read-only access is understandable and self-defeating. Read-only AI produces recommendations that a human must transcribe into action, which preserves the latency the programme was meant to remove.","The alternative is not unrestricted autonomy. It is a graded action model: reversible low-impact actions execute autonomously with recorded rationale; higher-impact actions execute with human confirmation; a defined class never executes autonomously. This structure lets the autonomous envelope expand on evidence rather than on appetite."]},{heading:"Bottom Line",paragraphs:["The AI-native data fabric is an architectural commitment, not a product purchase. Its value comes from a canonical entity model, causal correlation across communications and infrastru
672cture, and a governed action layer that both humans and machines address identically. Enterprises that build these foundations convert AI from a reporting improvement into an operating model change."]}]}],OH=e=>bl.find(t=>t.slug===e),jb=bl,MH=[{title:"The Enterprise Case for Distributed Hybrid Infrastructure",subtitle:"Why DHI Is the Foundation for AI-Era Computing",excerpt:"This white paper examines why traditional centralised data centre models are failing enterprisesâand how Distributed Hybrid Infrastructure (DHI) delivers the performance, sovereignty, and economics that AI workloads demand. Includes a framework for evaluating DHI readiness.",category:"DHI Strategy",pages:28,featured:!0},{title:"InfraX: A Technical Deep Dive into AI-Native Virtualisation",subtitle:"Architecture, Performance Benchmarks & Migration Methodology",excerpt:"A comprehensive technical analysis of the InfraX hypervisor stackâcovering KVM-native architecture, AI-assisted workload placement, telco-grade VNF support, and the four-phase migration framework for VMware estates.",category:"InfraX Technical",pages:42,featured:!0},{title:"Post-Broadcom Playbook: VMware Migration Strategies for the Enterprise",subtitle:"Risk Assessment, Cost Modelling & Transition Planning",excerpt:"A strategic guide for CIOs navigating the post-Broadcom VMware landscape. Covers licensing impact analysis, migration risk matrices, workload classification frameworks, and a phased transition methodology to InfraX.",category:"Migration",pages:36,featured:!1},{title:"Edge Computing at Enterprise Scale: The InfraX EdgeX Advantage",subtitle:"Deploying AI Workloads from Core to Edge",excerpt:"How EdgeX extends enterprise-grade virtualisation to the edgeâenabling real-time AI inference, zero-trust security, and unified lifecycle management across retail, healthcare, energy, and manufacturing verticals.",category:"EdgeX",pages:24,featured:!1},{title:"Sovereign Cloud Architecture with InfraX CoreX",subtitle:"Data Residency, Compliance & Performance in Regulated Industries",excerpt:"A blueprint for building sovereign cloud infrastructure that meets GDPR, UAE Federal Decree-Law No. 45, and sector-specific compliance requirementsâwithout sacrificing performance or operational agility.",category:"CoreX / Compliance",pages:32,featured:!1}],DH=[{industry:"Financial Services",title:"Modernising Virtual Infrastructure After VMware Licensing Changes",challenge:"A regional financial institution faced significant virtualisation licensing increases following industry licensing changes while maintaining str
672ict regulatory and operational requirements.",solution:"Migrated production workloads onto HookZ CoreX running on HookZ InfraX with ControlX orchestration, enabling an open virtualisation platform with simplified lifecycle management.",outcomes:["Lower infrastructure licensing costs","Higher VM density","Improved operational control","Faster platform modernisation"],deployment:["Private Cloud"],products:["InfraX","CoreX","ControlX"]},{industry:"Government & Sovereign",title:"Modernising Citizen Services on Sovereign Infrastructure",challenge:"Government agencies required secure digital services while maintaining complete control over infrastructure and data residency.",solution:"HookZ deployed sovereign communications together with distributed hybrid infrastructure using CoreX, EdgeX and HookZ CX.",outcomes:["Data sovereignty","Unified citizen engagement","Simplified infrastructure management","Regulatory compliance"],deployment:["Private Cloud","On-Premises"],products:["HookZ CX","InfraX","CoreX","EdgeX"]},{industry:"Telecommunications",title:"Modernising Global Enterprise Voice Infrastructure",challenge:"Legacy SBC infrastructure limited scalability, operational efficiency and multi-country deployment.",solution:"Voice Edge SBC-as-a-Service centralised enterprise voice, carrier connectivity and SIP management across multiple regions.",outcomes:["Simplified carrier management","Improved resiliency","Faster global rollout","Reduced infrastructure complexity"],deployment:["Cloud","Private Cloud"],products:["HookZ Voice Edge","HookZ Connect"]},{industry:"Healthcare",title:"Creating a Unified Digital Patient Experience",challenge:"Patient interactions were fragmented across voice, chat and digital channels.",solution:"HookZ CX unified omnichannel engagement with AI-assisted routing and customer context.",outcomes:["Faster patient resolution","Better patient satisfaction","Improved agent productivity","Unified communications"],deployment:["Private Cloud"],products:["HookZ CX","HookZ Connect"]},{industry:"Retail",title:"Deploying AI Across Distributed Retail Stores",challenge:"Retail operations required real-time AI processing without depending on cloud connectivity for every transaction.",solution:"EdgeX enabled distributed AI workloads across retail locations with central orchestration through ControlX.",outcomes:["Reduced stock shortages","Improved operational visibility","Faster local AI decisions","Centralised management"],deployment:["Edge","Cloud"],products:["EdgeX","ControlX"]},{industry:"Manufacturing",title:"Running AI Quality Inspection at the Production Edge",challenge:"Cloud-dependent inspection introduced latency and inconsistent production quality.",solution:"EdgeX enabled AI inference directly on production lines while maintaining central orchestration.",outcomes:["Lower defect rates","Real-time inspection","Reduced latency","Central management"],deployment:["Edge"],products:["EdgeX","ControlX"]},{industry:"Energy & Utilities",title:"Securing Distributed OT Infrastructure",challenge:"Remote substations required modern security and centralised management.",solution:"EdgeX delivered secure edge virtualisation with ControlX providing unified visibility across distributed operational technology.",outcomes:["Reduced site visits","Better operational visibility","Improved cybersecurity","Simplified management"],deployment:["Edge","On-Premises"],products:["EdgeX","ControlX"]},{industry:"Data Centres",title:"Launching Open Virtualisation Services",challenge:"A regional data centre provider required an open platform to deliver VMaaS while reducing dependency on proprietary virtualisation licensing.",solution:"CoreX enabled multi-tenant virtualisation with automated provisioning and unified lifecycle management.",outcomes:["VMaaS platform","Multi-tenancy","Automated provisioning","Open architecture"],deployment:["Private Cloud"],products:["InfraX","CoreX","ControlX"]},{industry:"Managed Service Providers",title:"Launching Managed VMaaS in 90 Days",challenge:"An MSP required a white-label virtualisation platform for enterprise customers.",solution:"CoreX delivered multi-tenant VMaaS with automated provisioning and unified lifecycle management.",outcomes:["Faster service launch","Multi-tenant platform","Simplified operations","Higher service profitability"],deployment:["Private Cloud"],products:["CoreX","ControlX"]},{industry:"Logistics & Transportation",title:"Modernising Passenger Communications and Edge Operations",challenge:"Trans
672port operators required real-time communications together with distributed operational infrastructure.",solution:"HookZ unified communications and edge infrastructure using HookZ CX and EdgeX.",outcomes:["Better passenger communications","Improved operational visibility","Centralised management","Future-ready architecture"],deployment:["Edge","Private Cloud"],products:["HookZ CX","EdgeX","ControlX"]}],LH={Cloud:st,"Public Cloud":st,"Private Cloud":DP,"On-Premises":Te,Edge:kt},yn="text-xs font-medium border-primary/30 bg-primary/15 text-brand-ink hover:bg-primary/25 hover:border-primary/50 transition-colors",Wp="text-xs font-medium border-border bg-muted/50 text-muted-foreground hover:bg-muted hover:text-foreground transition-colors",em={"HookZ InfraX":yn,"HookZ CX":yn,"HookZ Voice Edge":yn,Platform:Wp,"DHI Strategy":yn,"InfraX Technical":yn,Migration:yn,EdgeX:yn,"CoreX / Compliance":yn},HH=()=>n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"HookZ.ai Resources â Briefs, Docs & Insights",description:"Whitepapers, briefs, documentation, and insights on AI-native enterprise infrastructure.",path:"/resources"}),n.jsx(je,{}),n.jsx("section",{className:"pt-28 pb-16 px-6",children:n.jsxs("div",{className:"container mx-auto max-w-4xl text-center",children:[n.jsx(cr,{variant:"outline",className:"mb-4 border-primary/30 text-brand-ink",children:"Resources"}),n.jsxs("h1",{className:"text-4xl md:text-5xl font-bold mb-4",children:["Insights for the ",n.jsx("span",{className:"text-brand-ink",children:"AI-Native"})," Enterprise"]}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto",children:"Blogs, white papers, and real-world use cases to help you evaluate, plan, and execute your infrastructure and communications transformation."})]})}),n.jsx("section",{className:"pb-24 px-6",children:n.jsx("div",{className:"container mx-auto max-w-6xl",children:n.jsxs(Qg,{defaultValue:"blogs",className:"w-full",children:[n.jsxs(Wu,{className:"grid w-full max-w-md mx-auto grid-cols-3 mb-12",children:[n.jsxs(Cs,{value:"blogs",className:"gap-2",children:[n.jsx(tk,{className:"w-4 h-4"}),"Blogs"]}),n.jsxs(Cs,{value:"whitepapers",className:"gap-2",children:[n.jsx(Va,{className:"w-4 h-4"}),"White Papers"]}),n.jsxs(Cs,{value:"usecases",className:"gap-2",children:[n.jsx(Id,{className:"w-4 h-4"}),"Success Stories"]})]}),n.jsxs(Es,{value:"blogs",children:[n.jsx("div",{className:"flex justify-end mb-6",children:n.jsx(M,{variant:"outline",size:"sm",className:"gap-2",asChild:!0,children:n.jsxs("a",{href:"/rss.xml",target:"_blank",rel:"noopener noreferrer",children:[n.jsx(iT,{className:"w-4 h-4"})," Subscribe via RSS"]})})}),n.jsx("div",{className:"grid md:grid-cols-2 gap-6 mb-8",children:jb.filter(e=>e.featured).map(e=>n.jsx(V,{to:`/resources/blog/${e.slug}`,className:"block h-full",children:n.jsxs(pr,{className:"h-full border-primary/20 bg-gradient-to-br from-primary/5 to-transparent hover:border-primary/40 transition-all group cursor-pointer",children:[n.jsxs(Lp,{children:[n.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[n.jsx(cr,{variant:"outline",className:em[e.category],children:e.category}),n.jsx("span",{className:"text-xs text-muted-foreground",children:"Featured"})]}),n.jsx(Hp,{className:"text-xl group-hover:text-brand-ink transition-colors",children:e.title})]}),n.jsxs(sn,{children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:e.excerpt}),n.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[n.jsxs("span",{className:"flex items-center gap-1",children:[n.jsx(xu,{className:"w-3 h-3"})," ",e.date]}),n.jsxs("span",{className:"flex items-center gap-1",children:[n.jsx(yu,{className:"w-3 h-3"})," ",e.readTime]})]}),n.jsxs("span",{className:"mt-4 inline-flex items-center gap-1 text-sm text-brand-ink font-medium",children:["Read analysis ",n.jsx(K,{className:"w-3.5 h-3.5"})]})]})]})},e.slug))}),n.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:jb.filter(e=>!e.featured).map(e=>n.jsx(V,{to:`/resources/blog/${e.slug}`,className:"block h-full",children:n.jsxs(pr,{className:"h-full hover:border-primary/30 transition-all group cursor-pointer",children:[n.jsxs(Lp,{className:"pb-3",children:[n.jsx(cr,{variant:"outline",className:`w-fit ${em[e.category]}`,children:e.category}),n.jsx(Hp,{className:"text-base group-hover:text-brand-ink transition-colors leading-snug",children:e.title})]}),n.jsxs(sn,{children:[n.jsx("p",{className:"text-sm text-muted-foreground mb-4 line-clamp-3",children:e.excerpt}),n.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[n.jsx("span",{children:e.date}),n.jsx("span",{children:e.readTime})]})]})]})},e.slug))})]}),n.jsx(Es,{value:"whitepapers",children:n.jsx("div",{className:"space-y-6",children:MH.map(e=>n.jsx(pr,{className:`hover:border-primary/30 transition-all ${e.featured?"border-primary/20 bg-gradient-to-r from-primary/5 to-transparent":""}`,children:n.jsxs("div",{className:"flex flex-col md:flex-row",children:[n.jsx("div",{className:"md:w-48 flex items-center justify-center p-6 md:border-r border-border/50",children:n.jsxs("div",{className:"w-20 h-24 rounded-lg bg-card border border-border flex flex-col items-center justify-center gap-1",children:[n.jsx(Va,{className:"w-8 h-8 text-brand-ink"}),n.jsxs("span",{className:"text-[10px] text-muted-foreground",children:[e.pages," pages"]})]})}),n.jsxs("div",{className:"flex-1 p-6",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[n.jsx(cr,{variant:"outline",className:em[e.category],children:e.category}),e.featured&&n.jsx("span",{className:"text-xs text-brand-ink font-medium",children:"Featured"})]}),n.jsx("h3",{className:"text-lg font-semibold mb-1",children:e.title}),n.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:e.subt
672itle}),n.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:e.excerpt}),n.jsx(he,{children:n.jsxs(M,{variant:"outline",size:"sm",className:"gap-2",children:["Download White Paper ",n.jsx(K,{className:"w-4 h-4"})]})})]})]})},e.title))})}),n.jsxs(Es,{value:"usecases",children:[n.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-10",children:[n.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-3",children:"Customer Success Stories"}),n.jsx("p",{className:"text-muted-foreground",children:"Discover how enterprises modernise communications and distributed hybrid infrastructure with HookZ.ai across regulated, distributed and mission-critical environments."})]}),n.jsx("div",{className:"space-y-6",children:DH.map(e=>n.jsx(pr,{className:"border-primary/20 bg-gradient-to-r from-primary/5 to-transparent hover:border-primary/40 transition-all",children:n.jsxs("div",{className:"flex flex-col md:flex-row",children:[n.jsxs("div",{className:"md:w-48 flex md:flex-col items-center justify-center gap-3 p-6 md:border-r border-border/50",children:[n.jsxs("div",{className:"w-20 h-24 rounded-lg bg-card border border-border flex flex-col items-center justify-center gap-1",children:[n.jsx(Id,{className:"w-8 h-8 text-brand-ink"}),n.jsx("span",{className:"text-[10px] text-muted-foreground",children:"Case Study"})]}),n.jsx("span",{className:"text-xs text-muted-foreground text-center",children:e.industry})]}),n.jsxs("div",{className:"flex-1 p-6",children:[n.jsx("div",{className:"flex items-center gap-2 mb-2",children:n.jsx(cr,{variant:"outline",className:Wp,children:e.industry})}),n.jsx("h3",{className:"text-lg font-semibold mb-3",children:e.title}),n.jsxs("div",{className:"grid md:grid-cols-2 gap-x-8 gap-y-4 mb-4",children:[n.jsxs("div",{children:[n.jsx("h4",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground mb-1",children:"Challenge"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:e.challenge})]}),n.jsxs("div",{children:[n.jsx("h4",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground mb-1",children:"Solution"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:e.solution})]})]}),n.jsxs("div",{className:"mb-4",children:[n.jsx("h4",{className:"text-xs font-semibold uppercase tracking-wider text-brand-ink mb-2",children:"Business Outcomes"}),n.jsx("ul",{className:"grid sm:grid-cols-2 gap-x-6 gap-y-1.5",children:e.outcomes.map(t=>n.jsxs("li",{className:"flex items-start gap-2 text-sm text-foreground",children:[n.jsx(vu,{className:"w-4 h-4 mt-0.5 shrink-0 text-brand-ink"}),n.jsx("span",{children:t})]},t))})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-2 pt-4 border-t border-border/50",children:[e.deployment.map(t=>{const r=LH[t]??st;return n.jsxs(cr,{variant:"outline",className:`gap-1.5 ${Wp}`,children:[n.jsx(r,{className:"w-3.5 h-3.5"})," ",t]},t)}),n.jsx("span",{className:"mx-1 h-4 w-px bg-border hidden sm:block"}),e.products.map(t=>n.jsx(cr,{variant:"outline",className:yn,children:t},t))]})]})]})},e.title))})]})]})})}),n.jsx("section",{className:"py-16 px-6 border-t border-border bg-card/50",children:n.jsxs("div",{className:"container mx-auto max-w-3xl text-center",children:[n.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Need a Tailored Assessment?"}),n.jsx("p",{className:"text-muted-foreground mb-6",children:"Our solutions architects can walk you through a personalised TCO analysis, migration roadmap, or product demo."}),n.jsx(he,{children:n.jsxs(M,{variant:"hero",size:"lg",className:"gap-2",children:["Talk to an Expert ",n.jsx(K,{className:"w-4 h-4"})]})})]})}),n.jsx(ke,{})]});var $H=Object.defineProperty,rS=(e,t)=>$H(e,"name",{value:t,configurable:!0}),kb="horizontal",BH=["horizontal","vertical"],FH=f.forwardRef(rS(function(t,r){const{decorative:s,orientation:i=kb,...a}=t,o=nS(i)?i:kb,c=s?{role:"none"}:{"aria-orientation":o==="vertical"?o:void 0,role:"separator"};return n.jsx(se.div,{"data-orientation":o,...c,...a,ref:r})},"Separator"));function nS(e){return BH.includes(e)}rS(nS,"isValidOrientation");var sS=FH;const Zp=f.forwardRef(({className:e,orientation:t="horizontal",decorative:r=!0,...s},i)=>n.jsx(sS,{ref:i,decorative:r,orientation:t,className:J("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...s}));Zp.displayName=sS.displayName;const UH=()=>{const{slug:e}=Yf(),t=e?OH(e):void 0;if(!t)return n.jsx(Tl,{to:"/resources",replace:!0});const r=bl.filter(o=>o.slug!==t.slug&&o.category===t.category).slice(0,3),s=bl.filter(o=>o.slug!==t.slug).slice(0,3),i=r.length?r:s,a={"@context":"https://schema.org","@type":"Article",headline:t.title,de
672scription:t.excerpt,datePublished:t.isoDate,dateModified:t.isoDate,author:{"@type":"Organization",name:t.author},publisher:{"@type":"Organization",name:"HookZ.ai"},articleSection:t.category,mainEntityOfPage:`https://hookz.ai/resources/blog/${t.slug}`};return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:`${t.title} | HookZ.ai Research`,description:t.excerpt.slice(0,155),path:`/resources/blog/${t.slug}`,type:"article",jsonLd:a}),n.jsx(je,{}),n.jsx("article",{className:"pt-28 pb-16 px-6",children:n.jsxs("div",{className:"container mx-auto max-w-3xl",children:[n.jsx("div",{className:"mb-6",children:n.jsxs(V,{to:"/resources",className:"inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-brand-ink transition-colors",children:[n.jsx(yr,{className:"w-4 h-4"})," Back to Resources"]})}),n.jsx(cr,{variant:"outline",className:"mb-4 border-primary/30 text-brand-ink",children:t.category}),n.jsx("h1",{className:"text-3xl md:text-4xl font-bold leading-tight mb-4",children:t.title}),n.jsx("p",{className:"text-lg text-muted-foreground mb-6",children:t.excerpt}),n.jsxs("div",{className:"flex flex-wrap items-center gap-x-6 gap-y-2 text-sm text-muted-foreground pb-6 border-b border-border",children:[n.jsxs("span",{children:[t.author," · ",t.authorRole]}),n.jsxs("span",{className:"flex items-center gap-1",children:[n.jsx(xu,{className:"w-3.5 h-3.5"})," ",t.date]}),n.jsxs("span",{className:"flex items-center gap-1",children:[n.jsx(yu,{className:"w-3.5 h-3.5"})," ",t.readTime]})]}),n.jsx(pr,{className:"mt-8 border-primary/25 bg-gradient-to-br from-primary/5 to-transparent",children:n.jsxs(sn,{className:"p-6",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-2 text-brand-ink",children:[n.jsx(VP,{className:"w-4 h-4"}),n.jsx("span",{className:"text-xs font-semibold uppercase tracking-wider",children:"Strategic Planning Assumption"})]}),n.jsx("p",{className:"text-sm text-foreground/90 leading-relaxed",children:t.strategicPlanningAssumption})]})}),n.jsxs("section",{className:"mt-10",children:[n.jsx("h2",{className:"text-xl font-bold mb-4",children:"Key Findings"}),n.jsx("ul",{className:"space-y-3",children:t.keyFindings.map(o=>n.jsxs("li",{className:"flex gap-3 text-sm text-muted-foreground leading-relaxed",children:[n.jsx(ie,{className:"w-4 h-4 text-brand-ink shrink-0 mt-0.5"}),n.jsx("span",{children:o})]},o))})]}),n.jsxs("section",{className:"mt-10",children:[n.jsx("h2",{className:"text-xl font-bold mb-4",children:"Recommendations"}),n.jsx("ul",{className:"space-y-3",children:t.recommendations.map(o=>n.jsxs("li",{className:"flex gap-3 text-sm text-muted-foreground leading-relaxed",children:[n.jsx(pk,{className:"w-4 h-4 text-brand-ink shrink-0 mt-0.5"}),n.jsx("span",{children:o})]},o))})]}),n.jsx(Zp,{className:"my-10"}),n.jsx("div",{className:"space-y-12",children:t.sections.map(o=>{var l;return n.jsxs("section",{children:[n.jsx("h2",{className:"text-2xl font-bold mb-4",children:o.heading}),(l=o.paragraphs)==null?void 0:l.map((c,d)=>n.jsx("p",{className:"text-[15px] leading-7 text-muted-foreground mb-4",children:c},d)),o.bullets&&n.jsx("ul",{className:"space-y-3 mt-2",children:o.bullets.map(c=>n.jsxs("li",{className:"flex gap-3 text-[15px] leading-7 text-muted-foreground",children:[n.jsx("span",{className:"mt-3 w-1.5 h-1.5 rounded-full bg-primary shrink-0"}),n.jsx("span",{children:c})]},c))}),o.table&&n.jsxs("figure",{className:"mt-6",children:[n.jsx("figcaption",{className:"text-xs font-semibold uppercase tracking-wider text-brand-ink mb-3",children:o.table.title}),n.jsx("div",{className:"overflow-x-auto rounded-lg border border-border",children:n.jsxs("table",{className:"w-full text-sm min-w-[560px]",children:[n.jsx("thead",{className:"bg-card",children:n.jsx("tr",{children:o.table.columns.map(c=>n.jsx("th",{className:"text-left font-semibold px-4 py-3 border-b border-border whitespace-nowrap",children:c},c))})}),n.jsx("tbody",{children:o.table.rows.map((c,d)=>n.jsx("tr",{className:"border-b border-border/50 last:border-0",children:c.map((u,h)=>n.jsx("td",{className:`px-4 py-3 align-top ${h===0?"font-medium text-foreground":"text-muted-foreground"}`,children:u},h))},d))})]})}),o.table.note&&n.jsx("p",{className:"text-xs text-muted-foreground mt-3 italic",children:o.table.note})]})]},o.heading)})}),n.jsx(Zp,{className:"my-10"}),n.jsx("p",{className:"text-xs text-muted-foreground italic",children:"This analysis is published by HookZ.ai Research for enterprise planning purposes. Benchmark ranges are directional and derived from modelled reference estates; actual results vary by estate composition, region and operating model."}),n.jsx(pr,{className:"mt-10 border-primary/20 bg-gradient-to-r from-primary/5 to-transparent",children:n.jsxs(sn,{className:"p-8 text-center",children:[n.jsx("h2",{className:"text-xl font-bold mb-2",children:"Want this benchmarked against your estate?"}),n.jsx("p",{className:"text-sm text-muted-foreground mb-5",children:"Our solutions architects can run a tailored TCO analysis, migration roadmap or architecture review."}),n.jsx(he,{children:n.jsxs(M,{variant:"hero",className:"gap-2",children:["Talk to an Expert ",n.jsx(K,{className:"w-4 h-4"})]})})]})}),n.jsxs("section",{className:"mt-14",children:[n.jsx("h2",{className:"text-lg font-bold mb-4",children:"Related Research"}),n.jsx("div",{className:"grid sm:grid-cols-3 gap-4",children:i.map(o=>n.jsx(V,{to:`/resources/blog/${o.slug}`,children:n.jsx(pr,{className:"h-full hover:border-primary/30 transition-all group",children:n.jsxs(sn,{className:"p-5",children:[n.jsx(cr,{variant:"outline",className:"mb-2 border-primary/30 text-brand-ink text-[10px]",children:o.category}),n.jsx("h3",{className:"text-sm font-semibold leading-snug group-hover:text-brand-ink transition-colors",children:o.title}),n.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:o.readTime})]})})},o.slug))})]})]})}),n.jsx(ke,{})]})},VH=()=>{const e=[{city:"Dubai",label:"Global HQ",address:"6th Floor, Meydan Grand Stand, Nad Al Sheba 1, Dubai",timezone:"GMT+4"},{city:"Bangalore",label:"India",address:"WeWork, Embassy Golf Links, Cinnabar Hills, Bangalore",timezone:"GMT+5:30"},{city:"Reading",label:"United Kingdom",address:"Battle Square, Reading",timezone:"GMT+0"}];return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"Contact HookZ.ai â Talk to Sales & Support",description:"Reach HookZ.ai sales, partnerships, or support teams across Dubai, India, and the UK.",path:"/contact"}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-20 relative overflow-hidden",children:[n.jsx("div",{className:"absolute top-20 -right-20 w-[500px] h-[500px] bg-primary rounded-[3rem] rounded-tl-[6rem] opacity-[0.07] rotate-12"}),n.jsx("div",{className:"absolute -bottom-10 -left-16 w-[350px] h-[350px] bg-primary rounded-[2rem] rounded-br-[5rem] opacity-[0.05] -rotate-6"}),n.jsxs("div",{className:"container mx-auto px-6 relative z-10",children:[n.jsxs("div",{className:"max-w-3xl mx-auto text-center mb-16",children:[n.jsx("span",{className:"inline-block px-4 py-1.5 rounded-full bg-primary/10 text-brand-ink text-sm font-medium mb-6",children:"Get in Touch"}),n.jsxs("h1",{className:"text-4xl md:text-6xl font-bold mb-6",children:["Let's Build the Future ",n.jsx("br",{}),n.jsx("span",{className:"text-brand-ink",children:"Together"})]}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto",children:"Whether you're exploring AI-native communications or distributed infrastru
672cture, our team is ready to help you transform your enterprise."})]}),n.jsxs("div",{className:"grid md:grid-cols-3 gap-6 max-w-4xl mx-auto mb-20",children:[n.jsxs("a",{href:"mailto:[email protected]",className:"group relative rounded-2xl border border-primary/20 bg-card/50 backdrop-blur-sm p-8 text-center hover:border-primary/50 transition-all duration-300 hover:-translate-y-1",children:[n.jsx("div",{className:"w-14 h-14 rounded-xl bg-primary/10 flex items-center justify-center mx-auto mb-4 group-hover:bg-primary/20 transition-colors",children:n.jsx(ji,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-semibold text-lg mb-1",children:"Email Us"}),n.jsx("p",{className:"text-brand-ink font-medium",children:"[email protected]"})]}),n.jsxs("a",{href:"tel:+971585084802",className:"group relative rounded-2xl border border-primary/20 bg-card/50 backdrop-blur-sm p-8 text-center hover:border-primary/50 transition-all duration-300 hover:-translate-y-1",children:[n.jsx("div",{className:"w-14 h-14 rounded-xl bg-primary/10 flex items-center justify-center mx-auto mb-4 group-hover:bg-primary/20 transition-colors",children:n.jsx(Tt,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-semibold text-lg mb-1",children:"Call Us"}),n.jsx("p",{className:"text-brand-ink font-medium",children:"+971 585 084 802"})]}),n.jsx(he,{children:n.jsxs("div",{className:"group relative rounded-2xl border border-primary/20 bg-card/50 backdrop-blur-sm p-8 text-center hover:border-primary/50 transition-all duration-300 hover:-translate-y-1 cursor-pointer",children:[n.jsx("div",{className:"w-14 h-14 rounded-xl bg-primary/10 flex items-center justify-center mx-auto mb-4 group-hover:bg-primary/20 transition-colors",children:n.jsx(hk,{className:"w-6 h-6 text-brand-ink"})}),n.jsx("h3",{className:"font-semibold text-lg mb-1",children:"Book a Demo"}),n.jsx("p",{className:"text-muted-foreground text-sm",children:"Schedule a personalized walkthrough"})]})})]})]})]}),n.jsxs("section",{className:"py-20 relative overflow-hidden",children:[n.jsx("div",{className:"absolute top-10 left-1/2 -translate-x-1/2 w-[700px] h-[400px] bg-primary rounded-[4rem] opacity-[0.04] rotate-3"}),n.jsxs("div",{className:"container mx-auto px-6 relative z-10",children:[n.jsxs("div",{className:"text-center mb-12",children:[n.jsxs("div",{className:"flex items-center justify-center gap-2 mb-4",children:[n.jsx(kt,{className:"w-5 h-5 text-brand-ink"}),n.jsx("span",{className:"text-brand-ink font-medium text-sm uppercase tracking-wider",children:"Global Presence"})]}),n.jsx("h2",{className:"text-3xl md:text-4xl font-bold",children:"Our Offices"})]}),n.jsx("div",{className:"grid md:grid-cols-3 gap-8 max-w-5xl mx-auto",children:e.map(t=>n.jsxs("div",{className:"relative group",children:[n.jsx("div",{className:"absolute -inset-2 bg-primary rounded-[2rem] rounded-tr-[3rem] opacity-[0.06] group-hover:opacity-[0.1] transition-opacity"}),n.jsxs("div",{className:"relative rounded-2xl border border-primary/20 bg-card/80 backdrop-blur-sm p-8 h-full",children:[n.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[n.jsx("div",{className:"w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center",children:n.jsx(ok,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h3",{className:"font-bold text-xl",children:t.city}),n.jsx("span",{className:"text-xs text-brand-ink font-medium",children:t.label})]})]}),n.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed mb-4",children:t.address}),n.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[n.jsx(yu,{className:"w-3.5 h-3.5"}),n.jsx("span",{children:t.timezone})]})]})]},t.city))})]})]}),n.jsx("section",{className:"py-20",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"relative max-w-3xl mx-auto rounded-3xl overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-primary rounded-3xl opacity-[0.08]"}),n.jsx("div",{className:"absolute -top-10 -right-10 w-40 h-40 bg-primary rounded-full opacity-[0.1]"}),n.jsx("div",{className:"absolute -bottom-8 -left-8 w-32 h-32 bg-primary rounded-full opacity-[0.08]"}),n.jsxs("div",{className:"relative p-12 text-center",children:[n.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Ready to Transform Your Enterprise?"}),n.jsx("p",{className:"text-muted-foreground mb-8 max-w-xl mx-auto",children:"Talk to our solutions team and discover how HookZ can accelerate your digital infrastru
672cture and communications strategy."}),n.jsx(he,{children:n.jsx(M,{variant:"hero",size:"lg",children:"Schedule a Conversation"})})]})]})})}),n.jsx(ke,{})]})},yo=({productName:e})=>{const[t,r]=f.useState(!1),{toast:s}=_l(),i=a=>{var p,m,y;a.preventDefault();const o=new FormData(a.currentTarget),l=(p=o.get("name"))==null?void 0:p.trim(),c=(m=o.get("email"))==null?void 0:m.trim(),d=(y=o.get("phone"))==null?void 0:y.trim();if(!l||!c){s({title:"Please fill in all required fields.",variant:"destructive"});return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(c)){s({title:"Please enter a valid email address.",variant:"destructive"});return}const u=encodeURIComponent(`Pricing Enquiry â ${e}`),h=encodeURIComponent(`Name: ${l} 673Email: ${c} 674Phone: ${d||"N/A"} 675Product: ${e}`);window.open(`mailto:[email protected]?subject=${u}&body=${h}`,"_self"),r(!0)};return t?n.jsxs("div",{className:"p-6 rounded-2xl border border-primary/30 bg-primary/5 text-center space-y-3",children:[n.jsx(Ol,{className:"w-10 h-10 text-brand-ink mx-auto"}),n.jsx("h4",{className:"font-bold text-lg",children:"Request Received!"}),n.jsxs("p",{className:"text-sm text-muted-foreground",children:["Our pricing expert will contact you within 24 hours to discuss ",e," pricing."]})]}):n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsxs("h4",{className:"font-semibold mb-1 flex items-center gap-2",children:[n.jsx(Tt,{className:"w-4 h-4 text-brand-ink"}),"Talk to a Pricing Expert"]}),n.jsxs("p",{className:"text-xs text-muted-foreground mb-4",children:["Get a custom ",e," quote tailored to your needs."]}),n.jsxs("form",{onSubmit:i,className:"grid sm:grid-cols-3 gap-3",children:[n.jsxs("div",{className:"space-y-1",children:[n.jsx(Le,{htmlFor:`name-${e}`,className:"text-xs",children:"Name *"}),n.jsx(ct,{id:`name-${e}`,name:"name",placeholder:"Jane Smith",required:!0,className:"h-9 text-sm"})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsx(Le,{htmlFor:`email-${e}`,className:"text-xs",children:"Email *"}),n.jsx(ct,{id:`email-${e}`,name:"email",type:"email",placeholder:"[email protected]",required:!0,className:"h-9 text-sm"})]}),n.jsxs("div",{className:"space-y-1",children:[n.jsx(Le,{htmlFor:`phone-${e}`,className:"text-xs",children:"Phone"}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx(ct,{id:`phone-${e}`,name:"phone",type:"tel",placeholder:"+971 5...",className:"h-9 text-sm"}),n.jsxs(M,{type:"submit",size:"sm",className:"shrink-0 h-9",children:["Request ",n.jsx(K,{className:"w-3 h-3"})]})]})]})]})]})},Ic=({tier:e})=>n.jsxs("div",{className:`p-6 rounded-2xl border ${e.popular?"border-primary bg-primary/5 ring-1 ring-primary/30":"border-border bg-card"} relative flex flex-col`,children:[e.popular&&n.jsx("span",{className:"absolute -top-3 left-1/2 -translate-x-1/2 bg-primary text-primary-foreground text-xs font-bold px-3 py-1 rounded-full",children:"Most Popular"}),n.jsx("h4",{className:"font-bold text-lg mb-1",children:e.name}),n.jsxs("div",{className:"mb-4",children:[n.jsx("span",{className:"text-3xl font-bold text-brand-ink",children:e.price}),n.jsx("span",{className:"text-sm text-muted-foreground ml-1",children:e.unit})]}),n.jsx("ul",{className:"space-y-2 flex-1",children:e.features.map(t=>n.jsxs("li",{className:"text-sm text-muted-foreground flex items-start gap-2",children:[n.jsx(Ol,{className:"w-4 h-4 text-brand-ink shrink-0 mt-0.5"}),t]},t))})]}),zH=()=>{const[e,t]=f.useState("comms"),[r,s]=f.useState("UAE"),[i,a]=f.useState("UAE"),o=[{name:"Essentials",price:"$50",unit:"/user/month",features:["Omnichannel routing","Basic IVR","Call recording","Email & chat support"]},{name:"Professional",price:"$90",unit:"/user/month",popular:!0,features:["AI-powered routing","Advanced IVR & bots","Workforce management","Real-time analytics","CRM integrations"]},{name:"Enterprise",price:"Custom",unit:"/user/month",features:["Full AI orchestration","Custom integrations","Dedicated SLA","On-prem / hybrid deploy","24/7 premium support"]}],l={UAE:{sms:[{region:"Transactional",price:"$0.030",unit:"/SMS"},{region:"Promotional",price:"$0.038",unit:"/SMS"},{region:"OTP / 2FA",price:"$0.035",unit:"/SMS"},{region:"International",price:"$0.055",unit:"/SMS"}],whatsapp:[{region:"Utility",price:"$0.014",unit:"/message"},{region:"Marketing",price:"$0.0353",unit:"/message"},{region:"Authentication",price:"$0.0205",unit:"/message"},{region:"Service",price:"Free",unit:"(24h window)"}],rcs:[{region:"Basic",price:"$0.012",unit:"/message"},{region:"Rich Media",price:"$0.022",unit:"/message"},{region:"Conversational",price:"$0.018",unit:"/message"},{region:"Enterprise",price:"Custom",unit:"volume pricing"}]},"Saudi Arabia":{sms:[{region:"Transactional",price:"$0.028",unit:"/SMS"},{region:"Promotional",price:"$0.036",unit:"/SMS"},{region:"OTP / 2FA",price:"$0.032",unit:"/SMS"},{region:"International",price:"$0.052",unit:"/SMS"}],whatsapp:[{region:"Utility",price:"$0.0157",unit:"/message"},{region:"Marketing",price:"$0.0379",unit:"/message"},{region:"Authentication",price:"$0.0228",unit:"/message"},{region:"Service",price:"Free",unit:"(24h window)"}],rcs:[{region:"Basic",price:"$0.013",unit:"/message"},{region:"Rich Media",price:"$0.024",unit:"/message"},{region:"Conversational",price:"$0.019",unit:"/message"},{region:"Enterprise",price:"Custom",unit:"volume pricing"}]},India:{sms:[{region:"Transactional",price:"$0.0025",unit:"/SMS"},{region:"Promotional",price:"$0.0035",unit:"/SMS"},{region:"OTP / 2FA",price:"$0.003",unit:"/SMS"},{region:"International",price:"$0.045",unit:"/SMS"}],whatsapp:[{region:"Utility",price:"$0.0014",unit:"/message"},{region:"Marketing",price:"$0.0098",unit:"/message"},{region:"Authentication",price:"$0.0023",unit:"/message"},{region:"Service",price:"Free",unit:"(24h window)"}],rcs:[{region:"Basic",price:"$0.004",unit:"/message"},{region:"Rich Media",price:"$0.008",unit:"/message"},{region:"Conversational",price:"$0.006",unit:"/message"},{region:"Enterprise",price:"Custom",unit:"volume pricing"}]},"United States":{sms:[{region:"Transactional",price:"$0.0075",unit:"/SMS"},{region:"Promotional",price:"$0.0095",unit:"/SMS"},{region:"OTP / 2FA",price:"$0.008",unit:"/SMS"},{region:"Toll-Free",price:"$0.0085",unit:"/SMS"}],whatsapp:[{region:"Utility",price:"$0.025",unit:"/message"},{region:"Marketing",price:"$0.025",unit:"/message"},{region:"Authentication",price:"$0.0135",unit:"/message"},{region:"Service",price:"Free",unit:"(24h window)"}],rcs:[{region:"Basic",price:"$0.010",unit:"/message"},{region:"Rich Media",price:"$0.020",unit:"/message"},{region:"Conversational",price:"$0.015",unit:"/message"},{region:"Enterprise",price:"Custom",unit:"volume pricing"}]},"United Kingdom":{sms:[{region:"Transactional",price:"$0.040",unit:"/SMS"},{region:"Promotional",price:"$0.048",unit:"/SMS"},{region:"OTP / 2FA",price:"$0.042",unit:"/SMS"},{region:"International",price:"$0.060",unit:"/SMS"}],whatsapp:[{region:"Utility",price:"$0.0220",unit:"/message"},{region:"Marketing",price:"$0.0529",unit:"/message"},{region:"Authentication",price:"$0.0358",unit:"/message"},{region:"Service",price:"Free",unit:"(24h window)"}],rcs:[{region:"Basic",price:"$0.014",unit:"/message"},{region:"Rich Media",price:"$0.026",unit:"/message"},{region:"Conversational",price:"$0.020",unit:"/message"},{region:"Enterprise",price:"Custom",unit:"volume pricing"}]},Germany:{sms:[{region:"Transactional",price:"$0.075",unit:"/SMS"},{region:"Promotional",price:"$0.085",unit:"/SMS"},{region:"OTP / 2FA",price:"$0.080",unit:"/SMS"},{region:"International",price:"$0.095",unit:"/SMS"}],whatsapp:[{region:"Utility",price:"$0.0768",unit:"/message"},{region:"Marketing",price:"$0.1365",unit:"/message"},{region:"Authentication",price:"$0.0810",unit:"/message"},{region:"Service",price:"Free",unit:"(24h window)"}],rcs:[{region:"Basic",price:"$0.015",unit:"/message"},{region:"Rich Media",price:"$0.028",unit:"/message"},{region:"Conversational",price:"$0.022",unit:"/message"},{region:"Enterprise",price:"Custom",unit:"volume pricing"}]},Singapore:{sms:[{region:"Transactional",price:"$0.038",unit:"/SMS"},{region:"Promotional",price:"$0.045",unit:"/SMS"},{region:"OTP / 2FA",price:"$0.040",unit:"/SMS"},{region:"International",price:"$0.055",unit:"/SMS"}],whatsapp:[{region:"Utility",price:"$0.0190",unit:"/message"},{region:"Marketing",price:"$0.0822",unit:"/message"},{region:"Authentication",price:"$0.0314",unit:"/message"},{region:"Service",price:"Free",unit:"(24h window)"}],rcs:[{region:"Basic",price:"$0.013",unit:"/message"},{region:"Rich Media",price:"$0.025",unit:"/message"},{region:"Conversational",price:"$0.019",unit:"/message"},{region:"Enterprise",price:"Custom",unit:"volume pricing"}]}},c=Object.keys(l),d=[{model:"Per Session",price:"$4.99",unit:"/session/month",description:"Concurrent SIP session licensing"},{model:"Per Channel",price:"$2.49",unit:"/channel/month",description:"Media channel-based billing"}
675],u={UAE:{numberRental:[{type:"Local DID",price:"$6.00",unit:"/number/month"},{type:"Toll-Free",price:"$25.00",unit:"/number/month"},{type:"Mobile DID",price:"$12.00",unit:"/number/month"}],channelRental:[{type:"Inbound Channel",price:"$3.50",unit:"/channel/month"},{type:"Outbound Channel",price:"$4.00",unit:"/channel/month"},{type:"Bi-Directional",price:"$6.50",unit:"/channel/month"}],usage:[{type:"Local Outbound",price:"$0.018",unit:"/minute"},{type:"Mobile Outbound",price:"$0.045",unit:"/minute"},{type:"International",price:"$0.085",unit:"/minute"},{type:"Inbound",price:"$0.012",unit:"/minute"}]},"Saudi Arabia":{numberRental:[{type:"Local DID",price:"$7.00",unit:"/number/month"},{type:"Toll-Free",price:"$28.00",unit:"/number/month"},{type:"Mobile DID",price:"$14.00",unit:"/number/month"}],channelRental:[{type:"Inbound Channel",price:"$3.80",unit:"/channel/month"},{type:"Outbound Channel",price:"$4.20",unit:"/channel/month"},{type:"Bi-Directional",price:"$7.00",unit:"/channel/month"}],usage:[{type:"Local Outbound",price:"$0.022",unit:"/minute"},{type:"Mobile Outbound",price:"$0.052",unit:"/minute"},{type:"International",price:"$0.090",unit:"/minute"},{type:"Inbound",price:"$0.014",unit:"/minute"}]},India:{numberRental:[{type:"Local DID",price:"$2.50",unit:"/number/month"},{type:"Toll-Free",price:"$15.00",unit:"/number/month"},{type:"Mobile DID",price:"$5.00",unit:"/number/month"}],channelRental:[{type:"Inbound Channel",price:"$1.80",unit:"/channel/month"},{type:"Outbound Channel",price:"$2.20",unit:"/channel/month"},{type:"Bi-Directional",price:"$3.50",unit:"/channel/month"}],usage:[{type:"Local Outbound",price:"$0.008",unit:"/minute"},{type:"Mobile Outbound",price:"$0.012",unit:"/minute"},{type:"International",price:"$0.070",unit:"/minute"},{type:"Inbound",price:"$0.005",unit:"/minute"}]},"United States":{numberRental:[{type:"Local DID",price:"$1.00",unit:"/number/month"},{type:"Toll-Free",price:"$2.00",unit:"/number/month"},{type:"Mobile DID",price:"$3.50",unit:"/number/month"}],channelRental:[{type:"Inbound Channel",price:"$2.50",unit:"/channel/month"},{type:"Outbound Channel",price:"$3.00",unit:"/channel/month"},{type:"Bi-Directional",price:"$5.00",unit:"/channel/month"}],usage:[{type:"Local Outbound",price:"$0.0085",unit:"/minute"},{type:"Mobile Outbound",price:"$0.0095",unit:"/minute"},{type:"International",price:"$0.060",unit:"/minute"},{type:"Inbound",price:"$0.0075",unit:"/minute"}]},"United Kingdom":{numberRental:[{type:"Local DID",price:"$2.00",unit:"/number/month"},{type:"Toll-Free",price:"$8.00",unit:"/number/month"},{type:"Mobile DID",price:"$6.00",unit:"/number/month"}],channelRental:[{type:"Inbound Channel",price:"$3.00",unit:"/channel/month"},{type:"Outbound Channel",price:"$3.50",unit:"/channel/month"},{type:"Bi-Directional",price:"$6.00",unit:"/channel/month"}],usage:[{type:"Local Outbound",price:"$0.015",unit:"/minute"},{type:"Mobile Outbound",price:"$0.038",unit:"/minute"},{type:"International",price:"$0.075",unit:"/minute"},{type:"Inbound",price:"$0.010",unit:"/minute"}]},Germany:{numberRental:[{type:"Local DID",price:"$3.50",unit:"/number/month"},{type:"Toll-Free",price:"$12.00",unit:"/number/month"},{type:"Mobile DID",price:"$8.00",unit:"/number/month"}],channelRental:[{type:"Inbound Channel",price:"$3.20",unit:"/channel/month"},{type:"Outbound Channel",price:"$3.80",unit:"/channel/month"},{type:"Bi-Directional",price:"$6.50",unit:"/channel/month"}],usage:[{type:"Local Outbound",price:"$0.020",unit:"/minute"},{type:"Mobile Outbound",price:"$0.085",unit:"/minute"},{type:"International",price:"$0.080",unit:"/minute"},{type:"Inbound",price:"$0.012",unit:"/minute"}]},Singapore:{numberRental:[{type:"Local DID",price:"$5.00",unit:"/number/month"},{type:"Toll-Free",price:"$20.00",unit:"/number/month"},{type:"Mobile DID",price:"$10.00",unit:"/number/month"}],channelRental:[{type:"Inbound Channel",price:"$3.30",unit:"/channel/month"},{type:"Outbound Channel",price:"$3.80",unit:"/channel/month"},{type:"Bi-Directional",price:"$6.20",unit:"/channel/month"}],usage:[{type:"Local Outbound",price:"$0.016",unit:"/minute"},{type:"Mobile Outbound",price:"$0.042",unit:"/minute"},{type:"International",price:"$0.078",unit:"/minute"},{type:"Inbound",price:"$0.011",unit:"/minute"}]}},h=Object.keys(u);return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"HookZ.ai Pricing â Plans for Communications & Infrastru
675cture",description:"Transparent packaging across HookZ enterprise communications and distributed hybrid infrastructure.",path:"/pricing"}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-12 relative overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-gradient-dual"}),n.jsxs("div",{className:"container mx-auto px-6 relative text-center",children:[n.jsx("p",{className:"text-sm text-brand-ink tracking-widest uppercase font-medium mb-4",children:"â Pricing â"}),n.jsxs("h1",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-4",children:["Transparent, ",n.jsx("span",{className:"text-brand-ink",children:"Predictable"})," Pricing"]}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto",children:"Choose the model that fits your business. Scale up or down without surprises."})]})]}),n.jsx("section",{className:"pb-8",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsx("div",{className:"flex justify-center",children:n.jsxs("div",{className:"inline-flex rounded-xl border border-border bg-card p-1",children:[n.jsx("button",{onClick:()=>t("comms"),className:`px-6 py-2.5 rounded-lg text-sm font-medium transition-all ${e==="comms"?"bg-primary text-primary-foreground shadow-glow":"text-muted-foreground hover:text-foreground"}`,children:"Enterprise Communications"}),n.jsx("button",{onClick:()=>t("infra"),className:`px-6 py-2.5 rounded-lg text-sm font-medium transition-all ${e==="infra"?"bg-primary text-primary-foreground shadow-glow":"text-muted-foreground hover:text-foreground"}`,children:"Distributed Infrastructure"})]})})})}),e==="comms"&&n.jsx("section",{className:"pb-24 space-y-16",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"mb-16",children:[n.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[n.jsx("div",{className:"w-10 h-10 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(Tt,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-2xl font-bold",children:"HookZ CX"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Contact Center as a Service â Per User / Per Month"})]})]}),n.jsx("div",{className:"grid sm:grid-cols-3 gap-6 mt-8",children:o.map(p=>n.jsx(Ic,{tier:p},p.name))}),n.jsx("div",{className:"mt-6",children:n.jsx(yo,{productName:"HookZ CX"})})]}),n.jsxs("div",{className:"mb-16",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-3 mb-2",children:[n.jsx("div",{className:"w-10 h-10 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(Jt,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{className:"flex-1 min-w-[200px]",children:[n.jsx("h2",{className:"text-2xl font-bold",children:"HookZ Connect"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"CPaaS â Per Message Pricing by Channel"})]}),n.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[n.jsx(Le,{htmlFor:"connect-country",className:"text-xs text-muted-foreground whitespace-nowrap",children:"Country"}),n.jsxs(Vp,{value:r,onValueChange:s,children:[n.jsx(Zd,{id:"connect-country",className:"w-[180px] h-9",children:n.jsx(zp,{})}),n.jsx(qd,{children:c.map(p=>n.jsx(Xd,{value:p,children:p},p))})]})]})]}),n.jsx("div",{className:"grid md:grid-cols-3 gap-6 mt-8",children:[{channel:"SMS",tiers:l[r].sms},{channel:"Meta WhatsApp",tiers:l[r].whatsapp},{channel:"Google RCS",tiers:l[r].rcs}].map(p=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsx("h3",{className:"font-bold text-lg mb-4 text-brand-ink",children:p.channel}),n.jsx("div",{className:"space-y-3",children:p.tiers.map(m=>n.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border/50 last:border-0",children:[n.jsx("span",{className:"text-sm text-muted-foreground",children:m.region}),n.jsxs("span",{className:"font-semibold text-sm",children:[m.price," ",n.jsx("span",{className:"text-xs text-muted-foreground",children:m.unit})]})]},m.region))})]},p.channel))}),n.jsxs("p",{className:"text-xs text-muted-foreground mt-4",children:["Rates shown for ",n.jsx("span",{className:"text-foreground font-medium",children:r}),". Volume discounts available â contact sales for enterprise pricing."]}),n.jsx("div",{className:"mt-6",children:n.jsx(yo,{productName:"HookZ Connect"})})]}),n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[n.jsx("div",{className:"w-10 h-10 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(Et,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-2xl font-bold",children:"HookZ Voice Edge"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"SBCaaS + SIP Trunking â Flexible Billing"})]})]}),n.jsxs("div",{className:"mt-8",children:[n.jsx("h3",{className:"text-lg font-semibold mb-1",children:"SBCaaS"}),n.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:"Session Border Controller as a Service â licensed per concurrent session or channel."}),n.jsx("div",{className:"grid sm:grid-cols-2 gap-6",children:d.map(p=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card text-center",children:[n.jsx("h4",{className:"font-bold mb-1",children:p.model}),n.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:p.description}),n.jsx("span",{className:"text-3xl font-bold text-brand-ink",children:p.price}),n.jsx("span",{className:"text-sm text-muted-foreground ml-1",children:p.unit})]},p.model))})]}),n.jsxs("div",{className:"mt-12",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-3 mb-1",children:[n.jsx("h3",{className:"text-lg font-semibold flex-1 min-w-[200px]",children:"SIP Trunking"}),n.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[n.jsx(Le,{htmlFor:"cloudsip-country",className:"text-xs text-muted-foreground whitespace-nowrap",children:"Country"}),n.jsxs(Vp,{value:i,onValueChange:a,children:[n.jsx(Zd,{id:"cloudsip-country",className:"w-[180px] h-9",children:n.jsx(zp,{})}),n.jsx(qd,{children:h.map(p=>n.jsx(Xd,{value:p,children:p},p))})]})]})]}),n.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:"Number & channel rental plus per-minute usage billing by country."}),n.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:[{title:"Number Rental",tiers:u[i].numberRe
675ntal},{title:"Channel Rental",tiers:u[i].channelRental},{title:"Per-Minute Usage",tiers:u[i].usage}].map(p=>n.jsxs("div",{className:"p-6 rounded-2xl border border-border bg-card",children:[n.jsx("h4",{className:"font-bold text-lg mb-4 text-brand-ink",children:p.title}),n.jsx("div",{className:"space-y-3",children:p.tiers.map(m=>n.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border/50 last:border-0",children:[n.jsx("span",{className:"text-sm text-muted-foreground",children:m.type}),n.jsxs("span",{className:"font-semibold text-sm",children:[m.price," ",n.jsx("span",{className:"text-xs text-muted-foreground",children:m.unit})]})]},m.type))})]},p.title))}),n.jsxs("p",{className:"text-xs text-muted-foreground mt-4",children:["Rates shown for ",n.jsx("span",{className:"text-foreground font-medium",children:i}),". Tax and surcharges may apply. Service availability subject to regulatory approvals. Contact sales for volume and enterprise pricing."]})]}),n.jsx("div",{className:"mt-6",children:n.jsx(yo,{productName:"HookZ Voice Edge"})})]})]})}),e==="infra"&&n.jsx("section",{className:"pb-24",children:n.jsxs("div",{className:"container mx-auto px-6 space-y-16",children:[n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[n.jsx("div",{className:"w-10 h-10 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(Te,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-2xl font-bold",children:"CoreX"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Data Center Virtualization â Custom Enterprise Pricing"})]})]}),n.jsxs("div",{className:"mt-8 p-8 md:p-12 rounded-2xl border border-primary/20 bg-primary/5 text-center",children:[n.jsx(Ve,{className:"w-12 h-12 text-brand-ink mx-auto mb-4"}),n.jsx("h3",{className:"text-2xl font-bold mb-2",children:"Enterprise-Grade Pricing"}),n.jsx("p",{className:"text-muted-foreground max-w-lg mx-auto mb-6",children:"CoreX pricing is tailored to your data center scale, workload mix, and deployment model. Our experts will design a commercially sustainable package for your infrastructure."})]}),n.jsx("div",{className:"mt-6",children:n.jsx(yo,{productName:"CoreX"})})]}),n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[n.jsx("div",{className:"w-10 h-10 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center",children:n.jsx(ck,{className:"w-5 h-5 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-2xl font-bold",children:"EdgeX"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"AI-Native Edge Cloud Platform â Per Node License"})]})]}),n.jsxs("div",{className:"mt-6 p-6 rounded-2xl border border-primary/20 bg-gradient-to-r from-primary/5 to-transparent text-center",children:[n.jsx("p",{className:"text-lg font-bold text-brand-ink",children:"One Node. One Licence. No Core Counting. No VM Counting."}),n.jsx("p",{className:"text-sm text-muted-foreground mt-2 max-w-2xl mx-auto",children:"EdgeX is licensed per physical node. Scale CPU capacity and VM density within the licensed server with no additional per-core or per-VM licence charges."})]}),n.jsx("h3",{className:"text-lg font-semibold mt-8 mb-4",children:"Subscription â billed per node"}),n.jsxs("div",{className:"grid sm:grid-cols-3 gap-6",children:[n.jsx(Ic,{tier:{name:"Standard",price:"$99",unit:"/node/month",features:["9x5 business days coverage","P1 response: 4 business hours","$1,188/node billed annually","Full orchestration & lifecycle management","Ideal for non-critical edge sites"]}}),n.jsx(Ic,{tier:{name:"Business",price:"$129",unit:"/node/month",popular:!0,features:["9x5 business days coverage","P1 response: 1 business hour","$1,548/node billed annually","Observability & zero-touch provisioning","Recommended for production workloads"]}}),n.jsx(Ic,{tier:{name:"Premium",price:"$179",unit:"/node/month",features:["24x7x365 coverage","P1 response: 30 minutes","$2,148/node billed annually","Mission-critical SLA","Designed for 24x7 environments"]}})]}),n.jsxs("div",{className:"mt-10 p-6 md:p-8 rounded-2xl border border-border bg-card",children:[n.jsx("h3",{className:"text-lg font-semibold mb-1",children:"Perpetual Licence Option"}),n.jsx("p",{className:"text-sm text-muted-foreground mb-6",children:"For organisations requiring CAPEX ownership. The EdgeX perpetual licence is $2,000 per node â software licence value stays constant; support is priced separately by tier."}),n.jsx("div",{className:"overflow-x-auto",children:n.jsxs("table",{className:"w-full text-sm",children:[n.jsx("thead",{children:n.jsxs("tr",{className:"border-b border-border text-left",children:[n.jsx("th",{className:"py-2 pr-4 font-medium text-muted-foreground",children:"Perpetual"}),n.jsx("th",{className:"py-2 pr-4 font-medium text-muted-foreground",children:"Standard"}),n.jsx("th",{className:"py-2 pr-4 font-medium text-muted-foreground",children:"Business"}),n.jsx("th",{className:"py-2 font-medium text-muted-foreground",children:"Premium"})]})}),n.jsxs("tbody",{children:[n.jsxs("tr",{className:"border-b border-border/50",children:[n.jsx("td",{className:"py-2 pr-4",children:"EdgeX licence"}),n.jsx("td",{className:"py-2 pr-4",children:"$2,000/node"}),n.jsx("td",{className:"py-2 pr-4",children:"$2,000/node"}),n.jsx("td",{className:"py-2",children:"$2,000/node"})]}),n.jsxs("tr",{className:"border-b border-border/50",children:[n.jsx("td",{className:"py-2 pr-4",children:"Year 1 support"}),n.jsx("td",{className:"py-2 pr-4",children:"Included"}),n.jsx("td",{className:"py-2 pr-4",children:"+$200/node uplift"}),n.jsx("td",{className:"py-2",children:"+$500/node uplift"})]}),n.jsxs("tr",{children:[n.jsx("td",{className:"py-2 pr-4",children:"Annual support from Year 2"}),n.jsx("td",{className:"py-2 pr-4",children:"$400/node/year"}),n.jsx("td",{className:"py-2 pr-4",children:"$600/node/year"}),n.jsx("td",{className:"py-2",children:"$900/node/year"})]})]})]})})]}),n.jsxs("div",{className:"mt-10 p-6 md:p-8 rounded-2xl border border-primary/20 bg-gradient-to-r from-primary/5 to-transparent",children:[n.jsxs("div",{className:"flex items-start gap-4 mb-6",children:[n.jsx("div",{className:"w-12 h-12 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center shrink-0",children:n.jsx(QP,{className:"w-6 h-6 text-brand-ink"})}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-lg font-semibold mb-1",children:"EdgeX Turnkey Solution Bundles"}),n.jsx("p",{className:"text-sm text-muted-foreground max-w-3xl",children:"For global rollouts, EdgeX is also available as a fully managed solution â pre-integrated hardware, delivery to site, zero-touch provisioning, and end-to-e
675nd managed operations."})]})]}),n.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-4 mb-6",children:[{icon:Te,title:"Appliance + Software",description:"EdgeX-certified x86 node pre-loaded with orchestration, virtualisation and security stack."},{icon:il,title:"Global Logistics & Delivery",description:"Door-to-door delivery, customs clearance and site-ready packaging for any region."},{icon:fg,title:"ZTP Installation",description:"Zero-touch provisioning, remote commissioning and health validation by HookZ field engineers."},{icon:ZP,title:"Managed Operations",description:"24/7 monitoring, patching, backup, SLA-backed support and lifecycle management."}].map(p=>n.jsxs("div",{className:"p-4 rounded-xl border border-border bg-card hover:border-primary/30 transition-all",children:[n.jsx(p.icon,{className:"w-5 h-5 text-brand-ink mb-3"}),n.jsx("h4",{className:"font-semibold text-sm mb-1",children:p.title}),n.jsx("p",{className:"text-xs text-muted-foreground",children:p.description})]},p.title))}),n.jsxs("div",{className:"flex flex-wrap items-center gap-3 mb-4",children:[n.jsx("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"Popular bundles:"}),["ICT in a Box","Retail in a Box","Branch in a Box","Factory Edge"].map(p=>n.jsx("span",{className:"text-xs px-3 py-1 rounded-full bg-primary/10 border border-primary/20 text-brand-ink font-medium",children:p},p))]}),n.jsx("div",{className:"p-4 rounded-xl border border-border bg-card/50",children:n.jsxs("p",{className:"text-sm",children:[n.jsx("span",{className:"font-semibold text-brand-ink",children:"Solution pricing is custom-quoted."})," ","Bundles include hardware, software licence, support, logistics and managed services in one predictable annual or multi-year contract."]})})]}),n.jsx("div",{className:"mt-6",children:n.jsx(yo,{productName:"EdgeX"})})]})]})}),n.jsx(ke,{})]})},WH=[{title:"Enterprise Sales Representative",location:"UK",type:"Full-time"},{title:"Enterprise Sales Manager",location:"Mumbai & Bangalore, India",type:"Full-time"},{title:"Enterprise Sales Manager",location:"Dubai, UAE",type:"Full-time"},{title:"Business Development Internship",location:"UK",type:"Internship"},{title:"Business Development Internship",location:"Bangalore, India",type:"Internship"},{title:"Customer Support Engineer â L1/L2",location:"Thanjavur & Kochi, India",type:"Full-time"},{title:"Business Development Manager",location:"New York, USA",type:"Full-time"},{title:"Presales Manager â Virtualisation",location:"India",type:"Full-time"}],ZH=()=>n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"Careers at HookZ.ai â Join the AI-Native Platform Team",description:"Open roles across Dubai, India, and the UK building the AI-native control fabric for enterprise.",path:"/careers"}),n.jsx(je,{}),n.jsxs("section",{className:"pt-32 pb-20 relative overflow-hidden",children:[n.jsx("div",{className:"absolute top-20 -right-20 w-[500px] h-[500px] bg-primary rounded-[3rem] rounded-tl-[6rem] opacity-[0.07] rotate-12"}),n.jsx("div",{className:"absolute -bottom-10 -left-16 w-[350px] h-[350px] bg-primary rounded-[2rem] rounded-br-[5rem] opacity-[0.05] -rotate-6"}),n.jsx("div",{className:"container mx-auto px-6 relative z-10",children:n.jsxs("div",{className:"max-w-3xl mx-auto text-center",children:[n.jsx("span",{className:"inline-block px-4 py-1.5 rounded-full bg-primary/10 text-brand-ink text-sm font-medium mb-6",children:"We're Hiring"}),n.jsxs("h1",{className:"text-4xl md:text-6xl font-bold mb-6",children:["Shape the Future of ",n.jsx("br",{}),n.jsx("span",{className:"text-brand-ink",children:"AI-Native Enterprise"})]}),n.jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8",children:"Join a global team building the next generation of enterprise communications and distributed infrastructure. We're looking for bold thinkers ready to make an impact."}),n.jsx("a",{href:"mailto:[email protected]",children:n.jsxs(M,{variant:"hero",size:"lg",className:"gap-2",children:[n.jsx(ji,{className:"w-4 h-4"})," Send Your CV to [email protected]"]})})]})})]}),n.jsx("section",{className:"py-20",children:n.jsxs("div",{className:"container mx-auto px-6",children:[n.jsxs("div",{className:"text-center mb-14",children:[n.jsx("h2",{className:"text-3xl md:text-4xl font-bold mb-4",children:"Open Positions"}),n.jsxs("p",{className:"text-muted-foreground max-w-xl mx-auto",children:["Explore current openings across our global offices. Send your CV to ",n.jsx("a",{href:"mailto:[email protected]",className:"text-brand-ink font-medium hover:underline",children:"[email protected]"})," with the role title in the subject line."]})]}),n.jsx("div",{className:"max-w-3xl mx-auto flex flex-col gap-4",children:WH.map((e,t)=>n.jsxs("a",{href:`mailto:[email protected]?subject=Application: ${encodeURIComponent(e.title)} â ${encodeURIComponent(e.location)}`,className:"group relative rounded-2xl border border-primary/20 bg-card/50 backdrop-blur-sm p-6 flex flex-col sm:flex-row sm:items-center justify-between gap-4 hover:border-primary/50 transition-all duration-300 hover:-translate-y-0.5",children:[n.jsxs("div",{className:"flex-1",children:[n.jsx("h3",{className:"font-semibold text-lg group-hover:text-brand-ink transition-colors",children:e.title}),n.jsxs("div",{className:"flex flex-wrap items-center gap-4 mt-2 text-sm text-muted-foreground",children:[n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx(ok,{className:"w-3.5 h-3.5"}),e.location]}),n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx(lg,{className:"w-3.5 h-3.5"}),e.type]})]})]}),n.jsxs("div",{className:"flex items-center gap-2 text-brand-ink font-medium text-sm shrink-0",children:["Apply ",n.jsx(hk,{className:"w-4 h-4"})]})]},t))})]})}),n.jsx("section",{className:"py-20",children:n.jsx("div",{className:"container mx-auto px-6",children:n.jsxs("div",{className:"relative max-w-3xl mx-auto rounded-3xl overflow-hidden",children:[n.jsx("div",{className:"absolute inset-0 bg-primary rounded-3xl opacity-[0.08]"}),n.jsx("div",{className:"absolute -top-10 -right-10 w-40 h-40 bg-primary rounded-full opacity-[0.1]"}),n.jsx("div",{className:"absolute -bottom-8 -left-8 w-32 h-32 bg-primary rounded-full opacity-[0.08]"}),n.jsxs("div",{className:"relative p-12 text-center",children:[n.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Don't See Your Role?"}),n.jsxs("p",{className:"text-muted-foreground mb-8 max-w-xl mx-auto",children:["We're always looking for exceptional talent. Send your CV to ",n.jsx("span",{className:"text-brand-ink font-medium",children:"[email protected]"})," and tell us how you'd contribute to HookZ."]}),n.jsx("a",{href:"mailto:[email protected]?subject=General Application â HookZ Careers",children:n.jsxs(M,{variant:"hero",size:"lg",className:"gap-2",children:[n.jsx(ji,{className:"w-4 h-4"})," Send Your CV"]})})]})]})})}),n.jsx(ke,{})]}),qH=[{title:"Beyond VMware",path:"/vmware-alternative",section:"Platform",description:"VMware alternative and modern virtualisation with HookZ CoreX â migration methodology, KVM, OpenStack and private cloud."},{title:"Edge Cloud",path:"/edge-cloud",section:"Platform",description:"Enterprise edge cloud with EdgeX and ControlX â edge AI inference, distributed cloud, retail, manufacturing, utilities and branch."},{title:"Enterprise Communications",path:"/enterprise-communications",section:"Platform",description:"HookZ CX, HookZ Connect, HookZ Voice Edge and HookZ Meet delivered through one AI Control Fabric."},{title:"HookZ Hub",path:"/hub",section:"Portal",description:"Customer portal and service console â login, registration, marketplace, provisioning, licensing, billing, downloads and support."},{title:"HookZ Systems",path:"/systems",section:"Services",description:"Enterprise systems integration and professional services â architecture, migration, deployment and managed services."},{title:"Book a Demo",path:"/book-demo",section:"Engage",description:"Discovery workshop, architecture review, product demonstration, migration asse
675ssment and enterprise consultation."},{title:"CoreX",path:"/products/corex",section:"Products",description:"Enterprise private cloud for virtual machines, Kubernetes, GPU workloads and hybrid infrastructure."},{title:"EdgeX",path:"/products/edgex",section:"Products",description:"AI-native edge cloud platform for branches, factories, retail stores and enterprise locations."},{title:"HookZ CX",path:"/products/hookz-cx",section:"Products",description:"Cloud and on-prem contact centre with agentic AI for customer engagement."},{title:"HookZ Connect",path:"/products/hookz-connect",section:"Products",description:"CPaaS unified messaging APIs for SMS, WhatsApp, RCS, voice and verification."},{title:"HookZ Voice Edge",path:"/products/hookz-voice-edge",section:"Products",description:"AI voice fabric for SIP, SBC and DID numbers, Microsoft Teams Direct Routing and carrier interconnect."},{title:"Solutions",path:"/solutions",section:"Solutions",description:"Industry and enterprise solutions across communications and distributed hybrid infrastructure."},{title:"SBC as a Service",path:"/solutions/comms/sbc-as-a-service",section:"Solutions",description:"Cloud and on-premises SBCaaS â enterprise session border controller without the infrastructure burden."},{title:"Global SIP",path:"/solutions/comms/global-sip",section:"Solutions",description:"One enterprise voice strategy with global PSTN reach across supported markets."},{title:"Pricing",path:"/pricing",section:"Pricing",description:"Plans and pricing for HookZ CX, HookZ Connect, Voice Edge, EdgeX and CoreX."},{title:"Partners",path:"/partners",section:"Company",description:"Channel and technology partners who sell and implement HookZ across every region."},{title:"Resources",path:"/resources",section:"Resources",description:"Customer success stories, blogs and white papers for enterprise buyers."},{title:"About",path:"/about",section:"Company",description:"About HookZ.ai â the AI-native control fabric for enterprise communications and infrastructure."},{title:"Contact",path:"/contact",section:"Company",description:"Contact HookZ.ai sales and support teams worldwide."},{title:"Careers",path:"/careers",section:"Company",description:"Open roles and how to apply at HookZ.ai."}],XH=[...qH,...bl.map(e=>({title:e.title,path:`/resources/blog/${e.slug}`,description:e.excerpt??"",section:"Blog"}))],GH=()=>{const[e,t]=wA(),r=e.get("q")??"",s=f.useMemo(()=>{const i=r.toLowerCase().split(/\s+/).filter(Boolean);return i.length?XH.map(a=>{const o=`${a.title} ${a.description} ${a.section}`.toLowerCase(),l=i.reduce((c,d)=>c+(a.title.toLowerCase().includes(d)?3:0)+(o.includes(d)?1:0),0);return{entry:a,score:l}}).filter(a=>a.score>0).sort((a,o)=>o.score-a.score).map(a=>a.entry):[]},[r]);return n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsx(Ne,{title:"Search | HookZ.ai",description:"Search HookZ.ai products, solutions, pricing, customer stories and insights across the AI Control Fabric.",path:"/search"}),n.jsx(je,{}),n.jsx("main",{className:"pt-28 pb-24",children:n.jsxs("div",{className:"container mx-auto px-6 max-w-4xl",children:[n.jsxs("h1",{className:"text-3xl sm:text-4xl md:text-5xl font-bold mb-6",children:["Search ",n.jsx("span",{className:"text-brand-ink",children:"HookZ.ai"})]}),n.jsxs("div",{className:"relative mb-10",children:[n.jsx(uk,{className:"absolute left-4 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),n.jsx(ct,{value:r,autoFocus:!0,onChange:i=>t(i.target.value?{q:i.target.value}:{},{replace:!0}),placeholder:"Search products, solutions, pricing and insightsâ¦","aria-label":"Search HookZ.ai",className:"pl-11 h-12 bg-white/5 border-brand/20 focus-visible:ring-brand/40"})]}),r&&n.jsxs("p",{className:"text-sm text-muted-foreground mb-6",children:[s.length," result",s.length===1?"":"s"," for â",r,"â"]}),n.jsxs("div",{className:"space-y-4",children:[s.map(i=>n.jsxs(V,{to:i.path,className:"block rounded-xl border border-brand/20 bg-gradient-to-br from-brand/[0.06] to-transparent p-5 transition-colors hover:border-brand/50",children:[n.jsx("span",{className:"text-xs uppercase tracking-wider text-brand-ink",children:i.section}),n.jsx("h2",{className:"text-lg font-semibold mt-1 mb-1",children:i.title}),n.jsx("p",{className:"text-sm text-muted-foreground",children:i.description})]},i.path)),r&&s.length===0&&n.jsx("p",{className:"text-muted-foreground",children:"No matches. Try a broader term such as âEdgeXâ, âSBCâ, âpricingâ or âVMwareâ."})]})]})}),n.jsx(ke,{})]})}
675,KH={"/talk":"/products/hookz-cx","/hookz-talk":"/products/hookz-cx","/hookztalk":"/products/hookz-cx","/chat":"/products/hookz-cx","/messaging":"/products/hookz-connect","/intranet":"/","/social-intranet":"/","/social":"/","/collaboration":"/enterprise-communications","/collaboration-platform":"/enterprise-communications","/workspace":"/enterprise-communications","/teams":"/products/hookz-voice-edge","/beta":"/book-demo","/early-access":"/book-demo","/waitlist":"/book-demo","/signup":"/hub","/sign-up":"/hub","/register":"/hub","/login":"/hub","/sign-in":"/hub","/app":"/hub","/portal":"/hub","/console":"/hub","/free":"/pricing","/plans":"/pricing","/pricing-plans":"/pricing","/home":"/","/index":"/","/index.html":"/","/platform":"/products/distributed-infrastructure","/features":"/products","/product":"/products","/infrax":"/products/distributed-infrastructure","/corex":"/products/corex","/edgex":"/products/edgex","/controlx":"/products/distributed-infrastructure","/cortex":"/products/distributed-infrastructure","/cx":"/products/hookz-cx","/connect":"/products/hookz-connect","/voice":"/products/hookz-voice-edge","/voice-edge":"/products/hookz-voice-edge","/sbc":"/solutions/comms/sbc-as-a-service","/sip":"/solutions/comms/global-sip","/cpaas":"/products/hookz-connect","/ccaas":"/products/hookz-cx","/private-cloud":"/solutions/infra/private-cloud","/edge":"/edge-cloud","/edge-computing":"/edge-cloud","/vmware":"/vmware-alternative","/blog":"/resources","/news":"/resources","/press":"/resources","/use-cases":"/resources","/customers":"/resources","/docs":"/resources","/support":"/contact","/help":"/contact","/contact-us":"/contact","/about-us":"/about","/company":"/about","/team":"/about","/jobs":"/careers","/partner":"/partners","/demo":"/book-demo","/request-demo":"/book-demo","/book-a-demo":"/book-demo","/privacy-policy":"/privacy","/terms-of-use":"/terms","/terms-and-conditions":"/terms","/cookie-policy":"/cookies","/eula":"/eua"},YH=e=>{const t=e.toLowerCase().replace(/\/+$/,"")||"/";return t==="/"?null:KH[t]??null},JH=[{label:"Distributed Hybrid Infrastructure (InfraX)",to:"/products/distributed-infrastructure"},{label:"Enterprise private cloud with CoreX",to:"/products/corex"},{label:"Distributed edge infrastructure with EdgeX",to:"/products/edgex"},{label:"Enterprise Communications portfolio",to:"/enterprise-communications"},{label:"HookZ Hub customer portal",to:"/hub"},{label:"Book an architecture review",to:"/book-demo"}],QH=()=>{const e=Bs(),t=YH(e.pathname);return f.useEffect(()=>{t||console.warn("404: no route for",e.pathname)},[e.pathname,t]),t?n.jsx(Tl,{to:t,replace:!0}):n.jsxs("div",{className:"min-h-screen bg-background",children:[n.jsxs(zf,{children:[n.jsx("title",{children:"Page not found | HookZ.ai"}),n.jsx("meta",{name:"robots",content:"noindex, follow"})]}),n.jsx(je,{}),n.jsxs("main",{className:"mx-auto max-w-3xl px-6 py-28 text-center",children:[n.jsx("p",{className:"text-sm font-medium tracking-widest text-brand-ink",children:"404"}),n.jsx("h1",{className:"mt-4 text-3xl font-bold sm:text-4xl",children:"This page is no longer available"}),n.jsx("p",{className:"mt-4 text-muted-foreground",children:"The page you requested does not exist on HookZ.ai. Continue to one of the current platform pages below."}),n.jsx("ul",{className:"mx-auto mt-10 grid max-w-xl gap-3 text-left",children:JH.map(r=>n.jsx("li",{children:n.jsx(V,{to:r.to,className:"block rounded-lg border border-primary/20 bg-card/50 px-4 py-3 text-sm transition-colors hover:border-primary/60 hover:text-brand-ink",children:r.label})},r.to))}),n.jsx(V,{to:"/",className:"mt-8 inline-block text-brand-ink underline",children:"Return to the HookZ.ai homepage"})]}),n.jsx(ke,{})]})},e$=new HR,t$=()=>n.jsx(BR,{client:e$,children:n.jsxs(lR,{children:[n.jsx(XT,{}),n.jsx(C_,{}),n.jsx(FR,{}),n.jsxs(cA,{children:[n.jsx(fe,{path:"/",element:n.jsx(l5,{})}),n.jsx(fe,{path:"/systems",element:n.jsx(f5,{})}),n.jsx(fe,{path:"/products",element:n.jsx(v6,{})}),n.jsx(fe,{path:"/enterprise-communications",element:n.jsx(A6,{})}),n.jsx(fe,{path:"/products/enterprise-communications",element:n.jsx(Tl,{to:"/enterprise-communications",replace:!0})}),n.jsx(fe,{path:"/vmware-alternative",element:n.jsx(r6,{})}),n.jsx(fe,{path:"/edge-cloud",element:n.jsx(l6,{})}),n.jsx(fe,{path:"/hub",element:n.jsx(h6,{})}),n.jsx(fe,{path:"/book-demo",element:n.jsx(x6,{})}
675),n.jsx(fe,{path:"/products/hookz-cx",element:n.jsx(I6,{})}),n.jsx(fe,{path:"/products/hookz-connect",element:n.jsx(D6,{})}),n.jsx(fe,{path:"/products/hookz-voice-edge",element:n.jsx(B6,{})}),n.jsx(fe,{path:"/products/distributed-infrastructure",element:n.jsx(pL,{})}),n.jsx(fe,{path:"/products/corex",element:n.jsx(N6,{})}),n.jsx(fe,{path:"/products/edgex",element:n.jsx(C6,{})}),n.jsx(fe,{path:"/solutions",element:n.jsx(fL,{})}),n.jsx(fe,{path:"/solutions/enterprise-communications",element:n.jsx(gL,{})}),n.jsx(fe,{path:"/solutions/distributed-infrastructure",element:n.jsx(yL,{})}),n.jsx(fe,{path:"/solutions/edge/:solutionId",element:n.jsx(EL,{})}),n.jsx(fe,{path:"/solutions/infra/:slug",element:n.jsx(gb,{expectedCategory:"infra"})}),n.jsx(fe,{path:"/solutions/comms/:slug",element:n.jsx(gb,{expectedCategory:"comms"})}),n.jsx(fe,{path:"/about",element:n.jsx(HL,{})}),n.jsx(fe,{path:"/partners",element:n.jsx(PH,{})}),n.jsx(fe,{path:"/resources",element:n.jsx(HH,{})}),n.jsx(fe,{path:"/resources/blog/:slug",element:n.jsx(UH,{})}),n.jsx(fe,{path:"/contact",element:n.jsx(VH,{})}),n.jsx(fe,{path:"/pricing",element:n.jsx(zH,{})}),n.jsx(fe,{path:"/careers",element:n.jsx(ZH,{})}),n.jsx(fe,{path:"/privacy",element:n.jsx(TH,{})}),n.jsx(fe,{path:"/terms",element:n.jsx(_H,{})}),n.jsx(fe,{path:"/eua",element:n.jsx(IH,{})}),n.jsx(fe,{path:"/cookies",element:n.jsx(RH,{})}),n.jsx(fe,{path:"/search",element:n.jsx(GH,{})}),n.jsx(fe,{path:"*",element:n.jsx(QH,{})})]}),n.jsx(tO,{})]})}),r$=()=>n.jsx(xA,{children:n.jsx(t$,{})}),n$="modulepreload",s$=function(e){return"/"+e},Nb={},i$=function(t,r,s){let i=Promise.resolve();if(r&&r.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));i=Promise.allSettled(r.map(c=>{if(c=s$(c),c in Nb)return;Nb[c]=!0;const d=c.endsWith(".css"),u=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const h=document.createElement("link");if(h.rel=d?"stylesheet":n$,d||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),d)return new Promise((p,m)=>{h.addEventListener("load",p),h.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${c}`)))})}))}function a(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return i.then(o=>{for(const l of o||[])l.status==="rejected"&&a(l.reason);return t().catch(a)})},a$="/sw.js",o$=()=>{if(typeof window>"u"||window.self!==window.top)return!0;const{hostname:e,search:t}=window.location;return new URLSearchParams(t).has("sw")&&new URLSearchParams(t).get("sw")==="off"||e.startsWith("id-preview--")||e.startsWith("preview--")?!0:["lovableproject.com","lovableproject-dev.com","beta.lovable.dev"].some(s=>e===s||e.endsWith(`.${s}`))},l$=async()=>{const e=await navigator.serviceWorker.getRegistrations();await Promise.allSettled(e.filter(t=>{var r;return(r=t.active??t.waiting??t.installing)==null?void 0:r.scriptURL.endsWith(a$)}).map(t=>t.unregister()))},c$=async()=>{if(!("serviceWorker"in navigator))return;if(o$()){await l$().catch(()=>{});return}const{registerSW:e}=await i$(async()=>{const{registerSW:t}=await import("./virtual_pwa-register-C_FBoz8q.js");return{registerSW:t}},[]);e({immediate:!0})},tm=document.getElementById("root"),Sb=n.jsx(tj,{children:n.jsx(HD,{children:n.jsx(r$,{})})});tm.hasChildNodes()?q0(tm,Sb):X0(tm).render(Sb);c$();export{i$ as _};
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.