Files
rdp-proxy/web-admin/deploy/html/assets/index-Bx8KW1vY.js
T
2026-05-12 21:02:29 +03:00

23 lines
400 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},ee=Object.prototype.hasOwnProperty;function te(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ne(e,t){return te(e.type,t,e.props)}function T(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function re(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ie=/\/+/g;function E(e,t){return typeof e==`object`&&e&&e.key!=null?re(``+e.key):t.toString(36)}function ae(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function oe(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,oe(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+E(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(ie,`$&/`)+`/`),oe(o,r,i,``,function(e){return e})):o!=null&&(T(o)&&(o=ne(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ie,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+E(a,u),c+=oe(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+E(a,u++),c+=oe(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return oe(ae(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function se(e,t,n){if(e==null)return e;var r=[],i=0;return oe(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function ce(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var D=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},O={map:se,forEach:function(e,t,n){se(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return se(e,function(){t++}),t},toArray:function(e){return se(e,function(e){return e})||[]},only:function(e){if(!T(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=O,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=w,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return w.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!ee.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return te(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)ee.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return te(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=T,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:ce}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=w.T,n={};w.T=n;try{var r=e(),i=w.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(C,D)}catch(e){D(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),w.T=t}},e.unstable_useCacheRefresh=function(){return w.H.useCacheRefresh()},e.use=function(e){return w.H.use(e)},e.useActionState=function(e,t,n){return w.H.useActionState(e,t,n)},e.useCallback=function(e,t){return w.H.useCallback(e,t)},e.useContext=function(e){return w.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return w.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return w.H.useEffect(e,t)},e.useEffectEvent=function(e){return w.H.useEffectEvent(e)},e.useId=function(){return w.H.useId()},e.useImperativeHandle=function(e,t,n){return w.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return w.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return w.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return w.H.useMemo(e,t)},e.useOptimistic=function(e,t){return w.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return w.H.useReducer(e,t,n)},e.useRef=function(e){return w.H.useRef(e)},e.useState=function(e){return w.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return w.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return w.H.useTransition()},e.version=`19.2.5`})),u=o(((e,t)=>{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,T());else{var t=n(l);t!==null&&E(x,t.startTime-e)}}var S=!1,C=-1,w=5,ee=-1;function te(){return g?!0:!(e.unstable_now()-ee<w)}function ne(){if(g=!1,S){var t=e.unstable_now();ee=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&te());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&E(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?T():S=!1}}}var T;if(typeof y==`function`)T=function(){y(ne)};else if(typeof MessageChannel<`u`){var re=new MessageChannel,ie=re.port2;re.port1.onmessage=ne,T=function(){ie.postMessage(null)}}else T=function(){_(ne,0)};function E(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):w=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,E(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,T()))),r},e.unstable_shouldYield=te,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`);function o(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:``+r,children:e,containerInfo:t,implementation:n}}var s=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function c(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return o(e,t,null,r)},e.flushSync=function(e){var t=s.T,n=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`)if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=c(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0})}}else t??i.d.M(e)},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`)if(t){var n=c(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0})}else i.d.m(e)},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return s.H.useFormState(e,t,n)},e.useFormStatus=function(){return s.H.useHostTransitionStatus()},e.version=`19.2.5`})),m=o(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function d(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function p(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=p(e),t!==null)return t;e=e.sibling}return null}var h=Object.assign,g=Symbol.for(`react.element`),_=Symbol.for(`react.transitional.element`),v=Symbol.for(`react.portal`),y=Symbol.for(`react.fragment`),b=Symbol.for(`react.strict_mode`),x=Symbol.for(`react.profiler`),S=Symbol.for(`react.consumer`),C=Symbol.for(`react.context`),w=Symbol.for(`react.forward_ref`),ee=Symbol.for(`react.suspense`),te=Symbol.for(`react.suspense_list`),ne=Symbol.for(`react.memo`),T=Symbol.for(`react.lazy`),re=Symbol.for(`react.activity`),ie=Symbol.for(`react.memo_cache_sentinel`),E=Symbol.iterator;function ae(e){return typeof e!=`object`||!e?null:(e=E&&e[E]||e[`@@iterator`],typeof e==`function`?e:null)}var oe=Symbol.for(`react.client.reference`);function se(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===oe?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case y:return`Fragment`;case x:return`Profiler`;case b:return`StrictMode`;case ee:return`Suspense`;case te:return`SuspenseList`;case re:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case v:return`Portal`;case C:return e.displayName||`Context`;case S:return(e._context.displayName||`Context`)+`.Consumer`;case w:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case ne:return t=e.displayName||null,t===null?se(e.type)||`Memo`:t;case T:t=e._payload,e=e._init;try{return se(e(t))}catch{}}return null}var ce=Array.isArray,D=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,O=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,le={pending:!1,data:null,method:null,action:null},ue=[],k=-1;function de(e){return{current:e}}function fe(e){0>k||(e.current=ue[k],ue[k]=null,k--)}function A(e,t){k++,ue[k]=e.current,e.current=t}var pe=de(null),me=de(null),he=de(null),ge=de(null);function _e(e,t){switch(A(he,t),A(me,e),A(pe,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}fe(pe),A(pe,e)}function ve(){fe(pe),fe(me),fe(he)}function ye(e){e.memoizedState!==null&&A(ge,e);var t=pe.current,n=Hd(t,e.type);t!==n&&(A(me,e),A(pe,n))}function be(e){me.current===e&&(fe(pe),fe(me)),ge.current===e&&(fe(ge),Qf._currentValue=le)}var xe,Se;function Ce(e){if(xe===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);xe=t&&t[1]||``,Se=-1<e.stack.indexOf(`
at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
`+xe+e+Se}var we=!1;function j(e,t){if(!e||we)return``;we=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,`props`,{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,`name`,{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
`),l=s.split(`
`);for(i=r=0;r<c.length&&!c[r].includes(`DetermineComponentFrameRoot`);)r++;for(;i<l.length&&!l[i].includes(`DetermineComponentFrameRoot`);)i++;if(r===c.length||i===l.length)for(r=c.length-1,i=l.length-1;1<=r&&0<=i&&c[r]!==l[i];)i--;for(;1<=r&&0<=i;r--,i--)if(c[r]!==l[i]){if(r!==1||i!==1)do if(r--,i--,0>i||c[r]!==l[i]){var u=`
`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(`<anonymous>`)&&(u=u.replace(`<anonymous>`,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{we=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Ce(n):``}function Te(e,t){switch(e.tag){case 26:case 27:case 5:return Ce(e.type);case 16:return Ce(`Lazy`);case 13:return e.child!==t&&t!==null?Ce(`Suspense Fallback`):Ce(`Suspense`);case 19:return Ce(`SuspenseList`);case 0:case 15:return j(e.type,!1);case 11:return j(e.type.render,!1);case 1:return j(e.type,!0);case 31:return Ce(`Activity`);default:return``}}function Ee(e){try{var t=``,n=null;do t+=Te(e,n),n=e,e=e.return;while(e);return t}catch(e){return`
Error generating stack: `+e.message+`
`+e.stack}}var De=Object.prototype.hasOwnProperty,Oe=t.unstable_scheduleCallback,ke=t.unstable_cancelCallback,Ae=t.unstable_shouldYield,je=t.unstable_requestPaint,Me=t.unstable_now,Ne=t.unstable_getCurrentPriorityLevel,Pe=t.unstable_ImmediatePriority,Fe=t.unstable_UserBlockingPriority,Ie=t.unstable_NormalPriority,Le=t.unstable_LowPriority,Re=t.unstable_IdlePriority,ze=t.log,Be=t.unstable_setDisableYieldValue,Ve=null,He=null;function Ue(e){if(typeof ze==`function`&&Be(e),He&&typeof He.setStrictMode==`function`)try{He.setStrictMode(Ve,e)}catch{}}var We=Math.clz32?Math.clz32:qe,Ge=Math.log,Ke=Math.LN2;function qe(e){return e>>>=0,e===0?32:31-(Ge(e)/Ke|0)|0}var Je=256,Ye=262144,Xe=4194304;function Ze(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Qe(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ze(n))):i=Ze(o):i=Ze(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ze(n))):i=Ze(o)):i=Ze(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function $e(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function et(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function tt(){var e=Xe;return Xe<<=1,!(Xe&62914560)&&(Xe=4194304),e}function M(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function nt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function rt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0<n;){var u=31-We(n),d=1<<u;s[u]=0,c[u]=-1;var f=l[u];if(f!==null)for(l[u]=null,u=0;u<f.length;u++){var p=f[u];p!==null&&(p.lane&=-536870913)}n&=~d}r!==0&&it(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function it(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-We(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function at(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-We(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function ot(e,t){var n=t&-t;return n=n&42?1:st(n),(n&(e.suspendedLanes|t))===0?n:0}function st(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function ct(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function lt(){var e=O.p;return e===0?(e=window.event,e===void 0?32:mp(e.type)):e}function ut(e,t){var n=O.p;try{return O.p=e,t()}finally{O.p=n}}var dt=Math.random().toString(36).slice(2),ft=`__reactFiber$`+dt,pt=`__reactProps$`+dt,mt=`__reactContainer$`+dt,ht=`__reactEvents$`+dt,gt=`__reactListeners$`+dt,_t=`__reactHandles$`+dt,vt=`__reactResources$`+dt,yt=`__reactMarker$`+dt;function bt(e){delete e[ft],delete e[pt],delete e[ht],delete e[gt],delete e[_t]}function xt(e){var t=e[ft];if(t)return t;for(var n=e.parentNode;n;){if(t=n[mt]||n[ft]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=df(e);e!==null;){if(n=e[ft])return n;e=df(e)}return t}e=n,n=e.parentNode}return null}function St(e){if(e=e[ft]||e[mt]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Ct(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function wt(e){var t=e[vt];return t||=e[vt]={hoistableStyles:new Map,hoistableScripts:new Map},t}function Tt(e){e[yt]=!0}var Et=new Set,Dt={};function Ot(e,t){kt(e,t),kt(e+`Capture`,t)}function kt(e,t){for(Dt[e]=t,e=0;e<t.length;e++)Et.add(t[e])}var At=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$`),jt={},Mt={};function Nt(e){return De.call(Mt,e)?!0:De.call(jt,e)?!1:At.test(e)?Mt[e]=!0:(jt[e]=!0,!1)}function Pt(e,t,n){if(Nt(t))if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:e.removeAttribute(t);return;case`boolean`:var r=t.toLowerCase().slice(0,5);if(r!==`data-`&&r!==`aria-`){e.removeAttribute(t);return}}e.setAttribute(t,``+n)}}function Ft(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(t);return}e.setAttribute(t,``+n)}}function It(e,t,n,r){if(r===null)e.removeAttribute(n);else{switch(typeof r){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(n);return}e.setAttributeNS(t,n,``+r)}}function Lt(e){switch(typeof e){case`bigint`:case`boolean`:case`number`:case`string`:case`undefined`:return e;case`object`:return e;default:return``}}function Rt(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===`input`&&(t===`checkbox`||t===`radio`)}function zt(e,t,n){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&r!==void 0&&typeof r.get==`function`&&typeof r.set==`function`){var i=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){n=``+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(e){n=``+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Bt(e){if(!e._valueTracker){var t=Rt(e)?`checked`:`value`;e._valueTracker=zt(e,t,``+e[t])}}function Vt(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=``;return e&&(r=Rt(e)?e.checked?`true`:`false`:e.value),e=r,e===n?!1:(t.setValue(e),!0)}function Ht(e){if(e||=typeof document<`u`?document:void 0,e===void 0)return null;try{return e.activeElement||e.body}catch{return e.body}}var Ut=/[\n"\\]/g;function Wt(e){return e.replace(Ut,function(e){return`\\`+e.charCodeAt(0).toString(16)+` `})}function Gt(e,t,n,r,i,a,o,s){e.name=``,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`?e.type=o:e.removeAttribute(`type`),t==null?o!==`submit`&&o!==`reset`||e.removeAttribute(`value`):o===`number`?(t===0&&e.value===``||e.value!=t)&&(e.value=``+Lt(t)):e.value!==``+Lt(t)&&(e.value=``+Lt(t)),t==null?n==null?r!=null&&e.removeAttribute(`value`):qt(e,o,Lt(n)):qt(e,o,Lt(t)),i==null&&a!=null&&(e.defaultChecked=!!a),i!=null&&(e.checked=i&&typeof i!=`function`&&typeof i!=`symbol`),s!=null&&typeof s!=`function`&&typeof s!=`symbol`&&typeof s!=`boolean`?e.name=``+Lt(s):e.removeAttribute(`name`)}function Kt(e,t,n,r,i,a,o,s){if(a!=null&&typeof a!=`function`&&typeof a!=`symbol`&&typeof a!=`boolean`&&(e.type=a),t!=null||n!=null){if(!(a!==`submit`&&a!==`reset`||t!=null)){Bt(e);return}n=n==null?``:``+Lt(n),t=t==null?n:``+Lt(t),s||t===e.value||(e.value=t),e.defaultValue=t}r??=i,r=typeof r!=`function`&&typeof r!=`symbol`&&!!r,e.checked=s?e.checked:!!r,e.defaultChecked=!!r,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`&&(e.name=o),Bt(e)}function qt(e,t,n){t===`number`&&Ht(e.ownerDocument)===e||e.defaultValue===``+n||(e.defaultValue=``+n)}function Jt(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t[`$`+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty(`$`+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=``+Lt(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function N(e,t,n){if(t!=null&&(t=``+Lt(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n==null?``:``+Lt(n)}function Yt(e,t,n,r){if(t==null){if(r!=null){if(n!=null)throw Error(i(92));if(ce(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}n??=``,t=n}n=Lt(t),e.defaultValue=n,r=e.textContent,r===n&&r!==``&&r!==null&&(e.value=r),Bt(e)}function Xt(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Zt=new Set(`animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `));function Qt(e,t,n){var r=t.indexOf(`--`)===0;n==null||typeof n==`boolean`||n===``?r?e.setProperty(t,``):t===`float`?e.cssFloat=``:e[t]=``:r?e.setProperty(t,n):typeof n!=`number`||n===0||Zt.has(t)?t===`float`?e.cssFloat=n:e[t]=(``+n).trim():e[t]=n+`px`}function $t(e,t,n){if(t!=null&&typeof t!=`object`)throw Error(i(62));if(e=e.style,n!=null){for(var r in n)!n.hasOwnProperty(r)||t!=null&&t.hasOwnProperty(r)||(r.indexOf(`--`)===0?e.setProperty(r,``):r===`float`?e.cssFloat=``:e[r]=``);for(var a in t)r=t[a],t.hasOwnProperty(a)&&n[a]!==r&&Qt(e,a,r)}else for(var o in t)t.hasOwnProperty(o)&&Qt(e,o,t[o])}function en(e){if(e.indexOf(`-`)===-1)return!1;switch(e){case`annotation-xml`:case`color-profile`:case`font-face`:case`font-face-src`:case`font-face-uri`:case`font-face-format`:case`font-face-name`:case`missing-glyph`:return!1;default:return!0}}var tn=new Map([[`acceptCharset`,`accept-charset`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`],[`crossOrigin`,`crossorigin`],[`accentHeight`,`accent-height`],[`alignmentBaseline`,`alignment-baseline`],[`arabicForm`,`arabic-form`],[`baselineShift`,`baseline-shift`],[`capHeight`,`cap-height`],[`clipPath`,`clip-path`],[`clipRule`,`clip-rule`],[`colorInterpolation`,`color-interpolation`],[`colorInterpolationFilters`,`color-interpolation-filters`],[`colorProfile`,`color-profile`],[`colorRendering`,`color-rendering`],[`dominantBaseline`,`dominant-baseline`],[`enableBackground`,`enable-background`],[`fillOpacity`,`fill-opacity`],[`fillRule`,`fill-rule`],[`floodColor`,`flood-color`],[`floodOpacity`,`flood-opacity`],[`fontFamily`,`font-family`],[`fontSize`,`font-size`],[`fontSizeAdjust`,`font-size-adjust`],[`fontStretch`,`font-stretch`],[`fontStyle`,`font-style`],[`fontVariant`,`font-variant`],[`fontWeight`,`font-weight`],[`glyphName`,`glyph-name`],[`glyphOrientationHorizontal`,`glyph-orientation-horizontal`],[`glyphOrientationVertical`,`glyph-orientation-vertical`],[`horizAdvX`,`horiz-adv-x`],[`horizOriginX`,`horiz-origin-x`],[`imageRendering`,`image-rendering`],[`letterSpacing`,`letter-spacing`],[`lightingColor`,`lighting-color`],[`markerEnd`,`marker-end`],[`markerMid`,`marker-mid`],[`markerStart`,`marker-start`],[`overlinePosition`,`overline-position`],[`overlineThickness`,`overline-thickness`],[`paintOrder`,`paint-order`],[`panose-1`,`panose-1`],[`pointerEvents`,`pointer-events`],[`renderingIntent`,`rendering-intent`],[`shapeRendering`,`shape-rendering`],[`stopColor`,`stop-color`],[`stopOpacity`,`stop-opacity`],[`strikethroughPosition`,`strikethrough-position`],[`strikethroughThickness`,`strikethrough-thickness`],[`strokeDasharray`,`stroke-dasharray`],[`strokeDashoffset`,`stroke-dashoffset`],[`strokeLinecap`,`stroke-linecap`],[`strokeLinejoin`,`stroke-linejoin`],[`strokeMiterlimit`,`stroke-miterlimit`],[`strokeOpacity`,`stroke-opacity`],[`strokeWidth`,`stroke-width`],[`textAnchor`,`text-anchor`],[`textDecoration`,`text-decoration`],[`textRendering`,`text-rendering`],[`transformOrigin`,`transform-origin`],[`underlinePosition`,`underline-position`],[`underlineThickness`,`underline-thickness`],[`unicodeBidi`,`unicode-bidi`],[`unicodeRange`,`unicode-range`],[`unitsPerEm`,`units-per-em`],[`vAlphabetic`,`v-alphabetic`],[`vHanging`,`v-hanging`],[`vIdeographic`,`v-ideographic`],[`vMathematical`,`v-mathematical`],[`vectorEffect`,`vector-effect`],[`vertAdvY`,`vert-adv-y`],[`vertOriginX`,`vert-origin-x`],[`vertOriginY`,`vert-origin-y`],[`wordSpacing`,`word-spacing`],[`writingMode`,`writing-mode`],[`xmlnsXlink`,`xmlns:xlink`],[`xHeight`,`x-height`]]),nn=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function rn(e){return nn.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}function an(){}var on=null;function sn(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var cn=null,ln=null;function un(e){var t=St(e);if(t&&(e=t.stateNode)){var n=e[pt]||null;a:switch(e=t.stateNode,t.type){case`input`:if(Gt(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type===`radio`&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(`input[name="`+Wt(``+t)+`"][type="radio"]`),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[pt]||null;if(!a)throw Error(i(90));Gt(r,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t<n.length;t++)r=n[t],r.form===e.form&&Vt(r)}break a;case`textarea`:N(e,n.value,n.defaultValue);break a;case`select`:t=n.value,t!=null&&Jt(e,!!n.multiple,t,!1)}}}var dn=!1;function fn(e,t,n){if(dn)return e(t,n);dn=!0;try{return e(t)}finally{if(dn=!1,(cn!==null||ln!==null)&&(yu(),cn&&(t=cn,e=ln,ln=cn=null,un(t),e)))for(t=0;t<e.length;t++)un(e[t])}}function pn(e,t){var n=e.stateNode;if(n===null)return null;var r=n[pt]||null;if(r===null)return null;n=r[t];a:switch(t){case`onClick`:case`onClickCapture`:case`onDoubleClick`:case`onDoubleClickCapture`:case`onMouseDown`:case`onMouseDownCapture`:case`onMouseMove`:case`onMouseMoveCapture`:case`onMouseUp`:case`onMouseUpCapture`:case`onMouseEnter`:(r=!r.disabled)||(e=e.type,r=!(e===`button`||e===`input`||e===`select`||e===`textarea`)),e=!r;break a;default:e=!1}if(e)return null;if(n&&typeof n!=`function`)throw Error(i(231,t,typeof n));return n}var mn=!(typeof window>`u`||window.document===void 0||window.document.createElement===void 0),hn=!1;if(mn)try{var gn={};Object.defineProperty(gn,`passive`,{get:function(){hn=!0}}),window.addEventListener(`test`,gn,gn),window.removeEventListener(`test`,gn,gn)}catch{hn=!1}var _n=null,vn=null,yn=null;function P(){if(yn)return yn;var e,t=vn,n=t.length,r,i=`value`in _n?_n.value:_n.textContent,a=i.length;for(e=0;e<n&&t[e]===i[e];e++);var o=n-e;for(r=1;r<=o&&t[n-r]===i[a-r];r++);return yn=i.slice(e,1<r?1-r:void 0)}function F(e){var t=e.keyCode;return`charCode`in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function bn(){return!0}function xn(){return!1}function I(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented==null?!1===i.returnValue:i.defaultPrevented)?bn:xn,this.isPropagationStopped=xn,this}return h(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():typeof e.returnValue!=`unknown`&&(e.returnValue=!1),this.isDefaultPrevented=bn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=`unknown`&&(e.cancelBubble=!0),this.isPropagationStopped=bn)},persist:function(){},isPersistent:bn}),t}var Sn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Cn=I(Sn),wn=h({},Sn,{view:0,detail:0}),Tn=I(wn),En,Dn,On,kn=h({},wn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Bn,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!==On&&(On&&e.type===`mousemove`?(En=e.screenX-On.screenX,Dn=e.screenY-On.screenY):Dn=En=0,On=e),En)},movementY:function(e){return`movementY`in e?e.movementY:Dn}}),An=I(kn),jn=I(h({},kn,{dataTransfer:0})),Mn=I(h({},wn,{relatedTarget:0})),Nn=I(h({},Sn,{animationName:0,elapsedTime:0,pseudoElement:0})),Pn=I(h({},Sn,{clipboardData:function(e){return`clipboardData`in e?e.clipboardData:window.clipboardData}})),Fn=I(h({},Sn,{data:0})),In={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},Ln={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`},Rn={Alt:`altKey`,Control:`ctrlKey`,Meta:`metaKey`,Shift:`shiftKey`};function zn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=Rn[e])?!!t[e]:!1}function Bn(){return zn}var Vn=I(h({},wn,{key:function(e){if(e.key){var t=In[e.key]||e.key;if(t!==`Unidentified`)return t}return e.type===`keypress`?(e=F(e),e===13?`Enter`:String.fromCharCode(e)):e.type===`keydown`||e.type===`keyup`?Ln[e.keyCode]||`Unidentified`:``},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Bn,charCode:function(e){return e.type===`keypress`?F(e):0},keyCode:function(e){return e.type===`keydown`||e.type===`keyup`?e.keyCode:0},which:function(e){return e.type===`keypress`?F(e):e.type===`keydown`||e.type===`keyup`?e.keyCode:0}})),Hn=I(h({},kn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Un=I(h({},wn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Bn})),Wn=I(h({},Sn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Gn=I(h({},kn,{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})),Kn=I(h({},Sn,{newState:0,oldState:0})),qn=[9,13,27,32],Jn=mn&&`CompositionEvent`in window,Yn=null;mn&&`documentMode`in document&&(Yn=document.documentMode);var Xn=mn&&`TextEvent`in window&&!Yn,Zn=mn&&(!Jn||Yn&&8<Yn&&11>=Yn),Qn=` `,$n=!1;function er(e,t){switch(e){case`keyup`:return qn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function tr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var nr=!1;function L(e,t){switch(e){case`compositionend`:return tr(t);case`keypress`:return t.which===32?($n=!0,Qn):null;case`textInput`:return e=t.data,e===Qn&&$n?null:e;default:return null}}function R(e,t){if(nr)return e===`compositionend`||!Jn&&er(e,t)?(e=P(),yn=vn=_n=null,nr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case`compositionend`:return Zn&&t.locale!==`ko`?null:t.data;default:return null}}var rr={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 ir(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===`input`?!!rr[e.type]:t===`textarea`}function ar(e,t,n,r){cn?ln?ln.push(r):ln=[r]:cn=r,t=Td(t,`onChange`),0<t.length&&(n=new Cn(`onChange`,`change`,null,n,r),e.push({event:n,listeners:t}))}var or=null,sr=null;function cr(e){vd(e,0)}function lr(e){if(Vt(Ct(e)))return e}function ur(e,t){if(e===`change`)return t}var dr=!1;if(mn){var fr;if(mn){var pr=`oninput`in document;if(!pr){var mr=document.createElement(`div`);mr.setAttribute(`oninput`,`return;`),pr=typeof mr.oninput==`function`}fr=pr}else fr=!1;dr=fr&&(!document.documentMode||9<document.documentMode)}function hr(){or&&(or.detachEvent(`onpropertychange`,gr),sr=or=null)}function gr(e){if(e.propertyName===`value`&&lr(sr)){var t=[];ar(t,sr,e,sn(e)),fn(cr,t)}}function _r(e,t,n){e===`focusin`?(hr(),or=t,sr=n,or.attachEvent(`onpropertychange`,gr)):e===`focusout`&&hr()}function vr(e){if(e===`selectionchange`||e===`keyup`||e===`keydown`)return lr(sr)}function yr(e,t){if(e===`click`)return lr(t)}function br(e,t){if(e===`input`||e===`change`)return lr(t)}function xr(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var Sr=typeof Object.is==`function`?Object.is:xr;function Cr(e,t){if(Sr(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!De.call(t,i)||!Sr(e[i],t[i]))return!1}return!0}function wr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Tr(e,t){var n=wr(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=wr(n)}}function Er(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Er(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Dr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Ht(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ht(e.document)}return t}function Or(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var kr=mn&&`documentMode`in document&&11>=document.documentMode,Ar=null,jr=null,Mr=null,Nr=!1;function Pr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Nr||Ar==null||Ar!==Ht(r)||(r=Ar,`selectionStart`in r&&Or(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Mr&&Cr(Mr,r)||(Mr=r,r=Td(jr,`onSelect`),0<r.length&&(t=new Cn(`onSelect`,`select`,null,t,n),e.push({event:t,listeners:r}),t.target=Ar)))}function Fr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[`Webkit`+e]=`webkit`+t,n[`Moz`+e]=`moz`+t,n}var Ir={animationend:Fr(`Animation`,`AnimationEnd`),animationiteration:Fr(`Animation`,`AnimationIteration`),animationstart:Fr(`Animation`,`AnimationStart`),transitionrun:Fr(`Transition`,`TransitionRun`),transitionstart:Fr(`Transition`,`TransitionStart`),transitioncancel:Fr(`Transition`,`TransitionCancel`),transitionend:Fr(`Transition`,`TransitionEnd`)},Lr={},Rr={};mn&&(Rr=document.createElement(`div`).style,`AnimationEvent`in window||(delete Ir.animationend.animation,delete Ir.animationiteration.animation,delete Ir.animationstart.animation),`TransitionEvent`in window||delete Ir.transitionend.transition);function zr(e){if(Lr[e])return Lr[e];if(!Ir[e])return e;var t=Ir[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in Rr)return Lr[e]=t[n];return e}var Br=zr(`animationend`),Vr=zr(`animationiteration`),Hr=zr(`animationstart`),Ur=zr(`transitionrun`),Wr=zr(`transitionstart`),z=zr(`transitioncancel`),Gr=zr(`transitionend`),Kr=new Map,qr=`abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel`.split(` `);qr.push(`scrollEnd`);function Jr(e,t){Kr.set(e,t),Ot(t,[e])}var Yr=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},Xr=[],Zr=0,Qr=0;function $r(){for(var e=Zr,t=Qr=Zr=0;t<e;){var n=Xr[t];Xr[t++]=null;var r=Xr[t];Xr[t++]=null;var i=Xr[t];Xr[t++]=null;var a=Xr[t];if(Xr[t++]=null,r!==null&&i!==null){var o=r.pending;o===null?i.next=i:(i.next=o.next,o.next=i),r.pending=i}a!==0&&ni(n,i,a)}}function ei(e,t,n,r){Xr[Zr++]=e,Xr[Zr++]=t,Xr[Zr++]=n,Xr[Zr++]=r,Qr|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function ti(e,t,n,r){return ei(e,t,n,r),ri(e)}function B(e,t){return ei(e,null,null,t),ri(e)}function ni(e,t,n){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n);for(var i=!1,a=e.return;a!==null;)a.childLanes|=n,r=a.alternate,r!==null&&(r.childLanes|=n),a.tag===22&&(e=a.stateNode,e===null||e._visibility&1||(i=!0)),e=a,a=a.return;return e.tag===3?(a=e.stateNode,i&&t!==null&&(i=31-We(n),e=a.hiddenUpdates,r=e[i],r===null?e[i]=[t]:r.push(t),t.lane=n|536870912),a):null}function ri(e){if(50<uu)throw uu=0,du=null,Error(i(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var ii={};function ai(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function oi(e,t,n,r){return new ai(e,t,n,r)}function si(e){return e=e.prototype,!(!e||!e.isReactComponent)}function ci(e,t){var n=e.alternate;return n===null?(n=oi(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function li(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function ui(e,t,n,r,a,o){var s=0;if(r=e,typeof e==`function`)si(e)&&(s=1);else if(typeof e==`string`)s=Uf(e,n,pe.current)?26:e===`html`||e===`head`||e===`body`?27:5;else a:switch(e){case re:return e=oi(31,n,t,a),e.elementType=re,e.lanes=o,e;case y:return di(n.children,a,o,t);case b:s=8,a|=24;break;case x:return e=oi(12,n,t,a|2),e.elementType=x,e.lanes=o,e;case ee:return e=oi(13,n,t,a),e.elementType=ee,e.lanes=o,e;case te:return e=oi(19,n,t,a),e.elementType=te,e.lanes=o,e;default:if(typeof e==`object`&&e)switch(e.$$typeof){case C:s=10;break a;case S:s=9;break a;case w:s=11;break a;case ne:s=14;break a;case T:s=16,r=null;break a}s=29,n=Error(i(130,e===null?`null`:typeof e,``)),r=null}return t=oi(s,n,t,a),t.elementType=e,t.type=r,t.lanes=o,t}function di(e,t,n,r){return e=oi(7,e,r,t),e.lanes=n,e}function V(e,t,n){return e=oi(6,e,null,t),e.lanes=n,e}function fi(e){var t=oi(18,null,null,0);return t.stateNode=e,t}function pi(e,t,n){return t=oi(4,e.children===null?[]:e.children,e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var mi=new WeakMap;function H(e,t){if(typeof e==`object`&&e){var n=mi.get(e);return n===void 0?(t={value:e,source:t,stack:Ee(t)},mi.set(e,t),t):n}return{value:e,source:t,stack:Ee(t)}}var U=[],hi=0,gi=null,_i=0,vi=[],yi=0,bi=null,xi=1,Si=``;function Ci(e,t){U[hi++]=_i,U[hi++]=gi,gi=e,_i=t}function wi(e,t,n){vi[yi++]=xi,vi[yi++]=Si,vi[yi++]=bi,bi=e;var r=xi;e=Si;var i=32-We(r)-1;r&=~(1<<i),n+=1;var a=32-We(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,xi=1<<32-We(t)+i|n<<i|r,Si=a+e}else xi=1<<a|n<<i|r,Si=e}function Ti(e){e.return!==null&&(Ci(e,1),wi(e,1,0))}function Ei(e){for(;e===gi;)gi=U[--hi],U[hi]=null,_i=U[--hi],U[hi]=null;for(;e===bi;)bi=vi[--yi],vi[yi]=null,Si=vi[--yi],vi[yi]=null,xi=vi[--yi],vi[yi]=null}function Di(e,t){vi[yi++]=xi,vi[yi++]=Si,vi[yi++]=bi,xi=t.id,Si=t.overflow,bi=e}var Oi=null,W=null,G=!1,ki=null,Ai=!1,ji=Error(i(519));function K(e){throw Li(H(Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?`text`:`HTML`,``)),e)),ji}function Mi(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[ft]=e,t[pt]=r,n){case`dialog`:$(`cancel`,t),$(`close`,t);break;case`iframe`:case`object`:case`embed`:$(`load`,t);break;case`video`:case`audio`:for(n=0;n<gd.length;n++)$(gd[n],t);break;case`source`:$(`error`,t);break;case`img`:case`image`:case`link`:$(`error`,t),$(`load`,t);break;case`details`:$(`toggle`,t);break;case`input`:$(`invalid`,t),Kt(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case`select`:$(`invalid`,t);break;case`textarea`:$(`invalid`,t),Yt(t,r.value,r.defaultValue,r.children)}n=r.children,typeof n!=`string`&&typeof n!=`number`&&typeof n!=`bigint`||t.textContent===``+n||!0===r.suppressHydrationWarning||jd(t.textContent,n)?(r.popover!=null&&($(`beforetoggle`,t),$(`toggle`,t)),r.onScroll!=null&&$(`scroll`,t),r.onScrollEnd!=null&&$(`scrollend`,t),r.onClick!=null&&(t.onclick=an),t=!0):t=!1,t||K(e,!0)}function Ni(e){for(Oi=e.return;Oi;)switch(Oi.tag){case 5:case 31:case 13:Ai=!1;return;case 27:case 3:Ai=!0;return;default:Oi=Oi.return}}function Pi(e){if(e!==Oi)return!1;if(!G)return Ni(e),G=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=!(n!==`form`&&n!==`button`)||Ud(e.type,e.memoizedProps)),n=!n),n&&W&&K(e),Ni(e),t===13){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));W=uf(e)}else if(t===31){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));W=uf(e)}else t===27?(t=W,Zd(e.type)?(e=lf,lf=null,W=e):W=t):W=Oi?cf(e.stateNode.nextSibling):null;return!0}function Fi(){W=Oi=null,G=!1}function Ii(){var e=ki;return e!==null&&(Xl===null?Xl=e:Xl.push.apply(Xl,e),ki=null),e}function Li(e){ki===null?ki=[e]:ki.push(e)}var Ri=de(null),zi=null,Bi=null;function Vi(e,t,n){A(Ri,t._currentValue),t._currentValue=n}function Hi(e){e._currentValue=Ri.current,fe(Ri)}function Ui(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)===t?r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t):(e.childLanes|=t,r!==null&&(r.childLanes|=t)),e===n)break;e=e.return}}function Wi(e,t,n,r){var a=e.child;for(a!==null&&(a.return=e);a!==null;){var o=a.dependencies;if(o!==null){var s=a.child;o=o.firstContext;a:for(;o!==null;){var c=o;o=a;for(var l=0;l<t.length;l++)if(c.context===t[l]){o.lanes|=n,c=o.alternate,c!==null&&(c.lanes|=n),Ui(o.return,n,e),r||(s=null);break a}o=c.next}}else if(a.tag===18){if(s=a.return,s===null)throw Error(i(341));s.lanes|=n,o=s.alternate,o!==null&&(o.lanes|=n),Ui(s,n,e),s=null}else s=a.child;if(s!==null)s.return=a;else for(s=a;s!==null;){if(s===e){s=null;break}if(a=s.sibling,a!==null){a.return=s.return,s=a;break}s=s.return}a=s}}function Gi(e,t,n,r){e=null;for(var a=t,o=!1;a!==null;){if(!o){if(a.flags&524288)o=!0;else if(a.flags&262144)break}if(a.tag===10){var s=a.alternate;if(s===null)throw Error(i(387));if(s=s.memoizedProps,s!==null){var c=a.type;Sr(a.pendingProps.value,s.value)||(e===null?e=[c]:e.push(c))}}else if(a===ge.current){if(s=a.alternate,s===null)throw Error(i(387));s.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(e===null?e=[Qf]:e.push(Qf))}a=a.return}e!==null&&Wi(t,e,n,r),t.flags|=262144}function Ki(e){for(e=e.firstContext;e!==null;){if(!Sr(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function qi(e){zi=e,Bi=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Ji(e){return Xi(zi,e)}function Yi(e,t){return zi===null&&qi(e),Xi(e,t)}function Xi(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},Bi===null){if(e===null)throw Error(i(308));Bi=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Bi=Bi.next=t;return n}var Zi=typeof AbortController<`u`?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},Qi=t.unstable_scheduleCallback,$i=t.unstable_NormalPriority,ea={$$typeof:C,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function ta(){return{controller:new Zi,data:new Map,refCount:0}}function na(e){e.refCount--,e.refCount===0&&Qi($i,function(){e.controller.abort()})}var ra=null,ia=0,aa=0,oa=null;function sa(e,t){if(ra===null){var n=ra=[];ia=0,aa=ud(),oa={status:`pending`,value:void 0,then:function(e){n.push(e)}}}return ia++,t.then(ca,ca),t}function ca(){if(--ia===0&&ra!==null){oa!==null&&(oa.status=`fulfilled`);var e=ra;ra=null,aa=0,oa=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function la(e,t){var n=[],r={status:`pending`,value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status=`fulfilled`,r.value=t;for(var e=0;e<n.length;e++)(0,n[e])(t)},function(e){for(r.status=`rejected`,r.reason=e,e=0;e<n.length;e++)(0,n[e])(void 0)}),r}var ua=D.S;D.S=function(e,t){$l=Me(),typeof t==`object`&&t&&typeof t.then==`function`&&sa(e,t),ua!==null&&ua(e,t)};var da=de(null);function fa(){var e=da.current;return e===null?Ll.pooledCache:e}function pa(e,t){t===null?A(da,da.current):A(da,t.pool)}function ma(){var e=fa();return e===null?null:{parent:ea._currentValue,pool:e}}var ha=Error(i(460)),ga=Error(i(474)),_a=Error(i(542)),va={then:function(){}};function ya(e){return e=e.status,e===`fulfilled`||e===`rejected`}function ba(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(an,an),t=n),t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,wa(e),e;default:if(typeof t.status==`string`)t.then(an,an);else{if(e=Ll,e!==null&&100<e.shellSuspendCounter)throw Error(i(482));e=t,e.status=`pending`,e.then(function(e){if(t.status===`pending`){var n=t;n.status=`fulfilled`,n.value=e}},function(e){if(t.status===`pending`){var n=t;n.status=`rejected`,n.reason=e}})}switch(t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,wa(e),e}throw Sa=t,ha}}function xa(e){try{var t=e._init;return t(e._payload)}catch(e){throw typeof e==`object`&&e&&typeof e.then==`function`?(Sa=e,ha):e}}var Sa=null;function Ca(){if(Sa===null)throw Error(i(459));var e=Sa;return Sa=null,e}function wa(e){if(e===ha||e===_a)throw Error(i(483))}var Ta=null,Ea=0;function Da(e){var t=Ea;return Ea+=1,Ta===null&&(Ta=[]),ba(Ta,e,t)}function Oa(e,t){t=t.props.ref,e.ref=t===void 0?null:t}function ka(e,t){throw t.$$typeof===g?Error(i(525)):(e=Object.prototype.toString.call(t),Error(i(31,e===`[object Object]`?`object with keys {`+Object.keys(t).join(`, `)+`}`:e)))}function Aa(e){function t(t,n){if(e){var r=t.deletions;r===null?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;r!==null;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;e!==null;)e.key===null?t.set(e.index,e):t.set(e.key,e),e=e.sibling;return t}function a(e,t){return e=ci(e,t),e.index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?(r=t.alternate,r===null?(t.flags|=67108866,n):(r=r.index,r<n?(t.flags|=67108866,n):r)):(t.flags|=1048576,n)}function s(t){return e&&t.alternate===null&&(t.flags|=67108866),t}function c(e,t,n,r){return t===null||t.tag!==6?(t=V(n,e.mode,r),t.return=e,t):(t=a(t,n),t.return=e,t)}function l(e,t,n,r){var i=n.type;return i===y?d(e,t,n.props.children,r,n.key):t!==null&&(t.elementType===i||typeof i==`object`&&i&&i.$$typeof===T&&xa(i)===t.type)?(t=a(t,n.props),Oa(t,n),t.return=e,t):(t=ui(n.type,n.key,n.props,null,e.mode,r),Oa(t,n),t.return=e,t)}function u(e,t,n,r){return t===null||t.tag!==4||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?(t=pi(n,e.mode,r),t.return=e,t):(t=a(t,n.children||[]),t.return=e,t)}function d(e,t,n,r,i){return t===null||t.tag!==7?(t=di(n,e.mode,r,i),t.return=e,t):(t=a(t,n),t.return=e,t)}function f(e,t,n){if(typeof t==`string`&&t!==``||typeof t==`number`||typeof t==`bigint`)return t=V(``+t,e.mode,n),t.return=e,t;if(typeof t==`object`&&t){switch(t.$$typeof){case _:return n=ui(t.type,t.key,t.props,null,e.mode,n),Oa(n,t),n.return=e,n;case v:return t=pi(t,e.mode,n),t.return=e,t;case T:return t=xa(t),f(e,t,n)}if(ce(t)||ae(t))return t=di(t,e.mode,n,null),t.return=e,t;if(typeof t.then==`function`)return f(e,Da(t),n);if(t.$$typeof===C)return f(e,Yi(e,t),n);ka(e,t)}return null}function p(e,t,n,r){var i=t===null?null:t.key;if(typeof n==`string`&&n!==``||typeof n==`number`||typeof n==`bigint`)return i===null?c(e,t,``+n,r):null;if(typeof n==`object`&&n){switch(n.$$typeof){case _:return n.key===i?l(e,t,n,r):null;case v:return n.key===i?u(e,t,n,r):null;case T:return n=xa(n),p(e,t,n,r)}if(ce(n)||ae(n))return i===null?d(e,t,n,r,null):null;if(typeof n.then==`function`)return p(e,t,Da(n),r);if(n.$$typeof===C)return p(e,t,Yi(e,n),r);ka(e,n)}return null}function m(e,t,n,r,i){if(typeof r==`string`&&r!==``||typeof r==`number`||typeof r==`bigint`)return e=e.get(n)||null,c(t,e,``+r,i);if(typeof r==`object`&&r){switch(r.$$typeof){case _:return e=e.get(r.key===null?n:r.key)||null,l(t,e,r,i);case v:return e=e.get(r.key===null?n:r.key)||null,u(t,e,r,i);case T:return r=xa(r),m(e,t,n,r,i)}if(ce(r)||ae(r))return e=e.get(n)||null,d(t,e,r,i,null);if(typeof r.then==`function`)return m(e,t,n,Da(r),i);if(r.$$typeof===C)return m(e,t,n,Yi(t,r),i);ka(t,r)}return null}function h(i,a,s,c){for(var l=null,u=null,d=a,h=a=0,g=null;d!==null&&h<s.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),G&&Ci(i,h),l;if(d===null){for(;h<s.length;h++)d=f(i,s[h],c),d!==null&&(a=o(d,a,h),u===null?l=d:u.sibling=d,u=d);return G&&Ci(i,h),l}for(d=r(d);h<s.length;h++)g=m(d,i,h,s[h],c),g!==null&&(e&&g.alternate!==null&&d.delete(g.key===null?h:g.key),a=o(g,a,h),u===null?l=g:u.sibling=g,u=g);return e&&d.forEach(function(e){return t(i,e)}),G&&Ci(i,h),l}function g(a,s,c,l){if(c==null)throw Error(i(151));for(var u=null,d=null,h=s,g=s=0,_=null,v=c.next();h!==null&&!v.done;g++,v=c.next()){h.index>g?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),G&&Ci(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return G&&Ci(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),G&&Ci(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===T&&xa(l)===r.type){n(e,r.sibling),c=a(r,o.props),Oa(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=di(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=ui(o.type,o.key,o.props,null,e.mode,c),Oa(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=pi(o,e.mode,c),c.return=e,e=c}return s(e);case T:return o=xa(o),b(e,r,o,c)}if(ce(o))return h(e,r,o,c);if(ae(o)){if(l=ae(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Da(o),c);if(o.$$typeof===C)return b(e,r,Yi(e,o),c);ka(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=V(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Ea=0;var i=b(e,t,n,r);return Ta=null,i}catch(t){if(t===ha||t===_a)throw t;var a=oi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var ja=Aa(!0),Ma=Aa(!1),Na=!1;function Pa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Fa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ia(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function La(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,J&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ri(e),ni(e,null,n),t}return ei(e,r,t,n),ri(e)}function Ra(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,at(e,n)}}function za(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ba=!1;function Va(){if(Ba){var e=oa;if(e!==null)throw e}}function Ha(e,t,n,r){Ba=!1;var i=e.updateQueue;Na=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(X&f)===f:(r&f)===f){f!==0&&f===aa&&(Ba=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Na=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Wl|=o,e.lanes=o,e.memoizedState=d}}function Ua(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Wa(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)Ua(n[e],t)}var Ga=de(null),Ka=de(0);function qa(e,t){e=Hl,A(Ka,e),A(Ga,t),Hl=e|t.baseLanes}function Ja(){A(Ka,Hl),A(Ga,Ga.current)}function Ya(){Hl=Ka.current,fe(Ga),fe(Ka)}var Xa=de(null),Za=null;function Qa(e){var t=e.alternate;A(ro,ro.current&1),A(Xa,e),Za===null&&(t===null||Ga.current!==null||t.memoizedState!==null)&&(Za=e)}function $a(e){A(ro,ro.current),A(Xa,e),Za===null&&(Za=e)}function eo(e){e.tag===22?(A(ro,ro.current),A(Xa,e),Za===null&&(Za=e)):to(e)}function to(){A(ro,ro.current),A(Xa,Xa.current)}function no(e){fe(Xa),Za===e&&(Za=null),fe(ro)}var ro=de(0);function io(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||af(n)||of(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder===`forwards`||t.memoizedProps.revealOrder===`backwards`||t.memoizedProps.revealOrder===`unstable_legacy-backwards`||t.memoizedProps.revealOrder===`together`)){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ao=0,q=null,oo=null,so=null,co=!1,lo=!1,uo=!1,fo=0,po=0,mo=null,ho=0;function go(){throw Error(i(321))}function _o(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Sr(e[n],t[n]))return!1;return!0}function vo(e,t,n,r,i,a){return ao=a,q=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,D.H=e===null||e.memoizedState===null?Fs:Is,uo=!1,a=n(r,i),uo=!1,lo&&(a=bo(t,n,r,i)),yo(e),a}function yo(e){D.H=Ps;var t=oo!==null&&oo.next!==null;if(ao=0,so=oo=q=null,co=!1,po=0,mo=null,t)throw Error(i(300));e===null||$s||(e=e.dependencies,e!==null&&Ki(e)&&($s=!0))}function bo(e,t,n,r){q=e;var a=0;do{if(lo&&(mo=null),po=0,lo=!1,25<=a)throw Error(i(301));if(a+=1,so=oo=null,e.updateQueue!=null){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,o.memoCache!=null&&(o.memoCache.index=0)}D.H=Ls,o=t(n,r)}while(lo);return o}function xo(){var e=D.H,t=e.useState()[0];return t=typeof t.then==`function`?Oo(t):t,e=e.useState()[0],(oo===null?null:oo.memoizedState)!==e&&(q.flags|=1024),t}function So(){var e=fo!==0;return fo=0,e}function Co(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function wo(e){if(co){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}co=!1}ao=0,so=oo=q=null,lo=!1,po=fo=0,mo=null}function To(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return so===null?q.memoizedState=so=e:so=so.next=e,so}function Eo(){if(oo===null){var e=q.alternate;e=e===null?null:e.memoizedState}else e=oo.next;var t=so===null?q.memoizedState:so.next;if(t!==null)so=t,oo=e;else{if(e===null)throw q.alternate===null?Error(i(467)):Error(i(310));oo=e,e={memoizedState:oo.memoizedState,baseState:oo.baseState,baseQueue:oo.baseQueue,queue:oo.queue,next:null},so===null?q.memoizedState=so=e:so=so.next=e}return so}function Do(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Oo(e){var t=po;return po+=1,mo===null&&(mo=[]),e=ba(mo,e,t),t=q,(so===null?t.memoizedState:so.next)===null&&(t=t.alternate,D.H=t===null||t.memoizedState===null?Fs:Is),e}function ko(e){if(typeof e==`object`&&e){if(typeof e.then==`function`)return Oo(e);if(e.$$typeof===C)return Ji(e)}throw Error(i(438,String(e)))}function Ao(e){var t=null,n=q.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var r=q.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(t??={data:[],index:0},n===null&&(n=Do(),q.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=ie;return t.index++,n}function jo(e,t){return typeof t==`function`?t(e):t}function Mo(e){return No(Eo(),oo,e)}function No(e,t,n){var r=e.queue;if(r===null)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,o=r.pending;if(o!==null){if(a!==null){var s=a.next;a.next=o.next,o.next=s}t.baseQueue=a=o,r.pending=null}if(o=e.baseState,a===null)e.memoizedState=o;else{t=a.next;var c=s=null,l=null,u=t,d=!1;do{var f=u.lane&-536870913;if(f===u.lane?(ao&f)===f:(X&f)===f){var p=u.revertLane;if(p===0)l!==null&&(l=l.next={lane:0,revertLane:0,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),f===aa&&(d=!0);else if((ao&p)===p){u=u.next,p===aa&&(d=!0);continue}else f={lane:0,revertLane:u.revertLane,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=f,s=o):l=l.next=f,q.lanes|=p,Wl|=p;f=u.action,uo&&n(o,f),o=u.hasEagerState?u.eagerState:n(o,f)}else p={lane:f,revertLane:u.revertLane,gesture:u.gesture,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=p,s=o):l=l.next=p,q.lanes|=f,Wl|=f;u=u.next}while(u!==null&&u!==t);if(l===null?s=o:l.next=c,!Sr(o,e.memoizedState)&&($s=!0,d&&(n=oa,n!==null)))throw n;e.memoizedState=o,e.baseState=s,e.baseQueue=l,r.lastRenderedState=o}return a===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function Po(e){var t=Eo(),n=t.queue;if(n===null)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(a!==null){n.pending=null;var s=a=a.next;do o=e(o,s.action),s=s.next;while(s!==a);Sr(o,t.memoizedState)||($s=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function Fo(e,t,n){var r=q,a=Eo(),o=G;if(o){if(n===void 0)throw Error(i(407));n=n()}else n=t();var s=!Sr((oo||a).memoizedState,n);if(s&&(a.memoizedState=n,$s=!0),a=a.queue,os(Ro.bind(null,r,a,e),[e]),a.getSnapshot!==t||s||so!==null&&so.memoizedState.tag&1){if(r.flags|=2048,ts(9,{destroy:void 0},Lo.bind(null,r,a,n,t),null),Ll===null)throw Error(i(349));o||ao&127||Io(r,t,n)}return n}function Io(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=q.updateQueue,t===null?(t=Do(),q.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Lo(e,t,n,r){t.value=n,t.getSnapshot=r,zo(t)&&Bo(e)}function Ro(e,t,n){return n(function(){zo(t)&&Bo(e)})}function zo(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Sr(e,n)}catch{return!0}}function Bo(e){var t=B(e,2);t!==null&&mu(t,e,2)}function Vo(e){var t=To();if(typeof e==`function`){var n=e;if(e=n(),uo){Ue(!0);try{n()}finally{Ue(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:jo,lastRenderedState:e},t}function Ho(e,t,n,r){return e.baseState=n,No(e,oo,typeof r==`function`?r:jo)}function Uo(e,t,n,r,a){if(js(e))throw Error(i(485));if(e=t.action,e!==null){var o={payload:a,action:e,next:null,isTransition:!0,status:`pending`,value:null,reason:null,listeners:[],then:function(e){o.listeners.push(e)}};D.T===null?o.isTransition=!1:n(!0),r(o),n=t.pending,n===null?(o.next=t.pending=o,Wo(t,o)):(o.next=n.next,t.pending=n.next=o)}}function Wo(e,t){var n=t.action,r=t.payload,i=e.state;if(t.isTransition){var a=D.T,o={};D.T=o;try{var s=n(i,r),c=D.S;c!==null&&c(o,s),Go(e,t,s)}catch(n){qo(e,t,n)}finally{a!==null&&o.types!==null&&(a.types=o.types),D.T=a}}else try{a=n(i,r),Go(e,t,a)}catch(n){qo(e,t,n)}}function Go(e,t,n){typeof n==`object`&&n&&typeof n.then==`function`?n.then(function(n){Ko(e,t,n)},function(n){return qo(e,t,n)}):Ko(e,t,n)}function Ko(e,t,n){t.status=`fulfilled`,t.value=n,Jo(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,Wo(e,n)))}function qo(e,t,n){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status=`rejected`,t.reason=n,Jo(t),t=t.next;while(t!==r)}e.action=null}function Jo(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Yo(e,t){return t}function Xo(e,t){if(G){var n=Ll.formState;if(n!==null){a:{var r=q;if(G){if(W){b:{for(var i=W,a=Ai;i.nodeType!==8;){if(!a){i=null;break b}if(i=cf(i.nextSibling),i===null){i=null;break b}}a=i.data,i=a===`F!`||a===`F`?i:null}if(i){W=cf(i.nextSibling),r=i.data===`F!`;break a}}K(r)}r=!1}r&&(t=n[0])}}return n=To(),n.memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Yo,lastRenderedState:t},n.queue=r,n=Os.bind(null,q,r),r.dispatch=n,r=Vo(!1),a=As.bind(null,q,!1,r.queue),r=To(),i={state:t,dispatch:null,action:e,pending:null},r.queue=i,n=Uo.bind(null,q,i,a,n),i.dispatch=n,r.memoizedState=e,[t,n,!1]}function Zo(e){return Qo(Eo(),oo,e)}function Qo(e,t,n){if(t=No(e,t,Yo)[0],e=Mo(jo)[0],typeof t==`object`&&t&&typeof t.then==`function`)try{var r=Oo(t)}catch(e){throw e===ha?_a:e}else r=t;t=Eo();var i=t.queue,a=i.dispatch;return n!==t.memoizedState&&(q.flags|=2048,ts(9,{destroy:void 0},$o.bind(null,i,n),null)),[r,a,e]}function $o(e,t){e.action=t}function es(e){var t=Eo(),n=oo;if(n!==null)return Qo(t,n,e);Eo(),t=t.memoizedState,n=Eo();var r=n.queue.dispatch;return n.memoizedState=e,[t,r,!1]}function ts(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},t=q.updateQueue,t===null&&(t=Do(),q.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function ns(){return Eo().memoizedState}function rs(e,t,n,r){var i=To();q.flags|=e,i.memoizedState=ts(1|t,{destroy:void 0},n,r===void 0?null:r)}function is(e,t,n,r){var i=Eo();r=r===void 0?null:r;var a=i.memoizedState.inst;oo!==null&&r!==null&&_o(r,oo.memoizedState.deps)?i.memoizedState=ts(t,a,n,r):(q.flags|=e,i.memoizedState=ts(1|t,a,n,r))}function as(e,t){rs(8390656,8,e,t)}function os(e,t){is(2048,8,e,t)}function ss(e){q.flags|=4;var t=q.updateQueue;if(t===null)t=Do(),q.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function cs(e){var t=Eo().memoizedState;return ss({ref:t,nextImpl:e}),function(){if(J&2)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function ls(e,t){return is(4,2,e,t)}function us(e,t){return is(4,4,e,t)}function ds(e,t){if(typeof t==`function`){e=e();var n=t(e);return function(){typeof n==`function`?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function fs(e,t,n){n=n==null?null:n.concat([e]),is(4,4,ds.bind(null,t,e),n)}function ps(){}function ms(e,t){var n=Eo();t=t===void 0?null:t;var r=n.memoizedState;return t!==null&&_o(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function hs(e,t){var n=Eo();t=t===void 0?null:t;var r=n.memoizedState;if(t!==null&&_o(t,r[1]))return r[0];if(r=e(),uo){Ue(!0);try{e()}finally{Ue(!1)}}return n.memoizedState=[r,t],r}function gs(e,t,n){return n===void 0||ao&1073741824&&!(X&261930)?e.memoizedState=t:(e.memoizedState=n,e=pu(),q.lanes|=e,Wl|=e,n)}function _s(e,t,n,r){return Sr(n,t)?n:Ga.current===null?!(ao&42)||ao&1073741824&&!(X&261930)?($s=!0,e.memoizedState=n):(e=pu(),q.lanes|=e,Wl|=e,t):(e=gs(e,n,r),Sr(e,t)||($s=!0),e)}function vs(e,t,n,r,i){var a=O.p;O.p=a!==0&&8>a?a:8;var o=D.T,s={};D.T=s,As(e,!1,t,n);try{var c=i(),l=D.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?ks(e,t,la(c,r),fu(e)):ks(e,t,r,fu(e))}catch(n){ks(e,t,{then:function(){},status:`rejected`,reason:n},fu())}finally{O.p=a,o!==null&&s.types!==null&&(o.types=s.types),D.T=o}}function ys(){}function bs(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=xs(e).queue;vs(e,a,t,le,n===null?ys:function(){return Ss(e),n(r)})}function xs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:le,baseState:le,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:jo,lastRenderedState:le},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:jo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Ss(e){var t=xs(e);t.next===null&&(t=e.alternate.memoizedState),ks(e,t.next.queue,{},fu())}function Cs(){return Ji(Qf)}function ws(){return Eo().memoizedState}function Ts(){return Eo().memoizedState}function Es(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=fu();e=Ia(n);var r=La(t,e,n);r!==null&&(mu(r,t,n),Ra(r,t,n)),t={cache:ta()},e.payload=t;return}t=t.return}}function Ds(e,t,n){var r=fu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},js(e)?Ms(t,n):(n=ti(e,t,n,r),n!==null&&(mu(n,e,r),Ns(n,t,r)))}function Os(e,t,n){ks(e,t,n,fu())}function ks(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(js(e))Ms(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Sr(s,o))return ei(e,t,i,0),Ll===null&&$r(),!1}catch{}if(n=ti(e,t,i,r),n!==null)return mu(n,e,r),Ns(n,t,r),!0}return!1}function As(e,t,n,r){if(r={lane:2,revertLane:ud(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},js(e)){if(t)throw Error(i(479))}else t=ti(e,n,r,2),t!==null&&mu(t,e,2)}function js(e){var t=e.alternate;return e===q||t!==null&&t===q}function Ms(e,t){lo=co=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ns(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,at(e,n)}}var Ps={readContext:Ji,use:ko,useCallback:go,useContext:go,useEffect:go,useImperativeHandle:go,useLayoutEffect:go,useInsertionEffect:go,useMemo:go,useReducer:go,useRef:go,useState:go,useDebugValue:go,useDeferredValue:go,useTransition:go,useSyncExternalStore:go,useId:go,useHostTransitionStatus:go,useFormState:go,useActionState:go,useOptimistic:go,useMemoCache:go,useCacheRefresh:go};Ps.useEffectEvent=go;var Fs={readContext:Ji,use:ko,useCallback:function(e,t){return To().memoizedState=[e,t===void 0?null:t],e},useContext:Ji,useEffect:as,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),rs(4194308,4,ds.bind(null,t,e),n)},useLayoutEffect:function(e,t){return rs(4194308,4,e,t)},useInsertionEffect:function(e,t){rs(4,2,e,t)},useMemo:function(e,t){var n=To();t=t===void 0?null:t;var r=e();if(uo){Ue(!0);try{e()}finally{Ue(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=To();if(n!==void 0){var i=n(t);if(uo){Ue(!0);try{n(t)}finally{Ue(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Ds.bind(null,q,e),[r.memoizedState,e]},useRef:function(e){var t=To();return e={current:e},t.memoizedState=e},useState:function(e){e=Vo(e);var t=e.queue,n=Os.bind(null,q,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:ps,useDeferredValue:function(e,t){return gs(To(),e,t)},useTransition:function(){var e=Vo(!1);return e=vs.bind(null,q,e.queue,!0,!1),To().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=q,a=To();if(G){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Ll===null)throw Error(i(349));X&127||Io(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,as(Ro.bind(null,r,o,e),[e]),r.flags|=2048,ts(9,{destroy:void 0},Lo.bind(null,r,o,n,t),null),n},useId:function(){var e=To(),t=Ll.identifierPrefix;if(G){var n=Si,r=xi;n=(r&~(1<<32-We(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=fo++,0<n&&(t+=`H`+n.toString(32)),t+=`_`}else n=ho++,t=`_`+t+`r_`+n.toString(32)+`_`;return e.memoizedState=t},useHostTransitionStatus:Cs,useFormState:Xo,useActionState:Xo,useOptimistic:function(e){var t=To();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=As.bind(null,q,!0,n),n.dispatch=t,[e,t]},useMemoCache:Ao,useCacheRefresh:function(){return To().memoizedState=Es.bind(null,q)},useEffectEvent:function(e){var t=To(),n={impl:e};return t.memoizedState=n,function(){if(J&2)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},Is={readContext:Ji,use:ko,useCallback:ms,useContext:Ji,useEffect:os,useImperativeHandle:fs,useInsertionEffect:ls,useLayoutEffect:us,useMemo:hs,useReducer:Mo,useRef:ns,useState:function(){return Mo(jo)},useDebugValue:ps,useDeferredValue:function(e,t){return _s(Eo(),oo.memoizedState,e,t)},useTransition:function(){var e=Mo(jo)[0],t=Eo().memoizedState;return[typeof e==`boolean`?e:Oo(e),t]},useSyncExternalStore:Fo,useId:ws,useHostTransitionStatus:Cs,useFormState:Zo,useActionState:Zo,useOptimistic:function(e,t){return Ho(Eo(),oo,e,t)},useMemoCache:Ao,useCacheRefresh:Ts};Is.useEffectEvent=cs;var Ls={readContext:Ji,use:ko,useCallback:ms,useContext:Ji,useEffect:os,useImperativeHandle:fs,useInsertionEffect:ls,useLayoutEffect:us,useMemo:hs,useReducer:Po,useRef:ns,useState:function(){return Po(jo)},useDebugValue:ps,useDeferredValue:function(e,t){var n=Eo();return oo===null?gs(n,e,t):_s(n,oo.memoizedState,e,t)},useTransition:function(){var e=Po(jo)[0],t=Eo().memoizedState;return[typeof e==`boolean`?e:Oo(e),t]},useSyncExternalStore:Fo,useId:ws,useHostTransitionStatus:Cs,useFormState:es,useActionState:es,useOptimistic:function(e,t){var n=Eo();return oo===null?(n.baseState=e,[e,n.queue.dispatch]):Ho(n,oo,e,t)},useMemoCache:Ao,useCacheRefresh:Ts};Ls.useEffectEvent=cs;function Rs(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:h({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var zs={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fu(),i=Ia(r);i.payload=t,n!=null&&(i.callback=n),t=La(e,i,r),t!==null&&(mu(t,e,r),Ra(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fu(),i=Ia(r);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=La(e,i,r),t!==null&&(mu(t,e,r),Ra(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fu(),r=Ia(n);r.tag=2,t!=null&&(r.callback=t),t=La(e,r,n),t!==null&&(mu(t,e,n),Ra(t,e,n))}};function Bs(e,t,n,r,i,a,o){return e=e.stateNode,typeof e.shouldComponentUpdate==`function`?e.shouldComponentUpdate(r,a,o):t.prototype&&t.prototype.isPureReactComponent?!Cr(n,r)||!Cr(i,a):!0}function Vs(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps==`function`&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps==`function`&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&zs.enqueueReplaceState(t,t.state,null)}function Hs(e,t){var n=t;if(`ref`in t)for(var r in n={},t)r!==`ref`&&(n[r]=t[r]);if(e=e.defaultProps)for(var i in n===t&&(n=h({},n)),e)n[i]===void 0&&(n[i]=e[i]);return n}function Us(e){Yr(e)}function Ws(e){console.error(e)}function Gs(e){Yr(e)}function Ks(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function qs(e,t,n){try{var r=e.onCaughtError;r(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Js(e,t,n){return n=Ia(n),n.tag=3,n.payload={element:null},n.callback=function(){Ks(e,t)},n}function Ys(e){return e=Ia(e),e.tag=3,e}function Xs(e,t,n,r){var i=n.type.getDerivedStateFromError;if(typeof i==`function`){var a=r.value;e.payload=function(){return i(a)},e.callback=function(){qs(t,n,r)}}var o=n.stateNode;o!==null&&typeof o.componentDidCatch==`function`&&(e.callback=function(){qs(t,n,r),typeof i!=`function`&&(nu===null?nu=new Set([this]):nu.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:e===null?``:e})})}function Zs(e,t,n,r,a){if(n.flags|=32768,typeof r==`object`&&r&&typeof r.then==`function`){if(t=n.alternate,t!==null&&Gi(t,n,a,!0),n=Xa.current,n!==null){switch(n.tag){case 31:case 13:return Za===null?Eu():n.alternate===null&&Ul===0&&(Ul=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===va?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([r]):t.add(r),Wu(e,r,a)),!1;case 22:return n.flags|=65536,r===va?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([r]):n.add(r)),Wu(e,r,a)),!1}throw Error(i(435,n.tag))}return Wu(e,r,a),Eu(),!1}if(G)return t=Xa.current,t===null?(r!==ji&&(t=Error(i(423),{cause:r}),Li(H(t,n))),e=e.current.alternate,e.flags|=65536,a&=-a,e.lanes|=a,r=H(r,n),a=Js(e.stateNode,r,a),za(e,a),Ul!==4&&(Ul=2)):(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==ji&&(e=Error(i(422),{cause:r}),Li(H(e,n)))),!1;var o=Error(i(520),{cause:r});if(o=H(o,n),Yl===null?Yl=[o]:Yl.push(o),Ul!==4&&(Ul=2),t===null)return!0;r=H(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,e=Js(n.stateNode,r,e),za(n,e),!1;case 1:if(t=n.type,o=n.stateNode,!(n.flags&128)&&(typeof t.getDerivedStateFromError==`function`||o!==null&&typeof o.componentDidCatch==`function`&&(nu===null||!nu.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,a=Ys(a),Xs(a,e,n,r),za(n,a),!1}n=n.return}while(n!==null);return!1}var Qs=Error(i(461)),$s=!1;function ec(e,t,n,r){t.child=e===null?Ma(t,null,n,r):ja(t,e.child,n,r)}function tc(e,t,n,r,i){n=n.render;var a=t.ref;if(`ref`in r){var o={};for(var s in r)s!==`ref`&&(o[s]=r[s])}else o=r;return qi(t),r=vo(e,t,n,o,a,i),s=So(),e!==null&&!$s?(Co(e,t,i),Tc(e,t,i)):(G&&s&&Ti(t),t.flags|=1,ec(e,t,r,i),t.child)}function nc(e,t,n,r,i){if(e===null){var a=n.type;return typeof a==`function`&&!si(a)&&a.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=a,rc(e,t,a,r,i)):(e=ui(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!Ec(e,i)){var o=a.memoizedProps;if(n=n.compare,n=n===null?Cr:n,n(o,r)&&e.ref===t.ref)return Tc(e,t,i)}return t.flags|=1,e=ci(a,r),e.ref=t.ref,e.return=t,t.child=e}function rc(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(Cr(a,r)&&e.ref===t.ref)if($s=!1,t.pendingProps=r=a,Ec(e,i))e.flags&131072&&($s=!0);else return t.lanes=e.lanes,Tc(e,t,i)}return dc(e,t,n,r,i)}function ic(e,t,n,r){var i=r.children,a=e===null?null:e.memoizedState;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),r.mode===`hidden`){if(t.flags&128){if(a=a===null?n:a.baseLanes|n,e!==null){for(r=t.child=e.child,i=0;r!==null;)i=i|r.lanes|r.childLanes,r=r.sibling;r=i&~a}else r=0,t.child=null;return oc(e,t,a,n,r)}if(n&536870912)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&pa(t,a===null?null:a.cachePool),a===null?Ja():qa(t,a),eo(t);else return r=t.lanes=536870912,oc(e,t,a===null?n:a.baseLanes|n,n,r)}else a===null?(e!==null&&pa(t,null),Ja(),to(t)):(pa(t,a.cachePool),qa(t,a),to(t),t.memoizedState=null);return ec(e,t,i,n),t.child}function ac(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function oc(e,t,n,r,i){var a=fa();return a=a===null?null:{parent:ea._currentValue,pool:a},t.memoizedState={baseLanes:n,cachePool:a},e!==null&&pa(t,null),Ja(),eo(t),e!==null&&Gi(e,t,r,!0),t.childLanes=i,null}function sc(e,t){return t=bc({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function cc(e,t,n){return ja(t,e.child,null,n),e=sc(t,t.pendingProps),e.flags|=2,no(t),t.memoizedState=null,e}function lc(e,t,n){var r=t.pendingProps,a=(t.flags&128)!=0;if(t.flags&=-129,e===null){if(G){if(r.mode===`hidden`)return e=sc(t,r),t.lanes=536870912,ac(null,e);if($a(t),(e=W)?(e=rf(e,Ai),e=e!==null&&e.data===`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:bi===null?null:{id:xi,overflow:Si},retryLane:536870912,hydrationErrors:null},n=fi(e),n.return=t,t.child=n,Oi=t,W=null)):e=null,e===null)throw K(t);return t.lanes=536870912,null}return sc(t,r)}var o=e.memoizedState;if(o!==null){var s=o.dehydrated;if($a(t),a)if(t.flags&256)t.flags&=-257,t=cc(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(i(558));else if($s||Gi(e,t,n,!1),a=(n&e.childLanes)!==0,$s||a){if(r=Ll,r!==null&&(s=ot(r,n),s!==0&&s!==o.retryLane))throw o.retryLane=s,B(e,s),mu(r,e,s),Qs;Eu(),t=cc(e,t,n)}else e=o.treeContext,W=cf(s.nextSibling),Oi=t,G=!0,ki=null,Ai=!1,e!==null&&Di(t,e),t=sc(t,r),t.flags|=4096;return t}return e=ci(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function uc(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!=`function`&&typeof n!=`object`)throw Error(i(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function dc(e,t,n,r,i){return qi(t),n=vo(e,t,n,r,void 0,i),r=So(),e!==null&&!$s?(Co(e,t,i),Tc(e,t,i)):(G&&r&&Ti(t),t.flags|=1,ec(e,t,n,i),t.child)}function fc(e,t,n,r,i,a){return qi(t),t.updateQueue=null,n=bo(t,r,n,i),yo(e),r=So(),e!==null&&!$s?(Co(e,t,a),Tc(e,t,a)):(G&&r&&Ti(t),t.flags|=1,ec(e,t,n,a),t.child)}function pc(e,t,n,r,i){if(qi(t),t.stateNode===null){var a=ii,o=n.contextType;typeof o==`object`&&o&&(a=Ji(o)),a=new n(r,a),t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=zs,t.stateNode=a,a._reactInternals=t,a=t.stateNode,a.props=r,a.state=t.memoizedState,a.refs={},Pa(t),o=n.contextType,a.context=typeof o==`object`&&o?Ji(o):ii,a.state=t.memoizedState,o=n.getDerivedStateFromProps,typeof o==`function`&&(Rs(t,n,o,r),a.state=t.memoizedState),typeof n.getDerivedStateFromProps==`function`||typeof a.getSnapshotBeforeUpdate==`function`||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(o=a.state,typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount(),o!==a.state&&zs.enqueueReplaceState(a,a.state,null),Ha(t,r,a,i),Va(),a.state=t.memoizedState),typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!0}else if(e===null){a=t.stateNode;var s=t.memoizedProps,c=Hs(n,s);a.props=c;var l=a.context,u=n.contextType;o=ii,typeof u==`object`&&u&&(o=Ji(u));var d=n.getDerivedStateFromProps;u=typeof d==`function`||typeof a.getSnapshotBeforeUpdate==`function`,s=t.pendingProps!==s,u||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(s||l!==o)&&Vs(t,a,r,o),Na=!1;var f=t.memoizedState;a.state=f,Ha(t,r,a,i),Va(),l=t.memoizedState,s||f!==l||Na?(typeof d==`function`&&(Rs(t,n,d,r),l=t.memoizedState),(c=Na||Bs(t,n,c,r,f,l,o))?(u||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount==`function`&&(t.flags|=4194308)):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=o,r=c):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,Fa(e,t),o=t.memoizedProps,u=Hs(n,o),a.props=u,d=t.pendingProps,f=a.context,l=n.contextType,c=ii,typeof l==`object`&&l&&(c=Ji(l)),s=n.getDerivedStateFromProps,(l=typeof s==`function`||typeof a.getSnapshotBeforeUpdate==`function`)||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(o!==d||f!==c)&&Vs(t,a,r,c),Na=!1,f=t.memoizedState,a.state=f,Ha(t,r,a,i),Va();var p=t.memoizedState;o!==d||f!==p||Na||e!==null&&e.dependencies!==null&&Ki(e.dependencies)?(typeof s==`function`&&(Rs(t,n,s,r),p=t.memoizedState),(u=Na||Bs(t,n,u,r,f,p,c)||e!==null&&e.dependencies!==null&&Ki(e.dependencies))?(l||typeof a.UNSAFE_componentWillUpdate!=`function`&&typeof a.componentWillUpdate!=`function`||(typeof a.componentWillUpdate==`function`&&a.componentWillUpdate(r,p,c),typeof a.UNSAFE_componentWillUpdate==`function`&&a.UNSAFE_componentWillUpdate(r,p,c)),typeof a.componentDidUpdate==`function`&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate==`function`&&(t.flags|=1024)):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=c,r=u):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,uc(e,t),r=(t.flags&128)!=0,a||r?(a=t.stateNode,n=r&&typeof n.getDerivedStateFromError!=`function`?null:a.render(),t.flags|=1,e!==null&&r?(t.child=ja(t,e.child,null,i),t.child=ja(t,null,n,i)):ec(e,t,n,i),t.memoizedState=a.state,e=t.child):e=Tc(e,t,i),e}function mc(e,t,n,r){return Fi(),t.flags|=256,ec(e,t,n,r),t.child}var hc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function gc(e){return{baseLanes:e,cachePool:ma()}}function _c(e,t,n){return e=e===null?0:e.childLanes&~n,t&&(e|=ql),e}function vc(e,t,n){var r=t.pendingProps,a=!1,o=(t.flags&128)!=0,s;if((s=o)||(s=e!==null&&e.memoizedState===null?!1:(ro.current&2)!=0),s&&(a=!0,t.flags&=-129),s=(t.flags&32)!=0,t.flags&=-33,e===null){if(G){if(a?Qa(t):to(t),(e=W)?(e=rf(e,Ai),e=e!==null&&e.data!==`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:bi===null?null:{id:xi,overflow:Si},retryLane:536870912,hydrationErrors:null},n=fi(e),n.return=t,t.child=n,Oi=t,W=null)):e=null,e===null)throw K(t);return of(e)?t.lanes=32:t.lanes=536870912,null}var c=r.children;return r=r.fallback,a?(to(t),a=t.mode,c=bc({mode:`hidden`,children:c},a),r=di(r,a,n,null),c.return=t,r.return=t,c.sibling=r,t.child=c,r=t.child,r.memoizedState=gc(n),r.childLanes=_c(e,s,n),t.memoizedState=hc,ac(null,r)):(Qa(t),yc(t,c))}var l=e.memoizedState;if(l!==null&&(c=l.dehydrated,c!==null)){if(o)t.flags&256?(Qa(t),t.flags&=-257,t=xc(e,t,n)):t.memoizedState===null?(to(t),c=r.fallback,a=t.mode,r=bc({mode:`visible`,children:r.children},a),c=di(c,a,n,null),c.flags|=2,r.return=t,c.return=t,r.sibling=c,t.child=r,ja(t,e.child,null,n),r=t.child,r.memoizedState=gc(n),r.childLanes=_c(e,s,n),t.memoizedState=hc,t=ac(null,r)):(to(t),t.child=e.child,t.flags|=128,t=null);else if(Qa(t),of(c)){if(s=c.nextSibling&&c.nextSibling.dataset,s)var u=s.dgst;s=u,r=Error(i(419)),r.stack=``,r.digest=s,Li({value:r,source:null,stack:null}),t=xc(e,t,n)}else if($s||Gi(e,t,n,!1),s=(n&e.childLanes)!==0,$s||s){if(s=Ll,s!==null&&(r=ot(s,n),r!==0&&r!==l.retryLane))throw l.retryLane=r,B(e,r),mu(s,e,r),Qs;af(c)||Eu(),t=xc(e,t,n)}else af(c)?(t.flags|=192,t.child=e.child,t=null):(e=l.treeContext,W=cf(c.nextSibling),Oi=t,G=!0,ki=null,Ai=!1,e!==null&&Di(t,e),t=yc(t,r.children),t.flags|=4096);return t}return a?(to(t),c=r.fallback,a=t.mode,l=e.child,u=l.sibling,r=ci(l,{mode:`hidden`,children:r.children}),r.subtreeFlags=l.subtreeFlags&65011712,u===null?(c=di(c,a,n,null),c.flags|=2):c=ci(u,c),c.return=t,r.return=t,r.sibling=c,t.child=r,ac(null,r),r=t.child,c=e.child.memoizedState,c===null?c=gc(n):(a=c.cachePool,a===null?a=ma():(l=ea._currentValue,a=a.parent===l?a:{parent:l,pool:l}),c={baseLanes:c.baseLanes|n,cachePool:a}),r.memoizedState=c,r.childLanes=_c(e,s,n),t.memoizedState=hc,ac(e.child,r)):(Qa(t),n=e.child,e=n.sibling,n=ci(n,{mode:`visible`,children:r.children}),n.return=t,n.sibling=null,e!==null&&(s=t.deletions,s===null?(t.deletions=[e],t.flags|=16):s.push(e)),t.child=n,t.memoizedState=null,n)}function yc(e,t){return t=bc({mode:`visible`,children:t},e.mode),t.return=e,e.child=t}function bc(e,t){return e=oi(22,e,null,t),e.lanes=0,e}function xc(e,t,n){return ja(t,e.child,null,n),e=yc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Sc(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Ui(e.return,t,n)}function Cc(e,t,n,r,i,a){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i,treeForkCount:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i,o.treeForkCount=a)}function wc(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;r=r.children;var o=ro.current,s=(o&2)!=0;if(s?(o=o&1|2,t.flags|=128):o&=1,A(ro,o),ec(e,t,r,n),r=G?_i:0,!s&&e!==null&&e.flags&128)a:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Sc(e,n,t);else if(e.tag===19)Sc(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break a;for(;e.sibling===null;){if(e.return===null||e.return===t)break a;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(i){case`forwards`:for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&io(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),Cc(t,!1,i,n,a,r);break;case`backwards`:case`unstable_legacy-backwards`:for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&io(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}Cc(t,!0,n,null,a,r);break;case`together`:Cc(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function Tc(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Wl|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(Gi(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(i(153));if(t.child!==null){for(e=t.child,n=ci(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=ci(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Ec(e,t){return(e.lanes&t)===0?(e=e.dependencies,!!(e!==null&&Ki(e))):!0}function Dc(e,t,n){switch(t.tag){case 3:_e(t,t.stateNode.containerInfo),Vi(t,ea,e.memoizedState.cache),Fi();break;case 27:case 5:ye(t);break;case 4:_e(t,t.stateNode.containerInfo);break;case 10:Vi(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,$a(t),null;break;case 13:var r=t.memoizedState;if(r!==null)return r.dehydrated===null?(n&t.child.childLanes)===0?(Qa(t),e=Tc(e,t,n),e===null?null:e.sibling):vc(e,t,n):(Qa(t),t.flags|=128,null);Qa(t);break;case 19:var i=(e.flags&128)!=0;if(r=(n&t.childLanes)!==0,r||=(Gi(e,t,n,!1),(n&t.childLanes)!==0),i){if(r)return wc(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),A(ro,ro.current),r)break;return null;case 22:return t.lanes=0,ic(e,t,n,t.pendingProps);case 24:Vi(t,ea,e.memoizedState.cache)}return Tc(e,t,n)}function Oc(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)$s=!0;else{if(!Ec(e,n)&&!(t.flags&128))return $s=!1,Dc(e,t,n);$s=!!(e.flags&131072)}else $s=!1,G&&t.flags&1048576&&wi(t,_i,t.index);switch(t.lanes=0,t.tag){case 16:a:{var r=t.pendingProps;if(e=xa(t.elementType),t.type=e,typeof e==`function`)si(e)?(r=Hs(e,r),t.tag=1,t=pc(null,t,e,r,n)):(t.tag=0,t=dc(null,t,e,r,n));else{if(e!=null){var a=e.$$typeof;if(a===w){t.tag=11,t=tc(null,t,e,r,n);break a}else if(a===ne){t.tag=14,t=nc(null,t,e,r,n);break a}}throw t=se(e)||e,Error(i(306,t,``))}}return t;case 0:return dc(e,t,t.type,t.pendingProps,n);case 1:return r=t.type,a=Hs(r,t.pendingProps),pc(e,t,r,a,n);case 3:a:{if(_e(t,t.stateNode.containerInfo),e===null)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,Fa(e,t),Ha(t,r,null,n);var s=t.memoizedState;if(r=s.cache,Vi(t,ea,r),r!==o.cache&&Wi(t,[ea],n,!0),Va(),r=s.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:s.cache},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){t=mc(e,t,r,n);break a}else if(r!==a){a=H(Error(i(424)),t),Li(a),t=mc(e,t,r,n);break a}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName===`HTML`?e.ownerDocument.body:e}for(W=cf(e.firstChild),Oi=t,G=!0,ki=null,Ai=!0,n=Ma(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(Fi(),r===a){t=Tc(e,t,n);break a}ec(e,t,r,n)}t=t.child}return t;case 26:return uc(e,t),e===null?(n=kf(t.type,null,t.pendingProps,null))?t.memoizedState=n:G||(n=t.type,e=t.pendingProps,r=Bd(he.current).createElement(n),r[ft]=t,r[pt]=e,Pd(r,n,e),Tt(r),t.stateNode=r):t.memoizedState=kf(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return ye(t),e===null&&G&&(r=t.stateNode=ff(t.type,t.pendingProps,he.current),Oi=t,Ai=!0,a=W,Zd(t.type)?(lf=a,W=cf(r.firstChild)):W=a),ec(e,t,t.pendingProps.children,n),uc(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&G&&((a=r=W)&&(r=tf(r,t.type,t.pendingProps,Ai),r===null?a=!1:(t.stateNode=r,Oi=t,W=cf(r.firstChild),Ai=!1,a=!0)),a||K(t)),ye(t),a=t.type,o=t.pendingProps,s=e===null?null:e.memoizedProps,r=o.children,Ud(a,o)?r=null:s!==null&&Ud(a,s)&&(t.flags|=32),t.memoizedState!==null&&(a=vo(e,t,xo,null,null,n),Qf._currentValue=a),uc(e,t),ec(e,t,r,n),t.child;case 6:return e===null&&G&&((e=n=W)&&(n=nf(n,t.pendingProps,Ai),n===null?e=!1:(t.stateNode=n,Oi=t,W=null,e=!0)),e||K(t)),null;case 13:return vc(e,t,n);case 4:return _e(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=ja(t,null,r,n):ec(e,t,r,n),t.child;case 11:return tc(e,t,t.type,t.pendingProps,n);case 7:return ec(e,t,t.pendingProps,n),t.child;case 8:return ec(e,t,t.pendingProps.children,n),t.child;case 12:return ec(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,Vi(t,t.type,r.value),ec(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,qi(t),a=Ji(a),r=r(a),t.flags|=1,ec(e,t,r,n),t.child;case 14:return nc(e,t,t.type,t.pendingProps,n);case 15:return rc(e,t,t.type,t.pendingProps,n);case 19:return wc(e,t,n);case 31:return lc(e,t,n);case 22:return ic(e,t,n,t.pendingProps);case 24:return qi(t),r=Ji(ea),e===null?(a=fa(),a===null&&(a=Ll,o=ta(),a.pooledCache=o,o.refCount++,o!==null&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},Pa(t),Vi(t,ea,a)):((e.lanes&n)!==0&&(Fa(e,t),Ha(t,null,null,n),Va()),a=e.memoizedState,o=t.memoizedState,a.parent===r?(r=o.cache,Vi(t,ea,r),r!==a.cache&&Wi(t,[ea],n,!0)):(a={parent:r,cache:r},t.memoizedState=a,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=a),Vi(t,ea,r))),ec(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function kc(e){e.flags|=4}function Ac(e,t,n,r,i){if((t=(e.mode&32)!=0)&&(t=!1),t){if(e.flags|=16777216,(i&335544128)===i)if(e.stateNode.complete)e.flags|=8192;else if(Cu())e.flags|=8192;else throw Sa=va,ga}else e.flags&=-16777217}function jc(e,t){if(t.type!==`stylesheet`||t.state.loading&4)e.flags&=-16777217;else if(e.flags|=16777216,!Wf(t))if(Cu())e.flags|=8192;else throw Sa=va,ga}function Mc(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag===22?536870912:tt(),e.lanes|=t,Jl|=t)}function Nc(e,t){if(!G)switch(e.tailMode){case`hidden`:t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case`collapsed`:n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Pc(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags&65011712,r|=i.flags&65011712,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Fc(e,t,n){var r=t.pendingProps;switch(Ei(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Pc(t),null;case 1:return Pc(t),null;case 3:return n=t.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Hi(ea),ve(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(Pi(t)?kc(t):e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Ii())),Pc(t),null;case 26:var a=t.type,o=t.memoizedState;return e===null?(kc(t),o===null?(Pc(t),Ac(t,a,null,r,n)):(Pc(t),jc(t,o))):o?o===e.memoizedState?(Pc(t),t.flags&=-16777217):(kc(t),Pc(t),jc(t,o)):(e=e.memoizedProps,e!==r&&kc(t),Pc(t),Ac(t,a,e,r,n)),null;case 27:if(be(t),n=he.current,a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&kc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return Pc(t),null}e=pe.current,Pi(t)?Mi(t,e):(e=ff(a,r,n),t.stateNode=e,kc(t))}return Pc(t),null;case 5:if(be(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&kc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return Pc(t),null}if(o=pe.current,Pi(t))Mi(t,o);else{var s=Bd(he.current);switch(o){case 1:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case 2:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;default:switch(a){case`svg`:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case`math`:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;case`script`:o=s.createElement(`div`),o.innerHTML=`<script><\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[ft]=t,o[pt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&kc(t)}}return Pc(t),Ac(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&kc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=he.current,Pi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Oi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[ft]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||jd(e.nodeValue,n)),e||K(t,!0)}else e=Bd(e).createTextNode(r),e[ft]=t,t.stateNode=e}return Pc(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Pi(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[ft]=t}else Fi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Pc(t),e=!1}else n=Ii(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(no(t),t):(no(t),null);if(t.flags&128)throw Error(i(558))}return Pc(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Pi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[ft]=t}else Fi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Pc(t),a=!1}else a=Ii(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(no(t),t):(no(t),null)}return no(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Mc(t,t.updateQueue),Pc(t),null);case 4:return ve(),e===null&&xd(t.stateNode.containerInfo),Pc(t),null;case 10:return Hi(t.type),Pc(t),null;case 19:if(fe(ro),r=t.memoizedState,r===null)return Pc(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Nc(r,!1);else{if(Ul!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=io(e),o!==null){for(t.flags|=128,Nc(r,!1),e=o.updateQueue,t.updateQueue=e,Mc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)li(n,e),n=n.sibling;return A(ro,ro.current&1|2),G&&Ci(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Me()>eu&&(t.flags|=128,a=!0,Nc(r,!1),t.lanes=4194304)}else{if(!a)if(e=io(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Mc(t,e),Nc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!G)return Pc(t),null}else 2*Me()-r.renderingStartTime>eu&&n!==536870912&&(t.flags|=128,a=!0,Nc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Pc(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Me(),e.sibling=null,n=ro.current,A(ro,a?n&1|2:n&1),G&&Ci(t,r.treeForkCount),e);case 22:case 23:return no(t),Ya(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Pc(t),t.subtreeFlags&6&&(t.flags|=8192)):Pc(t),n=t.updateQueue,n!==null&&Mc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&fe(da),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Hi(ea),Pc(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Ic(e,t){switch(Ei(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Hi(ea),ve(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return be(t),null;case 31:if(t.memoizedState!==null){if(no(t),t.alternate===null)throw Error(i(340));Fi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(no(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Fi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return fe(ro),null;case 4:return ve(),null;case 10:return Hi(t.type),null;case 22:case 23:return no(t),Ya(),e!==null&&fe(da),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Hi(ea),null;case 25:return null;default:return null}}function Lc(e,t){switch(Ei(t),t.tag){case 3:Hi(ea),ve();break;case 26:case 27:case 5:be(t);break;case 4:ve();break;case 31:t.memoizedState!==null&&no(t);break;case 13:no(t);break;case 19:fe(ro);break;case 10:Hi(t.type);break;case 22:case 23:no(t),Ya(),e!==null&&fe(da);break;case 24:Hi(ea)}}function Rc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Q(t,t.return,e)}}function zc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Q(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Q(t,t.return,e)}}function Bc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Wa(t,n)}catch(t){Q(e,e.return,t)}}}function Vc(e,t,n){n.props=Hs(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Q(e,t,n)}}function Hc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Q(e,t,n)}}function Uc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Q(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Q(e,t,n)}else n.current=null}function Wc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Q(e,e.return,t)}}function Gc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[pt]=t}catch(t){Q(e,e.return,t)}}function Kc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function qc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Kc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Jc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=an));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Jc(e,t,n),e=e.sibling;e!==null;)Jc(e,t,n),e=e.sibling}function Yc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Yc(e,t,n),e=e.sibling;e!==null;)Yc(e,t,n),e=e.sibling}function Xc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[ft]=e,t[pt]=n}catch(t){Q(e,e.return,t)}}var Zc=!1,Qc=!1,$c=!1,el=typeof WeakSet==`function`?WeakSet:Set,tl=null;function nl(e,t){if(e=e.containerInfo,Rd=sp,e=Dr(e),Or(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,tl=t;tl!==null;)if(t=tl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,tl=e;else for(;tl!==null;){switch(t=tl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n<e.length;n++)a=e[n],a.ref.impl=a.nextImpl;break;case 11:case 15:break;case 1:if(e&1024&&o!==null){e=void 0,n=t,a=o.memoizedProps,o=o.memoizedState,r=n.stateNode;try{var h=Hs(n.type,a);e=r.getSnapshotBeforeUpdate(h,o),r.__reactInternalSnapshotBeforeUpdate=e}catch(e){Q(n,n.return,e)}}break;case 3:if(e&1024){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)ef(e);else if(n===1)switch(e.nodeName){case`HEAD`:case`HTML`:case`BODY`:ef(e);break;default:e.textContent=``}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if(e&1024)throw Error(i(163))}if(e=t.sibling,e!==null){e.return=t.return,tl=e;break}tl=t.return}}function rl(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:vl(e,n),r&4&&Rc(5,n);break;case 1:if(vl(e,n),r&4)if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(e){Q(n,n.return,e)}else{var i=Hs(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){Q(n,n.return,e)}}r&64&&Bc(n),r&512&&Hc(n,n.return);break;case 3:if(vl(e,n),r&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{Wa(e,t)}catch(e){Q(n,n.return,e)}}break;case 27:t===null&&r&4&&Xc(n);case 26:case 5:vl(e,n),t===null&&r&4&&Wc(n),r&512&&Hc(n,n.return);break;case 12:vl(e,n);break;case 31:vl(e,n),r&4&&ll(e,n);break;case 13:vl(e,n),r&4&&ul(e,n),r&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=qu.bind(null,n),sf(e,n))));break;case 22:if(r=n.memoizedState!==null||Zc,!r){t=t!==null&&t.memoizedState!==null||Qc,i=Zc;var a=Qc;Zc=r,(Qc=t)&&!a?bl(e,n,(n.subtreeFlags&8772)!=0):vl(e,n),Zc=i,Qc=a}break;case 30:break;default:vl(e,n)}}function il(e){var t=e.alternate;t!==null&&(e.alternate=null,il(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&bt(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var al=null,ol=!1;function sl(e,t,n){for(n=n.child;n!==null;)cl(e,t,n),n=n.sibling}function cl(e,t,n){if(He&&typeof He.onCommitFiberUnmount==`function`)try{He.onCommitFiberUnmount(Ve,n)}catch{}switch(n.tag){case 26:Qc||Uc(n,t),sl(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:Qc||Uc(n,t);var r=al,i=ol;Zd(n.type)&&(al=n.stateNode,ol=!1),sl(e,t,n),pf(n.stateNode),al=r,ol=i;break;case 5:Qc||Uc(n,t);case 6:if(r=al,i=ol,al=null,sl(e,t,n),al=r,ol=i,al!==null)if(ol)try{(al.nodeType===9?al.body:al.nodeName===`HTML`?al.ownerDocument.body:al).removeChild(n.stateNode)}catch(e){Q(n,t,e)}else try{al.removeChild(n.stateNode)}catch(e){Q(n,t,e)}break;case 18:al!==null&&(ol?(e=al,Qd(e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,n.stateNode),Np(e)):Qd(al,n.stateNode));break;case 4:r=al,i=ol,al=n.stateNode.containerInfo,ol=!0,sl(e,t,n),al=r,ol=i;break;case 0:case 11:case 14:case 15:zc(2,n,t),Qc||zc(4,n,t),sl(e,t,n);break;case 1:Qc||(Uc(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`&&Vc(n,t,r)),sl(e,t,n);break;case 21:sl(e,t,n);break;case 22:Qc=(r=Qc)||n.memoizedState!==null,sl(e,t,n),Qc=r;break;default:sl(e,t,n)}}function ll(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Np(e)}catch(e){Q(t,t.return,e)}}}function ul(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Np(e)}catch(e){Q(t,t.return,e)}}function dl(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new el),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new el),t;default:throw Error(i(435,e.tag))}}function fl(e,t){var n=dl(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Ju.bind(null,e,t);t.then(r,r)}})}function pl(e,t){var n=t.deletions;if(n!==null)for(var r=0;r<n.length;r++){var a=n[r],o=e,s=t,c=s;a:for(;c!==null;){switch(c.tag){case 27:if(Zd(c.type)){al=c.stateNode,ol=!1;break a}break;case 5:al=c.stateNode,ol=!1;break a;case 3:case 4:al=c.stateNode.containerInfo,ol=!0;break a}c=c.return}if(al===null)throw Error(i(160));cl(o,s,a),al=null,ol=!1,o=a.alternate,o!==null&&(o.return=null),a.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)hl(t,e),t=t.sibling}var ml=null;function hl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:pl(t,e),gl(e),r&4&&(zc(3,e,e.return),Rc(3,e),zc(5,e,e.return));break;case 1:pl(t,e),gl(e),r&512&&(Qc||n===null||Uc(n,n.return)),r&64&&Zc&&(e=e.updateQueue,e!==null&&(r=e.callbacks,r!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?r:n.concat(r))));break;case 26:var a=ml;if(pl(t,e),gl(e),r&512&&(Qc||n===null||Uc(n,n.return)),r&4){var o=n===null?null:n.memoizedState;if(r=e.memoizedState,n===null)if(r===null)if(e.stateNode===null){a:{r=e.type,n=e.memoizedProps,a=a.ownerDocument||a;b:switch(r){case`title`:o=a.getElementsByTagName(`title`)[0],(!o||o[yt]||o[ft]||o.namespaceURI===`http://www.w3.org/2000/svg`||o.hasAttribute(`itemprop`))&&(o=a.createElement(r),a.head.insertBefore(o,a.querySelector(`head > title`))),Pd(o,r,n),o[ft]=e,Tt(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`href`)===(n.href==null||n.href===``?null:n.href)&&o.getAttribute(`rel`)===(n.rel==null?null:n.rel)&&o.getAttribute(`title`)===(n.title==null?null:n.title)&&o.getAttribute(`crossorigin`)===(n.crossOrigin==null?null:n.crossOrigin)){s.splice(c,1);break b}}o=a.createElement(r),Pd(o,r,n),a.head.appendChild(o);break;case`meta`:if(s=Vf(`meta`,`content`,a).get(r+(n.content||``))){for(c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`content`)===(n.content==null?null:``+n.content)&&o.getAttribute(`name`)===(n.name==null?null:n.name)&&o.getAttribute(`property`)===(n.property==null?null:n.property)&&o.getAttribute(`http-equiv`)===(n.httpEquiv==null?null:n.httpEquiv)&&o.getAttribute(`charset`)===(n.charSet==null?null:n.charSet)){s.splice(c,1);break b}}o=a.createElement(r),Pd(o,r,n),a.head.appendChild(o);break;default:throw Error(i(468,r))}o[ft]=e,Tt(o),r=o}e.stateNode=r}else Hf(a,e.type,e.stateNode);else e.stateNode=If(a,r,e.memoizedProps);else o===r?r===null&&e.stateNode!==null&&Gc(e,e.memoizedProps,n.memoizedProps):(o===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):o.count--,r===null?Hf(a,e.type,e.stateNode):If(a,r,e.memoizedProps))}break;case 27:pl(t,e),gl(e),r&512&&(Qc||n===null||Uc(n,n.return)),n!==null&&r&4&&Gc(e,e.memoizedProps,n.memoizedProps);break;case 5:if(pl(t,e),gl(e),r&512&&(Qc||n===null||Uc(n,n.return)),e.flags&32){a=e.stateNode;try{Xt(a,``)}catch(t){Q(e,e.return,t)}}r&4&&e.stateNode!=null&&(a=e.memoizedProps,Gc(e,a,n===null?a:n.memoizedProps)),r&1024&&($c=!0);break;case 6:if(pl(t,e),gl(e),r&4){if(e.stateNode===null)throw Error(i(162));r=e.memoizedProps,n=e.stateNode;try{n.nodeValue=r}catch(t){Q(e,e.return,t)}}break;case 3:if(Bf=null,a=ml,ml=gf(t.containerInfo),pl(t,e),ml=a,gl(e),r&4&&n!==null&&n.memoizedState.isDehydrated)try{Np(t.containerInfo)}catch(t){Q(e,e.return,t)}$c&&($c=!1,_l(e));break;case 4:r=ml,ml=gf(e.stateNode.containerInfo),pl(t,e),gl(e),ml=r;break;case 12:pl(t,e),gl(e);break;case 31:pl(t,e),gl(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,fl(e,r)));break;case 13:pl(t,e),gl(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(Ql=Me()),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,fl(e,r)));break;case 22:a=e.memoizedState!==null;var l=n!==null&&n.memoizedState!==null,u=Zc,d=Qc;if(Zc=u||a,Qc=d||l,pl(t,e),Qc=d,Zc=u,gl(e),r&8192)a:for(t=e.stateNode,t._visibility=a?t._visibility&-2:t._visibility|1,a&&(n===null||l||Zc||Qc||yl(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){l=n=t;try{if(o=l.stateNode,a)s=o.style,typeof s.setProperty==`function`?s.setProperty(`display`,`none`,`important`):s.display=`none`;else{c=l.stateNode;var f=l.memoizedProps.style,p=f!=null&&f.hasOwnProperty(`display`)?f.display:null;c.style.display=p==null||typeof p==`boolean`?``:(``+p).trim()}}catch(e){Q(l,l.return,e)}}}else if(t.tag===6){if(n===null){l=t;try{l.stateNode.nodeValue=a?``:l.memoizedProps}catch(e){Q(l,l.return,e)}}}else if(t.tag===18){if(n===null){l=t;try{var m=l.stateNode;a?$d(m,!0):$d(l.stateNode,!1)}catch(e){Q(l,l.return,e)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break a;for(;t.sibling===null;){if(t.return===null||t.return===e)break a;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}r&4&&(r=e.updateQueue,r!==null&&(n=r.retryQueue,n!==null&&(r.retryQueue=null,fl(e,n))));break;case 19:pl(t,e),gl(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,fl(e,r)));break;case 30:break;case 21:break;default:pl(t,e),gl(e)}}function gl(e){var t=e.flags;if(t&2){try{for(var n,r=e.return;r!==null;){if(Kc(r)){n=r;break}r=r.return}if(n==null)throw Error(i(160));switch(n.tag){case 27:var a=n.stateNode;Yc(e,qc(e),a);break;case 5:var o=n.stateNode;n.flags&32&&(Xt(o,``),n.flags&=-33),Yc(e,qc(e),o);break;case 3:case 4:var s=n.stateNode.containerInfo;Jc(e,qc(e),s);break;default:throw Error(i(161))}}catch(t){Q(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function _l(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;_l(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function vl(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)rl(e,t.alternate,t),t=t.sibling}function yl(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:zc(4,t,t.return),yl(t);break;case 1:Uc(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount==`function`&&Vc(t,t.return,n),yl(t);break;case 27:pf(t.stateNode);case 26:case 5:Uc(t,t.return),yl(t);break;case 22:t.memoizedState===null&&yl(t);break;case 30:yl(t);break;default:yl(t)}e=e.sibling}}function bl(e,t,n){for(n&&=(t.subtreeFlags&8772)!=0,t=t.child;t!==null;){var r=t.alternate,i=e,a=t,o=a.flags;switch(a.tag){case 0:case 11:case 15:bl(i,a,n),Rc(4,a);break;case 1:if(bl(i,a,n),r=a,i=r.stateNode,typeof i.componentDidMount==`function`)try{i.componentDidMount()}catch(e){Q(r,r.return,e)}if(r=a,i=r.updateQueue,i!==null){var s=r.stateNode;try{var c=i.shared.hiddenCallbacks;if(c!==null)for(i.shared.hiddenCallbacks=null,i=0;i<c.length;i++)Ua(c[i],s)}catch(e){Q(r,r.return,e)}}n&&o&64&&Bc(a),Hc(a,a.return);break;case 27:Xc(a);case 26:case 5:bl(i,a,n),n&&r===null&&o&4&&Wc(a),Hc(a,a.return);break;case 12:bl(i,a,n);break;case 31:bl(i,a,n),n&&o&4&&ll(i,a);break;case 13:bl(i,a,n),n&&o&4&&ul(i,a);break;case 22:a.memoizedState===null&&bl(i,a,n),Hc(a,a.return);break;case 30:break;default:bl(i,a,n)}t=t.sibling}}function xl(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&na(n))}function Sl(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&na(e))}function Cl(e,t,n,r){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)wl(e,t,n,r),t=t.sibling}function wl(e,t,n,r){var i=t.flags;switch(t.tag){case 0:case 11:case 15:Cl(e,t,n,r),i&2048&&Rc(9,t);break;case 1:Cl(e,t,n,r);break;case 3:Cl(e,t,n,r),i&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&na(e)));break;case 12:if(i&2048){Cl(e,t,n,r),e=t.stateNode;try{var a=t.memoizedProps,o=a.id,s=a.onPostCommit;typeof s==`function`&&s(o,t.alternate===null?`mount`:`update`,e.passiveEffectDuration,-0)}catch(e){Q(t,t.return,e)}}else Cl(e,t,n,r);break;case 31:Cl(e,t,n,r);break;case 13:Cl(e,t,n,r);break;case 23:break;case 22:a=t.stateNode,o=t.alternate,t.memoizedState===null?a._visibility&2?Cl(e,t,n,r):(a._visibility|=2,Tl(e,t,n,r,(t.subtreeFlags&10256)!=0||!1)):a._visibility&2?Cl(e,t,n,r):El(e,t),i&2048&&xl(o,t);break;case 24:Cl(e,t,n,r),i&2048&&Sl(t.alternate,t);break;default:Cl(e,t,n,r)}}function Tl(e,t,n,r,i){for(i&&=(t.subtreeFlags&10256)!=0||!1,t=t.child;t!==null;){var a=e,o=t,s=n,c=r,l=o.flags;switch(o.tag){case 0:case 11:case 15:Tl(a,o,s,c,i),Rc(8,o);break;case 23:break;case 22:var u=o.stateNode;o.memoizedState===null?(u._visibility|=2,Tl(a,o,s,c,i)):u._visibility&2?Tl(a,o,s,c,i):El(a,o),i&&l&2048&&xl(o.alternate,o);break;case 24:Tl(a,o,s,c,i),i&&l&2048&&Sl(o.alternate,o);break;default:Tl(a,o,s,c,i)}t=t.sibling}}function El(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,r=t,i=r.flags;switch(r.tag){case 22:El(n,r),i&2048&&xl(r.alternate,r);break;case 24:El(n,r),i&2048&&Sl(r.alternate,r);break;default:El(n,r)}t=t.sibling}}var Dl=8192;function Ol(e,t,n){if(e.subtreeFlags&Dl)for(e=e.child;e!==null;)kl(e,t,n),e=e.sibling}function kl(e,t,n){switch(e.tag){case 26:Ol(e,t,n),e.flags&Dl&&e.memoizedState!==null&&Gf(n,ml,e.memoizedState,e.memoizedProps);break;case 5:Ol(e,t,n);break;case 3:case 4:var r=ml;ml=gf(e.stateNode.containerInfo),Ol(e,t,n),ml=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=Dl,Dl=16777216,Ol(e,t,n),Dl=r):Ol(e,t,n));break;default:Ol(e,t,n)}}function Al(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function jl(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];tl=r,Pl(r,e)}Al(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)Ml(e),e=e.sibling}function Ml(e){switch(e.tag){case 0:case 11:case 15:jl(e),e.flags&2048&&zc(9,e,e.return);break;case 3:jl(e);break;case 12:jl(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Nl(e)):jl(e);break;default:jl(e)}}function Nl(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];tl=r,Pl(r,e)}Al(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:zc(8,t,t.return),Nl(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Nl(t));break;default:Nl(t)}e=e.sibling}}function Pl(e,t){for(;tl!==null;){var n=tl;switch(n.tag){case 0:case 11:case 15:zc(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var r=n.memoizedState.cachePool.pool;r!=null&&r.refCount++}break;case 24:na(n.memoizedState.cache)}if(r=n.child,r!==null)r.return=n,tl=r;else a:for(n=e;tl!==null;){r=tl;var i=r.sibling,a=r.return;if(il(r),r===n){tl=null;break a}if(i!==null){i.return=a,tl=i;break a}tl=a}}}var Fl={getCacheForType:function(e){var t=Ji(ea),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Ji(ea).controller.signal}},Il=typeof WeakMap==`function`?WeakMap:Map,J=0,Ll=null,Y=null,X=0,Z=0,Rl=null,zl=!1,Bl=!1,Vl=!1,Hl=0,Ul=0,Wl=0,Gl=0,Kl=0,ql=0,Jl=0,Yl=null,Xl=null,Zl=!1,Ql=0,$l=0,eu=1/0,tu=null,nu=null,ru=0,iu=null,au=null,ou=0,su=0,cu=null,lu=null,uu=0,du=null;function fu(){return J&2&&X!==0?X&-X:D.T===null?lt():ud()}function pu(){if(ql===0)if(!(X&536870912)||G){var e=Ye;Ye<<=1,!(Ye&3932160)&&(Ye=262144),ql=e}else ql=536870912;return e=Xa.current,e!==null&&(e.flags|=32),ql}function mu(e,t,n){(e===Ll&&(Z===2||Z===9)||e.cancelPendingCommit!==null)&&(xu(e,0),vu(e,X,ql,!1)),nt(e,n),(!(J&2)||e!==Ll)&&(e===Ll&&(!(J&2)&&(Gl|=n),Ul===4&&vu(e,X,ql,!1)),nd(e))}function hu(e,t,n){if(J&6)throw Error(i(327));var r=!n&&(t&127)==0&&(t&e.expiredLanes)===0||$e(e,t),a=r?ku(e,t):Du(e,t,!0),o=r;do{if(a===0){Bl&&!r&&vu(e,t,0,!1);break}else{if(n=e.current.alternate,o&&!_u(n)){a=Du(e,t,!1),o=!1;continue}if(a===2){if(o=t,e.errorRecoveryDisabledLanes&o)var s=0;else s=e.pendingLanes&-536870913,s=s===0?s&536870912?536870912:0:s;if(s!==0){t=s;a:{var c=e;a=Yl;var l=c.current.memoizedState.isDehydrated;if(l&&(xu(c,s).flags|=256),s=Du(c,s,!1),s!==2){if(Vl&&!l){c.errorRecoveryDisabledLanes|=o,Gl|=o,a=4;break a}o=Xl,Xl=a,o!==null&&(Xl===null?Xl=o:Xl.push.apply(Xl,o))}a=s}if(o=!1,a!==2)continue}}if(a===1){xu(e,0),vu(e,t,0,!0);break}a:{switch(r=e,o=a,o){case 0:case 1:throw Error(i(345));case 4:if((t&4194048)!==t)break;case 6:vu(r,t,ql,!zl);break a;case 2:Xl=null;break;case 3:case 5:break;default:throw Error(i(329))}if((t&62914560)===t&&(a=Ql+300-Me(),10<a)){if(vu(r,t,ql,!zl),Qe(r,0,!0)!==0)break a;ou=t,r.timeoutHandle=Kd(gu.bind(null,r,n,Xl,tu,Zl,t,ql,Gl,Jl,zl,o,`Throttled`,-0,0),a);break a}gu(r,n,Xl,tu,Zl,t,ql,Gl,Jl,zl,o,null,-0,0)}}break}while(1);nd(e)}function gu(e,t,n,r,i,a,o,s,c,l,u,d,f,p){if(e.timeoutHandle=-1,d=t.subtreeFlags,d&8192||(d&16785408)==16785408){d={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:an},kl(t,a,d);var m=(a&62914560)===a?Ql-Me():(a&4194048)===a?$l-Me():0;if(m=qf(d,m),m!==null){ou=a,e.cancelPendingCommit=m(Iu.bind(null,e,t,a,n,r,i,o,s,c,u,d,null,f,p)),vu(e,a,o,!l);return}}Iu(e,t,a,n,r,i,o,s,c)}function _u(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var r=0;r<n.length;r++){var i=n[r],a=i.getSnapshot;i=i.value;try{if(!Sr(a(),i))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function vu(e,t,n,r){t&=~Kl,t&=~Gl,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var i=t;0<i;){var a=31-We(i),o=1<<a;r[a]=-1,i&=~o}n!==0&&it(e,n,t)}function yu(){return J&6?!0:(rd(0,!1),!1)}function bu(){if(Y!==null){if(Z===0)var e=Y.return;else e=Y,Bi=zi=null,wo(e),Ta=null,Ea=0,e=Y;for(;e!==null;)Lc(e.alternate,e),e=e.return;Y=null}}function xu(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,qd(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),ou=0,bu(),Ll=e,Y=n=ci(e.current,null),X=t,Z=0,Rl=null,zl=!1,Bl=$e(e,t),Vl=!1,Jl=ql=Kl=Gl=Wl=Ul=0,Xl=Yl=null,Zl=!1,t&8&&(t|=t&32);var r=e.entangledLanes;if(r!==0)for(e=e.entanglements,r&=t;0<r;){var i=31-We(r),a=1<<i;t|=e[i],r&=~a}return Hl=t,$r(),n}function Su(e,t){q=null,D.H=Ps,t===ha||t===_a?(t=Ca(),Z=3):t===ga?(t=Ca(),Z=4):Z=t===Qs?8:typeof t==`object`&&t&&typeof t.then==`function`?6:1,Rl=t,Y===null&&(Ul=1,Ks(e,H(t,e.current)))}function Cu(){var e=Xa.current;return e===null?!0:(X&4194048)===X?Za===null:(X&62914560)===X||X&536870912?e===Za:!1}function wu(){var e=D.H;return D.H=Ps,e===null?Ps:e}function Tu(){var e=D.A;return D.A=Fl,e}function Eu(){Ul=4,zl||(X&4194048)!==X&&Xa.current!==null||(Bl=!0),!(Wl&134217727)&&!(Gl&134217727)||Ll===null||vu(Ll,X,ql,!1)}function Du(e,t,n){var r=J;J|=2;var i=wu(),a=Tu();(Ll!==e||X!==t)&&(tu=null,xu(e,t)),t=!1;var o=Ul;a:do try{if(Z!==0&&Y!==null){var s=Y,c=Rl;switch(Z){case 8:bu(),o=6;break a;case 3:case 2:case 9:case 6:Xa.current===null&&(t=!0);var l=Z;if(Z=0,Rl=null,Nu(e,s,c,l),n&&Bl){o=0;break a}break;default:l=Z,Z=0,Rl=null,Nu(e,s,c,l)}}Ou(),o=Ul;break}catch(t){Su(e,t)}while(1);return t&&e.shellSuspendCounter++,Bi=zi=null,J=r,D.H=i,D.A=a,Y===null&&(Ll=null,X=0,$r()),o}function Ou(){for(;Y!==null;)ju(Y)}function ku(e,t){var n=J;J|=2;var r=wu(),a=Tu();Ll!==e||X!==t?(tu=null,eu=Me()+500,xu(e,t)):Bl=$e(e,t);a:do try{if(Z!==0&&Y!==null){t=Y;var o=Rl;b:switch(Z){case 1:Z=0,Rl=null,Nu(e,t,o,1);break;case 2:case 9:if(ya(o)){Z=0,Rl=null,Mu(t);break}t=function(){Z!==2&&Z!==9||Ll!==e||(Z=7),nd(e)},o.then(t,t);break a;case 3:Z=7;break a;case 4:Z=5;break a;case 7:ya(o)?(Z=0,Rl=null,Mu(t)):(Z=0,Rl=null,Nu(e,t,o,7));break;case 5:var s=null;switch(Y.tag){case 26:s=Y.memoizedState;case 5:case 27:var c=Y;if(s?Wf(s):c.stateNode.complete){Z=0,Rl=null;var l=c.sibling;if(l!==null)Y=l;else{var u=c.return;u===null?Y=null:(Y=u,Pu(u))}break b}}Z=0,Rl=null,Nu(e,t,o,5);break;case 6:Z=0,Rl=null,Nu(e,t,o,6);break;case 8:bu(),Ul=6;break a;default:throw Error(i(462))}}Au();break}catch(t){Su(e,t)}while(1);return Bi=zi=null,D.H=r,D.A=a,J=n,Y===null?(Ll=null,X=0,$r(),Ul):0}function Au(){for(;Y!==null&&!Ae();)ju(Y)}function ju(e){var t=Oc(e.alternate,e,Hl);e.memoizedProps=e.pendingProps,t===null?Pu(e):Y=t}function Mu(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=fc(n,t,t.pendingProps,t.type,void 0,X);break;case 11:t=fc(n,t,t.pendingProps,t.type.render,t.ref,X);break;case 5:wo(t);default:Lc(n,t),t=Y=li(t,Hl),t=Oc(n,t,Hl)}e.memoizedProps=e.pendingProps,t===null?Pu(e):Y=t}function Nu(e,t,n,r){Bi=zi=null,wo(t),Ta=null,Ea=0;var i=t.return;try{if(Zs(e,i,t,n,X)){Ul=1,Ks(e,H(n,e.current)),Y=null;return}}catch(t){if(i!==null)throw Y=i,t;Ul=1,Ks(e,H(n,e.current)),Y=null;return}t.flags&32768?(G||r===1?e=!0:Bl||X&536870912?e=!1:(zl=e=!0,(r===2||r===9||r===3||r===6)&&(r=Xa.current,r!==null&&r.tag===13&&(r.flags|=16384))),Fu(t,e)):Pu(t)}function Pu(e){var t=e;do{if(t.flags&32768){Fu(t,zl);return}e=t.return;var n=Fc(t.alternate,t,Hl);if(n!==null){Y=n;return}if(t=t.sibling,t!==null){Y=t;return}Y=t=e}while(t!==null);Ul===0&&(Ul=5)}function Fu(e,t){do{var n=Ic(e.alternate,e);if(n!==null){n.flags&=32767,Y=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){Y=e;return}Y=e=n}while(e!==null);Ul=6,Y=null}function Iu(e,t,n,r,a,o,s,c,l){e.cancelPendingCommit=null;do Vu();while(ru!==0);if(J&6)throw Error(i(327));if(t!==null){if(t===e.current)throw Error(i(177));if(o=t.lanes|t.childLanes,o|=Qr,rt(e,n,o,s,c,l),e===Ll&&(Y=Ll=null,X=0),au=t,iu=e,ou=n,su=o,cu=a,lu=r,t.subtreeFlags&10256||t.flags&10256?(e.callbackNode=null,e.callbackPriority=0,Yu(Ie,function(){return Hu(),null})):(e.callbackNode=null,e.callbackPriority=0),r=(t.flags&13878)!=0,t.subtreeFlags&13878||r){r=D.T,D.T=null,a=O.p,O.p=2,s=J,J|=4;try{nl(e,t,n)}finally{J=s,O.p=a,D.T=r}}ru=1,Lu(),Ru(),zu()}}function Lu(){if(ru===1){ru=0;var e=iu,t=au,n=(t.flags&13878)!=0;if(t.subtreeFlags&13878||n){n=D.T,D.T=null;var r=O.p;O.p=2;var i=J;J|=4;try{hl(t,e);var a=zd,o=Dr(e.containerInfo),s=a.focusedElem,c=a.selectionRange;if(o!==s&&s&&s.ownerDocument&&Er(s.ownerDocument.documentElement,s)){if(c!==null&&Or(s)){var l=c.start,u=c.end;if(u===void 0&&(u=l),`selectionStart`in s)s.selectionStart=l,s.selectionEnd=Math.min(u,s.value.length);else{var d=s.ownerDocument||document,f=d&&d.defaultView||window;if(f.getSelection){var p=f.getSelection(),m=s.textContent.length,h=Math.min(c.start,m),g=c.end===void 0?h:Math.min(c.end,m);!p.extend&&h>g&&(o=g,g=h,h=o);var _=Tr(s,h),v=Tr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;s<d.length;s++){var b=d[s];b.element.scrollLeft=b.left,b.element.scrollTop=b.top}}sp=!!Rd,zd=Rd=null}finally{J=i,O.p=r,D.T=n}}e.current=t,ru=2}}function Ru(){if(ru===2){ru=0;var e=iu,t=au,n=(t.flags&8772)!=0;if(t.subtreeFlags&8772||n){n=D.T,D.T=null;var r=O.p;O.p=2;var i=J;J|=4;try{rl(e,t.alternate,t)}finally{J=i,O.p=r,D.T=n}}ru=3}}function zu(){if(ru===4||ru===3){ru=0,je();var e=iu,t=au,n=ou,r=lu;t.subtreeFlags&10256||t.flags&10256?ru=5:(ru=0,au=iu=null,Bu(e,e.pendingLanes));var i=e.pendingLanes;if(i===0&&(nu=null),ct(n),t=t.stateNode,He&&typeof He.onCommitFiberRoot==`function`)try{He.onCommitFiberRoot(Ve,t,void 0,(t.current.flags&128)==128)}catch{}if(r!==null){t=D.T,i=O.p,O.p=2,D.T=null;try{for(var a=e.onRecoverableError,o=0;o<r.length;o++){var s=r[o];a(s.value,{componentStack:s.stack})}}finally{D.T=t,O.p=i}}ou&3&&Vu(),nd(e),i=e.pendingLanes,n&261930&&i&42?e===du?uu++:(uu=0,du=e):uu=0,rd(0,!1)}}function Bu(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,na(t)))}function Vu(){return Lu(),Ru(),zu(),Hu()}function Hu(){if(ru!==5)return!1;var e=iu,t=su;su=0;var n=ct(ou),r=D.T,a=O.p;try{O.p=32>n?32:n,D.T=null,n=cu,cu=null;var o=iu,s=ou;if(ru=0,au=iu=null,ou=0,J&6)throw Error(i(331));var c=J;if(J|=4,Ml(o.current),wl(o,o.current,s,n),J=c,rd(0,!1),He&&typeof He.onPostCommitFiberRoot==`function`)try{He.onPostCommitFiberRoot(Ve,o)}catch{}return!0}finally{O.p=a,D.T=r,Bu(e,t)}}function Uu(e,t,n){t=H(n,t),t=Js(e.stateNode,t,2),e=La(e,t,2),e!==null&&(nt(e,2),nd(e))}function Q(e,t,n){if(e.tag===3)Uu(e,e,n);else for(;t!==null;){if(t.tag===3){Uu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(nu===null||!nu.has(r))){e=H(n,e),n=Ys(2),r=La(t,n,2),r!==null&&(Xs(n,r,t,e),nt(r,2),nd(r));break}}t=t.return}}function Wu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Il;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Vl=!0,i.add(n),e=Gu.bind(null,e,t,n),t.then(e,e))}function Gu(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Ll===e&&(X&n)===n&&(Ul===4||Ul===3&&(X&62914560)===X&&300>Me()-Ql?!(J&2)&&xu(e,0):Kl|=n,Jl===X&&(Jl=0)),nd(e)}function Ku(e,t){t===0&&(t=tt()),e=B(e,t),e!==null&&(nt(e,t),nd(e))}function qu(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Ku(e,n)}function Ju(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Ku(e,n)}function Yu(e,t){return Oe(e,t)}var Xu=null,Zu=null,Qu=!1,$u=!1,ed=!1,td=0;function nd(e){e!==Zu&&e.next===null&&(Zu===null?Xu=Zu=e:Zu=Zu.next=e),$u=!0,Qu||(Qu=!0,ld())}function rd(e,t){if(!ed&&$u){ed=!0;do for(var n=!1,r=Xu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-We(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,cd(r,a))}else a=X,a=Qe(r,r===Ll?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||$e(r,a)||(n=!0,cd(r,a));r=r.next}while(n);ed=!1}}function id(){ad()}function ad(){$u=Qu=!1;var e=0;td!==0&&Gd()&&(e=td);for(var t=Me(),n=null,r=Xu;r!==null;){var i=r.next,a=od(r,t);a===0?(r.next=null,n===null?Xu=i:n.next=i,i===null&&(Zu=n)):(n=r,(e!==0||a&3)&&($u=!0)),r=i}ru!==0&&ru!==5||rd(e,!1),td!==0&&(td=0)}function od(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0<a;){var o=31-We(a),s=1<<o,c=i[o];c===-1?((s&n)===0||(s&r)!==0)&&(i[o]=et(s,t)):c<=t&&(e.expiredLanes|=s),a&=~s}if(t=Ll,n=X,n=Qe(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,n===0||e===t&&(Z===2||Z===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&ke(r),e.callbackNode=null,e.callbackPriority=0;if(!(n&3)||$e(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(r!==null&&ke(r),ct(n)){case 2:case 8:n=Fe;break;case 32:n=Ie;break;case 268435456:n=Re;break;default:n=Ie}return r=sd.bind(null,e),n=Oe(n,r),e.callbackPriority=t,e.callbackNode=n,t}return r!==null&&r!==null&&ke(r),e.callbackPriority=2,e.callbackNode=null,2}function sd(e,t){if(ru!==0&&ru!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Vu()&&e.callbackNode!==n)return null;var r=X;return r=Qe(e,e===Ll?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(hu(e,r,t),od(e,Me()),e.callbackNode!=null&&e.callbackNode===n?sd.bind(null,e):null)}function cd(e,t){if(Vu())return null;hu(e,t,!0)}function ld(){Yd(function(){J&6?Oe(Pe,id):ad()})}function ud(){if(td===0){var e=aa;e===0&&(e=Je,Je<<=1,!(Je&261888)&&(Je=256)),td=e}return td}function dd(e){return e==null||typeof e==`symbol`||typeof e==`boolean`?null:typeof e==`function`?e:rn(``+e)}function fd(e,t){var n=t.ownerDocument.createElement(`input`);return n.name=t.name,n.value=t.value,e.id&&n.setAttribute(`form`,e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function pd(e,t,n,r,i){if(t===`submit`&&n&&n.stateNode===i){var a=dd((i[pt]||null).action),o=r.submitter;o&&(t=(t=o[pt]||null)?dd(t.formAction):o.getAttribute(`formAction`),t!==null&&(a=t,o=null));var s=new Cn(`action`,`action`,null,r,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(td!==0){var e=o?fd(i,o):new FormData(i);bs(n,{pending:!0,data:e,method:i.method,action:a},null,e)}}else typeof a==`function`&&(s.preventDefault(),e=o?fd(i,o):new FormData(i),bs(n,{pending:!0,data:e,method:i.method,action:a},a,e))},currentTarget:i}]})}}for(var md=0;md<qr.length;md++){var hd=qr[md];Jr(hd.toLowerCase(),`on`+(hd[0].toUpperCase()+hd.slice(1)))}Jr(Br,`onAnimationEnd`),Jr(Vr,`onAnimationIteration`),Jr(Hr,`onAnimationStart`),Jr(`dblclick`,`onDoubleClick`),Jr(`focusin`,`onFocus`),Jr(`focusout`,`onBlur`),Jr(Ur,`onTransitionRun`),Jr(Wr,`onTransitionStart`),Jr(z,`onTransitionCancel`),Jr(Gr,`onTransitionEnd`),kt(`onMouseEnter`,[`mouseout`,`mouseover`]),kt(`onMouseLeave`,[`mouseout`,`mouseover`]),kt(`onPointerEnter`,[`pointerout`,`pointerover`]),kt(`onPointerLeave`,[`pointerout`,`pointerover`]),Ot(`onChange`,`change click focusin focusout input keydown keyup selectionchange`.split(` `)),Ot(`onSelect`,`focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange`.split(` `)),Ot(`onBeforeInput`,[`compositionend`,`keypress`,`textInput`,`paste`]),Ot(`onCompositionEnd`,`compositionend focusout keydown keypress keyup mousedown`.split(` `)),Ot(`onCompositionStart`,`compositionstart focusout keydown keypress keyup mousedown`.split(` `)),Ot(`onCompositionUpdate`,`compositionupdate focusout keydown keypress keyup mousedown`.split(` `));var gd=`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(` `),_d=new Set(`beforetoggle cancel close invalid load scroll scrollend toggle`.split(` `).concat(gd));function vd(e,t){t=(t&4)!=0;for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;a:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],c=s.instance,l=s.currentTarget;if(s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){Yr(e)}i.currentTarget=null,a=c}else for(o=0;o<r.length;o++){if(s=r[o],c=s.instance,l=s.currentTarget,s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){Yr(e)}i.currentTarget=null,a=c}}}}function $(e,t){var n=t[ht];n===void 0&&(n=t[ht]=new Set);var r=e+`__bubble`;n.has(r)||(Sd(t,e,2,!1),n.add(r))}function yd(e,t,n){var r=0;t&&(r|=4),Sd(n,e,r,t)}var bd=`_reactListening`+Math.random().toString(36).slice(2);function xd(e){if(!e[bd]){e[bd]=!0,Et.forEach(function(t){t!==`selectionchange`&&(_d.has(t)||yd(t,!1,e),yd(t,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[bd]||(t[bd]=!0,yd(`selectionchange`,!1,t))}}function Sd(e,t,n,r){switch(mp(t)){case 2:var i=cp;break;case 8:i=lp;break;default:i=up}n=i.bind(null,t,n,e),i=void 0,!hn||t!==`touchstart`&&t!==`touchmove`&&t!==`wheel`||(i=!0),r?i===void 0?e.addEventListener(t,n,!0):e.addEventListener(t,n,{capture:!0,passive:i}):i===void 0?e.addEventListener(t,n,!1):e.addEventListener(t,n,{passive:i})}function Cd(e,t,n,r,i){var a=r;if(!(t&1)&&!(t&2)&&r!==null)a:for(;;){if(r===null)return;var s=r.tag;if(s===3||s===4){var c=r.stateNode.containerInfo;if(c===i)break;if(s===4)for(s=r.return;s!==null;){var l=s.tag;if((l===3||l===4)&&s.stateNode.containerInfo===i)return;s=s.return}for(;c!==null;){if(s=xt(c),s===null)return;if(l=s.tag,l===5||l===6||l===26||l===27){r=a=s;continue a}c=c.parentNode}}r=r.return}fn(function(){var r=a,i=sn(n),s=[];a:{var c=Kr.get(e);if(c!==void 0){var l=Cn,u=e;switch(e){case`keypress`:if(F(n)===0)break a;case`keydown`:case`keyup`:l=Vn;break;case`focusin`:u=`focus`,l=Mn;break;case`focusout`:u=`blur`,l=Mn;break;case`beforeblur`:case`afterblur`:l=Mn;break;case`click`:if(n.button===2)break a;case`auxclick`:case`dblclick`:case`mousedown`:case`mousemove`:case`mouseup`:case`mouseout`:case`mouseover`:case`contextmenu`:l=An;break;case`drag`:case`dragend`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`dragstart`:case`drop`:l=jn;break;case`touchcancel`:case`touchend`:case`touchmove`:case`touchstart`:l=Un;break;case Br:case Vr:case Hr:l=Nn;break;case Gr:l=Wn;break;case`scroll`:case`scrollend`:l=Tn;break;case`wheel`:l=Gn;break;case`copy`:case`cut`:case`paste`:l=Pn;break;case`gotpointercapture`:case`lostpointercapture`:case`pointercancel`:case`pointerdown`:case`pointermove`:case`pointerout`:case`pointerover`:case`pointerup`:l=Hn;break;case`toggle`:case`beforetoggle`:l=Kn}var d=(t&4)!=0,f=!d&&(e===`scroll`||e===`scrollend`),p=d?c===null?null:c+`Capture`:c;d=[];for(var m=r,h;m!==null;){var g=m;if(h=g.stateNode,g=g.tag,g!==5&&g!==26&&g!==27||h===null||p===null||(g=pn(m,p),g!=null&&d.push(wd(m,g,h))),f)break;m=m.return}0<d.length&&(c=new l(c,u,null,n,i),s.push({event:c,listeners:d}))}}if(!(t&7)){a:{if(c=e===`mouseover`||e===`pointerover`,l=e===`mouseout`||e===`pointerout`,c&&n!==on&&(u=n.relatedTarget||n.fromElement)&&(xt(u)||u[mt]))break a;if((l||c)&&(c=i.window===i?i:(c=i.ownerDocument)?c.defaultView||c.parentWindow:window,l?(u=n.relatedTarget||n.toElement,l=r,u=u?xt(u):null,u!==null&&(f=o(u),d=u.tag,u!==f||d!==5&&d!==27&&d!==6)&&(u=null)):(l=null,u=r),l!==u)){if(d=An,g=`onMouseLeave`,p=`onMouseEnter`,m=`mouse`,(e===`pointerout`||e===`pointerover`)&&(d=Hn,g=`onPointerLeave`,p=`onPointerEnter`,m=`pointer`),f=l==null?c:Ct(l),h=u==null?c:Ct(u),c=new d(g,m+`leave`,l,n,i),c.target=f,c.relatedTarget=h,g=null,xt(i)===r&&(d=new d(p,m+`enter`,u,n,i),d.target=h,d.relatedTarget=f,g=d),f=g,l&&u)b:{for(d=Ed,p=l,m=u,h=0,g=p;g;g=d(g))h++;g=0;for(var _=m;_;_=d(_))g++;for(;0<h-g;)p=d(p),h--;for(;0<g-h;)m=d(m),g--;for(;h--;){if(p===m||m!==null&&p===m.alternate){d=p;break b}p=d(p),m=d(m)}d=null}else d=null;l!==null&&Dd(s,c,l,d,!1),u!==null&&f!==null&&Dd(s,f,u,d,!0)}}a:{if(c=r?Ct(r):window,l=c.nodeName&&c.nodeName.toLowerCase(),l===`select`||l===`input`&&c.type===`file`)var v=ur;else if(ir(c))if(dr)v=br;else{v=vr;var y=_r}else l=c.nodeName,!l||l.toLowerCase()!==`input`||c.type!==`checkbox`&&c.type!==`radio`?r&&en(r.elementType)&&(v=ur):v=yr;if(v&&=v(e,r)){ar(s,v,n,i);break a}y&&y(e,c,r),e===`focusout`&&r&&c.type===`number`&&r.memoizedProps.value!=null&&qt(c,`number`,c.value)}switch(y=r?Ct(r):window,e){case`focusin`:(ir(y)||y.contentEditable===`true`)&&(Ar=y,jr=r,Mr=null);break;case`focusout`:Mr=jr=Ar=null;break;case`mousedown`:Nr=!0;break;case`contextmenu`:case`mouseup`:case`dragend`:Nr=!1,Pr(s,n,i);break;case`selectionchange`:if(kr)break;case`keydown`:case`keyup`:Pr(s,n,i)}var b;if(Jn)b:{switch(e){case`compositionstart`:var x=`onCompositionStart`;break b;case`compositionend`:x=`onCompositionEnd`;break b;case`compositionupdate`:x=`onCompositionUpdate`;break b}x=void 0}else nr?er(e,n)&&(x=`onCompositionEnd`):e===`keydown`&&n.keyCode===229&&(x=`onCompositionStart`);x&&(Zn&&n.locale!==`ko`&&(nr||x!==`onCompositionStart`?x===`onCompositionEnd`&&nr&&(b=P()):(_n=i,vn=`value`in _n?_n.value:_n.textContent,nr=!0)),y=Td(r,x),0<y.length&&(x=new Fn(x,e,null,n,i),s.push({event:x,listeners:y}),b?x.data=b:(b=tr(n),b!==null&&(x.data=b)))),(b=Xn?L(e,n):R(e,n))&&(x=Td(r,`onBeforeInput`),0<x.length&&(y=new Fn(`onBeforeInput`,`beforeinput`,null,n,i),s.push({event:y,listeners:x}),y.data=b)),pd(s,e,r,n,i)}vd(s,t)})}function wd(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Td(e,t){for(var n=t+`Capture`,r=[];e!==null;){var i=e,a=i.stateNode;if(i=i.tag,i!==5&&i!==26&&i!==27||a===null||(i=pn(e,n),i!=null&&r.unshift(wd(e,i,a)),i=pn(e,t),i!=null&&r.push(wd(e,i,a))),e.tag===3)return r;e=e.return}return[]}function Ed(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Dd(e,t,n,r,i){for(var a=t._reactName,o=[];n!==null&&n!==r;){var s=n,c=s.alternate,l=s.stateNode;if(s=s.tag,c!==null&&c===r)break;s!==5&&s!==26&&s!==27||l===null||(c=l,i?(l=pn(n,a),l!=null&&o.unshift(wd(n,l,c))):i||(l=pn(n,a),l!=null&&o.push(wd(n,l,c)))),n=n.return}o.length!==0&&e.push({event:t,listeners:o})}var Od=/\r\n?/g,kd=/\u0000|\uFFFD/g;function Ad(e){return(typeof e==`string`?e:``+e).replace(Od,`
`).replace(kd,``)}function jd(e,t){return t=Ad(t),Ad(e)===t}function Md(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Xt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Xt(e,``+r);break;case`className`:Ft(e,`class`,r);break;case`tabIndex`:Ft(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Ft(e,n,r);break;case`style`:$t(e,r,o);break;case`data`:if(t!==`object`){Ft(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=rn(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}else typeof o==`function`&&(n===`formAction`?(t!==`input`&&Md(e,t,`name`,a.name,a,null),Md(e,t,`formEncType`,a.formEncType,a,null),Md(e,t,`formMethod`,a.formMethod,a,null),Md(e,t,`formTarget`,a.formTarget,a,null)):(Md(e,t,`encType`,a.encType,a,null),Md(e,t,`method`,a.method,a,null),Md(e,t,`target`,a.target,a,null)));if(r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=rn(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=an);break;case`onScroll`:r!=null&&$(`scroll`,e);break;case`onScrollEnd`:r!=null&&$(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=rn(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:$(`beforetoggle`,e),$(`toggle`,e),Pt(e,`popover`,r);break;case`xlinkActuate`:It(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:It(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:It(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:It(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:It(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:It(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:It(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:It(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:It(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:Pt(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=tn.get(n)||n,Pt(e,n,r))}}function Nd(e,t,n,r,a,o){switch(n){case`style`:$t(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?Xt(e,r):(typeof r==`number`||typeof r==`bigint`)&&Xt(e,``+r);break;case`onScroll`:r!=null&&$(`scroll`,e);break;case`onScrollEnd`:r!=null&&$(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=an);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!Dt.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),t=n.slice(2,a?n.length-7:void 0),o=e[pt]||null,o=o==null?null:o[n],typeof o==`function`&&e.removeEventListener(t,o,a),typeof r==`function`)){typeof o!=`function`&&o!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a);break a}n in e?e[n]=r:!0===r?e.setAttribute(n,``):Pt(e,n,r)}}}function Pd(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:$(`error`,e),$(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Md(e,t,o,s,n,null)}}a&&Md(e,t,`srcSet`,n.srcSet,n,null),r&&Md(e,t,`src`,n.src,n,null);return;case`input`:$(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:Md(e,t,r,d,n,null)}}Kt(e,o,c,l,u,s,a,!1);return;case`select`:for(a in $(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:Md(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&Jt(e,!!r,n,!0):Jt(e,!!r,t,!1);return;case`textarea`:for(s in $(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:Md(e,t,s,c,n,null)}Yt(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:Md(e,t,l,r,n,null)}return;case`dialog`:$(`beforetoggle`,e),$(`toggle`,e),$(`cancel`,e),$(`close`,e);break;case`iframe`:case`object`:$(`load`,e);break;case`video`:case`audio`:for(r=0;r<gd.length;r++)$(gd[r],e);break;case`image`:$(`error`,e),$(`load`,e);break;case`details`:$(`toggle`,e);break;case`embed`:case`source`:case`link`:$(`error`,e),$(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Md(e,t,u,r,n,null)}return;default:if(en(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Nd(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&Md(e,t,c,r,n,null))}function Fd(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||Md(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:o=m;break;case`name`:a=m;break;case`checked`:u=m;break;case`defaultChecked`:d=m;break;case`value`:s=m;break;case`defaultValue`:c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&Md(e,t,p,m,r,f)}}Gt(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||Md(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:p=o;break;case`defaultValue`:c=o;break;case`multiple`:s=o;default:o!==l&&Md(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?Jt(e,!!n,n?[]:``,!1):Jt(e,!!n,t,!0)):Jt(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:Md(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:p=a;break;case`defaultValue`:m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&Md(e,t,s,a,r,o)}N(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:Md(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:Md(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&Md(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:Md(e,t,u,p,r,m)}return;default:if(en(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Nd(e,t,_,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||Nd(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&Md(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||Md(e,t,f,p,r,m)}function Id(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function Ld(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&Id(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var Rd=null,zd=null;function Bd(e){return e.nodeType===9?e:e.ownerDocument}function Vd(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function Hd(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function Ud(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Wd=null;function Gd(){var e=window.event;return e&&e.type===`popstate`?e===Wd?!1:(Wd=e,!0):(Wd=null,!1)}var Kd=typeof setTimeout==`function`?setTimeout:void 0,qd=typeof clearTimeout==`function`?clearTimeout:void 0,Jd=typeof Promise==`function`?Promise:void 0,Yd=typeof queueMicrotask==`function`?queueMicrotask:Jd===void 0?Kd:function(e){return Jd.resolve(null).then(e).catch(Xd)};function Xd(e){setTimeout(function(){throw e})}function Zd(e){return e===`head`}function Qd(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8)if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),Np(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)pf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,pf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[yt]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&pf(e.ownerDocument.body);n=i}while(n);Np(t)}function $d(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8)if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++;n=r}while(n)}function ef(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:ef(n),bt(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function tf(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r)if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e;else if(!e[yt])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=cf(e.nextSibling),e===null)break}return null}function nf(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=cf(e.nextSibling),e===null))return null;return e}function rf(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=cf(e.nextSibling),e===null))return null;return e}function af(e){return e.data===`$?`||e.data===`$~`}function of(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function sf(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function cf(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var lf=null;function uf(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return cf(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function df(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function ff(e,t,n){switch(t=Bd(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function pf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);bt(e)}var mf=new Map,hf=new Set;function gf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var _f=O.d;O.d={f:vf,r:yf,D:Sf,C:Cf,L:wf,m:Tf,X:Df,S:Ef,M:Of};function vf(){var e=_f.f(),t=yu();return e||t}function yf(e){var t=St(e);t!==null&&t.tag===5&&t.type===`form`?Ss(t):_f.r(e)}var bf=typeof document>`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Wt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),Tt(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Wt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Wt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Wt(n.imageSizes)+`"]`)):i+=`[href="`+Wt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),Tt(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Wt(r)+`"][href="`+Wt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),Tt(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=wt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);Tt(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=wt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),Tt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=wt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),Tt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=he.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=wt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=wt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=wt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+Wt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),Tt(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Wt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Wt(n.href)+`"]`);if(r)return t.instance=r,Tt(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Tt(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,Tt(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),Tt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,Tt(a),a):(r=n,(a=mf.get(o))&&(r=h({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Tt(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Rf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function zf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Bf=null;function Vf(e,t,n){if(Bf===null){var r=new Map,i=Bf=new Map;i.set(n,r)}else i=Bf,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[yt]||a[ft]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Hf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Tt(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),Tt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&Xf(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&Kf===0&&(Kf=62500*Ld());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Xf(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=Jf.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var Qf={$$typeof:C,Provider:null,Consumer:null,_currentValue:le,_currentValue2:le,_threadCount:0};function $f(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=M(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=M(0),this.hiddenUpdates=M(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.incompleteTransitions=new Map}function ep(e,t,n,r,i,a,o,s,c,l,u,d){return e=new $f(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=oi(3,null,null,t),e.current=a,a.stateNode=e,t=ta(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},Pa(a),e}function tp(e){return e?(e=ii,e):ii}function np(e,t,n,r,i,a){i=tp(i),r.context===null?r.context=i:r.pendingContext=i,r=Ia(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=La(e,r,t),n!==null&&(mu(n,e,t),Ra(n,e,t))}function rp(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function ip(e,t){rp(e,t),(e=e.alternate)&&rp(e,t)}function ap(e){if(e.tag===13||e.tag===31){var t=B(e,67108864);t!==null&&mu(t,e,67108864),ip(e,67108864)}}function op(e){if(e.tag===13||e.tag===31){var t=fu();t=st(t);var n=B(e,t);n!==null&&mu(n,e,t),ip(e,t)}}var sp=!0;function cp(e,t,n,r){var i=D.T;D.T=null;var a=O.p;try{O.p=2,up(e,t,n,r)}finally{O.p=a,D.T=i}}function lp(e,t,n,r){var i=D.T;D.T=null;var a=O.p;try{O.p=8,up(e,t,n,r)}finally{O.p=a,D.T=i}}function up(e,t,n,r){if(sp){var i=dp(r);if(i===null)Cd(e,t,r,fp,n),Cp(e,r);else if(Tp(i,e,t,n,r))r.stopPropagation();else if(Cp(e,r),t&4&&-1<Sp.indexOf(e)){for(;i!==null;){var a=St(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=Ze(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-We(o);s.entanglements[1]|=c,o&=~c}nd(a),!(J&6)&&(eu=Me()+500,rd(0,!1))}}break;case 31:case 13:s=B(a,2),s!==null&&mu(s,a,2),yu(),ip(a,2)}if(a=dp(r),a===null&&Cd(e,t,r,fp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Cd(e,t,r,null,n)}}function dp(e){return e=sn(e),pp(e)}var fp=null;function pp(e){if(fp=null,e=xt(e),e!==null){var t=o(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=s(t),e!==null)return e;e=null}else if(n===31){if(e=c(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return fp=e,null}function mp(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`resize`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(Ne()){case Pe:return 2;case Fe:return 8;case Ie:case Le:return 32;case Re:return 268435456;default:return 32}default:return 32}}var hp=!1,gp=null,_p=null,vp=null,yp=new Map,bp=new Map,xp=[],Sp=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function Cp(e,t){switch(e){case`focusin`:case`focusout`:gp=null;break;case`dragenter`:case`dragleave`:_p=null;break;case`mouseover`:case`mouseout`:vp=null;break;case`pointerover`:case`pointerout`:yp.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:bp.delete(t.pointerId)}}function wp(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=St(t),t!==null&&ap(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Tp(e,t,n,r,i){switch(t){case`focusin`:return gp=wp(gp,e,t,n,r,i),!0;case`dragenter`:return _p=wp(_p,e,t,n,r,i),!0;case`mouseover`:return vp=wp(vp,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return yp.set(a,wp(yp.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,bp.set(a,wp(bp.get(a)||null,e,t,n,r,i)),!0}return!1}function Ep(e){var t=xt(e.target);if(t!==null){var n=o(t);if(n!==null){if(t=n.tag,t===13){if(t=s(n),t!==null){e.blockedOn=t,ut(e.priority,function(){op(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,ut(e.priority,function(){op(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Dp(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=dp(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);on=r,n.target.dispatchEvent(r),on=null}else return t=St(n),t!==null&&ap(t),e.blockedOn=n,!1;t.shift()}return!0}function Op(e,t,n){Dp(e)&&n.delete(t)}function kp(){hp=!1,gp!==null&&Dp(gp)&&(gp=null),_p!==null&&Dp(_p)&&(_p=null),vp!==null&&Dp(vp)&&(vp=null),yp.forEach(Op),bp.forEach(Op)}function Ap(e,n){e.blockedOn===n&&(e.blockedOn=null,hp||(hp=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,kp)))}var jp=null;function Mp(e){jp!==e&&(jp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){jp===e&&(jp=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(pp(r||n)===null)continue;break}var a=St(n);a!==null&&(e.splice(t,3),t-=3,bs(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Np(e){function t(t){return Ap(t,e)}gp!==null&&Ap(gp,e),_p!==null&&Ap(_p,e),vp!==null&&Ap(vp,e),yp.forEach(t),bp.forEach(t);for(var n=0;n<xp.length;n++){var r=xp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<xp.length&&(n=xp[0],n.blockedOn===null);)Ep(n),n.blockedOn===null&&xp.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[pt]||null;if(typeof a==`function`)o||Mp(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[pt]||null)s=o.formAction;else if(pp(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Mp(n)}}}function Pp(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function Fp(e){this._internalRoot=e}Ip.prototype.render=Fp.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;np(n,fu(),e,t,null,null)},Ip.prototype.unmount=Fp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;np(e.current,2,null,e,null,null),yu(),t[mt]=null}};function Ip(e){this._internalRoot=e}Ip.prototype.unstable_scheduleHydration=function(e){if(e){var t=lt();e={blockedOn:null,target:e,priority:t};for(var n=0;n<xp.length&&t!==0&&t<xp[n].priority;n++);xp.splice(n,0,e),n===0&&Ep(e)}};var Lp=n.version;if(Lp!==`19.2.5`)throw Error(i(527,Lp,`19.2.5`));O.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=d(t),e=e===null?null:p(e),e=e===null?null:e.stateNode,e};var Rp={bundleType:0,version:`19.2.5`,rendererPackageName:`react-dom`,currentDispatcherRef:D,reconcilerVersion:`19.2.5`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var zp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!zp.isDisabled&&zp.supportsFiber)try{Ve=zp.inject(Rp),He=zp}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=Us,s=Ws,c=Gs;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=ep(e,1,!1,null,null,n,r,null,o,s,c,Pp),e[mt]=t.current,xd(e),new Fp(t)}})),g=o(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u(),1),v=g(),y=class{baseUrl;actorUserId;constructor(e){this.baseUrl=e.baseUrl.replace(/\/$/,``),this.actorUserId=e.actorUserId.trim()}async login(e){return this.post(`/auth/login`,{email:e.email,password:e.password,device_fingerprint:b(),device_label:e.deviceLabel,trust_device:e.trustDevice})}async refresh(e){return this.post(`/auth/refresh`,{refresh_token:e.refreshToken})}async getInstallationStatus(){return(await this.request(`/installation/status`,{method:`GET`})).installation}async bootstrapOwner(e){return this.post(`/installation/bootstrap-owner`,{email:e.email,password:e.password,activation_payload:e.activationPayload,activation_signature:e.activationSignature||``})}async revokeAuthSession(e){await this.post(`/auth/sessions/revoke`,{user_id:e.userId,auth_session_id:e.authSessionId,reason:e.reason})}async listClusters(){return(await this.get(`/clusters`)).clusters??[]}async createCluster(e){return(await this.post(`/clusters/`,{actor_user_id:this.actorUserId,slug:e.slug,name:e.name,region:e.region||null,metadata:{}})).cluster}async updateCluster(e,t){return(await this.put(`/clusters/${e}`,{actor_user_id:this.actorUserId,name:t.name,status:t.status,region:t.region||null,metadata:t.metadata||{}})).cluster}async listClusterSummaries(){return(await this.get(`/cluster-admin-summaries`)).cluster_summaries??[]}async getClusterAuthority(e){return(await this.get(`/clusters/${e}/authority`)).authority_state}async updateClusterAuthority(e,t){return(await this.put(`/clusters/${e}/authority`,{actor_user_id:this.actorUserId,authority_state:t.authorityState,mutation_mode:t.mutationMode,notes:t.notes||null})).authority_state}async listNodes(e){return(await this.get(`/clusters/${e}/nodes`)).nodes??[]}async listNodeGroups(e){return(await this.get(`/clusters/${e}/node-groups`)).node_groups??[]}async createNodeGroup(e,t){return(await this.post(`/clusters/${e}/node-groups`,{actor_user_id:this.actorUserId,parent_group_id:t.parentGroupId||null,name:t.name,description:t.description||null,sort_order:t.sortOrder||0,metadata:{}})).node_group}async assignNodeGroup(e,t,n){return(await this.put(`/clusters/${e}/nodes/${t}/group`,{actor_user_id:this.actorUserId,group_id:n||null})).node}async disableMembership(e,t,n){await this.post(`/clusters/${e}/nodes/${t}/membership/disable`,{actor_user_id:this.actorUserId,reason:n})}async attachExistingNode(e,t,n){return(await this.post(`/clusters/${e}/nodes/${t}/membership/attach`,{actor_user_id:this.actorUserId,roles:n})).node}async revokeNodeIdentity(e,t,n){await this.post(`/clusters/${e}/nodes/${t}/identity/revoke`,{actor_user_id:this.actorUserId,reason:n})}async deleteClusterNode(e,t,n){await this.delete(`/clusters/${e}/nodes/${t}`,{actor_user_id:this.actorUserId,reason:n})}async listJoinRequests(e){return(await this.get(`/clusters/${e}/join-requests`)).join_requests??[]}async createJoinToken(e,t){let n=new Date(Date.now()+Math.max(t.ttlHours,1)*60*60*1e3).toISOString();return(await this.post(`/clusters/${e}/join-tokens`,{actor_user_id:this.actorUserId,scope:t.scope,expires_at:n,max_uses:Math.max(t.maxUses,1)})).join_token}async listJoinTokens(e){return(await this.get(`/clusters/${e}/join-tokens`)).join_tokens??[]}async revokeJoinToken(e,t){return(await this.post(`/clusters/${e}/join-tokens/${t}/revoke`,{actor_user_id:this.actorUserId})).join_token}async approveJoinRequest(e,t){await this.post(`/clusters/${e}/join-requests/${t}/approve`,{actor_user_id:this.actorUserId,ownership_type:`platform_managed`})}async rejectJoinRequest(e,t,n){await this.post(`/clusters/${e}/join-requests/${t}/reject`,{actor_user_id:this.actorUserId,reason:n})}async listNodeRoles(e,t){return(await this.get(`/clusters/${e}/nodes/${t}/roles`)).role_assignments??[]}async assignRole(e,t,n,r){await this.setRoleStatus(e,t,n,`active`,r)}async setRoleStatus(e,t,n,r,i){await this.post(`/clusters/${e}/nodes/${t}/roles`,{actor_user_id:this.actorUserId,organization_id:i||null,role:n,status:r,policy:{}})}async listWorkloadStatuses(e,t){return(await this.get(`/clusters/${e}/nodes/${t}/workloads/status`)).workload_statuses??[]}async listDesiredWorkloads(e,t){return(await this.get(`/clusters/${e}/nodes/${t}/workloads/desired`)).desired_workloads??[]}async listNodeHeartbeats(e,t,n=100){return(await this.get(`/clusters/${e}/nodes/${t}/heartbeats?limit=${n}`)).heartbeats??[]}async listNodeTelemetry(e,t,n=120){return(await this.get(`/clusters/${e}/nodes/${t}/telemetry?limit=${n}`)).telemetry??[]}async listReleaseVersions(e,t=`rap-node-agent`,n=`dev`){let r=new URLSearchParams({product:t,channel:n});return(await this.get(`/clusters/${e}/updates/releases?${r.toString()}`)).release_versions??[]}async getNodeUpdatePlan(e,t,n){let r=new URLSearchParams({product:n.product||`rap-node-agent`,current_version:n.currentVersion||``,os:n.os||`linux`,arch:n.arch||`amd64`,install_type:n.installType||`docker`,channel:n.channel||`dev`});return(await this.get(`/clusters/${e}/nodes/${t}/updates/plan?${r.toString()}`)).node_update_plan}async upsertNodeUpdatePolicy(e,t,n){return(await this.put(`/clusters/${e}/nodes/${t}/updates/policy`,{actor_user_id:this.actorUserId,product:n.product,channel:n.channel||`dev`,target_version:n.targetVersion??null,strategy:n.strategy||`rolling`,enabled:n.enabled??!0,rollback_allowed:n.rollbackAllowed??!0,health_window_seconds:n.healthWindowSeconds||180})).node_update_policy}async listNodeUpdateStatuses(e,t,n=80){let r=new URLSearchParams({actor_user_id:this.actorUserId,limit:String(n)});return(await this.get(`/clusters/${e}/nodes/${t}/updates/statuses?${r.toString()}`)).node_update_statuses??[]}async listFabricTestingFlags(){return(await this.get(`/fabric/testing-flags`)).testing_flags??[]}async updateFabricTestingFlag(e){return(await this.put(`/fabric/testing-flags`,{actor_user_id:this.actorUserId,scope_type:e.scopeType,scope_id:e.scopeId||null,cluster_id:e.clusterId||null,enabled:e.enabled,telemetry_enabled:e.telemetryEnabled,synthetic_links_enabled:e.syntheticLinksEnabled,history_retention_hours:e.historyRetentionHours,metadata:e.metadata||{}})).testing_flag}async setDesiredWorkload(e,t,n,r){await this.put(`/clusters/${e}/nodes/${t}/workloads/${n}/desired`,{actor_user_id:this.actorUserId,desired_state:r.desiredState,version:r.version||null,runtime_mode:r.runtimeMode,artifact_ref:null,config:r.config,environment:r.environment})}async listMeshLinks(e){return(await this.get(`/clusters/${e}/mesh/links`)).mesh_links??[]}async getNodeSyntheticMeshConfig(e,t){return(await this.get(`/clusters/${e}/nodes/${t}/mesh/synthetic-config`)).synthetic_mesh_config}async listQoSPolicies(e){return(await this.get(`/clusters/${e}/mesh/qos-policies`)).qos_policies??[]}async listFabricEntryPoints(e){return(await this.get(`/clusters/${e}/fabric/entry-points`)).entry_points??[]}async createFabricEntryPoint(e,t){return(await this.post(`/clusters/${e}/fabric/entry-points`,{actor_user_id:this.actorUserId,name:t.name,status:`active`,endpoint_type:t.endpointType||`client_access`,public_endpoint:t.publicEndpoint||null,policy:t.policy||{},metadata:t.metadata||{}})).entry_point}async listFabricEntryPointNodes(e,t){return(await this.get(`/clusters/${e}/fabric/entry-points/${t}/nodes`)).entry_point_nodes??[]}async setFabricEntryPointNode(e,t,n,r={}){return(await this.put(`/clusters/${e}/fabric/entry-points/${t}/nodes/${n}`,{actor_user_id:this.actorUserId,status:r.status||`active`,priority:r.priority||100,metadata:r.metadata||{}})).entry_point_node}async listFabricEgressPools(e){return(await this.get(`/clusters/${e}/fabric/egress-pools`)).egress_pools??[]}async createFabricEgressPool(e,t){return(await this.post(`/clusters/${e}/fabric/egress-pools`,{actor_user_id:this.actorUserId,name:t.name,status:`active`,description:t.description||null,route_scope:t.routeScope||{},policy:t.policy||{},metadata:t.metadata||{}})).egress_pool}async listFabricEgressPoolNodes(e,t){return(await this.get(`/clusters/${e}/fabric/egress-pools/${t}/nodes`)).egress_pool_nodes??[]}async setFabricEgressPoolNode(e,t,n,r={}){return(await this.put(`/clusters/${e}/fabric/egress-pools/${t}/nodes/${n}`,{actor_user_id:this.actorUserId,status:r.status||`active`,priority:r.priority||100,metadata:r.metadata||{}})).egress_pool_node}async listVPNConnections(e){return(await this.get(`/clusters/${e}/vpn-connections`)).vpn_connections??[]}async createVPNConnection(e,t){return(await this.post(`/clusters/${e}/vpn-connections`,{actor_user_id:this.actorUserId,organization_id:t.organizationId,name:t.name,target_endpoint:t.targetEndpoint,protocol_family:t.protocolFamily,credential_ref:t.credentialRef||null,mode:`single_active`,desired_state:t.desiredState,allowed_node_policy:t.allowedNodePolicy,routing_usage:t.routingUsage,route_policy:t.routePolicy,qos_policy:t.qosPolicy,placement_policy:t.placementPolicy,metadata:{}})).vpn_connection}async updateVPNConnectionDesiredState(e,t,n){return(await this.put(`/clusters/${e}/vpn-connections/${t}/desired-state`,{actor_user_id:this.actorUserId,desired_state:n})).vpn_connection}async getActiveVPNLease(e,t){try{return(await this.get(`/clusters/${e}/vpn-connections/${t}/leases/active`)).lease}catch{return null}}async getVPNPacketStats(e,t){return(await this.get(`/clusters/${e}/vpn-connections/${t}/tunnel/stats`)).vpn_packet_stats??{}}async getVPNClientDiagnosticStatus(e,t){if(!t.trim())return null;try{return(await this.get(`/clusters/${e}/vpn/client-diagnostics/${encodeURIComponent(t.trim())}/status`)).vpn_client_diagnostic_status??null}catch{return null}}async listVPNClientDiagnosticStatuses(e){return(await this.get(`/clusters/${e}/vpn/client-diagnostics`)).vpn_client_diagnostic_statuses??[]}async enqueueVPNClientDiagnosticCommand(e,t,n){return(await this.post(`/clusters/${e}/vpn/client-diagnostics/${encodeURIComponent(t.trim())}/commands`,n)).vpn_client_diagnostic_command}async expireStaleVPNLeases(e){return(await this.post(`/clusters/${e}/vpn-connection-leases/expire-stale`,{actor_user_id:this.actorUserId})).expired_leases??[]}async listAudit(e){return(await this.get(`/clusters/${e}/audit?limit=100`)).audit_events??[]}clusterEventsURL(e){return`${this.baseUrl}/clusters/${encodeURIComponent(e)}/events?actor_user_id=${encodeURIComponent(this.actorUserId)}`}async getOrganizationAdminSummary(e){return(await this.get(`/organizations/${e}/admin-summary`)).admin_summary}async listOrganizations(){return(await this.request(`/organizations?user_id=${encodeURIComponent(this.actorUserId)}`,{method:`GET`})).organizations??[]}async createOrganization(e){return(await this.post(`/organizations/`,{actor_user_id:this.actorUserId,slug:e.slug,name:e.name,metadata:e.metadata||{}})).organization}async listUsers(){return(await this.get(`/users/`)).users??[]}async createUser(e){return(await this.post(`/users/`,{actor_user_id:this.actorUserId,email:e.email,password:e.password,platform_role:e.platformRole||`user`})).user}async listOrganizationMemberships(e){return(await this.request(`/organizations/${e}/memberships?user_id=${encodeURIComponent(this.actorUserId)}`,{method:`GET`})).memberships??[]}async addOrganizationMembership(e,t){return(await this.post(`/organizations/${e}/memberships`,{actor_user_id:this.actorUserId,user_id:t.userId,role_id:t.roleId})).membership}async listResources(e){let t=new URLSearchParams({user_id:this.actorUserId});return e&&t.set(`organization_id`,e),(await this.request(`/resources?${t.toString()}`,{method:`GET`})).resources??[]}async createResource(e){return(await this.post(`/resources/`,{actor_user_id:this.actorUserId,organization_id:e.organizationId,name:e.name,address:e.address,protocol:e.protocol||`rdp`,secret_ref:e.secretRef||null,certificate_verification_mode:e.certificateVerificationMode||`strict`,render_quality_profile:e.renderQualityProfile||`balanced`,clipboard_mode:e.clipboardMode||`disabled`,file_transfer_mode:e.fileTransferMode||`disabled`,metadata:e.metadata||{}})).resource}async upsertResourceSecret(e,t){await this.put(`/resources/${e}/secret`,{actor_user_id:this.actorUserId,payload:{username:t.username||``,password:t.password||``,domain:t.domain||``},metadata:{source:`web-admin`}})}async get(e){let t=e.includes(`?`)?`&`:`?`;return this.request(`${e}${t}actor_user_id=${encodeURIComponent(this.actorUserId)}`,{method:`GET`})}async post(e,t){return this.request(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})}async put(e,t){return this.request(e,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})}async delete(e,t){return this.request(e,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})}async request(e,t){let n=await fetch(`${this.baseUrl}${e}`,t);if(!n.ok){let e=`Запрос завершился ошибкой HTTP ${n.status}`;try{let t=await n.json();e=t.error?.fallback_message||t.error?.code||e}catch{}throw Error(e)}return await n.json()}};function b(){let e=`rap.webAdmin.deviceFingerprint`,t=localStorage.getItem(e);if(t)return t;let n=`web-admin-${x()}`;return localStorage.setItem(e,n),n}function x(){if(typeof globalThis.crypto?.randomUUID==`function`)return globalThis.crypto.randomUUID();if(typeof globalThis.crypto?.getRandomValues==`function`){let e=new Uint8Array(16);globalThis.crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}var S=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),C=o(((e,t)=>{t.exports=S()}))(),w={baseUrl:`rap.webAdmin.baseUrl`,actorUserId:`rap.webAdmin.actorUserId`,auth:`rap.webAdmin.auth`,language:`rap.webAdmin.language`,vpnDiagnosticDeviceId:`rap.webAdmin.vpnDiagnosticDeviceId`},ee=`/api/v1`,te=`http://192.168.200.61:8080/api/v1`,ne=[`entry-node`,`relay-node`,`core-mesh`,`rdp-worker`,`vnc-worker`,`vpn-exit`,`vpn-connector`,`file-storage-cache`,`update-cache`,`video-relay`],T={"entry-node":`Entry node`,"relay-node":`Relay node`,"core-mesh":`Mesh core`,"rdp-worker":`RDP worker`,"vnc-worker":`VNC worker`,"vpn-exit":`VPN exit`,"vpn-connector":`VPN connector`,"file-storage-cache":`File/cache storage`,"update-cache":`Update cache`,"video-relay":`Video relay`},re={"entry-node":[`can_accept_client_ingress`],"relay-node":[`mesh_rendezvous_relay_control_contract`,`mesh_peer_connection_manager`],"core-mesh":[`native_node_agent`,`mesh_peer_connection_manager`,`mesh_listener_diagnostics`],"rdp-worker":[`can_run_rdp_worker`],"vnc-worker":[`can_run_vnc_worker`],"vpn-exit":[`can_run_vpn_exit`],"vpn-connector":[`can_run_vpn_connector`],"file-storage-cache":[`can_run_file_cache`],"update-cache":[`can_run_update_cache`],"video-relay":[`can_run_video_relay`]},ie=[{id:`command`,ru:`Обзор`,en:`Command`},{id:`clusters`,ru:`Кластеры`,en:`Clusters`},{id:`cluster-settings`,ru:`Настройки кластера`,en:`Cluster Settings`},{id:`nodes`,ru:`Узлы`,en:`Nodes`},{id:`enrollment`,ru:`Новый узел`,en:`New Node`},{id:`roles`,ru:`Роли`,en:`Roles`},{id:`workloads`,ru:`Сервисы`,en:`Workloads`},{id:`fabric`,ru:`Связи Fabric`,en:`Fabric Links`},{id:`vpn`,ru:`VPN Control`,en:`VPN Control`},{id:`servers`,ru:`Серверы`,en:`Servers`},{id:`org-safe`,ru:`Организации`,en:`Organizations`},{id:`audit`,ru:`Аудит`,en:`Audit`}];function E(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.userId!=`string`||typeof t.email!=`string`||typeof t.authSessionId!=`string`||typeof t.accessToken!=`string`||typeof t.refreshToken!=`string`||typeof t.accessTokenExpiresAt!=`string`||typeof t.refreshTokenExpiresAt!=`string`||!t.userId||!t.refreshToken?null:{userId:t.userId,email:t.email,authSessionId:t.authSessionId,accessToken:t.accessToken,refreshToken:t.refreshToken,accessTokenExpiresAt:t.accessTokenExpiresAt,refreshTokenExpiresAt:t.refreshTokenExpiresAt}}function ae(e){let t=Date.parse(e);return!Number.isFinite(t)||t<=Date.now()}function oe(){try{let e=localStorage.getItem(w.auth);if(!e)return null;let t=E(JSON.parse(e));return!t||ae(t.refreshTokenExpiresAt)?null:t}catch{return null}}var se={ttlHours:24,maxUses:1,roles:[`core-mesh`],nodeName:``,nodeGroupId:``,ownershipType:`platform_managed`,purpose:``,installMode:`docker`,dockerImage:`rap-node-agent:dev-enrollment-bootstrap-smoke`,dockerContainerName:``,dockerNetwork:`host`,windowsStartupMode:`auto`,windowsInstallDir:``,windowsNodeAgentSHA256:``,linuxInstallDir:``,linuxNodeAgentSHA256:``,meshListenAddr:`:19131`,meshListenPortMode:`auto`,meshListenAutoPortStart:19131,meshListenAutoPortEnd:19231,meshAdvertiseEndpoint:``,meshAdvertiseTransport:`direct_http`,meshConnectivityMode:`private_lan`,meshNATType:`none`,meshRegion:`docker-test`,controlPlaneEndpoint:``,artifactEndpoints:``,dockerImageArtifactSHA256:``,pullImage:!1,replace:!0,syntheticRuntime:!0},ce={ru:{productOwner:`Владелец продукта`,controlPlane:`Панель управления`,sideText:`Главная панель владельца платформы для кластеров, узлов, доверия, ролей и безопасного desired state.`,signInTitle:`Вход`,signInText:`Введите учетные данные.`,bootstrapTitle:`Первый владелец`,bootstrapText:`Пустая установка принимает только подписанную активацию продукта.`,activationPayload:`Activation manifest JSON`,activationSignature:`Подпись manifest`,createOwner:`Создать владельца`,creatingOwner:`Создание...`,ownerCreated:`Владелец создан. Теперь можно войти.`,installationLocked:`Установка уже активирована`,insecureBootstrapDisabled:`Insecure bootstrap выключен. Нужна strict-активация с ключом продукта.`,email:`Логин`,password:`Пароль`,backendApi:`Backend API`,useLocalProxy:`Использовать локальный /api/v1 proxy`,language:`Язык`,deviceLabel:`Устройство`,rememberMe:`Запомнить меня`,trustDevice:`Доверять этому устройству`,signIn:`Войти`,signingIn:`Вход...`,logout:`Выйти`,profile:`Профиль`,refresh:`Обновить`,refreshing:`Обновление...`,autoRefresh:`Автообновление`,lastRefresh:`Данные обновлены`,activeCluster:`Активный кластер`,slugLabel:`Технический код`,slugHelp:`Slug — постоянный короткий технический идентификатор кластера для URL, скриптов, логов и интеграций. Его лучше не менять после создания.`,clusterCatalog:`Каталог кластеров`,clusterCatalogText:`Список реальных кластеров из Control Plane. Выберите активный кластер или раскройте карточку для подробностей.`,makeActive:`Сделать активным`,openSettings:`Открыть настройки`,selected:`Выбран`,createCluster:`Создать кластер`,clusterDetails:`Подробнее`,consoleTitle:`Панель владельца платформы`,boundary:`WEB является только представлением. Решения кластера проходят через Control Plane API, PostgreSQL как source of truth и аудит.`,noLoginError:`Войдите как владелец продукта или администратор платформы, чтобы загрузить панель.`,accessDenied:`Доступ к этой панели запрещен.`,sessionMode:`Режим сессии`,sessionModeAdmin:`Админ`,sessionModeUser:`Пользователь`,sessionRefreshedAt:`Сессия обновлена`,emptyLiveTitle:`Кластер пока пустой`,emptyLiveText:`Это реальные данные, не заглушка: в выбранном кластере ещё нет одобренных node-agent узлов. Создайте join token, запустите rap-node-agent и подтвердите join request.`,realDataNote:`Показываются только данные из PostgreSQL/Control Plane. Если значения нулевые, значит соответствующих узлов, ролей или сервисов пока нет.`,signedInAs:`Вход выполнен`,actorUser:`Actor user`,testMode:`Тестирование`,testModeText:`Включает тестовую телеметрию и синтетические наблюдения связей. Это не production mesh runtime.`,platformTestFlag:`Тестирование сервера`,nodeTelemetry:`Телеметрия узла`,heartbeatHistory:`История heartbeat`,noTelemetry:`Телеметрии пока нет`,enableTelemetry:`Включить телеметрию`,enableSyntheticLinks:`Включить тестовые связи`,saveTestFlag:`Сохранить флаг`,nodeManagement:`Управление узлом`,nodeScope:`Область просмотра`,currentClusterNodes:`Узлы активного кластера`,allNodes:`Все узлы платформы`,showAllPlatformNodes:`Показать все узлы платформы`,currentClusterMembership:`Участие в активном кластере`,clusterMemberships:`Участие по кластерам`,notMemberOfActiveCluster:`не состоит`,nodeIdentity:`Физическая идентичность узла`,activeClusterScope:`Область активного кластера`,activeClusterScopeText:`Один физический узел может состоять в нескольких кластерах. Роли и desired-сервисы ниже относятся только к выбранному активному кластеру.`,capabilityConfirmed:`способность подтверждена heartbeat`,capabilityMissing:`способность не заявлена узлом`,capabilityUnknown:`способность не подтверждена: нет heartbeat`,nodeGlobalInventoryText:`Один физический узел показан один раз. Участие и роли остаются кластерными: в разных кластерах этот же узел может иметь разные назначения.`,nodeSearch:`Поиск узлов`,groupNodesBy:`Группировать`,groupByMembership:`по участию`,groupByHealth:`по здоровью`,groupByOwnership:`по владению`,groupByClusterCount:`по числу кластеров`,nodeGroups:`Группы узлов`,nodeGroupTree:`Дерево групп`,nodeGroupFilter:`Фильтр по группе`,allNodeGroups:`Все группы`,nodeGroupCreatePanel:`Создание группы`,nodeGroupName:`Название группы`,parentNodeGroup:`Родительская группа`,rootNodeGroup:`Корень`,ungroupedNodes:`Без группы`,createNodeGroup:`Создать группу`,createSubgroup:`Создать подгруппу`,collapseGroup:`Свернуть`,expandGroup:`Развернуть`,assignNodeGroup:`Переместить в группу`,removeFromNodeGroup:`Убрать из группы`,connectExistingNode:`Подключить к активному кластеру`,connectExistingNodeTitle:`Подключить существующий узел`,connectExistingNodeText:`Будет создано или повторно включено участие конкретного физического узла в активном кластере. Роли ниже назначаются только в этом кластере.`,connectWithRoles:`Подключить с ролями`,nodeDetails:`Сведения`,manageNode:`Настроить`,nodeFunctions:`Функции узла`,nodeFunctionsText:`Одна строка управляет функцией целиком: роль задает разрешение в активном кластере, desired-сервис задает запуск, observed показывает факт от node-agent.`,rolePermission:`Разрешение`,permissionGranted:`разрешено`,permissionDenied:`нет разрешения`,organizationScopeForEnable:`Область организации для новых включений, опционально`,clusterWideRolePlaceholder:`пусто = роль на весь кластер`,desiredRuntime:`Желаемое состояние`,observedRuntime:`Фактически`,enableFunction:`Включить функцию`,disableFunction:`Выключить функцию`,close:`Закрыть`,nodeBriefList:`Краткий список узлов`,noActiveClusterMembership:`Узел не входит в активный кластер`,nodeBriefListHelp:`Список сгруппирован деревом активного кластера. Полные сведения, управление, роли, сервисы и статистика открываются из строки узла.`,nodeSearchPlaceholder:`имя, ключ, кластер, статус`,nodeGroupInventoryText:`Группы — это кластерная инвентарная структура. Перенос узла в группу меняет только его размещение внутри активного кластера, не роли и не членство.`,nodeGroupCreated:`Группа узлов создана.`,noNodesTitle:`Нет узлов`,noNodesByFilter:`По текущему фильтру узлы не найдены.`,cancel:`Отмена`,alreadyMember:`Уже в активном кластере`,revokedMembership:`Участие отозвано`,addNode:`Подключить узел`,addNodeText:`Подключение существующего физического узла к активному кластеру выполняется из списка узлов: включите общий режим и нажмите «Подключить к активному кластеру».`,joinTokenTitle:`Создать новый Docker-узел`,joinTokenText:`Сначала создается одноразовый install token и Docker install profile. Затем команда запускается на Docker-хосте, агент отправляет заявку, а владелец платформы подтверждает ее.`,ttlHours:`Срок действия, часов`,ttlHelp:`Через это время token станет недействительным, даже если им никто не воспользовался. Для ручного подключения обычно достаточно 1–24 часов.`,maxUses:`Максимум использований`,maxUsesHelp:`Сколько node-agent смогут использовать этот token. Самый безопасный вариант — 1 token на 1 новый узел.`,tokenPurpose:`Назначение token`,nodeOwnership:`Тип владения узлом`,suggestedRoles:`Разрешенные/ожидаемые роли`,generatedScope:`Сгенерированная область действия`,generatedScopeHelp:`JSON формируется автоматически из настроек выше. Оператор не должен писать его руками, чтобы не ошибиться синтаксисом или областью доступа.`,manualApprovalRequired:`Подтверждение заявки вручную обязательно`,nodeRoles:`Роли узла`,desiredServices:`Желаемые сервисы`,observedServices:`Наблюдаемые сервисы`,noRoles:`Ролей пока нет`,noServices:`Сервисов пока нет`,manageInCluster:`Управлять в кластере`,rolesAndServices:`Роли и сервисы`,links:`Связи`,fabricMap:`Карта трафика Fabric`,fabricIngressLayer:`Входы`,fabricNodeLayer:`Узлы кластера`,fabricEgressLayer:`Выходные зоны`,observedPeerLinks:`Наблюдаемые связи`,placementIntent:`control-plane назначение`,fabricEntryPoints:`Точки входа`,fabricEntryPointHelp:`Логические внешние входы в кластер. Они скрывают конкретные узлы от организаций и клиентов.`,fabricEgressPools:`Выходные зоны`,fabricEgressPoolHelp:`Логические выходы к внешним сетям, например “Офис Москва”. Организации используют зону, а не конкретный узел.`,endpointName:`Название`,publicEndpoint:`Публичный адрес`,endpointType:`Тип входа`,description:`Описание`,routeScope:`Область маршрутов JSON`,createEntryPoint:`Создать точку входа`,createEgressPool:`Создать выходную зону`,endpointNodes:`Назначенные узлы`,assignEndpointNode:`Назначить узел`,selectNode:`Выберите узел`,assignedNodesEmpty:`Узлы пока не назначены`,entryPointsEmpty:`Точки входа пока не созданы.`,egressPoolsEmpty:`Выходные зоны пока не созданы.`,addressNotSet:`адрес не задан`,descriptionNotSet:`описание не задано`,servicePlacement:`Размещение сервисов`,trafficFlow:`Потоки между узлами`,organizationTestFlag:`Тестирование организации`,organizationId:`ID организации`,saveOrganizationFlag:`Сохранить флаг организации`,noLinks:`Связей пока нет`,recentHeartbeats:`Последние heartbeat`,memory:`Память`,cpu:`Процессор`,processes:`Процессы`},en:{productOwner:`Product Owner`,controlPlane:`Control Plane`,sideText:`Full platform-owner panel for clusters, nodes, trust, placement, and safe service desired state.`,signInTitle:`Sign in`,signInText:`Enter your credentials.`,bootstrapTitle:`First owner`,bootstrapText:`An empty installation accepts only a signed product activation.`,activationPayload:`Activation manifest JSON`,activationSignature:`Manifest signature`,createOwner:`Create owner`,creatingOwner:`Creating...`,ownerCreated:`Owner created. You can sign in now.`,installationLocked:`Installation is already active`,insecureBootstrapDisabled:`Insecure bootstrap is disabled. Strict product-key activation is required.`,email:`Login`,password:`Password`,backendApi:`Backend API`,useLocalProxy:`Use local /api/v1 proxy`,language:`Language`,deviceLabel:`Device`,rememberMe:`Remember me`,trustDevice:`Trust this device`,signIn:`Sign in`,signingIn:`Signing in...`,logout:`Logout`,profile:`Profile`,refresh:`Refresh`,refreshing:`Refreshing...`,autoRefresh:`Auto refresh`,lastRefresh:`Data refreshed`,activeCluster:`Active cluster`,slugLabel:`Technical code`,slugHelp:`Slug is a stable short technical identifier for URLs, scripts, logs, and integrations. It should generally not change after creation.`,clusterCatalog:`Cluster catalog`,clusterCatalogText:`Real clusters from the Control Plane. Select the active cluster or expand a card for details.`,makeActive:`Make active`,openSettings:`Open settings`,selected:`Selected`,createCluster:`Create cluster`,clusterDetails:`Details`,consoleTitle:`Platform Owner Console`,boundary:`WEB is presentation only. Cluster decisions go through Control Plane APIs, PostgreSQL source of truth, and audit.`,noLoginError:`Sign in as a product owner or platform administrator to load the panel.`,accessDenied:`Access to this panel is denied.`,sessionMode:`Session mode`,sessionModeAdmin:`Admin`,sessionModeUser:`User`,sessionRefreshedAt:`Session refreshed`,emptyLiveTitle:`Cluster has no live nodes yet`,emptyLiveText:`These are real values, not placeholders: the selected cluster has no approved node-agent nodes yet. Create a join token, run rap-node-agent, and approve the join request.`,realDataNote:`Only PostgreSQL/Control Plane data is shown. Zero values mean the corresponding nodes, roles, or services do not exist yet.`,signedInAs:`Signed in`,actorUser:`Actor user`,testMode:`Testing`,testModeText:`Enables test telemetry and synthetic link observations. This is not production mesh runtime.`,platformTestFlag:`Server testing`,nodeTelemetry:`Node telemetry`,heartbeatHistory:`Heartbeat history`,noTelemetry:`No telemetry yet`,enableTelemetry:`Enable telemetry`,enableSyntheticLinks:`Enable test links`,saveTestFlag:`Save flag`,nodeManagement:`Node management`,nodeScope:`View scope`,currentClusterNodes:`Active cluster nodes`,allNodes:`All platform nodes`,showAllPlatformNodes:`Show all platform nodes`,currentClusterMembership:`Active cluster membership`,clusterMemberships:`Cluster memberships`,notMemberOfActiveCluster:`not a member`,nodeIdentity:`Physical node identity`,activeClusterScope:`Active cluster scope`,activeClusterScopeText:`One physical node may belong to multiple clusters. Roles and desired services below belong only to the selected active cluster.`,capabilityConfirmed:`capability confirmed by heartbeat`,capabilityMissing:`capability not reported by node`,capabilityUnknown:`capability unconfirmed: no heartbeat`,nodeGlobalInventoryText:`Each physical node is shown once. Membership and roles remain cluster-scoped, so the same node may have different assignments in different clusters.`,nodeSearch:`Node search`,groupNodesBy:`Group by`,groupByMembership:`membership`,groupByHealth:`health`,groupByOwnership:`ownership`,groupByClusterCount:`cluster count`,nodeGroups:`Node groups`,nodeGroupTree:`Group tree`,nodeGroupFilter:`Group filter`,allNodeGroups:`All groups`,nodeGroupCreatePanel:`Create group`,nodeGroupName:`Group name`,parentNodeGroup:`Parent group`,rootNodeGroup:`Root`,ungroupedNodes:`Ungrouped`,createNodeGroup:`Create group`,createSubgroup:`Create subgroup`,collapseGroup:`Collapse`,expandGroup:`Expand`,assignNodeGroup:`Move to group`,removeFromNodeGroup:`Remove from group`,connectExistingNode:`Connect to active cluster`,connectExistingNodeTitle:`Connect existing node`,connectExistingNodeText:`This creates or re-enables membership for one concrete physical node in the active cluster. Roles below are assigned only in this cluster.`,connectWithRoles:`Connect with roles`,nodeDetails:`Details`,manageNode:`Configure`,nodeFunctions:`Node functions`,nodeFunctionsText:`One row controls the whole function: role grants permission in the active cluster, desired service requests runtime start, observed state reports node-agent facts.`,rolePermission:`Permission`,permissionGranted:`granted`,permissionDenied:`not allowed`,organizationScopeForEnable:`Organization scope for new enables, optional`,clusterWideRolePlaceholder:`empty = cluster-wide role`,desiredRuntime:`Desired state`,observedRuntime:`Observed`,enableFunction:`Enable function`,disableFunction:`Disable function`,close:`Close`,nodeBriefList:`Compact node list`,noActiveClusterMembership:`Node is not a member of the active cluster`,nodeBriefListHelp:`The list is grouped as the active cluster tree. Full details, management, roles, services, and statistics open from the node row.`,nodeSearchPlaceholder:`name, key, cluster, status`,nodeGroupInventoryText:`Groups are a cluster inventory structure. Moving a node to a group changes only its placement inside the active cluster, not roles or membership.`,nodeGroupCreated:`Node group created.`,noNodesTitle:`No nodes`,noNodesByFilter:`No nodes match the current filter.`,cancel:`Cancel`,alreadyMember:`Already in active cluster`,revokedMembership:`Membership revoked`,addNode:`Add node`,addNodeText:`Connect an existing physical node to the active cluster from the node list: enable platform-wide view and click “Connect to active cluster”.`,joinTokenTitle:`Create new Docker node`,joinTokenText:`First create a one-time install token and Docker install profile. Then run the generated command on the Docker host; the agent submits a request and the platform owner approves it.`,ttlHours:`Lifetime, hours`,ttlHelp:`After this time the token becomes invalid even if unused. For manual enrollment, 124 hours is usually enough.`,maxUses:`Maximum uses`,maxUsesHelp:`How many node-agents may use this token. The safest default is one token for one new node.`,tokenPurpose:`Token purpose`,nodeOwnership:`Node ownership type`,suggestedRoles:`Allowed/expected roles`,generatedScope:`Generated scope`,generatedScopeHelp:`JSON is generated automatically from the settings above. Operators should not hand-write it and risk syntax or access-scope mistakes.`,manualApprovalRequired:`Manual request approval is required`,nodeRoles:`Node roles`,desiredServices:`Desired services`,observedServices:`Observed services`,noRoles:`No roles yet`,noServices:`No services yet`,manageInCluster:`Manage in cluster`,rolesAndServices:`Roles and services`,links:`Links`,fabricMap:`Fabric traffic map`,fabricIngressLayer:`Ingress`,fabricNodeLayer:`Cluster nodes`,fabricEgressLayer:`Egress pools`,observedPeerLinks:`Observed links`,placementIntent:`control-plane placement`,fabricEntryPoints:`Entry points`,fabricEntryPointHelp:`Logical external ingress points for the cluster. They hide concrete nodes from organizations and clients.`,fabricEgressPools:`Egress pools`,fabricEgressPoolHelp:`Logical exits to external networks, for example “Office Moscow”. Organizations use the pool, not a concrete node.`,endpointName:`Name`,publicEndpoint:`Public endpoint`,endpointType:`Entry type`,description:`Description`,routeScope:`Route scope JSON`,createEntryPoint:`Create entry point`,createEgressPool:`Create egress pool`,endpointNodes:`Assigned nodes`,assignEndpointNode:`Assign node`,selectNode:`Select node`,assignedNodesEmpty:`No nodes assigned yet`,entryPointsEmpty:`No entry points created yet.`,egressPoolsEmpty:`No egress pools created yet.`,addressNotSet:`address not set`,descriptionNotSet:`description not set`,servicePlacement:`Service placement`,trafficFlow:`Node traffic flows`,organizationTestFlag:`Organization testing`,organizationId:`Organization ID`,saveOrganizationFlag:`Save organization flag`,noLinks:`No links yet`,recentHeartbeats:`Recent heartbeats`,memory:`Memory`,cpu:`CPU`,processes:`Processes`}};function D(e){return{userId:e.user.id||e.user.ID||``,email:e.user.email||e.user.Email||``,authSessionId:e.auth_session.id||e.auth_session.ID||``,accessToken:e.tokens.access_token,refreshToken:e.tokens.refresh_token,accessTokenExpiresAt:e.tokens.access_token_expires_at,refreshTokenExpiresAt:e.tokens.refresh_token_expires_at}}async function O(e){try{return await e.listClusterSummaries(),`admin`}catch{try{return await Promise.all([e.listOrganizations(),e.listResources()]),`user`}catch{return null}}}function le(){let[e,t]=(0,_.useState)(!1),[n,r]=(0,_.useState)(()=>!!oe()),[i]=(0,_.useState)(()=>{let e=localStorage.getItem(w.baseUrl)?.trim();return!e||e.startsWith(te)?ee:e}),[a,o]=(0,_.useState)(()=>oe()),[s,c]=(0,_.useState)(null),[l,u]=(0,_.useState)(``),[d,f]=(0,_.useState)(()=>localStorage.getItem(w.language)===`en`?`en`:`ru`),[p,m]=(0,_.useState)(a?.userId??localStorage.getItem(w.actorUserId)??``),[h,g]=(0,_.useState)({email:``,password:``,deviceLabel:`Панель владельца платформы`,trustDevice:!0,rememberMe:!0,showPassword:!1}),[v,b]=(0,_.useState)(null),[x,S]=(0,_.useState)({email:``,password:``,activationPayload:``,activationSignature:``}),[T,re]=(0,_.useState)(`command`),[E,le]=(0,_.useState)(``),[he,_e]=(0,_.useState)([]),[xe,Se]=(0,_.useState)([]),[Ce,we]=(0,_.useState)(null),[j,Te]=(0,_.useState)([]),[Ee,De]=(0,_.useState)([]),[Oe,ke]=(0,_.useState)({}),[Fe,ze]=(0,_.useState)([]),[Be,Ve]=(0,_.useState)([]),[Ue,Ge]=(0,_.useState)([]),[Je,Ze]=(0,_.useState)({}),[Qe,$e]=(0,_.useState)({}),[tt,nt]=(0,_.useState)({}),[it,at]=(0,_.useState)({}),[ot,yt]=(0,_.useState)({}),[St,Ct]=(0,_.useState)({}),[Nt,Pt]=(0,_.useState)({}),[Ft,It]=(0,_.useState)([]),[Lt,Rt]=(0,_.useState)({}),[zt,Bt]=(0,_.useState)([]),[Vt,Ht]=(0,_.useState)([]),[Ut,Wt]=(0,_.useState)({}),[Gt,Kt]=(0,_.useState)([]),[qt,Jt]=(0,_.useState)({}),[N,Yt]=(0,_.useState)([]),[Xt,en]=(0,_.useState)([]),[tn,nn]=(0,_.useState)({}),[sn,cn]=(0,_.useState)({}),[ln,un]=(0,_.useState)(()=>localStorage.getItem(w.vpnDiagnosticDeviceId)||``),[dn,fn]=(0,_.useState)([]),[pn,mn]=(0,_.useState)(null),[gn,_n]=(0,_.useState)(`http://2ip.ru/`),[xn,Sn]=(0,_.useState)(null),[Cn,wn]=(0,_.useState)([]),[Tn,En]=(0,_.useState)([]),[Dn,On]=(0,_.useState)([]),[kn,An]=(0,_.useState)({}),[jn,Mn]=(0,_.useState)([]),[Nn,Pn]=(0,_.useState)(``),[Fn,In]=(0,_.useState)(`poll`),[Ln,Rn]=(0,_.useState)(``),[zn,Bn]=(0,_.useState)(null),[Vn,Hn]=(0,_.useState)(!1),[Un,Wn]=(0,_.useState)(``),[Gn,Kn]=(0,_.useState)(``),[qn,Jn]=(0,_.useState)({slug:``,name:``,region:``}),[Yn,Xn]=(0,_.useState)({name:``,status:`active`,region:``,metadataJson:`{}`}),[Zn,Qn]=(0,_.useState)({name:``,parentGroupId:``}),[$n,er]=(0,_.useState)({name:``,endpointType:`client_access`,publicEndpoint:``}),[tr,nr]=(0,_.useState)({name:``,description:``,routeScope:`{
"routes": []
}`}),[L,R]=(0,_.useState)(se),[rr,ir]=(0,_.useState)(null),[ar,or]=(0,_.useState)({authorityState:`authoritative`,mutationMode:`normal`,notes:``}),[sr,cr]=(0,_.useState)(``),[lr,ur]=(0,_.useState)(`cluster`),[dr,fr]=(0,_.useState)(``),[pr,mr]=(0,_.useState)(``),[hr,gr]=(0,_.useState)([]),[_r,vr]=(0,_.useState)(`membership`),[yr,br]=(0,_.useState)(null),[xr,Sr]=(0,_.useState)([]),[Cr,wr]=(0,_.useState)(null),[Tr,Er]=(0,_.useState)(`details`),[Dr,Or]=(0,_.useState)({}),[kr,Ar]=(0,_.useState)({}),[jr,Mr]=(0,_.useState)({}),[Nr,Pr]=(0,_.useState)({}),[Fr,Ir]=(0,_.useState)({}),[Lr,Rr]=(0,_.useState)({}),[zr,Br]=(0,_.useState)(``),[Vr,Hr]=(0,_.useState)({telemetry:!0,links:!0}),[Ur,Wr]=(0,_.useState)({nodeId:``,serviceType:`entry-node`,desiredState:`enabled`,runtimeMode:`container`,version:``,configJson:`{}`,environmentJson:`{}`}),[z,Gr]=(0,_.useState)({organizationId:``,name:``,protocolFamily:`generic`,desiredState:`disabled`,credentialRef:``,targetEndpointJson:`{}`,allowedNodePolicyJson:`{"mode":"explicit","node_ids":[]}`,routingUsageJson:`[]`,routePolicyJson:`{}`,qosPolicyJson:`{}`,placementPolicyJson:`{}`}),[Kr,qr]=(0,_.useState)({slug:``,name:``}),[Jr,Yr]=(0,_.useState)({email:``,password:``,platformRole:`user`}),[Xr,Zr]=(0,_.useState)({organizationId:``,userId:``,roleId:`org_member`}),[Qr,$r]=(0,_.useState)(null),[ei,ti]=(0,_.useState)({username:``,password:``,domain:``}),[B,ni]=(0,_.useState)({organizationId:``,name:``,address:``,protocol:`rdp`,routeMode:`vpn_exit`,entryNode:``,exitNode:``,tags:``,username:``,password:``,domain:``}),[ri,ii]=(0,_.useState)(``),[ai,oi]=(0,_.useState)(``),[si,ci]=(0,_.useState)(``),li=`rap-android-rdp-vpn-latest-release.apk`,[ui,di]=(0,_.useState)(li),V=(0,_.useMemo)(()=>new y({baseUrl:i,actorUserId:p}),[i,p]),fi=(0,_.useMemo)(()=>new y({baseUrl:i,actorUserId:``}),[i]),pi=(0,_.useRef)(0),mi=(0,_.useRef)(!1),H=ce[d],U=he.find(e=>e.id===E)||null,hi=xe.find(e=>e.cluster_id===E)||null,gi=(0,_.useMemo)(()=>yn(i),[i]),_i=(0,_.useCallback)((e,t)=>{if(!e)return t;let n=e.trim();return n?/^https?:\/\//i.test(n)||n.startsWith(`/`)?n.startsWith(`/`)?n.substring(1):n:n.startsWith(`downloads/`)?n:`downloads/${n.replace(/^\.\/+/,``).replace(/^\/+/,``)}`:t},[]),vi=_i(ui,li),yi=si?_i(si,vi):vi,bi=si?yi:vi,xi=`${/^https?:\/\//i.test(bi)?bi:`${gi}/${bi}`}${ai?`?_v=${encodeURIComponent(ai)}`:``}`,Si=(0,_.useMemo)(()=>gt(L),[L]),Ci=(0,_.useMemo)(()=>rr?_t(rr.scope,L):L,[rr,L]),wi=(0,_.useMemo)(()=>{let e=new Map;for(let t of he)for(let n of Oe[t.id]||[]){let r=e.get(n.id);r?(r.memberships.push({cluster:t,node:n}),(n.last_seen_at||``)>(r.node.last_seen_at||``)&&(r.node=n)):e.set(n.id,{node:n,memberships:[{cluster:t,node:n}]})}return Array.from(e.values()).sort((e,t)=>e.node.name.localeCompare(t.node.name))},[Oe,he]);(0,_.useMemo)(()=>Qt(wi,E,dr,_r,d),[wi,_r,dr,d,E]);let Ti=(0,_.useMemo)(()=>{let e=dr.trim().toLowerCase(),t=pr?new Set([pr,...pt(pr,Ee)]):null;return wi.filter(n=>{let r=n.memberships.some(e=>e.cluster.id===E);if(lr!==`all`&&!r)return!1;if(t){let e=n.memberships.find(e=>e.cluster.id===E);if(!e?.node.node_group_id||!t.has(e.node.node_group_id))return!1}return!e||$t(n,e)})},[wi,dr,pr,Ee,lr,E]),Ei=(0,_.useCallback)((e,t=!1)=>{if(e&&t){localStorage.setItem(w.auth,JSON.stringify(e)),localStorage.setItem(w.actorUserId,e.userId),r(!0);return}r(!1),localStorage.removeItem(w.auth),localStorage.removeItem(w.actorUserId)},[]),Di=(0,_.useCallback)(async()=>{try{let e=`${gi}/downloads/rap-android-rdp-vpn-build.json?_cb=${Date.now()}`,t=await fetch(e,{cache:`no-store`});if(!t.ok){ii(``),oi(new Date().toISOString()),ci(``),di(li);return}let n=await t.json();ii(n.version?.name||``),oi(n.published?.timestamp_utc||``),ci(n.release_paths?.versioned||``),di(n.published?.path||n.release_paths?.latest||li)}catch{ii(``),oi(new Date().toISOString()),ci(``),di(li)}},[gi]),Oi=(0,_.useMemo)(()=>mt(Ti,Ee,E,H,new Set(hr)),[hr,Ee,E,H,Ti]);(0,_.useEffect)(()=>{if(e)return;t(!0);let n=oe();if(n){if(ae(n.refreshTokenExpiresAt)){localStorage.removeItem(w.auth),localStorage.removeItem(w.actorUserId),r(!1);return}(async()=>{try{let e=D(await fi.refresh({refreshToken:n.refreshToken}));if(!e.userId||!e.authSessionId)throw Error(`Не удалось восстановить сессию.`);let t=await O(new y({baseUrl:i,actorUserId:e.userId}));if(!t)throw Error(`Доступ к этой панели запрещен.`);m(e.userId),Ei(e,!0),o(e),u(new Date().toISOString()),g(t=>({...t,email:e.email})),c(t)}catch{localStorage.removeItem(w.auth),localStorage.removeItem(w.actorUserId),r(!1),u(``),o(null),m(``),c(null)}})()}},[fi,e,i,Ei]),(0,_.useEffect)(()=>{let e=!1;return fi.getInstallationStatus().then(t=>{e||b(t)}).catch(t=>{e||Wn(t instanceof Error?t.message:`Не удалось загрузить статус установки.`)}),()=>{e=!0}},[fi]),(0,_.useEffect)(()=>{if(!U){Xn({name:``,status:`active`,region:``,metadataJson:`{}`});return}Xn({name:U.name,status:U.status||`active`,region:U.region||``,metadataJson:JSON.stringify(U.metadata||{},null,2)})},[U]),(0,_.useEffect)(()=>{mr(``),Qn({name:``,parentGroupId:``}),gr([])},[E]),(0,_.useEffect)(()=>{br(null),Sr([])},[E]),(0,_.useEffect)(()=>{localStorage.setItem(w.baseUrl,i),localStorage.setItem(w.language,d),a&&localStorage.setItem(`${w.language}.${a.userId}`,d),(!a||!n)&&(localStorage.removeItem(w.auth),localStorage.removeItem(w.actorUserId))},[i,d,n,a]),(0,_.useEffect)(()=>{if(!a)return;let e=localStorage.getItem(`${w.language}.${a.userId}`);(e===`ru`||e===`en`)&&f(e)},[a?.userId]),(0,_.useEffect)(()=>{a&&W()},[a?.userId]),(0,_.useEffect)(()=>{if(!a||s!==`admin`||!E)return;let e=!1,t=()=>{e||Vn||mi.current||document.visibilityState===`hidden`||(mi.current=!0,ki(E).catch(t=>{e||Wn(t instanceof Error?t.message:`Не удалось автообновить данные панели.`)}).finally(()=>{mi.current=!1}))},n=null;typeof window.EventSource==`function`&&(n=new EventSource(V.clusterEventsURL(E)),n.onopen=()=>{e||In(`sse`)},n.onerror=()=>{e||In(`poll`)},n.addEventListener(`cluster.changed`,t));let r=window.setInterval(t,n?3e4:1e4);return()=>{e=!0,n?.close(),window.clearInterval(r)}},[V,s,Vn,E,a?.userId]);async function W(e=E){if(!p.trim()){Wn(H.noLoginError);return}if(s===`user`){await G();return}Hn(!0),Wn(``),Kn(``);try{let[t,n,r,i,a]=await Promise.all([V.listClusters(),V.listClusterSummaries(),V.listOrganizations(),V.listUsers(),V.listResources()]);_e(t),Se(n),wn(r),En(i),On(a),!Ln&&r[0]?.id&&Rn(r[0].id),Zr(e=>({...e,organizationId:e.organizationId||r[0]?.id||``})),ni(e=>({...e,organizationId:e.organizationId||r[0]?.id||``}));let o=await Promise.all(r.map(async e=>[e.id,await V.listOrganizationMemberships(e.id)]));An(Object.fromEntries(o));let s=await Promise.all(t.map(async e=>[e.id,await V.listNodes(e.id)]));ke(Object.fromEntries(s));let c=e||t[0]?.id||``;le(c),c&&await Ai(c),Pn(new Date().toISOString())}catch(e){Wn(e instanceof Error?e.message:`Неизвестная ошибка панели управления платформой.`)}finally{Hn(!1)}}async function G(){if(!p.trim()){Wn(`Войдите, чтобы загрузить личный кабинет.`);return}Hn(!0),Wn(``),Kn(``);try{await Di();let[e,t]=await Promise.all([V.listOrganizations(),V.listResources()]);wn(e),On(t),!Ln&&e[0]?.id&&Rn(e[0].id);let n=await Promise.all(e.map(async e=>[e.id,await V.listOrganizationMemberships(e.id)]));An(Object.fromEntries(n)),Pn(new Date().toISOString())}catch(e){Wn(e instanceof Error?e.message:`Не удалось загрузить личный кабинет.`)}finally{Hn(!1)}}async function ki(e){if(!p.trim())return;let[t,n,r,i,a]=await Promise.all([V.listClusterSummaries(),V.listNodes(e),V.listOrganizations(),V.listUsers(),V.listResources()]);Se(t),wn(r),En(i),On(a),ke(t=>({...t,[e]:n})),await Ai(e,{preserveEditableForms:!0}),Pn(new Date().toISOString())}async function Ai(e,t={}){let n=++pi.current,[r,i,a,o,s,c,l,u,d,f,p,m,h]=await Promise.all([V.listNodes(e),V.listNodeGroups(e),V.listJoinRequests(e),V.listJoinTokens(e),V.listReleaseVersions(e,`rap-node-agent`,`dev`),V.getClusterAuthority(e),V.listAudit(e),V.listMeshLinks(e),V.listQoSPolicies(e),V.listFabricEntryPoints(e),V.listFabricEgressPools(e),V.listVPNConnections(e),V.listFabricTestingFlags()]);if(n!==pi.current)return;Te(r),De(i),ze(a),Ve(o),Ge(s),we(c),t.preserveEditableForms||or({authorityState:c.authority_state,mutationMode:c.mutation_mode,notes:c.notes||``}),Mn(l),It(u),Bt(d),Ht(f),Kt(p),en(m),Yt(h);let g=await V.listVPNClientDiagnosticStatuses(e);if(n!==pi.current)return;fn(g);let _=g.find(e=>e.device_id===ln.trim())||g[0]||null;mn(_),!ln.trim()&&_&&(un(_.device_id),localStorage.setItem(w.vpnDiagnosticDeviceId,_.device_id));let[v,y]=await Promise.all([Promise.all(f.map(async t=>[t.id,await V.listFabricEntryPointNodes(e,t.id)])),Promise.all(p.map(async t=>[t.id,await V.listFabricEgressPoolNodes(e,t.id)]))]);if(n!==pi.current)return;Wt(Object.fromEntries(v)),Jt(Object.fromEntries(y));let b=await Promise.all(r.map(async t=>[t.id,await V.listNodeRoles(e,t.id)]));if(n!==pi.current)return;nt(Object.fromEntries(b));let x=await Promise.all(r.map(async t=>[t.id,await V.listDesiredWorkloads(e,t.id)]));if(n!==pi.current)return;at(Object.fromEntries(x));let S=await Promise.all(r.map(async t=>[t.id,await V.listWorkloadStatuses(e,t.id)]));if(n!==pi.current)return;yt(Object.fromEntries(S));let C=await Promise.all(r.map(async t=>[t.id,await V.listNodeHeartbeats(e,t.id,60)]));if(n!==pi.current)return;Ct(Object.fromEntries(C));let ee=await Promise.all(r.map(async t=>[t.id,await V.getNodeUpdatePlan(e,t.id,{currentVersion:t.reported_version})]));if(n!==pi.current)return;Ze(Object.fromEntries(ee));let te=await Promise.all(r.map(async t=>[t.id,await V.listNodeUpdateStatuses(e,t.id,80)]));if(n!==pi.current)return;$e(Object.fromEntries(te));let ne=await Promise.all(r.map(async t=>[t.id,await V.listNodeTelemetry(e,t.id,120)]));if(n!==pi.current)return;Pt(Object.fromEntries(ne));let T=await Promise.all(r.map(async t=>[t.id,await V.getNodeSyntheticMeshConfig(e,t.id)]));if(n!==pi.current)return;Rt(Object.fromEntries(T));let re=await Promise.all(m.map(async t=>[t.id,await V.getActiveVPNLease(e,t.id)]));if(n!==pi.current)return;nn(Object.fromEntries(re));let ie=await Promise.all(m.map(async t=>[t.id,await V.getVPNPacketStats(e,t.id)]));n===pi.current&&cn(Object.fromEntries(ie))}function ji(){Te([]),De([]),ze([]),Ve([]),Ge([]),Ze({}),we(null),nt({}),at({}),yt({}),Ct({}),$e({}),Pt({}),It([]),Rt({}),Bt([]),Ht([]),Wt({}),Kt([]),Jt({}),Yt([]),en([]),nn({}),cn({}),fn([]),mn(null),wn([]),En([]),On([]),An({}),Mn([])}async function K(e,t){Hn(!0),Wn(``),Kn(``);try{await e(),Kn(t),await W()}catch(e){Wn(e instanceof Error?e.message:`Действие не выполнено.`)}finally{Hn(!1)}}async function Mi(){if(!E){mn(null);return}let e=await V.listVPNClientDiagnosticStatuses(E);fn(e);let t=ln.trim()||e[0]?.device_id||``;t&&(localStorage.setItem(w.vpnDiagnosticDeviceId,t),un(t));let n=e.find(e=>e.device_id===t)||(t?await V.getVPNClientDiagnosticStatus(E,t):null);mn(n),Kn(n?`Диагностика VPN-клиента обновлена.`:`Диагностика VPN-клиента не найдена.`)}async function Ni(e,t){if(!E){Wn(`Выбери кластер перед отправкой команды.`);return}let n=ln.trim();if(!n){Wn(`Укажи Android device id или выбери найденный клиент.`);return}Hn(!0),Wn(``),Kn(``);try{Sn(await V.enqueueVPNClientDiagnosticCommand(E,n,e)),Kn(`${t}: команда поставлена в очередь. Клиент заберет ее через диагностический канал.`),window.setTimeout(()=>{Mi()},3500)}catch(e){Wn(e instanceof Error?e.message:`Команда VPN-клиенту не отправлена.`)}finally{Hn(!1)}}async function Pi(){Hn(!0),Wn(``),Kn(``);try{let e=D(await fi.login({email:h.email,password:h.password,deviceLabel:h.deviceLabel,trustDevice:h.trustDevice}));if(!e.userId||!e.authSessionId)throw Error(`Ответ входа не содержит пользователя или сессию.`);let t=new y({baseUrl:i,actorUserId:e.userId}),n=`admin`;try{await t.listClusterSummaries(),n=`admin`}catch{try{let[e,r]=await Promise.all([t.listOrganizations(),t.listResources()]);wn(e),On(r),e[0]?.id&&Rn(e[0].id);let i=await Promise.all(e.map(async e=>[e.id,await t.listOrganizationMemberships(e.id)]));An(Object.fromEntries(i)),n=`user`}catch{try{await fi.revokeAuthSession({userId:e.userId,authSessionId:e.authSessionId,reason:`user_portal_access_denied`})}catch{}throw Error(H.accessDenied)}}r(h.rememberMe),Ei(e,h.rememberMe),o(e),m(e.userId),g(t=>({...t,email:e.email,password:``})),u(new Date().toISOString()),c(n),Kn(`${H.signedInAs}: ${e.email}`)}catch(e){Wn(e instanceof Error?e.message:`Вход не выполнен.`)}finally{Hn(!1)}}async function Fi(){Hn(!0),Wn(``),Kn(``);try{let e;if(v?.strict_authority){if(!x.activationPayload.trim()||!x.activationSignature.trim())throw Error(H.bootstrapText);e=JSON.parse(x.activationPayload)}b((await fi.bootstrapOwner({email:x.email,password:x.password,activationPayload:e,activationSignature:x.activationSignature})).installation),g({...h,email:x.email,password:x.password}),Kn(H.ownerCreated)}catch(e){Wn(e instanceof Error?e.message:`Создание владельца не выполнено.`)}finally{Hn(!1)}}async function Ii(){let e=a;if(o(null),r(!1),u(``),Ei(null),c(null),m(``),_e([]),Se([]),ji(),ke({}),le(``),e?.userId&&e.authSessionId)try{await fi.revokeAuthSession({userId:e.userId,authSessionId:e.authSessionId,reason:`platform_owner_console_logout`})}catch{}}async function Li(e){le(e),ji(),Hn(!0),Wn(``),Kn(``);try{await Ai(e)}catch(e){Wn(e instanceof Error?e.message:`Не удалось загрузить кластер.`)}finally{Hn(!1)}}let Ri=Fe.filter(e=>e.status===`pending`).length,zi=j.filter(e=>e.health_status===`healthy`).length,Bi=j.filter(e=>e.health_status!==`healthy`||e.membership_status!==`active`).length,Vi=Object.values(tt).flat().filter(e=>e.status===`active`).length,Hi=N.find(e=>e.scope_type===`platform`&&!e.scope_id)||null;N.find(e=>e.scope_type===`organization`&&e.scope_id===zr&&(!e.cluster_id||e.cluster_id===E));let Ui=Object.values(Lt),Wi=Ui.filter(e=>e.enabled).length,Gi=Ui.reduce((e,t)=>e+t.routes.length,0),Ki=Ui.reduce((e,t)=>e+Object.keys(t.peer_endpoints||{}).length,0),qi=Ui.reduce((e,t)=>e+st(t),0),Ji=Ui.reduce((e,t)=>e+(t.peer_directory?.length??0),0),Yi=Ui.reduce((e,t)=>e+(t.recovery_seeds?.length??0),0),Xi=Ui.filter(e=>e.production_forwarding).length,Zi=v?.bootstrapped===!1,Qi=Zi&&!v?.strict_authority&&!v?.insecure_bootstrap_allowed,$i=s===`admin`?H.sessionModeAdmin:H.sessionModeUser;if(!a)return(0,C.jsxs)(`main`,{className:`loginShell`,children:[v&&(0,C.jsxs)(`section`,{className:`loginCard`,children:[(0,C.jsx)(`h1`,{children:v.bootstrapped?H.installationLocked:H.bootstrapTitle}),(0,C.jsx)(A,{label:`Authority`,value:`${v.authority_mode}/${v.authority_state}`}),(0,C.jsx)(A,{label:`Strict`,value:v.strict_authority?`enabled`:`legacy`}),v.root_fingerprint&&(0,C.jsx)(A,{label:`Root key`,value:P(v.root_fingerprint)})]}),Zi?(0,C.jsxs)(`section`,{className:`loginCard`,children:[(0,C.jsx)(`h1`,{children:H.bootstrapTitle}),(0,C.jsx)(`p`,{className:`loginHint`,children:Qi?H.insecureBootstrapDisabled:H.bootstrapText}),(0,C.jsxs)(`label`,{children:[H.email,(0,C.jsx)(`input`,{value:x.email,onChange:e=>S({...x,email:e.target.value}),autoComplete:`username`})]}),(0,C.jsxs)(`label`,{children:[H.password,(0,C.jsx)(`input`,{value:x.password,onChange:e=>S({...x,password:e.target.value}),type:`password`,autoComplete:`new-password`})]}),v?.strict_authority&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`label`,{children:[H.activationPayload,(0,C.jsx)(`textarea`,{value:x.activationPayload,onChange:e=>S({...x,activationPayload:e.target.value}),spellCheck:!1})]}),(0,C.jsxs)(`label`,{children:[H.activationSignature,(0,C.jsx)(`input`,{value:x.activationSignature,onChange:e=>S({...x,activationSignature:e.target.value}),spellCheck:!1})]})]}),Un&&(0,C.jsx)(`div`,{className:`errorPanel`,children:Un}),Gn&&(0,C.jsx)(`div`,{className:`noticePanel`,children:Gn}),(0,C.jsx)(`button`,{className:`primary wide`,onClick:()=>void Fi(),disabled:Vn||Qi||!x.email||x.password.length<12||v?.strict_authority&&(!x.activationPayload||!x.activationSignature),children:Vn?H.creatingOwner:H.createOwner})]}):(0,C.jsxs)(`section`,{className:`loginCard`,children:[(0,C.jsx)(`h1`,{children:H.signInTitle}),(0,C.jsxs)(`label`,{children:[H.email,(0,C.jsx)(`input`,{value:h.email,onChange:e=>g({...h,email:e.target.value.trim()}),autoComplete:`username`,autoCapitalize:`none`,autoCorrect:`off`,spellCheck:!1})]}),(0,C.jsxs)(`label`,{children:[H.password,(0,C.jsx)(`input`,{value:h.password,onChange:e=>g({...h,password:e.target.value}),type:h.showPassword?`text`:`password`,autoComplete:`current-password`,autoCapitalize:`none`,autoCorrect:`off`,spellCheck:!1,onKeyDown:e=>{e.key===`Enter`&&Pi()}})]}),(0,C.jsxs)(`label`,{className:`checkLine`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:h.showPassword,onChange:e=>g({...h,showPassword:e.target.checked})}),`Показать пароль`]}),(0,C.jsxs)(`label`,{className:`checkLine`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:h.trustDevice,onChange:e=>g({...h,trustDevice:e.target.checked})}),H.trustDevice]}),(0,C.jsxs)(`label`,{className:`checkLine`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:h.rememberMe,onChange:e=>g({...h,rememberMe:e.target.checked})}),H.rememberMe]}),Un&&(0,C.jsx)(`div`,{className:`errorPanel`,children:Un}),Gn&&(0,C.jsx)(`div`,{className:`noticePanel`,children:Gn}),(0,C.jsx)(`button`,{className:`primary wide`,onClick:()=>void Pi(),disabled:Vn||!h.email||!h.password,children:Vn?H.signingIn:H.signIn})]})]});if(a&&!s)return(0,C.jsx)(`main`,{className:`loginShell`,children:(0,C.jsx)(`section`,{className:`loginCard`,children:(0,C.jsx)(`p`,{children:Vn?H.lastRefresh:`Восстанавливаем сессию...`})})});if(s===`user`){let e=Cn.find(e=>e.id===Ln)||Cn[0]||null,t=e?Dn.filter(t=>t.organization_id===e.id):Dn,n=e?(kn[e.id]||[]).find(e=>e.user_id===a.userId):null,r=t.reduce((e,t)=>(e[t.protocol]=(e[t.protocol]||0)+1,e),{});return(0,C.jsxs)(`main`,{className:`portalShell`,children:[(0,C.jsxs)(`aside`,{className:`portalRail`,children:[(0,C.jsx)(`div`,{className:`brandMark`,children:`RAP`}),(0,C.jsx)(`p`,{className:`sideKicker`,children:`Личный кабинет`}),(0,C.jsx)(`h1`,{children:`Мой доступ`}),(0,C.jsx)(`p`,{className:`sideText`,children:`Установки, доступные серверы и состояние рабочей области пользователя.`}),(0,C.jsx)(A,{label:H.sessionMode,value:`${$i} • ${l?bn(l):`н/д`}`}),(0,C.jsx)(A,{label:H.actorUser,value:a.email}),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>void Ii(),disabled:Vn,children:H.logout})]}),(0,C.jsxs)(`section`,{className:`portalWorkspace`,children:[(0,C.jsxs)(`header`,{className:`portalTop`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`p`,{className:`eyebrow`,children:`Secure Access Fabric`}),(0,C.jsx)(`h2`,{children:e?.name||`Личный кабинет`}),(0,C.jsx)(`p`,{className:`muted`,children:a.email})]}),(0,C.jsxs)(`label`,{children:[`Организация`,(0,C.jsx)(`select`,{value:e?.id||``,onChange:e=>Rn(e.target.value),children:Cn.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.name},e.id))})]}),(0,C.jsx)(`button`,{className:`primary`,onClick:()=>void G(),disabled:Vn,children:Vn?H.refreshing:H.refresh})]}),Un&&(0,C.jsx)(`div`,{className:`errorPanel`,children:Un}),Gn&&(0,C.jsx)(`div`,{className:`noticePanel`,children:Gn}),(0,C.jsxs)(`section`,{className:`grid three`,children:[(0,C.jsx)(ue,{label:`Организации`,value:Cn.length,tone:`steel`}),(0,C.jsx)(ue,{label:`Серверы`,value:t.length,tone:`green`}),(0,C.jsx)(ue,{label:`Установки`,value:2,tone:`amber`})]}),(0,C.jsxs)(`section`,{className:`grid two`,children:[(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:`Установки`}),(0,C.jsx)(`p`,{className:`muted`,children:ri?`Актуальная версия Android: ${ri}`:`Скачивайте актуальные клиенты только отсюда, чтобы не ловить старую сборку.`})]}),(0,C.jsx)(`span`,{className:`status active`,children:`latest`})]}),(0,C.jsxs)(`div`,{className:`portalInstallList`,children:[(0,C.jsxs)(`a`,{className:`installTile primaryInstall`,href:xi,children:[(0,C.jsx)(`strong`,{children:`Android VPN`}),(0,C.jsx)(`span`,{children:`Последняя сборка RAP HOME VPN для телефона`}),(0,C.jsx)(`small`,{children:si||bi})]}),(0,C.jsxs)(`a`,{className:`installTile`,href:`${gi}/downloads/rap-windows-rdp-client-latest-win-x64.zip`,children:[(0,C.jsx)(`strong`,{children:`Windows RDP клиент`}),(0,C.jsx)(`span`,{children:`Клиент удаленного рабочего стола, когда нужен доступ к серверам`}),(0,C.jsx)(`small`,{children:`latest win-x64`})]})]})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Профиль`}),(0,C.jsx)(A,{label:`Пользователь`,value:a.email}),(0,C.jsx)(A,{label:`Роль в организации`,value:n?.role_id||`участник`}),(0,C.jsx)(A,{label:`Организация`,value:e?.name||`нет`}),(0,C.jsx)(A,{label:`Последнее обновление`,value:Nn?F(Nn):`нет`})]}),(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsx)(`div`,{className:`cardHead`,children:(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:`Доступные серверы`}),(0,C.jsx)(`p`,{className:`muted`,children:`Список ресурсов, которые уже разрешены пользователю через организацию.`})]})}),(0,C.jsx)(je,{columns:[`имя`,`адрес`,`протокол`,`секрет`,`передача файлов`],rows:t.map(e=>[e.name,e.address,e.protocol,e.has_secret?`настроен`:`нет`,I(e.file_transfer_mode||`disabled`)])})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Сервисы`}),(0,C.jsx)(je,{columns:[`тип`,`количество`],rows:Object.entries(r).map(([e,t])=>[e,String(t)])})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Что здесь будет дальше`}),(0,C.jsxs)(`div`,{className:`portalRoadmap`,children:[(0,C.jsx)(`span`,{children:`Устройства и доверенные входы`}),(0,C.jsx)(`span`,{children:`Активные VPN/RDP сессии`}),(0,C.jsx)(`span`,{children:`Обновление профиля VPN без ручных ключей`}),(0,C.jsx)(`span`,{children:`Самостоятельная смена пароля`})]})]})]})]})]})}return(0,C.jsxs)(`main`,{className:`consoleShell`,children:[(0,C.jsxs)(`aside`,{className:`sideRail`,children:[(0,C.jsx)(`div`,{className:`brandMark`,children:`SAF`}),(0,C.jsx)(`p`,{className:`sideKicker`,children:H.productOwner}),(0,C.jsx)(`h1`,{children:H.controlPlane}),(0,C.jsx)(`p`,{className:`sideText`,children:H.sideText}),(0,C.jsx)(`nav`,{className:`railNav`,children:ie.filter(e=>e.id!==`roles`).map(e=>(0,C.jsx)(`button`,{className:T===e.id?`active`:``,onClick:()=>re(e.id),children:e[d]},e.id))})]}),(0,C.jsxs)(`section`,{className:`workspace`,children:[(0,C.jsxs)(`header`,{className:`topBar`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`p`,{className:`eyebrow`,children:`Secure Access Fabric`}),(0,C.jsx)(`h2`,{children:U?U.name:H.consoleTitle}),(0,C.jsx)(`p`,{className:`muted`,children:H.boundary})]}),(0,C.jsxs)(`div`,{className:`clusterPicker`,children:[(0,C.jsxs)(`label`,{children:[H.activeCluster,(0,C.jsx)(`select`,{value:E,onChange:e=>void Li(e.target.value),children:he.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.name},e.id))})]}),(0,C.jsxs)(`span`,{children:[H.slugLabel,`: `,U?.slug||`н/д`]})]}),(0,C.jsx)(`button`,{className:`primary`,onClick:()=>void W(),disabled:Vn,children:Vn?H.refreshing:H.refresh}),(0,C.jsxs)(`div`,{className:`refreshStatus`,children:[(0,C.jsx)(`strong`,{children:H.autoRefresh}),(0,C.jsx)(`span`,{children:Nn?`${H.lastRefresh}: ${bn(Nn)} / ${Fn.toUpperCase()}`:Fn.toUpperCase()})]}),(0,C.jsxs)(`div`,{className:`profilePanel`,children:[(0,C.jsx)(`strong`,{children:H.profile}),(0,C.jsx)(`span`,{children:a.email}),(0,C.jsxs)(`span`,{children:[H.sessionMode,`: `,$i,` | `,H.sessionRefreshedAt,`: `,l?bn(l):`н/д`]}),(0,C.jsxs)(`label`,{children:[H.language,(0,C.jsxs)(`select`,{value:d,onChange:e=>f(e.target.value),children:[(0,C.jsx)(`option`,{value:`ru`,children:`Русский`}),(0,C.jsx)(`option`,{value:`en`,children:d===`ru`?`Английский`:`English`})]})]}),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>void Ii(),disabled:Vn,children:H.logout})]})]}),Un&&(0,C.jsx)(`div`,{className:`errorPanel`,children:Un}),Gn&&(0,C.jsx)(`div`,{className:`noticePanel`,children:Gn}),U&&j.length===0&&(0,C.jsxs)(`div`,{className:`noticePanel`,children:[(0,C.jsxs)(`strong`,{children:[H.emptyLiveTitle,`.`]}),` `,H.emptyLiveText]}),T===`command`&&(0,C.jsxs)(`section`,{className:`grid five`,children:[(0,C.jsx)(ue,{label:`Кластеры`,value:he.length,tone:`steel`}),(0,C.jsx)(ue,{label:`Узлы в области`,value:j.length,tone:`green`}),(0,C.jsx)(ue,{label:`Здоровые узлы`,value:zi,tone:`green`}),(0,C.jsx)(ue,{label:`Ожидают подключения`,value:Ri,tone:`amber`}),(0,C.jsx)(ue,{label:`Рискованные состояния`,value:Bi,tone:`red`}),(0,C.jsxs)(`article`,{className:`card span3`,children:[(0,C.jsx)(`h3`,{children:`Общее состояние кластеров`}),(0,C.jsx)(je,{columns:[`кластер`,`authority`,`ключ`,`режим изменений`,`узлы`,`заявки`,`роли`,`последний сигнал`],rows:xe.map(e=>[e.name,e.authority_state,P(e.cluster_key_fingerprint),e.mutation_mode,`${e.healthy_node_count}/${e.node_count}`,String(e.pending_join_count),String(e.active_role_assignment_count),F(e.last_node_seen_at)])})]}),(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsx)(`h3`,{children:`Authority выбранного кластера`}),Ce?(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Authority`,value:Ce.authority_state}),(0,C.jsx)(A,{label:`Режим изменений`,value:Ce.mutation_mode}),(0,C.jsx)(A,{label:`Терм`,value:String(Ce.term)}),(0,C.jsx)(A,{label:`Cluster key`,value:P(hi?.cluster_key_fingerprint)}),(0,C.jsx)(A,{label:`Обновлено`,value:F(Ce.updated_at)})]}):(0,C.jsx)(pe,{title:`Нет состояния authority`,text:`Выберите кластер, чтобы загрузить состояние authority.`})]}),(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsx)(`h3`,{children:`Граница платформы`}),(0,C.jsx)(`p`,{className:`muted`,children:`Эта панель предназначена для владельца продукта / владельца платформы. Панели организаций должны использовать безопасные проекции и не раскрывать mesh internals, peer cache, route cache, секреты или данные других tenants.`})]}),(0,C.jsxs)(`article`,{className:`card span3`,children:[(0,C.jsx)(`h3`,{children:`Текущие сигналы кластера`}),(0,C.jsxs)(`div`,{className:`signalStrip`,children:[(0,C.jsx)(k,{label:`Активные роли`,value:String(Vi)}),(0,C.jsx)(k,{label:`Отчеты сервисов`,value:String(Object.values(ot).filter(e=>e.length>0).length)}),(0,C.jsx)(k,{label:`Наблюдения связей`,value:String(Ft.length)}),(0,C.jsx)(k,{label:`Synthetic configs`,value:`${Wi}/${j.length}`})]})]})]}),T===`clusters`&&(0,C.jsxs)(`section`,{className:`grid two`,children:[(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:H.clusterCatalog}),(0,C.jsx)(`p`,{className:`muted`,children:H.clusterCatalogText})]}),(0,C.jsx)(`span`,{className:`pill`,children:hn(he.length,d)})]}),(0,C.jsxs)(`div`,{className:`clusterCatalog`,children:[he.map(e=>{let t=xe.find(t=>t.cluster_id===e.id),n=e.id===E;return(0,C.jsxs)(`article`,{className:`clusterCard ${n?`selected`:``}`,children:[(0,C.jsxs)(`div`,{className:`clusterCardMain`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`p`,{className:`eyebrow`,children:e.region||`регион не задан`}),(0,C.jsx)(`h4`,{children:e.name}),(0,C.jsxs)(`p`,{className:`muted`,children:[H.slugLabel,`: `,(0,C.jsx)(`strong`,{children:e.slug})]})]}),(0,C.jsxs)(`div`,{className:`clusterCardActions`,children:[(0,C.jsx)(de,{value:e.status}),n?(0,C.jsx)(`span`,{className:`pill good`,children:H.selected}):(0,C.jsx)(`button`,{onClick:()=>void Li(e.id),children:H.makeActive}),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>{Li(e.id),re(`cluster-settings`)},children:H.openSettings})]})]}),(0,C.jsxs)(`div`,{className:`signalStrip compact`,children:[(0,C.jsx)(k,{label:`Узлы`,value:t?`${t.healthy_node_count}/${t.node_count}`:`н/д`}),(0,C.jsx)(k,{label:`Заявки`,value:String(t?.pending_join_count??`н/д`)}),(0,C.jsx)(k,{label:`Роли`,value:String(t?.active_role_assignment_count??`н/д`)}),(0,C.jsx)(k,{label:`Последний сигнал`,value:F(t?.last_node_seen_at)})]}),(0,C.jsxs)(`details`,{children:[(0,C.jsx)(`summary`,{children:H.clusterDetails}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`ID`,value:e.id}),(0,C.jsx)(A,{label:H.slugLabel,value:e.slug}),(0,C.jsx)(A,{label:`Статус`,value:I(e.status)}),(0,C.jsx)(A,{label:`Authority`,value:t?`${t.authority_state}/${t.mutation_mode}`:`неизвестно`}),(0,C.jsx)(A,{label:`Создан`,value:F(e.created_at)}),(0,C.jsx)(A,{label:`Обновлен`,value:F(e.updated_at||e.created_at)})]})]})]},e.id)}),he.length===0&&(0,C.jsx)(pe,{title:`Кластеров нет`,text:`Создайте первый кластер, затем подключите стартовый node-agent.`})]})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:H.createCluster}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[H.slugLabel,(0,C.jsx)(`input`,{value:qn.slug,onChange:e=>Jn({...qn,slug:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Название`,(0,C.jsx)(`input`,{value:qn.name,onChange:e=>Jn({...qn,name:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Регион`,(0,C.jsx)(`input`,{value:qn.region,onChange:e=>Jn({...qn,region:e.target.value})})]})]}),(0,C.jsx)(`p`,{className:`muted`,children:H.slugHelp}),(0,C.jsx)(`button`,{className:`primary`,disabled:!qn.slug||!qn.name,onClick:()=>void K(async()=>{await V.createCluster({slug:qn.slug,name:qn.name,region:qn.region||null}),Jn({slug:``,name:``,region:``})},`Кластер создан.`),children:H.createCluster})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Что такое технический код?`}),(0,C.jsx)(`p`,{className:`muted`,children:H.slugHelp}),(0,C.jsx)(`p`,{className:`muted`,children:`Для человека основное поле — название. Для системы и операторов — технический код. Он нужен, чтобы сценарии, логи и будущие endpoint-адреса не зависели от переименования кластера.`})]})]}),T===`cluster-settings`&&(0,C.jsxs)(`section`,{className:`grid two`,children:[!U&&(0,C.jsx)(pe,{title:`Кластер не выбран`,text:`Выберите активный кластер, чтобы открыть настройки.`}),U&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Identity кластера`}),(0,C.jsx)(`p`,{className:`muted`,children:`Базовые параметры хранятся в PostgreSQL. Slug остается неизменяемым идентификатором для операторов и скриптов.`}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`ID`,(0,C.jsx)(`input`,{value:U.id,readOnly:!0})]}),(0,C.jsxs)(`label`,{children:[`Slug`,(0,C.jsx)(`input`,{value:U.slug,readOnly:!0})]}),(0,C.jsxs)(`label`,{children:[`Название`,(0,C.jsx)(`input`,{value:Yn.name,onChange:e=>Xn({...Yn,name:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Статус`,(0,C.jsxs)(`select`,{value:Yn.status,onChange:e=>Xn({...Yn,status:e.target.value}),children:[(0,C.jsx)(`option`,{value:`active`,children:`active, работает`}),(0,C.jsx)(`option`,{value:`disabled`,children:`disabled, отключен`})]})]}),(0,C.jsxs)(`label`,{children:[`Регион`,(0,C.jsx)(`input`,{value:Yn.region,onChange:e=>Xn({...Yn,region:e.target.value}),placeholder:`например ru-msk-1`})]}),(0,C.jsxs)(`label`,{children:[`Обновлен`,(0,C.jsx)(`input`,{value:F(U.updated_at||U.created_at),readOnly:!0})]})]}),(0,C.jsxs)(`label`,{className:`wideLabel`,children:[`Metadata JSON`,(0,C.jsx)(`textarea`,{value:Yn.metadataJson,onChange:e=>Xn({...Yn,metadataJson:e.target.value}),rows:8,spellCheck:!1})]}),(0,C.jsx)(`button`,{className:`primary`,disabled:!Yn.name.trim(),onClick:()=>vn(`Сохранить базовые настройки кластера`)&&void K(async()=>{let e=Me(Yn.metadataJson||`{}`,`Metadata JSON`);await V.updateCluster(U.id,{name:Yn.name,status:Yn.status,region:Yn.region||null,metadata:e})},`Настройки кластера сохранены.`),children:`Сохранить настройки кластера`})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Authority и режим изменений`}),(0,C.jsx)(`p`,{className:`muted`,children:`Эта секция защищает кластер от split-brain: minority/read-only сегменты не должны принимать изменения политик.`}),(0,C.jsxs)(`div`,{className:`stateGrid`,children:[(0,C.jsx)(A,{label:`Authority`,value:Ce?.authority_state||`неизвестно`}),(0,C.jsx)(A,{label:`Mutation mode`,value:Ce?.mutation_mode||`неизвестно`}),(0,C.jsx)(A,{label:`Term`,value:String(Ce?.term??`н/д`)}),(0,C.jsx)(A,{label:`Cluster key`,value:P(hi?.cluster_key_fingerprint)}),(0,C.jsx)(A,{label:`Последнее изменение`,value:F(Ce?.updated_at)})]}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`Состояние authority`,(0,C.jsxs)(`select`,{value:ar.authorityState,onChange:e=>or({...ar,authorityState:e.target.value}),children:[(0,C.jsx)(`option`,{value:`authoritative`,children:`authoritative, основной`}),(0,C.jsx)(`option`,{value:`minority`,children:`minority, меньшинство`}),(0,C.jsx)(`option`,{value:`isolated`,children:`isolated, изолирован`}),(0,C.jsx)(`option`,{value:`recovery`,children:`recovery, восстановление`})]})]}),(0,C.jsxs)(`label`,{children:[`Режим изменений`,(0,C.jsxs)(`select`,{value:ar.mutationMode,onChange:e=>or({...ar,mutationMode:e.target.value}),children:[(0,C.jsx)(`option`,{value:`normal`,children:`normal, обычный`}),(0,C.jsx)(`option`,{value:`read_only`,children:`read_only, только чтение`}),(0,C.jsx)(`option`,{value:`recovery_override`,children:`recovery_override, восстановление`})]})]}),(0,C.jsxs)(`label`,{children:[`Примечание`,(0,C.jsx)(`input`,{value:ar.notes,onChange:e=>or({...ar,notes:e.target.value})})]})]}),(0,C.jsx)(`button`,{disabled:!E,onClick:()=>vn(`Изменить authority state кластера`)&&void K(()=>V.updateClusterAuthority(E,{authorityState:ar.authorityState,mutationMode:ar.mutationMode,notes:ar.notes}),`Authority кластера обновлен.`),children:`Обновить authority`})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Safety / quorum`}),(0,C.jsxs)(`div`,{className:`stateGrid`,children:[(0,C.jsx)(A,{label:`Узлы`,value:String(hi?.node_count??j.length)}),(0,C.jsx)(A,{label:`Healthy`,value:String(hi?.healthy_node_count??zi)}),(0,C.jsx)(A,{label:`Pending join`,value:String(hi?.pending_join_count??Fe.filter(e=>e.status===`pending`).length)}),(0,C.jsx)(A,{label:`Последний узел`,value:F(hi?.last_node_seen_at)})]}),(0,C.jsx)(`p`,{className:`muted`,children:`Минимальный размер, quorum policy и split-brain rules пока не имеют отдельного runtime-переключателя. Сейчас защита выполняется через authority/mutation mode, explicit node approval и аудит.`})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Telemetry / testing`}),(0,C.jsxs)(`div`,{className:`stateGrid`,children:[(0,C.jsx)(A,{label:`Telemetry flag`,value:Hi?.telemetry_enabled?`включен`:`выключен`}),(0,C.jsx)(A,{label:`Synthetic links`,value:Hi?.synthetic_links_enabled?`включены`:`выключены`}),(0,C.jsx)(A,{label:`Хранение истории, часов`,value:String(Hi?.history_retention_hours??`н/д`)})]}),(0,C.jsx)(`p`,{className:`muted`,children:`Это тестовый контур наблюдаемости: heartbeat/telemetry реальные, а связи Fabric сейчас synthetic. Production mesh traffic здесь пока не отображается.`})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Storage / updates`}),(0,C.jsxs)(`div`,{className:`stateGrid`,children:[(0,C.jsx)(A,{label:`Version Storage`,value:`архитектура зафиксирована, runtime не реализован`}),(0,C.jsx)(A,{label:`Update cache`,value:`${ht(`update-cache`,tt).length} узл.`}),(0,C.jsx)(A,{label:`File/config cache`,value:`${ht(`file-storage-cache`,tt).length} узл.`})]}),(0,C.jsx)(`p`,{className:`muted`,children:`Version Storage будет хранить stable/current/candidate и signed artifacts. Сейчас это не production updater runtime.`})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Admin endpoints`}),(0,C.jsxs)(`div`,{className:`stateGrid`,children:[(0,C.jsx)(A,{label:`Entry nodes`,value:`${ht(`entry-node`,tt).length} узл.`}),(0,C.jsx)(A,{label:`Relay nodes`,value:`${ht(`relay-node`,tt).length} узл.`}),(0,C.jsx)(A,{label:`Core mesh`,value:`${ht(`core-mesh`,tt).length} узл.`})]}),(0,C.jsx)(`p`,{className:`muted`,children:`Панель кластера не переезжает автоматически на storage-узел. Cluster Admin Endpoint должен быть назначен отдельной explicit ролью на ingress/admin-capable узле.`})]})]})]}),T===`nodes`&&(0,C.jsxs)(`section`,{className:`grid two`,children:[(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:H.nodeManagement}),(0,C.jsx)(`p`,{className:`muted`,children:`Единый краткий список узлов. По умолчанию показан активный кластер; включите общий режим, чтобы увидеть весь инвентарь платформы.`})]}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsxs)(`label`,{className:`checkLine`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:lr===`all`,onChange:e=>ur(e.target.checked?`all`:`cluster`)}),H.showAllPlatformNodes]}),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>{ur(`all`),fr(``)},children:H.showAllPlatformNodes})]})]}),(0,C.jsxs)(`div`,{className:`signalStrip compact`,children:[(0,C.jsx)(k,{label:`Узлы активного кластера`,value:String(j.length)}),(0,C.jsx)(k,{label:`Все узлы`,value:String(wi.length)}),(0,C.jsx)(k,{label:`Заявки`,value:String(Ri)}),(0,C.jsx)(k,{label:`Активные роли`,value:String(Vi)})]}),(0,C.jsx)(`p`,{className:`muted`,children:H.addNodeText})]}),(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:H.nodeBriefList}),(0,C.jsx)(`p`,{className:`muted`,children:H.nodeBriefListHelp})]}),(0,C.jsx)(`span`,{className:`pill`,children:Ti.length})]}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[H.nodeSearch,(0,C.jsx)(`input`,{value:dr,onChange:e=>fr(e.target.value),placeholder:H.nodeSearchPlaceholder})]}),(0,C.jsxs)(`label`,{children:[H.nodeGroupFilter,(0,C.jsxs)(`select`,{value:pr,onChange:e=>mr(e.target.value),children:[(0,C.jsx)(`option`,{value:``,children:H.allNodeGroups}),Ee.map(e=>(0,C.jsx)(`option`,{value:e.id,children:dt(e,Ee)},e.id))]})]})]}),(0,C.jsx)(`p`,{className:`muted`,children:H.nodeGroupInventoryText}),(0,C.jsx)(`h4`,{children:H.nodeGroupCreatePanel}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[H.nodeGroupName,(0,C.jsx)(`input`,{value:Zn.name,onChange:e=>Qn({...Zn,name:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[H.parentNodeGroup,(0,C.jsxs)(`select`,{value:Zn.parentGroupId,onChange:e=>Qn({...Zn,parentGroupId:e.target.value}),children:[(0,C.jsx)(`option`,{value:``,children:H.rootNodeGroup}),Ee.map(e=>(0,C.jsx)(`option`,{value:e.id,children:dt(e,Ee)},e.id))]})]}),(0,C.jsxs)(`label`,{children:[H.createNodeGroup,(0,C.jsx)(`button`,{className:`primary`,disabled:!Zn.name.trim(),onClick:()=>void K(async()=>{await V.createNodeGroup(E,{name:Zn.name,parentGroupId:Zn.parentGroupId||null}),Qn({name:``,parentGroupId:``})},H.nodeGroupCreated),children:H.createNodeGroup})]})]}),(0,C.jsxs)(`div`,{className:`nodeList`,children:[Oi.map(e=>{if(e.kind===`group`){let t=hr.includes(e.key);return(0,C.jsxs)(`div`,{className:`nodeListGroup`,style:{paddingLeft:`${e.depth*18}px`},children:[(0,C.jsxs)(`div`,{className:`nodeListMain`,children:[(0,C.jsx)(`strong`,{children:e.label}),e.groupId&&(0,C.jsx)(`span`,{children:ft(e.groupId,Ee)})]}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`span`,{className:`pill`,children:e.count}),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>gr(Zt(hr,e.key)),children:t?H.expandGroup:H.collapseGroup}),e.groupId&&(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>Qn({name:``,parentGroupId:e.groupId||``}),children:H.createSubgroup})]})]},e.key)}let t=e.entry,n=t.memberships.find(e=>e.cluster.id===E),r=n?.node||t.node,i=rt(r,St[r.id]||[],Ft),a=Re(r,Je[r.id],Ue),o=We(Qe[r.id]||[]),s=n?.node.membership_status===`active`,c=n?.node.membership_status===`revoked`;return(0,C.jsxs)(`div`,{className:`nodeListRow`,style:{marginLeft:`${e.depth*18}px`},children:[(0,C.jsxs)(`div`,{className:`nodeListMain`,children:[(0,C.jsx)(`strong`,{children:r.name}),(0,C.jsx)(`span`,{children:r.node_key}),(0,C.jsx)(`small`,{className:`muted`,children:i.address})]}),(0,C.jsx)(de,{value:r.health_status}),(0,C.jsx)(ve,{runtime:i}),(0,C.jsxs)(`div`,{className:`nodeEndpointCell`,children:[(0,C.jsx)(`strong`,{children:r.reported_version||`версия неизвестна`}),(0,C.jsx)(`small`,{children:a.targetLabel})]}),(0,C.jsx)(de,{value:a.status}),(0,C.jsxs)(`div`,{className:`nodeEndpointCell`,children:[(0,C.jsx)(`strong`,{className:`pill ${o.tone}`,children:o.label}),(0,C.jsx)(`small`,{children:o.detail})]}),(0,C.jsx)(`span`,{className:`muted`,children:F(r.last_seen_at)}),n?(0,C.jsx)(de,{value:n.node.membership_status}):(0,C.jsx)(`span`,{className:`muted`,children:H.notMemberOfActiveCluster}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`button`,{onClick:()=>{wr(t),Er(`details`)},children:H.nodeDetails}),s?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`button`,{className:`primary`,onClick:()=>{wr(t),Er(`manage`)},children:H.manageNode}),(0,C.jsx)(`button`,{className:`danger`,onClick:()=>vn(`Удалить узел ${r.name} из кластера`)&&void K(()=>V.deleteClusterNode(E,r.id,`Удалено из списка узлов панели владельца платформы.`),`Узел удален из кластера.`),children:`Удалить`})]}):c?(0,C.jsx)(`span`,{className:`muted`,children:H.revokedMembership}):(0,C.jsx)(`button`,{className:`primary`,onClick:()=>{br(t),Sr([])},children:H.connectExistingNode})]})]},e.key)}),Oi.length===0&&(0,C.jsx)(pe,{title:H.noNodesTitle,text:H.noNodesByFilter})]})]}),yr&&(0,C.jsx)(`div`,{className:`modalBackdrop`,role:`presentation`,children:(0,C.jsxs)(`div`,{className:`modalCard`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`attach-node-title`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{id:`attach-node-title`,children:H.connectExistingNodeTitle}),(0,C.jsx)(`p`,{className:`muted`,children:H.connectExistingNodeText})]}),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>br(null),children:H.cancel})]}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Узел`,value:yr.node.name}),(0,C.jsx)(A,{label:`Node key`,value:yr.node.node_key}),(0,C.jsx)(A,{label:H.activeCluster,value:U?.name||E})]}),(0,C.jsx)(`div`,{className:`checkGrid`,children:ne.map(e=>(0,C.jsxs)(`label`,{className:`checkLine`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:xr.includes(e),onChange:()=>Sr(Zt(xr,e))}),Ie(e)]},e))}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`button`,{className:`primary`,onClick:()=>void K(async()=>{await V.attachExistingNode(E,yr.node.id,xr),br(null),Sr([]),ur(`cluster`)},`Узел подключен к активному кластеру.`),children:H.connectWithRoles}),(0,C.jsx)(`button`,{onClick:()=>br(null),children:H.cancel})]})]})}),Cr&&(()=>{let e=Cr.memberships.find(e=>e.cluster.id===E),t=e?.node||Cr.node,n=e?(St[t.id]||[])[0]:void 0,r=e?(tt[t.id]||[]).filter(e=>e.status===`active`):[],i=e&&it[t.id]||[],a=e&&ot[t.id]||[];return(0,C.jsx)(`div`,{className:`modalBackdrop`,role:`presentation`,children:(0,C.jsxs)(`div`,{className:`modalCard wide`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`node-info-title`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`h3`,{id:`node-info-title`,children:[Tr===`manage`?H.manageNode:H.nodeDetails,`: `,t.name]}),(0,C.jsx)(`p`,{className:`muted`,children:t.node_key})]}),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>{wr(null),Er(`details`)},children:H.close})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:H.nodeIdentity}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Node ID`,value:P(t.id)}),(0,C.jsx)(A,{label:`Ключ узла`,value:t.node_key}),(0,C.jsx)(A,{label:`Тип владения`,value:I(t.ownership_type)}),(0,C.jsx)(A,{label:`Owner org`,value:P(t.owner_organization_id)}),(0,C.jsx)(A,{label:`Регистрация`,value:I(t.registration_status)}),(0,C.jsx)(A,{label:`Здоровье`,value:I(t.health_status)}),(0,C.jsx)(A,{label:`Версия`,value:t.reported_version||`неизвестно`}),(0,C.jsx)(A,{label:`Последний сигнал`,value:F(t.last_seen_at)})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:H.clusterMemberships}),(0,C.jsx)(`div`,{className:`membershipList`,children:Cr.memberships.map(e=>(0,C.jsxs)(`span`,{className:e.cluster.id===E?`pill good`:`pill`,children:[e.cluster.name,`: `,I(e.node.membership_status)]},e.cluster.id))})]}),e?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:H.activeClusterScope}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Участие`,value:I(t.membership_status)}),(0,C.jsx)(A,{label:`Сегмент`,value:I(t.partition_state)}),(0,C.jsx)(A,{label:`Группа`,value:t.node_group_name||H.ungroupedNodes}),(0,C.jsx)(A,{label:`Ролей`,value:String(r.length)}),(0,C.jsx)(A,{label:`Desired-сервисов`,value:String(i.length)}),(0,C.jsx)(A,{label:`Observed-сервисов`,value:String(a.length)})]})]}),Tr===`details`&&(0,C.jsx)(ge,{node:t,memberships:Cr.memberships,activeRoles:r,desiredWorkloads:i,observedWorkloads:a,heartbeats:St[t.id]||[],telemetry:Nt[t.id]||[],updatePlan:Je[t.id],updateStatuses:Qe[t.id]||[],meshLinks:Ft.filter(e=>e.source_node_id===t.id||e.target_node_id===t.id),syntheticConfig:Lt[t.id],allNodes:j,onSetUpdatePolicy:(e,t,n)=>void K(async()=>{await V.upsertNodeUpdatePolicy(E,e.id,{product:t,channel:`dev`,targetVersion:n,strategy:`rolling`,enabled:!0,rollbackAllowed:!0,healthWindowSeconds:180})},n?`${t} поставлен в target ${n}.`:`${t} будет следовать latest dev.`),labels:H}),Tr===`manage`&&(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:H.nodeFunctions}),(0,C.jsx)(`p`,{className:`muted`,children:H.nodeFunctionsText}),(0,C.jsxs)(`label`,{className:`wideLabel`,children:[H.organizationScopeForEnable,(0,C.jsx)(`input`,{value:sr,onChange:e=>cr(e.target.value),placeholder:H.clusterWideRolePlaceholder})]}),(0,C.jsx)(`div`,{className:`functionList`,children:ne.map(e=>{let o=r.find(t=>t.role===e),s=i.find(t=>t.service_type===e),c=a.find(t=>t.service_type===e),l=rn(e,n),u=s?.desired_state||`not_configured`,f=c?.reported_state||`missing`,p=!!o&&u===`enabled`;return(0,C.jsxs)(`div`,{className:`functionRow`,children:[(0,C.jsxs)(`div`,{className:`nodeListMain`,children:[(0,C.jsx)(`strong`,{children:Ie(e)}),(0,C.jsx)(`span`,{children:on(e,n,d)})]}),(0,C.jsx)(fe,{label:H.rolePermission,value:o?H.permissionGranted:H.permissionDenied,tone:o?`info`:``}),(0,C.jsx)(fe,{label:H.desiredRuntime,value:I(u),tone:u===`enabled`?`good`:``}),(0,C.jsx)(fe,{label:H.observedRuntime,value:I(f),tone:f===`running`?`good`:f===`missing`?`warn`:``}),(0,C.jsx)(`span`,{className:`pill ${l}`,children:an(e,n,H)}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`button`,{className:p?``:`primary`,disabled:p,onClick:()=>void K(async()=>{o||await V.setRoleStatus(E,t.id,e,`active`,sr||void 0),await V.setDesiredWorkload(E,t.id,e,{desiredState:`enabled`,runtimeMode:`container`,config:{},environment:{}})},`${e}: функция включена.`),children:H.enableFunction}),(0,C.jsx)(`button`,{disabled:!o&&u!==`enabled`,onClick:()=>void K(async()=>{await V.setDesiredWorkload(E,t.id,e,{desiredState:`disabled`,runtimeMode:s?.runtime_mode||`container`,config:s?.config||{},environment:s?.environment||{}}),o&&await V.setRoleStatus(E,t.id,e,`disabled`,o.organization_id||void 0)},`${e}: функция выключена.`),children:H.disableFunction})]})]},e)})}),(()=>{let e=i.find(e=>e.service_type===`mesh-listener`)?.config||{},n=jr[t.id]||{listenAddr:String(e.listen_addr||`:19131`),mode:String(e.listen_port_mode||`auto`),autoRange:`${Number(e.auto_port_start||19131)}-${Number(e.auto_port_end||19231)}`,advertiseEndpoint:String(e.advertise_endpoint||``),advertiseTransport:String(e.advertise_transport||`direct_http`),connectivity:String(e.connectivity_mode||`private_lan`),nat:String(e.nat_type||`none`),region:String(e.region||``)},r=e=>Mr({...jr,[t.id]:{...n,...e}});return(0,C.jsxs)(`section`,{className:`nodePanel nestedPanel`,children:[(0,C.jsx)(`h4`,{children:`Mesh listener`}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`Listen addr`,(0,C.jsx)(`input`,{value:n.listenAddr,onChange:e=>r({listenAddr:e.target.value}),placeholder:`0.0.0.0:19131 или :19131`})]}),(0,C.jsxs)(`label`,{children:[`Port mode`,(0,C.jsxs)(`select`,{value:n.mode,onChange:e=>r({mode:e.target.value}),children:[(0,C.jsx)(`option`,{value:`auto`,children:`auto`}),(0,C.jsx)(`option`,{value:`manual`,children:`manual`}),(0,C.jsx)(`option`,{value:`disabled`,children:`disabled`})]})]}),(0,C.jsxs)(`label`,{children:[`Auto ports`,(0,C.jsx)(`input`,{value:n.autoRange,onChange:e=>r({autoRange:e.target.value}),placeholder:`19131-19231`})]}),(0,C.jsxs)(`label`,{children:[`Advertise endpoint`,(0,C.jsx)(`input`,{value:n.advertiseEndpoint,onChange:e=>r({advertiseEndpoint:e.target.value}),placeholder:`http://external-or-lan-ip:19131`})]}),(0,C.jsxs)(`label`,{children:[`Advertise transport`,(0,C.jsxs)(`select`,{value:n.advertiseTransport,onChange:e=>r({advertiseTransport:e.target.value}),children:[(0,C.jsx)(`option`,{value:`direct_http`,children:`direct_http`}),(0,C.jsx)(`option`,{value:`direct_https`,children:`direct_https`}),(0,C.jsx)(`option`,{value:`wss`,children:`wss`})]})]}),(0,C.jsxs)(`label`,{children:[`Connectivity`,(0,C.jsxs)(`select`,{value:n.connectivity,onChange:e=>r({connectivity:e.target.value}),children:[(0,C.jsx)(`option`,{value:`private_lan`,children:`private_lan`}),(0,C.jsx)(`option`,{value:`direct`,children:`direct`}),(0,C.jsx)(`option`,{value:`outbound_only`,children:`outbound_only`}),(0,C.jsx)(`option`,{value:`relay_required`,children:`relay_required`})]})]}),(0,C.jsxs)(`label`,{children:[`NAT`,(0,C.jsxs)(`select`,{value:n.nat,onChange:e=>r({nat:e.target.value}),children:[(0,C.jsx)(`option`,{value:`none`,children:`none`}),(0,C.jsx)(`option`,{value:`unknown`,children:`unknown`}),(0,C.jsx)(`option`,{value:`port_restricted`,children:`port_restricted`}),(0,C.jsx)(`option`,{value:`symmetric`,children:`symmetric`})]})]}),(0,C.jsxs)(`label`,{children:[`Region/site`,(0,C.jsx)(`input`,{value:n.region,onChange:e=>r({region:e.target.value}),placeholder:`dc1, office, docker-test`})]})]}),(0,C.jsx)(`div`,{className:`actions`,children:(0,C.jsx)(`button`,{className:`primary`,onClick:()=>void K(async()=>{let[e,r]=n.autoRange.split(`-`).map(e=>Number(e.trim())),i=Number.isFinite(e)?e:19131,a=Number.isFinite(r)?r:i;await V.setDesiredWorkload(E,t.id,`mesh-listener`,{desiredState:n.mode===`disabled`?`disabled`:`enabled`,version:`listener-${Date.now()}`,runtimeMode:`container`,config:{listen_addr:n.listenAddr,listen_port_mode:n.mode,auto_port_start:i,auto_port_end:a,advertise_endpoint:n.advertiseEndpoint.trim().replace(/\/$/,``)||null,advertise_transport:n.advertiseTransport||`direct_http`,connectivity_mode:n.connectivity,nat_type:n.nat,region:n.region||null},environment:{}})},`Mesh listener config обновлен.`),children:`Применить listener`})})]})})(),(0,C.jsx)(`div`,{className:`actions`,children:(0,C.jsxs)(`select`,{value:t.node_group_id||``,onChange:e=>void K(()=>V.assignNodeGroup(E,t.id,e.target.value||null),e.target.value?`Узел перемещен в группу.`:`Узел убран из группы.`),children:[(0,C.jsx)(`option`,{value:``,children:H.ungroupedNodes}),Ee.map(e=>(0,C.jsx)(`option`,{value:e.id,children:dt(e,Ee)},e.id))]})}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`button`,{onClick:()=>vn(`Отключить участие узла ${t.name}`)&&void K(()=>V.disableMembership(E,t.id,`Отключено из панели владельца платформы.`),`Участие узла отключено.`),children:`Отключить участие`}),(0,C.jsx)(`button`,{className:`danger`,onClick:()=>vn(`Отозвать identity узла ${t.name}`)&&void K(()=>V.revokeNodeIdentity(E,t.id,`Отозвано из панели владельца платформы.`),`Identity узла отозван.`),children:`Отозвать identity`})]})]})]}):(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:H.noActiveClusterMembership}),(0,C.jsx)(`div`,{className:`actions`,children:(0,C.jsx)(`button`,{className:`primary`,onClick:()=>{br(Cr),Sr([]),wr(null)},children:H.connectExistingNode})})]})]})})})(),!1]}),T===`enrollment`&&(0,C.jsxs)(`section`,{className:`grid two`,children:[(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:H.joinTokenTitle}),(0,C.jsx)(`p`,{className:`muted`,children:H.joinTokenText}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[H.ttlHours,(0,C.jsx)(`input`,{type:`number`,min:1,max:720,value:L.ttlHours,onChange:e=>R({...L,ttlHours:Number(e.target.value)})}),(0,C.jsx)(`small`,{children:H.ttlHelp})]}),(0,C.jsxs)(`label`,{children:[H.maxUses,(0,C.jsx)(`input`,{type:`number`,min:1,max:100,value:L.maxUses,onChange:e=>R({...L,maxUses:Number(e.target.value)})}),(0,C.jsx)(`small`,{children:H.maxUsesHelp})]}),(0,C.jsxs)(`label`,{children:[H.nodeOwnership,(0,C.jsxs)(`select`,{value:L.ownershipType,onChange:e=>R({...L,ownershipType:e.target.value}),children:[(0,C.jsx)(`option`,{value:`platform_managed`,children:`platform_managed, управляется платформой`}),(0,C.jsx)(`option`,{value:`customer_managed`,children:`customer_managed, управляется клиентом`})]})]}),(0,C.jsxs)(`label`,{children:[H.tokenPurpose,(0,C.jsx)(`input`,{value:L.purpose,onChange:e=>R({...L,purpose:e.target.value}),placeholder:`например: стартовый entry-node в ru-msk-1`})]}),(0,C.jsxs)(`label`,{children:[`Имя нового узла`,(0,C.jsx)(`input`,{value:L.nodeName,onChange:e=>R({...L,nodeName:e.target.value}),placeholder:Et(L,U)}),(0,C.jsx)(`small`,{children:`Если оставить пустым, панель подставит имя автоматически.`})]}),(0,C.jsxs)(`label`,{children:[`Группа узла`,(0,C.jsxs)(`select`,{value:L.nodeGroupId,onChange:e=>R({...L,nodeGroupId:e.target.value}),children:[(0,C.jsx)(`option`,{value:``,children:`Без группы`}),Ee.map(e=>(0,C.jsx)(`option`,{value:e.id,children:dt(e,Ee)},e.id))]})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Install profile`}),(0,C.jsx)(`p`,{className:`muted`,children:`Эти поля попадут в install profile. Для Windows без админ-прав будет создан user startup task, с админ-правами - system startup task.`}),(0,C.jsx)(`div`,{className:`segmented`,children:[[`docker`,`Docker Linux`],[`linux_binary`,`Ubuntu service`],[`windows_service`,`Windows`]].map(([e,t])=>(0,C.jsx)(`button`,{type:`button`,className:L.installMode===e?`active`:``,onClick:()=>R({...L,installMode:e}),children:t},e))}),(0,C.jsx)(`div`,{className:`segmented`,children:[[`private_lan`,`LAN`],[`direct`,`Public`],[`nat_forward`,`NAT`],[`outbound_only`,`Outbound`]].map(([e,t])=>(0,C.jsx)(`button`,{type:`button`,className:wt(L)===e?`active`:``,onClick:()=>R(Tt(L,e)),children:t},e))}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`Control-plane endpoint`,(0,C.jsx)(`input`,{value:L.controlPlaneEndpoint,onChange:e=>R({...L,controlPlaneEndpoint:e.target.value}),placeholder:bt()})]}),(0,C.jsxs)(`label`,{children:[L.installMode===`windows_service`?`Windows node-agent artifact`:L.installMode===`linux_binary`?`Linux node-agent artifact`:`Docker image`,(0,C.jsx)(`input`,{value:L.dockerImage,onChange:e=>R({...L,dockerImage:e.target.value})})]}),L.installMode===`windows_service`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`label`,{children:[`Windows startup`,(0,C.jsxs)(`select`,{value:L.windowsStartupMode,onChange:e=>R({...L,windowsStartupMode:e.target.value}),children:[(0,C.jsx)(`option`,{value:`auto`,children:`auto: system task, fallback user task`}),(0,C.jsx)(`option`,{value:`system-task`,children:`system task, admin required`}),(0,C.jsx)(`option`,{value:`user-task`,children:`user task, no admin`}),(0,C.jsx)(`option`,{value:`none`,children:`none`})]})]}),(0,C.jsxs)(`label`,{children:[`Install dir`,(0,C.jsx)(`input`,{value:L.windowsInstallDir,onChange:e=>R({...L,windowsInstallDir:e.target.value}),placeholder:`C:\\\\Program Files\\\\RAP\\\\node-name`})]}),(0,C.jsxs)(`label`,{children:[`Windows node-agent SHA256`,(0,C.jsx)(`input`,{value:L.windowsNodeAgentSHA256,onChange:e=>R({...L,windowsNodeAgentSHA256:e.target.value}),placeholder:`опционально, но желательно для production`})]})]}),L.installMode===`linux_binary`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`label`,{children:[`Linux install dir`,(0,C.jsx)(`input`,{value:L.linuxInstallDir,onChange:e=>R({...L,linuxInstallDir:e.target.value}),placeholder:`/opt/rap/node-name`})]}),(0,C.jsxs)(`label`,{children:[`Linux node-agent SHA256`,(0,C.jsx)(`input`,{value:L.linuxNodeAgentSHA256,onChange:e=>R({...L,linuxNodeAgentSHA256:e.target.value}),placeholder:`опционально, но желательно для production`})]})]}),L.installMode===`docker`&&(0,C.jsxs)(`label`,{children:[`Container name`,(0,C.jsx)(`input`,{value:L.dockerContainerName,onChange:e=>R({...L,dockerContainerName:e.target.value}),placeholder:Dt(L,U)})]}),(0,C.jsxs)(`label`,{children:[`Artifact endpoints`,(0,C.jsx)(`input`,{value:L.artifactEndpoints,onChange:e=>R({...L,artifactEndpoints:e.target.value}),placeholder:xt()}),(0,C.jsx)(`small`,{children:`Через запятую: public/LAN/cache узлы, где host-agent сможет скачать image tar до входа в mesh.`})]}),L.installMode===`docker`&&(0,C.jsxs)(`label`,{children:[`Docker image tar SHA256`,(0,C.jsx)(`input`,{value:L.dockerImageArtifactSHA256,onChange:e=>R({...L,dockerImageArtifactSHA256:e.target.value}),placeholder:`опционально, но желательно для production`})]}),L.installMode===`docker`&&(0,C.jsxs)(`label`,{children:[`Docker network`,(0,C.jsxs)(`select`,{value:L.dockerNetwork,onChange:e=>R({...L,dockerNetwork:e.target.value}),children:[(0,C.jsx)(`option`,{value:`host`,children:`host`}),(0,C.jsx)(`option`,{value:`bridge`,children:`bridge`})]})]}),(0,C.jsxs)(`label`,{children:[`Listen addr`,(0,C.jsx)(`input`,{value:L.meshListenAddr,onChange:e=>R({...L,meshListenAddr:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Listen mode`,(0,C.jsxs)(`select`,{value:L.meshListenPortMode,onChange:e=>R({...L,meshListenPortMode:e.target.value}),children:[(0,C.jsx)(`option`,{value:`auto`,children:`auto`}),(0,C.jsx)(`option`,{value:`manual`,children:`manual`}),(0,C.jsx)(`option`,{value:`disabled`,children:`disabled`})]})]}),(0,C.jsxs)(`label`,{children:[`Auto ports`,(0,C.jsx)(`input`,{value:`${L.meshListenAutoPortStart}-${L.meshListenAutoPortEnd}`,onChange:e=>{let[t,n]=e.target.value.split(`-`).map(e=>Number(e.trim()));R({...L,meshListenAutoPortStart:Number.isFinite(t)?t:L.meshListenAutoPortStart,meshListenAutoPortEnd:Number.isFinite(n)?n:L.meshListenAutoPortEnd})}})]}),(0,C.jsxs)(`label`,{children:[`Advertise endpoint`,(0,C.jsx)(`input`,{value:L.meshAdvertiseEndpoint,onChange:e=>R({...L,meshAdvertiseEndpoint:e.target.value}),placeholder:`http://public-or-private-ip:19131`})]}),(0,C.jsxs)(`label`,{children:[`Connectivity`,(0,C.jsxs)(`select`,{value:L.meshConnectivityMode,onChange:e=>R({...L,meshConnectivityMode:e.target.value}),children:[(0,C.jsx)(`option`,{value:`direct`,children:`direct`}),(0,C.jsx)(`option`,{value:`private_lan`,children:`private_lan`}),(0,C.jsx)(`option`,{value:`outbound_only`,children:`outbound_only`}),(0,C.jsx)(`option`,{value:`relay_required`,children:`relay_required`})]})]}),(0,C.jsxs)(`label`,{children:[`NAT`,(0,C.jsxs)(`select`,{value:L.meshNATType,onChange:e=>R({...L,meshNATType:e.target.value}),children:[(0,C.jsx)(`option`,{value:`none`,children:`none`}),(0,C.jsx)(`option`,{value:`unknown`,children:`unknown`}),(0,C.jsx)(`option`,{value:`full_cone`,children:`full_cone`}),(0,C.jsx)(`option`,{value:`port_restricted`,children:`port_restricted`}),(0,C.jsx)(`option`,{value:`symmetric`,children:`symmetric`})]})]}),(0,C.jsxs)(`label`,{children:[`Region/site`,(0,C.jsx)(`input`,{value:L.meshRegion,onChange:e=>R({...L,meshRegion:e.target.value})})]}),L.installMode===`docker`&&(0,C.jsxs)(`label`,{className:`checkLine`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:L.pullImage,onChange:e=>R({...L,pullImage:e.target.checked})}),`Pull image`]}),(0,C.jsxs)(`label`,{className:`checkLine`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:L.replace,onChange:e=>R({...L,replace:e.target.checked})}),`Replace existing install`]})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:H.suggestedRoles}),(0,C.jsx)(`p`,{className:`muted`,children:`Роли записываются в install token и автоматически назначаются узлу при approval. После создания token изменение чекбоксов не меняет уже выданный token.`}),(0,C.jsx)(`div`,{className:`checkGrid`,children:ne.map(e=>(0,C.jsxs)(`label`,{className:`checkLine`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:L.roles.includes(e),onChange:()=>R({...L,roles:Zt(L.roles,e)})}),Ie(e)]},e))})]}),(0,C.jsxs)(`details`,{children:[(0,C.jsx)(`summary`,{children:H.generatedScope}),(0,C.jsx)(`p`,{className:`muted`,children:H.generatedScopeHelp}),(0,C.jsx)(`pre`,{className:`codePreview`,children:JSON.stringify(Si,null,2)})]}),(0,C.jsxs)(`p`,{className:`muted`,children:[H.manualApprovalRequired,`.`]}),(0,C.jsx)(`button`,{className:`primary`,disabled:!E,onClick:()=>void K(async()=>{ir(await V.createJoinToken(E,{ttlHours:L.ttlHours,maxUses:L.maxUses,scope:Si}))},`Join token создан.`),children:`Создать install token`}),rr&&(0,C.jsxs)(`div`,{className:`secretOnce`,children:[(0,C.jsx)(`strong`,{children:`Исходный token, возвращается один раз`}),(0,C.jsx)(`code`,{children:rr.token}),(0,C.jsxs)(`span`,{className:`muted`,children:[`Authority key: `,P(rr.authority_signature?.key_fingerprint)]}),(0,C.jsx)(`strong`,{children:`Scope выданного token`}),(0,C.jsx)(`pre`,{className:`codePreview`,children:JSON.stringify(rr.scope,null,2)}),(0,C.jsx)(`strong`,{children:`Docker host-agent install`}),(0,C.jsx)(`pre`,{className:`codePreview`,children:Ot(rr,U,Ci)}),(0,C.jsx)(`strong`,{children:`Profile-based Docker install`}),(0,C.jsx)(`pre`,{className:`codePreview`,children:kt(rr,U,Ci)}),(0,C.jsx)(`strong`,{children:`Profile-based Ubuntu service install`}),(0,C.jsx)(`pre`,{className:`codePreview`,children:At(rr,U,Ci)}),(0,C.jsx)(`strong`,{children:`Profile-based Windows PowerShell install`}),(0,C.jsx)(`pre`,{className:`codePreview`,children:jt(rr,U,Ci)}),(0,C.jsx)(`strong`,{children:`Profile-based Windows CMD install`}),(0,C.jsx)(`pre`,{className:`codePreview`,children:Mt(rr,U,Ci)})]})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Как добавить узел`}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsxs)(`div`,{className:`stateLine`,children:[(0,C.jsx)(`span`,{children:`1`}),(0,C.jsx)(`strong`,{children:`Заполните Docker install profile слева.`})]}),(0,C.jsxs)(`div`,{className:`stateLine`,children:[(0,C.jsx)(`span`,{children:`2`}),(0,C.jsx)(`strong`,{children:`Нажмите “Создать install token”.`})]}),(0,C.jsxs)(`div`,{className:`stateLine`,children:[(0,C.jsx)(`span`,{children:`3`}),(0,C.jsx)(`strong`,{children:`Скопируйте “Profile-based Docker install” и выполните на Docker-хосте.`})]}),(0,C.jsxs)(`div`,{className:`stateLine`,children:[(0,C.jsx)(`span`,{children:`4`}),(0,C.jsx)(`strong`,{children:`Подтвердите join request в этой же вкладке.`})]})]})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Install tokens`}),(0,C.jsx)(je,{columns:[`scope`,`status`,`uses`,`expires`,`created`,`action`],rows:Be.map(e=>[Ke(e),I(e.status),`${e.used_count}/${e.max_uses}`,F(e.expires_at),F(e.created_at),e.status===`active`?(0,C.jsx)(`button`,{className:`danger`,onClick:()=>vn(`Отозвать install token ${P(e.id)}`)&&void K(()=>V.revokeJoinToken(E,e.id),`Install token отозван.`),children:`Отозвать`}):(0,C.jsx)(`span`,{className:`muted`,children:I(e.status)})])})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Заявки на подключение`}),(0,C.jsxs)(`div`,{className:`stack`,children:[Fe.map(e=>(0,C.jsxs)(`div`,{className:`requestCard`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`strong`,{children:e.node_name}),(0,C.jsx)(`p`,{children:e.node_fingerprint}),(0,C.jsx)(de,{value:e.status}),e.approval_signature?.key_fingerprint&&(0,C.jsxs)(`small`,{className:`muted`,children:[`approval key `,P(e.approval_signature.key_fingerprint)]})]}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`button`,{disabled:e.status!==`pending`,onClick:()=>void K(()=>V.approveJoinRequest(E,e.id),`Заявка одобрена.`),children:`Одобрить`}),(0,C.jsx)(`button`,{disabled:e.status!==`pending`,onClick:()=>void K(()=>V.rejectJoinRequest(E,e.id,`Отклонено из панели владельца платформы.`),`Заявка отклонена.`),children:`Отклонить`})]})]},e.id)),Fe.length===0&&(0,C.jsx)(pe,{title:`Нет заявок`,text:`Новые подключения node-agent появятся здесь.`})]})]})]}),T===`roles`&&(0,C.jsxs)(`section`,{className:`stack`,children:[(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Область ролей`}),(0,C.jsx)(`p`,{className:`muted`,children:`Capabilities — технические факты. Роли — явные разрешения. Область организации может ограничивать сервисные роли.`}),(0,C.jsxs)(`label`,{children:[`UUID организации для новых назначений ролей, опционально`,(0,C.jsx)(`input`,{value:sr,onChange:e=>cr(e.target.value),placeholder:`пусто = роль на весь кластер`})]})]}),j.map(e=>(0,C.jsxs)(`article`,{className:`card roleRow`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:e.name}),(0,C.jsx)(`p`,{children:Pe(tt[e.id]||[])})]}),(0,C.jsxs)(`select`,{defaultValue:``,onChange:t=>{let n=t.target.value;t.currentTarget.value=``,n&&K(()=>V.assignRole(E,e.id,n,sr||void 0),`${n} назначена узлу ${e.name}.`)},children:[(0,C.jsx)(`option`,{value:``,children:`Назначить роль...`}),ne.map(e=>(0,C.jsx)(`option`,{value:e,children:Ie(e)},e))]})]},e.id))]}),T===`workloads`&&(0,C.jsxs)(`section`,{className:`grid two`,children:[(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Желаемое состояние сервиса`}),(0,C.jsx)(`p`,{className:`muted`,children:`Здесь задается только желаемое состояние. Runtime-исполнение остается под контролем node-agent и политик.`}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`Узел`,(0,C.jsxs)(`select`,{value:Ur.nodeId,onChange:e=>Wr({...Ur,nodeId:e.target.value}),children:[(0,C.jsx)(`option`,{value:``,children:`Выберите узел...`}),j.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}),(0,C.jsxs)(`label`,{children:[`Сервис`,(0,C.jsx)(`select`,{value:Ur.serviceType,onChange:e=>Wr({...Ur,serviceType:e.target.value}),children:ne.map(e=>(0,C.jsx)(`option`,{value:e,children:Ie(e)},e))})]}),(0,C.jsxs)(`label`,{children:[`Желаемое состояние`,(0,C.jsxs)(`select`,{value:Ur.desiredState,onChange:e=>Wr({...Ur,desiredState:e.target.value}),children:[(0,C.jsx)(`option`,{value:`enabled`,children:`включено`}),(0,C.jsx)(`option`,{value:`disabled`,children:`выключено`})]})]}),(0,C.jsxs)(`label`,{children:[`Режим runtime`,(0,C.jsxs)(`select`,{value:Ur.runtimeMode,onChange:e=>Wr({...Ur,runtimeMode:e.target.value}),children:[(0,C.jsx)(`option`,{value:`container`,children:`контейнер`}),(0,C.jsx)(`option`,{value:`native`,children:`нативно`})]})]}),(0,C.jsxs)(`label`,{children:[`Версия`,(0,C.jsx)(`input`,{value:Ur.version,onChange:e=>Wr({...Ur,version:e.target.value})})]})]}),(0,C.jsxs)(`label`,{children:[`Config JSON`,(0,C.jsx)(`textarea`,{value:Ur.configJson,onChange:e=>Wr({...Ur,configJson:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Environment JSON`,(0,C.jsx)(`textarea`,{value:Ur.environmentJson,onChange:e=>Wr({...Ur,environmentJson:e.target.value})})]}),(0,C.jsx)(`button`,{className:`primary`,disabled:!Ur.nodeId||!E,onClick:()=>void K(()=>V.setDesiredWorkload(E,Ur.nodeId,Ur.serviceType,{desiredState:Ur.desiredState,runtimeMode:Ur.runtimeMode,version:Ur.version,config:Me(Ur.configJson,`config сервиса`),environment:Me(Ur.environmentJson,`environment сервиса`)}),`Желаемое состояние сервиса обновлено.`),children:`Задать желаемое состояние`})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Отчеты сервисов`}),(0,C.jsx)(`div`,{className:`stack`,children:j.map(e=>(0,C.jsxs)(`div`,{className:`workloadBlock`,children:[(0,C.jsx)(`strong`,{children:e.name}),(ot[e.id]||[]).length===0?(0,C.jsx)(`p`,{className:`muted`,children:`Статус пока не получен.`}):(0,C.jsx)(je,{columns:[`сервис`,`состояние`,`runtime`,`наблюдение`],rows:(ot[e.id]||[]).map(e=>[e.service_type,e.reported_state,e.runtime_mode,F(e.observed_at)])})]},e.id))})]})]}),T===`fabric`&&(0,C.jsxs)(`section`,{className:`grid two`,children:[(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsx)(`h3`,{children:`Граница подготовки Fabric`}),(0,C.jsx)(`p`,{className:`muted`,children:"Этот экран показывает synthetic/control-plane подготовку и C17Z11 boundary: production forwarding доступен только для route-bound `fabric.control` при явном gate. Service traffic, RDP, VPN и произвольный relay здесь не включены."}),(0,C.jsxs)(`div`,{className:`signalStrip`,children:[(0,C.jsx)(k,{label:`Synthetic configs`,value:`${Wi}/${j.length}`}),(0,C.jsx)(k,{label:`Routes`,value:String(Gi)}),(0,C.jsx)(k,{label:`Endpoints / candidates`,value:`${Ki}/${qi}`}),(0,C.jsx)(k,{label:`Peer dir / seeds`,value:`${Ji}/${Yi}`}),(0,C.jsx)(k,{label:`Scoped production flag`,value:Xi===0?`false`:`true:${Xi}`})]})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:H.fabricEntryPoints}),(0,C.jsx)(`p`,{className:`muted`,children:H.fabricEntryPointHelp})]}),(0,C.jsx)(`span`,{className:`pill`,children:Vt.length})]}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[H.endpointName,(0,C.jsx)(`input`,{value:$n.name,onChange:e=>er({...$n,name:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[H.endpointType,(0,C.jsxs)(`select`,{value:$n.endpointType,onChange:e=>er({...$n,endpointType:e.target.value}),children:[(0,C.jsx)(`option`,{value:`client_access`,children:`client_access`}),(0,C.jsx)(`option`,{value:`admin`,children:`admin`}),(0,C.jsx)(`option`,{value:`api`,children:`api`}),(0,C.jsx)(`option`,{value:`other`,children:`other`})]})]}),(0,C.jsxs)(`label`,{className:`span2`,children:[H.publicEndpoint,(0,C.jsx)(`input`,{placeholder:`wss://entry.example.com`,value:$n.publicEndpoint,onChange:e=>er({...$n,publicEndpoint:e.target.value})})]})]}),(0,C.jsx)(`div`,{className:`actions`,children:(0,C.jsx)(`button`,{className:`primary`,disabled:!$n.name.trim(),onClick:()=>void K(async()=>{await V.createFabricEntryPoint(E,{name:$n.name,endpointType:$n.endpointType,publicEndpoint:$n.publicEndpoint||null}),er({name:``,endpointType:`client_access`,publicEndpoint:``})},`Точка входа создана.`),children:H.createEntryPoint})}),(0,C.jsxs)(`div`,{className:`stack`,children:[Vt.map(e=>{let t=Ut[e.id]||[];return(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h4`,{children:e.name}),(0,C.jsxs)(`p`,{className:`muted`,children:[e.endpoint_type,` · `,e.public_endpoint||H.addressNotSet]})]}),(0,C.jsx)(de,{value:e.status})]}),(0,C.jsx)(`h5`,{children:H.endpointNodes}),t.length===0?(0,C.jsx)(`p`,{className:`muted`,children:H.assignedNodesEmpty}):(0,C.jsx)(`div`,{className:`membershipList`,children:t.map(t=>(0,C.jsxs)(`span`,{className:t.status===`active`?`pill good`:`pill`,children:[ut(j,t.node_id),` · `,I(t.status),` · p`,t.priority]},`${e.id}-${t.node_id}`))}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsxs)(`select`,{value:Nr[e.id]||``,onChange:t=>Pr({...Nr,[e.id]:t.target.value}),children:[(0,C.jsx)(`option`,{value:``,children:H.selectNode}),j.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),(0,C.jsx)(`button`,{disabled:!Nr[e.id],onClick:()=>void K(()=>V.setFabricEntryPointNode(E,e.id,Nr[e.id],{status:`active`}),`Узел назначен точке входа.`),children:H.assignEndpointNode})]})]},e.id)}),Vt.length===0&&(0,C.jsx)(pe,{title:H.fabricEntryPoints,text:H.entryPointsEmpty})]})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:H.fabricEgressPools}),(0,C.jsx)(`p`,{className:`muted`,children:H.fabricEgressPoolHelp})]}),(0,C.jsx)(`span`,{className:`pill`,children:Gt.length})]}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[H.endpointName,(0,C.jsx)(`input`,{value:tr.name,onChange:e=>nr({...tr,name:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[H.description,(0,C.jsx)(`input`,{value:tr.description,onChange:e=>nr({...tr,description:e.target.value})})]}),(0,C.jsxs)(`label`,{className:`span2`,children:[H.routeScope,(0,C.jsx)(`textarea`,{rows:5,value:tr.routeScope,onChange:e=>nr({...tr,routeScope:e.target.value})})]})]}),(0,C.jsx)(`div`,{className:`actions`,children:(0,C.jsx)(`button`,{className:`primary`,disabled:!tr.name.trim(),onClick:()=>void K(async()=>{let e=Me(tr.routeScope,`Route scope JSON`);await V.createFabricEgressPool(E,{name:tr.name,description:tr.description||null,routeScope:e}),nr({name:``,description:``,routeScope:`{
"routes": []
}`})},`Выходная зона создана.`),children:H.createEgressPool})}),(0,C.jsxs)(`div`,{className:`stack`,children:[Gt.map(e=>{let t=qt[e.id]||[];return(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h4`,{children:e.name}),(0,C.jsx)(`p`,{className:`muted`,children:e.description||H.descriptionNotSet})]}),(0,C.jsx)(de,{value:e.status})]}),(0,C.jsx)(`p`,{className:`muted`,children:JSON.stringify(e.route_scope||{})}),(0,C.jsx)(`h5`,{children:H.endpointNodes}),t.length===0?(0,C.jsx)(`p`,{className:`muted`,children:H.assignedNodesEmpty}):(0,C.jsx)(`div`,{className:`membershipList`,children:t.map(t=>(0,C.jsxs)(`span`,{className:t.status===`active`?`pill good`:`pill`,children:[ut(j,t.node_id),` · `,I(t.status),` · p`,t.priority]},`${e.id}-${t.node_id}`))}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsxs)(`select`,{value:Fr[e.id]||``,onChange:t=>Ir({...Fr,[e.id]:t.target.value}),children:[(0,C.jsx)(`option`,{value:``,children:H.selectNode}),j.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),(0,C.jsx)(`button`,{disabled:!Fr[e.id],onClick:()=>void K(()=>V.setFabricEgressPoolNode(E,e.id,Fr[e.id],{status:`active`}),`Узел назначен выходной зоне.`),children:H.assignEndpointNode})]})]},e.id)}),Gt.length===0&&(0,C.jsx)(pe,{title:H.fabricEgressPools,text:H.egressPoolsEmpty})]})]}),(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:H.fabricMap}),(0,C.jsx)(`p`,{className:`muted`,children:`Визуальный слой показывает, какие узлы живы, какие сервисы на них назначены и какие тестовые наблюдения связей проходят между ними.`})]}),(0,C.jsx)(de,{value:Hi?.synthetic_links_enabled?`enabled`:`disabled`})]}),(0,C.jsx)(be,{nodes:j,links:Ft,syntheticMeshConfigsByNode:Lt,entryPoints:Vt,entryPointNodesById:Ut,egressPools:Gt,egressPoolNodesById:qt,rolesByNode:tt,workloadsByNode:ot,telemetryByNode:Nt,labels:H,emptyText:H.noLinks})]}),(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:`Synthetic mesh config`}),(0,C.jsx)(`p`,{className:`muted`,children:`Node-scoped config from Control Plane. Endpoint candidates and scoring inputs are visible to the platform owner only; production forwarding for service traffic must remain disabled here.`})]}),(0,C.jsxs)(`span`,{className:Xi===0?`pill good`:`pill bad`,children:[`production_forwarding=`,Xi===0?`false`:`true`]})]}),(0,C.jsx)(je,{columns:[`узел`,`config`,`routes`,`peer endpoints`,`candidates`,`peer dir`,`recovery seeds`,`rendezvous leases`,`relay policy`,`path decisions`,`authority`,`scoped production`],rows:j.map(e=>{let t=Lt[e.id];return[e.name,t?t.enabled?`enabled`:`disabled`:`не загружен`,String(t?.routes.length??0),String(Object.keys(t?.peer_endpoints||{}).length),String(t?st(t):0),String(t?.peer_directory?.length??0),String(t?.recovery_seeds?.length??0),String(t?.rendezvous_leases?.length??0),ct(t),lt(t),t?.authority_required?P(t.authority_signature?.key_fingerprint):`не требуется`,t?.production_forwarding?`true`:`false`]})}),(0,C.jsx)(`p`,{className:`muted`,children:`Health-aware scoring не выбирает service route и не открывает service-соединения. C17Z19 показывает control-plane route/path decisions, route generation status, synthetic route-health effective path и relay feedback scoring, но не переносит RDP/VPN/file/video/service payload.`})]}),(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsx)(`h3`,{children:H.servicePlacement}),(0,C.jsx)(je,{columns:[`узел`,`runtime`,`адрес`,`здоровье`,`роли`,`желаемые / reported сервисы`,`последний heartbeat`],rows:j.map(e=>{let t=rt(e,St[e.id]||[],Ft);return[e.name,(0,C.jsx)(ve,{runtime:t}),t.address,e.health_status,Pe(tt[e.id]||[]),Le(ot[e.id]||[]),F((St[e.id]||[])[0]?.observed_at||e.last_seen_at)]})})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:H.trafficFlow}),(0,C.jsx)(je,{columns:[`источник`,`цель`,`тип`,`route/path`,`статус`,`задержка`,`качество`,`наблюдение`],rows:qe(Ft).filter(e=>e.source_node_id!==e.target_node_id).map(e=>{let t=j.find(t=>t.id===e.source_node_id),n=j.find(t=>t.id===e.target_node_id);return[(0,C.jsx)(ye,{node:t,fallback:ut(j,e.source_node_id),heartbeatsByNode:St,meshLinks:Ft}),(0,C.jsx)(ye,{node:n,fallback:ut(j,e.target_node_id),heartbeatsByNode:St,meshLinks:Ft}),Ye(e),Xe(e,j),e.link_status,e.latency_ms==null?`н/д`:`${e.latency_ms} мс`,e.quality_score==null?`н/д`:`${e.quality_score}/100`,F(e.observed_at)]})})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Политики QoS`}),(0,C.jsx)(je,{columns:[`класс`,`приоритет`,`надежность`,`политика сброса`],rows:zt.map(e=>[e.service_class,String(e.priority),e.reliability_mode,e.drop_policy])})]})]}),T===`vpn`&&(0,C.jsxs)(`section`,{className:`grid two`,children:[(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Создать желаемое состояние VPN-подключения`}),(0,C.jsx)(`p`,{className:`muted`,children:`Только control-plane. Здесь не выполняются TUN/TAP, маршруты, DNS, firewall, QoS или packet forwarding.`}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`ID организации`,(0,C.jsx)(`input`,{value:z.organizationId,onChange:e=>Gr({...z,organizationId:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Название`,(0,C.jsx)(`input`,{value:z.name,onChange:e=>Gr({...z,name:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Протокол`,(0,C.jsxs)(`select`,{value:z.protocolFamily,onChange:e=>Gr({...z,protocolFamily:e.target.value}),children:[(0,C.jsx)(`option`,{value:`generic`,children:`generic`}),(0,C.jsx)(`option`,{value:`wireguard`,children:`wireguard`}),(0,C.jsx)(`option`,{value:`ipsec`,children:`ipsec`}),(0,C.jsx)(`option`,{value:`openvpn`,children:`openvpn`})]})]}),(0,C.jsxs)(`label`,{children:[`Желаемое состояние`,(0,C.jsxs)(`select`,{value:z.desiredState,onChange:e=>Gr({...z,desiredState:e.target.value}),children:[(0,C.jsx)(`option`,{value:`disabled`,children:`выключено`}),(0,C.jsx)(`option`,{value:`enabled`,children:`включено`})]})]}),(0,C.jsxs)(`label`,{children:[`Ссылка на credential`,(0,C.jsx)(`input`,{value:z.credentialRef,onChange:e=>Gr({...z,credentialRef:e.target.value})})]})]}),(0,C.jsxs)(`label`,{children:[`Целевой endpoint JSON`,(0,C.jsx)(`textarea`,{value:z.targetEndpointJson,onChange:e=>Gr({...z,targetEndpointJson:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Политика разрешенных узлов JSON`,(0,C.jsx)(`textarea`,{value:z.allowedNodePolicyJson,onChange:e=>Gr({...z,allowedNodePolicyJson:e.target.value})})]}),(0,C.jsxs)(`details`,{children:[(0,C.jsx)(`summary`,{children:`Расширенные routing / QoS / placement JSON`}),(0,C.jsxs)(`label`,{children:[`Использование маршрутизации JSON`,(0,C.jsx)(`textarea`,{value:z.routingUsageJson,onChange:e=>Gr({...z,routingUsageJson:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Политика маршрута JSON`,(0,C.jsx)(`textarea`,{value:z.routePolicyJson,onChange:e=>Gr({...z,routePolicyJson:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Политика QoS JSON`,(0,C.jsx)(`textarea`,{value:z.qosPolicyJson,onChange:e=>Gr({...z,qosPolicyJson:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Политика размещения JSON`,(0,C.jsx)(`textarea`,{value:z.placementPolicyJson,onChange:e=>Gr({...z,placementPolicyJson:e.target.value})})]})]}),(0,C.jsx)(`button`,{className:`primary`,disabled:!E||!z.organizationId||!z.name,onClick:()=>void K(()=>V.createVPNConnection(E,{organizationId:z.organizationId,name:z.name,protocolFamily:z.protocolFamily,credentialRef:z.credentialRef||null,desiredState:z.desiredState,targetEndpoint:Me(z.targetEndpointJson,`target endpoint`),allowedNodePolicy:Me(z.allowedNodePolicyJson,`allowed node policy`),routingUsage:Ne(z.routingUsageJson,`routing usage`),routePolicy:Me(z.routePolicyJson,`route policy`),qosPolicy:Me(z.qosPolicyJson,`qos policy`),placementPolicy:Me(z.placementPolicyJson,`placement policy`)}),`Желаемое состояние VPN создано.`),children:`Создать желаемое состояние VPN`})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:`VPN-подключения`}),(0,C.jsx)(`p`,{className:`muted`,children:`Cluster-managed состояние, gateway packet stats и диагностика Android-клиента.`})]}),(0,C.jsxs)(`div`,{className:`actions compactActions`,children:[(0,C.jsx)(`button`,{onClick:()=>void K(async()=>{Kn(`Истекшие VPN lease: ${(await V.expireStaleVPNLeases(E)).length}.`)},`Stale VPN lease проверены.`),children:`Проверить stale lease`}),(0,C.jsx)(`button`,{onClick:()=>void Mi(),children:`Обновить клиент`})]})]}),(0,C.jsxs)(`div`,{className:`inlineForm`,children:[(0,C.jsxs)(`label`,{children:[`Android device id`,(0,C.jsx)(`input`,{value:ln,placeholder:`0315f630-...`,onChange:e=>un(e.target.value),onBlur:()=>localStorage.setItem(w.vpnDiagnosticDeviceId,ln.trim())})]}),dn.length>0&&(0,C.jsxs)(`label`,{children:[`Найденные клиенты`,(0,C.jsx)(`select`,{value:ln,onChange:e=>{let t=e.target.value;un(t),localStorage.setItem(w.vpnDiagnosticDeviceId,t),mn(dn.find(e=>e.device_id===t)||null)},children:dn.map(e=>{let t=et(e.payload)||{};return(0,C.jsxs)(`option`,{value:e.device_id,children:[P(e.device_id),` / `,M(t,`app_version`,`н/д`),` / `,F(e.observed_at)]},e.device_id)})})]})]}),(0,C.jsxs)(`div`,{className:`diagnosticCommandPanel`,children:[(0,C.jsxs)(`label`,{children:[`URL для теста`,(0,C.jsx)(`input`,{value:gn,onChange:e=>_n(e.target.value)})]}),(0,C.jsxs)(`div`,{className:`actions compactActions`,children:[(0,C.jsx)(`button`,{onClick:()=>void Ni({type:`refresh_profile`},`Профиль`),children:`Обновить профиль`}),(0,C.jsx)(`button`,{onClick:()=>void Ni({type:`start_vpn`},`VPN`),children:`Старт VPN`}),(0,C.jsx)(`button`,{onClick:()=>void Ni({type:`stop_vpn`},`VPN`),children:`Стоп VPN`}),(0,C.jsx)(`button`,{onClick:()=>void Ni({type:`vpn_stats`},`Stats`),children:`Stats`}),(0,C.jsx)(`button`,{onClick:()=>void Ni({type:`vpn_http_get`,url:gn},`VPN HTTP`),children:`VPN HTTP`}),(0,C.jsx)(`button`,{onClick:()=>void Ni({type:`open_url`,url:gn},`Открыть URL`),children:`Открыть URL`}),(0,C.jsx)(`button`,{className:`primary`,onClick:()=>void Ni({type:`full_vpn_test`,url:gn,watch_seconds:45},`Полный VPN test`),children:`Полный тест`})]}),xn&&(0,C.jsxs)(`p`,{className:`muted`,children:[`Последняя команда: `,M(xn.payload,`type`,`н/д`),` / `,F(xn.created_at)]})]}),me(pn),(0,C.jsxs)(`div`,{className:`stack`,children:[Xt.map(e=>{let t=et(e.metadata?.client_config),n=et(t?.vpn_fabric_route),r=vt(n?.entry_pool_node_ids||e.placement_policy?.entry_node_ids),i=vt(n?.exit_pool_node_ids||e.placement_policy?.exit_node_ids),a=String(n?.selected_entry_node_id||r[0]||``),o=String(n?.selected_exit_node_id||tn[e.id]?.owner_node_id||e.placement_policy?.exit_node_id||i[0]||``),s=sn[e.id]||{};return(0,C.jsxs)(`div`,{className:`vpnCard`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`strong`,{children:e.name}),(0,C.jsxs)(`p`,{className:`muted`,children:[e.protocol_family,` / `,e.mode,` / организация `,P(e.organization_id)]}),(0,C.jsx)(de,{value:e.desired_state}),(0,C.jsx)(de,{value:e.status}),(0,C.jsx)(`span`,{className:`pill ${t?.packet_forwarding?`good`:`warn`}`,children:t?.packet_forwarding?`gateway packet relay active`:`gateway packet relay inactive`}),(0,C.jsxs)(`span`,{className:`pill`,children:[String(n?.preferred_data_plane||`backend_relay`),` / fallback `,String(n?.fallback_data_plane||`н/д`)]})]}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Секрет`,value:e.credential_ref?`задан`:`не задан`}),(0,C.jsx)(A,{label:`Активный lease`,value:tn[e.id]?P(tn[e.id]?.owner_node_id):`нет`}),(0,C.jsx)(A,{label:`Fabric route`,value:`${a?ut(j,a):`entry auto`} -> ${o?ut(j,o):`exit auto`}`}),(0,C.jsx)(A,{label:`Entry pool`,value:r.map(e=>ut(j,e)).join(`, `)||`н/д`}),(0,C.jsx)(A,{label:`Exit pool`,value:i.map(e=>ut(j,e)).join(`, `)||`н/д`}),(0,C.jsx)(A,{label:`Runtime`,value:String(t?.runtime_status||`н/д`)}),(0,C.jsx)(A,{label:`Gateway`,value:String(t?.gateway_assignment_status||`н/д`)}),(0,C.jsx)(A,{label:`Client -> gateway`,value:He(s.client_to_gateway)}),(0,C.jsx)(A,{label:`Gateway -> client`,value:He(s.gateway_to_client)}),(0,C.jsx)(A,{label:`Обновлено`,value:F(e.updated_at)})]}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`button`,{disabled:e.desired_state===`enabled`,onClick:()=>void K(()=>V.updateVPNConnectionDesiredState(E,e.id,`enabled`),`Желаемое состояние VPN включено.`),children:`Включить`}),(0,C.jsx)(`button`,{disabled:e.desired_state===`disabled`,onClick:()=>void K(()=>V.updateVPNConnectionDesiredState(E,e.id,`disabled`),`Желаемое состояние VPN выключено.`),children:`Выключить`})]})]},e.id)}),Xt.length===0&&(0,C.jsx)(pe,{title:`Нет желаемого состояния VPN`,text:`Control-plane записи C18 появятся здесь.`})]})]})]}),T===`org-safe`&&(0,C.jsxs)(`section`,{className:`grid two`,children:[(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:`Организации и пользователи`}),(0,C.jsx)(`p`,{className:`muted`,children:`Операционный слой для владельца платформы: tenant scope, роли участников и безопасная сводка без раскрытия core mesh.`})]}),(0,C.jsx)(`span`,{className:`pill`,children:Cn.length})]}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`Slug`,(0,C.jsx)(`input`,{value:Kr.slug,onChange:e=>qr({...Kr,slug:e.target.value}),placeholder:`home`})]}),(0,C.jsxs)(`label`,{children:[`Название`,(0,C.jsx)(`input`,{value:Kr.name,onChange:e=>qr({...Kr,name:e.target.value}),placeholder:`HOME`})]})]}),(0,C.jsx)(`div`,{className:`actions`,children:(0,C.jsx)(`button`,{className:`primary`,disabled:!Kr.slug.trim()||!Kr.name.trim(),onClick:()=>void K(async()=>{let e=await V.createOrganization(Kr);qr({slug:``,name:``}),Rn(e.id),Zr(t=>({...t,organizationId:e.id})),ni(t=>({...t,organizationId:e.id}))},`Организация создана.`),children:`Создать организацию`})}),(0,C.jsx)(je,{columns:[`организация`,`slug`,`статус`,`ресурсы`,`участники`,`действие`],rows:Cn.map(e=>{let t=Dn.filter(t=>t.organization_id===e.id),n=kn[e.id]||[];return[e.name,e.slug,(0,C.jsx)(de,{value:e.status}),String(t.length),String(n.length),(0,C.jsx)(`div`,{className:`actions`,children:(0,C.jsx)(`button`,{onClick:()=>void K(async()=>{Rn(e.id),Bn(await V.getOrganizationAdminSummary(e.id))},`Сводка организации загружена.`),children:`Открыть`})},e.id)]})})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Пользователь`}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`Email / логин`,(0,C.jsx)(`input`,{value:Jr.email,onChange:e=>Yr({...Jr,email:e.target.value}),placeholder:`user@example.com`})]}),(0,C.jsxs)(`label`,{children:[`Пароль`,(0,C.jsx)(`input`,{type:`password`,value:Jr.password,onChange:e=>Yr({...Jr,password:e.target.value}),placeholder:`минимум 8 символов`})]}),(0,C.jsxs)(`label`,{children:[`Роль платформы`,(0,C.jsxs)(`select`,{value:Jr.platformRole,onChange:e=>Yr({...Jr,platformRole:e.target.value}),children:[(0,C.jsx)(`option`,{value:`user`,children:`user`}),(0,C.jsx)(`option`,{value:`platform_admin`,children:`platform_admin`}),(0,C.jsx)(`option`,{value:`platform_recovery_admin`,children:`platform_recovery_admin`})]})]})]}),(0,C.jsx)(`div`,{className:`actions`,children:(0,C.jsx)(`button`,{disabled:!Jr.email.trim()||Jr.password.length<8,onClick:()=>void K(async()=>{let e=await V.createUser(Jr);En(await V.listUsers()),Yr({email:``,password:``,platformRole:`user`}),Zr(t=>({...t,userId:e.id}))},`Пользователь создан.`),children:`Создать пользователя`})}),(0,C.jsx)(je,{columns:[`пользователь`,`роль платформы`,`id`],rows:Tn.map(e=>[e.email,(0,C.jsx)(de,{value:e.platform_role||`user`}),(0,C.jsx)(`code`,{children:e.id})])})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Участник организации`}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`Организация`,(0,C.jsxs)(`select`,{value:Xr.organizationId,onChange:e=>Zr({...Xr,organizationId:e.target.value}),children:[(0,C.jsx)(`option`,{value:``,children:`Выберите организацию`}),Cn.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}),(0,C.jsxs)(`label`,{children:[`Пользователь`,(0,C.jsxs)(`select`,{value:Xr.userId,onChange:e=>Zr({...Xr,userId:e.target.value}),children:[(0,C.jsx)(`option`,{value:``,children:`Выберите пользователя`}),Tn.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.email},e.id))]})]}),(0,C.jsxs)(`label`,{children:[`Роль`,(0,C.jsxs)(`select`,{value:Xr.roleId,onChange:e=>Zr({...Xr,roleId:e.target.value}),children:[(0,C.jsx)(`option`,{value:`org_owner`,children:`org_owner`}),(0,C.jsx)(`option`,{value:`org_admin`,children:`org_admin`}),(0,C.jsx)(`option`,{value:`org_operator`,children:`org_operator`}),(0,C.jsx)(`option`,{value:`org_member`,children:`org_member`}),(0,C.jsx)(`option`,{value:`org_viewer`,children:`org_viewer`})]})]})]}),(0,C.jsx)(`div`,{className:`actions`,children:(0,C.jsx)(`button`,{disabled:!Xr.organizationId||!Xr.userId.trim(),onClick:()=>void K(()=>V.addOrganizationMembership(Xr.organizationId,{userId:Xr.userId,roleId:Xr.roleId}),`Участник организации сохранен.`),children:`Сохранить участника`})})]}),(0,C.jsxs)(`article`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Безопасная сводка`}),(0,C.jsxs)(`div`,{className:`inlineForm`,children:[(0,C.jsxs)(`select`,{value:Ln,onChange:e=>Rn(e.target.value),children:[(0,C.jsx)(`option`,{value:``,children:`Выберите организацию`}),Cn.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),(0,C.jsx)(`button`,{disabled:!Ln,onClick:()=>void K(async()=>{Bn(await V.getOrganizationAdminSummary(Ln))},`Сводка организации загружена.`),children:`Обновить`})]}),zn?(0,C.jsxs)(`div`,{className:`stack`,children:[(0,C.jsx)(ue,{label:`Ресурсы`,value:zn.resource_count,tone:`steel`}),(0,C.jsx)(ue,{label:`Активные сессии`,value:zn.active_session_count,tone:`green`}),(0,C.jsx)(A,{label:`Topology exposure`,value:zn.topology_exposure}),(0,C.jsx)(je,{columns:[`контур`,`состояние`],rows:Object.entries(zn.connector_status||{}).map(([e,t])=>[e,typeof t==`string`?I(t):JSON.stringify(t)])}),(0,C.jsx)(je,{columns:[`протокол`,`количество`],rows:zn.service_endpoints.map(e=>[e.protocol,String(e.count)])})]}):(0,C.jsx)(pe,{title:`Сводка не выбрана`,text:`Выберите организацию, чтобы проверить tenant-safe состояние.`})]})]}),T===`servers`&&(0,C.jsx)(`section`,{className:`grid two`,children:(0,C.jsxs)(`article`,{className:`card span2`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:`Справочник серверов`}),(0,C.jsx)(`p`,{className:`muted`,children:`Единый каталог целей для RDP/VPN: адрес сервера, организация, протокол и предпочтительный вход/выход маршрута.`})]}),(0,C.jsx)(`span`,{className:`pill`,children:Dn.length})]}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`Организация`,(0,C.jsxs)(`select`,{value:B.organizationId,onChange:e=>ni({...B,organizationId:e.target.value}),children:[(0,C.jsx)(`option`,{value:``,children:`Выберите организацию`}),Cn.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}),(0,C.jsxs)(`label`,{children:[`Имя сервера`,(0,C.jsx)(`input`,{value:B.name,onChange:e=>ni({...B,name:e.target.value}),placeholder:`Office RDP`})]}),(0,C.jsxs)(`label`,{children:[`Адрес`,(0,C.jsx)(`input`,{value:B.address,onChange:e=>ni({...B,address:e.target.value}),placeholder:`192.168.1.10:3389`})]}),(0,C.jsxs)(`label`,{children:[`Протокол`,(0,C.jsxs)(`select`,{value:B.protocol,onChange:e=>ni({...B,protocol:e.target.value}),children:[(0,C.jsx)(`option`,{value:`rdp`,children:`RDP`}),(0,C.jsx)(`option`,{value:`vpn`,children:`VPN`}),(0,C.jsx)(`option`,{value:`ssh`,children:`SSH`}),(0,C.jsx)(`option`,{value:`http`,children:`HTTP`})]})]}),(0,C.jsxs)(`label`,{children:[`Вход`,(0,C.jsxs)(`select`,{value:B.entryNode,onChange:e=>ni({...B,entryNode:e.target.value}),children:[(0,C.jsx)(`option`,{value:``,children:`Автоматически`}),j.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}),(0,C.jsxs)(`label`,{children:[`Выход`,(0,C.jsxs)(`select`,{value:B.exitNode,onChange:e=>ni({...B,exitNode:e.target.value}),children:[(0,C.jsx)(`option`,{value:``,children:`Автоматически`}),j.map(e=>(0,C.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}),(0,C.jsxs)(`label`,{children:[`Теги`,(0,C.jsx)(`input`,{value:B.tags,onChange:e=>ni({...B,tags:e.target.value}),placeholder:`home, accounting`})]}),(0,C.jsxs)(`label`,{children:[`RDP пользователь`,(0,C.jsx)(`input`,{value:B.username,onChange:e=>ni({...B,username:e.target.value}),placeholder:`user или DOMAIN\\\\user`})]}),(0,C.jsxs)(`label`,{children:[`RDP пароль`,(0,C.jsx)(`input`,{type:`password`,value:B.password,onChange:e=>ni({...B,password:e.target.value}),placeholder:`хранится как secret`})]}),(0,C.jsxs)(`label`,{children:[`Домен`,(0,C.jsx)(`input`,{value:B.domain,onChange:e=>ni({...B,domain:e.target.value}),placeholder:`опционально`})]})]}),(0,C.jsx)(`div`,{className:`actions`,children:(0,C.jsx)(`button`,{className:`primary`,disabled:!B.organizationId||!B.name.trim()||!B.address.trim(),onClick:()=>void K(async()=>{let e=[`rdp`,`vnc`,`ssh`].includes(B.protocol)?`rap-secret://org/${B.organizationId}/resources/${crypto.randomUUID()}/primary`:null,t=await V.createResource({organizationId:B.organizationId,name:B.name,address:B.address,protocol:B.protocol,secretRef:e,certificateVerificationMode:B.protocol===`rdp`?`ignore`:`strict`,clipboardMode:B.protocol===`rdp`?`bidirectional`:`disabled`,fileTransferMode:B.protocol===`rdp`?`bidirectional`:`disabled`,metadata:{route_mode:B.routeMode,preferred_entry_node_id:B.entryNode||null,preferred_exit_node_id:B.exitNode||null,tags:B.tags.split(`,`).map(e=>e.trim()).filter(Boolean)}});[`rdp`,`vnc`,`ssh`].includes(B.protocol)&&(B.username.trim()||B.password)&&await V.upsertResourceSecret(t.id,{username:B.username.trim(),password:B.password,domain:B.domain.trim()}),ni({...B,name:``,address:``,tags:``,username:``,password:``,domain:``})},`Сервер добавлен в справочник.`),children:`Добавить сервер`})}),(0,C.jsx)(je,{columns:[`сервер`,`адрес`,`протокол`,`секрет`,`организация`,`маршрут`,`создано`,`действия`],rows:Dn.map(e=>{let t=e.metadata||{},n=Cn.find(t=>t.id===e.organization_id);return[e.name,e.address,e.protocol,e.has_secret?`сохранен`:e.secret_ref?`нужен payload`:`нет`,n?.name||P(e.organization_id),`${P(String(t.preferred_entry_node_id||``))||`auto`} -> ${P(String(t.preferred_exit_node_id||``))||`auto`}`,F(e.created_at),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>{$r(e),ti({username:``,password:``,domain:``})},children:`Обновить secret`})]})}),Qr&&(0,C.jsx)(`div`,{className:`modalBackdrop`,role:`presentation`,children:(0,C.jsxs)(`div`,{className:`modalCard`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`resource-secret-title`,children:[(0,C.jsxs)(`div`,{className:`cardHead`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{id:`resource-secret-title`,children:`Учетные данные RDP`}),(0,C.jsxs)(`p`,{className:`muted`,children:[Qr.name,` · `,Qr.address]})]}),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>$r(null),children:`Закрыть`})]}),(0,C.jsxs)(Ae,{children:[(0,C.jsxs)(`label`,{children:[`Пользователь`,(0,C.jsx)(`input`,{value:ei.username,onChange:e=>ti({...ei,username:e.target.value}),placeholder:`user или DOMAIN\\\\user`})]}),(0,C.jsxs)(`label`,{children:[`Пароль`,(0,C.jsx)(`input`,{type:`password`,value:ei.password,onChange:e=>ti({...ei,password:e.target.value})})]}),(0,C.jsxs)(`label`,{children:[`Домен`,(0,C.jsx)(`input`,{value:ei.domain,onChange:e=>ti({...ei,domain:e.target.value}),placeholder:`опционально`})]})]}),(0,C.jsx)(`p`,{className:`muted`,children:`Пароль сохраняется как encrypted resource secret. В metadata ресурса он не попадет.`}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`button`,{className:`primary`,disabled:!ei.username.trim()||!ei.password,onClick:()=>void K(async()=>{await V.upsertResourceSecret(Qr.id,{username:ei.username.trim(),password:ei.password,domain:ei.domain.trim()}),$r(null),ti({username:``,password:``,domain:``})},`Secret ресурса обновлен.`),children:`Сохранить secret`}),(0,C.jsx)(`button`,{onClick:()=>$r(null),children:`Отмена`})]})]})})]})}),T===`audit`&&(0,C.jsxs)(`section`,{className:`card`,children:[(0,C.jsx)(`h3`,{children:`Аудит кластера`}),(0,C.jsx)(je,{columns:[`событие`,`цель`,`actor`,`создано`],rows:jn.map(e=>[e.event_type,`${e.target_type}${e.target_id?`:${P(e.target_id)}`:``}`,e.actor_user_id?P(e.actor_user_id):`system`,F(e.created_at)])})]})]})]})}function ue({label:e,value:t,tone:n}){return(0,C.jsxs)(`article`,{className:`metric ${n}`,children:[(0,C.jsx)(`span`,{children:e}),(0,C.jsx)(`strong`,{children:t})]})}function k({label:e,value:t}){return(0,C.jsxs)(`div`,{className:`signal`,children:[(0,C.jsx)(`span`,{children:e}),(0,C.jsx)(`strong`,{children:t})]})}function de({value:e}){return(0,C.jsx)(`span`,{className:`status ${e.replace(/_/g,`-`)}`,children:I(e)})}function fe({label:e,value:t,tone:n}){return(0,C.jsxs)(`span`,{className:`functionState ${n||``}`,children:[(0,C.jsx)(`small`,{children:e}),(0,C.jsx)(`strong`,{children:t})]})}function A({label:e,value:t}){return(0,C.jsxs)(`div`,{className:`stateLine`,children:[(0,C.jsx)(`span`,{children:e}),(0,C.jsx)(`strong`,{children:t})]})}function pe({title:e,text:t}){return(0,C.jsxs)(`article`,{className:`empty`,children:[(0,C.jsx)(`h3`,{children:e}),(0,C.jsx)(`p`,{children:t})]})}function me(e){if(!e)return(0,C.jsx)(`p`,{className:`muted`,children:`Диагностика Android-клиента не загружена. Укажи device id из приложения и нажми “Обновить клиент”.`});let t=et(e.payload)||{},n=et(t.runtime),r=et(t.vpn_config),i=M(t,`app_version`,`н/д`),a=M(t,`service_state`,`н/д`),o=M(t,`control_network_mode`,`н/д`),s=M(r,`packet_relay_active_base_url`)||M(r,`packet_relay_base_url`,`н/д`),c=M(r,`packet_relay_profile_base_url`,`н/д`),l=M(r,`packet_relay_candidate_urls`,`н/д`),u=it(n,`uplink_read_total`),d=it(n,`uplink_sent_total`),f=it(n,`downlink_received_total`),p=it(n,`uplink_dropped_packets`)+it(n,`downlink_dropped_packets`),m=it(n,`uplink_bypassed_control_packets`),h=it(n,`downlink_received_bytes`),g=it(n,`uplink_sent_bytes`),_=M(n,`state`,`н/д`),v=M(n,`message`,``),y=it(n,`uplink_sent_mbps`),b=it(n,`downlink_received_mbps`),x=M(t,`last_command_type`,`н/д`),S=M(t,`last_command_result`,`н/д`);return(0,C.jsxs)(`div`,{className:`vpnCard diagnosticCard`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`strong`,{children:[`Android client `,P(e.device_id)]}),(0,C.jsxs)(`p`,{className:`muted`,children:[i,` / `,a,` / `,F(e.observed_at)]}),(0,C.jsx)(de,{value:Date.now()-new Date(e.observed_at).getTime()<3e4?`active`:`degraded`}),(0,C.jsx)(`span`,{className:`pill`,children:o})]}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Relay active`,value:s}),(0,C.jsx)(A,{label:`Relay profile`,value:c}),(0,C.jsx)(A,{label:`Relay candidates`,value:l}),(0,C.jsx)(A,{label:`Packets read/sent/down`,value:`${u} / ${d} / ${f}`}),(0,C.jsx)(A,{label:`Drops / control bypass`,value:`${p} / ${m}`}),(0,C.jsx)(A,{label:`Bytes up/down`,value:`${xn(g)} / ${xn(h)}`}),(0,C.jsx)(A,{label:`Rate up/down`,value:`${y.toFixed(2)} / ${b.toFixed(2)} Mbps`}),(0,C.jsx)(A,{label:`Runtime`,value:v?`${_}: ${v}`:_}),(0,C.jsx)(A,{label:`Last command`,value:`${x}: ${S}`})]})]})}function he({items:e,emptyText:t}){if(e.length===0)return(0,C.jsx)(pe,{title:t,text:`Тестовая телеметрия появится здесь после отчета node-agent.`});let n=[...e].reverse().slice(-24),r=e[0],i=Math.max(...n.map(e=>e.memory_used_bytes||0),1);return(0,C.jsxs)(`div`,{className:`telemetryBox`,children:[(0,C.jsxs)(`div`,{className:`signalStrip compact`,children:[(0,C.jsx)(k,{label:`Память`,value:`${xn(r.memory_used_bytes)} / ${xn(r.memory_total_bytes)}`}),(0,C.jsx)(k,{label:`Процессор`,value:r.cpu_percent==null?`н/д`:`${r.cpu_percent.toFixed(1)}%`}),(0,C.jsx)(k,{label:`Процессы`,value:r.process_count==null?`н/д`:String(r.process_count)}),(0,C.jsx)(k,{label:`Обновлено`,value:F(r.observed_at)})]}),(0,C.jsx)(`div`,{className:`sparkline`,"aria-label":`memory telemetry`,children:n.map(e=>(0,C.jsx)(`span`,{style:{height:`${Math.max(8,Math.round((e.memory_used_bytes||0)/i*100))}%`}},e.id))})]})}function ge({node:e,memberships:t,activeRoles:n,desiredWorkloads:r,observedWorkloads:i,heartbeats:a,telemetry:o,meshLinks:s,syntheticConfig:c,allNodes:l,onSetUpdatePolicy:u,updatePlan:d,updateStatuses:f,labels:p}){let m=a[0],h=o[0],g=et(m?.metadata?.mesh_listener_report),v=et(m?.metadata?.mesh_endpoint_report),y=et(m?.metadata?.mesh_outbound_session_report),b=c?.mesh_listener,x=et(m?.metadata?.mesh_peer_recovery_report),S=et(m?.metadata?.mesh_peer_connection_intent_report),w=et(m?.metadata?.mesh_peer_connection_manager_report),ee=et(m?.metadata?.mesh_rendezvous_lease_report),te=et(m?.metadata?.mesh_route_path_decision_report),ne=et(m?.metadata?.mesh_route_generation_report),T=et(m?.metadata?.mesh_route_health_config_report),re=qe(s).filter(e=>e.source_node_id!==e.target_node_id),ie=re.filter(e=>e.link_status===`reachable`),E=re.filter(e=>e.link_status!==`reachable`),ae=Object.entries(m?.capabilities||{}).sort(([e],[t])=>e.localeCompare(t)),oe=tt(w?.probe_results),[se,ce]=(0,_.useState)(`network`),D=ze(f,`rap-node-agent`),O=ze(f,`rap-host-agent`),le=f[0],ue=We(f),fe=t.find(t=>t.node.id===e.id)?.cluster.id||t[0]?.cluster.id||``,pe=tt(v?.endpoint_candidates),me=pe[0],ge=nt(v,[`peer_endpoint`,`advertised_endpoint`,`endpoint`])||M(me,`address`,``)||``,ve=nt(v,[`transport`,`advertise_transport`])||M(me,`transport`,``)||`н/д`,ye=nt(v,[`connectivity_mode`,`connectivity`])||M(me,`connectivity_mode`,``)||M(g,`inbound_reachability`,``)||`н/д`,be=M(v,`nat_type`,M(me,`nat_type`,`н/д`)),xe=M(v,`region`,M(g,`region`,M(me,`region`,`н/д`))),Se=M(v,`observed_at`,M(g,`observed_at`,m?.observed_at||`н/д`)),Ce=M(g,`status`,``)||(ge?`нет listener report, есть advertised endpoint`:`report отсутствует`),we=M(g,`effective_listen_addr`,``)||`н/д`,j=M(g,`configured_listen_addr`,``)||`н/д`,Te=pe.length>0?pe:ge?[{endpoint_id:`${e.id}-reported`,address:ge,transport:ve,reachability:ye,connectivity_mode:ye,nat_type:be,priority:`н/д`,last_verified_at:Se}]:[],Ee=Object.entries(c?.peer_endpoints||{}),De=Object.entries(c?.peer_endpoint_candidates||{}).flatMap(([e,t])=>t.map(t=>({peerID:e,candidate:t}))),Oe=new Set(ie.map(t=>t.source_node_id===e.id?t.target_node_id:t.source_node_id)),ke=De.filter(({peerID:e})=>!Oe.has(e)),Ae=[g?`listener report: есть`:`listener report: не прислан агентом`,v?`endpoint report: есть`:`endpoint report: не прислан агентом`,y?`outbound session: есть`:`outbound session: не прислан агентом`,c?`scoped config: ${c.enabled?`enabled`:`disabled`}`:`scoped config: не загружен`,`active links: ${ie.length}/${re.length}`];return(0,C.jsxs)(`div`,{className:`nodeDetails`,children:[(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Сводка runtime`}),(0,C.jsxs)(`div`,{className:`signalStrip compact nodeMetricGrid`,children:[(0,C.jsx)(k,{label:`Heartbeat`,value:m?F(m.observed_at):`н/д`}),(0,C.jsx)(k,{label:`Health`,value:I(m?.health_status||e.health_status)}),(0,C.jsx)(k,{label:`Listener`,value:mn(m)}),(0,C.jsx)(k,{label:`Mesh links`,value:`${ie.length}/${re.length}`}),(0,C.jsx)(k,{label:`Update`,value:Be(le,d)})]}),(0,C.jsxs)(`div`,{className:`summaryChips`,children:[(0,C.jsx)(de,{value:e.registration_status}),(0,C.jsx)(de,{value:e.membership_status}),(0,C.jsx)(de,{value:e.partition_state}),(0,C.jsx)(`span`,{className:`pill`,children:e.reported_version||m?.reported_version||`версия неизвестна`}),g?.one_way_connectivity===!0&&(0,C.jsx)(`span`,{className:`pill warn`,children:`one-way`}),g?.port_conflict===!0&&(0,C.jsx)(`span`,{className:`pill bad`,children:`port conflict`})]})]}),(0,C.jsx)(`div`,{className:`nodeTabs`,role:`tablist`,"aria-label":`Node analysis sheets`,children:[[`overview`,`Обзор`],[`network`,`Сеть и адреса`],[`mesh`,`Mesh`],[`services`,`Роли и сервисы`],[`telemetry`,`Телеметрия`],[`updates`,`Обновления`],[`raw`,`Raw`]].map(([e,t])=>(0,C.jsx)(`button`,{className:se===e?`active`:``,onClick:()=>ce(e),type:`button`,children:t},e))}),se===`overview`&&(0,C.jsxs)(`div`,{className:`nodeDetailGrid`,children:[(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Идентичность и размещение`}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Node ID`,value:e.id}),(0,C.jsx)(A,{label:`Node key`,value:e.node_key}),(0,C.jsx)(A,{label:`Имя`,value:e.name}),(0,C.jsx)(A,{label:`Владение`,value:I(e.ownership_type)}),(0,C.jsx)(A,{label:`Owner org`,value:P(e.owner_organization_id)}),(0,C.jsx)(A,{label:`Группа`,value:e.node_group_name||p.ungroupedNodes}),(0,C.jsx)(A,{label:`Создан`,value:F(e.created_at)}),(0,C.jsx)(A,{label:`Обновлен`,value:F(e.updated_at)})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Участие в кластерах`}),(0,C.jsx)(`div`,{className:`membershipList`,children:t.map(t=>(0,C.jsxs)(`span`,{className:t.node.id===e.id&&t.node.membership_status===`active`?`pill good`:`pill`,children:[t.cluster.name,`: `,I(t.node.membership_status)]},t.cluster.id))}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Активных ролей`,value:String(n.length)}),(0,C.jsx)(A,{label:`Desired workloads`,value:String(r.length)}),(0,C.jsx)(A,{label:`Observed workloads`,value:String(i.length)}),(0,C.jsx)(A,{label:`Последний сигнал`,value:F(e.last_seen_at||m?.observed_at)})]})]})]}),se===`network`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`nodeDetailGrid`,children:[(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Локальный listener`}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Статус`,value:Ce}),(0,C.jsx)(A,{label:`Режим порта`,value:M(g,`listen_port_mode`,`н/д`)}),(0,C.jsx)(A,{label:`Configured addr`,value:j}),(0,C.jsx)(A,{label:`Effective addr`,value:we}),(0,C.jsx)(A,{label:`Inbound`,value:M(g,`inbound_reachability`,ye)}),(0,C.jsx)(A,{label:`One-way`,value:M(g,`one_way_connectivity`,`н/д`)}),(0,C.jsx)(A,{label:`Port conflict`,value:M(g,`port_conflict`,`false`)}),(0,C.jsx)(A,{label:`Failure`,value:M(g,`failure_error`,M(g,`failure_reason`,`нет`))})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Desired listener`}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Состояние`,value:b?.desired_state||`н/д`}),(0,C.jsx)(A,{label:`Режим порта`,value:b?.listen_port_mode||`н/д`}),(0,C.jsx)(A,{label:`Listen addr`,value:b?.listen_addr||`н/д`}),(0,C.jsx)(A,{label:`Auto range`,value:b?`${b.auto_port_start||`н/д`}-${b.auto_port_end||`н/д`}`:`н/д`}),(0,C.jsx)(A,{label:`Advertise endpoint`,value:b?.advertise_endpoint||`auto-discovery`}),(0,C.jsx)(A,{label:`Advertise transport`,value:b?.advertise_transport||`н/д`}),(0,C.jsx)(A,{label:`Connectivity`,value:b?.connectivity_mode||`н/д`}),(0,C.jsx)(A,{label:`NAT`,value:b?.nat_type||`н/д`}),(0,C.jsx)(A,{label:`Region/site`,value:b?.region||`н/д`}),(0,C.jsx)(A,{label:`Version`,value:b?.config_version||`н/д`})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Что узел сообщает кластеру`}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Advertised endpoint`,value:ge||`не прислан`}),(0,C.jsx)(A,{label:`Transport`,value:ve}),(0,C.jsx)(A,{label:`Connectivity`,value:ye}),(0,C.jsx)(A,{label:`NAT`,value:be}),(0,C.jsx)(A,{label:`Region/site`,value:xe}),(0,C.jsx)(A,{label:`Observed`,value:Se})]})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Исходящий control-channel`}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Status`,value:M(y,`status`,`не прислан`)}),(0,C.jsx)(A,{label:`Direction`,value:M(y,`direction`,`н/д`)}),(0,C.jsx)(A,{label:`Transport`,value:M(y,`transport`,`н/д`)}),(0,C.jsx)(A,{label:`Control Plane`,value:M(y,`control_plane_url`,`н/д`)}),(0,C.jsx)(A,{label:`Reverse usable`,value:M(y,`usable_for_inbound_control`,`н/д`)}),(0,C.jsx)(A,{label:`Inbound required`,value:M(y,`inbound_listener_required`,`н/д`)}),(0,C.jsx)(A,{label:`Relay ready`,value:M(y,`peer_connection_relay_ready`,`0`)}),(0,C.jsx)(A,{label:`Waiting rendezvous`,value:M(y,`peer_connection_waiting`,`0`)}),(0,C.jsx)(A,{label:`Rendezvous leases`,value:M(y,`rendezvous_lease_count`,`0`)}),(0,C.jsx)(A,{label:`Listener conflict`,value:M(y,`listener_port_conflict`,`false`)})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Наличие сетевых отчетов`}),(0,C.jsx)(`div`,{className:`summaryChips`,children:Ae.map(e=>(0,C.jsx)(`span`,{className:e.includes(`не прислан`)||e.includes(`не загружен`)?`pill warn`:`pill good`,children:e},e))}),!v&&!g&&(0,C.jsx)(`p`,{className:`muted`,children:`У этого узла есть heartbeat/mesh manager данные, но агент не передал адресный отчет. До обновления агента или включения endpoint/listener report панель может показать связи и config peers, но не может достоверно назвать локальный listen address.`})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Endpoint candidates узла`}),(0,C.jsx)(je,{columns:[`id`,`address`,`transport`,`reachability`,`mode`,`nat`,`priority`,`verified`],rows:Te.map(e=>[M(e,`endpoint_id`,`н/д`),M(e,`address`,`н/д`),M(e,`transport`,`н/д`),M(e,`reachability`,`н/д`),M(e,`connectivity_mode`,`н/д`),M(e,`nat_type`,`н/д`),M(e,`priority`,`н/д`),M(e,`last_verified_at`,`н/д`)])})]}),(0,C.jsxs)(`div`,{className:`nodeDetailGrid`,children:[(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Рабочие peer endpoints из config`}),(0,C.jsx)(je,{columns:[`peer`,`endpoint`],rows:Ee.map(([e,t])=>[ut(l,e),t])})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Резервные кандидаты peer`}),(0,C.jsx)(je,{columns:[`peer`,`address`,`transport`,`reachability`,`mode`,`priority`],rows:ke.slice(0,20).map(({peerID:e,candidate:t})=>[ut(l,e),t.address,t.transport,t.reachability,t.connectivity_mode,String(t.priority)])})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Активные связи этого узла`}),(0,C.jsx)(je,{columns:[`peer`,`направление`,`тип`,`статус`,`latency`,`quality`,`путь`,`наблюдение`],rows:re.slice(0,20).map(t=>[ut(l,t.source_node_id===e.id?t.target_node_id:t.source_node_id),t.source_node_id===e.id?`out`:`in`,Ye(t),t.link_status,t.latency_ms==null?`н/д`:`${t.latency_ms}мс`,t.quality_score==null?`н/д`:String(t.quality_score),Xe(t,l),F(t.observed_at)])}),E.length>0&&(0,C.jsxs)(`p`,{className:`muted`,children:[`Проблемных связей: `,E.length,`. Их статус виден в таблице выше.`]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Проверка адресов peer-to-peer`}),(0,C.jsx)(je,{columns:[`peer`,`status`,`selected endpoint`,`candidate`,`latency`,`attempts`,`failure`],rows:oe.slice(0,20).map(e=>[ut(l,M(e,`node_id`,``)),M(e,`link_status`,`н/д`),M(e,`selected_endpoint`,M(e,`endpoint`,`н/д`)),M(e,`selected_candidate_id`,`н/д`),M(e,`latency_ms`,`н/д`),ot(e),M(e,`failure_reason`,`нет`)])})]})]}),se===`mesh`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`nodeDetailGrid`,children:[(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Mesh control-plane`}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Recovery`,value:sn(m)}),(0,C.jsx)(A,{label:`Intents`,value:cn(m)}),(0,C.jsx)(A,{label:`Manager`,value:pn(m)}),(0,C.jsx)(A,{label:`Rendezvous`,value:ln(m)}),(0,C.jsx)(A,{label:`Path decisions`,value:un(m)}),(0,C.jsx)(A,{label:`Route generation`,value:dn(m)}),(0,C.jsx)(A,{label:`Route health`,value:fn(m)}),(0,C.jsx)(A,{label:`Config version`,value:c?.config_version||`н/д`})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Scoped config counts`}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Peer endpoints`,value:String(Ee.length)}),(0,C.jsx)(A,{label:`Endpoint candidates`,value:String(De.length)}),(0,C.jsx)(A,{label:`Peer directory`,value:String(c?.peer_directory?.length||0)}),(0,C.jsx)(A,{label:`Recovery seeds`,value:String(c?.recovery_seeds?.length||0)}),(0,C.jsx)(A,{label:`Rendezvous leases`,value:String(c?.rendezvous_leases?.length||0)}),(0,C.jsx)(A,{label:`Routes`,value:String(c?.routes?.length||0)})]})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Route decisions`}),(0,C.jsx)(je,{columns:[`route`,`source`,`destination`,`effective hops`,`relay`,`score`,`expires`],rows:(c?.route_path_decisions?.decisions||[]).map(e=>[P(e.route_id),ut(l,e.source_node_id),ut(l,e.destination_node_id),e.effective_hops.map(e=>_n(ut(l,e))).join(` > `),e.selected_relay_id?ut(l,e.selected_relay_id):`direct`,e.path_score==null?`н/д`:String(e.path_score),F(e.expires_at)])})]})]}),se===`services`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`nodeDetailGrid`,children:[(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:p.nodeRoles}),(0,C.jsxs)(`div`,{className:`serviceTags`,children:[n.length===0&&(0,C.jsx)(`p`,{className:`muted`,children:p.noRoles}),n.map(e=>(0,C.jsxs)(`div`,{className:`serviceTag`,children:[(0,C.jsx)(`strong`,{children:Ie(e.role)}),(0,C.jsx)(`span`,{children:e.organization_id?`organization: ${P(e.organization_id)}`:`cluster-wide`}),(0,C.jsx)(`small`,{children:F(e.assigned_at)}),(0,C.jsx)(`span`,{className:`pill ${rn(e.role,m)}`,children:an(e.role,m,p)})]},e.id))]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Capabilities`}),(0,C.jsxs)(`div`,{className:`summaryChips`,children:[ae.length===0&&(0,C.jsx)(`span`,{className:`muted`,children:`Нет capability heartbeat.`}),ae.slice(0,40).map(([e,t])=>(0,C.jsx)(`span`,{className:t===!0?`pill good`:`pill`,children:e},e))]})]})]}),(0,C.jsxs)(`div`,{className:`nodeDetailGrid`,children:[(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:p.desiredServices}),(0,C.jsx)(je,{columns:[`service`,`desired`,`runtime`,`version`,`updated`],rows:r.map(e=>[e.service_type,I(e.desired_state),e.runtime_mode,e.version||`не закреплена`,F(e.updated_at)])})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:p.observedServices}),(0,C.jsx)(je,{columns:[`service`,`reported`,`runtime`,`version`,`observed`],rows:i.map(e=>[e.service_type,I(e.reported_state),e.runtime_mode,e.version||`н/д`,F(e.observed_at)])})]})]})]}),se===`telemetry`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:p.nodeTelemetry}),(0,C.jsx)(he,{items:o,emptyText:p.noTelemetry}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Disk`,value:`${xn(h?.disk_used_bytes)} / ${xn(h?.disk_total_bytes)}`}),(0,C.jsx)(A,{label:`Network RX/TX`,value:`${xn(h?.network_rx_bytes)} / ${xn(h?.network_tx_bytes)}`}),(0,C.jsx)(A,{label:`Payload`,value:h?.payload?at(h.payload):`н/д`})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:p.recentHeartbeats}),(0,C.jsx)(je,{columns:[`состояние`,`версия`,`listener`,`mesh recovery`,`mesh intents`,`rv leases`,`path decisions`,`route gen`,`route health`,`наблюдение`],rows:a.slice(0,10).map(e=>[e.health_status,e.reported_version||`неизвестно`,mn(e),sn(e),cn(e),ln(e),un(e),dn(e),fn(e),F(e.observed_at)])})]})]}),se===`updates`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`nodeDetailGrid`,children:[(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Текущая сборка`}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Node-agent version`,value:e.reported_version||m?.reported_version||`неизвестно`}),(0,C.jsx)(A,{label:`План`,value:d?`${d.action}: ${d.reason}`:`не загружен`}),(0,C.jsx)(A,{label:`Product`,value:d?.product||`rap-node-agent`}),(0,C.jsx)(A,{label:`Target`,value:d?.target_version||`н/д`}),(0,C.jsx)(A,{label:`Strategy`,value:d?.strategy||`н/д`}),(0,C.jsx)(A,{label:`Rollback`,value:d?.rollback_allowed?`разрешен`:`нет`}),(0,C.jsx)(A,{label:`Artifact`,value:d?.artifact?`${d.artifact.kind} ${d.artifact.os}/${d.artifact.arch}`:`н/д`})]}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`button`,{className:`primary`,disabled:!u,onClick:()=>u?.(e,`rap-node-agent`,null),children:`Node-agent latest`}),(0,C.jsx)(`button`,{className:`ghost`,disabled:!u||!d?.target_version,onClick:()=>u?.(e,`rap-node-agent`,d?.target_version||null),children:`Повторить target`}),(0,C.jsx)(`button`,{className:`ghost`,disabled:!u,onClick:()=>u?.(e,`rap-host-agent`,null),children:`Host-agent latest`})]}),(0,C.jsx)(`p`,{className:`muted`,children:`Latest означает policy без закрепленной версии: updater будет брать свежий active release своего канала при следующем цикле или heartbeat hint.`})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Последние отчеты updater`}),(0,C.jsxs)(`div`,{className:`stateList`,children:[(0,C.jsx)(A,{label:`Updater health`,value:`${ue.label}: ${ue.detail}`}),(0,C.jsx)(A,{label:`rap-node-agent`,value:Ve(D)}),(0,C.jsx)(A,{label:`rap-host-agent`,value:Ve(O)}),(0,C.jsx)(A,{label:`Всего отчетов`,value:String(f.length)}),(0,C.jsx)(A,{label:`Последний отчет`,value:F(le?.observed_at)})]}),(0,C.jsxs)(`div`,{className:`summaryChips`,children:[(0,C.jsx)(`span`,{className:`pill ${ue.tone}`,children:ue.label}),D&&(0,C.jsxs)(`span`,{className:`pill ${Ue(D)}`,children:[`node-agent: `,D.status]}),O&&(0,C.jsxs)(`span`,{className:`pill ${Ue(O)}`,children:[`host-agent: `,O.status]}),!D&&!O&&(0,C.jsx)(`span`,{className:`pill warn`,children:`updater пока не отчитался`})]})]})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`История обновлений`}),(0,C.jsx)(je,{columns:[`product`,`current`,`target`,`phase`,`status`,`attempt`,`error`,`observed`],rows:f.slice(0,40).map(e=>[e.product,e.current_version||`н/д`,e.target_version||`н/д`,e.phase,(0,C.jsx)(`span`,{className:`pill ${Ue(e)}`,children:e.status}),e.attempt_id?P(e.attempt_id):`н/д`,e.error_message||`нет`,F(e.observed_at)])})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Windows repair/update command`}),(0,C.jsx)(`p`,{className:`muted`,children:`Для существующего Windows-узла эта команда переустанавливает wrapper updater без нового join-token, сохраняет local state и запускает обновление до актуальной сборки.`}),(0,C.jsxs)(`div`,{className:`stateList compact`,children:[(0,C.jsx)(A,{label:`Когда выполнять`,value:`если updater stale, host-agent не отчитался или Windows-узел не доходит до target version`}),(0,C.jsx)(A,{label:`Control Plane`,value:Wt()}),(0,C.jsx)(A,{label:`Join-token`,value:`не нужен для repair существующего узла`})]}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`button`,{className:`primary`,onClick:()=>Lt(Pt(e),Nt(e,fe)),children:`Скачать repair .cmd`}),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>void Rt(Nt(e,fe)),children:`Скопировать команду`})]}),(0,C.jsx)(`pre`,{className:`codePreview`,children:Nt(e,fe)})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Linux repair/update command`}),(0,C.jsx)(`p`,{className:`muted`,children:`Для существующего Ubuntu/Linux-узла эта команда восстанавливает systemd updater без нового join-token, сохраняет local state и делает одноразовую проверку обновления.`}),(0,C.jsxs)(`div`,{className:`stateList compact`,children:[(0,C.jsx)(A,{label:`Когда выполнять`,value:`если host-agent не отчитался, updater stale или Linux-узел не доходит до target version`}),(0,C.jsx)(A,{label:`Control Plane`,value:Wt()}),(0,C.jsx)(A,{label:`Join-token`,value:`не нужен для repair существующего узла`})]}),(0,C.jsxs)(`div`,{className:`actions`,children:[(0,C.jsx)(`button`,{className:`primary`,onClick:()=>Lt(It(e),Ft(e,fe)),children:`Скачать repair .sh`}),(0,C.jsx)(`button`,{className:`ghost`,onClick:()=>void Rt(Ft(e,fe)),children:`Скопировать команду`})]}),(0,C.jsx)(`pre`,{className:`codePreview`,children:Ft(e,fe)})]}),(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Payload последнего отчета`}),(0,C.jsxs)(`div`,{className:`rawDetailsGrid`,children:[(0,C.jsx)(_e,{title:`rap-node-agent update status`,value:D}),(0,C.jsx)(_e,{title:`rap-host-agent update status`,value:O}),(0,C.jsx)(_e,{title:`Update plan`,value:d})]})]})]}),se===`raw`&&(0,C.jsxs)(`section`,{className:`nodePanel`,children:[(0,C.jsx)(`h4`,{children:`Raw данные узла`}),(0,C.jsxs)(`div`,{className:`rawDetailsGrid`,children:[(0,C.jsx)(_e,{title:`Последний heartbeat metadata`,value:m?.metadata}),(0,C.jsx)(_e,{title:`Heartbeat capabilities`,value:m?.capabilities}),(0,C.jsx)(_e,{title:`Heartbeat service states`,value:m?.service_states}),(0,C.jsx)(_e,{title:`Synthetic mesh config`,value:c}),(0,C.jsx)(_e,{title:`Listener report`,value:g}),(0,C.jsx)(_e,{title:`Endpoint report`,value:v}),(0,C.jsx)(_e,{title:`Peer recovery report`,value:x}),(0,C.jsx)(_e,{title:`Connection intent report`,value:S}),(0,C.jsx)(_e,{title:`Connection manager report`,value:w}),(0,C.jsx)(_e,{title:`Rendezvous lease report`,value:ee}),(0,C.jsx)(_e,{title:`Route decision report`,value:te}),(0,C.jsx)(_e,{title:`Route generation report`,value:ne}),(0,C.jsx)(_e,{title:`Route health report`,value:T})]})]})]})}function _e({title:e,value:t}){return(0,C.jsxs)(`details`,{className:`rawBlock`,children:[(0,C.jsx)(`summary`,{children:e}),(0,C.jsx)(`pre`,{children:t==null?`н/д`:JSON.stringify(t,null,2)})]})}function ve({runtime:e}){return(0,C.jsxs)(`div`,{className:`runtimeBadges`,children:[(0,C.jsx)(`span`,{className:`pill ${e.agentTone}`,children:e.agentLabel}),(0,C.jsx)(`span`,{className:`pill ${e.clientTone}`,children:e.clientLabel}),(0,C.jsx)(`span`,{className:`pill ${e.outboundTone}`,children:e.outboundLabel}),(0,C.jsx)(`span`,{className:`pill ${e.inboundTone}`,children:e.inboundLabel})]})}function ye({node:e,fallback:t,heartbeatsByNode:n,meshLinks:r}){if(!e)return t;let i=rt(e,n[e.id]||[],r);return(0,C.jsxs)(`div`,{className:`nodeEndpointCell`,children:[(0,C.jsx)(`strong`,{children:e.name}),(0,C.jsx)(ve,{runtime:i}),(0,C.jsx)(`small`,{children:i.address})]})}function be({nodes:e,links:t,syntheticMeshConfigsByNode:n,entryPoints:r,entryPointNodesById:i,egressPools:a,egressPoolNodesById:o,rolesByNode:s,workloadsByNode:c,telemetryByNode:l,labels:u,emptyText:d}){if(e.length===0)return(0,C.jsx)(pe,{title:`Нет узлов`,text:`Одобренные node-agent появятся на карте после первого heartbeat.`});let f=qe(t).filter(e=>e.source_node_id!==e.target_node_id),p=new Map(e.map(e=>[e.id,e])),m=f.map(e=>({link:e,status:Se(e,f,p)})),h=m.filter(e=>e.status===`reachable`),g=m.filter(e=>e.status===`one_way`),_=m.filter(e=>e.status===`stale`),v=m.filter(e=>e.status!==`reachable`&&e.status!==`one_way`&&e.status!==`stale`),y=ke(e,n),b=j(e.length,r.length,a.length),x=Te(e.length),S=De(e,b.height,x),w=new Map(r.map((e,t)=>[e.id,we(170,t,r.length,150,b.height-100)])),ee=new Map(a.map((e,t)=>[e.id,we(950,t,a.length,150,b.height-100)])),te=new Set(m.filter(e=>e.status!==`stale`).map(e=>`${e.link.source_node_id}->${e.link.target_node_id}`)),ne=new Map(e.map(e=>[e.id,xe(e.id,m)])),T=y.filter(e=>!te.has(`${e.source_node_id}->${e.target_node_id}`)),re=r.flatMap(e=>(i[e.id]||[]).filter(e=>e.status!==`disabled`).map(t=>({entryPoint:e,assignment:t}))),ie=a.flatMap(e=>(o[e.id]||[]).filter(e=>e.status!==`disabled`).map(t=>({pool:e,assignment:t}))),E=re.length+ie.length;return(0,C.jsxs)(`div`,{className:`topologyShell`,children:[(0,C.jsxs)(`svg`,{className:`topologySvg`,viewBox:`0 0 ${b.width} ${b.height}`,role:`img`,"aria-label":`Карта трафика узлов Fabric`,children:[(0,C.jsx)(`defs`,{children:(0,C.jsx)(`marker`,{id:`arrow`,markerHeight:`8`,markerWidth:`8`,orient:`auto`,refX:`7`,refY:`4`,children:(0,C.jsx)(`path`,{d:`M0,0 L8,4 L0,8 Z`,fill:`currentColor`})})}),(0,C.jsx)(`rect`,{x:`36`,y:`58`,width:`268`,height:b.height-100,rx:`24`,className:`topologyZone ingress`}),(0,C.jsx)(`rect`,{x:`330`,y:`58`,width:`460`,height:b.height-100,rx:`24`,className:`topologyZone core`}),(0,C.jsx)(`rect`,{x:`816`,y:`58`,width:`268`,height:b.height-100,rx:`24`,className:`topologyZone egress`}),(0,C.jsx)(`text`,{x:`170`,y:`98`,className:`topologyLayerLabel`,children:u.fabricIngressLayer}),(0,C.jsx)(`text`,{x:`560`,y:`98`,className:`topologyLayerLabel`,children:u.fabricNodeLayer}),(0,C.jsx)(`text`,{x:`950`,y:`98`,className:`topologyLayerLabel`,children:u.fabricEgressLayer}),re.map(({entryPoint:e,assignment:t})=>{let n=w.get(e.id),r=S.get(t.node_id);return!n||!r?null:(0,C.jsx)(`line`,{x1:n.x+78,y1:n.y,x2:r.x-x-8,y2:r.y,className:`topologyPlacementLink ${t.status===`active`?`good`:`weak`}`,markerEnd:`url(#arrow)`},`entry-${e.id}-${t.node_id}`)}),ie.map(({pool:e,assignment:t})=>{let n=S.get(t.node_id),r=ee.get(e.id);return!n||!r?null:(0,C.jsx)(`line`,{x1:n.x+x+8,y1:n.y,x2:r.x-78,y2:r.y,className:`topologyPlacementLink ${t.status===`active`?`good`:`weak`}`,markerEnd:`url(#arrow)`},`egress-${e.id}-${t.node_id}`)}),T.map(e=>{let t=S.get(e.source_node_id),n=S.get(e.target_node_id);if(!t||!n)return null;let r=Oe(t,n,x+8);return(0,C.jsx)(`line`,{x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,className:`topologyConfiguredLink`,markerEnd:`url(#arrow)`},e.id)}),m.map(({link:e,status:t})=>{let n=S.get(e.source_node_id),r=S.get(e.target_node_id);if(!n||!r)return null;let i=Oe(n,r,x+8),a=(i.x1+i.x2)/2,o=(i.y1+i.y2)/2;return(0,C.jsxs)(`g`,{children:[(0,C.jsx)(`line`,{x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2,className:`topologyLink ${gn(e,t)}`,markerEnd:`url(#arrow)`}),(0,C.jsx)(`text`,{x:a,y:o-8,className:`topologyLinkLabel`,children:Ze(e,t)})]},e.id||`${e.source_node_id}-${e.target_node_id}`)}),r.map(e=>{let t=w.get(e.id),n=(i[e.id]||[]).length;return(0,C.jsxs)(`g`,{className:`topologyEndpoint`,children:[(0,C.jsx)(`rect`,{x:t.x-86,y:t.y-36,width:`172`,height:`72`,rx:`20`,className:`topologyEndpointRect ${e.status}`}),(0,C.jsx)(`text`,{x:t.x,y:t.y-8,className:`topologyEndpointName`,children:_n(e.name)}),(0,C.jsxs)(`text`,{x:t.x,y:t.y+15,className:`topologyEndpointMeta`,children:[e.endpoint_type,` · `,n]})]},e.id)}),e.map(t=>{let n=S.get(t.id),r=Ee(e.length),i=Fe(s[t.id]||[]),a=ne.get(t.id)||`isolated`;return(0,C.jsxs)(`g`,{className:`topologyNode`,children:[(0,C.jsx)(`circle`,{cx:n.x,cy:n.y,r:x,className:`topologyNodeCircle ${t.health_status}`}),(0,C.jsx)(`text`,{x:n.x,y:n.y-r.nameOffset,className:`topologyNodeName`,style:{fontSize:r.name},children:_n(t.name,r.maxChars)}),(0,C.jsxs)(`text`,{x:n.x,y:n.y+r.metaOffset,className:`topologyNodeMeta`,style:{fontSize:r.meta},children:[i.length,` активн. ролей / `,(c[t.id]||[]).length,` серв.`]}),(0,C.jsxs)(`text`,{x:n.x,y:n.y+r.memoryOffset,className:`topologyNodeMeta`,style:{fontSize:r.meta},children:[`mesh: `,I(a)]})]},t.id)}),a.map(e=>{let t=ee.get(e.id),n=(o[e.id]||[]).length;return(0,C.jsxs)(`g`,{className:`topologyEndpoint`,children:[(0,C.jsx)(`rect`,{x:t.x-86,y:t.y-36,width:`172`,height:`72`,rx:`20`,className:`topologyEndpointRect ${e.status}`}),(0,C.jsx)(`text`,{x:t.x,y:t.y-8,className:`topologyEndpointName`,children:_n(e.name)}),(0,C.jsxs)(`text`,{x:t.x,y:t.y+15,className:`topologyEndpointMeta`,children:[`egress · `,n]})]},e.id)}),m.length===0&&T.length===0&&E===0&&(0,C.jsx)(`text`,{x:b.width/2,y:b.height-34,className:`topologyEmpty`,children:d})]}),(0,C.jsxs)(`div`,{className:`topologyLegend`,children:[(0,C.jsxs)(`span`,{children:[(0,C.jsx)(`i`,{className:`legendLine placement`}),` `,u.placementIntent,`: `,E]}),(0,C.jsxs)(`span`,{children:[(0,C.jsx)(`i`,{className:`legendLine observed`}),` реальные: `,h.length]}),(0,C.jsxs)(`span`,{children:[(0,C.jsx)(`i`,{className:`legendLine oneWay`}),` one-way: `,g.length]}),(0,C.jsxs)(`span`,{children:[(0,C.jsx)(`i`,{className:`legendLine stale`}),` stale: `,_.length]}),(0,C.jsxs)(`span`,{children:[(0,C.jsx)(`i`,{className:`legendLine problem`}),` проблемы: `,v.length]}),(0,C.jsxs)(`span`,{children:[(0,C.jsx)(`i`,{className:`legendLine configured`}),` configured: `,T.length]})]}),(0,C.jsxs)(`div`,{className:`serviceTags`,children:[r.map(t=>(0,C.jsxs)(`div`,{className:`serviceTag`,children:[(0,C.jsx)(`strong`,{children:t.name}),(0,C.jsx)(`span`,{children:t.endpoint_type}),(0,C.jsx)(`small`,{children:(i[t.id]||[]).map(t=>ut(e,t.node_id)).join(`, `)||u.assignedNodesEmpty})]},t.id)),e.map(e=>(0,C.jsxs)(`div`,{className:`serviceTag`,children:[(0,C.jsx)(`strong`,{children:e.name}),(0,C.jsxs)(`span`,{children:[I(e.health_status),` / mesh `,I(ne.get(e.id)||`isolated`)]}),(0,C.jsx)(`small`,{children:Pe(s[e.id]||[])}),(0,C.jsx)(`small`,{children:Le(c[e.id]||[])})]},e.id)),a.map(t=>(0,C.jsxs)(`div`,{className:`serviceTag`,children:[(0,C.jsx)(`strong`,{children:t.name}),(0,C.jsx)(`span`,{children:t.status}),(0,C.jsx)(`small`,{children:(o[t.id]||[]).map(t=>ut(e,t.node_id)).join(`, `)||u.assignedNodesEmpty})]},t.id))]})]})}function xe(e,t){let n=t.filter(t=>t.link.source_node_id!==t.link.target_node_id&&(t.link.source_node_id===e||t.link.target_node_id===e));return n.some(e=>e.status===`reachable`||e.status===`one_way`)?`connected`:n.some(e=>e.status!==`stale`)?`degraded`:`isolated`}function Se(e,t,n){if(Ce(e,n))return`stale`;if(e.link_status!==`reachable`)return e.link_status===`degraded`||e.link_status===`unreachable`?e.link_status:`unknown`;let r=t.find(t=>t.source_node_id===e.target_node_id&&t.target_node_id===e.source_node_id&&!Ce(t,n));return!r||r.link_status!==`reachable`?`one_way`:`reachable`}function Ce(e,t){if(e.link_status===`stale`||e.metadata?.derived_link_stale===!0)return!0;let n=new Date(e.observed_at).getTime();if(!Number.isFinite(n)||Date.now()-n>120*1e3)return!0;if(!t)return!1;let r=t.get(e.source_node_id),i=t.get(e.target_node_id);return r?.health_status!==`healthy`||i?.health_status!==`healthy`}function we(e,t,n,r,i){return n<=1?{x:e,y:Math.round((r+i)/2)}:{x:e,y:Math.round(r+(i-r)*t/(n-1))}}function j(e,t,n){let r=Math.max(e,t,n,1),i=Math.max(Math.ceil(e/3),r);return{width:1120,height:Math.max(640,220+i*104)}}function Te(e){return e>48?26:e>24?32:e>12?40:52}function Ee(e){return e>48?{name:12,meta:9,nameOffset:7,metaOffset:7,memoryOffset:20,maxChars:10}:e>24?{name:14,meta:10,nameOffset:8,metaOffset:9,memoryOffset:24,maxChars:12}:e>12?{name:16,meta:12,nameOffset:10,metaOffset:11,memoryOffset:28,maxChars:14}:{name:21,meta:15,nameOffset:12,metaOffset:10,memoryOffset:31,maxChars:18}}function De(e,t,n){let r=e.length>24?4:e.length>8?3:e.length>3?2:1,i=Math.max(1,Math.ceil(e.length/r)),a=r===1?0:300/(r-1),o=t-96,s=i===1?0:(o-142)/(i-1);return new Map(e.map((e,t)=>{let n=t%r,c=Math.floor(t/r);return[e.id,{x:Math.round(r===1?560:410+a*n),y:Math.round(i===1?(142+o)/2:142+s*c)}]}))}function Oe(e,t,n){let r=t.x-e.x,i=t.y-e.y,a=Math.max(Math.sqrt(r*r+i*i),1),o=r/a*n,s=i/a*n;return{x1:e.x+o,y1:e.y+s,x2:t.x-o,y2:t.y-s}}function ke(e,t){let n=new Set(e.map(e=>e.id)),r=new Map;for(let[e,i]of Object.entries(t))for(let t of i.routes||[]){let i=t.hops||[];for(let a=0;a<i.length-1;a++){let o=i[a],s=i[a+1];!n.has(o)||!n.has(s)||o===s||r.set(`${o}->${s}`,{id:`configured-${e}-${t.route_id}-${a}`,source_node_id:o,target_node_id:s})}}return[...r.values()]}function Ae({children:e}){return(0,C.jsx)(`div`,{className:`formGrid`,children:e})}function je({columns:e,rows:t}){return t.length===0?(0,C.jsx)(pe,{title:`Нет данных`,text:`В текущей области пока нечего показать.`}):(0,C.jsx)(`div`,{className:`tableWrap`,children:(0,C.jsxs)(`table`,{children:[(0,C.jsx)(`thead`,{children:(0,C.jsx)(`tr`,{children:e.map(e=>(0,C.jsx)(`th`,{children:e},e))})}),(0,C.jsx)(`tbody`,{children:t.map((e,t)=>(0,C.jsx)(`tr`,{children:e.map((e,n)=>(0,C.jsx)(`td`,{children:e},`${t}-${n}`))},t))})]})})}function Me(e,t){let n=JSON.parse(e||`{}`);if(!n||Array.isArray(n)||typeof n!=`object`)throw Error(`${t}: требуется JSON object.`);return n}function Ne(e,t){let n=JSON.parse(e||`[]`);if(!Array.isArray(n))throw Error(`${t}: требуется JSON array.`);return n}function Pe(e){let t=Fe(e);return t.length===0?`активные роли не назначены`:t.map(e=>`${Ie(e.role)}${e.organization_id?` @ ${P(e.organization_id)}`:``}`).join(`, `)}function Fe(e){return e.filter(e=>e.status===`active`)}function Ie(e){let t=T[e];return t?`${t} (${e})`:e}function Le(e){return e.length===0?`нет сервисов`:e.map(e=>`${e.service_type}:${e.reported_state}`).join(`, `)}function Re(e,t,n){let r=n.find(e=>e.product===`rap-node-agent`&&e.channel===`stable`&&e.status===`active`)||n.find(e=>e.product===`rap-node-agent`&&e.status===`active`),i=e.reported_version||``,a=t?.target_version||r?.version||``;return e.version_state&&e.version_state!==`unknown`?{status:e.version_state,targetLabel:a?`target ${a}`:`policy target unknown`}:i?t?.action===`update`?{status:`outdated`,targetLabel:`target ${t.target_version||a}`}:a&&i!==a?{status:`outdated`,targetLabel:`latest ${a}`}:a&&i===a?{status:`current`,targetLabel:`latest ${a}`}:{status:t?.reason===`no_update_policy`?`no_policy`:`unknown`,targetLabel:t?.reason||`release policy unknown`}:{status:`unknown`,targetLabel:a?`target ${a}`:`target unknown`}}function ze(e,t){return e.find(e=>e.product===t)}function Be(e,t){return e?`${e.product}: ${e.phase}/${e.status}`:t?`${t.action}: ${t.reason}`:`нет отчета`}function Ve(e){if(!e)return`нет отчета`;let t=e.target_version?` -> ${e.target_version}`:``,n=e.error_message?`, ошибка: ${e.error_message}`:``;return`${e.current_version||`н/д`}${t}, ${e.phase}/${e.status}, ${F(e.observed_at)}${n}`}function He(e){return e?`push ${e.pushed||0} / pop ${e.popped||0} / q ${e.queue_depth||0} / drop ${e.dropped||0}`:`нет данных`}function Ue(e){if(!e)return`warn`;let t=`${e.phase}:${e.status}`.toLowerCase();return t.includes(`error`)||t.includes(`failed`)||t.includes(`rollback`)?`bad`:t.includes(`success`)||t.includes(`updated`)||t.includes(`noop`)||t.includes(`already_current`)?`good`:t.includes(`download`)||t.includes(`replace`)||t.includes(`plan`)||t.includes(`apply`)?`warn`:``}function We(e){let t=ze(e,`rap-node-agent`),n=ze(e,`rap-host-agent`);if(!t&&!n)return{label:`updater: нет отчета`,detail:`repair/update task не отчитался`,tone:`bad`};let r=[t,n].some(e=>e&&Ge(e)),i=!n,a=n?.phase===`apply`&&n?.status===`staged`,o=[t,n].some(e=>e&&Ue(e)===`bad`),s=t?`${t.current_version||`?`}->${t.target_version||`?`}`:`node ?`,c=n?`${n.current_version||`?`}->${n.target_version||`?`}`:`host ?`,l=F((n||t)?.observed_at);return o?{label:`updater: ошибка`,detail:`${s}; ${c}; ${l}`,tone:`bad`}:i?{label:`repair updater`,detail:`host-agent не отчитался; ${s}; ${l}`,tone:`warn`}:a?{label:`host-agent staged`,detail:`${c}; нужен следующий запуск updater`,tone:`warn`}:r?{label:`updater: stale`,detail:`${s}; ${c}; ${l}`,tone:`warn`}:{label:`updater: ok`,detail:`${s}; ${c}; ${l}`,tone:`good`}}function Ge(e){let t=new Date(e.observed_at).getTime();return!Number.isFinite(t)||Date.now()-t>900*1e3}function Ke(e){let t=typeof e.scope?.node_name==`string`?e.scope.node_name:``,n=typeof e.scope?.purpose==`string`?e.scope.purpose:``;return t||n||P(e.id)}function qe(e){let t=new Map;for(let n of e){let e=`${n.source_node_id}->${n.target_node_id}:${Je(n)}`,r=t.get(e);(!r||new Date(n.observed_at).getTime()>new Date(r.observed_at).getTime())&&t.set(e,n)}return[...t.values()]}function Je(e){let t=Qe(e,`observation_type`)||`default`;return t===`synthetic_route_health`?`${t}:${Qe(e,`route_id`)||e.id}`:t===`peer_connection_manager`?`${t}:${Qe(e,`transport_mode`)}:${Qe(e,`relay_node_id`)}`:t}function Ye(e){let t=Qe(e,`observation_type`);if(t===`synthetic_route_health`){let t=e.metadata?.route_path_drift_detected===!0?`drift`:`ok`;return`route-health ${e.metadata?.route_path_decision_applied===!0?`decision`:`route`} ${t}`}if(t===`peer_connection_manager`){let t=Qe(e,`transport_mode`)||`manager`,n=Qe(e,`connection_state`);return n?`${t} ${n}`:t}return t||`link`}function Xe(e,t){let n=Qe(e,`route_id`),r=Qe(e,`route_path_decision_selected_relay_id`)||Qe(e,`relay_node_id`),i=$e(e,`expected_effective_hops`),a=$e(e,`observed_ack_path`),o=i.length>0?i:a,s=[];return n&&s.push(P(n)),r&&s.push(`via ${P(r)}`),o.length>0&&s.push(o.map(e=>_n(ut(t,e))).join(` > `)),s.length>0?s.join(` / `):`н/д`}function Ze(e,t=e.link_status===`reachable`?`reachable`:`unknown`){return t===`stale`?`stale`:t===`one_way`?`one-way`:Qe(e,`observation_type`)===`synthetic_route_health`?e.metadata?.route_path_drift_detected===!0?`drift`:`route`:e.latency_ms==null?`связь`:`${e.latency_ms}мс`}function Qe(e,t){let n=e.metadata?.[t];return typeof n==`string`?n:``}function $e(e,t){let n=e.metadata?.[t];return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function et(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:void 0}function tt(e){return Array.isArray(e)?e.map(e=>et(e)).filter(e=>!!e):[]}function M(e,t,n=``){let r=e?.[t];return typeof r==`string`?r:typeof r==`number`||typeof r==`boolean`?String(r):n}function nt(e,t){for(let n of t){let t=M(e,n,``);if(t)return t}return``}function rt(e,t,n){let r=t[0],i=r?.metadata||{},a=et(i.mesh_listener_report),o=et(i.mesh_endpoint_report),s=et(i.mesh_outbound_session_report),c=et(i.mesh_peer_connection_manager_report),l=et(i.mesh_peer_recovery_report),u=tt(o?.endpoint_candidates)[0],d=nt(o,[`peer_endpoint`,`advertised_endpoint`,`endpoint`])||M(u,`address`,``)||M(a,`effective_listen_addr`,``)||`адрес не прислан`;if(!r&&!e.last_seen_at)return{agentLabel:`agent: no heartbeat`,agentTone:`bad`,clientLabel:`client: unknown`,clientTone:`warn`,outboundLabel:`outbound: no heartbeat`,outboundTone:`bad`,inboundLabel:`inbound: unknown`,inboundTone:`warn`,address:d,detail:`Узел создан/одобрен, но node-agent еще ни разу не прислал heartbeat.`};let f=it(c,`peer_connection_ready`)||it(l,`peer_connection_ready`)||qe(n).filter(t=>(t.source_node_id===e.id||t.target_node_id===e.id)&&t.link_status===`reachable`).length,p=it(c,`peer_connection_total`)||it(l,`peer_connection_total`)||qe(n).filter(t=>t.source_node_id===e.id||t.target_node_id===e.id).length,m=it(c,`failed`),h=M(a,`status`,``),g=a?.port_conflict===!0,_=a?.one_way_connectivity===!0||M(o,`connectivity_mode`,``)===`outbound_only`||it(c,`peer_connection_relay_ready`)>0,v=`inbound: no report`,y=`warn`;h===`listening`||h===`auto_rebound`?(v=h===`auto_rebound`?`inbound: auto port`:`inbound: listening`,y=`good`):h===`listen_failed`?(v=g?`inbound: port busy`:`inbound: failed`,y=`bad`):h===`disabled`?(v=`inbound: disabled`,y=_?`warn`:`bad`):o&&(v=`inbound: advertised`,y=`good`);let b=`client: no peers`,x=`warn`;f>0?(b=`client: ready ${f}/${Math.max(p,f)}`,x=`good`):(m>0||p>0)&&(b=`client: backoff ${f}/${Math.max(p,m)}`,x=`bad`);let S=M(s,`status`,``),C=s?.usable_for_inbound_control===!0,w=it(s,`peer_connection_relay_ready`),ee=it(s,`rendezvous_lease_count`),te=`outbound: no report`,ne=`warn`;S===`ready`?(te=C?`outbound: ready reverse`:`outbound: ready`,ne=`good`):S===`backoff`||S===`failed`?(te=`outbound: ${S}`,ne=`bad`):(_||w>0||ee>0)&&(te=`outbound: inferred`,ne=`warn`);let T=e.health_status===`healthy`?`good`:e.health_status===`unknown`?`warn`:`bad`;return{agentLabel:r?`agent: heartbeat`:`agent: stale`,agentTone:T,clientLabel:_&&f>0?`${b} one-way`:b,clientTone:x,outboundLabel:te,outboundTone:ne,inboundLabel:v,inboundTone:y,address:d,detail:M(a,`failure_error`,M(a,`failure_reason`,``))}}function it(e,t,n=0){let r=e?.[t];return typeof r==`number`&&Number.isFinite(r)?r:n}function at(e){if(e==null)return`н/д`;let t=JSON.stringify(e);return t.length>140?`${t.slice(0,137)}...`:t}function ot(e){let t=tt(e.candidate_results);return t.length===0?`н/д`:t.slice(0,4).map(e=>{let t=M(e,`candidate_id`,`candidate`),n=M(e,`link_status`,`unknown`),r=M(e,`latency_ms`,``);return r&&r!==`0`?`${t}:${n}:${r}мс`:`${t}:${n}`}).join(`, `)}function st(e){return Object.values(e.peer_endpoint_candidates||{}).reduce((e,t)=>e+t.length,0)}function ct(e){let t=e?.rendezvous_relay_policy;if(!t)return`none`;let n=[`stale${t.stale_relay_count}`,`wd${t.withdrawn_lease_count}`,`repl${t.replacement_lease_count}`];t.scoring_mode.includes(`synthetic_route_health_feedback`)&&n.push(`rh feedback`);let r=t.decisions?.find(e=>e.selected_relay_id);return r?.selected_relay_id&&n.push(`via ${P(r.selected_relay_id)}`),n.join(` `)}function lt(e){let t=e?.route_path_decisions;if(!t)return`none`;let n=[`path${t.decision_count}`,`repl${t.replacement_decision_count}`],r=t.decisions?.find(e=>e.selected_relay_id||e.next_hop_id);return r?.selected_relay_id?n.push(`via ${P(r.selected_relay_id)}`):r?.next_hop_id&&n.push(`next ${P(r.next_hop_id)}`),n.join(` `)}function ut(e,t){return e.find(e=>e.id===t)?.name||P(t)}function dt(e,t){let n=new Map(t.map(e=>[e.id,e])),r=[e.name],i=e.parent_group_id,a=new Set([e.id]);for(;i&&!a.has(i);){a.add(i);let e=n.get(i);if(!e)break;r.unshift(e.name),i=e.parent_group_id}return r.join(` / `)}function ft(e,t){let n=t.find(t=>t.id===e);return n?dt(n,t):e}function pt(e,t){let n=[],r=new Map;for(let e of t){let t=e.parent_group_id||``;r.set(t,[...r.get(t)||[],e])}let i=e=>{for(let t of r.get(e)||[])n.push(t.id),i(t.id)};return i(e),n}function mt(e,t,n,r,i){let a=[],o=new Map,s=[],c=[];for(let t of e){let e=t.memberships.find(e=>e.cluster.id===n);if(!e){c.push(t);continue}let r=e.node.node_group_id;if(!r){s.push(t);continue}o.set(r,[...o.get(r)||[],t])}let l=new Map;for(let e of t){let t=e.parent_group_id||``;l.set(t,[...l.get(t)||[],e])}for(let e of l.values())e.sort((e,t)=>e.sort_order-t.sort_order||e.name.localeCompare(t.name));let u=new Map,d=e=>{let t=u.get(e.id);if(t!=null)return t;let n=o.get(e.id)?.length||0;for(let t of l.get(e.id)||[])n+=d(t);return u.set(e.id,n),n},f=(e,t)=>{let n=[...o.get(e.id)||[]].sort((e,t)=>e.node.name.localeCompare(t.node.name)),r=l.get(e.id)||[],s=`group-${e.id}`,c=d(e);if(a.push({kind:`group`,key:s,label:e.name,depth:t,count:c,groupId:e.id}),!i.has(s)){for(let r of n)a.push({kind:`node`,key:`node-${e.id}-${r.node.id}`,entry:r,depth:t+1});for(let e of r)f(e,t+1)}return c};for(let e of l.get(``)||[])f(e,0);if(s.length>0){let e=`group-ungrouped`;if(a.push({kind:`group`,key:e,label:r.ungroupedNodes,depth:0,count:s.length}),!i.has(e))for(let e of s.sort((e,t)=>e.node.name.localeCompare(t.node.name)))a.push({kind:`node`,key:`node-ungrouped-${e.node.id}`,entry:e,depth:1})}if(c.length>0){let e=`group-outside-active-cluster`;if(a.push({kind:`group`,key:e,label:r.notMemberOfActiveCluster,depth:0,count:c.length}),!i.has(e))for(let e of c.sort((e,t)=>e.node.name.localeCompare(t.node.name)))a.push({kind:`node`,key:`node-outside-${e.node.id}`,entry:e,depth:1})}return a}function ht(e,t){return Object.entries(t).filter(([,t])=>t.some(t=>t.role===e&&t.status===`active`)).map(([e])=>e)}function gt(e){let t={roles:e.roles,node_name:e.nodeName.trim()||null,node_group_id:e.nodeGroupId||null,ownership_type:e.ownershipType,purpose:e.purpose.trim()||null,approval:{mode:`manual`,auto_approve:!1,role_assignment:`manual_after_approval`},source:`platform_owner_console`};if(e.installMode===`docker`){let n=(e.controlPlaneEndpoint||bt()).trim().replace(/\/$/,``);t.install_profile=`docker`,t.backend_url=n,t.control_plane_endpoints=[n],t.image=e.dockerImage||`rap-node-agent:latest`,e.dockerContainerName.trim()&&(t.container_name=e.dockerContainerName.trim()),t.artifact_endpoints=St(e.artifactEndpoints||xt()),e.dockerImageArtifactSHA256.trim()&&(t.docker_image_artifact_sha256=e.dockerImageArtifactSHA256.trim()),t.network=e.dockerNetwork||`host`,t.restart_policy=`unless-stopped`,t.pull_image=!!e.pullImage,t.replace=e.replace!==!1,t.mesh_synthetic_runtime_enabled=e.syntheticRuntime!==!1,t.mesh_production_forwarding_enabled=!1,t.mesh_listen_addr=e.meshListenAddr||`:19131`,t.mesh_listen_port_mode=e.meshListenPortMode||`auto`,t.mesh_listen_auto_port_start=e.meshListenAutoPortStart||19131,t.mesh_listen_auto_port_end=e.meshListenAutoPortEnd||19231,e.meshAdvertiseEndpoint?.trim()&&(t.mesh_advertise_endpoint=e.meshAdvertiseEndpoint.trim().replace(/\/$/,``)),t.mesh_advertise_transport=e.meshAdvertiseTransport||`direct_http`,t.mesh_connectivity_mode=e.meshConnectivityMode||`private_lan`,t.mesh_nat_type=e.meshNATType||`unknown`,t.mesh_region=e.meshRegion||null}if(e.installMode===`windows_service`){let n=(e.controlPlaneEndpoint||bt()).trim().replace(/\/$/,``);t.install_profile=`windows_service`,t.backend_url=n,t.control_plane_endpoints=[n],t.artifact_endpoints=St(e.artifactEndpoints||xt()),t.startup_mode=e.windowsStartupMode||`auto`,e.windowsInstallDir.trim()&&(t.install_dir=e.windowsInstallDir.trim()),e.windowsNodeAgentSHA256.trim()&&(t.node_agent_artifact_sha256=e.windowsNodeAgentSHA256.trim()),t.mesh_synthetic_runtime_enabled=e.syntheticRuntime!==!1,t.mesh_production_forwarding_enabled=!1,t.mesh_listen_addr=e.meshListenAddr||`:19131`,t.mesh_listen_port_mode=e.meshListenPortMode||`auto`,t.mesh_listen_auto_port_start=e.meshListenAutoPortStart||19131,t.mesh_listen_auto_port_end=e.meshListenAutoPortEnd||19231,e.meshAdvertiseEndpoint?.trim()&&(t.mesh_advertise_endpoint=e.meshAdvertiseEndpoint.trim().replace(/\/$/,``)),t.mesh_advertise_transport=e.meshAdvertiseTransport||`direct_http`,t.mesh_connectivity_mode=e.meshConnectivityMode||`outbound_only`,t.mesh_nat_type=e.meshNATType||`unknown`,t.mesh_region=e.meshRegion||`windows`}if(e.installMode===`linux_binary`){let n=(e.controlPlaneEndpoint||bt()).trim().replace(/\/$/,``);t.install_profile=`linux_binary`,t.backend_url=n,t.control_plane_endpoints=[n],t.artifact_endpoints=St(e.artifactEndpoints||xt()),t.startup_mode=`systemd`,e.linuxInstallDir.trim()&&(t.install_dir=e.linuxInstallDir.trim()),e.linuxNodeAgentSHA256.trim()&&(t.node_agent_artifact_sha256=e.linuxNodeAgentSHA256.trim()),t.replace=e.replace!==!1,t.mesh_synthetic_runtime_enabled=e.syntheticRuntime!==!1,t.mesh_production_forwarding_enabled=!1,t.mesh_listen_addr=e.meshListenAddr||`:19131`,t.mesh_listen_port_mode=e.meshListenPortMode||`auto`,t.mesh_listen_auto_port_start=e.meshListenAutoPortStart||19131,t.mesh_listen_auto_port_end=e.meshListenAutoPortEnd||19231,e.meshAdvertiseEndpoint?.trim()&&(t.mesh_advertise_endpoint=e.meshAdvertiseEndpoint.trim().replace(/\/$/,``)),t.mesh_advertise_transport=e.meshAdvertiseTransport||`direct_http`,t.mesh_connectivity_mode=e.meshConnectivityMode||`outbound_only`,t.mesh_nat_type=e.meshNATType||`unknown`,t.mesh_region=e.meshRegion||`linux`}return t}function _t(e,t){let n=vt(e.roles),r=vt(e.artifact_endpoints).join(`, `);return{...t,roles:n.length>0?n:t.roles,nodeName:M(e,`node_name`,``)||t.nodeName,nodeGroupId:M(e,`node_group_id`,``)||t.nodeGroupId,ownershipType:M(e,`ownership_type`,t.ownershipType),purpose:M(e,`purpose`,``)||t.purpose,installMode:M(e,`install_profile`,t.installMode),dockerImage:M(e,`image`,t.dockerImage),dockerContainerName:M(e,`container_name`,``)||t.dockerContainerName,dockerNetwork:M(e,`network`,t.dockerNetwork),windowsStartupMode:M(e,`startup_mode`,t.windowsStartupMode),windowsInstallDir:M(e,`install_dir`,``)||t.windowsInstallDir,windowsNodeAgentSHA256:M(e,`node_agent_artifact_sha256`,``)||t.windowsNodeAgentSHA256,linuxInstallDir:M(e,`install_dir`,``)||t.linuxInstallDir,linuxNodeAgentSHA256:M(e,`node_agent_artifact_sha256`,``)||t.linuxNodeAgentSHA256,meshListenAddr:M(e,`mesh_listen_addr`,t.meshListenAddr),meshListenPortMode:M(e,`mesh_listen_port_mode`,t.meshListenPortMode),meshListenAutoPortStart:it(e,`mesh_listen_auto_port_start`,t.meshListenAutoPortStart),meshListenAutoPortEnd:it(e,`mesh_listen_auto_port_end`,t.meshListenAutoPortEnd),meshAdvertiseEndpoint:M(e,`mesh_advertise_endpoint`,``)||t.meshAdvertiseEndpoint,meshAdvertiseTransport:M(e,`mesh_advertise_transport`,t.meshAdvertiseTransport),meshConnectivityMode:M(e,`mesh_connectivity_mode`,t.meshConnectivityMode),meshNATType:M(e,`mesh_nat_type`,t.meshNATType),meshRegion:M(e,`mesh_region`,``)||t.meshRegion,controlPlaneEndpoint:vt(e.control_plane_endpoints)[0]||M(e,`backend_url`,``)||t.controlPlaneEndpoint,artifactEndpoints:r||t.artifactEndpoints,dockerImageArtifactSHA256:M(e,`docker_image_artifact_sha256`,``)||t.dockerImageArtifactSHA256,pullImage:yt(e,`pull_image`,t.pullImage),replace:yt(e,`replace`,t.replace),syntheticRuntime:yt(e,`mesh_synthetic_runtime_enabled`,t.syntheticRuntime)}}function vt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(Boolean):[]}function yt(e,t,n){let r=e[t];return typeof r==`boolean`?r:n}function bt(){return typeof window>`u`||!window.location?.origin?`http://<control-plane-host>:18080/api/v1`:`${window.location.origin.replace(/\/$/,``)}/api/v1`}function xt(){return typeof window>`u`||!window.location?.origin?`http://<bootstrap-host>:18080/downloads`:`${window.location.origin.replace(/\/$/,``)}/downloads`}function St(e){return e.split(`,`).map(e=>e.trim().replace(/\/$/,``)).filter(Boolean)}function Ct(e){return St(e.artifactEndpoints||xt()).map(e=>`${e}/rap-node-agent-dev-enrollment-bootstrap-smoke.tar`)}function wt(e){return e.meshConnectivityMode===`outbound_only`?`outbound_only`:e.meshConnectivityMode===`private_lan`?`private_lan`:e.meshNATType!==`none`&&e.meshAdvertiseEndpoint.trim()?`nat_forward`:`direct`}function Tt(e,t){let n={...e};return t===`private_lan`?(n.meshConnectivityMode=`private_lan`,n.meshNATType=`none`):t===`direct`?(n.meshConnectivityMode=`direct`,n.meshNATType=`none`):t===`nat_forward`?(n.meshConnectivityMode=`direct`,n.meshNATType=`port_restricted`):(n.meshConnectivityMode=`outbound_only`,n.meshNATType=`symmetric`,n.meshAdvertiseEndpoint=``),n}function Et(e,t){return e.nodeName.trim()?e.nodeName.trim():`${Jt(t?.slug||t?.name||`rap-node`)}-node-1`}function Dt(e,t){return e.dockerContainerName.trim()?e.dockerContainerName.trim():`rap-node-agent-${Jt(Et(e,t))}`}function Ot(e,t,n=se){let r=t?.id||e.cluster_id,i=Et(n,t),a=Dt(n,t),o=Jt(i),s=[`rap-host-agent install`,`--backend-url ${N(Ut(n))}`,`--cluster-id ${N(r)}`,`--join-token ${N(e.token)}`,`--node-name ${N(i)}`,`--image ${N(n.dockerImage||`rap-node-agent:latest`)}`,`--container-name ${N(a)}`,`--state-dir ${N(`/var/lib/rap/nodes/${o}`)}`,`--network host`,`--replace`];for(let e of Ct(n))s.push(`--image-artifact-url ${N(e)}`);return n.dockerImageArtifactSHA256.trim()&&s.push(`--image-artifact-sha256 ${N(n.dockerImageArtifactSHA256.trim())}`),s.join(` \\
`)}function kt(e,t,n=se){let r=t?.id||e.cluster_id,i=Et(n,t),a=[`sudo "$rap_host_agent" install`,`--profile-url ${N(Ut(n))}`,`--cluster-id ${N(r)}`,`--install-token ${N(e.token)}`,`--node-name ${N(i)}`].join(` \\
`);return[`rap_host_agent="$(mktemp /tmp/rap-host-agent.XXXXXX)"`,`curl -fL --retry 3 --retry-delay 1 ${N(Kt(n))} -o "$rap_host_agent"`,`chmod +x "$rap_host_agent"`,a].join(` && \\
`)}function At(e,t,n=se){let r=t?.id||e.cluster_id,i=Et(n,t),a=[`sudo "$rap_host_agent" install-linux`,`--profile-url ${N(Ut(n))}`,`--cluster-id ${N(r)}`,`--install-token ${N(e.token)}`,`--node-name ${N(i)}`].join(` \\
`);return[`rap_host_agent="$(mktemp /tmp/rap-host-agent.XXXXXX)"`,`curl -fL --retry 3 --retry-delay 1 ${N(Kt(n))} -o "$rap_host_agent"`,`chmod +x "$rap_host_agent"`,a].join(` && \\
`)}function jt(e,t,n=se){let r=t?.id||e.cluster_id,i=Et(n,t),a=Ut(n);return[`$rapHostAgent = Join-Path $env:TEMP "rap-host-agent.exe"`,`Invoke-WebRequest -UseBasicParsing ${Yt(qt(n))} -OutFile $rapHostAgent`,`& $rapHostAgent install-windows --profile-url ${Yt(a)} --cluster-id ${Yt(r)} --install-token ${Yt(e.token)} --node-name ${Yt(i)} --startup-mode ${Yt(n.windowsStartupMode||`auto`)}`].join(`\r
`)}function Mt(e,t,n=se){let r=t?.id||e.cluster_id,i=Et(n,t),a=Ut(n),o=qt(n),s=n.windowsStartupMode||`auto`;return[`powershell -NoProfile -ExecutionPolicy Bypass -Command "Invoke-WebRequest -UseBasicParsing '${o}' -OutFile $env:TEMP\\rap-host-agent.exe"`,`%TEMP%\\rap-host-agent.exe install-windows --profile-url "${a}" --cluster-id "${r}" --install-token "${e.token}" --node-name "${i}" --startup-mode "${s}"`].join(`\r
`)}function Nt(e,t){let n=Wt(),r=n.replace(/\/api\/v1$/i,``).replace(/\/api$/i,``).replace(/\/$/,``),i=e.name||e.node_key||e.id,a=Bt(i),o=`%ProgramFiles%\\RAP\\${a}`,s=`%ProgramData%\\RAP\\nodes\\${a}`,c=`RAP Node Agent ${a}`,l=`RAP Host Agent Updater ${a}`,u=`${o}\\rap-host-agent.exe`,d=`${u}.next`;return[`@echo off`,`echo === RAP Windows updater repair: ${Xt(i)} ===`,`echo Node ID: ${e.id}`,`echo Control Plane: ${n}`,`echo.`,`echo === Before repair: scheduled tasks ===`,`schtasks /Query /TN "${c}" /V /FO LIST`,`schtasks /Query /TN "${l}" /V /FO LIST`,`echo.`,`echo === Before repair: binaries ===`,`dir "${o}\\rap-*.exe*"`,`echo.`,`powershell -NoProfile -ExecutionPolicy Bypass -Command "Invoke-WebRequest -UseBasicParsing '${r}/downloads/rap-host-agent-windows-amd64.exe' -OutFile $env:TEMP\\rap-host-agent.exe"`,`%TEMP%\\rap-host-agent.exe install-windows --backend-url "${n}" --cluster-id "${t||`<cluster-id>`}" --node-id "${e.id}" --node-name "${Xt(i)}" --replace --startup-mode "auto" --auto-update-current-version "0.0.0" --auto-update-initial-delay-seconds 1`,`"${u}" update-loop --backend-url "${n}" --cluster-id "${t||`<cluster-id>`}" --node-id "${e.id}" --state-dir "${s}" --current-version "0.0.0" --os windows --arch amd64 --install-type windows_service --binary-path "${o}\\rap-node-agent.exe" --windows-task-name "${c}" --health-timeout-seconds 30 --interval-seconds 0 --initial-delay-seconds 0 --max-runs 1 --host-agent-update-status-enabled --host-agent-current-version "0.0.0" --host-agent-binary-path "${u}"`,`echo.`,`echo === Applying staged host-agent if present ===`,`if exist "${d}" copy /Y "${d}" "${u}"`,`if exist "${d}" del /F /Q "${d}"`,`schtasks /End /TN "${l}"`,`schtasks /Run /TN "${l}"`,`echo.`,`echo === After repair: binaries ===`,`dir "${o}\\rap-*.exe*"`,`echo.`,`echo === After repair: updater task ===`,`schtasks /Query /TN "${l}" /V /FO LIST`,`echo.`,`echo Repair command finished. Check the admin panel for rap-node-agent and rap-host-agent plan/noop reports.`].join(`\r
`)}function Pt(e){return`rap-repair-updater-${zt(e.name||e.node_key||e.id||`node`)}.cmd`}function Ft(e,t){let n=Wt(),r=n.replace(/\/api\/v1$/i,``).replace(/\/api$/i,``).replace(/\/$/,``),i=e.name||e.node_key||e.id,a=Vt(i),o=`/opt/rap/${a}`,s=`/var/lib/rap/nodes/${a}`,c=`rap-node-agent-${a}.service`,l=`rap-host-agent-updater-${a}.service`,u=`${o}/rap-host-agent`;return[`#!/usr/bin/env bash`,`set -euo pipefail`,`echo "=== RAP Linux updater repair: ${Ht(i)} ==="`,`echo "Node ID: ${e.id}"`,`echo "Control Plane: ${n}"`,`echo`,`echo "=== Before repair: systemd units ==="`,`systemctl status ${N(c)} --no-pager || true`,`systemctl status ${N(l)} --no-pager || true`,`echo`,`echo "=== Before repair: binaries ==="`,`ls -la ${N(o)} || true`,`echo`,`rap_host_agent="$(mktemp /tmp/rap-host-agent.XXXXXX)"`,`curl -fL --retry 3 --retry-delay 1 ${N(`${r}/downloads/rap-host-agent-linux-amd64`)} -o "$rap_host_agent"`,`chmod +x "$rap_host_agent"`,`sudo "$rap_host_agent" install-linux --backend-url ${N(n)} --cluster-id ${N(t||`<cluster-id>`)} --node-id ${N(e.id)} --node-name ${N(i)} --replace --startup-mode systemd --auto-update-current-version 0.0.0 --auto-update-initial-delay-seconds 1`,`sudo ${N(u)} update-loop --backend-url ${N(n)} --cluster-id ${N(t||`<cluster-id>`)} --node-id ${N(e.id)} --state-dir ${N(s)} --current-version 0.0.0 --os linux --arch amd64 --install-type linux_binary --binary-path ${N(`${o}/rap-node-agent`)} --systemd-unit ${N(c)} --health-timeout-seconds 30 --interval-seconds 0 --initial-delay-seconds 0 --max-runs 1 --host-agent-update-status-enabled --host-agent-current-version 0.0.0 --host-agent-binary-path ${N(u)}`,`sudo systemctl daemon-reload`,`sudo systemctl restart ${N(l)}`,`echo`,`echo "=== After repair: systemd updater ==="`,`systemctl status ${N(l)} --no-pager || true`,`echo "Repair command finished. Check the admin panel for rap-node-agent and rap-host-agent plan/noop reports."`].join(`
`)}function It(e){return`rap-repair-updater-${zt(e.name||e.node_key||e.id||`node`)}.sh`}function Lt(e,t){if(typeof document>`u`)return;let n=new Blob([t.endsWith(`\r
`)?t:`${t}\r\n`],{type:`text/plain;charset=utf-8`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e,document.body.appendChild(i),i.click(),i.remove(),URL.revokeObjectURL(r)}async function Rt(e){await navigator.clipboard.writeText(e)}function zt(e){return e.trim().replace(/[\\/:*?"<>|]+/g,`-`).replace(/\s+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``).slice(0,80)||`node`}function Bt(e){return e.trim().replace(/[\\/:*?"<>|]+/g,`-`).replace(/\s+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``)||`node`}function Vt(e){return Bt(e).slice(0,48)||`node`}function Ht(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/\$/g,`\\$`).replace(/`/g,"\\`")}function Ut(e=se){return(e.controlPlaneEndpoint||bt()).trim().replace(/\/$/,``)}function Wt(){let e=typeof window>`u`?``:window.location?.origin||``;return/^(http:\/\/)?(192\.168\.200\.61|docker-test\.cin\.su)(:18080)?$/i.test(e.replace(/\/$/,``))?`http://vpn.cin.su:19191/api/v1`:`${e.replace(/\/$/,``)}/api/v1`}function Gt(e=se){let t=St(e.artifactEndpoints)[0];return t?t.replace(/\/downloads$/i,``).replace(/\/$/,``):Ut(e).replace(/\/api\/v1$/i,``).replace(/\/api$/i,``).replace(/\/$/,``)}function Kt(e=se){return`${typeof window>`u`&&!e.controlPlaneEndpoint?`http://<control-plane-host>:18080`:Gt(e)}/downloads/rap-host-agent-linux-amd64`}function qt(e=se){return`${typeof window>`u`&&!e.controlPlaneEndpoint?`http://<control-plane-host>:18080`:Gt(e)}/downloads/rap-host-agent-windows-amd64.exe`}function Jt(e){return e.trim().toLowerCase().replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,42)||`rap-node`}function N(e){return`'${e.replace(/'/g,`'\\''`)}'`}function Yt(e){return`'${e.replace(/'/g,`''`)}'`}function Xt(e){return e.replace(/"/g,`""`)}function Zt(e,t){return e.includes(t)?e.filter(e=>e!==t):[...e,t]}function Qt(e,t,n,r,i){let a=n.trim().toLowerCase(),o=new Map;for(let n of e){if(a&&!$t(n,a))continue;let e=en(n,t,r,i);o.set(e,[...o.get(e)||[],n])}return Array.from(o.entries()).map(([e,t])=>({label:e,items:t.sort((e,t)=>e.node.name.localeCompare(t.node.name))})).sort((e,t)=>e.label.localeCompare(t.label))}function $t(e,t){return[e.node.name,e.node.node_key,e.node.health_status,e.node.ownership_type,e.node.reported_version||``,...e.memberships.flatMap(e=>[e.cluster.name,e.cluster.slug,e.node.membership_status])].some(e=>e.toLowerCase().includes(t))}function en(e,t,n,r){if(n===`health`)return I(e.node.health_status);if(n===`ownership`)return I(e.node.ownership_type);if(n===`cluster_count`)return hn(e.memberships.length,r);let i=e.memberships.find(e=>e.cluster.id===t);return i?i.node.membership_status===`active`?r===`en`?`In active cluster`:`В активном кластере`:`${r===`en`?`Membership`:`Участие`}: ${I(i.node.membership_status)}`:r===`en`?`Not in active cluster`:`Не в активном кластере`}function tn(e,t){let n=re[e]||[];if(n.length===0||!t)return`unknown`;if(nn(t))return`stale`;let r=t.capabilities||{};return n.some(e=>!!r[e])?`confirmed`:`missing`}function nn(e){if(!e?.observed_at)return!0;let t=new Date(e.observed_at).getTime();return!Number.isFinite(t)||Date.now()-t>60*1e3}function rn(e,t){let n=tn(e,t);return n===`confirmed`?`good`:n===`missing`?`bad`:n===`stale`?`warn`:``}function an(e,t,n){let r=tn(e,t);return r===`confirmed`?n.capabilityConfirmed:r===`missing`?n.capabilityMissing:r===`stale`?`heartbeat устарел`:n.capabilityUnknown}function on(e,t,n){let r=tn(e,t);return n===`en`?r===`confirmed`?`capable`:r===`missing`?`not reported`:r===`stale`?`stale heartbeat`:`unknown`:r===`confirmed`?`подходит`:r===`missing`?`не заявлено`:r===`stale`?`heartbeat устарел`:`неизвестно`}function sn(e){let t=e?.metadata?.mesh_peer_recovery_report;if(!t||typeof t!=`object`||Array.isArray(t))return`н/д`;let n=t,r=typeof n.mode==`string`?n.mode:`unknown`,i=typeof n.ready_peer_count==`number`?n.ready_peer_count:null,a=typeof n.target_ready_peers==`number`?n.target_ready_peers:null,o=typeof n.deficit==`number`?n.deficit:0,s=i==null||a==null?r:`${r} ${i}/${a}`;return o>0?`${s} deficit ${o}`:s}function cn(e){let t=e?.metadata?.mesh_peer_connection_intent_report;if(!t||typeof t!=`object`||Array.isArray(t))return pn(e);let n=t,r=typeof n.intent_count==`number`?n.intent_count:0,i=typeof n.maintain_count==`number`?n.maintain_count:0,a=typeof n.recover_count==`number`?n.recover_count:0,o=typeof n.rendezvous_required_count==`number`?n.rendezvous_required_count:0,s=typeof n.rendezvous_resolved_count==`number`?n.rendezvous_resolved_count:0,c=typeof n.relay_control_count==`number`?n.relay_control_count:0,l=[`rv${o}`];s>0&&l.push(`ok${s}`),c>0&&l.push(`relay${c}`);let u=o>0||s>0||c>0?`${r} intents m${i}/r${a} ${l.join(`/`)}`:`${r} intents m${i}/r${a}`,d=pn(e);return d===`н/д`?u:`${u}; ${d}`}function ln(e){let t=e?.metadata?.mesh_rendezvous_lease_report;if(!t||typeof t!=`object`||Array.isArray(t))return`н/д`;let n=t,r=typeof n.lease_count==`number`?n.lease_count:0,i=typeof n.active_count==`number`?n.active_count:0,a=typeof n.admitted_as_relay_count==`number`?n.admitted_as_relay_count:0,o=typeof n.admitted_as_peer_count==`number`?n.admitted_as_peer_count:0,s=typeof n.renewal_needed_count==`number`?n.renewal_needed_count:0,c=typeof n.relay_control_ready_count==`number`?n.relay_control_ready_count:0,l=typeof n.stale_relay_count==`number`?n.stale_relay_count:0,u=typeof n.refresh_attempt_count==`number`?n.refresh_attempt_count:0,d=typeof n.refresh_success_count==`number`?n.refresh_success_count:0,f=[`lease ${i}/${r}`];return a>0&&f.push(`relay${a}`),o>0&&f.push(`peer${o}`),s>0&&f.push(`renew${s}`),l>0&&f.push(`stale${l}`),c>0&&f.push(`ready${c}`),u>0&&f.push(`ref${d}/${u}`),f.join(` `)}function un(e){let t=e?.metadata?.mesh_route_path_decision_report;if(!t||typeof t!=`object`||Array.isArray(t))return`н/д`;let n=t,r=typeof n.decision_count==`number`?n.decision_count:0,i=typeof n.replacement_decision_count==`number`?n.replacement_decision_count:0,a=typeof n.local_effective_path_count==`number`?n.local_effective_path_count:0,o=typeof n.next_hop_available_count==`number`?n.next_hop_available_count:0,s=typeof n.withdrawn_local_relay_count==`number`?n.withdrawn_local_relay_count:0,c=[`path ${a}/${r}`];return i>0&&c.push(`repl${i}`),o>0&&c.push(`next${o}`),s>0&&c.push(`wd${s}`),c.join(` `)}function dn(e){let t=e?.metadata?.mesh_route_generation_report;if(!t||typeof t!=`object`||Array.isArray(t))return`н/д`;let n=t,r=typeof n.active_decision_count==`number`?n.active_decision_count:0,i=typeof n.applied_decision_count==`number`?n.applied_decision_count:0,a=typeof n.withdrawn_decision_count==`number`?n.withdrawn_decision_count:0,o=n.generation_changed===!0,s=[`gen ${r}`];return i>0&&s.push(`ap${i}`),a>0&&s.push(`wd${a}`),o&&s.push(`chg`),s.join(` `)}function fn(e){let t=e?.metadata?.mesh_route_health_config_report;if(!t||typeof t!=`object`||Array.isArray(t))return`н/д`;let n=t,r=e?.metadata?.mesh_route_health_feedback_refresh_report,i=r&&typeof r==`object`&&!Array.isArray(r)?r:{},a=typeof n.route_health_route_count==`number`?n.route_health_route_count:0,o=typeof n.route_path_decision_applied_count==`number`?n.route_path_decision_applied_count:0,s=typeof n.replacement_route_health_route_count==`number`?n.replacement_route_health_route_count:0,c=typeof n.route_health_decision_drift_candidate_count==`number`?n.route_health_decision_drift_candidate_count:0,l=typeof i.feedback_refresh_attempt_count==`number`?i.feedback_refresh_attempt_count:typeof n.feedback_refresh_attempt_count==`number`?n.feedback_refresh_attempt_count:0,u=typeof i.feedback_refresh_success_count==`number`?i.feedback_refresh_success_count:typeof n.feedback_refresh_success_count==`number`?n.feedback_refresh_success_count:0,d=typeof i.feedback_refresh_suppressed_count==`number`?i.feedback_refresh_suppressed_count:typeof n.feedback_refresh_suppressed_count==`number`?n.feedback_refresh_suppressed_count:0,f=[`rh ${o}/${a}`];return s>0&&f.push(`repl${s}`),c>0&&f.push(`drift${c}`),(l>0||d>0)&&f.push(`fb${u}/${l}`),d>0&&f.push(`sup${d}`),f.join(` `)}function pn(e){let t=e?.metadata?.mesh_peer_connection_manager_report;if(!t||typeof t!=`object`||Array.isArray(t))return`н/д`;let n=t;if(n.enabled===!1)return`manager off`;let r=typeof n.attempted==`number`?n.attempted:0,i=typeof n.succeeded==`number`?n.succeeded:0,a=typeof n.deferred==`number`?n.deferred:0,o=typeof n.relay_control_count==`number`?n.relay_control_count:0,s=o>0?`mgr ${i}/${r} relay${o}`:`mgr ${i}/${r}`;return a>0?`${s} def${a}`:s}function mn(e){let t=e?.metadata?.mesh_listener_report;if(!t||typeof t!=`object`||Array.isArray(t))return`н/д`;let n=t,r=typeof n.status==`string`?n.status:`unknown`,i=typeof n.listen_port_mode==`string`?n.listen_port_mode:`manual`,a=typeof n.effective_listen_addr==`string`?n.effective_listen_addr:``,o=typeof n.failure_reason==`string`?n.failure_reason:``;return r===`listening`?a?`listen ${a}`:`listen`:r===`auto_rebound`?a?`auto ${a}`:`auto rebound`:r===`listen_failed`?o?`${i} failed: ${o}`:`${i} failed`:r===`disabled`?i===`disabled`?`inbound off`:`inbound unavailable`:r}function hn(e,t){if(t===`en`)return e===1?`1 cluster`:`${e} clusters`;let n=e%10,r=e%100;return n===1&&r!==11?`${e} кластер`:n>=2&&n<=4&&(r<12||r>14)?`${e} кластера`:`${e} кластеров`}function gn(e,t=e.link_status===`reachable`?`reachable`:`unknown`){return t===`stale`?`stale`:t===`one_way`?`oneWay`:t!==`reachable`||e.link_status!==`reachable`?`bad`:e.quality_score!=null&&e.quality_score<70||e.latency_ms!=null&&e.latency_ms>80?`weak`:`good`}function _n(e,t=16){return e.length>t?`${e.slice(0,Math.max(1,t-2))}`:e}function vn(e){return window.confirm(`${e}?\n\nЭто высокорисковая операция владельца платформы. Действие будет записано в аудит.`)}function yn(e){let t=(e||``).replace(/\/$/,``);return!t||t===`/api/v1`?window.location.origin:t.endsWith(`/api/v1`)?t.slice(0,-7):t}function P(e){return e?e.length>12?`${e.slice(0,8)}...${e.slice(-4)}`:e:`нет`}function F(e){return e?new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e)):`никогда`}function bn(e){return e?new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}).format(new Date(e)):`н/д`}function xn(e){if(e==null||Number.isNaN(e))return`н/д`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n.toFixed(r===0?0:1)} ${t[r]}`}function I(e){return{active:`активно`,approved:`одобрено`,authoritative:`authoritative`,connecting:`подключается`,connected:`связан`,critical:`критично`,current:`актуальна`,degraded:`degraded`,disabled:`выключено`,enabled:`включено`,failed:`ошибка`,healthy:`здоров`,isolated:`изолирован`,offline:`нет связи`,one_way:`односторонняя`,outdated:`обновить`,pending:`ожидает`,platform_managed:`платформенный`,rejected:`отклонено`,revoked:`отозвано`,running:`работает`,customer_managed:`клиентский`,no_policy:`нет политики`,not_configured:`не задано`,missing:`нет отчета`,stopped:`остановлено`,stale:`устарело`,unknown:`неизвестно`}[e]||e}(0,v.createRoot)(document.getElementById(`root`)).render((0,C.jsx)(_.StrictMode,{children:(0,C.jsx)(le,{})}));