const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["scripts/index-BIPFiIOC.js","scripts/SEO-DciWNHuT.js","scripts/index-dCkvMtpw.js","scripts/index-FrUXOnYN.js","scripts/index-DZfbswc5.js","scripts/index-CkKIHgHi.js","scripts/index-C6OV6xN-.js","scripts/index-DCEaBU6V.js","scripts/index-tlVfLVsm.js","scripts/NoIndexPage-COcRgayV.js","scripts/ProgressBar-NV8V_z7s.js","scripts/BreadcrumbNav-dd5aGl3s.js","scripts/Skeleton-A4X_nY0C.js","scripts/Toast-CUYmVWT6.js","scripts/info_icon-B7D6GJzN.js","scripts/share_icon-dark-IoS0nXs-.js","scripts/arrow_icon-CdTrsi_I.js","scripts/file_icon-Dd4aOVPS.js","scripts/dots_icon-DiRoZK19.js","scripts/index-DPovks0m.js","scripts/ToggleButton-Db0K0e_H.js","scripts/bin_icon-BxWTDMGr.js","scripts/Notification-r_MzJcp4.js","scripts/index-BI1Dbe9Z.js","scripts/SearchBar-D1_lSWj7.js","scripts/VacancyItem-BaomQidi.js","scripts/CompatibilityBadge-DQk38Ti1.js","scripts/checkbox_icon-JlJLtjlK.js","scripts/HoverHint-tfvgSH_R.js","scripts/CopyInviteLinkButton-DvL04BkM.js","scripts/VacancyItemSkeleton-6ExBBYPI.js","scripts/ErrorTooltip-CyHs5T23.js","scripts/VacancyFilter-nUllqyW7.js","scripts/formatters-B5OKIBSQ.js","scripts/sort_icon-CbGazu7q.js","scripts/InputRadio-D9NTMoya.js","scripts/index-CpnO0ThX.js","scripts/media-CqzrSIu6.js","scripts/DismissibleCard-cDSM6LRi.js","scripts/ModerateCompanyModal-xqEEYUiK.js","scripts/edit_icon-D_1CYOP3.js","scripts/VideoPlayer-D27P42Ca.js","scripts/sanitizeHtml-By_Metee.js","scripts/industryPath-C8Z3_Eww.js","scripts/index-CoI6lVOk.js","scripts/fileOpener-C2Y6Sp4S.js","scripts/testReport-Cf04d4FY.js","scripts/file_icon-black-zuxEwEk0.js","scripts/Checkbox-dSsRTJZ4.js","scripts/ModalAlert-DZcDVd5N.js","scripts/archive_icon-Ztfq954Z.js","scripts/Callout-CVG2emXo.js","scripts/VacancyDetails-B2wwC8Tq.js","scripts/vacancyDetails-Beog1vB0.js","scripts/VacancyDetailsEmployer-D1Ibih5s.js","scripts/CompanyDetails-C3eQHQuk.js","scripts/CompanyPreview-DcVXTaHK.js","scripts/VacancyForm-CZZBbNXx.js","scripts/VideoUploadBox-hGRW1f8U.js","scripts/TextLink_icon-Cs-5JACm.js","scripts/RequiredAsterisk-DIB7xDWX.js","scripts/InfoTooltip-DqdrM1Gf.js","scripts/Textarea-BUwzOijc.js","scripts/SuccessTooltip-BAeZOB0w.js","scripts/VacancyPreview-D7WmGovv.js","scripts/index-1arZOLuE.js","scripts/checkmark_icon-DWD_wuV7.js","scripts/Candidates-C4tRmmgB.js","scripts/phone_icon-Ixb3u5nX.js","scripts/more_icon-q0aBUfTm.js","scripts/checkbox_icon-black-D62kbAB3.js","scripts/NoteInput-DmYmplZ7.js","scripts/close_icon-white-BRVE2t1e.js","scripts/RejectCandidateModal-BmSD-XgA.js","scripts/CandidateDetails-BJWs1ElC.js","scripts/index-DMfTi1vE.js","scripts/selectors-BzGTQ3YA.js","scripts/plus_icon-CzZh_kTs.js","scripts/arrow_icon-right-black-gSWas9ac.js","scripts/blogPage.module-BGz_ymqn.js","scripts/skills_icon-DNdLw3P0.js","scripts/BlogFeed-CWB9Ri8X.js","scripts/share_icon-DjRp4IpP.js","scripts/timer_icon-BN-Yr58j.js","scripts/index-0Up3syOe.js"])))=>i.map(i=>d[i]);
var mg=Object.defineProperty;var yg=(r,t,a)=>t in r?mg(r,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):r[t]=a;var F=(r,t,a)=>yg(r,typeof t!="symbol"?t+"":t,a);function gg(r,t){for(var a=0;a<t.length;a++){const i=t[a];if(typeof i!="string"&&!Array.isArray(i)){for(const s in i)if(s!=="default"&&!(s in r)){const c=Object.getOwnPropertyDescriptor(i,s);c&&Object.defineProperty(r,s,c.get?c:{enumerable:!0,get:()=>i[s]})}}}return Object.freeze(Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const c of s)if(c.type==="childList")for(const d of c.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&i(d)}).observe(document,{childList:!0,subtree:!0});function a(s){const c={};return s.integrity&&(c.integrity=s.integrity),s.referrerPolicy&&(c.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?c.credentials="include":s.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function i(s){if(s.ep)return;s.ep=!0;const c=a(s);fetch(s.href,c)}})();function Co(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var ru={exports:{}},ai={},nu={exports:{}},Me={};/**
 * @license React
 * react.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var lh;function vg(){if(lh)return Me;lh=1;var r=Symbol.for("react.element"),t=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),d=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),v=Symbol.iterator;function w(A){return A===null||typeof A!="object"?null:(A=v&&A[v]||A["@@iterator"],typeof A=="function"?A:null)}var S={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E=Object.assign,I={};function N(A,V,Ce){this.props=A,this.context=V,this.refs=I,this.updater=Ce||S}N.prototype.isReactComponent={},N.prototype.setState=function(A,V){if(typeof A!="object"&&typeof A!="function"&&A!=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,A,V,"setState")},N.prototype.forceUpdate=function(A){this.updater.enqueueForceUpdate(this,A,"forceUpdate")};function D(){}D.prototype=N.prototype;function b(A,V,Ce){this.props=A,this.context=V,this.refs=I,this.updater=Ce||S}var B=b.prototype=new D;B.constructor=b,E(B,N.prototype),B.isPureReactComponent=!0;var O=Array.isArray,j=Object.prototype.hasOwnProperty,q={current:null},x={key:!0,ref:!0,__self:!0,__source:!0};function W(A,V,Ce){var Ee,_e={},Te=null,Fe=null;if(V!=null)for(Ee in V.ref!==void 0&&(Fe=V.ref),V.key!==void 0&&(Te=""+V.key),V)j.call(V,Ee)&&!x.hasOwnProperty(Ee)&&(_e[Ee]=V[Ee]);var je=arguments.length-2;if(je===1)_e.children=Ce;else if(1<je){for(var Ve=Array(je),Pt=0;Pt<je;Pt++)Ve[Pt]=arguments[Pt+2];_e.children=Ve}if(A&&A.defaultProps)for(Ee in je=A.defaultProps,je)_e[Ee]===void 0&&(_e[Ee]=je[Ee]);return{$$typeof:r,type:A,key:Te,ref:Fe,props:_e,_owner:q.current}}function re(A,V){return{$$typeof:r,type:A.type,key:V,ref:A.ref,props:A.props,_owner:A._owner}}function ee(A){return typeof A=="object"&&A!==null&&A.$$typeof===r}function Z(A){var V={"=":"=0",":":"=2"};return"$"+A.replace(/[=:]/g,function(Ce){return V[Ce]})}var ie=/\/+/g;function ve(A,V){return typeof A=="object"&&A!==null&&A.key!=null?Z(""+A.key):V.toString(36)}function ge(A,V,Ce,Ee,_e){var Te=typeof A;(Te==="undefined"||Te==="boolean")&&(A=null);var Fe=!1;if(A===null)Fe=!0;else switch(Te){case"string":case"number":Fe=!0;break;case"object":switch(A.$$typeof){case r:case t:Fe=!0}}if(Fe)return Fe=A,_e=_e(Fe),A=Ee===""?"."+ve(Fe,0):Ee,O(_e)?(Ce="",A!=null&&(Ce=A.replace(ie,"$&/")+"/"),ge(_e,V,Ce,"",function(Pt){return Pt})):_e!=null&&(ee(_e)&&(_e=re(_e,Ce+(!_e.key||Fe&&Fe.key===_e.key?"":(""+_e.key).replace(ie,"$&/")+"/")+A)),V.push(_e)),1;if(Fe=0,Ee=Ee===""?".":Ee+":",O(A))for(var je=0;je<A.length;je++){Te=A[je];var Ve=Ee+ve(Te,je);Fe+=ge(Te,V,Ce,Ve,_e)}else if(Ve=w(A),typeof Ve=="function")for(A=Ve.call(A),je=0;!(Te=A.next()).done;)Te=Te.value,Ve=Ee+ve(Te,je++),Fe+=ge(Te,V,Ce,Ve,_e);else if(Te==="object")throw V=String(A),Error("Objects are not valid as a React child (found: "+(V==="[object Object]"?"object with keys {"+Object.keys(A).join(", ")+"}":V)+"). If you meant to render a collection of children, use an array instead.");return Fe}function $e(A,V,Ce){if(A==null)return A;var Ee=[],_e=0;return ge(A,Ee,"","",function(Te){return V.call(Ce,Te,_e++)}),Ee}function ke(A){if(A._status===-1){var V=A._result;V=V(),V.then(function(Ce){(A._status===0||A._status===-1)&&(A._status=1,A._result=Ce)},function(Ce){(A._status===0||A._status===-1)&&(A._status=2,A._result=Ce)}),A._status===-1&&(A._status=0,A._result=V)}if(A._status===1)return A._result.default;throw A._result}var oe={current:null},H={transition:null},ae={ReactCurrentDispatcher:oe,ReactCurrentBatchConfig:H,ReactCurrentOwner:q};function X(){throw Error("act(...) is not supported in production builds of React.")}return Me.Children={map:$e,forEach:function(A,V,Ce){$e(A,function(){V.apply(this,arguments)},Ce)},count:function(A){var V=0;return $e(A,function(){V++}),V},toArray:function(A){return $e(A,function(V){return V})||[]},only:function(A){if(!ee(A))throw Error("React.Children.only expected to receive a single React element child.");return A}},Me.Component=N,Me.Fragment=a,Me.Profiler=s,Me.PureComponent=b,Me.StrictMode=i,Me.Suspense=p,Me.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ae,Me.act=X,Me.cloneElement=function(A,V,Ce){if(A==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+A+".");var Ee=E({},A.props),_e=A.key,Te=A.ref,Fe=A._owner;if(V!=null){if(V.ref!==void 0&&(Te=V.ref,Fe=q.current),V.key!==void 0&&(_e=""+V.key),A.type&&A.type.defaultProps)var je=A.type.defaultProps;for(Ve in V)j.call(V,Ve)&&!x.hasOwnProperty(Ve)&&(Ee[Ve]=V[Ve]===void 0&&je!==void 0?je[Ve]:V[Ve])}var Ve=arguments.length-2;if(Ve===1)Ee.children=Ce;else if(1<Ve){je=Array(Ve);for(var Pt=0;Pt<Ve;Pt++)je[Pt]=arguments[Pt+2];Ee.children=je}return{$$typeof:r,type:A.type,key:_e,ref:Te,props:Ee,_owner:Fe}},Me.createContext=function(A){return A={$$typeof:d,_currentValue:A,_currentValue2:A,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},A.Provider={$$typeof:c,_context:A},A.Consumer=A},Me.createElement=W,Me.createFactory=function(A){var V=W.bind(null,A);return V.type=A,V},Me.createRef=function(){return{current:null}},Me.forwardRef=function(A){return{$$typeof:f,render:A}},Me.isValidElement=ee,Me.lazy=function(A){return{$$typeof:y,_payload:{_status:-1,_result:A},_init:ke}},Me.memo=function(A,V){return{$$typeof:m,type:A,compare:V===void 0?null:V}},Me.startTransition=function(A){var V=H.transition;H.transition={};try{A()}finally{H.transition=V}},Me.unstable_act=X,Me.useCallback=function(A,V){return oe.current.useCallback(A,V)},Me.useContext=function(A){return oe.current.useContext(A)},Me.useDebugValue=function(){},Me.useDeferredValue=function(A){return oe.current.useDeferredValue(A)},Me.useEffect=function(A,V){return oe.current.useEffect(A,V)},Me.useId=function(){return oe.current.useId()},Me.useImperativeHandle=function(A,V,Ce){return oe.current.useImperativeHandle(A,V,Ce)},Me.useInsertionEffect=function(A,V){return oe.current.useInsertionEffect(A,V)},Me.useLayoutEffect=function(A,V){return oe.current.useLayoutEffect(A,V)},Me.useMemo=function(A,V){return oe.current.useMemo(A,V)},Me.useReducer=function(A,V,Ce){return oe.current.useReducer(A,V,Ce)},Me.useRef=function(A){return oe.current.useRef(A)},Me.useState=function(A){return oe.current.useState(A)},Me.useSyncExternalStore=function(A,V,Ce){return oe.current.useSyncExternalStore(A,V,Ce)},Me.useTransition=function(){return oe.current.useTransition()},Me.version="18.3.1",Me}var ch;function ol(){return ch||(ch=1,nu.exports=vg()),nu.exports}/**
 * @license React
 * react-jsx-runtime.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var uh;function wg(){if(uh)return ai;uh=1;var r=ol(),t=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function d(f,p,m){var y,v={},w=null,S=null;m!==void 0&&(w=""+m),p.key!==void 0&&(w=""+p.key),p.ref!==void 0&&(S=p.ref);for(y in p)i.call(p,y)&&!c.hasOwnProperty(y)&&(v[y]=p[y]);if(f&&f.defaultProps)for(y in p=f.defaultProps,p)v[y]===void 0&&(v[y]=p[y]);return{$$typeof:t,type:f,key:w,ref:S,props:v,_owner:s.current}}return ai.Fragment=a,ai.jsx=d,ai.jsxs=d,ai}var dh;function Cg(){return dh||(dh=1,ru.exports=wg()),ru.exports}var g=Cg(),_=ol();const nn=Co(_),_g=gg({__proto__:null,default:nn},[_]);var Ms={},au={exports:{}},ar={},ou={exports:{}},iu={};/**
 * @license React
 * scheduler.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var fh;function Sg(){return fh||(fh=1,function(r){function t(H,ae){var X=H.length;H.push(ae);e:for(;0<X;){var A=X-1>>>1,V=H[A];if(0<s(V,ae))H[A]=ae,H[X]=V,X=A;else break e}}function a(H){return H.length===0?null:H[0]}function i(H){if(H.length===0)return null;var ae=H[0],X=H.pop();if(X!==ae){H[0]=X;e:for(var A=0,V=H.length,Ce=V>>>1;A<Ce;){var Ee=2*(A+1)-1,_e=H[Ee],Te=Ee+1,Fe=H[Te];if(0>s(_e,X))Te<V&&0>s(Fe,_e)?(H[A]=Fe,H[Te]=X,A=Te):(H[A]=_e,H[Ee]=X,A=Ee);else if(Te<V&&0>s(Fe,X))H[A]=Fe,H[Te]=X,A=Te;else break e}}return ae}function s(H,ae){var X=H.sortIndex-ae.sortIndex;return X!==0?X:H.id-ae.id}if(typeof performance=="object"&&typeof performance.now=="function"){var c=performance;r.unstable_now=function(){return c.now()}}else{var d=Date,f=d.now();r.unstable_now=function(){return d.now()-f}}var p=[],m=[],y=1,v=null,w=3,S=!1,E=!1,I=!1,N=typeof setTimeout=="function"?setTimeout:null,D=typeof clearTimeout=="function"?clearTimeout:null,b=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function B(H){for(var ae=a(m);ae!==null;){if(ae.callback===null)i(m);else if(ae.startTime<=H)i(m),ae.sortIndex=ae.expirationTime,t(p,ae);else break;ae=a(m)}}function O(H){if(I=!1,B(H),!E)if(a(p)!==null)E=!0,ke(j);else{var ae=a(m);ae!==null&&oe(O,ae.startTime-H)}}function j(H,ae){E=!1,I&&(I=!1,D(W),W=-1),S=!0;var X=w;try{for(B(ae),v=a(p);v!==null&&(!(v.expirationTime>ae)||H&&!Z());){var A=v.callback;if(typeof A=="function"){v.callback=null,w=v.priorityLevel;var V=A(v.expirationTime<=ae);ae=r.unstable_now(),typeof V=="function"?v.callback=V:v===a(p)&&i(p),B(ae)}else i(p);v=a(p)}if(v!==null)var Ce=!0;else{var Ee=a(m);Ee!==null&&oe(O,Ee.startTime-ae),Ce=!1}return Ce}finally{v=null,w=X,S=!1}}var q=!1,x=null,W=-1,re=5,ee=-1;function Z(){return!(r.unstable_now()-ee<re)}function ie(){if(x!==null){var H=r.unstable_now();ee=H;var ae=!0;try{ae=x(!0,H)}finally{ae?ve():(q=!1,x=null)}}else q=!1}var ve;if(typeof b=="function")ve=function(){b(ie)};else if(typeof MessageChannel<"u"){var ge=new MessageChannel,$e=ge.port2;ge.port1.onmessage=ie,ve=function(){$e.postMessage(null)}}else ve=function(){N(ie,0)};function ke(H){x=H,q||(q=!0,ve())}function oe(H,ae){W=N(function(){H(r.unstable_now())},ae)}r.unstable_IdlePriority=5,r.unstable_ImmediatePriority=1,r.unstable_LowPriority=4,r.unstable_NormalPriority=3,r.unstable_Profiling=null,r.unstable_UserBlockingPriority=2,r.unstable_cancelCallback=function(H){H.callback=null},r.unstable_continueExecution=function(){E||S||(E=!0,ke(j))},r.unstable_forceFrameRate=function(H){0>H||125<H?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):re=0<H?Math.floor(1e3/H):5},r.unstable_getCurrentPriorityLevel=function(){return w},r.unstable_getFirstCallbackNode=function(){return a(p)},r.unstable_next=function(H){switch(w){case 1:case 2:case 3:var ae=3;break;default:ae=w}var X=w;w=ae;try{return H()}finally{w=X}},r.unstable_pauseExecution=function(){},r.unstable_requestPaint=function(){},r.unstable_runWithPriority=function(H,ae){switch(H){case 1:case 2:case 3:case 4:case 5:break;default:H=3}var X=w;w=H;try{return ae()}finally{w=X}},r.unstable_scheduleCallback=function(H,ae,X){var A=r.unstable_now();switch(typeof X=="object"&&X!==null?(X=X.delay,X=typeof X=="number"&&0<X?A+X:A):X=A,H){case 1:var V=-1;break;case 2:V=250;break;case 5:V=1073741823;break;case 4:V=1e4;break;default:V=5e3}return V=X+V,H={id:y++,callback:ae,priorityLevel:H,startTime:X,expirationTime:V,sortIndex:-1},X>A?(H.sortIndex=X,t(m,H),a(p)===null&&H===a(m)&&(I?(D(W),W=-1):I=!0,oe(O,X-A))):(H.sortIndex=V,t(p,H),E||S||(E=!0,ke(j))),H},r.unstable_shouldYield=Z,r.unstable_wrapCallback=function(H){var ae=w;return function(){var X=w;w=ae;try{return H.apply(this,arguments)}finally{w=X}}}}(iu)),iu}var ph;function xg(){return ph||(ph=1,ou.exports=Sg()),ou.exports}/**
 * @license React
 * react-dom.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var hh;function Eg(){if(hh)return ar;hh=1;var r=ol(),t=xg();function a(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=1;o<arguments.length;o++)n+="&args[]="+encodeURIComponent(arguments[o]);return"Minified React error #"+e+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,s={};function c(e,n){d(e,n),d(e+"Capture",n)}function d(e,n){for(s[e]=n,e=0;e<n.length;e++)i.add(n[e])}var f=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),p=Object.prototype.hasOwnProperty,m=/^[: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]*$/,y={},v={};function w(e){return p.call(v,e)?!0:p.call(y,e)?!1:m.test(e)?v[e]=!0:(y[e]=!0,!1)}function S(e,n,o,l){if(o!==null&&o.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return l?!1:o!==null?!o.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function E(e,n,o,l){if(n===null||typeof n>"u"||S(e,n,o,l))return!0;if(l)return!1;if(o!==null)switch(o.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function I(e,n,o,l,u,h,C){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=l,this.attributeNamespace=u,this.mustUseProperty=o,this.propertyName=e,this.type=n,this.sanitizeURL=h,this.removeEmptyString=C}var N={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){N[e]=new I(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];N[n]=new I(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){N[e]=new I(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){N[e]=new I(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){N[e]=new I(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){N[e]=new I(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){N[e]=new I(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){N[e]=new I(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){N[e]=new I(e,5,!1,e.toLowerCase(),null,!1,!1)});var D=/[\-:]([a-z])/g;function b(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-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 n=e.replace(D,b);N[n]=new I(n,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(D,b);N[n]=new I(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(D,b);N[n]=new I(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){N[e]=new I(e,1,!1,e.toLowerCase(),null,!1,!1)}),N.xlinkHref=new I("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){N[e]=new I(e,1,!1,e.toLowerCase(),null,!0,!0)});function B(e,n,o,l){var u=N.hasOwnProperty(n)?N[n]:null;(u!==null?u.type!==0:l||!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(E(n,o,u,l)&&(o=null),l||u===null?w(n)&&(o===null?e.removeAttribute(n):e.setAttribute(n,""+o)):u.mustUseProperty?e[u.propertyName]=o===null?u.type===3?!1:"":o:(n=u.attributeName,l=u.attributeNamespace,o===null?e.removeAttribute(n):(u=u.type,o=u===3||u===4&&o===!0?"":""+o,l?e.setAttributeNS(l,n,o):e.setAttribute(n,o))))}var O=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,j=Symbol.for("react.element"),q=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),W=Symbol.for("react.strict_mode"),re=Symbol.for("react.profiler"),ee=Symbol.for("react.provider"),Z=Symbol.for("react.context"),ie=Symbol.for("react.forward_ref"),ve=Symbol.for("react.suspense"),ge=Symbol.for("react.suspense_list"),$e=Symbol.for("react.memo"),ke=Symbol.for("react.lazy"),oe=Symbol.for("react.offscreen"),H=Symbol.iterator;function ae(e){return e===null||typeof e!="object"?null:(e=H&&e[H]||e["@@iterator"],typeof e=="function"?e:null)}var X=Object.assign,A;function V(e){if(A===void 0)try{throw Error()}catch(o){var n=o.stack.trim().match(/\n( *(at )?)/);A=n&&n[1]||""}return`
`+A+e}var Ce=!1;function Ee(e,n){if(!e||Ce)return"";Ce=!0;var o=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(n)if(n=function(){throw Error()},Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(n,[])}catch(z){var l=z}Reflect.construct(e,[],n)}else{try{n.call()}catch(z){l=z}e.call(n.prototype)}else{try{throw Error()}catch(z){l=z}e()}}catch(z){if(z&&l&&typeof z.stack=="string"){for(var u=z.stack.split(`
`),h=l.stack.split(`
`),C=u.length-1,k=h.length-1;1<=C&&0<=k&&u[C]!==h[k];)k--;for(;1<=C&&0<=k;C--,k--)if(u[C]!==h[k]){if(C!==1||k!==1)do if(C--,k--,0>k||u[C]!==h[k]){var P=`
`+u[C].replace(" at new "," at ");return e.displayName&&P.includes("<anonymous>")&&(P=P.replace("<anonymous>",e.displayName)),P}while(1<=C&&0<=k);break}}}finally{Ce=!1,Error.prepareStackTrace=o}return(e=e?e.displayName||e.name:"")?V(e):""}function _e(e){switch(e.tag){case 5:return V(e.type);case 16:return V("Lazy");case 13:return V("Suspense");case 19:return V("SuspenseList");case 0:case 2:case 15:return e=Ee(e.type,!1),e;case 11:return e=Ee(e.type.render,!1),e;case 1:return e=Ee(e.type,!0),e;default:return""}}function Te(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 x:return"Fragment";case q:return"Portal";case re:return"Profiler";case W:return"StrictMode";case ve:return"Suspense";case ge:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Z:return(e.displayName||"Context")+".Consumer";case ee:return(e._context.displayName||"Context")+".Provider";case ie:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case $e:return n=e.displayName||null,n!==null?n:Te(e.type)||"Memo";case ke:n=e._payload,e=e._init;try{return Te(e(n))}catch{}}return null}function Fe(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Te(n);case 8:return n===W?"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 n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function je(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ve(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function Pt(e){var n=Ve(e)?"checked":"value",o=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),l=""+e[n];if(!e.hasOwnProperty(n)&&typeof o<"u"&&typeof o.get=="function"&&typeof o.set=="function"){var u=o.get,h=o.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return u.call(this)},set:function(C){l=""+C,h.call(this,C)}}),Object.defineProperty(e,n,{enumerable:o.enumerable}),{getValue:function(){return l},setValue:function(C){l=""+C},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function Tn(e){e._valueTracker||(e._valueTracker=Pt(e))}function ut(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var o=n.getValue(),l="";return e&&(l=Ve(e)?e.checked?"true":"false":e.value),e=l,e!==o?(n.setValue(e),!0):!1}function Vt(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 cn(e,n){var o=n.checked;return X({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:o??e._wrapperState.initialChecked})}function Ae(e,n){var o=n.defaultValue==null?"":n.defaultValue,l=n.checked!=null?n.checked:n.defaultChecked;o=je(n.value!=null?n.value:o),e._wrapperState={initialChecked:l,initialValue:o,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Ye(e,n){n=n.checked,n!=null&&B(e,"checked",n,!1)}function Mt(e,n){Ye(e,n);var o=je(n.value),l=n.type;if(o!=null)l==="number"?(o===0&&e.value===""||e.value!=o)&&(e.value=""+o):e.value!==""+o&&(e.value=""+o);else if(l==="submit"||l==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?dt(e,n.type,o):n.hasOwnProperty("defaultValue")&&dt(e,n.type,je(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function Dt(e,n,o){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var l=n.type;if(!(l!=="submit"&&l!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,o||n===e.value||(e.value=n),e.defaultValue=n}o=e.name,o!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,o!==""&&(e.name=o)}function dt(e,n,o){(n!=="number"||Vt(e.ownerDocument)!==e)&&(o==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+o&&(e.defaultValue=""+o))}var Rt=Array.isArray;function ur(e,n,o,l){if(e=e.options,n){n={};for(var u=0;u<o.length;u++)n["$"+o[u]]=!0;for(o=0;o<e.length;o++)u=n.hasOwnProperty("$"+e[o].value),e[o].selected!==u&&(e[o].selected=u),u&&l&&(e[o].defaultSelected=!0)}else{for(o=""+je(o),n=null,u=0;u<e.length;u++){if(e[u].value===o){e[u].selected=!0,l&&(e[u].defaultSelected=!0);return}n!==null||e[u].disabled||(n=e[u])}n!==null&&(n.selected=!0)}}function dr(e,n){if(n.dangerouslySetInnerHTML!=null)throw Error(a(91));return X({},n,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function qr(e,n){var o=n.value;if(o==null){if(o=n.children,n=n.defaultValue,o!=null){if(n!=null)throw Error(a(92));if(Rt(o)){if(1<o.length)throw Error(a(93));o=o[0]}n=o}n==null&&(n=""),o=n}e._wrapperState={initialValue:je(o)}}function at(e,n){var o=je(n.value),l=je(n.defaultValue);o!=null&&(o=""+o,o!==e.value&&(e.value=o),n.defaultValue==null&&e.defaultValue!==o&&(e.defaultValue=o)),l!=null&&(e.defaultValue=""+l)}function kr(e){var n=e.textContent;n===e._wrapperState.initialValue&&n!==""&&n!==null&&(e.value=n)}function Or(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 In(e,n){return e==null||e==="http://www.w3.org/1999/xhtml"?Or(n):e==="http://www.w3.org/2000/svg"&&n==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var _t,St=function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(n,o,l,u){MSApp.execUnsafeLocalFunction(function(){return e(n,o,l,u)})}:e}(function(e,n){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=n;else{for(_t=_t||document.createElement("div"),_t.innerHTML="<svg>"+n.valueOf().toString()+"</svg>",n=_t.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function Zt(e,n){if(n){var o=e.firstChild;if(o&&o===e.lastChild&&o.nodeType===3){o.nodeValue=n;return}}e.textContent=n}var fr={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},un=["Webkit","ms","Moz","O"];Object.keys(fr).forEach(function(e){un.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),fr[n]=fr[e]})});function Ri(e,n,o){return n==null||typeof n=="boolean"||n===""?"":o||typeof n!="number"||n===0||fr.hasOwnProperty(e)&&fr[e]?(""+n).trim():n+"px"}function Tr(e,n){e=e.style;for(var o in n)if(n.hasOwnProperty(o)){var l=o.indexOf("--")===0,u=Ri(o,n[o],l);o==="float"&&(o="cssFloat"),l?e.setProperty(o,u):e[o]=u}}var Ai=X({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 ja(e,n){if(n){if(Ai[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(a(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(a(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(a(61))}if(n.style!=null&&typeof n.style!="object")throw Error(a(62))}}function Ma(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";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 _o=null;function Da(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var bn=null,dn=null,Gr=null;function Ni(e){if(e=Vo(e)){if(typeof bn!="function")throw Error(a(280));var n=e.stateNode;n&&(n=Qi(n),bn(e.stateNode,e.type,n))}}function So(e){dn?Gr?Gr.push(e):Gr=[e]:dn=e}function Li(){if(dn){var e=dn,n=Gr;if(Gr=dn=null,Ni(e),n)for(e=0;e<n.length;e++)Ni(n[e])}}function xo(e,n){return e(n)}function oa(){}var Pn=!1;function Eo(e,n,o){if(Pn)return e(n,o);Pn=!0;try{return xo(e,n,o)}finally{Pn=!1,(dn!==null||Gr!==null)&&(oa(),Li())}}function ia(e,n){var o=e.stateNode;if(o===null)return null;var l=Qi(o);if(l===null)return null;o=l[n];e:switch(n){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(l=!l.disabled)||(e=e.type,l=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!l;break e;default:e=!1}if(e)return null;if(o&&typeof o!="function")throw Error(a(231,n,typeof o));return o}var ko=!1;if(f)try{var T={};Object.defineProperty(T,"passive",{get:function(){ko=!0}}),window.addEventListener("test",T,T),window.removeEventListener("test",T,T)}catch{ko=!1}function L(e,n,o,l,u,h,C,k,P){var z=Array.prototype.slice.call(arguments,3);try{n.apply(o,z)}catch(Q){this.onError(Q)}}var U=!1,G=null,ne=!1,he=null,we={onError:function(e){U=!0,G=e}};function le(e,n,o,l,u,h,C,k,P){U=!1,G=null,L.apply(we,arguments)}function ue(e,n,o,l,u,h,C,k,P){if(le.apply(this,arguments),U){if(U){var z=G;U=!1,G=null}else throw Error(a(198));ne||(ne=!0,he=z)}}function fe(e){var n=e,o=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do n=e,(n.flags&4098)!==0&&(o=n.return),e=n.return;while(e)}return n.tag===3?o:null}function be(e){if(e.tag===13){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function ye(e){if(fe(e)!==e)throw Error(a(188))}function Re(e){var n=e.alternate;if(!n){if(n=fe(e),n===null)throw Error(a(188));return n!==e?null:e}for(var o=e,l=n;;){var u=o.return;if(u===null)break;var h=u.alternate;if(h===null){if(l=u.return,l!==null){o=l;continue}break}if(u.child===h.child){for(h=u.child;h;){if(h===o)return ye(u),e;if(h===l)return ye(u),n;h=h.sibling}throw Error(a(188))}if(o.return!==l.return)o=u,l=h;else{for(var C=!1,k=u.child;k;){if(k===o){C=!0,o=u,l=h;break}if(k===l){C=!0,l=u,o=h;break}k=k.sibling}if(!C){for(k=h.child;k;){if(k===o){C=!0,o=h,l=u;break}if(k===l){C=!0,l=h,o=u;break}k=k.sibling}if(!C)throw Error(a(189))}}if(o.alternate!==l)throw Error(a(190))}if(o.tag!==3)throw Error(a(188));return o.stateNode.current===o?e:n}function De(e){return e=Re(e),e!==null?mt(e):null}function mt(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var n=mt(e);if(n!==null)return n;e=e.sibling}return null}var ft=t.unstable_scheduleCallback,xt=t.unstable_cancelCallback,Be=t.unstable_shouldYield,Jt=t.unstable_requestPaint,He=t.unstable_now,sa=t.unstable_getCurrentPriorityLevel,Ir=t.unstable_ImmediatePriority,pr=t.unstable_UserBlockingPriority,Rn=t.unstable_NormalPriority,la=t.unstable_LowPriority,Qr=t.unstable_IdlePriority,fn=null,Ht=null;function Oe(e){if(Ht&&typeof Ht.onCommitFiberRoot=="function")try{Ht.onCommitFiberRoot(fn,e,void 0,(e.current.flags&128)===128)}catch{}}var qe=Math.clz32?Math.clz32:tt,An=Math.log,pn=Math.LN2;function tt(e){return e>>>=0,e===0?32:31-(An(e)/pn|0)|0}var hn=64,ca=4194304;function ua(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 ji(e,n){var o=e.pendingLanes;if(o===0)return 0;var l=0,u=e.suspendedLanes,h=e.pingedLanes,C=o&268435455;if(C!==0){var k=C&~u;k!==0?l=ua(k):(h&=C,h!==0&&(l=ua(h)))}else C=o&~u,C!==0?l=ua(C):h!==0&&(l=ua(h));if(l===0)return 0;if(n!==0&&n!==l&&(n&u)===0&&(u=l&-l,h=n&-n,u>=h||u===16&&(h&4194240)!==0))return n;if((l&4)!==0&&(l|=o&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=l;0<n;)o=31-qe(n),u=1<<o,l|=e[o],n&=~u;return l}function j1(e,n){switch(e){case 1:case 2:case 4:return n+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 n+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 M1(e,n){for(var o=e.suspendedLanes,l=e.pingedLanes,u=e.expirationTimes,h=e.pendingLanes;0<h;){var C=31-qe(h),k=1<<C,P=u[C];P===-1?((k&o)===0||(k&l)!==0)&&(u[C]=j1(k,n)):P<=n&&(e.expiredLanes|=k),h&=~k}}function xl(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function Od(){var e=hn;return hn<<=1,(hn&4194240)===0&&(hn=64),e}function El(e){for(var n=[],o=0;31>o;o++)n.push(e);return n}function To(e,n,o){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-qe(n),e[n]=o}function D1(e,n){var o=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var l=e.eventTimes;for(e=e.expirationTimes;0<o;){var u=31-qe(o),h=1<<u;n[u]=0,l[u]=-1,e[u]=-1,o&=~h}}function kl(e,n){var o=e.entangledLanes|=n;for(e=e.entanglements;o;){var l=31-qe(o),u=1<<l;u&n|e[l]&n&&(e[l]|=n),o&=~u}}var We=0;function Fd(e){return e&=-e,1<e?4<e?(e&268435455)!==0?16:536870912:4:1}var Ud,Tl,zd,Bd,Vd,Il=!1,Mi=[],Nn=null,Ln=null,jn=null,Io=new Map,bo=new Map,Mn=[],$1="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 Hd(e,n){switch(e){case"focusin":case"focusout":Nn=null;break;case"dragenter":case"dragleave":Ln=null;break;case"mouseover":case"mouseout":jn=null;break;case"pointerover":case"pointerout":Io.delete(n.pointerId);break;case"gotpointercapture":case"lostpointercapture":bo.delete(n.pointerId)}}function Po(e,n,o,l,u,h){return e===null||e.nativeEvent!==h?(e={blockedOn:n,domEventName:o,eventSystemFlags:l,nativeEvent:h,targetContainers:[u]},n!==null&&(n=Vo(n),n!==null&&Tl(n)),e):(e.eventSystemFlags|=l,n=e.targetContainers,u!==null&&n.indexOf(u)===-1&&n.push(u),e)}function O1(e,n,o,l,u){switch(n){case"focusin":return Nn=Po(Nn,e,n,o,l,u),!0;case"dragenter":return Ln=Po(Ln,e,n,o,l,u),!0;case"mouseover":return jn=Po(jn,e,n,o,l,u),!0;case"pointerover":var h=u.pointerId;return Io.set(h,Po(Io.get(h)||null,e,n,o,l,u)),!0;case"gotpointercapture":return h=u.pointerId,bo.set(h,Po(bo.get(h)||null,e,n,o,l,u)),!0}return!1}function Wd(e){var n=da(e.target);if(n!==null){var o=fe(n);if(o!==null){if(n=o.tag,n===13){if(n=be(o),n!==null){e.blockedOn=n,Vd(e.priority,function(){zd(o)});return}}else if(n===3&&o.stateNode.current.memoizedState.isDehydrated){e.blockedOn=o.tag===3?o.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Di(e){if(e.blockedOn!==null)return!1;for(var n=e.targetContainers;0<n.length;){var o=Pl(e.domEventName,e.eventSystemFlags,n[0],e.nativeEvent);if(o===null){o=e.nativeEvent;var l=new o.constructor(o.type,o);_o=l,o.target.dispatchEvent(l),_o=null}else return n=Vo(o),n!==null&&Tl(n),e.blockedOn=o,!1;n.shift()}return!0}function Kd(e,n,o){Di(e)&&o.delete(n)}function F1(){Il=!1,Nn!==null&&Di(Nn)&&(Nn=null),Ln!==null&&Di(Ln)&&(Ln=null),jn!==null&&Di(jn)&&(jn=null),Io.forEach(Kd),bo.forEach(Kd)}function Ro(e,n){e.blockedOn===n&&(e.blockedOn=null,Il||(Il=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,F1)))}function Ao(e){function n(u){return Ro(u,e)}if(0<Mi.length){Ro(Mi[0],e);for(var o=1;o<Mi.length;o++){var l=Mi[o];l.blockedOn===e&&(l.blockedOn=null)}}for(Nn!==null&&Ro(Nn,e),Ln!==null&&Ro(Ln,e),jn!==null&&Ro(jn,e),Io.forEach(n),bo.forEach(n),o=0;o<Mn.length;o++)l=Mn[o],l.blockedOn===e&&(l.blockedOn=null);for(;0<Mn.length&&(o=Mn[0],o.blockedOn===null);)Wd(o),o.blockedOn===null&&Mn.shift()}var $a=O.ReactCurrentBatchConfig,$i=!0;function U1(e,n,o,l){var u=We,h=$a.transition;$a.transition=null;try{We=1,bl(e,n,o,l)}finally{We=u,$a.transition=h}}function z1(e,n,o,l){var u=We,h=$a.transition;$a.transition=null;try{We=4,bl(e,n,o,l)}finally{We=u,$a.transition=h}}function bl(e,n,o,l){if($i){var u=Pl(e,n,o,l);if(u===null)Kl(e,n,l,Oi,o),Hd(e,l);else if(O1(u,e,n,o,l))l.stopPropagation();else if(Hd(e,l),n&4&&-1<$1.indexOf(e)){for(;u!==null;){var h=Vo(u);if(h!==null&&Ud(h),h=Pl(e,n,o,l),h===null&&Kl(e,n,l,Oi,o),h===u)break;u=h}u!==null&&l.stopPropagation()}else Kl(e,n,l,null,o)}}var Oi=null;function Pl(e,n,o,l){if(Oi=null,e=Da(l),e=da(e),e!==null)if(n=fe(e),n===null)e=null;else if(o=n.tag,o===13){if(e=be(n),e!==null)return e;e=null}else if(o===3){if(n.stateNode.current.memoizedState.isDehydrated)return n.tag===3?n.stateNode.containerInfo:null;e=null}else n!==e&&(e=null);return Oi=e,null}function Yd(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(sa()){case Ir:return 1;case pr:return 4;case Rn:case la:return 16;case Qr:return 536870912;default:return 16}default:return 16}}var Dn=null,Rl=null,Fi=null;function qd(){if(Fi)return Fi;var e,n=Rl,o=n.length,l,u="value"in Dn?Dn.value:Dn.textContent,h=u.length;for(e=0;e<o&&n[e]===u[e];e++);var C=o-e;for(l=1;l<=C&&n[o-l]===u[h-l];l++);return Fi=u.slice(e,1<l?1-l:void 0)}function Ui(e){var n=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&n===13&&(e=13)):e=n,e===10&&(e=13),32<=e||e===13?e:0}function zi(){return!0}function Gd(){return!1}function hr(e){function n(o,l,u,h,C){this._reactName=o,this._targetInst=u,this.type=l,this.nativeEvent=h,this.target=C,this.currentTarget=null;for(var k in e)e.hasOwnProperty(k)&&(o=e[k],this[k]=o?o(h):h[k]);return this.isDefaultPrevented=(h.defaultPrevented!=null?h.defaultPrevented:h.returnValue===!1)?zi:Gd,this.isPropagationStopped=Gd,this}return X(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var o=this.nativeEvent;o&&(o.preventDefault?o.preventDefault():typeof o.returnValue!="unknown"&&(o.returnValue=!1),this.isDefaultPrevented=zi)},stopPropagation:function(){var o=this.nativeEvent;o&&(o.stopPropagation?o.stopPropagation():typeof o.cancelBubble!="unknown"&&(o.cancelBubble=!0),this.isPropagationStopped=zi)},persist:function(){},isPersistent:zi}),n}var Oa={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Al=hr(Oa),No=X({},Oa,{view:0,detail:0}),B1=hr(No),Nl,Ll,Lo,Bi=X({},No,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Ml,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!==Lo&&(Lo&&e.type==="mousemove"?(Nl=e.screenX-Lo.screenX,Ll=e.screenY-Lo.screenY):Ll=Nl=0,Lo=e),Nl)},movementY:function(e){return"movementY"in e?e.movementY:Ll}}),Qd=hr(Bi),V1=X({},Bi,{dataTransfer:0}),H1=hr(V1),W1=X({},No,{relatedTarget:0}),jl=hr(W1),K1=X({},Oa,{animationName:0,elapsedTime:0,pseudoElement:0}),Y1=hr(K1),q1=X({},Oa,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),G1=hr(q1),Q1=X({},Oa,{data:0}),Zd=hr(Q1),Z1={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},J1={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"},X1={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function ey(e){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(e):(e=X1[e])?!!n[e]:!1}function Ml(){return ey}var ty=X({},No,{key:function(e){if(e.key){var n=Z1[e.key]||e.key;if(n!=="Unidentified")return n}return e.type==="keypress"?(e=Ui(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?J1[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Ml,charCode:function(e){return e.type==="keypress"?Ui(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Ui(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),ry=hr(ty),ny=X({},Bi,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Jd=hr(ny),ay=X({},No,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Ml}),oy=hr(ay),iy=X({},Oa,{propertyName:0,elapsedTime:0,pseudoElement:0}),sy=hr(iy),ly=X({},Bi,{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}),cy=hr(ly),uy=[9,13,27,32],Dl=f&&"CompositionEvent"in window,jo=null;f&&"documentMode"in document&&(jo=document.documentMode);var dy=f&&"TextEvent"in window&&!jo,Xd=f&&(!Dl||jo&&8<jo&&11>=jo),ef=" ",tf=!1;function rf(e,n){switch(e){case"keyup":return uy.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function nf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Fa=!1;function fy(e,n){switch(e){case"compositionend":return nf(n);case"keypress":return n.which!==32?null:(tf=!0,ef);case"textInput":return e=n.data,e===ef&&tf?null:e;default:return null}}function py(e,n){if(Fa)return e==="compositionend"||!Dl&&rf(e,n)?(e=qd(),Fi=Rl=Dn=null,Fa=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1<n.char.length)return n.char;if(n.which)return String.fromCharCode(n.which)}return null;case"compositionend":return Xd&&n.locale!=="ko"?null:n.data;default:return null}}var hy={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 af(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n==="input"?!!hy[e.type]:n==="textarea"}function of(e,n,o,l){So(l),n=Yi(n,"onChange"),0<n.length&&(o=new Al("onChange","change",null,o,l),e.push({event:o,listeners:n}))}var Mo=null,Do=null;function my(e){Ef(e,0)}function Vi(e){var n=Ha(e);if(ut(n))return e}function yy(e,n){if(e==="change")return n}var sf=!1;if(f){var $l;if(f){var Ol="oninput"in document;if(!Ol){var lf=document.createElement("div");lf.setAttribute("oninput","return;"),Ol=typeof lf.oninput=="function"}$l=Ol}else $l=!1;sf=$l&&(!document.documentMode||9<document.documentMode)}function cf(){Mo&&(Mo.detachEvent("onpropertychange",uf),Do=Mo=null)}function uf(e){if(e.propertyName==="value"&&Vi(Do)){var n=[];of(n,Do,e,Da(e)),Eo(my,n)}}function gy(e,n,o){e==="focusin"?(cf(),Mo=n,Do=o,Mo.attachEvent("onpropertychange",uf)):e==="focusout"&&cf()}function vy(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Vi(Do)}function wy(e,n){if(e==="click")return Vi(n)}function Cy(e,n){if(e==="input"||e==="change")return Vi(n)}function _y(e,n){return e===n&&(e!==0||1/e===1/n)||e!==e&&n!==n}var Fr=typeof Object.is=="function"?Object.is:_y;function $o(e,n){if(Fr(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;var o=Object.keys(e),l=Object.keys(n);if(o.length!==l.length)return!1;for(l=0;l<o.length;l++){var u=o[l];if(!p.call(n,u)||!Fr(e[u],n[u]))return!1}return!0}function df(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ff(e,n){var o=df(e);e=0;for(var l;o;){if(o.nodeType===3){if(l=e+o.textContent.length,e<=n&&l>=n)return{node:o,offset:n-e};e=l}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=df(o)}}function pf(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?pf(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function hf(){for(var e=window,n=Vt();n instanceof e.HTMLIFrameElement;){try{var o=typeof n.contentWindow.location.href=="string"}catch{o=!1}if(o)e=n.contentWindow;else break;n=Vt(e.document)}return n}function Fl(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function Sy(e){var n=hf(),o=e.focusedElem,l=e.selectionRange;if(n!==o&&o&&o.ownerDocument&&pf(o.ownerDocument.documentElement,o)){if(l!==null&&Fl(o)){if(n=l.start,e=l.end,e===void 0&&(e=n),"selectionStart"in o)o.selectionStart=n,o.selectionEnd=Math.min(e,o.value.length);else if(e=(n=o.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var u=o.textContent.length,h=Math.min(l.start,u);l=l.end===void 0?h:Math.min(l.end,u),!e.extend&&h>l&&(u=l,l=h,h=u),u=ff(o,h);var C=ff(o,l);u&&C&&(e.rangeCount!==1||e.anchorNode!==u.node||e.anchorOffset!==u.offset||e.focusNode!==C.node||e.focusOffset!==C.offset)&&(n=n.createRange(),n.setStart(u.node,u.offset),e.removeAllRanges(),h>l?(e.addRange(n),e.extend(C.node,C.offset)):(n.setEnd(C.node,C.offset),e.addRange(n)))}}for(n=[],e=o;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;o<n.length;o++)e=n[o],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var xy=f&&"documentMode"in document&&11>=document.documentMode,Ua=null,Ul=null,Oo=null,zl=!1;function mf(e,n,o){var l=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;zl||Ua==null||Ua!==Vt(l)||(l=Ua,"selectionStart"in l&&Fl(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Oo&&$o(Oo,l)||(Oo=l,l=Yi(Ul,"onSelect"),0<l.length&&(n=new Al("onSelect","select",null,n,o),e.push({event:n,listeners:l}),n.target=Ua)))}function Hi(e,n){var o={};return o[e.toLowerCase()]=n.toLowerCase(),o["Webkit"+e]="webkit"+n,o["Moz"+e]="moz"+n,o}var za={animationend:Hi("Animation","AnimationEnd"),animationiteration:Hi("Animation","AnimationIteration"),animationstart:Hi("Animation","AnimationStart"),transitionend:Hi("Transition","TransitionEnd")},Bl={},yf={};f&&(yf=document.createElement("div").style,"AnimationEvent"in window||(delete za.animationend.animation,delete za.animationiteration.animation,delete za.animationstart.animation),"TransitionEvent"in window||delete za.transitionend.transition);function Wi(e){if(Bl[e])return Bl[e];if(!za[e])return e;var n=za[e],o;for(o in n)if(n.hasOwnProperty(o)&&o in yf)return Bl[e]=n[o];return e}var gf=Wi("animationend"),vf=Wi("animationiteration"),wf=Wi("animationstart"),Cf=Wi("transitionend"),_f=new Map,Sf="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 $n(e,n){_f.set(e,n),c(n,[e])}for(var Vl=0;Vl<Sf.length;Vl++){var Hl=Sf[Vl],Ey=Hl.toLowerCase(),ky=Hl[0].toUpperCase()+Hl.slice(1);$n(Ey,"on"+ky)}$n(gf,"onAnimationEnd"),$n(vf,"onAnimationIteration"),$n(wf,"onAnimationStart"),$n("dblclick","onDoubleClick"),$n("focusin","onFocus"),$n("focusout","onBlur"),$n(Cf,"onTransitionEnd"),d("onMouseEnter",["mouseout","mouseover"]),d("onMouseLeave",["mouseout","mouseover"]),d("onPointerEnter",["pointerout","pointerover"]),d("onPointerLeave",["pointerout","pointerover"]),c("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),c("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),c("onBeforeInput",["compositionend","keypress","textInput","paste"]),c("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Fo="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(" "),Ty=new Set("cancel close invalid load scroll toggle".split(" ").concat(Fo));function xf(e,n,o){var l=e.type||"unknown-event";e.currentTarget=o,ue(l,n,void 0,e),e.currentTarget=null}function Ef(e,n){n=(n&4)!==0;for(var o=0;o<e.length;o++){var l=e[o],u=l.event;l=l.listeners;e:{var h=void 0;if(n)for(var C=l.length-1;0<=C;C--){var k=l[C],P=k.instance,z=k.currentTarget;if(k=k.listener,P!==h&&u.isPropagationStopped())break e;xf(u,k,z),h=P}else for(C=0;C<l.length;C++){if(k=l[C],P=k.instance,z=k.currentTarget,k=k.listener,P!==h&&u.isPropagationStopped())break e;xf(u,k,z),h=P}}}if(ne)throw e=he,ne=!1,he=null,e}function Ze(e,n){var o=n[Jl];o===void 0&&(o=n[Jl]=new Set);var l=e+"__bubble";o.has(l)||(kf(n,e,2,!1),o.add(l))}function Wl(e,n,o){var l=0;n&&(l|=4),kf(o,e,l,n)}var Ki="_reactListening"+Math.random().toString(36).slice(2);function Uo(e){if(!e[Ki]){e[Ki]=!0,i.forEach(function(o){o!=="selectionchange"&&(Ty.has(o)||Wl(o,!1,e),Wl(o,!0,e))});var n=e.nodeType===9?e:e.ownerDocument;n===null||n[Ki]||(n[Ki]=!0,Wl("selectionchange",!1,n))}}function kf(e,n,o,l){switch(Yd(n)){case 1:var u=U1;break;case 4:u=z1;break;default:u=bl}o=u.bind(null,n,o,e),u=void 0,!ko||n!=="touchstart"&&n!=="touchmove"&&n!=="wheel"||(u=!0),l?u!==void 0?e.addEventListener(n,o,{capture:!0,passive:u}):e.addEventListener(n,o,!0):u!==void 0?e.addEventListener(n,o,{passive:u}):e.addEventListener(n,o,!1)}function Kl(e,n,o,l,u){var h=l;if((n&1)===0&&(n&2)===0&&l!==null)e:for(;;){if(l===null)return;var C=l.tag;if(C===3||C===4){var k=l.stateNode.containerInfo;if(k===u||k.nodeType===8&&k.parentNode===u)break;if(C===4)for(C=l.return;C!==null;){var P=C.tag;if((P===3||P===4)&&(P=C.stateNode.containerInfo,P===u||P.nodeType===8&&P.parentNode===u))return;C=C.return}for(;k!==null;){if(C=da(k),C===null)return;if(P=C.tag,P===5||P===6){l=h=C;continue e}k=k.parentNode}}l=l.return}Eo(function(){var z=h,Q=Da(o),J=[];e:{var K=_f.get(e);if(K!==void 0){var se=Al,de=e;switch(e){case"keypress":if(Ui(o)===0)break e;case"keydown":case"keyup":se=ry;break;case"focusin":de="focus",se=jl;break;case"focusout":de="blur",se=jl;break;case"beforeblur":case"afterblur":se=jl;break;case"click":if(o.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":se=Qd;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":se=H1;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":se=oy;break;case gf:case vf:case wf:se=Y1;break;case Cf:se=sy;break;case"scroll":se=B1;break;case"wheel":se=cy;break;case"copy":case"cut":case"paste":se=G1;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":se=Jd}var pe=(n&4)!==0,pt=!pe&&e==="scroll",M=pe?K!==null?K+"Capture":null:K;pe=[];for(var R=z,$;R!==null;){$=R;var te=$.stateNode;if($.tag===5&&te!==null&&($=te,M!==null&&(te=ia(R,M),te!=null&&pe.push(zo(R,te,$)))),pt)break;R=R.return}0<pe.length&&(K=new se(K,de,null,o,Q),J.push({event:K,listeners:pe}))}}if((n&7)===0){e:{if(K=e==="mouseover"||e==="pointerover",se=e==="mouseout"||e==="pointerout",K&&o!==_o&&(de=o.relatedTarget||o.fromElement)&&(da(de)||de[mn]))break e;if((se||K)&&(K=Q.window===Q?Q:(K=Q.ownerDocument)?K.defaultView||K.parentWindow:window,se?(de=o.relatedTarget||o.toElement,se=z,de=de?da(de):null,de!==null&&(pt=fe(de),de!==pt||de.tag!==5&&de.tag!==6)&&(de=null)):(se=null,de=z),se!==de)){if(pe=Qd,te="onMouseLeave",M="onMouseEnter",R="mouse",(e==="pointerout"||e==="pointerover")&&(pe=Jd,te="onPointerLeave",M="onPointerEnter",R="pointer"),pt=se==null?K:Ha(se),$=de==null?K:Ha(de),K=new pe(te,R+"leave",se,o,Q),K.target=pt,K.relatedTarget=$,te=null,da(Q)===z&&(pe=new pe(M,R+"enter",de,o,Q),pe.target=$,pe.relatedTarget=pt,te=pe),pt=te,se&&de)t:{for(pe=se,M=de,R=0,$=pe;$;$=Ba($))R++;for($=0,te=M;te;te=Ba(te))$++;for(;0<R-$;)pe=Ba(pe),R--;for(;0<$-R;)M=Ba(M),$--;for(;R--;){if(pe===M||M!==null&&pe===M.alternate)break t;pe=Ba(pe),M=Ba(M)}pe=null}else pe=null;se!==null&&Tf(J,K,se,pe,!1),de!==null&&pt!==null&&Tf(J,pt,de,pe,!0)}}e:{if(K=z?Ha(z):window,se=K.nodeName&&K.nodeName.toLowerCase(),se==="select"||se==="input"&&K.type==="file")var me=yy;else if(af(K))if(sf)me=Cy;else{me=vy;var Se=gy}else(se=K.nodeName)&&se.toLowerCase()==="input"&&(K.type==="checkbox"||K.type==="radio")&&(me=wy);if(me&&(me=me(e,z))){of(J,me,o,Q);break e}Se&&Se(e,K,z),e==="focusout"&&(Se=K._wrapperState)&&Se.controlled&&K.type==="number"&&dt(K,"number",K.value)}switch(Se=z?Ha(z):window,e){case"focusin":(af(Se)||Se.contentEditable==="true")&&(Ua=Se,Ul=z,Oo=null);break;case"focusout":Oo=Ul=Ua=null;break;case"mousedown":zl=!0;break;case"contextmenu":case"mouseup":case"dragend":zl=!1,mf(J,o,Q);break;case"selectionchange":if(xy)break;case"keydown":case"keyup":mf(J,o,Q)}var xe;if(Dl)e:{switch(e){case"compositionstart":var Ie="onCompositionStart";break e;case"compositionend":Ie="onCompositionEnd";break e;case"compositionupdate":Ie="onCompositionUpdate";break e}Ie=void 0}else Fa?rf(e,o)&&(Ie="onCompositionEnd"):e==="keydown"&&o.keyCode===229&&(Ie="onCompositionStart");Ie&&(Xd&&o.locale!=="ko"&&(Fa||Ie!=="onCompositionStart"?Ie==="onCompositionEnd"&&Fa&&(xe=qd()):(Dn=Q,Rl="value"in Dn?Dn.value:Dn.textContent,Fa=!0)),Se=Yi(z,Ie),0<Se.length&&(Ie=new Zd(Ie,e,null,o,Q),J.push({event:Ie,listeners:Se}),xe?Ie.data=xe:(xe=nf(o),xe!==null&&(Ie.data=xe)))),(xe=dy?fy(e,o):py(e,o))&&(z=Yi(z,"onBeforeInput"),0<z.length&&(Q=new Zd("onBeforeInput","beforeinput",null,o,Q),J.push({event:Q,listeners:z}),Q.data=xe))}Ef(J,n)})}function zo(e,n,o){return{instance:e,listener:n,currentTarget:o}}function Yi(e,n){for(var o=n+"Capture",l=[];e!==null;){var u=e,h=u.stateNode;u.tag===5&&h!==null&&(u=h,h=ia(e,o),h!=null&&l.unshift(zo(e,h,u)),h=ia(e,n),h!=null&&l.push(zo(e,h,u))),e=e.return}return l}function Ba(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function Tf(e,n,o,l,u){for(var h=n._reactName,C=[];o!==null&&o!==l;){var k=o,P=k.alternate,z=k.stateNode;if(P!==null&&P===l)break;k.tag===5&&z!==null&&(k=z,u?(P=ia(o,h),P!=null&&C.unshift(zo(o,P,k))):u||(P=ia(o,h),P!=null&&C.push(zo(o,P,k)))),o=o.return}C.length!==0&&e.push({event:n,listeners:C})}var Iy=/\r\n?/g,by=/\u0000|\uFFFD/g;function If(e){return(typeof e=="string"?e:""+e).replace(Iy,`
`).replace(by,"")}function qi(e,n,o){if(n=If(n),If(e)!==n&&o)throw Error(a(425))}function Gi(){}var Yl=null,ql=null;function Gl(e,n){return e==="textarea"||e==="noscript"||typeof n.children=="string"||typeof n.children=="number"||typeof n.dangerouslySetInnerHTML=="object"&&n.dangerouslySetInnerHTML!==null&&n.dangerouslySetInnerHTML.__html!=null}var Ql=typeof setTimeout=="function"?setTimeout:void 0,Py=typeof clearTimeout=="function"?clearTimeout:void 0,bf=typeof Promise=="function"?Promise:void 0,Ry=typeof queueMicrotask=="function"?queueMicrotask:typeof bf<"u"?function(e){return bf.resolve(null).then(e).catch(Ay)}:Ql;function Ay(e){setTimeout(function(){throw e})}function Zl(e,n){var o=n,l=0;do{var u=o.nextSibling;if(e.removeChild(o),u&&u.nodeType===8)if(o=u.data,o==="/$"){if(l===0){e.removeChild(u),Ao(n);return}l--}else o!=="$"&&o!=="$?"&&o!=="$!"||l++;o=u}while(o);Ao(n)}function On(e){for(;e!=null;e=e.nextSibling){var n=e.nodeType;if(n===1||n===3)break;if(n===8){if(n=e.data,n==="$"||n==="$!"||n==="$?")break;if(n==="/$")return null}}return e}function Pf(e){e=e.previousSibling;for(var n=0;e;){if(e.nodeType===8){var o=e.data;if(o==="$"||o==="$!"||o==="$?"){if(n===0)return e;n--}else o==="/$"&&n++}e=e.previousSibling}return null}var Va=Math.random().toString(36).slice(2),Zr="__reactFiber$"+Va,Bo="__reactProps$"+Va,mn="__reactContainer$"+Va,Jl="__reactEvents$"+Va,Ny="__reactListeners$"+Va,Ly="__reactHandles$"+Va;function da(e){var n=e[Zr];if(n)return n;for(var o=e.parentNode;o;){if(n=o[mn]||o[Zr]){if(o=n.alternate,n.child!==null||o!==null&&o.child!==null)for(e=Pf(e);e!==null;){if(o=e[Zr])return o;e=Pf(e)}return n}e=o,o=e.parentNode}return null}function Vo(e){return e=e[Zr]||e[mn],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Ha(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(a(33))}function Qi(e){return e[Bo]||null}var Xl=[],Wa=-1;function Fn(e){return{current:e}}function Je(e){0>Wa||(e.current=Xl[Wa],Xl[Wa]=null,Wa--)}function Qe(e,n){Wa++,Xl[Wa]=e.current,e.current=n}var Un={},$t=Fn(Un),Xt=Fn(!1),fa=Un;function Ka(e,n){var o=e.type.contextTypes;if(!o)return Un;var l=e.stateNode;if(l&&l.__reactInternalMemoizedUnmaskedChildContext===n)return l.__reactInternalMemoizedMaskedChildContext;var u={},h;for(h in o)u[h]=n[h];return l&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=u),u}function er(e){return e=e.childContextTypes,e!=null}function Zi(){Je(Xt),Je($t)}function Rf(e,n,o){if($t.current!==Un)throw Error(a(168));Qe($t,n),Qe(Xt,o)}function Af(e,n,o){var l=e.stateNode;if(n=n.childContextTypes,typeof l.getChildContext!="function")return o;l=l.getChildContext();for(var u in l)if(!(u in n))throw Error(a(108,Fe(e)||"Unknown",u));return X({},o,l)}function Ji(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Un,fa=$t.current,Qe($t,e),Qe(Xt,Xt.current),!0}function Nf(e,n,o){var l=e.stateNode;if(!l)throw Error(a(169));o?(e=Af(e,n,fa),l.__reactInternalMemoizedMergedChildContext=e,Je(Xt),Je($t),Qe($t,e)):Je(Xt),Qe(Xt,o)}var yn=null,Xi=!1,ec=!1;function Lf(e){yn===null?yn=[e]:yn.push(e)}function jy(e){Xi=!0,Lf(e)}function zn(){if(!ec&&yn!==null){ec=!0;var e=0,n=We;try{var o=yn;for(We=1;e<o.length;e++){var l=o[e];do l=l(!0);while(l!==null)}yn=null,Xi=!1}catch(u){throw yn!==null&&(yn=yn.slice(e+1)),ft(Ir,zn),u}finally{We=n,ec=!1}}return null}var Ya=[],qa=0,es=null,ts=0,br=[],Pr=0,pa=null,gn=1,vn="";function ha(e,n){Ya[qa++]=ts,Ya[qa++]=es,es=e,ts=n}function jf(e,n,o){br[Pr++]=gn,br[Pr++]=vn,br[Pr++]=pa,pa=e;var l=gn;e=vn;var u=32-qe(l)-1;l&=~(1<<u),o+=1;var h=32-qe(n)+u;if(30<h){var C=u-u%5;h=(l&(1<<C)-1).toString(32),l>>=C,u-=C,gn=1<<32-qe(n)+u|o<<u|l,vn=h+e}else gn=1<<h|o<<u|l,vn=e}function tc(e){e.return!==null&&(ha(e,1),jf(e,1,0))}function rc(e){for(;e===es;)es=Ya[--qa],Ya[qa]=null,ts=Ya[--qa],Ya[qa]=null;for(;e===pa;)pa=br[--Pr],br[Pr]=null,vn=br[--Pr],br[Pr]=null,gn=br[--Pr],br[Pr]=null}var mr=null,yr=null,rt=!1,Ur=null;function Mf(e,n){var o=Lr(5,null,null,0);o.elementType="DELETED",o.stateNode=n,o.return=e,n=e.deletions,n===null?(e.deletions=[o],e.flags|=16):n.push(o)}function Df(e,n){switch(e.tag){case 5:var o=e.type;return n=n.nodeType!==1||o.toLowerCase()!==n.nodeName.toLowerCase()?null:n,n!==null?(e.stateNode=n,mr=e,yr=On(n.firstChild),!0):!1;case 6:return n=e.pendingProps===""||n.nodeType!==3?null:n,n!==null?(e.stateNode=n,mr=e,yr=null,!0):!1;case 13:return n=n.nodeType!==8?null:n,n!==null?(o=pa!==null?{id:gn,overflow:vn}:null,e.memoizedState={dehydrated:n,treeContext:o,retryLane:1073741824},o=Lr(18,null,null,0),o.stateNode=n,o.return=e,e.child=o,mr=e,yr=null,!0):!1;default:return!1}}function nc(e){return(e.mode&1)!==0&&(e.flags&128)===0}function ac(e){if(rt){var n=yr;if(n){var o=n;if(!Df(e,n)){if(nc(e))throw Error(a(418));n=On(o.nextSibling);var l=mr;n&&Df(e,n)?Mf(l,o):(e.flags=e.flags&-4097|2,rt=!1,mr=e)}}else{if(nc(e))throw Error(a(418));e.flags=e.flags&-4097|2,rt=!1,mr=e}}}function $f(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;mr=e}function rs(e){if(e!==mr)return!1;if(!rt)return $f(e),rt=!0,!1;var n;if((n=e.tag!==3)&&!(n=e.tag!==5)&&(n=e.type,n=n!=="head"&&n!=="body"&&!Gl(e.type,e.memoizedProps)),n&&(n=yr)){if(nc(e))throw Of(),Error(a(418));for(;n;)Mf(e,n),n=On(n.nextSibling)}if($f(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(a(317));e:{for(e=e.nextSibling,n=0;e;){if(e.nodeType===8){var o=e.data;if(o==="/$"){if(n===0){yr=On(e.nextSibling);break e}n--}else o!=="$"&&o!=="$!"&&o!=="$?"||n++}e=e.nextSibling}yr=null}}else yr=mr?On(e.stateNode.nextSibling):null;return!0}function Of(){for(var e=yr;e;)e=On(e.nextSibling)}function Ga(){yr=mr=null,rt=!1}function oc(e){Ur===null?Ur=[e]:Ur.push(e)}var My=O.ReactCurrentBatchConfig;function Ho(e,n,o){if(e=o.ref,e!==null&&typeof e!="function"&&typeof e!="object"){if(o._owner){if(o=o._owner,o){if(o.tag!==1)throw Error(a(309));var l=o.stateNode}if(!l)throw Error(a(147,e));var u=l,h=""+e;return n!==null&&n.ref!==null&&typeof n.ref=="function"&&n.ref._stringRef===h?n.ref:(n=function(C){var k=u.refs;C===null?delete k[h]:k[h]=C},n._stringRef=h,n)}if(typeof e!="string")throw Error(a(284));if(!o._owner)throw Error(a(290,e))}return e}function ns(e,n){throw e=Object.prototype.toString.call(n),Error(a(31,e==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":e))}function Ff(e){var n=e._init;return n(e._payload)}function Uf(e){function n(M,R){if(e){var $=M.deletions;$===null?(M.deletions=[R],M.flags|=16):$.push(R)}}function o(M,R){if(!e)return null;for(;R!==null;)n(M,R),R=R.sibling;return null}function l(M,R){for(M=new Map;R!==null;)R.key!==null?M.set(R.key,R):M.set(R.index,R),R=R.sibling;return M}function u(M,R){return M=Gn(M,R),M.index=0,M.sibling=null,M}function h(M,R,$){return M.index=$,e?($=M.alternate,$!==null?($=$.index,$<R?(M.flags|=2,R):$):(M.flags|=2,R)):(M.flags|=1048576,R)}function C(M){return e&&M.alternate===null&&(M.flags|=2),M}function k(M,R,$,te){return R===null||R.tag!==6?(R=Qc($,M.mode,te),R.return=M,R):(R=u(R,$),R.return=M,R)}function P(M,R,$,te){var me=$.type;return me===x?Q(M,R,$.props.children,te,$.key):R!==null&&(R.elementType===me||typeof me=="object"&&me!==null&&me.$$typeof===ke&&Ff(me)===R.type)?(te=u(R,$.props),te.ref=Ho(M,R,$),te.return=M,te):(te=Is($.type,$.key,$.props,null,M.mode,te),te.ref=Ho(M,R,$),te.return=M,te)}function z(M,R,$,te){return R===null||R.tag!==4||R.stateNode.containerInfo!==$.containerInfo||R.stateNode.implementation!==$.implementation?(R=Zc($,M.mode,te),R.return=M,R):(R=u(R,$.children||[]),R.return=M,R)}function Q(M,R,$,te,me){return R===null||R.tag!==7?(R=Sa($,M.mode,te,me),R.return=M,R):(R=u(R,$),R.return=M,R)}function J(M,R,$){if(typeof R=="string"&&R!==""||typeof R=="number")return R=Qc(""+R,M.mode,$),R.return=M,R;if(typeof R=="object"&&R!==null){switch(R.$$typeof){case j:return $=Is(R.type,R.key,R.props,null,M.mode,$),$.ref=Ho(M,null,R),$.return=M,$;case q:return R=Zc(R,M.mode,$),R.return=M,R;case ke:var te=R._init;return J(M,te(R._payload),$)}if(Rt(R)||ae(R))return R=Sa(R,M.mode,$,null),R.return=M,R;ns(M,R)}return null}function K(M,R,$,te){var me=R!==null?R.key:null;if(typeof $=="string"&&$!==""||typeof $=="number")return me!==null?null:k(M,R,""+$,te);if(typeof $=="object"&&$!==null){switch($.$$typeof){case j:return $.key===me?P(M,R,$,te):null;case q:return $.key===me?z(M,R,$,te):null;case ke:return me=$._init,K(M,R,me($._payload),te)}if(Rt($)||ae($))return me!==null?null:Q(M,R,$,te,null);ns(M,$)}return null}function se(M,R,$,te,me){if(typeof te=="string"&&te!==""||typeof te=="number")return M=M.get($)||null,k(R,M,""+te,me);if(typeof te=="object"&&te!==null){switch(te.$$typeof){case j:return M=M.get(te.key===null?$:te.key)||null,P(R,M,te,me);case q:return M=M.get(te.key===null?$:te.key)||null,z(R,M,te,me);case ke:var Se=te._init;return se(M,R,$,Se(te._payload),me)}if(Rt(te)||ae(te))return M=M.get($)||null,Q(R,M,te,me,null);ns(R,te)}return null}function de(M,R,$,te){for(var me=null,Se=null,xe=R,Ie=R=0,Tt=null;xe!==null&&Ie<$.length;Ie++){xe.index>Ie?(Tt=xe,xe=null):Tt=xe.sibling;var ze=K(M,xe,$[Ie],te);if(ze===null){xe===null&&(xe=Tt);break}e&&xe&&ze.alternate===null&&n(M,xe),R=h(ze,R,Ie),Se===null?me=ze:Se.sibling=ze,Se=ze,xe=Tt}if(Ie===$.length)return o(M,xe),rt&&ha(M,Ie),me;if(xe===null){for(;Ie<$.length;Ie++)xe=J(M,$[Ie],te),xe!==null&&(R=h(xe,R,Ie),Se===null?me=xe:Se.sibling=xe,Se=xe);return rt&&ha(M,Ie),me}for(xe=l(M,xe);Ie<$.length;Ie++)Tt=se(xe,M,Ie,$[Ie],te),Tt!==null&&(e&&Tt.alternate!==null&&xe.delete(Tt.key===null?Ie:Tt.key),R=h(Tt,R,Ie),Se===null?me=Tt:Se.sibling=Tt,Se=Tt);return e&&xe.forEach(function(Qn){return n(M,Qn)}),rt&&ha(M,Ie),me}function pe(M,R,$,te){var me=ae($);if(typeof me!="function")throw Error(a(150));if($=me.call($),$==null)throw Error(a(151));for(var Se=me=null,xe=R,Ie=R=0,Tt=null,ze=$.next();xe!==null&&!ze.done;Ie++,ze=$.next()){xe.index>Ie?(Tt=xe,xe=null):Tt=xe.sibling;var Qn=K(M,xe,ze.value,te);if(Qn===null){xe===null&&(xe=Tt);break}e&&xe&&Qn.alternate===null&&n(M,xe),R=h(Qn,R,Ie),Se===null?me=Qn:Se.sibling=Qn,Se=Qn,xe=Tt}if(ze.done)return o(M,xe),rt&&ha(M,Ie),me;if(xe===null){for(;!ze.done;Ie++,ze=$.next())ze=J(M,ze.value,te),ze!==null&&(R=h(ze,R,Ie),Se===null?me=ze:Se.sibling=ze,Se=ze);return rt&&ha(M,Ie),me}for(xe=l(M,xe);!ze.done;Ie++,ze=$.next())ze=se(xe,M,Ie,ze.value,te),ze!==null&&(e&&ze.alternate!==null&&xe.delete(ze.key===null?Ie:ze.key),R=h(ze,R,Ie),Se===null?me=ze:Se.sibling=ze,Se=ze);return e&&xe.forEach(function(hg){return n(M,hg)}),rt&&ha(M,Ie),me}function pt(M,R,$,te){if(typeof $=="object"&&$!==null&&$.type===x&&$.key===null&&($=$.props.children),typeof $=="object"&&$!==null){switch($.$$typeof){case j:e:{for(var me=$.key,Se=R;Se!==null;){if(Se.key===me){if(me=$.type,me===x){if(Se.tag===7){o(M,Se.sibling),R=u(Se,$.props.children),R.return=M,M=R;break e}}else if(Se.elementType===me||typeof me=="object"&&me!==null&&me.$$typeof===ke&&Ff(me)===Se.type){o(M,Se.sibling),R=u(Se,$.props),R.ref=Ho(M,Se,$),R.return=M,M=R;break e}o(M,Se);break}else n(M,Se);Se=Se.sibling}$.type===x?(R=Sa($.props.children,M.mode,te,$.key),R.return=M,M=R):(te=Is($.type,$.key,$.props,null,M.mode,te),te.ref=Ho(M,R,$),te.return=M,M=te)}return C(M);case q:e:{for(Se=$.key;R!==null;){if(R.key===Se)if(R.tag===4&&R.stateNode.containerInfo===$.containerInfo&&R.stateNode.implementation===$.implementation){o(M,R.sibling),R=u(R,$.children||[]),R.return=M,M=R;break e}else{o(M,R);break}else n(M,R);R=R.sibling}R=Zc($,M.mode,te),R.return=M,M=R}return C(M);case ke:return Se=$._init,pt(M,R,Se($._payload),te)}if(Rt($))return de(M,R,$,te);if(ae($))return pe(M,R,$,te);ns(M,$)}return typeof $=="string"&&$!==""||typeof $=="number"?($=""+$,R!==null&&R.tag===6?(o(M,R.sibling),R=u(R,$),R.return=M,M=R):(o(M,R),R=Qc($,M.mode,te),R.return=M,M=R),C(M)):o(M,R)}return pt}var Qa=Uf(!0),zf=Uf(!1),as=Fn(null),os=null,Za=null,ic=null;function sc(){ic=Za=os=null}function lc(e){var n=as.current;Je(as),e._currentValue=n}function cc(e,n,o){for(;e!==null;){var l=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,l!==null&&(l.childLanes|=n)):l!==null&&(l.childLanes&n)!==n&&(l.childLanes|=n),e===o)break;e=e.return}}function Ja(e,n){os=e,ic=Za=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(tr=!0),e.firstContext=null)}function Rr(e){var n=e._currentValue;if(ic!==e)if(e={context:e,memoizedValue:n,next:null},Za===null){if(os===null)throw Error(a(308));Za=e,os.dependencies={lanes:0,firstContext:e}}else Za=Za.next=e;return n}var ma=null;function uc(e){ma===null?ma=[e]:ma.push(e)}function Bf(e,n,o,l){var u=n.interleaved;return u===null?(o.next=o,uc(n)):(o.next=u.next,u.next=o),n.interleaved=o,wn(e,l)}function wn(e,n){e.lanes|=n;var o=e.alternate;for(o!==null&&(o.lanes|=n),o=e,e=e.return;e!==null;)e.childLanes|=n,o=e.alternate,o!==null&&(o.childLanes|=n),o=e,e=e.return;return o.tag===3?o.stateNode:null}var Bn=!1;function dc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Vf(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Cn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function Vn(e,n,o){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(Ue&2)!==0){var u=l.pending;return u===null?n.next=n:(n.next=u.next,u.next=n),l.pending=n,wn(e,o)}return u=l.interleaved,u===null?(n.next=n,uc(l)):(n.next=u.next,u.next=n),l.interleaved=n,wn(e,o)}function is(e,n,o){if(n=n.updateQueue,n!==null&&(n=n.shared,(o&4194240)!==0)){var l=n.lanes;l&=e.pendingLanes,o|=l,n.lanes=o,kl(e,o)}}function Hf(e,n){var o=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,o===l)){var u=null,h=null;if(o=o.firstBaseUpdate,o!==null){do{var C={eventTime:o.eventTime,lane:o.lane,tag:o.tag,payload:o.payload,callback:o.callback,next:null};h===null?u=h=C:h=h.next=C,o=o.next}while(o!==null);h===null?u=h=n:h=h.next=n}else u=h=n;o={baseState:l.baseState,firstBaseUpdate:u,lastBaseUpdate:h,shared:l.shared,effects:l.effects},e.updateQueue=o;return}e=o.lastBaseUpdate,e===null?o.firstBaseUpdate=n:e.next=n,o.lastBaseUpdate=n}function ss(e,n,o,l){var u=e.updateQueue;Bn=!1;var h=u.firstBaseUpdate,C=u.lastBaseUpdate,k=u.shared.pending;if(k!==null){u.shared.pending=null;var P=k,z=P.next;P.next=null,C===null?h=z:C.next=z,C=P;var Q=e.alternate;Q!==null&&(Q=Q.updateQueue,k=Q.lastBaseUpdate,k!==C&&(k===null?Q.firstBaseUpdate=z:k.next=z,Q.lastBaseUpdate=P))}if(h!==null){var J=u.baseState;C=0,Q=z=P=null,k=h;do{var K=k.lane,se=k.eventTime;if((l&K)===K){Q!==null&&(Q=Q.next={eventTime:se,lane:0,tag:k.tag,payload:k.payload,callback:k.callback,next:null});e:{var de=e,pe=k;switch(K=n,se=o,pe.tag){case 1:if(de=pe.payload,typeof de=="function"){J=de.call(se,J,K);break e}J=de;break e;case 3:de.flags=de.flags&-65537|128;case 0:if(de=pe.payload,K=typeof de=="function"?de.call(se,J,K):de,K==null)break e;J=X({},J,K);break e;case 2:Bn=!0}}k.callback!==null&&k.lane!==0&&(e.flags|=64,K=u.effects,K===null?u.effects=[k]:K.push(k))}else se={eventTime:se,lane:K,tag:k.tag,payload:k.payload,callback:k.callback,next:null},Q===null?(z=Q=se,P=J):Q=Q.next=se,C|=K;if(k=k.next,k===null){if(k=u.shared.pending,k===null)break;K=k,k=K.next,K.next=null,u.lastBaseUpdate=K,u.shared.pending=null}}while(!0);if(Q===null&&(P=J),u.baseState=P,u.firstBaseUpdate=z,u.lastBaseUpdate=Q,n=u.shared.interleaved,n!==null){u=n;do C|=u.lane,u=u.next;while(u!==n)}else h===null&&(u.shared.lanes=0);va|=C,e.lanes=C,e.memoizedState=J}}function Wf(e,n,o){if(e=n.effects,n.effects=null,e!==null)for(n=0;n<e.length;n++){var l=e[n],u=l.callback;if(u!==null){if(l.callback=null,l=o,typeof u!="function")throw Error(a(191,u));u.call(l)}}}var Wo={},Jr=Fn(Wo),Ko=Fn(Wo),Yo=Fn(Wo);function ya(e){if(e===Wo)throw Error(a(174));return e}function fc(e,n){switch(Qe(Yo,n),Qe(Ko,e),Qe(Jr,Wo),e=n.nodeType,e){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:In(null,"");break;default:e=e===8?n.parentNode:n,n=e.namespaceURI||null,e=e.tagName,n=In(n,e)}Je(Jr),Qe(Jr,n)}function Xa(){Je(Jr),Je(Ko),Je(Yo)}function Kf(e){ya(Yo.current);var n=ya(Jr.current),o=In(n,e.type);n!==o&&(Qe(Ko,e),Qe(Jr,o))}function pc(e){Ko.current===e&&(Je(Jr),Je(Ko))}var ot=Fn(0);function ls(e){for(var n=e;n!==null;){if(n.tag===13){var o=n.memoizedState;if(o!==null&&(o=o.dehydrated,o===null||o.data==="$?"||o.data==="$!"))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if((n.flags&128)!==0)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var hc=[];function mc(){for(var e=0;e<hc.length;e++)hc[e]._workInProgressVersionPrimary=null;hc.length=0}var cs=O.ReactCurrentDispatcher,yc=O.ReactCurrentBatchConfig,ga=0,it=null,vt=null,Et=null,us=!1,qo=!1,Go=0,Dy=0;function Ot(){throw Error(a(321))}function gc(e,n){if(n===null)return!1;for(var o=0;o<n.length&&o<e.length;o++)if(!Fr(e[o],n[o]))return!1;return!0}function vc(e,n,o,l,u,h){if(ga=h,it=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,cs.current=e===null||e.memoizedState===null?Uy:zy,e=o(l,u),qo){h=0;do{if(qo=!1,Go=0,25<=h)throw Error(a(301));h+=1,Et=vt=null,n.updateQueue=null,cs.current=By,e=o(l,u)}while(qo)}if(cs.current=ps,n=vt!==null&&vt.next!==null,ga=0,Et=vt=it=null,us=!1,n)throw Error(a(300));return e}function wc(){var e=Go!==0;return Go=0,e}function Xr(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Et===null?it.memoizedState=Et=e:Et=Et.next=e,Et}function Ar(){if(vt===null){var e=it.alternate;e=e!==null?e.memoizedState:null}else e=vt.next;var n=Et===null?it.memoizedState:Et.next;if(n!==null)Et=n,vt=e;else{if(e===null)throw Error(a(310));vt=e,e={memoizedState:vt.memoizedState,baseState:vt.baseState,baseQueue:vt.baseQueue,queue:vt.queue,next:null},Et===null?it.memoizedState=Et=e:Et=Et.next=e}return Et}function Qo(e,n){return typeof n=="function"?n(e):n}function Cc(e){var n=Ar(),o=n.queue;if(o===null)throw Error(a(311));o.lastRenderedReducer=e;var l=vt,u=l.baseQueue,h=o.pending;if(h!==null){if(u!==null){var C=u.next;u.next=h.next,h.next=C}l.baseQueue=u=h,o.pending=null}if(u!==null){h=u.next,l=l.baseState;var k=C=null,P=null,z=h;do{var Q=z.lane;if((ga&Q)===Q)P!==null&&(P=P.next={lane:0,action:z.action,hasEagerState:z.hasEagerState,eagerState:z.eagerState,next:null}),l=z.hasEagerState?z.eagerState:e(l,z.action);else{var J={lane:Q,action:z.action,hasEagerState:z.hasEagerState,eagerState:z.eagerState,next:null};P===null?(k=P=J,C=l):P=P.next=J,it.lanes|=Q,va|=Q}z=z.next}while(z!==null&&z!==h);P===null?C=l:P.next=k,Fr(l,n.memoizedState)||(tr=!0),n.memoizedState=l,n.baseState=C,n.baseQueue=P,o.lastRenderedState=l}if(e=o.interleaved,e!==null){u=e;do h=u.lane,it.lanes|=h,va|=h,u=u.next;while(u!==e)}else u===null&&(o.lanes=0);return[n.memoizedState,o.dispatch]}function _c(e){var n=Ar(),o=n.queue;if(o===null)throw Error(a(311));o.lastRenderedReducer=e;var l=o.dispatch,u=o.pending,h=n.memoizedState;if(u!==null){o.pending=null;var C=u=u.next;do h=e(h,C.action),C=C.next;while(C!==u);Fr(h,n.memoizedState)||(tr=!0),n.memoizedState=h,n.baseQueue===null&&(n.baseState=h),o.lastRenderedState=h}return[h,l]}function Yf(){}function qf(e,n){var o=it,l=Ar(),u=n(),h=!Fr(l.memoizedState,u);if(h&&(l.memoizedState=u,tr=!0),l=l.queue,Sc(Zf.bind(null,o,l,e),[e]),l.getSnapshot!==n||h||Et!==null&&Et.memoizedState.tag&1){if(o.flags|=2048,Zo(9,Qf.bind(null,o,l,u,n),void 0,null),kt===null)throw Error(a(349));(ga&30)!==0||Gf(o,n,u)}return u}function Gf(e,n,o){e.flags|=16384,e={getSnapshot:n,value:o},n=it.updateQueue,n===null?(n={lastEffect:null,stores:null},it.updateQueue=n,n.stores=[e]):(o=n.stores,o===null?n.stores=[e]:o.push(e))}function Qf(e,n,o,l){n.value=o,n.getSnapshot=l,Jf(n)&&Xf(e)}function Zf(e,n,o){return o(function(){Jf(n)&&Xf(e)})}function Jf(e){var n=e.getSnapshot;e=e.value;try{var o=n();return!Fr(e,o)}catch{return!0}}function Xf(e){var n=wn(e,1);n!==null&&Hr(n,e,1,-1)}function ep(e){var n=Xr();return typeof e=="function"&&(e=e()),n.memoizedState=n.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Qo,lastRenderedState:e},n.queue=e,e=e.dispatch=Fy.bind(null,it,e),[n.memoizedState,e]}function Zo(e,n,o,l){return e={tag:e,create:n,destroy:o,deps:l,next:null},n=it.updateQueue,n===null?(n={lastEffect:null,stores:null},it.updateQueue=n,n.lastEffect=e.next=e):(o=n.lastEffect,o===null?n.lastEffect=e.next=e:(l=o.next,o.next=e,e.next=l,n.lastEffect=e)),e}function tp(){return Ar().memoizedState}function ds(e,n,o,l){var u=Xr();it.flags|=e,u.memoizedState=Zo(1|n,o,void 0,l===void 0?null:l)}function fs(e,n,o,l){var u=Ar();l=l===void 0?null:l;var h=void 0;if(vt!==null){var C=vt.memoizedState;if(h=C.destroy,l!==null&&gc(l,C.deps)){u.memoizedState=Zo(n,o,h,l);return}}it.flags|=e,u.memoizedState=Zo(1|n,o,h,l)}function rp(e,n){return ds(8390656,8,e,n)}function Sc(e,n){return fs(2048,8,e,n)}function np(e,n){return fs(4,2,e,n)}function ap(e,n){return fs(4,4,e,n)}function op(e,n){if(typeof n=="function")return e=e(),n(e),function(){n(null)};if(n!=null)return e=e(),n.current=e,function(){n.current=null}}function ip(e,n,o){return o=o!=null?o.concat([e]):null,fs(4,4,op.bind(null,n,e),o)}function xc(){}function sp(e,n){var o=Ar();n=n===void 0?null:n;var l=o.memoizedState;return l!==null&&n!==null&&gc(n,l[1])?l[0]:(o.memoizedState=[e,n],e)}function lp(e,n){var o=Ar();n=n===void 0?null:n;var l=o.memoizedState;return l!==null&&n!==null&&gc(n,l[1])?l[0]:(e=e(),o.memoizedState=[e,n],e)}function cp(e,n,o){return(ga&21)===0?(e.baseState&&(e.baseState=!1,tr=!0),e.memoizedState=o):(Fr(o,n)||(o=Od(),it.lanes|=o,va|=o,e.baseState=!0),n)}function $y(e,n){var o=We;We=o!==0&&4>o?o:4,e(!0);var l=yc.transition;yc.transition={};try{e(!1),n()}finally{We=o,yc.transition=l}}function up(){return Ar().memoizedState}function Oy(e,n,o){var l=Yn(e);if(o={lane:l,action:o,hasEagerState:!1,eagerState:null,next:null},dp(e))fp(n,o);else if(o=Bf(e,n,o,l),o!==null){var u=Kt();Hr(o,e,l,u),pp(o,n,l)}}function Fy(e,n,o){var l=Yn(e),u={lane:l,action:o,hasEagerState:!1,eagerState:null,next:null};if(dp(e))fp(n,u);else{var h=e.alternate;if(e.lanes===0&&(h===null||h.lanes===0)&&(h=n.lastRenderedReducer,h!==null))try{var C=n.lastRenderedState,k=h(C,o);if(u.hasEagerState=!0,u.eagerState=k,Fr(k,C)){var P=n.interleaved;P===null?(u.next=u,uc(n)):(u.next=P.next,P.next=u),n.interleaved=u;return}}catch{}finally{}o=Bf(e,n,u,l),o!==null&&(u=Kt(),Hr(o,e,l,u),pp(o,n,l))}}function dp(e){var n=e.alternate;return e===it||n!==null&&n===it}function fp(e,n){qo=us=!0;var o=e.pending;o===null?n.next=n:(n.next=o.next,o.next=n),e.pending=n}function pp(e,n,o){if((o&4194240)!==0){var l=n.lanes;l&=e.pendingLanes,o|=l,n.lanes=o,kl(e,o)}}var ps={readContext:Rr,useCallback:Ot,useContext:Ot,useEffect:Ot,useImperativeHandle:Ot,useInsertionEffect:Ot,useLayoutEffect:Ot,useMemo:Ot,useReducer:Ot,useRef:Ot,useState:Ot,useDebugValue:Ot,useDeferredValue:Ot,useTransition:Ot,useMutableSource:Ot,useSyncExternalStore:Ot,useId:Ot,unstable_isNewReconciler:!1},Uy={readContext:Rr,useCallback:function(e,n){return Xr().memoizedState=[e,n===void 0?null:n],e},useContext:Rr,useEffect:rp,useImperativeHandle:function(e,n,o){return o=o!=null?o.concat([e]):null,ds(4194308,4,op.bind(null,n,e),o)},useLayoutEffect:function(e,n){return ds(4194308,4,e,n)},useInsertionEffect:function(e,n){return ds(4,2,e,n)},useMemo:function(e,n){var o=Xr();return n=n===void 0?null:n,e=e(),o.memoizedState=[e,n],e},useReducer:function(e,n,o){var l=Xr();return n=o!==void 0?o(n):n,l.memoizedState=l.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},l.queue=e,e=e.dispatch=Oy.bind(null,it,e),[l.memoizedState,e]},useRef:function(e){var n=Xr();return e={current:e},n.memoizedState=e},useState:ep,useDebugValue:xc,useDeferredValue:function(e){return Xr().memoizedState=e},useTransition:function(){var e=ep(!1),n=e[0];return e=$y.bind(null,e[1]),Xr().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,o){var l=it,u=Xr();if(rt){if(o===void 0)throw Error(a(407));o=o()}else{if(o=n(),kt===null)throw Error(a(349));(ga&30)!==0||Gf(l,n,o)}u.memoizedState=o;var h={value:o,getSnapshot:n};return u.queue=h,rp(Zf.bind(null,l,h,e),[e]),l.flags|=2048,Zo(9,Qf.bind(null,l,h,o,n),void 0,null),o},useId:function(){var e=Xr(),n=kt.identifierPrefix;if(rt){var o=vn,l=gn;o=(l&~(1<<32-qe(l)-1)).toString(32)+o,n=":"+n+"R"+o,o=Go++,0<o&&(n+="H"+o.toString(32)),n+=":"}else o=Dy++,n=":"+n+"r"+o.toString(32)+":";return e.memoizedState=n},unstable_isNewReconciler:!1},zy={readContext:Rr,useCallback:sp,useContext:Rr,useEffect:Sc,useImperativeHandle:ip,useInsertionEffect:np,useLayoutEffect:ap,useMemo:lp,useReducer:Cc,useRef:tp,useState:function(){return Cc(Qo)},useDebugValue:xc,useDeferredValue:function(e){var n=Ar();return cp(n,vt.memoizedState,e)},useTransition:function(){var e=Cc(Qo)[0],n=Ar().memoizedState;return[e,n]},useMutableSource:Yf,useSyncExternalStore:qf,useId:up,unstable_isNewReconciler:!1},By={readContext:Rr,useCallback:sp,useContext:Rr,useEffect:Sc,useImperativeHandle:ip,useInsertionEffect:np,useLayoutEffect:ap,useMemo:lp,useReducer:_c,useRef:tp,useState:function(){return _c(Qo)},useDebugValue:xc,useDeferredValue:function(e){var n=Ar();return vt===null?n.memoizedState=e:cp(n,vt.memoizedState,e)},useTransition:function(){var e=_c(Qo)[0],n=Ar().memoizedState;return[e,n]},useMutableSource:Yf,useSyncExternalStore:qf,useId:up,unstable_isNewReconciler:!1};function zr(e,n){if(e&&e.defaultProps){n=X({},n),e=e.defaultProps;for(var o in e)n[o]===void 0&&(n[o]=e[o]);return n}return n}function Ec(e,n,o,l){n=e.memoizedState,o=o(l,n),o=o==null?n:X({},n,o),e.memoizedState=o,e.lanes===0&&(e.updateQueue.baseState=o)}var hs={isMounted:function(e){return(e=e._reactInternals)?fe(e)===e:!1},enqueueSetState:function(e,n,o){e=e._reactInternals;var l=Kt(),u=Yn(e),h=Cn(l,u);h.payload=n,o!=null&&(h.callback=o),n=Vn(e,h,u),n!==null&&(Hr(n,e,u,l),is(n,e,u))},enqueueReplaceState:function(e,n,o){e=e._reactInternals;var l=Kt(),u=Yn(e),h=Cn(l,u);h.tag=1,h.payload=n,o!=null&&(h.callback=o),n=Vn(e,h,u),n!==null&&(Hr(n,e,u,l),is(n,e,u))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var o=Kt(),l=Yn(e),u=Cn(o,l);u.tag=2,n!=null&&(u.callback=n),n=Vn(e,u,l),n!==null&&(Hr(n,e,l,o),is(n,e,l))}};function hp(e,n,o,l,u,h,C){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(l,h,C):n.prototype&&n.prototype.isPureReactComponent?!$o(o,l)||!$o(u,h):!0}function mp(e,n,o){var l=!1,u=Un,h=n.contextType;return typeof h=="object"&&h!==null?h=Rr(h):(u=er(n)?fa:$t.current,l=n.contextTypes,h=(l=l!=null)?Ka(e,u):Un),n=new n(o,h),e.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=hs,e.stateNode=n,n._reactInternals=e,l&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=u,e.__reactInternalMemoizedMaskedChildContext=h),n}function yp(e,n,o,l){e=n.state,typeof n.componentWillReceiveProps=="function"&&n.componentWillReceiveProps(o,l),typeof n.UNSAFE_componentWillReceiveProps=="function"&&n.UNSAFE_componentWillReceiveProps(o,l),n.state!==e&&hs.enqueueReplaceState(n,n.state,null)}function kc(e,n,o,l){var u=e.stateNode;u.props=o,u.state=e.memoizedState,u.refs={},dc(e);var h=n.contextType;typeof h=="object"&&h!==null?u.context=Rr(h):(h=er(n)?fa:$t.current,u.context=Ka(e,h)),u.state=e.memoizedState,h=n.getDerivedStateFromProps,typeof h=="function"&&(Ec(e,n,h,o),u.state=e.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof u.getSnapshotBeforeUpdate=="function"||typeof u.UNSAFE_componentWillMount!="function"&&typeof u.componentWillMount!="function"||(n=u.state,typeof u.componentWillMount=="function"&&u.componentWillMount(),typeof u.UNSAFE_componentWillMount=="function"&&u.UNSAFE_componentWillMount(),n!==u.state&&hs.enqueueReplaceState(u,u.state,null),ss(e,o,u,l),u.state=e.memoizedState),typeof u.componentDidMount=="function"&&(e.flags|=4194308)}function eo(e,n){try{var o="",l=n;do o+=_e(l),l=l.return;while(l);var u=o}catch(h){u=`
Error generating stack: `+h.message+`
`+h.stack}return{value:e,source:n,stack:u,digest:null}}function Tc(e,n,o){return{value:e,source:null,stack:o??null,digest:n??null}}function Ic(e,n){try{console.error(n.value)}catch(o){setTimeout(function(){throw o})}}var Vy=typeof WeakMap=="function"?WeakMap:Map;function gp(e,n,o){o=Cn(-1,o),o.tag=3,o.payload={element:null};var l=n.value;return o.callback=function(){_s||(_s=!0,Bc=l),Ic(e,n)},o}function vp(e,n,o){o=Cn(-1,o),o.tag=3;var l=e.type.getDerivedStateFromError;if(typeof l=="function"){var u=n.value;o.payload=function(){return l(u)},o.callback=function(){Ic(e,n)}}var h=e.stateNode;return h!==null&&typeof h.componentDidCatch=="function"&&(o.callback=function(){Ic(e,n),typeof l!="function"&&(Wn===null?Wn=new Set([this]):Wn.add(this));var C=n.stack;this.componentDidCatch(n.value,{componentStack:C!==null?C:""})}),o}function wp(e,n,o){var l=e.pingCache;if(l===null){l=e.pingCache=new Vy;var u=new Set;l.set(n,u)}else u=l.get(n),u===void 0&&(u=new Set,l.set(n,u));u.has(o)||(u.add(o),e=ng.bind(null,e,n,o),n.then(e,e))}function Cp(e){do{var n;if((n=e.tag===13)&&(n=e.memoizedState,n=n!==null?n.dehydrated!==null:!0),n)return e;e=e.return}while(e!==null);return null}function _p(e,n,o,l,u){return(e.mode&1)===0?(e===n?e.flags|=65536:(e.flags|=128,o.flags|=131072,o.flags&=-52805,o.tag===1&&(o.alternate===null?o.tag=17:(n=Cn(-1,1),n.tag=2,Vn(o,n,1))),o.lanes|=1),e):(e.flags|=65536,e.lanes=u,e)}var Hy=O.ReactCurrentOwner,tr=!1;function Wt(e,n,o,l){n.child=e===null?zf(n,null,o,l):Qa(n,e.child,o,l)}function Sp(e,n,o,l,u){o=o.render;var h=n.ref;return Ja(n,u),l=vc(e,n,o,l,h,u),o=wc(),e!==null&&!tr?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~u,_n(e,n,u)):(rt&&o&&tc(n),n.flags|=1,Wt(e,n,l,u),n.child)}function xp(e,n,o,l,u){if(e===null){var h=o.type;return typeof h=="function"&&!Gc(h)&&h.defaultProps===void 0&&o.compare===null&&o.defaultProps===void 0?(n.tag=15,n.type=h,Ep(e,n,h,l,u)):(e=Is(o.type,null,l,n,n.mode,u),e.ref=n.ref,e.return=n,n.child=e)}if(h=e.child,(e.lanes&u)===0){var C=h.memoizedProps;if(o=o.compare,o=o!==null?o:$o,o(C,l)&&e.ref===n.ref)return _n(e,n,u)}return n.flags|=1,e=Gn(h,l),e.ref=n.ref,e.return=n,n.child=e}function Ep(e,n,o,l,u){if(e!==null){var h=e.memoizedProps;if($o(h,l)&&e.ref===n.ref)if(tr=!1,n.pendingProps=l=h,(e.lanes&u)!==0)(e.flags&131072)!==0&&(tr=!0);else return n.lanes=e.lanes,_n(e,n,u)}return bc(e,n,o,l,u)}function kp(e,n,o){var l=n.pendingProps,u=l.children,h=e!==null?e.memoizedState:null;if(l.mode==="hidden")if((n.mode&1)===0)n.memoizedState={baseLanes:0,cachePool:null,transitions:null},Qe(ro,gr),gr|=o;else{if((o&1073741824)===0)return e=h!==null?h.baseLanes|o:o,n.lanes=n.childLanes=1073741824,n.memoizedState={baseLanes:e,cachePool:null,transitions:null},n.updateQueue=null,Qe(ro,gr),gr|=e,null;n.memoizedState={baseLanes:0,cachePool:null,transitions:null},l=h!==null?h.baseLanes:o,Qe(ro,gr),gr|=l}else h!==null?(l=h.baseLanes|o,n.memoizedState=null):l=o,Qe(ro,gr),gr|=l;return Wt(e,n,u,o),n.child}function Tp(e,n){var o=n.ref;(e===null&&o!==null||e!==null&&e.ref!==o)&&(n.flags|=512,n.flags|=2097152)}function bc(e,n,o,l,u){var h=er(o)?fa:$t.current;return h=Ka(n,h),Ja(n,u),o=vc(e,n,o,l,h,u),l=wc(),e!==null&&!tr?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~u,_n(e,n,u)):(rt&&l&&tc(n),n.flags|=1,Wt(e,n,o,u),n.child)}function Ip(e,n,o,l,u){if(er(o)){var h=!0;Ji(n)}else h=!1;if(Ja(n,u),n.stateNode===null)ys(e,n),mp(n,o,l),kc(n,o,l,u),l=!0;else if(e===null){var C=n.stateNode,k=n.memoizedProps;C.props=k;var P=C.context,z=o.contextType;typeof z=="object"&&z!==null?z=Rr(z):(z=er(o)?fa:$t.current,z=Ka(n,z));var Q=o.getDerivedStateFromProps,J=typeof Q=="function"||typeof C.getSnapshotBeforeUpdate=="function";J||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(k!==l||P!==z)&&yp(n,C,l,z),Bn=!1;var K=n.memoizedState;C.state=K,ss(n,l,C,u),P=n.memoizedState,k!==l||K!==P||Xt.current||Bn?(typeof Q=="function"&&(Ec(n,o,Q,l),P=n.memoizedState),(k=Bn||hp(n,o,k,l,K,P,z))?(J||typeof C.UNSAFE_componentWillMount!="function"&&typeof C.componentWillMount!="function"||(typeof C.componentWillMount=="function"&&C.componentWillMount(),typeof C.UNSAFE_componentWillMount=="function"&&C.UNSAFE_componentWillMount()),typeof C.componentDidMount=="function"&&(n.flags|=4194308)):(typeof C.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=l,n.memoizedState=P),C.props=l,C.state=P,C.context=z,l=k):(typeof C.componentDidMount=="function"&&(n.flags|=4194308),l=!1)}else{C=n.stateNode,Vf(e,n),k=n.memoizedProps,z=n.type===n.elementType?k:zr(n.type,k),C.props=z,J=n.pendingProps,K=C.context,P=o.contextType,typeof P=="object"&&P!==null?P=Rr(P):(P=er(o)?fa:$t.current,P=Ka(n,P));var se=o.getDerivedStateFromProps;(Q=typeof se=="function"||typeof C.getSnapshotBeforeUpdate=="function")||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(k!==J||K!==P)&&yp(n,C,l,P),Bn=!1,K=n.memoizedState,C.state=K,ss(n,l,C,u);var de=n.memoizedState;k!==J||K!==de||Xt.current||Bn?(typeof se=="function"&&(Ec(n,o,se,l),de=n.memoizedState),(z=Bn||hp(n,o,z,l,K,de,P)||!1)?(Q||typeof C.UNSAFE_componentWillUpdate!="function"&&typeof C.componentWillUpdate!="function"||(typeof C.componentWillUpdate=="function"&&C.componentWillUpdate(l,de,P),typeof C.UNSAFE_componentWillUpdate=="function"&&C.UNSAFE_componentWillUpdate(l,de,P)),typeof C.componentDidUpdate=="function"&&(n.flags|=4),typeof C.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof C.componentDidUpdate!="function"||k===e.memoizedProps&&K===e.memoizedState||(n.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||k===e.memoizedProps&&K===e.memoizedState||(n.flags|=1024),n.memoizedProps=l,n.memoizedState=de),C.props=l,C.state=de,C.context=P,l=z):(typeof C.componentDidUpdate!="function"||k===e.memoizedProps&&K===e.memoizedState||(n.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||k===e.memoizedProps&&K===e.memoizedState||(n.flags|=1024),l=!1)}return Pc(e,n,o,l,h,u)}function Pc(e,n,o,l,u,h){Tp(e,n);var C=(n.flags&128)!==0;if(!l&&!C)return u&&Nf(n,o,!1),_n(e,n,h);l=n.stateNode,Hy.current=n;var k=C&&typeof o.getDerivedStateFromError!="function"?null:l.render();return n.flags|=1,e!==null&&C?(n.child=Qa(n,e.child,null,h),n.child=Qa(n,null,k,h)):Wt(e,n,k,h),n.memoizedState=l.state,u&&Nf(n,o,!0),n.child}function bp(e){var n=e.stateNode;n.pendingContext?Rf(e,n.pendingContext,n.pendingContext!==n.context):n.context&&Rf(e,n.context,!1),fc(e,n.containerInfo)}function Pp(e,n,o,l,u){return Ga(),oc(u),n.flags|=256,Wt(e,n,o,l),n.child}var Rc={dehydrated:null,treeContext:null,retryLane:0};function Ac(e){return{baseLanes:e,cachePool:null,transitions:null}}function Rp(e,n,o){var l=n.pendingProps,u=ot.current,h=!1,C=(n.flags&128)!==0,k;if((k=C)||(k=e!==null&&e.memoizedState===null?!1:(u&2)!==0),k?(h=!0,n.flags&=-129):(e===null||e.memoizedState!==null)&&(u|=1),Qe(ot,u&1),e===null)return ac(n),e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?((n.mode&1)===0?n.lanes=1:e.data==="$!"?n.lanes=8:n.lanes=1073741824,null):(C=l.children,e=l.fallback,h?(l=n.mode,h=n.child,C={mode:"hidden",children:C},(l&1)===0&&h!==null?(h.childLanes=0,h.pendingProps=C):h=bs(C,l,0,null),e=Sa(e,l,o,null),h.return=n,e.return=n,h.sibling=e,n.child=h,n.child.memoizedState=Ac(o),n.memoizedState=Rc,e):Nc(n,C));if(u=e.memoizedState,u!==null&&(k=u.dehydrated,k!==null))return Wy(e,n,C,l,k,u,o);if(h){h=l.fallback,C=n.mode,u=e.child,k=u.sibling;var P={mode:"hidden",children:l.children};return(C&1)===0&&n.child!==u?(l=n.child,l.childLanes=0,l.pendingProps=P,n.deletions=null):(l=Gn(u,P),l.subtreeFlags=u.subtreeFlags&14680064),k!==null?h=Gn(k,h):(h=Sa(h,C,o,null),h.flags|=2),h.return=n,l.return=n,l.sibling=h,n.child=l,l=h,h=n.child,C=e.child.memoizedState,C=C===null?Ac(o):{baseLanes:C.baseLanes|o,cachePool:null,transitions:C.transitions},h.memoizedState=C,h.childLanes=e.childLanes&~o,n.memoizedState=Rc,l}return h=e.child,e=h.sibling,l=Gn(h,{mode:"visible",children:l.children}),(n.mode&1)===0&&(l.lanes=o),l.return=n,l.sibling=null,e!==null&&(o=n.deletions,o===null?(n.deletions=[e],n.flags|=16):o.push(e)),n.child=l,n.memoizedState=null,l}function Nc(e,n){return n=bs({mode:"visible",children:n},e.mode,0,null),n.return=e,e.child=n}function ms(e,n,o,l){return l!==null&&oc(l),Qa(n,e.child,null,o),e=Nc(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function Wy(e,n,o,l,u,h,C){if(o)return n.flags&256?(n.flags&=-257,l=Tc(Error(a(422))),ms(e,n,C,l)):n.memoizedState!==null?(n.child=e.child,n.flags|=128,null):(h=l.fallback,u=n.mode,l=bs({mode:"visible",children:l.children},u,0,null),h=Sa(h,u,C,null),h.flags|=2,l.return=n,h.return=n,l.sibling=h,n.child=l,(n.mode&1)!==0&&Qa(n,e.child,null,C),n.child.memoizedState=Ac(C),n.memoizedState=Rc,h);if((n.mode&1)===0)return ms(e,n,C,null);if(u.data==="$!"){if(l=u.nextSibling&&u.nextSibling.dataset,l)var k=l.dgst;return l=k,h=Error(a(419)),l=Tc(h,l,void 0),ms(e,n,C,l)}if(k=(C&e.childLanes)!==0,tr||k){if(l=kt,l!==null){switch(C&-C){case 4:u=2;break;case 16:u=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:u=32;break;case 536870912:u=268435456;break;default:u=0}u=(u&(l.suspendedLanes|C))!==0?0:u,u!==0&&u!==h.retryLane&&(h.retryLane=u,wn(e,u),Hr(l,e,u,-1))}return qc(),l=Tc(Error(a(421))),ms(e,n,C,l)}return u.data==="$?"?(n.flags|=128,n.child=e.child,n=ag.bind(null,e),u._reactRetry=n,null):(e=h.treeContext,yr=On(u.nextSibling),mr=n,rt=!0,Ur=null,e!==null&&(br[Pr++]=gn,br[Pr++]=vn,br[Pr++]=pa,gn=e.id,vn=e.overflow,pa=n),n=Nc(n,l.children),n.flags|=4096,n)}function Ap(e,n,o){e.lanes|=n;var l=e.alternate;l!==null&&(l.lanes|=n),cc(e.return,n,o)}function Lc(e,n,o,l,u){var h=e.memoizedState;h===null?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:l,tail:o,tailMode:u}:(h.isBackwards=n,h.rendering=null,h.renderingStartTime=0,h.last=l,h.tail=o,h.tailMode=u)}function Np(e,n,o){var l=n.pendingProps,u=l.revealOrder,h=l.tail;if(Wt(e,n,l.children,o),l=ot.current,(l&2)!==0)l=l&1|2,n.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=n.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Ap(e,o,n);else if(e.tag===19)Ap(e,o,n);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;e.sibling===null;){if(e.return===null||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}l&=1}if(Qe(ot,l),(n.mode&1)===0)n.memoizedState=null;else switch(u){case"forwards":for(o=n.child,u=null;o!==null;)e=o.alternate,e!==null&&ls(e)===null&&(u=o),o=o.sibling;o=u,o===null?(u=n.child,n.child=null):(u=o.sibling,o.sibling=null),Lc(n,!1,u,o,h);break;case"backwards":for(o=null,u=n.child,n.child=null;u!==null;){if(e=u.alternate,e!==null&&ls(e)===null){n.child=u;break}e=u.sibling,u.sibling=o,o=u,u=e}Lc(n,!0,o,null,h);break;case"together":Lc(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function ys(e,n){(n.mode&1)===0&&e!==null&&(e.alternate=null,n.alternate=null,n.flags|=2)}function _n(e,n,o){if(e!==null&&(n.dependencies=e.dependencies),va|=n.lanes,(o&n.childLanes)===0)return null;if(e!==null&&n.child!==e.child)throw Error(a(153));if(n.child!==null){for(e=n.child,o=Gn(e,e.pendingProps),n.child=o,o.return=n;e.sibling!==null;)e=e.sibling,o=o.sibling=Gn(e,e.pendingProps),o.return=n;o.sibling=null}return n.child}function Ky(e,n,o){switch(n.tag){case 3:bp(n),Ga();break;case 5:Kf(n);break;case 1:er(n.type)&&Ji(n);break;case 4:fc(n,n.stateNode.containerInfo);break;case 10:var l=n.type._context,u=n.memoizedProps.value;Qe(as,l._currentValue),l._currentValue=u;break;case 13:if(l=n.memoizedState,l!==null)return l.dehydrated!==null?(Qe(ot,ot.current&1),n.flags|=128,null):(o&n.child.childLanes)!==0?Rp(e,n,o):(Qe(ot,ot.current&1),e=_n(e,n,o),e!==null?e.sibling:null);Qe(ot,ot.current&1);break;case 19:if(l=(o&n.childLanes)!==0,(e.flags&128)!==0){if(l)return Np(e,n,o);n.flags|=128}if(u=n.memoizedState,u!==null&&(u.rendering=null,u.tail=null,u.lastEffect=null),Qe(ot,ot.current),l)break;return null;case 22:case 23:return n.lanes=0,kp(e,n,o)}return _n(e,n,o)}var Lp,jc,jp,Mp;Lp=function(e,n){for(var o=n.child;o!==null;){if(o.tag===5||o.tag===6)e.appendChild(o.stateNode);else if(o.tag!==4&&o.child!==null){o.child.return=o,o=o.child;continue}if(o===n)break;for(;o.sibling===null;){if(o.return===null||o.return===n)return;o=o.return}o.sibling.return=o.return,o=o.sibling}},jc=function(){},jp=function(e,n,o,l){var u=e.memoizedProps;if(u!==l){e=n.stateNode,ya(Jr.current);var h=null;switch(o){case"input":u=cn(e,u),l=cn(e,l),h=[];break;case"select":u=X({},u,{value:void 0}),l=X({},l,{value:void 0}),h=[];break;case"textarea":u=dr(e,u),l=dr(e,l),h=[];break;default:typeof u.onClick!="function"&&typeof l.onClick=="function"&&(e.onclick=Gi)}ja(o,l);var C;o=null;for(z in u)if(!l.hasOwnProperty(z)&&u.hasOwnProperty(z)&&u[z]!=null)if(z==="style"){var k=u[z];for(C in k)k.hasOwnProperty(C)&&(o||(o={}),o[C]="")}else z!=="dangerouslySetInnerHTML"&&z!=="children"&&z!=="suppressContentEditableWarning"&&z!=="suppressHydrationWarning"&&z!=="autoFocus"&&(s.hasOwnProperty(z)?h||(h=[]):(h=h||[]).push(z,null));for(z in l){var P=l[z];if(k=u!=null?u[z]:void 0,l.hasOwnProperty(z)&&P!==k&&(P!=null||k!=null))if(z==="style")if(k){for(C in k)!k.hasOwnProperty(C)||P&&P.hasOwnProperty(C)||(o||(o={}),o[C]="");for(C in P)P.hasOwnProperty(C)&&k[C]!==P[C]&&(o||(o={}),o[C]=P[C])}else o||(h||(h=[]),h.push(z,o)),o=P;else z==="dangerouslySetInnerHTML"?(P=P?P.__html:void 0,k=k?k.__html:void 0,P!=null&&k!==P&&(h=h||[]).push(z,P)):z==="children"?typeof P!="string"&&typeof P!="number"||(h=h||[]).push(z,""+P):z!=="suppressContentEditableWarning"&&z!=="suppressHydrationWarning"&&(s.hasOwnProperty(z)?(P!=null&&z==="onScroll"&&Ze("scroll",e),h||k===P||(h=[])):(h=h||[]).push(z,P))}o&&(h=h||[]).push("style",o);var z=h;(n.updateQueue=z)&&(n.flags|=4)}},Mp=function(e,n,o,l){o!==l&&(n.flags|=4)};function Jo(e,n){if(!rt)switch(e.tailMode){case"hidden":n=e.tail;for(var o=null;n!==null;)n.alternate!==null&&(o=n),n=n.sibling;o===null?e.tail=null:o.sibling=null;break;case"collapsed":o=e.tail;for(var l=null;o!==null;)o.alternate!==null&&(l=o),o=o.sibling;l===null?n||e.tail===null?e.tail=null:e.tail.sibling=null:l.sibling=null}}function Ft(e){var n=e.alternate!==null&&e.alternate.child===e.child,o=0,l=0;if(n)for(var u=e.child;u!==null;)o|=u.lanes|u.childLanes,l|=u.subtreeFlags&14680064,l|=u.flags&14680064,u.return=e,u=u.sibling;else for(u=e.child;u!==null;)o|=u.lanes|u.childLanes,l|=u.subtreeFlags,l|=u.flags,u.return=e,u=u.sibling;return e.subtreeFlags|=l,e.childLanes=o,n}function Yy(e,n,o){var l=n.pendingProps;switch(rc(n),n.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ft(n),null;case 1:return er(n.type)&&Zi(),Ft(n),null;case 3:return l=n.stateNode,Xa(),Je(Xt),Je($t),mc(),l.pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),(e===null||e.child===null)&&(rs(n)?n.flags|=4:e===null||e.memoizedState.isDehydrated&&(n.flags&256)===0||(n.flags|=1024,Ur!==null&&(Wc(Ur),Ur=null))),jc(e,n),Ft(n),null;case 5:pc(n);var u=ya(Yo.current);if(o=n.type,e!==null&&n.stateNode!=null)jp(e,n,o,l,u),e.ref!==n.ref&&(n.flags|=512,n.flags|=2097152);else{if(!l){if(n.stateNode===null)throw Error(a(166));return Ft(n),null}if(e=ya(Jr.current),rs(n)){l=n.stateNode,o=n.type;var h=n.memoizedProps;switch(l[Zr]=n,l[Bo]=h,e=(n.mode&1)!==0,o){case"dialog":Ze("cancel",l),Ze("close",l);break;case"iframe":case"object":case"embed":Ze("load",l);break;case"video":case"audio":for(u=0;u<Fo.length;u++)Ze(Fo[u],l);break;case"source":Ze("error",l);break;case"img":case"image":case"link":Ze("error",l),Ze("load",l);break;case"details":Ze("toggle",l);break;case"input":Ae(l,h),Ze("invalid",l);break;case"select":l._wrapperState={wasMultiple:!!h.multiple},Ze("invalid",l);break;case"textarea":qr(l,h),Ze("invalid",l)}ja(o,h),u=null;for(var C in h)if(h.hasOwnProperty(C)){var k=h[C];C==="children"?typeof k=="string"?l.textContent!==k&&(h.suppressHydrationWarning!==!0&&qi(l.textContent,k,e),u=["children",k]):typeof k=="number"&&l.textContent!==""+k&&(h.suppressHydrationWarning!==!0&&qi(l.textContent,k,e),u=["children",""+k]):s.hasOwnProperty(C)&&k!=null&&C==="onScroll"&&Ze("scroll",l)}switch(o){case"input":Tn(l),Dt(l,h,!0);break;case"textarea":Tn(l),kr(l);break;case"select":case"option":break;default:typeof h.onClick=="function"&&(l.onclick=Gi)}l=u,n.updateQueue=l,l!==null&&(n.flags|=4)}else{C=u.nodeType===9?u:u.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=Or(o)),e==="http://www.w3.org/1999/xhtml"?o==="script"?(e=C.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof l.is=="string"?e=C.createElement(o,{is:l.is}):(e=C.createElement(o),o==="select"&&(C=e,l.multiple?C.multiple=!0:l.size&&(C.size=l.size))):e=C.createElementNS(e,o),e[Zr]=n,e[Bo]=l,Lp(e,n,!1,!1),n.stateNode=e;e:{switch(C=Ma(o,l),o){case"dialog":Ze("cancel",e),Ze("close",e),u=l;break;case"iframe":case"object":case"embed":Ze("load",e),u=l;break;case"video":case"audio":for(u=0;u<Fo.length;u++)Ze(Fo[u],e);u=l;break;case"source":Ze("error",e),u=l;break;case"img":case"image":case"link":Ze("error",e),Ze("load",e),u=l;break;case"details":Ze("toggle",e),u=l;break;case"input":Ae(e,l),u=cn(e,l),Ze("invalid",e);break;case"option":u=l;break;case"select":e._wrapperState={wasMultiple:!!l.multiple},u=X({},l,{value:void 0}),Ze("invalid",e);break;case"textarea":qr(e,l),u=dr(e,l),Ze("invalid",e);break;default:u=l}ja(o,u),k=u;for(h in k)if(k.hasOwnProperty(h)){var P=k[h];h==="style"?Tr(e,P):h==="dangerouslySetInnerHTML"?(P=P?P.__html:void 0,P!=null&&St(e,P)):h==="children"?typeof P=="string"?(o!=="textarea"||P!=="")&&Zt(e,P):typeof P=="number"&&Zt(e,""+P):h!=="suppressContentEditableWarning"&&h!=="suppressHydrationWarning"&&h!=="autoFocus"&&(s.hasOwnProperty(h)?P!=null&&h==="onScroll"&&Ze("scroll",e):P!=null&&B(e,h,P,C))}switch(o){case"input":Tn(e),Dt(e,l,!1);break;case"textarea":Tn(e),kr(e);break;case"option":l.value!=null&&e.setAttribute("value",""+je(l.value));break;case"select":e.multiple=!!l.multiple,h=l.value,h!=null?ur(e,!!l.multiple,h,!1):l.defaultValue!=null&&ur(e,!!l.multiple,l.defaultValue,!0);break;default:typeof u.onClick=="function"&&(e.onclick=Gi)}switch(o){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}}l&&(n.flags|=4)}n.ref!==null&&(n.flags|=512,n.flags|=2097152)}return Ft(n),null;case 6:if(e&&n.stateNode!=null)Mp(e,n,e.memoizedProps,l);else{if(typeof l!="string"&&n.stateNode===null)throw Error(a(166));if(o=ya(Yo.current),ya(Jr.current),rs(n)){if(l=n.stateNode,o=n.memoizedProps,l[Zr]=n,(h=l.nodeValue!==o)&&(e=mr,e!==null))switch(e.tag){case 3:qi(l.nodeValue,o,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&qi(l.nodeValue,o,(e.mode&1)!==0)}h&&(n.flags|=4)}else l=(o.nodeType===9?o:o.ownerDocument).createTextNode(l),l[Zr]=n,n.stateNode=l}return Ft(n),null;case 13:if(Je(ot),l=n.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(rt&&yr!==null&&(n.mode&1)!==0&&(n.flags&128)===0)Of(),Ga(),n.flags|=98560,h=!1;else if(h=rs(n),l!==null&&l.dehydrated!==null){if(e===null){if(!h)throw Error(a(318));if(h=n.memoizedState,h=h!==null?h.dehydrated:null,!h)throw Error(a(317));h[Zr]=n}else Ga(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;Ft(n),h=!1}else Ur!==null&&(Wc(Ur),Ur=null),h=!0;if(!h)return n.flags&65536?n:null}return(n.flags&128)!==0?(n.lanes=o,n):(l=l!==null,l!==(e!==null&&e.memoizedState!==null)&&l&&(n.child.flags|=8192,(n.mode&1)!==0&&(e===null||(ot.current&1)!==0?wt===0&&(wt=3):qc())),n.updateQueue!==null&&(n.flags|=4),Ft(n),null);case 4:return Xa(),jc(e,n),e===null&&Uo(n.stateNode.containerInfo),Ft(n),null;case 10:return lc(n.type._context),Ft(n),null;case 17:return er(n.type)&&Zi(),Ft(n),null;case 19:if(Je(ot),h=n.memoizedState,h===null)return Ft(n),null;if(l=(n.flags&128)!==0,C=h.rendering,C===null)if(l)Jo(h,!1);else{if(wt!==0||e!==null&&(e.flags&128)!==0)for(e=n.child;e!==null;){if(C=ls(e),C!==null){for(n.flags|=128,Jo(h,!1),l=C.updateQueue,l!==null&&(n.updateQueue=l,n.flags|=4),n.subtreeFlags=0,l=o,o=n.child;o!==null;)h=o,e=l,h.flags&=14680066,C=h.alternate,C===null?(h.childLanes=0,h.lanes=e,h.child=null,h.subtreeFlags=0,h.memoizedProps=null,h.memoizedState=null,h.updateQueue=null,h.dependencies=null,h.stateNode=null):(h.childLanes=C.childLanes,h.lanes=C.lanes,h.child=C.child,h.subtreeFlags=0,h.deletions=null,h.memoizedProps=C.memoizedProps,h.memoizedState=C.memoizedState,h.updateQueue=C.updateQueue,h.type=C.type,e=C.dependencies,h.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),o=o.sibling;return Qe(ot,ot.current&1|2),n.child}e=e.sibling}h.tail!==null&&He()>no&&(n.flags|=128,l=!0,Jo(h,!1),n.lanes=4194304)}else{if(!l)if(e=ls(C),e!==null){if(n.flags|=128,l=!0,o=e.updateQueue,o!==null&&(n.updateQueue=o,n.flags|=4),Jo(h,!0),h.tail===null&&h.tailMode==="hidden"&&!C.alternate&&!rt)return Ft(n),null}else 2*He()-h.renderingStartTime>no&&o!==1073741824&&(n.flags|=128,l=!0,Jo(h,!1),n.lanes=4194304);h.isBackwards?(C.sibling=n.child,n.child=C):(o=h.last,o!==null?o.sibling=C:n.child=C,h.last=C)}return h.tail!==null?(n=h.tail,h.rendering=n,h.tail=n.sibling,h.renderingStartTime=He(),n.sibling=null,o=ot.current,Qe(ot,l?o&1|2:o&1),n):(Ft(n),null);case 22:case 23:return Yc(),l=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==l&&(n.flags|=8192),l&&(n.mode&1)!==0?(gr&1073741824)!==0&&(Ft(n),n.subtreeFlags&6&&(n.flags|=8192)):Ft(n),null;case 24:return null;case 25:return null}throw Error(a(156,n.tag))}function qy(e,n){switch(rc(n),n.tag){case 1:return er(n.type)&&Zi(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Xa(),Je(Xt),Je($t),mc(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return pc(n),null;case 13:if(Je(ot),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(a(340));Ga()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Je(ot),null;case 4:return Xa(),null;case 10:return lc(n.type._context),null;case 22:case 23:return Yc(),null;case 24:return null;default:return null}}var gs=!1,Ut=!1,Gy=typeof WeakSet=="function"?WeakSet:Set,ce=null;function to(e,n){var o=e.ref;if(o!==null)if(typeof o=="function")try{o(null)}catch(l){ct(e,n,l)}else o.current=null}function Mc(e,n,o){try{o()}catch(l){ct(e,n,l)}}var Dp=!1;function Qy(e,n){if(Yl=$i,e=hf(),Fl(e)){if("selectionStart"in e)var o={start:e.selectionStart,end:e.selectionEnd};else e:{o=(o=e.ownerDocument)&&o.defaultView||window;var l=o.getSelection&&o.getSelection();if(l&&l.rangeCount!==0){o=l.anchorNode;var u=l.anchorOffset,h=l.focusNode;l=l.focusOffset;try{o.nodeType,h.nodeType}catch{o=null;break e}var C=0,k=-1,P=-1,z=0,Q=0,J=e,K=null;t:for(;;){for(var se;J!==o||u!==0&&J.nodeType!==3||(k=C+u),J!==h||l!==0&&J.nodeType!==3||(P=C+l),J.nodeType===3&&(C+=J.nodeValue.length),(se=J.firstChild)!==null;)K=J,J=se;for(;;){if(J===e)break t;if(K===o&&++z===u&&(k=C),K===h&&++Q===l&&(P=C),(se=J.nextSibling)!==null)break;J=K,K=J.parentNode}J=se}o=k===-1||P===-1?null:{start:k,end:P}}else o=null}o=o||{start:0,end:0}}else o=null;for(ql={focusedElem:e,selectionRange:o},$i=!1,ce=n;ce!==null;)if(n=ce,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,ce=e;else for(;ce!==null;){n=ce;try{var de=n.alternate;if((n.flags&1024)!==0)switch(n.tag){case 0:case 11:case 15:break;case 1:if(de!==null){var pe=de.memoizedProps,pt=de.memoizedState,M=n.stateNode,R=M.getSnapshotBeforeUpdate(n.elementType===n.type?pe:zr(n.type,pe),pt);M.__reactInternalSnapshotBeforeUpdate=R}break;case 3:var $=n.stateNode.containerInfo;$.nodeType===1?$.textContent="":$.nodeType===9&&$.documentElement&&$.removeChild($.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(a(163))}}catch(te){ct(n,n.return,te)}if(e=n.sibling,e!==null){e.return=n.return,ce=e;break}ce=n.return}return de=Dp,Dp=!1,de}function Xo(e,n,o){var l=n.updateQueue;if(l=l!==null?l.lastEffect:null,l!==null){var u=l=l.next;do{if((u.tag&e)===e){var h=u.destroy;u.destroy=void 0,h!==void 0&&Mc(n,o,h)}u=u.next}while(u!==l)}}function vs(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var o=n=n.next;do{if((o.tag&e)===e){var l=o.create;o.destroy=l()}o=o.next}while(o!==n)}}function Dc(e){var n=e.ref;if(n!==null){var o=e.stateNode;switch(e.tag){case 5:e=o;break;default:e=o}typeof n=="function"?n(e):n.current=e}}function $p(e){var n=e.alternate;n!==null&&(e.alternate=null,$p(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Zr],delete n[Bo],delete n[Jl],delete n[Ny],delete n[Ly])),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 Op(e){return e.tag===5||e.tag===3||e.tag===4}function Fp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Op(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 $c(e,n,o){var l=e.tag;if(l===5||l===6)e=e.stateNode,n?o.nodeType===8?o.parentNode.insertBefore(e,n):o.insertBefore(e,n):(o.nodeType===8?(n=o.parentNode,n.insertBefore(e,o)):(n=o,n.appendChild(e)),o=o._reactRootContainer,o!=null||n.onclick!==null||(n.onclick=Gi));else if(l!==4&&(e=e.child,e!==null))for($c(e,n,o),e=e.sibling;e!==null;)$c(e,n,o),e=e.sibling}function Oc(e,n,o){var l=e.tag;if(l===5||l===6)e=e.stateNode,n?o.insertBefore(e,n):o.appendChild(e);else if(l!==4&&(e=e.child,e!==null))for(Oc(e,n,o),e=e.sibling;e!==null;)Oc(e,n,o),e=e.sibling}var At=null,Br=!1;function Hn(e,n,o){for(o=o.child;o!==null;)Up(e,n,o),o=o.sibling}function Up(e,n,o){if(Ht&&typeof Ht.onCommitFiberUnmount=="function")try{Ht.onCommitFiberUnmount(fn,o)}catch{}switch(o.tag){case 5:Ut||to(o,n);case 6:var l=At,u=Br;At=null,Hn(e,n,o),At=l,Br=u,At!==null&&(Br?(e=At,o=o.stateNode,e.nodeType===8?e.parentNode.removeChild(o):e.removeChild(o)):At.removeChild(o.stateNode));break;case 18:At!==null&&(Br?(e=At,o=o.stateNode,e.nodeType===8?Zl(e.parentNode,o):e.nodeType===1&&Zl(e,o),Ao(e)):Zl(At,o.stateNode));break;case 4:l=At,u=Br,At=o.stateNode.containerInfo,Br=!0,Hn(e,n,o),At=l,Br=u;break;case 0:case 11:case 14:case 15:if(!Ut&&(l=o.updateQueue,l!==null&&(l=l.lastEffect,l!==null))){u=l=l.next;do{var h=u,C=h.destroy;h=h.tag,C!==void 0&&((h&2)!==0||(h&4)!==0)&&Mc(o,n,C),u=u.next}while(u!==l)}Hn(e,n,o);break;case 1:if(!Ut&&(to(o,n),l=o.stateNode,typeof l.componentWillUnmount=="function"))try{l.props=o.memoizedProps,l.state=o.memoizedState,l.componentWillUnmount()}catch(k){ct(o,n,k)}Hn(e,n,o);break;case 21:Hn(e,n,o);break;case 22:o.mode&1?(Ut=(l=Ut)||o.memoizedState!==null,Hn(e,n,o),Ut=l):Hn(e,n,o);break;default:Hn(e,n,o)}}function zp(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var o=e.stateNode;o===null&&(o=e.stateNode=new Gy),n.forEach(function(l){var u=og.bind(null,e,l);o.has(l)||(o.add(l),l.then(u,u))})}}function Vr(e,n){var o=n.deletions;if(o!==null)for(var l=0;l<o.length;l++){var u=o[l];try{var h=e,C=n,k=C;e:for(;k!==null;){switch(k.tag){case 5:At=k.stateNode,Br=!1;break e;case 3:At=k.stateNode.containerInfo,Br=!0;break e;case 4:At=k.stateNode.containerInfo,Br=!0;break e}k=k.return}if(At===null)throw Error(a(160));Up(h,C,u),At=null,Br=!1;var P=u.alternate;P!==null&&(P.return=null),u.return=null}catch(z){ct(u,n,z)}}if(n.subtreeFlags&12854)for(n=n.child;n!==null;)Bp(n,e),n=n.sibling}function Bp(e,n){var o=e.alternate,l=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(Vr(n,e),en(e),l&4){try{Xo(3,e,e.return),vs(3,e)}catch(pe){ct(e,e.return,pe)}try{Xo(5,e,e.return)}catch(pe){ct(e,e.return,pe)}}break;case 1:Vr(n,e),en(e),l&512&&o!==null&&to(o,o.return);break;case 5:if(Vr(n,e),en(e),l&512&&o!==null&&to(o,o.return),e.flags&32){var u=e.stateNode;try{Zt(u,"")}catch(pe){ct(e,e.return,pe)}}if(l&4&&(u=e.stateNode,u!=null)){var h=e.memoizedProps,C=o!==null?o.memoizedProps:h,k=e.type,P=e.updateQueue;if(e.updateQueue=null,P!==null)try{k==="input"&&h.type==="radio"&&h.name!=null&&Ye(u,h),Ma(k,C);var z=Ma(k,h);for(C=0;C<P.length;C+=2){var Q=P[C],J=P[C+1];Q==="style"?Tr(u,J):Q==="dangerouslySetInnerHTML"?St(u,J):Q==="children"?Zt(u,J):B(u,Q,J,z)}switch(k){case"input":Mt(u,h);break;case"textarea":at(u,h);break;case"select":var K=u._wrapperState.wasMultiple;u._wrapperState.wasMultiple=!!h.multiple;var se=h.value;se!=null?ur(u,!!h.multiple,se,!1):K!==!!h.multiple&&(h.defaultValue!=null?ur(u,!!h.multiple,h.defaultValue,!0):ur(u,!!h.multiple,h.multiple?[]:"",!1))}u[Bo]=h}catch(pe){ct(e,e.return,pe)}}break;case 6:if(Vr(n,e),en(e),l&4){if(e.stateNode===null)throw Error(a(162));u=e.stateNode,h=e.memoizedProps;try{u.nodeValue=h}catch(pe){ct(e,e.return,pe)}}break;case 3:if(Vr(n,e),en(e),l&4&&o!==null&&o.memoizedState.isDehydrated)try{Ao(n.containerInfo)}catch(pe){ct(e,e.return,pe)}break;case 4:Vr(n,e),en(e);break;case 13:Vr(n,e),en(e),u=e.child,u.flags&8192&&(h=u.memoizedState!==null,u.stateNode.isHidden=h,!h||u.alternate!==null&&u.alternate.memoizedState!==null||(zc=He())),l&4&&zp(e);break;case 22:if(Q=o!==null&&o.memoizedState!==null,e.mode&1?(Ut=(z=Ut)||Q,Vr(n,e),Ut=z):Vr(n,e),en(e),l&8192){if(z=e.memoizedState!==null,(e.stateNode.isHidden=z)&&!Q&&(e.mode&1)!==0)for(ce=e,Q=e.child;Q!==null;){for(J=ce=Q;ce!==null;){switch(K=ce,se=K.child,K.tag){case 0:case 11:case 14:case 15:Xo(4,K,K.return);break;case 1:to(K,K.return);var de=K.stateNode;if(typeof de.componentWillUnmount=="function"){l=K,o=K.return;try{n=l,de.props=n.memoizedProps,de.state=n.memoizedState,de.componentWillUnmount()}catch(pe){ct(l,o,pe)}}break;case 5:to(K,K.return);break;case 22:if(K.memoizedState!==null){Wp(J);continue}}se!==null?(se.return=K,ce=se):Wp(J)}Q=Q.sibling}e:for(Q=null,J=e;;){if(J.tag===5){if(Q===null){Q=J;try{u=J.stateNode,z?(h=u.style,typeof h.setProperty=="function"?h.setProperty("display","none","important"):h.display="none"):(k=J.stateNode,P=J.memoizedProps.style,C=P!=null&&P.hasOwnProperty("display")?P.display:null,k.style.display=Ri("display",C))}catch(pe){ct(e,e.return,pe)}}}else if(J.tag===6){if(Q===null)try{J.stateNode.nodeValue=z?"":J.memoizedProps}catch(pe){ct(e,e.return,pe)}}else if((J.tag!==22&&J.tag!==23||J.memoizedState===null||J===e)&&J.child!==null){J.child.return=J,J=J.child;continue}if(J===e)break e;for(;J.sibling===null;){if(J.return===null||J.return===e)break e;Q===J&&(Q=null),J=J.return}Q===J&&(Q=null),J.sibling.return=J.return,J=J.sibling}}break;case 19:Vr(n,e),en(e),l&4&&zp(e);break;case 21:break;default:Vr(n,e),en(e)}}function en(e){var n=e.flags;if(n&2){try{e:{for(var o=e.return;o!==null;){if(Op(o)){var l=o;break e}o=o.return}throw Error(a(160))}switch(l.tag){case 5:var u=l.stateNode;l.flags&32&&(Zt(u,""),l.flags&=-33);var h=Fp(e);Oc(e,h,u);break;case 3:case 4:var C=l.stateNode.containerInfo,k=Fp(e);$c(e,k,C);break;default:throw Error(a(161))}}catch(P){ct(e,e.return,P)}e.flags&=-3}n&4096&&(e.flags&=-4097)}function Zy(e,n,o){ce=e,Vp(e)}function Vp(e,n,o){for(var l=(e.mode&1)!==0;ce!==null;){var u=ce,h=u.child;if(u.tag===22&&l){var C=u.memoizedState!==null||gs;if(!C){var k=u.alternate,P=k!==null&&k.memoizedState!==null||Ut;k=gs;var z=Ut;if(gs=C,(Ut=P)&&!z)for(ce=u;ce!==null;)C=ce,P=C.child,C.tag===22&&C.memoizedState!==null?Kp(u):P!==null?(P.return=C,ce=P):Kp(u);for(;h!==null;)ce=h,Vp(h),h=h.sibling;ce=u,gs=k,Ut=z}Hp(e)}else(u.subtreeFlags&8772)!==0&&h!==null?(h.return=u,ce=h):Hp(e)}}function Hp(e){for(;ce!==null;){var n=ce;if((n.flags&8772)!==0){var o=n.alternate;try{if((n.flags&8772)!==0)switch(n.tag){case 0:case 11:case 15:Ut||vs(5,n);break;case 1:var l=n.stateNode;if(n.flags&4&&!Ut)if(o===null)l.componentDidMount();else{var u=n.elementType===n.type?o.memoizedProps:zr(n.type,o.memoizedProps);l.componentDidUpdate(u,o.memoizedState,l.__reactInternalSnapshotBeforeUpdate)}var h=n.updateQueue;h!==null&&Wf(n,h,l);break;case 3:var C=n.updateQueue;if(C!==null){if(o=null,n.child!==null)switch(n.child.tag){case 5:o=n.child.stateNode;break;case 1:o=n.child.stateNode}Wf(n,C,o)}break;case 5:var k=n.stateNode;if(o===null&&n.flags&4){o=k;var P=n.memoizedProps;switch(n.type){case"button":case"input":case"select":case"textarea":P.autoFocus&&o.focus();break;case"img":P.src&&(o.src=P.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(n.memoizedState===null){var z=n.alternate;if(z!==null){var Q=z.memoizedState;if(Q!==null){var J=Q.dehydrated;J!==null&&Ao(J)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(a(163))}Ut||n.flags&512&&Dc(n)}catch(K){ct(n,n.return,K)}}if(n===e){ce=null;break}if(o=n.sibling,o!==null){o.return=n.return,ce=o;break}ce=n.return}}function Wp(e){for(;ce!==null;){var n=ce;if(n===e){ce=null;break}var o=n.sibling;if(o!==null){o.return=n.return,ce=o;break}ce=n.return}}function Kp(e){for(;ce!==null;){var n=ce;try{switch(n.tag){case 0:case 11:case 15:var o=n.return;try{vs(4,n)}catch(P){ct(n,o,P)}break;case 1:var l=n.stateNode;if(typeof l.componentDidMount=="function"){var u=n.return;try{l.componentDidMount()}catch(P){ct(n,u,P)}}var h=n.return;try{Dc(n)}catch(P){ct(n,h,P)}break;case 5:var C=n.return;try{Dc(n)}catch(P){ct(n,C,P)}}}catch(P){ct(n,n.return,P)}if(n===e){ce=null;break}var k=n.sibling;if(k!==null){k.return=n.return,ce=k;break}ce=n.return}}var Jy=Math.ceil,ws=O.ReactCurrentDispatcher,Fc=O.ReactCurrentOwner,Nr=O.ReactCurrentBatchConfig,Ue=0,kt=null,yt=null,Nt=0,gr=0,ro=Fn(0),wt=0,ei=null,va=0,Cs=0,Uc=0,ti=null,rr=null,zc=0,no=1/0,Sn=null,_s=!1,Bc=null,Wn=null,Ss=!1,Kn=null,xs=0,ri=0,Vc=null,Es=-1,ks=0;function Kt(){return(Ue&6)!==0?He():Es!==-1?Es:Es=He()}function Yn(e){return(e.mode&1)===0?1:(Ue&2)!==0&&Nt!==0?Nt&-Nt:My.transition!==null?(ks===0&&(ks=Od()),ks):(e=We,e!==0||(e=window.event,e=e===void 0?16:Yd(e.type)),e)}function Hr(e,n,o,l){if(50<ri)throw ri=0,Vc=null,Error(a(185));To(e,o,l),((Ue&2)===0||e!==kt)&&(e===kt&&((Ue&2)===0&&(Cs|=o),wt===4&&qn(e,Nt)),nr(e,l),o===1&&Ue===0&&(n.mode&1)===0&&(no=He()+500,Xi&&zn()))}function nr(e,n){var o=e.callbackNode;M1(e,n);var l=ji(e,e===kt?Nt:0);if(l===0)o!==null&&xt(o),e.callbackNode=null,e.callbackPriority=0;else if(n=l&-l,e.callbackPriority!==n){if(o!=null&&xt(o),n===1)e.tag===0?jy(qp.bind(null,e)):Lf(qp.bind(null,e)),Ry(function(){(Ue&6)===0&&zn()}),o=null;else{switch(Fd(l)){case 1:o=Ir;break;case 4:o=pr;break;case 16:o=Rn;break;case 536870912:o=Qr;break;default:o=Rn}o=rh(o,Yp.bind(null,e))}e.callbackPriority=n,e.callbackNode=o}}function Yp(e,n){if(Es=-1,ks=0,(Ue&6)!==0)throw Error(a(327));var o=e.callbackNode;if(ao()&&e.callbackNode!==o)return null;var l=ji(e,e===kt?Nt:0);if(l===0)return null;if((l&30)!==0||(l&e.expiredLanes)!==0||n)n=Ts(e,l);else{n=l;var u=Ue;Ue|=2;var h=Qp();(kt!==e||Nt!==n)&&(Sn=null,no=He()+500,Ca(e,n));do try{tg();break}catch(k){Gp(e,k)}while(!0);sc(),ws.current=h,Ue=u,yt!==null?n=0:(kt=null,Nt=0,n=wt)}if(n!==0){if(n===2&&(u=xl(e),u!==0&&(l=u,n=Hc(e,u))),n===1)throw o=ei,Ca(e,0),qn(e,l),nr(e,He()),o;if(n===6)qn(e,l);else{if(u=e.current.alternate,(l&30)===0&&!Xy(u)&&(n=Ts(e,l),n===2&&(h=xl(e),h!==0&&(l=h,n=Hc(e,h))),n===1))throw o=ei,Ca(e,0),qn(e,l),nr(e,He()),o;switch(e.finishedWork=u,e.finishedLanes=l,n){case 0:case 1:throw Error(a(345));case 2:_a(e,rr,Sn);break;case 3:if(qn(e,l),(l&130023424)===l&&(n=zc+500-He(),10<n)){if(ji(e,0)!==0)break;if(u=e.suspendedLanes,(u&l)!==l){Kt(),e.pingedLanes|=e.suspendedLanes&u;break}e.timeoutHandle=Ql(_a.bind(null,e,rr,Sn),n);break}_a(e,rr,Sn);break;case 4:if(qn(e,l),(l&4194240)===l)break;for(n=e.eventTimes,u=-1;0<l;){var C=31-qe(l);h=1<<C,C=n[C],C>u&&(u=C),l&=~h}if(l=u,l=He()-l,l=(120>l?120:480>l?480:1080>l?1080:1920>l?1920:3e3>l?3e3:4320>l?4320:1960*Jy(l/1960))-l,10<l){e.timeoutHandle=Ql(_a.bind(null,e,rr,Sn),l);break}_a(e,rr,Sn);break;case 5:_a(e,rr,Sn);break;default:throw Error(a(329))}}}return nr(e,He()),e.callbackNode===o?Yp.bind(null,e):null}function Hc(e,n){var o=ti;return e.current.memoizedState.isDehydrated&&(Ca(e,n).flags|=256),e=Ts(e,n),e!==2&&(n=rr,rr=o,n!==null&&Wc(n)),e}function Wc(e){rr===null?rr=e:rr.push.apply(rr,e)}function Xy(e){for(var n=e;;){if(n.flags&16384){var o=n.updateQueue;if(o!==null&&(o=o.stores,o!==null))for(var l=0;l<o.length;l++){var u=o[l],h=u.getSnapshot;u=u.value;try{if(!Fr(h(),u))return!1}catch{return!1}}}if(o=n.child,n.subtreeFlags&16384&&o!==null)o.return=n,n=o;else{if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return!0;n=n.return}n.sibling.return=n.return,n=n.sibling}}return!0}function qn(e,n){for(n&=~Uc,n&=~Cs,e.suspendedLanes|=n,e.pingedLanes&=~n,e=e.expirationTimes;0<n;){var o=31-qe(n),l=1<<o;e[o]=-1,n&=~l}}function qp(e){if((Ue&6)!==0)throw Error(a(327));ao();var n=ji(e,0);if((n&1)===0)return nr(e,He()),null;var o=Ts(e,n);if(e.tag!==0&&o===2){var l=xl(e);l!==0&&(n=l,o=Hc(e,l))}if(o===1)throw o=ei,Ca(e,0),qn(e,n),nr(e,He()),o;if(o===6)throw Error(a(345));return e.finishedWork=e.current.alternate,e.finishedLanes=n,_a(e,rr,Sn),nr(e,He()),null}function Kc(e,n){var o=Ue;Ue|=1;try{return e(n)}finally{Ue=o,Ue===0&&(no=He()+500,Xi&&zn())}}function wa(e){Kn!==null&&Kn.tag===0&&(Ue&6)===0&&ao();var n=Ue;Ue|=1;var o=Nr.transition,l=We;try{if(Nr.transition=null,We=1,e)return e()}finally{We=l,Nr.transition=o,Ue=n,(Ue&6)===0&&zn()}}function Yc(){gr=ro.current,Je(ro)}function Ca(e,n){e.finishedWork=null,e.finishedLanes=0;var o=e.timeoutHandle;if(o!==-1&&(e.timeoutHandle=-1,Py(o)),yt!==null)for(o=yt.return;o!==null;){var l=o;switch(rc(l),l.tag){case 1:l=l.type.childContextTypes,l!=null&&Zi();break;case 3:Xa(),Je(Xt),Je($t),mc();break;case 5:pc(l);break;case 4:Xa();break;case 13:Je(ot);break;case 19:Je(ot);break;case 10:lc(l.type._context);break;case 22:case 23:Yc()}o=o.return}if(kt=e,yt=e=Gn(e.current,null),Nt=gr=n,wt=0,ei=null,Uc=Cs=va=0,rr=ti=null,ma!==null){for(n=0;n<ma.length;n++)if(o=ma[n],l=o.interleaved,l!==null){o.interleaved=null;var u=l.next,h=o.pending;if(h!==null){var C=h.next;h.next=u,l.next=C}o.pending=l}ma=null}return e}function Gp(e,n){do{var o=yt;try{if(sc(),cs.current=ps,us){for(var l=it.memoizedState;l!==null;){var u=l.queue;u!==null&&(u.pending=null),l=l.next}us=!1}if(ga=0,Et=vt=it=null,qo=!1,Go=0,Fc.current=null,o===null||o.return===null){wt=1,ei=n,yt=null;break}e:{var h=e,C=o.return,k=o,P=n;if(n=Nt,k.flags|=32768,P!==null&&typeof P=="object"&&typeof P.then=="function"){var z=P,Q=k,J=Q.tag;if((Q.mode&1)===0&&(J===0||J===11||J===15)){var K=Q.alternate;K?(Q.updateQueue=K.updateQueue,Q.memoizedState=K.memoizedState,Q.lanes=K.lanes):(Q.updateQueue=null,Q.memoizedState=null)}var se=Cp(C);if(se!==null){se.flags&=-257,_p(se,C,k,h,n),se.mode&1&&wp(h,z,n),n=se,P=z;var de=n.updateQueue;if(de===null){var pe=new Set;pe.add(P),n.updateQueue=pe}else de.add(P);break e}else{if((n&1)===0){wp(h,z,n),qc();break e}P=Error(a(426))}}else if(rt&&k.mode&1){var pt=Cp(C);if(pt!==null){(pt.flags&65536)===0&&(pt.flags|=256),_p(pt,C,k,h,n),oc(eo(P,k));break e}}h=P=eo(P,k),wt!==4&&(wt=2),ti===null?ti=[h]:ti.push(h),h=C;do{switch(h.tag){case 3:h.flags|=65536,n&=-n,h.lanes|=n;var M=gp(h,P,n);Hf(h,M);break e;case 1:k=P;var R=h.type,$=h.stateNode;if((h.flags&128)===0&&(typeof R.getDerivedStateFromError=="function"||$!==null&&typeof $.componentDidCatch=="function"&&(Wn===null||!Wn.has($)))){h.flags|=65536,n&=-n,h.lanes|=n;var te=vp(h,k,n);Hf(h,te);break e}}h=h.return}while(h!==null)}Jp(o)}catch(me){n=me,yt===o&&o!==null&&(yt=o=o.return);continue}break}while(!0)}function Qp(){var e=ws.current;return ws.current=ps,e===null?ps:e}function qc(){(wt===0||wt===3||wt===2)&&(wt=4),kt===null||(va&268435455)===0&&(Cs&268435455)===0||qn(kt,Nt)}function Ts(e,n){var o=Ue;Ue|=2;var l=Qp();(kt!==e||Nt!==n)&&(Sn=null,Ca(e,n));do try{eg();break}catch(u){Gp(e,u)}while(!0);if(sc(),Ue=o,ws.current=l,yt!==null)throw Error(a(261));return kt=null,Nt=0,wt}function eg(){for(;yt!==null;)Zp(yt)}function tg(){for(;yt!==null&&!Be();)Zp(yt)}function Zp(e){var n=th(e.alternate,e,gr);e.memoizedProps=e.pendingProps,n===null?Jp(e):yt=n,Fc.current=null}function Jp(e){var n=e;do{var o=n.alternate;if(e=n.return,(n.flags&32768)===0){if(o=Yy(o,n,gr),o!==null){yt=o;return}}else{if(o=qy(o,n),o!==null){o.flags&=32767,yt=o;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{wt=6,yt=null;return}}if(n=n.sibling,n!==null){yt=n;return}yt=n=e}while(n!==null);wt===0&&(wt=5)}function _a(e,n,o){var l=We,u=Nr.transition;try{Nr.transition=null,We=1,rg(e,n,o,l)}finally{Nr.transition=u,We=l}return null}function rg(e,n,o,l){do ao();while(Kn!==null);if((Ue&6)!==0)throw Error(a(327));o=e.finishedWork;var u=e.finishedLanes;if(o===null)return null;if(e.finishedWork=null,e.finishedLanes=0,o===e.current)throw Error(a(177));e.callbackNode=null,e.callbackPriority=0;var h=o.lanes|o.childLanes;if(D1(e,h),e===kt&&(yt=kt=null,Nt=0),(o.subtreeFlags&2064)===0&&(o.flags&2064)===0||Ss||(Ss=!0,rh(Rn,function(){return ao(),null})),h=(o.flags&15990)!==0,(o.subtreeFlags&15990)!==0||h){h=Nr.transition,Nr.transition=null;var C=We;We=1;var k=Ue;Ue|=4,Fc.current=null,Qy(e,o),Bp(o,e),Sy(ql),$i=!!Yl,ql=Yl=null,e.current=o,Zy(o),Jt(),Ue=k,We=C,Nr.transition=h}else e.current=o;if(Ss&&(Ss=!1,Kn=e,xs=u),h=e.pendingLanes,h===0&&(Wn=null),Oe(o.stateNode),nr(e,He()),n!==null)for(l=e.onRecoverableError,o=0;o<n.length;o++)u=n[o],l(u.value,{componentStack:u.stack,digest:u.digest});if(_s)throw _s=!1,e=Bc,Bc=null,e;return(xs&1)!==0&&e.tag!==0&&ao(),h=e.pendingLanes,(h&1)!==0?e===Vc?ri++:(ri=0,Vc=e):ri=0,zn(),null}function ao(){if(Kn!==null){var e=Fd(xs),n=Nr.transition,o=We;try{if(Nr.transition=null,We=16>e?16:e,Kn===null)var l=!1;else{if(e=Kn,Kn=null,xs=0,(Ue&6)!==0)throw Error(a(331));var u=Ue;for(Ue|=4,ce=e.current;ce!==null;){var h=ce,C=h.child;if((ce.flags&16)!==0){var k=h.deletions;if(k!==null){for(var P=0;P<k.length;P++){var z=k[P];for(ce=z;ce!==null;){var Q=ce;switch(Q.tag){case 0:case 11:case 15:Xo(8,Q,h)}var J=Q.child;if(J!==null)J.return=Q,ce=J;else for(;ce!==null;){Q=ce;var K=Q.sibling,se=Q.return;if($p(Q),Q===z){ce=null;break}if(K!==null){K.return=se,ce=K;break}ce=se}}}var de=h.alternate;if(de!==null){var pe=de.child;if(pe!==null){de.child=null;do{var pt=pe.sibling;pe.sibling=null,pe=pt}while(pe!==null)}}ce=h}}if((h.subtreeFlags&2064)!==0&&C!==null)C.return=h,ce=C;else e:for(;ce!==null;){if(h=ce,(h.flags&2048)!==0)switch(h.tag){case 0:case 11:case 15:Xo(9,h,h.return)}var M=h.sibling;if(M!==null){M.return=h.return,ce=M;break e}ce=h.return}}var R=e.current;for(ce=R;ce!==null;){C=ce;var $=C.child;if((C.subtreeFlags&2064)!==0&&$!==null)$.return=C,ce=$;else e:for(C=R;ce!==null;){if(k=ce,(k.flags&2048)!==0)try{switch(k.tag){case 0:case 11:case 15:vs(9,k)}}catch(me){ct(k,k.return,me)}if(k===C){ce=null;break e}var te=k.sibling;if(te!==null){te.return=k.return,ce=te;break e}ce=k.return}}if(Ue=u,zn(),Ht&&typeof Ht.onPostCommitFiberRoot=="function")try{Ht.onPostCommitFiberRoot(fn,e)}catch{}l=!0}return l}finally{We=o,Nr.transition=n}}return!1}function Xp(e,n,o){n=eo(o,n),n=gp(e,n,1),e=Vn(e,n,1),n=Kt(),e!==null&&(To(e,1,n),nr(e,n))}function ct(e,n,o){if(e.tag===3)Xp(e,e,o);else for(;n!==null;){if(n.tag===3){Xp(n,e,o);break}else if(n.tag===1){var l=n.stateNode;if(typeof n.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(Wn===null||!Wn.has(l))){e=eo(o,e),e=vp(n,e,1),n=Vn(n,e,1),e=Kt(),n!==null&&(To(n,1,e),nr(n,e));break}}n=n.return}}function ng(e,n,o){var l=e.pingCache;l!==null&&l.delete(n),n=Kt(),e.pingedLanes|=e.suspendedLanes&o,kt===e&&(Nt&o)===o&&(wt===4||wt===3&&(Nt&130023424)===Nt&&500>He()-zc?Ca(e,0):Uc|=o),nr(e,n)}function eh(e,n){n===0&&((e.mode&1)===0?n=1:(n=ca,ca<<=1,(ca&130023424)===0&&(ca=4194304)));var o=Kt();e=wn(e,n),e!==null&&(To(e,n,o),nr(e,o))}function ag(e){var n=e.memoizedState,o=0;n!==null&&(o=n.retryLane),eh(e,o)}function og(e,n){var o=0;switch(e.tag){case 13:var l=e.stateNode,u=e.memoizedState;u!==null&&(o=u.retryLane);break;case 19:l=e.stateNode;break;default:throw Error(a(314))}l!==null&&l.delete(n),eh(e,o)}var th;th=function(e,n,o){if(e!==null)if(e.memoizedProps!==n.pendingProps||Xt.current)tr=!0;else{if((e.lanes&o)===0&&(n.flags&128)===0)return tr=!1,Ky(e,n,o);tr=(e.flags&131072)!==0}else tr=!1,rt&&(n.flags&1048576)!==0&&jf(n,ts,n.index);switch(n.lanes=0,n.tag){case 2:var l=n.type;ys(e,n),e=n.pendingProps;var u=Ka(n,$t.current);Ja(n,o),u=vc(null,n,l,e,u,o);var h=wc();return n.flags|=1,typeof u=="object"&&u!==null&&typeof u.render=="function"&&u.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,er(l)?(h=!0,Ji(n)):h=!1,n.memoizedState=u.state!==null&&u.state!==void 0?u.state:null,dc(n),u.updater=hs,n.stateNode=u,u._reactInternals=n,kc(n,l,e,o),n=Pc(null,n,l,!0,h,o)):(n.tag=0,rt&&h&&tc(n),Wt(null,n,u,o),n=n.child),n;case 16:l=n.elementType;e:{switch(ys(e,n),e=n.pendingProps,u=l._init,l=u(l._payload),n.type=l,u=n.tag=sg(l),e=zr(l,e),u){case 0:n=bc(null,n,l,e,o);break e;case 1:n=Ip(null,n,l,e,o);break e;case 11:n=Sp(null,n,l,e,o);break e;case 14:n=xp(null,n,l,zr(l.type,e),o);break e}throw Error(a(306,l,""))}return n;case 0:return l=n.type,u=n.pendingProps,u=n.elementType===l?u:zr(l,u),bc(e,n,l,u,o);case 1:return l=n.type,u=n.pendingProps,u=n.elementType===l?u:zr(l,u),Ip(e,n,l,u,o);case 3:e:{if(bp(n),e===null)throw Error(a(387));l=n.pendingProps,h=n.memoizedState,u=h.element,Vf(e,n),ss(n,l,null,o);var C=n.memoizedState;if(l=C.element,h.isDehydrated)if(h={element:l,isDehydrated:!1,cache:C.cache,pendingSuspenseBoundaries:C.pendingSuspenseBoundaries,transitions:C.transitions},n.updateQueue.baseState=h,n.memoizedState=h,n.flags&256){u=eo(Error(a(423)),n),n=Pp(e,n,l,o,u);break e}else if(l!==u){u=eo(Error(a(424)),n),n=Pp(e,n,l,o,u);break e}else for(yr=On(n.stateNode.containerInfo.firstChild),mr=n,rt=!0,Ur=null,o=zf(n,null,l,o),n.child=o;o;)o.flags=o.flags&-3|4096,o=o.sibling;else{if(Ga(),l===u){n=_n(e,n,o);break e}Wt(e,n,l,o)}n=n.child}return n;case 5:return Kf(n),e===null&&ac(n),l=n.type,u=n.pendingProps,h=e!==null?e.memoizedProps:null,C=u.children,Gl(l,u)?C=null:h!==null&&Gl(l,h)&&(n.flags|=32),Tp(e,n),Wt(e,n,C,o),n.child;case 6:return e===null&&ac(n),null;case 13:return Rp(e,n,o);case 4:return fc(n,n.stateNode.containerInfo),l=n.pendingProps,e===null?n.child=Qa(n,null,l,o):Wt(e,n,l,o),n.child;case 11:return l=n.type,u=n.pendingProps,u=n.elementType===l?u:zr(l,u),Sp(e,n,l,u,o);case 7:return Wt(e,n,n.pendingProps,o),n.child;case 8:return Wt(e,n,n.pendingProps.children,o),n.child;case 12:return Wt(e,n,n.pendingProps.children,o),n.child;case 10:e:{if(l=n.type._context,u=n.pendingProps,h=n.memoizedProps,C=u.value,Qe(as,l._currentValue),l._currentValue=C,h!==null)if(Fr(h.value,C)){if(h.children===u.children&&!Xt.current){n=_n(e,n,o);break e}}else for(h=n.child,h!==null&&(h.return=n);h!==null;){var k=h.dependencies;if(k!==null){C=h.child;for(var P=k.firstContext;P!==null;){if(P.context===l){if(h.tag===1){P=Cn(-1,o&-o),P.tag=2;var z=h.updateQueue;if(z!==null){z=z.shared;var Q=z.pending;Q===null?P.next=P:(P.next=Q.next,Q.next=P),z.pending=P}}h.lanes|=o,P=h.alternate,P!==null&&(P.lanes|=o),cc(h.return,o,n),k.lanes|=o;break}P=P.next}}else if(h.tag===10)C=h.type===n.type?null:h.child;else if(h.tag===18){if(C=h.return,C===null)throw Error(a(341));C.lanes|=o,k=C.alternate,k!==null&&(k.lanes|=o),cc(C,o,n),C=h.sibling}else C=h.child;if(C!==null)C.return=h;else for(C=h;C!==null;){if(C===n){C=null;break}if(h=C.sibling,h!==null){h.return=C.return,C=h;break}C=C.return}h=C}Wt(e,n,u.children,o),n=n.child}return n;case 9:return u=n.type,l=n.pendingProps.children,Ja(n,o),u=Rr(u),l=l(u),n.flags|=1,Wt(e,n,l,o),n.child;case 14:return l=n.type,u=zr(l,n.pendingProps),u=zr(l.type,u),xp(e,n,l,u,o);case 15:return Ep(e,n,n.type,n.pendingProps,o);case 17:return l=n.type,u=n.pendingProps,u=n.elementType===l?u:zr(l,u),ys(e,n),n.tag=1,er(l)?(e=!0,Ji(n)):e=!1,Ja(n,o),mp(n,l,u),kc(n,l,u,o),Pc(null,n,l,!0,e,o);case 19:return Np(e,n,o);case 22:return kp(e,n,o)}throw Error(a(156,n.tag))};function rh(e,n){return ft(e,n)}function ig(e,n,o,l){this.tag=e,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=l,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lr(e,n,o,l){return new ig(e,n,o,l)}function Gc(e){return e=e.prototype,!(!e||!e.isReactComponent)}function sg(e){if(typeof e=="function")return Gc(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ie)return 11;if(e===$e)return 14}return 2}function Gn(e,n){var o=e.alternate;return o===null?(o=Lr(e.tag,n,e.key,e.mode),o.elementType=e.elementType,o.type=e.type,o.stateNode=e.stateNode,o.alternate=e,e.alternate=o):(o.pendingProps=n,o.type=e.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=e.flags&14680064,o.childLanes=e.childLanes,o.lanes=e.lanes,o.child=e.child,o.memoizedProps=e.memoizedProps,o.memoizedState=e.memoizedState,o.updateQueue=e.updateQueue,n=e.dependencies,o.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},o.sibling=e.sibling,o.index=e.index,o.ref=e.ref,o}function Is(e,n,o,l,u,h){var C=2;if(l=e,typeof e=="function")Gc(e)&&(C=1);else if(typeof e=="string")C=5;else e:switch(e){case x:return Sa(o.children,u,h,n);case W:C=8,u|=8;break;case re:return e=Lr(12,o,n,u|2),e.elementType=re,e.lanes=h,e;case ve:return e=Lr(13,o,n,u),e.elementType=ve,e.lanes=h,e;case ge:return e=Lr(19,o,n,u),e.elementType=ge,e.lanes=h,e;case oe:return bs(o,u,h,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ee:C=10;break e;case Z:C=9;break e;case ie:C=11;break e;case $e:C=14;break e;case ke:C=16,l=null;break e}throw Error(a(130,e==null?e:typeof e,""))}return n=Lr(C,o,n,u),n.elementType=e,n.type=l,n.lanes=h,n}function Sa(e,n,o,l){return e=Lr(7,e,l,n),e.lanes=o,e}function bs(e,n,o,l){return e=Lr(22,e,l,n),e.elementType=oe,e.lanes=o,e.stateNode={isHidden:!1},e}function Qc(e,n,o){return e=Lr(6,e,null,n),e.lanes=o,e}function Zc(e,n,o){return n=Lr(4,e.children!==null?e.children:[],e.key,n),n.lanes=o,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function lg(e,n,o,l,u){this.tag=n,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=El(0),this.expirationTimes=El(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=El(0),this.identifierPrefix=l,this.onRecoverableError=u,this.mutableSourceEagerHydrationData=null}function Jc(e,n,o,l,u,h,C,k,P){return e=new lg(e,n,o,k,P),n===1?(n=1,h===!0&&(n|=8)):n=0,h=Lr(3,null,null,n),e.current=h,h.stateNode=e,h.memoizedState={element:l,isDehydrated:o,cache:null,transitions:null,pendingSuspenseBoundaries:null},dc(h),e}function cg(e,n,o){var l=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:q,key:l==null?null:""+l,children:e,containerInfo:n,implementation:o}}function nh(e){if(!e)return Un;e=e._reactInternals;e:{if(fe(e)!==e||e.tag!==1)throw Error(a(170));var n=e;do{switch(n.tag){case 3:n=n.stateNode.context;break e;case 1:if(er(n.type)){n=n.stateNode.__reactInternalMemoizedMergedChildContext;break e}}n=n.return}while(n!==null);throw Error(a(171))}if(e.tag===1){var o=e.type;if(er(o))return Af(e,o,n)}return n}function ah(e,n,o,l,u,h,C,k,P){return e=Jc(o,l,!0,e,u,h,C,k,P),e.context=nh(null),o=e.current,l=Kt(),u=Yn(o),h=Cn(l,u),h.callback=n??null,Vn(o,h,u),e.current.lanes=u,To(e,u,l),nr(e,l),e}function Ps(e,n,o,l){var u=n.current,h=Kt(),C=Yn(u);return o=nh(o),n.context===null?n.context=o:n.pendingContext=o,n=Cn(h,C),n.payload={element:e},l=l===void 0?null:l,l!==null&&(n.callback=l),e=Vn(u,n,C),e!==null&&(Hr(e,u,C,h),is(e,u,C)),C}function Rs(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 oh(e,n){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var o=e.retryLane;e.retryLane=o!==0&&o<n?o:n}}function Xc(e,n){oh(e,n),(e=e.alternate)&&oh(e,n)}function ug(){return null}var ih=typeof reportError=="function"?reportError:function(e){console.error(e)};function eu(e){this._internalRoot=e}As.prototype.render=eu.prototype.render=function(e){var n=this._internalRoot;if(n===null)throw Error(a(409));Ps(e,n,null,null)},As.prototype.unmount=eu.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var n=e.containerInfo;wa(function(){Ps(null,e,null,null)}),n[mn]=null}};function As(e){this._internalRoot=e}As.prototype.unstable_scheduleHydration=function(e){if(e){var n=Bd();e={blockedOn:null,target:e,priority:n};for(var o=0;o<Mn.length&&n!==0&&n<Mn[o].priority;o++);Mn.splice(o,0,e),o===0&&Wd(e)}};function tu(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function Ns(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function sh(){}function dg(e,n,o,l,u){if(u){if(typeof l=="function"){var h=l;l=function(){var z=Rs(C);h.call(z)}}var C=ah(n,l,e,0,null,!1,!1,"",sh);return e._reactRootContainer=C,e[mn]=C.current,Uo(e.nodeType===8?e.parentNode:e),wa(),C}for(;u=e.lastChild;)e.removeChild(u);if(typeof l=="function"){var k=l;l=function(){var z=Rs(P);k.call(z)}}var P=Jc(e,0,!1,null,null,!1,!1,"",sh);return e._reactRootContainer=P,e[mn]=P.current,Uo(e.nodeType===8?e.parentNode:e),wa(function(){Ps(n,P,o,l)}),P}function Ls(e,n,o,l,u){var h=o._reactRootContainer;if(h){var C=h;if(typeof u=="function"){var k=u;u=function(){var P=Rs(C);k.call(P)}}Ps(n,C,e,u)}else C=dg(o,n,e,u,l);return Rs(C)}Ud=function(e){switch(e.tag){case 3:var n=e.stateNode;if(n.current.memoizedState.isDehydrated){var o=ua(n.pendingLanes);o!==0&&(kl(n,o|1),nr(n,He()),(Ue&6)===0&&(no=He()+500,zn()))}break;case 13:wa(function(){var l=wn(e,1);if(l!==null){var u=Kt();Hr(l,e,1,u)}}),Xc(e,1)}},Tl=function(e){if(e.tag===13){var n=wn(e,134217728);if(n!==null){var o=Kt();Hr(n,e,134217728,o)}Xc(e,134217728)}},zd=function(e){if(e.tag===13){var n=Yn(e),o=wn(e,n);if(o!==null){var l=Kt();Hr(o,e,n,l)}Xc(e,n)}},Bd=function(){return We},Vd=function(e,n){var o=We;try{return We=e,n()}finally{We=o}},bn=function(e,n,o){switch(n){case"input":if(Mt(e,o),n=o.name,o.type==="radio"&&n!=null){for(o=e;o.parentNode;)o=o.parentNode;for(o=o.querySelectorAll("input[name="+JSON.stringify(""+n)+'][type="radio"]'),n=0;n<o.length;n++){var l=o[n];if(l!==e&&l.form===e.form){var u=Qi(l);if(!u)throw Error(a(90));ut(l),Mt(l,u)}}}break;case"textarea":at(e,o);break;case"select":n=o.value,n!=null&&ur(e,!!o.multiple,n,!1)}},xo=Kc,oa=wa;var fg={usingClientEntryPoint:!1,Events:[Vo,Ha,Qi,So,Li,Kc]},ni={findFiberByHostInstance:da,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},pg={bundleType:ni.bundleType,version:ni.version,rendererPackageName:ni.rendererPackageName,rendererConfig:ni.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:O.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=De(e),e===null?null:e.stateNode},findFiberByHostInstance:ni.findFiberByHostInstance||ug,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 js=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!js.isDisabled&&js.supportsFiber)try{fn=js.inject(pg),Ht=js}catch{}}return ar.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=fg,ar.createPortal=function(e,n){var o=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!tu(n))throw Error(a(200));return cg(e,n,null,o)},ar.createRoot=function(e,n){if(!tu(e))throw Error(a(299));var o=!1,l="",u=ih;return n!=null&&(n.unstable_strictMode===!0&&(o=!0),n.identifierPrefix!==void 0&&(l=n.identifierPrefix),n.onRecoverableError!==void 0&&(u=n.onRecoverableError)),n=Jc(e,1,!1,null,null,o,!1,l,u),e[mn]=n.current,Uo(e.nodeType===8?e.parentNode:e),new eu(n)},ar.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var n=e._reactInternals;if(n===void 0)throw typeof e.render=="function"?Error(a(188)):(e=Object.keys(e).join(","),Error(a(268,e)));return e=De(n),e=e===null?null:e.stateNode,e},ar.flushSync=function(e){return wa(e)},ar.hydrate=function(e,n,o){if(!Ns(n))throw Error(a(200));return Ls(null,e,n,!0,o)},ar.hydrateRoot=function(e,n,o){if(!tu(e))throw Error(a(405));var l=o!=null&&o.hydratedSources||null,u=!1,h="",C=ih;if(o!=null&&(o.unstable_strictMode===!0&&(u=!0),o.identifierPrefix!==void 0&&(h=o.identifierPrefix),o.onRecoverableError!==void 0&&(C=o.onRecoverableError)),n=ah(n,null,e,1,o??null,u,!1,h,C),e[mn]=n.current,Uo(e),l)for(e=0;e<l.length;e++)o=l[e],u=o._getVersion,u=u(o._source),n.mutableSourceEagerHydrationData==null?n.mutableSourceEagerHydrationData=[o,u]:n.mutableSourceEagerHydrationData.push(o,u);return new As(n)},ar.render=function(e,n,o){if(!Ns(n))throw Error(a(200));return Ls(null,e,n,!1,o)},ar.unmountComponentAtNode=function(e){if(!Ns(e))throw Error(a(40));return e._reactRootContainer?(wa(function(){Ls(null,null,e,!1,function(){e._reactRootContainer=null,e[mn]=null})}),!0):!1},ar.unstable_batchedUpdates=Kc,ar.unstable_renderSubtreeIntoContainer=function(e,n,o,l){if(!Ns(o))throw Error(a(200));if(e==null||e._reactInternals===void 0)throw Error(a(38));return Ls(e,n,o,!1,l)},ar.version="18.3.1-next-f1338f8080-20240426",ar}var mh;function Um(){if(mh)return au.exports;mh=1;function r(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(t){console.error(t)}}return r(),au.exports=Eg(),au.exports}var yh;function kg(){if(yh)return Ms;yh=1;var r=Um();return Ms.createRoot=r.createRoot,Ms.hydrateRoot=r.hydrateRoot,Ms}var Tg=kg();const Ig=Co(Tg),bg="modulepreload",Pg=function(r){return"/"+r},gh={},et=function(t,a,i){let s=Promise.resolve();if(a&&a.length>0){let d=function(m){return Promise.all(m.map(y=>Promise.resolve(y).then(v=>({status:"fulfilled",value:v}),v=>({status:"rejected",reason:v}))))};document.getElementsByTagName("link");const f=document.querySelector("meta[property=csp-nonce]"),p=(f==null?void 0:f.nonce)||(f==null?void 0:f.getAttribute("nonce"));s=d(a.map(m=>{if(m=Pg(m),m in gh)return;gh[m]=!0;const y=m.endsWith(".css"),v=y?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${v}`))return;const w=document.createElement("link");if(w.rel=y?"stylesheet":bg,y||(w.as="script"),w.crossOrigin="",w.href=m,p&&w.setAttribute("nonce",p),document.head.appendChild(w),y)return new Promise((S,E)=>{w.addEventListener("load",S),w.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${m}`)))})}))}function c(d){const f=new Event("vite:preloadError",{cancelable:!0});if(f.payload=d,window.dispatchEvent(f),!f.defaultPrevented)throw d}return s.then(d=>{for(const f of d||[])f.status==="rejected"&&c(f.reason);return t().catch(c)})};/**
 * react-router v7.12.0
 *
 * Copyright (c) Remix Software Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE.md file in the root directory of this source tree.
 *
 * @license MIT
 */var zm=r=>{throw TypeError(r)},Rg=(r,t,a)=>t.has(r)||zm("Cannot "+a),su=(r,t,a)=>(Rg(r,t,"read from private field"),a?a.call(r):t.get(r)),Ag=(r,t,a)=>t.has(r)?zm("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,a),vh="popstate";function Ng(r={}){function t(i,s){let{pathname:c,search:d,hash:f}=i.location;return gi("",{pathname:c,search:d,hash:f},s.state&&s.state.usr||null,s.state&&s.state.key||"default")}function a(i,s){return typeof s=="string"?s:sn(s)}return jg(t,a,null,r)}function Le(r,t){if(r===!1||r===null||typeof r>"u")throw new Error(t)}function st(r,t){if(!r){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Lg(){return Math.random().toString(36).substring(2,10)}function wh(r,t){return{usr:r.state,key:r.key,idx:t}}function gi(r,t,a=null,i){return{pathname:typeof r=="string"?r:r.pathname,search:"",hash:"",...typeof t=="string"?ra(t):t,state:a,key:t&&t.key||i||Lg()}}function sn({pathname:r="/",search:t="",hash:a=""}){return t&&t!=="?"&&(r+=t.charAt(0)==="?"?t:"?"+t),a&&a!=="#"&&(r+=a.charAt(0)==="#"?a:"#"+a),r}function ra(r){let t={};if(r){let a=r.indexOf("#");a>=0&&(t.hash=r.substring(a),r=r.substring(0,a));let i=r.indexOf("?");i>=0&&(t.search=r.substring(i),r=r.substring(0,i)),r&&(t.pathname=r)}return t}function jg(r,t,a,i={}){let{window:s=document.defaultView,v5Compat:c=!1}=i,d=s.history,f="POP",p=null,m=y();m==null&&(m=0,d.replaceState({...d.state,idx:m},""));function y(){return(d.state||{idx:null}).idx}function v(){f="POP";let N=y(),D=N==null?null:N-m;m=N,p&&p({action:f,location:I.location,delta:D})}function w(N,D){f="PUSH";let b=gi(I.location,N,D);m=y()+1;let B=wh(b,m),O=I.createHref(b);try{d.pushState(B,"",O)}catch(j){if(j instanceof DOMException&&j.name==="DataCloneError")throw j;s.location.assign(O)}c&&p&&p({action:f,location:I.location,delta:1})}function S(N,D){f="REPLACE";let b=gi(I.location,N,D);m=y();let B=wh(b,m),O=I.createHref(b);d.replaceState(B,"",O),c&&p&&p({action:f,location:I.location,delta:0})}function E(N){return Bm(N)}let I={get action(){return f},get location(){return r(s,d)},listen(N){if(p)throw new Error("A history only accepts one active listener");return s.addEventListener(vh,v),p=N,()=>{s.removeEventListener(vh,v),p=null}},createHref(N){return t(s,N)},createURL:E,encodeLocation(N){let D=E(N);return{pathname:D.pathname,search:D.search,hash:D.hash}},push:w,replace:S,go(N){return d.go(N)}};return I}function Bm(r,t=!1){let a="http://localhost";typeof window<"u"&&(a=window.location.origin!=="null"?window.location.origin:window.location.href),Le(a,"No window.location.(origin|href) available to create URL");let i=typeof r=="string"?r:sn(r);return i=i.replace(/ $/,"%20"),!t&&i.startsWith("//")&&(i=a+i),new URL(i,a)}var fi,Ch=class{constructor(r){if(Ag(this,fi,new Map),r)for(let[t,a]of r)this.set(t,a)}get(r){if(su(this,fi).has(r))return su(this,fi).get(r);if(r.defaultValue!==void 0)return r.defaultValue;throw new Error("No value found for context")}set(r,t){su(this,fi).set(r,t)}};fi=new WeakMap;var Mg=new Set(["lazy","caseSensitive","path","id","index","children"]);function Dg(r){return Mg.has(r)}var $g=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function Og(r){return $g.has(r)}function Fg(r){return r.index===!0}function vi(r,t,a=[],i={},s=!1){return r.map((c,d)=>{let f=[...a,String(d)],p=typeof c.id=="string"?c.id:f.join("-");if(Le(c.index!==!0||!c.children,"Cannot specify children on an index route"),Le(s||!i[p],`Found a route id collision on id "${p}".  Route id's must be globally unique within Data Router usages`),Fg(c)){let m={...c,id:p};return i[p]=_h(m,t(m)),m}else{let m={...c,id:p,children:void 0};return i[p]=_h(m,t(m)),c.children&&(m.children=vi(c.children,t,f,i,s)),m}})}function _h(r,t){return Object.assign(r,{...t,...typeof t.lazy=="object"&&t.lazy!=null?{lazy:{...r.lazy,...t.lazy}}:{}})}function Zn(r,t,a="/"){return pi(r,t,a,!1)}function pi(r,t,a,i){let s=typeof t=="string"?ra(t):t,c=Dr(s.pathname||"/",a);if(c==null)return null;let d=Vm(r);zg(d);let f=null;for(let p=0;f==null&&p<d.length;++p){let m=Wm(c);f=Qg(d[p],m,i)}return f}function Ug(r,t){let{route:a,pathname:i,params:s}=r;return{id:a.id,pathname:i,params:s,data:t[a.id],loaderData:t[a.id],handle:a.handle}}function Vm(r,t=[],a=[],i="",s=!1){let c=(d,f,p=s,m)=>{let y={relativePath:m===void 0?d.path||"":m,caseSensitive:d.caseSensitive===!0,childrenIndex:f,route:d};if(y.relativePath.startsWith("/")){if(!y.relativePath.startsWith(i)&&p)return;Le(y.relativePath.startsWith(i),`Absolute route path "${y.relativePath}" nested under path "${i}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),y.relativePath=y.relativePath.slice(i.length)}let v=an([i,y.relativePath]),w=a.concat(y);d.children&&d.children.length>0&&(Le(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${v}".`),Vm(d.children,t,w,v,p)),!(d.path==null&&!d.index)&&t.push({path:v,score:qg(v,d.index),routesMeta:w})};return r.forEach((d,f)=>{var p;if(d.path===""||!((p=d.path)!=null&&p.includes("?")))c(d,f);else for(let m of Hm(d.path))c(d,f,!0,m)}),t}function Hm(r){let t=r.split("/");if(t.length===0)return[];let[a,...i]=t,s=a.endsWith("?"),c=a.replace(/\?$/,"");if(i.length===0)return s?[c,""]:[c];let d=Hm(i.join("/")),f=[];return f.push(...d.map(p=>p===""?c:[c,p].join("/"))),s&&f.push(...d),f.map(p=>r.startsWith("/")&&p===""?"/":p)}function zg(r){r.sort((t,a)=>t.score!==a.score?a.score-t.score:Gg(t.routesMeta.map(i=>i.childrenIndex),a.routesMeta.map(i=>i.childrenIndex)))}var Bg=/^:[\w-]+$/,Vg=3,Hg=2,Wg=1,Kg=10,Yg=-2,Sh=r=>r==="*";function qg(r,t){let a=r.split("/"),i=a.length;return a.some(Sh)&&(i+=Yg),t&&(i+=Hg),a.filter(s=>!Sh(s)).reduce((s,c)=>s+(Bg.test(c)?Vg:c===""?Wg:Kg),i)}function Gg(r,t){return r.length===t.length&&r.slice(0,-1).every((i,s)=>i===t[s])?r[r.length-1]-t[t.length-1]:0}function Qg(r,t,a=!1){let{routesMeta:i}=r,s={},c="/",d=[];for(let f=0;f<i.length;++f){let p=i[f],m=f===i.length-1,y=c==="/"?t:t.slice(c.length)||"/",v=wi({path:p.relativePath,caseSensitive:p.caseSensitive,end:m},y),w=p.route;if(!v&&m&&a&&!i[i.length-1].route.index&&(v=wi({path:p.relativePath,caseSensitive:p.caseSensitive,end:!1},y)),!v)return null;Object.assign(s,v.params),d.push({params:s,pathname:an([c,v.pathname]),pathnameBase:e2(an([c,v.pathnameBase])),route:w}),v.pathnameBase!=="/"&&(c=an([c,v.pathnameBase]))}return d}function wi(r,t){typeof r=="string"&&(r={path:r,caseSensitive:!1,end:!0});let[a,i]=Zg(r.path,r.caseSensitive,r.end),s=t.match(a);if(!s)return null;let c=s[0],d=c.replace(/(.)\/+$/,"$1"),f=s.slice(1);return{params:i.reduce((m,{paramName:y,isOptional:v},w)=>{if(y==="*"){let E=f[w]||"";d=c.slice(0,c.length-E.length).replace(/(.)\/+$/,"$1")}const S=f[w];return v&&!S?m[y]=void 0:m[y]=(S||"").replace(/%2F/g,"/"),m},{}),pathname:c,pathnameBase:d,pattern:r}}function Zg(r,t=!1,a=!0){st(r==="*"||!r.endsWith("*")||r.endsWith("/*"),`Route path "${r}" will be treated as if it were "${r.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${r.replace(/\*$/,"/*")}".`);let i=[],s="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(d,f,p)=>(i.push({paramName:f,isOptional:p!=null}),p?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return r.endsWith("*")?(i.push({paramName:"*"}),s+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):a?s+="\\/*$":r!==""&&r!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,t?void 0:"i"),i]}function Wm(r){try{return r.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return st(!1,`The URL path "${r}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),r}}function Dr(r,t){if(t==="/")return r;if(!r.toLowerCase().startsWith(t.toLowerCase()))return null;let a=t.endsWith("/")?t.length-1:t.length,i=r.charAt(a);return i&&i!=="/"?null:r.slice(a)||"/"}function Jg({basename:r,pathname:t}){return t==="/"?r:an([r,t])}var Km=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,il=r=>Km.test(r);function Xg(r,t="/"){let{pathname:a,search:i="",hash:s=""}=typeof r=="string"?ra(r):r,c;if(a)if(il(a))c=a;else{if(a.includes("//")){let d=a;a=a.replace(/\/\/+/g,"/"),st(!1,`Pathnames cannot have embedded double slashes - normalizing ${d} -> ${a}`)}a.startsWith("/")?c=xh(a.substring(1),"/"):c=xh(a,t)}else c=t;return{pathname:c,search:t2(i),hash:r2(s)}}function xh(r,t){let a=t.replace(/\/+$/,"").split("/");return r.split("/").forEach(s=>{s===".."?a.length>1&&a.pop():s!=="."&&a.push(s)}),a.length>1?a.join("/"):"/"}function lu(r,t,a,i){return`Cannot include a '${r}' character in a manually specified \`to.${t}\` field [${JSON.stringify(i)}].  Please separate it out to the \`to.${a}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Ym(r){return r.filter((t,a)=>a===0||t.route.path&&t.route.path.length>0)}function sl(r){let t=Ym(r);return t.map((a,i)=>i===t.length-1?a.pathname:a.pathnameBase)}function ll(r,t,a,i=!1){let s;typeof r=="string"?s=ra(r):(s={...r},Le(!s.pathname||!s.pathname.includes("?"),lu("?","pathname","search",s)),Le(!s.pathname||!s.pathname.includes("#"),lu("#","pathname","hash",s)),Le(!s.search||!s.search.includes("#"),lu("#","search","hash",s)));let c=r===""||s.pathname==="",d=c?"/":s.pathname,f;if(d==null)f=a;else{let v=t.length-1;if(!i&&d.startsWith("..")){let w=d.split("/");for(;w[0]==="..";)w.shift(),v-=1;s.pathname=w.join("/")}f=v>=0?t[v]:"/"}let p=Xg(s,f),m=d&&d!=="/"&&d.endsWith("/"),y=(c||d===".")&&a.endsWith("/");return!p.pathname.endsWith("/")&&(m||y)&&(p.pathname+="/"),p}var an=r=>r.join("/").replace(/\/\/+/g,"/"),e2=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),t2=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,r2=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r,ki=class{constructor(r,t,a,i=!1){this.status=r,this.statusText=t||"",this.internal=i,a instanceof Error?(this.data=a.toString(),this.error=a):this.data=a}};function Ci(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}function Ti(r){return r.map(t=>t.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var qm=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Gm(r,t){let a=r;if(typeof a!="string"||!Km.test(a))return{absoluteURL:void 0,isExternal:!1,to:a};let i=a,s=!1;if(qm)try{let c=new URL(window.location.href),d=a.startsWith("//")?new URL(c.protocol+a):new URL(a),f=Dr(d.pathname,t);d.origin===c.origin&&f!=null?a=f+d.search+d.hash:s=!0}catch{st(!1,`<Link to="${a}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:i,isExternal:s,to:a}}var Xn=Symbol("Uninstrumented");function n2(r,t){let a={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};r.forEach(s=>s({id:t.id,index:t.index,path:t.path,instrument(c){let d=Object.keys(a);for(let f of d)c[f]&&a[f].push(c[f])}}));let i={};if(typeof t.lazy=="function"&&a.lazy.length>0){let s=co(a.lazy,t.lazy,()=>{});s&&(i.lazy=s)}if(typeof t.lazy=="object"){let s=t.lazy;["middleware","loader","action"].forEach(c=>{let d=s[c],f=a[`lazy.${c}`];if(typeof d=="function"&&f.length>0){let p=co(f,d,()=>{});p&&(i.lazy=Object.assign(i.lazy||{},{[c]:p}))}})}return["loader","action"].forEach(s=>{let c=t[s];if(typeof c=="function"&&a[s].length>0){let d=c[Xn]??c,f=co(a[s],d,(...p)=>Eh(p[0]));f&&(s==="loader"&&d.hydrate===!0&&(f.hydrate=!0),f[Xn]=d,i[s]=f)}}),t.middleware&&t.middleware.length>0&&a.middleware.length>0&&(i.middleware=t.middleware.map(s=>{let c=s[Xn]??s,d=co(a.middleware,c,(...f)=>Eh(f[0]));return d?(d[Xn]=c,d):s})),i}function a2(r,t){let a={navigate:[],fetch:[]};if(t.forEach(i=>i({instrument(s){let c=Object.keys(s);for(let d of c)s[d]&&a[d].push(s[d])}})),a.navigate.length>0){let i=r.navigate[Xn]??r.navigate,s=co(a.navigate,i,(...c)=>{let[d,f]=c;return{to:typeof d=="number"||typeof d=="string"?d:d?sn(d):".",...kh(r,f??{})}});s&&(s[Xn]=i,r.navigate=s)}if(a.fetch.length>0){let i=r.fetch[Xn]??r.fetch,s=co(a.fetch,i,(...c)=>{let[d,,f,p]=c;return{href:f??".",fetcherKey:d,...kh(r,p??{})}});s&&(s[Xn]=i,r.fetch=s)}return r}function co(r,t,a){return r.length===0?null:async(...i)=>{let s=await Qm(r,a(...i),()=>t(...i),r.length-1);if(s.type==="error")throw s.value;return s.value}}async function Qm(r,t,a,i){let s=r[i],c;if(s){let d,f=async()=>(d?console.error("You cannot call instrumented handlers more than once"):d=Qm(r,t,a,i-1),c=await d,Le(c,"Expected a result"),c.type==="error"&&c.value instanceof Error?{status:"error",error:c.value}:{status:"success",error:void 0});try{await s(f,t)}catch(p){console.error("An instrumentation function threw an error:",p)}d||await f(),await d}else try{c={type:"success",value:await a()}}catch(d){c={type:"error",value:d}}return c||{type:"error",value:new Error("No result assigned in instrumentation chain.")}}function Eh(r){let{request:t,context:a,params:i,unstable_pattern:s}=r;return{request:o2(t),params:{...i},unstable_pattern:s,context:i2(a)}}function kh(r,t){return{currentUrl:sn(r.state.location),..."formMethod"in t?{formMethod:t.formMethod}:{},..."formEncType"in t?{formEncType:t.formEncType}:{},..."formData"in t?{formData:t.formData}:{},..."body"in t?{body:t.body}:{}}}function o2(r){return{method:r.method,url:r.url,headers:{get:(...t)=>r.headers.get(...t)}}}function i2(r){if(l2(r)){let t={...r};return Object.freeze(t),t}else return{get:t=>r.get(t)}}var s2=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function l2(r){if(r===null||typeof r!="object")return!1;const t=Object.getPrototypeOf(r);return t===Object.prototype||t===null||Object.getOwnPropertyNames(t).sort().join("\0")===s2}var Zm=["POST","PUT","PATCH","DELETE"],c2=new Set(Zm),u2=["GET",...Zm],d2=new Set(u2),Jm=new Set([301,302,303,307,308]),f2=new Set([307,308]),cu={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},p2={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},oi={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},h2=r=>({hasErrorBoundary:!!r.hasErrorBoundary}),Xm="remix-router-transitions",e0=Symbol("ResetLoaderData");function m2(r){const t=r.window?r.window:typeof window<"u"?window:void 0,a=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u";Le(r.routes.length>0,"You must provide a non-empty routes array to createRouter");let i=r.hydrationRouteProperties||[],s=r.mapRouteProperties||h2,c=s;if(r.unstable_instrumentations){let T=r.unstable_instrumentations;c=L=>({...s(L),...n2(T.map(U=>U.route).filter(Boolean),L)})}let d={},f=vi(r.routes,c,void 0,d),p,m=r.basename||"/";m.startsWith("/")||(m=`/${m}`);let y=r.dataStrategy||C2,v={...r.future},w=null,S=new Set,E=null,I=null,N=null,D=r.hydrationData!=null,b=Zn(f,r.history.location,m),B=!1,O=null,j;if(b==null&&!r.patchRoutesOnNavigation){let T=Mr(404,{pathname:r.history.location.pathname}),{matches:L,route:U}=Ds(f);j=!0,b=L,O={[U.id]:T}}else if(b&&!r.hydrationData&&oa(b,f,r.history.location.pathname).active&&(b=null),b)if(b.some(T=>T.route.lazy))j=!1;else if(!b.some(T=>yd(T.route)))j=!0;else{let T=r.hydrationData?r.hydrationData.loaderData:null,L=r.hydrationData?r.hydrationData.errors:null;if(L){let U=b.findIndex(G=>L[G.route.id]!==void 0);j=b.slice(0,U+1).every(G=>!Yu(G.route,T,L))}else j=b.every(U=>!Yu(U.route,T,L))}else{j=!1,b=[];let T=oa(null,f,r.history.location.pathname);T.active&&T.matches&&(B=!0,b=T.matches)}let q,x={historyAction:r.history.action,location:r.history.location,matches:b,initialized:j,navigation:cu,restoreScrollPosition:r.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:r.hydrationData&&r.hydrationData.loaderData||{},actionData:r.hydrationData&&r.hydrationData.actionData||null,errors:r.hydrationData&&r.hydrationData.errors||O,fetchers:new Map,blockers:new Map},W="POP",re=null,ee=!1,Z,ie=!1,ve=new Map,ge=null,$e=!1,ke=!1,oe=new Set,H=new Map,ae=0,X=-1,A=new Map,V=new Set,Ce=new Map,Ee=new Map,_e=new Set,Te=new Map,Fe,je=null;function Ve(){if(w=r.history.listen(({action:T,location:L,delta:U})=>{if(Fe){Fe(),Fe=void 0;return}st(Te.size===0||U!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs.  This can also happen if you are using createHashRouter and the user manually changes the URL.");let G=dn({currentLocation:x.location,nextLocation:L,historyAction:T});if(G&&U!=null){let ne=new Promise(he=>{Fe=he});r.history.go(U*-1),bn(G,{state:"blocked",location:L,proceed(){bn(G,{state:"proceeding",proceed:void 0,reset:void 0,location:L}),ne.then(()=>r.history.go(U))},reset(){let he=new Map(x.blockers);he.set(G,oi),ut({blockers:he})}}),re==null||re.resolve(),re=null;return}return Ye(T,L)}),a){O2(t,ve);let T=()=>F2(t,ve);t.addEventListener("pagehide",T),ge=()=>t.removeEventListener("pagehide",T)}return x.initialized||Ye("POP",x.location,{initialHydration:!0}),q}function Pt(){w&&w(),ge&&ge(),S.clear(),Z&&Z.abort(),x.fetchers.forEach((T,L)=>un(L)),x.blockers.forEach((T,L)=>Da(L))}function Tn(T){return S.add(T),()=>S.delete(T)}function ut(T,L={}){T.matches&&(T.matches=T.matches.map(ne=>{let he=d[ne.route.id],we=ne.route;return we.element!==he.element||we.errorElement!==he.errorElement||we.hydrateFallbackElement!==he.hydrateFallbackElement?{...ne,route:he}:ne})),x={...x,...T};let U=[],G=[];x.fetchers.forEach((ne,he)=>{ne.state==="idle"&&(_e.has(he)?U.push(he):G.push(he))}),_e.forEach(ne=>{!x.fetchers.has(ne)&&!H.has(ne)&&U.push(ne)}),[...S].forEach(ne=>ne(x,{deletedFetchers:U,newErrors:T.errors??null,viewTransitionOpts:L.viewTransitionOpts,flushSync:L.flushSync===!0})),U.forEach(ne=>un(ne)),G.forEach(ne=>x.fetchers.delete(ne))}function Vt(T,L,{flushSync:U}={}){var be,ye;let G=x.actionData!=null&&x.navigation.formMethod!=null&&Bt(x.navigation.formMethod)&&x.navigation.state==="loading"&&((be=T.state)==null?void 0:be._isRedirect)!==!0,ne;L.actionData?Object.keys(L.actionData).length>0?ne=L.actionData:ne=null:G?ne=x.actionData:ne=null;let he=L.loaderData?Mh(x.loaderData,L.loaderData,L.matches||[],L.errors):x.loaderData,we=x.blockers;we.size>0&&(we=new Map(we),we.forEach((Re,De)=>we.set(De,oi)));let le=$e?!1:xo(T,L.matches||x.matches),ue=ee===!0||x.navigation.formMethod!=null&&Bt(x.navigation.formMethod)&&((ye=T.state)==null?void 0:ye._isRedirect)!==!0;p&&(f=p,p=void 0),$e||W==="POP"||(W==="PUSH"?r.history.push(T,T.state):W==="REPLACE"&&r.history.replace(T,T.state));let fe;if(W==="POP"){let Re=ve.get(x.location.pathname);Re&&Re.has(T.pathname)?fe={currentLocation:x.location,nextLocation:T}:ve.has(T.pathname)&&(fe={currentLocation:T,nextLocation:x.location})}else if(ie){let Re=ve.get(x.location.pathname);Re?Re.add(T.pathname):(Re=new Set([T.pathname]),ve.set(x.location.pathname,Re)),fe={currentLocation:x.location,nextLocation:T}}ut({...L,actionData:ne,loaderData:he,historyAction:W,location:T,initialized:!0,navigation:cu,revalidation:"idle",restoreScrollPosition:le,preventScrollReset:ue,blockers:we},{viewTransitionOpts:fe,flushSync:U===!0}),W="POP",ee=!1,ie=!1,$e=!1,ke=!1,re==null||re.resolve(),re=null,je==null||je.resolve(),je=null}async function cn(T,L){if(re==null||re.resolve(),re=null,typeof T=="number"){re||(re=Fh());let De=re.promise;return r.history.go(T),De}let U=Ku(x.location,x.matches,m,T,L==null?void 0:L.fromRouteId,L==null?void 0:L.relative),{path:G,submission:ne,error:he}=Th(!1,U,L),we=x.location,le=gi(x.location,G,L&&L.state);le={...le,...r.history.encodeLocation(le)};let ue=L&&L.replace!=null?L.replace:void 0,fe="PUSH";ue===!0?fe="REPLACE":ue===!1||ne!=null&&Bt(ne.formMethod)&&ne.formAction===x.location.pathname+x.location.search&&(fe="REPLACE");let be=L&&"preventScrollReset"in L?L.preventScrollReset===!0:void 0,ye=(L&&L.flushSync)===!0,Re=dn({currentLocation:we,nextLocation:le,historyAction:fe});if(Re){bn(Re,{state:"blocked",location:le,proceed(){bn(Re,{state:"proceeding",proceed:void 0,reset:void 0,location:le}),cn(T,L)},reset(){let De=new Map(x.blockers);De.set(Re,oi),ut({blockers:De})}});return}await Ye(fe,le,{submission:ne,pendingError:he,preventScrollReset:be,replace:L&&L.replace,enableViewTransition:L&&L.viewTransition,flushSync:ye,callSiteDefaultShouldRevalidate:L&&L.unstable_defaultShouldRevalidate})}function Ae(){je||(je=Fh()),In(),ut({revalidation:"loading"});let T=je.promise;return x.navigation.state==="submitting"?T:x.navigation.state==="idle"?(Ye(x.historyAction,x.location,{startUninterruptedRevalidation:!0}),T):(Ye(W||x.historyAction,x.navigation.location,{overrideNavigation:x.navigation,enableViewTransition:ie===!0}),T)}async function Ye(T,L,U){Z&&Z.abort(),Z=null,W=T,$e=(U&&U.startUninterruptedRevalidation)===!0,Li(x.location,x.matches),ee=(U&&U.preventScrollReset)===!0,ie=(U&&U.enableViewTransition)===!0;let G=p||f,ne=U&&U.overrideNavigation,he=U!=null&&U.initialHydration&&x.matches&&x.matches.length>0&&!B?x.matches:Zn(G,L,m),we=(U&&U.flushSync)===!0;if(he&&x.initialized&&!ke&&b2(x.location,L)&&!(U&&U.submission&&Bt(U.submission.formMethod))){Vt(L,{matches:he},{flushSync:we});return}let le=oa(he,G,L.pathname);if(le.active&&le.matches&&(he=le.matches),!he){let{error:ft,notFoundMatches:xt,route:Be}=Gr(L.pathname);Vt(L,{matches:xt,loaderData:{},errors:{[Be.id]:ft}},{flushSync:we});return}Z=new AbortController;let ue=lo(r.history,L,Z.signal,U&&U.submission),fe=r.getContext?await r.getContext():new Ch,be;if(U&&U.pendingError)be=[Jn(he).route.id,{type:"error",error:U.pendingError}];else if(U&&U.submission&&Bt(U.submission.formMethod)){let ft=await Mt(ue,L,U.submission,he,fe,le.active,U&&U.initialHydration===!0,{replace:U.replace,flushSync:we});if(ft.shortCircuited)return;if(ft.pendingActionResult){let[xt,Be]=ft.pendingActionResult;if(wr(Be)&&Ci(Be.error)&&Be.error.status===404){Z=null,Vt(L,{matches:ft.matches,loaderData:{},errors:{[xt]:Be.error}});return}}he=ft.matches||he,be=ft.pendingActionResult,ne=uu(L,U.submission),we=!1,le.active=!1,ue=lo(r.history,ue.url,ue.signal)}let{shortCircuited:ye,matches:Re,loaderData:De,errors:mt}=await Dt(ue,L,he,fe,le.active,ne,U&&U.submission,U&&U.fetcherSubmission,U&&U.replace,U&&U.initialHydration===!0,we,be,U&&U.callSiteDefaultShouldRevalidate);ye||(Z=null,Vt(L,{matches:Re||he,...Dh(be),loaderData:De,errors:mt}))}async function Mt(T,L,U,G,ne,he,we,le={}){In();let ue=D2(L,U);if(ut({navigation:ue},{flushSync:le.flushSync===!0}),he){let ye=await Pn(G,L.pathname,T.signal);if(ye.type==="aborted")return{shortCircuited:!0};if(ye.type==="error"){if(ye.partialMatches.length===0){let{matches:De,route:mt}=Ds(f);return{matches:De,pendingActionResult:[mt.id,{type:"error",error:ye.error}]}}let Re=Jn(ye.partialMatches).route.id;return{matches:ye.partialMatches,pendingActionResult:[Re,{type:"error",error:ye.error}]}}else if(ye.matches)G=ye.matches;else{let{notFoundMatches:Re,error:De,route:mt}=Gr(L.pathname);return{matches:Re,pendingActionResult:[mt.id,{type:"error",error:De}]}}}let fe,be=Hs(G,L);if(!be.route.action&&!be.route.lazy)fe={type:"error",error:Mr(405,{method:T.method,pathname:L.pathname,routeId:be.route.id})};else{let ye=po(c,d,T,G,be,we?[]:i,ne),Re=await kr(T,ye,ne,null);if(fe=Re[be.route.id],!fe){for(let De of G)if(Re[De.route.id]){fe=Re[De.route.id];break}}if(T.signal.aborted)return{shortCircuited:!0}}if(Ea(fe)){let ye;return le&&le.replace!=null?ye=le.replace:ye=Nh(fe.response.headers.get("Location"),new URL(T.url),m,r.history)===x.location.pathname+x.location.search,await at(T,fe,!0,{submission:U,replace:ye}),{shortCircuited:!0}}if(wr(fe)){let ye=Jn(G,be.route.id);return(le&&le.replace)!==!0&&(W="PUSH"),{matches:G,pendingActionResult:[ye.route.id,fe,be.route.id]}}return{matches:G,pendingActionResult:[be.route.id,fe]}}async function Dt(T,L,U,G,ne,he,we,le,ue,fe,be,ye,Re){let De=he||uu(L,we),mt=we||le||Oh(De),ft=!$e&&!fe;if(ne){if(ft){let qe=dt(ye);ut({navigation:De,...qe!==void 0?{actionData:qe}:{}},{flushSync:be})}let Oe=await Pn(U,L.pathname,T.signal);if(Oe.type==="aborted")return{shortCircuited:!0};if(Oe.type==="error"){if(Oe.partialMatches.length===0){let{matches:An,route:pn}=Ds(f);return{matches:An,loaderData:{},errors:{[pn.id]:Oe.error}}}let qe=Jn(Oe.partialMatches).route.id;return{matches:Oe.partialMatches,loaderData:{},errors:{[qe]:Oe.error}}}else if(Oe.matches)U=Oe.matches;else{let{error:qe,notFoundMatches:An,route:pn}=Gr(L.pathname);return{matches:An,loaderData:{},errors:{[pn.id]:qe}}}}let xt=p||f,{dsMatches:Be,revalidatingFetchers:Jt}=Ih(T,G,c,d,r.history,x,U,mt,L,fe?[]:i,fe===!0,ke,oe,_e,Ce,V,xt,m,r.patchRoutesOnNavigation!=null,ye,Re);if(X=++ae,!r.dataStrategy&&!Be.some(Oe=>Oe.shouldLoad)&&!Be.some(Oe=>Oe.route.middleware&&Oe.route.middleware.length>0)&&Jt.length===0){let Oe=ja();return Vt(L,{matches:U,loaderData:{},errors:ye&&wr(ye[1])?{[ye[0]]:ye[1].error}:null,...Dh(ye),...Oe?{fetchers:new Map(x.fetchers)}:{}},{flushSync:be}),{shortCircuited:!0}}if(ft){let Oe={};if(!ne){Oe.navigation=De;let qe=dt(ye);qe!==void 0&&(Oe.actionData=qe)}Jt.length>0&&(Oe.fetchers=Rt(Jt)),ut(Oe,{flushSync:be})}Jt.forEach(Oe=>{Tr(Oe.key),Oe.controller&&H.set(Oe.key,Oe.controller)});let He=()=>Jt.forEach(Oe=>Tr(Oe.key));Z&&Z.signal.addEventListener("abort",He);let{loaderResults:sa,fetcherResults:Ir}=await Or(Be,Jt,T,G);if(T.signal.aborted)return{shortCircuited:!0};Z&&Z.signal.removeEventListener("abort",He),Jt.forEach(Oe=>H.delete(Oe.key));let pr=$s(sa);if(pr)return await at(T,pr.result,!0,{replace:ue}),{shortCircuited:!0};if(pr=$s(Ir),pr)return V.add(pr.key),await at(T,pr.result,!0,{replace:ue}),{shortCircuited:!0};let{loaderData:Rn,errors:la}=jh(x,U,sa,ye,Jt,Ir);fe&&x.errors&&(la={...x.errors,...la});let Qr=ja(),fn=Ma(X),Ht=Qr||fn||Jt.length>0;return{matches:U,loaderData:Rn,errors:la,...Ht?{fetchers:new Map(x.fetchers)}:{}}}function dt(T){if(T&&!wr(T[1]))return{[T[0]]:T[1].data};if(x.actionData)return Object.keys(x.actionData).length===0?null:x.actionData}function Rt(T){return T.forEach(L=>{let U=x.fetchers.get(L.key),G=ii(void 0,U?U.data:void 0);x.fetchers.set(L.key,G)}),new Map(x.fetchers)}async function ur(T,L,U,G){Tr(T);let ne=(G&&G.flushSync)===!0,he=p||f,we=Ku(x.location,x.matches,m,U,L,G==null?void 0:G.relative),le=Zn(he,we,m),ue=oa(le,he,we);if(ue.active&&ue.matches&&(le=ue.matches),!le){St(T,L,Mr(404,{pathname:we}),{flushSync:ne});return}let{path:fe,submission:be,error:ye}=Th(!0,we,G);if(ye){St(T,L,ye,{flushSync:ne});return}let Re=r.getContext?await r.getContext():new Ch,De=(G&&G.preventScrollReset)===!0;if(be&&Bt(be.formMethod)){await dr(T,L,fe,le,Re,ue.active,ne,De,be,G&&G.unstable_defaultShouldRevalidate);return}Ce.set(T,{routeId:L,path:fe}),await qr(T,L,fe,le,Re,ue.active,ne,De,be)}async function dr(T,L,U,G,ne,he,we,le,ue,fe){In(),Ce.delete(T);let be=x.fetchers.get(T);_t(T,$2(ue,be),{flushSync:we});let ye=new AbortController,Re=lo(r.history,U,ye.signal,ue);if(he){let tt=await Pn(G,new URL(Re.url).pathname,Re.signal,T);if(tt.type==="aborted")return;if(tt.type==="error"){St(T,L,tt.error,{flushSync:we});return}else if(tt.matches)G=tt.matches;else{St(T,L,Mr(404,{pathname:U}),{flushSync:we});return}}let De=Hs(G,U);if(!De.route.action&&!De.route.lazy){let tt=Mr(405,{method:ue.formMethod,pathname:U,routeId:L});St(T,L,tt,{flushSync:we});return}H.set(T,ye);let mt=ae,ft=po(c,d,Re,G,De,i,ne),xt=await kr(Re,ft,ne,T),Be=xt[De.route.id];if(!Be){for(let tt of ft)if(xt[tt.route.id]){Be=xt[tt.route.id];break}}if(Re.signal.aborted){H.get(T)===ye&&H.delete(T);return}if(_e.has(T)){if(Ea(Be)||wr(Be)){_t(T,xn(void 0));return}}else{if(Ea(Be))if(H.delete(T),X>mt){_t(T,xn(void 0));return}else return V.add(T),_t(T,ii(ue)),at(Re,Be,!1,{fetcherSubmission:ue,preventScrollReset:le});if(wr(Be)){St(T,L,Be.error);return}}let Jt=x.navigation.location||x.location,He=lo(r.history,Jt,ye.signal),sa=p||f,Ir=x.navigation.state!=="idle"?Zn(sa,x.navigation.location,m):x.matches;Le(Ir,"Didn't find any matches after fetcher action");let pr=++ae;A.set(T,pr);let Rn=ii(ue,Be.data);x.fetchers.set(T,Rn);let{dsMatches:la,revalidatingFetchers:Qr}=Ih(He,ne,c,d,r.history,x,Ir,ue,Jt,i,!1,ke,oe,_e,Ce,V,sa,m,r.patchRoutesOnNavigation!=null,[De.route.id,Be],fe);Qr.filter(tt=>tt.key!==T).forEach(tt=>{let hn=tt.key,ca=x.fetchers.get(hn),ua=ii(void 0,ca?ca.data:void 0);x.fetchers.set(hn,ua),Tr(hn),tt.controller&&H.set(hn,tt.controller)}),ut({fetchers:new Map(x.fetchers)});let fn=()=>Qr.forEach(tt=>Tr(tt.key));ye.signal.addEventListener("abort",fn);let{loaderResults:Ht,fetcherResults:Oe}=await Or(la,Qr,He,ne);if(ye.signal.aborted)return;if(ye.signal.removeEventListener("abort",fn),A.delete(T),H.delete(T),Qr.forEach(tt=>H.delete(tt.key)),x.fetchers.has(T)){let tt=xn(Be.data);x.fetchers.set(T,tt)}let qe=$s(Ht);if(qe)return at(He,qe.result,!1,{preventScrollReset:le});if(qe=$s(Oe),qe)return V.add(qe.key),at(He,qe.result,!1,{preventScrollReset:le});let{loaderData:An,errors:pn}=jh(x,Ir,Ht,void 0,Qr,Oe);Ma(pr),x.navigation.state==="loading"&&pr>X?(Le(W,"Expected pending action"),Z&&Z.abort(),Vt(x.navigation.location,{matches:Ir,loaderData:An,errors:pn,fetchers:new Map(x.fetchers)})):(ut({errors:pn,loaderData:Mh(x.loaderData,An,Ir,pn),fetchers:new Map(x.fetchers)}),ke=!1)}async function qr(T,L,U,G,ne,he,we,le,ue){let fe=x.fetchers.get(T);_t(T,ii(ue,fe?fe.data:void 0),{flushSync:we});let be=new AbortController,ye=lo(r.history,U,be.signal);if(he){let Be=await Pn(G,new URL(ye.url).pathname,ye.signal,T);if(Be.type==="aborted")return;if(Be.type==="error"){St(T,L,Be.error,{flushSync:we});return}else if(Be.matches)G=Be.matches;else{St(T,L,Mr(404,{pathname:U}),{flushSync:we});return}}let Re=Hs(G,U);H.set(T,be);let De=ae,mt=po(c,d,ye,G,Re,i,ne),xt=(await kr(ye,mt,ne,T))[Re.route.id];if(H.get(T)===be&&H.delete(T),!ye.signal.aborted){if(_e.has(T)){_t(T,xn(void 0));return}if(Ea(xt))if(X>De){_t(T,xn(void 0));return}else{V.add(T),await at(ye,xt,!1,{preventScrollReset:le});return}if(wr(xt)){St(T,L,xt.error);return}_t(T,xn(xt.data))}}async function at(T,L,U,{submission:G,fetcherSubmission:ne,preventScrollReset:he,replace:we}={}){U||(re==null||re.resolve(),re=null),L.response.headers.has("X-Remix-Revalidate")&&(ke=!0);let le=L.response.headers.get("Location");Le(le,"Expected a Location header on the redirect Response"),le=Nh(le,new URL(T.url),m,r.history);let ue=gi(x.location,le,{_isRedirect:!0});if(a){let mt=!1;if(L.response.headers.has("X-Remix-Reload-Document"))mt=!0;else if(il(le)){const ft=Bm(le,!0);mt=ft.origin!==t.location.origin||Dr(ft.pathname,m)==null}if(mt){we?t.location.replace(le):t.location.assign(le);return}}Z=null;let fe=we===!0||L.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:be,formAction:ye,formEncType:Re}=x.navigation;!G&&!ne&&be&&ye&&Re&&(G=Oh(x.navigation));let De=G||ne;if(f2.has(L.response.status)&&De&&Bt(De.formMethod))await Ye(fe,ue,{submission:{...De,formAction:le},preventScrollReset:he||ee,enableViewTransition:U?ie:void 0});else{let mt=uu(ue,G);await Ye(fe,ue,{overrideNavigation:mt,fetcherSubmission:ne,preventScrollReset:he||ee,enableViewTransition:U?ie:void 0})}}async function kr(T,L,U,G){var we;let ne,he={};try{ne=await S2(y,T,L,G,U,!1)}catch(le){return L.filter(ue=>ue.shouldLoad).forEach(ue=>{he[ue.route.id]={type:"error",error:le}}),he}if(T.signal.aborted)return he;if(!Bt(T.method))for(let le of L){if(((we=ne[le.route.id])==null?void 0:we.type)==="error")break;!ne.hasOwnProperty(le.route.id)&&!x.loaderData.hasOwnProperty(le.route.id)&&(!x.errors||!x.errors.hasOwnProperty(le.route.id))&&le.shouldCallHandler()&&(ne[le.route.id]={type:"error",result:new Error(`No result returned from dataStrategy for route ${le.route.id}`)})}for(let[le,ue]of Object.entries(ne))if(N2(ue)){let fe=ue.result;he[le]={type:"redirect",response:T2(fe,T,le,L,m)}}else he[le]=await k2(ue);return he}async function Or(T,L,U,G){let ne=kr(U,T,G,null),he=Promise.all(L.map(async ue=>{if(ue.matches&&ue.match&&ue.request&&ue.controller){let be=(await kr(ue.request,ue.matches,G,ue.key))[ue.match.route.id];return{[ue.key]:be}}else return Promise.resolve({[ue.key]:{type:"error",error:Mr(404,{pathname:ue.path})}})})),we=await ne,le=(await he).reduce((ue,fe)=>Object.assign(ue,fe),{});return{loaderResults:we,fetcherResults:le}}function In(){ke=!0,Ce.forEach((T,L)=>{H.has(L)&&oe.add(L),Tr(L)})}function _t(T,L,U={}){x.fetchers.set(T,L),ut({fetchers:new Map(x.fetchers)},{flushSync:(U&&U.flushSync)===!0})}function St(T,L,U,G={}){let ne=Jn(x.matches,L);un(T),ut({errors:{[ne.route.id]:U},fetchers:new Map(x.fetchers)},{flushSync:(G&&G.flushSync)===!0})}function Zt(T){return Ee.set(T,(Ee.get(T)||0)+1),_e.has(T)&&_e.delete(T),x.fetchers.get(T)||p2}function fr(T,L){Tr(T,L==null?void 0:L.reason),_t(T,xn(null))}function un(T){let L=x.fetchers.get(T);H.has(T)&&!(L&&L.state==="loading"&&A.has(T))&&Tr(T),Ce.delete(T),A.delete(T),V.delete(T),_e.delete(T),oe.delete(T),x.fetchers.delete(T)}function Ri(T){let L=(Ee.get(T)||0)-1;L<=0?(Ee.delete(T),_e.add(T)):Ee.set(T,L),ut({fetchers:new Map(x.fetchers)})}function Tr(T,L){let U=H.get(T);U&&(U.abort(L),H.delete(T))}function Ai(T){for(let L of T){let U=Zt(L),G=xn(U.data);x.fetchers.set(L,G)}}function ja(){let T=[],L=!1;for(let U of V){let G=x.fetchers.get(U);Le(G,`Expected fetcher: ${U}`),G.state==="loading"&&(V.delete(U),T.push(U),L=!0)}return Ai(T),L}function Ma(T){let L=[];for(let[U,G]of A)if(G<T){let ne=x.fetchers.get(U);Le(ne,`Expected fetcher: ${U}`),ne.state==="loading"&&(Tr(U),A.delete(U),L.push(U))}return Ai(L),L.length>0}function _o(T,L){let U=x.blockers.get(T)||oi;return Te.get(T)!==L&&Te.set(T,L),U}function Da(T){x.blockers.delete(T),Te.delete(T)}function bn(T,L){let U=x.blockers.get(T)||oi;Le(U.state==="unblocked"&&L.state==="blocked"||U.state==="blocked"&&L.state==="blocked"||U.state==="blocked"&&L.state==="proceeding"||U.state==="blocked"&&L.state==="unblocked"||U.state==="proceeding"&&L.state==="unblocked",`Invalid blocker state transition: ${U.state} -> ${L.state}`);let G=new Map(x.blockers);G.set(T,L),ut({blockers:G})}function dn({currentLocation:T,nextLocation:L,historyAction:U}){if(Te.size===0)return;Te.size>1&&st(!1,"A router only supports one blocker at a time");let G=Array.from(Te.entries()),[ne,he]=G[G.length-1],we=x.blockers.get(ne);if(!(we&&we.state==="proceeding")&&he({currentLocation:T,nextLocation:L,historyAction:U}))return ne}function Gr(T){let L=Mr(404,{pathname:T}),U=p||f,{matches:G,route:ne}=Ds(U);return{notFoundMatches:G,route:ne,error:L}}function Ni(T,L,U){if(E=T,N=L,I=U||null,!D&&x.navigation===cu){D=!0;let G=xo(x.location,x.matches);G!=null&&ut({restoreScrollPosition:G})}return()=>{E=null,N=null,I=null}}function So(T,L){return I&&I(T,L.map(G=>Ug(G,x.loaderData)))||T.key}function Li(T,L){if(E&&N){let U=So(T,L);E[U]=N()}}function xo(T,L){if(E){let U=So(T,L),G=E[U];if(typeof G=="number")return G}return null}function oa(T,L,U){if(r.patchRoutesOnNavigation)if(T){if(Object.keys(T[0].params).length>0)return{active:!0,matches:pi(L,U,m,!0)}}else return{active:!0,matches:pi(L,U,m,!0)||[]};return{active:!1,matches:null}}async function Pn(T,L,U,G){if(!r.patchRoutesOnNavigation)return{type:"success",matches:T};let ne=T;for(;;){let he=p==null,we=p||f,le=d;try{await r.patchRoutesOnNavigation({signal:U,path:L,matches:ne,fetcherKey:G,patch:(be,ye)=>{U.aborted||bh(be,ye,we,le,c,!1)}})}catch(be){return{type:"error",error:be,partialMatches:ne}}finally{he&&!U.aborted&&(f=[...f])}if(U.aborted)return{type:"aborted"};let ue=Zn(we,L,m),fe=null;if(ue){if(Object.keys(ue[0].params).length===0)return{type:"success",matches:ue};if(fe=pi(we,L,m,!0),!(fe&&ne.length<fe.length&&Eo(ne,fe.slice(0,ne.length))))return{type:"success",matches:ue}}if(fe||(fe=pi(we,L,m,!0)),!fe||Eo(ne,fe))return{type:"success",matches:null};ne=fe}}function Eo(T,L){return T.length===L.length&&T.every((U,G)=>U.route.id===L[G].route.id)}function ia(T){d={},p=vi(T,c,void 0,d)}function ko(T,L,U=!1){let G=p==null;bh(T,L,p||f,d,c,U),G&&(f=[...f],ut({}))}return q={get basename(){return m},get future(){return v},get state(){return x},get routes(){return f},get window(){return t},initialize:Ve,subscribe:Tn,enableScrollRestoration:Ni,navigate:cn,fetch:ur,revalidate:Ae,createHref:T=>r.history.createHref(T),encodeLocation:T=>r.history.encodeLocation(T),getFetcher:Zt,resetFetcher:fr,deleteFetcher:Ri,dispose:Pt,getBlocker:_o,deleteBlocker:Da,patchRoutes:ko,_internalFetchControllers:H,_internalSetRoutes:ia,_internalSetStateDoNotUseOrYouWillBreakYourApp(T){ut(T)}},r.unstable_instrumentations&&(q=a2(q,r.unstable_instrumentations.map(T=>T.router).filter(Boolean))),q}function y2(r){return r!=null&&("formData"in r&&r.formData!=null||"body"in r&&r.body!==void 0)}function Ku(r,t,a,i,s,c){let d,f;if(s){d=[];for(let m of t)if(d.push(m),m.route.id===s){f=m;break}}else d=t,f=t[t.length-1];let p=ll(i||".",sl(d),Dr(r.pathname,a)||r.pathname,c==="path");if(i==null&&(p.search=r.search,p.hash=r.hash),(i==null||i===""||i===".")&&f){let m=vd(p.search);if(f.route.index&&!m)p.search=p.search?p.search.replace(/^\?/,"?index&"):"?index";else if(!f.route.index&&m){let y=new URLSearchParams(p.search),v=y.getAll("index");y.delete("index"),v.filter(S=>S).forEach(S=>y.append("index",S));let w=y.toString();p.search=w?`?${w}`:""}}return a!=="/"&&(p.pathname=Jg({basename:a,pathname:p.pathname})),sn(p)}function Th(r,t,a){if(!a||!y2(a))return{path:t};if(a.formMethod&&!M2(a.formMethod))return{path:t,error:Mr(405,{method:a.formMethod})};let i=()=>({path:t,error:Mr(400,{type:"invalid-body"})}),c=(a.formMethod||"get").toUpperCase(),d=i0(t);if(a.body!==void 0){if(a.formEncType==="text/plain"){if(!Bt(c))return i();let v=typeof a.body=="string"?a.body:a.body instanceof FormData||a.body instanceof URLSearchParams?Array.from(a.body.entries()).reduce((w,[S,E])=>`${w}${S}=${E}
`,""):String(a.body);return{path:t,submission:{formMethod:c,formAction:d,formEncType:a.formEncType,formData:void 0,json:void 0,text:v}}}else if(a.formEncType==="application/json"){if(!Bt(c))return i();try{let v=typeof a.body=="string"?JSON.parse(a.body):a.body;return{path:t,submission:{formMethod:c,formAction:d,formEncType:a.formEncType,formData:void 0,json:v,text:void 0}}}catch{return i()}}}Le(typeof FormData=="function","FormData is not available in this environment");let f,p;if(a.formData)f=Gu(a.formData),p=a.formData;else if(a.body instanceof FormData)f=Gu(a.body),p=a.body;else if(a.body instanceof URLSearchParams)f=a.body,p=Lh(f);else if(a.body==null)f=new URLSearchParams,p=new FormData;else try{f=new URLSearchParams(a.body),p=Lh(f)}catch{return i()}let m={formMethod:c,formAction:d,formEncType:a&&a.formEncType||"application/x-www-form-urlencoded",formData:p,json:void 0,text:void 0};if(Bt(m.formMethod))return{path:t,submission:m};let y=ra(t);return r&&y.search&&vd(y.search)&&f.append("index",""),y.search=`?${f}`,{path:sn(y),submission:m}}function Ih(r,t,a,i,s,c,d,f,p,m,y,v,w,S,E,I,N,D,b,B,O){var $e;let j=B?wr(B[1])?B[1].error:B[1].data:void 0,q=s.createURL(c.location),x=s.createURL(p),W;if(y&&c.errors){let ke=Object.keys(c.errors)[0];W=d.findIndex(oe=>oe.route.id===ke)}else if(B&&wr(B[1])){let ke=B[0];W=d.findIndex(oe=>oe.route.id===ke)-1}let re=B?B[1].statusCode:void 0,ee=re&&re>=400,Z={currentUrl:q,currentParams:(($e=c.matches[0])==null?void 0:$e.params)||{},nextUrl:x,nextParams:d[0].params,...f,actionResult:j,actionStatus:re},ie=Ti(d),ve=d.map((ke,oe)=>{let{route:H}=ke,ae=null;if(W!=null&&oe>W?ae=!1:H.lazy?ae=!0:yd(H)?y?ae=Yu(H,c.loaderData,c.errors):g2(c.loaderData,c.matches[oe],ke)&&(ae=!0):ae=!1,ae!==null)return qu(a,i,r,ie,ke,m,t,ae);let X=!1;typeof O=="boolean"?X=O:ee?X=!1:(v||q.pathname+q.search===x.pathname+x.search||q.search!==x.search||v2(c.matches[oe],ke))&&(X=!0);let A={...Z,defaultShouldRevalidate:X},V=yi(ke,A);return qu(a,i,r,ie,ke,m,t,V,A,O)}),ge=[];return E.forEach((ke,oe)=>{if(y||!d.some(_e=>_e.route.id===ke.routeId)||S.has(oe))return;let H=c.fetchers.get(oe),ae=H&&H.state!=="idle"&&H.data===void 0,X=Zn(N,ke.path,D);if(!X){if(b&&ae)return;ge.push({key:oe,routeId:ke.routeId,path:ke.path,matches:null,match:null,request:null,controller:null});return}if(I.has(oe))return;let A=Hs(X,ke.path),V=new AbortController,Ce=lo(s,ke.path,V.signal),Ee=null;if(w.has(oe))w.delete(oe),Ee=po(a,i,Ce,X,A,m,t);else if(ae)v&&(Ee=po(a,i,Ce,X,A,m,t));else{let _e;typeof O=="boolean"?_e=O:ee?_e=!1:_e=v;let Te={...Z,defaultShouldRevalidate:_e};yi(A,Te)&&(Ee=po(a,i,Ce,X,A,m,t,Te))}Ee&&ge.push({key:oe,routeId:ke.routeId,path:ke.path,matches:Ee,match:A,request:Ce,controller:V})}),{dsMatches:ve,revalidatingFetchers:ge}}function yd(r){return r.loader!=null||r.middleware!=null&&r.middleware.length>0}function Yu(r,t,a){if(r.lazy)return!0;if(!yd(r))return!1;let i=t!=null&&r.id in t,s=a!=null&&a[r.id]!==void 0;return!i&&s?!1:typeof r.loader=="function"&&r.loader.hydrate===!0?!0:!i&&!s}function g2(r,t,a){let i=!t||a.route.id!==t.route.id,s=!r.hasOwnProperty(a.route.id);return i||s}function v2(r,t){let a=r.route.path;return r.pathname!==t.pathname||a!=null&&a.endsWith("*")&&r.params["*"]!==t.params["*"]}function yi(r,t){if(r.route.shouldRevalidate){let a=r.route.shouldRevalidate(t);if(typeof a=="boolean")return a}return t.defaultShouldRevalidate}function bh(r,t,a,i,s,c){let d;if(r){let m=i[r];Le(m,`No route found to patch children into: routeId = ${r}`),m.children||(m.children=[]),d=m.children}else d=a;let f=[],p=[];if(t.forEach(m=>{let y=d.find(v=>t0(m,v));y?p.push({existingRoute:y,newRoute:m}):f.push(m)}),f.length>0){let m=vi(f,s,[r||"_","patch",String((d==null?void 0:d.length)||"0")],i);d.push(...m)}if(c&&p.length>0)for(let m=0;m<p.length;m++){let{existingRoute:y,newRoute:v}=p[m],w=y,[S]=vi([v],s,[],{},!0);Object.assign(w,{element:S.element?S.element:w.element,errorElement:S.errorElement?S.errorElement:w.errorElement,hydrateFallbackElement:S.hydrateFallbackElement?S.hydrateFallbackElement:w.hydrateFallbackElement})}}function t0(r,t){return"id"in r&&"id"in t&&r.id===t.id?!0:r.index===t.index&&r.path===t.path&&r.caseSensitive===t.caseSensitive?(!r.children||r.children.length===0)&&(!t.children||t.children.length===0)?!0:r.children.every((a,i)=>{var s;return(s=t.children)==null?void 0:s.some(c=>t0(a,c))}):!1}var Ph=new WeakMap,r0=({key:r,route:t,manifest:a,mapRouteProperties:i})=>{let s=a[t.id];if(Le(s,"No route found in manifest"),!s.lazy||typeof s.lazy!="object")return;let c=s.lazy[r];if(!c)return;let d=Ph.get(s);d||(d={},Ph.set(s,d));let f=d[r];if(f)return f;let p=(async()=>{let m=Dg(r),v=s[r]!==void 0&&r!=="hasErrorBoundary";if(m)st(!m,"Route property "+r+" is not a supported lazy route property. This property will be ignored."),d[r]=Promise.resolve();else if(v)st(!1,`Route "${s.id}" has a static property "${r}" defined. The lazy property will be ignored.`);else{let w=await c();w!=null&&(Object.assign(s,{[r]:w}),Object.assign(s,i(s)))}typeof s.lazy=="object"&&(s.lazy[r]=void 0,Object.values(s.lazy).every(w=>w===void 0)&&(s.lazy=void 0))})();return d[r]=p,p},Rh=new WeakMap;function w2(r,t,a,i,s){let c=a[r.id];if(Le(c,"No route found in manifest"),!r.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof r.lazy=="function"){let y=Rh.get(c);if(y)return{lazyRoutePromise:y,lazyHandlerPromise:y};let v=(async()=>{Le(typeof r.lazy=="function","No lazy route function found");let w=await r.lazy(),S={};for(let E in w){let I=w[E];if(I===void 0)continue;let N=Og(E),b=c[E]!==void 0&&E!=="hasErrorBoundary";N?st(!N,"Route property "+E+" is not a supported property to be returned from a lazy route function. This property will be ignored."):b?st(!b,`Route "${c.id}" has a static property "${E}" defined but its lazy function is also returning a value for this property. The lazy route property "${E}" will be ignored.`):S[E]=I}Object.assign(c,S),Object.assign(c,{...i(c),lazy:void 0})})();return Rh.set(c,v),v.catch(()=>{}),{lazyRoutePromise:v,lazyHandlerPromise:v}}let d=Object.keys(r.lazy),f=[],p;for(let y of d){if(s&&s.includes(y))continue;let v=r0({key:y,route:r,manifest:a,mapRouteProperties:i});v&&(f.push(v),y===t&&(p=v))}let m=f.length>0?Promise.all(f).then(()=>{}):void 0;return m==null||m.catch(()=>{}),p==null||p.catch(()=>{}),{lazyRoutePromise:m,lazyHandlerPromise:p}}async function Ah(r){let t=r.matches.filter(s=>s.shouldLoad),a={};return(await Promise.all(t.map(s=>s.resolve()))).forEach((s,c)=>{a[t[c].route.id]=s}),a}async function C2(r){return r.matches.some(t=>t.route.middleware)?n0(r,()=>Ah(r)):Ah(r)}function n0(r,t){return _2(r,t,i=>{if(j2(i))throw i;return i},R2,a);function a(i,s,c){if(c)return Promise.resolve(Object.assign(c.value,{[s]:{type:"error",result:i}}));{let{matches:d}=r,f=Math.min(Math.max(d.findIndex(m=>m.route.id===s),0),Math.max(d.findIndex(m=>m.shouldCallHandler()),0)),p=Jn(d,d[f].route.id).route.id;return Promise.resolve({[p]:{type:"error",result:i}})}}}async function _2(r,t,a,i,s){let{matches:c,request:d,params:f,context:p,unstable_pattern:m}=r,y=c.flatMap(w=>w.route.middleware?w.route.middleware.map(S=>[w.route.id,S]):[]);return await a0({request:d,params:f,context:p,unstable_pattern:m},y,t,a,i,s)}async function a0(r,t,a,i,s,c,d=0){let{request:f}=r;if(f.signal.aborted)throw f.signal.reason??new Error(`Request aborted: ${f.method} ${f.url}`);let p=t[d];if(!p)return await a();let[m,y]=p,v,w=async()=>{if(v)throw new Error("You may only call `next()` once per middleware");try{return v={value:await a0(r,t,a,i,s,c,d+1)},v.value}catch(S){return v={value:await c(S,m,v)},v.value}};try{let S=await y(r,w),E=S!=null?i(S):void 0;return s(E)?E:v?E??v.value:(v={value:await w()},v.value)}catch(S){return await c(S,m,v)}}function o0(r,t,a,i,s){let c=r0({key:"middleware",route:i.route,manifest:t,mapRouteProperties:r}),d=w2(i.route,Bt(a.method)?"action":"loader",t,r,s);return{middleware:c,route:d.lazyRoutePromise,handler:d.lazyHandlerPromise}}function qu(r,t,a,i,s,c,d,f,p=null,m){let y=!1,v=o0(r,t,a,s,c);return{...s,_lazyPromises:v,shouldLoad:f,shouldRevalidateArgs:p,shouldCallHandler(w){return y=!0,p?typeof m=="boolean"?yi(s,{...p,defaultShouldRevalidate:m}):typeof w=="boolean"?yi(s,{...p,defaultShouldRevalidate:w}):yi(s,p):f},resolve(w){let{lazy:S,loader:E,middleware:I}=s.route,N=y||f||w&&!Bt(a.method)&&(S||E),D=I&&I.length>0&&!E&&!S;return N&&(Bt(a.method)||!D)?x2({request:a,unstable_pattern:i,match:s,lazyHandlerPromise:v==null?void 0:v.handler,lazyRoutePromise:v==null?void 0:v.route,handlerOverride:w,scopedContext:d}):Promise.resolve({type:"data",result:void 0})}}}function po(r,t,a,i,s,c,d,f=null){return i.map(p=>p.route.id!==s.route.id?{...p,shouldLoad:!1,shouldRevalidateArgs:f,shouldCallHandler:()=>!1,_lazyPromises:o0(r,t,a,p,c),resolve:()=>Promise.resolve({type:"data",result:void 0})}:qu(r,t,a,Ti(i),p,c,d,!0,f))}async function S2(r,t,a,i,s,c){a.some(m=>{var y;return(y=m._lazyPromises)==null?void 0:y.middleware})&&await Promise.all(a.map(m=>{var y;return(y=m._lazyPromises)==null?void 0:y.middleware}));let d={request:t,unstable_pattern:Ti(a),params:a[0].params,context:s,matches:a},p=await r({...d,fetcherKey:i,runClientMiddleware:m=>{let y=d;return n0(y,()=>m({...y,fetcherKey:i,runClientMiddleware:()=>{throw new Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))}});try{await Promise.all(a.flatMap(m=>{var y,v;return[(y=m._lazyPromises)==null?void 0:y.handler,(v=m._lazyPromises)==null?void 0:v.route]}))}catch{}return p}async function x2({request:r,unstable_pattern:t,match:a,lazyHandlerPromise:i,lazyRoutePromise:s,handlerOverride:c,scopedContext:d}){let f,p,m=Bt(r.method),y=m?"action":"loader",v=w=>{let S,E=new Promise((D,b)=>S=b);p=()=>S(),r.signal.addEventListener("abort",p);let I=D=>typeof w!="function"?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${y}" [routeId: ${a.route.id}]`)):w({request:r,unstable_pattern:t,params:a.params,context:d},...D!==void 0?[D]:[]),N=(async()=>{try{return{type:"data",result:await(c?c(b=>I(b)):I())}}catch(D){return{type:"error",result:D}}})();return Promise.race([N,E])};try{let w=m?a.route.action:a.route.loader;if(i||s)if(w){let S,[E]=await Promise.all([v(w).catch(I=>{S=I}),i,s]);if(S!==void 0)throw S;f=E}else{await i;let S=m?a.route.action:a.route.loader;if(S)[f]=await Promise.all([v(S),s]);else if(y==="action"){let E=new URL(r.url),I=E.pathname+E.search;throw Mr(405,{method:r.method,pathname:I,routeId:a.route.id})}else return{type:"data",result:void 0}}else if(w)f=await v(w);else{let S=new URL(r.url),E=S.pathname+S.search;throw Mr(404,{pathname:E})}}catch(w){return{type:"error",result:w}}finally{p&&r.signal.removeEventListener("abort",p)}return f}async function E2(r){let t=r.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?r.body==null?null:r.json():r.text()}async function k2(r){var i,s,c,d,f;let{result:t,type:a}=r;if(gd(t)){let p;try{p=await E2(t)}catch(m){return{type:"error",error:m}}return a==="error"?{type:"error",error:new ki(t.status,t.statusText,p),statusCode:t.status,headers:t.headers}:{type:"data",data:p,statusCode:t.status,headers:t.headers}}return a==="error"?$h(t)?t.data instanceof Error?{type:"error",error:t.data,statusCode:(i=t.init)==null?void 0:i.status,headers:(s=t.init)!=null&&s.headers?new Headers(t.init.headers):void 0}:{type:"error",error:P2(t),statusCode:Ci(t)?t.status:void 0,headers:(c=t.init)!=null&&c.headers?new Headers(t.init.headers):void 0}:{type:"error",error:t,statusCode:Ci(t)?t.status:void 0}:$h(t)?{type:"data",data:t.data,statusCode:(d=t.init)==null?void 0:d.status,headers:(f=t.init)!=null&&f.headers?new Headers(t.init.headers):void 0}:{type:"data",data:t}}function T2(r,t,a,i,s){let c=r.headers.get("Location");if(Le(c,"Redirects returned/thrown from loaders/actions must have a Location header"),!il(c)){let d=i.slice(0,i.findIndex(f=>f.route.id===a)+1);c=Ku(new URL(t.url),d,s,c),r.headers.set("Location",c)}return r}function Nh(r,t,a,i){let s=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];if(il(r)){let c=r,d=c.startsWith("//")?new URL(t.protocol+c):new URL(c);if(s.includes(d.protocol))throw new Error("Invalid redirect location");let f=Dr(d.pathname,a)!=null;if(d.origin===t.origin&&f)return d.pathname+d.search+d.hash}try{let c=i.createURL(r);if(s.includes(c.protocol))throw new Error("Invalid redirect location")}catch{}return r}function lo(r,t,a,i){let s=r.createURL(i0(t)).toString(),c={signal:a};if(i&&Bt(i.formMethod)){let{formMethod:d,formEncType:f}=i;c.method=d.toUpperCase(),f==="application/json"?(c.headers=new Headers({"Content-Type":f}),c.body=JSON.stringify(i.json)):f==="text/plain"?c.body=i.text:f==="application/x-www-form-urlencoded"&&i.formData?c.body=Gu(i.formData):c.body=i.formData}return new Request(s,c)}function Gu(r){let t=new URLSearchParams;for(let[a,i]of r.entries())t.append(a,typeof i=="string"?i:i.name);return t}function Lh(r){let t=new FormData;for(let[a,i]of r.entries())t.append(a,i);return t}function I2(r,t,a,i=!1,s=!1){let c={},d=null,f,p=!1,m={},y=a&&wr(a[1])?a[1].error:void 0;return r.forEach(v=>{if(!(v.route.id in t))return;let w=v.route.id,S=t[w];if(Le(!Ea(S),"Cannot handle redirect results in processLoaderData"),wr(S)){let E=S.error;if(y!==void 0&&(E=y,y=void 0),d=d||{},s)d[w]=E;else{let I=Jn(r,w);d[I.route.id]==null&&(d[I.route.id]=E)}i||(c[w]=e0),p||(p=!0,f=Ci(S.error)?S.error.status:500),S.headers&&(m[w]=S.headers)}else c[w]=S.data,S.statusCode&&S.statusCode!==200&&!p&&(f=S.statusCode),S.headers&&(m[w]=S.headers)}),y!==void 0&&a&&(d={[a[0]]:y},a[2]&&(c[a[2]]=void 0)),{loaderData:c,errors:d,statusCode:f||200,loaderHeaders:m}}function jh(r,t,a,i,s,c){let{loaderData:d,errors:f}=I2(t,a,i);return s.filter(p=>!p.matches||p.matches.some(m=>m.shouldLoad)).forEach(p=>{let{key:m,match:y,controller:v}=p;if(v&&v.signal.aborted)return;let w=c[m];if(Le(w,"Did not find corresponding fetcher result"),wr(w)){let S=Jn(r.matches,y==null?void 0:y.route.id);f&&f[S.route.id]||(f={...f,[S.route.id]:w.error}),r.fetchers.delete(m)}else if(Ea(w))Le(!1,"Unhandled fetcher revalidation redirect");else{let S=xn(w.data);r.fetchers.set(m,S)}}),{loaderData:d,errors:f}}function Mh(r,t,a,i){let s=Object.entries(t).filter(([,c])=>c!==e0).reduce((c,[d,f])=>(c[d]=f,c),{});for(let c of a){let d=c.route.id;if(!t.hasOwnProperty(d)&&r.hasOwnProperty(d)&&c.route.loader&&(s[d]=r[d]),i&&i.hasOwnProperty(d))break}return s}function Dh(r){return r?wr(r[1])?{actionData:{}}:{actionData:{[r[0]]:r[1].data}}:{}}function Jn(r,t){return(t?r.slice(0,r.findIndex(i=>i.route.id===t)+1):[...r]).reverse().find(i=>i.route.hasErrorBoundary===!0)||r[0]}function Ds(r){let t=r.length===1?r[0]:r.find(a=>a.index||!a.path||a.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function Mr(r,{pathname:t,routeId:a,method:i,type:s,message:c}={}){let d="Unknown Server Error",f="Unknown @remix-run/router error";return r===400?(d="Bad Request",i&&t&&a?f=`You made a ${i} request to "${t}" but did not provide a \`loader\` for route "${a}", so there is no way to handle the request.`:s==="invalid-body"&&(f="Unable to encode submission body")):r===403?(d="Forbidden",f=`Route "${a}" does not match URL "${t}"`):r===404?(d="Not Found",f=`No route matches URL "${t}"`):r===405&&(d="Method Not Allowed",i&&t&&a?f=`You made a ${i.toUpperCase()} request to "${t}" but did not provide an \`action\` for route "${a}", so there is no way to handle the request.`:i&&(f=`Invalid request method "${i.toUpperCase()}"`)),new ki(r||500,d,new Error(f),!0)}function $s(r){let t=Object.entries(r);for(let a=t.length-1;a>=0;a--){let[i,s]=t[a];if(Ea(s))return{key:i,result:s}}}function i0(r){let t=typeof r=="string"?ra(r):r;return sn({...t,hash:""})}function b2(r,t){return r.pathname!==t.pathname||r.search!==t.search?!1:r.hash===""?t.hash!=="":r.hash===t.hash?!0:t.hash!==""}function P2(r){var t,a;return new ki(((t=r.init)==null?void 0:t.status)??500,((a=r.init)==null?void 0:a.statusText)??"Internal Server Error",r.data)}function R2(r){return r!=null&&typeof r=="object"&&Object.entries(r).every(([t,a])=>typeof t=="string"&&A2(a))}function A2(r){return r!=null&&typeof r=="object"&&"type"in r&&"result"in r&&(r.type==="data"||r.type==="error")}function N2(r){return gd(r.result)&&Jm.has(r.result.status)}function wr(r){return r.type==="error"}function Ea(r){return(r&&r.type)==="redirect"}function $h(r){return typeof r=="object"&&r!=null&&"type"in r&&"data"in r&&"init"in r&&r.type==="DataWithResponseInit"}function gd(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.headers=="object"&&typeof r.body<"u"}function L2(r){return Jm.has(r)}function j2(r){return gd(r)&&L2(r.status)&&r.headers.has("Location")}function M2(r){return d2.has(r.toUpperCase())}function Bt(r){return c2.has(r.toUpperCase())}function vd(r){return new URLSearchParams(r).getAll("index").some(t=>t==="")}function Hs(r,t){let a=typeof t=="string"?ra(t).search:t.search;if(r[r.length-1].route.index&&vd(a||""))return r[r.length-1];let i=Ym(r);return i[i.length-1]}function Oh(r){let{formMethod:t,formAction:a,formEncType:i,text:s,formData:c,json:d}=r;if(!(!t||!a||!i)){if(s!=null)return{formMethod:t,formAction:a,formEncType:i,formData:void 0,json:void 0,text:s};if(c!=null)return{formMethod:t,formAction:a,formEncType:i,formData:c,json:void 0,text:void 0};if(d!==void 0)return{formMethod:t,formAction:a,formEncType:i,formData:void 0,json:d,text:void 0}}}function uu(r,t){return t?{state:"loading",location:r,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:r,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function D2(r,t){return{state:"submitting",location:r,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function ii(r,t){return r?{state:"loading",formMethod:r.formMethod,formAction:r.formAction,formEncType:r.formEncType,formData:r.formData,json:r.json,text:r.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function $2(r,t){return{state:"submitting",formMethod:r.formMethod,formAction:r.formAction,formEncType:r.formEncType,formData:r.formData,json:r.json,text:r.text,data:t?t.data:void 0}}function xn(r){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:r}}function O2(r,t){try{let a=r.sessionStorage.getItem(Xm);if(a){let i=JSON.parse(a);for(let[s,c]of Object.entries(i||{}))c&&Array.isArray(c)&&t.set(s,new Set(c||[]))}}catch{}}function F2(r,t){if(t.size>0){let a={};for(let[i,s]of t)a[i]=[...s];try{r.sessionStorage.setItem(Xm,JSON.stringify(a))}catch(i){st(!1,`Failed to save applied view transitions in sessionStorage (${i}).`)}}}function Fh(){let r,t,a=new Promise((i,s)=>{r=async c=>{i(c);try{await a}catch{}},t=async c=>{s(c);try{await a}catch{}}});return{promise:a,resolve:r,reject:t}}var Na=_.createContext(null);Na.displayName="DataRouter";var Ii=_.createContext(null);Ii.displayName="DataRouterState";var s0=_.createContext(!1);function U2(){return _.useContext(s0)}var wd=_.createContext({isTransitioning:!1});wd.displayName="ViewTransition";var l0=_.createContext(new Map);l0.displayName="Fetchers";var z2=_.createContext(null);z2.displayName="Await";var xr=_.createContext(null);xr.displayName="Navigation";var cl=_.createContext(null);cl.displayName="Location";var $r=_.createContext({outlet:null,matches:[],isDataRoute:!1});$r.displayName="Route";var Cd=_.createContext(null);Cd.displayName="RouteError";var c0="REACT_ROUTER_ERROR",B2="REDIRECT",V2="ROUTE_ERROR_RESPONSE";function H2(r){if(r.startsWith(`${c0}:${B2}:{`))try{let t=JSON.parse(r.slice(28));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.location=="string"&&typeof t.reloadDocument=="boolean"&&typeof t.replace=="boolean")return t}catch{}}function W2(r){if(r.startsWith(`${c0}:${V2}:{`))try{let t=JSON.parse(r.slice(40));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string")return new ki(t.status,t.statusText,t.data)}catch{}}function K2(r,{relative:t}={}){Le(La(),"useHref() may be used only in the context of a <Router> component.");let{basename:a,navigator:i}=_.useContext(xr),{hash:s,pathname:c,search:d}=bi(r,{relative:t}),f=c;return a!=="/"&&(f=c==="/"?a:an([a,c])),i.createHref({pathname:f,search:d,hash:s})}function La(){return _.useContext(cl)!=null}function lt(){return Le(La(),"useLocation() may be used only in the context of a <Router> component."),_.useContext(cl).location}function SS(r){Le(La(),"useMatch() may be used only in the context of a <Router> component.");let{pathname:t}=lt();return _.useMemo(()=>wi(r,Wm(t)),[t,r])}var u0="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function d0(r){_.useContext(xr).static||_.useLayoutEffect(r)}function ln(){let{isDataRoute:r}=_.useContext($r);return r?sv():Y2()}function Y2(){Le(La(),"useNavigate() may be used only in the context of a <Router> component.");let r=_.useContext(Na),{basename:t,navigator:a}=_.useContext(xr),{matches:i}=_.useContext($r),{pathname:s}=lt(),c=JSON.stringify(sl(i)),d=_.useRef(!1);return d0(()=>{d.current=!0}),_.useCallback((p,m={})=>{if(st(d.current,u0),!d.current)return;if(typeof p=="number"){a.go(p);return}let y=ll(p,JSON.parse(c),s,m.relative==="path");r==null&&t!=="/"&&(y.pathname=y.pathname==="/"?t:an([t,y.pathname])),(m.replace?a.replace:a.push)(y,m.state,m)},[t,a,c,s,r])}var q2=_.createContext(null);function G2(r){let t=_.useContext($r).outlet;return _.useMemo(()=>t&&_.createElement(q2.Provider,{value:r},t),[t,r])}function _d(){let{matches:r}=_.useContext($r),t=r[r.length-1];return t?t.params:{}}function bi(r,{relative:t}={}){let{matches:a}=_.useContext($r),{pathname:i}=lt(),s=JSON.stringify(sl(a));return _.useMemo(()=>ll(r,JSON.parse(s),i,t==="path"),[r,s,i,t])}function Q2(r,t,a,i,s){Le(La(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:c}=_.useContext(xr),{matches:d}=_.useContext($r),f=d[d.length-1],p=f?f.params:{},m=f?f.pathname:"/",y=f?f.pathnameBase:"/",v=f&&f.route;{let b=v&&v.path||"";p0(m,!v||b.endsWith("*")||b.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${m}" (under <Route path="${b}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.

Please change the parent <Route path="${b}"> to <Route path="${b==="/"?"*":`${b}/*`}">.`)}let w=lt(),S;S=w;let E=S.pathname||"/",I=E;if(y!=="/"){let b=y.replace(/^\//,"").split("/");I="/"+E.replace(/^\//,"").split("/").slice(b.length).join("/")}let N=Zn(r,{pathname:I});return st(v||N!=null,`No routes matched location "${S.pathname}${S.search}${S.hash}" `),st(N==null||N[N.length-1].route.element!==void 0||N[N.length-1].route.Component!==void 0||N[N.length-1].route.lazy!==void 0,`Matched leaf route at location "${S.pathname}${S.search}${S.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`),tv(N&&N.map(b=>Object.assign({},b,{params:Object.assign({},p,b.params),pathname:an([y,c.encodeLocation?c.encodeLocation(b.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?y:an([y,c.encodeLocation?c.encodeLocation(b.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:b.pathnameBase])})),d,a,i,s)}function Z2(){let r=iv(),t=Ci(r)?`${r.status} ${r.statusText}`:r instanceof Error?r.message:JSON.stringify(r),a=r instanceof Error?r.stack:null,i="rgba(200,200,200, 0.5)",s={padding:"0.5rem",backgroundColor:i},c={padding:"2px 4px",backgroundColor:i},d=null;return console.error("Error handled by React Router default ErrorBoundary:",r),d=_.createElement(_.Fragment,null,_.createElement("p",null,"рџ’ї Hey developer рџ‘‹"),_.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",_.createElement("code",{style:c},"ErrorBoundary")," or"," ",_.createElement("code",{style:c},"errorElement")," prop on your route.")),_.createElement(_.Fragment,null,_.createElement("h2",null,"Unexpected Application Error!"),_.createElement("h3",{style:{fontStyle:"italic"}},t),a?_.createElement("pre",{style:s},a):null,d)}var J2=_.createElement(Z2,null),f0=class extends _.Component{constructor(r){super(r),this.state={location:r.location,revalidation:r.revalidation,error:r.error}}static getDerivedStateFromError(r){return{error:r}}static getDerivedStateFromProps(r,t){return t.location!==r.location||t.revalidation!=="idle"&&r.revalidation==="idle"?{error:r.error,location:r.location,revalidation:r.revalidation}:{error:r.error!==void 0?r.error:t.error,location:t.location,revalidation:r.revalidation||t.revalidation}}componentDidCatch(r,t){this.props.onError?this.props.onError(r,t):console.error("React Router caught the following error during render",r)}render(){let r=this.state.error;if(this.context&&typeof r=="object"&&r&&"digest"in r&&typeof r.digest=="string"){const a=W2(r.digest);a&&(r=a)}let t=r!==void 0?_.createElement($r.Provider,{value:this.props.routeContext},_.createElement(Cd.Provider,{value:r,children:this.props.component})):this.props.children;return this.context?_.createElement(X2,{error:r},t):t}};f0.contextType=s0;var du=new WeakMap;function X2({children:r,error:t}){let{basename:a}=_.useContext(xr);if(typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){let i=H2(t.digest);if(i){let s=du.get(t);if(s)throw s;let c=Gm(i.location,a);if(qm&&!du.get(t))if(c.isExternal||i.reloadDocument)window.location.href=c.absoluteURL||c.to;else{const d=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(c.to,{replace:i.replace}));throw du.set(t,d),d}return _.createElement("meta",{httpEquiv:"refresh",content:`0;url=${c.absoluteURL||c.to}`})}}return r}function ev({routeContext:r,match:t,children:a}){let i=_.useContext(Na);return i&&i.static&&i.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=t.route.id),_.createElement($r.Provider,{value:r},a)}function tv(r,t=[],a=null,i=null,s=null){if(r==null){if(!a)return null;if(a.errors)r=a.matches;else if(t.length===0&&!a.initialized&&a.matches.length>0)r=a.matches;else return null}let c=r,d=a==null?void 0:a.errors;if(d!=null){let y=c.findIndex(v=>v.route.id&&(d==null?void 0:d[v.route.id])!==void 0);Le(y>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(d).join(",")}`),c=c.slice(0,Math.min(c.length,y+1))}let f=!1,p=-1;if(a)for(let y=0;y<c.length;y++){let v=c[y];if((v.route.HydrateFallback||v.route.hydrateFallbackElement)&&(p=y),v.route.id){let{loaderData:w,errors:S}=a,E=v.route.loader&&!w.hasOwnProperty(v.route.id)&&(!S||S[v.route.id]===void 0);if(v.route.lazy||E){f=!0,p>=0?c=c.slice(0,p+1):c=[c[0]];break}}}let m=a&&i?(y,v)=>{var w,S;i(y,{location:a.location,params:((S=(w=a.matches)==null?void 0:w[0])==null?void 0:S.params)??{},unstable_pattern:Ti(a.matches),errorInfo:v})}:void 0;return c.reduceRight((y,v,w)=>{let S,E=!1,I=null,N=null;a&&(S=d&&v.route.id?d[v.route.id]:void 0,I=v.route.errorElement||J2,f&&(p<0&&w===0?(p0("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),E=!0,N=null):p===w&&(E=!0,N=v.route.hydrateFallbackElement||null)));let D=t.concat(c.slice(0,w+1)),b=()=>{let B;return S?B=I:E?B=N:v.route.Component?B=_.createElement(v.route.Component,null):v.route.element?B=v.route.element:B=y,_.createElement(ev,{match:v,routeContext:{outlet:y,matches:D,isDataRoute:a!=null},children:B})};return a&&(v.route.ErrorBoundary||v.route.errorElement||w===0)?_.createElement(f0,{location:a.location,revalidation:a.revalidation,component:I,error:S,children:b(),routeContext:{outlet:null,matches:D,isDataRoute:!0},onError:m}):b()},null)}function Sd(r){return`${r} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`}function rv(r){let t=_.useContext(Na);return Le(t,Sd(r)),t}function nv(r){let t=_.useContext(Ii);return Le(t,Sd(r)),t}function av(r){let t=_.useContext($r);return Le(t,Sd(r)),t}function xd(r){let t=av(r),a=t.matches[t.matches.length-1];return Le(a.route.id,`${r} can only be used on routes that contain a unique "id"`),a.route.id}function ov(){return xd("useRouteId")}function iv(){var i;let r=_.useContext(Cd),t=nv("useRouteError"),a=xd("useRouteError");return r!==void 0?r:(i=t.errors)==null?void 0:i[a]}function sv(){let{router:r}=rv("useNavigate"),t=xd("useNavigate"),a=_.useRef(!1);return d0(()=>{a.current=!0}),_.useCallback(async(s,c={})=>{st(a.current,u0),a.current&&(typeof s=="number"?await r.navigate(s):await r.navigate(s,{fromRouteId:t,...c}))},[r,t])}var Uh={};function p0(r,t,a){!t&&!Uh[r]&&(Uh[r]=!0,st(!1,a))}var zh={};function Bh(r,t){!r&&!zh[t]&&(zh[t]=!0,console.warn(t))}var lv="useOptimistic",Vh=_g[lv],cv=()=>{};function uv(r){return Vh?Vh(r):[r,cv]}function dv(r){let t={hasErrorBoundary:r.hasErrorBoundary||r.ErrorBoundary!=null||r.errorElement!=null};return r.Component&&(r.element&&st(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:_.createElement(r.Component),Component:void 0})),r.HydrateFallback&&(r.hydrateFallbackElement&&st(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:_.createElement(r.HydrateFallback),HydrateFallback:void 0})),r.ErrorBoundary&&(r.errorElement&&st(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:_.createElement(r.ErrorBoundary),ErrorBoundary:void 0})),t}var fv=["HydrateFallback","hydrateFallbackElement"],pv=class{constructor(){this.status="pending",this.promise=new Promise((r,t)=>{this.resolve=a=>{this.status==="pending"&&(this.status="resolved",r(a))},this.reject=a=>{this.status==="pending"&&(this.status="rejected",t(a))}})}};function hv({router:r,flushSync:t,onError:a,unstable_useTransitions:i}){i=U2()||i;let[c,d]=_.useState(r.state),[f,p]=uv(c),[m,y]=_.useState(),[v,w]=_.useState({isTransitioning:!1}),[S,E]=_.useState(),[I,N]=_.useState(),[D,b]=_.useState(),B=_.useRef(new Map),O=_.useCallback((W,{deletedFetchers:re,newErrors:ee,flushSync:Z,viewTransitionOpts:ie})=>{ee&&a&&Object.values(ee).forEach(ge=>{var $e;return a(ge,{location:W.location,params:(($e=W.matches[0])==null?void 0:$e.params)??{},unstable_pattern:Ti(W.matches)})}),W.fetchers.forEach((ge,$e)=>{ge.data!==void 0&&B.current.set($e,ge.data)}),re.forEach(ge=>B.current.delete(ge)),Bh(Z===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable.  Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let ve=r.window!=null&&r.window.document!=null&&typeof r.window.document.startViewTransition=="function";if(Bh(ie==null||ve,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!ie||!ve){t&&Z?t(()=>d(W)):i===!1?d(W):_.startTransition(()=>{i===!0&&p(ge=>Hh(ge,W)),d(W)});return}if(t&&Z){t(()=>{I&&(S==null||S.resolve(),I.skipTransition()),w({isTransitioning:!0,flushSync:!0,currentLocation:ie.currentLocation,nextLocation:ie.nextLocation})});let ge=r.window.document.startViewTransition(()=>{t(()=>d(W))});ge.finished.finally(()=>{t(()=>{E(void 0),N(void 0),y(void 0),w({isTransitioning:!1})})}),t(()=>N(ge));return}I?(S==null||S.resolve(),I.skipTransition(),b({state:W,currentLocation:ie.currentLocation,nextLocation:ie.nextLocation})):(y(W),w({isTransitioning:!0,flushSync:!1,currentLocation:ie.currentLocation,nextLocation:ie.nextLocation}))},[r.window,t,I,S,i,p,a]);_.useLayoutEffect(()=>r.subscribe(O),[r,O]),_.useEffect(()=>{v.isTransitioning&&!v.flushSync&&E(new pv)},[v]),_.useEffect(()=>{if(S&&m&&r.window){let W=m,re=S.promise,ee=r.window.document.startViewTransition(async()=>{i===!1?d(W):_.startTransition(()=>{i===!0&&p(Z=>Hh(Z,W)),d(W)}),await re});ee.finished.finally(()=>{E(void 0),N(void 0),y(void 0),w({isTransitioning:!1})}),N(ee)}},[m,S,r.window,i,p]),_.useEffect(()=>{S&&m&&f.location.key===m.location.key&&S.resolve()},[S,I,f.location,m]),_.useEffect(()=>{!v.isTransitioning&&D&&(y(D.state),w({isTransitioning:!0,flushSync:!1,currentLocation:D.currentLocation,nextLocation:D.nextLocation}),b(void 0))},[v.isTransitioning,D]);let j=_.useMemo(()=>({createHref:r.createHref,encodeLocation:r.encodeLocation,go:W=>r.navigate(W),push:(W,re,ee)=>r.navigate(W,{state:re,preventScrollReset:ee==null?void 0:ee.preventScrollReset}),replace:(W,re,ee)=>r.navigate(W,{replace:!0,state:re,preventScrollReset:ee==null?void 0:ee.preventScrollReset})}),[r]),q=r.basename||"/",x=_.useMemo(()=>({router:r,navigator:j,static:!1,basename:q,onError:a}),[r,j,q,a]);return _.createElement(_.Fragment,null,_.createElement(Na.Provider,{value:x},_.createElement(Ii.Provider,{value:f},_.createElement(l0.Provider,{value:B.current},_.createElement(wd.Provider,{value:v},_.createElement(gv,{basename:q,location:f.location,navigationType:f.historyAction,navigator:j,unstable_useTransitions:i},_.createElement(mv,{routes:r.routes,future:r.future,state:f,onError:a})))))),null)}function Hh(r,t){return{...r,navigation:t.navigation.state!=="idle"?t.navigation:r.navigation,revalidation:t.revalidation!=="idle"?t.revalidation:r.revalidation,actionData:t.navigation.state!=="submitting"?t.actionData:r.actionData,fetchers:t.fetchers}}var mv=_.memo(yv);function yv({routes:r,future:t,state:a,onError:i}){return Q2(r,void 0,a,i,t)}function on({to:r,replace:t,state:a,relative:i}){Le(La(),"<Navigate> may be used only in the context of a <Router> component.");let{static:s}=_.useContext(xr);st(!s,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:c}=_.useContext($r),{pathname:d}=lt(),f=ln(),p=ll(r,sl(c),d,i==="path"),m=JSON.stringify(p);return _.useEffect(()=>{f(JSON.parse(m),{replace:t,state:a,relative:i})},[f,m,i,t,a]),null}function ul(r){return G2(r.context)}function gv({basename:r="/",children:t=null,location:a,navigationType:i="POP",navigator:s,static:c=!1,unstable_useTransitions:d}){Le(!La(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let f=r.replace(/^\/*/,"/"),p=_.useMemo(()=>({basename:f,navigator:s,static:c,unstable_useTransitions:d,future:{}}),[f,s,c,d]);typeof a=="string"&&(a=ra(a));let{pathname:m="/",search:y="",hash:v="",state:w=null,key:S="default"}=a,E=_.useMemo(()=>{let I=Dr(m,f);return I==null?null:{location:{pathname:I,search:y,hash:v,state:w,key:S},navigationType:i}},[f,m,y,v,w,S,i]);return st(E!=null,`<Router basename="${f}"> is not able to match the URL "${m}${y}${v}" because it does not start with the basename, so the <Router> won't render anything.`),E==null?null:_.createElement(xr.Provider,{value:p},_.createElement(cl.Provider,{children:t,value:E}))}var Ws="get",Ks="application/x-www-form-urlencoded";function dl(r){return typeof HTMLElement<"u"&&r instanceof HTMLElement}function vv(r){return dl(r)&&r.tagName.toLowerCase()==="button"}function wv(r){return dl(r)&&r.tagName.toLowerCase()==="form"}function Cv(r){return dl(r)&&r.tagName.toLowerCase()==="input"}function _v(r){return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}function Sv(r,t){return r.button===0&&(!t||t==="_self")&&!_v(r)}function Qu(r=""){return new URLSearchParams(typeof r=="string"||Array.isArray(r)||r instanceof URLSearchParams?r:Object.keys(r).reduce((t,a)=>{let i=r[a];return t.concat(Array.isArray(i)?i.map(s=>[a,s]):[[a,i]])},[]))}function xv(r,t){let a=Qu(r);return t&&t.forEach((i,s)=>{a.has(s)||t.getAll(s).forEach(c=>{a.append(s,c)})}),a}var Os=null;function Ev(){if(Os===null)try{new FormData(document.createElement("form"),0),Os=!1}catch{Os=!0}return Os}var kv=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function fu(r){return r!=null&&!kv.has(r)?(st(!1,`"${r}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Ks}"`),null):r}function Tv(r,t){let a,i,s,c,d;if(wv(r)){let f=r.getAttribute("action");i=f?Dr(f,t):null,a=r.getAttribute("method")||Ws,s=fu(r.getAttribute("enctype"))||Ks,c=new FormData(r)}else if(vv(r)||Cv(r)&&(r.type==="submit"||r.type==="image")){let f=r.form;if(f==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let p=r.getAttribute("formaction")||f.getAttribute("action");if(i=p?Dr(p,t):null,a=r.getAttribute("formmethod")||f.getAttribute("method")||Ws,s=fu(r.getAttribute("formenctype"))||fu(f.getAttribute("enctype"))||Ks,c=new FormData(f,r),!Ev()){let{name:m,type:y,value:v}=r;if(y==="image"){let w=m?`${m}.`:"";c.append(`${w}x`,"0"),c.append(`${w}y`,"0")}else m&&c.append(m,v)}}else{if(dl(r))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');a=Ws,i=null,s=Ks,d=r}return c&&s==="text/plain"&&(d=c,c=void 0),{action:i,method:a.toLowerCase(),encType:s,formData:c,body:d}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Ed(r,t){if(r===!1||r===null||typeof r>"u")throw new Error(t)}function Iv(r,t,a,i){let s=typeof r=="string"?new URL(r,typeof window>"u"?"server://singlefetch/":window.location.origin):r;return a?s.pathname.endsWith("/")?s.pathname=`${s.pathname}_.${i}`:s.pathname=`${s.pathname}.${i}`:s.pathname==="/"?s.pathname=`_root.${i}`:t&&Dr(s.pathname,t)==="/"?s.pathname=`${t.replace(/\/$/,"")}/_root.${i}`:s.pathname=`${s.pathname.replace(/\/$/,"")}.${i}`,s}async function bv(r,t){if(r.id in t)return t[r.id];try{let a=await import(r.module);return t[r.id]=a,a}catch(a){return console.error(`Error loading route module \`${r.module}\`, reloading page...`),console.error(a),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Pv(r){return r==null?!1:r.href==null?r.rel==="preload"&&typeof r.imageSrcSet=="string"&&typeof r.imageSizes=="string":typeof r.rel=="string"&&typeof r.href=="string"}async function Rv(r,t,a){let i=await Promise.all(r.map(async s=>{let c=t.routes[s.route.id];if(c){let d=await bv(c,a);return d.links?d.links():[]}return[]}));return jv(i.flat(1).filter(Pv).filter(s=>s.rel==="stylesheet"||s.rel==="preload").map(s=>s.rel==="stylesheet"?{...s,rel:"prefetch",as:"style"}:{...s,rel:"prefetch"}))}function Wh(r,t,a,i,s,c){let d=(p,m)=>a[m]?p.route.id!==a[m].route.id:!0,f=(p,m)=>{var y;return a[m].pathname!==p.pathname||((y=a[m].route.path)==null?void 0:y.endsWith("*"))&&a[m].params["*"]!==p.params["*"]};return c==="assets"?t.filter((p,m)=>d(p,m)||f(p,m)):c==="data"?t.filter((p,m)=>{var v;let y=i.routes[p.route.id];if(!y||!y.hasLoader)return!1;if(d(p,m)||f(p,m))return!0;if(p.route.shouldRevalidate){let w=p.route.shouldRevalidate({currentUrl:new URL(s.pathname+s.search+s.hash,window.origin),currentParams:((v=a[0])==null?void 0:v.params)||{},nextUrl:new URL(r,window.origin),nextParams:p.params,defaultShouldRevalidate:!0});if(typeof w=="boolean")return w}return!0}):[]}function Av(r,t,{includeHydrateFallback:a}={}){return Nv(r.map(i=>{let s=t.routes[i.route.id];if(!s)return[];let c=[s.module];return s.clientActionModule&&(c=c.concat(s.clientActionModule)),s.clientLoaderModule&&(c=c.concat(s.clientLoaderModule)),a&&s.hydrateFallbackModule&&(c=c.concat(s.hydrateFallbackModule)),s.imports&&(c=c.concat(s.imports)),c}).flat(1))}function Nv(r){return[...new Set(r)]}function Lv(r){let t={},a=Object.keys(r).sort();for(let i of a)t[i]=r[i];return t}function jv(r,t){let a=new Set;return new Set(t),r.reduce((i,s)=>{let c=JSON.stringify(Lv(s));return a.has(c)||(a.add(c),i.push({key:c,link:s})),i},[])}function h0(){let r=_.useContext(Na);return Ed(r,"You must render this element inside a <DataRouterContext.Provider> element"),r}function Mv(){let r=_.useContext(Ii);return Ed(r,"You must render this element inside a <DataRouterStateContext.Provider> element"),r}var kd=_.createContext(void 0);kd.displayName="FrameworkContext";function m0(){let r=_.useContext(kd);return Ed(r,"You must render this element inside a <HydratedRouter> element"),r}function Dv(r,t){let a=_.useContext(kd),[i,s]=_.useState(!1),[c,d]=_.useState(!1),{onFocus:f,onBlur:p,onMouseEnter:m,onMouseLeave:y,onTouchStart:v}=t,w=_.useRef(null);_.useEffect(()=>{if(r==="render"&&d(!0),r==="viewport"){let I=D=>{D.forEach(b=>{d(b.isIntersecting)})},N=new IntersectionObserver(I,{threshold:.5});return w.current&&N.observe(w.current),()=>{N.disconnect()}}},[r]),_.useEffect(()=>{if(i){let I=setTimeout(()=>{d(!0)},100);return()=>{clearTimeout(I)}}},[i]);let S=()=>{s(!0)},E=()=>{s(!1),d(!1)};return a?r!=="intent"?[c,w,{}]:[c,w,{onFocus:si(f,S),onBlur:si(p,E),onMouseEnter:si(m,S),onMouseLeave:si(y,E),onTouchStart:si(v,S)}]:[!1,w,{}]}function si(r,t){return a=>{r&&r(a),a.defaultPrevented||t(a)}}function $v({page:r,...t}){let{router:a}=h0(),i=_.useMemo(()=>Zn(a.routes,r,a.basename),[a.routes,r,a.basename]);return i?_.createElement(Fv,{page:r,matches:i,...t}):null}function Ov(r){let{manifest:t,routeModules:a}=m0(),[i,s]=_.useState([]);return _.useEffect(()=>{let c=!1;return Rv(r,t,a).then(d=>{c||s(d)}),()=>{c=!0}},[r,t,a]),i}function Fv({page:r,matches:t,...a}){let i=lt(),{future:s,manifest:c,routeModules:d}=m0(),{basename:f}=h0(),{loaderData:p,matches:m}=Mv(),y=_.useMemo(()=>Wh(r,t,m,c,i,"data"),[r,t,m,c,i]),v=_.useMemo(()=>Wh(r,t,m,c,i,"assets"),[r,t,m,c,i]),w=_.useMemo(()=>{if(r===i.pathname+i.search+i.hash)return[];let I=new Set,N=!1;if(t.forEach(b=>{var O;let B=c.routes[b.route.id];!B||!B.hasLoader||(!y.some(j=>j.route.id===b.route.id)&&b.route.id in p&&((O=d[b.route.id])!=null&&O.shouldRevalidate)||B.hasClientLoader?N=!0:I.add(b.route.id))}),I.size===0)return[];let D=Iv(r,f,s.unstable_trailingSlashAwareDataRequests,"data");return N&&I.size>0&&D.searchParams.set("_routes",t.filter(b=>I.has(b.route.id)).map(b=>b.route.id).join(",")),[D.pathname+D.search]},[f,s.unstable_trailingSlashAwareDataRequests,p,i,c,y,t,r,d]),S=_.useMemo(()=>Av(v,c),[v,c]),E=Ov(v);return _.createElement(_.Fragment,null,w.map(I=>_.createElement("link",{key:I,rel:"prefetch",as:"fetch",href:I,...a})),S.map(I=>_.createElement("link",{key:I,rel:"modulepreload",href:I,...a})),E.map(({key:I,link:N})=>_.createElement("link",{key:I,nonce:a.nonce,...N})))}function Uv(...r){return t=>{r.forEach(a=>{typeof a=="function"?a(t):a!=null&&(a.current=t)})}}var zv=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{zv&&(window.__reactRouterVersion="7.12.0")}catch{}function Bv(r,t){return m2({basename:t==null?void 0:t.basename,getContext:t==null?void 0:t.getContext,future:t==null?void 0:t.future,history:Ng({window:t==null?void 0:t.window}),hydrationData:Vv(),routes:r,mapRouteProperties:dv,hydrationRouteProperties:fv,dataStrategy:t==null?void 0:t.dataStrategy,patchRoutesOnNavigation:t==null?void 0:t.patchRoutesOnNavigation,window:t==null?void 0:t.window,unstable_instrumentations:t==null?void 0:t.unstable_instrumentations}).initialize()}function Vv(){let r=window==null?void 0:window.__staticRouterHydrationData;return r&&r.errors&&(r={...r,errors:Hv(r.errors)}),r}function Hv(r){if(!r)return null;let t=Object.entries(r),a={};for(let[i,s]of t)if(s&&s.__type==="RouteErrorResponse")a[i]=new ki(s.status,s.statusText,s.data,s.internal===!0);else if(s&&s.__type==="Error"){if(s.__subType){let c=window[s.__subType];if(typeof c=="function")try{let d=new c(s.message);d.stack="",a[i]=d}catch{}}if(a[i]==null){let c=new Error(s.message);c.stack="",a[i]=c}}else a[i]=s;return a}var y0=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Ge=_.forwardRef(function({onClick:t,discover:a="render",prefetch:i="none",relative:s,reloadDocument:c,replace:d,state:f,target:p,to:m,preventScrollReset:y,viewTransition:v,unstable_defaultShouldRevalidate:w,...S},E){let{basename:I,unstable_useTransitions:N}=_.useContext(xr),D=typeof m=="string"&&y0.test(m),b=Gm(m,I);m=b.to;let B=K2(m,{relative:s}),[O,j,q]=Dv(i,S),x=qv(m,{replace:d,state:f,target:p,preventScrollReset:y,relative:s,viewTransition:v,unstable_defaultShouldRevalidate:w,unstable_useTransitions:N});function W(ee){t&&t(ee),ee.defaultPrevented||x(ee)}let re=_.createElement("a",{...S,...q,href:b.absoluteURL||B,onClick:b.isExternal||c?t:W,ref:Uv(E,j),target:p,"data-discover":!D&&a==="render"?"true":void 0});return O&&!D?_.createElement(_.Fragment,null,re,_.createElement($v,{page:B})):re});Ge.displayName="Link";var Wv=_.forwardRef(function({"aria-current":t="page",caseSensitive:a=!1,className:i="",end:s=!1,style:c,to:d,viewTransition:f,children:p,...m},y){let v=bi(d,{relative:m.relative}),w=lt(),S=_.useContext(Ii),{navigator:E,basename:I}=_.useContext(xr),N=S!=null&&Xv(v)&&f===!0,D=E.encodeLocation?E.encodeLocation(v).pathname:v.pathname,b=w.pathname,B=S&&S.navigation&&S.navigation.location?S.navigation.location.pathname:null;a||(b=b.toLowerCase(),B=B?B.toLowerCase():null,D=D.toLowerCase()),B&&I&&(B=Dr(B,I)||B);const O=D!=="/"&&D.endsWith("/")?D.length-1:D.length;let j=b===D||!s&&b.startsWith(D)&&b.charAt(O)==="/",q=B!=null&&(B===D||!s&&B.startsWith(D)&&B.charAt(D.length)==="/"),x={isActive:j,isPending:q,isTransitioning:N},W=j?t:void 0,re;typeof i=="function"?re=i(x):re=[i,j?"active":null,q?"pending":null,N?"transitioning":null].filter(Boolean).join(" ");let ee=typeof c=="function"?c(x):c;return _.createElement(Ge,{...m,"aria-current":W,className:re,ref:y,style:ee,to:d,viewTransition:f},typeof p=="function"?p(x):p)});Wv.displayName="NavLink";var Kv=_.forwardRef(({discover:r="render",fetcherKey:t,navigate:a,reloadDocument:i,replace:s,state:c,method:d=Ws,action:f,onSubmit:p,relative:m,preventScrollReset:y,viewTransition:v,unstable_defaultShouldRevalidate:w,...S},E)=>{let{unstable_useTransitions:I}=_.useContext(xr),N=Zv(),D=Jv(f,{relative:m}),b=d.toLowerCase()==="get"?"get":"post",B=typeof f=="string"&&y0.test(f),O=j=>{if(p&&p(j),j.defaultPrevented)return;j.preventDefault();let q=j.nativeEvent.submitter,x=(q==null?void 0:q.getAttribute("formmethod"))||d,W=()=>N(q||j.currentTarget,{fetcherKey:t,method:x,navigate:a,replace:s,state:c,relative:m,preventScrollReset:y,viewTransition:v,unstable_defaultShouldRevalidate:w});I&&a!==!1?_.startTransition(()=>W()):W()};return _.createElement("form",{ref:E,method:b,action:D,onSubmit:i?p:O,...S,"data-discover":!B&&r==="render"?"true":void 0})});Kv.displayName="Form";function Yv(r){return`${r} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`}function g0(r){let t=_.useContext(Na);return Le(t,Yv(r)),t}function qv(r,{target:t,replace:a,state:i,preventScrollReset:s,relative:c,viewTransition:d,unstable_defaultShouldRevalidate:f,unstable_useTransitions:p}={}){let m=ln(),y=lt(),v=bi(r,{relative:c});return _.useCallback(w=>{if(Sv(w,t)){w.preventDefault();let S=a!==void 0?a:sn(y)===sn(v),E=()=>m(r,{replace:S,state:i,preventScrollReset:s,relative:c,viewTransition:d,unstable_defaultShouldRevalidate:f});p?_.startTransition(()=>E()):E()}},[y,m,v,a,i,t,r,s,c,d,f,p])}function Td(r){st(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=_.useRef(Qu(r)),a=_.useRef(!1),i=lt(),s=_.useMemo(()=>xv(i.search,a.current?null:t.current),[i.search]),c=ln(),d=_.useCallback((f,p)=>{const m=Qu(typeof f=="function"?f(new URLSearchParams(s)):f);a.current=!0,c("?"+m,p)},[c,s]);return[s,d]}var Gv=0,Qv=()=>`__${String(++Gv)}__`;function Zv(){let{router:r}=g0("useSubmit"),{basename:t}=_.useContext(xr),a=ov(),i=r.fetch,s=r.navigate;return _.useCallback(async(c,d={})=>{let{action:f,method:p,encType:m,formData:y,body:v}=Tv(c,t);if(d.navigate===!1){let w=d.fetcherKey||Qv();await i(w,a,d.action||f,{unstable_defaultShouldRevalidate:d.unstable_defaultShouldRevalidate,preventScrollReset:d.preventScrollReset,formData:y,body:v,formMethod:d.method||p,formEncType:d.encType||m,flushSync:d.flushSync})}else await s(d.action||f,{unstable_defaultShouldRevalidate:d.unstable_defaultShouldRevalidate,preventScrollReset:d.preventScrollReset,formData:y,body:v,formMethod:d.method||p,formEncType:d.encType||m,replace:d.replace,state:d.state,fromRouteId:a,flushSync:d.flushSync,viewTransition:d.viewTransition})},[i,s,t,a])}function Jv(r,{relative:t}={}){let{basename:a}=_.useContext(xr),i=_.useContext($r);Le(i,"useFormAction must be used inside a RouteContext");let[s]=i.matches.slice(-1),c={...bi(r||".",{relative:t})},d=lt();if(r==null){c.search=d.search;let f=new URLSearchParams(c.search),p=f.getAll("index");if(p.some(y=>y==="")){f.delete("index"),p.filter(v=>v).forEach(v=>f.append("index",v));let y=f.toString();c.search=y?`?${y}`:""}}return(!r||r===".")&&s.route.index&&(c.search=c.search?c.search.replace(/^\?/,"?index&"):"?index"),a!=="/"&&(c.pathname=c.pathname==="/"?a:an([a,c.pathname])),sn(c)}function Xv(r,{relative:t}={}){let a=_.useContext(wd);Le(a!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  Did you accidentally import `RouterProvider` from `react-router`?");let{basename:i}=g0("useViewTransitionState"),s=bi(r,{relative:t});if(!a.isTransitioning)return!1;let c=Dr(a.currentLocation.pathname,i)||a.currentLocation.pathname,d=Dr(a.nextLocation.pathname,i)||a.nextLocation.pathname;return wi(s.pathname,d)!=null||wi(s.pathname,c)!=null}var fl=Um();const ew=Co(fl);function tw(r){return _.createElement(hv,{flushSync:fl.flushSync,...r})}var pu,Kh;function rw(){if(Kh)return pu;Kh=1;var r=typeof Element<"u",t=typeof Map=="function",a=typeof Set=="function",i=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function s(c,d){if(c===d)return!0;if(c&&d&&typeof c=="object"&&typeof d=="object"){if(c.constructor!==d.constructor)return!1;var f,p,m;if(Array.isArray(c)){if(f=c.length,f!=d.length)return!1;for(p=f;p--!==0;)if(!s(c[p],d[p]))return!1;return!0}var y;if(t&&c instanceof Map&&d instanceof Map){if(c.size!==d.size)return!1;for(y=c.entries();!(p=y.next()).done;)if(!d.has(p.value[0]))return!1;for(y=c.entries();!(p=y.next()).done;)if(!s(p.value[1],d.get(p.value[0])))return!1;return!0}if(a&&c instanceof Set&&d instanceof Set){if(c.size!==d.size)return!1;for(y=c.entries();!(p=y.next()).done;)if(!d.has(p.value[0]))return!1;return!0}if(i&&ArrayBuffer.isView(c)&&ArrayBuffer.isView(d)){if(f=c.length,f!=d.length)return!1;for(p=f;p--!==0;)if(c[p]!==d[p])return!1;return!0}if(c.constructor===RegExp)return c.source===d.source&&c.flags===d.flags;if(c.valueOf!==Object.prototype.valueOf&&typeof c.valueOf=="function"&&typeof d.valueOf=="function")return c.valueOf()===d.valueOf();if(c.toString!==Object.prototype.toString&&typeof c.toString=="function"&&typeof d.toString=="function")return c.toString()===d.toString();if(m=Object.keys(c),f=m.length,f!==Object.keys(d).length)return!1;for(p=f;p--!==0;)if(!Object.prototype.hasOwnProperty.call(d,m[p]))return!1;if(r&&c instanceof Element)return!1;for(p=f;p--!==0;)if(!((m[p]==="_owner"||m[p]==="__v"||m[p]==="__o")&&c.$$typeof)&&!s(c[m[p]],d[m[p]]))return!1;return!0}return c!==c&&d!==d}return pu=function(d,f){try{return s(d,f)}catch(p){if((p.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw p}},pu}var nw=rw();const aw=Co(nw);var hu,Yh;function ow(){if(Yh)return hu;Yh=1;var r=function(t,a,i,s,c,d,f,p){if(!t){var m;if(a===void 0)m=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var y=[i,s,c,d,f,p],v=0;m=new Error(a.replace(/%s/g,function(){return y[v++]})),m.name="Invariant Violation"}throw m.framesToPop=1,m}};return hu=r,hu}var iw=ow();const qh=Co(iw);var mu,Gh;function sw(){return Gh||(Gh=1,mu=function(t,a,i,s){var c=i?i.call(s,t,a):void 0;if(c!==void 0)return!!c;if(t===a)return!0;if(typeof t!="object"||!t||typeof a!="object"||!a)return!1;var d=Object.keys(t),f=Object.keys(a);if(d.length!==f.length)return!1;for(var p=Object.prototype.hasOwnProperty.bind(a),m=0;m<d.length;m++){var y=d[m];if(!p(y))return!1;var v=t[y],w=a[y];if(c=i?i.call(s,v,w,y):void 0,c===!1||c===void 0&&v!==w)return!1}return!0}),mu}var lw=sw();const cw=Co(lw);var v0=(r=>(r.BASE="base",r.BODY="body",r.HEAD="head",r.HTML="html",r.LINK="link",r.META="meta",r.NOSCRIPT="noscript",r.SCRIPT="script",r.STYLE="style",r.TITLE="title",r.FRAGMENT="Symbol(react.fragment)",r))(v0||{}),yu={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"]}},Qh=Object.values(v0),Id={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},uw=Object.entries(Id).reduce((r,[t,a])=>(r[a]=t,r),{}),Kr="data-rh",ho={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},mo=(r,t)=>{for(let a=r.length-1;a>=0;a-=1){const i=r[a];if(Object.prototype.hasOwnProperty.call(i,t))return i[t]}return null},dw=r=>{let t=mo(r,"title");const a=mo(r,ho.TITLE_TEMPLATE);if(Array.isArray(t)&&(t=t.join("")),a&&t)return a.replace(/%s/g,()=>t);const i=mo(r,ho.DEFAULT_TITLE);return t||i||void 0},fw=r=>mo(r,ho.ON_CHANGE_CLIENT_STATE)||(()=>{}),gu=(r,t)=>t.filter(a=>typeof a[r]<"u").map(a=>a[r]).reduce((a,i)=>({...a,...i}),{}),pw=(r,t)=>t.filter(a=>typeof a.base<"u").map(a=>a.base).reverse().reduce((a,i)=>{if(!a.length){const s=Object.keys(i);for(let c=0;c<s.length;c+=1){const f=s[c].toLowerCase();if(r.indexOf(f)!==-1&&i[f])return a.concat(i)}}return a},[]),hw=r=>console&&typeof console.warn=="function"&&console.warn(r),li=(r,t,a)=>{const i={};return a.filter(s=>Array.isArray(s[r])?!0:(typeof s[r]<"u"&&hw(`Helmet: ${r} should be of type "Array". Instead found type "${typeof s[r]}"`),!1)).map(s=>s[r]).reverse().reduce((s,c)=>{const d={};c.filter(p=>{let m;const y=Object.keys(p);for(let w=0;w<y.length;w+=1){const S=y[w],E=S.toLowerCase();t.indexOf(E)!==-1&&!(m==="rel"&&p[m].toLowerCase()==="canonical")&&!(E==="rel"&&p[E].toLowerCase()==="stylesheet")&&(m=E),t.indexOf(S)!==-1&&(S==="innerHTML"||S==="cssText"||S==="itemprop")&&(m=S)}if(!m||!p[m])return!1;const v=p[m].toLowerCase();return i[m]||(i[m]={}),d[m]||(d[m]={}),i[m][v]?!1:(d[m][v]=!0,!0)}).reverse().forEach(p=>s.push(p));const f=Object.keys(d);for(let p=0;p<f.length;p+=1){const m=f[p],y={...i[m],...d[m]};i[m]=y}return s},[]).reverse()},mw=(r,t)=>{if(Array.isArray(r)&&r.length){for(let a=0;a<r.length;a+=1)if(r[a][t])return!0}return!1},yw=r=>({baseTag:pw(["href"],r),bodyAttributes:gu("bodyAttributes",r),defer:mo(r,ho.DEFER),encode:mo(r,ho.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:gu("htmlAttributes",r),linkTags:li("link",["rel","href"],r),metaTags:li("meta",["name","charset","http-equiv","property","itemprop"],r),noscriptTags:li("noscript",["innerHTML"],r),onChangeClientState:fw(r),scriptTags:li("script",["src","innerHTML"],r),styleTags:li("style",["cssText"],r),title:dw(r),titleAttributes:gu("titleAttributes",r),prioritizeSeoTags:mw(r,ho.PRIORITIZE_SEO_TAGS)}),w0=r=>Array.isArray(r)?r.join(""):r,gw=(r,t)=>{const a=Object.keys(r);for(let i=0;i<a.length;i+=1)if(t[a[i]]&&t[a[i]].includes(r[a[i]]))return!0;return!1},vu=(r,t)=>Array.isArray(r)?r.reduce((a,i)=>(gw(i,t)?a.priority.push(i):a.default.push(i),a),{priority:[],default:[]}):{default:r,priority:[]},Zh=(r,t)=>({...r,[t]:void 0}),vw=["noscript","script","style"],Zu=(r,t=!0)=>t===!1?String(r):String(r).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),C0=r=>Object.keys(r).reduce((t,a)=>{const i=typeof r[a]<"u"?`${a}="${r[a]}"`:`${a}`;return t?`${t} ${i}`:i},""),ww=(r,t,a,i)=>{const s=C0(a),c=w0(t);return s?`<${r} ${Kr}="true" ${s}>${Zu(c,i)}</${r}>`:`<${r} ${Kr}="true">${Zu(c,i)}</${r}>`},Cw=(r,t,a=!0)=>t.reduce((i,s)=>{const c=s,d=Object.keys(c).filter(m=>!(m==="innerHTML"||m==="cssText")).reduce((m,y)=>{const v=typeof c[y]>"u"?y:`${y}="${Zu(c[y],a)}"`;return m?`${m} ${v}`:v},""),f=c.innerHTML||c.cssText||"",p=vw.indexOf(r)===-1;return`${i}<${r} ${Kr}="true" ${d}${p?"/>":`>${f}</${r}>`}`},""),_0=(r,t={})=>Object.keys(r).reduce((a,i)=>{const s=Id[i];return a[s||i]=r[i],a},t),_w=(r,t,a)=>{const i={key:t,[Kr]:!0},s=_0(a,i);return[nn.createElement("title",s,t)]},Ys=(r,t)=>t.map((a,i)=>{const s={key:i,[Kr]:!0};return Object.keys(a).forEach(c=>{const f=Id[c]||c;if(f==="innerHTML"||f==="cssText"){const p=a.innerHTML||a.cssText;s.dangerouslySetInnerHTML={__html:p}}else s[f]=a[c]}),nn.createElement(r,s)}),jr=(r,t,a=!0)=>{switch(r){case"title":return{toComponent:()=>_w(r,t.title,t.titleAttributes),toString:()=>ww(r,t.title,t.titleAttributes,a)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>_0(t),toString:()=>C0(t)};default:return{toComponent:()=>Ys(r,t),toString:()=>Cw(r,t,a)}}},Sw=({metaTags:r,linkTags:t,scriptTags:a,encode:i})=>{const s=vu(r,yu.meta),c=vu(t,yu.link),d=vu(a,yu.script);return{priorityMethods:{toComponent:()=>[...Ys("meta",s.priority),...Ys("link",c.priority),...Ys("script",d.priority)],toString:()=>`${jr("meta",s.priority,i)} ${jr("link",c.priority,i)} ${jr("script",d.priority,i)}`},metaTags:s.default,linkTags:c.default,scriptTags:d.default}},xw=r=>{const{baseTag:t,bodyAttributes:a,encode:i=!0,htmlAttributes:s,noscriptTags:c,styleTags:d,title:f="",titleAttributes:p,prioritizeSeoTags:m}=r;let{linkTags:y,metaTags:v,scriptTags:w}=r,S={toComponent:()=>{},toString:()=>""};return m&&({priorityMethods:S,linkTags:y,metaTags:v,scriptTags:w}=Sw(r)),{priority:S,base:jr("base",t,i),bodyAttributes:jr("bodyAttributes",a,i),htmlAttributes:jr("htmlAttributes",s,i),link:jr("link",y,i),meta:jr("meta",v,i),noscript:jr("noscript",c,i),script:jr("script",w,i),style:jr("style",d,i),title:jr("title",{title:f,titleAttributes:p},i)}},Ju=xw,Fs=[],S0=!!(typeof window<"u"&&window.document&&window.document.createElement),Xu=class{constructor(r,t){F(this,"instances",[]);F(this,"canUseDOM",S0);F(this,"context");F(this,"value",{setHelmet:r=>{this.context.helmet=r},helmetInstances:{get:()=>this.canUseDOM?Fs:this.instances,add:r=>{(this.canUseDOM?Fs:this.instances).push(r)},remove:r=>{const t=(this.canUseDOM?Fs:this.instances).indexOf(r);(this.canUseDOM?Fs:this.instances).splice(t,1)}}});this.context=r,this.canUseDOM=t||!1,t||(r.helmet=Ju({baseTag:[],bodyAttributes:{},htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},Ew={},x0=nn.createContext(Ew),ka,E0=(ka=class extends _.Component{constructor(a){super(a);F(this,"helmetData");this.helmetData=new Xu(this.props.context||{},ka.canUseDOM)}render(){return nn.createElement(x0.Provider,{value:this.helmetData.value},this.props.children)}},F(ka,"canUseDOM",S0),ka),oo=(r,t)=>{const a=document.head||document.querySelector("head"),i=a.querySelectorAll(`${r}[${Kr}]`),s=[].slice.call(i),c=[];let d;return t&&t.length&&t.forEach(f=>{const p=document.createElement(r);for(const m in f)if(Object.prototype.hasOwnProperty.call(f,m))if(m==="innerHTML")p.innerHTML=f.innerHTML;else if(m==="cssText")p.styleSheet?p.styleSheet.cssText=f.cssText:p.appendChild(document.createTextNode(f.cssText));else{const y=m,v=typeof f[y]>"u"?"":f[y];p.setAttribute(m,v)}p.setAttribute(Kr,"true"),s.some((m,y)=>(d=y,p.isEqualNode(m)))?s.splice(d,1):c.push(p)}),s.forEach(f=>{var p;return(p=f.parentNode)==null?void 0:p.removeChild(f)}),c.forEach(f=>a.appendChild(f)),{oldTags:s,newTags:c}},ed=(r,t)=>{const a=document.getElementsByTagName(r)[0];if(!a)return;const i=a.getAttribute(Kr),s=i?i.split(","):[],c=[...s],d=Object.keys(t);for(const f of d){const p=t[f]||"";a.getAttribute(f)!==p&&a.setAttribute(f,p),s.indexOf(f)===-1&&s.push(f);const m=c.indexOf(f);m!==-1&&c.splice(m,1)}for(let f=c.length-1;f>=0;f-=1)a.removeAttribute(c[f]);s.length===c.length?a.removeAttribute(Kr):a.getAttribute(Kr)!==d.join(",")&&a.setAttribute(Kr,d.join(","))},kw=(r,t)=>{typeof r<"u"&&document.title!==r&&(document.title=w0(r)),ed("title",t)},Jh=(r,t)=>{const{baseTag:a,bodyAttributes:i,htmlAttributes:s,linkTags:c,metaTags:d,noscriptTags:f,onChangeClientState:p,scriptTags:m,styleTags:y,title:v,titleAttributes:w}=r;ed("body",i),ed("html",s),kw(v,w);const S={baseTag:oo("base",a),linkTags:oo("link",c),metaTags:oo("meta",d),noscriptTags:oo("noscript",f),scriptTags:oo("script",m),styleTags:oo("style",y)},E={},I={};Object.keys(S).forEach(N=>{const{newTags:D,oldTags:b}=S[N];D.length&&(E[N]=D),b.length&&(I[N]=S[N].oldTags)}),t&&t(),p(r,E,I)},ci=null,Tw=r=>{ci&&cancelAnimationFrame(ci),r.defer?ci=requestAnimationFrame(()=>{Jh(r,()=>{ci=null})}):(Jh(r),ci=null)},Iw=Tw,Xh=class extends _.Component{constructor(){super(...arguments);F(this,"rendered",!1)}shouldComponentUpdate(t){return!cw(t,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:t}=this.props.context;t.remove(this),this.emitChange()}emitChange(){const{helmetInstances:t,setHelmet:a}=this.props.context;let i=null;const s=yw(t.get().map(c=>{const d={...c.props};return delete d.context,d}));E0.canUseDOM?Iw(s):Ju&&(i=Ju(s)),a(i)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:t}=this.props.context;t.add(this),this.emitChange()}render(){return this.init(),null}},Wu,xS=(Wu=class extends _.Component{shouldComponentUpdate(r){return!aw(Zh(this.props,"helmetData"),Zh(r,"helmetData"))}mapNestedChildrenToProps(r,t){if(!t)return null;switch(r.type){case"script":case"noscript":return{innerHTML:t};case"style":return{cssText:t};default:throw new Error(`<${r.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(r,t,a,i){return{...t,[r.type]:[...t[r.type]||[],{...a,...this.mapNestedChildrenToProps(r,i)}]}}mapObjectTypeChildren(r,t,a,i){switch(r.type){case"title":return{...t,[r.type]:i,titleAttributes:{...a}};case"body":return{...t,bodyAttributes:{...a}};case"html":return{...t,htmlAttributes:{...a}};default:return{...t,[r.type]:{...a}}}}mapArrayTypeChildrenToProps(r,t){let a={...t};return Object.keys(r).forEach(i=>{a={...a,[i]:r[i]}}),a}warnOnInvalidChildren(r,t){return qh(Qh.some(a=>r.type===a),typeof r.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 ${Qh.join(", ")} are allowed. Helmet does not support rendering <${r.type}> elements. Refer to our API for more information.`),qh(!t||typeof t=="string"||Array.isArray(t)&&!t.some(a=>typeof a!="string"),`Helmet expects a string as a child of <${r.type}>. Did you forget to wrap your children in braces? ( <${r.type}>{\`\`}</${r.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(r,t){let a={};return nn.Children.forEach(r,i=>{if(!i||!i.props)return;const{children:s,...c}=i.props,d=Object.keys(c).reduce((p,m)=>(p[uw[m]||m]=c[m],p),{});let{type:f}=i;switch(typeof f=="symbol"?f=f.toString():this.warnOnInvalidChildren(i,s),f){case"Symbol(react.fragment)":t=this.mapChildrenToProps(s,t);break;case"link":case"meta":case"noscript":case"script":case"style":a=this.flattenArrayTypeChildren(i,a,d,s);break;default:t=this.mapObjectTypeChildren(i,t,d,s);break}}),this.mapArrayTypeChildrenToProps(a,t)}render(){const{children:r,...t}=this.props;let a={...t},{helmetData:i}=t;if(r&&(a=this.mapChildrenToProps(r,a)),i&&!(i instanceof Xu)){const s=i;i=new Xu(s.context,!0),delete a.helmetData}return i?nn.createElement(Xh,{...a,context:i.value}):nn.createElement(x0.Consumer,null,s=>nn.createElement(Xh,{...a,context:s}))}},F(Wu,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),Wu),wu={exports:{}},Cu={};/**
 * @license React
 * use-sync-external-store-with-selector.production.js
 *
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var em;function bw(){if(em)return Cu;em=1;var r=ol();function t(p,m){return p===m&&(p!==0||1/p===1/m)||p!==p&&m!==m}var a=typeof Object.is=="function"?Object.is:t,i=r.useSyncExternalStore,s=r.useRef,c=r.useEffect,d=r.useMemo,f=r.useDebugValue;return Cu.useSyncExternalStoreWithSelector=function(p,m,y,v,w){var S=s(null);if(S.current===null){var E={hasValue:!1,value:null};S.current=E}else E=S.current;S=d(function(){function N(j){if(!D){if(D=!0,b=j,j=v(j),w!==void 0&&E.hasValue){var q=E.value;if(w(q,j))return B=q}return B=j}if(q=B,a(b,j))return q;var x=v(j);return w!==void 0&&w(q,x)?(b=j,q):(b=j,B=x)}var D=!1,b,B,O=y===void 0?null:y;return[function(){return N(m())},O===null?void 0:function(){return N(O())}]},[m,y,v,w]);var I=i(p,S[0],S[1]);return c(function(){E.hasValue=!0,E.value=I},[I]),f(I),I},Cu}var tm;function Pw(){return tm||(tm=1,wu.exports=bw()),wu.exports}var Rw=Pw();function Aw(r){r()}function Nw(){let r=null,t=null;return{clear(){r=null,t=null},notify(){Aw(()=>{let a=r;for(;a;)a.callback(),a=a.next})},get(){const a=[];let i=r;for(;i;)a.push(i),i=i.next;return a},subscribe(a){let i=!0;const s=t={callback:a,next:null,prev:t};return s.prev?s.prev.next=s:r=s,function(){!i||r===null||(i=!1,s.next?s.next.prev=s.prev:t=s.prev,s.prev?s.prev.next=s.next:r=s.next)}}}}var rm={notify(){},get:()=>[]};function Lw(r,t){let a,i=rm,s=0,c=!1;function d(I){y();const N=i.subscribe(I);let D=!1;return()=>{D||(D=!0,N(),v())}}function f(){i.notify()}function p(){E.onStateChange&&E.onStateChange()}function m(){return c}function y(){s++,a||(a=r.subscribe(p),i=Nw())}function v(){s--,a&&s===0&&(a(),a=void 0,i.clear(),i=rm)}function w(){c||(c=!0,y())}function S(){c&&(c=!1,v())}const E={addNestedSub:d,notifyNestedSubs:f,handleChangeWrapper:p,isSubscribed:m,trySubscribe:w,tryUnsubscribe:S,getListeners:()=>i};return E}var jw=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Mw=jw(),Dw=()=>typeof navigator<"u"&&navigator.product==="ReactNative",$w=Dw(),Ow=()=>Mw||$w?_.useLayoutEffect:_.useEffect,Fw=Ow(),_u=Symbol.for("react-redux-context"),Su=typeof globalThis<"u"?globalThis:{};function Uw(){if(!_.createContext)return{};const r=Su[_u]??(Su[_u]=new Map);let t=r.get(_.createContext);return t||(t=_.createContext(null),r.set(_.createContext,t)),t}var ea=Uw();function zw(r){const{children:t,context:a,serverState:i,store:s}=r,c=_.useMemo(()=>{const p=Lw(s);return{store:s,subscription:p,getServerState:i?()=>i:void 0}},[s,i]),d=_.useMemo(()=>s.getState(),[s]);Fw(()=>{const{subscription:p}=c;return p.onStateChange=p.notifyNestedSubs,p.trySubscribe(),d!==s.getState()&&p.notifyNestedSubs(),()=>{p.tryUnsubscribe(),p.onStateChange=void 0}},[c,d]);const f=a||ea;return _.createElement(f.Provider,{value:c},t)}var Bw=zw;function bd(r=ea){return function(){return _.useContext(r)}}var k0=bd();function T0(r=ea){const t=r===ea?k0:bd(r),a=()=>{const{store:i}=t();return i};return Object.assign(a,{withTypes:()=>a}),a}var Vw=T0();function Hw(r=ea){const t=r===ea?Vw:T0(r),a=()=>t().dispatch;return Object.assign(a,{withTypes:()=>a}),a}var Ww=Hw(),Kw=(r,t)=>r===t;function Yw(r=ea){const t=r===ea?k0:bd(r),a=(i,s={})=>{const{equalityFn:c=Kw}=typeof s=="function"?{equalityFn:s}:s,d=t(),{store:f,subscription:p,getServerState:m}=d;_.useRef(!0);const y=_.useCallback({[i.name](w){return i(w)}}[i.name],[i]),v=Rw.useSyncExternalStoreWithSelector(p.addNestedSub,f.getState,m||f.getState,y,c);return _.useDebugValue(v),v};return Object.assign(a,{withTypes:()=>a}),a}var qw=Yw();function Lt(r){return`Minified Redux error #${r}; visit https://redux.js.org/Errors?code=${r} for the full message or use the non-minified dev environment for full errors. `}var Gw=typeof Symbol=="function"&&Symbol.observable||"@@observable",nm=Gw,xu=()=>Math.random().toString(36).substring(7).split("").join("."),Qw={INIT:`@@redux/INIT${xu()}`,REPLACE:`@@redux/REPLACE${xu()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${xu()}`},Zs=Qw;function Pd(r){if(typeof r!="object"||r===null)return!1;let t=r;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(r)===t||Object.getPrototypeOf(r)===null}function I0(r,t,a){if(typeof r!="function")throw new Error(Lt(2));if(typeof t=="function"&&typeof a=="function"||typeof a=="function"&&typeof arguments[3]=="function")throw new Error(Lt(0));if(typeof t=="function"&&typeof a>"u"&&(a=t,t=void 0),typeof a<"u"){if(typeof a!="function")throw new Error(Lt(1));return a(I0)(r,t)}let i=r,s=t,c=new Map,d=c,f=0,p=!1;function m(){d===c&&(d=new Map,c.forEach((N,D)=>{d.set(D,N)}))}function y(){if(p)throw new Error(Lt(3));return s}function v(N){if(typeof N!="function")throw new Error(Lt(4));if(p)throw new Error(Lt(5));let D=!0;m();const b=f++;return d.set(b,N),function(){if(D){if(p)throw new Error(Lt(6));D=!1,m(),d.delete(b),c=null}}}function w(N){if(!Pd(N))throw new Error(Lt(7));if(typeof N.type>"u")throw new Error(Lt(8));if(typeof N.type!="string")throw new Error(Lt(17));if(p)throw new Error(Lt(9));try{p=!0,s=i(s,N)}finally{p=!1}return(c=d).forEach(b=>{b()}),N}function S(N){if(typeof N!="function")throw new Error(Lt(10));i=N,w({type:Zs.REPLACE})}function E(){const N=v;return{subscribe(D){if(typeof D!="object"||D===null)throw new Error(Lt(11));function b(){const O=D;O.next&&O.next(y())}return b(),{unsubscribe:N(b)}},[nm](){return this}}}return w({type:Zs.INIT}),{dispatch:w,subscribe:v,getState:y,replaceReducer:S,[nm]:E}}function Zw(r){Object.keys(r).forEach(t=>{const a=r[t];if(typeof a(void 0,{type:Zs.INIT})>"u")throw new Error(Lt(12));if(typeof a(void 0,{type:Zs.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Lt(13))})}function Jw(r){const t=Object.keys(r),a={};for(let c=0;c<t.length;c++){const d=t[c];typeof r[d]=="function"&&(a[d]=r[d])}const i=Object.keys(a);let s;try{Zw(a)}catch(c){s=c}return function(d={},f){if(s)throw s;let p=!1;const m={};for(let y=0;y<i.length;y++){const v=i[y],w=a[v],S=d[v],E=w(S,f);if(typeof E>"u")throw f&&f.type,new Error(Lt(14));m[v]=E,p=p||E!==S}return p=p||i.length!==Object.keys(d).length,p?m:d}}function Js(...r){return r.length===0?t=>t:r.length===1?r[0]:r.reduce((t,a)=>(...i)=>t(a(...i)))}function Xw(...r){return t=>(a,i)=>{const s=t(a,i);let c=()=>{throw new Error(Lt(15))};const d={getState:s.getState,dispatch:(p,...m)=>c(p,...m)},f=r.map(p=>p(d));return c=Js(...f)(s.dispatch),{...s,dispatch:c}}}function b0(r){return Pd(r)&&"type"in r&&typeof r.type=="string"}var P0=Symbol.for("immer-nothing"),am=Symbol.for("immer-draftable"),_r=Symbol.for("immer-state");function Wr(r,...t){throw new Error(`[Immer] minified error nr: ${r}. Full error at: https://bit.ly/3cXEKWf`)}var wo=Object.getPrototypeOf;function Pa(r){return!!r&&!!r[_r]}function kn(r){var t;return r?R0(r)||Array.isArray(r)||!!r[am]||!!((t=r.constructor)!=null&&t[am])||hl(r)||ml(r):!1}var e3=Object.prototype.constructor.toString();function R0(r){if(!r||typeof r!="object")return!1;const t=wo(r);if(t===null)return!0;const a=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return a===Object?!0:typeof a=="function"&&Function.toString.call(a)===e3}function Xs(r,t){pl(r)===0?Reflect.ownKeys(r).forEach(a=>{t(a,r[a],r)}):r.forEach((a,i)=>t(i,a,r))}function pl(r){const t=r[_r];return t?t.type_:Array.isArray(r)?1:hl(r)?2:ml(r)?3:0}function td(r,t){return pl(r)===2?r.has(t):Object.prototype.hasOwnProperty.call(r,t)}function A0(r,t,a){const i=pl(r);i===2?r.set(t,a):i===3?r.add(a):r[t]=a}function t3(r,t){return r===t?r!==0||1/r===1/t:r!==r&&t!==t}function hl(r){return r instanceof Map}function ml(r){return r instanceof Set}function xa(r){return r.copy_||r.base_}function rd(r,t){if(hl(r))return new Map(r);if(ml(r))return new Set(r);if(Array.isArray(r))return Array.prototype.slice.call(r);const a=R0(r);if(t===!0||t==="class_only"&&!a){const i=Object.getOwnPropertyDescriptors(r);delete i[_r];let s=Reflect.ownKeys(i);for(let c=0;c<s.length;c++){const d=s[c],f=i[d];f.writable===!1&&(f.writable=!0,f.configurable=!0),(f.get||f.set)&&(i[d]={configurable:!0,writable:!0,enumerable:f.enumerable,value:r[d]})}return Object.create(wo(r),i)}else{const i=wo(r);if(i!==null&&a)return{...r};const s=Object.create(i);return Object.assign(s,r)}}function Rd(r,t=!1){return yl(r)||Pa(r)||!kn(r)||(pl(r)>1&&(r.set=r.add=r.clear=r.delete=r3),Object.freeze(r),t&&Object.entries(r).forEach(([a,i])=>Rd(i,!0))),r}function r3(){Wr(2)}function yl(r){return Object.isFrozen(r)}var n3={};function Ra(r){const t=n3[r];return t||Wr(0,r),t}var _i;function N0(){return _i}function a3(r,t){return{drafts_:[],parent_:r,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function om(r,t){t&&(Ra("Patches"),r.patches_=[],r.inversePatches_=[],r.patchListener_=t)}function nd(r){ad(r),r.drafts_.forEach(o3),r.drafts_=null}function ad(r){r===_i&&(_i=r.parent_)}function im(r){return _i=a3(_i,r)}function o3(r){const t=r[_r];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function sm(r,t){t.unfinalizedDrafts_=t.drafts_.length;const a=t.drafts_[0];return r!==void 0&&r!==a?(a[_r].modified_&&(nd(t),Wr(4)),kn(r)&&(r=el(t,r),t.parent_||tl(t,r)),t.patches_&&Ra("Patches").generateReplacementPatches_(a[_r].base_,r,t.patches_,t.inversePatches_)):r=el(t,a,[]),nd(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),r!==P0?r:void 0}function el(r,t,a){if(yl(t))return t;const i=t[_r];if(!i)return Xs(t,(s,c)=>lm(r,i,t,s,c,a)),t;if(i.scope_!==r)return t;if(!i.modified_)return tl(r,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const s=i.copy_;let c=s,d=!1;i.type_===3&&(c=new Set(s),s.clear(),d=!0),Xs(c,(f,p)=>lm(r,i,s,f,p,a,d)),tl(r,s,!1),a&&r.patches_&&Ra("Patches").generatePatches_(i,a,r.patches_,r.inversePatches_)}return i.copy_}function lm(r,t,a,i,s,c,d){if(Pa(s)){const f=c&&t&&t.type_!==3&&!td(t.assigned_,i)?c.concat(i):void 0,p=el(r,s,f);if(A0(a,i,p),Pa(p))r.canAutoFreeze_=!1;else return}else d&&a.add(s);if(kn(s)&&!yl(s)){if(!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1)return;el(r,s),(!t||!t.scope_.parent_)&&typeof i!="symbol"&&Object.prototype.propertyIsEnumerable.call(a,i)&&tl(r,s)}}function tl(r,t,a=!1){!r.parent_&&r.immer_.autoFreeze_&&r.canAutoFreeze_&&Rd(t,a)}function i3(r,t){const a=Array.isArray(r),i={type_:a?1:0,scope_:t?t.scope_:N0(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:r,draft_:null,copy_:null,revoke_:null,isManual_:!1};let s=i,c=Ad;a&&(s=[i],c=Si);const{revoke:d,proxy:f}=Proxy.revocable(s,c);return i.draft_=f,i.revoke_=d,f}var Ad={get(r,t){if(t===_r)return r;const a=xa(r);if(!td(a,t))return s3(r,a,t);const i=a[t];return r.finalized_||!kn(i)?i:i===Eu(r.base_,t)?(ku(r),r.copy_[t]=id(i,r)):i},has(r,t){return t in xa(r)},ownKeys(r){return Reflect.ownKeys(xa(r))},set(r,t,a){const i=L0(xa(r),t);if(i!=null&&i.set)return i.set.call(r.draft_,a),!0;if(!r.modified_){const s=Eu(xa(r),t),c=s==null?void 0:s[_r];if(c&&c.base_===a)return r.copy_[t]=a,r.assigned_[t]=!1,!0;if(t3(a,s)&&(a!==void 0||td(r.base_,t)))return!0;ku(r),od(r)}return r.copy_[t]===a&&(a!==void 0||t in r.copy_)||Number.isNaN(a)&&Number.isNaN(r.copy_[t])||(r.copy_[t]=a,r.assigned_[t]=!0),!0},deleteProperty(r,t){return Eu(r.base_,t)!==void 0||t in r.base_?(r.assigned_[t]=!1,ku(r),od(r)):delete r.assigned_[t],r.copy_&&delete r.copy_[t],!0},getOwnPropertyDescriptor(r,t){const a=xa(r),i=Reflect.getOwnPropertyDescriptor(a,t);return i&&{writable:!0,configurable:r.type_!==1||t!=="length",enumerable:i.enumerable,value:a[t]}},defineProperty(){Wr(11)},getPrototypeOf(r){return wo(r.base_)},setPrototypeOf(){Wr(12)}},Si={};Xs(Ad,(r,t)=>{Si[r]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});Si.deleteProperty=function(r,t){return Si.set.call(this,r,t,void 0)};Si.set=function(r,t,a){return Ad.set.call(this,r[0],t,a,r[0])};function Eu(r,t){const a=r[_r];return(a?xa(a):r)[t]}function s3(r,t,a){var s;const i=L0(t,a);return i?"value"in i?i.value:(s=i.get)==null?void 0:s.call(r.draft_):void 0}function L0(r,t){if(!(t in r))return;let a=wo(r);for(;a;){const i=Object.getOwnPropertyDescriptor(a,t);if(i)return i;a=wo(a)}}function od(r){r.modified_||(r.modified_=!0,r.parent_&&od(r.parent_))}function ku(r){r.copy_||(r.copy_=rd(r.base_,r.scope_.immer_.useStrictShallowCopy_))}var l3=class{constructor(r){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(t,a,i)=>{if(typeof t=="function"&&typeof a!="function"){const c=a;a=t;const d=this;return function(p=c,...m){return d.produce(p,y=>a.call(this,y,...m))}}typeof a!="function"&&Wr(6),i!==void 0&&typeof i!="function"&&Wr(7);let s;if(kn(t)){const c=im(this),d=id(t,void 0);let f=!0;try{s=a(d),f=!1}finally{f?nd(c):ad(c)}return om(c,i),sm(s,c)}else if(!t||typeof t!="object"){if(s=a(t),s===void 0&&(s=t),s===P0&&(s=void 0),this.autoFreeze_&&Rd(s,!0),i){const c=[],d=[];Ra("Patches").generateReplacementPatches_(t,s,c,d),i(c,d)}return s}else Wr(1,t)},this.produceWithPatches=(t,a)=>{if(typeof t=="function")return(d,...f)=>this.produceWithPatches(d,p=>t(p,...f));let i,s;return[this.produce(t,a,(d,f)=>{i=d,s=f}),i,s]},typeof(r==null?void 0:r.autoFreeze)=="boolean"&&this.setAutoFreeze(r.autoFreeze),typeof(r==null?void 0:r.useStrictShallowCopy)=="boolean"&&this.setUseStrictShallowCopy(r.useStrictShallowCopy)}createDraft(r){kn(r)||Wr(8),Pa(r)&&(r=c3(r));const t=im(this),a=id(r,void 0);return a[_r].isManual_=!0,ad(t),a}finishDraft(r,t){const a=r&&r[_r];(!a||!a.isManual_)&&Wr(9);const{scope_:i}=a;return om(i,t),sm(void 0,i)}setAutoFreeze(r){this.autoFreeze_=r}setUseStrictShallowCopy(r){this.useStrictShallowCopy_=r}applyPatches(r,t){let a;for(a=t.length-1;a>=0;a--){const s=t[a];if(s.path.length===0&&s.op==="replace"){r=s.value;break}}a>-1&&(t=t.slice(a+1));const i=Ra("Patches").applyPatches_;return Pa(r)?i(r,t):this.produce(r,s=>i(s,t))}};function id(r,t){const a=hl(r)?Ra("MapSet").proxyMap_(r,t):ml(r)?Ra("MapSet").proxySet_(r,t):i3(r,t);return(t?t.scope_:N0()).drafts_.push(a),a}function c3(r){return Pa(r)||Wr(10,r),j0(r)}function j0(r){if(!kn(r)||yl(r))return r;const t=r[_r];let a;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,a=rd(r,t.scope_.immer_.useStrictShallowCopy_)}else a=rd(r,!0);return Xs(a,(i,s)=>{A0(a,i,j0(s))}),t&&(t.finalized_=!1),a}var Sr=new l3,M0=Sr.produce;Sr.produceWithPatches.bind(Sr);Sr.setAutoFreeze.bind(Sr);Sr.setUseStrictShallowCopy.bind(Sr);Sr.applyPatches.bind(Sr);Sr.createDraft.bind(Sr);Sr.finishDraft.bind(Sr);function D0(r){return({dispatch:a,getState:i})=>s=>c=>typeof c=="function"?c(a,i,r):s(c)}var u3=D0(),d3=D0,f3=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Js:Js.apply(null,arguments)},p3=r=>r&&typeof r.match=="function";function En(r,t){function a(...i){if(t){let s=t(...i);if(!s)throw new Error(Cr(0));return{type:r,payload:s.payload,..."meta"in s&&{meta:s.meta},..."error"in s&&{error:s.error}}}return{type:r,payload:i[0]}}return a.toString=()=>`${r}`,a.type=r,a.match=i=>b0(i)&&i.type===r,a}var $0=class hi extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,hi.prototype)}static get[Symbol.species](){return hi}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new hi(...t[0].concat(this)):new hi(...t.concat(this))}};function cm(r){return kn(r)?M0(r,()=>{}):r}function Us(r,t,a){return r.has(t)?r.get(t):r.set(t,a(t)).get(t)}function h3(r){return typeof r=="boolean"}var m3=()=>function(t){const{thunk:a=!0,immutableCheck:i=!0,serializableCheck:s=!0,actionCreatorCheck:c=!0}=t??{};let d=new $0;return a&&(h3(a)?d.push(u3):d.push(d3(a.extraArgument))),d},y3="RTK_autoBatch",um=r=>t=>{setTimeout(t,r)},g3=(r={type:"raf"})=>t=>(...a)=>{const i=t(...a);let s=!0,c=!1,d=!1;const f=new Set,p=r.type==="tick"?queueMicrotask:r.type==="raf"?typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame:um(10):r.type==="callback"?r.queueNotification:um(r.timeout),m=()=>{d=!1,c&&(c=!1,f.forEach(y=>y()))};return Object.assign({},i,{subscribe(y){const v=()=>s&&y(),w=i.subscribe(v);return f.add(y),()=>{w(),f.delete(y)}},dispatch(y){var v;try{return s=!((v=y==null?void 0:y.meta)!=null&&v[y3]),c=!s,c&&(d||(d=!0,p(m))),i.dispatch(y)}finally{s=!0}}})},v3=r=>function(a){const{autoBatch:i=!0}=a??{};let s=new $0(r);return i&&s.push(g3(typeof i=="object"?i:void 0)),s};function w3(r){const t=m3(),{reducer:a=void 0,middleware:i,devTools:s=!0,preloadedState:c=void 0,enhancers:d=void 0}=r||{};let f;if(typeof a=="function")f=a;else if(Pd(a))f=Jw(a);else throw new Error(Cr(1));let p;typeof i=="function"?p=i(t):p=t();let m=Js;s&&(m=f3({trace:!1,...typeof s=="object"&&s}));const y=Xw(...p),v=v3(y);let w=typeof d=="function"?d(v):v();const S=m(...w);return I0(f,c,S)}function O0(r){const t={},a=[];let i;const s={addCase(c,d){const f=typeof c=="string"?c:c.type;if(!f)throw new Error(Cr(28));if(f in t)throw new Error(Cr(29));return t[f]=d,s},addMatcher(c,d){return a.push({matcher:c,reducer:d}),s},addDefaultCase(c){return i=c,s}};return r(s),[t,a,i]}function C3(r){return typeof r=="function"}function _3(r,t){let[a,i,s]=O0(t),c;if(C3(r))c=()=>cm(r());else{const f=cm(r);c=()=>f}function d(f=c(),p){let m=[a[p.type],...i.filter(({matcher:y})=>y(p)).map(({reducer:y})=>y)];return m.filter(y=>!!y).length===0&&(m=[s]),m.reduce((y,v)=>{if(v)if(Pa(y)){const S=v(y,p);return S===void 0?y:S}else{if(kn(y))return M0(y,w=>v(w,p));{const w=v(y,p);if(w===void 0){if(y===null)return y;throw Error("A case reducer on a non-draftable value must not return undefined")}return w}}return y},f)}return d.getInitialState=c,d}var F0=(r,t)=>p3(r)?r.match(t):r(t);function U0(...r){return t=>r.some(a=>F0(a,t))}function dm(...r){return t=>r.every(a=>F0(a,t))}function S3(r,t){if(!r||!r.meta)return!1;const a=typeof r.meta.requestId=="string",i=t.indexOf(r.meta.requestStatus)>-1;return a&&i}function z0(r){return typeof r[0]=="function"&&"pending"in r[0]&&"fulfilled"in r[0]&&"rejected"in r[0]}function sd(...r){return r.length===0?t=>S3(t,["rejected"]):z0(r)?U0(...r.map(t=>t.rejected)):sd()(r[0])}function B0(...r){const t=a=>a&&a.meta&&a.meta.rejectedWithValue;return r.length===0?dm(sd(...r),t):z0(r)?dm(sd(...r),t):B0()(r[0])}var x3="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",V0=(r=21)=>{let t="",a=r;for(;a--;)t+=x3[Math.random()*64|0];return t},E3=["name","message","stack","code"],Tu=class{constructor(r,t){F(this,"_type");this.payload=r,this.meta=t}},fm=class{constructor(r,t){F(this,"_type");this.payload=r,this.meta=t}},k3=r=>{if(typeof r=="object"&&r!==null){const t={};for(const a of E3)typeof r[a]=="string"&&(t[a]=r[a]);return t}return{message:String(r)}},pm="External signal was aborted",Ne=(()=>{function r(t,a,i){const s=En(t+"/fulfilled",(p,m,y,v)=>({payload:p,meta:{...v||{},arg:y,requestId:m,requestStatus:"fulfilled"}})),c=En(t+"/pending",(p,m,y)=>({payload:void 0,meta:{...y||{},arg:m,requestId:p,requestStatus:"pending"}})),d=En(t+"/rejected",(p,m,y,v,w)=>({payload:v,error:(i&&i.serializeError||k3)(p||"Rejected"),meta:{...w||{},arg:y,requestId:m,rejectedWithValue:!!v,requestStatus:"rejected",aborted:(p==null?void 0:p.name)==="AbortError",condition:(p==null?void 0:p.name)==="ConditionError"}}));function f(p,{signal:m}={}){return(y,v,w)=>{const S=i!=null&&i.idGenerator?i.idGenerator(p):V0(),E=new AbortController;let I,N;function D(B){N=B,E.abort()}m&&(m.aborted?D(pm):m.addEventListener("abort",()=>D(pm),{once:!0}));const b=async function(){var j,q;let B;try{let x=(j=i==null?void 0:i.condition)==null?void 0:j.call(i,p,{getState:v,extra:w});if(T3(x)&&(x=await x),x===!1||E.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const W=new Promise((re,ee)=>{I=()=>{ee({name:"AbortError",message:N||"Aborted"})},E.signal.addEventListener("abort",I)});y(c(S,p,(q=i==null?void 0:i.getPendingMeta)==null?void 0:q.call(i,{requestId:S,arg:p},{getState:v,extra:w}))),B=await Promise.race([W,Promise.resolve(a(p,{dispatch:y,getState:v,extra:w,requestId:S,signal:E.signal,abort:D,rejectWithValue:(re,ee)=>new Tu(re,ee),fulfillWithValue:(re,ee)=>new fm(re,ee)})).then(re=>{if(re instanceof Tu)throw re;return re instanceof fm?s(re.payload,S,p,re.meta):s(re,S,p)})])}catch(x){B=x instanceof Tu?d(null,S,p,x.payload,x.meta):d(x,S,p)}finally{I&&E.signal.removeEventListener("abort",I)}return i&&!i.dispatchConditionRejection&&d.match(B)&&B.meta.condition||y(B),B}();return Object.assign(b,{abort:D,requestId:S,arg:p,unwrap(){return b.then(ld)}})}}return Object.assign(f,{pending:c,rejected:d,fulfilled:s,settled:U0(d,s),typePrefix:t})}return r.withTypes=()=>r,r})();function ld(r){if(r.meta&&r.meta.rejectedWithValue)throw r.payload;if(r.error)throw r.error;return r.payload}function T3(r){return r!==null&&typeof r=="object"&&typeof r.then=="function"}var I3=Symbol.for("rtk-slice-createasyncthunk");function b3(r,t){return`${r}/${t}`}function P3({creators:r}={}){var a;const t=(a=r==null?void 0:r.asyncThunk)==null?void 0:a[I3];return function(s){const{name:c,reducerPath:d=c}=s;if(!c)throw new Error(Cr(11));const f=(typeof s.reducers=="function"?s.reducers(A3()):s.reducers)||{},p=Object.keys(f),m={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},y={addCase(O,j){const q=typeof O=="string"?O:O.type;if(!q)throw new Error(Cr(12));if(q in m.sliceCaseReducersByType)throw new Error(Cr(13));return m.sliceCaseReducersByType[q]=j,y},addMatcher(O,j){return m.sliceMatchers.push({matcher:O,reducer:j}),y},exposeAction(O,j){return m.actionCreators[O]=j,y},exposeCaseReducer(O,j){return m.sliceCaseReducersByName[O]=j,y}};p.forEach(O=>{const j=f[O],q={reducerName:O,type:b3(c,O),createNotation:typeof s.reducers=="function"};L3(j)?M3(q,j,y,t):N3(q,j,y)});function v(){const[O={},j=[],q=void 0]=typeof s.extraReducers=="function"?O0(s.extraReducers):[s.extraReducers],x={...O,...m.sliceCaseReducersByType};return _3(s.initialState,W=>{for(let re in x)W.addCase(re,x[re]);for(let re of m.sliceMatchers)W.addMatcher(re.matcher,re.reducer);for(let re of j)W.addMatcher(re.matcher,re.reducer);q&&W.addDefaultCase(q)})}const w=O=>O,S=new Map,E=new WeakMap;let I;function N(O,j){return I||(I=v()),I(O,j)}function D(){return I||(I=v()),I.getInitialState()}function b(O,j=!1){function q(W){let re=W[O];return typeof re>"u"&&j&&(re=Us(E,q,D)),re}function x(W=w){const re=Us(S,j,()=>new WeakMap);return Us(re,W,()=>{const ee={};for(const[Z,ie]of Object.entries(s.selectors??{}))ee[Z]=R3(ie,W,()=>Us(E,W,D),j);return ee})}return{reducerPath:O,getSelectors:x,get selectors(){return x(q)},selectSlice:q}}const B={name:c,reducer:N,actions:m.actionCreators,caseReducers:m.sliceCaseReducersByName,getInitialState:D,...b(d),injectInto(O,{reducerPath:j,...q}={}){const x=j??d;return O.inject({reducerPath:x,reducer:N},q),{...B,...b(x,!0)}}};return B}}function R3(r,t,a,i){function s(c,...d){let f=t(c);return typeof f>"u"&&i&&(f=a()),r(f,...d)}return s.unwrapped=r,s}var Yr=P3();function A3(){function r(t,a){return{_reducerDefinitionType:"asyncThunk",payloadCreator:t,...a}}return r.withTypes=()=>r,{reducer(t){return Object.assign({[t.name](...a){return t(...a)}}[t.name],{_reducerDefinitionType:"reducer"})},preparedReducer(t,a){return{_reducerDefinitionType:"reducerWithPrepare",prepare:t,reducer:a}},asyncThunk:r}}function N3({type:r,reducerName:t,createNotation:a},i,s){let c,d;if("reducer"in i){if(a&&!j3(i))throw new Error(Cr(17));c=i.reducer,d=i.prepare}else c=i;s.addCase(r,c).exposeCaseReducer(t,c).exposeAction(t,d?En(r,d):En(r))}function L3(r){return r._reducerDefinitionType==="asyncThunk"}function j3(r){return r._reducerDefinitionType==="reducerWithPrepare"}function M3({type:r,reducerName:t},a,i,s){if(!s)throw new Error(Cr(18));const{payloadCreator:c,fulfilled:d,pending:f,rejected:p,settled:m,options:y}=a,v=s(r,c,y);i.exposeAction(t,v),d&&i.addCase(v.fulfilled,d),f&&i.addCase(v.pending,f),p&&i.addCase(v.rejected,p),m&&i.addMatcher(v.settled,m),i.exposeCaseReducer(t,{fulfilled:d||zs,pending:f||zs,rejected:p||zs,settled:m||zs})}function zs(){}var D3="task",H0="listener",W0="completed",Nd="cancelled",$3=`task-${Nd}`,O3=`task-${W0}`,cd=`${H0}-${Nd}`,F3=`${H0}-${W0}`,gl=class{constructor(r){F(this,"name","TaskAbortError");F(this,"message");this.code=r,this.message=`${D3} ${Nd} (reason: ${r})`}},Ld=(r,t)=>{if(typeof r!="function")throw new TypeError(Cr(32))},rl=()=>{},K0=(r,t=rl)=>(r.catch(t),r),Y0=(r,t)=>(r.addEventListener("abort",t,{once:!0}),()=>r.removeEventListener("abort",t)),Ta=(r,t)=>{const a=r.signal;a.aborted||("reason"in a||Object.defineProperty(a,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),r.abort(t))},Ia=r=>{if(r.aborted){const{reason:t}=r;throw new gl(t)}};function q0(r,t){let a=rl;return new Promise((i,s)=>{const c=()=>s(new gl(r.reason));if(r.aborted){c();return}a=Y0(r,c),t.finally(()=>a()).then(i,s)}).finally(()=>{a=rl})}var U3=async(r,t)=>{try{return await Promise.resolve(),{status:"ok",value:await r()}}catch(a){return{status:a instanceof gl?"cancelled":"rejected",error:a}}finally{t==null||t()}},nl=r=>t=>K0(q0(r,t).then(a=>(Ia(r),a))),G0=r=>{const t=nl(r);return a=>t(new Promise(i=>setTimeout(i,a)))},{assign:yo}=Object,hm={},vl="listenerMiddleware",z3=(r,t)=>{const a=i=>Y0(r,()=>Ta(i,r.reason));return(i,s)=>{Ld(i);const c=new AbortController;a(c);const d=U3(async()=>{Ia(r),Ia(c.signal);const f=await i({pause:nl(c.signal),delay:G0(c.signal),signal:c.signal});return Ia(c.signal),f},()=>Ta(c,O3));return s!=null&&s.autoJoin&&t.push(d.catch(rl)),{result:nl(r)(d),cancel(){Ta(c,$3)}}}},B3=(r,t)=>{const a=async(i,s)=>{Ia(t);let c=()=>{};const f=[new Promise((p,m)=>{let y=r({predicate:i,effect:(v,w)=>{w.unsubscribe(),p([v,w.getState(),w.getOriginalState()])}});c=()=>{y(),m()}})];s!=null&&f.push(new Promise(p=>setTimeout(p,s,null)));try{const p=await q0(t,Promise.race(f));return Ia(t),p}finally{c()}};return(i,s)=>K0(a(i,s))},Q0=r=>{let{type:t,actionCreator:a,matcher:i,predicate:s,effect:c}=r;if(t)s=En(t).match;else if(a)t=a.type,s=a.match;else if(i)s=i;else if(!s)throw new Error(Cr(21));return Ld(c),{predicate:s,type:t,effect:c}},Z0=yo(r=>{const{type:t,predicate:a,effect:i}=Q0(r);return{id:V0(),effect:i,type:t,predicate:a,pending:new Set,unsubscribe:()=>{throw new Error(Cr(22))}}},{withTypes:()=>Z0}),mm=(r,t)=>{const{type:a,effect:i,predicate:s}=Q0(t);return Array.from(r.values()).find(c=>(typeof a=="string"?c.type===a:c.predicate===s)&&c.effect===i)},ud=r=>{r.pending.forEach(t=>{Ta(t,cd)})},V3=r=>()=>{r.forEach(ud),r.clear()},ym=(r,t,a)=>{try{r(t,a)}catch(i){setTimeout(()=>{throw i},0)}},J0=yo(En(`${vl}/add`),{withTypes:()=>J0}),H3=En(`${vl}/removeAll`),X0=yo(En(`${vl}/remove`),{withTypes:()=>X0}),W3=(...r)=>{console.error(`${vl}/error`,...r)},K3=(r={})=>{const t=new Map,{extra:a,onError:i=W3}=r;Ld(i);const s=y=>(y.unsubscribe=()=>t.delete(y.id),t.set(y.id,y),v=>{y.unsubscribe(),v!=null&&v.cancelActive&&ud(y)}),c=y=>{const v=mm(t,y)??Z0(y);return s(v)};yo(c,{withTypes:()=>c});const d=y=>{const v=mm(t,y);return v&&(v.unsubscribe(),y.cancelActive&&ud(v)),!!v};yo(d,{withTypes:()=>d});const f=async(y,v,w,S)=>{const E=new AbortController,I=B3(c,E.signal),N=[];try{y.pending.add(E),await Promise.resolve(y.effect(v,yo({},w,{getOriginalState:S,condition:(D,b)=>I(D,b).then(Boolean),take:I,delay:G0(E.signal),pause:nl(E.signal),extra:a,signal:E.signal,fork:z3(E.signal,N),unsubscribe:y.unsubscribe,subscribe:()=>{t.set(y.id,y)},cancelActiveListeners:()=>{y.pending.forEach((D,b,B)=>{D!==E&&(Ta(D,cd),B.delete(D))})},cancel:()=>{Ta(E,cd),y.pending.delete(E)},throwIfCancelled:()=>{Ia(E.signal)}})))}catch(D){D instanceof gl||ym(i,D,{raisedBy:"effect"})}finally{await Promise.all(N),Ta(E,F3),y.pending.delete(E)}},p=V3(t);return{middleware:y=>v=>w=>{if(!b0(w))return v(w);if(J0.match(w))return c(w.payload);if(H3.match(w)){p();return}if(X0.match(w))return d(w.payload);let S=y.getState();const E=()=>{if(S===hm)throw new Error(Cr(23));return S};let I;try{if(I=v(w),t.size>0){const N=y.getState(),D=Array.from(t.values());for(const b of D){let B=!1;try{B=b.predicate(w,N,S)}catch(O){B=!1,ym(i,O,{raisedBy:"predicate"})}B&&f(b,w,y,E)}}}finally{S=hm}return I},startListening:c,stopListening:d,clearListeners:p}};function Cr(r){return`Minified Redux Toolkit error #${r}; visit https://redux-toolkit.js.org/Errors?code=${r} for the full message or use the non-minified dev environment for full errors. `}const gm="https://gateway.ht-platform.ru",Y3="R3IKK0GMRC4BMGKF7MPEPUH4RBAJ9C26N03QMFLJVDJHUNR2GL2N12OG0405LA5H",q3="wss://chat.ht-platform.ru",e1="104347813";class uo extends Error{constructor(a,i,s,c){super((s==null?void 0:s.message)||a);F(this,"status");F(this,"apiError");F(this,"rawResponseBody");this.name="ApiClientError",this.status=i,this.apiError=s,this.rawResponseBody=c,Object.setPrototypeOf(this,uo.prototype)}}let Bs=!1,al=[];const vm=r=>{al.forEach(t=>{r?t.reject(r):t.resolve()}),al=[]};class G3{constructor(){F(this,"onLogout",null)}setupInterceptors(t){this.onLogout=t}async refreshAccessToken(){try{const t=await fetch(`${gm}/v1/auth/refresh`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"});if(!t.ok)throw new Error(`Failed to refresh token with status: ${t.status}`)}catch(t){const a=t.name==="AbortError";throw this.onLogout&&!a&&this.onLogout(),t}}async request(t,a={},i=!1){if(Bs&&!i)return new Promise((f,p)=>{al.push({resolve:f,reject:p})}).then(()=>this.request(t,a,!0));const s=`${gm}${t}`,c=new Headers(a.headers||{});!c.has("Content-Type")&&!(a.body instanceof FormData)&&c.set("Content-Type","application/json");let d;try{d=await fetch(s,{...a,headers:c,credentials:"include",cache:"no-store"})}catch(f){throw f.name==="AbortError"?f:typeof window<"u"&&!window.navigator.onLine?new uo("Ошибка загрузки. Пожалуйста, проверьте ваше подключение к интернету.",0,void 0,f):new uo("Произошла сетевая ошибка. Пожалуйста, попробуйте снова.",0,void 0,f)}if(d.status===401&&!i){if(Bs)return new Promise((f,p)=>{al.push({resolve:f,reject:p})}).then(()=>this.request(t,a,!0));Bs=!0;try{return await this.refreshAccessToken(),vm(null),await this.request(t,a,!0)}catch(f){throw vm(f),f}finally{Bs=!1}}if(!d.ok){let f,p=null,m=`Request failed with status ${d.status}`;try{const y=d.headers.get("content-type");y!=null&&y.includes("application/json")?(p=await d.json(),p&&typeof p.message=="string"&&(f=p,m=f.message)):(p=await d.text(),p&&(m=p))}catch{}throw new uo(m,d.status,f,p)}if(!(d.status===204||d.headers.get("content-length")==="0"))try{const f=await d.text();return f?JSON.parse(f):void 0}catch{throw new uo("Failed to parse successful response as JSON.",d.status,void 0,void 0)}}get(t,a={}){return this.request(t,{...a,method:"GET"})}post(t,a,i={}){const s=a instanceof FormData;return this.request(t,{...i,method:"POST",body:s?a:JSON.stringify(a)})}put(t,a,i={}){const s=a instanceof FormData;return this.request(t,{...i,method:"PUT",body:s?a:JSON.stringify(a)})}delete(t,a={}){return this.request(t,{...a,method:"DELETE"})}}const Y=new G3;class zt{static async logout(){await Y.post("/v1/auth/logout",{})}static async login(t){var i;const a=await Y.post("/v1/auth/login",t);if(!((i=a==null?void 0:a.auth)!=null&&i.id))throw new Error("Login failed: Invalid response from server.");return a}static async checkEmail(t){const a=await Y.post("/v1/auth/check-email",t);if(!a)throw new Error("Check email failed: No response from server.");return a}static async sendCode(t){const a=await Y.post("/v1/auth/send-code",t);if(!a)throw new Error("Send code failed: No response from server.");return a}static async verifyCode(t){const a=await Y.post("/v1/auth/verify-code",t);if(!a)throw new Error("Verify code failed: No response from server.");return a}static async resetPassword(t){const a=await Y.post("/v1/auth/reset-password",t);if(!a)throw new Error("Password reset request failed: No response from server.");return a}static async resetPasswordConfirm(t){const a=await Y.post("/v1/auth/reset-password/confirm",t);if(!a)throw new Error("Password reset confirmation failed: No response from server.");return a}static async changeEmail(t){const a=await Y.post("/v1/auth/change/email",t);if(!a)throw new Error("Change email failed: No response from server.");return a}static async signUpApplicant(t){const a=await Y.post("/v1/auth/applicant/signup",t);if(!a)throw new Error("Applicant signup failed: No response from server.");return a}static async signUpEmployer(t){const a=await Y.post("/v1/auth/employer/signup",t);if(!a)throw new Error("Employer signup failed: No response from server.");return a}static async listCompanies(){return zt.listCompaniesWithSearch()}static async listCompaniesWithSearch(t){let a="/v1/auth/list-companies";if(t&&t.trim()){const s=new URLSearchParams;s.append("search",t),a=`${a}?${s.toString()}`}const i=await Y.post(a,{});if(!i)throw new Error("Failed to fetch companies: No response from server.");return i}}class dd{constructor(t,a){F(this,"_applicantId");F(this,"email");F(this,"name");F(this,"surname");F(this,"city");F(this,"avatarUrl");F(this,"dateOfBirth");F(this,"aboutMyself");F(this,"contacts");F(this,"contactItems");F(this,"educations");F(this,"experiences");F(this,"courses");F(this,"cases");F(this,"resumes");F(this,"skills");F(this,"personalQualities");F(this,"preferredPosition");F(this,"goals");F(this,"testDone");F(this,"sex");F(this,"workSearchStatus");F(this,"settings");var i,s,c,d,f,p,m,y,v;this._applicantId=a,this.email=t.email,this.name=t.name??void 0,this.city=t.city??void 0,this.surname=t.surname??void 0,this.avatarUrl=t.avatarUrl??void 0,this.dateOfBirth=t.dateOfBirth??void 0,this.aboutMyself=t.aboutMyself??void 0,this.testDone=t.testDone??!1,this.sex=t.sex??"SEX_UNSPECIFIED",this.workSearchStatus=t.workSearchStatus??"WORK_SEARCH_STATUS_UNSPECIFIED",this.settings=t.settings,this.contacts=t.contacts?{phoneNumber:t.contacts.phoneNumber??"",website:t.contacts.website??"",additionalContact:t.contacts.additionalContact??"",id:t.contacts.id}:{phoneNumber:"",website:"",additionalContact:""},this.contactItems=t.contactItems??[],this.educations=t.educations??[],this.experiences=t.experiences??[],this.courses=t.courses??[],this.cases=t.cases??[],this.resumes=t.resumes??[],this.skills=t.skills??[],this.personalQualities=t.personalQualities??[],this.preferredPosition=t.preferredPosition??void 0,this.goals={goalPositions:((s=(i=t.goals)==null?void 0:i.goalPositions)==null?void 0:s.filter(w=>!w._delete))??[],preferredIncome:((c=t.goals)==null?void 0:c.preferredIncome)??"",preferredBusinessFields:((f=(d=t.goals)==null?void 0:d.preferredBusinessFields)==null?void 0:f.filter(w=>!w._delete))??[],additionalGoals:((m=(p=t.goals)==null?void 0:p.additionalGoals)==null?void 0:m.filter(w=>!w._delete))??[],officeType:((y=t.goals)==null?void 0:y.officeType)??"OFFICE_TYPE_UNSPECIFIED",workingSchedule:((v=t.goals)==null?void 0:v.workingSchedule)??"WORKING_SCHEDULE_UNSPECIFIED"}}get firstName(){return this.name}get lastName(){return this.surname}get cityName(){return this.city}get birthDate(){return this.dateOfBirth}get phone(){var t;return(t=this.contacts)==null?void 0:t.phoneNumber}get website(){var t;return(t=this.contacts)==null?void 0:t.website}get fullName(){return`${this.name||""} ${this.surname||""}`.trim()}toApiPayload(){const t={email:this.email,name:this.name,surname:this.surname,city:this.city,avatarUrl:this.avatarUrl,dateOfBirth:this.dateOfBirth,aboutMyself:this.aboutMyself,contacts:this.contacts,contactItems:this.contactItems,educations:this.educations,experiences:this.experiences,courses:this.courses,cases:this.cases,skills:this.skills,personalQualities:this.personalQualities,preferredPosition:this.preferredPosition,goals:this.goals,testDone:this.testDone,sex:this.sex,workSearchStatus:this.workSearchStatus,settings:this.settings};return t.name===""&&delete t.name,t.surname===""&&delete t.surname,t.city===""&&delete t.city,t.avatarUrl===""&&delete t.avatarUrl,t.dateOfBirth===""&&delete t.dateOfBirth,t.aboutMyself===""&&delete t.aboutMyself,t.contacts&&t.contacts.phoneNumber===""&&t.contacts.website===""&&t.contacts.additionalContact===""&&!t.contacts.id?delete t.contacts:t.contacts&&(t.contacts.phoneNumber===""&&delete t.contacts.phoneNumber,t.contacts.website===""&&delete t.contacts.website,t.contacts.additionalContact===""&&delete t.contacts.additionalContact),t.goals&&t.goals.preferredIncome===""&&(!t.goals.preferredBusinessFields||t.goals.preferredBusinessFields.length===0)&&(!t.goals.additionalGoals||t.goals.additionalGoals.length===0)&&(!t.goals.goalPositions||t.goals.goalPositions.length===0)&&(!t.goals.officeType||t.goals.officeType==="OFFICE_TYPE_UNSPECIFIED")&&(!t.goals.workingSchedule||t.goals.workingSchedule==="WORKING_SCHEDULE_UNSPECIFIED")&&delete t.goals,t}}class Xe{static async fetchUserProfile(t){try{const a=await Y.get(`/v1/profile/${t}`);if(!a||!a.profile)throw new Error("UserApi: User profile data not found or invalid.");return a.profile}catch(a){throw console.error("UserApi: Error fetching user profile",a),a}}static async updateUserProfile(t,a){try{const i=await Y.put(`/v1/profile/${t}`,a);if(!i||!i.updatedProfile)throw new Error("UserApi: Invalid update user profile response from API");return i.updatedProfile}catch(i){throw console.error("UserApi: Error updating user profile",i),i}}static async deleteUserProfile(t){try{await Y.delete(`/v1/profile/${t}`)}catch(a){throw console.error("UserApi: Error deleting user profile",a),a}}static async login(t){try{const a=await Y.post("/auth/login",t);if(!a||!a.token)throw new Error("Login failed: No token received from server");return a}catch(a){throw console.error("UserApi: Login failed",a),a}}static async fetchAvailableSkills(t,a){try{const i=t?`/v1/profile/skills?search=${encodeURIComponent(t)}`:"/v1/profile/skills",s=await Y.get(i,{signal:a});return!s||!Array.isArray(s.skills)?[]:s.skills}catch(i){throw(i==null?void 0:i.name)!=="AbortError"&&console.error("UserApi: Error fetching available skills",i),i}}static async fetchAvailablePersonalQualities(t,a){try{const i=t?`/v1/profile/qualities?search=${encodeURIComponent(t)}`:"/v1/profile/qualities",s=await Y.get(i,{signal:a});return!s||!Array.isArray(s.personalQualities)?[]:s.personalQualities}catch(i){throw(i==null?void 0:i.name)!=="AbortError"&&console.error("UserApi: Error fetching available personal qualities",i),i}}static async initiateFileUpload(t,a){try{const i=await Y.put(`/v1/profile/files/${t}`,a);if(!i||!i.uploadUrl||!i.fileId)throw new Error("API did not return a valid upload URL.");return i}catch(i){throw console.error("UserApi: Error initiating file upload",i),i}}static async uploadFileToSignedUrl(t,a){try{const i=await fetch(t,{method:"PUT",body:a,headers:{"Content-Type":a.type}});if(!i.ok)throw new Error(`File upload failed with status: ${i.status}`);return i}catch(i){throw console.error("UserApi: Error uploading file to signed URL",i),i}}static async confirmFileUpload(t,a,i){const s=await Y.post(`/v1/profile/files/${t}/${a}/confirm`,{fileInfo:i});if(!s)throw new Error("API did not return a response for file upload confirmation.");return s}static async getFileDownloadUrl(t,a){try{const i=await Y.get(`/v1/profile/files/${t}/${a}`);if(!i||!i.downloadUrl)throw new Error("API did not return a valid download URL.");return i}catch(i){throw console.error("UserApi: Error getting file download URL",i),i}}static async deleteFile(t,a){try{const i=await Y.delete(`/v1/profile/files/${t}/${a}`);if(!i)throw new Error("API did not return a response for file deletion");return i}catch(i){throw console.error("UserApi: Error deleting file",i),i}}static async getCaseFileUploadUrl(t,a){try{const i=await Y.post("/v1/profile/cases/files/upload-url",{fileName:a,applicantId:t});if(!i||!i.objectKey||!i.uploadUrl)throw new Error("API did not return a valid case file upload URL.");return i}catch(i){throw console.error("UserApi: Error getting case file upload URL",i),i}}static async deleteCaseFile(t,a){try{await Y.delete(`/v1/profile/cases/${t}/files/${a}`)}catch(i){throw console.error("UserApi: Error deleting case file",i),i}}static async getCaseFileDownloadUrl(t,a){try{const i=await Y.get(`/v1/profile/cases/${t}/files/${a}/download-url`);if(!i||!i.downloadUrl)throw new Error("API did not return a valid case file download URL.");return i.downloadUrl}catch(i){throw console.error("UserApi: Error getting case file download URL",i),i}}static async getResumeUploadUrl(t,a){try{const i=await Y.post("/v1/profile/resumes/upload-url",{fileName:a,applicantId:t});if(!i||!i.objectKey||!i.uploadUrl)throw new Error("API did not return a valid resume upload URL.");return i}catch(i){throw console.error("UserApi: Error getting resume upload URL",i),i}}static async addResume(t,a,i){try{const s=await Y.post("/v1/profile/resumes",{applicantId:t,fileName:a,objectKey:i});if(!s||!s.resume)throw new Error("API did not return a valid resume.");return s.resume}catch(s){throw console.error("UserApi: Error adding resume",s),s}}static async deleteResume(t){try{await Y.delete(`/v1/profile/resumes/${t}`)}catch(a){throw console.error("UserApi: Error deleting resume",a),a}}static async getResumeDownloadUrl(t){try{const a=await Y.get(`/v1/profile/resumes/${t}/download-url`);if(!a||!a.downloadUrl)throw new Error("API did not return a valid resume download URL.");return a.downloadUrl}catch(a){throw console.error("UserApi: Error getting resume download URL",a),a}}static async fetchTests(t){try{const a=await Y.get(`/v1/profile/test/${t}`);return!a||!Array.isArray(a.messages)?[]:a.messages}catch(a){throw console.error("UserApi: Error fetching tests",a),a}}static async fetchTestReport(t,a){try{return await Y.get(`/v1/profile/test/${t}/report/${a}`)??{}}catch(i){throw console.error("UserApi: Error fetching test report",i),i}}static async initiateCharacteristicsTestSession(t){try{const a=await Y.post("/v1/profile/test/characteristics/session",t);if(!a||!a.testUrl)throw new Error("API did not return a valid characteristics test session URL.");return a}catch(a){throw console.error("UserApi: Error initiating characteristics test session",a),a}}static async initiateSkillTestSession(t){try{const a=await Y.post("/v1/profile/test/skill/session",t);if(!a||!a.testUrl)throw new Error("API did not return a valid skill test session URL.");return a}catch(a){throw console.error("UserApi: Error initiating skill test session",a),a}}}class Q3{async getUserProfile(t){const a=await Xe.fetchUserProfile(t);return new dd(a,t)}async updateUserProfile(t,a){return await Xe.updateUserProfile(t,a)}async getAvailableSkills(t){try{return await Xe.fetchAvailableSkills(t)}catch(a){throw console.error("UserService: Failed to get available skills",a),a}}async getAvailablePersonalQualities(t){try{return await Xe.fetchAvailablePersonalQualities(t)}catch(a){throw console.error("UserService: Failed to get available personal qualities",a),a}}async confirmFileUploadWithRetry(t,a,i,s=3,c=700){for(let d=1;d<=s;d++)try{await Xe.confirmFileUpload(t,a,i);return}catch(f){if(d===s)throw f;await new Promise(p=>setTimeout(p,c))}}async uploadProfileFile(t,a,i){try{const{uploadUrl:s,fileId:c}=await Xe.initiateFileUpload(t,a);return await Xe.uploadFileToSignedUrl(s,i),await this.confirmFileUploadWithRetry(t,c,a),c}catch(s){throw console.error("UserService: Failed to upload file",s),s}}async uploadAvatar(t,a){try{const i={fileType:"FILE_TYPE_AVATAR",parentStructId:t,fileName:a.name,fileDescription:"User Avatar"},{uploadUrl:s,fileId:c}=await Xe.initiateFileUpload(t,i);return await Xe.uploadFileToSignedUrl(s,a),await this.confirmFileUploadWithRetry(t,c,i),c}catch(i){throw console.error("UserService: Failed to upload avatar",i),i}}async getProfileFileDownloadUrl(t,a){try{const{downloadUrl:i}=await Xe.getFileDownloadUrl(t,a);return i}catch(i){throw console.error("UserService: Failed to get file download URL",i),i}}async deleteProfileFile(t,a){try{await Xe.deleteFile(t,a)}catch(i){throw console.error("UserService: Failed to delete file",i),i}}async uploadCaseFile(t,a){try{const{objectKey:i,uploadUrl:s}=await Xe.getCaseFileUploadUrl(t,a.name);return await Xe.uploadFileToSignedUrl(s,a),{objectKey:i}}catch(i){throw console.error("UserService: Failed to upload case file",i),i}}async deleteCaseFile(t,a){try{await Xe.deleteCaseFile(t,a)}catch(i){throw console.error("UserService: Failed to delete case file",i),i}}async getCaseFileDownloadUrl(t,a){try{return await Xe.getCaseFileDownloadUrl(t,a)}catch(i){throw console.error("UserService: Failed to get case file download URL",i),i}}async uploadResume(t,a){try{const{objectKey:i,uploadUrl:s}=await Xe.getResumeUploadUrl(t,a.name);return await Xe.uploadFileToSignedUrl(s,a),await Xe.addResume(t,a.name,i)}catch(i){throw console.error("UserService: Failed to upload resume",i),i}}async deleteResume(t){try{await Xe.deleteResume(t)}catch(a){throw console.error("UserService: Failed to delete resume",a),a}}async getResumeDownloadUrl(t){try{return await Xe.getResumeDownloadUrl(t)}catch(a){throw console.error("UserService: Failed to get resume download URL",a),a}}async getTests(t){try{return await Xe.fetchTests(t)}catch(a){throw console.error("UserService: Failed to get tests",a),a}}async fetchTestReport(t,a){return Xe.fetchTestReport(t,a)}async startTestSession(t,a,i){try{let s;const c={applicantId:t,testName:a};if(i.includes("QUALITY"))s=await Xe.initiateCharacteristicsTestSession(c);else if(i.includes("SKILL"))s=await Xe.initiateSkillTestSession(c);else throw new Error(`UserService: Unknown test type provided: ${i}`);return s.testUrl}catch(s){throw console.error("UserService: Failed to start test session",s),s}}}const jd=new Q3,Z3={profile:null,tests:null,isLoading:!1,error:null},go=Ne("user/fetchProfile",async(r,{rejectWithValue:t})=>{try{return{user:await jd.getUserProfile(r),applicantId:r}}catch(a){return t(a.message)}}),Iu=Ne("user/fetchTests",async(r,{rejectWithValue:t})=>{try{return await jd.getTests(r)}catch(a){return t(a.message)}}),bu=Ne("user/updateProfile",async({applicantId:r,data:t},{rejectWithValue:a})=>{try{return{user:await jd.updateUserProfile(r,t),applicantId:r}}catch(i){return a(i.message)}}),J3=Ne("user/deleteProfile",async(r,{rejectWithValue:t})=>{try{return await Xe.deleteUserProfile(r),r}catch(a){return t(a.message||"Failed to delete user profile")}}),t1=Yr({name:"user",initialState:Z3,reducers:{clearUser:r=>{r.profile=null,r.tests=null}},extraReducers:r=>{r.addCase(go.pending,t=>{t.isLoading=!0}).addCase(go.fulfilled,(t,a)=>{t.isLoading=!1,t.profile=new dd(a.payload.user,a.payload.applicantId),t.error=null}).addCase(go.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload}).addCase(bu.pending,t=>{t.error=null}).addCase(bu.fulfilled,(t,a)=>{t.isLoading=!1,t.profile=new dd(a.payload.user,a.payload.applicantId)}).addCase(bu.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload}).addCase(Iu.pending,t=>{t.isLoading=!0}).addCase(Iu.fulfilled,(t,a)=>{t.isLoading=!1,t.tests=a.payload,t.error=null}).addCase(Iu.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload}).addCase(J3.fulfilled,t=>{t.profile=null,t.tests=null})}}),{clearUser:Md}=t1.actions,X3=t1.reducer;class Pi{static async register(t){try{const a=await Y.post("/v1/employer/register",t);if(!a||!a.employer)throw new Error("EmployerApi: Invalid registration response from API");return a.employer}catch(a){throw console.error("EmployerApi: Error registering employer",a),a}}static async getProfile(t){try{const a=await Y.get(`/v1/profile/employer/${t}`);if(!a||!a.profile)throw new Error("EmployerApi: Invalid getProfile response from API");return a.profile}catch(a){throw console.error("EmployerApi: Error fetching employer profile",a),a}}static async updateProfile(t,a){try{const i=await Y.put(`/v1/profile/employer/${t}`,a.profile);if(!i||!i.updatedProfile)throw new Error("EmployerApi: Invalid updateProfile response from API");return i.updatedProfile}catch(i){throw console.error("EmployerApi: Error updating employer profile",i),i}}static async deleteProfile(t){try{await Y.delete(`/v1/profile/employer/${t}`)}catch(a){throw console.error("EmployerApi: Error deleting employer profile",a),a}}static async initiateFileUpload(t,a){try{const i=await Y.put(`/v1/profile/files/${t}`,a);if(!i||!i.uploadUrl||!i.fileId)throw new Error("API did not return a valid upload URL for employer.");return i}catch(i){throw console.error("EmployerApi: Error initiating file upload for employer",i),i}}static async uploadFileToSignedUrl(t,a){try{const i=await fetch(t,{method:"PUT",body:a,headers:{"Content-Type":a.type}});if(!i.ok)throw new Error(`File upload failed with status: ${i.status}`);return i}catch(i){throw console.error("UserApi: Error uploading file to signed URL",i),i}}static async confirmFileUpload(t,a,i){const s=await Y.post(`/v1/profile/files/${t}/${a}/confirm`,{fileInfo:i});if(!s)throw new Error("API did not return a response for employer file upload confirmation.");return s}static async sendToModeration(t){try{await Y.post("/v1/employer/company/moderation",t)}catch(a){throw console.error("EmployerApi: Error sending to moderation",a),a}}static async dismissModerationBanner(t){try{await Y.post("/v1/employer/company/moderation/banner/dismiss",t)}catch(a){throw console.error("EmployerApi: Error dismissing moderation banner",a),a}}}const e6={profile:null,isLoading:!1,error:null},ba=Ne("employer/fetchProfile",async(r,{rejectWithValue:t})=>{try{return await Pi.getProfile(r)}catch{return t("Failed to fetch employer profile.")}}),t6=Ne("employer/updateProfile",async({employerId:r,payload:t},{rejectWithValue:a})=>{try{return await Pi.updateProfile(r,t)}catch{return a("Failed to update employer profile.")}}),r6=Ne("employer/deleteProfile",async(r,{rejectWithValue:t})=>{try{return await Pi.deleteProfile(r),r}catch(a){return t(a.message||"Failed to delete employer profile")}}),ES=Ne("employer/submitCompanyModeration",async(r,{rejectWithValue:t,dispatch:a,getState:i})=>{try{await Pi.sendToModeration(r);const c=i().auth.userId;c&&a(ba(c))}catch(s){return t(s.message||"Failed to submit moderation")}}),kS=Ne("employer/dismissModerationBanner",async(r,{rejectWithValue:t,dispatch:a})=>{try{await Pi.dismissModerationBanner(r),a(Dd.actions.removeModerationBanner())}catch(i){return t(i.message||"Failed to dismiss moderation banner")}}),Dd=Yr({name:"employer",initialState:e6,reducers:{clearEmployer:r=>{r.profile=null,r.error=null,r.isLoading=!1},removeModerationBanner:r=>{var t;(t=r.profile)!=null&&t.company&&(r.profile.company.moderationBanner=void 0)}},extraReducers:r=>{r.addCase(ba.pending,t=>{t.isLoading=!0,t.error=null}).addCase(ba.fulfilled,(t,a)=>{t.isLoading=!1,t.profile=a.payload}).addCase(ba.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload}).addCase(t6.fulfilled,(t,a)=>{t.profile=a.payload}).addCase(r6.fulfilled,t=>{t.profile=null})}}),{clearEmployer:$d,removeModerationBanner:TS}=Dd.actions,n6=Dd.reducer,r1=localStorage.getItem("userId"),n1=localStorage.getItem("userRole"),a6=localStorage.getItem("isAdmin")==="true",Pu=!!r1&&!!n1,o6={isAuthenticated:Pu,userId:r1,role:n1,isAdmin:a6,isLoading:Pu,isAuthChecked:!Pu,error:null},vo=Ne("auth/login",async(r,{dispatch:t,rejectWithValue:a})=>{try{const i=await zt.login(r),{id:s,role:c,isAdmin:d}=i.auth,f=d==="true"||d===!0;return localStorage.setItem("userId",s),localStorage.setItem("userRole",c),localStorage.setItem("isAdmin",String(f)),c==="applicant"?await t(go(s)):c==="employer"&&await t(ba(s)),{userId:s,role:c,isAdmin:f}}catch(i){const s=(i==null?void 0:i.message)||"Login failed";return localStorage.removeItem("userId"),localStorage.removeItem("userRole"),localStorage.removeItem("isAdmin"),a(s)}}),qs=Ne("auth/checkAuth",async(r,{dispatch:t,rejectWithValue:a})=>{const i=localStorage.getItem("userId"),s=localStorage.getItem("userRole"),c=localStorage.getItem("isAdmin")==="true";if(!i||!s)return a("No session data in localStorage");try{return s==="applicant"?await t(go(i)).unwrap():s==="employer"&&await t(ba(i)).unwrap(),{userId:i,role:s,isAdmin:c}}catch{return localStorage.removeItem("userId"),localStorage.removeItem("userRole"),localStorage.removeItem("isAdmin"),a("Token validation failed")}}),wl=Ne("auth/logout",async(r,{dispatch:t})=>{try{await zt.logout()}catch{}finally{localStorage.removeItem("userId"),localStorage.removeItem("userRole"),localStorage.removeItem("isAdmin"),t(Md()),t($d()),window.location.href="/"}}),a1=Yr({name:"auth",initialState:o6,reducers:{clearAuthError:r=>{r.error=null}},extraReducers:r=>{r.addCase(qs.pending,t=>{t.isLoading=!0}).addCase(qs.fulfilled,(t,a)=>{t.isAuthenticated=!0,t.userId=a.payload.userId,t.role=a.payload.role,t.isAdmin=a.payload.isAdmin,t.isLoading=!1,t.isAuthChecked=!0}).addCase(qs.rejected,t=>{t.isAuthenticated=!1,t.userId=null,t.role=null,t.isAdmin=!1,t.isLoading=!1,t.isAuthChecked=!0}).addCase(vo.pending,t=>{t.isLoading=!0,t.error=null}).addCase(vo.fulfilled,(t,a)=>{t.isAuthenticated=!0,t.userId=a.payload.userId,t.role=a.payload.role,t.isAdmin=a.payload.isAdmin,t.isLoading=!1,t.isAuthChecked=!0}).addCase(vo.rejected,(t,a)=>{t.isAuthenticated=!1,t.error=a.payload,t.isLoading=!1}).addCase(wl.fulfilled,t=>{t.isAuthenticated=!1,t.userId=null,t.role=null,t.isAdmin=!1,t.error=null,t.isAuthChecked=!0})}}),{clearAuthError:IS}=a1.actions,i6=a1.reducer,s6={activeModal:null},o1=Yr({name:"modal",initialState:s6,reducers:{openModal:(r,t)=>{r.activeModal=t.payload},closeModal:r=>{r.activeModal=null}}}),{openModal:Aa,closeModal:l6}=o1.actions,c6=o1.reducer;class xi{static async getCompany(t){const a=await Y.get(`/v1/company/${t}`);if(!(a!=null&&a.company))throw new Error(`Company with ID ${t} not found.`);return a.company}static async updateCompany(t,a){const i=await Y.put(`/v1/company/${t}`,a);if(!(i!=null&&i.company))throw new Error("Failed to update company: No company in response");return i.company}static async getMediaUploadUrl(t){const a=await Y.post("/v1/company/media/upload-url",t);if(!(a!=null&&a.uploadUrl)||!(a!=null&&a.objectKey))throw new Error("Failed to get media upload URL");return a}static async uploadFileToPresignedUrl(t,a){const i=await fetch(t,{method:"PUT",body:a});if(!i.ok)throw new Error(`Failed to upload file: ${i.status}`)}static async uploadMediaFile(t,a){const{objectKey:i,uploadUrl:s}=await xi.getMediaUploadUrl({type:a,fileName:t.name});return await xi.uploadFileToPresignedUrl(s,t),i}static async fetchCompanyMedia(t){const a=await Y.get(`/v1/company/${t}/media`);return(a==null?void 0:a.media)||[]}static async deleteCompanyMedia(t,a){await Y.delete(`/v1/company/${t}/media/${a}`)}static async reorderCompanyMedia(t,a){await Y.put(`/v1/company/${t}/media/order`,{items:a})}static async getIndustryTaxonomy(){return await Y.get("/v1/company/industry-taxonomy")||{sectors:[]}}}const u6={profile:null,isLoading:!1,error:null},Ru=Ne("company/fetchProfile",async(r,{rejectWithValue:t})=>{try{return await xi.getCompany(r)}catch{return t("Failed to fetch company profile.")}}),d6=Ne("company/updateProfile",async({companyId:r,data:t},{rejectWithValue:a})=>{try{return await xi.updateCompany(r,t)}catch{return a("Failed to update company profile.")}}),i1=Yr({name:"company",initialState:u6,reducers:{clearCompanyProfile:r=>{r.profile=null,r.error=null,r.isLoading=!1}},extraReducers:r=>{r.addCase(Ru.pending,t=>{t.isLoading=!0,t.error=null}).addCase(Ru.fulfilled,(t,a)=>{t.isLoading=!1,t.profile=a.payload}).addCase(Ru.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload}).addCase(d6.fulfilled,(t,a)=>{t.profile=a.payload})}}),{clearCompanyProfile:bS}=i1.actions,f6=i1.reducer;var s1=(r=>(r.UNSPECIFIED="EXPERIENCE_UNSPECIFIED",r.WITHOUT="EXPERIENCE_WITHOUT",r.ONE_TO_THREE_YEARS="EXPERIENCE_1_TO_3_YEARS",r.THREE_TO_SIX_YEARS="EXPERIENCE_3_TO_6_YEARS",r.SIX_YEARS="EXPERIENCE_6_YEARS",r))(s1||{}),l1=(r=>(r.UNSPECIFIED="WORKING_SCHEDULE_UNSPECIFIED",r.FULL_TIME="WORKING_SCHEDULE_FULL_TIME",r.PART_TIME="WORKING_SCHEDULE_PART_TIME",r.INTERNSHIP="WORKING_SCHEDULE_INTERNSHIP",r.WATCH="WORKING_SCHEDULE_WATCH",r.PROJECT_WORK="WORKING_SCHEDULE_PROJECT_WORK",r))(l1||{}),c1=(r=>(r.DRAFT="VACANCY_STATUS_DRAFT",r.ACTIVE="VACANCY_STATUS_ACTIVE",r.ARCHIVED="VACANCY_STATUS_ARCHIVED",r.DELETED="VACANCY_STATUS_DELETED",r))(c1||{}),u1=(r=>(r.TODO="TEST_STATUS_TODO",r.COMPLETED="TEST_STATUS_COMPLETED",r.IN_PROGRESS="TEST_STATUS_IN_PROGRESS",r.DISABLED="TEST_STATUS_DISABLED",r))(u1||{});class Qt{static async createVacancy(t){try{const a=await Y.post("/v1/vacancy",t);if(!(a!=null&&a.createdVacancy))throw new Error("Failed to create vacancy: No createdVacancy in response");return a.createdVacancy}catch(a){throw console.error("VacancyApi: Error creating vacancy",a),a}}static async updateVacancy(t,a){try{const i=await Y.put(`/v1/vacancy/${t}`,a);if(!(i!=null&&i.updatedVacancy))throw new Error("Failed to update vacancy: No updatedVacancy in response");return i.updatedVacancy}catch(i){throw console.error(`VacancyApi: Error updating vacancy ${t}`,i),i}}static async fetchVacancies(t){try{const a=new URLSearchParams;if(t){const{applicantId:d,pageSize:f,pageToken:p,...m}=t;d&&a.append("applicantId",String(d)),f&&a.append("pageSize",String(f)),p&&a.append("pageToken",String(p)),Object.entries(m).forEach(([y,v])=>{v!=null&&v!==""&&(Array.isArray(v)?v.forEach(w=>a.append(`filter.${y}`,String(w))):a.append(`filter.${y}`,String(v)))})}const i=a.toString(),s=`/v1/vacancy${i?`?${i}`:""}`;return await Y.get(s)||{vacancies:[],nextPageToken:void 0}}catch(a){throw console.error("VacancyApi: Error fetching vacancies",a),a}}static async fetchVacanciesTotal(t){try{const a=new URLSearchParams;if(t){const{applicantId:d,pageSize:f,pageToken:p,...m}=t;d&&a.append("applicantId",String(d)),Object.entries(m).forEach(([y,v])=>{v!=null&&v!==""&&(Array.isArray(v)?v.forEach(w=>a.append(`filter.${y}`,String(w))):a.append(`filter.${y}`,String(v)))})}const i=a.toString(),s=`/v1/vacancy/total${i?`?${i}`:""}`,c=await Y.get(s);return(c==null?void 0:c.total)??0}catch(a){throw console.error("VacancyApi: Error fetching total vacancies",a),a}}static async fetchVacancyById(t,a){try{let i=`/v1/vacancy/${t}`;a&&(i+=`?applicantId=${a}`);const s=await Y.get(i);if(!(s!=null&&s.vacancy))throw new Error(`Vacancy with ID ${t} not found.`);return s.vacancy}catch(i){throw console.error(`VacancyApi: Error fetching vacancy with ID ${t}`,i),i}}static async likeVacancy(t,a){const i=await Y.post(`/v1/vacancy/${t}/like/${a}`,{});if(!(i!=null&&i.message))throw new Error("Like vacancy failed");return i.message}static async unlikeVacancy(t,a){const i=await Y.delete(`/v1/vacancy/${t}/like/${a}`);if(!(i!=null&&i.message))throw new Error("Unlike vacancy failed");return i.message}static async applyToVacancy(t){const a=await Y.post(`/v1/vacancy/${t}/response`,{});if(!(a!=null&&a.response))throw new Error("Apply to vacancy failed: No response object in response");return a.response}static async startTestSession(t,a){const i=await Y.post("/v1/vacancy/test/session",{vacancyId:t,testName:a});if(!(i!=null&&i.testUrl))throw new Error("Failed to start test session: No test URL in response");return i}static async fetchTestReport(t,a){try{return await Y.get(`/v1/vacancy/test/${t}/report/${a}`)??{}}catch(i){throw console.error("VacancyApi: Error fetching test report",i),i}}static async deleteVacancies(t){try{await Y.post("/v1/vacancy/delete",{vacancies:t})}catch(a){throw console.error("VacancyApi: Error deleting vacancies",a),a}}static async fetchTaxonomy(){return await Y.get("/v1/vacancy/taxonomy")||{areas:[]}}static async fetchTags(t,a){const i=t?`?search=${encodeURIComponent(t)}`:"",s=await Y.get(`/v1/vacancy/tags${i}`,{signal:a});return(s==null?void 0:s.tags)||[]}static async fetchCities(t,a){const i=t?`?search=${encodeURIComponent(t)}`:"",s=await Y.get(`/v1/vacancy/cities${i}`,{signal:a});return((s==null?void 0:s.cities)||[]).map(c=>c.name)}static async fetchMetroStations(t,a){const i=new URLSearchParams;t.city&&i.append("city",t.city),t.search&&i.append("search",t.search);const s=i.toString();return await Y.get(`/v1/vacancy/metro${s?`?${s}`:""}`,{signal:a})||{stations:[]}}static async getMediaUploadUrl(t){const a=await Y.post("/v1/vacancy/media/upload-url",t);if(!(a!=null&&a.uploadUrl)||!(a!=null&&a.objectKey))throw new Error("Failed to get media upload URL");return a}static async uploadFileToPresignedUrl(t,a){const i=await fetch(t,{method:"PUT",body:a});if(!i.ok)throw new Error(`Failed to upload file: ${i.status}`)}static async uploadMediaFile(t,a){const{objectKey:i,uploadUrl:s}=await Qt.getMediaUploadUrl({type:a,fileName:t.name});return await Qt.uploadFileToPresignedUrl(s,t),i}static async fetchVacancyMedia(t){const a=await Y.get(`/v1/vacancy/${t}/media`);return(a==null?void 0:a.media)||[]}static async deleteVacancyMedia(t,a){await Y.delete(`/v1/vacancy/${t}/media/${a}`)}}class p6{constructor(t){F(this,"id");F(this,"companyName");F(this,"companyCity");F(this,"imageUrl");F(this,"rating");F(this,"feedbackCount");F(this,"name");this.id=t.id,this.companyName=t.companyName||"",this.name=t.name||t.companyName||"",this.companyCity=t.companyCity||"",this.imageUrl=t.companyLogoUrl||t.imageUrl,this.rating=t.rating,this.feedbackCount=t.feedbackCount}}class Ei{constructor(t){F(this,"id");F(this,"title");F(this,"description");F(this,"workingExperience");F(this,"workingSchedule");F(this,"officeTypes");F(this,"city");F(this,"requirements");F(this,"objectives");F(this,"views");F(this,"responses");F(this,"offerings");F(this,"skills");F(this,"qualities");F(this,"positions");F(this,"company");F(this,"createdAt");F(this,"updatedAt");F(this,"viewedAt");F(this,"isLikedByCurrentUser");F(this,"hasApplied");F(this,"responseStatus");F(this,"salaryFrom");F(this,"salaryTo");F(this,"salaryCurrency");F(this,"salaryGross");F(this,"testName");F(this,"testStatus");F(this,"testInfo");F(this,"reportUrl");F(this,"hasReport");F(this,"coefficient");F(this,"chatId");F(this,"status");F(this,"totalCount");F(this,"favorite");F(this,"response");F(this,"competencies");F(this,"shortDescription");F(this,"metroStations");F(this,"tags");F(this,"requirementsOptional");F(this,"hasTestTask");F(this,"testTaskDescription");F(this,"corporateCulture");F(this,"companyDevelopment");F(this,"bonuses");F(this,"hasEquipment");F(this,"salaryOnNegotiation");F(this,"completionPercent");F(this,"workHoursPattern");F(this,"workHoursNegotiable");F(this,"roleArea");F(this,"roleFamily");F(this,"canonicalRole");F(this,"media");F(this,"hardCompatibilityPercentage");var a,i,s,c,d,f,p,m;this.id=t.id,this.title=t.title||"",this.description=t.description||"",this.workingExperience=t.workingExperience||s1.UNSPECIFIED,this.workingSchedule=t.workingSchedule||l1.UNSPECIFIED,this.officeTypes=Array.isArray(t.officeTypes)?t.officeTypes:t.officeTypes?[t.officeTypes]:[],this.city=t.city,this.requirements=t.requirements,this.objectives=t.objectives,this.views=t.views||0,this.responses=t.responses||0,this.offerings=t.offerings,this.skills=t.skills||[],this.qualities=t.qualities||[],this.positions=t.positions||[],this.company=t.company?new p6(t.company):void 0,this.createdAt=t.createdAt,this.updatedAt=t.updatedAt,this.viewedAt=t.viewedAt,this.salaryFrom=t.salaryFrom,this.salaryTo=t.salaryTo,this.salaryCurrency=t.salaryCurrency,this.salaryGross=t.salaryGross,this.testName=((a=t.testInfo)==null?void 0:a.testName)||t.testName,this.testStatus=((i=t.testInfo)==null?void 0:i.testStatus)||t.testStatus,this.reportUrl=(s=t.testInfo)==null?void 0:s.reportUrl,this.hasReport=((c=t.testInfo)==null?void 0:c.hasReport)??t.hasReport,this.status=t.status||c1.DRAFT,this.coefficient=t.coefficient??((d=t.testInfo)!=null&&d.Similarity?parseFloat(t.testInfo.Similarity):void 0),this.isLikedByCurrentUser=t.favorite!==void 0?t.favorite:!!t.isLikedByCurrentUser,this.hasApplied=t.response!==void 0?!0:!!t.hasApplied,this.responseStatus=((f=t.response)==null?void 0:f.status)||t.responseStatus,this.chatId=((p=t.response)==null?void 0:p.chatId)||t.chatId,this.totalCount=t.totalCount||0,this.favorite=t.favorite,this.response=t.response,this.competencies=((m=t.testInfo)==null?void 0:m.competencies)||t.competencies,this.shortDescription=t.shortDescription,this.metroStations=t.metroStations,this.tags=t.tags,this.requirementsOptional=t.requirementsOptional,this.hasTestTask=t.hasTestTask,this.testTaskDescription=t.testTaskDescription,this.corporateCulture=t.corporateCulture,this.companyDevelopment=t.companyDevelopment,this.bonuses=t.bonuses,this.hasEquipment=t.hasEquipment,this.salaryOnNegotiation=t.salaryOnNegotiation,this.completionPercent=t.completionPercent,this.workHoursPattern=t.workHoursPattern,this.workHoursNegotiable=t.workHoursNegotiable,this.roleArea=t.roleArea,this.roleFamily=t.roleFamily,this.canonicalRole=t.canonicalRole,this.media=t.media,this.hardCompatibilityPercentage=t.hardCompatibilityPercentage}}const h6={vacancies:[],currentVacancy:null,totalCount:0,tabCounts:{VACANCY_STATUS_ACTIVE:0,VACANCY_STATUS_DRAFT:0,VACANCY_STATUS_ARCHIVED:0,ASSESSED:0},isLoading:!0,isFetchingMore:!1,error:null,nextPageToken:null,hasMore:!0},Vs=new Map,fd=r=>{const a=Object.keys(r||{}).sort().reduce((f,p)=>(f[p]=r[p],f),{}),i=JSON.stringify(a),s=Date.now(),c=Vs.get(i);if(c&&s-c.timestamp<500)return c.promise;const d=Qt.fetchVacanciesTotal(r).catch(()=>0);return Vs.set(i,{promise:d,timestamp:s}),d.finally(()=>{setTimeout(()=>{var f;((f=Vs.get(i))==null?void 0:f.promise)===d&&Vs.delete(i)},500)}),d},m6=Ne("vacancies/createVacancy",async(r,{rejectWithValue:t})=>{try{return await Qt.createVacancy(r)}catch(a){return t(a.message||"Failed to create vacancy")}}),y6=Ne("vacancies/updateVacancy",async({id:r,data:t},{rejectWithValue:a})=>{try{return await Qt.updateVacancy(r,t)}catch(i){return a(i.message||"Failed to update vacancy")}}),g6=Ne("vacancies/changeStatus",async(r,{rejectWithValue:t})=>{try{return await Promise.all(r.vacancyIds.map(a=>Qt.updateVacancy(a,{status:r.status}))),r}catch(a){return t(a.message||"Failed to change vacancy status")}}),v6=Ne("vacancies/fetchTabCounts",async(r,{rejectWithValue:t})=>{try{const a=["VACANCY_STATUS_ACTIVE","VACANCY_STATUS_DRAFT","VACANCY_STATUS_ARCHIVED"],i={};await Promise.all(a.map(async d=>{const f={...r,status:d},p=await fd(f);i[d]=p}));const s={...r,testStatus:"TEST_STATUS_COMPLETED"};delete s.status;const c=await fd(s);return i.ASSESSED=c,i}catch(a){return t(a.message)}}),Gs=Ne("vacancies/fetchVacancies",async(r,{})=>{const{filters:t,applicantId:a,filterType:i,selectedResponse:s}=r;let c={...t,pageSize:10};a&&(c.applicantId=a),i==="liked"&&(c.favorite=!0),i==="viewed"&&(c.viewed=!0),i==="applied"&&(c.applied=!0);const d={...c};delete d.pageSize,delete d.pageToken;const[f,p]=await Promise.all([Qt.fetchVacancies(c),fd(d)]);let m=f.vacancies.map(v=>new Ei(v)),y=p;if(i==="applied"&&s&&s!=="all"){const w={viewed:"RESPONSE_STATUS_VIEWED",not_viewed:"RESPONSE_STATUS_NOT_VIEWED_UNSPECIFIED",rejected:"RESPONSE_STATUS_REJECTED"}[s];w&&(m=m.filter(S=>S.responseStatus===w),y=m.length)}return{vacancies:m,nextPageToken:f.nextPageToken||null,totalCount:y}}),Au=Ne("vacancies/fetchMore",async(r,{rejectWithValue:t})=>{try{const{filters:a,pageToken:i,applicantId:s,filterType:c}=r,d={...a,pageSize:10,pageToken:i};s&&(d.applicantId=s),c==="liked"&&(d.favorite=!0),c==="viewed"&&(d.viewed=!0),c==="applied"&&(d.applied=!0);const f=await Qt.fetchVacancies(d);return{vacancies:f.vacancies.map(m=>new Ei(m)),nextPageToken:f.nextPageToken}}catch(a){return t(a.message)}}),Nu=Ne("vacancies/fetchById",async(r,{rejectWithValue:t})=>{try{const{vacancyId:a,applicantId:i}=r,s=await Qt.fetchVacancyById(a,i||void 0);return new Ei(s)}catch(a){return t(a.message)}}),w6=Ne("vacancies/likeVacancy",async(r,{rejectWithValue:t})=>{try{return await Qt.likeVacancy(r.vacancyId,r.applicantId),r.vacancyId}catch(a){return t(a.message)}}),C6=Ne("vacancies/unlikeVacancy",async(r,{rejectWithValue:t})=>{try{return await Qt.unlikeVacancy(r.vacancyId,r.applicantId),r.vacancyId}catch(a){return t(a.message)}}),_6=Ne("vacancies/applyToVacancy",async(r,{rejectWithValue:t})=>{try{return await Qt.applyToVacancy(r.vacancyId)}catch(a){return t(a.message)}}),S6=Ne("vacancies/startTestSession",async(r,{rejectWithValue:t})=>{try{return(await Qt.startTestSession(r.vacancyId,r.testName)).testUrl}catch(a){return t(a.message)}}),x6=Ne("vacancies/deleteVacancies",async(r,{rejectWithValue:t})=>{try{const a=Array.isArray(r)?r:r.vacancyIds;return await Qt.deleteVacancies(a),r}catch(a){return t(a.message)}}),d1=Yr({name:"vacancy",initialState:h6,reducers:{clearCurrentVacancy:r=>{r.currentVacancy=null}},extraReducers:r=>{r.addCase(m6.fulfilled,(t,a)=>{const i=new Ei(a.payload);t.vacancies.unshift(i),t.currentVacancy=i,t.totalCount+=1,i.status==="VACANCY_STATUS_DRAFT"?t.tabCounts.VACANCY_STATUS_DRAFT+=1:t.tabCounts.VACANCY_STATUS_ACTIVE+=1}).addCase(y6.fulfilled,(t,a)=>{const i=new Ei(a.payload);t.vacancies=t.vacancies.map(s=>s.id===i.id?i:s),t.currentVacancy=i}).addCase(g6.fulfilled,(t,a)=>{const{vacancyIds:i,status:s,currentTab:c}=a.payload;t.vacancies=t.vacancies.filter(f=>!i.includes(f.id)),t.totalCount=Math.max(0,t.totalCount-i.length),t.currentVacancy&&i.includes(t.currentVacancy.id)&&(t.currentVacancy.status=s);const d=i.length;c&&c in t.tabCounts&&(t.tabCounts[c]=Math.max(0,t.tabCounts[c]-d)),s&&s in t.tabCounts&&s!==c&&(t.tabCounts[s]+=d)}).addCase(Gs.pending,t=>{t.isLoading=!0,t.error=null,t.hasMore=!0}).addCase(Gs.fulfilled,(t,a)=>{var i;t.isLoading=!1,t.vacancies=a.payload.vacancies,t.totalCount=a.payload.totalCount,t.nextPageToken=a.payload.nextPageToken||null,t.hasMore=(((i=a.payload.vacancies)==null?void 0:i.length)||0)>0&&!!a.payload.nextPageToken}).addCase(Gs.rejected,(t,a)=>{a.meta.aborted||(t.isLoading=!1,t.error=a.payload)}).addCase(Au.pending,t=>{t.isFetchingMore=!0}).addCase(Au.fulfilled,(t,a)=>{var c;t.isFetchingMore=!1;const i=new Set(t.vacancies.map(d=>d.id)),s=a.payload.vacancies.filter(d=>!i.has(d.id));t.vacancies.push(...s),t.nextPageToken=a.payload.nextPageToken||null,t.hasMore=(((c=a.payload.vacancies)==null?void 0:c.length)||0)>0&&!!a.payload.nextPageToken}).addCase(Au.rejected,(t,a)=>{a.meta.aborted||(t.isFetchingMore=!1,t.error=a.payload)}).addCase(Nu.pending,t=>{t.isLoading=!0,t.currentVacancy=null,t.error=null}).addCase(Nu.fulfilled,(t,a)=>{t.isLoading=!1,t.currentVacancy=a.payload}).addCase(Nu.rejected,(t,a)=>{a.meta.aborted||(t.isLoading=!1,t.error=a.payload)}).addCase(w6.fulfilled,(t,a)=>{var c;const i=a.payload,s=d=>({...d,isLikedByCurrentUser:!0});t.vacancies=t.vacancies.map(d=>d.id===i?s(d):d),((c=t.currentVacancy)==null?void 0:c.id)===i&&(t.currentVacancy=s(t.currentVacancy))}).addCase(C6.fulfilled,(t,a)=>{var c,d,f;const i=a.payload,s=p=>({...p,isLikedByCurrentUser:!1});typeof window<"u"&&((d=(c=window.location)==null?void 0:c.pathname)!=null&&d.includes("/liked"))?(t.vacancies=t.vacancies.filter(p=>p.id!==i),t.totalCount-=1):t.vacancies=t.vacancies.map(p=>p.id===i?s(p):p),((f=t.currentVacancy)==null?void 0:f.id)===i&&(t.currentVacancy=s(t.currentVacancy))}).addCase(_6.fulfilled,(t,a)=>{var f;const{vacancyId:i,chatId:s,status:c}=a.payload,d=p=>({...p,hasApplied:!0,chatId:s,responseStatus:c});t.vacancies=t.vacancies.map(p=>p.id===i?d(p):p),((f=t.currentVacancy)==null?void 0:f.id)===i&&(t.currentVacancy=d(t.currentVacancy))}).addCase(S6.fulfilled,(t,a)=>{var c;const{vacancyId:i}=a.meta.arg,s=d=>({...d,testStatus:u1.IN_PROGRESS});t.vacancies=t.vacancies.map(d=>d.id===i?s(d):d),((c=t.currentVacancy)==null?void 0:c.id)===i&&(t.currentVacancy=s(t.currentVacancy))}).addCase(x6.fulfilled,(t,a)=>{const i=a.payload,s=Array.isArray(i)?i:i.vacancyIds,c=Array.isArray(i)?void 0:i.currentTab,d=new Set(s);t.vacancies=t.vacancies.filter(f=>!d.has(f.id)),t.totalCount=Math.max(0,t.totalCount-s.length),c&&c in t.tabCounts&&(t.tabCounts[c]=Math.max(0,t.tabCounts[c]-s.length))}).addCase(v6.fulfilled,(t,a)=>{t.tabCounts=a.payload})}}),{clearCurrentVacancy:PS}=d1.actions,E6=d1.reducer;class Cl{static async fetchTestReport(t,a){try{return await Y.get(`/v1/profile/test/${t}/report/${a}`)??{}}catch(i){throw console.error("CandidateApi: Error fetching test report",i),i}}static async getCandidates(t){try{const a=await Y.post("/v1/profile/employer/candidates",t);if(!a||!Array.isArray(a.list))throw new Error("CandidateApi: Invalid candidates list response from API");return a}catch(a){throw a}}static async getCandidateById(t,a,i){try{let s=`/v1/profile/employer/candidate/${t}`;const c=new URLSearchParams;a&&c.append("vacancyId",a),i&&c.append("responses","true");const d=c.toString();d&&(s+=`?${d}`);const f=await Y.get(s);if(!f||!f.applicantId)throw new Error("CandidateApi: Invalid candidate details response from API");return f}catch(s){throw s}}static async getCandidatesTotal(t){try{return await Y.post("/v1/profile/employer/candidates/total",t)??{total:0}}catch{return{total:0}}}static async addToRejected(t){await Y.put("/v1/profile/employer/candidates/rejected",t)}static async addToLiked(t){await Y.put("/v1/profile/employer/candidates/liked",t)}static async addToViewed(t){await Y.put("/v1/profile/employer/candidates/viewed",t)}static async removeFromLiked(t,a,i){const s=new URLSearchParams;t&&s.set("vacancy_id",t),i&&s.set("folderId",i),a.forEach(c=>s.append("applicant_id",c)),await Y.delete(`/v1/profile/employer/candidates/liked?${s.toString()}`)}static async removeFromViewed(t,a){const i=new URLSearchParams;i.set("vacancy_id",t),a.forEach(s=>i.append("applicant_id",s)),await Y.delete(`/v1/profile/employer/candidates/viewed?${i.toString()}`)}static async addComment(t){const a=await Y.post("/v1/profile/applicant/comment",t);if(!a)throw new Error("CandidateApi: Failed to add comment");return a}static async updateComment(t){const a=await Y.put("/v1/profile/applicant/comment",t);if(!a)throw new Error("CandidateApi: Failed to update comment");return a}static async deleteComment(t){const a=new URLSearchParams;a.append("commentId",t.commentId),t.vacancyId&&a.append("vacancyId",t.vacancyId),t.responses&&a.append("responses","true");const i=await Y.delete(`/v1/profile/applicant/comment?${a.toString()}`);if(!i)throw new Error("CandidateApi: Failed to delete comment");return i}static async getFunnelSettings(){return Y.get("/v1/employer/funnel/settings")}static async updateFunnelSettings(t){return Y.put("/v1/employer/funnel/settings",t)}static async updateFunnelStage(t,a){return Y.put(`/v1/employer/funnel/stages/${t}`,a)}static async getFunnelTemplates(){return Y.get("/v1/employer/funnel/templates")}static async updateFunnelActionTemplate(t,a){return Y.put(`/v1/employer/funnel/templates/actions/${t}`,a)}static async updateFunnelStageTemplate(t,a){return Y.put(`/v1/employer/funnel/templates/stages/${t}`,a)}static async moveResponseStage(t,a){return Y.post(`/v1/employer/funnel/responses/${t}/move-stage`,{toStageCode:a})}static async rejectResponse(t,a){return Y.post(`/v1/employer/funnel/responses/${t}/reject`,{visibleToApplicant:a})}static async restoreResponse(t,a){return Y.post(`/v1/employer/funnel/responses/${t}/restore`,{toStageCode:a})}}const pd=(r,t)=>{const a=[2,0,1,1,1,2];return t[r%100>4&&r%100<20?2:a[r%10<5?r%10:5]]},k6=(r,t)=>{if(!r&&!t)return"Без опыта";const a=[];return r&&a.push(`${r} ${pd(r,["год","года","лет"])}`),t&&a.push(`${t} ${pd(t,["мес.","мес.","мес."])}`),a.join(" ")},T6=r=>r?`${r} ${pd(r,["год","года","лет"])}`:"",RS=r=>{if(!r)return"";const t=new Date(r);return isNaN(t.getTime())?r:new Intl.DateTimeFormat("ru-RU",{day:"numeric",month:"long"}).format(t)},AS=r=>{if(!r)return"";const t=r.replace(/\D/g,"");if(!t)return r;let a=t;return a.length===11&&(a[0]==="8"||a[0]==="7")&&(a=a.slice(1)),a.length!==10?r:`+7 (${a.slice(0,3)}) ${a.slice(3,6)}-${a.slice(6,8)}-${a.slice(8,10)}`};class I6{constructor(t){F(this,"id");F(this,"responseId");F(this,"stageCode");F(this,"resolution");F(this,"name");F(this,"avatarUrl");F(this,"sex");F(this,"position");F(this,"city");F(this,"age");F(this,"email");F(this,"phoneNumber");F(this,"chatId");F(this,"responseDate");F(this,"vacancyId");F(this,"searchStatus");F(this,"description");F(this,"goals");F(this,"experienceYears");F(this,"experienceMonths");F(this,"skills");F(this,"personalQualities");F(this,"personalQualitiesReports");F(this,"experiences");F(this,"educations");F(this,"courses");F(this,"cases");F(this,"resumes");F(this,"similarity");F(this,"viewed");F(this,"liked");F(this,"isLiked");F(this,"rejected");F(this,"contactItems");F(this,"comment");F(this,"folders");F(this,"chatAvailable");F(this,"competencies");F(this,"hardCompatibilityPercent");this.id=t.id,this.responseId=t.responseId,this.stageCode=t.stageCode,this.resolution=t.resolution,this.name=t.name||"Имя не указано",this.avatarUrl=t.avatarUrl||null,this.sex=t.sex,this.position=t.position||"",this.city=t.city||null,this.age=t.age,this.email=t.email,this.phoneNumber=t.phoneNumber||null,this.chatId=t.chatId,this.responseDate=t.responseDate,this.vacancyId=t.vacancyId,this.searchStatus=t.searchStatus,this.description=t.description||"",this.goals=t.goals||{},this.experienceYears=t.experienceYears||0,this.experienceMonths=t.experienceMonths||0,this.skills=t.skills||[],this.personalQualities=t.personalQualities||[],this.personalQualitiesReports=t.personalQualitiesReports||[],this.experiences=t.experiences||[],this.educations=t.educations||[],this.courses=t.courses||[],this.cases=t.cases||[],this.resumes=t.resumes||[],this.similarity=t.similarity,this.viewed=t.viewed,this.liked=t.liked,this.isLiked=t.isLiked,this.rejected=t.rejected,this.contactItems=t.contactItems||[],this.comment=t.comment||[],this.folders=t.folders||[],this.chatAvailable=t.chatAvailable,this.competencies=t.competencies,this.hardCompatibilityPercent=t.hardCompatibilityPercent}get formattedExperience(){return k6(this.experienceYears,this.experienceMonths)}get formattedAge(){return T6(this.age)}}const b6=["workSearchStatus","workingSchedule","officeType","sex","experience","education","skills","companySector","specialization","personalQualities","position","description","region","companies"],f1=(r,t={})=>{const a={page:0,perPage:0,responses:!1},i=f=>Array.isArray(f)?f[0]:f;if(r.preferredIncomeFrom&&(a.preferredIncomeFrom=r.preferredIncomeFrom),r.preferredIncomeTo&&(a.preferredIncomeTo=r.preferredIncomeTo),r.ageFrom&&(a.ageFrom=Number(r.ageFrom)),r.ageTo&&(a.ageTo=Number(r.ageTo)),b6.forEach(f=>{if(r[f]){const p=Array.isArray(r[f])?r[f]:[r[f]];p.length>0&&(a[f]=p)}}),r.company&&(a.company=r.company),r.searchText&&(a.searchText=r.searchText),r.photo!==void 0){const f=i(r.photo);f!=null&&f!==""&&(a.photo=String(f)==="true")}if(r.confirmedExperience!==void 0){const f=i(r.confirmedExperience);f!=null&&f!==""&&(a.confirmedExperience=String(f)==="true")}if(r.vacancyId&&(a.vacancyId=r.vacancyId),r.responses!==void 0){const f=i(r.responses);a.responses=String(f)==="true"}if(r.onlyWithSimilarity!==void 0){const f=i(r.onlyWithSimilarity);a.onlyWithSimilarity=String(f)==="true"}if(r.onlyWithHardCompatibility!==void 0){const f=i(r.onlyWithHardCompatibility);a.onlyWithHardCompatibility=String(f)==="true"}r.stageCode&&(a.stageCode=r.stageCode),r.folderId&&(a.folderId=r.folderId),r.likedCandidates!==void 0&&(a.likedCandidates=String(r.likedCandidates)==="true"),r.isLiked!==void 0&&(a.isLiked=String(r.isLiked)==="true");const s={};r.viewed!==void 0&&(s.viewed=String(r.viewed)==="true"),r.liked!==void 0&&(s.liked=String(r.liked)==="true");const c=r.responseFlags||{},d={...s,...c};return Object.keys(d).length>0&&(a.responseFlags=d),r.responseBucket&&(a.responseBucket=r.responseBucket),{...a,...t}};class _l{static async getFolders(t=0,a=100,i){const s=new URLSearchParams;s.append("page",t.toString()),s.append("perPage",a.toString()),i&&s.append("searchText",i);const c=await Y.get(`/v1/folders?${s.toString()}`);if(!c)throw new Error("API Error: No data returned");return c}static async createFolder(t){const a=await Y.post("/v1/folders",t);if(!a)throw new Error("API Error: No data returned");return a}static async deleteFolders(t){const a=new URLSearchParams;t.forEach(i=>a.append("folderIds",i)),await Y.delete(`/v1/folders?${a.toString()}`)}static async renameFolder(t,a){const i=await Y.put(`/v1/folders/${t}/name`,{newName:a});if(!i)throw new Error("API Error: No data returned");return i}static async addCandidates(t,a){const i=await Y.post(`/v1/folders/${t}/candidates:add`,{applicantIds:a});if(!i)throw new Error("API Error: No data returned");return i}static async removeCandidates(t,a){const i=await Y.post(`/v1/folders/${t}/candidates:remove`,{applicantIds:a});if(!i)throw new Error("API Error: No data returned");return i}static async moveCandidates(t,a){return await Y.post(`/v1/folders/${t}/candidates:move`,{applicantIds:a})}}const P6={folders:[],hasNext:!1,mainFavoritesCount:0,isLoading:!1,isInitialized:!1,error:null,page:0},Lu=Ne("folder/fetchAll",async(r={},{rejectWithValue:t})=>{try{const{page:a=0,perPage:i=10,includeCounts:s=!1,searchText:c}=r,d=await _l.getFolders(a,i,c);let f=null;s&&(f=await Cl.getCandidatesTotal({likedCandidates:!0}));const p=d.folders.map(m=>{var v;if(!s)return{...m,candidateCount:m.candidateCount||0};const y=(v=f==null?void 0:f.folderTotals)==null?void 0:v.find(w=>w.folderId===m.folder.id);return{...m,candidateCount:y?y.count:0}});return{...d,folders:p,mainFavoritesCount:(f==null?void 0:f.likedCandidatesCount)||0,page:a,includeCounts:s}}catch(a){return t(a.message||"Ошибка загрузки папок")}}),R6=Ne("folder/create",async(r,{rejectWithValue:t})=>{try{return await _l.createFolder(r)}catch(a){return t(a.message||"Ошибка создания папки")}}),A6=Ne("folder/delete",async(r,{rejectWithValue:t})=>{try{return await _l.deleteFolders([r]),r}catch(a){return t(a.message||"Ошибка удаления папки")}}),p1=Ne("folder/rename",async({folderId:r,newName:t},{rejectWithValue:a})=>{try{return await _l.renameFolder(r,t),{id:r,newName:t}}catch(i){return a(i.message||"Ошибка переименования папки")}}),h1=Yr({name:"folder",initialState:P6,reducers:{clearFoldersState:r=>{r.folders=[],r.hasNext=!1,r.mainFavoritesCount=0,r.isLoading=!1,r.isInitialized=!1,r.error=null,r.page=0},updateFolderCount:(r,t)=>{if(t.payload.folderId==="main"||t.payload.folderId==="favorites_main")r.mainFavoritesCount+=t.payload.delta;else{const a=r.folders.find(i=>i.folder.id===t.payload.folderId);a&&(a.candidateCount+=t.payload.delta)}}},extraReducers:r=>{r.addCase(Lu.pending,t=>{t.isLoading=!0,t.error=null}).addCase(Lu.fulfilled,(t,a)=>{var i;if(t.isLoading=!1,a.payload.page===0)t.folders=a.payload.folders,(i=a.meta.arg)!=null&&i.searchText||(t.isInitialized=!0);else{const s=a.payload.folders.filter(c=>!t.folders.some(d=>d.folder.id===c.folder.id));t.folders=[...t.folders,...s]}t.hasNext=a.payload.hasNext,t.page=a.payload.page,a.payload.includeCounts&&(t.mainFavoritesCount=a.payload.mainFavoritesCount||0)}).addCase(Lu.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload||"Ошибка загрузки"}).addCase(R6.fulfilled,(t,a)=>{t.folders.unshift({folder:a.payload.folder,candidateCount:0})}).addCase(A6.fulfilled,(t,a)=>{t.folders=t.folders.filter(i=>i.folder.id!==a.payload)}).addCase(p1.fulfilled,(t,a)=>{const i=t.folders.findIndex(s=>s.folder.id===a.payload.id);i!==-1&&(t.folders[i].folder.name=a.payload.newName)})}}),{clearFoldersState:NS,updateFolderCount:LS}=h1.actions,N6=h1.reducer,L6={candidates:[],currentCandidate:null,isLoading:!1,isFetchingMore:!1,error:null,pagination:{page:0,perPage:10,hasNext:!1}},m1=(r,t="desc")=>{const a=t==="asc";switch(r){case"similarity":return a?"CANDIDATES_ORDER_SIMILARITY_ASC":"CANDIDATES_ORDER_SIMILARITY_DESC";case"hardCompatibility":return a?"CANDIDATES_ORDER_HARD_COMPATIBILITY_ASC":"CANDIDATES_ORDER_HARD_COMPATIBILITY_DESC";case"date":return a?"CANDIDATES_ORDER_UPDATED_AT_ASC":"CANDIDATES_ORDER_UPDATED_AT";case"salary":return a?"CANDIDATES_ORDER_SALARY_ASC":"CANDIDATES_ORDER_SALARY_DESC";default:return}},ju=Ne("candidate/fetchAll",async(r={},{rejectWithValue:t})=>{try{const{filters:a={},sortMetric:i=null,sortDirection:s="desc",page:c=0}=r,d=f1(a,{page:c,perPage:10,orderBy:m1(i,s)});return await Cl.getCandidates(d)}catch(a){return t(a.message||"Не удалось загрузить список кандидатов")}}),Mu=Ne("candidate/fetchMore",async(r,{rejectWithValue:t})=>{try{const{filters:a={},sortMetric:i=null,sortDirection:s="desc",page:c}=r,d=f1(a,{page:c,perPage:10,orderBy:m1(i,s)});return await Cl.getCandidates(d)}catch(a){return t(a.message||"Не удалось загрузить больше кандидатов")}}),Du=Ne("candidate/fetchById",async({applicantId:r,vacancyId:t,responses:a},{rejectWithValue:i})=>{var s,c,d,f,p,m,y,v,w,S,E,I,N,D,b,B,O;try{const j=await Cl.getCandidateById(r,t,a),q={id:j.applicantId,responseId:(s=j.responseState)==null?void 0:s.responseId,stageCode:(c=j.responseState)==null?void 0:c.stageCode,resolution:(d=j.responseState)==null?void 0:d.resolution,name:j.name,avatarUrl:j.avatarUrl,sex:j.sex,position:j.position,age:j.age,city:j.city,responseDate:j.responseDate,chatId:j.chatId,vacancyId:j.vacancyId,searchStatus:j.workSearchStatus,description:j.description,similarity:j.similarity,viewed:((f=j.responseState)==null?void 0:f.viewed)??((p=j.responseFlags)==null?void 0:p.viewed)??!1,liked:j.isLiked??((m=j.responseState)==null?void 0:m.liked)??((y=j.responseFlags)==null?void 0:y.liked)??!1,isLiked:j.isLiked??((v=j.responseState)==null?void 0:v.liked)??((w=j.responseFlags)==null?void 0:w.liked)??!1,rejected:((S=j.responseState)==null?void 0:S.resolution)==="RESPONSE_RESOLUTION_REJECTED"||(((E=j.responseFlags)==null?void 0:E.rejected)??!1),contactItems:j.contactItems||[],comment:j.comment||[],folders:j.folders||[],chatAvailable:j.chatAvailable,competencies:j.competencies,hardCompatibilityPercent:j.hardCompatibilityPercent,goals:{officeType:(I=j.goals)==null?void 0:I.officeType,workingSchedule:(N=j.goals)==null?void 0:N.workingSchedule,preferredIncome:(D=j.goals)==null?void 0:D.preferredIncome,goalPositions:((b=j.goals)==null?void 0:b.goalPositions)||[],preferredBusinessFields:((B=j.goals)==null?void 0:B.preferredBusinessFields)||[],additionalGoals:((O=j.goals)==null?void 0:O.additionalGoals)||[]},experienceYears:j.experienceYears,experienceMonths:j.experienceMonths,educations:(j.educations||[]).map(x=>({id:x.id,organization:x.organization,degree:x.degree,specialization:x.specialization,startYear:x.startYear,graduationYear:x.graduationYear,verified:x.verified,stillEducating:x.stillEducating})),courses:(j.courses||[]).map(x=>({id:x.id,title:x.title,organization:x.organization,specialization:x.specialization,graduationYear:x.graduationYear,verified:x.verified,stillEducating:x.stillEducating})),experiences:(j.experiences||[]).map(x=>{var W,re,ee;return{id:x.id,hireDate:x.hireDate,retirementDate:x.retirementDate,stillWorking:x.stillWorking,achievements:x.achievements,responsibilities:x.responsibilities,verified:x.verified,companySector:x.companySector,positionName:((W=x.experiencePosition)==null?void 0:W.positionName)||null,companyName:((re=x.experienceCompany)==null?void 0:re.companyName)||null,companyLogoUrl:((ee=x.experienceCompany)==null?void 0:ee.companyLogoUrl)||null}}),skills:(j.skills||[]).map(x=>({id:x.id,skillName:x.skillName,verified:x.verified})),personalQualities:(j.personalQualities||[]).map(x=>({id:x.id,qualityName:x.qualityName,verified:x.verified})),personalQualitiesReports:j.personalQualitiesReportsTests&&j.personalQualitiesReportsTests.length>0?j.personalQualitiesReportsTests.map((x,W)=>({id:`report-test-${W}`,name:"Инфопрофиль",testName:x})):(j.personalQualitiesReports||[]).map((x,W)=>({id:`report-${W}`,name:"Инфопрофиль",url:x})),cases:(j.cases||[]).map(x=>({id:x.id,title:x.title,description:x.description,files:(x.files||[]).map(W=>({id:W.id,fileName:W.fileName}))})),resumes:(j.resumes||[]).map(x=>({id:x.id,fileName:x.fileName,fileSize:x.fileSize}))};if(typeof window<"u")try{const x=new BroadcastChannel("candidate_sync");x.postMessage({type:"UPDATE_CANDIDATE_STATUS",payload:{id:q.id,stageCode:q.stageCode,resolution:q.resolution,rejected:q.rejected,liked:q.liked,viewed:q.viewed,folders:q.folders}}),x.close()}catch{}return new I6(q)}catch(j){return i(j.message||"Не удалось загрузить данные кандидата")}}),y1=Yr({name:"candidate",initialState:L6,reducers:{clearCurrentCandidate:r=>{r.currentCandidate=null},syncCandidateLocally:(r,t)=>{const a=r.candidates.findIndex(i=>i.id===t.payload.id);if(a!==-1){const i=r.candidates[a];t.payload.stageCode!==void 0&&(i.stageCode=t.payload.stageCode),t.payload.resolution!==void 0&&(i.resolution=t.payload.resolution),t.payload.rejected!==void 0&&(i.rejected=t.payload.rejected),t.payload.liked!==void 0&&(i.liked=t.payload.liked,i.isLiked=t.payload.liked),t.payload.viewed!==void 0&&(i.viewed=t.payload.viewed),t.payload.folders!==void 0&&(i.folders=t.payload.folders)}if(r.currentCandidate&&r.currentCandidate.id===t.payload.id){const i=r.currentCandidate;t.payload.stageCode!==void 0&&(i.stageCode=t.payload.stageCode),t.payload.resolution!==void 0&&(i.resolution=t.payload.resolution),t.payload.rejected!==void 0&&(i.rejected=t.payload.rejected),t.payload.liked!==void 0&&(i.liked=t.payload.liked,i.isLiked=t.payload.liked),t.payload.viewed!==void 0&&(i.viewed=t.payload.viewed),t.payload.folders!==void 0&&(i.folders=t.payload.folders)}},removeCandidatesLocally:(r,t)=>{r.candidates=r.candidates.filter(a=>!t.payload.includes(a.id))}},extraReducers:r=>{r.addCase(p1.fulfilled,(t,a)=>{var c;const{id:i,newName:s}=a.payload;if(t.candidates.forEach(d=>{var p;const f=(p=d.folders)==null?void 0:p.find(m=>m.id===i);f&&(f.name=s)}),t.currentCandidate){const d=(c=t.currentCandidate.folders)==null?void 0:c.find(f=>f.id===i);d&&(d.name=s)}}).addCase(ju.pending,t=>{t.isLoading=!0,t.error=null}).addCase(ju.fulfilled,(t,a)=>{t.isLoading=!1,t.candidates=a.payload.list.map(i=>{var s,c,d,f,p,m,y;return{id:i.applicantId,responseId:(s=i.responseState)==null?void 0:s.responseId,stageCode:(c=i.responseState)==null?void 0:c.stageCode,resolution:(d=i.responseState)==null?void 0:d.resolution,name:i.name,avatarUrl:i.avatarUrl,position:i.position,city:i.city,age:i.age,experienceYears:i.experienceYears,experienceMonths:i.experienceMonths,spheres:i.spheres,responseDate:i.responseDate,chatId:i.chatId,searchStatus:i.searchStatus,similarity:i.similarity,viewed:((f=i.responseState)==null?void 0:f.viewed)??!1,liked:i.isLiked??((p=i.responseState)==null?void 0:p.liked)??!1,isLiked:i.isLiked??((m=i.responseState)==null?void 0:m.liked)??!1,rejected:((y=i.responseState)==null?void 0:y.resolution)==="RESPONSE_RESOLUTION_REJECTED",experiences:i.experiences||[],contactItems:i.contactItems||[],comment:i.comment||[],folders:i.folders||[],chatAvailable:i.chatAvailable,competencies:i.competencies,hardCompatibilityPercent:i.hardCompatibilityPercent}}),t.pagination={page:a.payload.page,perPage:a.payload.perPage,hasNext:a.payload.hasNext}}).addCase(ju.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload||"Ошибка загрузки"}).addCase(Mu.pending,t=>{t.isFetchingMore=!0}).addCase(Mu.fulfilled,(t,a)=>{t.isFetchingMore=!1;const i=new Set(t.candidates.map(c=>c.id)),s=a.payload.list.filter(c=>!i.has(c.applicantId)).map(c=>{var d,f,p,m,y,v,w;return{id:c.applicantId,responseId:(d=c.responseState)==null?void 0:d.responseId,stageCode:(f=c.responseState)==null?void 0:f.stageCode,resolution:(p=c.responseState)==null?void 0:p.resolution,name:c.name,avatarUrl:c.avatarUrl,position:c.position,city:c.city,age:c.age,experienceYears:c.experienceYears,experienceMonths:c.experienceMonths,spheres:c.spheres,responseDate:c.responseDate,chatId:c.chatId,searchStatus:c.searchStatus,similarity:c.similarity,viewed:((m=c.responseState)==null?void 0:m.viewed)??!1,liked:c.isLiked??((y=c.responseState)==null?void 0:y.liked)??!1,isLiked:c.isLiked??((v=c.responseState)==null?void 0:v.liked)??!1,rejected:((w=c.responseState)==null?void 0:w.resolution)==="RESPONSE_RESOLUTION_REJECTED",experiences:c.experiences||[],contactItems:c.contactItems||[],comment:c.comment||[],folders:c.folders||[],chatAvailable:c.chatAvailable,competencies:c.competencies,hardCompatibilityPercent:c.hardCompatibilityPercent}});t.candidates=[...t.candidates,...s],t.pagination={page:a.payload.page,perPage:a.payload.perPage,hasNext:a.payload.hasNext}}).addCase(Mu.rejected,t=>{t.isFetchingMore=!1}).addCase(Du.pending,t=>{t.isLoading=!0,t.error=null}).addCase(Du.fulfilled,(t,a)=>{t.isLoading=!1,t.currentCandidate=a.payload;const i=t.candidates.findIndex(s=>s.id===a.payload.id);i!==-1&&(t.candidates[i]={...t.candidates[i],stageCode:a.payload.stageCode,resolution:a.payload.resolution,rejected:a.payload.rejected,viewed:a.payload.viewed,liked:a.payload.liked,isLiked:a.payload.isLiked,responseId:a.payload.responseId,folders:a.payload.folders})}).addCase(Du.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload||"Ошибка загрузки профиля"})}}),{clearCurrentCandidate:jS,syncCandidateLocally:MS,removeCandidatesLocally:DS}=y1.actions,j6=y1.reducer,g1=K3();g1.startListening({matcher:B0,effect:async r=>{const t=r.payload;t&&(t.status===0||t.status>=500)&&(window.location.pathname.startsWith("/error")||(window.location.href=`/error/${t.status}`))}});class Sl{static async fetchChats(t,a=0,i=50,s="READ_FILTER_UNSPECIFIED",c="CHAT_LIST_TYPE_UNSPECIFIED",d){const f=new URLSearchParams({type:t,page:String(a),perPage:String(i),readFilter:s,chatType:c});d&&f.set("chatId",d);const p=await Y.get(`/v1/chat/list?${f.toString()}`);if(!p)throw new Error("Failed to fetch chats: No response from server.");return p}static async fetchChatMessages(t,a=0,i=50){const s=new URLSearchParams({page:String(a),perPage:String(i)}),c=await Y.get(`/v1/chat/${t}?${s.toString()}`,{cache:"no-cache"});return c||{messages:[],page:0,perPage:0,hasNext:!1}}static async createChat(t){try{const a={status:"CHAT_STATUS_CANDIDATE",applicantId:t},i=await Y.post("/v1/chat/create",a);if(!i||!i.id)throw new Error("ChatApi: Invalid create chat response");return i}catch(a){throw console.error("ChatApi: Error creating chat",a),a}}}const wm={chats:[],messages:{},selectedChatId:null,chatsLoading:"idle",isFetchingMoreChats:!1,webSocketStatus:"idle",unreadCount:0,totalChatsCount:0,unreadChatsCount:0,activeReadFilter:"READ_FILTER_UNSPECIFIED",chatsPagination:{page:0,perPage:50,hasNext:!1},notification:{id:0,isOpen:!1,chatId:null,title:"",message:""},userStatuses:{},subscribedChatIds:[],wsError:null},M6="00000000-0000-0000-0000-000000000000",Qs=Ne("chat/fetchChats",async r=>{const{type:t,readFilter:a="READ_FILTER_UNSPECIFIED",chatType:i="CHAT_LIST_TYPE_UNSPECIFIED"}=r,s=await Sl.fetchChats(t,0,50,a,i),c=s.support,d=s.chats||s.response||s.list||[];let f=[];c&&c.chatId&&c.chatId!==M6&&f.push({...c,companyName:"Техническая поддержка",vacancyName:"Помощь и поддержка",unreadCount:c.unread||0});const p=d.map(m=>({...m,unreadCount:m.unread||0,sentAt:m.sentAt||m.lastActivity,lastSeen:m.lastSeen||m.lastActivity,isOnline:m.isOnline}));return f=[...f,...p],{chats:f,page:s.page,hasNext:s.hasNext,allChatsCount:s.allChats||0,unreadChatsCount:s.unreadChats||0,unreadMessagesCount:s.unreadMessages||0}}),$u=Ne("chat/fetchMoreChats",async(r,{getState:t})=>{const a=t(),{page:i}=a.chat.chatsPagination,{activeReadFilter:s}=a.chat,c=i+1,d=await Sl.fetchChats(r,c,50,s,"CHAT_LIST_TYPE_UNSPECIFIED");return{chats:(d.chats||d.response||d.list||[]).map(m=>({...m,unreadCount:m.unread||0,sentAt:m.sentAt||m.lastActivity,lastSeen:m.lastSeen||m.lastActivity,isOnline:m.isOnline})),page:d.page,hasNext:d.hasNext,allChatsCount:d.allChats||0,unreadChatsCount:d.unreadChats||0,unreadMessagesCount:d.unreadMessages||0}}),v1=Ne("chat/fetchChatById",async({type:r,chatId:t})=>{const a=await Sl.fetchChats(r,0,1,"READ_FILTER_UNSPECIFIED","CHAT_LIST_TYPE_UNSPECIFIED",t),s=(a.chats||a.response||a.list||[])[0];return s?{...s,unreadCount:s.unread||0,sentAt:s.sentAt||s.lastActivity,lastSeen:s.lastSeen||s.lastActivity}:null}),Ou=Ne("chat/fetchMessages",async({chatId:r,page:t})=>{const a=await Sl.fetchChatMessages(r,t);return{chatId:r,...a}}),tn=(r,t)=>!r||!t?!1:String(r).toLowerCase()===String(t).toLowerCase(),w1=Yr({name:"chat",initialState:wm,reducers:{setReadFilter:(r,t)=>{r.activeReadFilter=t.payload},closeNotification:r=>{r.notification.isOpen=!1},resetUnreadCount:(r,t)=>{const{chatId:a}=t.payload,i=r.chats.find(s=>s.chatId===a);i&&i.unreadCount&&i.unreadCount>0&&(r.unreadCount=Math.max(0,r.unreadCount-i.unreadCount),r.unreadChatsCount=Math.max(0,r.unreadChatsCount-1),i.unreadCount=0)},setSelectedChat:(r,t)=>{if(r.selectedChatId=t.payload,t.payload){const a=r.chats.find(i=>i.chatId===t.payload);a&&a.unreadCount&&(r.unreadCount=Math.max(0,r.unreadCount-a.unreadCount),r.unreadChatsCount=Math.max(0,r.unreadChatsCount-1),a.unreadCount=0)}},addMessage:(r,t)=>{const{message:a,currentUserRoleId:i}=t.payload,{chatId:s}=a;r.messages[s]||(r.messages[s]={list:[],currentPage:0,hasMore:!0,status:"idle"}),r.messages[s].list.some(d=>d.id===a.id)||r.messages[s].list.push(a);const c=r.chats.findIndex(d=>d.chatId===s);if(c>-1){const d=r.chats[c];d.lastMessage=a.text,d.sentAt=a.sentAt,d.senderRoleId=i,d.readAt=null,r.chats.splice(c,1),r.chats.unshift(d)}},editMessageLocal:(r,t)=>{const{chatId:a,messageId:i,text:s}=t.payload,c=r.messages[a];if(c){const d=c.list.find(f=>f.id===i);if(d&&(d.text=s,d.editedAt=new Date().toISOString()),c.list.length>0&&c.list[c.list.length-1].id===i){const p=r.chats.find(m=>m.chatId===a);p&&(p.lastMessage=s)}}},deleteMessageLocal:(r,t)=>{const{chatId:a,messageId:i}=t.payload,s=r.messages[a];if(s){const c=s.list.find(d=>d.id===i);if(c&&(c.deletedAt=new Date().toISOString()),s.list.length>0&&s.list[s.list.length-1].id===i){const f=r.chats.find(p=>p.chatId===a);f&&(f.lastMessage="Сообщение удалено")}}},markMessagesAsRead:(r,t)=>{const{chatId:a,messageIds:i}=t.payload,s=r.messages[a];if(s){const d=new Date().toISOString();i.forEach(f=>{const p=s.list.find(m=>m.id===f);p&&(p.status="read",p.readAt=d)})}const c=r.chats.find(d=>d.chatId===a);c&&(c.readAt=new Date().toISOString())},setWebSocketStatus:(r,t)=>{r.webSocketStatus=t.payload},handleWebSocketMessage:(r,t)=>{var c,d,f,p,m;const{event:a,currentUserId:i,currentUserRoleId:s}=t.payload;switch(a.type){case"statuses":case" statuses":{const y=a,{meta:v}=y,S=(Array.isArray(v==null?void 0:v.statuses)?v.statuses:v!=null&&v.status?[v.status]:[]).map(E=>{const I=E;return{user_id:I.user_id??I.UserID,last_seen:I.last_seen??I.LastSeen,online:I.online??I.Online}});S.length>0&&S.forEach(E=>{var D;if(!E.user_id||tn(E.user_id,i)||tn(E.user_id,s))return;const I=(D=r.userStatuses[E.user_id.toLowerCase()])==null?void 0:D.lastSeen,N=E.last_seen&&!E.last_seen.startsWith("0001-01-01");r.userStatuses[E.user_id.toLowerCase()]={isOnline:E.online,lastSeen:N?E.last_seen:I},r.chats.forEach(b=>{(tn(b.applicantUserId,E.user_id)||tn(b.employerUserId,E.user_id)||tn(b.applicantId,E.user_id)||tn(b.employerId,E.user_id))&&(b.isOnline=E.online,N&&(b.lastSeen=E.last_seen))})});break}case"popup":{const{chat_id:y,message:v,meta:w}=a;if(y===r.selectedChatId)return;let S="Новое сообщение";if(w){if(w.company_name&&w.company_name.trim())S=w.company_name;else if(w.sender_name||w.sender_surname){const E=[w.sender_name,w.sender_surname].filter(Boolean);E.length>0&&(S=E.join(" "))}}r.notification={id:Date.now(),isOpen:!0,chatId:y,title:S,message:v||"Вам пришло сообщение",avatarSrc:w==null?void 0:w.sender_avatar,duration:5e3};break}case"message_edited":case"edit_message":{const y=a,{chat_id:v,message:w}=y,S=(w==null?void 0:w.ID)||(w==null?void 0:w.id),E=(w==null?void 0:w.Text)||(w==null?void 0:w.text),I=(w==null?void 0:w.EditedAt)||(w==null?void 0:w.edited_at)||new Date().toISOString();if(S&&E){const N=r.messages[v];if(N){const D=N.list.find(b=>b.id===S);if(D&&(D.text=E,D.editedAt=I),N.list.length>0&&N.list[N.list.length-1].id===S){const B=r.chats.find(O=>O.chatId===v);B&&(B.lastMessage=E)}}}break}case"message_deleted":{const y=a,v=y.chat_id,w=((c=y.message)==null?void 0:c.ID)||((d=y.message)==null?void 0:d.id)||((f=y.payload)==null?void 0:f.message_id);if(w){const S=r.messages[v];if(S){const E=S.list.find(I=>I.id===w);if(E&&(E.deletedAt=((p=y.message)==null?void 0:p.DeletedAt)||((m=y.message)==null?void 0:m.deleted_at)||new Date().toISOString()),S.list.length>0&&S.list[S.list.length-1].id===w){const N=r.chats.find(D=>D.chatId===v);N&&(N.lastMessage="Сообщение удалено")}}}break}case"message":{const y=a,v=y.chat_id;let w;if(typeof y.message=="string")try{w=JSON.parse(y.message)}catch{w={}}else w=y.message||{};const S=w.senderRoleId||w.SenderRoleID||w.SenderID||w.sender_id||w.senderId||w.sender_role_id,E=tn(S,i)||tn(S,s),I=w.MessageType||w.message_type;if(E&&!(I==="company_moderation_request"||I==="company_moderation_result"))return;const D=w.ReadAt||w.readAt||null,b={id:w.ID||w.id,chatId:w.ChatID||v,text:w.Text||w.text,senderId:S,sentAt:w.SentAt||w.created_at,readAt:D,status:D?"read":"sent",editedAt:w.EditedAt||w.edited_at||null,deletedAt:w.DeletedAt||w.deleted_at||null,messageType:w.MessageType||w.message_type,payload:w.Payload||w.payload,relatedEntityType:w.RelatedEntityType||w.related_entity_type||null,relatedEntityId:w.RelatedEntityID||w.related_entity_id||null};r.messages[v]||(r.messages[v]={list:[],currentPage:0,hasMore:!0,status:"idle"});const B=r.messages[v].list.some(j=>j.id===b.id);B||r.messages[v].list.push(b);const O=r.chats.find(j=>j.chatId===v);if(O){O.lastMessage=b.deletedAt?"Сообщение удалено":b.text,O.sentAt=b.sentAt;const j=r.chats.findIndex(q=>q.chatId===v);j>-1&&(r.chats.splice(j,1),r.chats.unshift(O)),!B&&!E&&v!==r.selectedChatId&&((!O.unreadCount||O.unreadCount===0)&&(r.unreadChatsCount+=1),O.unreadCount=(O.unreadCount||0)+1,r.unreadCount+=1)}else!B&&!E&&(r.unreadCount+=1,r.unreadChatsCount+=1,r.totalChatsCount+=1);break}case"message_ack":{const{message:y,chat_id:v}=a,w=r.messages[v];if(w){let E=-1;for(let I=w.list.length-1;I>=0;I--)if(w.list[I].status==="sending"&&(tn(w.list[I].senderId,i)||tn(w.list[I].senderId,s))){E=I;break}E>-1&&(w.list[E].id=y.ID||y.id,w.list[E].sentAt=y.SentAt||y.sentAt,w.list[E].status="sent")}const S=r.chats.find(E=>E.chatId===v);S&&(S.lastMessage=y.DeletedAt||y.deleted_at?"Сообщение удалено":y.Text||y.text,S.sentAt=y.SentAt||y.sentAt,S.readAt=null);break}case"message_read":{const{chat_id:y,meta:v}=a,w=v.messages;if(!w||!Array.isArray(w)||w.length===0)break;const S=r.messages[y];w.forEach(D=>{const b=D.read_at||new Date().toISOString();if(S&&S.list){const B=S.list.findIndex(O=>O.id===D.message_id);if(B>-1)for(let O=0;O<=B;O++){const j=S.list[O];j.status!=="read"&&(j.status="read",j.readAt=b)}}});const I=w[w.length-1].read_at||new Date().toISOString(),N=r.chats.find(D=>D.chatId===y);N&&(N.readAt=I);break}case"chat_updated":{const{chat_id:y,meta:v}=a,w=r.chats.find(E=>E.chatId===y);if(!w)break;w.lastMessage=v.last_message.text,w.sentAt=v.last_message.sent_at;const S=r.chats.findIndex(E=>E.chatId===y);S>-1&&(r.chats.splice(S,1),r.chats.unshift(w));break}case"subscribed":{const{meta:y}=a;r.subscribedChatIds=(y==null?void 0:y.chats)||[];break}case"error":{const y=a;r.wsError={id:Date.now(),chatId:y.chat_id,error:y.error};break}}},clearWsError:r=>{r.wsError=null},clearChatState:()=>wm,clearActiveChatData:r=>{r.messages={},r.selectedChatId=null},addNewChatToList:(r,t)=>{r.chats.find(a=>a.chatId===t.payload.chatId)||r.chats.unshift(t.payload)}},extraReducers:r=>{r.addCase(Qs.pending,t=>{t.chatsLoading="pending"}).addCase(Qs.fulfilled,(t,a)=>{t.chatsLoading="succeeded",t.chats=a.payload.chats.map(i=>{const s=[i.applicantUserId,i.employerUserId,i.applicantId,i.employerId].filter(Boolean);for(const c of s){const d=t.userStatuses[c.toLowerCase()];if(d){i.isOnline=d.isOnline,d.lastSeen&&!d.lastSeen.startsWith("0001-01-01")&&(i.lastSeen=d.lastSeen);break}}return i}),t.totalChatsCount=a.payload.allChatsCount,(a.meta.arg.readFilter??"READ_FILTER_UNSPECIFIED")==="READ_FILTER_UNSPECIFIED"&&(t.unreadChatsCount=a.payload.unreadChatsCount,t.unreadCount=a.payload.unreadMessagesCount),t.chatsPagination={page:a.payload.page,perPage:50,hasNext:a.payload.hasNext}}).addCase(Qs.rejected,t=>{t.chatsLoading="failed"}).addCase($u.pending,t=>{t.isFetchingMoreChats=!0}).addCase($u.fulfilled,(t,a)=>{t.isFetchingMoreChats=!1;const i=a.payload.chats.filter(s=>!t.chats.some(c=>c.chatId===s.chatId)).map(s=>{const c=[s.applicantUserId,s.employerUserId,s.applicantId,s.employerId].filter(Boolean);for(const d of c){const f=t.userStatuses[d.toLowerCase()];if(f){s.isOnline=f.isOnline,f.lastSeen&&!f.lastSeen.startsWith("0001-01-01")&&(s.lastSeen=f.lastSeen);break}}return s});t.chats=[...t.chats,...i],t.totalChatsCount=a.payload.allChatsCount,t.activeReadFilter==="READ_FILTER_UNSPECIFIED"&&(t.unreadChatsCount=a.payload.unreadChatsCount,t.unreadCount=a.payload.unreadMessagesCount),t.chatsPagination={page:a.payload.page,perPage:50,hasNext:a.payload.hasNext}}).addCase($u.rejected,t=>{t.isFetchingMoreChats=!1}).addCase(v1.fulfilled,(t,a)=>{const i=a.payload;if(!i)return;const s=t.chats.findIndex(c=>c.chatId===i.chatId);s>-1?t.chats[s]={...t.chats[s],...i}:(t.chats.unshift(i),t.totalChatsCount+=1)}).addCase(Ou.pending,(t,a)=>{const{chatId:i}=a.meta.arg;t.messages[i]||(t.messages[i]={list:[],currentPage:0,hasMore:!0,status:"idle"}),t.messages[i].status="loading"}).addCase(Ou.fulfilled,(t,a)=>{const{chatId:i,messages:s,hasNext:c,page:d}=a.payload,f=t.messages[i];if(!f)return;const p=s.filter(m=>m&&m.id&&typeof m.text=="string").map(m=>({...m,senderId:m.senderRoleId||m.senderId,status:m.readAt?"read":"sent",editedAt:m.editedAt||m.edited_at||m.EditedAt||null,deletedAt:m.deletedAt||m.deleted_at||m.DeletedAt||null,messageType:m.messageType||m.message_type||m.MessageType,payload:m.payload||m.Payload,relatedEntityType:m.relatedEntityType||m.related_entity_type||m.RelatedEntityType||null,relatedEntityId:m.relatedEntityId||m.related_entity_id||m.RelatedEntityID||null}));if(d===0)p.forEach(m=>{const y=f.list.find(v=>v.id===m.id);y?Object.assign(y,m):f.list.push(m)}),f.list.sort((m,y)=>new Date(m.sentAt).getTime()-new Date(y.sentAt).getTime());else{const m=new Set(f.list.map(v=>v.id)),y=p.filter(v=>!m.has(v.id));f.list.unshift(...y.sort((v,w)=>new Date(v.sentAt).getTime()-new Date(w.sentAt).getTime()))}f.hasMore=c,f.currentPage=d,f.status="succeeded"}).addCase(Ou.rejected,(t,a)=>{const{chatId:i}=a.meta.arg;t.messages[i]&&(t.messages[i].status="failed")})}}),{setSelectedChat:$S,addMessage:OS,markMessagesAsRead:FS,setWebSocketStatus:ui,handleWebSocketMessage:D6,clearChatState:US,clearActiveChatData:zS,addNewChatToList:BS,closeNotification:Cm,resetUnreadCount:VS,setReadFilter:HS,editMessageLocal:WS,deleteMessageLocal:KS,clearWsError:YS}=w1.actions,$6=w1.reducer;class C1{static async getSettings(t,a){const i=t==="employer"?`/v1/settings/employer/${a}`:`/v1/settings/applicant/${a}`,s=await Y.get(i);if(!s||!s.settings)throw new Error("Failed to fetch settings: No response from server.");return s.settings}static async updateSettings(t,a,i){const s=t==="employer"?`/v1/settings/employer/${a}`:`/v1/settings/applicant/${a}`,c=await Y.put(s,i);if(!c||!c.updatedSettings)throw new Error("Failed to update settings: No response from server.");return c.updatedSettings}}const O6={data:null,isLoading:!1,isUpdating:!1,error:null},Fu=Ne("settings/fetch",async(r,{getState:t,rejectWithValue:a})=>{const{auth:i}=t();if(!i.userId||!i.role)return a("No auth");try{return await C1.getSettings(i.role,i.userId)}catch(s){return a(s.message)}}),hd=Ne("settings/update",async(r,{getState:t,rejectWithValue:a})=>{const{auth:i,settings:s}=t();if(!i.userId||!i.role||!s.data)return a("No data");try{const c={...s.data,...r};return await C1.updateSettings(i.role,i.userId,c)}catch(c){return a(c.message)}}),F6=Yr({name:"settings",initialState:O6,reducers:{},extraReducers:r=>{r.addCase(Fu.pending,t=>{t.isLoading=!0}).addCase(Fu.fulfilled,(t,a)=>{t.isLoading=!1,t.data=a.payload}).addCase(Fu.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload}).addCase(hd.pending,t=>{t.isUpdating=!0}).addCase(hd.fulfilled,(t,a)=>{t.isUpdating=!1,t.data=a.payload}).addCase(ba.fulfilled,(t,a)=>{a.payload.settings&&(t.data=a.payload.settings)}).addCase(go.fulfilled,(t,a)=>{a.payload.user&&a.payload.user.settings&&(t.data=a.payload.user.settings)})}}),U6=F6.reducer,z6="carrier-skills-2026-ai",B6="Навыки 2026: как быть востребованным в эпоху ИИ и не потерять работу",V6="Какие навыки прокачивать в 2026, чтобы быть востребованным и не «выпасть» из рынка из-за ИИ: постановка задачи, работа с промптами, критическое мышление, процессы, креатив и обучение.",H6="25.01.2026",W6="10 мин",K6="https://storage.ht-platform.ru/public/articles/1/article-photo-01.png",Y6="career",q6=["#навыки-карьеры-2026","#ИИ-для-работы","#не-потерять-работу-в-2026"],G6={title:"Навыки 2026: как быть востребованным в эпоху ИИ и не потерять работу",description:"Какие навыки прокачивать в 2026, чтобы быть востребованным и не “выпасть” из рынка из-за ИИ: постановка задачи, работа с промптами, критическое мышление, процессы, креатив и обучение.",keywords:["карьера 2026","soft skills","искусственный интеллект","промпт-инжиниринг","поиск работы"]},Q6={id:"akirin",name:"Алексей Кирин",role:"Основатель HT Platform",avatar:"https://storage.ht-platform.ru/public/staff/kir-photo.jpg"},Z6=[{id:"intro",title:"Главная идея: ИИ усиливает тех, кто умеет им управлять"},{id:"skills-list",title:"7 навыков, которые стоит прокачивать в 2026 (для соискателей):",items:[{id:"skill-1",title:"Навык №1. Умение формулировать задачу"},{id:"skill-2",title:"Навык №2. Навык «говорить с ИИ»"},{id:"skill-3",title:"Навык №3. Критическое мышление"},{id:"skill-4",title:"Навык №4. Работа с ИИ как процесс"},{id:"skill-5",title:"Навык №5. Творческое мышление"},{id:"skill-6",title:"Навык №6. Перепрофилирование и синтез"},{id:"skill-7",title:"Навык №7. Умение учиться постоянно"}]},{id:"practice-plan",title:"План на 14 дней: короткая практика, которая прокачивает"},{id:"faq",title:"FAQ"},{id:"sources",title:"Источники"}],J6=JSON.parse(`[{"id":"main-image","type":"image","src":"https://storage.ht-platform.ru/public/articles/1/article-photo-02.png"},{"id":"intro","type":"text","title":"Главная идея: ИИ усиливает тех, кто умеет им управлять","paragraphs":["ИИ уже встроен в повседневную работу: от поиска информации, анализа до подготовки к интервью. Есть мнение, что скоро ИИ нас всех заменит. Я считаю, что не стоит поддаваться панике, а лучше разобраться, как Искусственный интеллект может вас усилить, и прокачать эти навыки. Эта же логика звучит в видео блогера Марины Могилко из Кремневой долины, собранном по интервью с лидерами индустрии: фаундеры LinkedIn и Perplexity AI, CEO Microsoft AI и GitHub.","Ниже — 7 навыков, которые могут помочь не только не потерять работу, а получить X2 по зарплате – да, такие кейсы уже есть на рынке. Это практический гайд как быстрее учиться, лучше проходить собеседования, делать сильнее резюме/портфолио и повышать ценность на рынке."]},{"id":"main-image-2","type":"image","src":"https://storage.ht-platform.ru/public/articles/1/article-photo-03.png"},{"id":"skill-1-intro","type":"textWithImage","mainTitle":"7 навыков, которые стоит прокачивать в 2026","title":"Навык №1. Умение формулировать задачу (problem framing)","text":["ИИ бесполезен, если вы не понимаете, что именно хотите улучшить. Чёткая постановка проблемы — это навык мышления, а не «фишка ИИ».","Для поиска работы это особенно важно: резюме, кейс, сопроводительное письмо, подготовка к интервью — всё начинается с ясной цели и критериев качества."],"imageSrc":"https://storage.ht-platform.ru/public/articles/1/article-photo-04.png","imagePosition":"right"},{"id":"skill-1-accent","type":"accent","title":"Как прокачать:","variant":"dark","items":["Шаблон на 2 минуты: Контекст → Цель → Критерии качества → Ограничения.","Практика: перепишите свою текущую задачу (например, улучшить резюме) в двух версиях: «как обычно» и «по шаблону». Сравните качество ответа ИИ."]},{"id":"skill-1-prompt","type":"code","title":"Промпт-шаблон","content":"Контекст: я ищу работу на позицию <роль>. Вот вакансия: <текст>.\\nЦель: улучшить моё резюме так, чтобы повысить шанс на приглашение.\\nКритерии качества: конкретные достижения, релевантные слова из вакансии, ясная структура.\\nОграничения: 1 страница, без воды, язык — деловой.\\nСделай 10 правок и объясни каждую (что было не так → как стало лучше).","copyable":true},{"id":"skill-2","type":"textWithImage","title":"Навык №2. Навык «говорить с ИИ»: промпты, уточнения, итерации","text":["Сильный результат почти всегда получается не с первого запроса. Ключ — итерации: уточнить задачу, попросить варианты, выбрать лучший.","Это особенно полезно при подготовке к собеседованиям и при упаковке опыта в резюме/портфолио."],"imageSrc":"https://storage.ht-platform.ru/public/articles/1/article-photo-05.png","imagePosition":"right"},{"id":"skill-2-accent","type":"accent","title":"Как прокачать:","variant":"dark","items":["Три усилителя: роль + формат; примеры; итерации («сначала задай вопросы, потом предложи варианты»).","Практика: сделайте 2 итерации для одного блока резюме — и сравните с «одним запросом»."]},{"id":"skill-2-prompt","type":"code","title":"Промпт-шаблон","content":"Ты — карьерный консультант. Сначала задай 7 вопросов, чтобы уточнить мой опыт и цель.\\nЗатем предложи 3 варианта сопроводительного письма: (1) очень короткое, (2) уверенное, (3) более 'человечное', но деловое.\\nВ конце: укажи 5 мест, где я звучу общими словами, и предложи конкретику.","copyable":true},{"id":"skill-3","type":"textWithImage","title":"Навык №3. Критическое мышление и проверка: не верить ответу «на слово»","text":["ИИ регулярно ошибается: путает факты, выдумывает источники, уверенно предлагает неверные шаги. Поэтому навык №3 — проверка.","Для соискателя это про: проверку фактов о компании, требований вакансии, корректности рекомендаций по резюме и по подготовке к интервью."],"imageSrc":"https://storage.ht-platform.ru/public/articles/1/article-photo-06.png","imagePosition":"right"},{"id":"skill-3-accent","type":"accent","title":"Как прокачать:","variant":"dark","items":["Правило: минимум 2 независимых источника для факта + просить ИИ показать, откуда вывод.","Практика: возьмите «совет» ИИ и попросите: (а) где он может ошибаться, (б) как проверить, (в) альтернативные версии."]},{"id":"skill-3-prompt","type":"code","title":"Промпт-шаблон","content":"Проверь свой ответ:\\n1) какие утверждения здесь могут быть неверны?\\n2) что нужно проверить в независимых источниках?\\n3) предложи 2 альтернативных варианта вывода.\\nОтвет оформи таблицей: утверждение → риск ошибки → как проверить.","copyable":true},{"id":"skill-4","type":"textWithImage","title":"Навык №4. Организация работы с ИИ как процесса, а не разовый «вопрос-ответ»","text":["Самые эффективные используют ИИ как часть процесса: «сначала собрать данные → затем структурировать → затем улучшить → затем проверить».","Для соискателя это экономит часы: подготовка к интервью, портфолио, тестовые задания, анализ вакансии — всё можно разложить на цепочку."],"imageSrc":"https://storage.ht-platform.ru/public/articles/1/article-photo-07.png","imagePosition":"right"},{"id":"skill-4-accent","type":"accent","title":"Как прокачать:","variant":"dark","items":["Соберите свою «цепочку соискателя»: вакансия → требования → ваш опыт → пробелы → план подготовки → репетиция интервью.","Практика: один раз собрать цепочку — потом переиспользовать под 10 вакансий."]},{"id":"skill-4-prompt","type":"code","title":"Промпт-шаблон","content":"Построй процесс подготовки к собеседованию по вакансии:\\n1) извлеки 10 ключевых требований,\\n2) сопоставь их с моим опытом (что есть/чего нет),\\n3) составь план подготовки на 7 дней,\\n4) подготовь 12 вопросов интервьюера и мои ответы в формате STAR,\\n5) добавь чек-лист проверки фактов и терминов.","copyable":true},{"id":"skill-5","type":"textWithImage","title":"Навык №5. Творческое мышление и выбор: «вкус» и контекст остаются у человека","text":["ИИ может нагенерить 20 вариантов. Но выбрать лучший под вашу ситуацию, стиль и аудиторию — это ваша работа.","Для соискателя это означает: не «копировать» письмо/резюме, а адаптировать под конкретную роль и компанию."],"imageSrc":"https://storage.ht-platform.ru/public/articles/1/article-photo-08.png","imagePosition":"right"},{"id":"skill-5-accent","type":"accent","title":"Как прокачать:","variant":"dark","items":["Просите ИИ генерировать варианты с разными стратегиями (например: «через достижения», «через мотивацию», «через ценность для команды»).","Практика: выбрать 1 стратегию и довести её до сильной версии — вместо 10 средних."]},{"id":"skill-5-prompt","type":"code","title":"Промпт-шаблон","content":"Сгенерируй 5 вариантов 'позиционирования' меня как кандидата на <роль>:\\n1) через результаты,\\n2) через скорость обучения,\\n3) через ответственность,\\n4) через продуктовый/клиентский фокус,\\n5) через командную работу.\\nЗатем оцени каждый по шкале 1-10 (релевантность вакансии, доказуемость, уникальность) и предложи лучший.","copyable":true},{"id":"skill-6","type":"textWithImage","title":"Навык №6. Перепрофилирование и синтез: одна идея → много форматов","text":["Одна работа может превращаться в портфолио, кейс, пост, презентацию, ответы для интервью — если вы умеете «переупаковывать».","Это особенно важно, когда опыта мало: вы показываете ценность через форму и ясность."],"imageSrc":"https://storage.ht-platform.ru/public/articles/1/article-photo-09.png","imagePosition":"right"},{"id":"skill-6-accent","type":"accent","title":"Как прокачать:","variant":"dark","items":["Возьмите один учебный/рабочий проект и сделайте из него: (а) 1-страничный кейс, (б) 5 буллетов в резюме, (в) 60-секундный питч.","Практика: повторить это 2-3 раза — и портфолио уже выглядит «взросло»."]},{"id":"skill-6-prompt","type":"code","title":"Промпт-шаблон","content":"У меня есть проект: <описание>.\\nСделай из него:\\n1) 1-страничный кейс (задача → действия → результат → цифры → вывод),\\n2) 5 bullet points для резюме,\\n3) короткий устный питч на 60 секунд,\\n4) список 10 вопросов интервьюера про этот проект и мои ответы.","copyable":true},{"id":"skill-7","type":"textWithImage","title":"Навык №7. Умение учиться постоянно: метанавык до 2030","text":["Навыки устаревают быстрее, чем раньше. Поэтому выигрывают те, кто умеет учиться самостоятельно и быстро перестраиваться.","Для соискателя это про системность: понятный план, маленькие циклы практики и регулярная обратная связь."],"imageSrc":"https://storage.ht-platform.ru/public/articles/1/article-photo-10.png","imagePosition":"right"},{"id":"skill-7-accent","type":"accent","title":"Как прокачать:","variant":"dark","items":["Сделайте систему «1 тема — 1 неделя — 1 результат»: не просто читать, а выпускать артефакт (кейс, демо, заметку, мини-проект).","Практика: каждые 7 дней — один измеримый результат, который можно добавить в резюме или портфолио."]},{"id":"skill-7-prompt","type":"code","title":"Промпт-шаблон","content":"Составь план обучения на 4 недели под цель: получить работу <роль>.\\nУсловия:\\n- 30 минут в день,\\n- каждую неделю должен быть измеримый результат (артефакт) для портфолио,\\n- включи проверку прогресса и самотест.\\nВыведи план таблицей: день → задача → навык из 7 → критерий готовности.","copyable":true},{"id":"calendar-image","type":"image","src":"https://storage.ht-platform.ru/public/articles/1/article-photo-11.png"},{"id":"practice-plan","type":"cardGrid","title":"План на 14 дней: практика (15–25 минут в день)","description":"Каждый день — конкретное упражнение и явная привязка к одному или нескольким навыкам из списка выше. Если времени меньше — делайте хотя бы 10 минут, но ежедневно.","items":[{"title":"День 1","text":"Возьми 1 вакансию и выпиши: цель отклика, 7 ключевых требований, критерии «сильного резюме» под эту вакансию.","tags":["Прокачивает навыки: №1"]},{"title":"День 2","text":"Перепиши заголовок и summary резюме под вакансию (2 версии). Попроси ИИ сравнить и выбрать лучшую по критериям.","tags":["Прокачивает навыки: №1, №5"]},{"title":"День 3","text":"Сделай 2 итерации промпта для улучшения одного раздела резюме (опыт/проекты): «вопросы → 3 варианта → финал».","tags":["Прокачивает навыки: №2"]},{"title":"День 4","text":"Проведи проверку фактов: 5 утверждений о компании/роли/требованиях — подтвердить в 2 источниках.","tags":["Прокачивает навыки: №3"]},{"title":"День 5","text":"Собери цепочку подготовки к интервью по вакансии (шаги 1-5: требования → опыт → пробелы → план → репетиция).","tags":["Прокачивает навыки: №4, №1"]},{"title":"День 6","text":"Сделай 8 ответов в формате STAR для типовых вопросов (достижения/конфликт/ошибка/инициатива).","tags":["Прокачивает навыки: №4, №2"]},{"title":"День 7","text":"Репетиция: сгенерируй 12 вопросов интервьюера и пройди мини-интервью (ответы вслух, 20 минут).","tags":["Прокачивает навыки: №2, №4"]},{"title":"День 8","text":"Выяви 5 «слабых мест» (где мало цифр/конкретики) и добавь доказательства: метрики, ссылки, артефакты.","tags":["Прокачивает навыки: №3, №1"]},{"title":"День 9","text":"Возьми 1 проект и переупакуй: 1-страничный кейс + 5 буллетов для резюме.","tags":["Прокачивает навыки: №6"]},{"title":"День 10","text":"Сделай 60-секундный питч о себе (2 версии): через результаты и через мотивацию. Выбери лучшую.","tags":["Прокачивает навыки: №5, №6"]},{"title":"День 11","text":"Собери «пакет отклика»: резюме + письмо + 3 тезиса ценности. Прогони через ИИ на ясность и убрать общие слова.","tags":["Прокачивает навыки: №2, №5, №1"]},{"title":"День 12","text":"Сделай симуляцию тестового: попроси ИИ дать задание по роли и оцени решение по чек-листу качества.","tags":["Прокачивает навыки: №4, №3"]},{"title":"День 13","text":"Построй недельный план до оффера: какие навыки закрываешь и каким артефактом это докажешь.","tags":["Прокачивает навыки: №7, №4"]},{"title":"День 14","text":"Ретроспектива: что реально улучшилось (резюме/кейсы/ответы)? Зафиксируй шаблоны промптов и процесс под следующие вакансии.","tags":["Прокачивает навыки: №7, №4, №2"]}]},{"id":"faq","type":"faq","items":[{"question":"Почему ИИ может “уволить” меня?","answer":"Больше хайп, но есть нюансы. ИИ повышает планку: рутинные задачи ускоряются, и ценность смещается к тем, кто умеет ставить задачи, проверять и доводить до результата. Если вы используете ИИ осознанно, вы становитесь быстрее и полезнее — это снижает риск быть “заменённым”."},{"question":"Какие навыки важнее всего прокачивать в 2026, если я ищу работу?","answer":"Начните с тройки: (1) формулировать задачу, (2) вести диалог с ИИ итерациями, (3) проверять и критически оценивать результат. Эти навыки усиливают остальные и дают быстрый прирост в резюме/интервью."},{"question":"Если я НЕ из IT?","answer":"Эти навыки не только для айтишников. Они про мышление и работу с информацией: формулировать, уточнять, проверять, структурировать. Начните с задач из вашей сферы (резюме, портфолио, письмо, анализ вакансии) — прогресс будет заметен быстро."},{"question":"Как использовать ИИ для подготовки к собеседованию без “зазубривания”?","answer":"Используйте ИИ как тренажёр: (а) пусть задаёт вопросы и усложняет, (б) пусть оценивает ответы по критериям, (в) пусть предлагает улучшения и просит примеры/цифры. Главное — говорить вслух и фиксировать 2–3 улучшения после каждой репетиции."},{"question":"Как проверить, что ИИ не “нафантазировал” советы?","answer":"Просите указать, где он может ошибаться, и давайте ему задачу составить план проверки. Для фактов — 2 независимых источника. Для рекомендаций — сравните 2 альтернативных версии и оцените их по вашим критериям."},{"question":"Какие результаты стоит показать работодателю, если опыта мало?","answer":"Показывайте артефакты: 1-страничные кейсы проектов, демо, заметки, краткие разборы задач, портфолио. Навык “одна идея → много форматов” помогает выглядеть сильнее даже при небольшом опыте. А также определите свои SOFT SKILLS в нашем сервисе, это поможет дать хорошую опору даже без опыта."},{"question":"Сколько времени нужно, чтобы почувствовать эффект?","answer":"Обычно 7–14 дней регулярной практики дают заметный результат: резюме становится конкретнее, ответы на интервью — структурнее, отклики — точнее. План из этой статьи рассчитан на 15–25 минут в день."}]},{"id":"sources","type":"references","title":"Источники","items":[{"title":"Marina Mogilko. “If I need to start over in 2026, I’d learn these 7 skills first” (YouTube).","link":"https://www.youtube.com/watch?v=9pfbGnuMNhk"},{"title":"World Economic Forum. The Future of Jobs Report 2025 — Skills outlook.","link":"https://www.weforum.org/publications/the-future-of-jobs-report-2025/"},{"title":"NIST. AI Risk Management Framework (AI RMF 1.0) — reliability and risk framing.","link":"https://www.nist.gov/itl/ai-risk-management-framework"},{"title":"Microsoft. Responsible AI / guidance on using AI systems and verification practices (overview).","link":"https://learn.microsoft.com/en-us/azure/ai-foundry/responsible-ai/openai/overview?view=foundry-classic"},{"title":"Google Search. Guidance on creating helpful, reliable, people-first content (search quality guidance).","link":"https://developers.google.com/search/docs/fundamentals/creating-helpful-content"},{"title":"OpenAI. Prompting / best practices for working with models (overview).","link":"https://platform.openai.com/docs/guides/prompt-engineering"}]}]`),X6={id:z6,title:B6,description:V6,createdAt:H6,readTime:W6,coverUrl:K6,category:Y6,tags:q6,seo:G6,author:Q6,toc:Z6,blocks:J6},eC="solo-frontend-developer-2026",tC="Один разработчик — весь фронтенд: проектирование, реализация и оптимизация интерфейса",rC="Практический опыт создания клиентской части масштабной HR-платформы с нуля до продакшена силами одного инженера. Выбор стека, адаптация FSD, работа с API и глобальный перехват ошибок.",nC="07.05.2026",aC="12 мин",oC="https://storage.ht-platform.ru/public/articles/2/article-photo-01.png",iC="skills",sC=["#frontend","#React","#FSD","#архитектура","#опыт"],lC={title:"Один разработчик — весь фронтенд: проектирование, реализация и оптимизация",description:"Как одному разработчику спроектировать, написать и задеплоить масштабный фронтенд на React. Практические советы, архитектура FSD, работа с API и оптимизация.",keywords:["frontend","SPA","React","TypeScript","Vite","Feature-Sliced Design","Redux","Cypress","оптимизация","деплой"]},cC={id:"gnozdrin",name:"Георгий Ноздрин",role:"React frontend-разработчик продукта HT Platform",avatar:"https://storage.ht-platform.ru/public/staff/noz-photo.PNG"},uC=[{id:"abstract",title:"Аннотация"},{id:"intro",title:"Введение"},{id:"main-stages",items:[{id:"checklist",title:"1. Что было важно принять в начале"},{id:"stack",title:"2. Стек технологий"},{id:"structure",title:"3. Структура проекта"},{id:"apiclient",title:"4. ApiClient и история про Refresh Token"},{id:"errors",title:"5. Глобальный перехват ошибок"},{id:"routing",title:"6. Маршрутизация по ролям"},{id:"ui",title:"7. Укрощение UI и ModalManager"},{id:"testing",title:"8. Тестирование"},{id:"deploy",title:"9. Деплой и проверка боем"}]},{id:"conclusion",title:"Заключение"},{id:"references",title:"Список литературы и ресурсы"}],dC=JSON.parse(`[{"id":"main-image","type":"image","src":"https://storage.ht-platform.ru/public/articles/2/article-photo-02.png"},{"id":"abstract","type":"text","title":"Аннотация","paragraphs":["Работать одному над фронтендом масштабного проекта — это не только вызов, но и абсолютная архитектурная свобода. С другой стороны — это риск утонуть в техническом долге и не довести продукт до релиза.","В этой статье я делюсь практическим опытом создания клиентской части HR-платформы (соискатели, работодатели, вакансии, чаты) с нуля до продакшена силами одного инженера. Я расскажу о выборе стека, адаптации Feature-Sliced Design, укрощении модальных окон, работе с API и глобальном перехвате ошибок. В финале поделюсь результатами «боевого крещения» архитектуры при наплыве пользователей."]},{"id":"intro","type":"text","title":"Введение — почему это интересно","paragraphs":["Существует стереотип, что для создания сложного веб-приложения обязательно нужна команда: тимлид для архитектуры, мидлы для бизнес-логики и тестировщик. Но реалии таковы, что иногда весь фронтенд ложится на плечи одного человека.","Передо мной стояла задача: написать клиентскую часть HR-платформы. Продукт включал личные кабинеты кандидатов и работодателей, систему публикации и импорта вакансий, встроенный чат и информационные разделы (статьи, публикации).","Работать одному круто — ты сам себе архитектор, никто не спорит о код-стайле на часовых митингах. Но цена ошибки возрастает кратно. Выберешь плохую структуру папок — и через три месяца проект превратится в легаси. В этой статье я хочу поделиться тем, какие привычки и шаблоны помогли довести проект до релиза, а чего стоило избегать."]},{"id":"checklist","type":"text","title":"1. Что было важно принять в начале (мой чек-лист)","paragraphs":["Перед тем как написать первую строчку кода, я составил для себя жесткие правила игры. Работая в одиночку, дисциплина заменяет код-ревью от старших коллег."]},{"id":"checklist-image","type":"image","src":"https://storage.ht-platform.ru/public/articles/2/article-photo-03.png"},{"id":"checklist-list","type":"list","ordered":true,"items":["Выбрать строгую структуру проекта (FSD) и не отступать от нее.","Сделать единый API-слой для всех HTTP-вызовов (никаких fetch внутри компонентов).","Перехватывать все серверные ошибки глобально, чтобы не писать try/catch на каждой странице.","Настроить E2E-тесты для критических путей (я один, я не смогу тестировать руками всё).","Максимально автоматизировать деплой."]},{"id":"stack","type":"text","title":"2. Стек технологий — почему именно он","paragraphs":["Когда ресурсов мало, инструменты должны помогать, а не вставлять палки в колеса. Я остановился на проверенном и современном наборе:"]},{"id":"stack-image","type":"image","src":"https://storage.ht-platform.ru/public/articles/2/article-photo-04.png"},{"id":"stack-list","type":"list","ordered":false,"items":["React + TypeScript. TypeScript в строгом режиме здесь не просто дань моде. Для соло-разработчика это бесплатный тестировщик, который ловит 80% глупых опечаток (вроде user.id вместо user.uuid) еще на этапе компиляции.","Vite. После тяжелого Webpack сборка на Vite ощущается как глоток свежего воздуха. Мгновенные перезапуски и HMR экономят десятки минут каждый день. Конфиг vite.config.ts занимает 30 строк и закрывает все потребности.","Redux (RTK). Встроенного Context API не хватит для сложного приложения с чатами и ролями, он провоцирует лишние рендеры. Redux Toolkit дал мне предсказуемый контейнер состояния.","Cypress. Быстрая уверенность в работоспособности сценариев (логин, профиль, создание вакансии).","Docker + Nginx. Готовый и пуленепробиваемый рецепт для стабильного продакшена."]},{"id":"structure","type":"text","title":"3. Структура проекта (Feature-Sliced Design на практике)","paragraphs":["В начале пути всегда есть соблазн сложить все компоненты в папку components. Для пет-проекта это работает, для большой HR-платформы — это путь в ад. Я адаптировал методологию Feature-Sliced Design.","Мой проект разделен на четкие слои:"]},{"id":"structure-image","type":"image","src":"https://storage.ht-platform.ru/public/articles/2/article-photo-05.png","caption":"Рисунок 1. Архитектура слоев приложения"},{"id":"structure-list","type":"list","ordered":false,"items":["app/ — точка входа: инициализация App.tsx, настройка store, провайдеры (with-providers.tsx).","pages/ — маршруты. Они почти не содержат логики, их задача — просто собрать страницу из фичей.","widgets/ — крупные агрегаты UI (Header, Footer, SideBar, ModalManager).","features/ — конкретные бизнес-флоу (авторизация, чат, импорт вакансий).","entities/ — доменные сущности (vacancy, candidate, employer). Внутри каждой сущности лежат свои папки: api, model, ui, service.","shared/ — «глупый» переиспользуемый код: UI-библиотека (кнопки, инпуты), глобальный ApiClient, константы."]},{"id":"structure-conclusion","type":"text","paragraphs":["Это дает понятные границы. Изменение логики карточки вакансии в entities/vacancy физически не может сломать процесс регистрации в features/auth."]},{"id":"apiclient","type":"text","title":"4. ApiClient и история про Refresh Token","paragraphs":["Разбрасывать запросы к серверу по всем компонентам — ошибка. Я создал единый ApiClient.ts в слое shared. Любой HTTP-запрос в приложении проходит через него."]},{"id":"apiclient-accent","type":"accent","variant":"dark","title":"Реальная проблема, с которой я столкнулся:","paragraphs":["Однажды баг с race condition (состоянием гонки) в refresh-token начал сводить меня с ума. Когда у пользователя истекал access_token, страница отправляла сразу 4 параллельных запроса (за профилем, вакансиями, чатами). Все 4 получали 401 ошибку, и приложение 4 раза пыталось обновить токен, сбрасывая сессию."]},{"id":"apiclient-solution","type":"textWithImage","title":"Как я это решил:","text":["Помощь пришла от перехода на очередь запросов. Прямо в ApiClient я добавил логику: если один запрос ловит 401, клиент переходит в статус «обновляю токен», а все остальные запросы замораживаются в массив.","Как только токен обновлен, замороженные запросы выполняются с новым токеном. Минус — чуть больше кода, плюс — ноль вылетов у пользователей."],"imageSrc":"https://storage.ht-platform.ru/public/articles/2/article-photo-06.png","imagePosition":"left"},{"id":"errors","type":"text","title":"5. Глобальный перехват ошибок (чтобы не писать try/catch)","paragraphs":["Писать обработку ошибок в каждом компоненте мучительно. Я вынес это в Redux, написав errorListenerMiddleware.ts.","Этот middleware слушает все экшены, которые завершились с ошибкой (rejected). Если сервер отвечает 403 (Нет прав) — всплывает глобальный Toast. Если 500 — Toast «Сервер временно недоступен». А если 401 — пользователя мягко редиректит на логин.","Это сделало компоненты страниц невероятно чистыми: они просто дергают данные из API и рендерят их. О том, что сеть может отвалиться, думает errorListenerMiddleware."]},{"id":"errors-image","type":"image","src":"https://storage.ht-platform.ru/public/articles/2/article-photo-07.png","caption":"Рисунок 2. Типичный поток данных и отлов ошибок"},{"id":"routing","type":"textWithImage","title":"6. Маршрутизация по ролям и ленивая загрузка","text":["Интерфейсы соискателя и работодателя кардинально отличаются. Сердцем маршрутизации стал мой компонент RoleBasedRoute.tsx.","Он оборачивает роуты и проверяет роль юзера из стора. Если соискатель случайно попытается зайти по ссылке /candidates, роутер мгновенно перехватит его и сделает редирект, не дав приложению отправить невалидные запросы на сервер."],"imageSrc":"https://storage.ht-platform.ru/public/articles/2/article-photo-08.png","imagePosition":"right"},{"id":"routing-accent","type":"accent","variant":"dark","paragraphs":["UX-совет: показывайте пользователю только те действия, которые ему разрешены, вместо того чтобы бить его по рукам всплывающими окнами «Ошибка доступа» постфактум."]},{"id":"routing-extra","type":"text","paragraphs":["Также я активно использовал Code-Splitting (React.lazy). Модули работодателя физически не загружаются в браузер соискателя, что сильно уменьшило начальный бандл."]},{"id":"ui","type":"text","title":"7. Укрощение UI: Стили и ModalManager","paragraphs":["Модальные окна — вечная боль фронтенда. Если каждый компонент рендерит свою модалку, начинаются конфликты z-index. Я решил это централизованно: создал ModalManager в слое widgets."]},{"id":"ui-image","type":"image","src":"https://storage.ht-platform.ru/public/articles/2/article-photo-09.png"},{"id":"ui-more","type":"text","paragraphs":["В Redux хранится стейт activeModalType. Вызвать окно редактирования профиля можно из любой глубины приложения одной строкой: dispatch(openModal('EDIT_PROFILE')). ModalManager видит изменение стейта и рендерит нужный попап через React Portals поверх всего приложения. Чисто и элегантно.","Стили лежат в двух местах: src/styles/* и index.css отвечают за глобальные токены (переменные цветов, шрифтов), а специфика страниц изолирована в CSS Modules (например, contestInstructionsPage.module.css)."]},{"id":"testing","type":"textWithImage","title":"8. Тестирование: Какой охват нужен одному разработчику?","text":["Писать тесты одному кажется потерей времени, пока ты не сломаешь прод. Я выбрал компромисс: юнит-тесты только для сложной бизнес-логики, а основное время — на E2E в Cypress.","В папке cypress/e2e/ лежат сценарии, которые прокликивают критичные пути: регистрация, поиск вакансии, успешный отклик, создание вакансии работодателем.","Если эти тесты зеленые, я уверен, что ядро продукта работает. Плюс строгий ESLint и commitlint для гигиены кода. Эти выходные, потраченные на Cypress, окупились сполна при регрессионном тестировании крупных фичей."],"imageSrc":"https://storage.ht-platform.ru/public/articles/2/article-photo-10.png","imagePosition":"right"},{"id":"deploy","type":"text","title":"9. Деплой и проверка боем (Стресс-тест)","paragraphs":["Я терпеть не могу деплоить руками. В корне проекта лежит Dockerfile, использующий multi-stage сборку. Сначала стартует Node, запускает npm run build через Vite, а затем берет легкий образ Nginx и подкладывает туда готовую папку dist. Файл nginx.conf настроен на отдачу index.html и сжатие статики."]},{"id":"deploy-image","type":"image","src":"https://storage.ht-platform.ru/public/articles/2/article-photo-11.png","caption":"Рисунок 3. Процесс сборки и деплоя контейнера"},{"id":"stress-test","type":"text","title":"История из продакшена","paragraphs":["Теория архитектуры — это прекрасно, но настоящая проверка происходит в бою. На сегодняшний день на платформе успешно зарегистрировано уже более 2 000 пользователей.","Но главное крещение архитектуры состоялось, когда платформа выступила площадкой для масштабного профильного конкурса. В час X мы получили резкий наплыв: около 600 человек одновременно ринулись на сайт. Они читали инструкции, заполняли профили и откликались на вакансии и выполняли тестирование.","Для бэкенда это был огромный стресс. А фронтенд справился безупречно. Поскольку мы использовали статический деплой (SPA, отдаваемый через Nginx), генерация страниц вообще не требовала серверных процессорных мощностей. Nginx просто отдавал кэшированные статические файлы JS и CSS.","Те редкие API-запросы, которые в первые минуты падали по таймауту из-за перегрузки бекенда, мягко перехватывались нашим errorListenerMiddleware, показывая дружелюбные уведомления. Архитектура выдержала пик конкурса без единого сбоя на стороне клиента."]},{"id":"conclusion","type":"text","title":"Заключение — что взять с собой","paragraphs":["Написать сложный фронтенд в одиночку и довести его до продакшена — абсолютно реальная задача. Ключ к успеху не в бессонных ночах (хотя и в них тоже), а в строгой дисциплине."]},{"id":"conclusion-list","type":"list","title":"Мои главные выводы:","ordered":true,"items":["Структура важнее фичей. FSD спас проект от превращения в легаси.","Единые точки входа экономят время. ApiClient и errorListenerMiddleware освободили UI от сетевого бойлерплейта.","Не плодите модалки. Один ModalManager на все приложение решает 99% проблем с интерфейсом.","Тесты — не роскошь. E2E покрытие критичных путей спасает релизы, когда нет QA-инженера.","Слушайте пользователей. Иногда быстрая кнопка «Сохранить черновик» важнее идеальной анимации."]},{"id":"conclusion-outro","type":"text","paragraphs":["Созданная архитектура позволила запустить продукт в сжатые сроки. Она выдержала испытание реальной нагрузкой, и теперь, по мере роста продукта, мы можем легко масштабировать кодовую базу и подключать новых фронтендеров — проект к этому полностью готов."]},{"id":"references","type":"references","title":"Список литературы и ресурсы","items":[{"title":"Официальная документация React","link":"https://react.dev"},{"title":"Vite: Next Generation Frontend Tooling","link":"https://vitejs.dev"},{"title":"Feature-Sliced Design (FSD) Architectural Methodology","link":"https://feature-sliced.design"},{"title":"Документация Redux Toolkit","link":"https://redux-toolkit.js.org"},{"title":"Cypress End-to-End Testing","link":"https://www.cypress.io"},{"title":"Nginx Official Documentation","link":"https://nginx.org/en/docs"}]}]`),fC={id:eC,title:tC,description:rC,createdAt:nC,readTime:aC,coverUrl:oC,category:iC,tags:sC,seo:lC,author:cC,toc:uC,blocks:dC},pC="labor-market-career-2026-q1",hC="Рынок труда и карьера в 1 квартале 2026 года | Исследование HT Platform",mC="Аналитика рынка труда в 1 квартале 2026 года: динамика вакансий и резюме, hh.индекс, зарплатные предложения, карьерные планы россиян, роль ИИ и навыков в найме. Выводы и рекомендации для соискателей.",yC="22.05.2026",gC="8 мин",vC="https://storage.ht-platform.ru/public/articles/3/article-photo-01.png",wC="research",CC=["#рынок-труда-2026","#рынок-труда-рф-2026","#карьера-2026","#зарплаты-2026","#поиск-работы","#навыки-2026","#исследование-ht_platform"],_C={title:"Рынок труда и карьера в 1 квартале 2026 года | Исследование HT Platform",description:"Аналитика рынка труда в 1 квартале 2026 года: динамика вакансий и резюме, hh.индекс, зарплатные предложения, карьерные планы россиян, роль ИИ и навыков в найме. Выводы и рекомендации для соискателей.",keywords:["рынок труда 2026","карьера 2026","зарплаты 2026","ИИ в найме","навыки","hh.индекс","исследование"]},SC={id:"akirin",name:"Алексей Кирин",role:"Основатель HT Platform",avatar:"https://storage.ht-platform.ru/public/staff/kir-photo.jpg"},xC=[{id:"main-points",title:"Главные моменты исследования"},{id:"methodology",title:"Как мы анализировали данные"},{id:"market-ru",title:"1. Рынок труда РФ",items:[{id:"deficit",title:"Где дефицит кадров особенно заметен"},{id:"competition",title:"Где конкуренция выше"},{id:"demand",title:"Что происходит со спросом по ролям"}]},{id:"salaries",title:"2. Зарплаты и спрос"},{id:"career-moves",title:"3. Карьерное движение усилилось"},{id:"skills",title:"4. Навыки рулят"},{id:"hiring-process",title:"5. Процесс найма"},{id:"confirmed-signals",title:"Что в этой картине уже хорошо подтверждено, а что пока лучше считать сигналом"},{id:"conclusions",title:"Выводы"},{id:"sources",title:"Источники"}],EC=JSON.parse('[{"id":"intro","type":"text","title":"Рынок труда и карьера в 1 квартале 2026 года | Исследование","paragraphs":["Это исследование представляет собой аналитику рынка труда со стороны соискателей и работодателей как в РФ, так и за рубежом. Данные взяты из четырех разных групп источников с начала по середину мая 2026 года. Мы выделили сигналы для понимания, куда всё движется, чтобы помочь вам принять правильные решения по развитию своей карьеры."]},{"id":"image-02","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-02.png"},{"id":"main-points","type":"list","ordered":true,"title":"Главные моменты исследования","items":["Рынок в России НЕ стал одинаково сложным для всех. В марте 2026 года hh.индекс по России составил 11,4: активных резюме стало заметно больше, а вакансий — меньше, но дефицит кадров на массовых и прикладных ролях по-прежнему сохраняется. [1]","Наиболее выраженный дефицит заметен в розничной торговле и отдельных массовых специальностях: среди врачей, продавцов, администраторов магазинов и поваров. При этом высокая конкуренция среди соискателей наблюдается в маркетинге, ИТ, административных ролях, медиа, а также в стратегии, инвестициях и консалтинге. [1]","Основной спрос на российском рынке по-прежнему сосредоточен в рабочем персонале, продажах, производстве, строительстве, транспорте и логистике. На эти сферы приходится около двух третей вакансий на hh. [1]","Зарплатная гонка замедлилась, но не закончилась. По данным Работа.ру за 1 квартал 2026, самые высокие средние предложения были в транспорте и логистике, строительстве и производстве; при этом в ряде отраслей годовой рост предложений уже не такой быстрый, как раньше. [2]","Для кандидатов это означает сдвиг: на части рынка важнее уже не отклики, а точнее показывать релевантность роли, навыков и опыта. Это особенно заметно там, где растет конкуренция. [1][2]","Международные платформы и HR‑технологии показывают общий вектор: работодатели все активнее используют ИИ (искусственный интеллект) в подборе как рабочий инструмент для отбора, сортировки откликов и ускорения воронки. [4][5][6][13]","При этом рынок навыков смещается не только в сторону технических знаний. LinkedIn прямо фиксирует рост спроса и на навыки работы с ИИ, и на человеческие навыки: управление людьми, координацию, наставничество, коммуникацию со стейкхолдерами. [7][8]","Найм по навыкам — то есть фокус на том, что человек реально умеет делать постепенно становится частью практики. Но этот переход пока идет неравномерно и зависит от рынка, роли и платформы. [7][9][10]","Для соискателя в 2026 году главная задача — не просто «усилить резюме», а сделать профиль более доказательным: показать навык, контекст, результат, уровень самостоятельности и способность учиться. Это соответствует тому, как меняются инструменты найма. [3][4][5][6]","Главная особенность рынка труда в 2026 году — наличие нескольких разных рынков внутри одного: массовый, инженерно-технический, офисный, цифровой, проектный, начинающий и старший."]},{"id":"image-03","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-03.png","caption":"Рисунок 1. Карта главных выводов исследования. Источники: сводка по данным [1]-[13]."},{"id":"methodology","type":"text","title":"Как мы анализировали данные","paragraphs":["В исследование включены четыре группы источников. Первая — российские площадки и их открытая аналитика: прежде всего hh Статистика и материалы Работа.ру; дополнительно — открытые материалы SuperJob, когда они дают полезный срез по предложениям работодателей. Вторая — международные карьерные и рекрутинговые платформы, где можно видеть, как меняется сама логика подбора: LinkedIn, Indeed, Jobvite, Metaview. Третья — крупные качественные обзоры и отчеты: OECD, World Economic Forum, SHRM. Четвертая — только те рыночные сигналы, которые помогают кандидату понять, как меняются требования к найму и развитию карьеры.","Обращаем ваше внимание: каждая площадка показывает своё. hh показывает прежде всего динамику своей базы вакансий и резюме. Работа.ру и SuperJob дают дополнительные сигналы, но часто на основе собственной выборки или отдельных сегментов. LinkedIn, Indeed и SHRM полезны как индикаторы направления, не стоит их полностью переносить на российский рынок. Поэтому в тексте разделены: твердые факты по данным, осторожные выводы и слабые сигналы."]},{"id":"image-04","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-04.png"},{"id":"market-ru","type":"text","title":"1. Рынок труда РФ","paragraphs":["Вакансий стало меньше, резюме — больше, но дефицит кадров никуда не исчез","По свежему краткому обзору hh за март 2026 года, hh.индекс по России составил 11,4. Этот показатель считается как отношение среднего числа активных резюме к среднему числу активных вакансий. По сравнению с мартом 2025 года среднее число активных вакансий на платформе снизилось на 27%, а среднее число активных резюме выросло на 41%. Медианная предлагаемая зарплата на hh составила 84 800 рублей, ожидаемая — 80 000 рублей. [1]"]},{"id":"image-05","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-05.png","caption":"Рисунок 2. Изменение активных вакансий и резюме на hh год к году. Источник: [1]."},{"id":"market-ru-cont","type":"text","paragraphs":["На первый взгляд это выглядит как резкий разворот в пользу работодателя. Но внутри рынка картина неравномерна. Уже тот же отчет hh показывает, что рынок разошелся на две части. В одних сферах конкуренция между соискателями действительно выросла. В других по‑прежнему не хватает людей, и работодатели продолжают бороться за закрытие вакансий. [1]","Важная деталь: около двух третей активных вакансий на hh по‑прежнему сосредоточены в сферах рабочего персонала, продаж и клиентского обслуживания, производства, строительства, транспорта и логистики, а также ИТ. Иными словами, базовый спрос рынка в 2026 году остается очень «прикладным». На уровне массового спроса это рынок жизненно важных ролей для функционирования бизнеса. [1]"]},{"id":"image-06","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-06.png","caption":"Рисунок 3. Структура активных вакансий и резюме по крупным профобластям. Источник: [1]."},{"id":"deficit","type":"text","title":"Где дефицит кадров особенно заметен","paragraphs":["По данным hh за март 2026 года, минимальные значения hh.индекса среди крупных профобластей были такими:"]},{"id":"deficit-list","type":"list","ordered":false,"items":["Розничная торговля: 3,8 (Дефицит)","Медицина, фармацевтика: 4,5 (Почти дефицит / напряженный рынок)","Производство, сервисное обслуживание: 7,2 (Умеренная конкуренция)","Продажи, обслуживание клиентов: 9,4 (Умеренная конкуренция)","Рабочий персонал: 9,8 (Умеренная конкуренция)"]},{"id":"deficit-after","type":"text","paragraphs":["Для чтения этого показателя hh использует такую шкалу: значения ниже 4 указывают на дефицит кадров, а выше 7,9 — на высокий уровень конкуренции среди соискателей. Поэтому розница в марте 2026 — это уже не просто «сложная сфера», а сфера явного кадрового дефицита. Медицина находится на границе дефицита. [1]"]},{"id":"image-07","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-07.png","caption":"Рисунок 4. hh.индекс по профобластям: от дефицита к высокой конкуренции. Источник: [1]."},{"id":"competition","type":"text","title":"Где конкуренция выше","paragraphs":["На другом полюсе рынка находятся функции, где резюме заметно больше, чем вакансий. На hh в марте 2026 года ИТ показали hh.индекс 22,9; финансы и бухгалтерия — 13,1; маркетинг, реклама и PR — 27,3; административный персонал — 17,4. Еще выше индексы у стратегии, инвестиций и консалтинга (46,1), искусства, развлечений и медиа (47,4), юристов (19,8). [1]"]},{"id":"akirin-quote","type":"accent","variant":"dark","title":"Алексей Кирин","paragraphs":["После общения с десятком работодателей из разных сфер, большинство компаний сокращают найм или полностью его останавливают. Некоторые – сосредотачиваются на экспертных позициях, подбирая опытных кандидатов точечно по определённым навыкам, пройденным курсам и сертификатам.","Это не означает, что в этих сферах «работы нет». Это означает, что работу найти становится всё сложнее. Растет необходимость точного позиционирования и релевантного опыта. [1]"]},{"id":"demand","type":"text","title":"Что происходит со спросом по ролям","paragraphs":["В топе по доле вакансий на hh в марте 2026 года были продавцы-консультанты и продавцы-кассиры (8,0% всех активных вакансий), менеджеры по продажам и работе с клиентами (7,2%), водители (3,6%), курьеры (3,3%), повара, пекари и кондитеры (2,9%), врачи (2,8%) и бухгалтеры (2,4%). Вес по‑прежнему держится на массовых и операционных ролях. [1]"]},{"id":"image-08","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-08.png","caption":"Рисунок 6. Топ-15 специализаций по доле активных вакансий. Источник: [1]."},{"id":"image-09","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-09.png","caption":"Рисунок 7. Конкуренция по топ-15 специализациям: hh.индекс. Источник: [1]."},{"id":"demand-cont","type":"text","paragraphs":["При этом заметнее всего за год на hh снизился спрос в сфере управления персоналом и тренингов: число активных вакансий здесь в марте было ниже на 39% год к году. Сильное снижение также видно по ИТ (–37%), юристам (–32%), стратегии, инвестициям и консалтингу (–31%), финансам и бухгалтерии (–31%), маркетингу и PR (–30%). [1]","Это сильный сигнал того, что часть белых воротничков и цифровых ролей стала наниматься более выборочно. На практике это означает более длинный цикл поиска и более строгий отбор, особенно у начинающих специалистов."]},{"id":"image-10","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-10.png"},{"id":"salaries","type":"text","title":"2. Зарплаты и спрос:\\nРынок перестал разгоняться одинаково во всех сферах","paragraphs":["Данные Работа.ру по первому кварталу 2026 года хорошо дополняют картину hh. По их анализу более 200 тысяч вакансий, самые высокие средние зарплатные предложения в России были в транспорте и логистике — 96,7 тысячи рублей в месяц, затем в строительстве и недвижимости — 94,4 тысячи, а также в производстве и агропроме — 91,6 тысячи. [2]"]},{"id":"image-11","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-11.png","caption":"Рисунок 8. Средние зарплатные предложения по сегментам в 1 квартале 2026. Источник: [2]."},{"id":"salaries-cont","type":"text","paragraphs":["Важно, что эта же публикация прямо показывает замедление «зарплатной гонки». В строительстве среднее предложение оказалось ниже уровня первого квартала 2025 года на 4%, в производстве и агропроме — на 2%. Это полезная поправка к популярному тезису «зарплаты везде только растут». В 2026 году это уже не так. [2]","При этом внутри рынка остаются точки ускоренного роста. По данным того же исследования, наибольший прирост предложений к 1 квартал 2025 года показали вакансии для студентов (+29%), ИТ (+25,1%), торговли (+20,2%), офисных и бизнес‑услуг (+13,7%), транспорта и логистики (+13,2%). [2] Эти цифры не стоит читать как универсальную норму по всей отрасли: сама Работа.ру отдельно оговаривает, что по ИТ сильная динамика в основном заметна в вакансиях с открытой зарплатой и чаще связана с начальным сегментом. На практике же подбор в IT, особенно джунов, стал гораздо более точечным и жестким. Конкуренция среди соискателей на одну позицию в крупной компании доходит до 300–400 откликов — это принципиально иной уровень рынка, где массовое повышение окладов уступило место отбору самых подходящих под конкретные задачи. Для большинства IT-специалистов зарплаты сегодня предлагают “по договоренности”, а не по верхней планке. [2]","Дополнительную проверку дает SuperJob. Их отраслевые индексы зарплат по Москве на 1 апреля 2026 года показывали годовой рост предложений в строительстве на 9,0%, в кадровой функции — на 9,1%, в банковской сфере — на 9,6%, в ИТ — на 5,0%. Это не всероссийская картина и не весь рынок, а индекс по Москве на фиксированном наборе профессий. Но как вспомогательный сигнал он подтверждает: зарплаты продолжают расти, только уже не одинаково быстро и не во всех сегментах. [11]"]},{"id":"image-12","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-12.png"},{"id":"career-moves","type":"text","title":"3. Карьерное движение усилилось. Люди готовы менять работу, сферу и формат занятости","paragraphs":["Работа.ру в исследовании с выборкой более 3 200 респондентов зафиксировала, что 54% россиян в 2026 году планируют изменения в карьере: 48% хотят сменить текущее место работы, 42% — попробовать новую сферу, 26% — перейти в более крупную и стабильную компанию, 23% — изменить график на более гибкий. [12]"]},{"id":"image-13","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-13.png","caption":"Рисунок 10. Карьерные планы россиян в 2026 году. Источник: [12]."},{"id":"career-moves-cont","type":"text","paragraphs":["Причины тоже показательные. 35% опрошенных говорят об отсутствии перспектив роста, 28% — о потере интереса к текущей сфере, 12% — о снижении востребованности своей профессии. То есть для многих людей рынок 2026 года — это не только поиск новой вакансии, но и попытка заново собрать траекторию: что делать дальше, где можно расти и какие навыки делать опорными. [12]","Показательно и то, как люди собираются перестраиваться. 28% планируют учиться по профессиональной литературе, еще 28% — через новые навыки и онлайн‑лекции, 24% — через стажировку, подработку или волонтерство в новой сфере, 21% — через специализированные онлайн‑курсы. Навыки работы с ИИ и автоматизацией хотят развивать 24% респондентов, а мягкие навыки — лидерство, коммуникацию, управление временем — 21%. [12]"]},{"id":"image-14","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-14.png","caption":"Рисунок 11. Как респонденты планируют перестраивать карьеру и навыки. Источник: [12]."},{"id":"career-moves-end","type":"text","paragraphs":["Это важный сигнал для кандидатов. В 2026 году рынок все чаще требует способности к перенастройке: смене роли, сегмента, уровня или даже сферы деятельности."]},{"id":"image-15","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-15.png"},{"id":"skills","type":"text","title":"4. Навыки рулят. Навыки становятся важнее названий должностей — но этот переход идет неравномерно","paragraphs":["Один из самых устойчивых международных выводов 2026 года — рост роли навыков. LinkedIn в своем отчете Skills on the Rise 2026 (навыки, которые быстрее всего растут в спросе) пишет, что работодатели все чаще смотрят не на диплом, должность в прошлом и «линейный» путь, а на то, что человек реально умеет делать. Их список строится на двух метриках: какие навыки пользователи чаще добавляют в профили и какие навыки чаще встречаются у тех, кого реально нанимают. [7]","В этом же отчете LinkedIn отдельно подчеркивает две группы навыков. Первая — навыки работы с ИИ: от понимания больших языковых моделей до более прикладных навыков внедрения и использования таких инструментов. Вторая — человеческие навыки: управление командой, наставничество, координация между функциями, публичное выступление, коммуникация со стейкхолдерами. [7]","Более широкий глобальный контекст дает LinkedIn Economic Graph: в США число вакансий, где требуется хотя бы базовая грамотность в работе с ИИ, выросло на 70% год к году. Одновременно 75% компаний в их глобальном исследовании говорят, что человеческие навыки стали еще важнее в эпоху ИИ. [8]","OECD добавляет к этому важную поправку: разные профессии не так изолированы друг от друга, как кажется. В Skills Outlook 2025 (обзор навыков и возможностей рынка труда) организация отмечает, что между многими ролями есть значительное перекрытие по навыкам. [9] Для кандидата это практический вывод: переход между смежными ролями часто реалистичнее, чем кажется, если правильно описать переносимые навыки и рабочий контекст.","World Economic Forum (Всемирный экономический форум) в Future of Jobs Report 2025 тоже фиксирует похожее направление: технологические изменения, демография, геоэкономическая неопределенность и «зеленый» переход одновременно меняют рынок работы, а работодатели ожидают быстрый рост как технических, так и когнитивных и социальных навыков. Отчет опирается на позицию более 1 000 крупных работодателей, представляющих свыше 14 миллионов работников в 55 экономиках. [10]"]},{"id":"image-16","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-16.png","caption":"Рисунок 12. Что меняется при переходе к найму по навыкам. Источники: [7], [9], [10]."},{"id":"image-17","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-17.png"},{"id":"hiring-process","type":"text","title":"5. Процесс найма. Найм меняется от потока откликов к качеству сигнала","paragraphs":["Кандидат видит рынок через вакансии и отклики. Работодатель — через воронку, скорость и качество отбора. В 2026 году эти две точки зрения все сильнее соединяются технологиями отбора. Это показывает повторяющийся сигнал из разных источников: работодатели пытаются быстрее отсечь нерелевантный поток и точнее находить подходящих людей. [3][4][5][6]","Indeed в 2026 году уже открыто продвигает ИИ‑помощника для найма: Talent Scout помогает ранжировать отклики, искать кандидатов, назначать интервью и давать рекомендации по вакансиям и оплате. Там же появилась отдельная функция Smart Screening — ИИ‑инструмент для автоматизации раннего отбора кандидатов. [4]","Отдельный рыночный сигнал по LinkedIn стоит трактовать осторожно. Продуктовые обновления платформы сами по себе не доказывают состояние всего рынка, поэтому в этой версии они не используются как самостоятельная основа вывода. Для оценки роли ИИ и навыков важнее данные LinkedIn Economic Graph, отчет Skills on the Rise и другие sources. [7][8]","SHRM в отчете State of AI in HR 2026 (отчет о применении ИИ в HR) показывает, что ИИ в HR уже используется в реальной практике, но пока не повсеместно: 46% организаций ожидают использование ИИ в HR в 2026 году, а чаще всего он применяется в подборе (27%), HR‑технологиях (21%) и обучении и развитии (17%). [5] Что это значит для кандидата: подбор становится более технологичным, чем многие к нему готовы."]},{"id":"image-18","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-18.png","caption":"Рисунок 13. Где ИИ используется в HR-практике. Источник: [5]."},{"id":"hiring-process-cont","type":"text","paragraphs":["Дополнительный отраслевой сигнал дает Jobvite и их свежие материалы 2026 года. Они пишут о росте числа заявок и падении доли действительно качественных кандидатов, а также о том, что рост объема откликов не приводит к росту качества. [6] Даже если не принимать их цифры как универсальную норму для всего рынка, направление понятно: работодатели все чаще борются с избытком слабых или плохо различимых откликов.","Параллельно усиливается интерес к повторному использованию уже собранных данных о кандидатах. Metaview в апреле 2026 года прямо пишет, что базы кандидатов слишком часто становятся «кладбищем» прошлых откликов и заметок, хотя должны ускорять новый найм и снижать объем лишнего сорсинга. [13] Для кандидата это означает простую вещь: один сильный, полно оформленный профиль и понятная история навыков начинают работать дольше одного отклика.","Практический смысл здесь такой: лучше работает профиль, в котором ясны роль, специализация, стек или инструменты, уровень задач и подтверждаемый результат."]},{"id":"image-19","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-19.png","caption":"Рисунок 14. Как меняется логика отбора кандидатов. Источники: [4], [5], [6], [13]."},{"id":"image-20","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-20.png"},{"id":"confirmed-signals-good","type":"list","title":"Хорошо подтверждено","ordered":false,"items":["Российский рынок в 2026 году стал заметно более конкурентным по части офисных, цифровых и части управленческих ролей, но массовый и прикладной сегмент сохраняет кадровый дефицит. Это прямо видно в hh.индексе по профобластям. [1]","Спрос по‑прежнему массово сосредоточен в ролях, связанных с продажами, рабочими профессиями, логистикой, производством, строительством, медициной и рядом прикладных функций. [1][2][13]","Найм действительно становится более технологичным: платформы и HR‑системы развивают ИИ‑отбор, сортировку откликов и повторное использование данных. [4][5][13]","Рост значения навыков — не только технических, но и человеческих — подтверждается одновременно LinkedIn, OECD и WEF. [7][8][9][10]"]},{"id":"image-21","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-21.png","caption":"Рисунок 15. Цикл карьерного развития: практическая схема на основе разделов о навыках, обучении и найме. Источники: [7]-[12]."},{"id":"confirmed-signals-careful","type":"list","title":"Лучше считать осторожным сигналом","ordered":false,"items":["Любые точные выводы о «средних зарплатах по рынку» без поправки на регион, формат вакансии, опыт и открытость зарплаты в публикации. У разных платформ сильно различается методика. [2][11]","Перенос глобальных цифр LinkedIn или Indeed на российский рынок без адаптации. Эти источники полезны как указатель направления, но не как прямой эквивалент российской ситуации. [3][4][7][8]","Слишком сильные формулировки о том, что ИИ уже радикально меняет все профессии. По надежным источникам видно скорее другое: ИИ уже меняет навыки, инструменты и процессы отбора быстрее, чем полностью перестраивает все профессии. [5][7][8][10]"]},{"id":"image-22","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-22.png","caption":"Рисунок 16. Сводная таблица: тренд и практический смысл для кандидата. Источники: [1]-[13]."},{"id":"image-23","type":"image","src":"https://storage.ht-platform.ru/public/articles/3/article-photo-23.png"},{"id":"conclusions-text","type":"text","title":"Выводы","paragraphs":["2026 год не выглядит ни «катастрофой для всех соискателей», ни «золотым временем возможностей для всех». Это год более резкого расслоения рынка. В массовых и прикладных ролях спрос остается высоким, но условия труда и требования могут быть жесткими. В офисных, цифровых и престижных ролях конкуренция выше, а отбор стал заметно строже. [1][2]","Если формулировать совсем коротко, рынок 2026 года просит от кандидата не только опыт, но и ясность: что человек умеет, в каком контексте он это делал, как быстро он адаптируется и чему уже научился в новой среде."]},{"id":"conclusions-list","type":"list","title":"Что можно порекомендовать кандидатам:","ordered":true,"items":["Стоит яснее и подробнее показывать опыт и уровень навыков, в том числе мягких навыков (soft skills).","Обучение в 2026 году становится частью стратегии поиска работы и карьерной устойчивости. Умение применять ИИ в работе может быть дополнительным плюсом, но его важно показывать через конкретные задачи. [7][8][9][10][12]","Используйте современные инструменты, ищите возможности там, где многие опускают голову. Мы рядом и обязательно поможем."]},{"id":"sources","type":"references","title":"Источники","items":[{"title":"hh.ru / hh Статистика. Краткий обзор рынка труда. Март 2026.","link":"https://stats.hh.ru/api/v1/monthly-report/f-983c2f9a-0568-4976-8b30-83bce102140b"},{"title":"Работа.ру и СберПодбор. Самые высокие зарплаты в 1 квартале 2026 предлагали в транспорте, строительстве и производстве."},{"title":"Reuters. LinkedIn AI hiring agents and recruiting automation, 2026.","link":"https://www.reuters.com/business/linkedins-ai-hiring-agents-track-450-million-yearly-revenue-2026-04-29/"},{"title":"Indeed. What’s new: product and feature updates.","link":"https://www.indeed.com/employers/whats-new"},{"title":"SHRM. The State of AI in HR 2026.","link":"https://www.shrm.org/topics-tools/research/state-of-ai-hr-2026/full-report"},{"title":"Jobvite. Early Screening in the AI Era: 5 Shifts Hiring Teams Can’t Ignore."},{"title":"LinkedIn. Skills on the Rise: The Fastest-Growing Skills in 2026."},{"title":"LinkedIn. A New World of Work: Global Labor Market Rotates, Not Retreats."},{"title":"OECD. Skills Outlook 2025: From skills to labour market opportunities.","link":"https://www.oecd.org/en/publications/oecd-skills-outlook-2025_b8c0b01d-en.html"},{"title":"World Economic Forum. The Future of Jobs Report 2025.","link":"https://www.weforum.org/publications/the-future-of-jobs-report-2025/"},{"title":"SuperJob. Отраслевой обзор зарплат 2026."},{"title":"Работа.ру и «Школа 21». 54% россиян намерены изменить карьерную траекторию в новом году."},{"title":"Metaview. Candidate database: how to turn your recruiting data into a hiring advantage.","link":"https://www.metaview.ai/resources/blog/candidate-database"},{"title":"Работа.ру и СберПодбор. Работодатели назвали самые востребованные профессии 2026 года."},{"title":"OECD. Employment Outlook 2025 press release.","link":"https://www.oecd.org/en/publications/oecd-employment-outlook-2025_194a947b-en.html"}]}]'),kC={id:pC,title:hC,description:mC,createdAt:yC,readTime:gC,coverUrl:vC,category:wC,tags:CC,seo:_C,author:SC,toc:xC,blocks:EC},TC="spief-2026-labor-market-career",IC="ПМЭФ 2026 и рынок труда в РФ: главные сигналы и практические выводы для карьеры",bC="ПМЭФ 2026 дал важные сигналы о рынке труда: ИИ меняет навыки, вакансий стало меньше, конкуренция выросла. Разбираем данные и даём практические рекомендации для соискателей, тех, кто меняет профессию, и работодателей.",PC="10.06.2026",RC="12 мин",AC="https://storage.ht-platform.ru/public/articles/4/article-photo-01.png",NC="research",LC=["#ПМЭФ-2026","#рынок-труда-рф","#поиск-работы-2026","#карьера","#дефицит-кадров"],jC={title:"ПМЭФ 2026 и рынок труда в РФ: выводы для тех, кто ищет работу или планирует карьеру | HT Platform",description:"ПМЭФ 2026 дал важные сигналы о рынке труда: ИИ меняет навыки, вакансий стало меньше, конкуренция выросла. Разбираем данные и даём практические рекомендации для соискателей, тех, кто меняет профессию, и работодателей.",keywords:["пмэф 2026 рынок труда","поиск работы 2026","ии заменит профессии","смена профессии 2026","первая работа 2026","зарплаты 2026","дефицит кадров 2026"]},MC={id:"akirin",name:"Алексей Кирин",role:"Основатель HT Platform",avatar:"https://storage.ht-platform.ru/public/staff/kir-photo.jpg"},DC=[{id:"intro",title:"Вступление"},{id:"section-1",title:"1. Что происходит на рынке труда: официальная картина и то, что за ней стоит",items:[{id:"section-1-1",title:"1.1 Рекордная занятость — это правда. Но не вся"},{id:"section-1-2",title:"1.2 hh.индекс: конкуренция в офисных нишах на многолетних максимумах"},{id:"section-1-3",title:"1.3 Скрытая занятость"}]},{id:"section-2",title:"2. ИИ и профессии: что на самом деле меняется",items:[{id:"section-2-1",title:"2.1 Меняются задачи, а не профессии"},{id:"section-2-2",title:"2.2 40% профессий — в зоне низкого риска от ИИ"},{id:"section-2-3",title:"2.3 12–18 месяцев — реальный срок освоения нового навыка"}]},{id:"section-3",title:"3. Что это значит для соискателей: карта возможностей и рисков",items:[{id:"section-3-1",title:"3.1 Не один рынок — а два разных рынка"},{id:"section-3-2",title:"3.2 Почему поиск работы занимает дольше — и что с этим делать"},{id:"section-3-3",title:"3.3 Смотрите шире столицы и привычных форматов"}]},{id:"section-4",title:"4. Молодые специалисты и выпускники: новые правила игры",items:[{id:"section-4-1",title:"4.1 Хорошая новость: трудоустройство молодёжи выросло"},{id:"section-4-2",title:"4.2 Барьеры первого входа: что реально мешает"},{id:"section-4-3",title:"4.3 Что реально помогает при первом входе"}]},{id:"section-5",title:"5. Для работодателей и HR: что говорит ПМЭФ и что с этим делать",items:[{id:"section-5-1",title:"5.1 Производительность отстаёт от зарплат — и это проблема"},{id:"section-5-2",title:"5.2 Автоматизация: три барьера, о которых говорили на ПМЭФ"},{id:"section-5-3",title:"5.3 Инклюзивный найм — стратегический ресурс"},{id:"section-5-4",title:"5.4 Практические выводы для HR"}]},{id:"section-6",title:"6. Пять практических выводов: что делать прямо сейчас",items:[{id:"section-6-1",title:"6.1 Если вы ищете работу прямо сейчас"},{id:"section-6-2",title:"6.2 Если думаете о смене профессии"},{id:"section-6-3",title:"6.3 Если вы студент или молодой специалист"},{id:"section-6-4",title:"6.4 Если планируете обучение и развитие"},{id:"section-6-5",title:"6.5 Для работодателей и HR"}]},{id:"section-7",title:"7. Как разобраться в своих сильных сторонах — и зачем это делать сейчас"},{id:"conclusion",title:"Заключение: что остаётся после ПМЭФ 2026"},{id:"sources",title:"Источники и методология"}],$C=JSON.parse('[{"id":"intro","type":"text","paragraphs":["Каждый год ПМЭФ (Петербургский международный экономический форум) собирает министров, топ-менеджеров, экспертов и экономистов. Официальные заявления звучат уверенно: рекордная занятость, рост зарплат, новые возможности благодаря ИИ. Но за этими тезисами стоят цифры, которые требуют более внимательного взгляда.","Что мы наблюдаем в 2026 году: вакансий стало меньше, конкуренция среди соискателей выросла, малый бизнес сжимается, а рынок труда остаётся глубоко неоднородным. Одни профессиональные области испытывают острый дефицит кадров. Другие — переизбыток соискателей.","Эта статья — независимый аналитический взгляд HT Platform: на что из услышанного на ПМЭФ 2026 стоит обратить внимание человеку, который ищет работу, думает о смене профессии или хочет осознанно строить карьеру. Мы сопоставили официальные тезисы с данными Росстата, hh.ru, Минтруда и независимых аналитиков."]},{"id":"intro-accent","type":"accent","variant":"light","paragraphs":[["В предыдущем исследовании HT Platform ",{"type":"link","text":"«Рынок труда и карьера в 1 квартале 2026 года»","href":"/blog/labor-market-career-2026-q1"}," мы уже фиксировали тревожные сигналы: рост конкуренции в офисных нишах, замедление найма, сжатие числа активных вакансий. ПМЭФ 2026 эти тенденции подтвердил — и добавил новые."]]},{"id":"section-1","type":"text","title":"1. Что происходит на рынке труда: официальная картина и то, что за ней стоит","paragraphs":[]},{"id":"section-1-1","type":"text","title":"1.1 Рекордная занятость — это правда. Но не вся","paragraphs":["На пленарном заседании ПМЭФ 5 июня Владимир Путин констатировал: безработица в России достигла исторического минимума — 2,2% по методологии МОТ (Международная организация труда). Вице-премьер Татьяна Голикова уточнила: на каждого зарегистрированного безработного сейчас приходится около 4,4 вакансии. Это действительно рекордные показатели."]},{"id":"image-2-2","type":"image","src":"https://storage.ht-platform.ru/public/articles/4/article-photo-02.png"},{"id":"section-1-1-text-after","type":"text","paragraphs":["Но за этой цифрой скрывается важная деталь: рынок труда в России глубоко неоднороден. Дефицит кадров остро ощущается в производстве, медицине, торговле, строительстве и логистике. В офисных профессиях — маркетинге, ИТ, консалтинге, административном управлении — ситуация противоположная: конкуренция за вакансии выросла кратно."]},{"id":"section-1-2","type":"text","title":"1.2 hh.индекс: конкуренция в офисных нишах на многолетних максимумах","paragraphs":["По данным hh.ru, в марте 2026 года hh.индекс достиг 11,4 — это максимум за несколько последних лет. Что означает эта цифра: на одну активную вакансию приходится более 11 активных резюме в среднем по рынку. Год назад этот показатель был 5,6."]},{"id":"image-hh-table","type":"image","src":"https://storage.ht-platform.ru/public/articles/4/article-photo-03.png"},{"id":"section-1-3","type":"text","title":"1.3 Скрытая занятость","paragraphs":["Официальная статистика фиксирует рекордную занятость. Но аналитический центр ЦМАКП (Центр макроэкономического анализа и краткосрочного прогнозирования) и независимые эксперты указывают на другой феномен: скрытую безработицу. По данным «Московского комсомольца» (февраль 2026), как минимум 8 миллионов человек работают неполный рабочий день или находятся в вынужденном простое по инициативе работодателя.","Иначе говоря: формально эти люди заняты, но реально недорабатывают. Это означает сниженный доход, нестабильность занятости и риск сокращения при первом ухудшении ситуации в компании."]},{"id":"image-hh-chart","type":"image","src":"https://storage.ht-platform.ru/public/articles/4/article-photo-04.png"},{"id":"section-1-3-accent","type":"accent","variant":"dark","paragraphs":["Мнение HT Platform: рекордная занятость — безусловно позитивный сигнал для экономики. Но для конкретного человека важнее не общий уровень занятости, а ситуация в его профессиональной области. В офисных нишах рынок труда в 2026 году — рынок работодателя, а не соискателя."]},{"id":"section-2","type":"text","title":"2. ИИ и профессии: что на самом деле меняется","paragraphs":[]},{"id":"section-2-1","type":"text","title":"2.1 Меняются задачи, а не профессии","paragraphs":["Одной из ключевых сессий ПМЭФ 2026 стала «Рынок труда 2.0: диктатура ИИ, трансформация навыков и профессий». Её участники сформулировали важный тезис, который противоречит популярным алармистским нарративам."]},{"id":"image-quote-golikova","type":"textWithImage","imageSrc":"https://storage.ht-platform.ru/public/articles/4/article-photo-05.png","text":["Вице-премьер Татьяна Голикова обозначила позицию государства: «Меняется не профессия целиком, а конкретные задачи внутри неё. Наша сверхзадача — научить работников использовать ИИ как инструмент повышения эффективности»."],"imagePosition":"right"},{"id":"section-2-1-repik","type":"text","paragraphs":["Схожую мысль, но с акцентом на бизнес-практику, сформулировал Алексей Репик, «Деловая Россия»: «Исчезнут не профессии — исчезнут рутинные операции. Вырос спрос на контролёров, аналитиков, тех, кто несёт ответственность»."]},{"id":"image-quote-kotyakov","type":"textWithImage","imageSrc":"https://storage.ht-platform.ru/public/articles/4/article-photo-06.png","text":["Министр труда Антон Котяков: лишь 7,5% трудовых функций сегодня могут быть полностью выполнены ИИ. При масштабном внедрении генеративного ИИ производительность труда в России может вырасти на 21–33% к 2032 году."],"imagePosition":"left"},{"id":"section-2-1-text","type":"text","paragraphs":["Министр труда Антон Котяков конкретизировал: около 7,5% трудовых функций сегодня могут быть полностью выполнены ИИ. Это немало — но и не апокалипсис. Важнее другое: по оценке Голиковой, внедрение генеративного ИИ и роботизированных систем способно повысить производительность труда в России на 21–33% к 2032 году."]},{"id":"section-2-1-warning","type":"accent","variant":"dark","paragraphs":["Оговорка: прогноз производительности +21–33% к 2032 году — это сценарная оценка при условии масштабного внедрения ИИ. Она не является гарантированным результатом. Реальный эффект будет зависеть от темпов внедрения, готовности компаний и адаптации работников."]},{"id":"image-quote-sergienkov","type":"textWithImage","imageSrc":"https://storage.ht-platform.ru/public/articles/4/article-photo-07.png","text":["CEO HeadHunter Дмитрий Сергиенков: только 2–3% соискателей указывают в резюме навыки работы с ИИ — при устойчиво растущем спросе на эти компетенции. Это рыночная возможность прямо сейчас."],"imagePosition":"right"},{"id":"section-2-2","type":"text","title":"2.2 40% профессий — в зоне низкого риска от ИИ","paragraphs":["Примечательный факт от CEO HeadHunter Дмитрия Сергиенкова: только 2–3% соискателей указывают в своём резюме навыки работы с ИИ. При этом спрос на людей с такими компетенциями растёт.","Это означает: рыночная возможность прямо сейчас. Добавить конкретные ИИ-навыки в своей профессиональной области — значит выделиться на фоне 97% конкурентов."]},{"id":"image-2-3-percent","type":"textWithImage","imageSrc":"https://storage.ht-platform.ru/public/articles/4/article-photo-08.png","text":["По оценке Сбера и МГУ: 40% профессий находятся в зоне низкого риска от ИИ-автоматизации. Это преимущественно творческие, коммуникативные и экспертные роли с высокой долей человеческого взаимодействия."],"imagePosition":"left"},{"id":"section-2-3","type":"text","title":"2.3 12–18 месяцев — реальный срок освоения нового навыка","paragraphs":["Совместное исследование Сбера и Минтруда, представленное на ПМЭФ, фиксирует: полноценное освоение нового профессионального навыка занимает от 12 до 18 месяцев. Это важный ориентир для тех, кто думает о смене специализации или переобучении."]},{"id":"section-2-3-warning","type":"accent","variant":"dark","paragraphs":["Оговорка: оценка «12–18 месяцев» озвучена на ПМЭФ совместно Сбером и Минтрудом. Мы не нашли прямого внешнего независимого подтверждения этой цифры. Рекомендуем использовать её с атрибуцией: «по данным совместного исследования Сбера и Минтруда»."]},{"id":"section-3","type":"text","title":"3. Что это значит для соискателей: карта возможностей и рисков","paragraphs":[]},{"id":"section-3-1","type":"text","title":"3.1 Не один рынок — а два разных рынка","paragraphs":["Ключевое, что нужно понять о рынке труда 2026 года: он неоднороден. В зависимости от того, в какой профессиональной области вы работаете, ваши шансы и стратегия кардинально различаются."]},{"id":"image-strategy-table","type":"image","src":"https://storage.ht-platform.ru/public/articles/4/article-photo-09.png"},{"id":"section-3-2","type":"text","title":"3.2 Почему поиск работы занимает дольше — и что с этим делать","paragraphs":["В среднем по офисным профессиям в 2026 году на одну вакансию приходит около 60 резюме. Это означает, что первичный отбор часто происходит с помощью алгоритмической фильтрации — до того, как резюме попадает к живому рекрутеру. Что из этого следует:"]},{"id":"section-3-2-list","type":"list","ordered":false,"items":["Резюме должно содержать чёткие ключевые слова из описания вакансии.","Заголовок и первые строки профиля критически важны — именно их сканирует алгоритм.","Отклик «на все вакансии подряд» работает хуже, чем точечный отклик с адаптированным профилем.","Цикл поиска удлинился: готовьтесь к 2–4 месяцам активного поиска в конкурентных нишах, а не к 2–4 неделям, как было раньше."]},{"id":"section-3-2-accent","type":"accent","variant":"light","paragraphs":["Интерпретация HT Platform: мы работаем над тем, чтобы изменить логику отбора — от алгоритмической фильтрации по формальным критериям к оценке реальной совместимости кандидата с ролью. Вы уже можете воспользоваться первой версией умного алгоритма совместимости: это поможет кандидатам быть замеченными, а работодателям найти нужных сотрудников."]},{"id":"section-3-3","type":"text","title":"3.3 Смотрите шире столицы и привычных форматов","paragraphs":["Голикова на ПМЭФ отметила, что 36% молодых специалистов уезжают из регионов в Москву и Санкт-Петербург. Это создаёт значительный дефицит на региональных рынках. Для тех, кто готов работать в регионе или удалённо, это возможность:"]},{"id":"section-3-3-list","type":"list","ordered":false,"items":["меньше конкуренции за вакансии;","работодатели в дефицитных регионах готовы рассматривать менее опытных кандидатов;","гибридная и дистанционная занятость закрепилась как норма — многие региональные вакансии доступны удалённо."]},{"id":"section-4","type":"text","title":"4. Молодые специалисты и выпускники: новые правила игры","paragraphs":["Молодым специалистам в 2026 году приходится вступать на рынок труда в условиях одновременно двух противоречивых трендов: рекордно низкой безработицы в целом по экономике — и высокой конкуренции в офисных профессиях, куда стремится большинство выпускников вузов."]},{"id":"section-4-1","type":"text","title":"4.1 Хорошая новость: трудоустройство молодёжи выросло","paragraphs":["По данным, озвученным Голиковой на ПМЭФ, трудоустройство молодёжи в возрасте 14–24 лет за последние 10 лет выросло в 2,2 раза. Государство активно расширяет инструменты содействия занятости молодых.","На ПМЭФ Путин поручил ускорить принятие законопроекта о статусе стажёра, внесённого в Государственную Думу 4 июня 2026 года. Если он будет принят и подписан, то уже с марта 2027 года студенты и выпускники (в течение первого года после окончания обучения) смогут проходить стажировку с оформлением временного трудового договора сроком до 6 месяцев, зарплатой не ниже МРОТ (минимальный размер оплаты труда) и сохранением социальных гарантий. Пока закон не принят — следите за изменениями на сайте Государственной Думы (duma.gov.ru)."]},{"id":"image-mrot-number","type":"textWithImage","imageSrc":"https://storage.ht-platform.ru/public/articles/4/article-photo-10.png","text":["Если законопроект о статусе стажёра будет принят, с марта 2027 года студенты и молодые выпускники смогут проходить стажировку с оформлением временного трудового договора сроком до 6 месяцев и зарплатой не ниже МРОТ."],"imagePosition":"right"},{"id":"section-4-2","type":"text","title":"4.2 Барьеры первого входа: что реально мешает","paragraphs":["Несмотря на рост числа трудоустроенных молодых людей, барьеры первого входа на рынок труда никуда не делись:"]},{"id":"section-4-2-list","type":"list","ordered":false,"items":["Требование опыта от 1–3 лет — стандартное условие для большинства вакансий, в том числе начального уровня.","36% молодёжи уезжают из регионов, обостряя конкуренцию в столицах.","ИИ-вакансии для молодых растут быстрее: Сергиенков (HeadHunter) отметил рост на 25% за год, но большинство студентов не замечают этого направления."]},{"id":"section-4-3","type":"text","title":"4.3 Что реально помогает при первом входе","paragraphs":[]},{"id":"section-4-3-list","type":"list","ordered":false,"items":["Практика ценнее диплома. Стажировки, реальные проекты, кейсы в портфолио — это первый приоритет.","Не игнорируйте ИИ-инструменты. Даже базовые компетенции работы с нейросетями в вашей профобласти уже отличают вас от большинства.","Ищите работодателей, которые готовы развивать. В условиях кадрового голода лучшие компании инвестируют в развитие — это возможность для тех, у кого ещё нет опыта.","Региональный дефицит — ваш шанс. Те, кто остаётся в регионе или работает удалённо, конкурируют в менее насыщенной среде."]},{"id":"section-4-3-accent","type":"accent","variant":"light","paragraphs":["Интерпретация HT Platform: если вы студент или только выходите на рынок, не ориентируйтесь на «модные» специальности — ориентируйтесь на то, где есть реальный спрос и где ваши навыки могут дать результат быстрее."]},{"id":"section-5","type":"text","title":"5. Для работодателей и HR: что говорит ПМЭФ и что с этим делать","paragraphs":[]},{"id":"section-5-1","type":"text","title":"5.1 Производительность отстаёт от зарплат — и это проблема","paragraphs":["Путин на ПМЭФ прямо обозначил проблему:"]},{"id":"image-quote-putin","type":"textWithImage","imageSrc":"https://storage.ht-platform.ru/public/articles/4/article-photo-11.png","text":["Владимир Путин на ПМЭФ 2026: рост зарплат в России систематически опережает рост производительности труда. Для работодателей в трудоёмких секторах это означает нарастающее давление на маржинальность."],"imagePosition":"left"},{"id":"section-5-1-text","type":"text","paragraphs":["Но производительность труда этим темпам не соответствует. Это означает, что для работодателей — особенно в секторах с высокими трудовыми затратами — давление на маржинальность нарастает."]},{"id":"image-mrot-chart","type":"image","src":"https://storage.ht-platform.ru/public/articles/4/article-photo-12.png"},{"id":"section-5-2","type":"text","title":"5.2 Автоматизация: три барьера, о которых говорили на ПМЭФ","paragraphs":["На сессиях ПМЭФ работодатели называли три основных барьера для внедрения роботизации и автоматизации:"]},{"id":"section-5-2-list","type":"list","ordered":true,"items":["Незнание доступных решений — компании просто не знают, что существует.","Нехватка людей для внедрения — специалистов по внедрению катастрофически мало.","Страх не оправдать инвестиции — при нынешней стоимости заёмного финансирования риск очень высок."]},{"id":"section-5-2-text","type":"text","paragraphs":["При этом 80% малых предприятий заявили на ПМЭФ, что воздержатся от инвестиций в 2026 году из-за отсутствия источников финансирования (Александр Калинин, президент «ОПОРА России»). Это означает сжатие рабочих мест в МСП (малые и средние предприятия)."]},{"id":"section-5-3","type":"text","title":"5.3 Инклюзивный найм — стратегический ресурс","paragraphs":["На ПМЭФ прошла специальная сессия об инклюзивной занятости. По данным hh.ru, в 2025 году 51% работодателей уже рассматривали кандидатов с инвалидностью. В условиях кадрового дефицита инклюзивный найм — это не только социальная ответственность, но и способ расширить воронку кандидатов."]},{"id":"section-5-4","type":"text","title":"5.4 Практические выводы для HR","paragraphs":[]},{"id":"section-5-4-list","type":"list","ordered":false,"items":["Расширяйте формальные требования («диплом + 3 года опыта») отсекают значительную часть подходящих кандидатов. Смотрите на потенциал к обучению.","Срок освоения навыка — 12–18 месяцев. Это реально. Вкладывайте в адаптацию тех, кто готов учиться.","Региональный рынок и дистанционная занятость — способ конкурировать за кадры без гонки зарплат с московскими работодателями.","Инклюзивный найм расширяет возможности компаний, которые адаптируют рабочие места, получают доступ к квалифицированным кандидатам с инвалидностью."]},{"id":"section-5-4-accent","type":"accent","variant":"dark","paragraphs":["HT Platform для работодателей: В условиях дефицита кадров всё больше работодателей начинают смотреть не только на формальное резюме, но и на то, как человек мыслит, какова его мотивация и совместимость с командой. HT Platform предлагает инструменты оценки, позволяющие видеть кандидата шире — через его потенциал и soft skills."]},{"id":"section-6","type":"text","title":"6. Пять практических выводов: что делать прямо сейчас","paragraphs":[]},{"id":"section-6-1","type":"text","title":"6.1 Если вы ищете работу прямо сейчас","paragraphs":[]},{"id":"section-6-1-list","type":"list","ordered":false,"items":["Определите свою «сферу» рынка: вы в дефицитном сегменте (производство, медицина, торговля, логистика) или в конкурентном (ИТ, маркетинг, консалтинг)? Стратегия разная.","Обновите профиль под конкретную роль. При 11+ резюме на вакансию первичная фильтрация часто происходит алгоритмически — проверьте, совпадают ли ключевые слова в вашем профиле с описанием вакансии.","Добавьте хотя бы базовый ИИ-навык в своей профобласти. Не «пользуюсь ChatGPT», а конкретное применение в работе. Только 2–3% соискателей это указывают — у вас есть шанс выделиться.","Будьте готовы к более длинному циклу поиска. В конкурентных нишах — это 2–4 месяца, а не 2–4 недели. Системный подход рулит.","Смотрите шире столицы. Дефицит кадров в регионах реален. Гибридная занятость закрепилась — это открывает новые возможности."]},{"id":"section-6-2","type":"text","title":"6.2 Если думаете о смене профессии","paragraphs":[]},{"id":"section-6-2-list","type":"list","ordered":false,"items":["Не идите туда, «где модно» — идите туда, где ваши навыки сработают быстрее. Лучший переход — смежная специализация: там вы выйдете на рынок за 6–12 месяцев.","12–18 месяцев — реальный срок освоения нового навыка. Закладывайте это в план.","Дефицитные направления в 2026: производство, строительство, транспорт, медицина, продажи. Риски перехода туда — ниже.","Проверьте бесплатные программы переобучения через платформу «Работа России» — более 5 700 программ. До того как отдавать деньги за платные курсы. Воспользуйтесь нейросетями, сегодня они могут выступать даже наставниками.","Поймите, что вы умеете делать хорошо — и найдите, где это нужно в новом контексте. Soft skills играют важную роль сегодня."]},{"id":"section-6-3","type":"text","title":"6.3 Если вы студент или молодой специалист","paragraphs":[]},{"id":"section-6-3-list","type":"list","ordered":false,"items":["Практика ценнее диплома. Стажировки, проекты, кейсы — то, с чего стоит начинать.","Следите за законопроектом о статусе стажёра: если он будет принят, с марта 2027 года стажировка получит официальный трудовой статус с зарплатой не ниже МРОТ.","Не игнорируйте ИИ-навыки — даже базовые. Те, кто умеет применять ИИ в работе, находят работу быстрее.","Ищите работодателей, которые вкладывают в обучение — в условиях кадрового голода лучшие из них готовы вкладываться в развитие.","36% молодёжи уезжают в столицы — дефицит в регионах открывает возможности для тех, кто остаётся или работает удалённо."]},{"id":"section-6-4","type":"text","title":"6.4 Если планируете обучение и развитие","paragraphs":[]},{"id":"section-6-4-list","type":"list","ordered":false,"items":["Выбирайте обучение по результату, а не по названию курса. Что конкретно вы сможете делать после?","Приоритет — навыки, которые усиливают текущую специализацию, а не меняют профессию целиком.","ИИ-инструменты в вашей профобласти — первый приоритет. Не «ИИ вообще», а конкретные применения.","Soft skills — не второстепенная история. Эмпатия, критическое мышление, умение вести переговоры становятся дефицитными навыками наравне с техническими.","Бесплатные программы существуют: платформа «Работа России» (trudvsem.ru), программы Минтруда, региональные центры занятости."]},{"id":"section-6-5","type":"text","title":"6.5 Для работодателей и HR","paragraphs":[]},{"id":"section-6-5-list","type":"list","ordered":false,"items":["Расширяйте пул кандидатов: формальные требования отсекают большую часть подходящих людей. Смотрите на потенциал к обучению и развитию.","12–18 месяцев — реальный срок освоения нового навыка. Это приемлемый горизонт для инвестиций в развитие.","Региональный рынок и дистанционная занятость — способ бороться с дефицитом без гонки зарплат в Москве.","Инклюзивный найм расширяет пул: 51% работодателей уже рассматривают кандидатов с инвалидностью — присоединяйтесь.","Автоматизация без отстроенных процессов не даёт эффекта. Три барьера: незнание решений, нет людей для внедрения, страх не оправдать инвестиции.","Используйте современные инструменты, осваивайте новые технологии, значительно экономя на подборе – для этого есть все возможности."]},{"id":"section-7","type":"text","title":"7. Как разобраться в своих сильных сторонах — и зачем это делать сейчас","paragraphs":["ПМЭФ 2026 подтвердил то, о чём давно говорят карьерные консультанты: рынок труда становится всё менее линейным. Профессии трансформируются, навыки устаревают и появляются новые, ИИ перестраивает внутренние задачи — всё это означает, что опираться только на привычное резюме становится всё менее достаточно.","В этой ситуации полезно сначала разобраться с собой: что вы умеете делать хорошо, в чём ваша реальная специализация, какие качества помогают вам работать эффективно. Это основа для любого карьерного шага — будь то поиск работы, смена профессии или планирование обучения."]},{"id":"section-7-accent","type":"accent","variant":"light","paragraphs":[[{"type":"link","text":"HT Platform","action":"openAuth"}," создана именно для этого: пройти диагностику сильных сторон, увидеть свои soft skills в подробном отчёте и понять, как ваш профиль соотносится с тем, что ищут работодатели прямо сейчас. Если не уверены, какая роль подходит вам лучше всего, начните с диагностики — это занимает около 20 минут и даёт конкретный отчёт с интерпретацией."]]},{"id":"section-7-text-after","type":"text","paragraphs":["Независимо от того, используете ли вы инструменты HT Platform или нет, — понимание своих сильных сторон остаётся отправной точкой для осознанного карьерного выбора в меняющихся условиях."]},{"id":"conclusion","type":"text","title":"Заключение: что остаётся после ПМЭФ 2026","paragraphs":["ПМЭФ 2026 дал немного противоречивую, но полезную картину. Официальная риторика оптимистична, и это частично оправдано: безработица действительно на историческом минимуме, МРОТ вырос, государство расширяет инструменты поддержки занятости молодёжи.","Но реальный рынок труда сложнее официальных цифр. Конкуренция в офисных профессиях выросла кратно. Малый бизнес сжимается. Вакансий стало меньше, резюме больше. Скрытая безработица достигает рекордных уровней. ИИ меняет задачи внутри профессий — и тот, кто адаптируется раньше, получает преимущество.","Главный вывод, который стоит унести с ПМЭФ 2026, — рынок труда стал сложнее, и системный подход к карьере теперь важнее, чем когда-либо. Понимать свои навыки, видеть свою сферу рынка, адаптироваться раньше конкурентов — вот что работает в 2026 году."]},{"id":"sources","type":"references","title":"Источники и методология","items":[{"title":"Путин В.В., пленарное заседание ПМЭФ 5 июня 2026"},{"title":"Голикова Т.А., сессия «Рынок труда 2.0», ПМЭФ 5 июня 2026"},{"title":"Котяков А.О., сессия «Рынок труда 2.0», ПМЭФ 5 июня 2026"},{"title":"Сергиенков Д., CEO HeadHunter, ПМЭФ 5 июня 2026"},{"title":"Репик А., «Деловая Россия», ПМЭФ 5 июня 2026"},{"title":"Калинин А., президент «ОПОРА России», ПМЭФ 3 июня 2026"},{"title":"Росстат, апрель 2026"},{"title":"hh.ru Статистика, март–май 2026 (stats.hh.ru)"},{"title":"«Московский комсомолец», февраль 2026 (mk.ru)"},{"title":"ЦМАКП, 2026"},{"title":"Коммерсантъ, июнь 2026 (kommersant.ru)"},{"title":"АиФ Санкт-Петербург, июнь 2026 (spb.aif.ru)"},{"title":"Парламентская газета, июнь 2026 (pnp.ru)"},{"title":"ГАРАНТ.РУ, РАПСИ — данные о законопроекте"},{"title":"Пятый канал / 5-tv.ru, июнь 2026"},{"title":"Сбер + Минтруд (совместное исследование, ПМЭФ 2026)"},{"title":"ФЗ от 29.10.2024 №362-ФЗ (consultant.ru)"}]}]'),OC={id:TC,title:IC,description:bC,createdAt:PC,readTime:RC,coverUrl:AC,category:NC,tags:LC,seo:jC,author:MC,toc:DC,blocks:$C},FC="ai-vacancies-russia-2026",UC="Исследование рынка ИИ-вакансий в России: что работодатели пишут и за что платят",zC="Разобрали 2 808 вакансий, связанных с искусственным интеллектом. Вакансии со словом «ChatGPT» в описании имеют медиану на 24% ниже, со словом «RAG» — на 67% выше. Разбираем, что стоит за этим разрывом и как читать описание вакансии, чтобы понять, куда вы попадёте.",BC="21.08.2026",VC="15 мин",HC="https://storage.ht-platform.ru/public/articles/5/article-photo-01.png",WC="research",KC=["#исследование-ht_platform","#ии-вакансии-2026","#рынок-труда-2026","#навыки-2026","#зарплаты-в-ит","#искусственный-интеллект","#поиск-работы"],YC={title:"Исследование рынка ИИ-вакансий в России 2026: за какие навыки платят на самом деле | HT Platform",description:"Разобрали 2 808 вакансий, связанных с искусственным интеллектом. Слово «ChatGPT» в вакансии означает зарплату на 24% ниже медианы, слово «RAG» — на 67% выше. Что требуют работодатели и как читать описание вакансии.",keywords:["вакансии ии 2026","работа с искусственным интеллектом","ai-инженер вакансии","зарплата ai-специалиста","сколько платят за нейросети","зарплаты ml 2026","какие навыки нужны для работы с ии","промпт-инженер зарплата","навыки 2026","как войти в ai","работа с нейросетями без опыта","переход в ai"]},qC={id:"akirin",name:"Алексей Кирин",role:"Основатель HT Platform",avatar:"https://storage.ht-platform.ru/public/staff/kir-photo.jpg"},GC=[{id:"what-we-did",title:"Что мы сделали"},{id:"main-points",title:"Главные моменты исследования"},{id:"section-1",title:"1. Сколько платят за навыки с ИИ"},{id:"section-2",title:"2. Зачем работодателю ИИ"},{id:"section-3",title:"3. Какие навыки просят"},{id:"section-4",title:"4. Как устроен рынок"},{id:"section-5",title:"5. Что говорят другие исследования"},{id:"section-6",title:"6. Что с этим делать"},{id:"section-7",title:"7. О чём это всё говорит"},{id:"section-8",title:"8. Как подготовиться к будущему с ИИ, которое уже наступило"},{id:"how-we-counted",title:"Как мы считали"},{id:"sources",title:"Источники"}],QC=JSON.parse('[{"id":"what-we-did","type":"text","title":"Что мы сделали","paragraphs":[["Мы проанализировали вакансии с hh.ru по 47 поисковым запросам, связанным с искусственным интеллектом (далее — ИИ). После очистки от дублей и вакансий, попавших в выборку случайно, осталось 2 808 описаний — их и разбирали. ",{"type":"link","text":"[1]","href":"#sources-1"}],["Дальше мы разобрали каждое описание: какие навыки перечислены, что человек должен делать с ИИ, сколько за это предлагают. И сопоставили результат с тем, что об этом рынке говорят hh.ru, Хабр, Всемирный экономический форум, LinkedIn и Indeed Hiring Lab. ",{"type":"link","text":"[2]","href":"#sources-2"}," ",{"type":"link","text":"[4]","href":"#sources-4"}," ",{"type":"link","text":"[5]","href":"#sources-5"}," ",{"type":"link","text":"[8]","href":"#sources-8"}," ",{"type":"link","text":"[10]","href":"#sources-10"}],"Получилась картина, которая местами противоречит привычным разговорам про ИИ на рынке труда."]},{"id":"what-we-did-accent","type":"accent","variant":"normal","paragraphs":["Главное, что мы увидели: рынок платит не за упоминание ИИ, а за инженерную работу вокруг него. Слова «LLM» и «GPT» встречаются почти в половине вакансий, но стоят они очень по-разному. Слово «RAG» в описании соответствует медиане на 67% выше общей, слово «ChatGPT» — на 24% ниже. А Python, Docker и Kubernetes, которые вообще не принято называть ИИ-навыками, дают от +45% до +91%."]},{"id":"main-points","type":"text","title":"Главные моменты исследования","paragraphs":[]},{"id":"main-points-list","type":"list","ordered":true,"items":[["Половина вакансий формулирует требования настолько общо, что по описанию нельзя понять, кого ищут. В 18,4% вакансий не названо ни одного конкретного технического навыка. ",{"type":"link","text":"[1]","href":"#sources-1"}],["Внутри самой темы ИИ есть два разных словаря. Инженерный — «RAG», «LangChain», «векторные базы», «fine-tuning» — соответствует медиане от +47% до +67%. Пользовательский — «ChatGPT», «нейросети», «GPT» — от −17% до −24%. Разрыв между краями — 91 процентный пункт. ",{"type":"link","text":"[1]","href":"#sources-1"}],["Начиная с четвёртого названного навыка медиана растёт скачком: до трёх навыков она держится в районе 100–110 тысяч рублей, с четвёртого — 175 тысяч. ",{"type":"link","text":"[1]","href":"#sources-1"}],["За словом «ИИ» стоят разные задачи, и платят за них по-разному: от 205 450 рублей за построение инфраструктуры до 69 600 за разметку данных. Разброс — три раза. ",{"type":"link","text":"[1]","href":"#sources-1"}],["Шесть из десяти ИИ-вакансий (59,2%) относятся не к разработке, а к маркетингу, продажам, аналитике, дизайну и управлению. Indeed Hiring Lab независимо фиксирует то же самое на американском рынке. ",{"type":"link","text":"[1]","href":"#sources-1"}," ",{"type":"link","text":"[7]","href":"#sources-7"}],["Премия за управленческие софт скилз при проверке во многом оказалась премией за управленческую должность, а не за навык. А вот штраф за исполнительские качества — внимательность, обучаемость, работа в команде — устоял: от −15% до −23% даже внутри одного типа позиций. ",{"type":"link","text":"[1]","href":"#sources-1"}],["Освоенный стек компенсирует два-три года опыта: вакансия для кандидата с опытом до трёх лет и шестью технологиями в требованиях предлагает столько же, сколько вакансия для специалиста с опытом от трёх лет, но с общими требованиями. ",{"type":"link","text":"[1]","href":"#sources-1"}],["Семь из десяти ИИ-вакансий сосредоточены в Москве. Удалённый формат сокращает разрыв между столицей и регионами, но за счёт того, что Москва на удалёнке платит меньше, а не потому, что регионы подтянулись. ",{"type":"link","text":"[1]","href":"#sources-1"}]]},{"id":"main-points-graph-title","type":"text","title":"За что рынок платит в ИИ-вакансиях","paragraphs":["Отклонение медианной зарплаты от общей медианы выборки — 120 000 ₽"]},{"id":"img-fig02","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-02.png","caption":"Рисунок 1. Надбавка к медиане по навыкам. Источник: [1]."},{"id":"section-1","type":"text","title":"1. Сколько платят за навыки с ИИ","paragraphs":["Слова про ИИ сами по себе ничего не стоят. Мы посчитали медианную зарплату для каждого навыка, который встречается в описаниях. Медиана — это середина: половина вакансий платит меньше, половина больше. Она устойчивее среднего, потому что несколько вакансий с зарплатой в миллион не сдвигают её. По всей выборке медиана составила 120 000 рублей на руки.","Дальше смотрим, насколько отличается медиана у вакансий, где упомянут конкретный навык."]},{"id":"section-1-table","type":"table","columns":["Навык","Вакансий","Медиана, ₽","К общей медиане"],"rows":[["C/C++","106","250 000 ₽","+108%"],["Kubernetes","323","229 462 ₽","+91%"],["Kafka","261","216 500 ₽","+80%"],["CI/CD","440","216 500 ₽","+80%"],["ClickHouse","143","210 975 ₽","+76%"],["Grafana, Prometheus","157","205 450 ₽","+71%"],["Docker","524","200 000 ₽","+67%"],["PostgreSQL","425","200 000 ₽","+67%"],["RAG","432","200 000 ₽","+67%"],["Redis","156","200 000 ₽","+67%"],["RabbitMQ","120","200 000 ₽","+67%"],["PyTorch","221","200 000 ₽","+67%"],["Computer Vision","176","200 000 ₽","+67%"],["LangChain","254","197 375 ₽","+64%"],["Векторные базы","153","195 250 ₽","+63%"],["REST API","279","191 000 ₽","+59%"],["Linux","281","188 375 ₽","+57%"],["FastAPI","220","180 000 ₽","+50%"],["React","148","180 000 ₽","+50%"],["Pandas, NumPy","244","179 975 ₽","+50%"],["JavaScript, TypeScript","199","179 125 ₽","+49%"],["SQL","744","175 000 ₽","+46%"],["Java","143","175 000 ₽","+46%"],["Power BI, Tableau","102","175 000 ₽","+46%"],["Python","1 101","174 500 ₽","+45%"],["A/B тесты","214","170 000 ₽","+42%"],["Git","438","160 000 ₽","+33%"],["ИИ-агенты","744","150 000 ₽","+25%"],["Copilot, Cursor","244","150 000 ₽","+25%"],["n8n, Make, Zapier","121","143 550 ₽","+20%"],["Промпт-инжиниринг","224","130 500 ₽","+9%"],["1С","219","130 500 ₽","+9%"],["Битрикс24, amoCRM","149","130 000 ₽","+8%"],["LLM, GPT","1 300","107 500 ₽","−10%"],["Figma","155","100 000 ₽","−17%"],["Excel, Google Таблицы","335","97 500 ₽","−19%"]]},{"id":"section-1-footnote","type":"accent","variant":"normal","paragraphs":["Проверили 78 технологий, в таблицу попали 36 — те, у которых не меньше 20 вакансий с указанной зарплатой. Не прошли порог надёжности, но встречаются часто: MLOps (201 вакансия), NLP (201), Airflow (176), scikit-learn (144), TensorFlow (84). В колонке «Вакансий» — общее число упоминаний навыка. Медиана считается только по тем из них, где указана зарплата: таких вакансий 993 из 2 808."]},{"id":"section-1-cont","type":"text","paragraphs":["Слова «LLM» и «GPT» встречаются чаще всего — в 1 300 вакансиях из 2 808, это 46%. И это единственная позиция из верхушки по частоте, которая тянет медиану вниз.","Промпт-инжиниринг даёт +9%. Инструменты автоматизации вроде n8n и Zapier — +20%. А обычный Python, который никто не называет ИИ-навыком, — +45%. Kafka, о которой в разговорах про ИИ вообще не вспоминают, — +80%.","Верх таблицы занимает не то, что принято считать ИИ-навыками, а инфраструктура: оркестрация контейнеров, очереди сообщений, мониторинг, базы данных. Обучить модель — полдела, гораздо дороже стоит умение запустить её в работу и не уронить."]},{"id":"s1-vocab","type":"text","title":"Два словаря внутри одной темы","paragraphs":["Сначала мы посчитали все ИИ-упоминания одной группой и получили невнятный результат: минус 10% к медиане. Разделили по конкретным словам — и увидели, что внутри группы спрятаны два противоположных явления."]},{"id":"s1-vocab-table","type":"table","columns":["Слово в описании","Вакансий","Медиана, ₽","К общей медиане"],"rows":[["RAG","432","200 000 ₽","+67%"],["LangChain","254","197 375 ₽","+64%"],["Векторные базы","153","195 250 ₽","+63%"],["Fine-tuning","180","176 625 ₽","+47%"],["LLM","854","175 000 ₽","+46%"],["ИИ-агенты","744","150 000 ₽","+25%"],["Промпт-инжиниринг","224","130 500 ₽","+9%"],["Нейросети","719","100 000 ₽","−17%"],["GPT","105","100 000 ₽","−17%"],["ChatGPT","395","91 350 ₽","−24%"]]},{"id":"s1-vocab-graph-title","type":"text","title":"Два словаря ИИ: инженерный и пользовательский","paragraphs":["Отклонение медианы от 120 000 ₽. Разрыв между краями — 91 процентный пункт"]},{"id":"img-fig05","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-03.png","caption":"Рисунок 2. Словари ИИ и оплата. Источник: [1]."},{"id":"s1-vocab-accent","type":"accent","variant":"normal","paragraphs":["Линия проходит не между «есть ИИ» и «нет ИИ», а между двумя словарями. «RAG», «векторные базы», «fine-tuning» — язык инженера, который строит систему. «ChatGPT» и «нейросети» — язык пользователя, который открывает чужую систему в браузере. Разрыв между краями таблицы — 91 процентный пункт."]},{"id":"s1-vocab-cont","type":"text","paragraphs":["Это же различие видно и на входе в профессию. У вакансий для кандидатов с опытом до трёх лет медиана в «инженерном» сегменте со словом LLM — 140 000 рублей, в «пользовательском» со словом ChatGPT — 87 000. Разница в 1,6 раза возникает ещё до всякого опыта, на уровне того, какими словами написана вакансия."]},{"id":"s1-tags","type":"text","title":"Одно и то же слово, разная цена","paragraphs":["Ещё нагляднее это видно в тегах, которые работодатель проставляет вакансии сам."]},{"id":"s1-tags-table","type":"table","columns":["Тег в вакансии","Вакансий","Медиана, ₽","К общей медиане"],"rows":[["LLM","100","210 000 ₽","+84%"],["Нейронные сети","29","102 200 ₽","−10%"],["ChatGPT","37","77 500 ₽","−32%"]]},{"id":"s1-tags-footnote","type":"accent","variant":"normal","paragraphs":["Базы здесь небольшие: с указанной зарплатой — 27, 22 и 22 вакансии соответственно."]},{"id":"s1-tags-cont","type":"text","paragraphs":["Разброс между тегами «LLM» и «ChatGPT» — в 2,7 раза. Это не про технологию, это про то, как работодатель видит задачу. Тот, кто пишет «LLM», думает про инженерную систему. Тот, кто пишет «ChatGPT», думает про инструмент, которым пользуются."]},{"id":"s1-tags-accent","type":"accent","variant":"normal","title":"Что это значит для вас","paragraphs":["Если вы ищете работу и видите в вакансии «опыт работы с ChatGPT» — это, скорее всего, нижний сегмент рынка. Если написано «опыт работы с LLM», «RAG», «векторные базы» — вы смотрите на инженерную позицию."]},{"id":"s1-threshold","type":"text","title":"Порог конкретности: четыре навыка","paragraphs":["Мы посчитали, сколько конкретных технических навыков перечислено в каждой вакансии, и сопоставили с зарплатой."]},{"id":"s1-threshold-table","type":"table","columns":["Навыков в описании","Вакансий","Доля","Медиана, ₽","К общей медиане"],"rows":[["0","516","18,4%","110 000 ₽","−8%"],["1","548","19,5%","100 000 ₽","−17%"],["2","350","12,5%","100 000 ₽","−17%"],["3","247","8,8%","120 000 ₽","0%"],["4–5","401","14,3%","175 000 ₽","+46%"],["6–7","331","11,8%","200 000 ₽","+67%"],["8 и более","415","14,8%","187 500 ₽","+56%"]]},{"id":"s1-threshold-graph-title","type":"text","title":"Порог конкретности: с четвёртого навыка зарплата растёт скачком","paragraphs":["Медианная зарплата в зависимости от числа названных требований"]},{"id":"img-fig03","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-04.png","caption":"Рисунок 3. Число навыков и зарплата. Источник: [1]."},{"id":"s1-threshold-cont","type":"text","paragraphs":["Обратите внимание на первую строку: вакансии, где не назван ни один навык, платят чуть больше, чем с одним-двумя. Дело в составе — там много продаж, маркетинга, SMM и дизайна, где требования формулируют бизнес-языком, а каждая седьмая позиция руководящая.","До трёх навыков медиана держится в районе 100–110 тысяч. С четвёртого — скачок на 46%, с шестого — на 67%.","Логика простая: работодатель, который может перечислить четыре конкретных требования, понимает, какую задачу решает. И платит соответственно."]},{"id":"s1-threshold-accent","type":"accent","variant":"normal","title":"Оговорка","paragraphs":["Мы измеряем не потребность рынка, а то, как рынок её формулирует. Далеко не все работодатели пишут навыки, понимая их ценность, и далеко не все разбираются в предмете. Из того, что написано, мы делаем выводы о том, что написано, — а не о том, что происходит внутри компаний."]},{"id":"section-2","type":"text","title":"2. Зачем работодателю ИИ","paragraphs":["Мы разобрали, что именно человек должен делать с искусственным интеллектом. Оказалось, что за одним словом «ИИ» стоят совершенно разные задачи — и платят за них по-разному."]},{"id":"section-2-table","type":"table","columns":["Что нужно делать с ИИ","Вакансий","Доля","Медиана, ₽","К общей медиане"],"rows":[["Строить инфраструктуру","459","16,3%","205 450 ₽","+71%"],["Помогать в разработке","231","8,2%","150 000 ₽","+25%"],["Создавать продукт или сервис","190","6,8%","150 000 ₽","+25%"],["Обрабатывать данные","137","4,9%","135 000 ₽","+12%"],["Автоматизировать рутину","271","9,7%","130 500 ₽","+9%"],["Общаться с клиентом","56","2,0%","117 500 ₽","−2%"],["Генерировать контент","311","11,1%","95 850 ₽","−20%"],["Размечать данные для обучения","76","2,7%","69 600 ₽","−42%"]]},{"id":"section-2-footnote","type":"accent","variant":"normal","paragraphs":["Классификация по первому совпадению: вакансия попадает в самую конкретную подходящую категорию. Ещё две категории («исследовать и обучать модели», «контролировать качество моделей») не прошли порог в 20 вакансий с указанной зарплатой, поэтому мы их не публикуем."]},{"id":"section-2-graph-title","type":"text","title":"Зачем компаниям ИИ — и сколько это стоит","paragraphs":["Медианная зарплата по назначению ИИ в вакансии. Разброс между полюсами — 3 раза"]},{"id":"img-fig04","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-05.png","caption":"Рисунок 4. Назначение ИИ и оплата. Источник: [1]."},{"id":"section-2-cont","type":"text","paragraphs":["Разброс между верхом и низом списка — три раза. И полюса устроены зеркально: наверху человек строит систему, внизу — обслуживает её.","В трети вакансий, отобранных по ИИ-запросам, вообще не сказано, зачем компании нужен ИИ. Это ровно то, о чём статья: рынок пишет про ИИ, но не описывает задачу."]},{"id":"s2-two-jobs","type":"text","title":"Две работы, которых не было пять лет назад","paragraphs":["Искусственный интеллект создал новую работу на обоих концах шкалы, и это самое наглядное, что мы увидели в данных.","Внизу — разметка данных для обучения: 76 вакансий, медиана 69 600 рублей, минус 42% к общей. Это самая низкооплачиваемая категория во всей выборке. Человек размечает примеры, на которых учится модель.","Наверху — построение инфраструктуры для моделей: 459 вакансий, медиана 205 450 рублей, плюс 71%. Человек делает так, чтобы обученная модель работала в продукте и не падала под нагрузкой."]},{"id":"s2-two-jobs-accent","type":"accent","variant":"normal","paragraphs":["Обе профессии появились из-за одной и той же технологии. Разница в оплате — почти три раза. Это неплохая иллюстрация к тому, что «работать с ИИ» — не характеристика позиции. Значение имеет, с какой стороны системы вы находитесь."]},{"id":"s2-two-jobs-graph-title","type":"text","title":"Два полюса одной технологии","paragraphs":["Медианная зарплата и число вакансий по двум задачам вокруг ИИ"]},{"id":"img-fig09","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-06.png","caption":"Рисунок 5. Инфраструктура и разметка данных. Источник: [1]."},{"id":"s2-content","type":"text","title":"Генерация контента — одна из самых массовых и самых дешёвых задач","paragraphs":["Генерация контента — вторая по массовости задача в вакансиях, 311 позиций из 2 808. И одна из самых низкооплачиваемых: минус 20% к медиане.","Это тот сегмент, где готовые инструменты закрывают заметную часть задачи. Текст, изображения и видео теперь делает нейросеть, человек её направляет и правит.","Если ваша работа связана с производством контента, это прямой сигнал. Не в том смысле, что профессия исчезает, — в том, что её экономика изменилась. Расти внутри этой ниши сложнее, чем перейти в соседнюю: обработка данных даёт +12%, автоматизация процессов +9%, а работа с инфраструктурой +71%."]},{"id":"s2-content-quote","type":"quote","text":"Мы сами прошли через это внутри команды. Когда генерация текста и картинок стала стоить копейки, ценность сместилась к тем, кто может собрать из этого работающий процесс: подключить к базе знаний, проверить факты, встроить в продукт. Умение пользоваться нейросетью перестало быть преимуществом примерно за год.","author":"Алексей Кирин","role":"Основатель HT Platform","avatar":"https://storage.ht-platform.ru/public/staff/kir-photo.jpg"},{"id":"section-3","type":"text","title":"3. Какие навыки просят","paragraphs":[]},{"id":"s3-hard","type":"text","title":"Хард скилз: что стоит дорого","paragraphs":["Хард скилз — то, что человек умеет делать: языки программирования, инструменты, технологии. Мы сгруппировали их по смыслу, чтобы стала видна закономерность."]},{"id":"s3-hard-table","type":"table","columns":["Группа","Что входит","Надбавка к медиане"],"rows":[["Системное программирование","C/C++","+108%"],["Инфраструктура и эксплуатация","Kubernetes, CI/CD, Docker, Grafana, Prometheus, Linux","+57…+91%"],["Обмен данными и очереди","Kafka, RabbitMQ, Redis","+67…+80%"],["Базы и хранилища","ClickHouse, PostgreSQL","+67…+76%"],["Классический ML","PyTorch, Computer Vision, Pandas, NumPy","+50…+67%"],["LLM-инженерия","RAG, LangChain, векторные базы, fine-tuning","+47…+67%"],["Веб и бэкенд","FastAPI, React, JavaScript, TypeScript, Java","+46…+50%"],["Аналитика и визуализация","Power BI, Tableau, A/B тесты","+42…+46%"],["Языки и базовые инструменты","Python, SQL, Git","+33…+46%"],["Прикладной ИИ","ИИ-агенты, Copilot, n8n, промпты","+9…+25%"],["Корпоративные системы","1С, Битрикс24, amoCRM","+8…+9%"],["Офисные и дизайн-инструменты","Excel, Google Таблицы, Figma","−17…−19%"]]},{"id":"s3-hard-cont","type":"text","paragraphs":["Закономерность читается сразу: чем ближе навык к инженерии и данным, тем выше оплата. Чем ближе к готовым инструментам — тем ниже."]},{"id":"s3-soft","type":"text","title":"Софт скилз: платят за уровень задач, а не за старание","paragraphs":["Софт скилз — то, как человек работает: коммуникация, самостоятельность, ответственность, умение разбираться в новом. Мы посчитали их так же, как хард скилз."]},{"id":"s3-soft-table","type":"table","columns":["Навык","Вакансий","Доля","Медиана, ₽","К общей медиане"],"rows":[["Управление командой","165","5,9%","187 000 ₽","+56%"],["Управление проектами","146","5,2%","143 550 ₽","+20%"],["Системное мышление","176","6,3%","120 000 ₽","0%"],["Проведение презентаций","57","2,0%","120 000 ₽","0%"],["Самостоятельность","1 055","37,6%","117 450 ₽","−2%"],["Ответственность","628","22,4%","110 000 ₽","−8%"],["Аналитическое мышление","329","11,7%","100 000 ₽","−17%"],["Коммуникация","197","7,0%","100 000 ₽","−17%"],["Работа в команде","126","4,5%","95 700 ₽","−20%"],["Подготовка презентаций","87","3,1%","92 850 ₽","−23%"],["Внимание к деталям","292","10,4%","88 500 ₽","−26%"],["Обучаемость","76","2,7%","87 000 ₽","−28%"]]},{"id":"s3-soft-graph-title","type":"text","title":"Какие софт скилз связаны с уровнем зарплаты","paragraphs":["Связь — не причина: часть надбавки объясняется уровнем должности, а не самим навыком"]},{"id":"img-fig06","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-07.png","caption":"Рисунок 6. Софт скилз и зарплата. Источник: [1]."},{"id":"s3-soft-cont","type":"text","paragraphs":["На первый взгляд картина простая: управленческие навыки дают прибавку, исполнительские — нет. Но здесь легко ошибиться, и мы решили проверить."]},{"id":"s3-check","type":"text","title":"Проверка: дело в навыке или в должности?","paragraphs":["Возможно, «управление командой» даёт +56% не потому, что этот навык ценен сам по себе, а потому, что его пишут в вакансиях руководителей, — а руководители зарабатывают больше в принципе. Мы отделили управленческие и продажные позиции по названию должности и пересчитали премию внутри оставшихся 2 311 обычных вакансий."]},{"id":"s3-check-table","type":"table","columns":["Навык","На всей выборке","Без руководящих и позиций в продажах","Что произошло"],"rows":[["Управление проектами","+20%","+8%","премия почти исчезла"],["Системное мышление","0%","+6%","эффекта нет"],["Проведение презентаций","0%","−23%","ушло в минус"],["Самостоятельность","−2%","+2%","эффекта нет"],["Ответственность","−8%","−4%","ослабло"],["Аналитическое мышление","−17%","−15%","держится"],["Работа в команде","−20%","−15%","держится"],["Внимание к деталям","−26%","−20%","держится"],["Обучаемость","−28%","−23%","держится"],["Коммуникация","−17%","−25%","усилилось"]]},{"id":"s3-check-footnote","type":"accent","variant":"normal","paragraphs":["После отсечения руководящих и продажных позиций выборки в строках заметно уменьшаются. Мы приводим только те, где осталось не меньше 20 вакансий с указанной зарплатой."]},{"id":"s3-check-accent","type":"accent","variant":"normal","paragraphs":["Проверка показала: надбавка за «управление проектами» среди обычных позиций падает с +20% до +8% — заметная её часть объясняется не навыком, а уровнем должности. Сами по себе управленческие позиции дают +23% к медиане, продажные +25%. А вот «управление командой» проверить не удалось: после отсечения руководящих позиций там остаётся 14 вакансий с указанной зарплатой — меньше нашего порога надёжности. Про этот навык мы ничего утверждать не станем."]},{"id":"s3-check-cont","type":"text","paragraphs":["А вот вторая половина картины устояла. Упоминание исполнительских качеств — внимательности, обучаемости, работы в команде — соответствует зарплате ниже медианы даже внутри одного типа позиций. Штраф от 15 до 23 процентных пунктов.","Это не значит, что внимательность и обучаемость не нужны. Их упоминают часто: внимание к деталям в 10,4% вакансий, ответственность в 22,4%. Скорее наоборот — их пишут там, где не могут сформулировать содержательные требования. Общие слова про качества занимают место, на котором должна быть задача."]},{"id":"s3-combos","type":"text","title":"Связки навыков","paragraphs":["Отдельные навыки — это одно, комбинации — другое. Мы проверили, что дают пары."]},{"id":"s3-combos-table","type":"table","columns":["Связка","Вакансий","Медиана, ₽","К общей медиане"],"rows":[["Docker + Kubernetes","243","233 925 ₽","+95%"],["LLM/GPT + RAG","401","200 000 ₽","+67%"],["Python + Docker","411","193 125 ₽","+61%"],["RAG + векторные базы","131","187 625 ₽","+56%"],["Python + SQL","540","177 500 ₽","+48%"],["Python + LLM/GPT","628","174 000 ₽","+45%"],["Excel + SQL","95","139 200 ₽","+16%"],["Excel + Python","89","120 000 ₽","0%"]]},{"id":"s3-combos-cont","type":"text","paragraphs":["Последние две строки — про тех, чья работа сейчас меняется сильнее всего. Excel сам по себе соответствует медиане на 19% ниже общей. Excel вместе с SQL — уже плюс 16%. Разница в 35 процентных пунктов за один добавленный навык."]},{"id":"section-4","type":"text","title":"4. Как устроен рынок","paragraphs":[]},{"id":"s4-structure","type":"text","title":"Шесть из десяти ИИ-вакансий — не про разработку","paragraphs":["59,2% вакансий в нашей выборке относятся не к разработке, а к маркетингу, продажам, аналитике, дизайну, управлению проектами и административным функциям."]},{"id":"s4-structure-table","type":"table","columns":["Профессия","Вакансий","Доля выборки"],"rows":[["Программист, разработчик","500","17,8%"],["Дата-сайентист","368","13,1%"],["Менеджер по маркетингу, интернет-маркетолог","136","4,8%"],["Менеджер по продажам, работе с клиентами","103","3,7%"],["Менеджер продукта","102","3,6%"],["SMM-менеджер, контент-менеджер","102","3,6%"],["BI-аналитик, аналитик данных","100","3,6%"],["Руководитель проектов","91","3,2%"],["Дизайнер, художник","91","3,2%"],["Секретарь, помощник руководителя","74","2,6%"],["DevOps-инженер","73","2,6%"]]},{"id":"s4-structure-cont","type":"text","paragraphs":[["Indeed Hiring Lab в июле 2026 года опубликовал материал с тем же выводом по американскому рынку: ИИ перестал быть историей только про технические профессии. Наши данные показывают то же самое в России. ",{"type":"link","text":"[7]","href":"#sources-7"}],"Практический смысл для читателя простой. Работать с ИИ можно из своей профессии — уходить в разработку не обязательно. Но чем ближе задача к данным и инженерии, тем выше оплата, и это стоит учитывать при выборе направления."]},{"id":"s4-structure-graph-title","type":"text","title":"Кто на самом деле работает с ИИ","paragraphs":["Структура выборки по профессиональным ролям"]},{"id":"img-fig10","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-08.png","caption":"Рисунок 7. Структура выборки по профессиям. Источник: [1]."},{"id":"s4-exp","type":"text","title":"Опыт и деньги","paragraphs":[]},{"id":"s4-exp-table","type":"table","columns":["Требуемый опыт","Вакансий","Доля","Медиана, ₽","К общей медиане"],"rows":[["Нет опыта","171","6,1%","59 667 ₽","−50%"],["От 1 года до 3 лет","1 029","36,6%","100 000 ₽","−17%"],["От 3 до 6 лет","1 267","45,1%","180 000 ₽","+50%"],["Более 6 лет","341","12,1%","248 375 ₽","+107%"]]},{"id":"s4-exp-cont","type":"text","paragraphs":["Разрыв между новичком и опытным специалистом — 4,2 раза. Само по себе это не новость. Интереснее то, что видно, если наложить на опыт количество требуемых навыков."]},{"id":"s4-stack","type":"text","title":"Стек догоняет опыт","paragraphs":[]},{"id":"s4-stack-table","type":"table","columns":["Требуемый опыт","0–2 навыка","3–5 навыков","6 и более"],"rows":[["От 1 года до 3 лет","100 000 ₽","120 000 ₽","150 510 ₽"],["От 3 до 6 лет","150 000 ₽","215 000 ₽","216 500 ₽"]]},{"id":"s4-stack-graph-title","type":"text","title":"Освоенный стек компенсирует два-три года опыта","paragraphs":["Медианная зарплата по опыту и числу требуемых навыков"]},{"id":"img-fig07","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-09.png","caption":"Рисунок 8. Стек и опыт. Источник: [1]."},{"id":"s4-stack-accent","type":"accent","variant":"normal","paragraphs":["Вакансия для кандидата с опытом до трёх лет, где перечислено шесть и более технологий, предлагает примерно столько же, сколько вакансия для специалиста с опытом от трёх лет, но с общими требованиями: 150 510 против 150 000 рублей."]},{"id":"s4-stack-cont","type":"text","paragraphs":["Иначе говоря, освоенный стек в этой выборке компенсирует примерно два-три года опыта. Это не значит, что опыт не нужен, — но показывает, куда имеет смысл вкладывать время тому, кто только начинает."]},{"id":"s4-tech-segments","type":"text","title":"В технических сегментах разрыв между уровнями меньше","paragraphs":[]},{"id":"s4-tech-segments-table","type":"table","columns":["Сегмент","Опыт 1–3 года","Опыт 3–6 лет","Разрыв"],"rows":[["Все вакансии","100 000 ₽","180 000 ₽","1,80x"],["Вакансии со словом LLM","140 000 ₽","216 500 ₽","1,55x"],["Вакансии с SQL","140 000 ₽","215 000 ₽","1,54x"],["Вакансии с Python","144 275 ₽","216 500 ₽","1,50x"]]},{"id":"s4-tech-segments-cont","type":"text","paragraphs":["Мы ожидали обратного — что в сложных технических областях разрыв между новичком и специалистом окажется больше. Он оказался меньше: 1,5 раза против 1,8 по выборке в целом. Начинающий в техническом сегменте стартует заметно выше — 140 тысяч против 100 — и до уровня специалиста ему остаётся пройти меньшую дистанцию."]},{"id":"s4-tech-segments-accent","type":"accent","variant":"normal","title":"Отдельное наблюдение","paragraphs":["Из всех проверенных навыков только три встречаются тем реже, чем выше уровень позиции: Excel и Google Таблицы (18,7% у вакансий с опытом 1–3 года против 3,5% у позиций с опытом от шести лет), Битрикс24 и amoCRM (8,2% против 2,9%), n8n и Zapier (5,2% против 3,2%). Это ровно тот кластер готовых инструментов, который стоит внизу таблицы по оплате. Все остальные навыки ведут себя наоборот — их просят тем чаще, чем выше уровень."]},{"id":"s4-geo","type":"text","title":"География","paragraphs":["Семь из десяти вакансий — в Москве: 1 977 из 2 808, это 70,4%. Медиана по Москве — 145 000 рублей, по остальным регионам — 97 500. Разрыв в 1,49 раза.","А вот в качестве описаний разница оказалась небольшой: вакансий без технических требований в Москве 16,8%, в регионах 22,0%. Среднее число перечисленных навыков — 3,76 против 3,14. Гипотезу о том, что в регионах требования формулируют заметно хуже, наши данные не подтвердили."]},{"id":"s4-geo-table","type":"table","columns":["Регион","Медиана удалённых, ₽","Медиана офисных, ₽"],"rows":[["Москва","130 500 ₽","152 250 ₽"],["Регионы","97 500 ₽","97 850 ₽"]]},{"id":"s4-geo-graph-title","type":"text","title":"Удалёнка сближает рынки за счёт Москвы, а не регионов","paragraphs":["Медианная зарплата по формату работы"]},{"id":"img-fig08","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-10.png","caption":"Рисунок 9. Формат работы и оплата. Источник: [1]."},{"id":"s4-geo-cont","type":"text","paragraphs":["Для москвича удалённая вакансия в среднем на 14% дешевле офисной. Для человека из региона разницы нет вообще — 97 500 против 97 850.","То есть разрыв между Москвой и регионами на удалёнке действительно меньше: 1,34 раза против 1,56 в офисном формате. Но сокращается он не потому, что регионы подтянулись, а потому, что Москва на дистанционке платит меньше. Способом выйти на московские деньги удалённая работа в наших данных не оказалась."]},{"id":"section-5","type":"text","title":"5. Что говорят другие исследования","paragraphs":["Мы сопоставили свои результаты с публикациями российских и международных площадок. Кое-что совпало, кое-что разошлось — и расхождения оказались интереснее совпадений."]},{"id":"s5-match","type":"table","title":"Совпало","columns":["Что говорит источник","Что показывают наши данные"],"rows":[["ИИ перестал быть историей только про технические профессии (Indeed Hiring Lab, июль 2026) [7]","59,2% ИИ-вакансий в России — не про разработку"],["93% работодателей сталкиваются с дефицитом нужных навыков у кандидатов (hh.ru) [2]","При этом 18,4% вакансий вообще не сообщают, какие навыки нужны"]]},{"id":"s5-match-footnote","type":"accent","variant":"normal","paragraphs":["Отдельно: Indeed фиксирует долю ИИ-вакансий 4,2% рынка США. Со своей цифрой мы её не сравниваем — у Indeed знаменатель весь рынок, у нас выборка по ИИ-запросам."]},{"id":"s5-mismatch","type":"text","title":"Разошлось","paragraphs":[[{"type":"bold","text":"Аналитическое мышление."}," Всемирный экономический форум ставит его навыком номер один: 7 из 10 компаний называют его ключевым. ",{"type":"link","text":"[8]","href":"#sources-8"}," В наших данных упоминание аналитического мышления в тексте вакансии соответствует медиане на 17% ниже общей, и после контроля на уровень должности штраф сохраняется."]]},{"id":"s5-mismatch-accent","type":"accent","variant":"normal","paragraphs":["Разрыв между тем, что работодатели отвечают в опросах, и тем, что пишут в вакансиях, — одно из самых заметных расхождений в нашем исследовании. В анкете аналитическое мышление называют критичным. В описании вакансии оно оказывается там же, где «внимательность» и «обучаемость», — в блоке общих слов. Возможно, дело ещё и в разных рынках: в России этот навык пока недооценён."]},{"id":"s5-mismatch-cont","type":"text","paragraphs":[[{"type":"bold","text":"ИИ-навыки."}," LinkedIn сообщает, что число вакансий с требованием базовой ИИ-грамотности выросло на 70% за год. ",{"type":"link","text":"[4]","href":"#sources-4"}," hh.ru пишет, что около 60% работодателей считают кандидатов с ИИ-навыками более эффективными в рутинных задачах. ",{"type":"link","text":"[3]","href":"#sources-3"}],"Распространённость наши данные подтверждают. А вот с оплатой всё сложнее: общий тег «LLM, GPT» соответствует медиане на 10% ниже, но конкретные технологии внутри той же темы — RAG, LangChain, векторные базы — дают от +47% до +67%. Формулировка «ИИ-навыки растут в цене» верна только для инженерной части.",[{"type":"bold","text":"Жалобы на дефицит навыков."}," По данным hh.ru, 93% работодателей жалуются на нехватку навыков у кандидатов, более 60% фильтруют кандидатов по навыкам. ",{"type":"link","text":"[2]","href":"#sources-2"}," При этом почти каждая пятая вакансия в нашей выборке не сообщает, какие навыки нужны."]]},{"id":"s5-new","type":"list","title":"Чего мы не нашли у других","items":["Разделения ИИ-упоминаний на инженерный и пользовательский словарь с оценкой разрыва в оплате.","Порога конкретности — связи между количеством названных навыков и уровнем зарплаты.","Проверки премии за софт скилз на уровень должности. Обычно её приводят без такого контроля.","Сопоставления разметки данных и построения инфраструктуры как двух полюсов одной технологии."]},{"id":"s5-new-footnote","type":"accent","variant":"normal","paragraphs":["Три источника мы проверили и сняли: тезис SHRM про 67% барьера, тезис про 54% организаций без планов внедрения ИИ и оценку Минцифры о дефиците 500–700 тысяч разработчиков. Ни один из них не удалось подтвердить по первоисточнику."]},{"id":"section-6","type":"text","title":"6. Что с этим делать","paragraphs":[]},{"id":"s6-candidate","type":"list","title":"Если вы ищете работу","ordered":true,"items":[[{"type":"bold","text":"Различайте общие слова и конкретные технологии."}," Вакансия с тегом «ChatGPT» платит в 2,7 раза меньше вакансии с тегом «LLM», а слово «RAG» в описании соответствует медиане на 67% выше. Словарь работодателя показывает, насколько он в теме."],[{"type":"bold","text":"Считайте навыки в описании."}," Если названо меньше трёх конкретных требований — скорее всего, работодатель сам не определился, кого ищет. Медиана таких вакансий на 8–17% ниже общей."],[{"type":"bold","text":"Смотрите, зачем компании ИИ."}," «Генерировать контент» и «размечать данные» — нижний сегмент. «Строить инфраструктуру» — верхний. Разброс в три раза."],[{"type":"bold","text":"Стек догоняет опыт."}," Вакансия для кандидата с опытом до трёх лет и шестью технологиями в требованиях предлагает столько же, сколько вакансия для специалиста с опытом от трёх лет, но без конкретики."],[{"type":"bold","text":"Развивайтесь вглубь, а не вширь по резюме."}," Речь не о том, чтобы дописать модные слова в профиль. Реальная разница возникает, когда вы осваиваете смежный инструмент и начинаете им пользоваться в работе. Excel рядом с ИИ тянет медиану вниз на 19%, Excel вместе с SQL — уже плюс 16%. Одна освоенная технология меняет положение на 35 пунктов."],[{"type":"bold","text":"Не обязательно уходить в ИТ, но техническая часть окупается."}," Шесть из десяти ИИ-вакансий — не про разработку. Работать с ИИ можно из любой профессии, а зарабатывать больше — сдвигаясь в сторону данных и инженерии."]]},{"id":"s6-candidate-graph-title","type":"text","title":"Как читать вакансию за 30 секунд","paragraphs":["Четыре проверки, которые видно прямо в описании"]},{"id":"img-fig11","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-11.png","caption":"Рисунок 10. Памятка соискателю. Источник: [1]."},{"id":"s6-employer","type":"list","title":"Если вы нанимаете","ordered":true,"items":[[{"type":"bold","text":"Опишите задачу, а не технологию."}," Вакансии с четырьмя и более требованиями имеют медиану на 46% выше. Дело не в деньгах, а в том, что понятная вакансия притягивает понятных кандидатов."],[{"type":"bold","text":"Проверьте свои формулировки."}," «Опыт работы с ИИ» может означать что угодно — от использования ChatGPT до построения RAG-пайплайна. Уточните, что именно должен уметь человек."],"Мы уже приводили эту цифру: 93% работодателей жалуются на нехватку навыков — при том что каждая пятая вакансия не сообщает, какие навыки нужны.",[{"type":"bold","text":"Разделяйте хард скилз и софт скилз в описании."}," Сейчас они лежат в одном списке, и по нему непонятно, что критично, а что желательно."]]},{"id":"s6-employer-graph-title","type":"text","title":"Одна вакансия, два описания","paragraphs":["Как формулировка связана с уровнем медианы"]},{"id":"img-fig12","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-12.png","caption":"Рисунок 11. Два описания одной вакансии. Источник: [1]."},{"id":"s6-employer-example","type":"accent","variant":"warning","title":"Как пишут сейчас vs как стоило бы","paragraphs":["Пример собран нами для иллюстрации, это не реальная вакансия.","Как есть: «Ищем специалиста по ИИ. Опыт работы с нейросетями, ответственность, внимательность к деталям, умение работать в команде». Ноль конкретных требований, медиана −8%.","Как стоило бы: «Собрать RAG-пайплайн по внутренней базе знаний. Python, LangChain, Qdrant, Docker. Замеряем precision на выборке поддержки». Пять конкретных требований, медиана +46%."]},{"id":"section-7","type":"text","title":"7. О чём это всё говорит","paragraphs":[]},{"id":"s7-cant-describe","type":"text","title":"Рынок не умеет описывать то, что ищет","paragraphs":["Главное, что мы увидели за цифрами, — не про ИИ. Оно про то, как рынок труда разговаривает сам с собой.","Половина вакансий формулирует требования настолько общо, что по ним нельзя понять, кого ищут. Слова про ИИ используются как маркер современности, а не как описание работы. Софт скилз перечисляются там, где не сформулированы задачи.","Работодатель при этом искренне жалуется, что кандидаты не подходят. А кандидат не понимает, куда откликаться, потому что по описанию не отличить серьёзную инженерную позицию от «поработайте с нейросетями»."]},{"id":"s7-cant-describe-accent","type":"accent","variant":"normal","paragraphs":["Мы измеряем не потребность рынка, а то, как рынок её формулирует. Это разные вещи. Скорее всего, компаниям нужны более конкретные специалисты, чем те, которых они описывают в вакансиях, — просто перевести реальную потребность в текст объявления оказывается сложно."]},{"id":"s7-soft","type":"text","title":"Отдельно про софт скилз","paragraphs":["Наша проверка показала неприятную вещь: то, что выглядело как премия за управленческие навыки, во многом оказалось премией за управленческую должность. А исполнительские качества — внимательность, обучаемость, работа в команде — устойчиво соседствуют с зарплатой ниже медианы.",["Из этого не следует, что софт скилз не важны. Следует другое: ",{"type":"bold","text":"в текстах вакансий они пока почти не несут информации."}," Их пишут по инерции, одинаковыми формулировками, независимо от того, что человеку предстоит делать."]]},{"id":"s7-soft-table","type":"table","columns":["Как есть сейчас","Как могло бы быть"],"rows":[["«Ответственность, внимательность, работа в команде» — в 22% вакансий подряд.","Какие именно качества нужны для этой задачи и почему."],["Софт скилз смешаны с хард скилз в общем списке.","Раздельные поля — что нужно уметь делать и как нужно работать."],["Оценка на собеседовании «на глаз».","Измеримая диагностика, сопоставимая между кандидатами."],["Кандидат пишет то же самое в резюме.","Кандидат понимает свои сильные стороны и может их подтвердить."]]},{"id":"s7-soft-cont","type":"text","paragraphs":["Пока обе стороны описывают софт скилз одинаковыми словами, эти слова мало что значат. Ценность появится тогда, когда рынок научится определять их достоверно — так, чтобы формулировка работодателя и самооценка кандидата были про одно и то же."]},{"id":"s7-soft-product","type":"accent","variant":"dark","paragraphs":["Мы в HT Platform строим сервис вокруг этой же мысли. У нас хард скилз и софт скилз — отдельные поля профиля. Софт скилз можно не декларировать, а пройти диагностику и получить измеримый результат. Работодатель видит не «ответственный и внимательный», а профиль, сопоставимый между кандидатами.","Это не решает проблему рынка целиком. Но структурированные данные с обеих сторон — первый шаг к тому, чтобы работодатель и кандидат наконец говорили об одном и том же."]},{"id":"s7-helps","type":"list","title":"Что помогло бы рынку","ordered":true,"items":[[{"type":"bold","text":"Работодателю."}," Разделять хард скилз и софт скилз в описании. Сейчас они лежат в одном списке, и по нему непонятно, что критично, а что желательно."],[{"type":"bold","text":"Работодателю."}," Формулировать задачу конкретнее. «Строить RAG-пайплайн для внутренней базы знаний» говорит больше, чем «опыт работы с ИИ»."],[{"type":"bold","text":"Кандидату."}," Понимать свои сильные стороны конкретно. Тогда отклик попадает в те вакансии, где вы действительно подходите."],[{"type":"bold","text":"Кандидату."}," Читать описание целиком, а не заголовок. Мы показали, что по формулировкам можно предсказать и уровень задач, и порядок зарплаты."]]},{"id":"s7-helps-graph-title","type":"text","title":"Где рынок теряет друг друга","paragraphs":["Работодатель и кандидат описывают одно и то же разными словами"]},{"id":"img-fig13","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-13.png","caption":"Рисунок 12. Разрыв в языке рынка. Источник: [1]."},{"id":"section-8","type":"text","title":"8. Как подготовиться к будущему с ИИ, которое уже наступило","paragraphs":["Рынок труда впустил ИИ в свои объятия. Вектор намечен, динамика сумасшедшая. Это значит, что осваивать новые навыки нужно незамедлительно."]},{"id":"s8-candidates","type":"text","title":"Соискателям","paragraphs":["Работа уже сегодня требует этих компетенций в большинстве сфер деятельности. Но чтобы не проиграть, поставив на ошибочное направление, сначала проверьте, где вам интереснее всего развиваться и что вас мотивирует. И только потом начинайте изучать ИИ и практиковаться в применении именно к этой области.","Не переживайте, что прошлый опыт окажется потерян. Сегодня всё меняется по месяцам, а не по годам, так что накопленный опыт не обесценивается: он переносится в новую область быстрее, чем кажется.","А чтобы понять, где эта «ваша сфера», используйте научно обоснованные методики: профессиональные инструменты психологической диагностики и профориентации. Это фундамент, который можно получить быстро."]},{"id":"s8-candidates-product","type":"accent","variant":"dark","paragraphs":["Наш сервис сегодня даёт такой уровень диагностики бесплатно: вы сможете проверить уровень своей мотивации и понять структуру личности — что вдохновляет вас в работе и где у вас выше потенциал развития."]},{"id":"s8-employers","type":"text","title":"Работодателям","paragraphs":["Чтобы успеть за гонкой развития, оказаться впереди или хотя бы не отстать от конкурентов, начинайте изучать и использовать ИИ в своих задачах. Общайтесь с технарями, чтобы лучше понимать, что и как работает. Так вы быстрее найдёте новые таланты — тех, кто поднимет компанию на следующий уровень.","Используйте профессиональные инструменты для диагностики софт скилз, чтобы заранее увидеть потенциал кандидата. Сегодня это важнее прошлого опыта, потому что всё меняется молниеносно."]},{"id":"s8-employers-product","type":"accent","variant":"dark","paragraphs":["На платформе HT Platform диагностика мотивации и структуры личности доступна бесплатно — она показывает, что вдохновляет кандидата в работе и где у него выше потенциал развития. Вы видите подробный отчёт по потенциалу готовых кандидатов и процент совместимости с конкретной позицией."]},{"id":"final-line","type":"text","paragraphs":[[{"type":"bold","text":"Будьте впереди. Смотрите в будущее, которое уже наступило!"}]]},{"id":"how-we-counted","type":"text","title":"Как мы считали","paragraphs":[[{"type":"bold","text":"Сбор."}," 47 поисковых запросов по hh.ru, связанных с ИИ, регион — Россия, август 2026 года. Собрано 4 444 вакансии после удаления дублей по паре «название — работодатель»."],[{"type":"bold","text":"Очистка."}," hh.ru ищет по отдельным словам, поэтому в выборку попадали посторонние вакансии: например, запрос «инженер машинного обучения» находил «инженера-конструктора». Мы проверили каждое описание на наличие ИИ-маркеров и оставили только те, где ИИ упомянут в названии должности, в тегах навыков или в требованиях. Осталось 2 808 вакансий — это и есть база всех расчётов в статье."],[{"type":"bold","text":"Зарплата."}," Считали медиану, а не среднее: медиана устойчива к выбросам. Если в вакансии указана вилка, брали середину. Зарплаты «до вычета налога» пересчитывали на руки по прогрессивной шкале НДФЛ 2026 года. Зарплата указана в 993 вакансиях из 2 808 — все медианы считаются по ним."],[{"type":"bold","text":"Навыки."}," Каждое описание проверялось словарём из 78 технологий и 18 гибких качеств по регулярным выражениям. В публикацию попадали только те, у которых не меньше 20 вакансий с указанной зарплатой, — иначе медиана неустойчива."]]},{"id":"how-we-counted-graph-title","type":"text","title":"Путь от запроса до расчёта","paragraphs":["Как 47 запросов превратились в базу для медиан"]},{"id":"img-fig14","type":"image","src":"https://storage.ht-platform.ru/public/articles/5/article-photo-14.png","caption":"Рисунок 13. Воронка сбора и очистки данных. Источник: [1]."},{"id":"how-limits","type":"list","title":"Ограничения","items":["Мы анализируем тексты вакансий, а не реальные потребности компаний. Это разные вещи.","Зарплата указана только в 35% вакансий. Вакансии без зарплаты могут отличаться систематически.","Выборка собрана по ИИ-запросам, поэтому её нельзя сравнивать с рынком труда в целом.","По каждому запросу мы забирали не более 300 вакансий — это ограничение поиска hh.ru, а не полная выгрузка рынка.","Корреляция не означает причину. Мы показываем, какие слова соседствуют с какими зарплатами, а не то, что добавление слова в резюме поднимет доход."]},{"id":"sources","type":"references","title":"Источники","items":[{"title":"HT Platform. Собственный сбор данных: hh.ru, 47 поисковых запросов, 2 808 вакансий после очистки, август 2026. Методология и словари терминов доступны по запросу."},{"title":"hh.ru. Итоги рынка труда 2025 и тренды 2026."},{"title":"hh.ru. Исследование о влиянии ИИ-навыков на эффективность сотрудников."},{"title":"LinkedIn. Skills on the Rise: The Fastest-Growing Skills in 2026. Сервис ограничен на территории РФ, ссылку не приводим."},{"title":"Indeed Hiring Lab. AI Tracker.","link":"https://github.com/hiring-lab/ai-tracker"},{"title":"Indeed Hiring Lab. AI and Job Postings: From Destruction to Creation? 08.07.2026."},{"title":"Indeed Hiring Lab. AI Is No Longer Just a Tech Occupation Story. 08.07.2026."},{"title":"World Economic Forum. The Future of Jobs Report 2025, раздел «Skills outlook».","link":"https://reports.weforum.org"},{"title":"SHRM. The State of AI in HR 2026. Опрос 1 908 HR-специалистов, 31.03.2026.","link":"https://shrm.org"},{"title":"Хабр. Анализ более 100 тысяч вакансий hh.ru за I квартал 2026.","link":"https://habr.com/ru/articles/1023566/"}]}]'),ZC={id:FC,title:UC,description:zC,createdAt:BC,readTime:VC,coverUrl:HC,category:WC,tags:KC,seo:YC,author:qC,toc:GC,blocks:QC},_m=[X6,fC,kC,OC,ZC],Sm=r=>new Promise(t=>setTimeout(t,r)),_1={getAll:async()=>(await Sm(500),_m),getById:async r=>(await Sm(300),_m.find(a=>a.id===r)||null)},Uu=Ne("article/fetchAll",async(r,t)=>{try{return await _1.getAll()}catch{return t.rejectWithValue("Ошибка загрузки")}}),zu=Ne("article/fetchById",async(r,t)=>{try{const a=await _1.getById(r);if(!a)throw new Error("Not found");return a}catch{return t.rejectWithValue("Ошибка загрузки статьи")}}),JC={entities:[],currentArticle:null,isLoading:!1,error:null,filters:{search:"",category:"all",tags:[]}},S1=Yr({name:"article",initialState:JC,reducers:{setSearchQuery:(r,t)=>{r.filters.search=t.payload},setCategory:(r,t)=>{r.filters.category=t.payload},toggleTag:(r,t)=>{const a=t.payload,i=r.filters.tags.indexOf(a);i===-1?r.filters.tags.push(a):r.filters.tags.splice(i,1)},clearCurrentArticle:r=>{r.currentArticle=null}},extraReducers:r=>{r.addCase(Uu.pending,t=>{t.isLoading=!0,t.error=null}).addCase(Uu.fulfilled,(t,a)=>{t.isLoading=!1,t.entities=a.payload}).addCase(Uu.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload}).addCase(zu.pending,t=>{t.isLoading=!0,t.error=null}).addCase(zu.fulfilled,(t,a)=>{t.isLoading=!1,t.currentArticle=a.payload}).addCase(zu.rejected,(t,a)=>{t.isLoading=!1,t.error=a.payload})}}),{setSearchQuery:qS,setCategory:GS,toggleTag:QS,clearCurrentArticle:ZS}=S1.actions,XC=S1.reducer,vr=w3({reducer:{auth:i6,modal:c6,user:X3,employer:n6,company:f6,vacancy:E6,candidate:j6,chat:$6,settings:U6,article:XC,folder:N6},middleware:r=>r({serializableCheck:!1}).prepend(g1.middleware)}),Er=()=>Ww(),Ke=qw,e_=r=>()=>g.jsx(Bw,{store:vr,children:g.jsx(E0,{children:g.jsx(r,{})})}),x1=({applicantComponent:r,employerComponent:t,fallbackComponent:a=null})=>{const{role:i,isAuthenticated:s}=Ke(c=>c.auth);return s?i==="applicant"?r:i==="employer"?t:a:a||r},xm="app_theme_preference",E1=r=>{var f;const{isAuthenticated:t}=Ke(p=>p.auth),a=Ke(p=>p.settings.data),i=(f=a==null?void 0:a.baseSettings)==null?void 0:f.darkTheme,s=()=>typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",[c,d]=_.useState(s);_.useEffect(()=>{const p=window.matchMedia("(prefers-color-scheme: dark)"),m=y=>d(y.matches?"dark":"light");return p.addEventListener("change",m),()=>p.removeEventListener("change",m)},[]),_.useLayoutEffect(()=>{let p="light";const m=localStorage.getItem(xm);r?p=r:t&&i!==void 0?(p=i?"dark":"light",m!==p&&localStorage.setItem(xm,p)):m==="dark"||m==="light"?p=m:p=c,document.documentElement.setAttribute("data-theme",p),document.body.setAttribute("data-theme",p),document.documentElement.style.colorScheme=p},[r,t,i,c])},t_="_header_17wo1_1",r_="_header_limited_width_17wo1_30",n_="_header__logo_desktop_17wo1_35",a_="_header__logo_mobile_17wo1_36",o_="_header__button_17wo1_42",i_="_header__button_active_17wo1_57",s_="_header_on_dark_bg_17wo1_65",l_="_burger__icon_17wo1_85",c_="_header__profile_mobile_17wo1_105",u_="_adminInfoLabel_17wo1_117",d_="_burger__button_17wo1_127",f_="_header__nav_container_17wo1_133",p_="_header__nav_links_17wo1_141",h_="_header__nav_icons_17wo1_148",m_="_login__button_17wo1_155",y_="_chat__button_17wo1_160",g_="_headerUnreadBadge_17wo1_168",v_="_header__buttons_desktop_17wo1_186",w_="_userDropdownContainer_17wo1_194",C_="_userTrigger_17wo1_198",__="_userAvatar_17wo1_206",S_="_userName_17wo1_213",x_="_user__name_dark_17wo1_221",E_="_dropdownMenu_17wo1_225",k_="_dropdownItem_17wo1_242",T_="_dropdownIcon_17wo1_263",I_="_logoutItem_17wo1_277",b_="_dropdownDivider_17wo1_285",Pe={header:t_,header_limited_width:r_,header__logo_desktop:n_,header__logo_mobile:a_,header__button:o_,header__button_active:i_,header_on_dark_bg:s_,burger__icon:l_,header__profile_mobile:c_,adminInfoLabel:u_,burger__button:d_,header__nav_container:f_,header__nav_links:p_,header__nav_icons:h_,login__button:m_,chat__button:y_,headerUnreadBadge:g_,header__buttons_desktop:v_,userDropdownContainer:w_,userTrigger:C_,userAvatar:__,userName:S_,user__name_dark:x_,dropdownMenu:E_,dropdownItem:k_,dropdownIcon:T_,logoutItem:I_,dropdownDivider:b_};function P_(){const{isAuthenticated:r,isLoading:t}=Ke(s=>s.auth),a=Er();return _.useCallback(s=>(...c)=>{if(!t){if(r)return s(...c);a(Aa("auth"))}},[r,t,a])}const R_="_button_17dr5_1",A_="_button_small_17dr5_35",N_="_button_secondary_17dr5_64",L_="_button_secondary_small_17dr5_93",j_="_button_outlined_17dr5_122",M_="_button_rounded_outlined_17dr5_152",D_="_button_outlined_small_17dr5_187",$_="_button_rounded_17dr5_152",O_="_button_rounded_accent_17dr5_247",F_={button:R_,button_small:A_,button_secondary:N_,button_secondary_small:L_,button_outlined:j_,button_rounded_outlined:M_,button_outlined_small:D_,button_rounded:$_,button_rounded_accent:O_},U_=(r,t,a)=>r==="primary"?t==="small"?a.button_small:a.button:r==="secondary"?t==="small"?a.button_secondary_small:a.button_secondary:r==="outlined"?t==="small"?a.button_outlined_small:a.button_outlined:r==="rounded"?a.button_rounded:r==="rounded-accent"?a.button_rounded_accent:r==="rounded-outlined"?a.button_rounded_outlined:a.button,jt=r=>{const{children:t,size:a="large",variant:i="primary",className:s="",disabled:c=!1,type:d="button",...f}=r,m=[U_(i,a,F_),s].filter(Boolean).join(" ");return g.jsx("button",{className:m,type:d,disabled:c,...f,children:t})},z_="data:image/svg+xml,%3csvg%20width='17'%20height='18'%20viewBox='0%200%2017%2018'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.83304%203.72822C4.07039%203.81336%204.323%203.84516%204.57354%203.82144C4.82408%203.79771%205.06661%203.71903%205.2845%203.59079C5.50239%203.46254%205.69047%203.28778%205.83584%203.07848C5.9812%202.86919%206.08041%202.63032%206.12665%202.37827L6.40572%200.849691C7.55323%200.583306%208.74483%200.583306%209.89234%200.849691L10.1732%202.37827C10.2194%202.63032%2010.3186%202.86919%2010.464%203.07848C10.6093%203.28778%2010.7974%203.46254%2011.0153%203.59079C11.2332%203.71903%2011.4757%203.79771%2011.7263%203.82144C11.9768%203.84516%2012.2294%203.81336%2012.4668%203.72822L13.9048%203.21277C14.7053%204.09151%2015.3017%205.1424%2015.6499%206.28771L14.49%207.30084C14.299%207.4677%2014.1456%207.67471%2014.0405%207.90765C13.9354%208.14059%2013.8809%208.39395%2013.8809%208.65035C13.8809%208.90674%2013.9354%209.16011%2014.0405%209.39305C14.1456%209.62599%2014.299%209.83299%2014.49%209.99985L15.6499%2011.0121C15.3017%2012.1574%2014.7053%2013.2083%2013.9048%2014.087L12.4659%2013.5716C12.2285%2013.4864%2011.9759%2013.4546%2011.7254%2013.4784C11.4749%2013.5021%2011.2323%2013.5808%2011.0144%2013.709C10.7965%2013.8373%2010.6085%2014.012%2010.4631%2014.2213C10.3177%2014.4306%2010.2185%2014.6695%2010.1723%2014.9215L9.89409%2016.4501C8.74658%2016.7165%207.55497%2016.7165%206.40746%2016.4501L6.12665%2014.9215C6.08041%2014.6695%205.9812%2014.4306%205.83584%2014.2213C5.69047%2014.012%205.50239%2013.8373%205.2845%2013.709C5.06661%2013.5808%204.82408%2013.5021%204.57354%2013.4784C4.323%2013.4546%204.07039%2013.4864%203.83304%2013.5716L2.39496%2014.087C1.59446%2013.2083%200.998069%2012.1574%200.649902%2011.0121L1.80979%209.99896C2.00067%209.8321%202.15388%209.62515%202.25892%209.39229C2.36396%209.15944%202.41835%208.90618%202.41835%208.6499C2.41835%208.39362%202.36396%208.14037%202.25892%207.90751C2.15388%207.67466%202.00067%207.4677%201.80979%207.30084L0.649902%206.28771C0.997813%205.14248%201.5939%204.09159%202.39409%203.21277L3.83304%203.72822ZM8.1499%205.98377C8.84378%205.98377%209.50924%206.26467%209.99989%206.76466C10.4905%207.26466%2010.7662%207.9428%2010.7662%208.6499C10.7662%209.357%2010.4905%2010.0351%209.99989%2010.5351C9.50924%2011.0351%208.84378%2011.316%208.1499%2011.316C7.45602%2011.316%206.79056%2011.0351%206.29991%2010.5351C5.80927%2010.0351%205.53362%209.357%205.53362%208.6499C5.53362%207.9428%205.80927%207.26466%206.29991%206.76466C6.79056%206.26467%207.45602%205.98377%208.1499%205.98377Z'%20stroke='%239A9CB0'%20stroke-width='1.3'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e",B_="data:image/svg+xml,%3csvg%20width='18'%20height='18'%20viewBox='0%200%2018%2018'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.57554%207.85126L2.39948%2010.4976C0.914591%2013.8367%200.172947%2015.5062%200.983394%2016.3166C1.79384%2017.127%203.46194%2016.3846%206.80133%2014.9006L9.44949%2013.7231C11.4632%2012.8279%2012.4705%2012.3807%2012.6305%2011.5175C12.7905%2010.6544%2012.0112%209.87519%2010.4527%208.31765L8.98226%206.8465C7.42457%205.28815%206.64532%204.50897%205.78207%204.66977C4.91882%204.82976%204.4716%205.83693%203.57634%207.85046M4.24918%207.44967L9.84951%2013.0495M2.64909%2011.4495L5.84928%2014.6494M11.8496%205.44974L14.2498%203.04982M10.4071%200.649902C10.7272%201.18348%2010.9824%202.56984%209.44949%203.8498M16.6499%206.89209C16.1163%206.5721%2014.7298%206.31691%2013.4497%207.84966M13.4497%200.649902V0.665902M16.6499%203.8498V3.86579M15.8499%209.44961V9.46561M7.84939%201.44988V1.46588'%20stroke='%239A9CB0'%20stroke-width='1.3'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e",V_=r=>_.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},_.createElement("g",{clipPath:"url(#clip0_8191_14355)"},_.createElement("path",{d:"M11.476 15C11.2108 15 10.9564 15.1054 10.7689 15.2929C10.5814 15.4804 10.476 15.7348 10.476 16V19C10.476 19.7956 10.1599 20.5587 9.59732 21.1213C9.03471 21.6839 8.27165 22 7.476 22H5C4.20435 22 3.44129 21.6839 2.87868 21.1213C2.31607 20.5587 2 19.7956 2 19V5C2 4.20435 2.31607 3.44129 2.87868 2.87868C3.44129 2.31607 4.20435 2 5 2H7.476C8.27165 2 9.03471 2.31607 9.59732 2.87868C10.1599 3.44129 10.476 4.20435 10.476 5V8C10.476 8.26522 10.5814 8.51957 10.7689 8.70711C10.9564 8.89464 11.2108 9 11.476 9C11.7412 9 11.9956 8.89464 12.1831 8.70711C12.3706 8.51957 12.476 8.26522 12.476 8V5C12.4744 3.67441 11.9471 2.40356 11.0098 1.46622C10.0724 0.528882 8.80159 0.00158786 7.476 0H5C3.67441 0.00158786 2.40356 0.528882 1.46622 1.46622C0.528882 2.40356 0.00158786 3.67441 0 5L0 19C0.00158786 20.3256 0.528882 21.5964 1.46622 22.5338C2.40356 23.4711 3.67441 23.9984 5 24H7.476C8.80159 23.9984 10.0724 23.4711 11.0098 22.5338C11.9471 21.5964 12.4744 20.3256 12.476 19V16C12.476 15.7348 12.3706 15.4804 12.1831 15.2929C11.9956 15.1054 11.7412 15 11.476 15Z",fill:"#C65C4A"}),_.createElement("path",{d:"M22.867 9.87908L18.281 5.29308C18.1888 5.19757 18.0784 5.12139 17.9564 5.06898C17.8344 5.01657 17.7032 4.98898 17.5704 4.98783C17.4376 4.98668 17.3059 5.01198 17.183 5.06226C17.0602 5.11254 16.9485 5.18679 16.8546 5.28069C16.7607 5.37458 16.6865 5.48623 16.6362 5.60913C16.5859 5.73202 16.5606 5.8637 16.5618 5.99648C16.5629 6.12926 16.5905 6.26048 16.6429 6.38249C16.6953 6.50449 16.7715 6.61483 16.867 6.70708L21.129 10.9701L6 11.0001C5.73478 11.0001 5.48043 11.1054 5.29289 11.293C5.10536 11.4805 5 11.7349 5 12.0001C5 12.2653 5.10536 12.5197 5.29289 12.7072C5.48043 12.8947 5.73478 13.0001 6 13.0001L21.188 12.9691L16.865 17.2931C16.7695 17.3853 16.6933 17.4957 16.6409 17.6177C16.5885 17.7397 16.5609 17.8709 16.5598 18.0037C16.5586 18.1365 16.5839 18.2681 16.6342 18.391C16.6845 18.5139 16.7587 18.6256 16.8526 18.7195C16.9465 18.8134 17.0582 18.8876 17.181 18.9379C17.3039 18.9882 17.4356 19.0135 17.5684 19.0123C17.7012 19.0112 17.8324 18.9836 17.9544 18.9312C18.0764 18.8788 18.1868 18.8026 18.279 18.7071L22.865 14.1211C23.4277 13.5588 23.744 12.796 23.7444 12.0005C23.7447 11.205 23.4292 10.4419 22.867 9.87908Z",fill:"#C65C4A"})),_.createElement("defs",null,_.createElement("clipPath",{id:"clip0_8191_14355"},_.createElement("rect",{width:24,height:24,fill:"white"})))),k1="/static/avatar_white-icon-DrOO_irx.png",T1="var(--main-color)";function H_({color:r,...t}){return g.jsx("svg",{width:"24",height:"23",viewBox:"0 0 24 23",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:g.jsx("path",{d:"M17.5 0.916992C16.3739 0.934507 15.2724 1.24885 14.3067 1.82826C13.341 2.40768 12.5453 3.23166 12 4.21699C11.4546 3.23166 10.6589 2.40768 9.6932 1.82826C8.7275 1.24885 7.62601 0.934507 6.49996 0.916992C4.7049 0.994983 3.01366 1.78025 1.79574 3.10122C0.577818 4.4222 -0.0677922 6.17152 -4.17093e-05 7.96699C-4.17093e-05 12.514 4.78596 17.48 8.79996 20.847C9.69618 21.6001 10.8293 22.013 12 22.013C13.1706 22.013 14.3037 21.6001 15.2 20.847C19.214 17.48 24 12.514 24 7.96699C24.0677 6.17152 23.4221 4.4222 22.2042 3.10122C20.9863 1.78025 19.295 0.994983 17.5 0.916992ZM13.915 19.317C13.3789 19.7684 12.7007 20.0159 12 20.0159C11.2992 20.0159 10.621 19.7684 10.085 19.317C4.94696 15.006 1.99996 10.87 1.99996 7.96699C1.9316 6.70171 2.36632 5.46072 3.20932 4.51469C4.05232 3.56866 5.23519 2.99434 6.49996 2.91699C7.76472 2.99434 8.9476 3.56866 9.7906 4.51469C10.6336 5.46072 11.0683 6.70171 11 7.96699C11 8.23221 11.1053 8.48656 11.2929 8.6741C11.4804 8.86164 11.7347 8.96699 12 8.96699C12.2652 8.96699 12.5195 8.86164 12.7071 8.6741C12.8946 8.48656 13 8.23221 13 7.96699C12.9316 6.70171 13.3663 5.46072 14.2093 4.51469C15.0523 3.56866 16.2352 2.99434 17.5 2.91699C18.7647 2.99434 19.9476 3.56866 20.7906 4.51469C21.6336 5.46072 22.0683 6.70171 22 7.96699C22 10.87 19.053 15.006 13.915 19.313V19.317Z",fill:r||T1})})}function W_({color:r,...t}){return g.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:g.jsx("path",{d:"M19 4H17.899C17.434 1.721 15.414 0 13 0H5C2.243 0 0 2.243 0 5V17.854C0 18.648 0.435 19.374 1.134 19.748C1.452 19.919 1.801 20.003 2.149 20.003C2.565 20.003 2.98 19.882 3.339 19.643L6.289 17.676C6.98 19.611 8.83 21 11 21H16.697L20.661 23.643C21.021 23.883 21.435 24.004 21.851 24.004C22.199 24.004 22.547 23.919 22.866 23.748C23.566 23.374 24 22.648 24 21.854V9C24 6.243 21.757 4 19 4ZM2.23 17.979C2.211 17.991 2.155 18.027 2.078 17.986C1.999 17.944 1.999 17.877 1.999 17.855V5C1.999 3.346 3.345 2 4.999 2H12.999C14.653 2 15.999 3.346 15.999 5V12C15.999 13.654 14.653 15 12.999 15H6.999C6.672 15 6.458 15.159 6.434 15.175L2.23 17.979ZM22 21.855C22 21.876 22 21.944 21.921 21.986C21.842 22.027 21.788 21.991 21.77 21.979L17.555 19.168C17.391 19.059 17.198 19 17 19H11C9.696 19 8.585 18.164 8.172 17H13C15.757 17 18 14.757 18 12V6H19C20.654 6 22 7.346 22 9V21.855Z",fill:r||T1})})}function K_({isDarkTheme:r}){const[t,a]=_.useState(!1),i=_.useRef(null),s=Er(),c=ln(),{role:d,isAuthenticated:f}=Ke(B=>B.auth),p=Ke(B=>B.user.profile),m=Ke(B=>B.employer.profile),y=_.useRef({name:"",avatar:""}),v=()=>{a(!1),c("/"),s(wl()),s(d==="employer"?$d():Md())};_.useEffect(()=>{function B(O){i.current&&!i.current.contains(O.target)&&a(!1)}return document.addEventListener("mousedown",B),()=>{document.removeEventListener("mousedown",B)}},[i]);let w="",S="",E="";d==="employer"&&m?(w=m.name,S=m.surname,E=m.company.companyLogoUrl):p&&(w=p.firstName||p.name||"",S=p.lastName||p.surname||"",E=p.avatarUrl);const I=w||S?`${w} ${S}`.trim():"";I&&(y.current.name=I),E&&(y.current.avatar=E);const N=I||y.current.name||"Пользователь",D=E||y.current.avatar||k1;if(!f)return null;const b=`${Pe.userName} ${r?Pe.user__name_dark:""}`;return g.jsxs("div",{className:Pe.userDropdownContainer,ref:i,children:[g.jsxs("div",{className:Pe.userTrigger,onClick:()=>a(!t),role:"button",tabIndex:0,children:[g.jsx("img",{src:D,alt:"avatar",className:Pe.userAvatar}),g.jsx("span",{className:`${b} body-4`,children:N})]}),t&&g.jsxs("div",{className:Pe.dropdownMenu,children:[g.jsxs(Ge,{to:"/profile/settings",className:Pe.dropdownItem,onClick:()=>a(!1),children:[g.jsx("img",{src:z_,alt:"Настройки",className:Pe.dropdownIcon}),g.jsx("span",{className:"body-1",children:"Настройки"})]}),g.jsxs(Ge,{to:"/events/career-express-it-2025",className:Pe.dropdownItem,onClick:()=>a(!1),children:[g.jsx("img",{src:B_,alt:"Конкурс",className:Pe.dropdownIcon}),g.jsx("span",{className:"body-1",children:"Конкурс"})]}),g.jsx("div",{className:Pe.dropdownDivider}),g.jsxs("button",{onClick:v,className:`${Pe.dropdownItem} ${Pe.logoutItem}`,children:[g.jsx(V_,{className:Pe.dropdownIcon}),g.jsx("span",{className:"body-1",children:"Выйти"})]})]})]})}function Y_({isDarkTheme:r}){const{isAuthenticated:t,role:a}=Ke(x=>x.auth),{unreadCount:i}=Ke(x=>x.chat),{pathname:s}=lt(),c=ln(),d=Er(),f=P_(),p=()=>d(Aa("auth")),y=f(()=>c("/profile")),w=f(()=>c("/chats")),S=s.startsWith("/vacancies")&&s!=="/vacancies/liked",E=s.startsWith("/candidates")&&s!=="/candidates/favorites",I=s.startsWith("/profile")&&s!=="/profile/settings"||s.startsWith("/employer-profile"),N=s.startsWith("/events/career-express-it-2025"),D=s.startsWith("/blog"),b=s.startsWith("/chats"),B=s==="/vacancies/liked"||s==="/candidates/favorites",O=a==="employer"?"/candidates/favorites":"/vacancies/liked",j=B?"#FF5C5C":r?"#ffffff":void 0,q=b?"#FF5C5C":r?"#ffffff":void 0;return g.jsxs("div",{className:Pe.header__buttons_desktop,children:[!t&&g.jsx(Ge,{to:"/",className:`${Pe.header__button} ${s==="/"?Pe.header__button_active:""}`,children:"Главная"}),g.jsx(Ge,{to:"/blog",className:`${Pe.header__button} ${D?Pe.header__button_active:""}`,children:"Блог"}),!t&&g.jsx(Ge,{to:"/events/career-express-it-2025",className:`${Pe.header__button} ${N?Pe.header__button_active:""}`,children:"Конкурс"}),g.jsx(Ge,{to:"/vacancies",className:`${Pe.header__button} ${S?Pe.header__button_active:""}`,children:"Вакансии"}),t&&a==="employer"&&g.jsx(Ge,{to:"/candidates",className:`${Pe.header__button} ${E?Pe.header__button_active:""}`,children:"Кандидаты"}),t&&g.jsx(Ge,{to:"/profile",onClick:x=>{x.preventDefault(),y()},className:`${Pe.header__button} ${I?Pe.header__button_active:""}`,children:"Профиль"}),t?g.jsxs("nav",{className:Pe.header__nav_icons,children:[g.jsx(Ge,{to:O,className:`icon__button ${Pe.favourite__button}`,title:"Избранное",children:g.jsx(H_,{color:j})}),g.jsxs(Ge,{to:"/chats",onClick:x=>{x.preventDefault(),w()},className:`icon__button ${Pe.chat__button}`,title:"Чаты",children:[g.jsx(W_,{color:q}),i>0&&g.jsx("div",{className:Pe.headerUnreadBadge,children:i})]}),g.jsx(K_,{isDarkTheme:r})]}):g.jsx(jt,{size:"small",className:Pe.login__button,onClick:p,children:"Войти"})]})}const q_="_overlay_1sbqt_37",G_="_closing_1sbqt_45",Q_="_sideBar_1sbqt_49",Z_="_sideBar__content_1sbqt_64",J_="_sideBar__greeting_1sbqt_72",X_="_sideBar__nav_1sbqt_79",e5="_sideBar__navItem_1sbqt_86",t5="_logoutButton_1sbqt_104",r5="_active_1sbqt_114",gt={overlay:q_,closing:G_,sideBar:Q_,sideBar__content:Z_,sideBar__greeting:J_,sideBar__nav:X_,sideBar__navItem:e5,logoutButton:t5,active:r5},io="data:image/svg+xml,%3csvg%20width='12'%20height='7'%20viewBox='0%200%2012%207'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.9998%206.91668C10.8902%206.91731%2010.7814%206.89629%2010.6799%206.85482C10.5784%206.81335%2010.486%206.75225%2010.4082%206.67501L6.5915%202.85001C6.51403%202.7719%206.42186%202.70991%206.32031%202.6676C6.21876%202.6253%206.10984%202.60351%205.99983%202.60351C5.88982%202.60351%205.7809%202.6253%205.67935%202.6676C5.5778%202.70991%205.48563%202.7719%205.40816%202.85001L1.5915%206.67501C1.43458%206.83193%201.22175%206.92009%200.999829%206.92009C0.777911%206.92009%200.565082%206.83193%200.408162%206.67501C0.251243%206.51809%200.163086%206.30526%200.163086%206.08334C0.163086%205.97346%200.184729%205.86466%200.226779%205.76314C0.26883%205.66162%200.330464%205.56938%200.408162%205.49168L4.23316%201.67501C4.70811%201.21871%205.3412%200.963867%205.99983%200.963867C6.65846%200.963867%207.29155%201.21871%207.7665%201.67501L11.5915%205.49168C11.6696%205.56915%2011.7316%205.66131%2011.7739%205.76286C11.8162%205.86441%2011.838%205.97334%2011.838%206.08334C11.838%206.19336%2011.8162%206.30228%2011.7739%206.40383C11.7316%206.50537%2011.6696%206.59754%2011.5915%206.67501C11.5136%206.75225%2011.4213%206.81335%2011.3198%206.85482C11.2182%206.89629%2011.1095%206.91731%2010.9998%206.91668Z'%20fill='%239A9CB0'/%3e%3c/svg%3e",n5=r=>{const{children:t,container:a=document.body}=r,[i,s]=_.useState(!1);return _.useEffect(()=>(s(!0),()=>s(!1)),[]),i?fl.createPortal(t,a):null},a5=300,o5=({isOpen:r,onClose:t})=>{const{isAuthenticated:a,role:i}=Ke(b=>b.auth),{profile:s}=Ke(b=>b.user),{profile:c}=Ke(b=>b.employer),d=Er(),f=ln(),m=lt().pathname,[y,v]=_.useState(!1),w=_.useRef(null),S=i==="employer"?c==null?void 0:c.name:s==null?void 0:s.name;_.useEffect(()=>(r&&(document.body.style.overflow="hidden"),()=>{document.body.style.overflow="unset"}),[r]),_.useEffect(()=>{if(r)v(!0);else if(y){const b=setTimeout(()=>{w.current&&(w.current(),w.current=null),v(!1)},a5);return()=>clearTimeout(b)}},[r,y]);const E=b=>{w.current=b||null,t()},I=b=>{if(m===b){E();return}E(()=>f(b))},N=()=>{E(()=>d(Aa("auth")))},D=()=>{E(()=>{d(wl()),f("/")})};return y?g.jsxs(n5,{children:[g.jsx("div",{className:`${gt.overlay} ${r?"":gt.closing}`,onClick:()=>E()}),g.jsx("aside",{className:`${gt.sideBar} ${r?"":gt.closing}`,children:g.jsxs("div",{className:gt.sideBar__content,children:[g.jsxs("div",{className:gt.sideBar__greeting,children:[g.jsx("span",{className:"h2",children:"Привет,"}),g.jsxs("span",{className:"h2",children:[S||"Гость","!"]})]}),g.jsxs("div",{className:gt.sideBar__nav,children:[!a&&g.jsxs("div",{className:`${gt.sideBar__navItem} ${m==="/"?gt.active:""}`,onClick:()=>I("/"),children:[g.jsx("span",{className:"body-1",children:"Главная"}),g.jsx("img",{src:io,alt:"перейти"})]}),g.jsxs("div",{className:`${gt.sideBar__navItem} ${m.startsWith("/blog")?gt.active:""}`,onClick:()=>I("/blog"),children:[g.jsx("span",{className:"body-1",children:"Блог"}),g.jsx("img",{src:io,alt:"перейти"})]}),g.jsxs("div",{className:`${gt.sideBar__navItem} ${m==="/events/career-express-it-2025"?gt.active:""}`,onClick:()=>I("/events/career-express-it-2025"),children:[g.jsx("span",{className:"body-1",children:"Конкурс"}),g.jsx("img",{src:io,alt:"перейти"})]}),g.jsxs("div",{className:`${gt.sideBar__navItem} ${m.startsWith("/vacancies")?gt.active:""}`,onClick:()=>I("/vacancies"),children:[g.jsx("span",{className:"body-1",children:"Вакансии"}),g.jsx("img",{src:io,alt:"перейти"})]}),i==="employer"&&g.jsxs("div",{className:`${gt.sideBar__navItem} ${m.startsWith("/candidates")?gt.active:""}`,onClick:()=>I("/candidates"),children:[g.jsx("span",{className:"body-1",children:"Кандидаты"}),g.jsx("img",{src:io,alt:"перейти"})]}),a&&g.jsxs("div",{className:`${gt.sideBar__navItem} ${m==="/profile/settings"?gt.active:""}`,onClick:()=>I("/profile/settings"),children:[g.jsx("span",{className:"body-1",children:"Настройки"}),g.jsx("img",{src:io,alt:"перейти"})]})]}),a?g.jsx(jt,{className:gt.logoutButton,size:"small",onClick:D,children:"Выйти из профиля"}):g.jsx(jt,{size:"small",onClick:N,children:"Войти в профиль"})]})})]}):null},fo="var(--main-color)";function i5({color:r,...t}){return g.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[g.jsx("path",{d:"M1 6H23C23.2652 6 23.5196 5.89464 23.7071 5.70711C23.8946 5.51957 24 5.26522 24 5C24 4.73478 23.8946 4.48043 23.7071 4.29289C23.5196 4.10536 23.2652 4 23 4H1C0.734784 4 0.48043 4.10536 0.292893 4.29289C0.105357 4.48043 0 4.73478 0 5C0 5.26522 0.105357 5.51957 0.292893 5.70711C0.48043 5.89464 0.734784 6 1 6Z",fill:r||fo}),g.jsx("path",{d:"M23 9H1C0.734784 9 0.48043 9.10536 0.292893 9.29289C0.105357 9.48043 0 9.73478 0 10C0 10.2652 0.105357 10.5196 0.292893 10.7071C0.48043 10.8946 0.734784 11 1 11H23C23.2652 11 23.5196 10.8946 23.7071 10.7071C23.8946 10.5196 24 10.2652 24 10C24 9.73478 23.8946 9.48043 23.7071 9.29289C23.5196 9.10536 23.2652 9 23 9Z",fill:r||fo}),g.jsx("path",{d:"M23 19H1C0.734784 19 0.48043 19.1054 0.292893 19.2929C0.105357 19.4804 0 19.7348 0 20C0 20.2652 0.105357 20.5196 0.292893 20.7071C0.48043 20.8946 0.734784 21 1 21H23C23.2652 21 23.5196 20.8946 23.7071 20.7071C23.8946 20.5196 24 20.2652 24 20C24 19.7348 23.8946 19.4804 23.7071 19.2929C23.5196 19.1054 23.2652 19 23 19Z",fill:r||fo}),g.jsx("path",{d:"M23 14H1C0.734784 14 0.48043 14.1054 0.292893 14.2929C0.105357 14.4804 0 14.7348 0 15C0 15.2652 0.105357 15.5196 0.292893 15.7071C0.48043 15.8946 0.734784 16 1 16H23C23.2652 16 23.5196 15.8946 23.7071 15.7071C23.8946 15.5196 24 15.2652 24 15C24 14.7348 23.8946 14.4804 23.7071 14.2929C23.5196 14.1054 23.2652 14 23 14Z",fill:r||fo})]})}function s5({color:r,...t}){return g.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[g.jsx("path",{d:"M12 12C13.1867 12 14.3467 11.6481 15.3334 10.9888C16.3201 10.3295 17.0892 9.39246 17.5433 8.2961C17.9974 7.19975 18.1162 5.99335 17.8847 4.82946C17.6532 3.66558 17.0818 2.59648 16.2426 1.75736C15.4035 0.918247 14.3344 0.346802 13.1705 0.115291C12.0067 -0.11622 10.8003 0.00259972 9.7039 0.456726C8.60754 0.910851 7.67047 1.67989 7.01118 2.66658C6.35189 3.65328 6 4.81331 6 6C6.00159 7.59081 6.63424 9.11602 7.75911 10.2409C8.88399 11.3658 10.4092 11.9984 12 12ZM12 2C12.7911 2 13.5645 2.2346 14.2223 2.67412C14.8801 3.11365 15.3928 3.73836 15.6955 4.46927C15.9983 5.20017 16.0775 6.00444 15.9231 6.78036C15.7688 7.55629 15.3878 8.26902 14.8284 8.82843C14.269 9.38784 13.5563 9.7688 12.7804 9.92314C12.0044 10.0775 11.2002 9.99827 10.4693 9.69552C9.73836 9.39277 9.11365 8.88008 8.67412 8.22228C8.2346 7.56449 8 6.79113 8 6C8 4.93914 8.42143 3.92172 9.17157 3.17158C9.92172 2.42143 10.9391 2 12 2Z",fill:r||fo}),g.jsx("path",{d:"M12 14C9.61386 14.0026 7.32622 14.9517 5.63896 16.639C3.95171 18.3262 3.00265 20.6139 3 23C3 23.2652 3.10536 23.5196 3.29289 23.7071C3.48043 23.8946 3.73478 24 4 24C4.26522 24 4.51957 23.8946 4.70711 23.7071C4.89464 23.5196 5 23.2652 5 23C5 21.1435 5.7375 19.363 7.05025 18.0503C8.36301 16.7375 10.1435 16 12 16C13.8565 16 15.637 16.7375 16.9497 18.0503C18.2625 19.363 19 21.1435 19 23C19 23.2652 19.1054 23.5196 19.2929 23.7071C19.4804 23.8946 19.7348 24 20 24C20.2652 24 20.5196 23.8946 20.7071 23.7071C20.8946 23.5196 21 23.2652 21 23C20.9974 20.6139 20.0483 18.3262 18.361 16.639C16.6738 14.9517 14.3861 14.0026 12 14Z",fill:r||fo})]})}const l5=["/events/career-express-it-2025","/events/career-express-it-2025/terms"];function c5(){const[r,t]=_.useState(!1),{pathname:a}=lt();return _.useEffect(()=>{const i=document.querySelectorAll('[data-header-theme="dark"]');if(i.length===0){t(!1);return}const s=new IntersectionObserver(c=>{const d=c.some(f=>f.isIntersecting);t(d)},{rootMargin:"-1px 0px -99% 0px",threshold:0});return i.forEach(c=>s.observe(c)),()=>s.disconnect()},[a]),r}function u5(){const[r,t]=_.useState(!1),{pathname:a}=lt(),{isAuthenticated:i,isAdmin:s}=Ke(I=>I.auth),c=Er();E1("light");const d=c5(),f=()=>t(I=>!I),p=()=>t(!1),m=l5.includes(a),y=`
    ${Pe.header}
    ${d?Pe.header_on_dark_bg:""}
    ${m?Pe.header_limited_width:""}
  `,v=I=>{i||(I.preventDefault(),c(Aa("auth")))},S=a.startsWith("/profile")?"#FF5C5C":d?"#ffffff":void 0,E=d?"#ffffff":void 0;return g.jsxs("header",{className:y,children:[g.jsxs("div",{className:Pe.header__logo_container,children:[g.jsx(Ge,{to:"/",className:Pe.header__logo_desktop,children:"HT Platform"}),g.jsx(Ge,{to:"/",className:Pe.header__logo_mobile,children:"HT"}),s&&g.jsx("p",{className:Pe.adminInfoLabel,children:"Режим администрирования"})]}),g.jsxs("div",{className:Pe.header__nav_container,children:[g.jsx("nav",{className:Pe.header__nav_links,children:g.jsx(Y_,{isDarkTheme:d})}),g.jsx(Ge,{to:"/profile",className:`icon__button ${Pe.header__profile_mobile}`,onClick:v,children:g.jsx(s5,{color:S})}),g.jsx("button",{className:`icon__button ${Pe.burger__button}`,onClick:f,children:g.jsx(i5,{className:Pe.burger__icon,color:E})})]}),g.jsx(o5,{isOpen:r,onClose:p})]})}const d5="_footer_iuclz_1",f5="_footer_limited_width_iuclz_13",p5="_footerContent_iuclz_17",h5="_SKLogo_iuclz_25",m5="_SKLogoMobile_iuclz_30",y5="_footerCompanyInfo_iuclz_37",g5="_footerCompanyInfoMain_iuclz_43",v5="_footerLogo_iuclz_49",w5="_footerCopyright_iuclz_55",C5="_footerNav_iuclz_65",_5="_footerButton_iuclz_71",S5="_footerContacts_iuclz_87",x5="_telegramLink_iuclz_113",E5="_versionContainer_iuclz_122",k5="_versionInfo_iuclz_134",T5="_legalLinks_iuclz_135",I5="_mainButton_iuclz_218",ht={footer:d5,footer_limited_width:f5,footerContent:p5,SKLogo:h5,SKLogoMobile:m5,footerCompanyInfo:y5,footerCompanyInfoMain:g5,footerLogo:v5,footerCopyright:w5,footerNav:C5,footerButton:_5,footerContacts:S5,telegramLink:x5,versionContainer:E5,versionInfo:k5,legalLinks:T5,mainButton:I5},Em="data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20opacity='0.84'%3e%3cpath%20d='M0%2020C0%2031.0457%208.95431%2040%2020%2040C31.0457%2040%2040%2031.0457%2040%2020C40%208.95431%2031.0457%200%2020%200C8.95431%200%200%208.95431%200%2020Z'%20fill='white'/%3e%3cpath%20d='M10.1249%2019.6354C15.4936%2017.2963%2019.0736%2015.7543%2020.8648%2015.0092C25.9792%2012.882%2027.0419%2012.5125%2027.7346%2012.5001C27.8869%2012.4976%2028.2276%2012.5353%2028.4482%2012.7144C28.6345%2012.8655%2028.6858%2013.0698%2028.7103%2013.2131C28.7348%2013.3564%2028.7654%2013.6829%2028.7411%2013.9381C28.464%2016.8501%2027.2647%2023.9169%2026.6546%2027.1784C26.3965%2028.5585%2025.8882%2029.0212%2025.3961%2029.0665C24.3266%2029.1649%2023.5145%2028.3597%2022.4787%2027.6807C20.8578%2026.6182%2019.9421%2025.9568%2018.3688%2024.92C16.5505%2023.7218%2017.7292%2023.0633%2018.7654%2021.987C19.0366%2021.7053%2023.7487%2017.4193%2023.8399%2017.0305C23.8513%2016.9819%2023.8619%2016.8006%2023.7542%2016.7049C23.6465%2016.6092%2023.4876%2016.6419%2023.3729%2016.668C23.2104%2016.7049%2020.621%2018.4163%2015.6049%2021.8024C14.8699%2022.3071%2014.2042%2022.553%2013.6077%2022.5401C12.9501%2022.5259%2011.6853%2022.1683%2010.745%2021.8626C9.59166%2021.4877%208.67503%2021.2895%208.75485%2020.6528C8.79642%2020.3212%209.2531%2019.9821%2010.1249%2019.6354Z'%20fill='%23331B3C'/%3e%3c/g%3e%3c/svg%3e";function b5(){return new Date().getFullYear()}const km="/static/SK_logo-3lHyBmF7.png",P5=["/events/career-express-it-2025","/events/career-express-it-2025/terms"],R5=()=>{const{isAuthenticated:r}=Ke(m=>m.auth),t=Ke(m=>{var y;return((y=m.chat)==null?void 0:y.chats)||[]}),a=Er(),{pathname:i}=lt(),s=ln(),c=()=>a(Aa("auth")),d=m=>{if(m.preventDefault(),r){const y=t.find(v=>v.companyName==="Техническая поддержка");y&&y.chatId?s(`/chats/${y.chatId}`):s("/chats?support=true")}else a(Aa("auth"))},f=P5.includes(i),p=`
    ${ht.footer}
    ${f?ht.footer_limited_width:""}
  `;return g.jsxs("footer",{className:p,children:[g.jsxs("div",{className:ht.footerContent,children:[g.jsxs("div",{className:ht.footerCompanyInfo,children:[g.jsxs("div",{className:ht.footerCompanyInfoMain,children:[g.jsx("span",{className:ht.footerLogo,children:"HT"}),g.jsxs("div",{className:ht.footerCopyright,children:[g.jsxs("span",{className:"body-3",children:["ⓒ 1997—",b5()," "]}),g.jsx("span",{className:"body-3",children:"Human Technologies"})]})]}),g.jsx("div",{children:g.jsx("a",{href:"https://t.me/ht_platform",children:g.jsx("img",{src:Em,alt:"icon","aria-hidden":"true"})})}),g.jsx("img",{className:ht.SKLogo,src:km,alt:"Участник Сколково"})]}),g.jsxs("div",{className:ht.footerNav,children:[g.jsx(Ge,{to:"/",className:`${ht.footerButton} h3 ${ht.mainButton}`,children:"Главная"}),r?g.jsx(Ge,{to:"/profile",className:`${ht.footerButton} h3`,children:"Профиль"}):g.jsx("button",{type:"button",onClick:c,className:`${ht.footerButton} h3`,children:"Профиль"}),g.jsx(Ge,{to:"/vacancies",className:`${ht.footerButton} h3`,children:"Вакансии"})]}),g.jsx("div",{className:ht.telegramLink,children:g.jsxs("a",{href:"https://t.me/ht_platform",children:[g.jsx("img",{src:Em,alt:"icon","aria-hidden":"true"}),"Мы в Telegram"]})}),g.jsxs("div",{className:ht.footerContacts,children:[g.jsx("span",{className:"h3",children:"Контакты"}),g.jsx("a",{href:"tel:84956696719",className:"body-1",children:"+7 (495) 669-67-19"}),g.jsx("a",{href:"mailto:info@ht-platform.ru",className:"body-1",children:"info@ht-platform.ru"})]}),g.jsxs("div",{className:ht.footerContacts,children:[g.jsx("span",{className:"h3",children:"Тех. поддержка"}),g.jsx("a",{href:"/chats",onClick:d,className:"body-1",children:"Написать"})]}),g.jsx("img",{className:ht.SKLogoMobile,src:km,alt:"Участник Сколково"})]}),g.jsxs("div",{className:ht.versionContainer,children:[g.jsxs("div",{className:ht.versionInfo,children:[g.jsx("span",{className:"body-2",children:"Версия продукта:"}),g.jsx("span",{className:"body-2",children:"front v1.24.8 от 01.09.2026"})]}),g.jsxs("div",{className:ht.legalLinks,children:[g.jsx(Ge,{to:"/privacy-policy",target:"_blank",rel:"noopener noreferrer",className:"body-2",children:"Политика в отношении перс. данных"}),g.jsx(Ge,{to:"/personal-data-policy",target:"_blank",rel:"noopener noreferrer",className:"body-2",children:"Согласие на обработку перс. данных"}),g.jsx(Ge,{to:"/applicant-agreement",target:"_blank",rel:"noopener noreferrer",className:"body-2",children:"Пользовательское соглашение"}),g.jsx(Ge,{to:"/employer-offer",target:"_blank",rel:"noopener noreferrer",className:"body-2",children:"Оферта для работодателей"})]})]})]})},A5="_modalOverlay_1fwzp_1",N5="_modalContent_1fwzp_13",L5="_modalBack_1fwzp_28",j5="_modalHeader_1fwzp_51",M5="_modalName_1fwzp_58",D5="_modalClose_1fwzp_64",$5="_modalForm_1fwzp_75",O5="_label_1fwzp_85",F5="_closing_1fwzp_188",U5="_typeSelector_1fwzp_192",z5="_typeCard_1fwzp_198",B5="_typeCardActive_1fwzp_214",V5="_cardIconWrapper_1fwzp_218",H5="_cardText_1fwzp_234",Ct={modalOverlay:A5,modalContent:N5,modalBack:L5,modalHeader:j5,modalName:M5,modalClose:D5,modalForm:$5,label:O5,closing:F5,typeSelector:U5,typeCard:z5,typeCardActive:B5,cardIconWrapper:V5,cardText:H5},na=r=>_.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},_.createElement("path",{d:"M17.9998 5.99982C17.8123 5.81235 17.558 5.70703 17.2928 5.70703C17.0277 5.70703 16.7733 5.81235 16.5858 5.99982L11.9998 10.5858L7.41382 5.99982C7.22629 5.81235 6.97198 5.70703 6.70682 5.70703C6.44165 5.70703 6.18735 5.81235 5.99982 5.99982C5.81235 6.18735 5.70703 6.44165 5.70703 6.70682C5.70703 6.97198 5.81235 7.22629 5.99982 7.41382L10.5858 11.9998L5.99982 16.5858C5.81235 16.7733 5.70703 17.0277 5.70703 17.2928C5.70703 17.558 5.81235 17.8123 5.99982 17.9998C6.18735 18.1873 6.44165 18.2926 6.70682 18.2926C6.97198 18.2926 7.22629 18.1873 7.41382 17.9998L11.9998 13.4138L16.5858 17.9998C16.7733 18.1873 17.0277 18.2926 17.2928 18.2926C17.558 18.2926 17.8123 18.1873 17.9998 17.9998C18.1873 17.8123 18.2926 17.558 18.2926 17.2928C18.2926 17.0277 18.1873 16.7733 17.9998 16.5858L13.4138 11.9998L17.9998 7.41382C18.1873 7.22629 18.2926 6.97198 18.2926 6.70682C18.2926 6.44165 18.1873 6.18735 17.9998 5.99982Z",fill:"#31323A"})),W5="_input_1no95_1",K5="_inputWrapper_1no95_7",Y5="_inputWithIcon_1no95_26",q5="_inputIconBtn_1no95_46",G5="_passwordToggleBtn_1no95_47",Q5="_inputIcon_1no95_46",Z5="_eyeIconCrossActive_1no95_76",J5="_eyeIconCross_1no95_76",X5="_eyeIconActive_1no95_78",e4="_eyeIcon_1no95_76",t4="_inputComponentWrapper_1no95_100",r4="_inputError_1no95_107",n4="_errorMessage_1no95_111",a4="_visible_1no95_122",or={input:W5,inputWrapper:K5,inputWithIcon:Y5,inputIconBtn:q5,passwordToggleBtn:G5,inputIcon:Q5,eyeIconCrossActive:Z5,eyeIconCross:J5,eyeIconActive:X5,eyeIcon:e4,inputComponentWrapper:t4,inputError:r4,errorMessage:n4,visible:a4},o4="_dropdownListContainer_ww7z6_1",i4="_item_ww7z6_21",s4="_colorDot_ww7z6_33",l4="_activeItem_ww7z6_43",c4="_dropdownPositioned_ww7z6_47",mi={dropdownListContainer:o4,item:i4,colorDot:s4,activeItem:l4,dropdownPositioned:c4},u4=r=>_.createElement("svg",{width:20,height:20,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},_.createElement("rect",{width:20,height:20,rx:10,fill:"#331B3C"}),_.createElement("path",{d:"M7.087 14.2821C7.08638 14.1881 7.10696 14.095 7.14758 14.0081C7.18819 13.9211 7.24804 13.842 7.32368 13.7753L11.0698 10.5062C11.1463 10.4398 11.207 10.3609 11.2484 10.2739C11.2898 10.1869 11.3112 10.0936 11.3112 9.99939C11.3112 9.90516 11.2898 9.81187 11.2484 9.72489C11.207 9.63791 11.1463 9.55896 11.0698 9.49261L7.32368 6.22349C7.17 6.08908 7.08366 5.90678 7.08366 5.7167C7.08366 5.52662 7.17 5.34432 7.32368 5.20992C7.47736 5.07551 7.6858 5 7.90314 5C8.01075 5 8.11732 5.01854 8.21674 5.05456C8.31616 5.09057 8.4065 5.14337 8.4826 5.20992L12.2205 8.48617C12.6674 8.89299 12.917 9.43525 12.917 9.99939C12.917 10.5635 12.6674 11.1058 12.2205 11.5126L8.4826 14.7889C8.40673 14.8558 8.31646 14.9089 8.21701 14.9451C8.11755 14.9813 8.01088 15 7.90314 15C7.7954 15 7.68872 14.9813 7.58927 14.9451C7.48982 14.9089 7.39955 14.8558 7.32368 14.7889C7.24804 14.7222 7.18819 14.6431 7.14758 14.5561C7.10696 14.4691 7.08638 14.376 7.087 14.2821Z",fill:"white"})),d4=r=>_.createElement("svg",{width:29,height:28,viewBox:"0 0 29 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},_.createElement("g",{clipPath:"url(#clip0_8470_3701)"},_.createElement("path",{d:"M27.8168 10.9888C26.0073 8.04183 21.8913 3.0975 14.6673 3.0975C7.4433 3.0975 3.3273 8.04183 1.5178 10.9888C0.958412 11.8936 0.662109 12.9363 0.662109 14C0.662109 15.0637 0.958412 16.1064 1.5178 17.0112C3.3273 19.9582 7.4433 24.9025 14.6673 24.9025C21.8913 24.9025 26.0073 19.9582 27.8168 17.0112C28.3762 16.1064 28.6725 15.0637 28.6725 14C28.6725 12.9363 28.3762 11.8936 27.8168 10.9888ZM25.8276 15.7897C24.2736 18.3167 20.7561 22.5692 14.6673 22.5692C8.57846 22.5692 5.06096 18.3167 3.50696 15.7897C3.17462 15.2519 2.99859 14.6322 2.99859 14C2.99859 13.3678 3.17462 12.7481 3.50696 12.2103C5.06096 9.68333 8.57846 5.43083 14.6673 5.43083C20.7561 5.43083 24.2736 9.67867 25.8276 12.2103C26.16 12.7481 26.336 13.3678 26.336 14C26.336 14.6322 26.16 15.2519 25.8276 15.7897Z",fill:"#9A9CB0"}),_.createElement("path",{d:"M14.6673 8.16667C13.5136 8.16667 12.3858 8.50878 11.4265 9.14976C10.4672 9.79073 9.71953 10.7018 9.27802 11.7677C8.83651 12.8336 8.72099 14.0065 8.94607 15.138C9.17115 16.2696 9.72672 17.309 10.5425 18.1248C11.3583 18.9406 12.3977 19.4962 13.5293 19.7212C14.6608 19.9463 15.8337 19.8308 16.8996 19.3893C17.9655 18.9478 18.8766 18.2001 19.5176 17.2408C20.1585 16.2815 20.5007 15.1537 20.5007 14C20.4988 12.4535 19.8836 10.9708 18.7901 9.87726C17.6965 8.7837 16.2138 8.16852 14.6673 8.16667ZM14.6673 17.5C13.9751 17.5 13.2984 17.2947 12.7228 16.9101C12.1473 16.5256 11.6986 15.9789 11.4337 15.3394C11.1688 14.6999 11.0995 13.9961 11.2346 13.3172C11.3696 12.6382 11.703 12.0146 12.1924 11.5251C12.6819 11.0356 13.3056 10.7023 13.9845 10.5673C14.6634 10.4322 15.3672 10.5015 16.0067 10.7664C16.6463 11.0313 17.1929 11.4799 17.5775 12.0555C17.962 12.6311 18.1673 13.3078 18.1673 14C18.1673 14.9283 17.7986 15.8185 17.1422 16.4749C16.4858 17.1313 15.5956 17.5 14.6673 17.5Z",fill:"#9A9CB0"})),_.createElement("defs",null,_.createElement("clipPath",{id:"clip0_8470_3701"},_.createElement("rect",{width:28,height:28,fill:"white",transform:"translate(0.666992)"})))),f4=r=>_.createElement("svg",{width:18,height:13,viewBox:"0 0 18 13",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},_.createElement("path",{d:"M9 0C5.04856 0 1.65436 2.37401 0.151954 5.77272C0.0495662 6.00434 0.0495663 6.26839 0.151954 6.50001C1.65436 9.89872 5.04856 12.2727 9 12.2727C12.9514 12.2727 16.3456 9.89872 17.848 6.50001C17.9504 6.26839 17.9504 6.00434 17.848 5.77272C16.3456 2.37401 12.9514 0 9 0ZM9 10.2273C6.74182 10.2273 4.90909 8.39455 4.90909 6.13636C4.90909 3.87818 6.74182 2.04545 9 2.04545C11.2582 2.04545 13.0909 3.87818 13.0909 6.13636C13.0909 8.39455 11.2582 10.2273 9 10.2273ZM9 3.68182C7.64182 3.68182 6.54545 4.77818 6.54545 6.13636C6.54545 7.49455 7.64182 8.59091 9 8.59091C10.3582 8.59091 11.4545 7.49455 11.4545 6.13636C11.4545 4.77818 10.3582 3.68182 9 3.68182Z",fill:"#31323A"})),p4=r=>_.createElement("svg",{width:20,height:16,viewBox:"0 0 20 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},_.createElement("path",{d:"M17.8822 0.88158L17.1463 0.145638C16.9383 -0.0623533 16.5543 -0.0303442 16.3143 0.257601L13.7541 2.80157C12.602 2.30562 11.3382 2.06562 10.0101 2.06562C6.05798 2.08156 2.6342 4.38553 0.986083 7.69774C0.890056 7.90573 0.890056 8.16166 0.986083 8.33765C1.75402 9.90567 2.90609 11.2017 4.34609 12.1776L2.2501 14.3056C2.0101 14.5456 1.97809 14.9296 2.13813 15.1376L2.87408 15.8735C3.08207 16.0815 3.46606 16.0495 3.70606 15.7616L17.754 1.71369C18.058 1.47383 18.09 1.08987 17.882 0.881855L17.8822 0.88158ZM10.8581 5.71347C10.5861 5.64945 10.2981 5.56949 10.0261 5.56949C8.66606 5.56949 7.57818 6.65752 7.57818 8.01743C7.57818 8.28943 7.64219 8.57738 7.72215 8.8494L6.65003 9.90544C6.33008 9.34548 6.15409 8.72138 6.15409 8.01746C6.15409 5.88948 7.86611 4.17746 9.99409 4.17746C10.6982 4.17746 11.3221 4.35344 11.8821 4.6734L10.8581 5.71347Z",fill:"#9A9CB0"}),_.createElement("path",{d:"M19.0347 7.69792C18.4747 6.57787 17.7386 5.56994 16.8267 4.75391L13.8507 7.69792V8.01787C13.8507 10.1459 12.1387 11.8579 10.0107 11.8579H9.69072L7.80273 13.7459C8.50679 13.8898 9.24274 13.9859 9.96274 13.9859C13.9149 13.9859 17.3386 11.6819 18.9868 8.35374C19.1307 8.12967 19.1307 7.90576 19.0347 7.69775L19.0347 7.69792Z",fill:"#9A9CB0"})),h4=r=>_.createElement("svg",{width:20,height:16,viewBox:"0 0 20 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},_.createElement("path",{d:"M17.8822 0.88158L17.1463 0.145638C16.9383 -0.0623533 16.5543 -0.0303442 16.3143 0.257601L13.7541 2.80157C12.602 2.30562 11.3382 2.06562 10.0101 2.06562C6.05798 2.08156 2.6342 4.38553 0.986083 7.69774C0.890056 7.90573 0.890056 8.16166 0.986083 8.33765C1.75402 9.90567 2.90609 11.2017 4.34609 12.1776L2.2501 14.3056C2.0101 14.5456 1.97809 14.9296 2.13813 15.1376L2.87408 15.8735C3.08207 16.0815 3.46606 16.0495 3.70606 15.7616L17.754 1.71369C18.058 1.47383 18.09 1.08987 17.882 0.881855L17.8822 0.88158ZM10.8581 5.71347C10.5861 5.64945 10.2981 5.56949 10.0261 5.56949C8.66606 5.56949 7.57818 6.65752 7.57818 8.01743C7.57818 8.28943 7.64219 8.57738 7.72215 8.8494L6.65003 9.90544C6.33008 9.34548 6.15409 8.72138 6.15409 8.01746C6.15409 5.88948 7.86611 4.17746 9.99409 4.17746C10.6982 4.17746 11.3221 4.35344 11.8821 4.6734L10.8581 5.71347Z",fill:"#31323A"}),_.createElement("path",{d:"M19.0347 7.69792C18.4747 6.57787 17.7386 5.56994 16.8267 4.75391L13.8507 7.69792V8.01787C13.8507 10.1459 12.1387 11.8579 10.0107 11.8579H9.69072L7.80273 13.7459C8.50679 13.8898 9.24274 13.9859 9.96274 13.9859C13.9149 13.9859 17.3386 11.6819 18.9868 8.35374C19.1307 8.12967 19.1307 7.90576 19.0347 7.69775L19.0347 7.69792Z",fill:"#31323A"})),m4=({id:r,items:t,onSelectItem:a,className:i="",activeIndex:s=-1})=>g.jsx("ul",{id:r,className:`${mi.dropdownListContainer} ${i}`,role:"listbox",children:t.map((c,d)=>{var f;return g.jsxs("li",{id:r?`${r}-item-${d}`:void 0,className:`body-1 ${mi.item} ${d===s?mi.activeItem:""}`,onClick:()=>a(c),onMouseDown:p=>p.preventDefault(),role:"option","aria-selected":d===s,tabIndex:-1,children:[c.label,c.color&&g.jsx("span",{className:mi.colorDot,style:{backgroundColor:c.color}})]},((f=c.value)==null?void 0:f.toString())||d.toString())})}),so={email:/^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*(\.[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)*\.[a-zA-Z]{2,}$/,phone:/^(\+7)?[\s-]?[(]?[0-9]{3}[)]?[\s-]?[0-9]{3}[\s-]?[0-9]{2}[\s-]?[0-9]{2}$/,name:/^[A-ZА-ЯЁ][A-Za-zА-Яа-яЁё\s',.-]*$/,site:/^(https?:\/\/)?([a-zA-Z0-9а-яА-ЯёЁ-]+\.)+[a-zA-Zа-яА-ЯёЁ]{2,}(\/.*)?$/i,number:/^-?\d*\.?\d+$/,password:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/},Tm={required:()=>"Поле обязательно для заполнения",email:()=>"Введите корректный email",phone:()=>"Введите корректный телефон",name:()=>"Введите корректное значение",site:()=>"Введите корректный URL сайта",number:()=>"Введите корректное число",year:()=>"Введите корректный год",textOnly:()=>"Поле не должно содержать цифры",date:()=>"Введите корректную дату рождения",password:()=>"Пароль должен содержать не менее 8 символов, заглавные и строчные буквы, цифры"},Gt=({placeholder:r,type:t,value:a="",name:i,label:s,className:c="",inputClassName:d="",wrapperClassName:f="",onChange:p,onInputValueChange:m,showIconOnInput:y=!1,onIconClick:v,suggestions:w,onSuggestionSelect:S,validation:E=!1,validationType:I,customErrorMessage:N,onValidationChange:D,maxlength:b,customError:B,...O})=>{const[j,q]=_.useState(!1),[x,W]=_.useState(-1),[re,ee]=_.useState(null),[Z,ie]=_.useState(!1),ve=_.useRef(null),[ge,$e]=_.useState(!1),[ke,oe]=_.useState(!1),H=ge?"text":t,ae=y&&a&&a.toString().length>0,X=ae&&v||t==="password",A=_.useCallback(Ae=>{if(B)return{isValid:!1,errorMsg:B};if(!E)return{isValid:!0,errorMsg:null};if(!I||Array.isArray(I)&&I.length===0)return{isValid:!0,errorMsg:null};const Ye=Ae.trim().replace(/\s\s+/g," "),Mt=Array.isArray(I)?I:[I],dt=Mt.includes("password")||Mt.includes("phone")?Ae:Ye;let Rt=null;const ur=s||r||"Это поле";let dr=!0;if(Mt.includes("required")&&(dt||(Rt=Tm.required(ur),dr=!1)),dr&&dt!=="")for(const qr of Mt){if(qr==="required")continue;let at=!0;const kr=new Date().getFullYear();switch(qr){case"email":so.email.test(dt)||(at=!1);break;case"phone":so.phone.test(dt)||(at=!1);break;case"name":so.name.test(dt)||(at=!1);break;case"site":so.site.test(dt)||(at=!1);break;case"number":so.number.test(dt)||(at=!1);break;case"textOnly":/\d/.test(dt)&&(at=!1);break;case"password":so.password.test(dt)||(at=!1);break;case"year":const Or=parseInt(dt,10);(isNaN(Or)||dt.length!==4||Or<1900||Or>kr)&&(at=!1);break;case"date":if(!/^\d{2}\.\d{2}\.\d{4}$/.test(dt))at=!1;else{const _t=dt.split("."),St=parseInt(_t[0],10),Zt=parseInt(_t[1],10),fr=parseInt(_t[2],10);if(isNaN(St)||isNaN(Zt)||isNaN(fr)||fr<1900||fr>kr||Zt<1||Zt>12||St<1||St>31)at=!1;else{const un=new Date(fr,Zt-1,St);(un.getFullYear()!==fr||un.getMonth()!==Zt-1||un.getDate()!==St)&&(at=!1)}}break}if(!at){dr=!1;const Or=qr==="year"||qr==="date"?kr:void 0;Rt||(Rt=Tm[qr](ur,Or));break}}return!dr&&N&&(Rt=N),{isValid:dr,errorMsg:Rt}},[E,I,N,s,r,B]);_.useEffect(()=>{B&&!Z&&ie(!0),ee(B||null)},[B]);const V=()=>{$e(Ae=>!Ae)},Ce=()=>ge?ke?{Component:h4,className:or.eyeIconCrossActive}:{Component:p4,className:or.eyeIconCross}:ke?{Component:f4,className:or.eyeIconActive}:{Component:d4,className:or.eyeIcon},{Component:Ee,className:_e}=Ce(),Te=re&&Z,Fe=[or.input,"body-1",d,Te&&or.inputError,X&&or.inputWithIcon].filter(Boolean).join(" ");_.useEffect(()=>{const Ae=Ye=>{ve.current&&!ve.current.contains(Ye.target)&&q(!1)};return document.addEventListener("mousedown",Ae),()=>document.removeEventListener("mousedown",Ae)},[]);const je=Ae=>{const Ye=Ae.target.value;if(Z||ie(!0),p&&p(Ae),m&&m(Ye),E){const{isValid:Mt,errorMsg:Dt}=A(Ye);ee(Dt),i&&D&&D(i,Mt)}w&&w.length>0?(q(Ye.length>0),W(-1)):q(!1)},Ve=Ae=>{S&&S(Ae),q(!1);const Ye=typeof Ae.value=="string"?Ae.value:Ae.label;if(E&&i&&D){const{isValid:Mt,errorMsg:Dt}=A(Ye);ee(Dt),D(i,Mt)}},Pt=Ae=>{oe(!0),w&&w.length>0&&a&&a.length>0&&q(!0),O.onFocus&&O.onFocus(Ae)},Tn=Ae=>{oe(!1);const Ye=Ae.target.value,Mt=Ye.trim().replace(/\s\s+/g," "),Dt=Array.isArray(I)?I:[I],Rt=(Dt==null?void 0:Dt.includes("password"))||(Dt==null?void 0:Dt.includes("phone"))?Ye:Mt;if(m&&Ye!==Rt&&t!=="password"&&t!=="phone"&&m(Rt),Z||ie(!0),E){const{isValid:ur,errorMsg:dr}=A(Rt);ee(dr),i&&D&&D(i,ur)}O.onBlur&&O.onBlur(Ae)},ut=Ae=>{j&&w&&w.length>0&&(Ae.key==="ArrowDown"?(Ae.preventDefault(),W(Ye=>(Ye+1)%w.length)):Ae.key==="ArrowUp"?(Ae.preventDefault(),W(Ye=>(Ye-1+w.length)%w.length)):Ae.key==="Enter"?x>=0&&x<w.length&&(Ae.preventDefault(),Ve(w[x])):Ae.key==="Escape"&&(q(!1),W(-1))),O.onKeyDown&&O.onKeyDown(Ae)},Vt=i?`${i}-dropdown`:"input-dropdown",cn=i?`${i}-error`:"input-error";return g.jsxs("div",{className:`${or.inputComponentWrapper} ${c} ${f}`,ref:ve,children:[s&&g.jsx("label",{className:"h3",children:s}),g.jsxs("div",{className:or.inputWrapper,children:[g.jsx("input",{className:Fe,type:H,inputMode:(Array.isArray(I)?I.some(Ae=>["year","number","date"].includes(Ae)):["year","number","date"].includes(I||""))?"numeric":void 0,pattern:(Array.isArray(I)?I.includes("date"):I==="date")?"\\d{2}\\.\\d{2}\\.\\d{4}":(Array.isArray(I)?I.some(Ae=>["year","number"].includes(Ae)):["year","number"].includes(I||""))?"[0-9]*":void 0,placeholder:r,value:a,name:i,onChange:je,onFocus:Pt,onBlur:Tn,onKeyDown:ut,autoComplete:"off","aria-autocomplete":"list","aria-expanded":j,"aria-controls":j?Vt:void 0,"aria-activedescendant":x!==-1?`${Vt}-item-${x}`:void 0,"aria-invalid":!!Te,"aria-describedby":Te?cn:void 0,maxLength:b,...O}),ae&&v&&g.jsx("button",{type:"button",className:`${or.inputIconBtn} icon__button`,tabIndex:-1,onMouseDown:Ae=>Ae.preventDefault(),onClick:()=>{v&&v(),q(!1)},children:g.jsx(u4,{className:or.inputIcon})}),t==="password"&&g.jsx("button",{type:"button",className:`${or.passwordToggleBtn} icon__button`,onMouseDown:Ae=>Ae.preventDefault(),onClick:V,"aria-label":ge?"Скрыть пароль":"Показать пароль",children:g.jsx(Ee,{className:_e})})]}),j&&w&&w.length>0&&g.jsx(m4,{id:Vt,items:w,onSelectItem:Ve,activeIndex:x,className:mi.dropdownPositioned}),g.jsx("div",{id:cn,className:`${or.errorMessage} ${Te?or.visible:""} body-3`,role:"alert","aria-live":"polite",children:re})]})},aa=r=>_.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},_.createElement("g",{clipPath:"url(#clip0_8501_6404)"},_.createElement("path",{d:"M18.992 1.72301C18.9935 1.94846 18.9441 2.17195 18.8466 2.38067C18.7491 2.58939 18.6055 2.77922 18.424 2.93929L9.43335 10.7852C9.24976 10.9444 9.10404 11.1339 9.0046 11.3427C8.90516 11.5514 8.85396 11.7753 8.85396 12.0015C8.85396 12.2276 8.90516 12.4515 9.0046 12.6603C9.10404 12.869 9.24976 13.0585 9.43335 13.2177L18.424 21.0636C18.7928 21.3862 19 21.8237 19 22.2799C19 22.7361 18.7928 23.1736 18.424 23.4962C18.0551 23.8188 17.5549 24 17.0332 24C16.775 24 16.5192 23.9555 16.2806 23.8691C16.042 23.7826 15.8252 23.6559 15.6425 23.4962L6.67153 15.6332C5.59899 14.6568 5 13.3554 5 12.0015C5 10.6475 5.59899 9.34609 6.67153 8.36974L15.6425 0.506725C15.8246 0.346163 16.0413 0.218716 16.28 0.131746C16.5187 0.044775 16.7747 0 17.0332 0C17.2918 0 17.5478 0.044775 17.7865 0.131746C18.0252 0.218716 18.2419 0.346163 18.424 0.506725C18.6055 0.666796 18.7491 0.856628 18.8466 1.06535C18.9441 1.27406 18.9935 1.49756 18.992 1.72301Z",fill:"#31323A"})),_.createElement("defs",null,_.createElement("clipPath",{id:"clip0_8501_6404"},_.createElement("rect",{width:24,height:24,fill:"white"})))),y4="/static/company_white-icon-oEqAmg-k.png",di=r=>r?/^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*(\.[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)*\.[a-zA-Z]{2,}$/.test(r):!1,g4=({onClose:r,onSubmit:t,error:a,onClearError:i,initialEmail:s=""})=>{const[c,d]=_.useState(s),[f,p]=_.useState(!1),[m,y]=_.useState("Ищу работу"),[v,w]=_.useState(!1),S=_.useRef(!1),E=_.useRef(null);_.useEffect(()=>{di(s)&&p(!0)},[s]);const I=()=>{w(!0),setTimeout(()=>{r()},300)},N=x=>{x.target===x.currentTarget&&(S.current=!0)},D=x=>{x.target===x.currentTarget&&S.current&&I(),S.current=!1},b=x=>{x&&x.preventDefault(),(f||di(c))&&t({email:c,applicantType:m})},B=x=>{a&&i(),d(x),p(di(x))},O=(x,W)=>{p(W)},j=x=>{y(x),a&&i(),p(di(c)),setTimeout(()=>{if(E.current){const W=E.current.querySelector('input[name="email"]');W&&W.focus()}},0)},q=x=>{if(x.key==="Enter"){const W=x.target;if(W.tagName==="BUTTON"&&W.type==="submit")return;x.preventDefault(),b()}};return g.jsx("div",{className:`${Ct.modalOverlay} ${v?Ct.closing:""}`,onMouseDown:N,onMouseUp:D,children:g.jsxs("div",{className:Ct.modalContent,children:[g.jsxs("div",{className:Ct.modalName,children:[g.jsx(aa,{className:Ct.modalBack,onClick:I}),g.jsx("span",{className:"h2",children:"Вход и регистрация"})]}),g.jsxs("div",{className:Ct.modalHeader,children:[g.jsx("span",{className:"h2",children:"Вход и регистрация"}),g.jsx(na,{className:Ct.modalClose,onClick:I})]}),g.jsxs("form",{ref:E,className:Ct.modalForm,onSubmit:b,onKeyDown:q,noValidate:!0,children:[g.jsxs("div",{className:Ct.typeSelector,children:[g.jsxs("button",{type:"button",className:`${Ct.typeCard} ${m==="Ищу работу"?Ct.typeCardActive:""}`,onClick:()=>j("Ищу работу"),children:[g.jsx("div",{className:Ct.cardIconWrapper,children:g.jsx("img",{src:k1,alt:"avatar"})}),g.jsxs("span",{className:`body-3 ${Ct.cardText}`,children:["Я соискатель,",g.jsx("br",{}),"ищу работу"]})]}),g.jsxs("button",{type:"button",className:`${Ct.typeCard} ${m==="Ищу сотрудников"?Ct.typeCardActive:""}`,onClick:()=>j("Ищу сотрудников"),children:[g.jsx("div",{className:Ct.cardIconWrapper,children:g.jsx("img",{src:y4,alt:"company"})}),g.jsxs("span",{className:`body-3 ${Ct.cardText}`,children:["Я работодатель,",g.jsx("br",{}),"ищу сотрудников"]})]})]}),g.jsxs("label",{htmlFor:"email",className:`${Ct.label} body-2`,children:["Электронная почта",g.jsx(Gt,{name:"email",type:"email",placeholder:"address@mail.ru",value:c,onInputValueChange:B,validation:!0,validationType:["required","email"],onValidationChange:O,customError:a,autoFocus:!0})]}),g.jsx(jt,{type:"submit",disabled:!(f||di(c)),className:Ct.submitButton,children:"Далее"})]})]})})},v4="_modalOverlay_nn5g0_1",w4="_modalContent_nn5g0_13",C4="_modalBack_nn5g0_28",_4="_modalHeader_nn5g0_51",S4="_modalName_nn5g0_58",x4="_modalClose_nn5g0_64",E4="_modalForm_nn5g0_75",k4="_infoText_nn5g0_80",T4="_label_nn5g0_85",I4="_resendButton_nn5g0_92",b4="_changeEmailLink_nn5g0_111",P4="_closing_nn5g0_192",ir={modalOverlay:v4,modalContent:w4,modalBack:C4,modalHeader:_4,modalName:S4,modalClose:x4,modalForm:E4,infoText:k4,label:T4,resendButton:I4,changeEmailLink:b4,closing:P4},R4=({email:r,error:t,onClose:a,onSubmit:i,onBack:s,onResendCode:c,onClearError:d})=>{const[f,p]=_.useState(""),[m,y]=_.useState(59),[v,w]=_.useState(!0),[S,E]=_.useState(!1),I=_.useRef(!1),N=()=>{E(!0),setTimeout(()=>{a()},300)};_.useEffect(()=>{if(!v)return;if(m===0){w(!1);return}const W=setInterval(()=>{y(re=>re-1)},1e3);return()=>clearInterval(W)},[m,v]);const D=()=>{c(),y(59),w(!0)},b=W=>{W.target===W.currentTarget&&(I.current=!0)},B=W=>{W.target===W.currentTarget&&I.current&&N(),I.current=!1},O=W=>{W.preventDefault(),f.length>=6&&i(f)},j=W=>{t&&d(),p(W)},q=f.length<6,x=`0:${m<10?"0":""}${m}`;return g.jsx("div",{className:`${ir.modalOverlay} ${S?ir.closing:""}`,onMouseDown:b,onMouseUp:B,children:g.jsxs("div",{className:ir.modalContent,children:[g.jsxs("div",{className:ir.modalName,children:[g.jsx(aa,{className:ir.modalBack,onClick:s}),g.jsx("span",{className:"h2",children:"Вход и регистрация"})]}),g.jsxs("div",{className:ir.modalHeader,children:[g.jsx("span",{className:"h2",children:"Введите код"}),g.jsx(na,{className:ir.modalClose,onClick:N})]}),g.jsxs("form",{className:ir.modalForm,onSubmit:O,noValidate:!0,children:[g.jsxs("p",{className:`${ir.infoText} body-1`,children:["Мы отправили код подтверждения на почту"," ",g.jsx("span",{className:ir.emailText,children:r}),". Код будет действителен в течение 5 минут"]}),g.jsx("button",{type:"button",className:`${ir.changeEmailLink} body-1`,onClick:s,children:"Изменить почту"}),g.jsxs("label",{htmlFor:"code",className:`${ir.label} body-2`,children:["Код из письма",g.jsx(Gt,{name:"code",type:"text",placeholder:"XXXXXX",value:f,onInputValueChange:j,maxLength:6,customError:t,autoFocus:!0})]}),g.jsx(jt,{type:"button",variant:"outlined",onClick:D,disabled:v,className:ir.resendButton,children:v?`Отправить повторно через ${x}`:"Отправить повторно"}),g.jsx(jt,{type:"submit",disabled:q,className:ir.submitButton,children:"Далее"})]})]})})},A4="_modalOverlay_17t98_1",N4="_modalContent_17t98_13",L4="_modalBack_17t98_28",j4="_modalHeader_17t98_51",M4="_modalName_17t98_58",D4="_modalClose_17t98_64",$4="_modalForm_17t98_75",O4="_infoText_17t98_80",F4="_label_17t98_85",U4="_changeEmailLink_17t98_110",z4="_submitButton_17t98_123",B4="_closing_17t98_195",Yt={modalOverlay:A4,modalContent:N4,modalBack:L4,modalHeader:j4,modalName:M4,modalClose:D4,modalForm:$4,infoText:O4,label:F4,changeEmailLink:U4,submitButton:z4,closing:B4},V4=({email:r,error:t,onClose:a,onSubmit:i,onBack:s,onForgotPassword:c,onClearError:d})=>{const[f,p]=_.useState(""),[m,y]=_.useState(!1),[v,w]=_.useState(!1),S=_.useRef(!1),E=()=>{w(!0),setTimeout(()=>{a()},300)},I=O=>{O.target===O.currentTarget&&(S.current=!0)},N=O=>{O.target===O.currentTarget&&S.current&&E(),S.current=!1},D=O=>{O.preventDefault(),m&&i(f)},b=(O,j)=>{O==="password"&&y(j)},B=O=>{t&&d(),p(O)};return g.jsx("div",{className:`${Yt.modalOverlay} ${v?Yt.closing:""}`,onMouseDown:I,onMouseUp:N,children:g.jsxs("div",{className:Yt.modalContent,children:[g.jsxs("div",{className:Yt.modalName,children:[g.jsx(aa,{className:Yt.modalBack,onClick:s}),g.jsx("span",{className:"h2",children:"Вход и регистрация"})]}),g.jsxs("div",{className:Yt.modalHeader,children:[g.jsx("span",{className:"h2",children:"Введите пароль"}),g.jsx(na,{className:Yt.modalClose,onClick:E})]}),g.jsxs("form",{className:Yt.modalForm,onSubmit:D,noValidate:!0,children:[g.jsx("p",{className:`${Yt.infoText} body-1`,children:g.jsx("span",{className:Yt.emailText,children:r})}),g.jsx("button",{type:"button",className:`${Yt.changeEmailLink} body-1`,onClick:s,children:"Изменить почту"}),g.jsxs("label",{htmlFor:"password",className:`${Yt.label} body-2`,children:["Пароль",g.jsx(Gt,{name:"password",type:"password",placeholder:"Введите пароль",value:f,onInputValueChange:B,validation:!0,validationType:["required"],onValidationChange:b,customError:t,autoFocus:!0})]}),g.jsx(jt,{type:"submit",disabled:!m,className:Yt.submitButton,children:"Войти"}),g.jsx("span",{className:`${Yt.label} body-2`,children:"Забыли пароль?"}),g.jsx(jt,{type:"button",variant:"outlined",onClick:c,className:Yt.restoreButton,children:"Восстановить доступ"})]})]})})},H4="_modalOverlay_c5ly2_1",W4="_modalContent_c5ly2_13",K4="_modalBack_c5ly2_32",Y4="_modalHeader_c5ly2_51",q4="_modalName_c5ly2_58",G4="_modalClose_c5ly2_64",Q4="_modalForm_c5ly2_75",Z4="_title_c5ly2_94",J4="_recommendationText_c5ly2_99",X4="_label_c5ly2_105",e8="_submitButton_c5ly2_129",t8="_backButton_c5ly2_133",r8="_closing_c5ly2_226",sr={modalOverlay:H4,modalContent:W4,modalBack:K4,modalHeader:Y4,modalName:q4,modalClose:G4,modalForm:Q4,title:Z4,recommendationText:J4,label:X4,submitButton:e8,backButton:t8,closing:r8};function n8({onClose:r,onSubmit:t,onBack:a}){const[i,s]=_.useState(""),[c,d]=_.useState(""),[f,p]=_.useState(!1),[m,y]=_.useState(!1),v=_.useRef(!1),w=()=>{y(!0),setTimeout(()=>{r()},300)},S=i===c,E=f&&c!==""&&S,I=b=>{b.preventDefault(),E&&t(i)},N=b=>{b.target===b.currentTarget&&(v.current=!0)},D=b=>{b.target===b.currentTarget&&v.current&&w(),v.current=!1};return g.jsx("div",{className:`${sr.modalOverlay} ${m?sr.closing:""}`,onMouseDown:N,onMouseUp:D,children:g.jsxs("div",{className:sr.modalContent,children:[g.jsxs("div",{className:sr.modalName,children:[g.jsx(aa,{className:sr.modalBack,onClick:a}),g.jsx("span",{className:"h2",children:"Вход и регистрация"})]}),g.jsxs("div",{className:sr.modalHeader,children:[g.jsx("button",{type:"button",onClick:a,className:sr.backButton,children:g.jsxs("span",{className:"body-1",children:["<"," Назад"]})}),g.jsx(na,{className:sr.modalClose,onClick:w})]}),g.jsx("h2",{className:`h2 ${sr.title}`,children:"Создайте пароль"}),g.jsxs("form",{className:sr.modalForm,onSubmit:I,noValidate:!0,children:[g.jsxs("label",{className:`${sr.label} body-2`,children:["Пароль",g.jsx(Gt,{name:"password",type:"password",placeholder:"Пароль",value:i,onInputValueChange:s,validation:!0,validationType:["password"],onValidationChange:(b,B)=>p(B),autoFocus:!0})]}),g.jsx("p",{className:`${sr.recommendationText} body-3`,children:"Рекомендуется использовать не менее 8 символов, включая заглавные и строчные буквы, цифры и специальные символы (!, @, #, $ и т. д.)"}),g.jsxs("label",{className:`${sr.label} body-2`,children:["Подтверждение пароля",g.jsx(Gt,{name:"confirmPassword",type:"password",placeholder:"Пароль",value:c,onInputValueChange:d,validation:!0,customError:c.length>0&&!S?"Пароли не совпадают":void 0})]}),g.jsx(jt,{type:"submit",disabled:!E,className:sr.submitButton,children:"Далее"})]})]})})}const a8="_modalOverlay_1oes2_1",o8="_modalContent_1oes2_13",i8="_modalBack_1oes2_28",s8="_modalHeader_1oes2_51",l8="_modalName_1oes2_58",c8="_modalClose_1oes2_64",u8="_modalForm_1oes2_75",d8="_title_1oes2_94",f8="_recommendationText_1oes2_99",p8="_label_1oes2_105",h8="_submitButton_1oes2_142",m8="_backButton_1oes2_146",y8="_closing_1oes2_239",lr={modalOverlay:a8,modalContent:o8,modalBack:i8,modalHeader:s8,modalName:l8,modalClose:c8,modalForm:u8,title:d8,recommendationText:f8,label:p8,submitButton:h8,backButton:m8,closing:y8};function g8({onClose:r,onSubmit:t,onBack:a}){const[i,s]=_.useState(""),[c,d]=_.useState(""),[f,p]=_.useState(!1),[m,y]=_.useState(!1),v=_.useRef(!1),w=()=>{y(!0),setTimeout(()=>{r()},300)},S=i===c,E=f&&c!==""&&S,I=b=>{b.preventDefault(),E&&t(i)},N=b=>{b.target===b.currentTarget&&(v.current=!0)},D=b=>{b.target===b.currentTarget&&v.current&&w(),v.current=!1};return g.jsx("div",{className:`${lr.modalOverlay} ${m?lr.closing:""}`,onMouseDown:N,onMouseUp:D,children:g.jsxs("div",{className:lr.modalContent,children:[g.jsxs("div",{className:lr.modalName,children:[g.jsx(aa,{className:lr.modalBack,onClick:a}),g.jsx("span",{className:"h2",children:"Вход и регистрация"})]}),g.jsxs("div",{className:lr.modalHeader,children:[g.jsx("button",{type:"button",onClick:a,className:lr.backButton,children:g.jsxs("span",{className:"body-1",children:["<"," Назад"]})}),g.jsx(na,{className:lr.modalClose,onClick:w})]}),g.jsx("h2",{className:`h2 ${lr.title}`,children:"Создайте новый пароль"}),g.jsxs("form",{className:lr.modalForm,onSubmit:I,noValidate:!0,children:[g.jsxs("label",{className:`${lr.label} body-2`,children:["Пароль",g.jsx(Gt,{name:"password",type:"password",placeholder:"Пароль",value:i,onInputValueChange:s,validation:!0,validationType:["password"],onValidationChange:(b,B)=>p(B),autoFocus:!0})]}),g.jsx("p",{className:`${lr.recommendationText} body-3`,children:"Рекомендуется использовать не менее 8 символов, включая заглавные и строчные буквы, цифры и специальные символы (!, @, #, $ и т. д.)"}),g.jsxs("label",{className:`${lr.label} body-2`,children:["Подтверждение пароля",g.jsx(Gt,{name:"confirmPassword",type:"password",placeholder:"Пароль",value:c,onInputValueChange:d,validation:!0,customError:c.length>0&&!S?"Пароли не совпадают":void 0})]}),g.jsx(jt,{type:"submit",disabled:!E,className:lr.submitButton,children:"Далее"})]})]})})}const v8="_modalOverlay_1ufey_1",w8="_modalContent_1ufey_13",C8="_modalBack_1ufey_28",_8="_modalHeader_1ufey_51",S8="_modalName_1ufey_58",x8="_modalClose_1ufey_64",E8="_modalForm_1ufey_75",k8="_title_1ufey_87",T8="_label_1ufey_98",I8="_submitButton_1ufey_117",b8="_backButton_1ufey_126",P8="_legalConsent_1ufey_151",R8="_legalNote_1ufey_157",A8="_closing_1ufey_235",It={modalOverlay:v8,modalContent:w8,modalBack:C8,modalHeader:_8,modalName:S8,modalClose:x8,modalForm:E8,title:k8,label:T8,submitButton:I8,backButton:b8,legalConsent:P8,legalNote:R8,closing:A8},N8="_container_uzbmc_1",L8="_containerLabel_uzbmc_9",j8="_containerLabel_disabled_uzbmc_18",M8="_checkboxInput_uzbmc_23",D8="_visualCheckbox_uzbmc_37",$8="_visualCheckbox_checked_uzbmc_52",O8="_visualCheckbox_disabled_unchecked_uzbmc_64",F8="_visualCheckbox_disabled_checked_uzbmc_69",U8="_container_mobile_uzbmc_74",z8="_mobileTag_uzbmc_94",B8="_mobileTag_checked_uzbmc_110",V8="_mobileTag_disabled_uzbmc_115",H8="_checkboxInput_hidden_uzbmc_124",cr={container:N8,containerLabel:L8,containerLabel_disabled:j8,checkboxInput:M8,visualCheckbox:D8,visualCheckbox_checked:$8,visualCheckbox_disabled_unchecked:O8,visualCheckbox_disabled_checked:F8,container_mobile:U8,mobileTag:z8,mobileTag_checked:B8,mobileTag_disabled:V8,checkboxInput_hidden:H8},W8="data:image/svg+xml,%3csvg%20width='20'%20height='15'%20viewBox='0%200%2020%2015'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M18.599%200.692507L7.08319%2012.2075C7.00577%2012.2852%206.91375%2012.3469%206.81244%2012.389C6.71112%2012.4311%206.60248%2012.4527%206.49277%2012.4527C6.38306%2012.4527%206.27443%2012.4311%206.17311%2012.389C6.07179%2012.3469%205.97978%2012.2852%205.90236%2012.2075L1.44902%207.75001C1.3716%207.67228%201.27959%207.6106%201.17827%207.56851C1.07695%207.52643%200.968318%207.50477%200.858607%207.50477C0.748895%207.50477%200.640264%207.52643%200.538945%207.56851C0.437626%207.6106%200.345615%207.67228%200.26819%207.75001C0.19046%207.82743%200.128782%207.91944%200.0866978%208.02076C0.0446131%208.12208%200.0229492%208.23071%200.0229492%208.34042C0.0229492%208.45013%200.0446131%208.55877%200.0866978%208.66008C0.128782%208.7614%200.19046%208.85342%200.26819%208.93084L4.72319%2013.385C5.19315%2013.8541%205.83002%2014.1175%206.49402%2014.1175C7.15803%2014.1175%207.7949%2013.8541%208.26486%2013.385L19.7799%201.87251C19.8575%201.7951%2019.919%201.70314%2019.961%201.6019C20.0031%201.50065%2020.0247%201.39212%2020.0247%201.28251C20.0247%201.17289%2020.0031%201.06436%2019.961%200.963117C19.919%200.861875%2019.8575%200.769916%2019.7799%200.692507C19.7024%200.614776%2019.6104%200.553099%2019.5091%200.511014C19.4078%200.46893%2019.2992%200.447266%2019.1894%200.447266C19.0797%200.447266%2018.9711%200.46893%2018.8698%200.511014C18.7685%200.553099%2018.6764%200.614776%2018.599%200.692507Z'%20fill='white'/%3e%3c/svg%3e",I1=({options:r,value:t,onChange:a,name:i,className:s="",type:c="classic",...d})=>{const f=_.useId(),p=[c==="mobile"?cr.container_mobile:cr.container,s].filter(Boolean).join(" "),m=(y,v)=>{v||(t.includes(y)?a(t.filter(w=>w!==y)):a([...t,y]))};return g.jsx("div",{className:p,children:r.map(y=>{const v=`${i}-${String(y.value).replace(/\s+/g,"-")}-${f}`,w=t.includes(y.value);if(c==="mobile"){const I=[cr.mobileTag,w&&cr.mobileTag_checked,y.disabled&&cr.mobileTag_disabled].filter(Boolean).join(" ");return g.jsxs("label",{htmlFor:v,className:`${I} body-3`,children:[g.jsx("input",{type:"checkbox",id:v,className:cr.checkboxInput_hidden,checked:w,onChange:()=>m(y.value,y.disabled),disabled:y.disabled,name:i,value:y.value,"aria-checked":w,...d}),y.label]},y.value)}const S=[cr.visualCheckbox,w&&cr.visualCheckbox_checked,y.disabled&&(w?cr.visualCheckbox_disabled_checked:cr.visualCheckbox_disabled_unchecked)].filter(Boolean).join(" "),E=[cr.containerLabel,y.disabled?cr.containerLabel_disabled:""].filter(Boolean).join(" ");return g.jsxs("label",{htmlFor:v,className:E,children:[g.jsx("input",{type:"checkbox",id:v,className:cr.checkboxInput,checked:w,onChange:()=>m(y.value,y.disabled),disabled:y.disabled,name:i,value:y.value,"aria-checked":w,...d}),g.jsx("span",{className:S,"aria-hidden":"true",children:w&&g.jsx("img",{src:W8,alt:""})}),y.label&&g.jsx("span",{className:`${cr.label} body-1`,children:y.label})]},y.value)})})},K8=r=>r.replace(/[^\d]/g,"").slice(0,8).replace(/(\d{2})(\d{0,2})(\d{0,4})/,(t,a,i,s)=>{let c=a;return i&&(c+=`.${i}`),s&&(c+=`.${s}`),c}),Im=r=>{if(!r||r.length<10)return!1;const t=r.split(".");if(t.length!==3)return!1;const a=parseInt(t[0],10),i=parseInt(t[1],10)-1,s=parseInt(t[2],10);if(isNaN(a)||isNaN(i)||isNaN(s))return!1;const c=new Date(s,i,a);if(c.getFullYear()!==s||c.getMonth()!==i||c.getDate()!==a)return!1;const d=new Date;let f=d.getFullYear()-c.getFullYear();const p=d.getMonth()-c.getMonth();return(p<0||p===0&&d.getDate()<c.getDate())&&f--,f>=18};function Y8({onClose:r,onSubmit:t,onBack:a}){const[i,s]=_.useState({firstName:"",lastName:"",birthDate:"",city:""}),[c,d]=_.useState({firstName:!1,lastName:!1,birthDate:!1,city:!1}),[f,p]=_.useState(!1),[m,y]=_.useState([]),v=_.useRef(!1),w=()=>{p(!0),setTimeout(()=>{r()},300)},S=(O,j)=>{const q=O==="birthDate"?K8(j):j;s(x=>({...x,[O]:q}))},E=(O,j)=>{d(q=>({...q,[O]:j}))},I=Object.values(c).every(Boolean)&&Im(i.birthDate),N=m.length>0,D=O=>{O.preventDefault(),I&&N&&t(i)},b=O=>{O.target===O.currentTarget&&(v.current=!0)},B=O=>{O.target===O.currentTarget&&v.current&&w(),v.current=!1};return g.jsx("div",{className:`${It.modalOverlay} ${f?It.closing:""}`,onMouseDown:b,onMouseUp:B,children:g.jsxs("div",{className:It.modalContent,children:[g.jsxs("div",{className:It.modalName,children:[g.jsx(aa,{className:It.modalBack,onClick:a}),g.jsx("span",{className:"h2",children:"Вход и регистрация"})]}),g.jsxs("div",{className:It.modalHeader,children:[g.jsx("button",{type:"button",onClick:a,className:It.backButton,children:g.jsxs("span",{className:"body-1",children:["<"," Назад"]})}),g.jsx(na,{className:It.modalClose,onClick:w})]}),g.jsx("h2",{className:`h2 ${It.title}`,children:"Введите информацию о себе"}),g.jsxs("form",{className:It.modalForm,onSubmit:D,noValidate:!0,children:[g.jsxs("label",{className:`${It.label} body-2`,children:["Имя",g.jsx(Gt,{name:"firstName",type:"text",placeholder:"Иван",value:i.firstName,onInputValueChange:O=>S("firstName",O),validation:!0,validationType:["required","name"],onValidationChange:E,maxLength:50,autoFocus:!0})]}),g.jsxs("label",{className:`${It.label} body-2`,children:["Фамилия",g.jsx(Gt,{name:"lastName",type:"text",placeholder:"Иванов",value:i.lastName,onInputValueChange:O=>S("lastName",O),validation:!0,validationType:["required","name"],onValidationChange:E,maxLength:50})]}),g.jsxs("label",{className:`${It.label} body-2`,children:["Дата рождения",g.jsx(Gt,{name:"birthDate",type:"text",placeholder:"ДД.ММ.ГГГГ",value:i.birthDate,onInputValueChange:O=>S("birthDate",O),validation:!0,validationType:["required","date"],onValidationChange:E,maxLength:10,customError:i.birthDate.length===10&&!Im(i.birthDate)?"Возраст должен быть не менее 18 лет":void 0})]}),g.jsxs("label",{className:`${It.label} body-2`,children:["Город",g.jsx(Gt,{name:"city",type:"text",placeholder:"Москва",value:i.city,onInputValueChange:O=>S("city",O),validation:!0,validationType:["required","name"],onValidationChange:E,maxLength:50})]}),g.jsxs("div",{className:It.submitApplicantInfo,children:[g.jsxs("div",{className:It.legalConsent,children:[g.jsx(I1,{name:"consent",options:[{value:"agreed",label:""}],value:m,onChange:y}),g.jsxs("p",{className:`${It.legalNote} body-3`,children:["Нажимая «Войти», я принимаю условия"," ",g.jsx(Ge,{to:"/applicant-agreement",target:"_blank",rel:"noopener noreferrer",children:"Пользовательского соглашения"}),", подтверждаю, что ознакомлен с"," ",g.jsx(Ge,{to:"/privacy-policy",target:"_blank",rel:"noopener noreferrer",children:"Политикой в отношении персональных данных"})," ","и даю свое"," ",g.jsx(Ge,{to:"/personal-data-policy",target:"_blank",rel:"noopener noreferrer",children:"Согласие на обработку персональных данных"})]})]}),g.jsx(jt,{type:"submit",disabled:!I||!N,className:It.submitButton,children:"Войти"})]})]})]})})}const q8="_modalOverlay_1ufey_1",G8="_modalContent_1ufey_13",Q8="_modalBack_1ufey_28",Z8="_modalHeader_1ufey_51",J8="_modalName_1ufey_58",X8="_modalClose_1ufey_64",e9="_modalForm_1ufey_75",t9="_title_1ufey_87",r9="_label_1ufey_98",n9="_submitButton_1ufey_117",a9="_backButton_1ufey_126",o9="_legalConsent_1ufey_151",i9="_legalNote_1ufey_157",s9="_closing_1ufey_235",bt={modalOverlay:q8,modalContent:G8,modalBack:Q8,modalHeader:Z8,modalName:J8,modalClose:X8,modalForm:e9,title:t9,label:r9,submitButton:n9,backButton:a9,legalConsent:o9,legalNote:i9,closing:s9};function l9(r,t){const[a,i]=_.useState(r);return _.useEffect(()=>{const s=setTimeout(()=>{i(r)},t);return()=>{clearTimeout(s)}},[r,t]),a}function c9({onClose:r,onSubmit:t,onBack:a}){const[i,s]=_.useState({firstName:"",lastName:"",company:null,position:""}),[c,d]=_.useState({firstName:!1,lastName:!1,companyName:!1,position:!1}),[f,p]=_.useState(""),m=l9(f,500),[y,v]=_.useState([]),[w,S]=_.useState(!1),[E,I]=_.useState([]),N=_.useRef(!1),D=()=>{S(!0),setTimeout(()=>{r()},300)};_.useEffect(()=>{if(m.trim().length===0){v([]);return}zt.listCompaniesWithSearch(m).then(Z=>{v(((Z==null?void 0:Z.companies)||[]).map(ie=>({label:ie.companyName,value:ie.id})))}).catch(()=>v([]))},[m]);const b=(Z,ie)=>{d(ve=>({...ve,[Z]:ie}))},B=(Z,ie)=>{s(ve=>({...ve,[Z]:ie}))},O=Z=>{p(Z),s(ie=>({...ie,company:{companyName:Z}})),b("companyName",Z.trim()!=="")},j=Z=>{p(Z.label),s(ie=>({...ie,company:{id:Z.value,companyName:Z.label}})),v([]),b("companyName",!0)},q=Object.values(c).every(Boolean),x=E.length>0,W=Z=>{Z.preventDefault(),q&&x&&t(i)},re=Z=>{Z.target===Z.currentTarget&&(N.current=!0)},ee=Z=>{Z.target===Z.currentTarget&&N.current&&D(),N.current=!1};return g.jsx("div",{className:`${bt.modalOverlay} ${w?bt.closing:""}`,onMouseDown:re,onMouseUp:ee,children:g.jsxs("div",{className:bt.modalContent,children:[g.jsxs("div",{className:bt.modalName,children:[g.jsx(aa,{className:bt.modalBack,onClick:a}),g.jsx("span",{className:"h2",children:"Вход и регистрация"})]}),g.jsxs("div",{className:bt.modalHeader,children:[g.jsx("button",{type:"button",onClick:a,className:bt.backButton,children:g.jsxs("span",{className:"body-1",children:["<"," Назад"]})}),g.jsx(na,{className:bt.modalClose,onClick:D})]}),g.jsx("h2",{className:`h2 ${bt.title}`,children:"Введите информацию о себе"}),g.jsxs("form",{className:bt.modalForm,onSubmit:W,noValidate:!0,children:[g.jsxs("label",{className:`${bt.label} body-2`,children:["Имя",g.jsx(Gt,{name:"firstName",type:"text",placeholder:"Иван",value:i.firstName,onInputValueChange:Z=>B("firstName",Z),validation:!0,validationType:["required","name"],onValidationChange:b,maxLength:50,autoFocus:!0})]}),g.jsxs("label",{className:`${bt.label} body-2`,children:["Фамилия",g.jsx(Gt,{name:"lastName",type:"text",placeholder:"Иванов",value:i.lastName,onInputValueChange:Z=>B("lastName",Z),validation:!0,validationType:["required","name"],onValidationChange:b,maxLength:50})]}),g.jsxs("label",{className:`${bt.label} body-2`,children:["Название компании",g.jsx(Gt,{name:"companyName",type:"text",placeholder:"ООО «Компания»",value:f,onInputValueChange:O,onSuggestionSelect:j,suggestions:y,validation:!0,validationType:["required"],onValidationChange:b,maxLength:100})]}),g.jsxs("label",{className:`${bt.label} body-2`,children:["Должность",g.jsx(Gt,{name:"position",type:"text",placeholder:"Менеджер",value:i.position,onInputValueChange:Z=>B("position",Z),validation:!0,validationType:["required"],onValidationChange:b,maxLength:100})]}),g.jsxs("div",{className:bt.submitApplicantInfo,children:[g.jsxs("div",{className:bt.legalConsent,children:[g.jsx(I1,{name:"consent",options:[{value:"agreed",label:""}],value:E,onChange:I}),g.jsxs("p",{className:`${bt.legalNote} body-3`,children:["Нажимая «Войти», я принимаю условия"," ",g.jsx(Ge,{to:"/employer-offer",target:"_blank",rel:"noopener noreferrer",children:"Публичной оферты"}),", подтверждаю, что ознакомлен с"," ",g.jsx(Ge,{to:"/privacy-policy",target:"_blank",rel:"noopener noreferrer",children:"Политикой в отношении персональных данных"})," ","и даю свое"," ",g.jsx(Ge,{to:"/personal-data-policy",target:"_blank",rel:"noopener noreferrer",children:"Согласие на обработку персональных данных"})]})]}),g.jsx(jt,{type:"submit",disabled:!q||!x,className:bt.submitButton,children:"Войти"})]})]})]})})}const u9=r=>r==="Ищу сотрудников"?"employer":"applicant",d9=r=>{if(!r||!/^\d{2}\.\d{2}\.\d{4}$/.test(r))return null;const[t,a,i]=r.split(".");return`${i}-${a}-${t}`};function f9({onClose:r}){const t=Er(),a=ln(),[i]=Td(),[s,c]=_.useState("mail"),[d,f]=_.useState("register"),[p,m]=_.useState({email:"",role:"applicant",password:"",code:""}),[y,v]=_.useState(null),[w,S]=_.useState([]);_.useEffect(()=>{s==="registerEmployer"&&w.length===0&&zt.listCompanies().then(ee=>{S(ee.companies||[])}).catch(()=>{v("Не удалось загрузить список компаний")})},[s,w.length]);const E=_.useCallback(()=>{v(null)},[]),I=()=>{v(null),c(s==="login"?"mail":s==="code"?d==="recover"?"login":"mail":s==="createNewPassword"||s==="createPassword"?"code":s==="registerApplicant"||s==="registerEmployer"?"createPassword":"mail")},N=()=>{r();const ee=i.get("redirect_url");a(ee||"/profile")},D=async({email:ee,applicantType:Z})=>{var ve,ge,$e,ke,oe,H;v(null);const ie=u9(Z);m(ae=>({...ae,email:ee,role:ie}));try{const ae=await zt.checkEmail({email:ee,role:ie}),X=(ve=ae==null?void 0:ae.message)==null?void 0:ve.toLowerCase();if(X==="invalid email format"){v("Введите корректный email");return}if(X==="user with such email already registered with another role"){v(`Этот email уже используется для входа как ${ie==="applicant"?"работодатель":"соискатель"}`);return}X==="user not found"?(f("register"),await zt.sendCode({email:ee}),c("code")):c("login")}catch(ae){const X=((ke=($e=(ge=ae==null?void 0:ae.response)==null?void 0:ge.data)==null?void 0:$e.message)==null?void 0:ke.toLowerCase())||"";v(X==="invalid email format"?"Неверный формат электронной почты":((H=(oe=ae==null?void 0:ae.response)==null?void 0:oe.data)==null?void 0:H.message)||"Произошла непредвиденная ошибка")}},b=async ee=>{v(null);try{const Z=await t(vo({email:p.email,password:ee}));ld(Z),N()}catch(Z){const ie=(typeof Z=="string"?Z:Z.message||"").toLowerCase();ie.toLowerCase()==="invalid password"?v("Неправильный пароль"):ie.toLowerCase()==="user not found"?v("Неправильный логин"):v("Произошла ошибка входа")}},B=async()=>{var ee,Z;v(null);try{f("recover"),await zt.resetPassword({email:p.email}),c("code")}catch(ie){v(((Z=(ee=ie==null?void 0:ie.response)==null?void 0:ee.data)==null?void 0:Z.message)||"Не удалось отправить код восстановления")}},O=async ee=>{var Z,ie,ve;v(null);try{d==="register"?(await zt.verifyCode({email:p.email,code:ee}),m(ge=>({...ge,code:ee})),c("createPassword")):(await zt.resetPasswordConfirm({email:p.email,code:ee}),m(ge=>({...ge,code:ee})),c("createNewPassword"))}catch(ge){const $e=((ve=(ie=(Z=ge==null?void 0:ge.response)==null?void 0:Z.data)==null?void 0:ie.message)==null?void 0:ve.toLowerCase())||"";$e.toLowerCase()==="invalid code"?v("Неправильный код"):$e.toLowerCase()==="code expired"?v("Срок действия кода истек"):v("Произошла ошибка при проверке кода")}},j=async ee=>{var Z,ie;v(null);try{await zt.resetPasswordConfirm({email:p.email,code:p.code,newPassword:ee}),c("login")}catch(ve){v(((ie=(Z=ve==null?void 0:ve.response)==null?void 0:Z.data)==null?void 0:ie.message)||"Не удалось сбросить пароль")}},q=ee=>{v(null),m(Z=>({...Z,password:ee})),p.role==="applicant"?c("registerApplicant"):c("registerEmployer")},x=async ee=>{var Z,ie;v(null);try{if(p.role==="applicant"){const ge={applicant:{user:{email:p.email,password:p.password,name:ee.firstName,surname:ee.lastName},city:ee.city,dateOfBirth:d9(ee.birthDate)}};await zt.signUpApplicant(ge)}else{const ge={employer:{user:{email:p.email,password:p.password,name:ee.firstName,surname:ee.lastName},company:ee.company,position:ee.position}};await zt.signUpEmployer(ge)}const ve=await t(vo({email:p.email,password:p.password}));ld(ve),N()}catch(ve){const ge=((ie=(Z=ve==null?void 0:ve.response)==null?void 0:Z.data)==null?void 0:ie.message)||(typeof ve=="string"?ve:ve.message)||"Ошибка регистрации";v(ge)}},W=_.useCallback(()=>{v(null),(d==="register"?zt.sendCode({email:p.email}):zt.resetPassword({email:p.email})).catch(Z=>{var ie,ve;return v(((ve=(ie=Z==null?void 0:Z.response)==null?void 0:ie.data)==null?void 0:ve.message)||"Не удалось отправить код")})},[d,p.email]),re=()=>{switch(s){case"mail":return g.jsx(g4,{onClose:r,onSubmit:D,error:y,onClearError:E,initialEmail:p.email});case"login":return g.jsx(V4,{email:p.email,onClose:r,onSubmit:b,onBack:I,onForgotPassword:B,error:y,onClearError:E});case"code":return g.jsx(R4,{email:p.email,onClose:r,onSubmit:O,onBack:I,onResendCode:W,error:y,onClearError:E});case"createNewPassword":return g.jsx(g8,{onClose:r,onSubmit:j,onBack:I});case"createPassword":return g.jsx(n8,{onClose:r,onSubmit:q,onBack:I});case"registerApplicant":return g.jsx(Y8,{onClose:r,onSubmit:x,onBack:I});case"registerEmployer":return g.jsx(c9,{onClose:r,onSubmit:x,onBack:I,companies:w});default:return null}};return g.jsx(g.Fragment,{children:re()})}class bm{static async getHhVacancyCount(t){try{const a=await Y.get(`/v1/import/hh/${t}`);if(!a)throw new Error("ImportApi: Invalid getHhVacancyCount response from API");return a}catch(a){throw console.error("ImportApi: Error fetching HH vacancy count",a),a}}static async importFromHh(t){try{const a=await Y.post("/v1/import/hh",t);if(a===void 0)throw new Error("ImportApi: Invalid importFromHh response from API");return a}catch(a){throw console.error("ImportApi: Error importing from HH",a),a}}}const p9=()=>`https://hh.ru/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:Y3}).toString()}`,h9="_modalOverlay_pimf3_1",m9="_closing_pimf3_12",y9="_closeButton_pimf3_17",g9="_modal_pimf3_1",v9="_modalContent_pimf3_38",w9="_modalHeader_pimf3_46",C9="_modalMobileHeader_pimf3_55",_9="_modalTitle_pimf3_61",S9="_modalSubtitle_pimf3_87",x9="_modalButtonsContainer_pimf3_94",E9="_importTabs_pimf3_103",k9="_fullWidthButton_pimf3_107",T9="_buttonIcon_pimf3_112",I9="_importLoader_pimf3_117",b9="_backButton_pimf3_123",P9="_modalBackIcon_pimf3_148",nt={modalOverlay:h9,closing:m9,closeButton:y9,modal:g9,modalContent:v9,modalHeader:w9,modalMobileHeader:C9,modalTitle:_9,modalSubtitle:S9,modalButtonsContainer:x9,importTabs:E9,fullWidthButton:k9,buttonIcon:T9,importLoader:I9,backButton:b9,modalBackIcon:P9},R9="/static/hh_logo-BFOmWdck.png",A9="_inputSelectWrapper_b7gf5_1",N9="_inputDisplay_b7gf5_8",L9="_disabled_b7gf5_24",j9="_displayContent_b7gf5_35",M9="_optionIcon_b7gf5_42",D9="_inputIcon_b7gf5_47",$9="_open_b7gf5_59",O9="_dropdown_b7gf5_63",F9="_dropdownOption_b7gf5_105",U9="_selected_b7gf5_118",z9="_disabledOption_b7gf5_122",qt={inputSelectWrapper:A9,inputDisplay:N9,disabled:L9,displayContent:j9,optionIcon:M9,inputIcon:D9,open:$9,dropdown:O9,dropdownOption:F9,selected:U9,disabledOption:z9},B9=r=>_.createElement("svg",{width:12,height:7,viewBox:"0 0 12 7",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},_.createElement("path",{d:"M1.00115 0.967316C1.11082 0.966682 1.21954 0.987703 1.32107 1.02917C1.4226 1.07064 1.51495 1.13175 1.59281 1.20898L5.40948 5.03398C5.48695 5.11209 5.57912 5.17408 5.68067 5.21639C5.78222 5.2587 5.89114 5.28048 6.00115 5.28048C6.11116 5.28048 6.22008 5.2587 6.32163 5.21639C6.42318 5.17408 6.51534 5.11209 6.59281 5.03398L10.4095 1.20898C10.5664 1.05206 10.7792 0.963906 11.0011 0.963906C11.2231 0.963906 11.4359 1.05206 11.5928 1.20898C11.7497 1.3659 11.8379 1.57873 11.8379 1.80065C11.8379 1.91053 11.8162 2.01934 11.7742 2.12086C11.7321 2.22238 11.6705 2.31462 11.5928 2.39232L7.76781 6.20898C7.29286 6.66529 6.65978 6.92013 6.00115 6.92013C5.34252 6.92013 4.70943 6.66529 4.23448 6.20898L0.409481 2.39232C0.331374 2.31485 0.269378 2.22268 0.227071 2.12113C0.184763 2.01958 0.162982 1.91066 0.162982 1.80065C0.162982 1.69064 0.184763 1.58172 0.227071 1.48017C0.269378 1.37862 0.331374 1.28645 0.409481 1.20898C0.487349 1.13175 0.579694 1.07064 0.681225 1.02917C0.782756 0.987703 0.891475 0.966682 1.00115 0.967316Z",fill:"#31323A"})),V9=({options:r,value:t,onChange:a,placeholder:i="Выберите...",name:s,disabled:c=!1,className:d="",error:f})=>{const[p,m]=_.useState(!1),y=_.useRef(null),v=r.find(b=>b.value===t),w=_.useCallback(b=>{y.current&&!y.current.contains(b.target)&&m(!1)},[]);_.useEffect(()=>(document.addEventListener("mousedown",w),()=>{document.removeEventListener("mousedown",w)}),[w]);const S=()=>{c||m(!p)},E=b=>{b.disabled||(a(b.value,b),m(!1))},I=v?g.jsxs("div",{className:qt.displayContent,children:[v.icon&&g.jsx("img",{src:v.icon,alt:"",className:qt.optionIcon}),v.label]}):g.jsx("span",{className:qt.placeholder,children:i}),N=[qt.inputSelectWrapper,d,f?qt.inputError:""].filter(Boolean).join(" "),D=[qt.inputDisplay,c?qt.disabled:""].filter(Boolean).join(" ");return g.jsxs("div",{className:N,ref:y,children:[g.jsxs("div",{className:`${D} body-1`,onClick:S,role:"combobox","aria-expanded":p,tabIndex:c?-1:0,onKeyDown:b=>{(b.key==="Enter"||b.key===" ")&&!p?(b.preventDefault(),S()):b.key==="Escape"&&p&&(b.preventDefault(),m(!1))},"data-name":s,children:[g.jsx("div",{className:qt.displayContentWrapper,children:I}),g.jsx(B9,{className:`${qt.inputIcon} ${p?qt.open:""}`})]}),p&&!c&&g.jsx("ul",{className:`${qt.dropdown} body-1`,role:"listbox",children:r.map(b=>g.jsxs("li",{className:`${qt.dropdownOption} ${b.value===t?qt.selected:""} ${b.disabled?qt.disabledOption:""}`,onClick:()=>E(b),role:"option","aria-selected":b.value===t,"aria-disabled":b.disabled,children:[b.icon&&g.jsx("img",{src:b.icon,alt:"",className:qt.optionIcon}),b.label]},String(b.value)))})]})},H9="_loader_dots_base_g10uh_1",W9="_dot_g10uh_13",K9="_loader_container_small_g10uh_36",Y9="_loader_container_medium_g10uh_45",q9="_loader_container_large_g10uh_54",Bu={loader_dots_base:H9,dot:W9,loader_container_small:K9,loader_container_medium:Y9,loader_container_large:q9},G9=(r,t)=>{switch(r){case"small":return t.loader_container_small;case"large":return t.loader_container_large;case"medium":default:return t.loader_container_medium}},Q9=r=>{const{size:t="medium",className:a="",...i}=r,s=Bu.loader_dots_base,c=G9(t,Bu),d=[s,c,a].filter(Boolean).join(" ");return g.jsx("div",{className:d,role:"status",...i,children:Array.from({length:3}).map((f,p)=>g.jsx("div",{className:Bu.dot,style:{animationDelay:`${p*.15}s`}},p))})},Z9=({items:r,activeTab:t,onTabChange:a,className:i=""})=>g.jsx("div",{className:`tabs-container body-3 ${i}`,children:r.map(s=>g.jsxs("button",{className:`tab body-3 ${t===s.id?"active":"inactive"}`,onClick:()=>a(s.id),type:"button",children:[g.jsx("span",{className:"tab__label",children:s.label}),s.count!==void 0&&g.jsx("span",{className:`badge body-3 ${t===s.id?"active-badge":"inactive-badge"}`,children:s.count})]},s.id))}),Pm=[{value:"hh.ru",label:"hh.ru",icon:R9}],J9=({onClose:r})=>{const t=Er(),a=lt(),i=Ke(oe=>{var H;return(H=oe.employer.profile)==null?void 0:H.company}),{userId:s}=Ke(oe=>oe.auth),c=_.useRef(!1),[d,f]=_.useState(!1),[p,m]=_.useState(null),[y,v]=_.useState("selectSite"),[w,S]=_.useState("hh.ru"),[E,I]=_.useState({active:0,archived:0}),[N,D]=_.useState("VACANCY_STATUS_ACTIVE"),[b,B]=_.useState(null),O=()=>{f(!0),setTimeout(()=>{r()},300)},j=oe=>{oe.target===oe.currentTarget&&(c.current=!0)},q=oe=>{oe.target===oe.currentTarget&&c.current&&O(),c.current=!1},x=()=>{y==="linkProfile"?v("selectSite"):O()};_.useEffect(()=>{const H=new URLSearchParams(a.search).get("code");H&&m(H)},[a.search]),_.useEffect(()=>{p&&ee(p)},[p]);const W=()=>{s&&t(Gs({filters:{employer_id:s}}));const oe=new BroadcastChannel("vacancy-updates");oe.postMessage({type:"VACANCY_UPDATED"}),oe.close()},re=()=>{W(),setTimeout(W,2e3),setTimeout(W,5e3),O()},ee=async oe=>{v("loadingCount");try{const H=await bm.getHhVacancyCount(oe);I(H),v("showCount")}catch{B("Не удалось получить информацию о вакансиях. Попробуйте снова."),v("error")}},Z=()=>{window.location.href=p9()},ie=oe=>{D(oe)},ve=async()=>{if(!p||!(i!=null&&i.id)){B("Отсутствуют необходимые данные для импорта. Профиль компании не загружен."),v("error");return}v("importing");try{await bm.importFromHh({hhCode:p,folders:[N],company:{id:i.id}}),v("success")}catch{B("Произошла ошибка во время импорта. Пожалуйста, повторите попытку."),v("error")}},ge=Pm.find(oe=>oe.value===w),$e=()=>y==="success"?"Процесс импорта":"Импортируйте вакансию",ke=()=>{switch(y){case"selectSite":return g.jsxs(g.Fragment,{children:[g.jsx("p",{className:`body-1 ${nt.modalSubtitle}`,children:"Выберите сервис для быстрого импорта новых вакансий"}),g.jsxs("div",{className:nt.modalButtonsContainer,children:[g.jsx(V9,{options:Pm,value:w,onChange:oe=>S(oe),name:"import-site"}),g.jsx(jt,{onClick:()=>v("linkProfile"),children:"Выбрать"})]})]});case"linkProfile":return g.jsxs(g.Fragment,{children:[g.jsx("p",{className:`body-1 ${nt.modalSubtitle}`,children:"Привяжите профиль вашей компании для быстрого импорта новых вакансий"}),g.jsx("div",{className:nt.modalButtonsContainer,children:g.jsxs(jt,{onClick:Z,children:[(ge==null?void 0:ge.icon)&&g.jsx("img",{src:ge.icon,alt:`Логотип ${ge.label}`,className:nt.buttonIcon}),"Привязать профиль"]})})]});case"loadingCount":case"importing":return g.jsx("div",{className:nt.importLoader,children:g.jsx(Q9,{size:"large"})});case"showCount":{const oe=[{id:"VACANCY_STATUS_ACTIVE",label:"Активные",count:E.active},{id:"VACANCY_STATUS_ARCHIVED",label:"Архивные",count:E.archived}],H=N==="VACANCY_STATUS_ACTIVE"?E.active===0:E.archived===0;return g.jsxs(g.Fragment,{children:[g.jsx("p",{className:`body-1 ${nt.modalSubtitle}`,children:"Мы нашли ваши вакансии на hh.ru. Выберите, какие из них импортировать."}),g.jsx(Z9,{items:oe,activeTab:N,onTabChange:ie,className:nt.importTabs}),g.jsx(jt,{onClick:ve,disabled:H,className:nt.fullWidthButton,children:"Импортировать"})]})}case"success":return g.jsxs(g.Fragment,{children:[g.jsx("p",{className:`body-1 ${nt.modalSubtitle}`,children:"Импорт запущен! Ваши вакансии скоро появятся в общем списке."}),g.jsx(jt,{onClick:re,className:nt.fullWidthButton,children:"Закрыть"})]});case"error":return g.jsxs(g.Fragment,{children:[g.jsx("p",{className:`body-1 ${nt.modalSubtitle}`,children:b}),g.jsx(jt,{onClick:O,className:nt.fullWidthButton,children:"Закрыть"})]});default:return null}};return g.jsx("div",{className:`${nt.modalOverlay} ${d?nt.closing:""}`,onMouseDown:j,onMouseUp:q,children:g.jsxs("div",{className:nt.modal,children:[g.jsxs("div",{className:nt.modalMobileHeader,children:[g.jsx(aa,{className:nt.modalBackIcon,onClick:x}),g.jsx("span",{className:"h2",children:$e()}),g.jsx("div",{})]}),g.jsxs("div",{className:nt.modalHeader,children:[y==="linkProfile"&&g.jsx("button",{type:"button",className:nt.backButton,onClick:()=>v("selectSite"),children:g.jsxs("span",{className:"body-1",children:["<"," Назад"]})}),g.jsx("h2",{className:`h2 ${nt.modalTitle}`,children:$e()}),g.jsx("button",{className:`${nt.closeButton}`,onClick:O,children:g.jsx(na,{className:nt.closeButton})})]}),g.jsx("div",{className:nt.modalContent,children:ke()})]})})},X9=r=>{_.useEffect(()=>{const t=window.getComputedStyle(document.body).overflow;return r&&(document.body.style.overflow="hidden"),()=>{document.body.style.overflow=t}},[r])},Rm=document.getElementById("modals");function e7(){const{activeModal:r}=Ke(s=>s.modal),t=Er();X9(!!r);const a=_.useCallback(()=>{t(l6())},[t]);if(_.useEffect(()=>{const s=c=>{c.key==="Escape"&&a()};return r&&document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s)}},[r,a]),!Rm)return null;const i=()=>{switch(r){case"auth":return g.jsx(f9,{onClose:a});case"importVacancies":return g.jsx(J9,{onClose:a});default:return null}};return fl.createPortal(i(),Rm)}const md=Number(e1),Am=!e1.startsWith("__VITE_")&&Number.isFinite(md);let Vu=!1;const t7=()=>{const r=lt();return _.useEffect(()=>{if(!Am)return;const t=window.ym;typeof t=="function"&&!Vu&&(t(md,"init",{clickmap:!0,trackLinks:!0,accurateTrackBounce:!0,webvisor:!0,ecommerce:"dataLayer"}),Vu=!0,console.log("Yandex.Metrika initialized"))},[]),_.useEffect(()=>{if(!Am)return;const t=window.ym;Vu&&typeof t=="function"&&(t(md,"hit",window.location.href),console.log(`Yandex.Metrika hit: ${window.location.href}`))},[r]),null},b1="analytics_session",r7="analytics-visit-lock",P1=30*60*1e3,R1=()=>{try{const r=localStorage.getItem(b1);return r?JSON.parse(r):null}catch{return null}},A1=r=>{localStorage.setItem(b1,JSON.stringify(r))},N1=r=>!!r&&r.expiresAt>Date.now(),n7=()=>{const r=R1();N1(r)&&A1({...r,expiresAt:Date.now()+P1})},a7=()=>({sessionId:i7(),expiresAt:Date.now()+P1}),o7=r=>typeof navigator<"u"&&"locks"in navigator?navigator.locks.request(r7,r):r(),i7=()=>typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,s7={trackVisit:()=>Y.post("/v1/auth/analytics/visit",{})},l7=()=>o7(async()=>{const r=R1();N1(r)||(await s7.trackVisit(),A1(a7()))}),Nm=["click","keydown","scroll","visibilitychange"],c7=60*1e3,u7=()=>(_.useEffect(()=>{l7().catch(()=>{});let r=0;const t=()=>{const a=Date.now();a-r<c7||(r=a,n7())};return Nm.forEach(a=>document.addEventListener(a,t,{passive:!0})),()=>{Nm.forEach(a=>document.removeEventListener(a,t))}},[]),null);function d7(){const{pathname:r}=lt();return _.useEffect(()=>{window.scrollTo(0,0)},[r]),null}const f7=()=>{_.useEffect(()=>{const r=setTimeout(()=>{window.prerenderReady=!0,document.dispatchEvent(new Event("custom-render-trigger"))},500);return()=>{window.prerenderReady=!1,clearTimeout(r)}},[])},p7=()=>{f7();const[r,t]=Td(),a=Er(),{isAuthenticated:i,isAuthChecked:s}=Ke(c=>c.auth);return _.useEffect(()=>{if(!s)return;const c=r.get("auth_trigger")==="true",d=!!r.get("redirect_url");if((c||d&&!i)&&(a(Aa("auth")),c)){const f=new URLSearchParams(r);f.delete("auth_trigger"),t(f)}},[r,t,a,i,s]),g.jsxs(g.Fragment,{children:[g.jsx(t7,{}),g.jsx(u7,{}),g.jsx(d7,{}),g.jsx(u5,{}),g.jsx("main",{className:"main-content",children:g.jsx(ul,{})}),g.jsx(R5,{}),g.jsx(e7,{})]})},h7="_spinnerContainer_npt9f_1",m7="_spinner_svg_base_npt9f_7",y7="_spinner_svg_small_npt9f_21",g7="_spinner_svg_medium_npt9f_26",v7="_spinner_svg_large_npt9f_31",Hu={spinnerContainer:h7,spinner_svg_base:m7,spinner_svg_small:y7,spinner_svg_medium:g7,spinner_svg_large:v7},w7=(r,t)=>{switch(r){case"small":return t.spinner_svg_small;case"large":return t.spinner_svg_large;case"medium":default:return t.spinner_svg_medium}},Lm="rgba(154, 156, 176, 1)",C7="rgba(217, 217, 217, 1)",_7="rgba(217, 217, 217, 0)",S7=`conic-gradient(
  from 0deg,
  ${Lm} 0%,
  ${Lm} 20%,         
  ${C7} 65%,  
  ${_7} 110%, 
  transparent 75%     
)`,jm=r=>{const{size:t="medium",className:a="",...i}=r,s=Hu.spinner_svg_base,c=w7(t,Hu),d=[s,c,a].filter(Boolean).join(" ");return g.jsx("div",{className:Hu.spinnerContainer,children:g.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",className:d,role:"img",...i,children:[g.jsx("defs",{children:g.jsx("clipPath",{id:"spinner_svg_clip_path",children:g.jsx("path",{d:"M40 20C40 31.0457 31.0457 40 20 40C8.9543 40 0 31.0457 0 20C0 8.9543 8.9543 0 20 0C31.0457 0 40 8.9543 40 20ZM3.99485 20C3.99485 28.8394 11.1606 36.0051 20 36.0051C28.8394 36.0051 36.0051 28.8394 36.0051 20C36.0051 11.1606 28.8394 3.99485 20 3.99485C11.1606 3.99485 3.99485 11.1606 3.99485 20Z"})})}),g.jsx("g",{clipPath:"url(#spinner_svg_clip_path)",children:g.jsx("foreignObject",{x:"0",y:"0",width:"40",height:"40",children:g.jsx("div",{style:{width:"100%",height:"100%",background:S7}})})})]})})},x7=q3,E7=5e3,k7=24*60*60*1e3,T7=1e4;class I7{constructor(){F(this,"ws",null);F(this,"reconnectTimer",null);F(this,"pingTimer",null);F(this,"afkTimer",null);F(this,"lastActivityTime",0);F(this,"chatSeq",new Map);F(this,"hasConnectedOnce",!1);F(this,"isReconnect",!1);F(this,"boundResetAfkTimer",this.resetAfkTimer.bind(this));F(this,"openWaiters",[]);typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&(!this.ws||this.ws.readyState===WebSocket.CLOSED)&&(this.clearTimers(),this.connect())})}getLastSeqForSubscribe(){return this.chatSeq.size===0?null:Math.min(...this.chatSeq.values())}connect(){this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING)||!vr.getState().auth.userId||(this.clearTimers(),vr.dispatch(ui("connecting")),this.ws=new WebSocket(x7),this.ws.onopen=()=>{vr.dispatch(ui("connected")),this.startPinging(),this.startAfkTracking(),this.isReconnect=this.hasConnectedOnce,this.hasConnectedOnce=!0;const a=this.getLastSeqForSubscribe();a!==null?this.sendCommand({type:"subscribe",last_seq:a}):this.sendCommand({type:"subscribe"}),this.resolveOpenWaiters()},this.ws.onmessage=async a=>{var i,s,c,d;try{const f=JSON.parse(a.data);if(f.type==="prolong"){try{await Y.refreshAccessToken()}catch(S){console.error("WebSocket: Failed to refresh token.",S),this.disconnect()}return}if(typeof f.seq=="number"&&f.chat_id){const S=this.chatSeq.get(f.chat_id)??0;this.chatSeq.set(f.chat_id,Math.max(S,f.seq))}const p=vr.getState(),m=p.auth.userId,y=p.auth.role;let v=null;if(y==="employer")v=((s=(i=p.employer.profile)==null?void 0:i.company)==null?void 0:s.id)||null;else if(y==="applicant"){const S=p.user.profile;v=(S==null?void 0:S._applicantId)||(S==null?void 0:S.id)||null}let w=p.settings.data;if(w||(y==="applicant"?w=(c=p.user.profile)==null?void 0:c.settings:y==="employer"&&(w=(d=p.employer.profile)==null?void 0:d.settings)),f.type==="popup"&&w&&w.baseSettings&&w.baseSettings.popUpNotifications===!1)return;if(vr.dispatch(D6({event:f,currentUserId:m,currentUserRoleId:v})),f.type==="subscribed"&&this.isReconnect&&(y==="applicant"||y==="employer")){this.isReconnect=!1;const S=y==="applicant"?"REQUEST_TYPE_APPLICANT":"REQUEST_TYPE_EMPLOYER";vr.dispatch(Qs({type:S}))}if((f.type==="message"||f.type==="chat_updated")&&f.chat_id&&(y==="applicant"||y==="employer")&&!vr.getState().chat.chats.some(E=>E.chatId===f.chat_id)){const E=y==="applicant"?"REQUEST_TYPE_APPLICANT":"REQUEST_TYPE_EMPLOYER";vr.dispatch(v1({type:E,chatId:f.chat_id}))}}catch(f){console.error("WebSocket: Failed to parse incoming message:",f)}},this.ws.onerror=a=>{console.error("WebSocket error event:",a),vr.dispatch(ui("error"))},this.ws.onclose=a=>{if(this.clearTimers(),this.stopAfkTracking(),vr.dispatch(ui("disconnected")),a.code>=4e3&&a.code<5e3){console.error(`WebSocket: Permanent error (code: ${a.code}). Won't reconnect.`);return}a.code!==1e3&&this.scheduleReconnect()})}disconnect(){this.clearTimers(),this.stopAfkTracking(),this.ws&&((this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING)&&this.ws.close(1e3,"User disconnected"),this.ws=null),vr.dispatch(ui("disconnected"))}refreshSubscription(){this.sendCommand({type:"subscribe"})}sendCommand(t){this.ws&&this.ws.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify(t)):console.error("WebSocket is not connected. Cannot send command:",t)}resolveOpenWaiters(){const t=this.openWaiters;this.openWaiters=[],t.forEach(a=>a())}ensureConnected(t=5e3){return this.ws&&this.ws.readyState===WebSocket.OPEN?Promise.resolve(!0):(this.connect(),new Promise(a=>{const i=setTimeout(()=>a(!1),t);this.openWaiters.push(()=>{clearTimeout(i),a(!0)})}))}async sendCommandReliable(t,a=5e3){return await this.ensureConnected(a)?(this.sendCommand(t),!0):!1}scheduleReconnect(){this.reconnectTimer||(this.reconnectTimer=setTimeout(()=>{this.connect()},E7))}startPinging(){this.pingTimer=setInterval(()=>{this.sendCommand({type:"ping"})},3e4)}clearTimers(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=null)}startAfkTracking(){typeof window>"u"||(this.resetAfkTimer(),window.addEventListener("mousemove",this.boundResetAfkTimer),window.addEventListener("keydown",this.boundResetAfkTimer),window.addEventListener("click",this.boundResetAfkTimer),window.addEventListener("scroll",this.boundResetAfkTimer),window.addEventListener("touchstart",this.boundResetAfkTimer))}stopAfkTracking(){typeof window>"u"||(this.afkTimer&&(clearTimeout(this.afkTimer),this.afkTimer=null),window.removeEventListener("mousemove",this.boundResetAfkTimer),window.removeEventListener("keydown",this.boundResetAfkTimer),window.removeEventListener("click",this.boundResetAfkTimer),window.removeEventListener("scroll",this.boundResetAfkTimer),window.removeEventListener("touchstart",this.boundResetAfkTimer))}resetAfkTimer(){const t=Date.now();t-this.lastActivityTime<T7&&this.afkTimer||(this.lastActivityTime=t,this.afkTimer&&clearTimeout(this.afkTimer),this.afkTimer=setTimeout(()=>{this.disconnect()},k7))}}const Mm=new I7,b7="_notificationWrapper_5na82_32",P7="_container_5na82_40",R7="_closing_5na82_59",A7="_avatarContainer_5na82_63",N7="_avatar_5na82_63",L7="_content_5na82_81",j7="_title_5na82_89",M7="_message_5na82_94",D7="_closeButton_5na82_105",$7="_progressBar_5na82_125",rn={notificationWrapper:b7,container:P7,closing:R7,avatarContainer:A7,avatar:N7,content:L7,title:j7,message:M7,closeButton:D7,progressBar:$7},O7="/static/company_icon-D35HRwDS.png",F7="/static/avatar_icon-C56SpHFq.png",U7="data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.9998%205.99982C17.8123%205.81235%2017.558%205.70703%2017.2928%205.70703C17.0277%205.70703%2016.7733%205.81235%2016.5858%205.99982L11.9998%2010.5858L7.41382%205.99982C7.22629%205.81235%206.97198%205.70703%206.70682%205.70703C6.44165%205.70703%206.18735%205.81235%205.99982%205.99982C5.81235%206.18735%205.70703%206.44165%205.70703%206.70682C5.70703%206.97198%205.81235%207.22629%205.99982%207.41382L10.5858%2011.9998L5.99982%2016.5858C5.81235%2016.7733%205.70703%2017.0277%205.70703%2017.2928C5.70703%2017.558%205.81235%2017.8123%205.99982%2017.9998C6.18735%2018.1873%206.44165%2018.2926%206.70682%2018.2926C6.97198%2018.2926%207.22629%2018.1873%207.41382%2017.9998L11.9998%2013.4138L16.5858%2017.9998C16.7733%2018.1873%2017.0277%2018.2926%2017.2928%2018.2926C17.558%2018.2926%2017.8123%2018.1873%2017.9998%2017.9998C18.1873%2017.8123%2018.2926%2017.558%2018.2926%2017.2928C18.2926%2017.0277%2018.1873%2016.7733%2017.9998%2016.5858L13.4138%2011.9998L17.9998%207.41382C18.1873%207.22629%2018.2926%206.97198%2018.2926%206.70682C18.2926%206.44165%2018.1873%206.18735%2017.9998%205.99982Z'%20fill='%2331323A'/%3e%3c/svg%3e",z7=({title:r,message:t,avatarSrc:a,duration:i=5e3,isOpen:s,onClose:c,role:d})=>{const[f,p]=_.useState(!1),[m,y]=_.useState(!1);_.useEffect(()=>(y(!0),()=>y(!1)),[]),_.useEffect(()=>{let E;return s&&(p(!1),E=setTimeout(()=>{v()},i)),()=>{E&&clearTimeout(E)}},[s,i,r,t]);const v=()=>{p(!0),setTimeout(()=>{c(),p(!1)},400)};if(!m||!s&&!f)return null;let w=O7;d==="employer"&&(w=F7);const S=g.jsx("div",{className:rn.notificationWrapper,children:g.jsxs("div",{className:`${rn.container} ${f?rn.closing:""}`,role:"alert",children:[g.jsx("div",{className:rn.avatarContainer,children:g.jsx("img",{src:a||w,alt:r,className:rn.avatar})}),g.jsxs("div",{className:rn.content,children:[g.jsx("h3",{className:`${rn.title} h3`,children:r}),g.jsx("p",{className:`${rn.message} body-3`,children:t})]}),g.jsx("button",{className:rn.closeButton,onClick:E=>{E.stopPropagation(),v()},"aria-label":"Закрыть уведомление",children:g.jsx("img",{src:U7,alt:"Закрыть"})}),g.jsx("div",{className:rn.progressBar,style:{animationDuration:`${i}ms`}},`${r}-${t}`)]})});return ew.createPortal(S,document.body)},B7=()=>{const[r,t]=Td(),a=Er(),i=ln(),[s,c]=_.useState(!1),d=_.useCallback(()=>{r.delete("accessCode"),r.delete("source"),r.delete("userId"),r.delete("ts"),t(r,{replace:!0}),i("/",{replace:!0})},[r,t,i]);return _.useEffect(()=>{const f=r.get("accessCode"),p=r.get("source"),m=r.get("ts");if(f&&p==="admin_panel"){if(m?Date.now()-parseInt(m,10)>6e4:!1){d();return}c(!0),localStorage.removeItem("userId"),localStorage.removeItem("userRole"),localStorage.removeItem("isAdmin"),a(Md()),a($d()),a(vo({token:f})).unwrap().then(()=>{r.delete("accessCode"),r.delete("source"),r.delete("userId"),r.delete("ts"),t(r,{replace:!0})}).catch(()=>{d()}).finally(()=>{c(!1)})}},[r,a,d]),{isProcessingImpersonation:s,hasImpersonationParams:!!(r.get("accessCode")&&r.get("source")==="admin_panel")}},V7=_.lazy(()=>et(()=>import("./index-BIPFiIOC.js"),__vite__mapDeps([0,1])).then(r=>({default:r.CareerExpressIt2025Page}))),H7=_.lazy(()=>et(()=>import("./index-dCkvMtpw.js"),__vite__mapDeps([2,1])).then(r=>({default:r.LandingPage}))),W7=_.lazy(()=>et(()=>import("./index-FrUXOnYN.js"),__vite__mapDeps([3,1])).then(r=>({default:r.TermsPage}))),K7=_.lazy(()=>et(()=>import("./index-DZfbswc5.js"),__vite__mapDeps([4,1])).then(r=>({default:r.PersonalDataPolicyPage}))),Y7=_.lazy(()=>et(()=>import("./index-CkKIHgHi.js"),__vite__mapDeps([5,1])).then(r=>({default:r.PrivacyPolicyPage}))),q7=_.lazy(()=>et(()=>import("./index-C6OV6xN-.js"),__vite__mapDeps([6,1])).then(r=>({default:r.ApplicantAgreementPage}))),G7=_.lazy(()=>et(()=>import("./index-DCEaBU6V.js"),__vite__mapDeps([7,1])).then(r=>({default:r.EmployerOfferPage}))),L1=_.lazy(()=>et(()=>import("./index-tlVfLVsm.js").then(r=>r.i),__vite__mapDeps([8,9,10,11,12,13,14,15,16,17,18])).then(r=>({default:r.ProfilePage}))),Q7=_.lazy(()=>et(()=>import("./index-DPovks0m.js"),__vite__mapDeps([19,20,12,21,14,22])).then(r=>({default:r.SettingsPage}))),Dm=_.lazy(()=>et(()=>import("./index-BI1Dbe9Z.js"),__vite__mapDeps([23,24,25,26,27,28,29,13,14,30,12,11,31,32,33,34,35,22,1])).then(r=>({default:r.VacancyPage}))),$m=_.lazy(()=>et(()=>import("./index-CpnO0ThX.js").then(r=>r.i),__vite__mapDeps([36,37,11,38,14,39,31,27,15,9,13,40,41,10,42,43])).then(r=>({default:r.EmployerProfilePage}))),Z7=_.lazy(()=>et(()=>import("./index-CoI6lVOk.js"),__vite__mapDeps([44,24,13,14,29,30,12,45,46,47,40,48,49,28,21,50,11,31,32,33,9,51,39])).then(r=>({default:r.VacancyEmployerPage}))),Om=_.lazy(()=>et(()=>import("./VacancyDetails-B2wwC8Tq.js"),__vite__mapDeps([52,11,31,53,12,1])).then(r=>({default:r.VacancyDetailsPage}))),J7=_.lazy(()=>et(()=>import("./VacancyDetailsEmployer-D1Ibih5s.js").then(r=>r.V),__vite__mapDeps([54,11,31,12])).then(r=>({default:r.VacancyDetailsEmployerPage}))),X7=_.lazy(()=>et(()=>import("./CompanyDetails-C3eQHQuk.js"),__vite__mapDeps([55,11,31,1])).then(r=>({default:r.CompanyDetailsPage}))),eS=_.lazy(()=>et(()=>import("./CompanyPreview-DcVXTaHK.js"),__vite__mapDeps([56,11])).then(r=>({default:r.CompanyPreviewPage}))),Fm=_.lazy(()=>et(()=>import("./VacancyForm-CZZBbNXx.js"),__vite__mapDeps([57,58,59,60,24,61,14,41,13,10,27,62,11,35,48,63,31,12,37])).then(r=>({default:r.default}))),tS=_.lazy(()=>et(()=>import("./VacancyPreview-D7WmGovv.js"),__vite__mapDeps([64,11,53,12])).then(r=>({default:r.VacancyPreviewPage}))),rS=_.lazy(()=>et(()=>import("./index-1arZOLuE.js"),__vite__mapDeps([65,11,66,62,9,40,21])).then(r=>({default:r.ChatsPage}))),nS=_.lazy(()=>et(()=>import("./Candidates-C4tRmmgB.js"),__vite__mapDeps([67,26,16,66,13,14,48,68,69,70,71,12,31,24,40,21,49,62,38,39,27,72,33,11,34,35,22,73])).then(r=>({default:r.Candidates}))),aS=_.lazy(()=>et(()=>import("./CandidateDetails-BJWs1ElC.js").then(r=>r.C),__vite__mapDeps([74,11,31,73,62,48,12])).then(r=>({default:r.CandidateDetailsPage}))),ta=_.lazy(()=>et(()=>import("./index-D0SCgLA0.js"),[]).then(r=>({default:r.ErrorPage}))),oS=_.lazy(()=>et(()=>import("./index-DMfTi1vE.js"),__vite__mapDeps([75,76,24,11,12,77,72,16,78,31,79,80])).then(r=>({default:r.BlogPage}))),iS=_.lazy(()=>et(()=>import("./BlogFeed-CWB9Ri8X.js"),__vite__mapDeps([81,76,1,13,14,82,83,12,79])).then(r=>({default:r.BlogFeed}))),sS=_.lazy(()=>et(()=>import("./index-0Up3syOe.js"),__vite__mapDeps([84,76,77,13,14,80,83,82,12,31,1])).then(r=>({default:r.ArticlePage}))),lS=()=>{const{filterType:r}=_d(),{role:t,isAuthenticated:a}=Ke(d=>d.auth),i=lt(),s=["liked","viewed","assessed","applied"],c=["liked","viewed"];return!a&&r&&s.includes(r)?g.jsx(on,{to:`/?auth_trigger=true&redirect_url=${encodeURIComponent(i.pathname+i.search)}`,replace:!0}):t==="employer"&&r&&c.includes(r)?g.jsx(ta,{code:403}):t==="applicant"&&r==="assessed"?g.jsx(ta,{code:403}):g.jsx(x1,{applicantComponent:g.jsx(Dm,{}),employerComponent:g.jsx(Z7,{}),fallbackComponent:g.jsx(Dm,{})})},cS=()=>{const{isAuthenticated:r}=Ke(a=>a.auth),t=lt();return r?g.jsx(ul,{}):g.jsx(on,{to:`/?auth_trigger=true&redirect_url=${encodeURIComponent(t.pathname+t.search)}`,replace:!0})},uS=()=>{const{role:r,isAuthenticated:t}=Ke(i=>i.auth),a=lt();return t?r==="applicant"?g.jsx(ul,{}):r==="employer"?g.jsx(ta,{code:404}):g.jsx(ta,{code:403}):g.jsx(on,{to:`/?auth_trigger=true&redirect_url=${encodeURIComponent(a.pathname+a.search)}`,replace:!0})},dS=()=>{const{role:r,isAuthenticated:t}=Ke(i=>i.auth),a=lt();return t?r!=="employer"?g.jsx(ta,{code:403}):g.jsx(ul,{}):g.jsx(on,{to:`/?auth_trigger=true&redirect_url=${encodeURIComponent(a.pathname+a.search)}`,replace:!0})},fS=()=>{const{code:r}=_d();return g.jsx(ta,{code:Number(r)||500})},pS=()=>{const{role:r,userId:t}=Ke(a=>a.auth);return r==="employer"&&t?g.jsx(on,{to:`/employer-profile/${t}`,replace:!0}):r==="applicant"&&t?g.jsx(on,{to:`/profile/${t}`,replace:!0}):g.jsx(on,{to:"/",replace:!0})},hS=()=>{const{candidateId:r}=_d(),{role:t,userId:a,isAuthenticated:i}=Ke(c=>c.auth),s=lt();return i?t==="applicant"&&String(a)===r?g.jsx(L1,{}):g.jsx(on,{to:`/candidates/detail/${r}`,replace:!0}):g.jsx(on,{to:`/?auth_trigger=true&redirect_url=${encodeURIComponent(s.pathname+s.search)}`,replace:!0})},mS=()=>{const r=Er(),t=ln(),{role:a,isAuthChecked:i}=Ke(p=>p.auth),{notification:s}=Ke(p=>p.chat),{isProcessingImpersonation:c,hasImpersonationParams:d}=B7();_.useEffect(()=>{!d&&!i&&r(qs())},[r,d,i]);const f=()=>{s.chatId&&(t(`/chats/${s.chatId}`),r(Cm()))};return!i||c?g.jsx(jm,{size:"large"}):g.jsxs(_.Suspense,{fallback:g.jsx(jm,{size:"large"}),children:[g.jsx(p7,{}),g.jsx("div",{onClick:f,children:g.jsx(z7,{isOpen:s.isOpen,title:s.title,message:s.message,avatarSrc:s.avatarSrc,duration:s.duration,onClose:()=>r(Cm()),role:a},s.id)})]})},yS=Bv([{element:g.jsx(mS,{}),errorElement:g.jsx(ta,{}),children:[{path:"/",element:g.jsx(H7,{})},{path:"/events/career-express-it-2025",element:g.jsx(V7,{})},{path:"/terms",element:g.jsx(on,{to:"/events/career-express-it-2025/terms",replace:!0})},{path:"/events/career-express-it-2025/terms",element:g.jsx(W7,{})},{path:"/personal-data-policy",element:g.jsx(K7,{})},{path:"/privacy-policy",element:g.jsx(Y7,{})},{path:"/applicant-agreement",element:g.jsx(q7,{})},{path:"/employer-offer",element:g.jsx(G7,{})},{path:"/blog",element:g.jsx(oS,{}),children:[{index:!0,element:g.jsx(iS,{})},{path:":id",element:g.jsx(sS,{})}]},{element:g.jsx(uS,{}),children:[{path:"/profile/edit/:section",element:g.jsx(L1,{})}]},{path:"/vacancies/:filterType?",element:g.jsx(lS,{})},{path:"/vacancies/preview/:channelId",element:g.jsx(tS,{})},{path:"/vacancies/detail/:vacancyId",element:g.jsx(x1,{applicantComponent:g.jsx(Om,{}),employerComponent:g.jsx(J7,{}),fallbackComponent:g.jsx(Om,{})})},{path:"/companies/preview/:channelId",element:g.jsx(eS,{})},{path:"/companies/detail/:companyId",element:g.jsx(X7,{})},{element:g.jsx(dS,{}),children:[{path:"/vacancies/create",element:g.jsx(Fm,{})},{path:"/vacancies/edit/:vacancyId",element:g.jsx(Fm,{})},{path:"/candidates/:filterType?",element:g.jsx(nS,{})},{path:"/candidates/detail/:candidateId",element:g.jsx(aS,{})},{path:"/employer-profile/:id?",element:g.jsx($m,{})},{path:"/employer-profile/:id?/edit/:section",element:g.jsx($m,{})}]},{path:"/profile/:candidateId",element:g.jsx(hS,{})},{element:g.jsx(cS,{}),children:[{path:"/profile",element:g.jsx(pS,{})},{path:"/chats/:chatId?",element:g.jsx(rS,{})},{path:"/profile/settings",element:g.jsx(Q7,{})}]},{path:"/error/:code",element:g.jsx(fS,{})},{path:"*",element:g.jsx(ta,{code:404})}]}]),gS="app_theme_preference";function vS(){const r=Er(),{isAuthChecked:t,isAuthenticated:a,userId:i}=Ke(c=>c.auth),s=Ke(c=>c.settings.data);return E1(),_.useEffect(()=>{document.documentElement.style.visibility=""},[]),_.useEffect(()=>{Y.setupInterceptors(()=>{vr.dispatch(wl())})},[]),_.useEffect(()=>{if(a&&s&&i){const c=`theme_synced_${i}`;if(!localStorage.getItem(c)){const f=localStorage.getItem(gS),p=window.matchMedia("(prefers-color-scheme: dark)").matches;let m;f==="dark"||f==="light"?m=f==="dark":m=p,s.baseSettings.darkTheme!==m&&r(hd({baseSettings:{...s.baseSettings,darkTheme:m}})),localStorage.setItem(c,"true")}}},[a,s,i,r]),_.useEffect(()=>{t&&(a?Mm.connect():Mm.disconnect())},[t,a]),g.jsx(tw,{router:yS})}const wS=e_(vS),CS=Ig.createRoot(document.getElementById("root"));CS.render(g.jsx(nn.StrictMode,{children:g.jsx(wS,{})}));export{S6 as $,C6 as A,jt as B,w6 as C,m4 as D,_6 as E,Pi as F,xi as G,xS as H,Gt as I,ba as J,Ru as K,Ge as L,O7 as M,kS as N,d6 as O,n5 as P,t6 as Q,nn as R,aa as S,Z9 as T,Xe as U,Qt as V,ES as W,u1 as X,g6 as Y,v6 as Z,et as _,Er as a,c1 as a$,x6 as a0,I1 as a1,zt as a2,Nu as a3,PS as a4,Q9 as a5,d4 as a6,V9 as a7,y6 as a8,m6 as a9,A6 as aA,R6 as aB,p1 as aC,f1 as aD,ju as aE,Mu as aF,B9 as aG,Td as aH,Du as aI,jS as aJ,Ww as aK,SS as aL,qw as aM,Uu as aN,ul as aO,qS as aP,QS as aQ,GS as aR,zu as aS,ZS as aT,Tg as aU,u4 as aV,mi as aW,P_ as aX,W8 as aY,ol as aZ,ew as a_,HS as aa,Mm as ab,Qs as ac,zS as ad,$S as ae,v1 as af,Ou as ag,YS as ah,FS as ai,VS as aj,$u as ak,KS as al,WS as am,OS as an,k6 as ao,T6 as ap,RS as aq,AS as ar,Lu as as,Cl as at,_l as au,MS as av,LS as aw,DS as ax,Sl as ay,fl as az,Ke as b,k1 as b0,ln as c,Y as d,na as e,jm as f,go as g,jd as h,X9 as i,g as j,_d as k,Iu as l,F7 as m,bu as n,Aa as o,Fu as p,hd as q,_ as r,r6 as s,J3 as t,E1 as u,wl as v,lt as w,l9 as x,Gs as y,Au as z};