PageSourceSearch

https://rtsp.ru/assets/hydrate-landing.6MgH53dJ.js

js rtsp.ru collected 2026-10-05 17:40:26 UTC 625,685 bytes, 67 lines download raw bytes

vendor: 4,802 bytes, lines 1-9
1var Rh=Object.defineProperty;var fu=e=>{throw TypeError(e)};var Ch=(e,t,n)=>t in e?Rh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Lr=(e,t,n)=>Ch(e,typeof t!="symbol"?t+"":t,n),ji=(e,t,n)=>t.has(e)||fu("Cannot "+n);var _=(e,t,n)=>(ji(e,t,"read from private field"),n?n.call(e):t.get(e)),D=(e,t,n)=>t.has(e)?fu("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),L=(e,t,n,a)=>(ji(e,t,"write to private field"),a?a.call(e,n):t.set(e,n),n),xe=(e,t,n)=>(ji(e,t,"access private method"),n);var Fa=(e,t,n,a)=>({set _(s){L(e,t,s,n)},get _(){return _(e,t,a)}});function hd(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var fd={exports:{}},Js={},gd={exports:{}},q={};/**
2 * @license React
3 * react.production.min.js
4 *
5 * Copyright (c) Facebook, Inc. and its affiliates.
6 *
7 * This source code is licensed under the MIT license found in the
8 * LICENSE file in the root directory of this source tree.
9 */var Sa=Symbol.for("react.element"),Ih=Symbol.for("react.portal"),Fh=Symbol.for("react.fragment"),Lh=Symbol.for("react.strict_mode"),Mh=Symbol.for("react.profiler"),Ah=Symbol.for("react.provider"),qh=Symbol.for("react.context"),Dh=Symbol.for("react.forward_ref"),Oh=Symbol.for("react.suspense"),Hh=Symbol.for("react.memo"),Uh=Symbol.for("react.lazy"),gu=Symbol.iterator;function Vh(e){return e===null||typeof e!="object"?null:(e=gu&&e[gu]||e["@@iterator"],typeof e=="function"?e:null)}var xd={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},vd=Object.assign,bd={};function wn(e,t,n){this.props=e,this.context=t,this.refs=bd,this.updater=n||xd}wn.prototype.isReactComponent={};wn.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};wn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function yd(){}yd.prototype=wn.prototype;function io(e,t,n){this.props=e,this.context=t,this.refs=bd,this.updater=n||xd}var lo=io.prototype=new yd;lo.constructor=io;vd(lo,wn.prototype);lo.isPureReactComponent=!0;var xu=Array.isArray,jd=Object.prototype.hasOwnProperty,oo={current:null},wd={key:!0,ref:!0,__self:!0,__source:!0};function Sd(e,t,n){var a,s={},i=null,l=null;if(t!=null)for(a in t.ref!==void 0&&(l=t.ref),t.key!==void 0&&(i=""+t.key),t)jd.call(t,a)&&!wd.hasOwnProperty(a)&&(s[a]=t[a]);var o=arguments.length-2;if(o===1)s.children=n;else if(1<o){for(var u=Array(o),c=0;c<o;c++)u[c]=arguments[c+2];s.children=u}if(e&&e.defaultProps)for(a in o=e.defaultProps,o)s[a]===void 0&&(s[a]=o[a]);return{$$typeof:Sa,type:e,key:i,ref:l,props:s,_owner:oo.current}}function Bh(e,t){return{$$typeof:Sa,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function uo(e){return typeof e=="object"&&e!==null&&e.$$typeof===Sa}function Wh(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var vu=/\/+/g;function wi(e,t){return typeof e=="object"&&e!==null&&e.key!=null?Wh(""+e.key):t.toString(36)}function is(e,t,n,a,s){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var l=!1;if(e===null)l=!0;else switch(i){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case Sa:case Ih:l=!0}}if(l)return l=e,s=s(l),e=a===""?"."+wi(l,0):a,xu(s)?(n="",e!=null&&(n=e.replace(vu,"$&/")+"/"),is(s,t,n,"",function(c){return c})):s!=null&&(uo(s)&&(s=Bh(s,n+(!s.key||l&&l.key===s.key?"":(""+s.key).replace(vu,"$&/")+"/")+e)),t.push(s)),1;if(l=0,a=a===""?".":a+":",xu(e))for(var o=0;o<e.length;o++){i=e[o];var u=a+wi(i,o);l+=is(i,t,n,u,s)}else if(u=Vh(e),typeof u=="function")for(e=u.call(e),o=0;!(i=e.next()).done;)i=i.value,u=a+wi(i,o++),l+=is(i,t,n,u,s);else if(i==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return l}function La(e,t,n){if(e==null)return e;var a=[],s=0;return is(e,a,"","",function(i){return t.call(n,i,s++)}),a}function $h(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var ke={current:null},ls={transition:null},Kh={ReactCurrentDispatcher:ke,ReactCurrentBatchConfig:ls,ReactCurrentOwner:oo};function _d(){throw Error("act(...) is not supported in production builds of React.")}
vendor: 13,409 bytes, lines 9-33
9q.Children={map:La,forEach:function(e,t,n){La(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return La(e,function(){t++}),t},toArray:function(e){return La(e,function(t){return t})||[]},only:function(e){if(!uo(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};q.Component=wn;q.Fragment=Fh;q.Profiler=Mh;q.PureComponent=io;q.StrictMode=Lh;q.Suspense=Oh;q.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Kh;q.act=_d;q.cloneElement=function(e,t,n){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var a=vd({},e.props),s=e.key,i=e.ref,l=e._owner;if(t!=null){if(t.ref!==void 0&&(i=t.ref,l=oo.current),t.key!==void 0&&(s=""+t.key),e.type&&e.type.defaultProps)var o=e.type.defaultProps;for(u in t)jd.call(t,u)&&!wd.hasOwnProperty(u)&&(a[u]=t[u]===void 0&&o!==void 0?o[u]:t[u])}var u=arguments.length-2;if(u===1)a.children=n;else if(1<u){o=Array(u);for(var c=0;c<u;c++)o[c]=arguments[c+2];a.children=o}return{$$typeof:Sa,type:e.type,key:s,ref:i,props:a,_owner:l}};q.createContext=function(e){return e={$$typeof:qh,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:Ah,_context:e},e.Consumer=e};q.createElement=Sd;q.createFactory=function(e){var t=Sd.bind(null,e);return t.type=e,t};q.createRef=function(){return{current:null}};q.forwardRef=function(e){return{$$typeof:Dh,render:e}};q.isValidElement=uo;q.lazy=function(e){return{$$typeof:Uh,_payload:{_status:-1,_result:e},_init:$h}};q.memo=function(e,t){return{$$typeof:Hh,type:e,compare:t===void 0?null:t}};q.startTransition=function(e){var t=ls.transition;ls.transition={};try{e()}finally{ls.transition=t}};q.unstable_act=_d;q.useCallback=function(e,t){return ke.current.useCallback(e,t)};q.useContext=function(e){return ke.current.useContext(e)};q.useDebugValue=function(){};q.useDeferredValue=function(e){return ke.current.useDeferredValue(e)};q.useEffect=function(e,t){return ke.current.useEffect(e,t)};q.useId=function(){return ke.current.useId()};q.useImperativeHandle=function(e,t,n){return ke.current.useImperativeHandle(e,t,n)};q.useInsertionEffect=function(e,t){return ke.current.useInsertionEffect(e,t)};q.useLayoutEffect=function(e,t){return ke.current.useLayoutEffect(e,t)};q.useMemo=function(e,t){return ke.current.useMemo(e,t)};q.useReducer=function(e,t,n){return ke.current.useReducer(e,t,n)};q.useRef=function(e){return ke.current.useRef(e)};q.useState=function(e){return ke.current.useState(e)};q.useSyncExternalStore=function(e,t,n){return ke.current.useSyncExternalStore(e,t,n)};q.useTransition=function(){return ke.current.useTransition()};q.version="18.3.1";gd.exports=q;var x=gd.exports;const Pd=hd(x);/**
10 * @license React
11 * react-jsx-runtime.production.min.js
12 *
13 * Copyright (c) Facebook, Inc. and its affiliates.
14 *
15 * This source code is licensed under the MIT license found in the
16 * LICENSE file in the root directory of this source tree.
17 */var Gh=x,Yh=Symbol.for("react.element"),Qh=Symbol.for("react.fragment"),Zh=Object.prototype.hasOwnProperty,Xh=Gh.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Jh={key:!0,ref:!0,__self:!0,__source:!0};function kd(e,t,n){var a,s={},i=null,l=null;n!==void 0&&(i=""+n),t.key!==void 0&&(i=""+t.key),t.ref!==void 0&&(l=t.ref);for(a in t)Zh.call(t,a)&&!Jh.hasOwnProperty(a)&&(s[a]=t[a]);if(e&&e.defaultProps)for(a in t=e.defaultProps,t)s[a]===void 0&&(s[a]=t[a]);return{$$typeof:Yh,type:e,key:i,ref:l,props:s,_owner:Xh.current}}Js.Fragment=Qh;Js.jsx=kd;Js.jsxs=kd;fd.exports=Js;var r=fd.exports,Nd={exports:{}},Oe={},Td={exports:{}},Ed={};/**
18 * @license React
19 * scheduler.production.min.js
20 *
21 * Copyright (c) Facebook, Inc. and its affiliates.
22 *
23 * This source code is licensed under the MIT license found in the
24 * LICENSE file in the root directory of this source tree.
25 */(function(e){function t(E,F){var M=E.length;E.push(F);e:for(;0<M;){var K=M-1>>>1,ne=E[K];if(0<s(ne,F))E[K]=F,E[M]=ne,M=K;else break e}}function n(E){return E.length===0?null:E[0]}function a(E){if(E.length===0)return null;var F=E[0],M=E.pop();if(M!==F){E[0]=M;e:for(var K=0,ne=E.length,Ca=ne>>>1;K<Ca;){var mr=2*(K+1)-1,yi=E[mr],pr=mr+1,Ia=E[pr];if(0>s(yi,M))pr<ne&&0>s(Ia,yi)?(E[K]=Ia,E[pr]=M,K=pr):(E[K]=yi,E[mr]=M,K=mr);else if(pr<ne&&0>s(Ia,M))E[K]=Ia,E[pr]=M,K=pr;else break e}}return F}function s(E,F){var M=E.sortIndex-F.sortIndex;return M!==0?M:E.id-F.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var l=Date,o=l.now();e.unstable_now=function(){return l.now()-o}}var u=[],c=[],p=1,m=null,h=3,v=!1,j=!1,b=!1,S=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,d=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function g(E){for(var F=n(c);F!==null;){if(F.callback===null)a(c);else if(F.startTime<=E)a(c),F.sortIndex=F.expirationTime,t(u,F);else break;F=n(c)}}function y(E){if(b=!1,g(E),!j)if(n(u)!==null)j=!0,Q(w);else{var F=n(c);F!==null&&dr(y,F.startTime-E)}}function w(E,F){j=!1,b&&(b=!1,f(z),z=-1),v=!0;var M=h;try{for(g(F),m=n(u);m!==null&&(!(m.expirationTime>F)||E&&!A());){var K=m.callback;if(typeof K=="function"){m.callback=null,h=m.priorityLevel;var ne=K(m.expirationTime<=F);F=e.unstable_now(),typeof ne=="function"?m.callback=ne:m===n(u)&&a(u),g(F)}else a(u);m=n(u)}if(m!==null)var Ca=!0;else{var mr=n(c);mr!==null&&dr(y,mr.startTime-F),Ca=!1}return Ca}finally{m=null,h=M,v=!1}}var P=!1,T=null,z=-1,C=5,N=-1;function A(){return!(e.unstable_now()-N<C)}function Y(){if(T!==null){var E=e.unstable_now();N=E;var F=!0;try{F=T(!0,E)}finally{F?re():(P=!1,T=null)}}else P=!1}var re;if(typeof d=="function")re=function(){d(Y)};else if(typeof MessageChannel<"u"){var Ze=new MessageChannel,ie=Ze.port2;Ze.port1.onmessage=Y,re=function(){ie.postMessage(null)}}else re=function(){S(Y,0)};function Q(E){T=E,P||(P=!0,re())}function dr(E,F){z=S(function(){E(e.unstable_now())},F)}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_continueExecution=function(){j||v||(j=!0,Q(w))},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"):C=0<E?Math.floor(1e3/E):5},e.unstable_getCurrentPriorityLevel=function(){return h},e.unstable_getFirstCallbackNode=function(){return n(u)},e.unstable_next=function(E){switch(h){case 1:case 2:case 3:var F=3;break;default:F=h}var M=h;h=F;try{return E()}finally{h=M}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(E,F){switch(E){case 1:case 2:case 3:case 4:case 5:break;default:E=3}var M=h;h=E;try{return F()}finally{h=M}},e.unstable_scheduleCallback=function(E,F,M){var K=e.unstable_now();switch(typeof M=="object"&&M!==null?(M=M.delay,M=typeof M=="number"&&0<M?K+M:K):M=K,E){case 1:var ne=-1;break;case 2:ne=250;break;case 5:ne=1073741823;break;case 4:ne=1e4;break;default:ne=5e3}return ne=M+ne,E={id:p++,callback:F,priorityLevel:E,startTime:M,expirationTime:ne,sortIndex:-1},M>K?(E.sortIndex=M,t(c,E),n(u)===null&&E===n(c)&&(b?(f(z),z=-1):b=!0,dr(y,M-K))):(E.sortIndex=ne,t(u,E),j||v||(j=!0,Q(w))),E},e.unstable_shouldYield=A,e.unstable_wrapCallback=function(E){var F=h;return function(){var M=h;h=F;try{return E.apply(this,arguments)}finally{h=M}}}})(Ed);Td.exports=Ed;var ef=Td.exports;/**
26 * @license React
27 * react-dom.production.min.js
28 *
29 * Copyright (c) Facebook, Inc. and its affiliates.
30 *
31 * This source code is licensed under the MIT license found in the
32 * LICENSE file in the root directory of this source tree.
33 */var tf=x,De=ef;function k(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;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."}var zd=new Set,ra={};function Ir(e,t){dn(e,t),dn(e+"Capture",t)}function dn(e,t){for(ra[e]=t,e=0;e<t.length;e++)zd.add(t[e])}var Et=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),sl=Object.prototype.hasOwnProperty,rf=/^[: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]*$/,bu={},yu={};function nf(e){return sl.call(yu,e)?!0:sl.call(bu,e)?!1:rf.test(e)?yu[e]=!0:(bu[e]=!0,!1)}function af(e,t,n,a){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return a?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function sf(e,t,n,a){if(t===null||typeof t>"u"||af(e,t,n,a))return!0;if(a)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ne(e,t,n,a,s,i,l){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=a,this.attributeNamespace=s,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=l}var ge={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ge[e]=new Ne(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ge[t]=new Ne(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ge[e]=new Ne(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ge[e]=new Ne(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ge[e]=new Ne(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ge[e]=new Ne(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ge[e]=new Ne(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ge[e]=new Ne(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ge[e]=new Ne(e,5,!1,e.toLowerCase(),null,!1,!1)});var co=/[\-:]([a-z])/g;function mo(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(co,mo);ge[t]=new Ne(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(co,mo);ge[t]=new Ne(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(co,mo);ge[t]=new Ne(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ge[e]=new Ne(e,1,!1,e.toLowerCase(),null,!1,!1)});ge.xlinkHref=new Ne("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ge[e]=new Ne(e,1,!1,e.toLowerCase(),null,!0,!0)});function po(e,t,n,a){var s=ge.hasOwnProperty(t)?ge[t]:null;(s!==null?s.type!==0:a||!(2<t.length)||t[0]!=="o"&&t[0]!=="O"||t[1]!=="n"&&t[1]!=="N")&&(sf(t,n,s,a)&&(n=null),a||s===null?nf(t)&&(n===null?e.removeAttribute(t):e.setAttribute(t,""+n)):s.mustUseProperty?e[s.propertyName]=n===null?s.type===3?!1:"":n:(t=s.attributeName,a=s.attributeNamespace,n===null?e.removeAttribute(t):(s=s.type,n=s===3||s===4&&n===!0?"":""+n,a?e.setAttributeNS(a,t,n):e.setAttribute(t,n))))}
vendor: 5,027 bytes, lines 33-37
33var Lt=tf.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ma=Symbol.for("react.element"),Ar=Symbol.for("react.portal"),qr=Symbol.for("react.fragment"),ho=Symbol.for("react.strict_mode"),il=Symbol.for("react.profiler"),Rd=Symbol.for("react.provider"),Cd=Symbol.for("react.context"),fo=Symbol.for("react.forward_ref"),ll=Symbol.for("react.suspense"),ol=Symbol.for("react.suspense_list"),go=Symbol.for("react.memo"),Dt=Symbol.for("react.lazy"),Id=Symbol.for("react.offscreen"),ju=Symbol.iterator;function Nn(e){return e===null||typeof e!="object"?null:(e=ju&&e[ju]||e["@@iterator"],typeof e=="function"?e:null)}var te=Object.assign,Si;function On(e){if(Si===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Si=t&&t[1]||""}return`
34`+Si+e}var _i=!1;function Pi(e,t){if(!e||_i)return"";_i=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(t,[])}catch(c){var a=c}Reflect.construct(e,[],t)}else{try{t.call()}catch(c){a=c}e.call(t.prototype)}else{try{throw Error()}catch(c){a=c}e()}}catch(c){if(c&&a&&typeof c.stack=="string"){for(var s=c.stack.split(`
35`),i=a.stack.split(`
36`),l=s.length-1,o=i.length-1;1<=l&&0<=o&&s[l]!==i[o];)o--;for(;1<=l&&0<=o;l--,o--)if(s[l]!==i[o]){if(l!==1||o!==1)do if(l--,o--,0>o||s[l]!==i[o]){var u=`
37`+s[l].replace(" at new "," at ");return e.displayName&&u.includes("<anonymous>")&&(u=u.replace("<anonymous>",e.displayName)),u}while(1<=l&&0<=o);break}}}finally{_i=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?On(e):""}function lf(e){switch(e.tag){case 5:return On(e.type);case 16:return On("Lazy");case 13:return On("Suspense");case 19:return On("SuspenseList");case 0:case 2:case 15:return e=Pi(e.type,!1),e;case 11:return e=Pi(e.type.render,!1),e;case 1:return e=Pi(e.type,!0),e;default:return""}}function ul(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case qr:return"Fragment";case Ar:return"Portal";case il:return"Profiler";case ho:return"StrictMode";case ll:return"Suspense";case ol:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Cd:return(e.displayName||"Context")+".Consumer";case Rd:return(e._context.displayName||"Context")+".Provider";case fo:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case go:return t=e.displayName||null,t!==null?t:ul(e.type)||"Memo";case Dt:t=e._payload,e=e._init;try{return ul(e(t))}catch{}}return null}function of(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ul(t);case 8:return t===ho?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ir(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Fd(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function uf(e){var t=Fd(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),a=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(l){a=""+l,i.call(this,l)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return a},setValue:function(l){a=""+l},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Aa(e){e._valueTracker||(e._valueTracker=uf(e))}function Ld(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=Fd(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function _s(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function cl(e,t){var n=t.checked;return te({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function wu(e,t){var n=t.defaultValue==null?"":t.defaultValue,a=t.checked!=null?t.checked:t.defaultChecked;n=ir(t.value!=null?t.value:n),e._wrapperState={initialChecked:a,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}
vendor: 4,651 bytes, line 37
37function Md(e,t){t=t.checked,t!=null&&po(e,"checked",t,!1)}function dl(e,t){Md(e,t);var n=ir(t.value),a=t.type;if(n!=null)a==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(a==="submit"||a==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?ml(e,t.type,n):t.hasOwnProperty("defaultValue")&&ml(e,t.type,ir(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Su(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var a=t.type;if(!(a!=="submit"&&a!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function ml(e,t,n){(t!=="number"||_s(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Hn=Array.isArray;function Yr(e,t,n,a){if(e=e.options,t){t={};for(var s=0;s<n.length;s++)t["$"+n[s]]=!0;for(n=0;n<e.length;n++)s=t.hasOwnProperty("$"+e[n].value),e[n].selected!==s&&(e[n].selected=s),s&&a&&(e[n].defaultSelected=!0)}else{for(n=""+ir(n),t=null,s=0;s<e.length;s++){if(e[s].value===n){e[s].selected=!0,a&&(e[s].defaultSelected=!0);return}t!==null||e[s].disabled||(t=e[s])}t!==null&&(t.selected=!0)}}function pl(e,t){if(t.dangerouslySetInnerHTML!=null)throw Error(k(91));return te({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function _u(e,t){var n=t.value;if(n==null){if(n=t.children,t=t.defaultValue,n!=null){if(t!=null)throw Error(k(92));if(Hn(n)){if(1<n.length)throw Error(k(93));n=n[0]}t=n}t==null&&(t=""),n=t}e._wrapperState={initialValue:ir(n)}}function Ad(e,t){var n=ir(t.value),a=ir(t.defaultValue);n!=null&&(n=""+n,n!==e.value&&(e.value=n),t.defaultValue==null&&e.defaultValue!==n&&(e.defaultValue=n)),a!=null&&(e.defaultValue=""+a)}function Pu(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}function qd(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function hl(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?qd(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var qa,Dd=function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(t,n,a,s){MSApp.execUnsafeLocalFunction(function(){return e(t,n,a,s)})}:e}(function(e,t){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=t;else{for(qa=qa||document.createElement("div"),qa.innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=qa.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function na(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Wn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},cf=["Webkit","ms","Moz","O"];Object.keys(Wn).forEach(function(e){cf.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Wn[t]=Wn[e]})});function Od(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Wn.hasOwnProperty(e)&&Wn[e]?(""+t).trim():t+"px"}function Hd(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var a=n.indexOf("--")===0,s=Od(n,t[n],a);n==="float"&&(n="cssFloat"),a?e.setProperty(n,s):e[n]=s}}var df=te({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function fl(e,t){if(t){if(df[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(k(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(k(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(k(61))}if(t.style!=null&&typeof t.style!="object")throw Error(k(62))}}function gl(e,t){if(e.indexOf("-")===-1)return typeof t.is=="str
37ing";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var xl=null;function xo(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var vl=null,Qr=null,Zr=null;function ku(e){if(e=ka(e)){if(typeof vl!="function")throw Error(k(280));var t=e.stateNode;t&&(t=ai(t),vl(e.stateNode,e.type,t))}}function Ud(e){Qr?Zr?Zr.push(e):Zr=[e]:Qr=e}function Vd(){if(Qr){var e=Qr,t=Zr;if(Zr=Qr=null,ku(e),t)for(e=0;e<t.length;e++)ku(t[e])}}function Bd(e,t){return e(t)}function Wd(){}var ki=!1;function $d(e,t,n){if(ki)return e(t,n);ki=!0;try{return Bd(e,t,n)}finally{ki=!1,(Qr!==null||Zr!==null)&&(Wd(),Vd())}}function aa(e,t){var n=e.stateNode;if(n===null)return null;var a=ai(n);if(a===null)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(k(231,t,typeof n));return n}var bl=!1;if(Et)try{var Tn={};Object.defineProperty(Tn,"passive",{get:function(){bl=!0}}),window.addEventListener("test",Tn,Tn),window.removeEventListener("test",Tn,Tn)}catch{bl=!1}function mf(e,t,n,a,s,i,l,o,u){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(p){this.onError(p)}}var $n=!1,Ps=null,ks=!1,yl=null,pf={onError:function(e){$n=!0,Ps=e}};function hf(e,t,n,a,s,i,l,o,u){$n=!1,Ps=null,mf.apply(pf,arguments)}function ff(e,t,n,a,s,i,l,o,u){if(hf.apply(this,arguments),$n){if($n){var c=Ps;$n=!1,Ps=null}else throw Error(k(198));ks||(ks=!0,yl=c)}}function Fr(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 Kd(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 Nu(e){if(Fr(e)!==e)throw Error(k(188))}function gf(e){var t=e.alternate;if(!t){if(t=Fr(e),t===null)throw Error(k(188));return t!==e?null:e}for(var n=e,a=t;;){var s=n.return;if(s===null)break;var i=s.alternate;if(i===null){if(a=s.return,a!==null){n=a;continue}break}if(s.child===i.child){for(i=s.child;i;){if(i===n)return Nu(s),e;if(i===a)return Nu(s),t;i=i.sibling}throw Error(k(188))}if(n.return!==a.return)n=s,a=i;else{for(var l=!1,o=s.child;o;){if(o===n){l=!0,n=s,a=i;break}if(o===a){l=!0,a=s,n=i;break}o=o.sibling}if(!l){for(o=i.child;o;){if(o===n){l=!0,n=i,a=s;break}if(o===a){l=!0,a=i,n=s;break}o=o.sibling}if(!l)throw Error(k(189))}}if(n.alternate!==a)throw Error(k(190))}if(n.tag!==3)throw Error(k(188));return n.stateNode.current===n?e:t}function Gd(e){return e=gf(e),e!==null?Yd(e):null}function Yd(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var t=Yd(e);if(t!==null)return t;e=e.sibling}return null}var Qd=De.unstable_scheduleCallback,Tu=De.unstable_cancelCallback,xf=De.unstable_shouldYield,vf=De.unstable_requestPaint,se=De.unstable_now,bf=De.unstable_getCurrentPriorityLevel,vo=De.unstable_ImmediatePriority,Zd=De.unstable_UserBlockingPriority,Ns=De.unstable_NormalPriority,yf=De.unstable_LowPriority,Xd=De.unstable_IdlePriority,ei=null,ht=null;function jf(e){if(ht&&typeof ht.onCommitFiberRoot=="function")try{ht.onCommitFiberRoot(ei,e,void 0,(e.current.flags&128)===128)}catch{}}var at=Math.clz32?Math.clz32:_f,wf=Math.log,Sf=Math.LN2;function _f(e){return e>>>=0,e===0?32:31-(wf(e)/Sf|0)|0}var Da=64,Oa=4194304;function Un(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ts(e,t){var n=e.pendingLanes;if(n===0)return 0;var a=0,s=e.suspendedLanes,i=e.pingedLanes,l=n&268435455;if(l!==0){var o=l&~s;o!==0?a=Un(o):(i&=l,i!==0&&(a=Un(i)))}else l=n&~s,l!==0?a=Un(l):i!==0&&(a=Un(i));if(a===0)return 0;if(t!==0&&t!==a&&!(t&s)&&(s=a&-a,i=t&-t,s>=i||s===16&&(i&4194240)!==0))return t;if(a&4&&(a|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=a;0<t;)n=31-at(t),s=1<<n,a|=e[n],t&=~s;return a}function Pf(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function kf(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,s=e.expirationTimes,i=e.pendingLanes;0<i;){var l=31-at(i),o=1<<l,u=s[l];u===-1?(!(o&n)||o&a)&&(s[l]=Pf(o,t)):u<=t&&(e.expiredLanes|=o),i&=~o}}function jl(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function Jd(){var e=Da;return Da<<=1,!(Da&4194240)&&(Da=64),e}function Ni(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function _a(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-at(t),e[t]=n}function Nf(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var a=e.eventTimes;for(e=e.expirationTimes;0<n;){var s=31-at(n),i=1<<s;t[s]=0,a[s]=-1,e[s]=-1,n&=~i}}function bo(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var a=31-at(n),s=1<<a;s&t|e[a]&t&&(e[a]|=t),n&=~s}}var U=0;function em(e){return e&=-e,1<e?4<e?e&268435455?16:536870912:4:1}var tm,yo,rm,nm,am,wl=!1,Ha=[],Xt=null,Jt=null,er=null,sa=new Map,ia=new Map,Ht=[],Tf="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Eu(e,t){switch(e){case"focusin":case"focusout":Xt=null;break;case"dragenter":case"dragleave":Jt=null;break;case"mouseover":case"mouseout":er=null;break;case"pointerover":case"pointerout":sa.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ia.delete(t.pointerId)}}function En(e,t,n,a,s,i){return e===null||e.nativeEvent!==i?(e={blockedOn:t,domEventName:n,eventSystemFlags:a,nativeEvent:i,targetContainers:[s]},t!==null&&(t=ka(t),t!==null&&yo(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,s!==null&&t.indexOf(s)===-1&&t.push(s),e)}function Ef(e,t,n,a,s){switch(t){case"focusin":return Xt=En(Xt,e,t,n,a,s),!0;case"dragenter":return Jt=En(Jt,e,t,n,a,s),!0;case"mouseover":return er=En(er,e,t,n,a,s),!0;case"pointerover":var i=s.pointerId;return sa.set(i,En(sa.get(i)||null,e,t,n,a,s)),!0;case"gotpointercapture":return i=s.pointerId,ia.set(i,En(ia.get(i)||null,e,t,n,a,s)),!0}return!1}function sm(e){var t=xr(e.target);if(t!==null){var n=Fr(t);if(n!==null){if(t=n.tag,t===13){if(t=Kd(n),t!==null){e.blockedOn=t,am(e.priority,function(){rm(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 os(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=Sl(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(n===null){n=e.nativeEvent;var a=new n.constructor(n.type,n);xl=a,n.target.dispatchEvent(a),xl=null}else return t=ka(n),t!==null&&yo(t),e.blockedOn=n,!1;t.shift()}return!0}function zu(e,t,n){os(e)&&n.delete(t)}function zf(){wl=!1,Xt!==null&&os(Xt)&&(Xt=null),Jt!==null&&os(Jt)&&(Jt=null),er!==null&&os(er)&&(er=null),sa.forEac
vendor: 9,285 bytes, line 37
37h(zu),ia.forEach(zu)}function zn(e,t){e.blockedOn===t&&(e.blockedOn=null,wl||(wl=!0,De.unstable_scheduleCallback(De.unstable_NormalPriority,zf)))}function la(e){function t(s){return zn(s,e)}if(0<Ha.length){zn(Ha[0],e);for(var n=1;n<Ha.length;n++){var a=Ha[n];a.blockedOn===e&&(a.blockedOn=null)}}for(Xt!==null&&zn(Xt,e),Jt!==null&&zn(Jt,e),er!==null&&zn(er,e),sa.forEach(t),ia.forEach(t),n=0;n<Ht.length;n++)a=Ht[n],a.blockedOn===e&&(a.blockedOn=null);for(;0<Ht.length&&(n=Ht[0],n.blockedOn===null);)sm(n),n.blockedOn===null&&Ht.shift()}var Xr=Lt.ReactCurrentBatchConfig,Es=!0;function Rf(e,t,n,a){var s=U,i=Xr.transition;Xr.transition=null;try{U=1,jo(e,t,n,a)}finally{U=s,Xr.transition=i}}function Cf(e,t,n,a){var s=U,i=Xr.transition;Xr.transition=null;try{U=4,jo(e,t,n,a)}finally{U=s,Xr.transition=i}}function jo(e,t,n,a){if(Es){var s=Sl(e,t,n,a);if(s===null)Ai(e,t,a,zs,n),Eu(e,a);else if(Ef(s,e,t,n,a))a.stopPropagation();else if(Eu(e,a),t&4&&-1<Tf.indexOf(e)){for(;s!==null;){var i=ka(s);if(i!==null&&tm(i),i=Sl(e,t,n,a),i===null&&Ai(e,t,a,zs,n),i===s)break;s=i}s!==null&&a.stopPropagation()}else Ai(e,t,a,null,n)}}var zs=null;function Sl(e,t,n,a){if(zs=null,e=xo(a),e=xr(e),e!==null)if(t=Fr(e),t===null)e=null;else if(n=t.tag,n===13){if(e=Kd(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 zs=e,null}function im(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(bf()){case vo:return 1;case Zd:return 4;case Ns:case yf:return 16;case Xd:return 536870912;default:return 16}default:return 16}}var Qt=null,wo=null,us=null;function lm(){if(us)return us;var e,t=wo,n=t.length,a,s="value"in Qt?Qt.value:Qt.textContent,i=s.length;for(e=0;e<n&&t[e]===s[e];e++);var l=n-e;for(a=1;a<=l&&t[n-a]===s[i-a];a++);return us=s.slice(e,1<a?1-a:void 0)}function cs(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 Ua(){return!0}function Ru(){return!1}function He(e){function t(n,a,s,i,l){this._reactName=n,this._targetInst=s,this.type=a,this.nativeEvent=i,this.target=l,this.currentTarget=null;for(var o in e)e.hasOwnProperty(o)&&(n=e[o],this[o]=n?n(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented!=null?i.defaultPrevented:i.returnValue===!1)?Ua:Ru,this.isPropagationStopped=Ru,this}return te(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=Ua)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=Ua)},persist:function(){},isPersistent:Ua}),t}var Sn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},So=He(Sn),Pa=te({},Sn,{view:0,detail:0}),If=He(Pa),Ti,Ei,Rn,ti=te({},Pa,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:_o,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!==Rn&&(Rn&&e.type==="mousemove"?(Ti=e.screenX-Rn.screenX,Ei=e.screenY-Rn.screenY):Ei=Ti=0,Rn=e),Ti)},movementY:function(e){return"movementY"in e?e.movementY:Ei}}),Cu=He(ti),Ff=te({},ti,{dataTransfer:0}),Lf=He(Ff),Mf=te({},Pa,{relatedTarget:0}),zi=He(Mf),Af=te({},Sn,{animationName:0,elapsedTime:0,pseudoElement:0}),qf=He(Af),Df=te({},Sn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Of=He(Df),Hf=te({},Sn,{data:0}),Iu=He(Hf),Uf={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Vf={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"},Bf={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Wf(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=Bf[e])?!!t[e]:!1}function _o(){return Wf}var $f=te({},Pa,{key:function(e){if(e.key){var t=Uf[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=cs(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Vf[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:_o,charCode:function(e){return e.type==="keypress"?cs(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?cs(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Kf=He($f),Gf=te({},ti,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Fu=He(Gf),Yf=te({},Pa,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:_o}),Qf=He(Yf),Zf=te({},Sn,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xf=He(Zf),Jf=te({},ti,{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}),eg=He(Jf),tg=[9,13,27,32],Po=Et&&"CompositionEvent"in window,Kn=null;Et&&"documentMode"in document&&(Kn=document.documentMode);var rg=Et&&"TextEvent"in window&&!Kn,om=Et&&(!Po||Kn&&8<Kn&&11>=Kn),Lu=" ",Mu=!1;function um(e,t){switch(e){case"keyup":return tg.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function cm(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Dr=!1;function ng(e,t){switch(e){case"compositionend":return cm(t);case"keypress":return t.which!==32?null:(Mu=!0,Lu);case"textInput":return e=t.data,e===Lu&&Mu?null:e;default:return null}}function ag(e,t){if(Dr)return e==="compositionend"||!Po&&um(e,t)?(e=lm(),us=wo=Qt=null,Dr=!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 om&&t.locale!=="ko"?null:t.data;default:return null}}var sg={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 Au(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!sg[e.type]:t==="textarea"}function dm(e,t,n,a){Ud(a),t=Rs(t,"onChange"),0<t.length&&(n=new So("onChange","change",null,n,a),e.push({event:n,listeners:t}))}var Gn=null,oa=null;function ig(e){wm(e,0)}function ri(e){var t=Ur(e);if(Ld(t))return e}function lg(e,t){if(e==="change")return t}var mm=!1;if(Et){var Ri;if(Et){var Ci="oninput"in document;if(!Ci){var qu=document.createElement("div");qu.setAttribute("oninput","return;"),Ci=typeof qu.oninput=="function"}Ri=Ci}else Ri=!1;mm=Ri&&(!document.documentMode||9<document.documentMode)}function Du(){Gn&&(Gn.detachEvent("onpropertychange",pm),oa=Gn=null)}function pm(e){if(e.propertyName==="value"&&ri(oa)){var t=[];dm(t,oa,e,xo(e)),$d(ig,t)}}function og(e,t,n){e==="focusin"?(Du(),Gn=t,oa=n,Gn.attachEvent("onpropertychange",pm)):e==="focusout"&&Du()}function ug(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return ri(oa)}function cg(e,t){if(e==="click")return ri(t)}function dg(e,t){if(e==="input"||e==="change")return ri(t)}function mg(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var lt=typeof Object.is=="function"?Object.is:mg;function ua(e,t){if(lt(e,t))return!0;
vendor: 4,808 bytes, line 37
37if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++){var s=n[a];if(!sl.call(t,s)||!lt(e[s],t[s]))return!1}return!0}function Ou(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Hu(e,t){var n=Ou(e);e=0;for(var a;n;){if(n.nodeType===3){if(a=e+n.textContent.length,e<=t&&a>=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Ou(n)}}function hm(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?hm(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function fm(){for(var e=window,t=_s();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=_s(e.document)}return t}function ko(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function pg(e){var t=fm(),n=e.focusedElem,a=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&hm(n.ownerDocument.documentElement,n)){if(a!==null&&ko(n)){if(t=a.start,e=a.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,i=Math.min(a.start,s);a=a.end===void 0?i:Math.min(a.end,s),!e.extend&&i>a&&(s=a,a=i,i=s),s=Hu(n,i);var l=Hu(n,a);s&&l&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==l.node||e.focusOffset!==l.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),i>a?(e.addRange(t),e.extend(l.node,l.offset)):(t.setEnd(l.node,l.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n<t.length;n++)e=t[n],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var hg=Et&&"documentMode"in document&&11>=document.documentMode,Or=null,_l=null,Yn=null,Pl=!1;function Uu(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Pl||Or==null||Or!==_s(a)||(a=Or,"selectionStart"in a&&ko(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Yn&&ua(Yn,a)||(Yn=a,a=Rs(_l,"onSelect"),0<a.length&&(t=new So("onSelect","select",null,t,n),e.push({event:t,listeners:a}),t.target=Or)))}function Va(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Hr={animationend:Va("Animation","AnimationEnd"),animationiteration:Va("Animation","AnimationIteration"),animationstart:Va("Animation","AnimationStart"),transitionend:Va("Transition","TransitionEnd")},Ii={},gm={};Et&&(gm=document.createElement("div").style,"AnimationEvent"in window||(delete Hr.animationend.animation,delete Hr.animationiteration.animation,delete Hr.animationstart.animation),"TransitionEvent"in window||delete Hr.transitionend.transition);function ni(e){if(Ii[e])return Ii[e];if(!Hr[e])return e;var t=Hr[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in gm)return Ii[e]=t[n];return e}var xm=ni("animationend"),vm=ni("animationiteration"),bm=ni("animationstart"),ym=ni("transitionend"),jm=new Map,Vu="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function or(e,t){jm.set(e,t),Ir(t,[e])}for(var Fi=0;Fi<Vu.length;Fi++){var Li=Vu[Fi],fg=Li.toLowerCase(),gg=Li[0].toUpperCase()+Li.slice(1);or(fg,"on"+gg)}or(xm,"onAnimationEnd");or(vm,"onAnimationIteration");or(bm,"onAnimationStart");or("dblclick","onDoubleClick");or("focusin","onFocus");or("focusout","onBlur");or(ym,"onTransitionEnd");dn("onMouseEnter",["mouseout","mouseover"]);dn("onMouseLeave",["mouseout","mouseover"]);dn("onPointerEnter",["pointerout","pointerover"]);dn("onPointerLeave",["pointerout","pointerover"]);Ir("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));
vendor: 4,769 bytes, line 37
37Ir("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Ir("onBeforeInput",["compositionend","keypress","textInput","paste"]);Ir("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Ir("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Ir("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Vn="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(" "),xg=new Set("cancel close invalid load scroll toggle".split(" ").concat(Vn));function Bu(e,t,n){var a=e.type||"unknown-event";e.currentTarget=n,ff(a,t,void 0,e),e.currentTarget=null}function wm(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var a=e[n],s=a.event;a=a.listeners;e:{var i=void 0;if(t)for(var l=a.length-1;0<=l;l--){var o=a[l],u=o.instance,c=o.currentTarget;if(o=o.listener,u!==i&&s.isPropagationStopped())break e;Bu(s,o,c),i=u}else for(l=0;l<a.length;l++){if(o=a[l],u=o.instance,c=o.currentTarget,o=o.listener,u!==i&&s.isPropagationStopped())break e;Bu(s,o,c),i=u}}}if(ks)throw e=yl,ks=!1,yl=null,e}function W(e,t){var n=t[zl];n===void 0&&(n=t[zl]=new Set);var a=e+"__bubble";n.has(a)||(Sm(t,e,2,!1),n.add(a))}function Mi(e,t,n){var a=0;t&&(a|=4),Sm(n,e,a,t)}var Ba="_reactListening"+Math.random().toString(36).slice(2);function ca(e){if(!e[Ba]){e[Ba]=!0,zd.forEach(function(n){n!=="selectionchange"&&(xg.has(n)||Mi(n,!1,e),Mi(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Ba]||(t[Ba]=!0,Mi("selectionchange",!1,t))}}function Sm(e,t,n,a){switch(im(t)){case 1:var s=Rf;break;case 4:s=Cf;break;default:s=jo}n=s.bind(null,t,n,e),s=void 0,!bl||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(s=!0),a?s!==void 0?e.addEventListener(t,n,{capture:!0,passive:s}):e.addEventListener(t,n,!0):s!==void 0?e.addEventListener(t,n,{passive:s}):e.addEventListener(t,n,!1)}function Ai(e,t,n,a,s){var i=a;if(!(t&1)&&!(t&2)&&a!==null)e:for(;;){if(a===null)return;var l=a.tag;if(l===3||l===4){var o=a.stateNode.containerInfo;if(o===s||o.nodeType===8&&o.parentNode===s)break;if(l===4)for(l=a.return;l!==null;){var u=l.tag;if((u===3||u===4)&&(u=l.stateNode.containerInfo,u===s||u.nodeType===8&&u.parentNode===s))return;l=l.return}for(;o!==null;){if(l=xr(o),l===null)return;if(u=l.tag,u===5||u===6){a=i=l;continue e}o=o.parentNode}}a=a.return}$d(function(){var c=i,p=xo(n),m=[];e:{var h=jm.get(e);if(h!==void 0){var v=So,j=e;switch(e){case"keypress":if(cs(n)===0)break e;case"keydown":case"keyup":v=Kf;break;case"focusin":j="focus",v=zi;break;case"focusout":j="blur",v=zi;break;case"beforeblur":case"afterblur":v=zi;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":v=Cu;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":v=Lf;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":v=Qf;break;case xm:case vm:case bm:v=qf;break;case ym:v=Xf;break;case"scroll":v=If;break;case"wheel":v=eg;break;case"copy":case"cut":case"paste":v=Of;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":v=Fu}var b=(t&4)!==0,S=!b&&e==="scroll",f=b?h!==null?h+"Capture":null:h;b=[];for(var d=c,g;d!==null;){g=d;var y=g.stateNode;if(g.tag===5&&y!==null&&(g=y,f!==null&&(y=aa(d,f),y!=null&&b.push(da(d,y,g)))),S)break;d=d.return}0<b.length&&(h=new v(h,j,null,n,p),m.push({event:h,listeners:b}))}}if(!(t&7)){e:{if(h=e==="mouseover"||e==="pointerover",v=e==="mouseout"||e==="pointerout",h&&n!==xl&&(j=n.relatedTarget||n.fromElement)&&(xr(j)||j[zt]))break e;if((v||h)&&(h=p.window===p?p:(h=p.ownerDocument)?h.defaultView||h.parentWindow:window,v?(j=n.relatedTarget||n.toElement,v=c,j=j?xr(j):null,j!==null&&(S=Fr(j),j!==S||j.tag!==5&&j.tag!==6)&&(j=null)):(v=null,j=c),v!==j)){if(b=Cu,y="onMouseLeave",f="onMouseEnter",d="mouse",(e==="pointerout"||e==="pointerover")&&(b=Fu,y="onPointerLeave",f="onPointerEnter",d="pointer"),S=v==null?h:Ur(v),g=j==null?h:Ur(j),h=new b(y,d+"leave",v,n,p),h.target=S,h.relatedTarget=g,y=null,xr(p)===c&&(b=new b(f,d+"enter",j,n,p),b.target=g,b.relatedTarget=S,y=b),S=y,v&&j)t:{for(b=v,f=j,d=0,g=b;g;g=Mr(g))d++;for(g=0,y=f;y;y=Mr(y))g++;for(;0<d-g;)b=Mr(b),d--;for(;0<g-d;)f=Mr(f),g--;for(;d--;){if(b===f||f!==null&&b===f.alternate)break t;b=Mr(b),f=Mr(f)}b=null}else b=null;v!==null&&Wu(m,h,v,b,!1),j!==null&&S!==null&&Wu(m,S,j,b,!0)}}
vendor: 4,211 bytes, lines 37-38
37e:{if(h=c?Ur(c):window,v=h.nodeName&&h.nodeName.toLowerCase(),v==="select"||v==="input"&&h.type==="file")var w=lg;else if(Au(h))if(mm)w=dg;else{w=ug;var P=og}else(v=h.nodeName)&&v.toLowerCase()==="input"&&(h.type==="checkbox"||h.type==="radio")&&(w=cg);if(w&&(w=w(e,c))){dm(m,w,n,p);break e}P&&P(e,h,c),e==="focusout"&&(P=h._wrapperState)&&P.controlled&&h.type==="number"&&ml(h,"number",h.value)}switch(P=c?Ur(c):window,e){case"focusin":(Au(P)||P.contentEditable==="true")&&(Or=P,_l=c,Yn=null);break;case"focusout":Yn=_l=Or=null;break;case"mousedown":Pl=!0;break;case"contextmenu":case"mouseup":case"dragend":Pl=!1,Uu(m,n,p);break;case"selectionchange":if(hg)break;case"keydown":case"keyup":Uu(m,n,p)}var T;if(Po)e:{switch(e){case"compositionstart":var z="onCompositionStart";break e;case"compositionend":z="onCompositionEnd";break e;case"compositionupdate":z="onCompositionUpdate";break e}z=void 0}else Dr?um(e,n)&&(z="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(z="onCompositionStart");z&&(om&&n.locale!=="ko"&&(Dr||z!=="onCompositionStart"?z==="onCompositionEnd"&&Dr&&(T=lm()):(Qt=p,wo="value"in Qt?Qt.value:Qt.textContent,Dr=!0)),P=Rs(c,z),0<P.length&&(z=new Iu(z,e,null,n,p),m.push({event:z,listeners:P}),T?z.data=T:(T=cm(n),T!==null&&(z.data=T)))),(T=rg?ng(e,n):ag(e,n))&&(c=Rs(c,"onBeforeInput"),0<c.length&&(p=new Iu("onBeforeInput","beforeinput",null,n,p),m.push({event:p,listeners:c}),p.data=T))}wm(m,t)})}function da(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Rs(e,t){for(var n=t+"Capture",a=[];e!==null;){var s=e,i=s.stateNode;s.tag===5&&i!==null&&(s=i,i=aa(e,n),i!=null&&a.unshift(da(e,i,s)),i=aa(e,t),i!=null&&a.push(da(e,i,s))),e=e.return}return a}function Mr(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function Wu(e,t,n,a,s){for(var i=t._reactName,l=[];n!==null&&n!==a;){var o=n,u=o.alternate,c=o.stateNode;if(u!==null&&u===a)break;o.tag===5&&c!==null&&(o=c,s?(u=aa(n,i),u!=null&&l.unshift(da(n,u,o))):s||(u=aa(n,i),u!=null&&l.push(da(n,u,o)))),n=n.return}l.length!==0&&e.push({event:t,listeners:l})}var vg=/\r\n?/g,bg=/\u0000|\uFFFD/g;function $u(e){return(typeof e=="string"?e:""+e).replace(vg,`
38`).replace(bg,"")}function Wa(e,t,n){if(t=$u(t),$u(e)!==t&&n)throw Error(k(425))}function Cs(){}var kl=null,Nl=null;function Tl(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var El=typeof setTimeout=="function"?setTimeout:void 0,yg=typeof clearTimeout=="function"?clearTimeout:void 0,Ku=typeof Promise=="function"?Promise:void 0,jg=typeof queueMicrotask=="function"?queueMicrotask:typeof Ku<"u"?function(e){return Ku.resolve(null).then(e).catch(wg)}:El;function wg(e){setTimeout(function(){throw e})}function qi(e,t){var n=t,a=0;do{var s=n.nextSibling;if(e.removeChild(n),s&&s.nodeType===8)if(n=s.data,n==="/$"){if(a===0){e.removeChild(s),la(t);return}a--}else n!=="$"&&n!=="$?"&&n!=="$!"||a++;n=s}while(n);la(t)}function tr(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function Gu(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"){if(t===0)return e;t--}else n==="/$"&&t++}e=e.previousSibling}return null}var _n=Math.random().toString(36).slice(2),pt="__reactFiber$"+_n,ma="__reactProps$"+_n,zt="__reactContainer$"+_n,zl="__reactEvents$"+_n,Sg="__reactListeners$"+_n,_g="__reactHandles$"+_n;function xr(e){var t=e[pt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[zt]||n[pt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=Gu(e);e!==null;){if(n=e[pt])return n;e=Gu(e)}return t}e=n,n=e.parentNode}return null}function ka(e){return e=e[pt]||e[zt],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Ur(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(k(33))}function ai(e){return e[ma]||null}var Rl=[],Vr=-1;function ur(e){return{current:e}}function $(e){0>Vr||(e.current=Rl[Vr],Rl[Vr]=null,Vr--)}function B(e,t){Vr++,Rl[Vr]=e.current,e.current=t}var lr={}
vendor: 4,615 bytes, line 38
38,we=ur(lr),ze=ur(!1),Tr=lr;function mn(e,t){var n=e.type.contextTypes;if(!n)return lr;var a=e.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===t)return a.__reactInternalMemoizedMaskedChildContext;var s={},i;for(i in n)s[i]=t[i];return a&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function Re(e){return e=e.childContextTypes,e!=null}function Is(){$(ze),$(we)}function Yu(e,t,n){if(we.current!==lr)throw Error(k(168));B(we,t),B(ze,n)}function _m(e,t,n){var a=e.stateNode;if(t=t.childContextTypes,typeof a.getChildContext!="function")return n;a=a.getChildContext();for(var s in a)if(!(s in t))throw Error(k(108,of(e)||"Unknown",s));return te({},n,a)}function Fs(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||lr,Tr=we.current,B(we,e),B(ze,ze.current),!0}function Qu(e,t,n){var a=e.stateNode;if(!a)throw Error(k(169));n?(e=_m(e,t,Tr),a.__reactInternalMemoizedMergedChildContext=e,$(ze),$(we),B(we,e)):$(ze),B(ze,n)}var _t=null,si=!1,Di=!1;function Pm(e){_t===null?_t=[e]:_t.push(e)}function Pg(e){si=!0,Pm(e)}function cr(){if(!Di&&_t!==null){Di=!0;var e=0,t=U;try{var n=_t;for(U=1;e<n.length;e++){var a=n[e];do a=a(!0);while(a!==null)}_t=null,si=!1}catch(s){throw _t!==null&&(_t=_t.slice(e+1)),Qd(vo,cr),s}finally{U=t,Di=!1}}return null}var Br=[],Wr=0,Ls=null,Ms=0,Be=[],We=0,Er=null,kt=1,Nt="";function fr(e,t){Br[Wr++]=Ms,Br[Wr++]=Ls,Ls=e,Ms=t}function km(e,t,n){Be[We++]=kt,Be[We++]=Nt,Be[We++]=Er,Er=e;var a=kt;e=Nt;var s=32-at(a)-1;a&=~(1<<s),n+=1;var i=32-at(t)+s;if(30<i){var l=s-s%5;i=(a&(1<<l)-1).toString(32),a>>=l,s-=l,kt=1<<32-at(t)+s|n<<s|a,Nt=i+e}else kt=1<<i|n<<s|a,Nt=e}function No(e){e.return!==null&&(fr(e,1),km(e,1,0))}function To(e){for(;e===Ls;)Ls=Br[--Wr],Br[Wr]=null,Ms=Br[--Wr],Br[Wr]=null;for(;e===Er;)Er=Be[--We],Be[We]=null,Nt=Be[--We],Be[We]=null,kt=Be[--We],Be[We]=null}var Ae=null,Me=null,G=!1,nt=null;function Nm(e,t){var n=$e(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,t=e.deletions,t===null?(e.deletions=[n],e.flags|=16):t.push(n)}function Zu(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,Ae=e,Me=tr(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,Ae=e,Me=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(n=Er!==null?{id:kt,overflow:Nt}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},n=$e(18,null,null,0),n.stateNode=t,n.return=e,e.child=n,Ae=e,Me=null,!0):!1;default:return!1}}function Cl(e){return(e.mode&1)!==0&&(e.flags&128)===0}function Il(e){if(G){var t=Me;if(t){var n=t;if(!Zu(e,t)){if(Cl(e))throw Error(k(418));t=tr(n.nextSibling);var a=Ae;t&&Zu(e,t)?Nm(a,n):(e.flags=e.flags&-4097|2,G=!1,Ae=e)}}else{if(Cl(e))throw Error(k(418));e.flags=e.flags&-4097|2,G=!1,Ae=e}}}function Xu(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;Ae=e}function $a(e){if(e!==Ae)return!1;if(!G)return Xu(e),G=!0,!1;var t;if((t=e.tag!==3)&&!(t=e.tag!==5)&&(t=e.type,t=t!=="head"&&t!=="body"&&!Tl(e.type,e.memoizedProps)),t&&(t=Me)){if(Cl(e))throw Tm(),Error(k(418));for(;t;)Nm(e,t),t=tr(t.nextSibling)}if(Xu(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(k(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"){if(t===0){Me=tr(e.nextSibling);break e}t--}else n!=="$"&&n!=="$!"&&n!=="$?"||t++}e=e.nextSibling}Me=null}}else Me=Ae?tr(e.stateNode.nextSibling):null;return!0}function Tm(){for(var e=Me;e;)e=tr(e.nextSibling)}function pn(){Me=Ae=null,G=!1}function Eo(e){nt===null?nt=[e]:nt.push(e)}var kg=Lt.ReactCurrentBatchConfig;function Cn(e,t,n){if(e=n.ref,e!==null&&typeof e!="function"&&typeof e!="object"){if(n._owner){if(n=n._owner,n){if(n.tag!==1)throw Error(k(309));var a=n.stateNode}if(!a)throw Error(k(147,e));var s=a,i=""+e;return t!==null&&t.ref!==null&&typeof t.ref=="function"&&t.ref._stringRef===i?t.ref:(t=function(l){var o=s.refs;l===null?delete o[i]:o[i]=l},t._stringRef=i,t)}if(typeof e!="string")throw Error(k(284));if(!n._owner)throw Error(k(290,e))}return e}function Ka(e,t){throw e=Object.prototype.toString.call(t),Error(k(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Ju(e){var t=e._init;return t(e._payload)}function Em(e){function t(f,d){if(e){var g=f.deletions;g===null?(f.deletions=[d],f.flags|=16):g.push(d)}}function n(f,d){if(!e)return null;for(;d!==null;)t(f,d),d=d.sibling;return null}function a(f,d){for(f=new Map;d!==null;
vendor: 1,832 bytes, line 38
38)d.key!==null?f.set(d.key,d):f.set(d.index,d),d=d.sibling;return f}function s(f,d){return f=sr(f,d),f.index=0,f.sibling=null,f}function i(f,d,g){return f.index=g,e?(g=f.alternate,g!==null?(g=g.index,g<d?(f.flags|=2,d):g):(f.flags|=2,d)):(f.flags|=1048576,d)}function l(f){return e&&f.alternate===null&&(f.flags|=2),f}function o(f,d,g,y){return d===null||d.tag!==6?(d=$i(g,f.mode,y),d.return=f,d):(d=s(d,g),d.return=f,d)}function u(f,d,g,y){var w=g.type;return w===qr?p(f,d,g.props.children,y,g.key):d!==null&&(d.elementType===w||typeof w=="object"&&w!==null&&w.$$typeof===Dt&&Ju(w)===d.type)?(y=s(d,g.props),y.ref=Cn(f,d,g),y.return=f,y):(y=xs(g.type,g.key,g.props,null,f.mode,y),y.ref=Cn(f,d,g),y.return=f,y)}function c(f,d,g,y){return d===null||d.tag!==4||d.stateNode.containerInfo!==g.containerInfo||d.stateNode.implementation!==g.implementation?(d=Ki(g,f.mode,y),d.return=f,d):(d=s(d,g.children||[]),d.return=f,d)}function p(f,d,g,y,w){return d===null||d.tag!==7?(d=Nr(g,f.mode,y,w),d.return=f,d):(d=s(d,g),d.return=f,d)}function m(f,d,g){if(typeof d=="string"&&d!==""||typeof d=="number")return d=$i(""+d,f.mode,g),d.return=f,d;if(typeof d=="object"&&d!==null){switch(d.$$typeof){case Ma:return g=xs(d.type,d.key,d.props,null,f.mode,g),g.ref=Cn(f,null,d),g.return=f,g;case Ar:return d=Ki(d,f.mode,g),d.return=f,d;case Dt:var y=d._init;return m(f,y(d._payload),g)}if(Hn(d)||Nn(d))return d=Nr(d,f.mode,g,null),d.return=f,d;Ka(f,d)}return null}function h(f,d,g,y){var w=d!==null?d.key:null;if(typeof g=="string"&&g!==""||typeof g=="number")return w!==null?null:o(f,d,""+g,y);if(typeof g=="object"&&g!==null){switch(g.$$typeof){case Ma:return g.key===w?u(f,d,g,y):null;case Ar:return g.key===w?c(f,d,g,y):null;case Dt:return w=g._init,h(f,d,w(g._payload),y)}if(Hn(g)||Nn(g))return w!==null?null:p(f,d,g,y,null);Ka(f,g)}return null}
vendor: 21,137 bytes, lines 38-40
38function v(f,d,g,y,w){if(typeof y=="string"&&y!==""||typeof y=="number")return f=f.get(g)||null,o(d,f,""+y,w);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case Ma:return f=f.get(y.key===null?g:y.key)||null,u(d,f,y,w);case Ar:return f=f.get(y.key===null?g:y.key)||null,c(d,f,y,w);case Dt:var P=y._init;return v(f,d,g,P(y._payload),w)}if(Hn(y)||Nn(y))return f=f.get(g)||null,p(d,f,y,w,null);Ka(d,y)}return null}function j(f,d,g,y){for(var w=null,P=null,T=d,z=d=0,C=null;T!==null&&z<g.length;z++){T.index>z?(C=T,T=null):C=T.sibling;var N=h(f,T,g[z],y);if(N===null){T===null&&(T=C);break}e&&T&&N.alternate===null&&t(f,T),d=i(N,d,z),P===null?w=N:P.sibling=N,P=N,T=C}if(z===g.length)return n(f,T),G&&fr(f,z),w;if(T===null){for(;z<g.length;z++)T=m(f,g[z],y),T!==null&&(d=i(T,d,z),P===null?w=T:P.sibling=T,P=T);return G&&fr(f,z),w}for(T=a(f,T);z<g.length;z++)C=v(T,f,z,g[z],y),C!==null&&(e&&C.alternate!==null&&T.delete(C.key===null?z:C.key),d=i(C,d,z),P===null?w=C:P.sibling=C,P=C);return e&&T.forEach(function(A){return t(f,A)}),G&&fr(f,z),w}function b(f,d,g,y){var w=Nn(g);if(typeof w!="function")throw Error(k(150));if(g=w.call(g),g==null)throw Error(k(151));for(var P=w=null,T=d,z=d=0,C=null,N=g.next();T!==null&&!N.done;z++,N=g.next()){T.index>z?(C=T,T=null):C=T.sibling;var A=h(f,T,N.value,y);if(A===null){T===null&&(T=C);break}e&&T&&A.alternate===null&&t(f,T),d=i(A,d,z),P===null?w=A:P.sibling=A,P=A,T=C}if(N.done)return n(f,T),G&&fr(f,z),w;if(T===null){for(;!N.done;z++,N=g.next())N=m(f,N.value,y),N!==null&&(d=i(N,d,z),P===null?w=N:P.sibling=N,P=N);return G&&fr(f,z),w}for(T=a(f,T);!N.done;z++,N=g.next())N=v(T,f,z,N.value,y),N!==null&&(e&&N.alternate!==null&&T.delete(N.key===null?z:N.key),d=i(N,d,z),P===null?w=N:P.sibling=N,P=N);return e&&T.forEach(function(Y){return t(f,Y)}),G&&fr(f,z),w}function S(f,d,g,y){if(typeof g=="object"&&g!==null&&g.type===qr&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case Ma:e:{for(var w=g.key,P=d;P!==null;){if(P.key===w){if(w=g.type,w===qr){if(P.tag===7){n(f,P.sibling),d=s(P,g.props.children),d.return=f,f=d;break e}}else if(P.elementType===w||typeof w=="object"&&w!==null&&w.$$typeof===Dt&&Ju(w)===P.type){n(f,P.sibling),d=s(P,g.props),d.ref=Cn(f,P,g),d.return=f,f=d;break e}n(f,P);break}else t(f,P);P=P.sibling}g.type===qr?(d=Nr(g.props.children,f.mode,y,g.key),d.return=f,f=d):(y=xs(g.type,g.key,g.props,null,f.mode,y),y.ref=Cn(f,d,g),y.return=f,f=y)}return l(f);case Ar:e:{for(P=g.key;d!==null;){if(d.key===P)if(d.tag===4&&d.stateNode.containerInfo===g.containerInfo&&d.stateNode.implementation===g.implementation){n(f,d.sibling),d=s(d,g.children||[]),d.return=f,f=d;break e}else{n(f,d);break}else t(f,d);d=d.sibling}d=Ki(g,f.mode,y),d.return=f,f=d}return l(f);case Dt:return P=g._init,S(f,d,P(g._payload),y)}if(Hn(g))return j(f,d,g,y);if(Nn(g))return b(f,d,g,y);Ka(f,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,d!==null&&d.tag===6?(n(f,d.sibling),d=s(d,g),d.return=f,f=d):(n(f,d),d=$i(g,f.mode,y),d.return=f,f=d),l(f)):n(f,d)}return S}var hn=Em(!0),zm=Em(!1),As=ur(null),qs=null,$r=null,zo=null;function Ro(){zo=$r=qs=null}function Co(e){var t=As.current;$(As),e._currentValue=t}function Fl(e,t,n){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===n)break;e=e.return}}function Jr(e,t){qs=e,zo=$r=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Ee=!0),e.firstContext=null)}function Ge(e){var t=e._currentValue;if(zo!==e)if(e={context:e,memoizedValue:t,next:null},$r===null){if(qs===null)throw Error(k(308));$r=e,qs.dependencies={lanes:0,firstContext:e}}else $r=$r.next=e;return t}var vr=null;function Io(e){vr===null?vr=[e]:vr.push(e)}function Rm(e,t,n,a){var s=t.interleaved;return s===null?(n.next=n,Io(t)):(n.next=s.next,s.next=n),t.interleaved=n,Rt(e,a)}function Rt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Ot=!1;function Fo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Cm(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Tt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function rr(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,O&2){var s=a.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),a.pending=t,Rt(e,n)}return s=a.interleaved,s===null?(t.next=t,Io(a)):(t.next=s.next,s.next=t),a.interleaved=t,Rt(e,n)}function ds(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,bo(e,n)}}function ec(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var s=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var l={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};i===null?s=i=l:i=i.next=l,n=n.next}while(n!==null);i===null?s=i=t:i=i.next=t}else s=i=t;n={baseState:a.baseState,firstBaseUpdate:s,lastBaseUpdate:i,shared:a.shared,effects:a.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Ds(e,t,n,a){var s=e.updateQueue;Ot=!1;var i=s.firstBaseUpdate,l=s.lastBaseUpdate,o=s.shared.pending;if(o!==null){s.shared.pending=null;var u=o,c=u.next;u.next=null,l===null?i=c:l.next=c,l=u;var p=e.alternate;p!==null&&(p=p.updateQueue,o=p.lastBaseUpdate,o!==l&&(o===null?p.firstBaseUpdate=c:o.next=c,p.lastBaseUpdate=u))}if(i!==null){var m=s.baseState;l=0,p=c=u=null,o=i;do{var h=o.lane,v=o.eventTime;if((a&h)===h){p!==null&&(p=p.next={eventTime:v,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var j=e,b=o;switch(h=t,v=n,b.tag){case 1:if(j=b.payload,typeof j=="function"){m=j.call(v,m,h);break e}m=j;break e;case 3:j.flags=j.flags&-65537|128;case 0:if(j=b.payload,h=typeof j=="function"?j.call(v,m,h):j,h==null)break e;m=te({},m,h);break e;case 2:Ot=!0}}o.callback!==null&&o.lane!==0&&(e.flags|=64,h=s.effects,h===null?s.effects=[o]:h.push(o))}else v={eventTime:v,lane:h,tag:o.tag,payload:o.payload,callback:o.callback,next:null},p===null?(c=p=v,u=m):p=p.next=v,l|=h;if(o=o.next,o===null){if(o=s.shared.pending,o===null)break;h=o,o=h.next,h.next=null,s.lastBaseUpdate=h,s.shared.pending=null}}while(!0);if(p===null&&(u=m),s.baseState=u,s.firstBaseUpdate=c,s.lastBaseUpdate=p,t=s.shared.interleaved,t!==null){s=t;do l|=s.lane,s=s.next;while(s!==t)}else i===null&&(s.shared.lanes=0);Rr|=l,e.lanes=l,e.memoizedState=m}}function tc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;t<e.length;t++){var a=e[t],s=a.callback;if(s!==null){if(a.callback=null,a=n,typeof s!="function")throw Error(k(191,s));s.call(a)}}}var Na={},ft=ur(Na),pa=ur(Na),ha=ur(Na);function br(e){if(e===Na)throw Error(k(174));return e}function Lo(e,t){switch(B(ha,t),B(pa,e),B(ft,Na),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:hl(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=hl(t,e)}$(ft),B(ft,t)}function fn(){$(ft),$(pa),$(ha)}function Im(e){br(ha.current);var t=br(ft.current),n=hl(t,e.type);t!==n&&(B(pa,e),B(ft,n))}function Mo(e){pa.current===e&&($(ft),$(pa))}var X=ur(0);function Os(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Oi=[];function Ao(){for(var e=0;e<Oi.length;e++)Oi[e]._workInProgressVersionPrimary=null;Oi.length=0}var ms=Lt.ReactCurrentDispatcher,Hi=Lt.ReactCurrentBatchConfig,zr=0,J=null,ce=null,me=null,Hs=!1,Qn=!1,fa=0,Ng=0;function ve(){throw Error(k(321))}function qo(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lt(e[n],t[n]))return!1;return!0}function Do(e,t,n,a,s,i){if(zr=i,J=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,ms.current=e===null||e.memoizedState===null?Rg:Cg,e=n(a,s),Qn){i=0;do{if(Qn=!1,fa=0,25<=i)throw Error(k(301));i+=1,me=ce=null,t.updateQueue=null,ms.current=Ig,e=n(a,s)}while(Qn)}if(ms.current=Us,t=ce!==null&&ce.next!==null,zr=0,me=ce=J=null,Hs=!1,t)throw Error(k(300));return e}function Oo(){var e=fa!==0;return fa=0,e}function ut(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return me===null?J.memoizedState=me=e:me=me.next=e,me}function Ye(){if(ce===null){var e=J.alternate;e=e!==null?e.memoizedState:null}else e=ce.next;var t=me===null?J.memoizedState:me.next;if(t!==null)me=t,ce=e;else{if(e===null)throw Error(k(310));ce=e,e={memoizedState:ce.memoizedState,baseState:ce.baseState,baseQueue:ce.baseQueue,queue:ce.queue,next:null},me===null?J.memoizedState=me=e:me=me.next=e}return me}function ga(e,t){return typeof t=="function"?t(e):t}function Ui(e){var t=Ye(),n=t.queue;if(n===null)throw Error(k(311));n.lastRenderedReducer=e;var a=ce,s=a.baseQueue,i=n.pending;if(i!==null){if(s!==null){var l=s.next;s.next=i.next,i.next=l}a.baseQueue=s=i,n.pending=null}if(s!==null){i=s.next,a=a.baseState;var o=l=null,u=null,c=i;do{var p=c.lane;if((zr&p)===p)u!==null&&(u=u.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),a=c.hasEagerState?c.eagerState:e(a,c.action);else{var m={lane:p,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};u===null?(o=u=m,l=a):u=u.next=m,J.lanes|=p,Rr|=p}c=c.next}while(c!==null&&c!==i);u===null?l=a:u.next=o,lt(a,t.memoizedState)||(Ee=!0),t.memoizedState=a,t.baseState=l,t.baseQueue=u,n.lastRenderedState=a}if(e=n.interleaved,e!==null){s=e;do i=s.lane,J.lanes|=i,Rr|=i,s=s.next;while(s!==e)}else s===null&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Vi(e){var t=Ye(),n=t.queue;if(n===null)throw Error(k(311));n.lastRenderedReducer=e;var a=n.dispatch,s=n.pending,i=t.memoizedState;if(s!==null){n.pending=null;var l=s=s.next;do i=e(i,l.action),l=l.next;while(l!==s);lt(i,t.memoizedState)||(Ee=!0),t.memoizedState=i,t.baseQueue===null&&(t.baseState=i),n.lastRenderedState=i}return[i,a]}function Fm(){}function Lm(e,t){var n=J,a=Ye(),s=t(),i=!lt(a.memoizedState,s);if(i&&(a.memoizedState=s,Ee=!0),a=a.queue,Ho(qm.bind(null,n,a,e),[e]),a.getSnapshot!==t||i||me!==null&&me.memoizedState.tag&1){if(n.flags|=2048,xa(9,Am.bind(null,n,a,s,t),void 0,null),pe===null)throw Error(k(349));zr&30||Mm(n,t,s)}return s}function Mm(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=J.updateQueue,t===null?(t={lastEffect:null,stores:null},J.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Am(e,t,n,a){t.value=n,t.getSnapshot=a,Dm(t)&&Om(e)}function qm(e,t,n){return n(function(){Dm(t)&&Om(e)})}function Dm(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lt(e,n)}catch{return!0}}function Om(e){var t=Rt(e,1);t!==null&&st(t,e,1,-1)}function rc(e){var t=ut();return typeof e=="function"&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ga,lastRenderedState:e},t.queue=e,e=e.dispatch=zg.bind(null,J,e),[t.memoizedState,e]}function xa(e,t,n,a){return e={tag:e,create:t,destroy:n,deps:a,next:null},t=J.updateQueue,t===null?(t={lastEffect:null,stores:null},J.updateQueue=t,t.lastEffect=e.next=e):(n=t.lastEffect,n===null?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e)),e}function Hm(){return Ye().memoizedState}function ps(e,t,n,a){var s=ut();J.flags|=e,s.memoizedState=xa(1|t,n,void 0,a===void 0?null:a)}function ii(e,t,n,a){var s=Ye();a=a===void 0?null:a;var i=void 0;if(ce!==null){var l=ce.memoizedState;if(i=l.destroy,a!==null&&qo(a,l.deps)){s.memoizedState=xa(t,n,i,a);return}}J.flags|=e,s.memoizedState=xa(1|t,n,i,a)}function nc(e,t){return ps(8390656,8,e,t)}function Ho(e,t){return ii(2048,8,e,t)}function Um(e,t){return ii(4,2,e,t)}function Vm(e,t){return ii(4,4,e,t)}function Bm(e,t){if(typeof t=="function")return e=e(),t(e),function(){t(null)};if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function Wm(e,t,n){return n=n!=null?n.concat([e]):null,ii(4,4,Bm.bind(null,t,e),n)}function Uo(){}function $m(e,t){var n=Ye();t=t===void 0?null:t;var a=n.memoizedState;return a!==null&&t!==null&&qo(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function Km(e,t){var n=Ye();t=t===void 0?null:t;var a=n.memoizedState;return a!==null&&t!==null&&qo(t,a[1])?a[0]:(e=e(),n.memoizedState=[e,t],e)}function Gm(e,t,n){return zr&21?(lt(n,t)||(n=Jd(),J.lanes|=n,Rr|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,Ee=!0),e.memoizedState=n)}function Tg(e,t){var n=U;U=n!==0&&4>n?n:4,e(!0);var a=Hi.transition;Hi.transition={};try{e(!1),t()}finally{U=n,Hi.transition=a}}function Ym(){return Ye().memoizedState}function Eg(e,t,n){var a=ar(e);if(n={lane:a,action:n,hasEagerState:!1,eagerState:null,next:null},Qm(e))Zm(t,n);else if(n=Rm(e,t,n,a),n!==null){var s=Pe();st(n,e,a,s),Xm(n,t,a)}}function zg(e,t,n){var a=ar(e),s={lane:a,action:n,hasEagerState:!1,eagerState:null,next:null};if(Qm(e))Zm(t,s);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var l=t.lastRenderedState,o=i(l,n);if(s.hasEagerState=!0,s.eagerState=o,lt(o,l)){var u=t.interleaved;u===null?(s.next=s,Io(t)):(s.next=u.next,u.next=s),t.interleaved=s;return}}catch{}finally{}n=Rm(e,t,s,a),n!==null&&(s=Pe(),st(n,e,a,s),Xm(n,t,a))}}function Qm(e){var t=e.alternate;return e===J||t!==null&&t===J}function Zm(e,t){Qn=Hs=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Xm(e,t,n){if(n&4194240){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,bo(e,n)}}var Us={readContext:Ge,useCallback:ve,useContext:ve,useEffect:ve,useImperativeHandle:ve,useInsertionEffect:ve,useLayoutEffect:ve,useMemo:ve,useReducer:ve,useRef:ve,useState:ve,useDebugValue:ve,useDeferredValue:ve,useTransition:ve,useMutableSource:ve,useSyncExternalStore:ve,useId:ve,unstable_isNewReconciler:!1},Rg={readContext:Ge,useCallback:function(e,t){return ut().memoizedState=[e,t===void 0?null:t],e},useContext:Ge,useEffect:nc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ps(4194308,4,Bm.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ps(4194308,4,e,t)},useInsertionEffect:function(e,t){return ps(4,2,e,t)},useMemo:function(e,t){var n=ut();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var a=ut();return t=n!==void 0?n(t):t,a.memoizedState=a.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},a.queue=e,e=e.dispatch=Eg.bind(null,J,e),[a.memoizedState,e]},useRef:function(e){var t=ut();return e={current:e},t.memoizedState=e},useState:rc,useDebugValue:Uo,useDeferredValue:function(e){return ut().memoizedState=e},useTransition:function(){var e=rc(!1),t=e[0];return e=Tg.bind(null,e[1]),ut().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var a=J,s=ut();if(G){if(n===void 0)throw Error(k(407));n=n()}else{if(n=t(),pe===null)throw Error(k(349));zr&30||Mm(a,t,n)}s.memoizedState=n;var i={value:n,getSnapshot:t};return s.queue=i,nc(qm.bind(null,a,i,e),[e]),a.flags|=2048,xa(9,Am.bind(null,a,i,n,t),void 0,null),n},useId:function(){var e=ut(),t=pe.identifierPrefix;if(G){var n=Nt,a=kt;n=(a&~(1<<32-at(a)-1)).toString(32)+n,t=":"+t+"R"+n,n=fa++,0<n&&(t+="H"+n.toString(32)),t+=":"}else n=Ng++,t=":"+t+"r"+n.toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},Cg={readContext:Ge,useCallback:$m,useContext:Ge,useEffect:Ho,useImperativeHandle:Wm,useInsertionEffect:Um,useLayoutEffect:Vm,useMemo:Km,useReducer:Ui,useRef:Hm,useState:function(){return Ui(ga)},useDebugValue:Uo,useDeferredValue:function(e){var t=Ye();return Gm(t,ce.memoizedState,e)},useTransition:function(){var e=Ui(ga)[0],t=Ye().memoizedState;return[e,t]},useMutableSource:Fm,useSyncExternalStore:Lm,useId:Ym,unstable_isNewReconciler:!1},Ig={readContext:Ge,useCallback:$m,useContext:Ge,useEffect:Ho,useImperativeHandle:Wm,useInsertionEffect:Um,useLayoutEffect:Vm,useMemo:Km,useReducer:Vi,useRef:Hm,useState:function(){return Vi(ga)},useDebugValue:Uo,useDeferredValue:function(e){var t=Ye();return ce===null?t.memoizedState=e:Gm(t,ce.memoizedState,e)},useTransition:function(){var e=Vi(ga)[0],t=Ye().memoizedState;return[e,t]},useMutableSource:Fm,useSyncExternalStore:Lm,useId:Ym,unstable_isNewReconciler:!1};function Je(e,t){if(e&&e.defaultProps){t=te({},t),e=e.defaultProps;for(var n in e)t[n]===void 0&&(t[n]=e[n]);return t}return t}function Ll(e,t,n,a){t=e.memoizedState,n=n(a,t),n=n==null?t:te({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var li={isMounted:function(e){return(e=e._reactInternals)?Fr(e)===e:!1},enqueueSetState:function(e,t,n){e=e._reactInternals;var a=Pe(),s=ar(e),i=Tt(a,s);i.payload=t,n!=null&&(i.callback=n),t=rr(e,i,s),t!==null&&(st(t,e,s,a),ds(t,e,s))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=Pe(),s=ar(e),i=Tt(a,s);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=rr(e,i,s),t!==null&&(st(t,e,s,a),ds(t,e,s))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Pe(),a=ar(e),s=Tt(n,a);s.tag=2,t!=null&&(s.callback=t),t=rr(e,s,a),t!==null&&(st(t,e,a,n),ds(t,e,a))}};function ac(e,t,n,a,s,i,l){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,i,l):t.prototype&&t.prototype.isPureReactComponent?!ua(n,a)||!ua(s,i):!0}function Jm(e,t,n){var a=!1,s=lr,i=t.contextType;return typeof i=="object"&&i!==null?i=Ge(i):(s=Re(t)?Tr:we.current,a=t.contextTypes,i=(a=a!=null)?mn(e,s):lr),t=new t(n,i),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=li,e.stateNode=t,t._reactInternals=e,a&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=s,e.__reactInternalMemoizedMaskedChildContext=i),t}function sc(e,t,n,a){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&li.enqueueReplaceState(t,t.state,null)}function Ml(e,t,n,a){var s=e.stateNode;s.props=n,s.state=e.memoizedState,s.refs={},Fo(e);var i=t.contextType;typeof i=="object"&&i!==null?s.context=Ge(i):(i=Re(t)?Tr:we.current,s.context=mn(e,i)),s.state=e.memoizedState,i=t.getDerivedStateFromProps,typeof i=="function"&&(Ll(e,t,i,n),s.state=e.memoizedState),typeof t.getDerivedStateFromProps=="function"||typeof s.getSnapshotBeforeUpdate=="function"||typeof s.UNSAFE_componentWillMount!="function"&&typeof s.componentWillMount!="function"||(t=s.state,typeof s.componentWillMount=="function"&&s.componentWillMount(),typeof s.UNSAFE_componentWillMount=="function"&&s.UNSAFE_componentWillMount(),t!==s.state&&li.enqueueReplaceState(s,s.state,null),Ds(e,n,s,a),s.state=e.memoizedState),typeof s.componentDidMount=="function"&&(e.flags|=4194308)}function gn(e,t){try{var n="",a=t;do n+=lf(a),a=a.return;while(a);var s=n}catch(i){s=`
39Error generating stack: `+i.message+`
40`+i.stack}return{value:e,source:t,stack:s,digest:null}}function Bi(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Al(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Fg=typeof WeakMap=="function"?WeakMap:Map;function ep(e,t,n){n=Tt(-1,n),n.tag=3,n.payload={element:null};var a=t.value;return n.callback=function(){Bs||(Bs=!0,Kl=a),Al(e,t)},n}function tp(e,t,n){n=Tt(-1,n),n.tag=3;var a=e.type.getDerivedStateFromError;if(typeof a=="function"){var s=t.value;n.payload=function(){return a(s)},n.callback=function(){Al(e,t)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(n.callback=function(){Al(e,t),typeof a!="function"&&(nr===null?nr=new Set([this]):nr.add(this));var l=t.stack;this.componentDidCatch(t.value,{componentStack:l!==null?l:""})}),n}function ic(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new Fg;var s=new Set;a.set(t,s)}else s=a.get(t),s===void 0&&(s=new Set,a.set(t,s));s.has(n)||(s.add(n),e=Gg.bind(null,e,t,n),t.then(e,e))}function lc(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function oc(e,t,n,a,s){return e.mode&1?(e.flags|=65536,e.lanes=s,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=Tt(-1,1),t.tag=2,rr(n,t,1))),n.lanes|=1),e)}var Lg=Lt.ReactCurrentOwner,Ee=!1;function Se(e,t,n,a){t.child=e===null?zm(t,null,n,a):hn(t,e.child,n,a)}function uc(e,t,n,a,s){n=n.render;var i=t.ref;return Jr(t,s),a=Do(e,t,n,a,i,s),n=Oo(),e!==null&&!Ee?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~s,Ct(e,t,s)):(G&&n&&No(t),t.flags|=1,Se(e,t,a,s),t.child)}
vendor: 9,508 bytes, line 40
40function cc(e,t,n,a,s){if(e===null){var i=n.type;return typeof i=="function"&&!Qo(i)&&i.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=i,rp(e,t,i,a,s)):(e=xs(n.type,null,a,t,t.mode,s),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!(e.lanes&s)){var l=i.memoizedProps;if(n=n.compare,n=n!==null?n:ua,n(l,a)&&e.ref===t.ref)return Ct(e,t,s)}return t.flags|=1,e=sr(i,a),e.ref=t.ref,e.return=t,t.child=e}function rp(e,t,n,a,s){if(e!==null){var i=e.memoizedProps;if(ua(i,a)&&e.ref===t.ref)if(Ee=!1,t.pendingProps=a=i,(e.lanes&s)!==0)e.flags&131072&&(Ee=!0);else return t.lanes=e.lanes,Ct(e,t,s)}return ql(e,t,n,a,s)}function np(e,t,n){var a=t.pendingProps,s=a.children,i=e!==null?e.memoizedState:null;if(a.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},B(Gr,Le),Le|=n;else{if(!(n&1073741824))return e=i!==null?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,B(Gr,Le),Le|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},a=i!==null?i.baseLanes:n,B(Gr,Le),Le|=a}else i!==null?(a=i.baseLanes|n,t.memoizedState=null):a=n,B(Gr,Le),Le|=a;return Se(e,t,s,n),t.child}function ap(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function ql(e,t,n,a,s){var i=Re(n)?Tr:we.current;return i=mn(t,i),Jr(t,s),n=Do(e,t,n,a,i,s),a=Oo(),e!==null&&!Ee?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~s,Ct(e,t,s)):(G&&a&&No(t),t.flags|=1,Se(e,t,n,s),t.child)}function dc(e,t,n,a,s){if(Re(n)){var i=!0;Fs(t)}else i=!1;if(Jr(t,s),t.stateNode===null)hs(e,t),Jm(t,n,a),Ml(t,n,a,s),a=!0;else if(e===null){var l=t.stateNode,o=t.memoizedProps;l.props=o;var u=l.context,c=n.contextType;typeof c=="object"&&c!==null?c=Ge(c):(c=Re(n)?Tr:we.current,c=mn(t,c));var p=n.getDerivedStateFromProps,m=typeof p=="function"||typeof l.getSnapshotBeforeUpdate=="function";m||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==a||u!==c)&&sc(t,l,a,c),Ot=!1;var h=t.memoizedState;l.state=h,Ds(t,a,l,s),u=t.memoizedState,o!==a||h!==u||ze.current||Ot?(typeof p=="function"&&(Ll(t,n,p,a),u=t.memoizedState),(o=Ot||ac(t,n,o,a,h,u,c))?(m||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount()),typeof l.componentDidMount=="function"&&(t.flags|=4194308)):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=u),l.props=a,l.state=u,l.context=c,a=o):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{l=t.stateNode,Cm(e,t),o=t.memoizedProps,c=t.type===t.elementType?o:Je(t.type,o),l.props=c,m=t.pendingProps,h=l.context,u=n.contextType,typeof u=="object"&&u!==null?u=Ge(u):(u=Re(n)?Tr:we.current,u=mn(t,u));var v=n.getDerivedStateFromProps;(p=typeof v=="function"||typeof l.getSnapshotBeforeUpdate=="function")||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==m||h!==u)&&sc(t,l,a,u),Ot=!1,h=t.memoizedState,l.state=h,Ds(t,a,l,s);var j=t.memoizedState;o!==m||h!==j||ze.current||Ot?(typeof v=="function"&&(Ll(t,n,v,a),j=t.memoizedState),(c=Ot||ac(t,n,c,a,h,j,u)||!1)?(p||typeof l.UNSAFE_componentWillUpdate!="function"&&typeof l.componentWillUpdate!="function"||(typeof l.componentWillUpdate=="function"&&l.componentWillUpdate(a,j,u),typeof l.UNSAFE_componentWillUpdate=="function"&&l.UNSAFE_componentWillUpdate(a,j,u)),typeof l.componentDidUpdate=="function"&&(t.flags|=4),typeof l.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof l.componentDidUpdate!="function"||o===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=j),l.props=a,l.state=j,l.context=u,a=c):(typeof l.componentDidUpdate!="function"||o===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),a=!1)}return Dl(e,t,n,a,i,s)}function Dl(e,t,n,a,s,i){ap(e,t);var l=(t.flags&128)!==0;if(!a&&!l)return s&&Qu(t,n,!1),Ct(e,t,i);a=t.stateNode,Lg.current=t;var o=l&&typeof n.getDerivedStateFromError!="function"?null:a.render();return t.flags|=1,e!==null&&l?(t.child=hn(t,e.child,null,i),t.child=hn(t,null,o,i)):Se(e,t,o,i),t.memoizedState=a.state,s&&Qu(t,n,!0),t.child}function sp(e){var t=e.stateNode;t.pendingContext?Yu(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Yu(e,t.context,!1),Lo(e,t.containerInfo)}function mc(e,t,n,a,s){return pn(),Eo(s),t.flags|=256,Se(e,t,n,a),t.child}var Ol={dehydrated:null,treeContext:null,retryLane:0};function Hl(e){return{baseLanes:e,cachePool:null,transitions:null}}function ip(e,t,n){var a=t.pendingProps,s=X.current,i=!1,l=(t.flags&128)!==0,o;if((o=l)||(o=e!==null&&e.memoizedState===null?!1:(s&2)!==0),o?(i=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(s|=1),B(X,s&1),e===null)return Il(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(l=a.children,e=a.fallback,i?(a=t.mode,i=t.child,l={mode:"hidden",children:l},!(a&1)&&i!==null?(i.childLanes=0,i.pendingProps=l):i=ci(l,a,0,null),e=Nr(e,a,n,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=Hl(n),t.memoizedState=Ol,e):Vo(t,l));if(s=e.memoizedState,s!==null&&(o=s.dehydrated,o!==null))return Mg(e,t,l,a,o,s,n);if(i){i=a.fallback,l=t.mode,s=e.child,o=s.sibling;var u={mode:"hidden",children:a.children};return!(l&1)&&t.child!==s?(a=t.child,a.childLanes=0,a.pendingProps=u,t.deletions=null):(a=sr(s,u),a.subtreeFlags=s.subtreeFlags&14680064),o!==null?i=sr(o,i):(i=Nr(i,l,n,null),i.flags|=2),i.return=t,a.return=t,a.sibling=i,t.child=a,a=i,i=t.child,l=e.child.memoizedState,l=l===null?Hl(n):{baseLanes:l.baseLanes|n,cachePool:null,transitions:l.transitions},i.memoizedState=l,i.childLanes=e.childLanes&~n,t.memoizedState=Ol,a}return i=e.child,e=i.sibling,a=sr(i,{mode:"visible",children:a.children}),!(t.mode&1)&&(a.lanes=n),a.return=t,a.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function Vo(e,t){return t=ci({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function Ga(e,t,n,a){return a!==null&&Eo(a),hn(t,e.child,null,n),e=Vo(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Mg(e,t,n,a,s,i,l){if(n)return t.flags&256?(t.flags&=-257,a=Bi(Error(k(422))),Ga(e,t,l,a)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(i=a.fallback,s=t.mode,a=ci({mode:"visible",children:a.children},s,0,null),i=Nr(i,s,l,null),i.flags|=2,a.return=t,i.return=t,a.sibling=i,t.child=a,t.mode&1&&hn(t,e.child,null,l),t.child.memoizedState=Hl(l),t.memoizedState=Ol,i);if(!(t.mode&1))return Ga(e,t,l,null);if(s.data==="$!"){if(a=s.nextSibling&&s.nextSibling.dataset,a)var o=a.dgst;return a=o,i=Error(k(419)),a=Bi(i,a,void 0),Ga(e,t,l,a)}if(o=(l&e.childLanes)!==0,Ee||o){if(a=pe,a!==null){switch(l&-l){case 4:s=2;break;case 16:s=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:s=32;break;case 536870912:s=268435456;break;default:s=0}s=s&(a.suspendedLanes|l)?0:s,s!==0&&s!==i.retryLane&&(i.retryLane=s,Rt(e,s),st(a,e,s,-1))}return Yo(),a=Bi(Error(k(421))),Ga(e,t,l,a)}return s.data==="$?"?(t.flags|=128,t.child=e.child,t=Yg.bind(null,e),s._reactRetry=t,null):(e=i.treeContext,Me=tr(s.nextSibling),Ae=t,G=!0,nt=null,e!==null&&(Be[We++]=kt,Be[We++]=Nt,Be[We++]=Er,kt=e.id,Nt=e.overflow,Er=t),t=Vo(t,a.children),t.flags|=4096,t)}function pc(e,t,n){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),Fl(e.return,t,n)}function Wi(e,t,n,a,s){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:s}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=a,i.tail=n,i.tailMode=s)}function lp(e,t,n){var a=t.pendingProps,s=a.revealOrder,i=a.tail;if(Se(e,t,a.children,n),a=X.current,a&2)a=a&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&pc(e,n,t);else if(e.tag===19)pc(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}a&=1}if(B(X,a),!(t.mode&1))t.memoizedState=null;else switch(s){case"forwards":for(n=t.child,s=null;n!==null;)e=n.alternate,e!==null&&Os(e)===null&&(s=n),n=n.sibling;n=s,n===null?(s=t.child,t.child=null):(s=n.sibling,n.sibling=null),Wi(t,!1,s,n,i);break;case"backwards":for(n=null,s=t.child,t.child=null;s!==null;){if(e=s.alternate,e!==null&&Os(e)===null){t.child=s;break}e=s.sibling,s.sibling=n,n=s,s=e}Wi(t,!0,n,null,i);break;case"together":Wi(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function hs(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Ct(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Rr|=t.lanes,!(n&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error(k(153));
vendor: 3,156 bytes, line 40
40if(t.child!==null){for(e=t.child,n=sr(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=sr(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Ag(e,t,n){switch(t.tag){case 3:sp(t),pn();break;case 5:Im(t);break;case 1:Re(t.type)&&Fs(t);break;case 4:Lo(t,t.stateNode.containerInfo);break;case 10:var a=t.type._context,s=t.memoizedProps.value;B(As,a._currentValue),a._currentValue=s;break;case 13:if(a=t.memoizedState,a!==null)return a.dehydrated!==null?(B(X,X.current&1),t.flags|=128,null):n&t.child.childLanes?ip(e,t,n):(B(X,X.current&1),e=Ct(e,t,n),e!==null?e.sibling:null);B(X,X.current&1);break;case 19:if(a=(n&t.childLanes)!==0,e.flags&128){if(a)return lp(e,t,n);t.flags|=128}if(s=t.memoizedState,s!==null&&(s.rendering=null,s.tail=null,s.lastEffect=null),B(X,X.current),a)break;return null;case 22:case 23:return t.lanes=0,np(e,t,n)}return Ct(e,t,n)}var op,Ul,up,cp;op=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}};Ul=function(){};up=function(e,t,n,a){var s=e.memoizedProps;if(s!==a){e=t.stateNode,br(ft.current);var i=null;switch(n){case"input":s=cl(e,s),a=cl(e,a),i=[];break;case"select":s=te({},s,{value:void 0}),a=te({},a,{value:void 0}),i=[];break;case"textarea":s=pl(e,s),a=pl(e,a),i=[];break;default:typeof s.onClick!="function"&&typeof a.onClick=="function"&&(e.onclick=Cs)}fl(n,a);var l;n=null;for(c in s)if(!a.hasOwnProperty(c)&&s.hasOwnProperty(c)&&s[c]!=null)if(c==="style"){var o=s[c];for(l in o)o.hasOwnProperty(l)&&(n||(n={}),n[l]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(ra.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in a){var u=a[c];if(o=s!=null?s[c]:void 0,a.hasOwnProperty(c)&&u!==o&&(u!=null||o!=null))if(c==="style")if(o){for(l in o)!o.hasOwnProperty(l)||u&&u.hasOwnProperty(l)||(n||(n={}),n[l]="");for(l in u)u.hasOwnProperty(l)&&o[l]!==u[l]&&(n||(n={}),n[l]=u[l])}else n||(i||(i=[]),i.push(c,n)),n=u;else c==="dangerouslySetInnerHTML"?(u=u?u.__html:void 0,o=o?o.__html:void 0,u!=null&&o!==u&&(i=i||[]).push(c,u)):c==="children"?typeof u!="string"&&typeof u!="number"||(i=i||[]).push(c,""+u):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(ra.hasOwnProperty(c)?(u!=null&&c==="onScroll"&&W("scroll",e),i||o===u||(i=[])):(i=i||[]).push(c,u))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}};cp=function(e,t,n,a){n!==a&&(t.flags|=4)};function In(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 a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function be(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,a=0;if(t)for(var s=e.child;s!==null;
vendor: 33,907 bytes, line 40
40)n|=s.lanes|s.childLanes,a|=s.subtreeFlags&14680064,a|=s.flags&14680064,s.return=e,s=s.sibling;else for(s=e.child;s!==null;)n|=s.lanes|s.childLanes,a|=s.subtreeFlags,a|=s.flags,s.return=e,s=s.sibling;return e.subtreeFlags|=a,e.childLanes=n,t}function qg(e,t,n){var a=t.pendingProps;switch(To(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return be(t),null;case 1:return Re(t.type)&&Is(),be(t),null;case 3:return a=t.stateNode,fn(),$(ze),$(we),Ao(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(e===null||e.child===null)&&($a(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,nt!==null&&(Ql(nt),nt=null))),Ul(e,t),be(t),null;case 5:Mo(t);var s=br(ha.current);if(n=t.type,e!==null&&t.stateNode!=null)up(e,t,n,a,s),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!a){if(t.stateNode===null)throw Error(k(166));return be(t),null}if(e=br(ft.current),$a(t)){a=t.stateNode,n=t.type;var i=t.memoizedProps;switch(a[pt]=t,a[ma]=i,e=(t.mode&1)!==0,n){case"dialog":W("cancel",a),W("close",a);break;case"iframe":case"object":case"embed":W("load",a);break;case"video":case"audio":for(s=0;s<Vn.length;s++)W(Vn[s],a);break;case"source":W("error",a);break;case"img":case"image":case"link":W("error",a),W("load",a);break;case"details":W("toggle",a);break;case"input":wu(a,i),W("invalid",a);break;case"select":a._wrapperState={wasMultiple:!!i.multiple},W("invalid",a);break;case"textarea":_u(a,i),W("invalid",a)}fl(n,i),s=null;for(var l in i)if(i.hasOwnProperty(l)){var o=i[l];l==="children"?typeof o=="string"?a.textContent!==o&&(i.suppressHydrationWarning!==!0&&Wa(a.textContent,o,e),s=["children",o]):typeof o=="number"&&a.textContent!==""+o&&(i.suppressHydrationWarning!==!0&&Wa(a.textContent,o,e),s=["children",""+o]):ra.hasOwnProperty(l)&&o!=null&&l==="onScroll"&&W("scroll",a)}switch(n){case"input":Aa(a),Su(a,i,!0);break;case"textarea":Aa(a),Pu(a);break;case"select":case"option":break;default:typeof i.onClick=="function"&&(a.onclick=Cs)}a=s,t.updateQueue=a,a!==null&&(t.flags|=4)}else{l=s.nodeType===9?s:s.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=qd(n)),e==="http://www.w3.org/1999/xhtml"?n==="script"?(e=l.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof a.is=="string"?e=l.createElement(n,{is:a.is}):(e=l.createElement(n),n==="select"&&(l=e,a.multiple?l.multiple=!0:a.size&&(l.size=a.size))):e=l.createElementNS(e,n),e[pt]=t,e[ma]=a,op(e,t,!1,!1),t.stateNode=e;e:{switch(l=gl(n,a),n){case"dialog":W("cancel",e),W("close",e),s=a;break;case"iframe":case"object":case"embed":W("load",e),s=a;break;case"video":case"audio":for(s=0;s<Vn.length;s++)W(Vn[s],e);s=a;break;case"source":W("error",e),s=a;break;case"img":case"image":case"link":W("error",e),W("load",e),s=a;break;case"details":W("toggle",e),s=a;break;case"input":wu(e,a),s=cl(e,a),W("invalid",e);break;case"option":s=a;break;case"select":e._wrapperState={wasMultiple:!!a.multiple},s=te({},a,{value:void 0}),W("invalid",e);break;case"textarea":_u(e,a),s=pl(e,a),W("invalid",e);break;default:s=a}fl(n,s),o=s;for(i in o)if(o.hasOwnProperty(i)){var u=o[i];i==="style"?Hd(e,u):i==="dangerouslySetInnerHTML"?(u=u?u.__html:void 0,u!=null&&Dd(e,u)):i==="children"?typeof u=="string"?(n!=="textarea"||u!=="")&&na(e,u):typeof u=="number"&&na(e,""+u):i!=="suppressContentEditableWarning"&&i!=="suppressHydrationWarning"&&i!=="autoFocus"&&(ra.hasOwnProperty(i)?u!=null&&i==="onScroll"&&W("scroll",e):u!=null&&po(e,i,u,l))}switch(n){case"input":Aa(e),Su(e,a,!1);break;case"textarea":Aa(e),Pu(e);break;case"option":a.value!=null&&e.setAttribute("value",""+ir(a.value));break;case"select":e.multiple=!!a.multiple,i=a.value,i!=null?Yr(e,!!a.multiple,i,!1):a.defaultValue!=null&&Yr(e,!!a.multiple,a.defaultValue,!0);break;default:typeof s.onClick=="function"&&(e.onclick=Cs)}switch(n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}}a&&(t.flags|=4)}t.ref!==null&&(t.flags|=512,t.flags|=2097152)}return be(t),null;case 6:if(e&&t.stateNode!=null)cp(e,t,e.memoizedProps,a);else{if(typeof a!="string"&&t.stateNode===null)throw Error(k(166));if(n=br(ha.current),br(ft.current),$a(t)){if(a=t.stateNode,n=t.memoizedProps,a[pt]=t,(i=a.nodeValue!==n)&&(e=Ae,e!==null))switch(e.tag){case 3:Wa(a.nodeValue,n,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&Wa(a.nodeValue,n,(e.mode&1)!==0)}i&&(t.flags|=4)}else a=(n.nodeType===9?n:n.ownerDocument).createTextNode(a),a[pt]=t,t.stateNode=a}return be(t),null;case 13:if($(X),a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(G&&Me!==null&&t.mode&1&&!(t.flags&128))Tm(),pn(),t.flags|=98560,i=!1;else if(i=$a(t),a!==null&&a.dehydrated!==null){if(e===null){if(!i)throw Error(k(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(k(317));i[pt]=t}else pn(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;be(t),i=!1}else nt!==null&&(Ql(nt),nt=null),i=!0;if(!i)return t.flags&65536?t:null}return t.flags&128?(t.lanes=n,t):(a=a!==null,a!==(e!==null&&e.memoizedState!==null)&&a&&(t.child.flags|=8192,t.mode&1&&(e===null||X.current&1?de===0&&(de=3):Yo())),t.updateQueue!==null&&(t.flags|=4),be(t),null);case 4:return fn(),Ul(e,t),e===null&&ca(t.stateNode.containerInfo),be(t),null;case 10:return Co(t.type._context),be(t),null;case 17:return Re(t.type)&&Is(),be(t),null;case 19:if($(X),i=t.memoizedState,i===null)return be(t),null;if(a=(t.flags&128)!==0,l=i.rendering,l===null)if(a)In(i,!1);else{if(de!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(l=Os(e),l!==null){for(t.flags|=128,In(i,!1),a=l.updateQueue,a!==null&&(t.updateQueue=a,t.flags|=4),t.subtreeFlags=0,a=n,n=t.child;n!==null;)i=n,e=a,i.flags&=14680066,l=i.alternate,l===null?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=l.childLanes,i.lanes=l.lanes,i.child=l.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=l.memoizedProps,i.memoizedState=l.memoizedState,i.updateQueue=l.updateQueue,i.type=l.type,e=l.dependencies,i.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return B(X,X.current&1|2),t.child}e=e.sibling}i.tail!==null&&se()>xn&&(t.flags|=128,a=!0,In(i,!1),t.lanes=4194304)}else{if(!a)if(e=Os(l),e!==null){if(t.flags|=128,a=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),In(i,!0),i.tail===null&&i.tailMode==="hidden"&&!l.alternate&&!G)return be(t),null}else 2*se()-i.renderingStartTime>xn&&n!==1073741824&&(t.flags|=128,a=!0,In(i,!1),t.lanes=4194304);i.isBackwards?(l.sibling=t.child,t.child=l):(n=i.last,n!==null?n.sibling=l:t.child=l,i.last=l)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=se(),t.sibling=null,n=X.current,B(X,a?n&1|2:n&1),t):(be(t),null);case 22:case 23:return Go(),a=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==a&&(t.flags|=8192),a&&t.mode&1?Le&1073741824&&(be(t),t.subtreeFlags&6&&(t.flags|=8192)):be(t),null;case 24:return null;case 25:return null}throw Error(k(156,t.tag))}function Dg(e,t){switch(To(t),t.tag){case 1:return Re(t.type)&&Is(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return fn(),$(ze),$(we),Ao(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Mo(t),null;case 13:if($(X),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(k(340));pn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return $(X),null;case 4:return fn(),null;case 10:return Co(t.type._context),null;case 22:case 23:return Go(),null;case 24:return null;default:return null}}var Ya=!1,je=!1,Og=typeof WeakSet=="function"?WeakSet:Set,R=null;function Kr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(a){ae(e,t,a)}else n.current=null}function Vl(e,t,n){try{n()}catch(a){ae(e,t,a)}}var hc=!1;function Hg(e,t){if(kl=Es,e=fm(),ko(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var s=a.anchorOffset,i=a.focusNode;a=a.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var l=0,o=-1,u=-1,c=0,p=0,m=e,h=null;t:for(;;){for(var v;m!==n||s!==0&&m.nodeType!==3||(o=l+s),m!==i||a!==0&&m.nodeType!==3||(u=l+a),m.nodeType===3&&(l+=m.nodeValue.length),(v=m.firstChild)!==null;)h=m,m=v;for(;;){if(m===e)break t;if(h===n&&++c===s&&(o=l),h===i&&++p===a&&(u=l),(v=m.nextSibling)!==null)break;m=h,h=m.parentNode}m=v}n=o===-1||u===-1?null:{start:o,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(Nl={focusedElem:e,selectionRange:n},Es=!1,R=t;R!==null;)if(t=R,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,R=e;else for(;R!==null;){t=R;try{var j=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(j!==null){var b=j.memoizedProps,S=j.memoizedState,f=t.stateNode,d=f.getSnapshotBeforeUpdate(t.elementType===t.type?b:Je(t.type,b),S);f.__reactInternalSnapshotBeforeUpdate=d}break;case 3:var g=t.stateNode.containerInfo;g.nodeType===1?g.textContent="":g.nodeType===9&&g.documentElement&&g.removeChild(g.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(k(163))}}catch(y){ae(t,t.return,y)}if(e=t.sibling,e!==null){e.return=t.return,R=e;break}R=t.return}return j=hc,hc=!1,j}function Zn(e,t,n){var a=t.updateQueue;if(a=a!==null?a.lastEffect:null,a!==null){var s=a=a.next;do{if((s.tag&e)===e){var i=s.destroy;s.destroy=void 0,i!==void 0&&Vl(t,n,i)}s=s.next}while(s!==a)}}function oi(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var a=n.create;n.destroy=a()}n=n.next}while(n!==t)}}function Bl(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function dp(e){var t=e.alternate;t!==null&&(e.alternate=null,dp(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[pt],delete t[ma],delete t[zl],delete t[Sg],delete t[_g])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function mp(e){return e.tag===5||e.tag===3||e.tag===4}function fc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||mp(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Wl(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Cs));else if(a!==4&&(e=e.child,e!==null))for(Wl(e,t,n),e=e.sibling;e!==null;)Wl(e,t,n),e=e.sibling}function $l(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(e=e.child,e!==null))for($l(e,t,n),e=e.sibling;e!==null;)$l(e,t,n),e=e.sibling}var he=null,rt=!1;function At(e,t,n){for(n=n.child;n!==null;)pp(e,t,n),n=n.sibling}function pp(e,t,n){if(ht&&typeof ht.onCommitFiberUnmount=="function")try{ht.onCommitFiberUnmount(ei,n)}catch{}switch(n.tag){case 5:je||Kr(n,t);case 6:var a=he,s=rt;he=null,At(e,t,n),he=a,rt=s,he!==null&&(rt?(e=he,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):he.removeChild(n.stateNode));break;case 18:he!==null&&(rt?(e=he,n=n.stateNode,e.nodeType===8?qi(e.parentNode,n):e.nodeType===1&&qi(e,n),la(e)):qi(he,n.stateNode));break;case 4:a=he,s=rt,he=n.stateNode.containerInfo,rt=!0,At(e,t,n),he=a,rt=s;break;case 0:case 11:case 14:case 15:if(!je&&(a=n.updateQueue,a!==null&&(a=a.lastEffect,a!==null))){s=a=a.next;do{var i=s,l=i.destroy;i=i.tag,l!==void 0&&(i&2||i&4)&&Vl(n,t,l),s=s.next}while(s!==a)}At(e,t,n);break;case 1:if(!je&&(Kr(n,t),a=n.stateNode,typeof a.componentWillUnmount=="function"))try{a.props=n.memoizedProps,a.state=n.memoizedState,a.componentWillUnmount()}catch(o){ae(n,t,o)}At(e,t,n);break;case 21:At(e,t,n);break;case 22:n.mode&1?(je=(a=je)||n.memoizedState!==null,At(e,t,n),je=a):At(e,t,n);break;default:At(e,t,n)}}function gc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Og),t.forEach(function(a){var s=Qg.bind(null,e,a);n.has(a)||(n.add(a),a.then(s,s))})}}function Xe(e,t){var n=t.deletions;if(n!==null)for(var a=0;a<n.length;a++){var s=n[a];try{var i=e,l=t,o=l;e:for(;o!==null;){switch(o.tag){case 5:he=o.stateNode,rt=!1;break e;case 3:he=o.stateNode.containerInfo,rt=!0;break e;case 4:he=o.stateNode.containerInfo,rt=!0;break e}o=o.return}if(he===null)throw Error(k(160));pp(i,l,s),he=null,rt=!1;var u=s.alternate;u!==null&&(u.return=null),s.return=null}catch(c){ae(s,t,c)}}if(t.subtreeFlags&12854)for(t=t.child;t!==null;)hp(t,e),t=t.sibling}function hp(e,t){var n=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(Xe(t,e),ot(e),a&4){try{Zn(3,e,e.return),oi(3,e)}catch(b){ae(e,e.return,b)}try{Zn(5,e,e.return)}catch(b){ae(e,e.return,b)}}break;case 1:Xe(t,e),ot(e),a&512&&n!==null&&Kr(n,n.return);break;case 5:if(Xe(t,e),ot(e),a&512&&n!==null&&Kr(n,n.return),e.flags&32){var s=e.stateNode;try{na(s,"")}catch(b){ae(e,e.return,b)}}if(a&4&&(s=e.stateNode,s!=null)){var i=e.memoizedProps,l=n!==null?n.memoizedProps:i,o=e.type,u=e.updateQueue;if(e.updateQueue=null,u!==null)try{o==="input"&&i.type==="radio"&&i.name!=null&&Md(s,i),gl(o,l);var c=gl(o,i);for(l=0;l<u.length;l+=2){var p=u[l],m=u[l+1];p==="style"?Hd(s,m):p==="dangerouslySetInnerHTML"?Dd(s,m):p==="children"?na(s,m):po(s,p,m,c)}switch(o){case"input":dl(s,i);break;case"textarea":Ad(s,i);break;case"select":var h=s._wrapperState.wasMultiple;s._wrapperState.wasMultiple=!!i.multiple;var v=i.value;v!=null?Yr(s,!!i.multiple,v,!1):h!==!!i.multiple&&(i.defaultValue!=null?Yr(s,!!i.multiple,i.defaultValue,!0):Yr(s,!!i.multiple,i.multiple?[]:"",!1))}s[ma]=i}catch(b){ae(e,e.return,b)}}break;case 6:if(Xe(t,e),ot(e),a&4){if(e.stateNode===null)throw Error(k(162));s=e.stateNode,i=e.memoizedProps;try{s.nodeValue=i}catch(b){ae(e,e.return,b)}}break;case 3:if(Xe(t,e),ot(e),a&4&&n!==null&&n.memoizedState.isDehydrated)try{la(t.containerInfo)}catch(b){ae(e,e.return,b)}break;case 4:Xe(t,e),ot(e);break;case 13:Xe(t,e),ot(e),s=e.child,s.flags&8192&&(i=s.memoizedState!==null,s.stateNode.isHidden=i,!i||s.alternate!==null&&s.alternate.memoizedState!==null||($o=se())),a&4&&gc(e);break;case 22:if(p=n!==null&&n.memoizedState!==null,e.mode&1?(je=(c=je)||p,Xe(t,e),je=c):Xe(t,e),ot(e),a&8192){if(c=e.memoizedState!==null,(e.stateNode.isHidden=c)&&!p&&e.mode&1)for(R=e,p=e.child;p!==null;){for(m=R=p;R!==null;){switch(h=R,v=h.child,h.tag){case 0:case 11:case 14:case 15:Zn(4,h,h.return);break;case 1:Kr(h,h.return);var j=h.stateNode;if(typeof j.componentWillUnmount=="function"){a=h,n=h.return;try{t=a,j.props=t.memoizedProps,j.state=t.memoizedState,j.componentWillUnmount()}catch(b){ae(a,n,b)}}break;case 5:Kr(h,h.return);break;case 22:if(h.memoizedState!==null){vc(m);continue}}v!==null?(v.return=h,R=v):vc(m)}p=p.sibling}e:for(p=null,m=e;;){if(m.tag===5){if(p===null){p=m;try{s=m.stateNode,c?(i=s.style,typeof i.setProperty=="function"?i.setProperty("display","none","important"):i.display="none"):(o=m.stateNode,u=m.memoizedProps.style,l=u!=null&&u.hasOwnProperty("display")?u.display:null,o.style.display=Od("display",l))}catch(b){ae(e,e.return,b)}}}else if(m.tag===6){if(p===null)try{m.stateNode.nodeValue=c?"":m.memoizedProps}catch(b){ae(e,e.return,b)}}else if((m.tag!==22&&m.tag!==23||m.memoizedState===null||m===e)&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===e)break e;for(;m.sibling===null;){if(m.return===null||m.return===e)break e;p===m&&(p=null),m=m.return}p===m&&(p=null),m.sibling.return=m.return,m=m.sibling}}break;case 19:Xe(t,e),ot(e),a&4&&gc(e);break;case 21:break;default:Xe(t,e),ot(e)}}function ot(e){var t=e.flags;if(t&2){try{e:{for(var n=e.return;n!==null;){if(mp(n)){var a=n;break e}n=n.return}throw Error(k(160))}switch(a.tag){case 5:var s=a.stateNode;a.flags&32&&(na(s,""),a.flags&=-33);var i=fc(e);$l(e,i,s);break;case 3:case 4:var l=a.stateNode.containerInfo,o=fc(e);Wl(e,o,l);break;default:throw Error(k(161))}}catch(u){ae(e,e.return,u)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Ug(e,t,n){R=e,fp(e)}function fp(e,t,n){for(var a=(e.mode&1)!==0;R!==null;){var s=R,i=s.child;if(s.tag===22&&a){var l=s.memoizedState!==null||Ya;if(!l){var o=s.alternate,u=o!==null&&o.memoizedState!==null||je;o=Ya;var c=je;if(Ya=l,(je=u)&&!c)for(R=s;R!==null;)l=R,u=l.child,l.tag===22&&l.memoizedState!==null?bc(s):u!==null?(u.return=l,R=u):bc(s);for(;i!==null;)R=i,fp(i),i=i.sibling;R=s,Ya=o,je=c}xc(e)}else s.subtreeFlags&8772&&i!==null?(i.return=s,R=i):xc(e)}}function xc(e){for(;R!==null;){var t=R;if(t.flags&8772){var n=t.alternate;try{if(t.flags&8772)switch(t.tag){case 0:case 11:case 15:je||oi(5,t);break;case 1:var a=t.stateNode;if(t.flags&4&&!je)if(n===null)a.componentDidMount();else{var s=t.elementType===t.type?n.memoizedProps:Je(t.type,n.memoizedProps);a.componentDidUpdate(s,n.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;i!==null&&tc(t,i,a);break;case 3:var l=t.updateQueue;if(l!==null){if(n=null,t.child!==null)switch(t.child.tag){case 5:n=t.child.stateNode;break;case 1:n=t.child.stateNode}tc(t,l,n)}break;case 5:var o=t.stateNode;if(n===null&&t.flags&4){n=o;var u=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":u.autoFocus&&n.focus();break;case"img":u.src&&(n.src=u.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(t.memoizedState===null){var c=t.alternate;if(c!==null){var p=c.memoizedState;if(p!==null){var m=p.dehydrated;m!==null&&la(m)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(k(163))}je||t.flags&512&&Bl(t)}catch(h){ae(t,t.return,h)}}if(t===e){R=null;break}if(n=t.sibling,n!==null){n.return=t.return,R=n;break}R=t.return}}function vc(e){for(;R!==null;){var t=R;if(t===e){R=null;break}var n=t.sibling;if(n!==null){n.return=t.return,R=n;break}R=t.return}}function bc(e){for(;R!==null;){var t=R;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{oi(4,t)}catch(u){ae(t,n,u)}break;case 1:var a=t.stateNode;if(typeof a.componentDidMount=="function"){var s=t.return;try{a.componentDidMount()}catch(u){ae(t,s,u)}}var i=t.return;try{Bl(t)}catch(u){ae(t,i,u)}break;case 5:var l=t.return;try{Bl(t)}catch(u){ae(t,l,u)}}}catch(u){ae(t,t.return,u)}if(t===e){R=null;break}var o=t.sibling;if(o!==null){o.return=t.return,R=o;break}R=t.return}}var Vg=Math.ceil,Vs=Lt.ReactCurrentDispatcher,Bo=Lt.ReactCurrentOwner,Ke=Lt.ReactCurrentBatchConfig,O=0,pe=null,oe=null,fe=0,Le=0,Gr=ur(0),de=0,va=null,Rr=0,ui=0,Wo=0,Xn=null,Te=null,$o=0,xn=1/0,St=null,Bs=!1,Kl=null,nr=null,Qa=!1,Zt=null,Ws=0,Jn=0,Gl=null,fs=-1,gs=0;function Pe(){return O&6?se():fs!==-1?fs:fs=se()}function ar(e){return e.mode&1?O&2&&fe!==0?fe&-fe:kg.transition!==null?(gs===0&&(gs=Jd()),gs):(e=U,e!==0||(e=window.event,e=e===void 0?16:im(e.type)),e):1}function st(e,t,n,a){if(50<Jn)throw Jn=0,Gl=null,Error(k(185));_a(e,n,a),(!(O&2)||e!==pe)&&(e===pe&&(!(O&2)&&(ui|=n),de===4&&Ut(e,fe)),Ce(e,a),n===1&&O===0&&!(t.mode&1)&&(xn=se()+500,si&&cr()))}function Ce(e,t){var n=e.callbackNode;kf(e,t);var a=Ts(e,e===pe?fe:0);if(a===0)n!==null&&Tu(n),e.callbackNode=null,e.callbackPriority=0;else if(t=a&-a,e.callbackPriority!==t){if(n!=null&&Tu(n),t===1)e.tag===0?Pg(yc.bind(null,e)):Pm(yc.bind(null,e)),jg(function(){!(O&6)&&cr()}),n=null;else{switch(em(a)){case 1:n=vo;break;case 4:n=Zd;break;case 16:n=Ns;break;case 536870912:n=Xd;break;default:n=Ns}n=Sp(n,gp.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function gp(e,t){if(fs=-1,gs=0,O&6)throw Error(k(327));var n=e.callbackNode;if(en()&&e.callbackNode!==n)return null;var a=Ts(e,e===pe?fe:0);if(a===0)return null;if(a&30||a&e.expiredLanes||t)t=$s(e,a);else{t=a;var s=O;O|=2;var i=vp();(pe!==e||fe!==t)&&(St=null,xn=se()+500,kr(e,t));do try{$g();break}catch(o){xp(e,o)}while(!0);Ro(),Vs.current=i,O=s,oe!==null?t=0:(pe=null,fe=0,t=de)}if(t!==0){if(t===2&&(s=jl(e),s!==0&&(a=s,t=Yl(e,s))),t===1)throw n=va,kr(e,0),Ut(e,a),Ce(e,se()),n;if(t===6)Ut(e,a);else{if(s=e.current.alternate,!(a&30)&&!Bg(s)&&(t=$s(e,a),t===2&&(i=jl(e),i!==0&&(a=i,t=Yl(e,i))),t===1))throw n=va,kr(e,0),Ut(e,a),Ce(e,se()),n;switch(e.finishedWork=s,e.finishedLanes=a,t){case 0:case 1:throw Error(k(345));case 2:gr(e,Te,St);break;case 3:if(Ut(e,a),(a&130023424)===a&&(t=$o+500-se(),10<t)){if(Ts(e,0)!==0)break;if(s=e.suspendedLanes,(s&a)!==a){Pe(),e.pingedLanes|=e.suspendedLanes&s;break}e.timeoutHandle=El(gr.bind(null,e,Te,St),t);break}gr(e,Te,St);break;case 4:if(Ut(e,a),(a&4194240)===a)break;for(t=e.eventTimes,s=-1;0<a;){var l=31-at(a);i=1<<l,l=t[l],l>s&&(s=l),a&=~i}if(a=s,a=se()-a,a=(120>a?120:480>a?480:1080>a?1080:1920>a?1920:3e3>a?3e3:4320>a?4320:1960*Vg(a/1960))-a,10<a){e.timeoutHandle=El(gr.bind(null,e,Te,St),a);break}gr(e,Te,St);break;case 5:gr(e,Te,St);break;default:throw Error(k(329))}}}return Ce(e,se()),e.callbackNode===n?gp.bind(null,e):null}function Yl(e,t){var n=Xn;return e.current.memoizedState.isDehydrated&&(kr(e,t).flags|=256),e=$s(e,t),e!==2&&(t=Te,Te=n,t!==null&&Ql(t)),e}function Ql(e){Te===null?Te=e:Te.push.apply(Te,e)}function Bg(e){for(var t=e;;){if(t.flags&16384){var n=t.updateQueue;if(n!==null&&(n=n.stores,n!==null))for(var a=0;a<n.length;a++){var s=n[a],i=s.getSnapshot;s=s.value;try{if(!lt(i(),s))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 Ut(e,t){for(t&=~Wo,t&=~ui,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-at(t),a=1<<n;e[n]=-1,t&=~a}}function yc(e){if(O&6)throw Error(k(327));en();var t=Ts(e,0);if(!(t&1))return Ce(e,se()),null;var n=$s(e,t);if(e.tag!==0&&n===2){var a=jl(e);a!==0&&(t=a,n=Yl(e,a))}if(n===1)throw n=va,kr(e,0),Ut(e,t),Ce(e,se()),n;if(n===6)throw Error(k(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,gr(e,Te,St),Ce(e,se()),null}function Ko(e,t){var n=O;O|=1;try{return e(t)}finally{O=n,O===0&&(xn=se()+500,si&&cr())}}function Cr(e){Zt!==null&&Zt.tag===0&&!(O&6)&&en();var t=O;O|=1;var n=Ke.transition,a=U;try{if(Ke.transition=null,U=1,e)return e()}finally{U=a,Ke.transition=n,O=t,!(O&6)&&cr()}}function Go(){Le=Gr.current,$(Gr)}function kr(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(n!==-1&&(e.timeoutHandle=-1,yg(n)),oe!==null)for(n=oe.return;n!==null;){var a=n;switch(To(a),a.tag){case 1:a=a.type.childContextTypes,a!=null&&Is();break;case 3:fn(),$(ze),$(we),Ao();break;case 5:Mo(a);break;case 4:fn();break;case 13:$(X);break;case 19:$(X);break;case 10:Co(a.type._context);break;case 22:case 23:Go()}n=n.return}if(pe=e,oe=e=sr(e.current,null),fe=Le=t,de=0,va=null,Wo=ui=Rr=0,Te=Xn=null,vr!==null){for(t=0;t<vr.length;t++)if(n=vr[t],a=n.interleaved,a!==null){n.interleaved=null;var s=a.next,i=n.pending;if(i!==null){var l=i.next;i.next=s,a.next=l}n.pending=a}vr=null}return e}function xp(e,t){do{var n=oe;try{if(Ro(),ms.current=Us,Hs){for(var a=J.memoizedState;a!==null;){var s=a.queue;s!==null&&(s.pending=null),a=a.next}Hs=!1}if(zr=0,me=ce=J=null,Qn=!1,fa=0,Bo.current=null,n===null||n.return===null){de=1,va=t,oe=null;break}e:{var i=e,l=n.return,o=n,u=t;if(t=fe,o.flags|=32768,u!==null&&typeof u=="object"&&typeof u.then=="function"){var c=u,p=o,m=p.tag;if(!(p.mode&1)&&(m===0||m===11||m===15)){var h=p.alternate;h?(p.updateQueue=h.updateQueue,p.memoizedState=h.memoizedState,p.lanes=h.lanes):(p.updateQueue=null,p.memoizedState=null)}var v=lc(l);if(v!==null){v.flags&=-257,oc(v,l,o,i,t),v.mode&1&&ic(i,c,t),t=v,u=c;var j=t.updateQueue;if(j===null){var b=new Set;b.add(u),t.updateQueue=b}else j.add(u);break e}else{if(!(t&1)){ic(i,c,t),Yo();break e}u=Error(k(426))}}else if(G&&o.mode&1){var S=lc(l);if(S!==null){!(S.flags&65536)&&(S.flags|=256),oc(S,l,o,i,t),Eo(gn(u,o));break e}}i=u=gn(u,o),de!==4&&(de=2),Xn===null?Xn=[i]:Xn.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t;var f=ep(i,u,t);ec(i,f);break e;case 1:o=u;var d=i.type,g=i.stateNode;if(!(i.flags&128)&&(typeof d.getDerivedStateFromError=="function"||g!==null&&typeof g.componentDidCatch=="function"&&(nr===null||!nr.has(g)))){i.flags|=65536,t&=-t,i.lanes|=t;var y=tp(i,o,t);ec(i,y);break e}}i=i.return}while(i!==null)}yp(n)}catch(w){t=w,oe===n&&n!==null&&(oe=n=n.return);continue}break}while(!0)}function vp(){var e=Vs.current;return Vs.current=Us,e===null?Us:e}function Yo(){(de===0||de===3||de===2)&&(de=4),pe===null||!(Rr&268435455)&&!(ui&268435455)||Ut(pe,fe)}function $s(e,t){var n=O;O|=2;var a=vp();(pe!==e||fe!==t)&&(St=null,kr(e,t));do try{Wg();break}catch(s){xp(e,s)}while(!0);if(Ro(),O=n,Vs.current=a,oe!==null)throw Error(k(261));return pe=null,fe=0,de}function Wg(){for(;oe!==null;)bp(oe)}function $g(){for(;oe!==null&&!xf();)bp(oe)}function bp(e){var t=wp(e.alternate,e,Le);e.memoizedProps=e.pendingProps,t===null?yp(e):oe=t,Bo.current=null}function yp(e){var t=e;do{var n=t.alternate;if(e=t.return,t.flags&32768){if(n=Dg(n,t),n!==null){n.flags&=32767,oe=n;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{de=6,oe=null;return}}else if(n=qg(n,t,Le),n!==null){oe=n;return}if(t=t.sibling,t!==null){oe=t;return}oe=t=e}while(t!==null);de===0&&(de=5)}function gr(e,t,n){var a=U,s=Ke.transition;try{Ke.transition=null,U=1,Kg(e,t,n,a)}finally{Ke.transition=s,U=a}return null}function Kg(e,t,n,a){do en();while(Zt!==null);if(O&6)throw Error(k(327));n=e.finishedWork;var s=e.finishedLanes;if(n===null)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(k(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(Nf(e,i),e===pe&&(oe=pe=null,fe=0),!(n.subtreeFlags&2064)&&!(n.flags&2064)||Qa||(Qa=!0,Sp(Ns,function(){return en(),null})),i=(n.flags&15990)!==0,n.subtreeFlags&15990||i){i=Ke.transition,Ke.transition=null;var l=U;U=1;var o=O;O|=4,Bo.current=null,Hg(e,n),hp(n,e),pg(Nl),Es=!!kl,Nl=kl=null,e.current=n,Ug(n),vf(),O=o,U=l,Ke.transition=i}else e.current=n;if(Qa&&(Qa=!1,Zt=e,Ws=s),i=e.pendingLanes,i===0&&(nr=null),jf(n.stateNode),Ce(e,se()),t!==null)for(a=e.onRecoverableError,n=0;n<t.length;n++)s=t[n],a(s.value,{componentStack:s.stack,digest:s.digest});if(Bs)throw Bs=!1,e=Kl,Kl=null,e;return Ws&1&&e.tag!==0&&en(),i=e.pendingLanes,i&1?e===Gl?Jn++:(Jn=0,Gl=e):Jn=0,cr(),null}function en(){if(Zt!==null){var e=em(Ws),t=Ke.transition,n=U;try{if(Ke.transition=null,U=16>e?16:e,Zt===null)var a=!1;else{if(e=Zt,Zt=null,Ws=0,O&6)throw Error(k(331));var s=O;for(O|=4,R=e.current;R!==null;){var i=R,l=i.child;if(R.flags&16){var o=i.deletions;if(o!==null){for(var u=0;u<o.length;u++){var c=o[u];for(R=c;R!==null;){var p=R;switch(p.tag){case 0:case 11:case 15:Zn(8,p,i)}var m=p.child;if(m!==null)m.return=p,R=m;else for(;R!==null;){p=R;var h=p.sibling,v=p.return;if(dp(p),p===c){R=null;break}if(h!==null){h.return=v,R=h;break}R=v}}}var j=i.alternate;if(j!==null){var b=j.child;if(b!==null){j.child=null;do{var S=b.sibling;b.sibling=null,b=S}while(b!==null)}}R=i}}if(i.subtreeFlags&2064&&l!==null)l.return=i,R=l;else e:for(;R!==null;){if(i=R,i.flags&2048)switch(i.tag){case 0:case 11:case 15:Zn(9,i,i.return)}var f=i.sibling;if(f!==null){f.return=i.return,R=f;break e}R=i.return}}var d=e.current;for(R=d;R!==null;){l=R;var g=l.child;if(l.subtreeFlags&2064&&g!==null)g.return=l,R=g;else e:for(l=d;R!==null;){if(o=R,o.flags&2048)try{switch(o.tag){case 0:case 11:case 15:oi(9,o)}}catch(w){ae(o,o.return,w)}if(o===l){R=null;break e}var y=o.sibling;if(y!==null){y.return=o.return,R=y;break e}R=o.return}}if(O=s,cr(),ht&&typeof ht.onPostCommitFiberRoot=="function")try{ht.onPostCommitFiberRoot(ei,e)}catch{}a=!0}return a}finally{U=n,Ke.transition=t}}return!1}function jc(e,t,n){t=gn(n,t),t=ep(e,t,1),e=rr(e,t,1),t=Pe(),e!==null&&(_a(e,1,t),Ce(e,t))}function ae(e,t,n){if(e.tag===3)jc(e,e,n);else for(;t!==null;){if(t.tag===3){jc(t,e,n);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(nr===null||!nr.has(a))){e=gn(n,e),e=tp(t,e,1),t=rr(t,e,1),e=Pe(),t!==null&&(_a(t,1,e),Ce(t,e));break}}t=t.return}}function Gg(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),t=Pe(),e.pingedLanes|=e.suspendedLanes&n,pe===e&&(fe&n)===n&&(de===4||de===3&&(fe&130023424)===fe&&500>se()-$o?kr(e,0):Wo|=n),Ce(e,t)}function jp(e,t){t===0&&(e.mode&1?(t=Oa,Oa<<=1,!(Oa&130023424)&&(Oa=4194304)):t=1);var n=Pe();e=Rt(e,t),e!==null&&(_a(e,t,n),Ce(e,n))}function Yg(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),jp(e,n)}function Qg(e,t){var n=0;switch(e.tag){case 13:var a=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:a=e.stateNode;break;default:throw Error(k(314))}a!==null&&a.delete(t),jp(e,n)}var wp;wp=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ze.current)Ee=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Ee=!1,Ag(e,t,n);Ee=!!(e.flags&131072)}else Ee=!1,G&&t.flags&1048576&&km(t,Ms,t.index);switch(t.lanes=0,t.tag){case 2:var a=t.type;hs(e,t),e=t.pendingProps;var s=mn(t,we.current);Jr(t,n),s=Do(null,t,a,e,s,n);var i=Oo();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Re(a)?(i=!0,Fs(t)):i=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,Fo(t),s.updater=li,t.stateNode=s,s._reactInternals=t,Ml(t,a,e,n),t=Dl(null,t,a,!0,i,n)):(t.tag=0,G&&i&&No(t),Se(null,t,s,n),t=t.child),t;case 16:a=t.elementType;e:{switch(hs(e,t),e=t.pendingProps,s=a._init,a=s(a._payload),t.type=a,s=t.tag=Xg(a),e=Je(a,e),s){case 0:t=ql(null,t,a,e,n);break e;case 1:t=dc(null,t,a,e,n);break e;case 11:t=uc(null,t,a,e,n);break e;case 14:t=cc(null,t,a,Je(a.type,e),n);break e}throw Error(k(306,a,""))}return t;case 0:return a=t.type,s=t.pendingProps,s=t.elementType===a?s:Je(a,s),ql(e,t,a,s,n);case 1:return a=t.type,s=t.pendingProps,s=t.elementType===a?s:Je(a,s),dc(e,t,a,s,n);case 3:e:{if(sp(t),e===null)throw Error(k(387));a=t.pendingProps,i=t.memoizedState,s=i.element,Cm(e,t),Ds(t,a,null,n);var l=t.memoizedState;if(a=l.element,i.isDehydrated)if(i={element:a,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){s=gn(Error(k(423)),t),t=mc(e,t,a,n,s);break e}else if(a!==s){s=gn(Error(k(424)),t),t=mc(e,t,a,n,s);break e}else for(Me=tr(t.stateNode.containerInfo.firstChild),Ae=t,G=!0,nt=null,n=zm(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(pn(),a===s){t=Ct(e,t,n);break e}Se(e,t,a,n)}t=t.child}return t;case 5:return Im(t),e===null&&Il(t),a=t.type,s=t.pendingProps,i=e!==null?e.memoizedProps:null,l=s.children,Tl(a,s)?l=null:i!==null&&Tl(a,i)&&(t.flags|=32),ap(e,t),Se(e,t,l,n),t.child;case 6:return e===null&&Il(t),null;case 13:return ip(e,t,n);case 4:return Lo(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=hn(t,null,a,n):Se(e,t,a,n),t.child;case 11:return a=t.type,s=t.pendingProps,s=t.elementType===a?s:Je(a,s),uc(e,t,a,s,n);case 7:return Se(e,t,t.pendingProps,n),t.child;case 8:return Se(e,t,t.pendingProps.children,n),t.child;case 12:return Se(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(a=t.type._context,s=t.pendingProps,i=t.memoizedProps,l=s.value,B(As,a._currentValue),a._currentValue=l,i!==null)if(lt(i.value,l)){if(i.children===s.children&&!ze.current){t=Ct(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var o=i.dependencies;if(o!==null){l=i.child;for(var u=o.firstContext;u!==null;){if(u.context===a){if(i.tag===1){u=Tt(-1,n&-n),u.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var p=c.pending;p===null?u.next=u:(u.next=p.next,p.next=u),c.pending=u}}i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),Fl(i.return,n,t),o.lanes|=n;break}u=u.next}}else if(i.tag===10)l=i.type===t.type?null:i.child;else if(i.tag===18){if(l=i.return,l===null)throw Error(k(341));l.lanes|=n,o=l.alternate,o!==null&&(o.lanes|=n),Fl(l,n,t),l=i.sibling}else l=i.child;if(l!==null)l.return=i;else for(l=i;l!==null;){if(l===t){l=null;break}if(i=l.sibling,i!==null){i.return=l.return,l=i;break}l=l.return}i=l}Se(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,a=t.pendingProps.children,Jr(t,n),s=Ge(s),a=a(s),t.flags|=1,Se(e,t,a,n),t.child;case 14:return a=t.type,s=Je(a,t.pendingProps),s=Je(a.type,s),cc(e,t,a,s,n);case 15:return rp(e,t,t.type,t.pendingProps,n);case 17:return a=t.type,s=t.pendingProps,s=t.elementType===a?s:Je(a,s),hs(e,t),t.tag=1,Re(a)?(e=!0,Fs(t)):e=!1,Jr(t,n),Jm(t,a,s),Ml(t,a,s,n),Dl(null,t,a,!0,e,n);case 19:return lp(e,t,n);case 22:return np(e,t,n)}throw Error(k(156,t.tag))};function Sp(e,t){return Qd(e,t)}function Zg(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function $e(e,t,n,a){return new Zg(e,t,n,a)}function Qo(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Xg(e){if(typeof e=="function")return Qo(e)?1:0;if(e!=null){if(e=e.$$typeof,e===fo)return 11;if(e===go)return 14}return 2}function sr(e,t){var n=e.alternate;return n===null?(n=$e(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deleti
vendor: 4,322 bytes, line 40
40ons=null),n.flags=e.flags&14680064,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}function xs(e,t,n,a,s,i){var l=2;if(a=e,typeof e=="function")Qo(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case qr:return Nr(n.children,s,i,t);case ho:l=8,s|=8;break;case il:return e=$e(12,n,t,s|2),e.elementType=il,e.lanes=i,e;case ll:return e=$e(13,n,t,s),e.elementType=ll,e.lanes=i,e;case ol:return e=$e(19,n,t,s),e.elementType=ol,e.lanes=i,e;case Id:return ci(n,s,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Rd:l=10;break e;case Cd:l=9;break e;case fo:l=11;break e;case go:l=14;break e;case Dt:l=16,a=null;break e}throw Error(k(130,e==null?e:typeof e,""))}return t=$e(l,n,t,s),t.elementType=e,t.type=a,t.lanes=i,t}function Nr(e,t,n,a){return e=$e(7,e,a,t),e.lanes=n,e}function ci(e,t,n,a){return e=$e(22,e,a,t),e.elementType=Id,e.lanes=n,e.stateNode={isHidden:!1},e}function $i(e,t,n){return e=$e(6,e,null,t),e.lanes=n,e}function Ki(e,t,n){return t=$e(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Jg(e,t,n,a,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ni(0),this.expirationTimes=Ni(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ni(0),this.identifierPrefix=a,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function Zo(e,t,n,a,s,i,l,o,u){return e=new Jg(e,t,n,o,u),t===1?(t=1,i===!0&&(t|=8)):t=0,i=$e(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:a,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Fo(i),e}function ex(e,t,n){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Ar,key:a==null?null:""+a,children:e,containerInfo:t,implementation:n}}function _p(e){if(!e)return lr;e=e._reactInternals;e:{if(Fr(e)!==e||e.tag!==1)throw Error(k(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Re(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(t!==null);throw Error(k(171))}if(e.tag===1){var n=e.type;if(Re(n))return _m(e,n,t)}return t}function Pp(e,t,n,a,s,i,l,o,u){return e=Zo(n,a,!0,e,s,i,l,o,u),e.context=_p(null),n=e.current,a=Pe(),s=ar(n),i=Tt(a,s),i.callback=t??null,rr(n,i,s),e.current.lanes=s,_a(e,s,a),Ce(e,a),e}function di(e,t,n,a){var s=t.current,i=Pe(),l=ar(s);return n=_p(n),t.context===null?t.context=n:t.pendingContext=n,t=Tt(i,l),t.payload={element:e},a=a===void 0?null:a,a!==null&&(t.callback=a),e=rr(s,t,l),e!==null&&(st(e,s,l,i),ds(e,s,l)),l}function Ks(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function wc(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function Xo(e,t){wc(e,t),(e=e.alternate)&&wc(e,t)}function tx(){return null}var kp=typeof reportError=="function"?reportError:function(e){console.error(e)};function Jo(e){this._internalRoot=e}mi.prototype.render=Jo.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(k(409));di(e,t,null,null)};mi.prototype.unmount=Jo.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;Cr(function(){di(null,e,null,null)}),t[zt]=null}};function mi(e){this._internalRoot=e}mi.prototype.unstable_scheduleHydration=function(e){if(e){var t=nm();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Ht.length&&t!==0&&t<Ht[n].priority;n++);Ht.splice(n,0,e),n===0&&sm(e)}};function eu(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function pi(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function Sc(){}
40function rx(e,t,n,a,s){if(s){if(typeof a=="function"){var i=a;a=function(){var c=Ks(l);i.call(c)}}var l=Pp(t,a,e,0,null,!1,!1,"",Sc);return e._reactRootContainer=l,e[zt]=l.current,ca(e.nodeType===8?e.parentNode:e),Cr(),l}for(;s=e.lastChild;)e.removeChild(s);if(typeof a=="function"){var o=a;a=function(){var c=Ks(u);o.call(c)}}var u=Zo(e,0,!1,null,null,!1,!1,"",Sc);return e._reactRootContainer=u,e[zt]=u.current,ca(e.nodeType===8?e.parentNode:e),Cr(function(){di(t,u,n,a)}),u}function hi(e,t,n,a,s){var i=n._reactRootContainer;if(i){var l=i;if(typeof s=="function"){var o=s;s=function(){var u=Ks(l);o.call(u)}}di(t,l,e,s)}else l=rx(n,t,e,s,a);return Ks(l)}tm=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=Un(t.pendingLanes);n!==0&&(bo(t,n|1),Ce(t,se()),!(O&6)&&(xn=se()+500,cr()))}break;case 13:Cr(function(){var a=Rt(e,1);if(a!==null){var s=Pe();st(a,e,1,s)}}),Xo(e,1)}};yo=function(e){if(e.tag===13){var t=Rt(e,134217728);if(t!==null){var n=Pe();st(t,e,134217728,n)}Xo(e,134217728)}};rm=function(e){if(e.tag===13){var t=ar(e),n=Rt(e,t);if(n!==null){var a=Pe();st(n,e,t,a)}Xo(e,t)}};nm=function(){return U};am=function(e,t){var n=U;try{return U=e,t()}finally{U=n}};vl=function(e,t,n){switch(t){case"input":if(dl(e,n),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var s=ai(a);if(!s)throw Error(k(90));Ld(a),dl(a,s)}}}break;case"textarea":Ad(e,n);break;case"select":t=n.value,t!=null&&Yr(e,!!n.multiple,t,!1)}};Bd=Ko;Wd=Cr;var nx={usingClientEntryPoint:!1,Events:[ka,Ur,ai,Ud,Vd,Ko]},Fn={findFiberByHostInstance:xr,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},ax={bundleType:Fn.bundleType,version:Fn.version,rendererPackageName:Fn.rendererPackageName,rendererConfig:Fn.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Lt.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=Gd(e),e===null?null:e.stateNode},findFiberByHostInstance:Fn.findFiberByHostInstance||tx,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Za=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Za.isDisabled&&Za.supportsFiber)try{ei=Za.inject(ax),ht=Za}catch{}}Oe.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=nx;Oe.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!eu(t))throw Error(k(200));return ex(e,t,null,n)};Oe.createRoot=function(e,t){if(!eu(e))throw Error(k(299));var n=!1,a="",s=kp;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onRecoverableError!==void 0&&(s=t.onRecoverableError)),t=Zo(e,1,!1,null,null,n,!1,a,s),e[zt]=t.current,ca(e.nodeType===8?e.parentNode:e),new Jo(t)};Oe.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(k(188)):(e=Object.keys(e).join(","),Error(k(268,e)));return e=Gd(t),e=e===null?null:e.stateNode,e};Oe.flushSync=function(e){return Cr(e)};Oe.hydrate=function(e,t,n){if(!pi(t))throw Error(k(200));return hi(null,e,t,!0,n)};Oe.hydrateRoot=function(e,t,n){if(!eu(e))throw Error(k(405));var a=n!=null&&n.hydratedSources||null,s=!1,i="",l=kp;if(n!=null&&(n.unstable_strictMode===!0&&(s=!0),n.identifierPrefix!==void 0&&(i=n.identifierPrefix),n.onRecoverableError!==void 0&&(l=n.onRecoverableError)),t=Pp(t,null,e,1,n??null,s,!1,i,l),e[zt]=t.current,ca(e),a)for(e=0;e<a.length;e++)n=a[e],s=n._getVersion,s=s(n._source),t.mutableSourceEagerHydrationData==null?t.mutableSourceEagerHydrationData=[n,s]:t.mutableSourceEagerHydrationData.push(n,s);return new mi(t)};Oe.render=function(e,t,n){if(!pi(t))throw Error(k(200));return hi(null,e,t,!1,n)};Oe.unmountComponentAtNode=function(e){if(!pi(e))throw Error(k(40));return e._reactRootContainer?(Cr(function(){hi(null,null,e,!1,function(){e._reactRootContainer=null,e[zt]=null})}),!0):!1};Oe.unstable_batchedUpdates=Ko;Oe.unstable_renderSubtreeIntoContainer=function(e,t,n,a){if(!pi(n))throw Error(k(200));if(e==null||e._reactInternals===void 0)throw Error(k(38));return hi(e,t,n,!1,a)};Oe.version="18.3.1-next-f1338f8080-20240426";function Np(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Np)}catch(e){console.error(e)}}Np(),Nd.exports=Oe;var sx=Nd.exports,Tp,Ep,_c=sx;Ep=_c.createRoot,Tp=_c.hydrateRoot;/**
41 * react-router v7.18.4
42 *
43 * Copyright (c) Remix Software Inc.
44 *
45 * This source code is licensed under the MIT license found in the
46 * LICENSE.md file in the root directory of this source tree.
47 *
48 * @license MIT
49 */var tu=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,zp=/^[\\/]{2}/;function ix(e,t){return t+e.replace(/\\/g,"/")}var Pc="popstate";function kc(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function lx(e={}){function t(a,s){var c;let i=(c=s.state)==null?void 0:c.masked,{pathname:l,search:o,hash:u}=i||a.location;return Zl("",{pathname:l,search:o,hash:u},s.state&&s.state.usr||null,s.state&&s.state.key||"default",i?{pathname:a.location.pathname,search:a.location.search,hash:a.location.hash}:void 0)}function n(a,s){return typeof s=="string"?s:vn(s)}return ux(t,n,null,e)}function ee(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function gt(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function ox(){return Math.random().toString(36).substring(2,10)}function Nc(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Zl(e,t,n=null,a,s){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?Pn(t):t,state:n,key:t&&t.key||a||ox(),mask:s}}function vn({pathname:e="/",search:t="",hash:n=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function Pn(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let a=e.indexOf("?");a>=0&&(t.search=e.substring(a),e=e.substring(0,a)),e&&(t.pathname=e)}return t}function ux(e,t,n,a={}){let{window:s=document.defaultView,v5Compat:i=!1}=a,l=s.history,o="POP",u=null,c=p();c==null&&(c=0,l.replaceState({...l.state,idx:c},""));function p(){return(l.state||{idx:null}).idx}function m(){o="POP";let S=p(),f=S==null?null:S-c;c=S,u&&u({action:o,location:b.location,delta:f})}function h(S,f){o="PUSH";
49let d=kc(S)?S:Zl(b.location,S,f);c=p()+1;let g=Nc(d,c),y=b.createHref(d.mask||d);try{l.pushState(g,"",y)}catch(w){if(w instanceof DOMException&&w.name==="DataCloneError")throw w;s.location.assign(y)}i&&u&&u({action:o,location:b.location,delta:1})}function v(S,f){o="REPLACE";let d=kc(S)?S:Zl(b.location,S,f);c=p();let g=Nc(d,c),y=b.createHref(d.mask||d);l.replaceState(g,"",y),i&&u&&u({action:o,location:b.location,delta:0})}function j(S){return cx(s,S)}let b={get action(){return o},get location(){return e(s,l)},listen(S){if(u)throw new Error("A history only accepts one active listener");return s.addEventListener(Pc,m),u=S,()=>{s.removeEventListener(Pc,m),u=null}},createHref(S){return t(s,S)},createURL:j,encodeLocation(S){let f=j(S);return{pathname:f.pathname,search:f.search,hash:f.hash}},push:h,replace:v,go(S){return l.go(S)}};return b}function cx(e,t,n=!1){let a="http://localhost";e&&(a=e.location.origin!=="null"?e.location.origin:e.location.href),ee(a,"No window.location.(origin|href) available to create URL");let s=typeof t=="string"?t:vn(t);return s=s.replace(/ $/,"%20"),!n&&zp.test(s)&&(s=a+s),new URL(s,a)}function Rp(e,t,n="/"){return dx(e,t,n,!1)}function dx(e,t,n,a,s){let i=typeof t=="string"?Pn(t):t,l=It(i.pathname||"/",n);if(l==null)return null;let o=mx(e),u=null,c=Sx(l);for(let p=0;u==null&&p<o.length;++p)u=wx(o[p],c,a);return u}function mx(e){let t=Cp(e);return px(t),t}function Cp(e,t=[],n=[],a="",s=!1){let i=(l,o,u=s,c)=>{let p={relativePath:c===void 0?l.path||"":c,caseSensitive:l.caseSensitive===!0,childrenIndex:o,route:l};if(p.relativePath.startsWith("/")){if(!p.relativePath.startsWith(a)&&u)return;ee(p.relativePath.startsWith(a),`Absolute route path "${p.relativePath}" nested under path "${a}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),p.relativePath=p.relativePath.slice(a.length)}let m=it([a,p.relativePath]),h=n.concat(p);l.children&&l.children.length>0&&(ee(l.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${m}".`),Cp(l.children,t,h,m,u)),!(l.path==null&&!l.index)&&t.push({path:m,score:yx(m,l.index),routesMeta:h.map((v,j)=>{let[b,S]=Lp(v.relativePath,v.caseSensitive,j===h.length-1);return{...v,matcher:b,compiledParams:S}})})};return e.forEach((l,o)=>{var u;if(l.path===""||!((u=l.path)!=null&&u.includes("?")))i(l,o);else for(let c of Ip(l.path))i(l,o,!0,c)}),t}function Ip(e){let t=e.split("/");if(t.length===0)return[];let[n,...a]=t,s=n.endsWith("?"),i=n.replace(/\?$/,"");if(a.length===0)return s?[i,""]:[i];let l=Ip(a.join("/")),o=[];return o.push(...l.map(u=>u===""?i:[i,u].join("/"))),s&&o.push(...l),o.map(u=>e.startsWith("/")&&u===""?"/":u)}function px(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:jx(t.routesMeta.map(a=>a.childrenIndex),n.routesMeta.map(a=>a.childrenIndex)))}var hx=/^:[\w-]+$/,fx=3,gx=2,xx=1,vx=10,bx=-2,Tc=e=>e==="*";function yx(e,t){let n=e.split("/"),a=n.length;return n.some(Tc)&&(a+=bx),t&&(a+=gx),n.filter(s=>!Tc(s)).reduce((s,i)=>s+(hx.test(i)?fx:i===""?xx:vx),a)}function jx(e,t){return e.length===t.length&&e.slice(0,-1).every((a,s)=>a===t[s])?e[e.length-1]-t[t.length-1]:0}function wx(e,t,n=!1){let{routesMeta:a}=e,s={},i="/",l=[];for(let o=0;o<a.length;++o){let u=a[o],c=o===a.length-1,p=i==="/"?t:t.slice(i.length)||"/",m={path:u.relativePath,caseSensitive:u.caseSensitive,end:c},h=u.matcher&&u.compiledParams?Fp(m,p,u.matcher,u.compiledParams):Gs(m,p),v=u.route;if(!h&&c&&n&&!a[a.length-1].route.index&&(h=Gs({path:u.relativePath,caseSensitive:u.caseSensitive,end:!1},p)),!h)return null;
49Object.assign(s,h.params),l.push({params:s,pathname:it([i,h.pathname]),pathnameBase:kx(it([i,h.pathnameBase])),route:v}),h.pathnameBase!=="/"&&(i=it([i,h.pathnameBase]))}return l}function Gs(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,a]=Lp(e.path,e.caseSensitive,e.end);return Fp(e,t,n,a)}function Fp(e,t,n,a){let s=t.match(n);if(!s)return null;let i=s[0],l=bn(i,1),o=s.slice(1);return{params:a.reduce((c,{paramName:p,isOptional:m},h)=>{if(p==="*"){let j=o[h]||"";l=bn(i.slice(0,i.length-j.length),1)}const v=o[h];return m&&!v?c[p]=void 0:c[p]=(v||"").replace(/%2F/g,"/"),c},{}),pathname:i,pathnameBase:l,pattern:e}}function Lp(e,t=!1,n=!0){gt(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let a=[],s="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,o,u,c,p)=>{if(a.push({paramName:o,isOptional:u!=null}),u){let m=p.charAt(c+l.length);return m&&m!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(a.push({paramName:"*"}),s+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?s+="\\/*$":e!==""&&e!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,t?void 0:"i"),a]}function Sx(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return gt(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function It(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,a=e.charAt(n);return a&&a!=="/"?null:e.slice(n)||"/"}function _x(e,t="/"){let{pathname:n,search:a="",hash:s=""}=typeof e=="string"?Pn(e):e,i;return n?(n=Ap(n),n.startsWith("/")||n.startsWith("\\")?i=Ec(n.substring(1),"/"):i=Ec(n,t)):i=t,{pathname:i,search:Nx(a),hash:Tx(s)}}function Ec(e,t){let n=bn(t).split("/");return e.split("/").forEach(s=>{s===".."?n.length>1&&n.pop():s!=="."&&n.push(s)}),n.length>1?n.join("/"):"/"}function Gi(e,t,n,a){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(a)}].  Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Px(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Mp(e){let t=Px(e);return t.map((n,a)=>a===t.length-1?n.pathname:n.pathnameBase)}function ru(e,t,n,a=!1){let s;typeof e=="string"?s=Pn(e):(s={...e},ee(!s.pathname||!s.pathname.includes("?"),Gi("?","pathname","search",s)),ee(!s.pathname||!s.pathname.includes("#"),Gi("#","pathname","hash",s)),ee(!s.search||!s.search.includes("#"),Gi("#","search","hash",s)));let i=e===""||s.pathname==="",l=i?"/":s.pathname,o;if(l==null)o=n;else{let m=t.length-1;if(!a&&l.startsWith("..")){let h=l.split("/");for(;h[0]==="..";)h.shift(),m-=1;s.pathname=h.join("/")}o=m>=0?t[m]:"/"}let u=_x(s,o),c=l&&l!=="/"&&l.endsWith("/"),p=(i||l===".")&&n.endsWith("/");return!u.pathname.endsWith("/")&&(c||p)&&(u.pathname+="/"),u}var Ap=e=>e.replace(/[\\/]{2,}/g,"/"),it=e=>Ap(e.join("/"));function bn(e,t=0){let n=e.length;for(;n>t&&e.charCodeAt(n-1)===47;)n--;return n===e.length?e:e.slice(0,n)}var kx=e=>bn(e).replace(/^\/*/,"/"),Nx=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,Tx=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,Ex=class{constructor(e,t,n,a=!1){this.status=e,this.statusText=t||"",this.internal=a,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function zx(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function Rx(e){let t=e.map(n=>n.route.path).filter(Boolean);return it(t)||"/"}var qp=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Dp(e,t){let n=e;
49if(typeof n!="string"||!tu.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let a=n,s=!1;if(qp)try{let i=new URL(window.location.href),l=zp.test(n)?new URL(ix(n,i.protocol)):new URL(n),o=It(l.pathname,t);l.origin===i.origin&&o!=null?n=o+l.search+l.hash:s=!0}catch{gt(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:a,isExternal:s,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var zc=new URL("http://localhost");function Op(e){if(e.createURL)return e.createURL("/");try{return new URL(e.createHref("/"),zc)}catch{return zc}}function Yi(e,t){return e.origin===t.origin&&(e.origin!=="null"||e.protocol===t.protocol&&e.host===t.host)}function Cx(e,t){if(e.startsWith("//"))return!0;let n=t.protocol.toLowerCase();return e.toLowerCase().startsWith(n)?t.host===""||e.slice(n.length).startsWith("//"):!1}function Hp(e,t,n,a){let s=null;try{s=e==null?null:new URL(e,n)}catch{}let i=new URL(t,n),l=s!=null&&!Yi(s,n),o=!Yi(i,n);if(a==="reject"){if(l||o)throw new Error("External navigation is not allowed")}else if(o&&(s==null||!Cx(e,s)||!Yi(s,i)))throw new Error("External navigation is not allowed")}var Up=["POST","PUT","PATCH","DELETE"];new Set(Up);var Ix=["GET",...Up];new Set(Ix);var Fx=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];function Lx(e){try{return Fx.includes(new URL(e).protocol)}catch{return!1}}var kn=x.createContext(null);kn.displayName="DataRouter";var fi=x.createContext(null);fi.displayName="DataRouterState";var Vp=x.createContext(!1);function Mx(){return x.useContext(Vp)}var Bp=x.createContext({isTransitioning:!1});Bp.displayName="ViewTransition";var Ax=x.createContext(new Map);Ax.displayName="Fetchers";var qx=x.createContext(null);qx.displayName="Await";var Qe=x.createContext(null);Qe.displayName="Navigation";var Ta=x.createContext(null);Ta.displayName="Location";var xt=x.createContext({outlet:null,matches:[],isDataRoute:!1});xt.displayName="Route";var nu=x.createContext(null);nu.displayName="RouteError";var Wp="REACT_ROUTER_ERROR",Dx="REDIRECT",Ox="ROUTE_ERROR_RESPONSE";function Hx(e){if(e.startsWith(`${Wp}:${Dx}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.location=="string"&&typeof t.reloadDocument=="boolean"&&typeof t.replace=="boolean")return t}catch{}}function Ux(e){if(e.startsWith(`${Wp}:${Ox}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string")return new Ex(t.status,t.statusText,t.data)}catch{}}function Vx(e,{relative:t}={}){ee(Ea(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:a}=x.useContext(Qe),{hash:s,pathname:i,search:l}=za(e,{relative:t}),o=i;return n!=="/"&&(o=i==="/"?n:it([n,i])),a.createHref({pathname:o,search:l,hash:s})}function Ea(){return x.useContext(Ta)!=null}function Mt(){return ee(Ea(),"useLocation() may be used only in the context of a <Router> component."),x.useContext(Ta).location}var $p="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Kp(e){x.useContext(Qe).static||x.useLayoutEffect(e)}function Bx(){let{isDataRoute:e}=x.useContext(xt);return e?av():Wx()}function Wx(){ee(Ea(),"useNavigate() may be used only in the context of a <Router> component.");let e=x.useContext(kn),{basename:t,navigator:n}=x.useContext(Qe),{matches:a}=x.useContext(xt),{pathname:s}=Mt(),i=JSON.stringify(Mp(a)),l=x.useRef(!1);return Kp(()=>{l.current=!0}),x.useCallback((u,c={})=>{if(gt(l.current,$p),!l.current)return;if(typeof u=="number"){n.go(u);return}let p=ru(u,JSON.parse(i),s,c.relative==="path");e==null&&t!=="/"&&(p.pathname=p.pathname==="/"?t:it([t,p.pathname])),Hp(typeof u=="string"?u:vn(u),n.createHref(p),Op(n),"reject"),(c.replace?n.replace:n.push)(p,c.state,c)},[t,n,i,s,e])}x.createContext(null);function $x(){let{matches:e}=x.useContext(xt),t=e[e.length-1];return(t==null?void 0:t.params)??{}}function za(e,{relative:t}={}){let{matches:n}=x.useContext(xt),{pathname:a}=Mt(),s=JSON.stringify(Mp(n));return x.useMemo(()=>ru(e,JSON.parse(s),a,t==="path"),[e,s,a,t])}function Kx(e,t){return Gp(e,t)}function Gp(e,t,n){var S;ee(Ea(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:a}=x.useContext(Qe),{matches:s}=x.useContext(xt),i=s[s.length-1],l=i?i.params:{},o=i?i.pathname:"/",u=i?i.pathnameBase:"/",c=i&&i.route;{let f=c&&c.path||"";Qp(o,!c||f.endsWith("*")||f.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${o}" (under <Route path="${f}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
50
51Please change the parent <Route path="${f}"> to <Route path="${f==="/"?"*":`${f}/*`}">.`)}let p=Mt(),m;if(t){let f=typeof t=="string"?Pn(t):t;ee(u==="/"||((S=f.pathname)==null?void 0:S.startsWith(u)),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${u}" but pathname "${f.pathname}" was given in the \`location\` prop.`),m=f}else m=p;let h=m.pathname||"/",v=h;if(u!=="/"){let f=u.replace(/^\//,"").split("/");v="/"+h.replace(/^\//,"").split("/").slice(f.length).join("/")}let j=n&&n.state.matches.length?n.state.matches.map(f=>Object.assign(f,{route:n.manifest[f.route.id]||f.route})):Rp(e,{pathname:v});gt(c||j!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),gt(j==null||j[j.length-1].route.element!==void 0||j[j.length-1].route.Component!==void 0||j[j.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let b=Xx(j&&j.map(f=>Object.assign({},f,{params:Object.assign({},l,f.params),pathname:it([u,a.encodeLocation?a.encodeLocation(f.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:f.pathname]),pathnameBase:f.pathnameBase==="/"?u:it([u,a.encodeLocation?a.encodeLocation(f.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:f.pathnameBase])})),s,n);return t&&b?x.createElement(Ta.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",mask:void 0,...m},navigationType:"POP"}},b):b}function Gx(){let e=nv(),t=zx(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,a="rgba(200,200,200, 0.5)",s={padding:"0.5rem",backgroundColor:a},i={padding:"2px 4px",backgroundColor:a},l=null;return console.error("Error handled by React Router default ErrorBoundary:",e),l=x.createElement(x.Fragment,null,x.createElement("p",null,"💿 Hey developer 👋"),x.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",x.createElement("code",{style:i},"ErrorBoundary")," or"," ",x.createElement("code",{style:i},"errorElement")," prop on your route.")),x.createElement(x.Fragment,null,x.createElement("h2",null,"Unexpected Application 
51Error!"),x.createElement("h3",{style:{fontStyle:"italic"}},t),n?x.createElement("pre",{style:s},n):null,l)}var Yx=x.createElement(Gx,null),Yp=class extends x.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error("React Router caught the following error during render",e)}render(){let e=this.state.error;if(this.context&&typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){const n=Ux(e.digest);n&&(e=n)}let t=e!==void 0?x.createElement(xt.Provider,{value:this.props.routeContext},x.createElement(nu.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?x.createElement(Qx,{error:e},t):t}};Yp.contextType=Vp;var Qi=new WeakMap;function Qx({children:e,error:t}){let{basename:n,navigator:a}=x.useContext(Qe);if(typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){let s=Hx(t.digest);if(s){let i=Qi.get(t);if(i)throw i;let l=Dp(s.location,n),o=l.absoluteURL||l.to;if(Hp(s.location,o,Op(a),"allow-explicit"),Lx(o))throw new Error("Invalid redirect location");if(qp&&!Qi.get(t))if(l.isExternal||s.reloadDocument)window.location.href=o;else{const u=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(l.to,{replace:s.replace}));throw Qi.set(t,u),u}return x.createElement("meta",{httpEquiv:"refresh",content:`0;url=${o}`})}}return e}function Zx({routeContext:e,match:t,children:n}){let a=x.useContext(kn);return a&&a.static&&a.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=t.route.id),x.createElement(xt.Provider,{value:e},n)}function Xx(e,t=[],n){let a=n==null?void 0:n.state;if(e==null){if(!a)return null;if(a.errors)e=a.matches;else if(t.length===0&&!a.initialized&&a.matches.length>0)e=a.matches;else return null}let s=e,i=a==null?void 0:a.errors;if(i!=null){let p=s.findIndex(m=>m.route.id&&(i==null?void 0:i[m.route.id])!==void 0);ee(p>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(i).join(",")}`),s=s.slice(0,Math.min(s.length,p+1))}let l=!1,o=-1;if(n&&a){l=a.renderFallback;for(let p=0;p<s.length;p++){let m=s[p];if((m.route.HydrateFallback||m.route.hydrateFallbackElement)&&(o=p),m.route.id){let{loaderData:h,errors:v}=a,j=m.route.loader&&!h.hasOwnProperty(m.route.id)&&(!v||v[m.route.id]===void 0);if(m.route.lazy||j){n.isStatic&&(l=!0),o>=0?s=s.slice(0,o+1):s=[s[0]];break}}}}let u=n==null?void 0:n.onError,c=a&&u?(p,m)=>{var h,v;u(p,{location:a.location,params:((v=(h=a.matches)==null?void 0:h[0])==null?void 0:v.params)??{},pattern:Rx(a.matches),errorInfo:m})}:void 0;return s.reduceRight((p,m,h)=>{let v,j=!1,b=null,S=null;a&&(v=i&&m.route.id?i[m.route.id]:void 0,b=m.route.errorElement||Yx,l&&(o<0&&h===0?(Qp("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),j=!0,S=null):o===h&&(j=!0,S=m.route.hydrateFallbackElement||null)));let f=t.concat(s.slice(0,h+1)),d=()=>{let g;return v?g=b:j?g=S:m.route.Component?g=x.createElement(m.route.Component,null):m.route.element?g=m.route.element:g=p,x.createElement(Zx,{match:m,routeContext:{outlet:p,matches:f,isDataRoute:a!=null},children:g})};return a&&(m.route.ErrorBoundary||m.route.errorElement||h===0)?x.createElement(Yp,{location:a.location,revalidation:a.revalidation,component:b,error:v,children:d(),routeContext:{outlet:null,matches:f,isDataRoute:!0},onError:c}):d()},null)}function au(e){return`${e} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`}function Jx(e){let t=x.useContext(kn);return ee(t,au(e)),t}function ev(e){let t=x.useContext(fi);return ee(t,au(e)),t}function tv(e){let t=x.useContext(xt);return ee(t,au(e)),t}function su(e){let t=tv(e),n=t.matches[t.matches.length-1];return ee(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function rv(){return su("useRouteId")}function nv(){var a;let e=x.useContext(nu),t=ev("useRouteError"),n=su("useRouteError");return e!==void 0?e:(a=t.errors)==null?void 0:a[n]}function av(){let{router:e}=Jx("useNavigate"),t=su("useNavigate"),n=x.useRef(!1);return Kp(()=>{n.current=!0}),x.useCallback(async(s,i={})=>{gt(n.current,$p),n.current&&(typeof s=="number"?await e.navigate(s):await e.navigate(s,{fromRouteId:t,...i}))},[e,t])}var Rc={};function Qp(e,t,n){!t&&!Rc[e]&&(Rc[e]=!0,gt(!1,n))}
51x.memo(sv);function sv({routes:e,manifest:t,future:n,state:a,isStatic:s,onError:i}){return Gp(e,void 0,{manifest:t,state:a,isStatic:s,onError:i})}function Zp(e){ee(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function iv({basename:e="/",children:t=null,location:n,navigationType:a="POP",navigator:s,static:i=!1,useTransitions:l}){ee(!Ea(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let o=e.replace(/^\/*/,"/"),u=x.useMemo(()=>({basename:o,navigator:s,static:i,useTransitions:l,future:{}}),[o,s,i,l]);typeof n=="string"&&(n=Pn(n));let{pathname:c="/",search:p="",hash:m="",state:h=null,key:v="default",mask:j}=n,b=x.useMemo(()=>{let S=It(c,o);return S==null?null:{location:{pathname:S,search:p,hash:m,state:h,key:v,mask:j},navigationType:a}},[o,c,p,m,h,v,a,j]);return gt(b!=null,`<Router basename="${o}"> is not able to match the URL "${c}${p}${m}" because it does not start with the basename, so the <Router> won't render anything.`),b==null?null:x.createElement(Qe.Provider,{value:u},x.createElement(Ta.Provider,{children:t,value:b}))}function lv({children:e,location:t}){return Kx(Xl(e),t)}function Xl(e,t=[]){let n=[];return x.Children.forEach(e,(a,s)=>{if(!x.isValidElement(a))return;let i=[...t,s];if(a.type===x.Fragment){n.push.apply(n,Xl(a.props.children,i));return}ee(a.type===Zp,`[${typeof a.type=="string"?a.type:a.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),ee(!a.props.index||!a.props.children,"An index route cannot have child routes.");let l={id:a.props.id||i.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,middleware:a.props.middleware,loader:a.props.loader,action:a.props.action,hydrateFallbackElement:a.props.hydrateFallbackElement,HydrateFallback:a.props.HydrateFallback,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.hasErrorBoundary===!0||a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(l.children=Xl(a.props.children,i)),n.push(l)}),n}var vs="get",bs="application/x-www-form-urlencoded";function gi(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function ov(e){return gi(e)&&e.tagName.toLowerCase()==="button"}function uv(e){return gi(e)&&e.tagName.toLowerCase()==="form"}function cv(e){return gi(e)&&e.tagName.toLowerCase()==="input"}function dv(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function mv(e,t){return e.button===0&&(!t||t==="_self")&&!dv(e)}var Xa=null;function pv(){if(Xa===null)try{new FormData(document.createElement("form"),0),Xa=!1}catch{Xa=!0}return Xa}var hv=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Zi(e){return e!=null&&!hv.has(e)?(gt(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${bs}"`),null):e}function fv(e,t){let n,a,s,i,l;if(uv(e)){let o=e.getAttribute("action");a=o?It(o,t):null,n=e.getAttribute("method")||vs,s=Zi(e.getAttribute("enctype"))||bs,i=new FormData(e)}else if(ov(e)||cv(e)&&(e.type==="submit"||e.type==="image")){let o=e.form;if(o==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let u=e.getAttribute("formaction")||o.getAttribute("action");if(a=u?It(u,t):null,n=e.getAttribute("formmethod")||o.getAttribute("method")||vs,s=Zi(e.getAttribute("formenctype"))||Zi(o.getAttribute("enctype"))||bs,i=new FormData(o,e),!pv()){let{name:c,type:p,value:m}=e;if(p==="image"){let h=c?`${c}.`:"";i.append(`${h}x`,"0"),i.append(`${h}y`,"0")}else c&&i.append(c,m)}}else{if(gi(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=vs,a=null,s=bs,l=e}return i&&s==="text/plain"&&(l=i,i=void 0),{action:a,method:n.toLowerCase(),encType:s,formData:i,body:l}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function iu(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function Xp(e,t,n,a){let s=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return n?s.pathname.endsWith("/")?s.pathname=`${s.pathname}_.${a}`:s.pathname=`${s.pathname}.${a}`:s.pathname==="/"?s.pathname=`_root.${a}`:t&&It(s.pathname,t)==="/"?s.pathname=`${bn(t)}/_root.${a}`:s.pathname=`${bn(s.pathname)}.${a}`,s}
51async function gv(e,t){if(e.id in t)return t[e.id];try{let n=await import(e.module);return t[e.id]=n,n}catch(n){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function xv(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function vv(e,t,n){let a=await Promise.all(e.map(async s=>{let i=t.routes[s.route.id];if(i){let l=await gv(i,n);return l.links?l.links():[]}return[]}));return wv(a.flat(1).filter(xv).filter(s=>s.rel==="stylesheet"||s.rel==="preload").map(s=>s.rel==="stylesheet"?{...s,rel:"prefetch",as:"style"}:{...s,rel:"prefetch"}))}function Cc(e,t,n,a,s,i){let l=(u,c)=>n[c]?u.route.id!==n[c].route.id:!0,o=(u,c)=>{var p;return n[c].pathname!==u.pathname||((p=n[c].route.path)==null?void 0:p.endsWith("*"))&&n[c].params["*"]!==u.params["*"]};return i==="assets"?t.filter((u,c)=>l(u,c)||o(u,c)):i==="data"?t.filter((u,c)=>{var m;let p=a.routes[u.route.id];if(!p||!p.hasLoader)return!1;if(l(u,c)||o(u,c))return!0;if(u.route.shouldRevalidate){let h=u.route.shouldRevalidate({currentUrl:new URL(s.pathname+s.search+s.hash,window.origin),currentParams:((m=n[0])==null?void 0:m.params)||{},nextUrl:new URL(e,window.origin),nextParams:u.params,defaultShouldRevalidate:!0});if(typeof h=="boolean")return h}return!0}):[]}function bv(e,t,{includeHydrateFallback:n}={}){return yv(e.map(a=>{let s=t.routes[a.route.id];if(!s)return[];let i=[s.module];return s.clientActionModule&&(i=i.concat(s.clientActionModule)),s.clientLoaderModule&&(i=i.concat(s.clientLoaderModule)),n&&s.hydrateFallbackModule&&(i=i.concat(s.hydrateFallbackModule)),s.imports&&(i=i.concat(s.imports)),i}).flat(1))}function yv(e){return[...new Set(e)]}function jv(e){let t={},n=Object.keys(e).sort();for(let a of n)t[a]=e[a];return t}function wv(e,t){let n=new Set;return new Set(t),e.reduce((a,s)=>{let i=JSON.stringify(jv(s));return n.has(i)||(n.add(i),a.push({key:i,link:s})),a},[])}function lu(){let e=x.useContext(kn);return iu(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function Sv(){let e=x.useContext(fi);return iu(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var ou=x.createContext(void 0);ou.displayName="FrameworkContext";function xi(){let e=x.useContext(ou);return iu(e,"You must render this element inside a <HydratedRouter> element"),e}function _v(e,t){let n=x.useContext(ou),[a,s]=x.useState(!1),[i,l]=x.useState(!1),{onFocus:o,onBlur:u,onMouseEnter:c,onMouseLeave:p,onTouchStart:m}=t,h=x.useRef(null);x.useEffect(()=>{if(e==="render"&&l(!0),e==="viewport"){let b=f=>{f.forEach(d=>{l(d.isIntersecting)})},S=new IntersectionObserver(b,{threshold:.5});return h.current&&S.observe(h.current),()=>{S.disconnect()}}},[e]),x.useEffect(()=>{if(a){let b=setTimeout(()=>{l(!0)},100);return()=>{clearTimeout(b)}}},[a]);let v=()=>{s(!0)},j=()=>{s(!1),l(!1)};return n?e!=="intent"?[i,h,{}]:[i,h,{onFocus:Ln(o,v),onBlur:Ln(u,j),onMouseEnter:Ln(c,v),onMouseLeave:Ln(p,j),onTouchStart:Ln(m,v)}]:[!1,h,{}]}function Ln(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Pv({page:e,...t}){let n=Mx(),{nonce:a}=xi(),{router:s}=lu(),i=x.useMemo(()=>Rp(s.routes,e,s.basename),[s.routes,e,s.basename]);return i?(t.nonce==null&&a&&(t={...t,nonce:a}),n?x.createElement(Nv,{page:e,matches:i,...t}):x.createElement(Tv,{page:e,matches:i,...t})):null}function kv(e){let{manifest:t,routeModules:n}=xi(),[a,s]=x.useState([]);return x.useEffect(()=>{let i=!1;return vv(e,t,n).then(l=>{i||s(l)}),()=>{i=!0}},[e,t,n]),a}function Nv({page:e,matches:t,...n}){let a=Mt(),{future:s}=xi(),{basename:i}=lu(),l=x.useMemo(()=>{if(e===a.pathname+a.search+a.hash)return[];let o=Xp(e,i,s.v8_trailingSlashAwareDataRequests,"rsc"),u=!1,c=[];for(let p of t)typeof p.route.shouldRevalidate=="function"?u=!0:c.push(p.route.id);return u&&c.length>0&&o.searchParams.set("_routes",c.join(",")),[o.pathname+o.search]},[i,s.v8_trailingSlashAwareDataRequests,e,a,t]);return x.createElement(x.Fragment,null,l.map(o=>x.createElement("link",{key:o,rel:"prefetch",as:"fetch",href:o,...n})))}function Tv({page:e,matches:t,...n}){let a=Mt(),{future:s,manifest:i,routeModules:l}=xi(),{basename:o}=lu(),{loaderData:u,matches:c}=Sv(),p=x.useMemo(()=>Cc(e,t,c,i,a,"data"),[e,t,c,i,a]),m=x.useMemo(()=>Cc(e,t,c,i,a,"assets"),[e,t,c,i,a]),h=x.useMemo(()=>
51{if(e===a.pathname+a.search+a.hash)return[];let b=new Set,S=!1;if(t.forEach(d=>{var y;let g=i.routes[d.route.id];!g||!g.hasLoader||(!p.some(w=>w.route.id===d.route.id)&&d.route.id in u&&((y=l[d.route.id])!=null&&y.shouldRevalidate)||g.hasClientLoader?S=!0:b.add(d.route.id))}),b.size===0)return[];let f=Xp(e,o,s.v8_trailingSlashAwareDataRequests,"data");return S&&b.size>0&&f.searchParams.set("_routes",t.filter(d=>b.has(d.route.id)).map(d=>d.route.id).join(",")),[f.pathname+f.search]},[o,s.v8_trailingSlashAwareDataRequests,u,a,i,p,t,e,l]),v=x.useMemo(()=>bv(m,i),[m,i]),j=kv(m);return x.createElement(x.Fragment,null,h.map(b=>x.createElement("link",{key:b,rel:"prefetch",as:"fetch",href:b,...n})),v.map(b=>x.createElement("link",{key:b,rel:"modulepreload",href:b,...n})),j.map(({key:b,link:S})=>x.createElement("link",{key:b,nonce:n.nonce,...S,crossOrigin:S.crossOrigin??n.crossOrigin})))}function Ev(...e){return t=>{e.forEach(n=>{typeof n=="function"?n(t):n!=null&&(n.current=t)})}}var zv=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{zv&&(window.__reactRouterVersion="7.18.4")}catch{}function Rv({basename:e,children:t,useTransitions:n,window:a}){let s=x.useRef();s.current==null&&(s.current=lx({window:a,v5Compat:!0}));let i=s.current,[l,o]=x.useState({action:i.action,location:i.location}),u=x.useCallback(c=>{n===!1?o(c):x.startTransition(()=>o(c))},[n]);return x.useLayoutEffect(()=>i.listen(u),[i,u]),x.createElement(iv,{basename:e,children:t,location:l.location,navigationType:l.action,navigator:i,useTransitions:n})}var Jp=x.forwardRef(function({onClick:t,discover:n="render",prefetch:a="none",relative:s,reloadDocument:i,replace:l,mask:o,state:u,target:c,to:p,preventScrollReset:m,viewTransition:h,defaultShouldRevalidate:v,...j},b){let{basename:S,navigator:f,useTransitions:d}=x.useContext(Qe),g=typeof p=="string"&&tu.test(p),y=Dp(p,S);p=y.to;let w=Vx(p,{relative:s}),P=Mt(),T=null;if(o){let ie=ru(o,[],P.mask?P.mask.pathname:"/",!0);S!=="/"&&(ie.pathname=ie.pathname==="/"?S:it([S,ie.pathname])),T=f.createHref(ie)}let[z,C,N]=_v(a,j),A=Lv(p,{replace:l,mask:o,state:u,target:c,preventScrollReset:m,relative:s,viewTransition:h,defaultShouldRevalidate:v,useTransitions:d});function Y(ie){t&&t(ie),ie.defaultPrevented||A(ie)}let re=!(y.isExternal||i),Ze=x.createElement("a",{...j,...N,href:(re?T:void 0)||y.absoluteURL||w,onClick:re?Y:t,ref:Ev(b,C),target:c,"data-discover":!g&&n==="render"?"true":void 0});return z&&!g?x.createElement(x.Fragment,null,Ze,x.createElement(Pv,{page:w})):Ze});Jp.displayName="Link";var Cv=x.forwardRef(function({"aria-current":t="page",caseSensitive:n=!1,className:a="",end:s=!1,style:i,to:l,viewTransition:o,children:u,...c},p){let m=za(l,{relative:c.relative}),h=Mt(),v=x.useContext(fi),{navigator:j,basename:b}=x.useContext(Qe),S=v!=null&&Ov(m)&&o===!0,f=j.encodeLocation?j.encodeLocation(m).pathname:m.pathname,d=h.pathname,g=v&&v.navigation&&v.navigation.location?v.navigation.location.pathname:null;n||(d=d.toLowerCase(),g=g?g.toLowerCase():null,f=f.toLowerCase()),g&&b&&(g=It(g,b)||g);const y=f!=="/"&&f.endsWith("/")?f.length-1:f.length;let w=d===f||!s&&d.startsWith(f)&&d.charAt(y)==="/",P=g!=null&&(g===f||!s&&g.startsWith(f)&&g.charAt(f.length)==="/"),T={isActive:w,isPending:P,isTransitioning:S},z=w?t:void 0,C;typeof a=="function"?C=a(T):C=[a,w?"active":null,P?"pending":null,S?"transitioning":null].filter(Boolean).join(" ");let N=typeof i=="function"?i(T):i;return x.createElement(Jp,{...c,"aria-current":z,className:C,ref:p,style:N,to:l,viewTransition:o},typeof u=="function"?u(T):u)});Cv.displayName="NavLink";var Iv=x.forwardRef(({discover:e="render",fetcherKey:t,navigate:n,reloadDocument:a,replace:s,state:i,method:l=vs,action:o,onSubmit:u,relative:c,preventScrollReset:p,viewTransition:m,defaultShouldRevalidate:h,...v},j)=>{let{useTransitions:b}=x.useContext(Qe),S=qv(),f=Dv(o,{relative:c}
51),d=l.toLowerCase()==="get"?"get":"post",g=typeof o=="string"&&tu.test(o),y=w=>{if(u&&u(w),w.defaultPrevented)return;w.preventDefault();let P=w.nativeEvent.submitter,T=(P==null?void 0:P.getAttribute("formmethod"))||l,z=()=>S(P||w.currentTarget,{fetcherKey:t,method:T,navigate:n,replace:s,state:i,relative:c,preventScrollReset:p,viewTransition:m,defaultShouldRevalidate:h});b&&n!==!1?x.startTransition(()=>z()):z()};return x.createElement("form",{ref:j,method:d,action:f,onSubmit:a?u:y,...v,"data-discover":!g&&e==="render"?"true":void 0})});Iv.displayName="Form";function Fv(e){return`${e} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`}function eh(e){let t=x.useContext(kn);return ee(t,Fv(e)),t}function Lv(e,{target:t,replace:n,mask:a,state:s,preventScrollReset:i,relative:l,viewTransition:o,defaultShouldRevalidate:u,useTransitions:c}={}){let p=Bx(),m=Mt(),h=za(e,{relative:l});return x.useCallback(v=>{if(mv(v,t)){v.preventDefault();let j=n!==void 0?n:vn(m)===vn(h),b=()=>p(e,{replace:j,mask:a,state:s,preventScrollReset:i,relative:l,viewTransition:o,defaultShouldRevalidate:u});c?x.startTransition(()=>b()):b()}},[m,p,h,n,a,s,t,e,i,l,o,u,c])}var Mv=0,Av=()=>`__${String(++Mv)}__`;function qv(){let{router:e}=eh("useSubmit"),{basename:t}=x.useContext(Qe),n=rv(),a=e.fetch,s=e.navigate;return x.useCallback(async(i,l={})=>{let{action:o,method:u,encType:c,formData:p,body:m}=fv(i,t);if(l.navigate===!1){let h=l.fetcherKey||Av();await a(h,n,l.action||o,{defaultShouldRevalidate:l.defaultShouldRevalidate,preventScrollReset:l.preventScrollReset,formData:p,body:m,formMethod:l.method||u,formEncType:l.encType||c,flushSync:l.flushSync})}else await s(l.action||o,{defaultShouldRevalidate:l.defaultShouldRevalidate,preventScrollReset:l.preventScrollReset,formData:p,body:m,formMethod:l.method||u,formEncType:l.encType||c,replace:l.replace,state:l.state,fromRouteId:n,flushSync:l.flushSync,viewTransition:l.viewTransition})},[a,s,t,n])}function Dv(e,{relative:t}={}){let{basename:n}=x.useContext(Qe),a=x.useContext(xt);ee(a,"useFormAction must be used inside a RouteContext");let[s]=a.matches.slice(-1),i={...za(e||".",{relative:t})},l=Mt();if(e==null){i.search=l.search;let o=new URLSearchParams(i.search),u=o.getAll("index");if(u.some(p=>p==="")){o.delete("index"),u.filter(m=>m).forEach(m=>o.append("index",m));let p=o.toString();i.search=p?`?${p}`:""}}return(!e||e===".")&&s.route.index&&(i.search=i.search?i.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(i.pathname=i.pathname==="/"?n:it([n,i.pathname])),vn(i)}function Ov(e,{relative:t}={}){let n=x.useContext(Bp);ee(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  Did you accidentally import `RouterProvider` from `react-router`?");let{basename:a}=eh("useViewTransitionState"),s=za(e,{relative:t});if(!n.isTransitioning)return!1;let i=It(n.currentLocation.pathname,a)||n.currentLocation.pathname,l=It(n.nextLocation.pathname,a)||n.nextLocation.pathname;return Gs(s.pathname,l)!=null||Gs(s.pathname,i)!=null}const Ic=typeof document<"u",Ie={set:(e,t,n={})=>{if(!Ic)return;const{expires:a,maxAge:s,path:i="/",secure:l=window.location.protocol==="https:",sameSite:o="lax"}=n;let u=`${encodeURIComponent(e)}=${encodeURIComponent(t)}`;a&&(u+=`; expires=${a.toUTCString()}`),s&&(u+=`; max-age=${s}`),i&&(u+=`; path=${i}`),l&&(u+="; secure"),o&&(u+=`; samesite=${o}`),document.cookie=u},get:e=>{if(!Ic)return null;const t=`${encodeURIComponent(e)}=`,n=document.cookie.split(";");for(let a=0;a<n.length;a++){let s=n[a];for(;s.charAt(0)===" ";)s=s.substring(1,s.length);if(s.indexOf(t)===0)return decodeURIComponent(s.substring(t.length,s.length))}return null},remove:(e,t={})=>{const{path:n="/",domain:a}=t;Ie.set(e,"",{expires:new Date(0),path:n,domain:a})},exists:e=>Ie.get(e)!==null},Hv=["en","ru","de","pr","fr","es","it","tr","zh"],Fc={pt:"pr"},Uv="en",th="lang",Ys=e=>typeof e=="string"&&Hv.includes(e),Vv=e=>e==="pt"?"pr":Ys(e)?e:null,rh=e=>e==="pr"?"pt":e,Bv=()=>{var t;const e=Ie.get(th);if(Ys(e))return e;if(typeof navigator<"u"){const n=(t=navigator.language)==null?void 0:t.slice(0,2).toLowerCase();if(n&&Fc[n])return Fc[n];if(Ys(n))return n}return Uv},Wv=e=>{Ie.set(th,e,{path:"/",maxAge:31536e3,sameSite:"lax"})},uu=(e,t)=>
51{const n=t.startsWith("/")?t:`/${t}`;return`/${rh(e)}${n}`},$v=()=>{const{lang:e}=$x();return Vv(e)??Bv()},nh=x.createContext(null),Kv=({children:e})=>{const t=$v(),[n,a]=x.useState(null),[s,i]=x.useState(null),[l,o]=x.useState(!1),u=x.useCallback(j=>{o(!1),a(j)},[]),c=x.useCallback(()=>a(null),[]),p=x.useCallback((j,b)=>{i({rtspUrl:j,node:b}),o(!1),a("popup-check")},[]),m=x.useCallback(()=>o(j=>!j),[]),h=x.useCallback(()=>o(!1),[]);x.useEffect(()=>{const j=n!==null||l;return document.body.classList.toggle("disabled",j),document.body.classList.toggle("lock",j),()=>{document.body.classList.remove("disabled","lock")}},[n,l]);const v=x.useMemo(()=>({lang:t,activePopup:n,openPopup:u,closePopup:c,checkTarget:s,openCheck:p,menuOpen:l,toggleMenu:m,closeMenu:h}),[t,n,u,c,s,p,l,m,h]);return r.jsx(nh.Provider,{value:v,children:e})},V=()=>{const e=x.useContext(nh);if(!e)throw new Error("useLanding must be used within LandingProvider");return e},ah=e=>e==="ru"?"ru-RU":"en-US",Gv=(e,t)=>e.toLocaleString(ah(t)),cu=e=>e==="ru"?"rtsp.ru":"rtsp.me",Yv={},Lc=e=>{let t;const n=new Set,a=(p,m)=>{const h=typeof p=="function"?p(t):p;if(!Object.is(h,t)){const v=t;t=m??(typeof h!="object"||h===null)?h:Object.assign({},t,h),n.forEach(j=>j(t,v))}},s=()=>t,u={setState:a,getState:s,getInitialState:()=>c,subscribe:p=>(n.add(p),()=>n.delete(p)),destroy:()=>{(Yv?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},c=t=e(a,s,u);return u},Qv=e=>e?Lc(e):Lc;var sh={exports:{}},ih={},lh={exports:{}},oh={};/**
52 * @license React
53 * use-sync-external-store-shim.production.js
54 *
55 * Copyright (c) Meta Platforms, Inc. and affiliates.
56 *
57 * This source code is licensed under the MIT license found in the
58 * LICENSE file in the root directory of this source tree.
59 */var yn=x;function Zv(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Xv=typeof Object.is=="function"?Object.is:Zv,Jv=yn.useState,eb=yn.useEffect,tb=yn.useLayoutEffect,rb=yn.useDebugValue;function nb(e,t){var n=t(),a=Jv({inst:{value:n,getSnapshot:t}}),s=a[0].inst,i=a[1];return tb(function(){s.value=n,s.getSnapshot=t,Xi(s)&&i({inst:s})},[e,n,t]),eb(function(){return Xi(s)&&i({inst:s}),e(function(){Xi(s)&&i({inst:s})})},[e]),rb(n),n}function Xi(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Xv(e,n)}catch{return!0}}function ab(e,t){return t()}var sb=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?ab:nb;oh.useSyncExternalStore=yn.useSyncExternalStore!==void 0?yn.useSyncExternalStore:sb;lh.exports=oh;var ib=lh.exports;/**
60 * @license React
61 * use-sync-external-store-shim/with-selector.production.js
62 *
63 * Copyright (c) Meta Platforms, Inc. and affiliates.
64 *
65 * This source code is licensed under the MIT license found in the
66 * LICENSE file in the root directory of this source tree.
67 */var vi=x,lb=ib;function ob(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var ub=typeof Object.is=="function"?Object.is:ob,cb=lb.useSyncExternalStore,db=vi.useRef,mb=vi.useEffect,pb=vi.useMemo,hb=vi.useDebugValue;ih.useSyncExternalStoreWithSelector=function(e,t,n,a,s){var i=db(null);if(i.current===null){var l={hasValue:!1,value:null};i.current=l}else l=i.current;i=pb(function(){function u(v){if(!c){if(c=!0,p=v,v=a(v),s!==void 0&&l.hasValue){var j=l.value;if(s(j,v))return m=j}return m=v}if(j=m,ub(p,v))return j;var b=a(v);return s!==void 0&&s(j,b)?(p=v,j):(p=v,m=b)}var c=!1,p,m,h=n===void 0?null:n;return[function(){return u(t())},h===null?void 0:function(){return u(h())}]},[t,n,a,s]);var o=cb(e,i[0],i[1]);return mb(function(){l.hasValue=!0,l.value=o},[o]),hb(o),o};sh.exports=ih;var fb=sh.exports;const gb=hd(fb),uh={},{useDebugValue:xb}=Pd,{useSyncExternalStoreWithSelector:vb}=gb;let Mc=!1;const bb=e=>e;function yb(e,t=bb,n){(uh?"production":void 0)!=="production"&&n&&!Mc&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),Mc=!0);const a=vb(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return xb(a),a}const Ac=e=>{(uh?"production":void 0)!=="production"&&typeof e!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { use
67Store } from 'zustand'`.");const t=typeof e=="function"?Qv(e):e,n=(a,s)=>yb(t,a,s);return Object.assign(n,t),n},jb=e=>e?Ac(e):Ac,wb="modulepreload",Sb=function(e){return"/"+e},qc={},ch=function(t,n,a){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),o=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));s=Promise.allSettled(n.map(u=>{if(u=Sb(u),u in qc)return;qc[u]=!0;const c=u.endsWith(".css"),p=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${p}`))return;const m=document.createElement("link");if(m.rel=c?"stylesheet":wb,c||(m.as="script"),m.crossOrigin="",m.href=u,o&&m.setAttribute("nonce",o),document.head.appendChild(m),c)return new Promise((h,v)=>{m.addEventListener("load",h),m.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${u}`)))})}))}function i(l){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=l,window.dispatchEvent(o),!o.defaultPrevented)throw l}return s.then(l=>{for(const o of l||[])o.status==="rejected"&&i(o.reason);return t().catch(i)})},_b=()=>typeof window<"u"?`${window.location.origin}/api`:"/api",Pb=15e3,kb=e=>{const t=Number(e);return Number.isFinite(t)&&t>=0?t:Pb},Nb=()=>({apiUrl:_b(),ticketsPollMs:kb("15000")}),Ra=Nb(),dh=()=>({secure:typeof window<"u"&&window.location.protocol==="https:",sameSite:"lax"}),du="rtsp_access",mu="rtsp_refresh",Qs="rtsp_user",Tb=30*24*60*60,mh=30*24*60*60,Eb=()=>Ie.get(du),Mn=()=>Ie.get(mu),zb=()=>{try{const e=Ie.get(Qs);return e?JSON.parse(e):null}catch{return null}},An=e=>{const{secure:t,sameSite:n}=dh(),a={path:"/",secure:t,sameSite:n};Ie.set(du,e.accessToken,{...a,maxAge:Tb}),Ie.set(mu,e.refreshToken,{...a,maxAge:mh})},hr=e=>{const{secure:t,sameSite:n}=dh(),a={path:"/",secure:t,sameSite:n,maxAge:mh};e?Ie.set(Qs,JSON.stringify(e),a):Ie.remove(Qs,{path:"/"})},Rb=()=>{Ie.remove(du,{path:"/"}),Ie.remove(mu,{path:"/"}),Ie.remove(Qs,{path:"/"})};class qe extends Error{constructor(n,a,s,i,l,o){super(s);Lr(this,"status");Lr(this,"code");Lr(this,"details");Lr(this,"data");Lr(this,"retryAfterSec");this.name="ApiError",this.status=n,this.code=a,this.details=i,this.data=l,this.retryAfterSec=o??null}getFieldErrors(){const n={},a=this.details;if(a&&typeof a=="object"&&a.fieldErrors){for(const[s,i]of Object.entries(a.fieldErrors))if(Array.isArray(i)){const l=i.find(o=>typeof o=="string");typeof l=="string"&&(n[s]=l)}}return n}getValidationMessages(){const n=[],a=this.details;if(a&&typeof a=="object"){if(Array.isArray(a.formErrors))for(const s of a.formErrors)typeof s=="string"&&n.push(s);if(a.fieldErrors&&typeof a.fieldErrors=="object"){for(const s of Object.values(a.fieldErrors))if(Array.isArray(s))for(const i of s)typeof i=="string"&&n.push(i)}}return n}}const Dc=e=>{const t=Eb();return{...typeof FormData<"u"&&(e==null?void 0:e.body)instanceof FormData?{}:{"Content-Type":"application/json"},...t?{Authorization:`Bearer ${t}`}:{},...(e==null?void 0:e.headers)??{}}},qn=async e=>{const t=e.headers.get("content-type");if(e.status===204)return;if(t&&t.includes("application/json"))try{return await e.json()}catch{return}return await e.text()||void 0},Cb=(e,t)=>{if(t&&typeof t=="object"){const a=t.retryAfterSec;if(typeof a=="number"&&Number.isFinite(a))return a}const n=e.headers.get("Retry-After");if(n){const a=Number(n);if(Number.isFinite(a))return a}return null},Ji=(e,t)=>{const n=e.status,a=n===429?Cb(e,t):null;if(t&&typeof t=="object"){const s=t,i=typeof s.error=="string"?s.error:null,l=typeof s.message=="string"&&s.message||i||`Request failed (${n})`;return new qe(n,i,l,s.details,t,a)}return new qe(n,null,`Request failed (${n})`,void 0,t,a)},Ib=new Set(["/auth/refresh","/auth/login"]);let Ja=null;const Fb=async()=>(Ja||(Ja=(async()=>{try{const{useAuthStore:e}=await ch(async()=>{const{useAuthStore:t}=await Promise.resolve().then(()=>yh);return{useAuthStore:t}},[]);return await e.getState().refresh(),!0}catch{return!1}finally{Ja=null}})()),Ja),Dn=async(e,t)=>{const n=`${Ra.apiUrl}${e}`,a=await fetch(n,{...t,headers:Dc(t)});if(a.ok)return await qn(a);
67if(a.status===401&&!Ib.has(e)){if(await Fb()){const l=await fetch(n,{...t,headers:Dc(t)});if(l.ok)return await qn(l);throw Ji(l,await qn(l))}const{useAuthStore:i}=await ch(async()=>{const{useAuthStore:l}=await Promise.resolve().then(()=>yh);return{useAuthStore:l}},void 0);throw i.getState().clearSession(),Ji(a,await qn(a))}throw Ji(a,await qn(a))},H={get:(e,t)=>Dn(e,{...t,method:"GET"}),post:(e,t,n)=>Dn(e,{...n,method:"POST",body:t!==void 0?JSON.stringify(t):void 0}),patch:(e,t,n)=>Dn(e,{...n,method:"PATCH",body:t!==void 0?JSON.stringify(t):void 0}),put:(e,t,n)=>Dn(e,{...n,method:"PUT",body:t!==void 0?JSON.stringify(t):void 0}),delete:(e,t,n)=>Dn(e,{...n,method:"DELETE",body:t!==void 0?JSON.stringify(t):void 0})},Fe={register:(e,t,n)=>H.post("/auth/register",{email:e,password:t,lang:n}),verifyEmail:(e,t)=>H.post("/auth/verify-email",{token:e},{signal:t}),login:(e,t)=>H.post("/auth/login",{email:e,password:t}),requestPasswordReset:(e,t)=>H.post("/auth/request-password-reset",{email:e,lang:t}),resetPassword:(e,t)=>H.post("/auth/reset-password",{token:e,password:t}),refresh:e=>H.post("/auth/refresh",{refreshToken:e}),logout:e=>H.post("/auth/logout",{refreshToken:e}),me:()=>H.get("/auth/me"),updateLanguage:e=>H.patch("/auth/me",{lng:e}),updateProfile:e=>H.patch("/auth/me",e),changePassword:(e,t)=>H.patch("/auth/me/password",{currentPassword:e,newPassword:t}),requestAccountDeletion:()=>H.delete("/auth/me"),confirmAccountDeletion:e=>H.post("/auth/confirm-account-deletion",{token:e})},Lb={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)};var Bt,so,sd,Mb=(sd=class{constructor(){D(this,Bt,Lb);D(this,so,!1)}setTimeoutProvider(e){L(this,Bt,e)}setTimeout(e,t){return _(this,Bt).setTimeout(e,t)}clearTimeout(e){_(this,Bt).clearTimeout(e)}setInterval(e,t){return _(this,Bt).setInterval(e,t)}clearInterval(e){_(this,Bt).clearInterval(e)}},Bt=new WeakMap,so=new WeakMap,sd);const Jl=new Mb;function Ab(e){setTimeout(e,0)}const qb=typeof window>"u"||"Deno"in globalThis;function Ve(){}function Db(e,t){return typeof e=="function"?e(t):e}function Ob(e){return typeof e=="number"&&e>=0&&e!==1/0}function Hb(e,t){return Math.max(e+(t||0)-Date.now(),0)}function ea(e,t){return typeof e=="function"?e(t):e}function Oc(e,t){const{type:n="all",exact:a,fetchStatus:s,predicate:i,queryKey:l,stale:o}=e;if(l){if(a){if(t.queryHash!==pu(l,t.options))return!1}else if(!jn(t.queryKey,l))return!1}if(n!=="all"){const u=t.isActive();if(n==="active"&&!u||n==="inactive"&&u)return!1}return!(typeof o=="boolean"&&t.isStale()!==o||s&&s!==t.state.fetchStatus||i&&!i(t))}function Hc(e,t){const{exact:n,status:a,predicate:s,mutationKey:i}=e;if(i){if(!t.options.mutationKey)return!1;if(n){if(ba(t.options.mutationKey)!==ba(i))return!1}else if(!jn(t.options.mutationKey,i))return!1}return!(a&&t.state.status!==a||s&&!s(t))}function pu(e,t){return((t==null?void 0:t.queryKeyHashFn)||ba)(e)}function ba(e){return JSON.stringify(e,(t,n)=>eo(n)?Object.keys(n).sort().reduce((a,s)=>(a[s]=n[s],a),{}):n)}function jn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(Array.isArray(e)&&Array.isArray(t)){if(t.length>e.length)return!1;for(let a=0;a<t.length;a++)if(!jn(e[a],t[a]))return!1;return!0}const n=Object.keys(t);for(const a of n)if(!jn(e[a],t[a]))return!1;return!0}return!1}const Ub=Object.prototype.hasOwnProperty;function ph(e,t,n=0){if(e===t)return e;if(n>500)return t;const a=Uc(e)&&Uc(t);if(!a&&!(eo(e)&&eo(t)))return t;const s=(a?e:Object.keys(e)).length,i=a?t:Object.keys(t),l=i.length,o=a?new Array(l):{};let u=0;for(let c=0;c<l;c++){const p=a?c:i[c],m=e[p],h=t[p];if(m===h){o[p]=m,(a?c<s:Ub.call(e,p))&&u++;continue}if(m===null||h===null||typeof m!="object"||typeof h!="object"){o[p]=h;continue}const v=ph(m,h,n+1);o[p]=v,v===m&&u++}return s===l&&u===s?e:o}function Uc(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function eo(e){if(!Vc(e))return!1;const t=Object.getPrototypeOf(e),n=t==null?void 0:t.constructor;if(n===void 0)return!0;if(typeof n!="function")return!1;const a=n.prototype;return!(!Vc(a)||!a.hasOwnProperty("isPrototypeOf")||t!==Object.prototype)}function Vc(e){return Object.prototype.toString.call(e)==="[object Object]"}function Vb(e){return new Promise(t=>{Jl.setTimeout(t,e)})}function Bb(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?ph(e,t):t}function Wb(e,t,n=0){const a=[...e,t];return n&&a.length>n?a.slice(1):a}function $b(e,t,n=0){const a=[t,...e];return n&&a.length>n?a.slice(0,-1):a}const hu=Symbol();function hh(e,t){return!e.queryFn&&(t!=null&&t.initialPromise)?()=>t.initialPromise:!e.queryFn||e.queryFn===hu?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function Kb(e,t,n){let a=!1,s;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(s??(s=t()),a||(a=!0,s.aborted?n():s.addEventListener("abort",n,{once:!0})),s)}),e}let Gb=()=>qb;const fh=()=>Gb();var bi=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},yr,Wt,tn,id,Yb=(id=class extends bi{constructor(){super();D(this,yr);D(this,Wt);D(this,tn);L(this,tn,t=>{if(typeof window<"u"&&window.addEventListener){const n=()=>t();return window.addEventListener("visibilitychange",n,!1),()=>{window.removeEventListener("visibilitychange",n)}}})}onSubscribe(){_(this,Wt)||this.setEventListener(_(this,tn))}onUnsubscribe(){var t;this.hasListeners()||((t=_(this,Wt))==null||t.call(this),L(this,Wt,void 0))}setEventListener(t){var n;L(this,tn,t),(n=_(this,Wt))==null||n.call(this),L(this,Wt,t(a=>{typeof a=="boolean"?this.setFocused(a):this.onFocus()}))}setFocused(t){_(this,yr)!==t&&(L(this,yr,t),this.onFocus())}onFocus(){const t=this.isFocused();
67this.listeners.forEach(n=>{n(t)})}isFocused(){var t;return typeof _(this,yr)=="boolean"?_(this,yr):((t=globalThis.document)==null?void 0:t.visibilityState)!=="hidden"}},yr=new WeakMap,Wt=new WeakMap,tn=new WeakMap,id);const gh=new Yb,Qb=Ab;function Zb(){let e=[],t=0,n=o=>{o()},a=o=>{o()},s=Qb;const i=o=>{t?e.push(o):s(()=>{n(o)})},l=()=>{const o=e;e=[],o.length&&s(()=>{a(()=>{o.forEach(u=>{n(u)})})})};return{batch:o=>{let u;t++;try{u=o()}finally{t--,t||l()}return u},batchCalls:o=>(...u)=>{i(()=>{o(...u)})},schedule:i,setNotifyFunction:o=>{n=o},setBatchNotifyFunction:o=>{a=o},setScheduler:o=>{s=o}}}const _e=Zb();var rn,$t,nn,ld,Xb=(ld=class extends bi{constructor(){super();D(this,rn,!0);D(this,$t);D(this,nn);L(this,nn,t=>{if(typeof window<"u"&&window.addEventListener){const n=()=>t(!0),a=()=>t(!1);return window.addEventListener("online",n,!1),window.addEventListener("offline",a,!1),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",a)}}})}onSubscribe(){_(this,$t)||this.setEventListener(_(this,nn))}onUnsubscribe(){var t;this.hasListeners()||((t=_(this,$t))==null||t.call(this),L(this,$t,void 0))}setEventListener(t){var n;L(this,nn,t),(n=_(this,$t))==null||n.call(this),L(this,$t,t(this.setOnline.bind(this)))}setOnline(t){_(this,rn)!==t&&(L(this,rn,t),this.listeners.forEach(n=>{n(t)}))}isOnline(){return _(this,rn)}},rn=new WeakMap,$t=new WeakMap,nn=new WeakMap,ld);const Zs=new Xb;function Jb(e){return Math.min(1e3*2**e,3e4)}function xh(e){return(e??"online")==="online"?Zs.isOnline():!0}var to=class extends Error{constructor(e){super("CancelledError"),this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}};function vh(e){let t=!1,n=0,a,s="pending",i,l;const o=new Promise((d,g)=>{i=d,l=g});o.catch(Ve);const u=()=>s!=="pending",c=d=>{var g;if(!u()){const y=new to(d);b(y),(g=e.onCancel)==null||g.call(e,y)}},p=()=>{t=!0},m=()=>{t=!1},h=()=>gh.isFocused()&&(e.networkMode==="always"||Zs.isOnline())&&e.canRun(),v=()=>xh(e.networkMode)&&e.canRun(),j=d=>{u()||(a==null||a(),s="resolved",i(d))},b=d=>{u()||(a==null||a(),s="rejected",l(d))},S=()=>new Promise(d=>{var g;a=y=>{(u()||h())&&d(y)},(g=e.onPause)==null||g.call(e)}).then(()=>{var d;a=void 0,u()||(d=e.onContinue)==null||d.call(e)}),f=()=>{if(u())return;let d;const g=n===0?e.initialPromise:void 0;try{d=g??e.fn()}catch(y){d=Promise.reject(y)}Promise.resolve(d).then(j).catch(y=>{var C;if(u())return;const w=e.retry??(fh()?0:3),P=e.retryDelay??Jb,T=typeof P=="function"?P(n,y):P,z=w===!0||typeof w=="number"&&n<w||typeof w=="function"&&w(n,y);if(t||!z){b(y);return}n++,(C=e.onFail)==null||C.call(e,n,y),Vb(T).then(()=>h()?void 0:S()).then(()=>{t?b(y):f()})})};return{promise:o,status:()=>s,cancel:c,continue:()=>(a==null||a(),o),cancelRetry:p,continueRetry:m,canStart:v,start:()=>(v()?f():S().then(f),o)}}var jr,od,bh=(od=class{constructor(){D(this,jr)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Ob(this.gcTime)&&L(this,jr,Jl.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(fh()?1/0:3e5))}clearGcTimeout(){_(this,jr)!==void 0&&(Jl.clearTimeout(_(this,jr)),L(this,jr,void 0))}},jr=new WeakMap,od);function ey(e){return{onFetch:(t,n)=>{var p,m,h,v,j;const a=t.options,s=(h=(m=(p=t.fetchOptions)==null?void 0:p.meta)==null?void 0:m.fetchMore)==null?void 0:h.direction,i=((v=t.state.data)==null?void 0:v.pages)||[],l=((j=t.state.data)==null?void 0:j.pageParams)||[];let o={pages:[],pageParams:[]},u=0;const c=async()=>{let b=!1;const S=g=>{Kb(g,()=>t.signal,()=>b=!0)},f=hh(t.options,t.fetchOptions),d=async(g,y,w)=>{if(b)return Promise.reject(t.signal.reason);if(y==null&&g.pages.length)return Promise.resolve(g);const T=(()=>{const A={client:t.client,queryKey:t.queryKey,pageParam:y,direction:w?"backward":"forward",meta:t.options.meta};return S(A),A})(),z=await f(T),{maxPages:C}=t.options,N=w?$b:Wb;return{pages:N(g.pages,z,C),pageParams:N(g.pageParams,y,C)}};if(s&&i.length){const g=s==="backward",y=g?ty:Bc,w={pages:i,pageParams:l};o=await d(w,y(a,w),g)}else{const g=e??i.length;do{const y=u===0?l[0]??a.initialPageParam:Bc(a,o);if(u>0&&y==null)break;o=await d(o,y),u++}while(u<g)}return o};t.options.persister?t.fetchFn=()=>{var b,S;return(S=(b=t.options).persister)==null?void 0:S.call(b,c,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n)}:t.fetchFn=c}}}function Bc(e,{pages:t,pageParams:n}){const a=t.length-1;return t.length>0?e.getNextPageParam(t[a],t,n[a],n):void 0}function ty(e,{pages:t,pageParams:n}){var a;return t.length>0?(a=e.getPreviousPageParam)==null?void 0:a.call(e,t[0],t,n[0],n):void 0}var an,wr,sn,Ue,Sr,ue,ya,_r,et,jt,ud,ry=(ud=class extends bh{constructor(t){super();D(this,et);D(this,an);D(this,wr);D(this,sn);D(this,Ue);D(this,Sr);D(this,ue);D(this,ya);D(this,_r);
67L(this,_r,!1),L(this,ya,t.defaultOptions),this.setOptions(t.options),this.observers=[],L(this,Sr,t.client),L(this,Ue,_(this,Sr).getQueryCache()),this.queryKey=t.queryKey,this.queryHash=t.queryHash,L(this,wr,$c(this.options)),this.state=t.state??_(this,wr),this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return _(this,an)}get promise(){var t;return(t=_(this,ue))==null?void 0:t.promise}setOptions(t){if(this.options={..._(this,ya),...t},t!=null&&t._type&&L(this,an,t._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const n=$c(this.options);n.data!==void 0&&(this.setState(Wc(n.data,n.dataUpdatedAt)),L(this,wr,n))}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&_(this,Ue).remove(this)}setData(t,n){const a=Bb(this.state.data,t,this.options);return xe(this,et,jt).call(this,{data:a,type:"success",dataUpdatedAt:n==null?void 0:n.updatedAt,manual:n==null?void 0:n.manual}),a}setState(t){xe(this,et,jt).call(this,{type:"setState",state:t})}cancel(t){var a,s;const n=(a=_(this,ue))==null?void 0:a.promise;return(s=_(this,ue))==null||s.cancel(t),n?n.then(Ve).catch(Ve):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return _(this,wr)}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(t=>ea(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===hu||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(t=>ea(t.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(t=0){return this.state.data===void 0?!0:t==="static"?!1:this.state.isInvalidated?!0:!Hb(this.state.dataUpdatedAt,t)}onFocus(){var t,n;(t=this.observers.find(a=>a.shouldFetchOnWindowFocus()))==null||t.refetch({cancelRefetch:!1}),(n=_(this,ue))==null||n.continue()}onOnline(){var t,n;(t=this.observers.find(a=>a.shouldFetchOnReconnect()))==null||t.refetch({cancelRefetch:!1}),(n=_(this,ue))==null||n.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),_(this,Ue).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){const n=this.observers.indexOf(t);n!==-1&&(this.observers.splice(n,1),this.observers.length||(_(this,ue)&&(_(this,_r)||this.state.fetchStatus==="paused"&&this.state.status==="pending"?_(this,ue).cancel({revert:!0}):_(this,ue).cancelRetry()),this.scheduleGc()),_(this,Ue).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||xe(this,et,jt).call(this,{type:"invalidate"})}async fetch(t,n){var c,p,m,h,v,j,b,S,f,d,g,y;if(this.state.fetchStatus!=="idle"&&((c=_(this,ue))==null?void 0:c.status())!=="rejected"){if(this.state.data!==void 0&&(n!=null&&n.cancelRefetch))this.cancel({silent:!0});else if(_(this,ue))return _(this,ue).continueRetry(),_(this,ue).promise}if(t&&this.setOptions(t),!this.options.queryFn){const w=this.observers.find(P=>P.options.queryFn);w&&this.setOptions(w.options)}const a=new AbortController,s=w=>{Object.defineProperty(w,"signal",{enumerable:!0,get:()=>(L(this,_r,!0),a.signal)})},i=()=>{const w=hh(this.options,n),T=(()=>{const z={client:_(this,Sr),queryKey:this.queryKey,meta:this.meta};return s(z),z})();return L(this,_r,!1),this.options.persister?this.options.persister(w,T,this):w(T)},o=(()=>{const w={fetchOptions:n,options:this.options,queryKey:this.queryKey,client:_(this,Sr),state:this.state,fetchFn:i};return s(w),w})();(p=_(this,an)==="infinite"?ey(this.options.pages):this.options.behavior)==null||p.onFetch(o,this),L(this,sn,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((m=o.fetchOptions)==null?void 0:m.meta))&&xe(this,et,jt).call(this,{type:"fetch",meta:(h=o.fetchOptions)==null?void 0:h.meta});const u=L(this,ue,vh({initialPromise:n==null?void 0:n.initialPromise,fn:o.fetchFn,onCancel:w=>{w instanceof to&&w.revert&&this.setState({..._(this,sn),fetchStatus:"idle"}),a.abort()},onFail:(w,P)=>{xe(this,et,jt).call(this,{type:"failed",failureCount:w,error:P})},onPause:()=>{xe(this,et,jt).call(this,{type:"pause"})},onContinue:()=>{xe(this,et,jt).call(this,{type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0}));try{const w=await u.start();if(w===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(w),(j=(v=_(this,Ue).config).onSuccess)==null||j.call(v,w,this),(S=(b=_(this,Ue).config).onSettled)==null||S.call(b,w,this.state.error,this),w}catch(w){if(w instanceof to){if(w.silent)return _(this,ue).promise;if(w.revert){if(this.state.data===void 0)throw w;return this.state.data}}throw xe(this,et,jt).call(this,{type:"error",error:w}),(d=(f=_(this,Ue).config).onError)==null||d.call(f,w,this),(y=(g=_(this,Ue).config).onSettled)==null||y.call(g,this.state.data,w,this),w}finally{_(this,ue)===u&&L(this,ue,void 0),this.scheduleGc()}}},an=new WeakMap,wr=new WeakMap,sn=new WeakMap,Ue=new WeakMap,Sr=new WeakMap,ue=new WeakMap,ya=new WeakMap,_r=new WeakMap,et=new WeakSet,jt=function(t){const n=a=>{switch(t.type){case"failed":return{...a,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...a,fetchStatus:"paused"};case"continue":return{...a,fetchStatus:"fetching"};case"fetch":return{...a,...ny(a.data,this.options),fetchMeta:t.meta??null};case"success":const s={...a,...Wc(t.data,t.dataUpdatedAt),dataUpdateCount:a.dataUpdateCount+1,...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return L(this,sn,t.manual?s:void 0),s;case"error":const i=t.error;
67return{...a,error:i,errorUpdateCount:a.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:a.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...a,isInvalidated:!0};case"setState":return{...a,...t.state}}};this.state=n(this.state),_e.batch(()=>{this.observers.slice().forEach(a=>{a.onQueryUpdate()}),_(this,Ue).notify({query:this,type:"updated",action:t})})},ud);function ny(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:xh(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function Wc(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function $c(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=t!==void 0,a=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?a??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var ja,ct,ye,Pr,dt,qt,cd,ay=(cd=class extends bh{constructor(t){super();D(this,dt);D(this,ja);D(this,ct);D(this,ye);D(this,Pr);L(this,ja,t.client),this.mutationId=t.mutationId,L(this,ye,t.mutationCache),L(this,ct,[]),this.state=t.state||sy(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){_(this,ct).includes(t)||(_(this,ct).push(t),this.clearGcTimeout(),_(this,ye).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){L(this,ct,_(this,ct).filter(n=>n!==t)),this.scheduleGc(),_(this,ye).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){_(this,ct).length||(this.state.status==="pending"?this.scheduleGc():_(this,ye).remove(this))}continue(){var t;return((t=_(this,Pr))==null?void 0:t.continue())??(this.state.status==="pending"?this.execute(this.state.variables):Promise.resolve())}async execute(t){var o,u,c,p,m,h,v,j,b,S,f,d,g,y,w,P,T,z;const n=()=>{xe(this,dt,qt).call(this,{type:"continue"})},a={client:_(this,ja),meta:this.options.meta,mutationKey:this.options.mutationKey},s=L(this,Pr,vh({fn:()=>this.options.mutationFn?this.options.mutationFn(t,a):Promise.reject(new Error("No mutationFn found")),onFail:(C,N)=>{xe(this,dt,qt).call(this,{type:"failed",failureCount:C,error:N})},onPause:()=>{xe(this,dt,qt).call(this,{type:"pause"})},onContinue:n,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>_(this,ye).canRun(this)})),i=this.state.status==="pending",l=!s.canStart();try{if(i)n();else{xe(this,dt,qt).call(this,{type:"pending",variables:t,isPaused:l}),_(this,ye).config.onMutate&&await _(this,ye).config.onMutate(t,this,a);const N=await((u=(o=this.options).onMutate)==null?void 0:u.call(o,t,a));N!==this.state.context&&xe(this,dt,qt).call(this,{type:"pending",context:N,variables:t,isPaused:l})}const C=await s.start();return await((p=(c=_(this,ye).config).onSuccess)==null?void 0:p.call(c,C,t,this.state.context,this,a)),await((h=(m=this.options).onSuccess)==null?void 0:h.call(m,C,t,this.state.context,a)),await((j=(v=_(this,ye).config).onSettled)==null?void 0:j.call(v,C,null,this.state.variables,this.state.context,this,a)),await((S=(b=this.options).onSettled)==null?void 0:S.call(b,C,null,t,this.state.context,a)),xe(this,dt,qt).call(this,{type:"success",data:C}),C}catch(C){try{await((d=(f=_(this,ye).config).onError)==null?void 0:d.call(f,C,t,this.state.context,this,a))}catch(N){Promise.reject(N)}try{await((y=(g=this.options).onError)==null?void 0:y.call(g,C,t,this.state.context,a))}catch(N){Promise.reject(N)}try{await((P=(w=_(this,ye).config).onSettled)==null?void 0:P.call(w,void 0,C,this.state.variables,this.state.context,this,a))}catch(N){Promise.reject(N)}try{await((z=(T=this.options).onSettled)==null?void 0:z.call(T,void 0,C,t,this.state.context,a))}catch(N){Promise.reject(N)}throw xe(this,dt,qt).call(this,{type:"error",error:C}),C}finally{_(this,Pr)===s&&L(this,Pr,void 0),_(this,ye).runNext(this)}}},ja=new WeakMap,ct=new WeakMap,ye=new WeakMap,Pr=new WeakMap,dt=new WeakSet,qt=function(t){const n=a=>{switch(t.type){case"failed":return{...a,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...a,isPaused:!0};case"continue":return{...a,isPaused:!1};
67case"pending":return{...a,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...a,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...a,data:void 0,error:t.error,failureCount:a.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=n(this.state),_e.batch(()=>{_(this,ct).forEach(a=>{a.onMutationUpdate(t)}),_(this,ye).notify({mutation:this,type:"updated",action:t})})},cd);function sy(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var Pt,tt,wa,dd,iy=(dd=class extends bi{constructor(t={}){super();D(this,Pt);D(this,tt);D(this,wa);this.config=t,L(this,Pt,new Set),L(this,tt,new Map),L(this,wa,0)}build(t,n,a){const s=new ay({client:t,mutationCache:this,mutationId:++Fa(this,wa)._,options:t.defaultMutationOptions(n),state:a});return this.add(s),s}add(t){_(this,Pt).add(t);const n=es(t);if(typeof n=="string"){const a=_(this,tt).get(n);a?a.push(t):_(this,tt).set(n,[t])}this.notify({type:"added",mutation:t})}remove(t){if(_(this,Pt).delete(t)){const n=es(t);if(typeof n=="string"){const a=_(this,tt).get(n);if(a)if(a.length>1){const s=a.indexOf(t);s!==-1&&a.splice(s,1)}else a[0]===t&&_(this,tt).delete(n)}}this.notify({type:"removed",mutation:t})}canRun(t){var a;const n=es(t);if(typeof n=="string"){const s=(a=_(this,tt).get(n))==null?void 0:a.find(i=>i.state.status==="pending");return!s||s===t}else return!0}runNext(t){var a,s;const n=es(t);return typeof n=="string"?((s=(a=_(this,tt).get(n))==null?void 0:a.find(i=>i!==t&&i.state.isPaused))==null?void 0:s.continue())??Promise.resolve():Promise.resolve()}clear(){_e.batch(()=>{_(this,Pt).forEach(t=>{this.notify({type:"removed",mutation:t})}),_(this,Pt).clear(),_(this,tt).clear()})}getAll(){return Array.from(_(this,Pt))}find(t){const n={exact:!0,...t};return this.getAll().find(a=>Hc(n,a))}findAll(t={}){return this.getAll().filter(n=>Hc(t,n))}notify(t){_e.batch(()=>{this.listeners.forEach(n=>{n(t)})})}resumePausedMutations(){const t=this.getAll().filter(n=>n.state.isPaused);return _e.batch(()=>Promise.all(t.map(n=>n.continue().catch(Ve))))}},Pt=new WeakMap,tt=new WeakMap,wa=new WeakMap,dd);function es(e){var t;return(t=e.options.scope)==null?void 0:t.id}var mt,md,ly=(md=class extends bi{constructor(t={}){super();D(this,mt);this.config=t,L(this,mt,new Map)}build(t,n,a){const s=n.queryKey,i=n.queryHash??pu(s,n);let l=this.get(i);return l||(l=new ry({client:t,queryKey:s,queryHash:i,options:t.defaultQueryOptions(n),state:a,defaultOptions:t.getQueryDefaults(s)}),this.add(l)),l}add(t){_(this,mt).has(t.queryHash)||(_(this,mt).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){_(this,mt).get(t.queryHash)===t&&(t.destroy(),_(this,mt).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){_e.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return _(this,mt).get(t)}getAll(){return[..._(this,mt).values()]}find(t){const n={exact:!0,...t};return this.getAll().find(a=>Oc(n,a))}findAll(t={}){const n=this.getAll();return Object.keys(t).length>0?n.filter(a=>Oc(t,a)):n}notify(t){_e.batch(()=>{this.listeners.forEach(n=>{n(t)})})}onFocus(){_e.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){_e.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},mt=new WeakMap,md),Z,Kt,Gt,ln,on,Yt,un,cn,pd,oy=(pd=class{constructor(e={}){D(this,Z);D(this,Kt);D(this,Gt);D(this,ln);D(this,on);D(this,Yt);D(this,un);D(this,cn);L(this,Z,e.queryCache||new ly),L(this,Kt,e.mutationCache||new iy),L(this,Gt,e.defaultOptions||{}),L(this,ln,new Map),L(this,on,new Map),L(this,Yt,0)}mount(){Fa(this,Yt)._++,_(this,Yt)===1&&(L(this,un,gh.subscribe(async e=>{e&&(await this.resumePausedMutations(),_(this,Z).onFocus())})),L(this,cn,Zs.subscribe(async e=>{e&&(await this.resumePausedMutations(),_(this,Z).onOnline())})))}unmount(){var e,t;Fa(this,Yt)._--,_(this,Yt)===0&&((e=_(this,un))==null||e.call(this),L(this,un,void 0),(t=_(this,cn))==null||t.call(this),L(this,cn,void 0))}isFetching(e){return _(this,Z).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return _(this,Kt).findAll({...e,status:"pending"}).length}getQueryData(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=_(this,Z).get(t.queryHash))==null?void 0:n.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),n=_(this,Z).build(this,t),a=n.state.data;return a===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(ea(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(a))}getQueriesData(e){return _(this,Z).findAll(e).map(({queryKey:t,state:n})=>[t,n.data])}setQueryData(e,t,n){var l;const a=this.defaultQueryOptions({queryKey:e}),s=(l=_(this,Z).get(a.queryHash))==null?void 0:l.state.data,i=Db(t,s);if(i!==void 0)return _(this,Z).build(this,a).setData(i,{...n,manual:!0})}
67setQueriesData(e,t,n){return _e.batch(()=>_(this,Z).findAll(e).map(({queryKey:a})=>[a,this.setQueryData(a,t,n)]))}getQueryState(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=_(this,Z).get(t.queryHash))==null?void 0:n.state}removeQueries(e){const t=_(this,Z);_e.batch(()=>{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=_(this,Z);return _e.batch(()=>{const a=n.findAll(e),s=new Set(a);return a.forEach(i=>{i.reset()}),this.refetchQueries({type:"active",predicate:i=>s.has(i)},t)})}cancelQueries(e,t={}){const n={revert:!0,...t},a=_e.batch(()=>_(this,Z).findAll(e).map(s=>s.cancel(n)));return Promise.all(a).then(Ve).catch(Ve)}invalidateQueries(e,t={}){return _e.batch(()=>(_(this,Z).findAll(e).forEach(n=>{n.invalidate()}),(e==null?void 0:e.refetchType)==="none"?Promise.resolve():this.refetchQueries({...e,type:(e==null?void 0:e.refetchType)??(e==null?void 0:e.type)??"active"},t)))}refetchQueries(e,t={}){const n={...t,cancelRefetch:t.cancelRefetch??!0},a=_e.batch(()=>_(this,Z).findAll(e).filter(s=>!s.isDisabled()&&!s.isStatic()).map(s=>{let i=s.fetch(void 0,n);return n.throwOnError||(i=i.catch(Ve)),s.state.fetchStatus==="paused"?Promise.resolve():i}));return Promise.all(a).then(Ve)}async query(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=_(this,Z).build(this,t),a=n.isStaleByTime(ea(t.staleTime,n))?await n.fetch(t):n.state.data,s=t.select;return s?s(a):a}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=_(this,Z).build(this,t);return n.isStaleByTime(ea(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(Ve).catch(Ve)}infiniteQuery(e){return e._type="infinite",this.query(e)}fetchInfiniteQuery(e){return e._type="infinite",this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(Ve).catch(Ve)}ensureInfiniteQueryData(e){return e._type="infinite",this.ensureQueryData(e)}resumePausedMutations(){return Zs.isOnline()?_(this,Kt).resumePausedMutations():Promise.resolve()}getQueryCache(){return _(this,Z)}getMutationCache(){return _(this,Kt)}getDefaultOptions(){return _(this,Gt)}setDefaultOptions(e){L(this,Gt,e)}setQueryDefaults(e,t){_(this,ln).set(ba(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[..._(this,ln).values()],n={};return t.forEach(a=>{jn(e,a.queryKey)&&Object.assign(n,a.defaultOptions)}),n}setMutationDefaults(e,t){_(this,on).set(ba(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[..._(this,on).values()],n={};return t.forEach(a=>{jn(e,a.mutationKey)&&Object.assign(n,a.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;const t={..._(this,Gt).queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=pu(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===hu&&(t.enabled=!1),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:{..._(this,Gt).mutations,...(e==null?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){_(this,Z).clear(),_(this,Kt).clear()}},Z=new WeakMap,Kt=new WeakMap,Gt=new WeakMap,ln=new WeakMap,on=new WeakMap,Yt=new WeakMap,un=new WeakMap,cn=new WeakMap,pd);const uy=new oy({defaultOptions:{queries:{staleTime:3e4,retry:(e,t)=>{const n=t instanceof qe?t.status:0;return n>=400&&n<500?!1:e<2}}}}),Ft=jb((e,t)=>{const n=zb(),a=!!Mn();let s=null;return{user:n,isAuthenticated:!!(n&&a),isLoading:!1,isChecking:a,login:async(i,l)=>{e({isLoading:!0});try{const{user:o,tokens:u}=await Fe.login(i,l);An(u),hr(o),e({user:o,isAuthenticated:!0})}finally{e({isLoading:!1})}},register:async(i,l,o)=>{e({isLoading:!0});try{await Fe.register(i,l,o)}finally{e({isLoading:!1})}},verifyEmail:async(i,l)=>{e({isLoading:!0});try{const{user:o,tokens:u}=await Fe.verifyEmail(i,l);An(u),hr(o),e({user:o,isAuthenticated:!0})}finally{e({isLoading:!1})}},requestPasswordReset:async(i,l)=>{e({isLoading:!0});try{await Fe.requestPasswordReset(i,l)}finally{e({isLoading:!1})}},resetPassword:async(i,l)=>{e({isLoading:!0});try{const{user:o,tokens:u}=await Fe.resetPassword(i,l);An(u),hr(o),e({user:o,isAuthenticated:!0})}finally{e({isLoading:!1})}},refresh:async()=>s||(s=(async()=>{const i=Mn();if(!i)throw t().clearSession(),new Error("No refresh token");try{const l=await Fe.refresh(i);An(l)}catch(l){throw t().clearSession(),l}finally{s=null}})(),s),checkAuth:async()=>
67{if(!Mn()){e({isChecking:!1,isAuthenticated:!1,user:null});return}e({isChecking:!0});try{const i=await Fe.me();hr(i),Ys(i.lng)&&Wv(i.lng),e({user:i,isAuthenticated:!0})}catch{t().clearSession()}finally{e({isChecking:!1})}},autoLogin:async()=>{if(!Mn()){e({isChecking:!1,isAuthenticated:!1});return}await t().checkAuth()},logout:async()=>{const i=Mn();try{i&&await Fe.logout(i)}catch{}finally{t().clearSession()}},requestAccountDeletion:async()=>{e({isLoading:!0});try{await Fe.requestAccountDeletion()}finally{e({isLoading:!1})}},confirmAccountDeletion:async i=>{e({isLoading:!0});try{await Fe.confirmAccountDeletion(i),t().clearSession()}finally{e({isLoading:!1})}},setLanguage:async i=>{const l=t().user;if(l){const o={...l,lng:i};hr(o),e({user:o})}try{await Fe.updateLanguage(i)}catch{}},updateProfile:async i=>{e({isLoading:!0});try{const l=await Fe.updateProfile(i);hr(l),e({user:l})}finally{e({isLoading:!1})}},changePassword:async(i,l)=>{e({isLoading:!0});try{const{user:o,tokens:u}=await Fe.changePassword(i,l);An(u);const c=t().user,p=c?{...c,...o}:o;hr(p),e({user:p,isAuthenticated:!0})}finally{e({isLoading:!1})}},clearSession:()=>{Rb(),e({user:null,isAuthenticated:!1,isLoading:!1,isChecking:!1}),uy.clear()}}}),yh=Object.freeze(Object.defineProperty({__proto__:null,useAuthStore:Ft},Symbol.toStringTag,{value:"Module"})),cy={en:[{href:"#service",label:"Creating Live Broadcasts"},{href:"#cloud",label:"Cloud Video Surveillance"},{href:"#monetization",label:"Monetization"},{href:"#tariffs",label:"Tariffs"},{href:"#products",label:"Products"},{href:"#callback",label:"Contacts"}],ru:[{href:"#service",label:"Что мы делаем"},{href:"#cloud",label:"Облачное видеонаблюдение"},{href:"#monetization",label:"Монетизация"},{href:"#tariffs",label:"Тарифы"},{href:"#products",label:"Продукты"},{href:"#callback",label:"Контакты"}
67],de:[{href:"#service",label:"Erstellung von Live-Übertragungen"},{href:"#cloud",label:"Cloud-Videoüberwachung"},{href:"#monetization",label:"Monetarisierung"},{href:"#tariffs",label:"Tarife"},{href:"#products",label:"Produkte"},{href:"#callback",label:"Kontakt"}],pr:[{href:"#service",label:"Criação de transmissões ao vivo"},{href:"#cloud",label:"Videovigilância na nuvem"},{href:"#monetization",label:"Monetização"},{href:"#tariffs",label:"Planos"},{href:"#products",label:"Produtos"},{href:"#callback",label:"Contatos"}],fr:[{href:"#service",label:"Création de diffusions en direct"},{href:"#cloud",label:"Vidéosurveillance cloud"},{href:"#monetization",label:"Monétisation"},{href:"#tariffs",label:"Tarifs"},{href:"#products",label:"Produits"},{href:"#callback",label:"Contacts"}],es:[{href:"#service",label:"Creación de transmisiones en vivo"},{href:"#cloud",label:"Videovigilancia en la nube"},{href:"#monetization",label:"Monetización"},{href:"#tariffs",label:"Tarifas"},{href:"#products",label:"Productos"},{href:"#callback",label:"Contactos"}],it:[{href:"#service",label:"Creazione di trasmissioni in diretta"},{href:"#cloud",label:"Videosorveglianza cloud"},{href:"#monetization",label:"Monetizzazione"},{href:"#tariffs",label:"Tariffe"},{href:"#products",label:"Prodotti"},{href:"#callback",label:"Contatti"}],tr:[{href:"#service",label:"Canlı Yayın Oluşturma"},{href:"#cloud",label:"Bulut video gözetimi"},{href:"#monetization",label:"Gelir elde etme"},{href:"#tariffs",label:"Tarifeler"},{href:"#products",label:"Ürünler"},{href:"#callback",label:"İletişim"}],zh:[{href:"#service",label:"创建实时直播"},{href:"#cloud",label:"云视频监控"},{href:"#monetization",label:"变现"},{href:"#tariffs",label:"资费"},{href:"#products",label:"产品"},{href:"#callback",label:"联系我们"}]},dy={en:"Log In",ru:"Войти",de:"Anmelden",pr:"Entrar",fr:"Connexion",es:"Iniciar sesión",it:"Accedi",tr:"Giriş Yap",zh:"登录"},my={en:"My broadcasts",ru:"Мои трансляции",de:"Meine Übertragungen",pr:"Minhas transmissões",fr:"Mes diffusions",es:"Mis transmisiones",it:"Le mie trasmissioni",tr:"Yayınlarım",zh:"我的直播"},jh=[{code:"en",label:"English",flag:"en.svg"},{code:"ru",label:"Русский",flag:"ru.svg"},{code:"de",label:"Deutsch",flag:"germany.svg"},{code:"pr",label:"Português",flag:"portugal.svg"},{code:"fr",label:"Français",flag:"france.svg"},{code:"es",label:"Español",flag:"spain.svg"},{code:"it",label:"Italiano",flag:"italy.svg"},{code:"tr",label:"Türkçe",flag:"turkey.svg"},{code:"zh",label:"中文",flag:"china.svg"}],py=e=>{var t;return((t=jh.find(n=>n.code===e))==null?void 0:t.flag)??"en.svg"},hy=e=>`https://${cu(e)}/${rh(e)}/`,fy=()=>{const{lang:e,menuOpen:t,toggleMenu:n,closeMenu:a,openPopup:s}=V(),[i,l]=x.useState(!1),o=e==="ru"?".RU":".ME",u=Ft(h=>h.isAuthenticated),[c,p]=x.useState(!1);x.useEffect(()=>p(!0),[]);const m=c&&u;return r.jsx("header",{className:"header lock-padding",children:r.jsx("div",{className:"container",children:r.jsxs("div",{className:"header__inner",children:[r.jsx("div",{className:"header__left",children:r.jsxs("a",{className:"header__logo",href:"#hero",onClick:a,children:["RTSP",r.jsx("span",{children:o})]})}),r.jsx("div",{className:`header__wrap${t?" active":""}`,children:r.jsxs("nav",{className:"header__nav nav",children:[r.jsx("ul",{className:"nav__list list-reset",children:cy[e].map(h=>r.jsx("li",{children:r.jsx("a",{href:h.href,onClick:a,children:h.label})},h.href))}),r.jsxs("div",{className:"header__right",children:[r.jsxs("div",{className:"header__block",children:[r.jsx("button",{className:"header__lang btn-reset",onClick:()=>l(h=>!h),children:r.jsx("img",{loading:"lazy",src:`/landing/img/svg/${py(e)}`,width:24,height:24,alt:"Language"})}),r.jsx("div",{className:"header__dropdown",style:{maxHeight:i?400:0},children:r.jsx("ul",{className:"header__list list-reset",children:jh.filter(h=>h.code!==e).map(h=>r.jsx("li",{className:"header__item",children:r.jsxs("a",{className:"header__link",href:hy(h.code),onClick:()=>l(!1),children:[r.jsx("img",{loading:"lazy",src:`/landing/img/svg/${h.flag}`,width:24,height:24,alt:"Language"}),r.jsx("span",{children:h.label})]})},h.code))})})]}),r.jsx("div",{className:"header__box",children:m?r.jsx("a",{className:"header__login",href:uu(e,"/cameras"),children:r.jsx("span",{children:my[e]})}):r.jsx("button",{className:"header__login popup-link btn-reset",onClick:()=>
67s("popup-login"),children:r.jsx("span",{children:dy[e]})})})]})]})}),r.jsxs("button",{className:`burger btn-reset${t?" active":""}`,onClick:n,"aria-label":"Menu",children:[r.jsx("span",{}),r.jsx("span",{}),r.jsx("span",{}),r.jsx("span",{})]})]})})})},gy=async()=>{try{const e=await fetch(`${Ra.apiUrl}/site-stats`);if(!e.ok)return null;const n=await e.json()??{},a=u=>typeof u=="number"&&Number.isFinite(u)?u:null,s=a(n.users),i=a(n.cameras),l=a(n.views);if(s===null||i===null||l===null)return null;const o=typeof n.promo_video_url=="string"&&n.promo_video_url?n.promo_video_url:null;return{users:s,cameras:i,views:l,promoVideoUrl:o}}catch{return null}};let ts=null;const wh=()=>(ts||(ts=gy().then(e=>(e===null&&(ts=null),e))),ts),ys=e=>e==="ru"?"msk":"lon",ro=[{region:"Asia",items:[{value:"hkg",label:"Hong Kong"},{value:"in",label:"India / Bangalore"},{value:"jpn",label:"Japan / Tokyo"},{value:"sn",label:"Singapore"},{value:"tr",label:"Turkey / Istanbul"},{value:"nsk",label:"Россия / Новосибирск"},{value:"vld",label:"Россия / Владивосток"},{value:"krk",label:"Россия / Красноярск"},{value:"aa",label:"Қазақстан / Астана"}]},{region:"Australia",items:[{value:"sdn",label:"Australia / Sydney"}]},{region:"Europe",items:[{value:"frn",label:"Germany / Frankfurt"},{value:"itl",label:"Italy / Palermo"},{value:"lon",label:"UK / London"},{value:"ekb",label:"Россия / Екатеринбург"},{value:"msk",label:"Россия / Москва"},{value:"spb",label:"Россия / Санкт-Петербург"},{value:"kv",label:"Україна / Київ"}]},{region:"North America",items:[{value:"tor",label:"Canada / Toronto"},{value:"mia",label:"USA / Miami"},{value:"sfr",label:"USA / San Francisco"}]}],xy=ro.flatMap(e=>e.items),vy=e=>{var t;return((t=xy.find(n=>n.value===e))==null?void 0:t.label)??e};let rs=null;const Sh=()=>(rs||(rs=(async()=>{const e=await fetch(`${Ra.apiUrl}/regions`);if(!e.ok)throw new Error(`regions ${e.status}`);const t=await e.json(),n=t,a=Array.isArray(t)?t:(n==null?void 0:n.items)??(n==null?void 0:n.regions)??(n==null?void 0:n.data),s=[];if(Array.isArray(a)){for(const i of a)if(i&&typeof i=="object"){const l=i;s.push({code:String(l.code??""),current:String(l.current??"")})}}return s})().catch(e=>{throw rs=null,e})),rs),by=async()=>{const e=await Sh(),t=new Set(e.map(n=>n.code));return{available:t,working:new Set(t)}},Kc=async e=>{var n;return((n=(await Sh()).find(a=>a.code===e))==null?void 0:n.current)??""},yy={en:r.jsxs(r.Fragment,{children:["Choose ",r.jsx("br",{})," data center"]}),ru:r.jsxs(r.Fragment,{children:["Выберите ",r.jsx("br",{})," дата центр"]}),de:r.jsxs(r.Fragment,{children:["Rechenzentrum ",r.jsx("br",{})," auswählen"]}),pr:r.jsxs(r.Fragment,{children:["Escolher ",r.jsx("br",{})," data center"]}),fr:r.jsxs(r.Fragment,{children:["Choisir ",r.jsx("br",{})," un centre de données"]}),es:r.jsxs(r.Fragment,{children:["Elige ",r.jsx("br",{})," centro de datos"]}),it:r.jsxs(r.Fragment,{children:["Scegli ",r.jsx("br",{})," un data center"]}),tr:r.jsxs(r.Fragment,{children:["Veri merkezi ",r.jsx("br",{})," seçin"]}),zh:r.jsxs(r.Fragment,{children:["选择 ",r.jsx("br",{})," 数据中心"]})},jy={en:"Coming soon",ru:"Скоро",de:"Demnächst",pr:"Em breve",fr:"Bientôt disponible",es:"Próximamente",it:"Prossimamente",tr:"Yakında",zh:"即将上线"},_h=({value:e,onChange:t,name:n="location",inputClassName:a})=>{const{lang:s}=V(),[i,l]=x.useState(!1),[o,u]=x.useState(!1),c=x.useRef(null),p=x.useRef(null),[m,h]=x.useState(null);x.useEffect(()=>{let d=!0;return by().then(({available:g,working:y})=>{if(!d)return;const w=new Set(y);g.has(ys(s))&&w.add(ys(s)),s!=="ru"&&w.delete("msk"),h({available:g,working:w})}).catch(()=>d&&h({available:new Set(ro.flatMap(g=>g.items).map(g=>g.value)),working:new Set([e])})),()=>{d=!1}},[e,s]),x.useEffect(()=>{if(m&&m.working.size>0&&(!m.working.has(e)||!m.available.has(e))){const d=ys(s);t(m.working.has(d)&&m.available.has(d)?d:[...m.working][0])}},[m,e,s,t]),x.useEffect(()=>{const d=p.current;d&&(d.style.maxHeight=i?`${d.scrollHeight}px`:"")},[i,m,s]);const v=d=>(d!=="msk"||s==="ru")&&(!m||m.available.has(d)),j=d=>!m||m.working.has(d),b=()=>{l(d=>{const g=!d,y=c.current,w=p.current;if(g&&y&&w){const P=y.getBoundingClientRect();u(window.innerHeight-P.bottom<w.scrollHeight)}return g})},S=d=>{j(d)&&(t(d),l(!1))},f=`select__dropdown${i?" active":""}${o?" open-up":""}`;return r.jsxs("div",{className:"select",children:[r.jsx("input",{className:a??"select__input",type:"hidden",name:n,value:e,readOnly:!0}),r.jsx("button",{ref:c,className:`select__btn btn-reset${i?" active":""}`,type:"button",onClick:b,children:vy(e)}),r.jsx("div",{ref:p,className:f,children:r.jsxs("div",{className:"select__content",children:[r.jsxs("div",{className:"select__header",children:[r.jsx("h3",{className:"select__h3 h3 anim",children:yy[s]}),r.jsx("button",{className:"select__close btn-reset",type:"button",onClick:()=>l(!1),children:r.jsx("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M21 21L3 3M21.0001 3L3 21.0001",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),r.jsx("div",{className:"select__body simplebar",children:ro.map(d=>{const g=d.items.filter(y=>v(y.value));return g.length===0?null:r.jsxs("div",{className:"select__block",children:[r.jsx("h4",{className:"select__h4",children:d.region}),r.jsx("ul",{className:"select__list list-reset",children:g.map(y=>{const w=j(y.value);return r.jsx("li",{className:"select__item","data-value":y.value,onClick:()=>S(y.value),"aria-disabled":!w,title:w?void 0:jy[s],style:w?void 0:{opacity:.35,cursor:"not-allowed"},children:y.label},y.value)})})]},d.region)})})]})}),r.jsx("div",{className:`select__overlay${i?" active":""}`,onClick:()=>l(!1)})]})},Vt=e=>typeof e=="object"&&e!==null,vt=e=>{const t=typeof e=="string"?Number(e):e;return Number.isFinite(t)?t:0},wy=e=>{var a,s;const t=new URLSearchParams;e.page&&t.set("page",String(e.page)),e.limit&&t.set("limit",String(e.limit)),(a=e.search)!=null&&a.trim()&&t.set("search",e.search.trim()),e.lang&&t.set("lang",e.lang),(s=e.tag)!=null&&s.trim()&&t.set("tag",e.tag.trim()),e.hasLcContainer!=null&&t.set("hasLcContainer",String(e.hasLcContainer));const n=t.toString();return n?`?${n}`:""},ns=(()=>{try{return new URL(Ra.apiUrl).origin}catch{return""}})(),el=e=>e,Sy=e=>{if(!(typeof e!="string"||!e)){if(!ns)return e;if(e.startsWith("/"))return el(`${ns}${e}`);try{const t=new URL(e);return t.pathname.includes("/posters/")&&t.origin!==ns?el(`${ns}${t.pathname}${t.search}`):el(e)}catch{return e}}},ta=e=>({...e,poster:Sy(e.poster)}),_y=e=>{if(Array.isArray(e))return{items:e.map(ta),total:null,pages:null};if(typeof e=="object"&&e!==null){const t=e,n=t.items??t.data??t.cameras,a=t.total??t.count??t.totalCount,s=t.pages??t.totalPages;return{items:Array.isArray(n)?n.map(ta):[],total:typeof a=="number"?a:null,pages:typeof s=="number"?s:null}}return{items:[],total:null,pages:null}},Py=e=>(Array.isArray(e)?e:Vt(e)&&Array.isArray(e.tags)?e.tags:[]).filter(n=>typeof n=="string"&&n!==""),Gc={list:async e=>{const t=await H.get(`/cameras${wy(e)}`);return _y(t)},get:e=>H.get(`/cameras/${e}`).then(ta),create:e=>H.post("/cameras",e).then(ta),update:(e,t)=>
67H.patch(`/cameras/${e}`,t).then(ta),remove:e=>H.delete(`/cameras/${e}`),tags:async()=>Py(await H.get("/cameras/tags")),setTag:(e,t)=>H.post(`/cameras/${e}/tag`,{tag:t}),removeTag:e=>H.delete(`/cameras/${e}/tag`),setRtmp:(e,t)=>H.post(`/cameras/${e}/rtmp`,{enabled:t}),payAnnual:e=>H.post(`/cameras/${e}/annual-payment`,{}),quickAdd:e=>H.post("/cameras/quick-add",e)},Ph=e=>e instanceof qe&&(e.status===409||e.code==="email_taken"||e.code==="email_exists"||e.code==="user_exists"),Xs=e=>e instanceof qe&&(e.status===429||e.code==="too_many_requests"),ky={cam_name:"",rtsp_link:"",rtsp_link_hd:"",access:0,auto_play:0,play_time:600,volume:0,time_start:"00:00",time_end:"23:59",day_of_week:"1,2,3,4,5,6,0",location:"msk",traffic:0,ratio:0,logo:1,domen:"",h265:0,password_access:null,monitoring:null,domain_access:null,black_list_ip:null,hide_camera_name:!1,tag:""},kh={en:{submit:"Create broadcasting",submitting:"Creating…",fillAll:"Fill in all fields",invalidRtsp:"The link must start with rtsp://",invalidEmail:"Enter a valid email",success:"Almost there! To create your broadcast, confirm it via the link we've sent to your email — your account password is in the same message.",pending:"A previous request for this email is still being processed — check your inbox.",emailExists:"This email is already registered — ",emailExistsLogin:"log in",emailExistsTail:" to add a broadcast.",generic:"Something went wrong. Please try again.",tooManyRequests:"Too many requests. Please try again in {sec}s.",tooManyRequestsNoSec:"Too many requests. Please try again later.",newBroadcast:"New broadcast",test:"Test"},ru:{submit:"Cоздать трансляцию",submitting:"Создание…",fillAll:"Заполните все поля",invalidRtsp:"Ссылка должна начинаться с rtsp://",invalidEmail:"Введите корректный email",success:"Почти готово! Чтобы создать трансляцию, подтвердите её по ссылке из письма, которое мы отправили на вашу почту — там же пароль от личного кабинета.",pending:"Предыдущая заявка для этого email ещё обрабатывается — проверьте почту.",emailExists:"Этот email уже зарегистрирован — ",emailExistsLogin:"войдите",emailExistsTail:", чтобы добавить трансляцию.",generic:"Что-то пошло не так. Попробуйте ещё раз.",tooManyRequests:"Слишком много запросов. Попробуйте через {sec} сек.",tooManyRequestsNoSec:"Слишком много запросов. Попробуйте позже.",newBroadcast:"Новая трансляция",test:"Тест"},de:{submit:"Streaming erstellen",submitting:"Wird erstellt…",fillAll:"Füllen Sie alle Felder aus",invalidRtsp:"Der Link muss mit rtsp:// beginnen",invalidEmail:"Geben Sie eine gültige E-Mail-Adresse ein",success:"Fast fertig! Um Ihre Übertragung zu erstellen, bestätigen Sie sie über den Link in der E-Mail, die wir Ihnen gesendet haben — dort finden Sie auch das Passwort für Ihr Konto.",pending:"Eine frühere Anfrage für diese E-Mail wird noch bearbeitet — prüfen Sie Ihren Posteingang.",emailExists:"Diese E-Mail ist bereits registriert — ",emailExistsLogin:"melden Sie sich an",emailExistsTail:", um eine Übertragung hinzuzufügen.",generic:"Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut.",tooManyRequests:"Zu viele Anfragen. Bitte versuchen Sie es in {sec} Sek. erneut.",tooManyRequestsNoSec:"Zu viele Anfragen. Bitte versuchen Sie es später erneut.",newBroadcast:"Neue Übertragung",test:"Test"},pr:{submit:"Criar transmissão",submitting:"Criando…",fillAll:"Preencha todos os campos",invalidRtsp:"O link deve começar com rtsp://",invalidEmail:"Insira um e-mail válido",success:"Quase lá! Para criar sua transmissão, confirme-a pelo link do e-mail que enviamos — a senha da sua conta pessoal está na mesma mensagem.",pending:"Uma solicitação anterior para este e-mail ainda está sendo processada — verifique sua caixa de entrada.",emailExists:"Este e-mail já está cadastrado — ",emailExistsLogin:"entre",emailExistsTail:" para adicionar uma transmissão.",generic:"Algo deu errado. Tente novamente.",tooManyRequests:"Muitas solicitações. Tente novamente em {sec}s.",tooManyRequestsNoSec:"Muitas solicitações. Tente novamente mais tarde.",newBroadcast:"Nova transmissão",test:"Testar"},fr:{submit:"Créer une diffusion",submitting:"Création…",fillAll:"Remplissez tous les champs",invali
67dRtsp:"Le lien doit commencer par rtsp://",invalidEmail:"Saisissez une adresse e-mail valide",success:"Presque terminé ! Pour créer votre diffusion, confirmez-la via le lien envoyé par e-mail — le mot de passe de votre espace personnel s'y trouve aussi.",pending:"Une demande précédente pour cet e-mail est encore en cours de traitement — vérifiez votre boîte de réception.",emailExists:"Cet e-mail est déjà enregistré — ",emailExistsLogin:"connectez-vous",emailExistsTail:" pour ajouter une diffusion.",generic:"Une erreur s'est produite. Veuillez réessayer.",tooManyRequests:"Trop de requêtes. Réessayez dans {sec} s.",tooManyRequestsNoSec:"Trop de requêtes. Réessayez plus tard.",newBroadcast:"Nouvelle diffusion",test:"Tester"},es:{submit:"Crear transmisión",submitting:"Creando…",fillAll:"Rellena todos los campos",invalidRtsp:"El enlace debe empezar por rtsp://",invalidEmail:"Introduce un correo electrónico válido",success:"¡Casi listo! Para crear tu transmisión, confírmala con el enlace que te hemos enviado por correo — la contraseña de tu cuenta personal está en el mismo mensaje.",pending:"Una solicitud anterior para este correo aún se está procesando — revisa tu bandeja de entrada.",emailExists:"Este correo ya está registrado — ",emailExistsLogin:"inicia sesión",emailExistsTail:" para añadir una transmisión.",generic:"Algo salió mal. Inténtalo de nuevo.",tooManyRequests:"Demasiadas solicitudes. Inténtalo de nuevo en {sec} s.",tooManyRequestsNoSec:"Demasiadas solicitudes. Inténtalo de nuevo más tarde.",newBroadcast:"Nueva transmisión",test:"Probar"},it:{submit:"Crea trasmissione",submitting:"Creazione…",fillAll:"Compila tutti i campi",invalidRtsp:"Il link deve iniziare con rtsp://",invalidEmail:"Inserisci un'email valida",success:"Ci siamo quasi! Per creare la tua trasmissione, confermala tramite il link inviato via email — nella stessa email trovi anche la password del tuo account.",pending:"Una richiesta precedente per questa email è ancora in elaborazione — controlla la tua casella di posta.",emailExists:"Questa email è già registrata — ",emailExistsLogin:"accedi",emailExistsTail:" per aggiungere una trasmissione.",generic:"Qualcosa è andato storto. Riprova.",tooManyRequests:"Troppe richieste. Riprova tra {sec} s.",tooManyRequestsNoSec:"Troppe richieste. Riprova più tardi.",newBroadcast:"Nuova trasmissione",test:"Prova"},tr:{submit:"Yayın Oluştur",submitting:"Oluşturuluyor…",fillAll:"Tüm alanları doldurun",invalidRtsp:"Bağlantı rtsp:// ile başlamalıdır",invalidEmail:"Geçerli bir e-posta adresi girin",success:"Neredeyse tamam! Yayınınızı oluşturmak için, e-posta ile gönderdiğimiz bağlantıdan onaylayın — hesap şifreniz de aynı e-postada.",pending:"Bu e-posta için önceki bir talep hâlâ işleniyor — gelen kutunuzu kontrol edin.",emailExists:"Bu e-posta zaten kayıtlı — ",emailExistsLogin:"giriş yapın",emailExistsTail:" ve bir yayın ekleyin.",generic:"Bir şeyler ters gitti. Lütfen tekrar deneyin.",tooManyRequests:"Çok fazla istek. Lütfen {sec} sn. sonra tekrar deneyin.",tooManyRequestsNoSec:"Çok fazla istek. Lütfen daha sonra tekrar deneyin.",newBroadcast:"Yeni yayın",test:"Test"},zh:{submit:"创建直播",submitting:"创建中…",fillAll:"请填写所有字段",invalidRtsp:"链接必须以 rtsp:// 开头",invalidEmail:"请输入有效的电子邮箱",success:"就快完成了!要创建直播,请通过我们发送到你邮箱的链接进行确认 — 账户密码也在同一封邮件中。",pending:"该邮箱之前的请求仍在处理中 — 请查收你的邮箱。",emailExists:"该邮箱已注册 — ",emailExistsLogin:"登录",emailExistsTail:" 以添加直播。",generic:"出了点问题,请重试。",tooManyRequests:"请求过于频繁,请在 {sec} 秒后重试。",tooManyRequestsNoSec:"请求过于频繁,请稍后重试。",newBroadcast:"新直播",test:"测试"}},Yc=e=>/^rtsps?:\/\/[^\s/]+/i.test(e.trim()),Ny=e=>/^\S+@\S+\.\S+$/.test(e),Qc=(e,t)=>t.retryAfterSec&&t.retryAfterSec>0?e.tooManyRequests.replace("{sec}",String(t.retryAfterSec)):e.tooManyRequestsNoSec,Nh=()=>{const{lang:e,openCheck:t}=V(),n=kh[e],[a,s]=x.useState(()=>ys(e)),[i,l]=x.useState(""),[o,u]=x.useState(""),[c,p]=x.useState(!1),[m,h]=x.useState(null);return{m:n,dc:a,setDc:s,rtspLink:i,setRtspLink:l,email:o,setEmail:u,submitting:c,notice:m,handleSubmit:async b=>{b.preventDefault(),h(null);const S=i.trim();if(!S){h({kind:"error",text:n.fillAll});return}if(!Yc(S)){h({kind:"error",text:n.invalidRtsp});return}if(Ft.getState().isAuthenticated){p(!0);try{const d=await Gc.create({...ky,cam_name:n.newBroadcast,rtsp_link:S,location:a});window.location.assign(uu(e,`/cameras/${d.uniq_id}/edit`));return}catch(d){h({kind:"error",text:Xs(d)?Qc(n,d):d instanceof qe&&d.code==="validation_error"?d.getValidationMessages()[0]??n.generic:n.generic}),p(!1)}return}const f=o.trim();if(!f){h({kind:"error",text:n.fillAll});return}if(!Ny(f)){h({kind:"error",text:n.invalidEmail});return}p(!0);try{const d=await Gc.quickAdd({email:f,location:a,rtsp_link:S,lng:e});h({kind:"success",text:d!=null&&d.pending?n.pending:n.success});try{const g=await Kc(a);g&&t(S,g)}catch{}}catch(d){Ph(d)?h({kind:"error",text:n.emailExists,login:!0}):Xs(d)?h({kind:"error",text:Qc(n,d)}):d instanceof qe&&d.code==="validation_error"?h({kind:"error",text:d.getValidationMessages()[0]??n.generic}):h({kind:"error",text:n.generic})}finally{p(!1)}},handleTest:async()=>{h(null);const b=i.trim();if(!b){h({kind:"error",text:n.fillAll});return}if(!Yc(b)){h({kind:"error",text:n.invalidRtsp});return}try{const S=await Kc(a);S?t(b,S):h({kind:"error",text:n.generic})}catch{h({kind:"error",text:n.generic})}}}},Th=({notice:e})=>{const{lang:t,openPopup:n}=V(),a=kh[t];return e?e.kind==="error"?r.jsxs("p",{className:"form__error",children:[e.text,e.login&&r.jsxs(r.Fragment,{children:[r.jsx("a",{className:"popup-link",onClick:()=>
67n("popup-login"),children:a.emailExistsLogin}),a.emailExistsTail]})]}):r.jsx("p",{className:"form__error",style:{color:"var(--success)"},children:e.text}):null},Ty={en:{h1:r.jsxs(r.Fragment,{children:["Stream Your IP Camera ",r.jsx("br",{})," to Your Website in One Click"]}),rtspLabel:"YOUR RTSP LINK (H.264/H.265) ",emailLabel:"ENTER YOUR EMAIL",dcLabel:"Nearest data center"},ru:{h1:r.jsxs(r.Fragment,{children:["Трансляция с IP-камеры ",r.jsx("br",{})," на сайт в один клик"]}),rtspLabel:"ВАША RTSP-ССЫЛКА (H.264/H.265) ",emailLabel:"ВВЕДИТЕ ВАШ EMAIL",dcLabel:"Ближайший дата центр"},de:{h1:r.jsxs(r.Fragment,{children:["Service zur Erstellung von ",r.jsx("br",{})," RTSP-Streams auf einer Website mit nur einem Klick"]}),rtspLabel:"IHRE RTSP-URL (H.264/H.265) ",emailLabel:"GEBEN SIE IHRE E-MAIL EIN",dcLabel:"Nächstgelegenes Rechenzentrum"},pr:{h1:r.jsxs(r.Fragment,{children:["Serviço para criar ",r.jsx("br",{})," transmissão RTSP em seu site com um clique"]}),rtspLabel:"SEU LINK RTSP (H.264/H.265) ",emailLabel:"INSIRA SEU E-MAIL",dcLabel:"Data center mais próximo"},fr:{h1:r.jsxs(r.Fragment,{children:["Service de création ",r.jsx("br",{})," d’un flux RTSP sur un site en un clic"]}),rtspLabel:"VOTRE LIEN RTSP (H.264/H.265) ",emailLabel:"ENTREZ VOTRE EMAIL",dcLabel:"Centre de données le plus proche"},es:{h1:r.jsxs(r.Fragment,{children:["Servicio para crear ",r.jsx("br",{})," transmisión RTSP en tu sitio con un solo clic"]}),rtspLabel:"TU ENLACE RTSP (H.264/H.265) ",emailLabel:"INGRESA TU CORREO ELECTRÓNICO",dcLabel:"Centro de datos más cercano"},it:{h1:r.jsxs(r.Fragment,{children:["Servizio per creare ",r.jsx("br",{})," trasmissioni RTSP sul tuo sito con un clic"]}),rtspLabel:"IL TUO LINK RTSP (H.264/H.265) ",emailLabel:"INSERISCI LA TUA EMAIL",dcLabel:"Data center più vicino"},tr:{h1:r.jsxs(r.Fragment,{children:["Tek tıklamayla ",r.jsx("br",{})," sitenize RTSP yayını oluşturma hizmeti"]}),rtspLabel:"RTSP LİNKİNİZ (H.264/H.265) ",emailLabel:"E-POSTA ADRESİNİZİ GİRİN",dcLabel:"En yakın veri merkezi"},zh:{h1:r.jsxs(r.Fragment,{children:["一键在网站上 ",r.jsx("br",{})," 创建RTSP直播的服务"]}),rtspLabel:"输入RTSP链接(H.264/H.265) ",emailLabel:"输入电子邮箱",dcLabel:"最近的数据中心"}},Ey=()=>r.jsx("a",{href:"#faq-what_my_rtsp_link",style:{display:"inline-block",verticalAlign:"middle"},children:r.jsxs("svg",{width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",style:{display:"inline-block",verticalAlign:"middle"},children:[r.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8 14C11.3137 14 14 11.3137 14 8C14 4.68629 11.3137 2 8 2C4.68629 2 2 4.68629 2 8C2 11.3137 4.68629 14 8 14ZM15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8Z"}),r.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.13895 4.17127C7.41326 4.05765 7.70593 4 7.99998 4C8.14666 4 8.29369 4.01434 8.43894 4.04323C8.87539 4.13005 9.2763 4.34434 9.59097 4.65901C9.90564 4.97368 10.1199 5.37459 10.2067 5.81105C10.2936 6.24751 10.249 6.6999 10.0787 7.11104C9.90841 7.52217 9.62003 7.87357 9.25002 8.12081C9.02062 8.27408 8.76624 8.38306 8.49998 8.44374L8.5 8.5C8.5 8.77614 8.27614 9 8 9C7.72386 9 7.5 8.77614 7.5 8.5L7.49998 8C7.49998 7.86739 7.55266 7.74022 7.64643 7.64645C7.7402 7.55268 7.86737 7.5 7.99998 7.5C8.24721 7.5 8.48888 7.42669 8.69445 7.28934C8.90001 7.15199 9.06022 6.95676 9.15483 6.72836C9.24944 6.49995 9.2742 6.24861 9.22596 6.00614C9.17773 5.76366 9.05868 5.54093 8.88387 5.36612C8.70905 5.1913 8.48632 5.07225 8.24385 5.02402C8.16314 5.00797 8.08147 5 7.99999 5C7.83661 5 7.67402 5.03203 7.52163 5.09515C7.29322 5.18976 7.098 5.34998 6.96065 5.55554C6.82329 5.7611 6.74998 6.00277 6.74998 6.25C6.74998 6.52614 6.52613 6.75 6.24998 6.75C5.97384 6.75 5.74998 6.52614 5.74998 6.25C5.74998 5.80499 5.88194 5.36998 6.12918 4.99997C6.37641 4.62996 6.72781 4.34157 7.13895 4.17127Z"}),r.jsx("path",{d:"M8 12C8.41421 12 8.75 11.6642 8.75 11.25C8.75 10.8358 8.41421 10.5 8 10.5C7.58579 10.5 7.25 10.8358 7.25 11.25C7.25 11.6642 7.58579 12 8 12Z"})]})}),zy=()=>r.jsx("svg",{width:"26",height:"26",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:r.jsx("path",{d:"M5 12.5l4.5 4.5L19 6.5"})}),Ry=()=>{const{lang:e}=V(),t=Ty[e],{m:n,dc:a,setDc:s,rtspLink:i,setRtspLink:l,email:o,setEmail:u,submitting:c,notice:p,handleSubmit:m,handleTest:h}=Nh(),[v,j]=x.useState(!1),[b,S]=x.useState(!1),[f,d]=x.useState(!1);x.useEffect(()=>{const P=window.matchMedia("(min-width: 1280px)"),T=()=>j(P.matches);return T(),P.addEventListener("change",T),()=>P.removeEventListener("change",T)},[]);const g=v&&(b||f),[y,w]=x.useState(null);return x.useEffect(()=>{let P=!0;return wh().then(T=>{P&&(T!=null&&T.promoVideoUrl)&&w(T.promoVideoUrl)}),()=>{P=!1}},[]),r.jsxs("section",{className:"hero section",id:"hero",children:[r.jsx("div",{className:"container",children:r.jsxs("div",{className:"hero__inner",children:[r.jsx("h1",{className:"hero__h1 anim",children:t.h1}),r.jsxs("form",{className:`hero__form form${g?" hero__form--focus":""}`,onSubmit:m,children:[r.jsxs("div",{className:"form__groups",children:[r.jsxs("div",{className:"form__group",children:[r.jsxs("label",{className:"form__label",children:[t.rtspLabel,r.jsx(Ey,{})]}),r.jsxs("div",{style:{display:"flex",gap:8,alignItems:"stretch"},children:[r.jsx("input",{className:"form__input input-reset input-link",style:{flex:1,minWidth:0},type:"text",name:"rtspLink",placeholder:"rtsp://admin:[email protected]:554/main",value:i,onChange:P=>l(P.currentTarget.value),onMouseEnter:()=>S(!0),onMouseLeave:()=>S(!1),onFocus:()=>d(!0),onBlur:()=>d(!1)}),r.jsx("button",{className:"btn btn-reset",type:"button",style:{flex:"0 0 auto",width:"auto",padding:"0 22px",whiteSpace:"nowrap",border:"1px solid var(--accent)",background:"transparent",color:"var(--accent)"},onClick:h,children:n.test})]})]}),r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:t.emailLabel}),r.jsx("input",{className:"form__input input-reset input-email",type:"email",name:"rtspEmail",placeholder:"[email protected]",value:o,onChange:P=>u(P.currentTarget.value),autoComplete:"email"})]}),r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:t.dcLabel}),r.jsx(_h,{value:a,onChange:s,inputClassName:"select__input location-data-center-value"})]})]}),r.jsx("button",{className:"form__btn btn btn--red btn-reset",id:"createTranslation",type:"submit",disabled:c,title:n.submit,"aria-label":n.submit,children:g&&!c?r.jsx(zy,{}):r.jsx("span",{className:"form__btn-text",children:c?n.submitting:n.submit})}),p&&r.jsx("div",{style:{gridColumn:"1 / -1"},children:r.jsx(Th,{notice:p})})]})]})}
67),y&&r.jsx("video",{className:"hero__video",playsInline:!0,autoPlay:!0,muted:!0,loop:!0,children:r.jsx("source",{src:y,type:"video/mp4"})},y)]})},le=({webp:e,fallback:t,width:n,height:a,alt:s="Image",className:i,imgClassName:l="img",style:o,imgStyle:u})=>r.jsxs("picture",{className:i,style:o,children:[r.jsx("source",{srcSet:e,type:"image/webp"}),r.jsx("img",{className:l,src:t??e,width:n,height:a,alt:s,loading:"lazy",style:u})]}),Cy={en:{suptitle:"Service",h2:r.jsxs(r.Fragment,{children:["How we create online ",r.jsx("br",{})," streaming on the webpage"]}),item1:{h3:r.jsxs(r.Fragment,{children:["Your IP camera ",r.jsx("br",{})," (DVR, NVR)"]}),text:r.jsxs(r.Fragment,{children:["We obtain the video stream from your IP camera or recorder via the RTSP protocol. A direct RTSP camera connection requires a public IP address and port mapping setup.",r.jsx("br",{}),"No public IP? Use"," ",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"}),", the"," ",r.jsx("a",{href:"streaming-agent.html",children:"software agent"})," or"," ",r.jsx("a",{href:"#products",children:"MyVMS Bridge"}),"."]})},item2:{h3:r.jsx(r.Fragment,{children:"RTSP to HLS and WebRTC Media Server"}),text:r.jsxs(r.Fragment,{children:["We convert the ",r.jsx("a",{href:"what-is-rtsp.html",children:"RTSP stream"})," from your IP camera into a format viewable in browsers and on mobile devices (Android, iOS). We provide a ready-to-use HTML5 player with HTTPS support for embedding the stream on your website. The player supports HLS (M3U8) and ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC"})," for low-latency viewing. If needed, you can enable a"," ",r.jsx("a",{href:"cloud-video-surveillance.html",children:"cloud video archive"})," with continuous or motion-triggered recording — even for just one day."]})},item3:{h3:r.jsx(r.Fragment,{children:"RTSP Restreaming"}),text:r.jsx(r.Fragment,{children:"We receive a single RTSP stream from your IP camera and relay it to all viewers through our media servers. No matter how many viewers are watching, the camera sends only one video stream — the RTSP.ME infrastructure handles the scaling. We support up to 1 million simultaneous viewers."})}},ru:{suptitle:"Услуга",h2:r.jsxs(r.Fragment,{children:["Как мы создаем онлайн ",r.jsx("br",{})," транcляцию на сайте"]}),item1:{h3:r.jsxs(r.Fragment,{children:["Ваша IP-камера ",r.jsx("br",{})," (DVR, NVR)"]}),text:r.jsxs(r.Fragment,{children:["Получаем видеопоток с вашей IP-камеры или видеорегистратора через RTSP-протокол. Для прямого подключения камеры по RTSP потребуется"," ",r.jsx("a",{href:"#faq-what_my_static_ip",children:"публичный IP-адрес"})," и"," ",r.jsx("a",{href:"#faq-how_set_pot_mapping",children:"настройка Port Mapping"}),".",r.jsx("br",{}),"Нет публичного IP?   Используйте"," ",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"}),","," ",r.jsx("a",{href:"streaming-agent.html",children:"программный агент"})," или"," ",r.jsx("a",{href:"#products",children:"Линия Bridge POE"}),"."]})},item2:{h3:r.jsx(r.Fragment,{children:"Медиасервер RTSP → HLS и WebRTC"}),text:r.jsxs(r.Fragment,{children:["Преобразуем ",r.jsx("a",{href:"what-is-rtsp.html",children:"RTSP-поток"})," вашей IP-камеры в формат для просмотра в браузерах и на мобильных устройствах (Android, iOS). Предоставляем готовый HTML5-плеер с поддержкой HTTPS для размещения трансляции на вашем сайте. Плеер поддерживает HLS (M3U8) и ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC"})," для просмотра с низкой задержкой. При необходимости можно подключить"," ",r.jsx("a",{href:"cloud-video-surveillance.html",children:"облачный видеоархив"})," с непрерывной записью или записью по детекции — даже всего на один день."]})},item3:{h3:r.jsx(r.Fragment,{children:"RTSP-ретранслятор"}),text:r.jsx(r.Fragment,{children:"Получаем один RTSP-поток с вашей IP-камеры и ретранслируем его всем зрителям через наши медиасерверы. Независимо от количества зрителей камера передает только один видеопоток, а масштабирование трансляции берет на себя инфраструктура RTSP.RU. Поддерживаем до 1 млн одновременных зрителей."})}},de:{suptitle:"Service",h2:r.jsxs(r.Fragment,{children:["Wie wir Online- ",r.jsx("br",{})," Streaming auf einer Webseite erstellen"]}
67),item1:{h3:r.jsxs(r.Fragment,{children:["Ihre IP-Kamera ",r.jsx("br",{})," (DVR, NVR)"]}),text:r.jsxs(r.Fragment,{children:["Wir erhalten den Videostream Ihrer IP-Kamera oder Ihres Rekorders über das RTSP-Protokoll. Für die direkte Kameraanbindung per RTSP benötigen Sie eine öffentliche IP-Adresse und ein konfiguriertes Port-Mapping.",r.jsx("br",{}),"Keine öffentliche IP? Nutzen Sie"," ",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"}),", den"," ",r.jsx("a",{href:"streaming-agent.html",children:"Software-Agenten"})," oder"," ",r.jsx("a",{href:"#products",children:"MyVMS Bridge"}),"."]})},item2:{h3:r.jsx(r.Fragment,{children:"Medienserver für RTSP zu HLS und WebRTC"}),text:r.jsxs(r.Fragment,{children:["Wir wandeln den ",r.jsx("a",{href:"what-is-rtsp.html",children:"RTSP-Stream"})," Ihrer IP-Kamera in ein Format um, das in Browsern und auf Mobilgeräten (Android, iOS) abgespielt werden kann. Wir stellen einen fertigen HTML5-Player mit HTTPS-Unterstützung zur Einbettung der Übertragung auf Ihrer Website bereit. Der Player unterstützt HLS (M3U8) sowie"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC"})," für die Wiedergabe mit geringer Latenz. Bei Bedarf können Sie ein"," ",r.jsx("a",{href:"cloud-video-surveillance.html",children:"Cloud-Videoarchiv"})," mit kontinuierlicher oder detektionsbasierter Aufzeichnung zuschalten — sogar für nur einen Tag."]})},item3:{h3:r.jsx(r.Fragment,{children:"RTSP-Weiterleitung"}),text:r.jsx(r.Fragment,{children:"Wir empfangen einen einzigen RTSP-Stream von Ihrer IP-Kamera und verteilen ihn über unsere Medienserver an alle Zuschauer. Unabhängig von der Zuschauerzahl sendet die Kamera nur einen Videostream — die Skalierung übernimmt die RTSP.ME-Infrastruktur. Wir unterstützen bis zu 1 Million gleichzeitige Zuschauer."})}},pr:{suptitle:"Serviço",h2:r.jsxs(r.Fragment,{children:["Como criamos a transmissão ",r.jsx("br",{})," ao vivo na página web"]}),item1:{h3:r.jsxs(r.Fragment,{children:["Sua câmera IP ",r.jsx("br",{})," (DVR, NVR)"]}),text:r.jsxs(r.Fragment,{children:["Obtemos o fluxo de vídeo da sua câmera IP ou gravador via protocolo RTSP. Para conectar a câmera diretamente via RTSP, é necessário um endereço IP público e a configuração de redirecionamento de portas.",r.jsx("br",{}),"Não tem IP público? Use o"," ",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"}),", o"," ",r.jsx("a",{href:"streaming-agent.html",children:"agente de software"})," ou o"," ",r.jsx("a",{href:"#products",children:"MyVMS Bridge"}),"."]})},item2:{h3:r.jsx(r.Fragment,{children:"Servidor de mídia de RTSP para HLS e WebRTC"}),text:r.jsxs(r.Fragment,{children:["Convertemos o ",r.jsx("a",{href:"what-is-rtsp.html",children:"fluxo RTSP"})," da sua câmera IP em um formato para visualização em navegadores e dispositivos móveis (Android, iOS). Fornecemos um player HTML5 pronto, com suporte a HTTPS, para incorporar a transmissão em seu site. O player suporta HLS (M3U8) e"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC"})," para visualização com baixa latência. Se necessário, é possível ativar um"," ",r.jsx("a",{href:"cloud-video-surveillance.html",children:"arquivo de vídeo na nuvem"})," ","com gravação contínua ou por detecção de movimento — até mesmo por apenas um dia."]})},item3:{h3:r.jsx(r.Fragment,{children:"Retransmissão RTSP"}),text:r.jsx(r.Fragment,{children:"Recebemos um único fluxo RTSP da sua câmera IP e o retransmitimos a todos os espectadores através dos nossos servidores de mídia. Independentemente do número de espectadores, a câmera envia apenas um fluxo de vídeo — a escalabilidade da transmissão fica por conta da infraestrutura do RTSP.ME. Suportamos até 1 milhão de espectadores simultâneos."})}},fr:{suptitle:"Service",h2:r.jsxs(r.Fragment,{children:["Comment nous créons la diffusion ",r.jsx("br",{})," en direct sur la page web"]}),item1:{h3:r.jsxs(r.Fragment,{children:["Votre caméra IP ",r.jsx("br",{})," (DVR, NVR)"]}),text:r.jsxs(r.Fragment,{children:["Nous obtenons le flux vidéo de votre caméra IP ou de votre enregistreur via le protocole RTSP. La connexion directe de la caméra en RTSP nécessite une adresse IP publique et la configuration du transfert de port.",r.jsx("br",{}),"Pas d’IP publique ? Utilisez"," ",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"}),", l’",r.jsx("a",{href:"streaming-agent.html",children:"agent logiciel"})," ou"," ",r.jsx("a",{href:"#products",children:"MyVMS Bridge"}),"."]})},item2:{h3:r.jsx(r.Fragment,{children:"Serveur multimédia de RTSP vers HLS et WebRTC"}
67),text:r.jsxs(r.Fragment,{children:["Nous convertissons le ",r.jsx("a",{href:"what-is-rtsp.html",children:"flux RTSP"})," de votre caméra IP en un format lisible dans les navigateurs et sur les appareils mobiles (Android, iOS). Nous fournissons un lecteur HTML5 prêt à l’emploi avec prise en charge HTTPS pour intégrer la diffusion sur votre site. Le lecteur prend en charge HLS (M3U8) et"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC"})," pour une lecture à faible latence. Si nécessaire, vous pouvez activer une"," ",r.jsx("a",{href:"cloud-video-surveillance.html",children:"archive vidéo cloud"})," avec enregistrement continu ou sur détection — même pour un seul jour."]})},item3:{h3:r.jsx(r.Fragment,{children:"Retransmission RTSP"}),text:r.jsx(r.Fragment,{children:"Nous recevons un seul flux RTSP de votre caméra IP et le retransmettons à tous les spectateurs via nos serveurs multimédias. Quel que soit le nombre de spectateurs, la caméra n’envoie qu’un seul flux vidéo — la montée en charge est assurée par l’infrastructure RTSP.ME. Nous prenons en charge jusqu’à 1 million de spectateurs simultanés."})}},es:{suptitle:"Servicio",h2:r.jsxs(r.Fragment,{children:["Cómo creamos la ",r.jsx("br",{})," transmisión en vivo en la página web"]}),item1:{h3:r.jsxs(r.Fragment,{children:["Tu cámara IP ",r.jsx("br",{})," (DVR, NVR)"]}),text:r.jsxs(r.Fragment,{children:["Obtenemos la señal de video de tu cámara IP o grabadora a través del protocolo RTSP. Para conectar la cámara directamente por RTSP se necesita una dirección IP pública y la configuración del mapeo de puertos.",r.jsx("br",{}),"¿No tienes IP pública? Usa"," ",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"}),", el"," ",r.jsx("a",{href:"streaming-agent.html",children:"agente de software"})," o"," ",r.jsx("a",{href:"#products",children:"MyVMS Bridge"}),"."]})},item2:{h3:r.jsx(r.Fragment,{children:"Servidor multimedia de RTSP a HLS y WebRTC"}),text:r.jsxs(r.Fragment,{children:["Convertimos el ",r.jsx("a",{href:"what-is-rtsp.html",children:"flujo RTSP"})," de tu cámara IP a un formato visible en navegadores y dispositivos móviles (Android, iOS). Proporcionamos un reproductor HTML5 listo para usar, con soporte HTTPS, para insertar la transmisión en tu sitio web. El reproductor admite HLS (M3U8) y"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC"})," para una reproducción de baja latencia. Si lo necesitas, puedes activar un"," ",r.jsx("a",{href:"cloud-video-surveillance.html",children:"archivo de video en la nube"})," ","con grabación continua o por detección — incluso por un solo día."]})},item3:{h3:r.jsx(r.Fragment,{children:"Retransmisión RTSP"}),text:r.jsx(r.Fragment,{children:"Recibimos un único flujo RTSP de tu cámara IP y lo retransmitimos a todos los espectadores a través de nuestros servidores multimedia. Sin importar el número de espectadores, la cámara envía un solo flujo de video: del escalado de la transmisión se encarga la infraestructura de RTSP.ME. Admitimos hasta 1 millón de espectadores simultáneos."})}},it:{suptitle:"Servizio",h2:r.jsxs(r.Fragment,{children:["Come creiamo la ",r.jsx("br",{})," trasmissione in diretta sulla pagina web"]}),item1:{h3:r.jsxs(r.Fragment,{children:["La tua telecamera IP ",r.jsx("br",{})," (DVR, NVR)"]}),text:r.jsxs(r.Fragment,{children:["Acquisiamo lo stream video dalla tua telecamera IP o dal tuo registratore tramite il protocollo RTSP. Per collegare la telecamera direttamente via RTSP servono un indirizzo IP pubblico e la configurazione del port forwarding.",r.jsx("br",{}),"Non hai un IP pubblico? Usa"," ",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"}),", l’",r.jsx("a",{href:"streaming-agent.html",children:"agente software"})," o"," ",r.jsx("a",{href:"#products",children:"MyVMS Bridge"}),"."]})},item2:{h3:r.jsx(r.Fragment,{children:"Server multimediale da RTSP a HLS e WebRTC"}),text:r.jsxs(r.Fragment,{children:["Convertiamo il ",r.jsx("a",{href:"what-is-rtsp.html",children:"flusso RTSP"})," della tua telecamera IP in un formato visualizzabile nei browser e sui dispositivi mobili (Android, iOS). Forniamo un lettore HTML5 pronto all’uso con supporto HTTPS per inserire la trasmissione sul tuo sito. Il lettore supporta HLS (M3U8) e"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC"})," per la riproduzione a bassa latenza. Se necessario, puoi attivare un"," ",r.jsx("a",{href:"cloud-video-surveillance.html",children:"archivio video cloud"})," con registrazione continua o su rilevamento — anche per un solo giorno."]})},item3:{h3:r.jsx(r.Fragment,{children:"Ritrasmissione RTSP"}),text:r.jsx(r.Fragment,{children:"Riceviamo un unico flusso RTSP dalla tua telecamera IP e lo ritrasmettiamo a tutti gli spettatori tramite i nostri server multimediali. Indipendentemente dal numero di spettatori, la telecamera invia un solo flusso video: alla scalabilità della trasmissione pensa l’infrastruttura di RTSP.ME. Supportiamo fino a 1 milione di spettatori simultanei."})}},tr:{suptitle:"Hizmet",h2:r.jsxs(r.Fragment,{children:["Web sayfasında ",r.jsx("br",{})," canlı yayını nasıl oluşturuyoruz"]}),item1:{h3:r.jsxs(r.Fragment,{children:["IP Kameranız ",r.jsx("br",{})," (DVR, NVR)"]}),text:r.jsxs(r.Fragment,{children:["IP kameranızın veya kayıt cihazınızın RTSP protokolü üzerinden sağladığı video akışını alıyoruz. Kameranın RTSP ile doğrudan bağlanabilmesi için genel (public) bir IP adresi ve port yönlendirme ayarı gerekir.",r.jsx("br",{}),"Genel IP adresiniz yok mu?"," ",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"}),","," ",r.jsx("a",{href:"streaming-agent.html",children:"yazılım ajanı"})," veya"," ",r.jsx("a",{href:"#products",children:"MyVMS Bridge"})," kullanın."]})},item2:{h3:r.jsx(r.Fragment,{children:"RTSP’den HLS ve WebRTC’ye Medya Sunucusu"}),text:r.jsxs(r.Fragment,{children:["IP kameranızın ",r.jsx("a",{href:"what-is-rtsp.html",children:"RTSP akışını"})," ","tarayıcılarda ve mobil cihazlarda (Android, iOS) izlenebilecek bir formata dönüştürüyoruz. Yayını sitenize yerleştirmeniz için HTTPS destekli, kullanıma hazır bir HTML5 oynatıcı sunuyoruz. Oynatıcı, HLS (M3U8) ve düşük gecikmeli izleme için"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC"})," desteği sunar. Gerekirse, sürekli veya hareket algılamalı kayıt yapan"," ",r.jsx("a",{href:"cloud-video-surveillance.html",children:"bulut video arşivini"})," ","etkinleştirebilirsiniz — hatta yalnızca bir günlüğüne."]})},item3:{h3:r.jsx(r.Fragment,{children:"RTSP Yeniden Yayını"}),text:r.jsx(r.Fragment,{children:"IP kameranızdan tek bir RTSP akışı alır ve bunu medya sunucularımız üzerinden tüm izleyicilere iletiriz. İzleyici sayısı ne olursa olsun, kamera yalnızca tek bir video akışı gönderir — yayının ölçeklendirilmesini RTSP.ME altyapısı üstlenir. Aynı anda 1 milyona kadar izleyiciyi destekliyoruz."})}},zh:{suptitle:"服务",h2:r.jsxs(r.Fragment,{children:["我们如何在网页上 ",r.jsx("br",{})," 创建在线直播"]}),item1:{h3:r.jsxs(r.Fragment,{children:["你的IP摄像机 ",r.jsx("br",{})," (DVR, NVR)"]}),text:r.jsxs(r.Fragment,{children:["我们通过RTSP协议获取你的IP摄像机或录像机(DVR、NVR)的视频流。通过RTSP直接连接摄像机需要公网IP地址并设置端口映射。",r.jsx("br",{}),"没有公网IP?请使用",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"}),"、",r.jsx("a",{href:"streaming-agent.html",children:"软件代理"}),"或",r.jsx("a",{href:"#products",children:"MyVMS Bridge"}),"。"]})},item2:{h3:r.jsx(r.Fragment,{children:"RTSP转HLS和WebRTC媒体服务器"}),text:r.jsxs(r.Fragment,{children:["我们将IP摄像机的",r.jsx("a",{href:"what-is-rtsp.html",children:"RTSP流"}),"转换为可在浏览器和移动设备(Android、iOS)上观看的格式。我们提供支持HTTPS的现成HTML5播放器,可将直播嵌入你的网站。播放器支持HLS(M3U8),并支持通过",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC"}),"实现低延迟观看。如有需要,可以启用",r.jsx("a",{href:"cloud-video-surveillance.html",children:"云视频存档"}),",支持连续录制或检测触发录制——甚至只开通一天。"]})},item3:{h3:r.jsx(r.Fragment,{children:"RTSP转播"}),text:r.jsx(r.Fragment,{children:"我们从IP摄像机接收单路RTSP视频流,并通过我们的媒体服务器转发给所有观众。无论观众数量多少,摄像机只传输一路视频流,直播的扩展由RTSP.ME基础设施承担。支持高达1,000,000名观众同时观看。"})}}},Iy=()=>{const{lang:e}=V(),t=Cy[e];return r.jsx("section",{className:"service section",id:"service",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"service__top top",children:[r.jsx("span",{className:"service__suptitle suptitle",children:t.suptitle}),r.jsx("h2",{className:"service__h2 h2 anim",children:t.h2})]}),r.jsxs("ul",{className:"service__list list-reset",children:[r.jsxs("li",{className:"service__item",children:[r.jsx("img",{className:"service__icon",loading:"lazy",src:"/landing/img/main/camera.svg",width:36,height:36,alt:"Icon"}),r.jsx("div",{className:"service__grid",style:{gridTemplateColumns:"1fr"},children:r.jsx("div",{className:"service__img anim-scale",children:r.jsx(le,{webp:"/landing/img/service/01.webp",fallback:"/landing/img/service/01.png",width:185,height:96})})}),r.jsxs("div",{className:"service__content",children:[r.jsx("h3",{className:"service__h3 h3 anim",children:t.item1.h3}),r.jsx("p",{className:"service__text text",children:t.item1.text})]})]}),r.jsxs("li",{className:"service__item",children:[r.jsx("img",{className:"service__icon",loading:"lazy",src:"/landing/img/main/settings.svg",width:36,height:36,alt:"Icon"}),r.jsxs("div",{className:"service__grid",style:{gridTemplateColumns:"1fr 1fr"}
67,children:[r.jsx("div",{className:"service__img anim-scale",children:r.jsx(le,{webp:"/landing/img/service/02.webp",fallback:"/landing/img/service/02.png",width:395,height:200})}),r.jsx("div",{className:"service__img anim-scale",children:r.jsx(le,{webp:"/landing/img/service/03.webp",fallback:"/landing/img/service/03.png",width:185,height:96})}),r.jsx("div",{className:"service__img anim-scale",children:r.jsx(le,{webp:"/landing/img/service/04.webp",fallback:"/landing/img/service/04.png",width:185,height:96})}),r.jsx("div",{className:"service__img anim-scale",children:r.jsx(le,{webp:"/landing/img/service/05.webp",fallback:"/landing/img/service/05.png",width:185,height:96})})]}),r.jsxs("div",{className:"service__content",children:[r.jsx("h3",{className:"service__h3 h3 anim",children:t.item2.h3}),r.jsx("p",{className:"service__text text",children:t.item2.text})]})]}),r.jsxs("li",{className:"service__item",children:[r.jsx("img",{className:"service__icon",loading:"lazy",src:"/landing/img/main/play.svg",width:36,height:36,alt:"Icon"}),r.jsxs("div",{className:"service__grid",style:{gridTemplateColumns:"1fr 1fr"},children:[r.jsx("div",{className:"service__img anim-scale",children:r.jsx(le,{webp:"/landing/img/service/01.webp",fallback:"/landing/img/service/01.png",width:185,height:96})}),r.jsx("div",{className:"service__img anim-scale",children:r.jsx(le,{webp:"/landing/img/service/01.webp",fallback:"/landing/img/service/01.png",width:185,height:96})}),r.jsx("div",{className:"service__img anim-scale"}),r.jsx("div",{className:"service__img anim-scale",children:r.jsx(le,{webp:"/landing/img/service/01.webp",fallback:"/landing/img/service/01.png",width:185,height:96})})]}),r.jsxs("div",{className:"service__content",children:[r.jsx("h3",{className:"service__h3 h3 anim",children:t.item3.h3}),r.jsx("p",{className:"service__text text",children:t.item3.text})]})]})]})]})})},Fy={en:{suptitle:"Statistics",h2:"Over {n} IP cameras stream on websites worldwide with RTSP.ME",users:"Users",cameras:"IP Cameras",views:"Views"},ru:{suptitle:"Статистика",h2:"Более {n} IP-камер транслируются на сайтах по всему миру с помощью RTSP.RU",users:"Пользователей",cameras:"IP-камер",views:"Показов"},de:{suptitle:"Statistiken",h2:"Über {n} IP-Kameras streamen mit RTSP.ME auf Websites weltweit",users:"Nutzer",cameras:"IP-Kameras",views:"Aufrufe"},pr:{suptitle:"Estatísticas",h2:"Mais de {n} câmeras IP transmitem em sites de todo o mundo com o RTSP.ME",users:"Usuários",cameras:"Câmeras IP",views:"Visualizações"},fr:{suptitle:"Statistiques",h2:"Plus de {n} caméras IP diffusent sur des sites web du monde entier avec RTSP.ME",users:"Utilisateurs",cameras:"Caméras IP",views:"Vues"},es:{suptitle:"Estadísticas",h2:"Más de {n}
67 cámaras IP transmiten en sitios web de todo el mundo con RTSP.ME",users:"Usuarios",cameras:"Cámaras IP",views:"Visualizaciones"},it:{suptitle:"Statistiche",h2:"Oltre {n} telecamere IP trasmettono su siti web di tutto il mondo con RTSP.ME",users:"Utenti",cameras:"Telecamere IP",views:"Visualizzazioni"},tr:{suptitle:"İstatistikler",h2:"{n}'den fazla IP kamera, RTSP.ME ile dünya çapındaki web sitelerinde yayın yapıyor",users:"Kullanıcılar",cameras:"IP Kameralar",views:"Görüntülemeler"},zh:{suptitle:"统计",h2:"超过 {n} 台IP摄像机通过 RTSP.ME 在全球网站上直播",users:"用户",cameras:"IP摄像机",views:"观看次数"}},Ly={users:115603,cameras:354095,views:1541615514,promoVideoUrl:null},My={en:"en-US",ru:"ru-RU",de:"de-DE",pr:"pt-BR",fr:"fr-FR",es:"es-ES",it:"it-IT",tr:"tr-TR",zh:"zh-CN"},Ay=e=>{x.useEffect(()=>{const t=Array.from(document.querySelectorAll("[data-count]"));if(t.length===0)return;const n=s=>{const i=Number(s.dataset.count??"0"),l=performance.now(),o=2e3,u=c=>{const p=Math.min(1,(c-l)/o);s.textContent=Math.floor(p*i).toLocaleString("ru-RU"),p<1&&requestAnimationFrame(u)};requestAnimationFrame(u)},a=new IntersectionObserver(s=>{for(const i of s)i.isIntersecting&&(n(i.target),a.unobserve(i.target))},{threshold:.4});return t.forEach(s=>a.observe(s)),()=>a.disconnect()},[e])},qy=()=>{const{lang:e}=V(),t=Fy[e],[n,a]=x.useState(Ly);x.useEffect(()=>{let o=!1;return wh().then(u=>{!o&&u&&a(u)}),()=>{o=!0}},[]),Ay(n);const s=Math.floor(n.cameras/1e3)*1e3,i=t.h2.replace("{n}",s.toLocaleString("ru-RU")),l=new Date().toLocaleDateString(My[e]);return r.jsx("section",{className:"statistics section",id:"statistics",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"statistics__top top",children:[r.jsxs("span",{className:"statistics__suptitle suptitle",children:[t.suptitle," ",l]}),r.jsx("h2",{className:"statistics__h2 h2 anim",children:i})]}),r.jsxs("ul",{className:"statistics__list list-reset",children:[r.jsxs("li",{className:"statistics__item",children:[r.jsx("h3",{className:"statistics__h3 h2","data-count":n.users,children:n.users.toLocaleString("ru-RU")}),r.jsx("p",{className:"statistics__text text",children:t.users})]}),r.jsxs("li",{className:"statistics__item",children:[r.jsx("h3",{className:"statistics__h3 h2","data-count":n.cameras,children:n.cameras.toLocaleString("ru-RU")}),r.jsx("p",{className:"statistics__text text",children:t.cameras})]}),r.jsxs("li",{className:"statistics__item",children:[r.jsx("h3",{className:"statistics__h3 h2","data-count":n.views,children:n.views.toLocaleString("ru-RU")}),r.jsx("p",{className:"statistics__text text",children:t.views})]})]})]})})},Dy=e=>{const t=Vt(e)?e:{},n=Vt(t.input)?t.input:{},a=Vt(t.compute)?t.compute:{},s=Vt(t.storage)?t.storage:{},i=Vt(t.total)?t.total:{},l=n.storageMode==="continuous"?"continuous":"detection";return{compute:{daily:vt(a.daily)},storage:{dailyGb:vt(s.dailyGb),totalGb:vt(s.totalGb),dailyCost:vt(s.dailyCost),totalCost:vt(s.totalCost)},total:{perDay:vt(i.perDay),perMonth:vt(i.perMonth)},currency:typeof t.currency=="string"?t.currency:"",storageMode:l,retentionDays:vt(n.retentionDays),cameras:vt(n.count5)}},Oy=e=>{if(Array.isArray(e))return{items:e,total:null};if(Vt(e)){const t=e.items??e.data??e.containers,n=Vt(e.pagination)?e.pagination:void 0,a=e.total??e.count??(n==null?void 0:n.total);return{items:Array.isArray(t)?t:[],total:typeof a=="number"?a:null}}return{items:[],total:null}},Hy={list:async e=>{var a,s;const t=new URLSearchParams,n=e.limit??50;return t.set("limit",String(n)),t.set("offset",String(((e.page??1)-1)*n)),(a=e.search)!=null&&a.trim()&&t.set("search",e.search.trim()),(s=e.fatherDevices)!=null&&s.trim()&&t.set("father_devices",e.fatherDevices.trim()),Oy(await H.get(`/lc-containers?${t.toString()}`))},create:e=>H.post("/lc-containers/create-on-server",e),update:(e,t)=>H.put(`/lc-containers/${e}/update-on-server`,t),remove:e=>H.delete(`/lc-containers/${e}/delete-on-server`),setPublicAccess:(e,t)=>H.patch(`/lc-containers/${e}`,{ezhd:t?1:0}),pricing:async e=>{const t=new URLSearchParams({m5:String(e.cameras),mode:e.mode,days:String(e.days),lang:e.lang});return Dy(await H.get(`/lc-containers/pricing?${t.toString()}`))}},Uy=(e,t,n)=>{const a=ah(n),s=t.toUpperCase();try{return new Intl.NumberFormat(a,{style:"currency",currency:s}).format(e)}
67catch{return`${e.toLocaleString(a)} ${s}`}},Vy=[3,7,14,30,90,180],By={en:{suptitle:"Cloud",title:"Cloud Video Surveillance",subtitle:"Record RTSP streams from IP cameras to the cloud, store video archives, and view recordings online in an HTML5 player on any device.",lead:"Record your streams to the cloud and estimate the cost in seconds.",cameras:"Number of cameras",mode:"Recording mode",detection:"On detection",continuous:"Continuous",retention:"Storage period",cost:"Cost",perMonth:"Per month",perDay:"Per day",storage:"Storage",gb:"GB",days:e=>`${e} days`},ru:{suptitle:"Облако",title:"Облачное видеонаблюдение",subtitle:"Запись RTSP-потока с IP-камер в облако, хранение видеоархива и просмотр записей через интернет в HTML5-плеере на любом устройстве.",lead:"Записывайте трансляции в облако и оцените стоимость за секунды.",cameras:"Количество камер",mode:"Режим записи",detection:"По детекции",continuous:"Непрерывно",retention:"Срок хранения",cost:"Стоимость",perMonth:"В месяц",perDay:"В день",storage:"Хранилище",gb:"ГБ",days:e=>`${e} дн.`},de:{suptitle:"Cloud",title:"Cloud-Videoüberwachung",subtitle:"Zeichnen Sie RTSP-Streams von IP-Kameras in der Cloud auf, speichern Sie Videoarchive und sehen Sie Aufnahmen online in einem HTML5-Player auf jedem Gerät an.",lead:"Zeichnen Sie Ihre Streams in der Cloud auf und berechnen Sie die Kosten in Sekunden.",cameras:"Anzahl der Kameras",mode:"Aufnahmemodus",detection:"Bei Bewegung",continuous:"Kontinuierlich",retention:"Speicherdauer",cost:"Kosten",perMonth:"Pro Monat",perDay:"Pro Tag",storage:"Speicher",gb:"GB",days:e=>`${e} Tage`},pr:{suptitle:"Nuvem",title:"Videovigilância em nuvem",subtitle:"Grave streams RTSP de câmeras IP na nuvem, armazene arquivos de vídeo e veja as gravações online em um player HTML5 em qualquer dispositivo.",lead:"Grave suas transmissões na nuvem e calcule o custo em segundos.",cameras:"Número de câmeras",mode:"Modo de gravação",detection:"Por detecção",continuous:"Contínuo",retention:"Período de armazenamento",cost:"Custo",perMonth:"Por mês",perDay:"Por dia",storage:"Armazenamento",gb:"GB",days:e=>`${e} dias`},fr:{suptitle:"Cloud",title:"Vidéosurveillance dans le cloud",subtitle:"Enregistrez les flux RTSP de caméras IP dans le cloud, stockez les archives vidéo et visionnez les enregistrements en ligne dans un lecteur HTML5 sur n’importe quel appareil.",lead:"Enregistrez vos flux dans le cloud et estimez le coût en quelques secondes.",cameras:"Nombre de caméras",mode:"Mode d’enregistrement",detection:"Sur détection",continuous:"En continu",retention:"Durée de conservation",cost:"Coût",perMonth:"Par mois",perDay:"Par jour",storage:"Stockage",gb:"GB",days:e=>`${e} jours`},es:{suptitle:"Nube",title:"Videovigilancia en la nube",subtitle:"Graba transmisiones RTSP de cámaras IP en la nube, almacena archivos de vídeo y mira las grabaciones online en un reproductor HTML5 desde cualquier dispositivo.",lead:"Graba tus transmisiones en la nube y calcula el costo en segundos.",cameras:"Número de cámaras",mode:"Modo de grabación",detection:"Por detección",continuous:"Continuo",retention:"Período de almacenamiento",cost:"Costo",perMonth:"Por mes",perDay:"Por día",storage:"Almacenamiento",gb:"GB",days:e=>`${e} días`},it:{suptitle:"Cloud",title:"Videosorveglianza nel cloud",subtitle:"Registra i flussi RTSP delle telecamere IP nel cloud, archivia i video e guarda le registrazioni online con un lettore HTML5 su qualsiasi dispositivo.",lead:"Registra le tue trasmissioni nel cloud e calcola il costo in pochi secondi.",cameras:"Numero di telecamere",mode:"Modalità di registrazione",detection:"Al rilevamento",continuous:"Continuo",retention:"Periodo di conservazione",cost:"Costo",perMonth:"Al mese",perDay:"Al giorno",storage:"Archiviazione",gb:"GB",days:e=>`${e} giorni`},tr:{suptitle:"Bulut",title:"Bulut Video Gözetimi",subtitle:"IP kameralardan gelen RTSP akışlarını buluta kaydedin, video arşivlerini saklayın ve kayıtları herhangi bir cihazda HTML5 oynatıcıyla çevrimiçi izleyin.",lead:"Yayınlarınızı buluta kaydedin ve maliyeti saniyeler içinde hesaplayın.",cameras:"Kamera sayısı",mode:"Kayıt modu",detection:"Algılamada",continuous:"Sürekli",retention:"Saklama süresi",cost:"Maliyet",perMonth:"Aylık",perDay:"Günlük",storage:"Depolama",gb:"GB",days:e=>`${e} gün`},zh:{suptitle:"云端",title:"云视频监控",subtitle:"将 IP 摄像机的 RTSP 视频流录制到云端,存储视频档案,并通过任意设备上的 HTML5 播放器在线观看录像。",lead:"将您的直播录制到云端,几秒钟内估算费用。",cameras:"摄像机数量",mode:"录制模式",detection:"检测时",continuous:"连续",retention:"存储期限",cost:"费用",perMonth:"每月",perDay:"每天",storage:"存储",gb:"GB",days:e=>`${e} 天`}},Zc={ru:"https://rtsp.ru/embed/KPbwo57M/",other:"https://rtsp.me/embed/WKZb7jUsUw5T9N4f/"},no="#f93822",Wy="#f2f2f0",Eh="#e2e2df",js="#8b8b8c",Xc=({label:e,children:t,containerStyle:n})=>r.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[r.jsx("span",{style:{fontFamily:"var(--second-family)",fontWeight:500,fontSize:14,color:js},children:e}),r.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:8,...n},children:t})]}),tl=({active:e,onClick:t,children:n,style:a})=>r.jsx("button",{type:"button",onClick:t,style:{appearance:"none",cursor:"pointer",border:`1px solid ${e?no:Eh}`,background:e?no:"#fff",color:e?"#fff":"var(--black)",borderRadius:999,padding:"9px 16px",fontFamily:"var(--second-family)",fontWeight:500,fontSize:15,lineHeight:1,transition:"all .15s ease-in-out",...a},children:n}),$y=()=>{const{lang:e}=V(),t=By[e],[n,a]=x.useState("detection"),[s,i]=x.useState(3),[l,o]=x.useState(null),[u,c]=x.useState(!1);x.useEffect(()=>{let v=!0;c(!1);const j=window.setTimeout(()=>{Hy.pricing({cameras:1,mode:n,days:s,lang:e}).then(b=>v&&o(b)).catch(()=>v&&c(!0))},250);return()=>{v=!1,window.clearTimeout(j)}},[n,s,e]);const p=(l==null?void 0:l.currency)||(e==="ru"?"RUB":"EUR"),m=x.useMemo(()=>v=>Uy(v,p,e),[p,e]),h=e==="ru"?Zc.ru:Zc.other;return r.jsx("section",{className:"section",id:"cloud",style:{background:"#fff"},children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"top",children:[r.jsx("span",{className:"suptitle",children:t.suptitle}),r.jsx("h2",{className:"h2 anim",children:t.title}),r.jsx("h3",{className:"h3 anim",style:{gridColumn:"1 / -1",width:"100%",maxWidth:"none"},children:t.subtitle})]}),r.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:24,alignItems:"stretch"},children:[r.jsxs("div",{style:{flex:"1 1 380px",minWidth:300,background:Wy,borderRadius:16,padding:24,display:"flex",flexDirection:"column",gap:22},children:[r.jsx("p",{className:"text",style:{margin:0,color:"var(--black)",fontSize:16},children:t.lead}),r.jsxs(Xc,{label:t.mode,children:[r.jsx(tl,{active:n==="detection",onClick:()=>a("detection"),children:t.detection}),r.jsx(tl,{active:n==="continuous",onClick:()=>a("continuous"),children:t.continuous})]}),r.jsx(Xc,{label:t.retention,containerStyle:{gap:"8px 0",marginLeft:-12,marginRight:-12},children:Vy.map(v=>r.jsx(tl,{active:s===v,onClick:()=>i(v),style:{marginLeft:6,marginRight:6,paddingLeft:12,paddingRight:12},children:t.days(v)},v))}),r.jsxs("div",{style:{borderTop:`1px solid ${Eh}`,paddingTop:18,display:"flex",flexDirection:"column",gap:10},children:[r.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline"},children:[r.jsx("span",{style:{color:js,fontSize:15},children:t.perDay}),r.jsx("span",{style:{fontWeight:700,fontSize:30,color:no},children:u?"—":l?m(l.total.perDay):"…"})]}),r.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline"},children:[r.jsx("span",{style:{color:js,fontSize:14},children:t.perMonth}),r.jsx("span",{style:{fontWeight:600,fontSize:16},children:u?"—":l?m(l.total.perMonth):"…"})]}),l&&!u&&r.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",color:js,fontSize:13},children:[r.jsx("span",{children:`${t.storage} · ${Gv(l.storage.totalGb,e)} ${t.gb}`}),r.jsx("span",{children:m(l.storage.totalCost)})]})]})]}),r.jsx("div",{style:{flex:"1 1 480px",minWidth:300,minHeight:280,display:"flex",borderRadius:16,overflow:"hidden",background:"#000"},children:r.jsx("iframe",{src:h,title:"cloud-demo",allowFullScreen:!0,style:{flex:1,width:"100%",height:"100%",border:0}})})]})]})})},Ky={en:{suptitle:"Benefits",h2:r.jsxs(r.Fragment,{children:["Why choose ",r.jsx("br",{})," our streaming service?"]}),items:[{h3:r.jsxs(r.Fragment,{children:["Ease ",r.jsx("br",{})," of use"]}),text:r.jsx(r.Fragment,{children:"A user-friendly and intuitive interface allows you to set up streams without any experience or technical knowledge. Simply insert the RTSP link on the streaming creation page and get the HTML5 video player code."})},{h3:r.jsxs(r.Fragment,{children:["Low-latency ",r.jsx("br",{})," streaming"]}),text:r.jsxs(r.Fragment,{children:["Our player supports WebRTC for low-latency video viewing. Watch what is happening and communicate with your viewers in near real time. Learn more about the"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"difference between WebRTC and HLS"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Security ",r.jsx("br",{})," and privacy"]}),text:r.jsx(r.Fragment,{children:"We prioritize the security of your data. Our service reliably protects user information and ensures the confidentiality of their materials. Real IP addresses of your RTSP links and authorization data from your IP cameras or recorders remain hidden from unauthorized access."})},{h3:r.jsx(r.Fragment,{children:"Broadcast working hours"}),text:r.jsx(r.Fragment,{children:"You can set up a schedule for each broadcast in the service settings, specifying the days of the week and times when it will be available to viewers."})},{h3:r.jsxs(r.Fragment,{children:["Flexible pricing ",r.jsx("br",{})," policy"]}),text:r.jsxs(r.Fragment,{children:["For your convenience, we ",r.jsx("b",{children:"offer post-payment"}),": you can stream the camera throughout the month and receive an invoice afterward. Up to 100 views per month are free. The cost for additional cameras starts from 5 Euro per month."]})},{h3:r.jsxs(r.Fragment,{children:["Recording ",r.jsx("br",{})," and storage"]}),text:r.jsx(r.Fragment,{children:"Our service provides the ability to record streams, allowing you to save videos to an archive for later viewing. We offer archive storage in a reliable data center for up to 360 days."})},{h3:r.jsxs(r.Fragment,{children:["Audio stream ",r.jsx("br",{})," support"]}),text:r.jsx(r.Fragment,{children:"You can transmit audio along with the video stream from your camera for free. Audio support can be enabled in the streaming settings."})},{h3:r.jsxs(r.Fragment,{children:["Stream copy ",r.jsx("br",{})," protection"]}),text:r.jsxs(r.Fragment,{children:["We offer several free ways to protect your stream. Restrict the player to your own domain so the embed code will not work on other websites, set a password (PIN) for viewing, or generate unique per-viewer links with a small PHP snippet. Learn more about"," ",r.jsx("a",{href:"how-to-protect-stream-from-copying.html",children:"stream protection"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Our ",r.jsx("br",{})," data centers"]}
67),text:r.jsx(r.Fragment,{children:"Our data centers are located in North and South America, Europe, Asia, and Australia, ensuring the fastest possible video content delivery to your users. Outbound channels with bandwidth of up to 10 Tb/s are available."})},{h3:r.jsxs(r.Fragment,{children:["Embeddable HTML5 ",r.jsx("br",{})," video player"]}),text:r.jsx(r.Fragment,{children:"On all plans, without exception, you can embed the HTML5 player into your website at no extra cost. Many competitors charge for this feature — with us it is always included. Viewers can watch on computers, tablets, and smartphones."})},{h3:r.jsxs(r.Fragment,{children:["Free camera ",r.jsx("br",{})," availability monitoring"]}),text:r.jsx(r.Fragment,{children:"We check your camera availability every 10 minutes at no extra cost. If the camera goes offline, we notify the owner by email, so a prolonged outage will not go unnoticed. A green or red indicator next to each camera in your dashboard shows its current status at a glance."})},{h3:r.jsxs(r.Fragment,{children:["Pricing without ",r.jsx("br",{})," hidden limits"]}),text:r.jsxs(r.Fragment,{children:[r.jsx("b",{children:"Your price does not depend on viewing duration, bandwidth usage, camera resolution, or the number of viewers."})," Unlike many competitors, we do not limit your audience or charge extra when viewers watch longer or your camera streams in higher quality."]})},{h3:r.jsxs(r.Fragment,{children:["Interactive ",r.jsx("br",{})," live chat"]}),text:r.jsx(r.Fragment,{children:"Enable chat in the player settings and communicate with your viewers in real time. Every message is published only after your approval, giving you full control over the conversation."})},{h3:r.jsxs(r.Fragment,{children:["Any resolution ",r.jsx("br",{})," and bitrate"]}),text:r.jsxs(r.Fragment,{children:["We do not limit camera resolution or bitrate. You can use any settings, but remember that many viewers use mobile internet. For a stable stream, we recommend ",r.jsx("b",{children:"1280×720 at 1 Mbps"})," or"," ",r.jsx("b",{children:"1920×1080 at 3 Mbps"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Stream ",r.jsx("br",{})," monetization"]}),text:r.jsxs(r.Fragment,{children:["We offer two ways to monetize your streams. Add an active donation link to the player and receive ",r.jsx("b",{children:"100% of every payment"}),", or sell access to a stream by setting the price and the number of days it remains available after payment."]})}]},ru:{suptitle:"Преимущества",h2:r.jsxs(r.Fragment,{children:["Почему выбирают именно ",r.jsx("br",{}),"наш сервис видеостриминга?"]}),items:[{h3:r.jsxs(r.Fragment,{children:["простота ",r.jsx("br",{})," использования"]}),text:r.jsx(r.Fragment,{children:"Удобный и понятный интерфейс позволяет настроить трансляции без опыта и технических знаний. Просто вставьте RTSP-ссылку на странице создания трансляции и получите HTML5-код видеоплеера."})},{h3:r.jsxs(r.Fragment,{children:["Трансляции ",r.jsx("br",{})," с низкой задержкой"]}),text:r.jsxs(r.Fragment,{children:["Наш плеер поддерживает WebRTC для просмотра видео с низкой задержкой. Наблюдайте за происходящим и общайтесь со зрителями практически в реальном времени. Подробнее о"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"разнице между WebRTC и HLS"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Безопасность ",r.jsx("br",{})," и конфиденциальность"]}),text:r.jsx(r.Fragment,{children:"Мы уделяем особое внимание безопасности ваших данных. Наш сервис надежно защищает информацию пользователей и гарантирует конфиденциальность их материалов. Реальные IP-адреса ваших RTSP-ссылок, а также данные авторизации с ваших IP-камер или регистраторов остаются скрытыми от посторонних."})},{h3:r.jsx(r.Fragment,{children:"Время работы трансляции"}),text:r.jsx(r.Fragment,{children:"В настройках сервиса вы можете задать расписание для каждой трансляции, выбрав дни недели и время, в которые она будет доступна для пользователей."})},{h3:r.jsxs(r.Fragment,{children:["Гибкая ценовая ",r.jsx("br",{})," политика"]}),text:r.jsxs(r.Fragment,{children:["Для вашего удобства мы ",r.jsx("b",{children:" предлагаем пост оплату "}),": вы можете вести трансляцию камеры в течение месяца, а расчет получить в следующем. До 100 показов в месяц — бесплатно. Цена за трансляцию камер начинается от 360 ₽ в месяц."," "]})},{h3:r.jsxs(r.Fragment,{children:["Запись ",r.jsx("br",{})," и хранение"]}),text:r.jsx(r.Fragment,{children:"Наш сервис предоставляет возможность записи трансляций, позволяя сохранять видео в архив для последующего просмотра. Мы предлагаем хранение архива в надежном дата-центре сроком до 360 дней."})},{h3:r.jsxs(r.Fragment,{children:["Поддержка ",r.jsx("br",{}),"аудио потока"]}),text:r.jsx(r.Fragment,{children:"Вы можете бесплатно передавать звук вместе с видеопотоком с вашей камеры. Включить поддержку звука можно в настройках трансляции."})},{h3:r.jsxs(r.Fragment,{children:["Защита ",r.jsx("br",{}),"трансляций от копирования"]}),text:r.jsxs(r.Fragment,{children:["Мы бесплатно предлагаем несколько способов защиты трансляций. Разрешите работу плеера только на вашем домене — и скопированный код не будет воспроизводиться на чужих сайтах, установите пароль (PIN-код) для доступа к трансляции или генерируйте уникальные ссылки для каждого зрителя с помощью небольшого PHP-кода. Подробнее о"," ",r.jsx("a",{href:"how-to-protect-stream-from-copying.html",children:"защите трансляции"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Наши дата-центры ",r.jsx("br",{})," в России и СНГ"]}),text:r.jsx(r.Fragment,{children:"Наши дата-центры расположены в России и странах СНГ, включая Москву, Санкт-Петербург, Екатеринбург, Новосибирск, Красноярск, Владивосток, Краснодар и Астану, что гарантирует максимально быструю передачу видеоконтента вашим пользователям. Доступны исходящие каналы с пропускной способностью до 10 Тбит/с."})},{h3:r.jsxs(r.Fragment,{children:["Встраиваемый HTML5 ",r.jsx("br",{})," видеоплеер"]}
67),text:r.jsx(r.Fragment,{children:"На всех тарифах без исключения вы можете встроить HTML5-плеер на свой сайт без каких-либо доплат. У многих конкурентов это платная функция — у нас она всегда включена. Видео можно смотреть на компьютерах, планшетах и смартфонах."})},{h3:r.jsxs(r.Fragment,{children:["Бесплатный мониторинг ",r.jsx("br",{})," доступности камеры"]}),text:r.jsx(r.Fragment,{children:"Мы бесплатно проверяем доступность вашей камеры каждые 10 минут. Если камера перестает отвечать, отправляем владельцу уведомление по email, поэтому длительное отключение не останется незамеченным. В личном кабинете рядом с каждой камерой отображается зеленый или красный индикатор, чтобы ее статус был понятен сразу."})},{h3:r.jsxs(r.Fragment,{children:["Тариф без скрытых ",r.jsx("br",{})," ограничений"]}),text:r.jsxs(r.Fragment,{children:[r.jsx("b",{children:"Стоимость не зависит от длительности просмотра, объема трафика, разрешения камеры или количества зрителей."})," В отличие от многих конкурентов, мы не ограничиваем аудиторию и не берем дополнительную плату за долгий просмотр или высокое качество видео."]})},{h3:r.jsxs(r.Fragment,{children:["Интерактивный ",r.jsx("br",{})," онлайн-чат"]}),text:r.jsx(r.Fragment,{children:"Включите чат в настройках плеера и общайтесь со зрителями в режиме реального времени. Каждое сообщение публикуется только после вашей проверки и одобрения, поэтому вы полностью контролируете общение."})},{h3:r.jsxs(r.Fragment,{children:["Любое разрешение ",r.jsx("br",{})," и битрейт"]}),text:r.jsxs(r.Fragment,{children:["Мы не ограничиваем разрешение камеры и битрейт: вы можете использовать любые настройки. Но многие зрители подключаются через мобильный интернет, поэтому для стабильной трансляции рекомендуем"," ",r.jsx("b",{children:"1280×720 при 1 Мбит/с"}),", а для Full HD —"," ",r.jsx("b",{children:"1920×1080 при 3 Мбит/с"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Монетизация ",r.jsx("br",{})," трансляций"]}),text:r.jsxs(r.Fragment,{children:["Мы предлагаем два способа монетизации. Добавьте в плеер активную ссылку для донатов и получайте ",r.jsx("b",{children:"100% каждого платежа"})," или продавайте доступ к трансляции, указав в настройках его стоимость и количество дней, в течение которых он будет открыт после оплаты."]})}]},de:{suptitle:"Vorteile",h2:r.jsxs(r.Fragment,{children:["Warum sollten Sie ",r.jsx("br",{})," unseren Streaming-Service wählen?"]}),items:[{h3:r.jsxs(r.Fragment,{children:["Einfache ",r.jsx("br",{})," Bedienung"]}),text:r.jsx(r.Fragment,{children:"Eine benutzerfreundliche und intuitive Oberfläche ermöglicht das Einrichten von Streams ohne Vorkenntnisse oder technisches Know-how. Sie müssen lediglich den RTSP-Link auf der Seite zur Stream-Erstellung einfügen und erhalten sofort den HTML5-Videoplayer-Code."})},{h3:r.jsxs(r.Fragment,{children:["Streaming ",r.jsx("br",{})," mit geringer Latenz"]}),text:r.jsxs(r.Fragment,{children:["Unser Player unterstützt WebRTC für die Videowiedergabe mit geringer Latenz. Verfolgen Sie das Geschehen und kommunizieren Sie mit Ihren Zuschauern nahezu in Echtzeit. Mehr über den"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"Unterschied zwischen WebRTC und HLS"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Sicherheit ",r.jsx("br",{})," und Datenschutz"]}),text:r.jsx(r.Fragment,{children:"Wir legen großen Wert auf die Sicherheit Ihrer Daten. Unser Service schützt Benutzerinformationen zuverlässig und garantiert die Vertraulichkeit Ihrer Inhalte. Die realen IP-Adressen Ihrer RTSP-Links und die Zugangsdaten zu Ihren IP-Kameras oder Rekordern bleiben vor unbefugtem Zugriff geschützt."})},{h3:r.jsx(r.Fragment,{children:"Streaming-Zeitplan"}),text:r.jsx(r.Fragment,{children:"In den Service-Einstellungen können Sie einen Zeitplan für jede Übertragung festlegen, in dem Sie die Wochentage und Zeiten bestimmen, zu denen der Stream für Zuschauer verfügbar ist."})},{h3:r.jsxs(r.Fragment,{children:["Flexible ",r.jsx("br",{})," Preisgestaltung"]}),text:r.jsxs(r.Fragment,{children:["Zu Ihrer Bequemlichkeit bieten wir"," ",r.jsx("b",{children:"eine Zahlung auf Rechnung"})," an: Sie können den gesamten Monat über streamen und erhalten im Anschluss eine Rechnung. Bis zu 100 Aufrufe pro Monat sind kostenlos. Die Kosten für zusätzliche Kameras beginnen bei 5 Euro pro Monat."]})},{h3:r.jsxs(r.Fragment,{children:["Aufnahme ",r.jsx("br",{})," und Speicherung"]}),text:r.jsx(r.Fragment,{children:"Unser Service ermöglicht die Aufzeichnung von Streams, sodass Sie Ihre Videos in einem Archiv für die spätere Wiedergabe speichern können. Wir bieten eine Archivspeicherung in einem zuverlässigen Rechenzentrum für bis zu 360 Tage."})},{h3:r.jsxs(r.Fragment,{children:["Unterstützung ",r.jsx("br",{})," für Audiostream"]}),text:r.jsx(r.Fragment,{children:"Sie können den Audiostream Ihrer Kamera kostenlos zusammen mit dem Videostream übertragen. Die Audio-Unterstützung können Sie in den Übertragungseinstellungen aktivieren."})},{h3:r.jsxs(r.Fragment,{children:["Kopierschutz ",r.jsx("br",{})," für Streams"]}
67),text:r.jsxs(r.Fragment,{children:["Wir bieten mehrere kostenlose Möglichkeiten zum Schutz Ihrer Streams. Beschränken Sie den Player auf Ihre eigene Domain, damit der kopierte Einbettungscode auf fremden Websites nicht funktioniert, legen Sie ein Passwort (PIN) für den Zugriff fest oder erzeugen Sie mit einem kurzen PHP-Skript einzigartige Links für jeden Zuschauer. Mehr zum"," ",r.jsx("a",{href:"how-to-protect-stream-from-copying.html",children:"Schutz von Streams"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Unsere ",r.jsx("br",{})," Rechenzentren"]}),text:r.jsx(r.Fragment,{children:"Unsere Rechenzentren befinden sich in Nord- und Südamerika, Europa, Asien und Australien und sorgen für eine möglichst schnelle Bereitstellung der Videoinhalte für Ihre Zuschauer. Ausgehende Verbindungen mit einer Bandbreite von bis zu 10 Tbit/s sind verfügbar."})},{h3:r.jsxs(r.Fragment,{children:["Einbettbarer HTML5 ",r.jsx("br",{})," Videoplayer"]}),text:r.jsx(r.Fragment,{children:"In allen Tarifen können Sie den HTML5-Player ohne Aufpreis in Ihre Website einbetten. Bei vielen Wettbewerbern ist dies eine kostenpflichtige Funktion — bei uns ist sie immer inklusive. Zuschauer können Videos auf Computern, Tablets und Smartphones ansehen."})},{h3:r.jsxs(r.Fragment,{children:["Kostenlose Überwachung ",r.jsx("br",{})," der Kameraverfügbarkeit"]}),text:r.jsx(r.Fragment,{children:"Wir prüfen die Verfügbarkeit Ihrer Kamera alle 10 Minuten kostenlos. Ist die Kamera nicht erreichbar, benachrichtigen wir den Eigentümer per E-Mail, damit ein längerer Ausfall nicht unbemerkt bleibt. Eine grüne oder rote Anzeige neben jeder Kamera im Benutzerkonto zeigt ihren aktuellen Status auf einen Blick."})},{h3:r.jsxs(r.Fragment,{children:["Preise ohne ",r.jsx("br",{})," versteckte Grenzen"]}),text:r.jsxs(r.Fragment,{children:[r.jsx("b",{children:"Ihr Preis hängt weder von der Wiedergabedauer noch vom Datenverkehr, der Kameraauflösung oder der Zuschauerzahl ab."}),"Anders als viele Wettbewerber begrenzen wir Ihr Publikum nicht und berechnen keinen Aufpreis für längeres Ansehen oder höhere Qualität."]})},{h3:r.jsxs(r.Fragment,{children:["Interaktiver ",r.jsx("br",{})," Live-Chat"]}),text:r.jsx(r.Fragment,{children:"Aktivieren Sie den Chat in den Player-Einstellungen und kommunizieren Sie in Echtzeit mit Ihren Zuschauern. Jede Nachricht wird erst nach Ihrer Prüfung und Freigabe veröffentlicht, sodass Sie die Unterhaltung vollständig kontrollieren."})},{h3:r.jsxs(r.Fragment,{children:["Beliebige Auflösung ",r.jsx("br",{})," und Bitrate"]}),text:r.jsxs(r.Fragment,{children:["Wir begrenzen weder Kameraauflösung noch Bitrate. Sie können beliebige Einstellungen verwenden, sollten aber Zuschauer mit mobilem Internet berücksichtigen. Wir empfehlen"," ",r.jsx("b",{children:"1280×720 bei 1 Mbit/s"})," oder"," ",r.jsx("b",{children:"1920×1080 bei 3 Mbit/s"})," für Full HD."]})},{h3:r.jsxs(r.Fragment,{children:["Monetarisierung ",r.jsx("br",{})," von Streams"]}),text:r.jsxs(r.Fragment,{children:["Wir bieten zwei Möglichkeiten zur Monetarisierung. Fügen Sie dem Player einen aktiven Spendenlink hinzu und erhalten Sie"," ",r.jsx("b",{children:"100 % jeder Zahlung"}),", oder verkaufen Sie den Zugang zum Stream, indem Sie Preis und Gültigkeitsdauer in Tagen festlegen."]})}]},pr:{suptitle:"Vantagens",h2:r.jsxs(r.Fragment,{children:["Por que escolher ",r.jsx("br",{})," nosso serviço de streaming?"]}),items:[{h3:r.jsxs(r.Fragment,{children:["Facilidade ",r.jsx("br",{})," de uso"]}),text:r.jsx(r.Fragment,{children:"Uma interface simples e intuitiva permite configurar transmissões sem experiência ou conhecimento técnico. Basta inserir o link RTSP na página de criação da transmissão e obter o código do player de vídeo em HTML5."})},{h3:r.jsxs(r.Fragment,{children:["Transmissões ",r.jsx("br",{})," com baixa latência"]}),text:r.jsxs(r.Fragment,{children:["Nosso player suporta WebRTC para assistir a vídeos com baixa latência. Acompanhe o que está acontecendo e converse com seus espectadores praticamente em tempo real. Saiba mais sobre a"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"diferença entre WebRTC e HLS"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Segurança ",r.jsx("br",{})," e privacidade"]}),text:r.jsx(r.Fragment,{children:"Damos prioridade à segurança dos seus dados. Nosso serviço protege de forma confiável as informações dos usuários e garante a confidencialidade dos seus conteúdos. Os endereços IP reais dos seus links RTSP e os dados de autenticação das câmeras ou gravadores permanecem ocultos contra acessos não autorizados."})},{h3:r.jsx(r.Fragment,{children:"Horário de transmissão"}),text:r.jsx(r.Fragment,{children:"Você pode configurar uma programação para cada transmissão nos ajustes do serviço, especificando os dias da semana e horários em que estará disponível aos espectadores."})},{h3:r.jsxs(r.Fragment,{children:["Política de preços ",r.jsx("br",{})," flexível"]}),text:r.jsxs(r.Fragment,{children:["Para sua conveniência, oferecemos"," ",r.jsx("b",{children:"um sistema de pós-pagamento"}),": você pode transmitir a câmera ao longo do mês e receber a fatura posteriormente. Até 100 visualizações por mês são gratuitas. O custo para câmeras adicionais começa a partir de 5 euros por mês."]})},{h3:r.jsxs(r.Fragment,{children:["Gravação ",r.jsx("br",{})," e armazenamento"]}),text:r.jsx(r.Fragment,{children:"Nosso serviço oferece a possibilidade de gravar as transmissões, permitindo que você salve os vídeos em um arquivo para visualização posterior. Oferecemos armazenamento em um data center seguro por até 360 dias."})},{h3:r.jsxs(r.Fragment,{children:["Suporte ",r.jsx("br",{})," a áudio"]}),text:r.jsx(r.Fragment,{children:"Você pode transmitir áudio juntamente com o vídeo da sua câmera sem custo adicional. O suporte a áudio pode ser habilitado nas configurações de transmissão."})},{h3:r.jsxs(r.Fragment,{children:["Proteção contra ",r.jsx("br",{})," cópia de transmissão"]}),text:r.jsxs(r.Fragment,{children:["Oferecemos várias formas gratuitas de proteger sua transmissão. Restrinja o player ao seu próprio domínio para que o código copiado não funcione em outros sites, defina uma senha (PIN) para o acesso ou gere links únicos para cada espectador com um pequeno código PHP. Saiba mais sobre a"," ",r.jsx("a",{href:"how-to-protect-stream-from-copying.html",children:"proteção da transmissão"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Nossos ",r.jsx("br",{})," data centers"]}
67),text:r.jsx(r.Fragment,{children:"Nossos data centers estão localizados na América do Norte, América do Sul, Europa, Ásia e Austrália, garantindo a entrega mais rápida possível do seu conteúdo de vídeo aos usuários. Estão disponíveis canais de saída com largura de banda de até 10 Tb/s."})},{h3:r.jsxs(r.Fragment,{children:["Player de vídeo HTML5 ",r.jsx("br",{})," incorporável"]}),text:r.jsx(r.Fragment,{children:"Em todos os planos, sem exceção, você pode incorporar o player HTML5 ao seu site sem custos adicionais. Em muitos concorrentes essa função é paga — conosco ela está sempre incluída. Os espectadores podem assistir em computadores, tablets e smartphones."})},{h3:r.jsxs(r.Fragment,{children:["Monitoramento gratuito ",r.jsx("br",{})," da câmera"]}),text:r.jsx(r.Fragment,{children:"Verificamos gratuitamente a disponibilidade da sua câmera a cada 10 minutos. Se ela ficar inacessível, notificamos o proprietário por email, evitando que uma interrupção prolongada passe despercebida. No painel, um indicador verde ou vermelho ao lado de cada câmera mostra imediatamente seu status atual."})},{h3:r.jsxs(r.Fragment,{children:["Preços sem ",r.jsx("br",{})," limites ocultos"]}),text:r.jsxs(r.Fragment,{children:[r.jsx("b",{children:"O preço não depende do tempo de visualização, do uso de banda, da resolução da câmera ou do número de espectadores."})," Ao contrário de muitos concorrentes, não limitamos o público nem cobramos mais por transmissões mais longas ou em alta qualidade."]})},{h3:r.jsxs(r.Fragment,{children:["Chat interativo ",r.jsx("br",{})," ao vivo"]}),text:r.jsx(r.Fragment,{children:"Ative o chat nas configurações do player e converse com seus espectadores em tempo real. Cada mensagem só é publicada após sua análise e aprovação, dando a você controle total da conversa."})},{h3:r.jsxs(r.Fragment,{children:["Qualquer resolução ",r.jsx("br",{})," e bitrate"]}),text:r.jsxs(r.Fragment,{children:["Não limitamos a resolução nem o bitrate da câmera. Você pode usar qualquer configuração, mas lembre-se de que muitos espectadores usam internet móvel. Recomendamos ",r.jsx("b",{children:"1280×720 a 1 Mbps"})," ou"," ",r.jsx("b",{children:"1920×1080 a 3 Mbps"})," para Full HD."]})},{h3:r.jsxs(r.Fragment,{children:["Monetização ",r.jsx("br",{})," de transmissões"]}),text:r.jsxs(r.Fragment,{children:["Oferecemos duas formas de monetização. Adicione ao player um link ativo para doações e receba ",r.jsx("b",{children:"100% de cada pagamento"}),", ou venda o acesso à transmissão definindo o preço e por quantos dias ele ficará disponível após o pagamento."]})}]},fr:{suptitle:"Avantages",h2:r.jsxs(r.Fragment,{children:["Pourquoi choisir ",r.jsx("br",{})," notre service de streaming ?"]}),items:[{h3:r.jsxs(r.Fragment,{children:["Facilité ",r.jsx("br",{})," d’utilisation"]}),text:r.jsx(r.Fragment,{children:"Une interface conviviale et intuitive vous permet de configurer les diffusions sans expérience ni connaissances techniques. Il vous suffit d’entrer le lien RTSP sur la page de création de la diffusion et d’obtenir le code du lecteur vidéo HTML5."})},{h3:r.jsxs(r.Fragment,{children:["Diffusion ",r.jsx("br",{})," à faible latence"]}),text:r.jsxs(r.Fragment,{children:["Notre lecteur prend en charge WebRTC pour visionner des vidéos à faible latence. Suivez ce qui se passe et échangez avec vos spectateurs quasiment en temps réel. En savoir plus sur la"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"différence entre WebRTC et HLS"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Sécurité ",r.jsx("br",{})," et confidentialité"]}),text:r.jsx(r.Fragment,{children:"Nous accordons la plus grande importance à la sécurité de vos données. Notre service protège efficacement les informations des utilisateurs et assure la confidentialité de leurs contenus. Les adresses IP réelles de vos liens RTSP et les données d’authentification de vos caméras IP ou enregistreurs restent cachées contre tout accès non autorisé."})},{h3:r.jsx(r.Fragment,{children:"Heures de fonctionnement de la diffusion"}),text:r.jsx(r.Fragment,{children:"Vous pouvez configurer un horaire de diffusion pour chaque caméra dans les paramètres du service, en précisant les jours de la semaine et les heures auxquels la diffusion sera accessible aux spectateurs."})},{h3:r.jsxs(r.Fragment,{children:["Tarification ",r.jsx("br",{})," flexible"]}),text:r.jsxs(r.Fragment,{children:["Pour votre confort, nous"," ",r.jsx("b",{children:"proposons un système de post-paiement"})," : vous pouvez diffuser votre caméra tout au long du mois et recevoir la facture ensuite. Jusqu’à 100 vues par mois sont gratuites. Pour les caméras supplémentaires, les tarifs commencent à partir de 5 euros par mois."]})},{h3:r.jsxs(r.Fragment,{children:["Enregistrement ",r.jsx("br",{})," et stockage"]}),text:r.jsx(r.Fragment,{children:"Notre service offre la possibilité d’enregistrer les flux, vous permettant de conserver les vidéos dans un archivage pour les visionner plus tard. Nous proposons un stockage d’archives dans un centre de données sécurisé, pouvant aller jusqu’à 360 jours."})},{h3:r.jsxs(r.Fragment,{children:["Prise en charge ",r.jsx("br",{})," de l’audio"]}),text:r.jsx(r.Fragment,{children:"Vous pouvez transmettre l’audio en même temps que la vidéo de votre caméra, sans frais supplémentaires. L’option d’audio peut être activée dans les paramètres de votre diffusion."})},{h3:r.jsxs(r.Fragment,{children:["Protection ",r.jsx("br",{})," contre la copie du flux"]}),text:r.jsxs(r.Fragment,{children:["Nous proposons plusieurs moyens gratuits de protéger votre flux. Limitez le lecteur à votre propre domaine afin que le code copié ne fonctionne pas sur d’autres sites, définissez un mot de passe (code PIN) pour l’accè
67s ou générez des liens uniques pour chaque spectateur à l’aide d’un petit code PHP. En savoir plus sur la"," ",r.jsx("a",{href:"how-to-protect-stream-from-copying.html",children:"protection du flux"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Nos ",r.jsx("br",{})," centres de données"]}),text:r.jsx(r.Fragment,{children:"Nos centres de données sont répartis en Amérique du Nord et du Sud, en Europe, en Asie et en Australie, assurant la livraison la plus rapide possible de votre contenu vidéo à vos utilisateurs. Des liaisons sortantes offrant une bande passante allant jusqu’à 10 Tbit/s sont disponibles."})},{h3:r.jsxs(r.Fragment,{children:["Lecteur vidéo HTML5 ",r.jsx("br",{})," intégrable"]}),text:r.jsx(r.Fragment,{children:"Quel que soit votre forfait, vous pouvez intégrer le lecteur HTML5 sur votre site sans frais supplémentaires. Chez de nombreux concurrents, cette fonctionnalité est payante — chez nous, elle est toujours incluse. Les spectateurs peuvent regarder les vidéos sur ordinateur, tablette et smartphone."})},{h3:r.jsxs(r.Fragment,{children:["Surveillance gratuite ",r.jsx("br",{})," de la caméra"]}),text:r.jsx(r.Fragment,{children:"Nous vérifions gratuitement la disponibilité de votre caméra toutes les 10 minutes. Si elle devient inaccessible, nous avertissons son propriétaire par e-mail afin qu’une panne prolongée ne passe pas inaperçue. Dans votre espace personnel, un indicateur vert ou rouge à côté de chaque caméra affiche immédiatement son état actuel."})},{h3:r.jsxs(r.Fragment,{children:["Tarification sans ",r.jsx("br",{})," limites cachées"]}),text:r.jsxs(r.Fragment,{children:[r.jsx("b",{children:"Le prix ne dépend ni de la durée de visionnage, ni de la bande passante, ni de la résolution de la caméra, ni du nombre de spectateurs."})," Contrairement à de nombreux concurrents, nous ne limitons pas votre audience et ne facturons pas davantage pour une diffusion plus longue ou de meilleure qualité."]})},{h3:r.jsxs(r.Fragment,{children:["Chat interactif ",r.jsx("br",{})," en direct"]}),text:r.jsx(r.Fragment,{children:"Activez le chat dans les paramètres du lecteur et échangez avec vos spectateurs en temps réel. Chaque message n’est publié qu’après votre vérification et votre approbation, vous gardez ainsi le contrôle total de la conversation."})},{h3:r.jsxs(r.Fragment,{children:["Résolution et débit ",r.jsx("br",{})," sans limites"]}),text:r.jsxs(r.Fragment,{children:["Nous ne limitons ni la résolution ni le débit de la caméra. Vous pouvez choisir librement vos réglages, mais de nombreux spectateurs utilisent une connexion mobile. Nous recommandons"," ",r.jsx("b",{children:"1280×720 à 1 Mbit/s"})," ou ",r.jsx("b",{children:"1920×1080 à 3 Mbit/s"})," en Full HD."]})},{h3:r.jsxs(r.Fragment,{children:["Monétisation ",r.jsx("br",{})," des diffusions"]}),text:r.jsxs(r.Fragment,{children:["Nous proposons deux modes de monétisation. Ajoutez au lecteur un lien de don actif et recevez ",r.jsx("b",{children:"100 % de chaque paiement"}),", ou vendez l’accès à la diffusion en définissant son prix et le nombre de jours d’accès après le paiement."]})}]},es:{suptitle:"Ventajas",h2:r.jsxs(r.Fragment,{children:["¿Por qué elegir ",r.jsx("br",{})," nuestro servicio de streaming?"]}),items:[{h3:r.jsxs(r.Fragment,{children:["Facilidad ",r.jsx("br",{})," de uso"]}),text:r.jsx(r.Fragment,{children:"Una interfaz sencilla e intuitiva te permite configurar transmisiones sin experiencia ni conocimientos técnicos. Solo necesitas pegar el enlace RTSP en la página de creación de la transmisión y obtendrás el código del reproductor de video HTML5."})},{h3:r.jsxs(r.Fragment,{children:["Transmisiones ",r.jsx("br",{})," de baja latencia"]}),text:r.jsxs(r.Fragment,{children:["Nuestro reproductor admite WebRTC para ver videos con baja latencia. Observa lo que está sucediendo y comunícate con tus espectadores prácticamente en tiempo real. Más sobre la"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"diferencia entre WebRTC y HLS"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Seguridad ",r.jsx("br",{})," y privacidad"]}),text:r.jsx(r.Fragment,{children:"Damos prioridad a la seguridad de tus datos. Nuestro servicio protege de forma fiable la información de los usuarios y garantiza la confidencialidad de sus contenidos. Las direcciones IP reales de tus enlaces RTSP y los datos de autenticación de tus cámaras o grabadoras permanecen ocultos ante accesos no autorizados."})},{h3:r.jsx(r.Fragment,{children:"Horario de transmisión"}),text:r.jsx(r.Fragment,{children:"Puedes configurar un horario para cada transmisión en los ajustes del servicio, indicando los días de la semana y horarios en los que estará disponible para los espectadores."})},{h3:r.jsxs(r.Fragment,{children:["Política de precios ",r.jsx("br",{})," flexible"]}),text:r.jsxs(r.Fragment,{children:["Para tu comodidad, ofrecemos ",r.jsx("b",{children:"un sistema de pospago"}),": puedes transmitir la cámara durante todo el mes y recibir la factura posteriormente. Hasta 100 visualizaciones al mes s
67on gratuitas. El costo de las cámaras adicionales empieza a partir de 5 euros al mes."]})},{h3:r.jsxs(r.Fragment,{children:["Grabación ",r.jsx("br",{})," y almacenamiento"]}),text:r.jsx(r.Fragment,{children:"Nuestro servicio ofrece la posibilidad de grabar transmisiones, lo que te permite guardar los videos en un archivo para verlos más tarde. Ofrecemos un almacenamiento seguro en un centro de datos hasta por 360 días."})},{h3:r.jsxs(r.Fragment,{children:["Compatibilidad ",r.jsx("br",{})," con audio"]}),text:r.jsx(r.Fragment,{children:"Puedes transmitir audio junto con el video de tu cámara de forma gratuita. La compatibilidad con audio puede habilitarse en la configuración de la transmisión."})},{h3:r.jsxs(r.Fragment,{children:["Protección contra ",r.jsx("br",{})," la copia de la transmisión"]}),text:r.jsxs(r.Fragment,{children:["Ofrecemos varias formas gratuitas de proteger tu transmisión. Limita el reproductor a tu propio dominio para que el código copiado no funcione en otros sitios, establece una contraseña (PIN) para el acceso o genera enlaces únicos para cada espectador con un pequeño código PHP. Más sobre la"," ",r.jsx("a",{href:"how-to-protect-stream-from-copying.html",children:"protección de la transmisión"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Nuestros ",r.jsx("br",{})," centros de datos"]}),text:r.jsx(r.Fragment,{children:"Nuestros centros de datos se encuentran en América del Norte, América del Sur, Europa, Asia y Australia, lo que garantiza la entrega más rápida posible de tu contenido de video a tus usuarios. Hay canales de salida disponibles con un ancho de banda de hasta 10 Tb/s."})},{h3:r.jsxs(r.Fragment,{children:["Reproductor de vídeo HTML5 ",r.jsx("br",{})," integrable"]}),text:r.jsx(r.Fragment,{children:"En todos los planes, sin excepción, puedes insertar el reproductor HTML5 en tu sitio web sin costo adicional. En muchos competidores esta función es de pago; con nosotros siempre está incluida. Los espectadores pueden ver los videos en ordenadores, tabletas y teléfonos inteligentes."})},{h3:r.jsxs(r.Fragment,{children:["Monitorización gratuita ",r.jsx("br",{})," de la cámara"]}),text:r.jsx(r.Fragment,{children:"Comprobamos gratis la disponibilidad de tu cámara cada 10 minutos. Si deja de estar accesible, avisamos al propietario por email para que una interrupción prolongada no pase desapercibida. En el panel, un indicador verde o rojo junto a cada cámara muestra su estado actual de un vistazo."})},{h3:r.jsxs(r.Fragment,{children:["Precios sin ",r.jsx("br",{})," límites ocultos"]}),text:r.jsxs(r.Fragment,{children:[r.jsx("b",{children:"El precio no depende del tiempo de visualización, del ancho de banda, de la resolución de la cámara ni del número de espectadores."}),"A diferencia de muchos competidores, no limitamos la audiencia ni cobramos más por transmisiones más largas o de mayor calidad."]})},{h3:r.jsxs(r.Fragment,{children:["Chat interactivo ",r.jsx("br",{})," en directo"]}),text:r.jsx(r.Fragment,{children:"Activa el chat en la configuración del reproductor y comunícate con tus espectadores en tiempo real. Cada mensaje se publica únicamente después de que lo revises y apruebes, para que mantengas el control total de la conversación."})},{h3:r.jsxs(r.Fragment,{children:["Cualquier resolución ",r.jsx("br",{})," y bitrate"]}),text:r.jsxs(r.Fragment,{children:["No limitamos la resolución ni el bitrate de la cámara. Puedes usar cualquier configuración, pero recuerda que muchos espectadores se conectan mediante internet móvil. Recomendamos"," ",r.jsx("b",{children:"1280×720 a 1 Mbps"})," o ",r.jsx("b",{children:"1920×1080 a 3 Mbps"})," para Full HD."]})},{h3:r.jsxs(r.Fragment,{children:["Monetización ",r.jsx("br",{})," de transmisiones"]}),text:r.jsxs(r.Fragment,{children:["Ofrecemos dos formas de monetización. Añade al reproductor un enlace activo para donaciones y recibe ",r.jsx("b",{children:"el 100% de cada pago"}),", o vende acceso a la transmisión indicando el precio y durante cuántos días estará disponible después del pago."]})}]},it:{suptitle:"Vantaggi",h2:r.jsxs(r.Fragment,{children:["Perché scegliere ",r.jsx("br",{}
67)," il nostro servizio di streaming?"]}),items:[{h3:r.jsxs(r.Fragment,{children:["Facilità ",r.jsx("br",{})," d’uso"]}),text:r.jsx(r.Fragment,{children:"Un’interfaccia intuitiva e facile da usare permette di configurare le trasmissioni senza esperienza o conoscenze tecniche. Inserisci semplicemente il link RTSP nella pagina di creazione dello streaming e ottieni il codice del lettore video HTML5."})},{h3:r.jsxs(r.Fragment,{children:["Streaming ",r.jsx("br",{})," a bassa latenza"]}),text:r.jsxs(r.Fragment,{children:["Il nostro lettore supporta WebRTC per guardare video a bassa latenza. Segui ciò che accade e comunica con i tuoi spettatori praticamente in tempo reale. Scopri di più sulla"," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"differenza tra WebRTC e HLS"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["Sicurezza ",r.jsx("br",{})," e privacy"]}),text:r.jsx(r.Fragment,{children:"Poniamo la massima attenzione alla sicurezza dei tuoi dati. Il nostro servizio protegge in modo affidabile le informazioni degli utenti e ne garantisce la riservatezza. Gli indirizzi IP reali dei link RTSP e i dati di autenticazione delle tue telecamere o registratori restano protetti da accessi non autorizzati."})},{h3:r.jsx(r.Fragment,{children:"Orari di trasmissione"}),text:r.jsx(r.Fragment,{children:"Puoi impostare un programma per ogni trasmissione nelle impostazioni del servizio, specificando i giorni della settimana e gli orari in cui la trasmissione sarà disponibile per gli spettatori."})},{h3:r.jsxs(r.Fragment,{children:["Politica dei prezzi ",r.jsx("br",{})," flessibile"]}),text:r.jsxs(r.Fragment,{children:["Per agevolarti, offriamo un ",r.jsx("b",{children:"sistema di post-pagamento"}),": puoi trasmettere la tua telecamera per l’intero mese e ricevere la fattura successivamente. Fino a 100 visualizzazioni al mese sono gratuite. Il costo delle telecamere aggiuntive parte da 5 euro al mese."]})},{h3:r.jsxs(r.Fragment,{children:["Registrazione ",r.jsx("br",{})," e archiviazione"]}),text:r.jsx(r.Fragment,{children:"Il nostro servizio offre la possibilità di registrare le trasmissioni, consentendoti di salvare i video in un archivio per la visione successiva. Forniamo l’archiviazione in un data center sicuro fino a 360 giorni."})},{h3:r.jsxs(r.Fragment,{children:["Supporto ",r.jsx("br",{})," audio"]}),text:r.jsx(r.Fragment,{children:"Puoi trasmettere l’audio insieme al video della tua telecamera senza costi aggiuntivi. Il supporto audio può essere abilitato nelle impostazioni della trasmissione."})},{h3:r.jsxs(r.Fragment,{children:["Protezione ",r.jsx("br",{})," contro la copia della trasmissione"]}),text:r.jsxs(r.Fragment,{children:["Offriamo diversi modi gratuiti per proteggere la tua trasmissione. Limita il lettore al tuo dominio, così il codice copiato non funzionerà su altri siti, imposta una password (PIN) per l’accesso oppure genera link unici per ogni spettatore con un piccolo codice PHP. Scopri di più sulla"," ",r.jsx("a",{href:"how-to-protect-stream-from-copying.html",children:"protezione della trasmissione"}),"."]})},{h3:r.jsxs(r.Fragment,{children:["I nostri ",r.jsx("br",{})," data center"]}),text:r.jsx(r.Fragment,{children:"I nostri data center si trovano in Nord e Sud America, Europa, Asia e Australia, garantendo la consegna più rapida possibile del tuo contenuto video agli utenti. Sono disponibili canali in uscita con una larghezza di banda fino a 10 Tbit/s."})},{h3:r.jsxs(r.Fragment,{children:["Lettore video HTML5 ",r.jsx("br",{})," incorporabile"]}),text:r.jsx(r.Fragment,{children:"Con tutti i piani, senza eccezioni, puoi incorporare il lettore HTML5 nel tuo sito senza costi aggiuntivi. Presso molti concorrenti questa è una funzione a pagamento — da noi è sempre inclusa. Gli spettatori possono guardare i video su computer, tablet e smartphone."})},{h3:r.jsxs(r.Fragment,{children:["Monitoraggio gratuito ",r.jsx("br",{})," della telecamera"]}),text:r.jsx(r.Fragment,{children:"Controlliamo gratuitamente la disponibilità della tua telecamera ogni 10 minuti. Se non è raggiungibile, avvisiamo il proprietario via email, così un’interruzione prolungata non passerà inosservata. Nell’area personale, un indicatore verde o rosso accanto a ogni telecamera ne mostra subito lo stato attuale."})},{h3:r.jsxs(r.Fragment,{children:["Prezzi senza ",r.jsx("br",{})," limiti nascosti"]}),text:r.jsxs(r.Fragment,{children:[r.jsx("b",{children:"Il prezzo non dipende dalla durata della visualizzazione, dal traffico, dalla risoluzione della telecamera o dal numero di spettatori."})," A differenza di molti concorrenti, non limitiamo il pubblico e non applichiamo costi aggiuntivi per visioni più lunghe o di qualità superiore."]})},{h3:r.jsxs(r.Fragment,{children:["Chat interattiva ",r.jsx("br",{})," in tempo reale"]}),text:r.jsx(r.Fragment,{children:"Attiva la chat nelle impostazioni del lettore e comunica con i tuoi spettatori in tempo reale. Ogni messaggio viene pubblicato solo dopo la tua verifica e approvazione, così mantieni il pieno controllo della conversazione."})},{h3:r.jsxs(r.Fragment,{children:["Qualsiasi risoluzione ",r.jsx("br",{})," e bitrate"]}),text:r.jsxs(r.Fragment,{children:["Non limitiamo la risoluzione o il bitrate della telecamera. Puoi usare qualsiasi impostazione, ma ricorda che molti spettatori usano la rete mobile. Consigliamo ",r.jsx("b",{children:"1280×720 a 1 Mbps"})," oppure"," ",r.jsx("b",{children:"1920×1080 a 3 Mbps"})," per il Full HD."]})},{h3:r.jsxs(r.Fragment,{children:["Monetizzazione ",r.jsx("br",{})," delle trasmissioni"]}),text:r.jsxs(r.Fragment,{children:["Offriamo due modalità di monetizzazione. Aggiungi al lettore un link attivo per le donazioni e ricevi ",r.jsx("b",{children:"il 100% di ogni pagamento"}),", oppure vendi l’accesso alla trasmissione impostando il prezzo e il numero di giorni di validità dopo il pagamento."]})}]},tr:{suptitle:"Avantajlar",h2:r.jsxs(r.Fragment,{children:["Yayın hizmetimizi ",r.jsx("br",{})," neden tercih etmelisiniz?"]}),items:[{h3:r.jsxs(r.Fragment,{children:["Kullanım ",r.jsx("br",{})," kolaylığı"]}),text:r.jsx(r.Fragment,{children:"Kullanıcı dostu ve sezgisel arayüzü sayesinde herhangi bir deneyim veya teknik bilgiye gerek kalmadan yayınları yapılandırabilirsiniz. Yayın oluşturma sayfasında RTSP bağlantısını girin ve HTML5 video oynatıcısının kodunu alın."})},{h3:r.jsxs(r.Fragment,{children:["Düşük gecikmeli ",r.jsx("br",{})," yayınlar"]}),text:r.jsxs(r.Fragment,{children:["Oynatıcımız, videoları düşük gecikmeyle izlemek için WebRTC desteği sunar. Olan biteni takip edin ve izleyicilerinizle neredeyse gerçek zamanlı iletişim kurun."," ",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC ile HLS arasındaki fark"})," ","hakkında daha fazla bilgi edinin."]})},{h3:r.jsxs(r.Fragment,{children:["Güvenlik ",r.jsx("br",{})," ve gizlilik"]}),text:r.jsx(r.Fragment,{children:"Veri güvenliğini en yüksek öncelikte tutuyoruz. Hizmetimiz, kullanıcı bilgilerini ve içeriklerini güvenle korur. Kameralarınıza veya kayıt cihazınıza ait gerçek RTSP bağlantıları ve kimlik bilgileri yetkisiz erişimden gizli kalır."})},{h3:r.jsx(r.Fragment,{children:"Yayın çalışma saatleri"}),text:r.jsx(r.Fragment,{children:"Hizmet ayarları bölümünde, her yayın için haftanın hangi günleri ve hangi saatlerde izlenebileceğini belirleyerek bir zamanlama oluşturabilirsiniz."})},{h3:r.jsxs(r.Fragment,{children:["Esnek ",r.jsx("br",{})," fiyat politikası"]}),text:r.jsxs(r.Fragment,{children:["Kolaylık sağlaması adına, ",r.jsx("b",{children:"ödemeyi sonradan yapma"})," sistemi sunuyoruz: Kameranızı bir ay boyunca yayınlayabilir, ardından faturayı alabilirsiniz. Aylık 100 görüntülemeye kadar ücretsizdir. Ek kameralar için fiyatlar aylık 5 Euro'dan başlar."]})},{h3:r.jsxs(r.Fragment,{children:["Kayıt ",r.jsx("br",{})," ve depolama"]}),text:r.jsx(r.Fragment,{children:"Yayınlarınızı kaydetme imkanı sunuyoruz; böylece videoları arşivde saklayabilir ve daha sonra izleyebilirsiniz. 360 güne kadar güvenli bir veri merkezinde arşiv depolama imkanı sağlıyoruz."})},{h3:r.jsxs(r.Fragment,{children:["Ses akışı ",r.jsx("br",{})," desteği"]}),text:r.jsx(r.Fragment,{children:"Kameranızdan gelen video ile birlikte ses de yayınlayabilirsiniz, üstelik ekstra bir ücret olmadan. Yayın ayarlarında ses özelliğini etkinleştirebilirsiniz."})},{h3:r.jsxs(r.Fragment,{children:["Yayının ",r.jsx("br",{})," kopyalanmasına karşı koruma"]}),text:r.jsxs(r.Fragment,{children:["Yayınınızı korumak için birkaç ücretsiz yöntem sunuyoruz. Oynatıcıyı yalnızca kendi alan adınızla sınırlayın;
67 böylece kopyalanan kod başka sitelerde çalışmaz. Erişim için parola (PIN) belirleyin veya ufak bir PHP koduyla her izleyici için benzersiz bağlantılar oluşturun."," ",r.jsx("a",{href:"how-to-protect-stream-from-copying.html",children:"Yayın koruması"})," ","hakkında daha fazla bilgi edinin."]})},{h3:r.jsxs(r.Fragment,{children:["Veri ",r.jsx("br",{})," merkezlerimiz"]}),text:r.jsx(r.Fragment,{children:"Veri merkezlerimiz Kuzey ve Güney Amerika, Avrupa, Asya ve Avustralya'da bulunur. Bu sayede video içeriğiniz, kullanıcılarınıza mümkün olan en hızlı şekilde ulaştırılır. 10 Tbit/s'ye kadar bant genişliğine sahip çıkış kanalları mevcuttur."})},{h3:r.jsxs(r.Fragment,{children:["Gömülebilir HTML5 ",r.jsx("br",{})," video oynatıcı"]}),text:r.jsx(r.Fragment,{children:"İstisnasız tüm tarifelerde HTML5 oynatıcıyı ek ücret ödemeden web sitenize gömebilirsiniz. Birçok rakipte bu özellik ücretlidir — bizde her zaman dahildir. İzleyiciler videoları bilgisayar, tablet ve akıllı telefonlarda izleyebilir."})},{h3:r.jsxs(r.Fragment,{children:["Ücretsiz kamera ",r.jsx("br",{})," erişilebilirlik takibi"]}),text:r.jsx(r.Fragment,{children:"Kameranızın erişilebilirliğini her 10 dakikada bir ücretsiz kontrol ederiz. Kamera çevrimdışı olursa sahibine e-posta göndeririz; böylece uzun süreli bir kesinti gözden kaçmaz. Kullanıcı panelinde her kameranın yanındaki yeşil veya kırmızı gösterge, mevcut durumu anında görmenizi sağlar."})},{h3:r.jsxs(r.Fragment,{children:["Gizli sınırlamalar ",r.jsx("br",{})," olmadan fiyatlandırma"]}),text:r.jsxs(r.Fragment,{children:[r.jsx("b",{children:"Fiyat; izleme süresine, bant genişliğine, kamera çözünürlüğüne veya izleyici sayısına bağlı değildir."})," Birçok rakibin aksine, izleyici sayısını sınırlamayız ve daha uzun ya da daha yüksek kaliteli yayınlar için ek ücret almayız."]})},{h3:r.jsxs(r.Fragment,{children:["Etkileşimli ",r.jsx("br",{})," canlı sohbet"]}),text:r.jsx(r.Fragment,{children:"Oynatıcı ayarlarından sohbeti açarak izleyicilerinizle gerçek zamanlı iletişim kurabilirsiniz. Her mesaj yalnızca sizin kontrol edip onaylamanızdan sonra yayınlanır; böylece sohbet tamamen sizin denetiminizde kalır."})},{h3:r.jsxs(r.Fragment,{children:["Sınırsız çözünürlük ",r.jsx("br",{})," ve bit hızı"]}),text:r.jsxs(r.Fragment,{children:["Kamera çözünürlüğünü veya bit hızını sınırlamıyoruz. İstediğiniz ayarı kullanabilirsiniz; ancak birçok izleyicinin mobil internet kullandığını unutmayın. ",r.jsx("b",{children:"1280×720 için 1 Mbps"}),", Full HD içinse"," ",r.jsx("b",{children:"1920×1080 ve 3 Mbps"})," öneriyoruz."]})},{h3:r.jsxs(r.Fragment,{children:["Yayınlardan ",r.jsx("br",{})," gelir elde etme"]}),text:r.jsxs(r.Fragment,{children:["İki farklı gelir modeli sunuyoruz. Oynatıcıya aktif bir bağış bağlantısı ekleyip ",r.jsx("b",{children:"her ödemenin %100’ünü"})," alabilir veya fiyatı ve ödeme sonrası erişim süresini gün olarak belirleyerek yayına ücretli erişim satabilirsiniz."]})}]},zh:{suptitle:"优势",h2:r.jsxs(r.Fragment,{children:["为什么要选择 ",r.jsx("br",{})," 我们的流媒体服务?"]}),items:[{h3:r.jsxs(r.Fragment,{children:["易于 ",r.jsx("br",{})," 使用"]}),text:r.jsx(r.Fragment,{children:"我们提供友好直观的界面,即使你没有任何技术背景,也能轻松完成直播配置。只需在“创建直播”页面粘贴RTSP链接,即可获得HTML5视频播放器代码。"})},{h3:r.jsxs(r.Fragment,{children:["低延迟 ",r.jsx("br",{})," 直播"]}),text:r.jsxs(r.Fragment,{children:["我们的播放器支持WebRTC,可低延迟观看视频。你可以近乎实时地观察正在发生的事情,并与观众交流。了解",r.jsx("a",{href:"webrtc-vs-hls.html",children:"WebRTC与HLS的区别"}),"。"]})},{h3:r.jsxs(r.Fragment,{children:["安全 ",r.jsx("br",{})," 和隐私"]}),text:r.jsx(r.Fragment,{children:"我们非常重视你的数据安全。我们的服务会保护用户信息并确保他们内容的私密性。你的RTSP链接真实IP地址以及IP摄像机或录像机的登录凭据都不会对å
67¤–公开,防止未经授权的访问。"})},{h3:r.jsx(r.Fragment,{children:"直播时段"}),text:r.jsx(r.Fragment,{children:"你可以在服务设置中为每路直播配置日程,指定一周中的哪几天、什么时间段对观众开放。"})},{h3:r.jsxs(r.Fragment,{children:["灵活 ",r.jsx("br",{})," 价格政策"]}),text:r.jsxs(r.Fragment,{children:["为了方便你,我们提供",r.jsx("b",{children:"后付费"}),"制度:你可以在整个月份进行直播,然后在月末收到账单。每月100次以内的观看免费。其他摄像机的收费标准从每月5欧元起。"]})},{h3:r.jsxs(r.Fragment,{children:["录像 ",r.jsx("br",{})," 和存储"]}),text:r.jsx(r.Fragment,{children:"我们的服务支持录制视频流,你可以将视频保存在存档中,日后再观看。我们提供最长期限可达360天的安全数据中心视频存档服务。"})},{h3:r.jsxs(r.Fragment,{children:["音频 ",r.jsx("br",{})," 支持"]}),text:r.jsx(r.Fragment,{children:"你可以和视频流一起传输音频,且不收取额外费用。可在直播设置中启用音频功能。"})},{h3:r.jsxs(r.Fragment,{children:["直播拷贝 ",r.jsx("br",{})," 防护"]}),text:r.jsxs(r.Fragment,{children:["我们提供多种免费的直播保护方式。将播放器限制在你自己的域名上,复制的代码在其他网站上将无法播放;为观看设置密码(PIN 码);或通过一小段 PHP 代码为每位观众生成唯一链接。了解更多",r.jsx("a",{href:"how-to-protect-stream-from-copying.html",children:"直播保护"}),"方式。"]})},{h3:r.jsxs(r.Fragment,{children:["我们的 ",r.jsx("br",{})," 数据中心"]}),text:r.jsx(r.Fragment,{children:"我们的数据中心遍布北美、南美、欧洲、亚洲和澳大利亚,可以尽可能快地将视频内容传输给你的用户。 提供带宽高达 10 Tb/s 的出站链路。"})},{h3:r.jsxs(r.Fragment,{children:["可嵌入的HTML5 ",r.jsx("br",{})," 视频播放器"]}),text:r.jsx(r.Fragment,{children:"所有套餐均支持将HTML5播放器免费嵌入你的网站,无需任何额外费用。许多竞争对手对此功能收费,而我们始终免费提供。 观众可以在电脑、平板电脑和智能手机上观看视频。"})},{h3:r.jsxs(r.Fragment,{children:["免费摄像机 ",r.jsx("br",{})," 可用性监控"]}),text:r.jsx(r.Fragment,{children:"我们每10分钟免费检查一次摄像机是否可用。如果摄像机离线,我们会通过电子邮件通知所有者,避免长时间中断却无人察觉。个人控制面板中每台摄像机旁的绿色或红色指示灯可让你立即了解其当前状态。"})},{h3:r.jsxs(r.Fragment,{children:["无隐藏限制的 ",r.jsx("br",{})," 定价"]}),text:r.jsxs(r.Fragment,{children:[r.jsx("b",{children:"价格不取决于观看时长、带宽用量、摄像机分辨率或观众人数。"}),"与许多竞争对手不同,我们不限制观众人数,也不会因观看时间更长或画质更高而额外收费。"]})},{h3:r.jsxs(r.Fragment,{children:["互动 ",r.jsx("br",{})," 实时聊天"]}),text:r.jsx(r.Fragment,{children:"你可以在播放器设置中启用聊天,与观众实时交流。每条消息å
67ªæœ‰åœ¨ä½ å®¡æ ¸å¹¶æ‰¹å‡†åŽæ‰ä¼šå‘布,让你可以完全掌控聊天内容。"})},{h3:r.jsxs(r.Fragment,{children:["分辨率和码率 ",r.jsx("br",{})," 不受限制"]}),text:r.jsxs(r.Fragment,{children:["我们不限制摄像机的分辨率或码率,你可以使用任意设置。但请记住,许多观众使用移动网络。为保证稳定播放,我们建议使用",r.jsx("b",{children:"1280×720、1 Mbps"}),",Full HD则建议使用",r.jsx("b",{children:"1920×1080、3 Mbps"}),"。"]})},{h3:r.jsxs(r.Fragment,{children:["直播 ",r.jsx("br",{})," 变现"]}),text:r.jsxs(r.Fragment,{children:["我们提供两种直播变现方式。你可以在播放器中添加有效的赞助链接并获得",r.jsx("b",{children:"每笔付款的100%"}),",也可以出售直播观看权限,在设置中指定价格以及付款后可观看的天数。"]})}]}},Jc=["01","06","03","04","05","06","07","08","09","06","04","05","01","01","01"],Gy=[0,1,2,7,8,9,10,11,13],Yy=()=>{const{lang:e}=V(),t=Ky[e],[n,a]=x.useState(null);return r.jsx("section",{className:"benefits section",id:"benefits",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"benefits__top top",children:[r.jsx("span",{className:"benefits__suptitle suptitle",children:t.suptitle}),r.jsx("h2",{className:"benefits__h2 h2 anim",children:t.h2})]}),r.jsx("ul",{className:"benefits__list list-reset",children:Gy.map(s=>{const i=t.items[s];return r.jsxs("li",{className:`benefits__item${n===s?" active":""}`,onMouseEnter:()=>a(s),onMouseLeave:()=>a(null),children:[r.jsx("div",{className:"benefits__img",children:r.jsx(le,{webp:`/landing/img/benefits/${Jc[s]}.webp`,fallback:`/landing/img/benefits/${Jc[s]}.png`,width:120,height:120})}),r.jsxs("div",{className:"benefits__content",children:[r.jsx("h3",{className:"benefits__h3 h3 anim",children:i.h3}),r.jsx("p",{className:"benefits__text text",children:i.text})]})]},s)})})]})})},Qy={textDecoration:"underline",textUnderlineOffset:"3px"},Zy=[["Hikvision / HiWatch","hikvision"],["Dahua","dahua"],["Axis","axis"],["Tiandy","tiandy"],["Uniview","uniview"],["Hanwha Vision","hanwha"],["Bosch","bosch"]],bt=({lang:e})=>r.jsx(r.Fragment,{children:Zy.map(([t,n],a)=>r.jsxs("span",{children:[a>0&&", ",r.jsx("a",{style:Qy,href:`/${e}/how-to-stream-${n}-camera-on-website.html`,children:t})]},n))}),Xy={en:{h2:r.jsxs(r.Fragment,{children:["Live streaming from IP cameras ",r.jsx("br",{})," of any manufacturer"]}),text:r.jsxs(r.Fragment,{children:["RTSP.ME works with IP cameras and video recorders from any manufacturer that supports RTSP. Connect"," ",r.jsx(bt,{lang:"en"}),", MyVMS, and other equipment to stream live video on your website."]}),btn:"Create account"},ru:{h2:r.jsxs(r.Fragment,{children:["Онлайн-трансляция с IP-камер ",r.jsx("br",{})," любых производителей"]}),text:r.jsxs(r.Fragment,{children:["RTSP.RU работает с IP-камерами и видеорегистраторами любых производителей, поддерживающими протокол RTSP. Подключайте ",r.jsx(bt,{lang:"ru"}),", Линия и другое оборудование для онлайн-трансляции видео на сайте."]}),btn:"Создать аккаунт"},de:{h2:r.jsxs(r.Fragment,{children:["Online-Streaming mit IP-Kameras ",r.jsx("br",{})," aller Hersteller"]}),text:r.jsxs(r.Fragment,{children:["RTSP.ME unterstützt IP-Kameras und Videorekorder aller Hersteller, die das RTSP-Protokoll verwenden. Verbinden Sie ",r.jsx(bt,{lang:"de"}),", MyVMS und andere Geräte, um Live-Video auf Ihrer Website zu übertragen."]}),btn:"Konto erstellen"},pr:{h2:r.jsxs(r.Fragment,{children:["Transmissão ao vivo com câmeras IP ",r.jsx("br",{})," de qualquer fabricante"]}),text:r.jsxs(r.Fragment,{children:["A RTSP.ME funciona com câmeras IP e gravadores de vídeo de qualquer fabricante compatível com RTSP. Conecte ",r.jsx(bt,{lang:"pr"}),", MyVMS e outros equipamentos para transmitir vídeo ao vivo no seu site."]}),btn:"Criar conta"},fr:{h2:r.jsxs(r.Fragment,{children:["Diffusion en direct avec des caméras IP ",r.jsx("br",{})," de toutes marques"]}),text:r.jsxs(r.Fragment,{children:["RTSP.ME fonctionne avec les caméras IP et les enregistreurs vidéo de toutes marques compatibles avec le protocole RTSP. Connectez ",r.jsx(bt,{lang:"fr"}),", MyVMS et d’autres équipements pour diffuser de la vidéo en direct sur votre site."]}),btn:"Créer un compte"},es:{h2:r.jsxs(r.Fragment,{children:["Transmisión en vivo con cámaras IP ",r.jsx("br",{})," de cualquier fabricante"]}),text:r.jsxs(r.Fragment,{children:["RTSP.ME funciona con cámaras IP y grabadores de vídeo de cualquier fabricante compatible con RTSP. Conecta ",r.jsx(bt,{lang:"es"}),", MyVMS y otros equipos para transmitir vídeo en vivo en tu sitio web."]}),btn:"Crear cuenta"},it:{h2:r.jsxs(r.Fragment,{children:["Streaming live con telecamere IP ",r.jsx("br",{})," di qualsiasi produttore"]}),text:r.jsxs(r.Fragment,{children:["RTSP.ME funziona con telecamere IP e videoregistratori di qualsiasi produttore compatibile con RTSP. Collega ",r.jsx(bt,{lang:"it"}),", MyVMS e altre apparecchiature per trasmettere video in diretta sul tuo sito web."]}),btn:"Crea account"},tr:{h2:r.jsxs(r.Fragment,{children:["Tüm markaların IP kameralarıyla ",r.jsx("br",{})," canlı yayın"]}),text:r.jsxs(r.Fragment,{children:["RTSP.ME, RTSP protokolünü destekleyen tüm üreticiler
67in IP kameraları ve video kayıt cihazlarıyla çalışır. Web sitenizde canlı video yayını yapmak için ",r.jsx(bt,{lang:"tr"}),", MyVMS ve diğer ekipmanları bağlayabilirsiniz."]}),btn:"Hesap Oluştur"},zh:{h2:r.jsxs(r.Fragment,{children:["支持任意品牌IP摄像机的 ",r.jsx("br",{})," 在线视频直播"]}),text:r.jsxs(r.Fragment,{children:["RTSP.ME支持任何采用RTSP协议的IP摄像机和网络录像机。连接",r.jsx(bt,{lang:"zh"}),"、MyVMS及其他设备,即可在网站上进行实时视频直播。"]}),btn:"创建账户"}},Jy=()=>{const{lang:e,openPopup:t}=V(),n=Xy[e];return r.jsx("section",{className:"film section",children:r.jsx("div",{className:"container",children:r.jsxs("div",{className:"film__inner",children:[r.jsxs("div",{className:"film__content",children:[r.jsxs("div",{className:"film__top",children:[r.jsx("h2",{className:"film__h2 h2 anim",children:n.h2}),r.jsx("p",{className:"film__text text",children:n.text})]}),r.jsx("button",{className:"film__btn btn btn--white popup-link auth btn-reset",onClick:()=>t("popup-registration"),children:n.btn})]}),r.jsx("div",{className:"film__img",children:r.jsx(le,{webp:"/landing/img/main/camera-bg.webp",fallback:"/landing/img/main/camera-bg.png",width:564,height:428})})]})})})},ej={en:{suptitle:"WHAT?",h2:r.jsxs(r.Fragment,{children:["Requirements for creating ",r.jsx("br",{})," RTSP broadcasting on the website"]}),slide1H3:r.jsx(r.Fragment,{children:"RTSP.ME supports connecting IP cameras both with and without a static IP address. For a direct RTSP connection you will need:"}),slide1List:["IP camera, DVR, NVR, XVR (RTSP, h264).","Unlimited internet.","Static IP address (for direct connection only).","Access to modem settings."],video:"https://www.youtube.com/embed/YXjZI8DQyj4",slide2H3:"How to set up a direct connection",slide2List:["Find out your static IP address","Find the RTSP link for your camera","Configure port forwarding, e.g. from external port 10554 to camera port 554 (TCP/UDP). Avoid using external port 554 because it is frequently scanned and targeted by automated attacks","Create a separate camera user for streaming with view-only access and no administrative privileges","If your camera supports IP filtering, restrict access to our service IP addresses only. Request the current IP list from technical support","Create broadcast"],slide3H3:"How to connect a camera without a static IP",slide3List:[r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"})," for compatible cameras — the camera sends the video stream to the RTSP.ME server itself. No static IP or port forwarding required"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS Bridge"})," for existing cameras — connects one or more RTSP cameras to RTSP.ME without a static IP or open external ports"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS 4MP OEM Agent Bullet"})," ","for new installations — just plug the camera into the network and enter its ID in the RTSP link"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"streaming-agent.html",children:"Software agent"})," for ordinary RTSP cameras — a free program for Windows, Linux and ARM sends the camera stream to the service. No static IP or open ports required"]})],learnMore:"Learn more"},ru:{suptitle:"ЧТО?",h2:r.jsxs(r.Fragment,{children:["Требования для создания ",r.jsx("br",{})," RTSP-вещания на сайте"]}),slide1H3:r.jsx(r.Fragment,{children:"RTSP.ME поддерживает подключение IP-камер как со статическим IP-адресом, так и без него. Для прямого RTSP-подключения потребуется:"}),slide1List:["IP-камера, DVR, NVR, XVR (RTSP, h264).","Безлимитный интернет.","Статический IP-адрес (только для прямого подключения).","Доступ к настройкам модема."],video:"https://vkvideo.ru/video_ext.php?oid=-33129364&id=456239313",slide2H3:"Как настроить прямое подключение",slide2List:["Узнайте ваш статический IP-адрес","Найдите RTSP-ссылку для вашей камеры","Настройте перенаправление, например, с внешнего порта 10554 на порт 5
6754 камеры (TCP/UDP). Не используйте внешний порт 554: его часто сканируют и атакуют автоматические системы","Создайте в настройках камеры отдельного пользователя для трансляции — только с доступом к просмотру, без прав администратора","Если камера поддерживает фильтрацию по IP, ограничьте доступ только IP-адресами нашего сервиса. Актуальный список IP-адресов запросите у техподдержки","Создайте трансляцию"],slide3H3:"Как подключить камеру без статического IP",slide3List:[r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"})," для совместимых камер — камера сама отправляет видеопоток на сервер RTSP.ME. Статический IP и перенаправление портов не требуются"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"Линия Bridge"})," для существующих камер — подключает одну или несколько RTSP-камер к сервису без статического IP и открытия внешних портов"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"Линия 4MP OEM Agent Bullet"})," ","для новых установок — просто включите камеру в сеть и введите её ID в RTSP-ссылку"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"streaming-agent.html",children:"Программный агент"})," для обычных RTSP-камер — бесплатная программа для Windows, Linux и ARM отправляет поток камеры на сервис. Без статического IP и открытых портов"]})],learnMore:"Узнать больше"},de:{suptitle:"WAS?",h2:r.jsxs(r.Fragment,{children:["Anforderungen für die Erstellung von ",r.jsx("br",{})," RTSP-Streams auf einer Website"]}),slide1H3:r.jsx(r.Fragment,{children:"RTSP.ME unterstützt die Anbindung von IP-Kameras mit und ohne statische IP-Adresse. Für die direkte RTSP-Verbindung benötigen Sie:"}),slide1List:["IP-Kamera, DVR, NVR, XVR (RTSP, h264).","Unbegrenztes Internet.","Statische IP-Adresse (nur für die direkte Verbindung).","Zugriff auf die Router-Einstellungen."],video:"https://www.youtube.com/embed/YXjZI8DQyj4",slide2H3:"So richten Sie die direkte Verbindung ein",slide2List:["Ermitteln Sie Ihre statische IP-Adresse","Finden Sie den RTSP-Link Ihrer Kamera","Richten Sie eine Portweiterleitung ein, z. B. vom externen Port 10554 auf Kameraport 554 (TCP/UDP). Vermeiden Sie den externen Port 554, da er häufig gescannt und automatisiert angegriffen wird","Erstellen Sie in der Kamera ein separates Benutzerkonto für das Streaming — nur mit Anzeigerechten und ohne Administratorrechte","Wenn Ihre Kamera IP-Filterung unterstützt, beschränken Sie den Zugriff auf die IP-Adressen unseres Die
67nstes. Die aktuelle IP-Liste erhalten Sie vom technischen Support","Erstellen Sie den Stream"],slide3H3:"So verbinden Sie eine Kamera ohne statische IP",slide3List:[r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"})," für kompatible Kameras — die Kamera sendet den Videostream selbst an den RTSP.ME-Server. Keine statische IP und kein Port-Forwarding nötig"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS Bridge"})," für vorhandene Kameras — verbindet eine oder mehrere RTSP-Kameras ohne statische IP und ohne offene externe Ports mit RTSP.ME"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS 4MP OEM Agent Bullet"})," ","für neue Installationen — einfach ans Netzwerk anschließen und die Kamera-ID in den RTSP-Link eintragen"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"streaming-agent.html",children:"Software-Agent"})," für gewöhnliche RTSP-Kameras — ein kostenloses Programm für Windows, Linux und ARM sendet den Kamerastream an den Dienst. Keine statische IP, keine offenen Ports"]})],learnMore:"Mehr erfahren"},pr:{suptitle:"O QUÊ?",h2:r.jsxs(r.Fragment,{children:["Requisitos para criar ",r.jsx("br",{})," transmissão RTSP em um site"]}),slide1H3:r.jsx(r.Fragment,{children:"O RTSP.ME permite conectar câmeras IP com ou sem endereço IP estático. Para a conexão RTSP direta, você vai precisar de:"}),slide1List:["Câmera IP, DVR, NVR, XVR (RTSP, h264).","Internet ilimitada.","Endereço IP estático (apenas para conexão direta).","Acesso às configurações do roteador."],video:"https://www.youtube.com/embed/YXjZI8DQyj4",slide2H3:"Como configurar a conexão direta",slide2List:["Descubra seu endereço IP estático","Encontre o link RTSP da sua câmera","Configure o redirecionamento, por exemplo, da porta externa 10554 para a porta 554 da câmera (TCP/UDP). Evite usar a porta externa 554, pois ela é frequentemente varrida e alvo de ataques automatizados","Crie na câmera um usuário separado para a transmissão — apenas com permissão de visualização e sem privilégios de administrador","Se a câmera oferecer filtragem por IP, restrinja o acesso apenas aos endereços IP do nosso serviço. Solicite a lista atualizada ao suporte técnico","Crie a transmissão"],slide3H3:"Como conectar uma câmera sem IP estático",slide3List:[r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"})," para câmeras compatíveis — a câmera envia o fluxo de vídeo diretamente ao servidor RTSP.ME. Não é preciso IP estático nem redirecionamento de portas"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS Bridge"})," para câmeras existentes — conecta uma ou mais câmeras RTSP ao RTSP.ME sem IP estático e sem abrir portas externas"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS 4MP OEM Agent Bullet"})," ","para novas instalações — basta conectar a câmera à rede e inserir o ID dela no link RTSP"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"streaming-agent.html",children:"Agente de software"})," para câmeras RTSP comuns — um programa gratuito para Windows, Linux e ARM envia o fluxo da câmera ao serviço. Sem IP estático e sem portas abertas"]})],learnMore:"Saiba mais"},fr:{suptitle:"QUOI ?",h2:r.jsxs(r.Fragment,{children:["Exigences pour la création ",r.jsx("br",{})," d’une diffusion RTSP sur un site web"]}),slide1H3:r.jsx(r.Fragment,{children:"RTSP.ME permet de connecter des caméras IP avec ou sans adresse IP statique. Pour la connexion RTSP directe, vous aurez besoin de :"}),slide1List:["Caméra IP, DVR, NVR, XVR (RTSP, h264).","Internet illimité.","Adresse IP statique (uniquement pour la connexion directe).","Accès aux paramètres du modem/routeur."],video:"https://www.youtube.com/embed/YXjZI8DQyj4",slide2H3:"Comment configurer la connexion directe",slide2List:["Trouver votre adresse IP statique","Trouver le lien RTSP de votre caméra","Configurer une redirection, par exemple du port externe 10554 vers le port 554 de la caméra (TCP/UDP). Éviter le port externe 554, car il est souvent analysé et visé par des attaques automatisées","Créer dans la caméra un utilisateur distinct pour la diffusion — avec un accès en lecture seule et sans droits d’administration","Si la caméra prend en charge le filtrage IP, limiter l’accè
67s aux seules adresses IP de notre service. Demander la liste actualisée au support technique","Créer la diffusion"],slide3H3:"Comment connecter une caméra sans IP statique",slide3List:[r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"})," pour les caméras compatibles — la caméra envoie elle-même le flux vidéo au serveur RTSP.ME. Aucune IP statique ni redirection de port nécessaire"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS Bridge"})," pour les caméras existantes — connecte une ou plusieurs caméras RTSP à RTSP.ME sans IP statique ni ports externes ouverts"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS 4MP OEM Agent Bullet"})," ","pour les nouvelles installations — branchez la caméra au réseau et saisissez son ID dans le lien RTSP"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"streaming-agent.html",children:"Agent logiciel"})," pour les caméras RTSP ordinaires — un programme gratuit pour Windows, Linux et ARM envoie le flux de la caméra au service. Sans IP statique ni ports ouverts"]})],learnMore:"En savoir plus"},es:{suptitle:"¿QUÉ?",h2:r.jsxs(r.Fragment,{children:["Requisitos para crear ",r.jsx("br",{})," transmisión RTSP en un sitio web"]}),slide1H3:r.jsx(r.Fragment,{children:"RTSP.ME permite conectar cámaras IP con o sin dirección IP estática. Para la conexión RTSP directa necesitas:"}),slide1List:["Cámara IP, DVR, NVR, XVR (RTSP, h264).","Internet ilimitado.","Dirección IP estática (solo para la conexión directa).","Acceso a la configuración del módem/router."],video:"https://www.youtube.com/embed/YXjZI8DQyj4",slide2H3:"Cómo configurar la conexión directa",slide2List:["Averigua tu dirección IP estática","Encuentra el enlace RTSP de tu cámara","Configura el reenvío, por ejemplo, del puerto externo 10554 al puerto 554 de la cámara (TCP/UDP). Evita usar el puerto externo 554, ya que se escanea con frecuencia y es objetivo de ataques automatizados","Crea en la cámara un usuario independiente para la transmisión — solo con acceso de visualización y sin privilegios de administrador","Si la cámara admite filtrado por IP, limita el acceso únicamente a las direcciones IP de nuestro servicio. Solicita la lista actualizada al soporte técnico","Crea la transmisión"],slide3H3:"Cómo conectar una cámara sin IP estática",slide3List:[r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"})," para cámaras compatibles — la cámara envía el flujo de vídeo por sí misma al servidor RTSP.ME. No se necesita IP estática ni reenvío de puertos"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS Bridge"})," para cámaras existentes — conecta una o varias cámaras RTSP a RTSP.ME sin IP estática ni puertos externos abiertos"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS 4MP OEM Agent Bullet"})," ","para nuevas instalaciones — solo conecta la cámara a la red e introduce su ID en el enlace RTSP"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"streaming-agent.html",children:"Agente de software"})," para cámaras RTSP comunes — un programa gratuito para Windows, Linux y ARM envía el flujo de la cámara al servicio. Sin IP estática ni puertos abiertos"]})],learnMore:"Más información"},it:{suptitle:"CHE COSA?",h2:r.jsxs(r.Fragment,{children:["Requisiti per creare ",r.jsx("br",{})," una trasmissione RTSP sul sito web"]}),slide1H3:r.jsx(r.Fragment,{children:"RTSP.ME consente di collegare telecamere IP con o senza indirizzo IP statico. Per la connessione RTSP diretta occorrono:"}),slide1List:["Telecamera IP, DVR, NVR, XVR (RTSP, h264).","Connessione internet illimitata.","Indirizzo IP statico (solo per la connessione diretta).","Accesso alle impostazioni del modem/router."],video:"https://www.youtube.com/embed/YXjZI8DQyj4",slide2H3:"Come configurare la connessione diretta",slide2List:["Scopri il tuo indirizzo IP statico","Trova il link RTSP della tua telecamera","Configura l’inoltro, ad esempio dalla porta esterna 10554 alla porta 554 della telecamera (TCP/UDP). Evita la porta esterna 554, perché viene spesso scansionata e presa di mira da attacchi automatizzati","Crea nella telecamera un utente separato per la trasmissione — con il solo accesso alla visualizzazione e senza privilegi di amministratore","Se la telecamera supporta il filtro IP, limita l’accesso ai soli indirizzi IP del nostro 
67servizio. Richiedi l’elenco aggiornato all’assistenza tecnica","Crea la trasmissione"],slide3H3:"Come collegare una telecamera senza IP statico",slide3List:[r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"})," per telecamere compatibili — la telecamera invia da sola il flusso video al server RTSP.ME. Non servono IP statico e port forwarding"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS Bridge"})," per telecamere esistenti — collega una o più telecamere RTSP a RTSP.ME senza IP statico e senza porte esterne aperte"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS 4MP OEM Agent Bullet"})," ","per nuove installazioni — collega la telecamera alla rete e inserisci il suo ID nel link RTSP"]}),r.jsxs(r.Fragment,{children:[r.jsx("a",{href:"streaming-agent.html",children:"Agente software"})," per telecamere RTSP comuni — un programma gratuito per Windows, Linux e ARM invia il flusso della telecamera al servizio. Senza IP statico e porte aperte"]})],learnMore:"Scopri di più"},tr:{suptitle:"NE?",h2:r.jsxs(r.Fragment,{children:["Web sitesinde ",r.jsx("br",{})," RTSP yayını oluşturmak için gerekenler"]}),slide1H3:r.jsx(r.Fragment,{children:"RTSP.ME, IP kameraları sabit IP adresiyle veya sabit IP olmadan bağlamayı destekler. Doğrudan RTSP bağlantısı için gerekenler:"}),slide1List:["IP kamera, DVR, NVR, XVR (RTSP, h264).","Sınırsız internet.","Sabit IP adresi (yalnızca doğrudan bağlantı için).","Modem/router ayarlarına erişim."],video:"https://www.youtube.com/embed/YXjZI8DQyj4",slide2H3:"Doğrudan bağlantı nasıl kurulur",slide2List:["Sabit IP adresinizi öğrenin","Kameranızın RTSP bağlantısını bulun","Port yönlendirmesini, örneğin harici 10554 portundan kameranın 554 portuna (TCP/UDP) yapın. Sıkça tarandığı ve otomatik saldırıların hedefi olduğu için harici 554 portunu kullanmayın","Kamerada yayın için ayrı bir kullanıcı oluşturun — yalnızca görüntüleme izni verin, yönetici yetkisi vermeyin","Kamera IP filtrelemeyi destekliyorsa erişimi yalnızca hizmetimizin IP adresleriyle sınırlayın. Güncel IP listesini teknik destekten isteyin","Yayını oluşturun"],slide3H3:"Sabit IP olmadan kamera nasıl bağlanır",slide3List:[r.jsxs(r.Fragment,{children:["Uyumlu kameralar için"," ",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"})," — kamera video akışını RTSP.ME sunucusuna kendisi gönderir. Sabit IP ve port yönlendirme gerekmez"]}),r.jsxs(r.Fragment,{children:["Mevcut kameralar için"," ",r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS Bridge"})," — bir veya birden fazla RTSP kamerayı sabit IP ve açık harici port olmadan RTSP.ME'ye bağlar"]}),r.jsxs(r.Fragment,{children:["Yeni kurulumlar için"," ",r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS 4MP OEM Agent Bullet"})," — kamerayı ağa bağlayın ve ID'sini RTSP bağlantısına girin"]}),r.jsxs(r.Fragment,{children:["Sıradan RTSP kameralar için"," ",r.jsx("a",{href:"streaming-agent.html",children:"Yazılım ajanı"})," — Windows, Linux ve ARM için ücretsiz program kamera akışını hizmete gönderir. Sabit IP ve açık port gerekmez"]})],learnMore:"Daha fazla bilgi"},zh:{suptitle:"什么?",h2:r.jsxs(r.Fragment,{children:["在网站上创建 ",r.jsx("br",{})," RTSP直播的要求"]}),slide1H3:r.jsx(r.Fragment,{children:"RTSP.ME支持连接有固定IP和无固定IP的摄像机。若要直接通过RTSP连接,你需要:"}),slide1List:["IP摄像机、DVR、NVR、XVR(RTSP, h264)。","不限流量的网络。","固定IP地址(仅直接连接需要)。","可访问路由器配置。"],video:"https://www.youtube.com/embed/YXjZI8DQyj4",slide2H3:"如何配置直接连接",slide2List:["确认你的固定IP地址","获取摄像机的RTSP链接","配置端口转发,例如将外部端口10554转发到摄像机的554端口(TCP/UDP)。请勿使用外部端口554,因为该端口经常被扫描并成为自动攻击的目标","å
67œ¨æ‘„像机中为直播创建独立用户,仅授予查看权限,不授予管理员权限","如果摄像机支持IP过滤,请仅允许我们服务的IP地址访问。请向技术支持索取最新的IP地址列表","创建直播"],slide3H3:"如何在没有固定IP的情况下连接摄像机",slide3List:[r.jsxs(r.Fragment,{children:["兼容摄像机使用",r.jsx("a",{href:"rtmp-push-without-static-ip.html",children:"RTMP Push"}),"——摄像机自行将视频流推送到RTSP.ME服务器,无需固定IP和端口转发"]}),r.jsxs(r.Fragment,{children:["现有摄像机使用",r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS Bridge"}),"——无需固定IP和开放外部端口即可将一台或多台RTSP摄像机接入RTSP.ME"]}),r.jsxs(r.Fragment,{children:["新装摄像机选择",r.jsx("a",{href:"our-streaming-equipment.html",children:"MyVMS 4MP OEM Agent Bullet"}),"——只需将摄像机接入网络,并在RTSP链接中输入摄像机ID"]}),r.jsxs(r.Fragment,{children:["普通RTSP摄像机使用",r.jsx("a",{href:"streaming-agent.html",children:"软件代理"}),"——适用于Windows、Linux和ARM的免费程序,将摄像机视频流发送到服务器,无需固定IP和开放端口"]})],learnMore:"了解更多"}},as=3,tj=()=>{const{lang:e}=V(),t=ej[e],[n,a]=x.useState(0),s=()=>a(l=>Math.max(0,l-1)),i=()=>a(l=>Math.min(as-1,l+1));return r.jsx("section",{className:"requirements section",id:"requirements",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"requirements__top top",children:[r.jsx("span",{className:"requirements__suptitle suptitle",children:t.suptitle}),r.jsx("h2",{className:"requirements__h2 h2 anim",children:t.h2})]}),r.jsxs("div",{className:"requirements__swiper swiper",children:[r.jsxs("div",{className:"swiper-wrapper",style:{display:"flex",flexDirection:"row",transform:`translateX(-${n*100}%)`,transition:"transform 0.3s ease-in-out"},children:[r.jsxs("div",{className:"requirements__slide swiper-slide",style:{flex:"0 0 100%",width:"100%"},children:[r.jsxs("div",{className:"requirements__content",children:[r.jsx("h3",{className:"requirements__h3 h3 anim",children:t.slide1H3}),r.jsx("ol",{className:"requirements__list",children:t.slide1List.map(l=>r.jsx("li",{className:"requirements__item text",children:l},l))})]}),r.jsx("div",{className:"requirements__img",children:r.jsx("iframe",{width:"928",height:"522",src:t.video,title:"RTSP.ME",frameBorder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerPolicy:"strict-origin-when-cross-origin",allowFullScreen:!0})})]}),r.jsxs("div",{className:"requirements__slide swiper-slide",style:{flex:"0 0 100%",width:"100%"},children:[r.jsxs("div",{className:"requirements__content",children:[r.jsx("h3",{className:"requirements__h3 h3 anim",children:t.slide2H3}),r.jsx("ol",{className:"requirements__list",children:t.slide2List.map(l=>r.jsx("li",{className:"requirements__item text",children:l},l))})]}),r.jsx("div",{className:"requirements__img",children:r.jsx(le,{webp:"/landing/img/requirements/02.webp",fallback:"/landing/img/requirements/02.png",width:869,height:480,style:{display:"block",width:"100%",height:"100%"},imgStyle:{objectFit:"cover"}})})]}),r.jsxs("div",{className:"requirements__slide swiper-slide",style:{flex:"0 0 100%",width:"100%"},children:[r.jsxs("div",{className:"requirements__content",children:[r.jsx("h3",{className:"requirements__h3 h3 anim",children:t.slide3H3}),r.jsx("ol",{className:"requirements__list",children:t.slide3List.map((l,o)=>r.jsx("li",{className:"requirements__item text",children:l},o))})]}),r.jsxs("div",{className:"requirements__img",children:[r.jsx(le,{webp:"/landing/img/requirements/03.webp",fallback:"/landing/img/requirements/03.png",width:869,height:480,style:{display:"block",width:"100%",height:"100%"},imgStyle:{objectFit:"cover"}}),r.jsx("a",{className:"requirements__btn btn btn--red",href:"how-to-stream-without-static-ip.html",children:t.learnMore})]})]})]}),r.jsx("div",{className:"requirements__bottom",children:r.jsxs("div",{className:"requirements__row",children:[r.jsxs("div",{className:"requirements__buttons",children:[r.jsx("button",{className:`requirements__button btn-reset${n===0?" swiper-button-disabled":""}`,id:"btn-prev",onClick:s,disabled:n===0,"aria-label":"Previous slide",children:r.jsx("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M14 16L10 12L14 8",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),r.jsx("button",{className:`requirements__button btn-reset${n===as-1?" swiper-button-disabled":""}`,id:"btn-next",onClick:i,disabled:n===as-1,"aria-label":"Next slide",children:r.jsx("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M10 8L14 12L10 16",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),r.jsxs("div",{className:"requirements__counter counter",children:[n+1," / ",as]})]})})]})]})})},rj={ru:{suptitle:"Монетизация",h2:"Монетизация трансляций",subtitle:"Получайте поддержку от зрителей или продавайте доступ к просмотру прямо через плеер",donateH3:"Поддержка трансляции зрителями",donateP:["Монетизируйте трансляцию с помощью добровольных пожертвований от зрителей.","В плеере появится кнопка «Поддержать трансляцию», через которую зрители смогут отправить любую сумму в знак поддержки автора или проекта.","100% полученной суммы зачисляется на ваш баланс и может использоваться для оплаты услуг {d}.","Подходит для публичных веб-камер, трансляций мероприятий, туристических объектов, приютов, природных и других онлайн-проектов."],paidH3:"Продавайте доступ к трансляции",paidP:["Сделайте просмотр вашей трансляции платным и самостоятельно определите стоимость и срок доступа.","Зритель оплачивает просмотр на выбранный период и получает персональный код доступа на электронную почту. После ввода кода трансляция становится доступна на весь оплаченный срок.","В личном кабинете доступен список всех зрителей, купивших доступ, с информацией о сроке действия каждой подписки и дате её окончания.","Пока платный доступ включён, плеер запрашивает код у всех зрителей.","Подходит для закрытых мероприятий, обучающих трансляций, спортивных событий, профессиональных камер и другого эксклюзивного контента."]},en:{suptitle:"Monetization",h2:"Monetize your broadcasts",subtitle:"Get support from your viewers or sell access to the stream right in the player",donateH3:"Viewer support for your stream",donateP:["Monetize your broadcast through voluntary contributions from viewers.","A “Support this stream” button appears in the player, letting viewers send any amount to back the author or the project.","100% of what you receive is credited to your balance and can be spent on {d} services.","A good fit for public webcams, event broadcasts, tourist landmarks, animal shelters, nature and other online projects."],paidH3:"Sell access to your broadcast",paidP:["Make watching your stream paid and set the price and the access period yourself.","The viewer pays for the peri
67od they choose and receives a personal access code by email. Once the code is entered, the stream stays open for the whole paid period.","Your account lists every viewer who bought access, with the duration of each subscription and its end date.","While paid access is on, the player asks every viewer for a code.","A good fit for closed events, training broadcasts, sports events, professional cameras and other exclusive content."]},de:{suptitle:"Monetarisierung",h2:"Monetarisierung von Übertragungen",subtitle:"Erhalten Sie Unterstützung von Zuschauern oder verkaufen Sie den Zugang zum Stream direkt im Player",donateH3:"Unterstützung des Streams durch Zuschauer",donateP:["Monetarisieren Sie Ihre Übertragung durch freiwillige Spenden der Zuschauer.","Im Player erscheint die Schaltfläche „Diesen Stream unterstützen“, über die Zuschauer einen beliebigen Betrag zur Unterstützung des Autors oder des Projekts senden können.","100 % des erhaltenen Betrags werden Ihrem Guthaben zugebucht und können für {d}-Leistungen verwendet werden.","Geeignet für öffentliche Webcams, Veranstaltungsübertragungen, Sehenswürdigkeiten, Tierheime, Natur- und andere Online-Projekte."],paidH3:"Verkaufen Sie den Zugang zur Übertragung",paidP:["Machen Sie Ihren Stream kostenpflichtig und bestimmen Sie Preis und Zugangsdauer selbst.","Der Zuschauer bezahlt den gewählten Zeitraum und erhält einen persönlichen Zugangscode per E-Mail. Nach Eingabe des Codes bleibt der Stream für den gesamten bezahlten Zeitraum verfügbar.","Im Konto sehen Sie alle Zuschauer, die Zugang gekauft haben, samt Laufzeit und Enddatum jedes Zugangs.","Solange der kostenpflichtige Zugang aktiv ist, fragt der Player bei jedem Zuschauer den Code ab.","Geeignet für geschlossene Veranstaltungen, Schulungsübertragungen, Sportevents, professionelle Kameras und andere exklusive Inhalte."]},pr:{suptitle:"Monetização",h2:"Monetização de transmissões",subtitle:"Receba apoio dos espectadores ou venda o acesso à transmissão diretamente no player",donateH3:"Apoio dos espectadores à transmissão",donateP:["Monetize sua transmissão com doações voluntárias dos espectadores.","No player aparece o botão “Apoiar esta transmissão”, pelo qual os espectadores podem enviar qualquer valor em apoio ao autor ou ao projeto.","100% do valor recebido é creditado no seu saldo e pode ser usado para pagar os serviços do {d}.","Ideal para webcams públicas, transmissões de eventos, pontos turísticos, abrigos de animais, natureza e outros projetos online."],paidH3:"Venda o acesso à sua transmissão",paidP:["Torne sua transmissão paga e defina você mesmo o preço e o prazo de acesso.","O espectador paga pelo período escolhido e recebe um código de acesso pessoal por e-mail. Depois de inserir o código, a transmissão fica disponível por todo o período pago.","Na sua conta há a lista de todos os espectadores que compraram acesso, com a duração de cada assinatura e a data de término.","Enquanto o acesso pago estiver ativo, o player pede o código a todos os espectadores.","Ideal para eventos fechados, transmissões de treinamento, eventos esportivos, câmeras profissionais e outros conteúdos exclusivos."]},fr:{suptitle:"Monétisation",h2:"Monétisation des diffusions",subtitle:"Recevez le soutien de vos spectateurs ou vendez l’accès à la diffusion directement dans le lecteur",donateH3:"Le soutien des spectateurs à votre diffusion",donateP:["Monétisez votre diffusion grâce aux dons volontaires des spectateurs.","Un bouton « Soutenir cette diffusion » apparaît dans le lecteur : les spectateurs peuvent envoyer le montant de leur choix pour soutenir l’auteur ou le projet.","100 % du montant reçu est crédité sur votre solde et peut servir à payer les services {d}.","Convient aux webcams publiques, aux diffusions d’événements, aux sites touristiques, aux refuges pour animaux, à la nature et à d’autres projets en ligne."],paidH3:"Vendez l’accès à votre diffusion",paidP:["Rendez votre diffusion payante et fixez vous-même le prix et la durée d’accès.","Le spectateur paie la période choisie et reçoit un code d’accès personnel par e-mail. Une fois le code saisi, la diffusion reste ouverte pendant toute la période payée.","Votre espace personnel liste tous les spectateurs ayant acheté un accès, avec la durée de chaque abonnement et sa date de fin.","Tant que l’accè
67s payant est activé, le lecteur demande le code à chaque spectateur.","Convient aux événements privés, aux diffusions de formation, aux événements sportifs, aux caméras professionnelles et à d’autres contenus exclusifs."]},es:{suptitle:"Monetización",h2:"Monetización de transmisiones",subtitle:"Recibe el apoyo de tus espectadores o vende el acceso a la transmisión directamente en el reproductor",donateH3:"Apoyo de los espectadores a la transmisión",donateP:["Monetiza tu transmisión con aportaciones voluntarias de los espectadores.","En el reproductor aparece el botón «Apoyar esta transmisión», con el que los espectadores pueden enviar cualquier cantidad en apoyo del autor o del proyecto.","El 100 % de lo recibido se abona en tu saldo y puede usarse para pagar los servicios de {d}.","Ideal para webcams públicas, transmisiones de eventos, lugares turísticos, refugios de animales, naturaleza y otros proyectos en línea."],paidH3:"Vende el acceso a tu transmisión",paidP:["Haz que ver tu transmisión sea de pago y define tú mismo el precio y el plazo de acceso.","El espectador paga el periodo que elija y recibe un código de acceso personal por correo. Tras introducir el código, la transmisión queda disponible durante todo el periodo pagado.","En tu cuenta tienes la lista de todos los espectadores que compraron acceso, con la duración de cada suscripción y su fecha de fin.","Mientras el acceso de pago esté activo, el reproductor pide el código a todos los espectadores.","Ideal para eventos cerrados, transmisiones formativas, eventos deportivos, cámaras profesionales y otro contenido exclusivo."]},it:{suptitle:"Monetizzazione",h2:"Monetizzazione delle trasmissioni",subtitle:"Ricevi il sostegno degli spettatori o vendi l’accesso alla trasmissione direttamente nel player",donateH3:"Il sostegno degli spettatori alla trasmissione",donateP:["Monetizza la tua trasmissione con donazioni volontarie degli spettatori.","Nel player compare il pulsante «Sostieni questa trasmissione», con cui gli spettatori possono inviare qualsiasi importo a sostegno dell’autore o del progetto.","Il 100% dell’importo ricevuto viene accreditato sul tuo saldo e può essere usato per pagare i servizi {d}.","Adatto a webcam pubbliche, trasmissioni di eventi, luoghi turistici, rifugi per animali, natura e altri progetti online."],paidH3:"Vendi l’accesso alla trasmissione",paidP:["Rendi la visione della tua trasmissione a pagamento e stabilisci tu prezzo e durata dell’accesso.","Lo spettatore paga il periodo scelto e riceve un codice di accesso personale via e-mail. Dopo l’inserimento del codice la trasmissione resta disponibile per tutto il periodo pagato.","Nell’area personale trovi l’elenco di tutti gli spettatori che hanno acquistato l’accesso, con la durata di ogni abbonamento e la data di scadenza.","Finché l’accesso a pagamento è attivo, il player chiede il codice a tutti gli spettatori.","Adatto a eventi privati, trasmissioni formative, eventi sportivi, telecamere professionali e altri contenuti esclusivi."]},tr:{suptitle:"Gelir elde etme",h2:"Yayınlardan gelir elde etme",subtitle:"İzleyicilerinizden destek alın veya yayına erişimi doğrudan oynatıcı üzerinden satın",donateH3:"İzleyicilerin yayına desteği",donateP:["Yayınınızı izleyicilerin gönüllü bağışlarıyla gelire dönüştürün.","Oynatıcıda “Bu yayını destekle” düğmesi görünür; izleyiciler yazarı veya projeyi desteklemek için istedikleri tutarı gönderebilir.","Gelen tutarın %100’ü bakiyenize eklenir ve {d} hizmetlerinin ödemesinde kullanılabilir.","Halka açık kameralar, etkinlik yayınları, turistik yerler, hayvan barınakları, doğa ve diğer çevrimiçi projeler için uygundur."],paidH3:"Yayına erişimi satın",paidP:["Yayınınızın izlenmesini ücretli hâle getirin, fiyatı ve erişim süresini kendiniz belirleyin.","İzleyici seçtiği dönem için ödeme yapar ve e-postayla kişisel bir erişim kodu alır. Kod girildikten sonra yayın, ödenen sürenin tamamı boyunca açık kalır.","Hesabınızda erişim satın alan tüm izleyicilerin listesi, her aboneliğin süresi ve bitiş tarihiyle birlikte yer alır.","Ücretli erişim açık olduğu sürece oynatıcı her izleyiciden kod ister.","Kapalı etkinlikler, eğitim yayınları, spor organizasyonları, profesyonel kameralar ve diğer özel içerikler için uygundur."]},zh:{suptitle:"变现",h2:"直播变现",subtitle:"在播放器中直接获得观众支持,或出售观看权限",donateH3:"观众对直播的支持",donateP:["通过观众的自愿打赏为你的直播带来收入。","播放器中会出现“支持这个直播â€
67æŒ‰é’®ï¼Œè§‚众可以发送任意金额,以支持作者或项目。","收到的金额100%计入你的余额,可用于支付 {d} 的服务费用。","适用于公共网络摄像头、活动直播、旅游景点、动物救助站、自然景观等在线项目。"],paidH3:"出售直播观看权限",paidP:["把你的直播设为付费观看,价格和访问期限由你自己决定。","观众为所选周期付费,并通过电子邮件收到个人访问码。输入访问码后,在整个付费周期内都可以观看。","在个人后台可以查看所有购买了访问权限的观众列表,以及每份订阅的有效期和到期日期。","只要付费访问处于开启状态,播放器会向所有观众索取访问码。","适用于封闭活动、培训直播、体育赛事、专业摄像头以及其他独家内容。"]}},ss=(e,t)=>`/landing/img/monetization/${t}-${e==="ru"?"ru":"en"}`,ed=({items:e})=>r.jsx("p",{className:"broadcast__text text",children:e.map((t,n)=>r.jsxs("span",{children:[n>0&&r.jsxs(r.Fragment,{children:[r.jsx("br",{}),r.jsx("br",{})]}),t]},n))}),nj=()=>{const{lang:e}=V(),t=rj[e],n=cu(e),a=s=>s.map(i=>i.replace("{d}",n));return r.jsx("section",{className:"broadcast section",id:"monetization",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"broadcast__top top",children:[r.jsx("span",{className:"broadcast__suptitle suptitle",children:t.suptitle}),r.jsx("h2",{className:"broadcast__h2 h2 anim",children:t.h2}),r.jsx("h3",{className:"h3 anim",style:{gridColumn:"1 / -1",width:"100%",maxWidth:"none"},children:t.subtitle})]}),r.jsxs("ul",{className:"broadcast__list list-reset",children:[r.jsxs("li",{className:"broadcast__item mblock",children:[r.jsxs("div",{className:"broadcast__content mblock__content",children:[r.jsx("h3",{className:"broadcast__h3 h3 anim show",children:t.donateH3}),r.jsx(ed,{items:a(t.donateP)})]}),r.jsx("div",{className:"broadcast__img anim-scale mblock__img",children:r.jsx(le,{webp:`${ss(e,"donate")}.webp`,fallback:`${ss(e,"donate")}.png`,width:727,height:410,alt:t.donateH3,imgClassName:"img"})})]}),r.jsxs("li",{className:"broadcast__item mblock",children:[r.jsxs("div",{className:"broadcast__content mblock__content",children:[r.jsx("h3",{className:"broadcast__h3 h3 anim",children:t.paidH3}),r.jsx(ed,{items:a(t.paidP)})]}),r.jsx("div",{className:"broadcast__img anim-scale mblock__img",children:r.jsx(le,{webp:`${ss(e,"paid")}.webp`,fallback:`${ss(e,"paid")}.png`,width:727,height:410,alt:t.paidH3,imgClassName:"img"})})]})]})]})})},aj={youtube:{color:"#FF0000",path:"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"},facebook:{color:"#0866FF",path:"M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z"},twitch:{color:"#9146FF",path:"M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"},vkvideo:{color:"#0077FF",path:"m9.489.004.729-.003h3.564l.73.003.914.01.433.007.418.011.403.014.388.016.374.021.36.025.345.03.333.033c1.74.196 2.933.616 3.833 1.516.9.9 1.32 2.092 1.516 3.833l.034.333.029.346.025.36.02.373.025.588.012.41.013.644.009.915.004.98-.001 3.313-.003.73-.01.914-.007.433-.011.418-.014.403-.016.388-.021.374-.025.36-.03.345-.033.333c-.196 1.74-.616 2.933-1.516 3.833-.9.9-2.092 1.32-3.833 1.516l-.333.034-.346.029-.36.025-.373.02-.588.025-.41.012-.644.013-.915.009-.98.004-3.313-.001-.73-.003-.914-.01-.433-.007-.418
67-.011-.403-.014-.388-.016-.374-.021-.36-.025-.345-.03-.333-.033c-1.74-.196-2.933-.616-3.833-1.516-.9-.9-1.32-2.092-1.516-3.833l-.034-.333-.029-.346-.025-.36-.02-.373-.025-.588-.012-.41-.013-.644-.009-.915-.004-.98.001-3.313.003-.73.01-.914.007-.433.011-.418.014-.403.016-.388.021-.374.025-.36.03-.345.033-.333c.196-1.74.616-2.933 1.516-3.833.9-.9 2.092-1.32 3.833-1.516l.333-.034.346-.029.36-.025.373-.02.588-.025.41-.012.644-.013.915-.009ZM6.79 7.3H4.05c.13 6.24 3.25 9.99 8.72 9.99h.31v-3.57c2.01.2 3.53 1.67 4.14 3.57h2.84c-.78-2.84-2.83-4.41-4.11-5.01 1.28-.74 3.08-2.54 3.51-4.98h-2.58c-.56 1.98-2.22 3.78-3.8 3.95V7.3H10.5v6.92c-1.6-.4-3.62-2.34-3.71-6.92Z"}},sj=({platform:e,size:t=22,color:n})=>{const a=aj[e];return r.jsx("svg",{viewBox:"0 0 24 24",width:t,height:t,fill:n??a.color,"aria-hidden":"true",focusable:"false",children:r.jsx("path",{d:a.path})})},ij={ru:{suptitle:"Ретрансляция",h2:r.jsxs(r.Fragment,{children:["Ретрансляция на YouTube, ",r.jsx("br",{})," Facebook, Twitch и VK Видео"]}),lead:"Передавайте видео с IP-камеры напрямую на популярные стриминговые платформы через {d}.",points:["Подключите камеру один раз и настройте ретрансляцию на YouTube Live, Facebook Live, Twitch или VK Видео.","{d} получает RTSP-поток с камеры и автоматически передаёт его на выбранную платформу — без компьютера, дополнительного программного обеспечения и постоянно запущенного энкодера.","Работает на серверах {d} круглосуточно и автоматически восстанавливается после временной потери соединения с камерой."],price:"Стоимость — от 360 ₽ в месяц.",fit:"Подходит для веб-камер, туристических объектов, строек, мероприятий, природных трансляций и других проектов, которым нужен постоянный эфир на YouTube, Facebook, Twitch или VK Видео.",btn:"Создать аккаунт"},en:{suptitle:"Restreaming",h2:r.jsxs(r.Fragment,{children:["Restreaming to YouTube, ",r.jsx("br",{})," Facebook, Twitch and VK Video"]}),lead:"Send video from an IP camera straight to the popular streaming platforms through {d}.",points:["Connect the camera once and set up restreaming to YouTube Live, Facebook Live, Twitch or VK Video.","{d} pulls the RTSP stream from the camera and forwards it to the platform you picked — with no computer, no extra software and no encoder left running.","It runs on {d} servers around the clock and recovers by itself after a temporary loss of connection to the camera."],price:"From €10 per month.",fit:"A good fit for webcams, tourist landmarks, construction sites, events, nature streams and any other project that needs to stay on air on YouTube, Facebook, Twitch or VK Video.",btn:"Create account"},de:{suptitle:"Weiterleitung",h2:r.jsxs(r.Fragment,{children:["Weiterleitung an YouTube, ",r.jsx("br",{})," Facebook, Twitch und VK Video"]}),lead:"Übertragen Sie das Video einer IP-Kamera über {d} direkt an die bekannten Streaming-Plattformen.",points:["Kamera einmal anbinden und die Weiterleitung an YouTube Live, Facebook Live, Twitch oder VK Video einrichten.","{d} holt den RTSP-Stream von der Kamera und überträgt ihn automatisch an die gewählte Plattform — ohne Computer, ohne Zusatzsoftware und ohne dauerhaft laufenden Encoder.","Läuft rund um die Uhr auf den Servern von {d} und stellt sich nach einem kurzzeitigen Verbindungsverlust zur Kamera selbst wieder her."],price:"Ab 10 € pro Monat.",fit:"Geeignet für Webcams, Sehenswürdigkeiten, Baustellen, Veranstaltungen, Naturübertragungen und andere Projekte, die dauerhaft auf YouTube, Facebook, Twitch oder VK Video senden möchten.",btn:"Konto erstellen"},pr:{suptitle:"Retransmissão",h2:r.jsxs(r.Fragment,{children:["Retransmissão para YouTube, ",r.jsx("br",{})," Facebook, Twitch e VK Video"]}),lead:"Envie o vídeo de uma câmera IP diretamente para as principais plataformas de streaming através do {d}.",points:["Conecte a câmera uma vez e configure a retransmissão para YouTube Live, Facebook Live, Twitch ou VK Video.","O {d} recebe o fluxo RTSP da câmera e o envia automaticamente para a plataforma escolhida — sem computador, sem software adicional e sem encoder ligado o tempo todo.","Funciona nos servidores do {d} 24 horas por dia e se restabelece sozinho após uma perda temporária de conexão com a câmera."],price:"A partir de 10 € por mês.",fit:"Ideal para webcams, pontos turísticos, obras, eventos, transmissões da natureza e outros projetos que precisam ficar no ar no YouTube, Facebook, Twitch ou VK Video.",btn:"Criar conta"},fr:{suptitle:"Rediffusion",h2:r.jsxs(r.Fragment,{children:["Rediffusion vers YouTube, ",r.jsx("br",{})," Facebook, Twitch et VK Video"]}),lead:"Envoyez la vidéo d’une caméra IP directement vers les grandes plateformes de streaming via {d}.",points:["Connectez la caméra une seule fois et configurez la rediffusion vers YouTube Live, Facebook Live, Twitch ou VK Video.","{d} récupère le flux RTSP de la caméra et le transmet automatiquement à la plateforme choisie — sans ordinateur, sans logiciel supplémentaire et sans encodeur allum
67é en permanence.","Tourne sur les serveurs {d} 24 h/24 et se rétablit de lui-même après une perte de connexion temporaire avec la caméra."],price:"À partir de 10 € par mois.",fit:"Convient aux webcams, aux sites touristiques, aux chantiers, aux événements, aux diffusions nature et à tout projet qui doit rester en direct sur YouTube, Facebook, Twitch ou VK Video.",btn:"Créer un compte"},es:{suptitle:"Retransmisión",h2:r.jsxs(r.Fragment,{children:["Retransmisión a YouTube, ",r.jsx("br",{})," Facebook, Twitch y VK Video"]}),lead:"Envía el vídeo de una cámara IP directamente a las principales plataformas de streaming a través de {d}.",points:["Conecta la cámara una vez y configura la retransmisión a YouTube Live, Facebook Live, Twitch o VK Video.","{d} recibe el flujo RTSP de la cámara y lo envía automáticamente a la plataforma elegida: sin ordenador, sin software adicional y sin un codificador funcionando todo el tiempo.","Funciona en los servidores de {d} las 24 horas y se restablece por sí solo tras una pérdida temporal de conexión con la cámara."],price:"Desde 10 € al mes.",fit:"Ideal para webcams, lugares turísticos, obras, eventos, transmisiones de naturaleza y cualquier otro proyecto que necesite estar siempre en directo en YouTube, Facebook, Twitch o VK Video.",btn:"Crear cuenta"},it:{suptitle:"Ritrasmissione",h2:r.jsxs(r.Fragment,{children:["Ritrasmissione su YouTube, ",r.jsx("br",{})," Facebook, Twitch e VK Video"]}),lead:"Invia il video di una telecamera IP direttamente alle principali piattaforme di streaming tramite {d}.",points:["Collega la telecamera una volta e configura la ritrasmissione su YouTube Live, Facebook Live, Twitch o VK Video.","{d} riceve il flusso RTSP dalla telecamera e lo inoltra automaticamente alla piattaforma scelta, senza computer, senza software aggiuntivo e senza un encoder sempre acceso.","Funziona sui server {d} 24 ore su 24 e si ripristina da solo dopo una perdita temporanea di connessione con la telecamera."],price:"Da 10 € al mese.",fit:"Adatto a webcam, luoghi turistici, cantieri, eventi, trasmissioni dalla natura e ad altri progetti che devono restare in onda su YouTube, Facebook, Twitch o VK Video.",btn:"Crea account"},tr:{suptitle:"Yeniden yayın",h2:r.jsxs(r.Fragment,{children:["YouTube, Facebook, Twitch ",r.jsx("br",{})," ve VK Video’ya yeniden yayın"]}),lead:"IP kameradan gelen görüntüyü {d} üzerinden doğrudan popüler yayın platformlarına gönderin.",points:["Kamerayı bir kez bağlayın ve YouTube Live, Facebook Live, Twitch veya VK Video’ya yeniden yayını ayarlayın.","{d}, kameradan RTSP akışını alır ve seçtiğiniz platforma otomatik olarak iletir — bilgisayar, ek yazılım ve sürekli açık bir kodlayıcı olmadan.","{d} sunucularında kesintisiz çalışır ve kamerayla bağlantı geçici olarak koptuğunda kendiliğinden yeniden kurulur."],price:"Ayda 10 €’dan başlayan fiyatlarla.",fit:"Web kameraları, turistik yerler, şantiyeler, etkinlikler, doğa yayınları ve YouTube, Facebook, Twitch ya da VK Video’da sürekli yayında kalması gereken diğer projeler için uygundur.",btn:"Hesap Oluştur"},zh:{suptitle:"转推",h2:r.jsxs(r.Fragment,{children:["转推到 YouTube、Facebook、 ",r.jsx("br",{})," Twitch 和 VK Video"]}),lead:"通过 {d} 把 IP 摄像机的视频直接推送到主流直播平台。",points:["摄像机只需接入一次,即可设置到 YouTube Live、Facebook Live、Twitch 或 VK Video 的转推。","{d} 获取摄像机的 RTSP 流并自动转推到你选择的平台——无需电脑、无需额外软件,也不必一直运行编码器。","转推在 {d} 的服务器上全天候运行,与摄像机的连接短暂中断后会自动恢复。"],price:"每月 10 € 起。",fit:"适用于网络摄像头、旅游景点、施工现场、活动、自然景观直播,以及其他需要在 YouTube、Facebook、Twitch 或 VK Video 上持续开播的项目。",btn:"创建账户"}},lj=[{id:"youtube",label:"YouTube Live"},{id:"facebook",label:"Facebook Live"},{id:"twitch",label:"Twitch"},{id:"vkvideo",label:"VK Video"}],oj=()=>{const{lang:e,openPopup:t}=V(),n=ij[e],a=cu(e),s=i=>i.split("{d}
67").join(a);return r.jsx("section",{className:"film section",id:"restream",children:r.jsx("div",{className:"container",children:r.jsx("div",{className:"film__inner restream",children:r.jsxs("div",{className:"restream__grid",children:[r.jsxs("div",{className:"restream__content",children:[r.jsx("span",{className:"restream__suptitle",children:n.suptitle}),r.jsx("h2",{className:"film__h2 h2 anim",children:n.h2}),r.jsx("p",{className:"restream__lead",children:s(n.lead)}),r.jsx("ul",{className:"restream__list",children:n.points.map(i=>r.jsx("li",{className:"restream__item",children:s(i)},i))}),r.jsx("p",{className:"restream__price",children:n.price}),r.jsx("p",{className:"restream__fit",children:n.fit}),r.jsx("button",{className:"restream__btn btn btn--white popup-link auth btn-reset",onClick:()=>t("popup-registration"),children:n.btn})]}),r.jsx("ul",{className:"restream__marks",children:lj.map(i=>r.jsxs("li",{className:"restream__mark",children:[r.jsx(sj,{platform:i.id,size:44,color:"#fff"}),r.jsx("span",{children:i.label})]},i.id))})]})})})})},uj={en:{suptitle:r.jsxs(r.Fragment,{children:["1st camera free ",r.jsx("br",{})," (up to 1,000 views per month)"]}),h2:r.jsxs(r.Fragment,{children:["Our tariffs ",r.jsx("br",{})," for using the service"]}),postpayLabel:"Post-payment",postpayTitle:"Start streaming now. Pay later.",postpayText:"No upfront payment: use the service throughout the month and receive an invoice at the end based on actual views. Or activate an annual subscription and forget about view-based charges entirely.",thViews:"Views per month",thPrice:"Price",freeViews:r.jsxs(r.Fragment,{children:["0 - 1 000 ( First Camera )",r.jsx("br",{})," 0 - 100 ( Each additional camera )"]}),free:"Free",price5:"5 Euro",price20:"20 Euro",price100:"100 Euro",conditions:"Conditions",p1:"The price is indicated for a monthly subscription for each camera.",p2:"We operate on a post-payment system: on the last day of the month, we calculate the views and send an invoice via email.",p3:"If payment is not made within 20 days, the broadcast will be blocked.",p4:"The first camera is free for up to 1,000 views per month, for others — up to 100.",p
675:"A view is counted when our HTML player, which provides live streaming, is launched. Views are not counted only if the broadcast is turned off.",p6:"Payment can be made via bank card or company invoice.",p7:"Up to 100 views per month are free (except RTMP Push).",extrasTitle:"Additional services",extrasIntro:"Enable the options you need separately for each camera.",extras:[{title:"Hide the logo",price:"20 Euro",period:"per month / camera",text:"Remove the RTSP.ME logo from the player for a fully branded viewing experience."},{title:"H.265 support",price:"20 Euro",period:"per month / camera",text:"Support is enabled automatically when we detect that the camera is streaming with the H.265 (HEVC) codec."},{title:"Annual subscription",price:"180 Euro",period:"per year / camera",text:"Includes unlimited views, H.265 support, and logo hiding with no additional view charges.",badge:"Best value"}]},ru:{suptitle:r.jsxs(r.Fragment,{children:["1-я камера бесплатно ",r.jsx("br",{})," (до 1 000 просмотров в месяц)"]}),h2:r.jsxs(r.Fragment,{children:["Наши Тарифы ",r.jsx("br",{})," на использование сервиса"]}),postpayLabel:"Постоплата",postpayTitle:"Запускайте сейчас — платите потом",postpayText:"Никакой предоплаты: пользуйтесь сервисом весь месяц, а в конце получите счет только за фактические просмотры. Или подключите годовую подписку и вообще не переживайте о расчетах и оплате за просмотры.",thViews:"Просмотры в месяц",thPrice:"Цена за камеру",freeViews:r.jsxs(r.Fragment,{children:["0 - 1 000 ( Первая камера )",r.jsx("br",{})," 0 - 100 ( Каждая следующая камера )"]}),free:"Бесплатно",price5:"360 руб",price20:"1 200 руб",price100:"9 600 руб",conditions:"Условия",p1:"Стоимость указана за ежемесячную подписку для каждой камеры.",p2:"Мы работаем по системе постоплаты: в последний день месяца мы подсчитываем показы и выставляем счет на email.",p3:"Если оплата не будет произведена в течение 20 дней, трансляция будет заблокирована.",p4:"Первая камера бесплатна до 1 000 просмотров в месяц, для остальных — до 100.",p5:"Просмотром считается запуск нашего HTML-плеера, который обеспечивает онлайн-трансляцию. Показы не учитываются только в случае, если трансляция выключена в личном кабинете rtsp.ru.",p6:"Оплатить можно с помощью банковской карты или по счету для организаций.",p7:"До 100 показов в месяц — бесплатно (кроме RTMP Push).",extrasTitle:"Дополнительные услуги",extrasIntro:"Подключайте нужные возможности отдельно для каждой камеры.",extras:[{title:"Скрытие логотипа",price:"1 200 ₽",period:"в месяц / камера",text:"Уберите логотип RTSP.ME из плеера, чтобы трансляция полностью соответствовала вашему бренду."},{title:"Поддержка H.265",price:"1 200 ₽",period:"в месяц / камера",text:"Поддержка активируется автоматически, когда мы определяем, что камера передает поток в формате H.265 (HEVC)."},{title:"Годовая подписка",price:"9 600 ₽",period:"в год / камера",text:"Включает безлимитные просмотры, поддержку H.265 и скрытие логотипа без доплат за показы.",badge:"Выгодный выбор"}]},de:{suptitle:r.jsxs(r.Fragment,{children:["1. Kamera kostenlos ",r.jsx("br",{})," (bis zu 1.000 Aufrufe pro Monat)"]}),h2:r.jsxs(r.Fragment,{children:["Unsere Tarife ",r.jsx("br",{})," für die Nutzung des Service"]}),postpayLabel:"Nachträgliche Zahlung",postpayTitle:"Jetzt streamen. Später bezahlen.",postpayText:"Keine Vorauszahlung: Nutzen Sie den Service den ganzen Monat und erhalten Sie am Ende eine Rechnung nach den tatsächlichen Aufrufen. Oder aktivieren Sie ein Jahresabonnement und vergessen Sie die aufrufbasierte Abrechnung vollständig.",thViews:"Aufrufe pro Monat",thPrice:"Preis",freeViews:r.jsxs(r.Fragment,{children:["0 - 1 000 ( Erste Kamera )",r.jsx("br",{})," 0 - 100 ( Jede zusätzliche Kamera )"]}),free:"Kostenlos",price5:"5 Euro",price20:"20 Euro",price100:"100 Euro",conditions:"Bedingungen",p1:"Die angegebenen Preise gelten pro Monat und pro Kamera.",p2:"Wir arbeiten mit einer nachträglichen Abrechnung: Am letzten Tag des Monats berechnen wir die Aufrufe und senden eine Rechnung per E-Mail.",p3:"Bei Nichtzahlung innerhalb von 20 Tagen wird der Stream deaktiviert.",p4:"Die erste Kamera ist bis zu 1.000 Aufrufe pro Monat kostenlos, für weitere Kameras – bis zu 100 Aufrufe.",p5:"Ein Aufruf wird gezählt, wenn unser HTML-Player zum Live-Streaming gestartet wird. Aufrufe werden nicht gezählt, wenn die Übertragung ausgeschaltet ist.",p6:"Die Bezahlung kann per Kreditkarte oder Firmenrechnung erfolgen.",p7:"Bis zu 100 Aufrufe pro Monat sind kostenlos (außer RTMP Push).",extrasTitle:"Zusätzliche Leistungen",extrasIntro:"Aktivieren Sie die gewünschten Optionen für jede Kamera einzeln.",extras:[{title:"Logo ausblenden",price:"20 Euro",period:"pro Monat / Kamera",text:"Entfernen Sie das RTSP.ME-Logo aus dem Player für einen vollständig gebrandeten Auftritt."},{title:"H.265-Unterstützung",price:"20 Euro",period:"pro Monat / Kamera",text:"Die Unterstützung wird automatisch aktiviert, sobald wir erkennen, dass die Kamera mit dem Codec H.265 (HEVC) streamt."},{title:"Jahresabonnement",price:"180 Euro",period:"pro Jahr / Kamera",text:"Enthält unbegrenzte Aufrufe, H.265-Unterstützung und das Ausblenden des Logos ohne zusätzliche Aufrufkosten.",badge:"Beste Wahl"}]},pr:{suptitle:r.jsxs(r.Fragment,{children:["1ª câmera grátis ",r.jsx("br",{})," (até 1.000 visualizações mensais)"]}),h2:r.jsxs(r.Fragment,{children:["Nossas tarifas ",r.jsx("br",{})," para o uso do serviço"]}),postpayLabel:"Pós-pagamento",postpayTitle:"Comece agora. Pague depois.",postpayText:"Sem pagamento antecipado: use o serviço durante todo o mês e receba no final uma fatura baseada n
67as visualizações reais. Ou ative uma assinatura anual e esqueça de vez as cobranças por visualizações.",thViews:"Visualizações mensais",thPrice:"Preço",freeViews:r.jsxs(r.Fragment,{children:["0 - 1 000 ( Primeira câmera )",r.jsx("br",{})," 0 - 100 ( Cada câmera adicional )"]}),free:"Grátis",price5:"5 euros",price20:"20 euros",price100:"100 euros",conditions:"Condições",p1:"O preço é referente à assinatura mensal para cada câmera.",p2:"Trabalhamos com um sistema de pós-pagamento: no último dia do mês, contabilizamos as visualizações e enviamos a fatura por e-mail.",p3:"Se o pagamento não for efetuado em até 20 dias, a transmissão será bloqueada.",p4:"A primeira câmera é gratuita até 1.000 visualizações ao mês; para as demais — até 100.",p5:"Uma visualização é contabilizada quando nosso player HTML, que fornece a transmissão ao vivo, é iniciado. As visualizações não são contabilizadas somente se a transmissão estiver desativada.",p6:"O pagamento pode ser feito por cartão de crédito ou via fatura empresarial.",p7:"Até 100 visualizações por mês são gratuitas (exceto RTMP Push).",extrasTitle:"Serviços adicionais",extrasIntro:"Ative as opções necessárias separadamente para cada câmera.",extras:[{title:"Ocultar o logotipo",price:"20 euros",period:"por mês / câmera",text:"Remova o logotipo RTSP.ME do player para personalizar totalmente a transmissão."},{title:"Suporte a H.265",price:"20 euros",period:"por mês / câmera",text:"O suporte é ativado automaticamente quando detectamos que a câmera transmite com o codec H.265 (HEVC)."},{title:"Assinatura anual",price:"180 euros",period:"por ano / câmera",text:"Inclui visualizações ilimitadas, suporte a H.265 e ocultação do logotipo sem cobranças adicionais por visualizações.",badge:"Melhor escolha"}]},fr:{suptitle:r.jsxs(r.Fragment,{children:["1re caméra gratuite ",r.jsx("br",{})," (jusqu’à 1 000 vues par mois)"]}),h2:r.jsxs(r.Fragment,{children:["Nos tarifs ",r.jsx("br",{})," pour l’utilisation du service"]}),postpayLabel:"Post-paiement",postpayTitle:"Diffusez maintenant. Payez plus tard.",postpayText:"Aucun paiement anticipé : utilisez le service tout le mois et recevez ensuite une facture basée sur les vues réelles. Ou activez un abonnement annuel et oubliez complètement la facturation liée aux vues.",thViews:"Vues par mois",thPrice:"Prix",freeViews:r.jsxs(r.Fragment,{children:["0 - 1 000 ( Première caméra )",r.jsx("br",{})," 0 - 100 ( Chaque caméra supplémentaire )"]}),free:"Gratuit",price5:"5 euros",price20:"20 euros",price100:"100 euros",conditions:"Conditions",p1:"Le prix est indiqué pour un abonnement mensuel et pour chaque caméra.",p2:"Nous travaillons avec un système de post-paiement : le dernier jour du mois, nous comptons les vues et vous envoyons une facture par e-mail.",p3:"Si le paiement n’est pas effectué dans les 20 jours, la diffusion sera bloquée.",p4:"La première caméra est gratuite jusqu’à 1 000 vues par mois, pour les autres — jusqu’à 100.",p5:"Une vue est comptabilisée lorsque notre lecteur HTML, qui fournit la diffusion en direct, est lancé. Les vues ne sont pas comptabilisées uniquement si la diffusion est désactivée.",p6:"Le paiement peut être effectué par carte bancaire ou par facture entreprise.",p7:"Jusqu’à 100 vues par mois sont gratuites (sauf RTMP Push).",extrasTitle:"Services supplémentaires",extrasIntro:"Activez les options souhaitées séparément pour chaque caméra.",extras:[{title:"Masquer le logo",price:"20 euros",period:"par mois / caméra",text:"Retirez le logo RTSP.ME du lecteur pour une diffusion entièrement à votre image."},{title:"Prise en charge H.265",price:"20 euros",period:"par mois / caméra",text:"La prise en charge est activée automatiquement dès que nous détectons que la caméra diffuse avec le codec H.265 (HEVC)."},{title:"Abonnement annuel",price:"180 euros",period:"par an / caméra",text:"Comprend les vues illimitées, la prise en charge H.265 et le masquage du logo, sans frais supplémentaires par vue.",badge:"Meilleur choix"}]},es:{suptitle:r.jsxs(r.Fragment,{children:["1ª cámara gratis ",r.jsx("br",{})," (hasta 1.000 visualizaciones al mes)"]}),h2:r.jsxs(r.Fragment,{children:["Nuestras tarifas ",r.jsx("br",{})," para utilizar el servicio"]}),postpayLabel:"Pospago",postpayTitle:"Empieza ahora. Paga después.",postpayText:"Sin pago por adelantado: utiliza el servicio durante todo el mes y recibe al final una factura basada en las visualizaciones reales. O activa una suscripción anual y olvídate por completo de los cargos por visualizaciones.",thViews:"Visualizaciones al mes",thPrice:"Precio",freeViews:r.jsxs(r.Fragment,{children:["0 - 1 000 ( Primera cámara )",r.jsx("br",{})," 0 - 100 ( Cada cámara adicional )"]}),free:"Gratis",price5:"5 euros",price20:"20 euros",price100:"100 euros",conditions:"Condiciones",p1:"El precio indicado corresponde a la suscripción mensual por cada cámara.",p2:"Trabajamos con un sistema de pospago: el último día del mes contamos las visualizaciones y enviamos la factura por correo electrónico.",p3:"Si el pago no se realiza en un plazo de 20 días, la transmisión se bloqueará.",p4:"La primera cámara es gratis hasta 1,000 visualizaciones al mes, para las demás — hasta 100.",p
675:"Una visualización se cuenta cuando se inicia nuestro reproductor HTML, que proporciona la transmisión en vivo. Las visualizaciones no se contabilizan únicamente si la transmisión está desactivada.",p6:"El pago puede realizarse con tarjeta bancaria o factura empresarial.",p7:"Hasta 100 visualizaciones al mes son gratuitas (excepto RTMP Push).",extrasTitle:"Servicios adicionales",extrasIntro:"Activa las opciones que necesites por separado para cada cámara.",extras:[{title:"Ocultar el logotipo",price:"20 euros",period:"al mes / cámara",text:"Elimina el logotipo de RTSP.ME del reproductor para adaptar completamente la transmisión a tu marca."},{title:"Compatibilidad con H.265",price:"20 euros",period:"al mes / cámara",text:"La compatibilidad se activa automáticamente cuando detectamos que la cámara transmite con el códec H.265 (HEVC)."},{title:"Suscripción anual",price:"180 euros",period:"al año / cámara",text:"Incluye visualizaciones ilimitadas, H.265 y ocultación del logotipo sin cargos adicionales por visualizaciones.",badge:"Mejor opción"}]},it:{suptitle:r.jsxs(r.Fragment,{children:["1ª telecamera gratuita ",r.jsx("br",{})," (fino a 1.000 visualizzazioni al mese)"]}),h2:r.jsxs(r.Fragment,{children:["Le nostre tariffe ",r.jsx("br",{})," per l’utilizzo del servizio"]}),postpayLabel:"Pagamento posticipato",postpayTitle:"Inizia ora. Paga dopo.",postpayText:"Nessun pagamento anticipato: usa il servizio per tutto il mese e ricevi alla fine una fattura basata sulle visualizzazioni effettive. Oppure attiva un abbonamento annuale e dimentica del tutto i costi legati alle visualizzazioni.",thViews:"Visualizzazioni al mese",thPrice:"Prezzo",freeViews:r.jsxs(r.Fragment,{children:["0 - 1 000 ( Prima telecamera )",r.jsx("br",{})," 0 - 100 ( Ogni telecamera aggiuntiva )"]}),free:"Gratuito",price5:"5 euro",price20:"20 euro",price100:"100 euro",conditions:"Condizioni",p1:"Il prezzo indicato si riferisce all’abbonamento mensile per ogni telecamera.",p2:"Lavoriamo con un sistema di post-pagamento: l’ultimo giorno del mese conteggiamo le visualizzazioni e inviamo la fattura via e-mail.",p3:"Se il pagamento non viene effettuato entro 20 giorni, la trasmissione sarà bloccata.",p4:"La prima telecamera è gratuita fino a 1.000 visualizzazioni al mese, per le altre — fino a 100.",p5:"Una visualizzazione viene conteggiata quando si avvia il nostro lettore HTML che fornisce la diretta. Le visualizzazioni non vengono conteggiate solo se la trasmissione è disattivata.",p6:"Il pagamento può essere effettuato con carta di credito o tramite fattura aziendale.",p7:"Fino a 100 visualizzazioni al mese sono gratuite (eccetto RTMP Push).",extrasTitle:"Servizi aggiuntivi",extrasIntro:"Attiva le opzioni desiderate separatamente per ogni telecamera.",extras:[{title:"Nascondere il logo",price:"20 euro",period:"al mese / telecamera",text:"Rimuovi il logo RTSP.ME dal lettore per una trasmissione completamente personalizzata."},{title:"Supporto H.265",price:"20 euro",period:"al mese / telecamera",text:"Il supporto si attiva automaticamente quando rileviamo che la telecamera trasmette con il codec H.265 (HEVC)."},{title:"Abbonamento annuale",price:"180 euro",period:"all’anno / telecamera",text:"Include visualizzazioni illimitate, supporto H.265 e logo nascosto senza costi aggiuntivi per le visualizzazioni.",badge:"Scelta migliore"}]},tr:{suptitle:r.jsxs(r.Fragment,{children:["1. kamera ücretsiz ",r.jsx("br",{})," (ayda 1.000 görüntülemeye kadar)"]}),h2:r.jsxs(r.Fragment,{children:["Hizmet kullanımına ilişkin ",r.jsx("br",{})," tarifelerimiz"]}),postpayLabel:"Sonradan ödeme",postpayTitle:"Şimdi yayına başlayın. Sonra ödeyin.",postpayText:"Ön ödeme yok: hizmeti ay boyunca kullanın ve ay sonunda yalnızca gerçekleşen izlenmelere göre fatura alın. Ya da yıllık aboneliği etkinleştirerek izlenme bazlı ücretleri tamamen unutun.",thViews:"Aylık görüntüleme",thPrice:"Fiyat",freeViews:r.jsxs(r.Fragment,{children:["0 - 1 000 ( İlk Kamera )",r.jsx("br",{})," 0 - 100 ( Her ek kamera )"]}),free:"Ücretsiz",price5:"5 Euro",price20:"20 Euro",price100:"100 Euro",conditions:"Koşullar",p1:"Belirtilen fiyat, her kamera için aylık abonelik bedelidir.",p2:"Yayın süresince pos-ödeme sistemiyle çalışıyoruz: Ayın son günü, toplam görüntülemeyi hesaplayıp faturayı e-posta yoluyla iletiyoruz.",p3:"Ödeme 20 gün içinde yapılmadığında, yayın engellenir.",p4:"İlk kamera, ayda 1.000 görüntülemeye kadar ücretsizdir, diğerleri için — 100 görüntülemeye kadar.",p5:"Görüntüleme, canlı yayını sağlayan HTML oynatıcımız başlatıldığında sayılır. Sadece yayın kapalıyken görüntüleme sayılmaz.",p6:"Ödeme kredi kartı veya firma faturası aracılığıyla yapılabilir.",p7:"Ayda 100 görüntülemeye kadar ücretsizdir (RTMP Push hariç).",extrasTitle:"Ek hizmetler",extrasIntro:"İhtiyacınız olan seçenekleri her kamera için ayrı ayrı etkinleştirin.",extras:[{title:"Logoyu gizleme",price:"20 Euro",period:"aylık / kamera",text:"Yayını tamamen markanıza uyarlamak için RTSP.ME logosunu oynatıcıdan kaldırın."},{title:"H.265 desteği",price:"20 Euro",period:"aylık / kamera",text:"Kameranın H.265 (HEVC) codec bileşeniyle yayın yaptığını algıladığımızda destek otomatik olarak etkinleştirilir."},{title:"Yıllık abonelik",price:"180 Euro",period:"yıllık / kamera",text:"Sınırsız izleme, H.265 desteği ve ek izleme ücreti olmadan logo gizlemeyi içerir.",badge:"En avantajlı"}]},zh:{suptitle:r.jsxs(r.Fragment,{children:["第一台摄像机免费 ",r.jsx("br",{})," (每月最多 1 000 次观看)"]}),h2:r.jsxs(r.Fragment,{children:["使用服务的 ",r.jsx("br",{})," 资费方案"]}),postpayLabel:"后付费",postpayTitle:"现在开始直播,以后再付款。",postpayText:"无需预付款:整月使用服务,月底仅按实际观看次数收到账单。你也可以开通年度订阅,完全无需再担心按观看次数计费。",thViews:"每月观看次数",thPrice:"ä»·æ ¼",freeViews:r.jsxs(r.Fragment,{children:["0 - 1 000 ( 第一台摄像机 )",r.jsx("br",{})," 0 - 100 ( 每个额外的摄像头 )"]}),free:"免费",price5:"5欧元",price20:"20欧元",price100:"100欧元",conditions:"使用条款",p1:"此价格为每路摄像机的月度订阅费。",p2:"我们采用后付费模式:在每个月的最后一天统计观看次数,然后给你发送账单。",p3:"若在20天内未付款,则直播å°
67†è¢«æš‚停。",p4:"第一路摄像机免费,每月观看次数上限为1000。对于其他摄像机,月观看上限为100次。",p5:"当我们的HTML播放器(提供实时直播)开始播放时,即会计为一次观看。如果直播已关闭,则不会计费。",p6:"你可以使用银行卡或对公账户转账进行支付。",p7:"每月最多 100 次观看免费(RTMP Push 除外)。",extrasTitle:"附加服务",extrasIntro:"可以为每台摄像机单独启用所需功能。",extras:[{title:"隐藏标志",price:"20欧元",period:"每月 / 每台摄像机",text:"从播放器中移除RTSP.ME标志,让直播完整呈现你的品牌。"},{title:"支持H.265",price:"20欧元",period:"每月 / 每台摄像机",text:"当我们检测到摄像机使用H.265(HEVC)编码传输时,支持功能会自动启用。"},{title:"年度订阅",price:"180欧元",period:"每年 / 每台摄像机",text:"包含不限观看次数、H.265支持和隐藏标志,订阅期内不再收取观看费用。",badge:"最超值"}]}},cj=()=>{const{lang:e}=V(),t=uj[e];return r.jsx("section",{className:"tariffs section",id:"tariffs",children:r.jsxs("div",{className:"container",children:[r.jsx("div",{className:"tariffs__top top",children:r.jsx("h2",{className:"tariffs__h2 h2 anim",children:t.h2})}),r.jsxs("div",{className:"tariffs-postpay",children:[r.jsx("span",{className:"tariffs-postpay__label",children:t.postpayLabel}),r.jsx("h3",{className:"tariffs-postpay__title",children:t.postpayTitle}),r.jsx("p",{className:"tariffs-postpay__text",children:t.postpayText})]}),r.jsxs("div",{className:"tariffs__inner",children:[r.jsx("table",{className:"tariffs__table",children:r.jsxs("tbody",{children:[r.jsxs("tr",{className:"tariffs__tr",children:[r.jsx("td",{className:"tariffs__td h3",children:t.thViews}),r.jsx("td",{className:"tariffs__td h3",children:t.thPrice})]}),r.jsxs("tr",{className:"tariffs__tr",children:[r.jsx("td",{className:"tariffs__td text",children:"100 - 10 000"}),r.jsx("td",{className:"tariffs__td text",children:t.price5})]}),r.jsxs("tr",{className:"tariffs__tr",children:[r.jsx("td",{className:"tariffs__td text",children:"10 000 - 100 000"}),r.jsx("td",{className:"tariffs__td text",children:t.price20})]}),r.jsxs("tr",{className:"tariffs__tr",children:[r.jsx("td",{className:"tariffs__td text",children:"100 000 - 1 000 000"}),r.jsx("td",{className:"tariffs__td text",children:t.price100})]})]})}),r.jsxs("div",{className:"tariffs__content",children:[r.jsx("h3",{className:"tariffs__h3 h3 anim",children:t.conditions}),r.jsxs("div",{className:"tariffs__text text",children:[r.jsx("p",{children:t.p1}),r.jsx("p",{children:t.p2}),r.jsx("p",{children:t.p3}),r.jsx("p",{children:t.p7}),r.jsx("p",{children:t.p5}),r.jsx("p",{children:t.p6})]})]})]}),r.jsxs("div",{className:"tariffs-extras",children:[r.jsxs("div",{className:"tariffs-extras__intro",children:[r.jsx("span",{className:"tariffs-extras__eyebrow",children:"RTSP.ME / OPTIONS"}),r.jsx("h3",{className:"tariffs-extras__title h3 anim",children:t.extrasTitle}),r.jsx("p",{className:"tariffs-extras__lead text",children:t.extrasIntro})]}),r.jsx("div",{className:"tariffs-extras__list",children:t.extras.map((n,a)=>r.jsxs("article",{className:`tariffs-extras__item${"badge"in n?" tariffs-extras__item--featured":""}`,children:[r.jsxs("div",{className:"tariffs-extras__meta",children:[r.jsx("span",{className:"tariffs-extras__number",children:String(a+1).padStart(2,"0")}),"badge"in n&&r.jsx("span",{className:"tariffs-extras__badge",children:n.badge})]}),r.jsx("h4",{className:"tariffs-extras__item-title",children:n.title}),r.jsx("div",{className:"tariffs-extras__price",children:n.price}),r.jsx("div",{className:"tariffs-extras__period",children:n.period}),r.jsx("p",{className:"tariffs-extras__description",children:n.text})]},n.title))})]})]})})},dj={en:{suptitle:"HOW?",h2:r.jsxs(r.Fragment,{children:["HOW TO WATCH ",r.jsx("br",{})," on your web page"]}),item1h3:r.jsxs(r.Fragment,{children:["Add BROADCASTING ",r.jsx("br",{})," to your online platform"]}),item1p1:"Online broadcasting on a website helps attract new visitors and strengthen the loyalty of existing clients.",item1p2:"After successfully creating an online stream, you will receive an HTML code for the video player",item1p3:"that you can add to your website.",item2h3:"Share links on social networks",item2text:"Send links to your video streams to friends and colleagues via messengers like Viber, WhatsApp, and Telegram to expand your audience and increase viewership.",item3h3
67:"Want more?",item3text:"Use access to our streams via API! This allows you to create your own monetization and access control system. Basic knowledge of PHP is required:",item3desc:"*If ID is absent, a list of all cameras will be displayed.",item3btn:"Example in PHP"},ru:{suptitle:"КАК?",h2:r.jsxs(r.Fragment,{children:["КАК СМОТРЕТЬ ",r.jsx("br",{})," на своей веб-странице"]}),item1h3:r.jsxs(r.Fragment,{children:["Добавьте ТРАНСЛЯЦИЮ ",r.jsx("br",{})," на свою интернет-платформу"]}),item1p1:"Онлайн-вещание на сайте помогает привлекать новых посетителей и укреплять лояльность текущих клиентов.",item1p2:"После успешного создания онлайн-трансляции вы получите HTML-код видеоплеера",item1p3:"который сможете добавить на ваш web-сайт",item2h3:"Делитесь ссылкой в социальных сетях",item2text:"Отправляйте ссылки на ваши видеопотоки друзьям и коллегам через мессенджеры, такие как Viber, WhatsApp и Telegram, чтобы увеличить аудиторию и повысить число просмотров.",item3h3:"Хотите большего?",item3text:"Используйте доступ к нашим потокам через API ! Это позволит вам создать собственную систему монетизации и ограничения доступа. Для работы потребуется базовое знание PHP:",item3desc:"*If ID is absent, a list of all cameras will be displayed.",item3btn:"Example in PHP"},de:{suptitle:"WIE?",h2:r.jsxs(r.Fragment,{children:["WIE ",r.jsx("br",{})," auf Ihrer Website ansehen"]}),item1h3:r.jsxs(r.Fragment,{children:["Fügen Sie den ",r.jsx("br",{})," STREAM zu Ihrer Website hinzu"]}),item1p1:"Online-Streaming auf einer Website hilft, neue Besucher anzulocken und die Loyalität bestehender Kunden zu erhöhen.",item1p2:"Nachdem Sie erfolgreich einen Online-Stream erstellt haben, erhalten Sie einen HTML-Code für den Videoplayer",item1p3:"Diesen Code können Sie auf Ihrer Website einbetten.",item2h3:"Links in sozialen Netzwerken teilen",item2text:"Senden Sie die Links zu Ihren Videostreams an Freunde und Kollegen über Messenger wie Viber, WhatsApp oder Telegram, um Ihr Publikum zu erweitern und die Zuschauerzahlen zu erhöhen.",item3h3:"Noch mehr Möglichkeiten?",item3text:"Nutzen Sie den Zugriff auf unsere Streams über eine API! Damit können Sie Ihr eigenes Monetarisierungs- und Zugriffskontrollsystem entwickeln. Grundkenntnisse in PHP sind erforderlich:",item3desc:"*Wenn kein ID-Parameter übergeben wird, wird eine Liste aller Kameras zurückgegeben.",item3btn:"PHP-Beispiel"},pr:{suptitle:"COMO?",h2:r.jsxs(r.Fragment,{children:["COMO ASSISTIR ",r.jsx("br",{})," em sua página web"]}),item1h3:r.jsxs(r.Fragment,{children:["Adicionar a TRANSMISSÃO ",r.jsx("br",{})," à sua plataforma online"]}),item1p1:"A transmissão ao vivo em um site ajuda a atrair novos visitantes e a fortalecer a fidelidade dos clientes existentes.",item1p2:"Após criar com sucesso a sua transmissão ao vivo, você receberá um código HTML para o player de vídeo",item1p3:"que você poderá adicionar ao seu site.",item2h3:"Compartilhe links em redes sociais",item2text:"Envie os links das suas transmissões de vídeo para amigos e colegas via aplicativos como Viber, WhatsApp ou Telegram para expandir seu público e aumentar as visualizações.",item3h3:"Quer mais?",item3text:"Use nosso acesso às transmissões via API! Isso permite criar seu próprio sistema de monetização e controle de acesso. São necessários conhecimentos básicos em PHP:",item3desc:"*Se o ID estiver ausente, será exibida a lista de todas as câmeras.",item3btn:"Exemplo em PHP"},fr:{suptitle:"COMMENT ?",h2:r.jsxs(r.Fragment,{children:["COMMENT REGARDER ",r.jsx("br",{})," sur votre page web"]}),item1h3:r.jsxs(r.Fragment,{children:["Ajouter la DIFFUSION ",r.jsx("br",{})," à votre plateforme en ligne"]}),item1p1:"La diffusion en direct sur un site web permet d’attirer de nouveaux visiteurs et de renforcer la fidélité de vos clients existants.",item1p2:"Après avoir créé avec succès votre flux en direct, vous recevrez un code HTML pour le lecteur vidéo",item1p3:"que vous pourrez ajouter à votre site.",item2h3:"Partagez des liens sur les réseaux sociaux",item2text:"Partagez les liens de vos diffusions vidéo avec vos amis et collègues via des messageries comme Viber, WhatsApp ou Telegram pour élargir votre audience et augmenter le nombre de vues.",item3h3
67:"Vous en voulez plus ?",item3text:"Utilisez l’accès à nos flux via l’API ! Cela vous permettra de créer votre propre système de monétisation et de contrôle d’accès. Vous aurez besoin de connaissances de base en PHP :",item3desc:"*Si l’ID est absent, la liste de toutes les caméras sera affichée.",item3btn:"Exemple en PHP"},es:{suptitle:"¿CÓMO?",h2:r.jsxs(r.Fragment,{children:["CÓMO VER ",r.jsx("br",{})," en tu página web"]}),item1h3:r.jsxs(r.Fragment,{children:["Añade la TRANSMISIÓN ",r.jsx("br",{})," a tu plataforma en línea"]}),item1p1:"La transmisión en vivo en un sitio web te ayuda a atraer nuevos visitantes y fortalecer la lealtad de tus clientes actuales.",item1p2:"Tras crear tu transmisión en vivo con éxito, recibirás un código HTML para el reproductor de video",item1p3:"que podrás agregar en tu sitio.",item2h3:"Comparte enlaces en redes sociales",item2text:"Envía los enlaces de tus transmisiones de video a amigos y colegas mediante aplicaciones como Viber, WhatsApp o Telegram para ampliar tu audiencia y aumentar las visualizaciones.",item3h3:"¿Quieres más?",item3text:"¡Utiliza nuestro acceso a las transmisiones mediante la API! Esto te permitirá crear tu propio sistema de monetización y control de acceso. Se requieren conocimientos básicos de PHP:",item3desc:"*Si falta la ID, se mostrará la lista de todas las cámaras.",item3btn:"Ejemplo en PHP"},it:{suptitle:"COME?",h2:r.jsxs(r.Fragment,{children:["COME GUARDARE ",r.jsx("br",{})," sulla tua pagina web"]}),item1h3:r.jsxs(r.Fragment,{children:["Aggiungi la TRASMISSIONE ",r.jsx("br",{})," alla tua piattaforma online"]}),item1p1:"La trasmissione in diretta su un sito aiuta ad attirare nuovi visitatori e a rafforzare la fidelizzazione dei clienti già esistenti.",item1p2:"Dopo aver creato con successo la tua trasmissione in diretta, riceverai un codice HTML per il lettore video",item1p3:"che puoi aggiungere al tuo sito.",item2h3:"Condividi i link sui social network",item2text:"Invia i link delle tue trasmissioni video ad amici e colleghi tramite applicazioni come Viber, WhatsApp o Telegram per ampliare il tuo pubblico e aumentare le visualizzazioni.",item3h3:"Vuoi di più?",item3text:"Utilizza il nostro accesso alle trasmissioni tramite API! Potrai così creare il tuo sistema di monetizzazione e controllo degli accessi. Sono richieste conoscenze di base in PHP:",item3desc:"*Se l’ID non è specificato, verrà mostrato l’elenco di tutte le telecamere.",item3btn:"Esempio in PHP"},tr:{suptitle:"NASIL?",h2:r.jsxs(r.Fragment,{children:["SİTENİZDE ",r.jsx("br",{})," NASIL İZLENİR"]}),item1h3:r.jsxs(r.Fragment,{children:["ÇEVRİMİÇİ PLATFORMUNUZA ",r.jsx("br",{})," YAYIN EKLEYİN"]}),item1p1:"Bir web sitesine canlı yayın eklemek, yeni ziyaretçileri çekmenin ve mevcut müşterilerin sadakatini artırmanın mükemmel bir yoludur.",item1p2:"Başarılı bir canlı yayın oluşturduktan sonra, video oynatıcıya ait HTML kodunu alırsınız",item1p3:"ve bu kodu web sitenize ekleyebilirsiniz.",item2h3:"Sosyal ağlarda bağlantılarınızı paylaşın",item2text:"Video yayınlarınızın bağlantılarını arkadaşlarınızla ve meslektaşlarınızla Viber, WhatsApp veya Telegram gibi uygulamalar üzerinden paylaşarak kitlenizi genişletebilir ve görüntülemelerinizi artırabilirsiniz.",item3h3:"Daha fazlasını ister misiniz?",item3text:"API üzerinden yayın erişimimizi kullanın! Böylece kendi ücretlendirme ve erişim kontrol sisteminizi geliştirebilirsiniz. Temel PHP bilgisi gereklidir:",item3desc:"*ID belirtilmezse, tüm kameraların listesi gösterilir.",item3btn:"PHP Örneği"},zh:{suptitle:"怎么做?",h2:r.jsxs(r.Fragment,{children:["如何在 ",r.jsx("br",{})," 你的网站上观看"]}),item1h3:r.jsxs(r.Fragment,{children:["在你的网站上添加 ",r.jsx("br",{})," 直播功能"]}),item1p1:"在网站上进行实时直播,能吸引更多访客,并增强现有客户的忠诚度。",item1p2:"当你成功创建直播后,会生成HTML代码供你嵌入到自己的网站(HTML播放器)",item1p3:"这样你就可以把直播窗口嵌入在网站的任何页面上。",item2h3:"在社交网络上分享链接",item2text:"通过微信、WhatsApp或Telegram等即时通讯软件,把你的直播链接分享给朋友、同事, 吸引更多观众并提升观看次数。",item3h3
67:"还想要更多?",item3text:"使用我们的API访问你的直播!这样你就可以构建自己的 收费系统或访问控制系统。需要具备基本的PHP知识:",item3desc:"*如果没有提供ID,则会返回所有摄像机列表。",item3btn:"PHP示例"}},td={ru:"https://rtsp.ru/embed/9rSrnrEz/",other:"https://rtsp.me/embed/474NtQT5/"},mj=()=>{const{lang:e}=V(),t=dj[e],n=e==="ru"?td.ru:td.other;return r.jsx("section",{className:"broadcast section",id:"broadcast",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"broadcast__top top",children:[r.jsx("span",{className:"broadcast__suptitle suptitle",children:t.suptitle}),r.jsx("h2",{className:"broadcast__h2 h2 anim",children:t.h2})]}),r.jsxs("ul",{className:"broadcast__list list-reset",children:[r.jsxs("li",{className:"broadcast__item",children:[r.jsxs("div",{className:"broadcast__content",children:[r.jsx("h3",{className:"broadcast__h3 h3 anim show",children:t.item1h3}),r.jsxs("p",{className:"broadcast__text text",children:[t.item1p1," ",r.jsx("br",{}),r.jsx("br",{})," ",t.item1p2," ",r.jsx("br",{})," ",r.jsx("br",{}),r.jsx("code",{children:`<iframe src="${n}" style="width:100%; aspect-ratio:4/3; border:0;" allow="fullscreen; autoplay" allowfullscreen></iframe>`}),r.jsx("br",{})," ",r.jsx("br",{})," ",t.item1p3]})]}),r.jsxs("div",{className:"broadcast__img anim-scale",children:[r.jsx("iframe",{width:"640",height:"480",src:n,frameBorder:"0",allowFullScreen:!0,title:"broadcast"}),r.jsxs("p",{style:{textAlign:"right"},children:["powered by"," ",r.jsx("a",{href:"https://rtsp.me",title:"RTSP.ME - Free website RTSP video steaming service",target:"_blank",children:"rtsp.me"})]})]})]}),r.jsxs("li",{className:"broadcast__item",children:[r.jsxs("div",{className:"broadcast__content",children:[r.jsx("h3",{className:"broadcast__h3 h3 anim",children:t.item2h3}),r.jsx("p",{className:"broadcast__text text",children:t.item2text}),r.jsx("h4",{className:"broadcast__h4 h4 anim show",children:n})]}),r.jsx("div",{className:"broadcast__img anim-scale",children:r.jsx(le,{webp:"/landing/img/broadcast/02.webp",fallback:"/landing/img/broadcast/02.png",width:869,height:480,imgClassName:"img"})})]}),r.jsxs("li",{className:"broadcast__item",children:[r.jsxs("div",{className:"broadcast__content",children:[r.jsx("h3",{className:"broadcast__h3 h3 anim",children:t.item3h3}),r.jsx("p",{className:"broadcast__text text",children:t.item3text}),r.jsx("br",{}),r.jsxs("ol",{className:"broadcast__ol",children:[r.jsx("li",{className:"broadcast__li text",children:"Method: POST"}),r.jsx("li",{className:"broadcast__li text",children:"API url: https://rtsp.me/api/"}),r.jsx("li",{className:"broadcast__li text",children:"Params:"})]}),r.jsxs("ul",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"email - current email"}),r.jsx("li",{className:"broadcast__li text",children:"password - current password"}),r.jsx("li",{className:"broadcast__li text",children:"id - Unique"}),r.jsx("li",{className:"broadcast__li text",children:"broadcast ID"})]}),r.jsx("p",{className:"broadcast__desc text",children:t.item3desc}),r.jsx("a",{className:"broadcast__btn btn btn--red",href:"https://github.com/infoqrakz/rtsp.me/blob/master/api_PrivateCams_php_example",children:t.item3btn})]}),r.jsx("div",{className:"broadcast__img anim-scale",children:r.jsx(le,{webp:"/landing/img/broadcast/03.webp",fallback:"/landing/img/broadcast/03.png",width:869,height:480,imgClassName:"img"})})]})]})]})})},pj={en:r.jsxs(r.Fragment,{children:["ANSWERS ",r.jsx("br",{})," TO FREQUENT QUESTIONS"]}),ru:r.jsxs(r.Fragment,{children:["ОТВЕТЫ ",r.jsx("br",{})," НА ЧАСТЫЕ ВОПРОСЫ"]}),de:r.jsxs(r.Fragment,{children:["ANTWORTEN ",r.jsx("br",{})," AUF HÄUFIG GESTELLTE FRAGEN"]}),pr:r.jsxs(r.Fragment,{children:["RESPOSTAS ",r.jsx("br",{})," A PERGUNTAS FREQUENTES"]}),fr:r.jsxs(r.Fragment,{children:["RÉPONSES ",r.jsx("br",{})," AUX QUESTIONS FRÉQUENTES"]}),es:r.jsxs(r.Fragment,{children:["RESPUESTAS ",r.jsx("br",{})," A PREGUNTAS FRECUENTES"]}),it:r.jsxs(r.Fragment,{children:["RISPOSTE ",r.jsx("br",{})," ALLE DOMANDE FREQUENTI"]}),tr:r.jsxs(r.Fragment,{children:["SIK SORULAN ",r.jsx("br",{})," SORULARA CEVAPLAR"]}
67),zh:r.jsxs(r.Fragment,{children:["常见问题 ",r.jsx("br",{})," 及解答"]})},rd=[{id:"faq-what_my_rtsp_link",q:{en:"How do I find my RTSP link?",ru:"Как узнать какая у меня RTSP-ссылка?",de:"Wie finde ich meinen RTSP-Link?",pr:"Como encontro meu link RTSP?",fr:"Comment trouver mon lien RTSP ?",es:"¿Cómo encuentro mi enlace RTSP?",it:"Come trovo il mio link RTSP?",tr:"RTSP bağlantımı nasıl bulurum?",zh:"如何获取我的RTSP链接?"},body:{en:r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"faq__text text",children:["You can find the RTSP link on the manufacturer’s website of your camera or request it from our technical support. ",r.jsx("br",{}),"Typically, a few standard parameters are changed in the example link: ",r.jsx("br",{})]}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• IP address"}),r.jsx("li",{className:"broadcast__li text",children:"• Port"}),r.jsx("li",{className:"broadcast__li text",children:"• Login"}),r.jsx("li",{className:"broadcast__li text",children:"• Password"}),r.jsx("li",{className:"broadcast__li text",children:"• Stream name"})]}),r.jsxs("p",{className:"faq__text text",children:["Simply replace your data in the example link.",r.jsx("br",{}),"Below are ready-made templates for popular IP camera manufacturers:",r.jsx("br",{}),r.jsx("br",{}),"Example: login - admin, password - pass, IP - 8.8.8.8, port — 554, stream 1 or main"]}),r.jsx("b",{children:"Hikvision "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/Streaming/Channels/101 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/Streaming/Channels/102"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsx("b",{children:"Dahua "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("p",{className:"faq__text text",children:["RTSP URLs for cameras from other manufacturers are available in the"," ",r.jsx("a",{href:"where-to-find-rtsp-url.html",children:"guide"}),"."]})]}),ru:r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"faq__text text",children:["RTSP-ссылку можно найти на сайте производителя вашей камеры или запросить у нашей технической поддержки.",r.jsx("br",{}),"В примере ссылки, как правило, меняются несколько типовых параметров: ",r.jsx("br",{})]}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• IP-адрес"}),r.jsx("li",{className:"broadcast__li text",children:"• Порт"}),r.jsx("li",{className:"broadcast__li text",children:"• Логин"}),r.jsx("li",{className:"broadcast__li text",children:"• Пароль"}),r.jsx("li",{className:"broadcast__li text",children:"• Имя потока"})]}),r.jsxs("p",{className:"faq__text text",children:["Просто подставьте свои данные в пример ссылки.",r.jsx("br",{}),"Ниже мы приводим готовые шаблоны для популярных производителей IP-камер:",r.jsx("br",{}),r.jsx("br",{}),"например: login - admin, password - pass , ip - 8.8.8.8 , port — 554, поток 1 или main"]}),r.jsx("b",{children:"Hikvision "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/Streaming/Channels/101 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/Streaming/Channels/102"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsx("b",{children:"Dahua "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("p",{className:"faq__text text",children:["RTSP-ссылки для камер других производителей доступны в"," ",r.jsx("a",{href:"where-to-find-rtsp-url.html",children:"руководстве"}),"."]})]}),de:r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"faq__text text",children:["Sie können Ihren RTSP-Link in der Anleitung des Kamera-Herstellers finden oder unseren technischen Support kontaktieren. ",r.jsx("br",{}),"In der Regel werden bei einem Beispiel-Link nur wenige Standardparameter geändert: ",r.jsx("br",{})]}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• IP-Adresse"}),r.jsx("li",{className:"broadcast__li text",children:"• Port"}),r.jsx("li",{className:"broadcast__li text",children:"• Login"}),r.jsx("li",{className:"broadcast__li text",children:"• Passwort"}),r.jsx("li",{className:"broadcast__li text",children:"• Stream-Name"})]}),r.jsxs("p",{className:"faq__text text",children:["Ersetzen Sie Ihre Daten einfach im Beispiel-Link.",r.jsx("br",{}),"Unten finden Sie Vorlagen für gängige IP-Kamera-Hersteller:",r.jsx("br",{}),r.jsx("br",{}),"Beispiel: Login – admin, Passwort – pass, IP – 8.8.8.8, Port – 554, Stream 1 oder main"]}),r.jsx("b",{children:"Hikvision "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/Streaming/Channels/101 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/Streaming/Channels/102"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsx("b",{children:"Dahua "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("p",{className:"faq__text text",children:["RTSP-URLs für Kameras anderer Hersteller finden Sie in der"," ",r.jsx("a",{href:"where-to-find-rtsp-url.html",children:"Anleitung"}),"."]})]}),pr:r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"faq__text text",children:["Você pode encontrar o link RTSP no site do fabricante da sua câmera ou solicitá-lo ao n
67osso suporte técnico."," ",r.jsx("br",{}),"Normalmente, em um link de exemplo, alguns parâmetros padrão são alterados: ",r.jsx("br",{})]}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• Endereço IP"}),r.jsx("li",{className:"broadcast__li text",children:"• Porta"}),r.jsx("li",{className:"broadcast__li text",children:"• Usuário"}),r.jsx("li",{className:"broadcast__li text",children:"• Senha"}),r.jsx("li",{className:"broadcast__li text",children:"• Nome do fluxo"})]}),r.jsxs("p",{className:"faq__text text",children:["Basta substituir seus dados no link de exemplo.",r.jsx("br",{}),"A seguir, apresentamos modelos prontos para os principais fabricantes de câmeras IP:",r.jsx("br",{}),r.jsx("br",{}),"Exemplo: usuário - admin, senha - pass, IP - 8.8.8.8, porta — 554, fluxo 1 ou main"]}),r.jsx("b",{children:"Hikvision "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/Streaming/Channels/101 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/Streaming/Channels/102"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsx("b",{children:"Dahua "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("p",{className:"faq__text text",children:["Os URLs RTSP para câmeras de outros fabricantes estão disponíveis no"," ",r.jsx("a",{href:"where-to-find-rtsp-url.html",children:"guia"}),"."]})]}),fr:r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"faq__text text",children:["Vous pouvez trouver le lien RTSP sur le site du fabricant de votre caméra ou le demander à notre support technique. ",r.jsx("br",{}),"En général, quelques paramètres standards sont à adapter dans l’exemple de lien : ",r.jsx("br",{})]}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• Adresse IP"}),r.jsx("li",{className:"broadcast__li text",children:"• Port"}),r.jsx("li",{className:"broadcast__li text",children:"• Identifiant"}),r.jsx("li",{className:"broadcast__li text",children:"• Mot de passe"}),r.jsx("li",{className:"broadcast__li text",children:"• Nom du flux"})]}),r.jsxs("p",{className:"faq__text text",children:["Il vous suffit de remplacer vos informations dans le lien exemple.",r.jsx("br",{}),"Ci-dessous se trouvent des modèles prêts à l’emploi pour les principaux fabricants de caméras IP :",r.jsx("br",{}),r.jsx("br",{}),"Exemple : identifiant - admin, mot de passe - pass, IP - 8.8.8.8, port — 554, flux 1 ou main"]}),r.jsx("b",{children:"Hikvision "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/Streaming/Channels/101 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/Streaming/Channels/102"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsx("b",{children:"Dahua "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("p",{className:"faq__text text",children:["Les URL RTSP des caméras d’autres fabricants sont disponibles dans le"," ",r.jsx("a",{href:"where-to-find-rtsp-url.html",children:"guide"}),"."]})]}),es:r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"faq__text text",children:["Puedes encontrar el enlace RTSP en el sitio web del fabricante de tu cámara o solicitarlo a nuestro soporte técnico. ",r.jsx("br",{}),"Por lo general, en el enlace de ejemplo solo cambian algunos parámetros estándar: ",r.jsx("br",{})]}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• Dirección IP"}),r.jsx("li",{className:"broadcast__li text",children:"• Puerto"}),r.jsx("li",{className:"broadcast__li text",children:"• Usuario"}),r.jsx("li",{className:"broadcast__li text",children:"• Contraseña"}),r.jsx("li",{className:"broadcast__li text",children:"• Nombre del flujo"})]}),r.jsxs("p",{className:"faq__text text",children:["Simplemente reemplaza tus datos en el enlace de ejemplo.",r.jsx("br",{}),"A continuación, presentamos plantillas listas para los principales fabricantes de cámaras IP:",r.jsx("br",{}),r.jsx("br",{}),"Ejemplo: usuario - admin, contraseña - pass, IP - 8.8.8.8, puerto — 554, flujo 1 o main"]}),r.jsx("b",{children:"Hikvision "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/Streaming/Channels/101 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/Streaming/Channels/102"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsx("b",{children:"Dahua "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("p",{className:"faq__text text",children:["Las URL RTSP para cámaras de otros fabricantes están disponibles en la"," ",r.jsx("a",{href:"where-to-find-rtsp-url.html",children:"guía"}),"."]})]}),it:r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"faq__text text",children:["Puoi trovare il link RTSP sul sito del produttore della tua telecamera oppure richiederlo al nostro 
67supporto tecnico. ",r.jsx("br",{}),"In genere, nel link di esempio occorre modificare solo alcuni parametri standard: ",r.jsx("br",{})]}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• Indirizzo IP"}),r.jsx("li",{className:"broadcast__li text",children:"• Porta"}),r.jsx("li",{className:"broadcast__li text",children:"• Utente"}),r.jsx("li",{className:"broadcast__li text",children:"• Password"}),r.jsx("li",{className:"broadcast__li text",children:"• Nome dello stream"})]}),r.jsxs("p",{className:"faq__text text",children:["Ti basta sostituire i tuoi dati nell’esempio di link.",r.jsx("br",{}),"Di seguito, alcuni modelli pronti per i principali produttori di telecamere IP:",r.jsx("br",{}),r.jsx("br",{}),"Esempio: utente - admin, password - pass, IP - 8.8.8.8, porta — 554, stream 1 o main"]}),r.jsx("b",{children:"Hikvision "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/Streaming/Channels/101 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/Streaming/Channels/102"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsx("b",{children:"Dahua "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("p",{className:"faq__text text",children:["Gli URL RTSP per le telecamere di altri produttori sono disponibili nella"," ",r.jsx("a",{href:"where-to-find-rtsp-url.html",children:"guida"}),"."]})]}),tr:r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"faq__text text",children:["RTSP bağlantısını, kameranızın üretici sitesinden veya teknik destek ekibimizden öğrenebilirsiniz. ",r.jsx("br",{}),"Genellikle örnek bağlantıda yalnızca birkaç standart parametre değiştirilir: ",r.jsx("br",{})]}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• IP adresi"}),r.jsx("li",{className:"broadcast__li text",children:"• Port"}),r.jsx("li",{className:"broadcast__li text",children:"• Kullanıcı adı"}),r.jsx("li",{className:"broadcast__li text",children:"• Parola"}),r.jsx("li",{className:"broadcast__li text",children:"• Yayın adı (stream name)"})]}),r.jsxs("p",{className:"faq__text text",children:["Kendi verilerinizi bu örnek bağlantıdaki ilgili kısımlara yerleştirmeniz yeterlidir.",r.jsx("br",{}),"Aşağıda popüler IP kamera üreticileri için örnek bağlantılar yer alıyor:",r.jsx("br",{}),r.jsx("br",{}),"Örnek: kullanıcı adı - admin, parola - pass, IP - 8.8.8.8, port — 554, yayın 1 veya main"]}),r.jsx("b",{children:"Hikvision "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/Streaming/Channels/101 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/Streaming/Channels/102"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsx("b",{children:"Dahua "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("p",{className:"faq__text text",children:["Diğer üreticilerin kameralarına ait RTSP URL’leri"," ",r.jsx("a",{href:"where-to-find-rtsp-url.html",children:"kılavuzda"})," bulunabilir."]})]}),zh:r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"faq__text text",children:["你可以在摄像机生产厂商官网上找到RTSP链接,也可以向我们的技术支持咨询。 ",r.jsx("br",{}),"一般来说,只需更改链接中的一些常用参数: ",r.jsx("br",{})]}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• IP地址"}),r.jsx("li",{className:"broadcast__li text",children:"• 端口"}),r.jsx("li",{className:"broadcast__li text",children:"• 用户名"}),r.jsx("li",{className:"broadcast__li text",children:"• 密码"}),r.jsx("li",{className:"broadcast__li text",children:"• 直播流名称"})]}),r.jsxs("p",{className:"faq__text text",children:["你只需在示例链接中替换成自己的信息即可。",r.jsx("br",{}),"以下为常见的IP摄像机品牌的RTSP链接示例:",r.jsx("br",{}),r.jsx("br",{}),"示例:用户名 - admin,密码 - pass,IP - 8.8.8.8,端口 - 554ï¼
67Œç›´æ’­æµ - 1或main"]}),r.jsx("b",{children:"Hikvision "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/Streaming/Channels/101 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/Streaming/Channels/102"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsx("b",{children:"Dahua "}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("em",{children:["rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 ",r.jsx("br",{}),"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1"," "]}),r.jsx("br",{}),r.jsx("br",{}),r.jsxs("p",{className:"faq__text text",children:["其他制造商摄像机的RTSP URL可在",r.jsx("a",{href:"where-to-find-rtsp-url.html",children:"指南"}),"中找到。"]})]})}},{id:"faq-what_my_static_ip",q:{en:"How do I find my static IP address?",ru:"Как узнать свой статический IP-адрес?",de:"Wie finde ich meine statische IP-Adresse?",pr:"Como descubro meu endereço IP estático?",fr:"Comment trouver mon adresse IP statique ?",es:"¿Cómo encuentro mi dirección IP estática?",it:"Come trovo il mio indirizzo IP statico?",tr:"Sabit IP adresimi nasıl bulabilirim?",zh:"如何查询我的固定IP地址?"},body:{en:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"A static IP address is a permanent unique address assigned to a device in the internet. Example - 78.78.78.78."}),r.jsx("p",{className:"faq__text text",children:"It is required for remote access to devices such as IP cameras or recorders. You can obtain it from your ISP."})]}),de:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Eine statische IP-Adresse ist eine dauerhafte, eindeutige Adresse, die einem Gerät im Internet zugewiesen wird (z.B. 78.78.78.78)."}),r.jsx("p",{className:"faq__text text",children:"Sie wird benötigt, um Geräte wie IP-Kameras oder Rekorder von außen zu erreichen. Ihre statische IP erhalten Sie bei Ihrem Internetanbieter."})]}),pr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Um endereço IP estático é um endereço permanente e exclusivo atribuído a um dispositivo na internet. Exemplo: 78.78.78.78."}),r.jsx("p",{className:"faq__text text",children:"Ele é necessário para acesso remoto a dispositivos como câmeras IP ou gravadores. Você pode solicitar isso ao seu provedor de internet."})]}),fr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Une adresse IP statique est une adresse unique et permanente attribuée à un équipement sur internet. Exemple - 78.78.78.78."}),r.jsx("p",{className:"faq__text text",children:"Elle est nécessaire pour un accès à distance à des appareils tels que des caméras IP ou des enregistreurs. Vous pouvez l’obtenir auprès de votre fournisseur d’accès internet."})]}),es:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Una dirección IP estática es una dirección única y permanente asignada a un dispositivo en internet. Por ejemplo, 78.78.78.78."}),r.jsx("p",{className:"faq__text text",children:"Es necesaria para acceder de forma remota a dispositivos como cámaras IP o grabadoras. Puedes solicitarla a tu proveedor de internet."})]}),it:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Un indirizzo IP statico è un indirizzo univoco e permanente assegnato a un dispositivo su Internet. Ad esempio, 78.78.78.78."}),r.jsx("p",{className:"faq__text text",children:"È necessario per accedere in remoto a dispositivi come telecamere IP o registratori. Puoi richiederlo al tuo provider Internet."})]}),tr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Sabit IP adresi, internet ortamında bir cihaza atanan kalıcı ve benzersiz bir adrestir. Örnek: 78.78.78.78."}),r.jsx("p",{className:"faq__text text",children:"Bu adres, IP kameralar veya kayıt cihazları gibi ekipmanlara uzaktan erişebilmek için gereklidir. İnternet sağlayıcınızdan talep edebilirsiniz."})]}),zh:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"固定IP地址是运营商为你的设备分配的永不变更的唯一地址。例如:78.78.78.78。"}),r.jsx("p",{className:"faq__text text",children:"如果需要远程访问设备(如IP摄像机、录像机),就必须用到固定IP。你可以向网络服务提供商申请。"})]}),ru:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Статический IP-адрес — это постоянный уникальный адрес, присвоенный устройству в сети интернет. Пример - 78.78.78.78 ."}),r.jsx("p",{className:"faq__text text",children:"Он необходим для удаленного доступа к устройствам, таким как IP-камеры или видеорегистраторы. Получить его можно у Вашего интернет-провайдера."})]})}},{id:"faq-how_can_use_dynamic_ip",q:{en:"I have a dynamic IP address. Can I set up streaming?",ru:"У меня динамический IP-адрес. Могу ли я организовать потоковое вещание? ",de:"Ich habe eine dynamische IP-Adresse. Kann ich trotzdem streamen?",pr:"Tenho um endereço IP dinâmico. Posso configurar a transmissão?",fr:"J’ai une adresse IP dynamique. Puis-je configurer une diffusion ?",es:"Tengo una dirección IP dinámica. ¿Puedo configurar la transmisión?",it:"Ho un indirizzo IP dinamico. Posso configurare la trasmissione?",tr:"Dinamik IP adresim var. Yine de yayın yapabilir miyim?",zh:"如果我的IP地址是动态的,能否配置直播?"},body:{en:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Yes. rtsp.me can stream without a static IP, DDNS, or port forwarding via RTMP Push, the free software agent, Bridge, or a ready-made camera with an ID. All four options use an outbound connection."}),r.jsxs("p",{className:"faq__text text",children:["The ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"detailed guide"})," will help you choose an option and provides setup instructions."]})]}),de:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Ja. Mit rtsp.me können Sie ohne statische IP-Adresse, DDNS oder Portweiterleitung streamen: per RTMP Push, kostenlosem Software-Agenten, Bridge oder einer vorkonfigurierten Kamera mit ID. Alle vier Optionen nutzen eine ausgehende Verbindung."}),r.jsxs("p",{className:"faq__text text",children:["Die ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"ausführliche Anleitung"})," hilft Ihnen bei der Auswahl einer Option und enthält Anweisungen zur Einrichtung."]})]}),pr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Sim. O rtsp.me permite transmitir sem IP estático, DDNS ou redirecionamento de portas usando RTMP Push, o agente de softw
67are gratuito, o Bridge ou uma câmera pronta com ID. As quatro opções usam uma conexão de saída."}),r.jsxs("p",{className:"faq__text text",children:["O ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"guia detalhado"})," ajuda você a escolher uma opção e fornece instruções de configuração."]})]}),fr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Oui. rtsp.me permet de diffuser sans adresse IP statique, DDNS ni redirection de ports avec RTMP Push, l’agent logiciel gratuit, Bridge ou une caméra prête à l’emploi avec un identifiant. Ces quatre options utilisent une connexion sortante."}),r.jsxs("p",{className:"faq__text text",children:["Le ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"guide détaillé"})," vous aide à choisir une option et fournit les instructions de configuration."]})]}),es:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Sí. rtsp.me permite transmitir sin IP estática, DDNS ni redirección de puertos mediante RTMP Push, el agente de software gratuito, Bridge o una cámara lista para usar con ID. Las cuatro opciones utilizan una conexión saliente."}),r.jsxs("p",{className:"faq__text text",children:["La ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"guía detallada"})," te ayuda a elegir una opción y ofrece instrucciones de configuración."]})]}),it:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Sì. rtsp.me consente di trasmettere senza IP statico, DDNS o port forwarding tramite RTMP Push, l’agente software gratuito, Bridge o una telecamera pronta all’uso con ID. Tutte e quattro le opzioni utilizzano una connessione in uscita."}),r.jsxs("p",{className:"faq__text text",children:["La ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"guida dettagliata"})," ti aiuta a scegliere un’opzione e fornisce le istruzioni di configurazione."]})]}),tr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Evet. rtsp.me; RTMP Push, ücretsiz yazılım aracısı, Bridge veya kimlikli, kullanıma hazır bir kamera ile statik IP, DDNS ya da port yönlendirme olmadan yayın yapabilir. Dört seçeneğin tümü dışarı doğru bağlantı kullanır."}),r.jsxs("p",{className:"faq__text text",children:[r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"Ayrıntılı kılavuz"}),", bir seçenek belirlemenize yardımcı olur ve kurulum talimatlarını sunar."]})]}),zh:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"可以。rtsp.me 可通过 RTMP Push、免费软件代理、Bridge 或带 ID 的即用型摄像机,在没有静态 IP、DDNS 或端口转发的情况下进行直播。这四种方式都使用出站连接。"}),r.jsxs("p",{className:"faq__text text",children:[r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"详细指南"}),"可帮助你选择合适的方式,并提供设置说明。"]})]}),ru:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Да. rtsp.ru позволяет вести трансляцию без статического IP-адреса, DDNS и проброса портов с помощью RTMP Push, бесплатного программного агента, Bridge или готовой камеры с ID. Все четыре варианта используют исходящее соединение."}),r.jsxs("p",{className:"faq__text text",children:[r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"Подробное руководство"})," поможет выбрать подходящий вариант и содержит инструкции по настройке."]})]})}},{id:"faq-i_have_grey_ip",q:{en:"What to do if I have a private IP address?",ru:'Что делать если у меня "серый" IP-адрес?',de:"Was tun, wenn ich eine „graue“ IP-Adresse habe?",pr:'O que fazer se eu tiver um endereço IP "cinza"?',fr:"Que faire si j’ai une adresse IP « grise » ?",es:'¿
67Qué hago si tengo una dirección IP "gris"?',it:"Cosa fare se ho un indirizzo IP “grigio”?",tr:'"Gri" (NAT’li) bir IP adresim var, ne yapmalıyım?',zh:"如果我使用“灰IP”(内网IP)怎么办?"},body:{en:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"A private or CGNAT WAN IP cannot accept inbound connections from the internet. rtsp.me can connect your camera using outbound methods without opening router ports."}),r.jsxs("p",{className:"faq__text text",children:["The ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"detailed guide"})," describes RTMP Push, the free software agent, Bridge, and other available connection options."]})]}),de:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Eine private oder per CGNAT vergebene WAN-IP kann keine eingehenden Internetverbindungen annehmen. rtsp.me verbindet Ihre Kamera über ausgehende Methoden, ohne Router-Ports zu öffnen."}),r.jsxs("p",{className:"faq__text text",children:["Die ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"ausführliche Anleitung"})," beschreibt RTMP Push, den kostenlosen Software-Agenten, Bridge und weitere verfügbare Verbindungsoptionen."]})]}),pr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Um IP WAN privado ou com CGNAT não aceita conexões de entrada da internet. O rtsp.me conecta sua câmera por métodos de saída, sem abrir portas no roteador."}),r.jsxs("p",{className:"faq__text text",children:["O ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"guia detalhado"})," descreve RTMP Push, o agente de software gratuito, Bridge e outras opções de conexão disponíveis."]})]}),fr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Une adresse IP WAN privée ou sous CGNAT ne peut pas accepter de connexions Internet entrantes. rtsp.me connecte votre caméra par des méthodes sortantes, sans ouvrir de ports sur le routeur."}),r.jsxs("p",{className:"faq__text text",children:["Le ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"guide détaillé"})," décrit RTMP Push, l’agent logiciel gratuit, Bridge et les autres options de connexion disponibles."]})]}),es:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Una IP WAN privada o con CGNAT no puede aceptar conexiones entrantes de internet. rtsp.me conecta tu cámara mediante métodos salientes sin abrir puertos en el router."}),r.jsxs("p",{className:"faq__text text",children:["La ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"guía detallada"})," describe RTMP Push, el agente de software gratuito, Bridge y otras opciones de conexión disponibles."]})]}),it:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Un IP WAN privato o sotto CGNAT non può accettare connessioni Internet in ingresso. rtsp.me collega la telecamera tramite metodi in uscita senza aprire porte sul router."}),r.jsxs("p",{className:"faq__text text",children:["La ",r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"guida dettagliata"})," descrive RTMP Push, l’agente software gratuito, Bridge e le altre opzioni di connessione disponibili."]})]}),tr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Özel veya CGNAT arkasındaki bir WAN IP adresi internetten gelen bağlantıları kabul edemez. rtsp.me, router portlarını açmadan kameranızı dışarı yönlü yöntemlerle bağlayabilir."}),r.jsxs("p",{className:"faq__text text",children:[r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"Ayrıntılı kılavuz"}),"; RTMP Push, ücretsiz yazılım aracısı, Bridge ve kullanılabilen diğer bağlantı seçeneklerini açıklar."]})]}),zh:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"私有或CGNAT环境下的WAN IP无法接受来自互联网的入站连接。rtsp.me可通过出站方式连接摄像机,无需开放路由器端口。"}),r.jsxs("p",{className:"faq__text text",children:[r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"详细指南"}),"介绍了RTMP Push、免费软件代理、Bridge以及其他可用的连接方式。"]}
67)]}),ru:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Частный WAN-адрес или адрес за CGNAT не может принимать входящие подключения из интернета. rtsp.ru подключает камеру исходящими способами без открытия портов на роутере."}),r.jsxs("p",{className:"faq__text text",children:[r.jsx("a",{href:"how-to-stream-without-static-ip.html",children:"Подробное руководство"})," описывает RTMP Push, бесплатный программный агент, Bridge и другие доступные варианты подключения."]})]})}},{id:"faq-how_set_pot_mapping",q:{en:"How to set up port mapping?",ru:"Как настроить порт-маппинг?",de:"Wie richte ich das Port-Forwarding ein?",pr:"Como configuro o redirecionamento de portas (port mapping)?",fr:"Comment configurer le transfert de port ?",es:"¿Cómo configuro el reenvío de puertos (port mapping)?",it:"Come configuro il port mapping?",tr:"Port yönlendirmeyi (port mapping) nasıl ayarlarım?",zh:"如何配置端口映射(Port Mapping)?"},body:{en:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Port forwarding is a router rule that sends incoming internet traffic to a specific device and port on your local network."}),r.jsxs("ol",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"Reserve a fixed local IP address for the camera."}),r.jsx("li",{className:"broadcast__li text",children:"Choose a unique external TCP port and forward it to the camera's internal RTSP port, usually 554."}),r.jsx("li",{className:"broadcast__li text",children:"Permit the rule in the router and firewall without exposing the camera through DMZ."}),r.jsx("li",{className:"broadcast__li text",children:"Test the connection from outside the local network."})]}),r.jsx("p",{className:"faq__text text",children:"A public IP address is required. If your connection uses CGNAT or a private WAN address, use an alternative connection method."}),r.jsxs("p",{className:"faq__text text",children:["The ",r.jsx("a",{href:"how-to-configure-port-forwarding.html",children:"detailed guide"})," contains step-by-step setup and examples for different router models."]})]}),de:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Port-Forwarding ist eine Router-Regel, die eingehenden Internetverkehr an ein bestimmtes Gerät und einen Port im lokalen Netzwerk weiterleitet."}),r.jsxs("ol",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"Reservieren Sie eine feste lokale IP-Adresse für die Kamera."}),r.jsx("li",{className:"broadcast__li text",children:"Wählen Sie einen eindeutigen externen TCP-Port und leiten Sie ihn an den internen RTSP-Port der Kamera, normalerweise 554, weiter."}),r.jsx("li",{className:"broadcast__li text",children:"Erlauben Sie die Regel im Router und in der Firewall, ohne die Kamera über DMZ freizugeben."}),r.jsx("li",{className:"broadcast__li text",children:"Testen Sie die Verbindung außerhalb des lokalen Netzwerks."})]}),r.jsx("p",{className:"faq__text text",children:"Eine öffentliche IP-Adresse ist erforderlich. Nutzen Sie bei CGNAT oder einer privaten WAN-Adresse eine alternative Verbindungsmethode."}),r.jsxs("p",{className:"faq__text text",children:["Die ",r.jsx("a",{href:"how-to-configure-port-forwarding.html",children:"ausführliche Anleitung"})," enthält eine schrittweise Einrichtung und Beispiele für verschiedene Routermodelle."]})]}),pr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"O redirecionamento de portas é uma regra do roteador que envia o tráfego recebido da internet para um dispositivo e uma porta específicos da rede local."}),r.jsxs("ol",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"Reserve um endereço IP local fixo para a câmera."}),r.jsx("li",{className:"broadcast__li text",children:"Escolha uma porta TCP externa exclusiva e encaminhe-a para a porta RTSP interna da câmera, geralmente 554."}),r.jsx("li",{className:"broadcast__li text",children:"Permita a regra no roteador e no firewall sem expor a câmera por DMZ."}),r.jsx("li",{className:"broadcast__li text",children:"Teste a conexão fora da rede local."})]}),r.jsx("p",{className:"faq__text text",children:"É necessário ter um endereço IP público. Se a conexão usar CGNAT ou um endereço WAN privado, use um método de conexão alternativo."}),r.jsxs("p",{className:"faq__text text",children:["O ",r.jsx("a",{href:"how-to-configure-port-forwarding.html",children:"guia detalhado"})," contém a configuração passo a passo e exemplos para diferentes modelos de roteador."]})]}),fr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Le transfert de port est une règle du routeur qui dirige le trafic Internet entrant vers un appareil et un port précis du réseau local."}),r.jsxs("ol",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"Réservez une adresse IP locale fixe pour la caméra."}),r.jsx("li",{className:"broadcast__li text",children:"Choisissez un port TCP externe unique et redirigez-le vers le port RTSP interne de la caméra, généralement 554."}),r.jsx("li",{className:"broadcast__li text",children:"Autorisez la règle dans le routeur et le pare-feu sans exposer la caméra via la DMZ."}),r.jsx("li",{className:"broadcast__li text",children:"Testez la connexion depuis l’extérieur du réseau local."})]}),r.jsx("p",{className:"faq__text text",children:"Une adresse IP publique est requise. Si votre connexion utilise le CGNAT ou une adresse WAN privée, utilisez une autre méthode de connexion."}),r.jsxs("p",{className:"faq__text text",children:["Le ",r.jsx("a",{href:"how-to-configure-port-forwarding.html",children:"guide détaillé"})," contient une configuration pas à pas et des exemples pour différents modèles de routeurs."]})]}),es:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"El reenvío de puertos es una regla del router que dirige el tráfico entrante de internet a un dispositivo y puerto específicos de la red local."}),r.jsxs("ol",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"Reserva una dirección IP local fija para la cámara."}),r.jsx("li",{className:"broadcast__li text",children:"Elige un puerto TCP externo único y reenvíalo al puerto RTSP interno de la cámara, normalmente el 554."}),r.jsx("li",{className:"broadcast__li text",children:"Permite la regla en el router y el firewall sin exponer la cámara mediante DMZ."}),r.jsx("li",{className:"broadcast__li text",children:"Prueba la conexión desde fuera de la red local."})]}),r.jsx("p",{className:"faq__text text",children:"Se requiere una dirección IP pública. Si tu conexión usa CGNAT o una dirección WAN privada, utiliza un método de conexión alternativo."}),r.jsxs("p",{className:"faq__text text",children:["La ",r.jsx("a",{href:"how-to-configure-port-forwarding.html",children:"guía detallada"})," contiene la configuración paso a paso y ejemplos para distintos modelos de router."]})]}),it:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Il port forwarding è una regola del router che inoltra il traffico Internet in ingresso a un dispositivo e a una porta specifici della rete locale."}),r.jsxs("ol",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"Riserva un indirizzo IP locale fisso per la telecamera."}),r.jsx("li",{className:"broadcast__li text",children:"Scegli una porta TCP esterna univoca e inoltrala alla porta RTSP interna della telecamera, in genere 554."}),r.jsx("li",{className:"broadcast__li text",children:"Consenti la regola nel router e nel firewall senza esporre la telecamera tramite DMZ."}),r.jsx("li",{className:"broadcast__li text",children:"Verifica la connessione dall’esterno della rete locale."})]}),r.jsx("p",{className:"faq__text text",children:"È richiesto un indirizzo IP pubblico. Se la connessione usa CGNAT o un indirizzo WAN privato, utilizza un metodo di connessione alternativo."}),r.jsxs("p",{className:"faq__text text",children:["La ",r.jsx("a",{href:"how-to-configure-port-forwarding.html",children:"guida dettagliata"})," contiene la configurazione passo per passo ed esempi per diversi modelli di router."]})]}),tr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Port yönlendirme, internetten gelen trafiği yerel ağdaki belirli bir cihaza ve porta aktaran bir router kuralıdır."}),r.jsxs("ol",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"Kamera için sabit bir yerel IP adresi ayırın."}),r.jsx("li",{className:"broadcast__li text",children:"Benzersiz bir harici TCP portu seçin ve kameranın dahil
67i RTSP portuna, genellikle 554, yönlendirin."}),r.jsx("li",{className:"broadcast__li text",children:"Kamerayı DMZ üzerinden açığa çıkarmadan router ve güvenlik duvarında kurala izin verin."}),r.jsx("li",{className:"broadcast__li text",children:"Bağlantıyı yerel ağın dışından test edin."})]}),r.jsx("p",{className:"faq__text text",children:"Genel bir IP adresi gereklidir. Bağlantınız CGNAT veya özel bir WAN adresi kullanıyorsa alternatif bir bağlantı yöntemi kullanın."}),r.jsxs("p",{className:"faq__text text",children:[r.jsx("a",{href:"how-to-configure-port-forwarding.html",children:"Ayrıntılı kılavuz"}),", adım adım kurulumu ve farklı router modelleri için örnekleri içerir."]})]}),zh:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"端口转发是将互联网传入流量发送到局域网中特定设备和端口的路由器规则。"}),r.jsxs("ol",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"为摄像机保留一个固定的本地IP地址。"}),r.jsx("li",{className:"broadcast__li text",children:"选择一个唯一的外部TCP端口,并将其转发到摄像机的内部RTSP端口,通常为554。"}),r.jsx("li",{className:"broadcast__li text",children:"在路由器和防火墙中允许该规则,但不要通过DMZ暴露摄像机。"}),r.jsx("li",{className:"broadcast__li text",children:"从本地网络外部测试连接。"})]}),r.jsx("p",{className:"faq__text text",children:"必须使用公网IP地址。如果连接使用CGNAT或私有WAN地址,请改用其他连接方式。"}),r.jsxs("p",{className:"faq__text text",children:[r.jsx("a",{href:"how-to-configure-port-forwarding.html",children:"详细指南"}),"包含分步设置说明以及适用于不同路由器型号的示例。"]})]}),ru:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Проброс портов — это правило роутера, которое направляет входящий интернет-трафик на определённое устройство и порт в локальной сети."}),r.jsxs("ol",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"Зарезервируйте для камеры постоянный локальный IP-адрес."}),r.jsx("li",{className:"broadcast__li text",children:"Выберите уникальный внешний TCP-порт и направьте его на внутренний RTSP-порт камеры, обычно 554."}),r.jsx("li",{className:"broadcast__li text",children:"Разрешите правило в роутере и межсетевом экране, не открывая камеру через DMZ."}),r.jsx("li",{className:"broadcast__li text",children:"Проверьте подключение за пределами локальной сети."})]}),r.jsx("p",{className:"faq__text text",children:"Требуется публичный IP-адрес. Если подключение использует CGNAT или частный WAN-адрес, выберите альтернативный способ подключения."}),r.jsxs("p",{className:"faq__text text",children:[r.jsx("a",{href:"how-to-configure-port-forwarding.html",children:"Подробное руководство"})," содержит пошаговую настройку и примеры для разных моделей роутеров."]})]})}},{id:"faq-how_requirements",q:{en:"What are the recommended camera settings?",ru:"Какие Рекомендуемые настройки камеры?",de:"Welche Kameraeinstellungen werden empfohlen?",pr:"Quais configurações são recomendadas para a câmera?",fr:"Quelles sont les configurations recommandées pour la caméra ?",es:"¿Qué configuración se recomienda para la cámara?",it:"Quali impostazioni si raccomandano per la telecamera?",tr:"Kamera için önerilen ayarlar nelerdir?",zh:"摄像机的最佳配置建议是什么?"},body:{en:r.jsxs("ul",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"•Codec − H.264;"}),r.jsx("li",{className:"broadcast__li text",children:"•FPS – 25;"}),r.jsx("li",{className:"broadcast__li text",children:"•GOP (i-frame) − 50 fps (2 sec);"}),r.jsx("li",{className:"broadcast__li text",children:"•SMART codec - off"})]}),de:r.jsxs("ul",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"• Codec – H.264"}),r.jsx("li",{className:"broadcast__li text",children:"• FPS – 25"}
67),r.jsx("li",{className:"broadcast__li text",children:"• GOP (i-frame) – 50 fps (2 s)"}),r.jsx("li",{className:"broadcast__li text",children:"• SMART-Codec – deaktiviert"})]}),pr:r.jsxs("ul",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"• Codec — H.264"}),r.jsx("li",{className:"broadcast__li text",children:"• FPS — 25"}),r.jsx("li",{className:"broadcast__li text",children:"• GOP (i-frame) — 50 fps (2 s)"}),r.jsx("li",{className:"broadcast__li text",children:"• SMART codec — desligado"})]}),fr:r.jsxs("ul",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"• Codec — H.264"}),r.jsx("li",{className:"broadcast__li text",children:"• FPS — 25"}),r.jsx("li",{className:"broadcast__li text",children:"• GOP (i-frame) — 50 fps (2 s)"}),r.jsx("li",{className:"broadcast__li text",children:"• SMART codec — désactivé"})]}),es:r.jsxs("ul",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"• Códec — H.264"}),r.jsx("li",{className:"broadcast__li text",children:"• FPS — 25"}),r.jsx("li",{className:"broadcast__li text",children:"• GOP (i-frame) — 50 fps (2 s)"}),r.jsx("li",{className:"broadcast__li text",children:"• SMART codec — desactivado"})]}),it:r.jsxs("ul",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"• Codec — H.264"}),r.jsx("li",{className:"broadcast__li text",children:"• FPS — 25"}),r.jsx("li",{className:"broadcast__li text",children:"• GOP (i-frame) — 50 fps (2 s)"}),r.jsx("li",{className:"broadcast__li text",children:"• SMART codec — disattivato"})]}),tr:r.jsxs("ul",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"• Codec — H.264"}),r.jsx("li",{className:"broadcast__li text",children:"• FPS — 25"}),r.jsx("li",{className:"broadcast__li text",children:"• GOP (i-frame) — 50 fps (2 s)"}),r.jsx("li",{className:"broadcast__li text",children:"• SMART codec — kapalı"})]}),zh:r.jsxs("ul",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"• 编解码器 — H.264"}),r.jsx("li",{className:"broadcast__li text",children:"• 帧率(FPS)— 25"}),r.jsx("li",{className:"broadcast__li text",children:"• GOP(关键帧间隔)— 50帧(2秒)"}),r.jsx("li",{className:"broadcast__li text",children:"• 关闭SMART编码"})]}),ru:r.jsxs("ul",{className:"broadcast__ul list-reset",children:[r.jsx("li",{className:"broadcast__li text",children:"•кодек − H.264;"}),r.jsx("li",{className:"broadcast__li text",children:"•FPS – 25;"}),r.jsx("li",{className:"broadcast__li text",children:"•GOP (i-frame) − 50 fps (2 sec);"}),r.jsx("li",{className:"broadcast__li text",children:"•SMART кодек - выключен"})]})}},{id:"faq-error_local_ip",q:{en:"Error - Local IP cannot be used",ru:"Ошибка - Невозможно использовать локальный IP",de:"Fehler – Lokale IP kann nicht verwendet werden",pr:"Erro - Não é possível usar um IP local",fr:"Erreur - Une IP locale ne peut pas être utilisée",es:"Error - No se puede usar una IP local",it:"Errore - Non è possibile utilizzare un IP locale",tr:"Hata - Yerel IP adresi kullanılamaz",zh:"错误 - 无法使用局域网IP"},body:{en:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:'Local IP addresses (so-called "private IPs") belong to ranges that are not routable on the global network. These ranges are defined by RFC 1918: • 10.0.0.0 – 10.255.255.255 • 172.16.0.0 – 172.31.255.255 • 192.168.0.0 – 192.168.255.255'}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• 10.0.0.0 – 10.255.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 172.16.0.0 – 172.31.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 192.168.0.0 – 192.168.255.255"})]}),r.jsx("p",{className:"faq__text text",children:"Devices with such addresses are only accessible within a local network (e.g., home or office). Exter
67nal devices from the internet cannot directly connect to these IP addresses."})]}),de:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:'Lokale IP-Adressen ("private IPs") sind Adressbereiche, die nicht im öffentlichen Netz geroutet werden können. Diese Bereiche sind in RFC 1918 definiert: • 10.0.0.0 – 10.255.255.255 • 172.16.0.0 – 172.31.255.255 • 192.168.0.0 – 192.168.255.255'}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• 10.0.0.0 – 10.255.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 172.16.0.0 – 172.31.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 192.168.0.0 – 192.168.255.255"})]}),r.jsx("p",{className:"faq__text text",children:"Geräte mit solchen Adressen sind nur innerhalb eines lokalen Netzwerks (z.B. zu Hause oder im Büro) zugänglich. Externe Geräte im Internet können auf solche IP-Adressen nicht direkt zugreifen."})]}),pr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:'Endereços IP locais (também chamados de "IPs privados") pertencem a faixas que não são roteáveis pela internet global. Essas faixas são definidas pela RFC 1918: • 10.0.0.0 – 10.255.255.255 • 172.16.0.0 – 172.31.255.255 • 192.168.0.0 – 192.168.255.255'}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• 10.0.0.0 – 10.255.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 172.16.0.0 – 172.31.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 192.168.0.0 – 192.168.255.255"})]}),r.jsx("p",{className:"faq__text text",children:"Dispositivos com esses endereços só são acessíveis dentro de uma rede local (por exemplo, em casa ou no escritório). É impossível que dispositivos externos na internet se conectem diretamente a esses endereços IP."})]}),fr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Les adresses IP locales (dites « privées ») appartiennent à des plages non routables sur le réseau internet mondial. Ces plages sont définies par la RFC 1918 : • 10.0.0.0 – 10.255.255.255 • 172.16.0.0 – 172.31.255.255 • 192.168.0.0 – 192.168.255.255"}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• 10.0.0.0 – 10.255.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 172.16.0.0 – 172.31.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 192.168.0.0 – 192.168.255.255"})]}),r.jsx("p",{className:"faq__text text",children:"Les appareils possédant ces adresses ne sont accessibles qu’à l’intérieur d’un réseau local (par exemple, à la maison ou au bureau). Il est impossible pour des appareils externes sur internet de se connecter directement à ces adresses IP."})]}),es:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:'Las direcciones IP locales (también llamadas "IPs privadas") pertenecen a rangos que no son accesibles en la red global. Estos rangos están definidos por la RFC 1918: • 10.0.0.0 – 10.255.255.255 • 172.16.0.0 – 172.31.255.255 • 192.168.0.0 – 192.168.255.255'}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• 10.0.0.0 – 10.255.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 172.16.0.0 – 172.31.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 192.168.0.0 – 192.168.255.255"})]}),r.jsx("p",{className:"faq__text text",children:"Los dispositivos con estas direcciones solo son accesibles dentro de una red local (por ejemplo, en casa o en la oficina). Desde internet, es imposible conectarse directamente a esas direcciones IP."})]}),it:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Gli indirizzi IP locali (anche dett
67i “privati”) appartengono a intervalli non instradabili sulla rete globale. Tali intervalli sono definiti dalla RFC 1918: • 10.0.0.0 – 10.255.255.255 • 172.16.0.0 – 172.31.255.255 • 192.168.0.0 – 192.168.255.255"}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• 10.0.0.0 – 10.255.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 172.16.0.0 – 172.31.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 192.168.0.0 – 192.168.255.255"})]}),r.jsx("p",{className:"faq__text text",children:"I dispositivi con tali indirizzi sono accessibili solo all’interno di una rete locale (ad esempio a casa o in ufficio). Dall’esterno, su Internet, non è possibile connettersi direttamente a questi indirizzi IP."})]}),tr:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Yerel (özel) IP adresleri, küresel ağ üzerinden yönlendirilemeyen belirli IP aralıklarına aittir. Bu aralıklar RFC 1918 tarafından tanımlanmıştır: • 10.0.0.0 – 10.255.255.255 • 172.16.0.0 – 172.31.255.255 • 192.168.0.0 – 192.168.255.255"}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• 10.0.0.0 – 10.255.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 172.16.0.0 – 172.31.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 192.168.0.0 – 192.168.255.255"})]}),r.jsx("p",{className:"faq__text text",children:"Bu IP adreslerine sahip cihazlara sadece yerel ağ (ev veya ofis) içerisinden erişilebilir. İnternet üzerinden bu IP’lere doğrudan bağlanmak mümkün değildir."})]}),zh:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"局域网IP地址(又称“私有IP”)属于不可在全球互联网中路由的地址范围。根据RFC 1918,这些范围为: • 10.0.0.0 – 10.255.255.255 • 172.16.0.0 – 172.31.255.255 • 192.168.0.0 – 192.168.255.255"}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• 10.0.0.0 – 10.255.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 172.16.0.0 – 172.31.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 192.168.0.0 – 192.168.255.255"})]}),r.jsx("p",{className:"faq__text text",children:"这些地址仅能在局域网(家庭或办公室)内访问。无法从公网(互联网)直接访问这些IP地址。"})]}),ru:r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"faq__text text",children:"Локальные IP-адреса (так называемые “серые IP”) принадлежат диапазонам, которые не маршрутизируются в глобальной сети. Эти диапазоны определены стандартом RFC 1918: • 10.0.0.0 – 10.255.255.255 • 172.16.0.0 – 172.31.255.255 • 192.168.0.0 – 192.168.255.255"}),r.jsxs("ul",{className:"broadcast__ul list-reset",style:{paddingTop:"24px"},children:[r.jsx("li",{className:"broadcast__li text",children:"• 10.0.0.0 – 10.255.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 172.16.0.0 – 172.31.255.255"}),r.jsx("li",{className:"broadcast__li text",children:"• 192.168.0.0 – 192.168.255.255"})]}),r.jsx("p",{className:"faq__text text",children:"Устройства с такими адресами доступны только внутри локальной сети (например, домашней или офисной). Внешние устройства из интернета не могут напрямую подключиться к этим IP-адресам."})]})}}],hj=()=>{const{lang:e}=V(),[t,n]=x.useState(rd[0].id);return r.jsx("section",{className:"faq section",id:"faq",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"faq__top top",children:[r.jsx("span",{className:"faq__suptitle suptitle",children:"FAQ"}),r.jsx("h2",{className:"faq__h2 h2 anim",children:pj[e]})]}),r.jsx("ul",{className:"faq__list list-reset _init","data-spollers":"",children:rd.map(a=>{const s=t===a.id;return r.jsxs("li",{id:a.id,className:"faq__item",children:[r.jsx("div",{className:"faq__header",style:{cursor:"pointer"},onClick:()=>n(s?"":a.id),children:r.jsx("h3",{className:`faq__h3 h3 anim${s?" show":""}`,children:a.q[e]})}),r.jsx("button",{className:`faq__btn btn-reset${s?" _active":""}`,"data-spoller":"",onClick:()=>n(s?"":a.id)}),r.jsx("div",{className:"faq__body",hidden:!s,onClick:i=>i.stopPropagation(),children:a.body[e]})]},a.id)})})]})})},fj={en:{suptitle:"Products",h2:r.jsxs(r.Fragment,{children:["Convenient solution for hosting ",r.jsx("br",{})," streaming video"]}),item1:{h3:"MyVMS 5Mp Bullet Surveillance Camera",price:"99 Euro",discount:"NEW",link:"https://buy.stripe.com/9AQfZD3Ng1tN288fZ9",buy:"Buy",
67webp:"/landing/img/ipcam.webp",fallback:"/landing/img/ipcam.webp",text:"No need for a static IP address or port mapping. It has a resolution of 2592 x 1944 at 25 fps, as well as a wide viewing angle. The IP-65 rated cylindrical metal body ensures durability. Mounting kit included. Lens - 2.8."},item2:{h3:"MyVMS Bridge",price:"50 Euro",discount:"NEW",link:"https://buy.stripe.com/5kA28N5Vo5K30004gx",buy:"Buy",webp:"/landing/img/bridge.webp",fallback:"/landing/img/bridge.webp",text:"A device for connecting IP cameras without the need for a public IP address. Supports up to 8 IP cameras. Simply install it in your local network, and our technical support will set up the streaming for you."},item3:{h3:"RTSP Software Agent",price:"Free",discount:"NEW",link:"/en/streaming-agent.html",buy:"Download",webp:"/landing/img/agent4.webp",fallback:"/landing/img/agent4.webp",text:"A free program for Windows, Linux and ARM. It picks up your camera's RTSP stream in the local network and sends it to rtsp.me over RTMP Push — no static IP or open ports required."}},ru:{suptitle:"Продукты",h2:r.jsxs(r.Fragment,{children:["Удобное решение для размещения ",r.jsx("br",{})," потокового видео"]}),item1:{h3:"IP-камера Линия 4Mp OEM Agent Bullet",price:"5 400 руб",discount:"NEW",link:"https://ozon.ru/t/dwcYore",buy:"Купить",webp:"/landing/img/ipcam-4mp-agent.webp",fallback:"/landing/img/ipcam-4mp-agent.webp",text:"Не нужен статический IP-адрес или настройка порт-маппинга. Обладает разрешением 2688 x 1512 при 25 fps, а также широким углом обзора. Цилиндрический корпус с защитой IP-65 выполнен из металла. Монтажный набор в комплекте. Объектив - 2.8."},item2:{h3:"Линия Bridge POE",price:"3 600 руб",discount:"NEW",link:"https://ozon.ru/t/zLKbB4j",buy:"Купить",webp:"/landing/img/bridge.webp",fallback:"/landing/img/bridge.webp",text:"Устройство для подключения IP-камер без необходимости использования белого IP-адреса. Поддерживает до 8 IP-камер. Просто установите его в локальной сети, и наша техническая поддержка настроит потоковое вещание для вас."},item3:{h3:"Программный RTSP Агент",price:"Бесплатно",discount:"NEW",link:"/ru/streaming-agent.html",buy:"Скачать",webp:"/landing/img/agent4-ru.webp",fallback:"/landing/img/agent4-ru.webp",text:"Бесплатная программа для Windows, Linux и ARM. Получает RTSP-поток камеры в локальной сети и отправляет его на rtsp.ru через RTMP Push — без статического IP и открытых портов."}},de:{suptitle:"Produkte",h2:r.jsxs(r.Fragment,{children:["Praktische Lösung für das Hosting ",r.jsx("br",{})," von Streaming-Video"]}),item1:{h3:"MyVMS 5Mp Bullet-Überwachungskamera",price:"99 Euro",discount:"NEW",link:"https://buy.stripe.com/9AQfZD3Ng1tN288fZ9",buy:"Kaufen",webp:"/landing/img/ipcam.webp",fallback:"/landing/img/ipcam.webp",text:"Keine statische IP-Adresse oder Portweiterleitung erforderlich. Die Kamera hat eine Auflösung von 2592 × 1944 bei 25 fps und einen großen Blickwinkel. Ein IP-65-Metallgehäuse bietet Zuverlässigkeit. Montagezubehör ist im Lieferumfang enthalten. Objektiv – 2,8 mm."},item2:{h3:"MyVMS Bridge",price:"50 Euro",discount:"NEW",link:"https://buy.stripe.com/5kA28N5Vo5K30004gx",buy:"Kaufen",webp:"/landing/img/bridge.webp",fallback:"/landing/img/bridge.webp",text:"Ein Gerät zum Anschluss von IP-Kameras, ohne eine öffentliche IP-Adresse zu benötigen. Unterstützt bis zu 8 IP-Kameras. Einfach in Ihr lokales Netzwerk einbinden, den Rest übernimmt unser technischer Support."},item3:{h3:"RTSP-Software-Agent",price:"Kostenlos",discount:"NEW",link:"/de/streaming-agent.html",buy:"Herunterladen",webp:"/landing/img/agent4.webp",fallback:"/landing/img/agent4.webp",text:"Ein kostenloses Programm für Windows, Linux und ARM. Es empfängt den RTSP-Stream der Kamera im lokalen Netzwerk und sendet ihn per RTMP Push an rtsp.me — ohne statische IP und offene Ports."}},pr:{suptitle:"Produtos",h2:r.jsxs(r.Fragment,{children:["Solução prática para hospedar ",r.jsx("br",{})," transmissões de vídeo"]}),item1:{h3:"Câmera de vigilância MyVMS 5Mp Bullet",price:"99 Euro",discount:"NEW",link:"https://buy.stripe.com/9AQfZD3Ng1tN288fZ9",buy:"Comprar",webp:"/landing/img/ipcam.webp",fallback:"/landing/img/ipcam.webp",text:"Não é necessário ter um endereço IP estático ou configurar redirecionamento de portas. Apresenta resolução de 2592 x 1944 a 25 fps, além de um ângulo de visão amplo. O corpo cilíndrico de metal com classificação IP-65 garante durabilidade. O kit de instalação está incluído. Lente de 2.8."},item2:{h3:"MyVMS Bridge",price:"50 Euro",discount:"NEW",link:"https://buy.stripe.com/5kA28N5Vo5K30004gx",buy:"Comprar",webp:"/landing/img/bridge.webp",fallback:"/landing/img/bridge.webp",text:"Um dispositivo para conectar câmeras IP sem a necessidade de um endereço IP público. Suporta até 8 câmeras IP. Basta instalá-lo 
67na sua rede local, e nosso suporte técnico configurará a transmissão para você."},item3:{h3:"Agente de software RTSP",price:"Grátis",discount:"NEW",link:"/pr/streaming-agent.html",buy:"Baixar",webp:"/landing/img/agent4.webp",fallback:"/landing/img/agent4.webp",text:"Um programa gratuito para Windows, Linux e ARM. Ele recebe o fluxo RTSP da câmera na rede local e o envia para o rtsp.me via RTMP Push — sem IP estático nem portas abertas."}},fr:{suptitle:"Produits",h2:r.jsxs(r.Fragment,{children:["Solution pratique pour l’hébergement ",r.jsx("br",{})," de flux vidéo"]}),item1:{h3:"Caméra de surveillance MyVMS 5Mp Bullet",price:"99 Euro",discount:"NEW",link:"https://buy.stripe.com/9AQfZD3Ng1tN288fZ9",buy:"Acheter",webp:"/landing/img/ipcam.webp",fallback:"/landing/img/ipcam.webp",text:"Aucune nécessité d’une adresse IP statique ni de configurer de transfert de port. Elle offre une résolution de 2592 x 1944 à 25 fps, ainsi qu’un large angle de vue. Le boîtier cylindrique en métal est certifié IP-65 et comprend un kit de fixation. Objectif - 2.8."},item2:{h3:"MyVMS Bridge",price:"50 Euro",discount:"NEW",link:"https://buy.stripe.com/5kA28N5Vo5K30004gx",buy:"Acheter",webp:"/landing/img/bridge.webp",fallback:"/landing/img/bridge.webp",text:"Un dispositif pour connecter des caméras IP sans avoir besoin d’une adresse IP publique. Il prend en charge jusqu’à 8 caméras IP. Il vous suffit de l’installer sur votre réseau local, et notre support technique s’occupera de la configuration du streaming."},item3:{h3:"Agent logiciel RTSP",price:"Gratuit",discount:"NEW",link:"/fr/streaming-agent.html",buy:"Télécharger",webp:"/landing/img/agent4.webp",fallback:"/landing/img/agent4.webp",text:"Un programme gratuit pour Windows, Linux et ARM. Il récupère le flux RTSP de la caméra sur le réseau local et l’envoie à rtsp.me via RTMP Push — sans IP statique ni ports ouverts."}},es:{suptitle:"Productos",h2:r.jsxs(r.Fragment,{children:["Solución conveniente para alojar ",r.jsx("br",{})," transmisiones de video"]}),item1:{h3:"Cámara de vigilancia MyVMS 5Mp Bullet",price:"99 Euro",discount:"NEW",link:"https://buy.stripe.com/9AQfZD3Ng1tN288fZ9",buy:"Comprar",webp:"/landing/img/ipcam.webp",fallback:"/landing/img/ipcam.webp",text:"No necesitas una dirección IP estática ni configurar el reenvío de puertos. Ofrece una resolución de 2592 x 1944 a 25 fps, además de un amplio ángulo de visión. El cuerpo cilíndrico de metal con clasificación IP-65 garantiza resistencia. Incluye kit de montaje. Lente de 2.8."},item2:{h3:"MyVMS Bridge",price:"50 Euro",discount:"NEW",link:"https://buy.stripe.com/5kA28N5Vo5K30004gx",buy:"Comprar",webp:"/landing/img/bridge.webp",fallback:"/landing/img/bridge.webp",text:"Un dispositivo para conectar cámaras IP sin necesidad de una dirección IP pública. Soporta hasta 8 cámaras IP. Simplemente conéctalo a tu red local y nuestro soporte técnico configurará la transmisión por ti."},item3:{h3:"Agente de software RTSP",price:"Gratis",discount:"NEW",link:"/es/streaming-agent.html",buy:"Descargar",webp:"/landing/img/agent4.webp",fallback:"/landing/img/agent4.webp",text:"Un programa gratuito para Windows, Linux y ARM. Recibe el flujo RTSP de la cámara en la red local y lo envía a rtsp.me mediante RTMP Push — sin IP estática ni puertos abiertos."}},it:{suptitle:"Prodotti",h2:r.jsxs(r.Fragment,{children:["Soluzione pratica per ospitare ",r.jsx("br",{})," lo streaming video"]}),item1:{h3:"Telecamera di sorveglianza MyVMS 5Mp Bullet",price:"99 Euro",discount:"NEW",link:"https://buy.stripe.com/9AQfZD3Ng1tN288fZ9",buy:"Acquista",webp:"/landing/img/ipcam.webp",fallback:"/landing/img/ipcam.webp",text:"Non serve un indirizzo IP statico né configurare il port forwarding. Ha una risoluzione di 2592 x 1944 a 25 fps e un ampio angolo di visione. Il corpo cilindrico in metallo con rating IP-65 garantisce resistenza. Il kit di montaggio è incluso. Obiettivo da 2.8."},item2:{h3:"MyVMS Bridge",price:"50 Euro",discount:"NEW",link:"https://buy.stripe.com/5kA28N5Vo5K30004gx",buy:"Acquista",webp:"/landing/img/bridge.webp",fallback:"/landing/img/bridge.webp",text:"Un dispositivo per collegare telecamere IP senza necessità di un indirizzo IP pubblico. Supporta fino a 8 telecamere IP. Basta installarlo nella tua rete locale e il nostro 
67supporto tecnico configurerà lo streaming per te."},item3:{h3:"Agente software RTSP",price:"Gratuito",discount:"NEW",link:"/it/streaming-agent.html",buy:"Scarica",webp:"/landing/img/agent4.webp",fallback:"/landing/img/agent4.webp",text:"Un programma gratuito per Windows, Linux e ARM. Riceve il flusso RTSP della telecamera nella rete locale e lo invia a rtsp.me tramite RTMP Push — senza IP statico né porte aperte."}},tr:{suptitle:"Ürünler",h2:r.jsxs(r.Fragment,{children:["Canlı video yayınını ",r.jsx("br",{})," barındırmak için pratik çözüm"]}),item1:{h3:"MyVMS 5Mp Bullet Güvenlik Kamerası",price:"99 Euro",discount:"NEW",link:"https://buy.stripe.com/9AQfZD3Ng1tN288fZ9",buy:"Satın Al",webp:"/landing/img/ipcam.webp",fallback:"/landing/img/ipcam.webp",text:"Sabit IP veya port yönlendirme ihtiyacı olmadan çalışır. 2592 x 1944 çözünürlükte 25 fps’e kadar kayıt, geniş açı desteği sunar. IP-65 sertifikalı metal silindirik gövdesiyle dayanıklıdır. Montaj kiti dahildir. Lens 2.8."},item2:{h3:"MyVMS Bridge",price:"50 Euro",discount:"NEW",link:"https://buy.stripe.com/5kA28N5Vo5K30004gx",buy:"Satın Al",webp:"/landing/img/bridge.webp",fallback:"/landing/img/bridge.webp",text:"IP adresi almadan IP kameraları bağlamaya yarayan bir cihaz. 8 adede kadar IP kamerayı destekler. Yerel ağınıza bağlamanız yeterli, gerisini teknik ekibimiz sizin için ayarlar."},item3:{h3:"RTSP Yazılım Ajanı",price:"Ücretsiz",discount:"NEW",link:"/tr/streaming-agent.html",buy:"İndir",webp:"/landing/img/agent4.webp",fallback:"/landing/img/agent4.webp",text:"Windows, Linux ve ARM için ücretsiz bir program. Kameranın RTSP akışını yerel ağdan alır ve RTMP Push ile rtsp.me'ye gönderir — sabit IP ve açık port gerekmez."}},zh:{suptitle:"产品",h2:r.jsxs(r.Fragment,{children:["方便的视频流托管 ",r.jsx("br",{})," 解决方案"]}),item1:{h3:"MyVMS 5Mp Bullet监控摄像机",price:"99 Euro",discount:"NEW",link:"https://buy.stripe.com/9AQfZD3Ng1tN288fZ9",buy:"购买",webp:"/landing/img/ipcam.webp",fallback:"/landing/img/ipcam.webp",text:"无需固定IP或端口映射。分辨率可达2592 x 1944,25帧/秒,并提供广角视野。坚固的金属圆柱形外壳(IP-65级防护)。包含安装套件。镜头为2.8。"},item2:{h3:"MyVMS Bridge",price:"50 Euro",discount:"NEW",link:"https://buy.stripe.com/5kA28N5Vo5K30004gx",buy:"购买",webp:"/landing/img/bridge.webp",fallback:"/landing/img/bridge.webp",text:"此设备可在无需公网IP的情况下连接IP摄像机。支持最多8路IP摄像机。只需把它接入你的局域网,我们的技术支持会为你完成直播配置。"},item3:{h3:"RTSP 软件代理",price:"免费",discount:"NEW",link:"/zh/streaming-agent.html",buy:"下载",webp:"/landing/img/agent4.webp",fallback:"/landing/img/agent4.webp",text:"适用于 Windows、Linux 和 ARM 的免费程序。它在局域网中获取摄像机的 RTSP 流,并通过 RTMP Push 发送到 rtsp.me——无需固定 IP 和开放端口。"}}},gj=()=>{const{lang:e}=V(),t=fj[e];return r.jsx("section",{className:"products section",id:"products",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"products__top top",children:[r.jsx("span",{className:"products__suptitle suptitle",children:t.suptitle}),r.jsx("h2",{className:"products__h2 h2 anim",children:t.h2})]}),r.jsxs("ul",{className:"products__list list-reset",children:[r.jsxs("li",{className:"products__item",children:[r.jsxs("div",{className:"products__line",children:[r.jsx("h3",{className:"products__h3 h3 anim",children:t.item1.h3}),r.jsx("span",{className:"products__price text",children:t.item1.price})]}),r.jsxs("div",{className:"products__row",children:[r.jsx("span",{className:"products__discount",children:t.item1.discount}),r.jsx("a",{className:"products__link",href:t.item1.link,children:t.item1.buy})]}),r.jsx("div",{className:"products__img",children:r.jsx(le,{webp:t.item1.webp,fallback:t.item1.fallback,width:395,height:300,imgClassName:"lazy",imgStyle:{margin:"0 auto"}})}),r.jsx("p",{className:"products__text text",children:t.item1.text})]}),r.jsxs("li",{className:"products__item",children:[r.jsxs("div",{className:"products__line",children:[r.jsx("h3",{className:"products__h3 h3 anim",children:t.item2.h3}),r.jsx("span",{className:"products__price text",children:t.item2.price})]}),r.jsxs("div",{className:"products__row",children:[r.jsx("span",{className:"products__discount",children:t.item2.discount}),r.jsx("a",{className:"products__link",href:t.item2.link,children:t.item2.buy})]}),r.jsx("div",{className:"products__img",children:r.jsx(le,{webp:t.item2.webp,fallback:t.item2.fallback,width:395,height:300,imgClassName:"lazy",imgStyle:{margin:"0 auto"}})}),r.jsx("p",{className:"products__text text",children:t.item2.text})]}),r.jsxs("li",{className:"products__item",children:[r.jsxs("div",{className:"products__line",children:[r.jsx("h3",{className:"products__h3 h3 anim",children:t.item3.h3}),r.jsx("span",{className:"products__price text",children:t.item3.price})]}),r.jsxs("div",{className:"products__row",children:[r.jsx("span",{className:"products__discount",children:t.item3.discount}),r.jsx("a",{className:"products__link",href:t.item3.link,children:t.item3.buy})]}),r.jsx("div",{className:"products__img",children:r.jsx(le,{webp:t.item3.webp,fallback:t.item3.fallback,width:395,height:300,imgClassName:"lazy",imgStyle:{margin:"0 auto"}})}),r.jsx("p",{className:"products__text text",children:t.item3.text})]})]})]})})},xj={en:{suptitle:"Feedback form",h2:r.jsxs(r.Fragment,{children:["Contact us ",r.jsx("br",{})," with any questions"]}),emailLabel:"ENTER YOUR EMAIL",messageLabel:"Your message:",messagePlaceholder:"Enter your message",submit:"Send",errEmail:"error email.",errEmailEmpty:"email?",errText:"need text.",errNetwork:"Failed to send. Please try again.",sending:"Sending…",sent:"Message sent!"},ru:{suptitle:"форма обратной связи",h2:r.jsxs(r.Fragment,{children:["свяжитесь с нами ",r.jsx("br",{})," по любым вопросам"]}),emailLabel:"ВВЕДИТЕ ВАШ EMAIL",messageLabel:"Ваше сообщение:",messagePlaceholder:"Введите ваше сообщение",submit:"отправить",errEmail:"неверный email",errEmailEmpty:"укажите email",errText:"введите сообщение",errNetwork:"Не удалось отправить. Попробуйте ещё раз.",sending:"Отправка…",sent:"Сообщение отправлено!"},de:{suptitle:"Kontaktformular",h2:r.jsxs(r.Fragment,{children:["Kontaktieren Sie uns ",r.jsx("br",{})," bei Fragen"]}),emailLabel:"GEBEN SIE IHRE E-MAIL EIN",messageLabel:"Ihre Nachricht:",messagePlaceholder:"Geben Sie Ihre Nachricht ein",submit:"Senden",errEmail:"ungültige E-Mail",errEmailEmpty:"E-Mail angeben",errText:"Nachricht eingeben",errNetwork:"Senden fehlgeschlagen. Bitte erneut versuchen.",sending:"Wird gesendet…",sent:"Nachricht gesendet!"},pr:{suptitle:"Formulário de contato",h2:r.jsxs(r.Fragment,{children:["Entre em contato ",r.jsx("br",{}
67)," para qualquer dúvida"]}),emailLabel:"INSIRA SEU E-MAIL",messageLabel:"Sua mensagem:",messagePlaceholder:"Digite sua mensagem",submit:"Enviar",errEmail:"e-mail inválido",errEmailEmpty:"informe o e-mail",errText:"digite a mensagem",errNetwork:"Falha ao enviar. Tente novamente.",sending:"Enviando…",sent:"Mensagem enviada!"},fr:{suptitle:"Formulaire de contact",h2:r.jsxs(r.Fragment,{children:["Contactez-nous ",r.jsx("br",{})," pour toute question"]}),emailLabel:"ENTREZ VOTRE EMAIL",messageLabel:"Votre message :",messagePlaceholder:"Saisissez votre message",submit:"Envoyer",errEmail:"email invalide",errEmailEmpty:"indiquez votre email",errText:"saisissez un message",errNetwork:"Échec de l'envoi. Veuillez réessayer.",sending:"Envoi…",sent:"Message envoyé !"},es:{suptitle:"Formulario de contacto",h2:r.jsxs(r.Fragment,{children:["Contáctanos ",r.jsx("br",{})," para cualquier consulta"]}),emailLabel:"INGRESA TU CORREO ELECTRÓNICO",messageLabel:"Tu mensaje:",messagePlaceholder:"Escribe tu mensaje",submit:"Enviar",errEmail:"correo inválido",errEmailEmpty:"indica tu correo",errText:"escribe un mensaje",errNetwork:"No se pudo enviar. Inténtalo de nuevo.",sending:"Enviando…",sent:"¡Mensaje enviado!"},it:{suptitle:"Modulo di contatto",h2:r.jsxs(r.Fragment,{children:["Contattaci ",r.jsx("br",{})," per qualsiasi domanda"]}),emailLabel:"INSERISCI LA TUA EMAIL",messageLabel:"Il tuo messaggio:",messagePlaceholder:"Inserisci il tuo messaggio",submit:"Invia",errEmail:"email non valida",errEmailEmpty:"inserisci l'email",errText:"inserisci un messaggio",errNetwork:"Invio non riuscito. Riprova.",sending:"Invio…",sent:"Messaggio inviato!"},tr:{suptitle:"İletişim Formu",h2:r.jsxs(r.Fragment,{children:["Herhangi bir sorunuz için ",r.jsx("br",{})," bizimle iletişime geçin"]}),emailLabel:"E-POSTA ADRESİNİZİ GİRİN",messageLabel:"Mesajınız:",messagePlaceholder:"Mesajınızı girin",submit:"Gönder",errEmail:"geçersiz e-posta",errEmailEmpty:"e-posta girin",errText:"mesaj girin",errNetwork:"Gönderilemedi. Lütfen tekrar deneyin.",sending:"Gönderiliyor…",sent:"Mesaj gönderildi!"},zh:{suptitle:"联系表单",h2:r.jsxs(r.Fragment,{children:["有任何问题,欢迎 ",r.jsx("br",{})," 联系我们"]}),emailLabel:"输入电子邮箱",messageLabel:"你的信息:",messagePlaceholder:"请输入你的信息",submit:"发送",errEmail:"邮箱无效",errEmailEmpty:"请输入邮箱",errText:"请输入信息",errNetwork:"发送失败,请重试。",sending:"发送中…",sent:"信息已发送!"}},vj=()=>{const{lang:e}=V(),t=xj[e],[n,a]=x.useState(""),[s,i]=x.useState(""),[l,o]=x.useState(""),[u,c]=x.useState([]),[p,m]=x.useState(!1),[h,v]=x.useState(!1),j=async b=>{if(b.preventDefault(),p)return;const S=[];if(n.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n.trim())||S.push(t.errEmail):S.push(t.errEmailEmpty),s.trim()||S.push(t.errText),c(S),!(S.length>0)){if(l){v(!0),a(""),i("");return}m(!0);try{const f=await fetch(`${Ra.apiUrl}/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:n.trim(),message:s.trim(),lang:e,website:""})});if(!f.ok)throw new Error(`feedback failed: ${f.status}`);v(!0),a(""),i("")}catch{c([t.errNetwork])}finally{m(!1)}}};return r.jsx("section",{className:"callback section",id:"callback",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"callback__top top",children:[r.jsx("span",{className:"callback__suptitle suptitle",children:t.suptitle}),r.jsx("h2",{className:"callback__h2 h2 anim",children:t.h2})]}),r.jsxs("div",{className:"callback__inner",children:[r.jsx("div",{className:"callback__img anim-scale",children:r.jsx(le,{webp:"/landing/img/main/callback.webp",fallback:"/landing/img/main/callback.png",width:869,height:510,imgClassName:"img lazy",style:{display:"block",width:"100%",height:"100%"},imgStyle:{objectFit:"cover"}})}),r.jsxs("form",{className:"callback__form",onSubmit:j,children:[r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label ",children:t.emailLabel}),r.jsx("input",{className:"form__input input-reset input-name ",type:"email",name:"email",placeholder:"[email protected]",value:n,onChange:b=>{a(b.currentTarget.value),v(!1)}})]}),r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:t.messageLabel}),r.jsx("textarea",{className:"form__input form__input--textarea input-reset",name:"text",placeholder:t.messagePlaceholder,value:s,onChange:b=>
67{i(b.currentTarget.value),v(!1)}})]}),r.jsx("div",{"aria-hidden":"true",style:{position:"absolute",left:"-9999px",top:"-9999px",width:"1px",height:"1px",overflow:"hidden"},children:r.jsxs("label",{children:["Website",r.jsx("input",{type:"text",name:"website",tabIndex:-1,autoComplete:"off",value:l,onChange:b=>o(b.currentTarget.value)})]})}),r.jsxs("div",{className:"form__group",children:[u.length>0&&r.jsxs("div",{style:{color:"red"},children:["❗ ",u.join(" · ")]}),h&&r.jsx("div",{style:{color:"green"},children:t.sent})]}),r.jsx("button",{className:"form__btn btn btn--red btn-reset",type:"submit",disabled:p,children:p?t.sending:t.submit}),r.jsx("h2",{children:r.jsxs("center",{children:["RTSP Streaming Support Team ",r.jsx("br",{}),"[email protected]"]})})]})]})]})})},rl=(e,t)=>`/${e==="pr"?"pt":e}/${t}.html`,bj=new Set(["marina","beach","ski","camping","weather","sports","carwash","autoservice","restaurant","retail","beauty","parking","building","warehouse","factory","logistics","gas-station","server-room","pets","farm","childrengarden","museum","religion","wedding"]),yj={en:{title:"Ready-made solutions",intro:"Proven setups for live streaming, remote monitoring and cloud video archives — for businesses, public spaces and special-purpose sites.",groups:[{title:"Tourism and open venues",items:[{slug:"marina",label:"Marinas and yacht clubs"},{slug:"beach",label:"Seaside hotels and beaches"},{slug:"golf",label:"Golf courses and clubs"},{slug:"ski",label:"Ski resorts"},{slug:"camping",label:"Campgrounds and RV parks"},{slug:"fishing",label:"Fishing lodges"},{slug:"surfing",label:"Surfing and kitesurfing"},{slug:"weather",label:"Weather cameras"},{slug:"sports",label:"Sports events"},{slug:"pool",label:"Swimming pools and water parks"}]},{title:"Customer-facing business",items:[{slug:"carwash",label:"Car washes"},{slug:"autoservice",label:"Auto repair shops"},{slug:"tire",label:"Tire services"},{slug:"fastfood",label:"Fast food outlets"},{slug:"restaurant",label:"Restaurants and cafés"},{slug:"flowers",label:"Flower shops"},{slug:"retail",label:"Shops and supermarkets"},{slug:"beauty",label:"Beauty salons"},{slug:"coworking",label:"Coworking spaces"},{slug:"education",label:"Lectures, classes and conferences"},{slug:"parking",label:"Parking lots"},{slug:"ev-charging",label:"EV charging stations"}]},{title:"Industry and infrastructure",items:[{slug:"city-administration",label:"City administrations"},{slug:"building",label:"Construction sites"},{slug:"warehouse",label:"Warehouses and pickup points"},{slug:"factory",label:"Manufacturing"},{slug:"logistics",label:"Logistics centers"},{slug:"port",label:"Ports and terminals"},{slug:"airport",label:"Airports"},{slug:"machinery",label:"Construction machinery"},{slug:"gas-station",label:"Gas stations"},{slug:"server-room",label:"Server rooms"},{slug:"recycling",label:"Recycling and collection points"}]},{title:"Care, culture and agriculture",items:[{slug:"pets",label:"Pet boarding and grooming"},{slug:"horse",label:"Equestrian clubs"},{slug:"farm",label:"Farms"},{slug:"greenhouse",label:"Greenhouses"},{slug:"childrengarden",label:"Nurseries and kindergartens"},{slug:"pharmacy",label:"Pharmacies"},{slug:"museum",label:"Museums and exhibitions"},{slug:"religion",label:"Services and sermons"},{slug:"wedding",label:"Wedding ceremonies"},{slug:"funeral",label:"Memorial services"}]}],guidesTitle:"Camera setup by manufacturer",guides:[{slug:"how-to-stream-hikvision-camera-on-website",label:"Hikvision and HiWatch"},{slug:"how-to-stream-dahua-camera-on-website",label:"Dahua"},{slug:"how-to-stream-tiandy-camera-on-website",label:"Tiandy"},{slug:"how-to-stream-uniview-camera-on-website",label:"Uniview"},{slug:"how-to-stream-axis-camera-on-website",label:"Axis"},{slug:"how-to-stream-hanwha-camera-on-website",label:"Hanwha Vision"},{slug:"how-to-stream-bosch-camera-on-website",label:"Bosch"}],faqTitle:"Frequently asked questions",faq:[{slug:"what-is-rtsp",label:"What the RTSP protocol is"},{slug:"how-to-create-online-stream",label:"How to create a live stream on a website"},{slug:"how-to-create-free-stream",label:"How to create a stream for free"},{slug:"live-streaming-for-company-marketing",label:"How live streams help marketing"},{slug:"how-to-embed-stream-on-website",label:"How to embed a stream on your website"},{slug:"how-to-protect-stream-from-copying",label:"How to protect a stream from copying"},{slug:"where-to-find-rtsp-url",label:"Where to find your camera's RTSP link"},{slug:"how-to-configure-port-forwarding",label:"How to set up port mapping"},{slug:"recommended-ip-camera-settings",label:"Recommended IP camera settings"},{slug:"rtmp-push-without-static-ip",label:"RTMP Push without a static IP"},{slug:"how-to-stream-without-static-ip",label:"Streaming without a static IP"},{slug:"streaming-agent",label:"Agent for streaming without a static IP"},{slug:"cloud-service-vs-own-server",label:"Cloud service or your own server"},{slug:"how-to-stream-ip-camera-to-youtube",label:"How to stream an IP camera to YouTube"},{slug:"personal-account",label:"rtsp.me personal account"},{slug:"our-streaming-equipment",label:"Our streaming equipment"},{slug:"cloud-video-surveillance",label:"Cloud video surveillance from IP cameras"},{slug:"payment-terms",label:"Payment terms"}]},ru:{title:"Типовые решения",intro:"Готовые сценарии онлайн-трансляций, удалённого наблюдения и видеоархива для бизнеса, общественных пространств и специальных объектов.",groups:[{title:"Туризм и открытые площадки",items:[{slug:"marina",label:"Марины и яхт-клубы"},{slug:"beach",label:"Отели у моря и пляжи"},{slug:"golf",label:"Гольф-поля и клубы"},{slug:"ski",label:"Горнолыжные курорты"},{slug:"camping",label:"Кемпинги и базы отдыха"},{slug:"fishing",label:"Рыболовные базы"},{slug:"surfing",label:"Серфинг и кайтсерфинг"},{slug:"weather",label:"Погодные камеры"},{slug:"sports",label:"Спортивные мероприятия"},{slug:"pool",label:"Бассейны и аквапарки"}]},{title:"Клиентский бизнес",items:[{slug:"carwash",label:"Автомойки"},{slug:"autoservice",label:"Автосервисы"},{slug:"tire",label:"Шиномонтажи"},{slug:"fastfood",label:"Заведения быстрого питания"},{slug:"restaurant",label:"Рестораны и кафе"},{slug:"flowers",label:"Цветочные магазины"}
67,{slug:"retail",label:"Магазины и супермаркеты"},{slug:"beauty",label:"Салоны красоты"},{slug:"coworking",label:"Коворкинги"},{slug:"education",label:"Лекции, занятия и конференции"},{slug:"parking",label:"Парковки"},{slug:"ev-charging",label:"Зарядные станции"}]},{title:"Промышленность и инфраструктура",items:[{slug:"city-administration",label:"Администрации городов"},{slug:"building",label:"Строительные площадки"},{slug:"warehouse",label:"Склады и пункты выдачи"},{slug:"factory",label:"Производство"},{slug:"logistics",label:"Логистические центры"},{slug:"port",label:"Порты и терминалы"},{slug:"airport",label:"Аэропорты"},{slug:"machinery",label:"Строительная техника"},{slug:"gas-station",label:"АЗС"},{slug:"server-room",label:"Серверные помещения"},{slug:"recycling",label:"Переработка и пункты приёма"}]},{title:"Забота, культура и хозяйство",items:[{slug:"pets",label:"Зоогостиницы и груминг"},{slug:"horse",label:"Конные клубы"},{slug:"farm",label:"Фермы"},{slug:"greenhouse",label:"Теплицы"},{slug:"childrengarden",label:"Детские сады"},{slug:"pharmacy",label:"Аптеки"},{slug:"museum",label:"Музеи и выставки"},{slug:"religion",label:"Богослужения и проповеди"},{slug:"wedding",label:"Свадебные церемонии"},{slug:"funeral",label:"Церемонии прощания"}]}],guidesTitle:"Настройка камер по производителям",guides:[{slug:"how-to-stream-hikvision-camera-on-website",label:"Hikvision и HiWatch"},{slug:"how-to-stream-dahua-camera-on-website",label:"Dahua"},{slug:"how-to-stream-tiandy-camera-on-website",label:"Tiandy"},{slug:"how-to-stream-uniview-camera-on-website",label:"Uniview"},{slug:"how-to-stream-axis-camera-on-website",label:"Axis"},{slug:"how-to-stream-hanwha-camera-on-website",label:"Hanwha Vision"},{slug:"how-to-stream-bosch-camera-on-website",label:"Bosch"}],faqTitle:"Часто задаваемые вопросы",faq:[{slug:"what-is-rtsp",label:"Что такое протокол RTSP"},{slug:"how-to-create-online-stream",label:"Как создать онлайн-трансляцию на сайте"},{slug:"how-to-create-free-stream",label:"Как создать трансляцию бесплатно"},{slug:"live-streaming-for-company-marketing",label:"Чем трансляции полезны для маркетинга"},{slug:"how-to-embed-stream-on-website",label:"Как разместить трансляцию на вашем сайте"},{slug:"how-to-protect-stream-from-copying",label:"Как защитить трансляцию от копирования"},{slug:"where-to-find-rtsp-url",label:"Где найти RTSP-ссылку камеры"},{slug:"how-to-configure-port-forwarding",label:"Как настроить Port Mapping"},{slug:"recommended-ip-camera-settings",label:"Рекомендуемые настройки IP-камеры"},{slug:"rtmp-push-without-static-ip",label:"RTMP Push без статического IP"},{slug:"how-to-stream-without-static-ip",label:"Трансляция без статического IP"},{slug:"streaming-agent",label:"Агент для трансляции без статического IP"},{slug:"cloud-service-vs-own-server",label:"Сервис или собственный сервер"},{slug:"how-to-stream-ip-camera-to-youtube",label:"Как транслировать IP-камеру на YouTube"},{slug:"how-to-stream-ip-camera-to-vk-video",label:"Как транслировать IP-камеру в VK Видео"},{slug:"personal-account",label:"Личный кабинет rtsp.ru"},{slug:"our-streaming-equipment",label:"Наше оборудование для трансляции"},{slug:"cloud-video-surveillance",label:"Облачное видеонаблюдение с IP-камер"},{slug:"payment-terms",label:"Условия оплаты"}]},de:{title:"Fertige Lösungen",intro:"Bewährte Lösungen für Livestreams, Fernüberwachung und Cloud-Videoarchive — für Unternehmen, öffentliche Räume und Spezialobjekte.",groups:[{title:"Tourismus und Freiflächen",items:[{slug:"marina",label:"Marinas und Yachtclubs"},{slug:"beach",label:"Strandhotels und Strände"},{slug:"golf",label:"Golfplätze und -clubs"},{slug:"ski",label:"Skigebiete"},{slug:"camping",label:"Campingplätze und Wohnmobilstellplätze"},{slug:"fishing",label:"Angelcamps"},{slug:"surfing",label:"Surfen und Kitesurfen"},{slug:"weather",label:"Wetterkameras"},{slug:"sports",label:"Sportveranstaltungen"},{slug:"pool",label:"Schwimmbäder und Wasserparks"}]},{title:"Kundenorientierte Betriebe",items:[{slug:"carwash",label:"Autowaschanlagen"},{slug:"autoservice",label:"Autowerkstätten"},{slug:"tire",label:"Reifendienste"},{slug:"fastfood",label:"Schnellimbisse"},{slug:"restaurant",label:"Restaurants und Cafés"},{slug:"flowers",label:"Blumenläden"},{slug:"retail",label:"Geschäfte und Supermärkte"},{slug:"beauty",label:"Kosmetiksalons"},{slug:"coworking",label:"Coworking-Spaces"},{slug:"education",label:"Vorträge, Kurse und Konferenzen"},{slug:"parking",label:"Parkplätze"},{slug:"ev-charging",label:"Ladestationen für Elektrofahrzeuge"}]},{title:"Industrie und Infrastruktur",items:[{slug:"city-administration",label:"Stadtverwaltungen"},{slug:"building",label:"Baustellen"},{slug:"warehouse",label:"Lagerhäuser und Abholstationen"},{slug:"factory",label:"Fertigung"},{slug:"logistics",label:"Logistikzentren"},{slug:"port",label:"Häfen und Terminals"},{slug:"airport",label:"Flughäfen"},{slug:"machinery",label:"Baumaschinen"},{slug:"gas-station",label:"Tankstellen"},{slug:"server-room",label:"Serverräume"},{slug:"recycling",label:"Recycling- und Sammelstellen"}]},{title:"Betreuung, Kultur und Landwirtschaft",items:[{slug:"pets",label:"Tierpensionen und Tierpflegesalons"},{slug:"horse",label:"Reitställe"},{slug:"farm",label:"Bauernhöfe"},{slug:"greenhouse",label:"Gewächshäuser"},{slug:"childrengarden",label:"Kinderkrippen und Kindergärten"},{slug:"pharmacy",label:"Apotheken"},{slug:"museum",label:"Museen und Ausstellungen"},{slug:"religion",label:"Gottesdienste und Predigten"},{slug:"wedding",label:"Hochzeitszeremonien"},{slug:"funeral",label:"Trauerfeiern"}]}],guidesTitle:"Kameraeinrichtung nach Hersteller",guides:[{slug:"how-to-stream-hikvision-camera-on-website",label:"Hikvision und HiWatch"},{slug:"how-to-stream-dahua-camera-on-website",label:"Dahua"},{slug:"how-to-stream-tiandy-camera-on-website",label:"Tiandy"},{slug:"how-to-stream-uniview-camera-on-website",label:"Uniview"},{slug:"how-to-stream-axis-camera-on-website",label:"Axis"},{slug:"how-to-stream-hanwha-camera-on-website",label:"Hanwha Vision"},{slug:"how-to-stream-bosch-camera-on-website",label:"Bosch"}],faqTitle:"Häufig gestellte Fragen",faq:[{slug:"what-is-rtsp",label:"Was das RTSP-Protokoll ist"},{slug:"how-to-create-online-stream",label:"Wie man einen Livestream auf einer Website erstellt"},{slug:"how-to-create-free-stream",label:"Wie man kostenlos einen Stream erstellt"},{slug:"live-streaming-for-company-marketing",label:"Wie Livestreams dem Marketing helfen"},{slug:"how-to-embed-stream-on-website",label:"Wie man einen Stream auf der eigenen Website einbettet"},{slug:"how-to-protect-stream-from-copying",label:"Wie man einen Stream vor dem Kopieren sc
67hützt"},{slug:"where-to-find-rtsp-url",label:"Wo man den RTSP-Link der Kamera findet"},{slug:"how-to-configure-port-forwarding",label:"Wie man die Portweiterleitung einrichtet"},{slug:"recommended-ip-camera-settings",label:"Empfohlene Einstellungen für IP-Kameras"},{slug:"rtmp-push-without-static-ip",label:"RTMP Push ohne statische IP"},{slug:"how-to-stream-without-static-ip",label:"Streaming ohne statische IP-Adresse"},{slug:"streaming-agent",label:"Streaming-Agent ohne statische IP-Adresse"},{slug:"cloud-service-vs-own-server",label:"Cloud-Dienst oder eigener Server"},{slug:"how-to-stream-ip-camera-to-youtube",label:"IP-Kamera auf YouTube streamen"},{slug:"personal-account",label:"Persönliches rtsp.me-Konto"},{slug:"our-streaming-equipment",label:"Unsere Streaming-Ausrüstung"},{slug:"cloud-video-surveillance",label:"Cloud-Videoüberwachung mit IP-Kameras"},{slug:"payment-terms",label:"Zahlungsbedingungen"}]},pr:{title:"Soluções prontas",intro:"Configurações comprovadas para transmissão ao vivo, monitoramento remoto e arquivo de vídeo na nuvem — para empresas, espaços públicos e locais especiais.",groups:[{title:"Turismo e espaços abertos",items:[{slug:"marina",label:"Marinas e clubes náuticos"},{slug:"beach",label:"Hotéis à beira-mar e praias"},{slug:"golf",label:"Campos e clubes de golfe"},{slug:"ski",label:"Estações de esqui"},{slug:"camping",label:"Campings e áreas para motorhomes"},{slug:"fishing",label:"Pousadas de pesca"},{slug:"surfing",label:"Surfe e kitesurf"},{slug:"weather",label:"Câmeras meteorológicas"},{slug:"sports",label:"Eventos esportivos"},{slug:"pool",label:"Piscinas e parques aquáticos"}]},{title:"Negócios de atendimento ao público",items:[{slug:"carwash",label:"Lava-rápidos"},{slug:"autoservice",label:"Oficinas mecânicas"},{slug:"tire",label:"Borracharias"},{slug:"fastfood",label:"Estabelecimentos de fast food"},{slug:"restaurant",label:"Restaurantes e cafés"},{slug:"flowers",label:"Floriculturas"},{slug:"retail",label:"Lojas e supermercados"},{slug:"beauty",label:"Salões de beleza"},{slug:"coworking",label:"Espaços de coworking"},{slug:"education",label:"Palestras, aulas e conferências"},{slug:"parking",label:"Estacionamentos"},{slug:"ev-charging",label:"Estações de recarga para veículos elétricos"}]},{title:"Indústria e infraestrutura",items:[{slug:"city-administration",label:"Prefeituras"},{slug:"building",label:"Canteiros de obras"},{slug:"warehouse",label:"Armazéns e pontos de retirada"},{slug:"factory",label:"Fábricas"},{slug:"logistics",label:"Centros de logística"},{slug:"port",label:"Portos e terminais"},{slug:"airport",label:"Aeroportos"},{slug:"machinery",label:"Máquinas de construção"},{slug:"gas-station",label:"Postos de combustível"},{slug:"server-room",label:"Salas de servidores"},{slug:"recycling",label:"Reciclagem e pontos de coleta"}]},{title:"Cuidado, cultura e agricultura",items:[{slug:"pets",label:"Hotéis para pets e banho e tosa"},{slug:"horse",label:"Clubes de hipismo"},{slug:"farm",label:"Fazendas"},{slug:"greenhouse",label:"Estufas"},{slug:"childrengarden",label:"Creches e pré-escolas"},{slug:"pharmacy",label:"Farmácias"},{slug:"museum",label:"Museus e exposições"},{slug:"religion",label:"Cultos e sermões"},{slug:"wedding",label:"Cerimônias de casamento"},{slug:"funeral",label:"Cerimônias fúnebres"}]}],guidesTitle:"Configuração de câmeras por fabricante",guides:[{slug:"how-to-stream-hikvision-camera-on-website",label:"Hikvision e HiWatch"},{slug:"how-to-stream-dahua-camera-on-website",label:"Dahua"},{slug:"how-to-stream-tiandy-camera-on-website",label:"Tiandy"},{slug:"how-to-stream-uniview-camera-on-website",label:"Uniview"},{slug:"how-to-stream-axis-camera-on-website",label:"Axis"},{slug:"how-to-stream-hanwha-camera-on-website",label:"Hanwha Vision"},{slug:"how-to-stream-bosch-camera-on-website",label:"Bosch"}],faqTitle:"Perguntas frequentes",faq:[{slug:"what-is-rtsp",label:"O que é o protocolo RTSP"},{slug:"how-to-create-online-stream",label:"Como criar uma transmissão ao vivo em um site"},{slug:"how-to-create-free-stream",label:"Como criar uma transmissão gratuitamente"},{slug:"live-streaming-for-company-marketing",label:"Como as transmissões ao vivo ajudam o marketing"},{slug:"how-to-embed-stream-on-website",label:"Como incorporar uma transmissão no seu site"},{slug:"how-to-protect-stream-from-copying",label:"Como proteger uma transmissão contra cópia"},{slug:"where-to-find-rtsp-url",label:"Onde encontrar o link RTSP da sua câmera"},{slug:"how-to-configure-port-forwarding",label:"Como configurar o redirecionamento de portas"},{slug:"recommended-ip-camera-settings",label:"Configurações recomendadas para câmeras IP"},{slug:"rtmp-push-without-static-ip",label:"RTMP Push sem IP fixo"},{slug:"how-to-stream-without-static-ip",label:"Transmissão sem endereço IP fixo"},{slug:"streaming-agent",label:"Agente de transmissão sem endereço IP fixo"},{slug:"cloud-service-vs-own-server",label:"Serviço em nuvem ou servidor próprio"},{slug:"how-to-stream-ip-camera-to-youtube",label:"Como transmitir uma câmera IP para o YouTube"},{slug:"personal-account",label:"Conta pessoal no rtsp.me"},{slug:"our-streaming-equipment",label:"Nosso equipamento de transmissão"},{slug:"cloud-video-surveillance",label:"Videovigilância na nuvem com câmeras IP"},{slug:"payment-terms",label:"Condições de pagamento"}]},fr:{title:"Solutions prêtes à l'emploi",intro:"Des configurations éprouvées pour la diffusion en direct, la surveillance à distance et l'archive dans le cloud — pour les entreprises, les espaces publics et les sites spécialisés.",groups:[{title:"Tourisme et espaces ouverts",
67items:[{slug:"marina",label:"Marinas et clubs nautiques"},{slug:"beach",label:"Hôtels de bord de mer et plages"},{slug:"golf",label:"Golfs et clubs de golf"},{slug:"ski",label:"Stations de ski"},{slug:"camping",label:"Campings et aires pour camping-cars"},{slug:"fishing",label:"Gîtes de pêche"},{slug:"surfing",label:"Surf et kitesurf"},{slug:"weather",label:"Caméras météo"},{slug:"sports",label:"Événements sportifs"},{slug:"pool",label:"Piscines et parcs aquatiques"}]},{title:"Commerces et services clients",items:[{slug:"carwash",label:"Stations de lavage automobile"},{slug:"autoservice",label:"Garages automobiles"},{slug:"tire",label:"Centres de pneumatiques"},{slug:"fastfood",label:"Établissements de restauration rapide"},{slug:"restaurant",label:"Restaurants et cafés"},{slug:"flowers",label:"Fleuristes"},{slug:"retail",label:"Magasins et supermarchés"},{slug:"beauty",label:"Salons de beauté"},{slug:"coworking",label:"Espaces de coworking"},{slug:"education",label:"Cours, formations et conférences"},{slug:"parking",label:"Parkings"},{slug:"ev-charging",label:"Bornes de recharge électrique"}]},{title:"Industrie et infrastructures",items:[{slug:"city-administration",label:"Administrations municipales"},{slug:"building",label:"Chantiers de construction"},{slug:"warehouse",label:"Entrepôts et points de retrait"},{slug:"factory",label:"Sites de fabrication"},{slug:"logistics",label:"Centres logistiques"},{slug:"port",label:"Ports et terminaux"},{slug:"airport",label:"Aéroports"},{slug:"machinery",label:"Engins de chantier"},{slug:"gas-station",label:"Stations-service"},{slug:"server-room",label:"Salles de serveurs"},{slug:"recycling",label:"Centres de recyclage et de collecte"}]},{title:"Soins, culture et agriculture",items:[{slug:"pets",label:"Pensions et toilettage pour animaux"},{slug:"horse",label:"Clubs équestres"},{slug:"farm",label:"Fermes"},{slug:"greenhouse",label:"Serres"},{slug:"childrengarden",label:"Crèches et écoles maternelles"},{slug:"pharmacy",label:"Pharmacies"},{slug:"museum",label:"Musées et expositions"},{slug:"religion",label:"Offices et sermons"},{slug:"wedding",label:"Cérémonies de mariage"},{slug:"funeral",label:"Cérémonies funéraires"}]}],guidesTitle:"Configuration des caméras par fabricant",guides:[{slug:"how-to-stream-hikvision-camera-on-website",label:"Hikvision et HiWatch"},{slug:"how-to-stream-dahua-camera-on-website",label:"Dahua"},{slug:"how-to-stream-tiandy-camera-on-website",label:"Tiandy"},{slug:"how-to-stream-uniview-camera-on-website",label:"Uniview"},{slug:"how-to-stream-axis-camera-on-website",label:"Axis"},{slug:"how-to-stream-hanwha-camera-on-website",label:"Hanwha Vision"},{slug:"how-to-stream-bosch-camera-on-website",label:"Bosch"}],faqTitle:"Foire aux questions",faq:[{slug:"what-is-rtsp",label:"Qu'est-ce que le protocole RTSP"},{slug:"how-to-create-online-stream",label:"Comment créer une diffusion en direct sur un site web"},{slug:"how-to-create-free-stream",label:"Comment créer une diffusion gratuitement"},{slug:"live-streaming-for-company-marketing",label:"En quoi les diffusions en direct sont utiles au marketing"},{slug:"how-to-embed-stream-on-website",label:"Comment intégrer une diffusion sur votre site"},{slug:"how-to-protect-stream-from-copying",label:"Comment protéger une diffusion contre la copie"},{slug:"where-to-find-rtsp-url",label:"Où trouver le lien RTSP de votre caméra"},{slug:"how-to-configure-port-forwarding",label:"Comment configurer la redirection de ports"},{slug:"recommended-ip-camera-settings",label:"Paramètres recommandés pour une caméra IP"},{slug:"rtmp-push-without-static-ip",label:"RTMP Push sans IP statique"},{slug:"how-to-stream-without-static-ip",label:"Diffusion sans adresse IP statique"},{slug:"streaming-agent",label:"Agent de diffusion sans adresse IP statique"},{slug:"cloud-service-vs-own-server",label:"Service cloud ou serveur personnel"},{slug:"how-to-stream-ip-camera-to-youtube",label:"Diffuser une caméra IP sur YouTube"},{slug:"personal-account",label:"Compte personnel rtsp.me"},{slug:"our-streaming-equipment",label:"Notre matériel de diffusion"},{slug:"cloud-video-surveillance",label:"Vidéosurveillance dans le cloud depuis des caméras IP"},{slug:"payment-terms",label:"Conditions de paiement"}]},es:{title:"Soluciones listas para usar",intro:"Configuraciones probadas para transmisión en directo, monitorización remota y archivo de vídeo en la nube, para empresas, espacios públicos y sitios de uso especial.",groups:[{title:"Turismo y espacios abiertos",items:[{slug:"marina",label:"Marinas y clubes náuticos"},{slug:"beach",label:"Hoteles junto al mar y playas"},{slug:"golf",label:"Campos y clubes de golf"},{slug:"ski",label:"Estaciones de esquí"},{slug:"camping",label:"Campings y áreas de autocaravanas"},{slug:"fishing",label:"Albergues de pesca"},{slug:"surfing",label:"Surf y kitesurf"},{slug:"weather",label:"Cámaras meteorológicas"},{slug:"sports",label:"Eventos deportivos"},{slug:"pool",label:"Piscinas y parques acuáticos"}]},{title:"Negocios de cara al cliente",items:[{slug:"carwash",label:"Lavaderos de coches"},{slug:"autoservice",label:"Talleres mecánicos"},{slug:"tire",label:"Talleres de neumáticos"},{slug:"fastfood",label:"Locales de comida rápida"},{slug:"restaurant",label:"Restaurantes y cafeterías"},{slug:"flowers",label:"Floristerías"},{slug:"retail",label:"Tiendas y supermercados"},{slug:"beauty",label:"Salones de belleza"},{slug:"coworking",label:"Espacios de coworking"},{slug:"education",label:"Clases, cursos y conferencias"},{slug:"parking",label:"Aparcamientos"},{slug:"ev-charging",label:"Estaciones de carga para vehículos eléctricos"}]},{title:"Industria e infraestructura",items:[{slug:"city-administration",label:"Administraciones municipales"},{slug:"building",label:"Obras de construcción"},{slug:"warehouse",label:"Almacenes y puntos de recogida"},{slug:"factory",label:"Fabricación"},{slug:"logistics",label:"Centros logísticos"},{slug:"port",label:"Puertos y terminales"},{slug:"airport",label:"Aeropuertos"},{slug:"machinery",label:"Maquinaria de construcción"},{slug:"gas-station",label:"Gasolineras"},{slug:"server-room",label:"Salas de servidores"},{slug:"recycling",label:"Puntos de reciclaje y recogida"}]},{title:"Cuidado, cultura y agricultura",items:[{slug:"pets",label:"Residencias y peluquerías para mascotas"},{slug:"horse",label:"Clubes hípicos"},{slug:"farm",label:"Granjas"},{slug:"greenhouse",label:"Invernaderos"},{slug:"childrengarden",label:"Guarderías y jardines de infancia"},{slug:"pharmacy",label:"Farmacias"},{slug:"museum",label:"Museos y exposiciones"},{slug:"religion",label:"Servicios religiosos y sermones"},{slug:"wedding",label:"Ceremonias de boda"},{slug:"funeral",label:"Ceremonias fúnebres"}]}],guidesTitle:"Configuración de cámaras por fabricante",guides:[{slug:"how-to-stream-hikvision-camera-on-website",label:"Hikvision y HiWatch"},{slug:"how-to-stream-dahua-camera-on-website",label:"Dahua"},{slug:"how-to-stream-tiandy-camera-on-website",label:"Tiandy"},{slug:"how-to-stream-uniview-camera-on-website",label:"Uniview"},{slug:"how-to-stream-axis-camera-on-website",label:"Axis"},{slug:"how-to-stream-hanwha-camera-on-website",label:"Hanwha Vision"},{slug:"how-to-stream-bosch-camera-on-website",label:"Bosch"}],faqTitle:"Preguntas frecuentes",faq:[{slug:"what-is-rtsp",label:"Qué es el protocolo RTSP"},{slug:"how-to-create-online-stream",label:"Cómo crear una transmisión en directo en un sitio web"},{slug:"how-to-create-free-stream",label:"Cómo crear una transmisión gratis"},{slug:"live-streaming-for-company-marketing",label:"Cómo ayudan las transmisiones en directo al marketing"},{slug:"how-to-embed-stream-on-website",label:"Cómo insertar una transmisión en tu sitio web"},{slug:"how-to-protect-stream-from-copying",label:"Cómo proteger una transmisión de la copia"},{slug:"where-to-find-rtsp-url",label:"Dónde encontrar el enlace RTSP de tu cámara"},{slug:"how-to-configure-port-forwarding",label:"Cómo configurar la redirección de puertos"},{slug:"recommended-ip-camera-settings",label:"Configuración recomendada para cámaras IP"},{slug:"rtmp-push-without-static-ip",label:"RTMP Push sin IP estática"},{slug:"how-to-stream-without-static-ip",label:"Transmisión sin IP estática"},{slug:"streaming-agent",label:"Agente de transmisión sin IP estática"},{slug:"cloud-service-vs-own-server",label:"Servicio en la nube o servidor propio"},{slug:"how-to-stream-ip-camera-to-youtube",label:"Cómo transmitir una cámara IP a YouTube"},{slug:"personal-account",label:"Cuenta personal de rtsp.me"},{slug:"our-streaming-equipment",label:"Nuestro equipo de transmisión"},{slug:"cloud-video-surveillance",label:"Videovigilancia en la nube con cámaras IP"},{slug:"payment-terms",label:"Condiciones de pago"}]},it:{title:"Soluzioni pronte all'uso",intro:"Configurazioni collaudate per diretta streaming, monitoraggio remoto e archivi video nel cloud — per aziende, spazi pubblici e siti speciali.",groups:[{title:"Turismo e spazi aperti",
67items:[{slug:"marina",label:"Marina e yacht club"},{slug:"beach",label:"Hotel e spiagge sul mare"},{slug:"golf",label:"Campi da golf e club"},{slug:"ski",label:"Stazioni sciistiche"},{slug:"camping",label:"Campeggi e aree camper"},{slug:"fishing",label:"Basi di pesca"},{slug:"surfing",label:"Surf e kitesurf"},{slug:"weather",label:"Webcam meteo"},{slug:"sports",label:"Eventi sportivi"},{slug:"pool",label:"Piscine e parchi acquatici"}]},{title:"Attività commerciali con clienti",items:[{slug:"carwash",label:"Autolavaggi"},{slug:"autoservice",label:"Officine meccaniche"},{slug:"tire",label:"Gommisti"},{slug:"fastfood",label:"Fast food"},{slug:"restaurant",label:"Ristoranti e bar"},{slug:"flowers",label:"Negozi di fiori"},{slug:"retail",label:"Negozi e supermercati"},{slug:"beauty",label:"Saloni di bellezza"},{slug:"coworking",label:"Spazi di coworking"},{slug:"education",label:"Lezioni, corsi e conferenze"},{slug:"parking",label:"Parcheggi"},{slug:"ev-charging",label:"Stazioni di ricarica elettrica"}]},{title:"Industria e infrastrutture",items:[{slug:"city-administration",label:"Amministrazioni comunali"},{slug:"building",label:"Cantieri edili"},{slug:"warehouse",label:"Magazzini e punti di ritiro"},{slug:"factory",label:"Produzione industriale"},{slug:"logistics",label:"Centri logistici"},{slug:"port",label:"Porti e terminal"},{slug:"airport",label:"Aeroporti"},{slug:"machinery",label:"Macchine da cantiere"},{slug:"gas-station",label:"Stazioni di servizio"},{slug:"server-room",label:"Sale server"},{slug:"recycling",label:"Punti di raccolta e riciclo"}]},{title:"Cura, cultura e agricoltura",items:[{slug:"pets",label:"Pensioni per animali e toelettatura"},{slug:"horse",label:"Centri ippici"},{slug:"farm",label:"Fattorie"},{slug:"greenhouse",label:"Serre"},{slug:"childrengarden",label:"Asili nido e scuole materne"},{slug:"pharmacy",label:"Farmacie"},{slug:"museum",label:"Musei e mostre"},{slug:"religion",label:"Funzioni religiose e prediche"},{slug:"wedding",label:"Cerimonie nuziali"},{slug:"funeral",label:"Cerimonie funebri"}]}],guidesTitle:"Configurazione delle telecamere per produttore",guides:[{slug:"how-to-stream-hikvision-camera-on-website",label:"Hikvision e HiWatch"},{slug:"how-to-stream-dahua-camera-on-website",label:"Dahua"},{slug:"how-to-stream-tiandy-camera-on-website",label:"Tiandy"},{slug:"how-to-stream-uniview-camera-on-website",label:"Uniview"},{slug:"how-to-stream-axis-camera-on-website",label:"Axis"},{slug:"how-to-stream-hanwha-camera-on-website",label:"Hanwha Vision"},{slug:"how-to-stream-bosch-camera-on-website",label:"Bosch"}],faqTitle:"Domande frequenti",faq:[{slug:"what-is-rtsp",label:"Cos'è il protocollo RTSP"},{slug:"how-to-create-online-stream",label:"Come creare una diretta streaming su un sito web"},{slug:"how-to-create-free-stream",label:"Come creare una diretta streaming gratuita"},{slug:"live-streaming-for-company-marketing",label:"Come le dirette streaming aiutano il marketing"},{slug:"how-to-embed-stream-on-website",label:"Come incorporare una diretta streaming nel tuo sito web"},{slug:"how-to-protect-stream-from-copying",label:"Come proteggere una diretta streaming dalla copia"},{slug:"where-to-find-rtsp-url",label:"Dove trovare il link RTSP della tua telecamera"},{slug:"how-to-configure-port-forwarding",label:"Come configurare il port forwarding"},{slug:"recommended-ip-camera-settings",label:"Impostazioni consigliate per la telecamera IP"},{slug:"rtmp-push-without-static-ip",label:"RTMP Push senza IP statico"},{slug:"how-to-stream-without-static-ip",label:"Streaming senza indirizzo IP statico"},{slug:"streaming-agent",label:"Agente di streaming senza indirizzo IP statico"},{slug:"cloud-service-vs-own-server",label:"Servizio cloud o server proprio"},{slug:"how-to-stream-ip-camera-to-youtube",label:"Trasmettere una telecamera IP su YouTube"},{slug:"personal-account",label:"Account personale rtsp.me"},{slug:"our-streaming-equipment",label:"La nostra attrezzatura per lo streaming"},{slug:"cloud-video-surveillance",label:"Videosorveglianza in cloud da telecamere IP"},{slug:"payment-terms",label:"Condizioni di pagamento"}]},tr:{title:"Hazır çözümler",intro:"İşletmeler, kamuya açık alanlar ve özel amaçlı tesisler için canlı yayın, uzaktan izleme ve bulut video arşivi konusunda kanıtlanmış kurulumlar.",groups:[{title:"Turizm ve açık alanlar",items:[{slug:"marina",label:"Marinalar ve yat kulüpleri"},{slug:"beach",label:"Deniz kenarı oteller ve plajlar"},{slug:"golf",label:"Golf sahaları ve kulüpleri"},{slug:"ski",label:"Kayak merkezleri"},{slug:"camping",label:"Kamp alanları ve karavan parkları"},{slug:"fishing",label:"Balıkçılık kampları"},{slug:"surfing",label:"Sörf ve kitesörf"},{slug:"weather",label:"Hava durumu kameraları"},{slug:"sports",label:"Spor etkinlikleri"},{slug:"pool",label:"Yüzme havuzları ve su parkları"}]},{title:"Müşteriye yönelik işletmeler",items:[{slug:"carwash",label:"Oto yıkamalar"},{slug:"autoservice",label:"Oto tamirhaneleri"},{slug:"tire",label:"Lastik servisleri"},{slug:"fastfood",label:"Fast food restoranları"},{slug:"restaurant",label:"Restoranlar ve kafeler"},{slug:"flowers",label:"Çiçekçiler"},{slug:"retail",label:"Mağazalar ve süpermarketler"},{slug:"beauty",label:"Güzellik salonları"},{slug:"coworking",label:"Ortak çalışma alanları"},{slug:"education",label:"Dersler, kurslar ve konferanslar"},{slug:"parking",label:"Otoparklar"},{slug:"ev-charging",label:"Elektrikli araç şarj istasyonları"}]},{title:"Sanayi ve altyapı",items:[{slug:"city-administration",label:"Belediyeler"},{slug:"building",label:"İnşaat sahaları"},{slug:"warehouse",label:"Depolar ve teslim alma noktaları"},{slug:"factory",label:"Üretim tesisleri"},{slug:"logistics",label:"Lojistik merkezleri"},{slug:"port",label:"Limanlar ve terminaller"},{slug:"airport",label:"Havalimanları"},{slug:"machinery",label:"İnşaat makineleri"},{slug:"gas-station",label:"Benzin istasyonları"},{slug:"server-room",label:"Sunucu odaları"},{slug:"recycling",label:"Geri dönüşüm ve toplama noktaları"}]},{title:"Bakım, kültür ve tarım",items:[{slug:"pets",label:"Evcil hayvan pansiyonları ve bakım salonları"},{slug:"horse",label:"Binicilik kulüpleri"},{slug:"farm",label:"Çiftlikler"},{slug:"greenhouse",label:"Seralar"},{slug:"childrengarden",label:"Kreşler ve anaokulları"},{slug:"pharmacy",label:"Eczaneler"},{slug:"museum",label:"Müzeler ve sergiler"},{slug:"religion",label:"Dini ayinler ve vaazlar"},{slug:"wedding",label:"Düğün törenleri"},{slug:"funeral",label:"Anma törenleri"}]}],guidesTitle:"Üreticiye göre kamera yapılandırma kılavuzları",guides:[{slug:"how-to-stream-hikvision-camera-on-website",label:"Hikvision ve HiWatch"},{slug:"how-to-stream-dahua-camera-on-website",label:"Dahua"},{slug:"how-to-stream-tiandy-camera-on-website",label:"Tiandy"},{slug:"how-to-stream-uniview-camera-on-website",label:"Uniview"},{slug:"how-to-stream-axis-camera-on-website",label:"Axis"},{slug:"how-to-stream-hanwha-camera-on-website",label:"Hanwha Vision"},{slug:"how-to-stream-bosch-camera-on-website",label:"Bosch"}],faqTitle:"Sıkça sorulan sorular",faq:[{slug:"what-is-rtsp",label:"RTSP protokolü nedir"},{slug:"how-to-create-online-stream",label:"Web sitesinde canlı yayın nasıl oluşturulur"},{slug:"how-to-create-free-stream",label:"Ücretsiz yayın nasıl oluşturulur"},{slug:"live-streaming-for-company-marketing",label:"Canlı yayınlar pazarlamaya nasıl yardımcı olur"},{slug:"how-to-embed-stream-on-website",label:"Yayın web sitenize nasıl eklenir"},{slug:"how-to-protect-stream-from-copying",label:"Yayın kopyalanmaya karşı nasıl korunur"},{slug:"where-to-find-rtsp-url",label:"Kameranızın RTSP bağlantısı nerede bulunur"},{slug:"how-to-configure-port-forwarding",label:"Port yönlendirme nasıl yapılandırılır"},{slug:"recommended-ip-camera-settings",label:"Önerilen IP kamera ayarları"},{slug:"rtmp-push-without-static-ip",label:"Statik IP olmadan RTMP Push"},{slug:"how-to-stream-without-static-ip",label:"Statik IP adresi olmadan yayın"},{slug:"streaming-agent",label:"Statik IP adresi olmadan Streaming Agent"},{slug:"cloud-service-vs-own-server",label:"Bulut hizmeti mi, kendi sunucunuz mu?"},{slug:"how-to-stream-ip-camera-to-youtube",label:"IP kameradan YouTube'a yayın"},{slug:"personal-account",label:"rtsp.me kişisel hesabı"},{slug:"our-streaming-equipment",label:"Yayın ekipmanlarımız"},{slug:"cloud-video-surveillance",label:"IP kameralardan bulut video gözetimi"},{slug:"payment-terms",label:"Ödeme koşulları"}]},zh:{title:"现成解决方案",intro:"面向企业、公共场所及各类专业场景,提供经过验证的直播、远程监控与云端录像方案。",groups:[{title:"旅游与开放场所",items:[{slug:"marina",label:"游艇码头与游艇俱乐部"},{slug:"beach",label:"海滨酒店与海滩"},{slug:"golf",label:"高尔夫球场与俱乐部"},{slug:"ski",label:"滑雪场"},{slug:"camping",label:"露营地与房车营地"},{slug:"fishing",label:"垂钓营地"},{slug:"surfing",label:"冲浪与风筝冲浪"},{slug:"weather",label:"天气摄像头"},{slug:"sports",label:"体育赛事"},{slug:"pool",label:"游泳池与水上乐园"}]},{title:"面向顾客的商业场所",items:[{slug:"carwash",label:"洗车店"},{slug:"autoservice",label:"汽车维修店"},{slug:"tire",label:"轮胎服务店"},{slug:"fastfood",label:"快餐店"},{slug:"restaurant",label:"餐厅与咖啡馆"},{slug:"flowers",label:"花店"},{slug:"retail",label:"商店与超市"},{slug:"beauty",label:"美容院"},{slug:"coworking",label:"共享办公空间"},{slug:"education",label:"讲座、课程与会议"},{slug:"parking",label:"停车场"},{slug:"ev-charging",label:"电动车充电站"}]}
67,{title:"工业与基础设施",items:[{slug:"city-administration",label:"市政机关"},{slug:"building",label:"建筑工地"},{slug:"warehouse",label:"仓库与自提点"},{slug:"factory",label:"制造业"},{slug:"logistics",label:"物流中心"},{slug:"port",label:"港口与码头"},{slug:"airport",label:"机场"},{slug:"machinery",label:"工程机械"},{slug:"gas-station",label:"加油站"},{slug:"server-room",label:"机房"},{slug:"recycling",label:"回收与收集站点"}]},{title:"护理、文化与农业",items:[{slug:"pets",label:"宠物寄养与美容"},{slug:"horse",label:"马术俱乐部"},{slug:"farm",label:"农场"},{slug:"greenhouse",label:"温室"},{slug:"childrengarden",label:"托儿所与幼儿园"},{slug:"pharmacy",label:"药店"},{slug:"museum",label:"博物馆与展览"},{slug:"religion",label:"宗教仪式与礼拜"},{slug:"wedding",label:"婚礼仪式"},{slug:"funeral",label:"追悼仪式"}]}],guidesTitle:"按品牌查看摄像机配置指南",guides:[{slug:"how-to-stream-hikvision-camera-on-website",label:"Hikvision 与 HiWatch"},{slug:"how-to-stream-dahua-camera-on-website",label:"Dahua"},{slug:"how-to-stream-tiandy-camera-on-website",label:"Tiandy"},{slug:"how-to-stream-uniview-camera-on-website",label:"Uniview"},{slug:"how-to-stream-axis-camera-on-website",label:"Axis"},{slug:"how-to-stream-hanwha-camera-on-website",label:"Hanwha Vision"},{slug:"how-to-stream-bosch-camera-on-website",label:"Bosch"}],faqTitle:"常见问题",faq:[{slug:"what-is-rtsp",label:"什么是 RTSP 协议"},{slug:"how-to-create-online-stream",label:"如何在网站上创建实时直播"},{slug:"how-to-create-free-stream",label:"如何免费创建直播"},{slug:"live-streaming-for-company-marketing",label:"直播如何助力营销"},{slug:"how-to-embed-stream-on-website",label:"如何在网站上嵌入直播"},{slug:"how-to-protect-stream-from-copying",label:"如何防止直播被盗用"},{slug:"where-to-find-rtsp-url",label:"在哪里找到摄像机的 RTSP 地址"},{slug:"how-to-configure-port-forwarding",label:"如何设置端口映射"},{slug:"recommended-ip-camera-settings",label:"推荐的 IP 摄像机设置"},{slug:"rtmp-push-without-static-ip",label:"无固定 IP 时的 RTMP 推流"},{slug:"how-to-stream-without-static-ip",label:"无固定 IP 直播"},{slug:"streaming-agent",label:"使用 Streaming Agent 直播"},{slug:"cloud-service-vs-own-server",label:"云服务与自建服务器对比"},{slug:"how-to-stream-ip-camera-to-youtube",label:"将 IP 摄像机直播到 YouTube"},{slug:"personal-account",label:"rtsp.me 个人账户"},{slug:"our-streaming-equipment",label:"我们的直播设备"},{slug:"cloud-video-surveillance",label:"基于 IP 摄像机的云监控"},{slug:"payment-terms",label:"资费说明"}]}},jj=()=>{const{lang:e}=V(),t=yj[e];return r.jsx("section",{className:"solutions-footer","aria-labelledby":"solutions-footer-title",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"solutions-footer__header",children:[r.jsx("h2",{className:"solutions-footer__title",id:"solutions-footer-title",children:t.title}),r.jsx("p",{className:"solutions-footer__intro",children:t.intro})]}),r.jsx("nav",{className:"solutions-footer__groups","aria-label":t.title,children:t.groups.map(n=>r.jsxs("section",{children:[r.jsx("h3",{className:"solutions-footer__group-title",children:n.title}),r.jsx("ul",{className:"solutions-footer__links list-reset",children:n.items.filter(a=>bj.has(a.slug)).map(a=>r.jsx("li",{children:r.jsx("a",{className:"solutions-footer__link",href:rl(e,a.slug),children:a.label})},a.slug))})]},n.title))}),r.jsxs("nav",{className:"solutions-footer__guides","aria-label":t.guidesTitle,children:[r.jsx("h3",{className:"solutions-footer__group-title",children:t.guidesTitle}),r.jsx("ul",{className:"solutions-footer__links list-reset",children:t.guides.map(n=>r.jsx("li",{children:r.jsx("a",{className:"solutions-footer__link",href:rl(e,n.slug),children:n.label})},n.slug))})]}),r.jsxs("nav",{className:"solutions-footer__faq","aria-label":t.faqTitle,children:[r.jsx("h3",{className:"solutions-footer__group-title",children:t.faqTitle}),r.jsx("ul",{className:"solutions-footer__links list-reset",children:t.faq.map(n=>r.jsx("li",{children:r.jsx("a",{className:"solutions-footer__link",href:rl(e,n.slug),children:n.label})},n.slug))})]})]})})},yt=new Date().getFullYear(),wj={en:{logoTld:".ME",createBroadcasting:"Create broadcasting",signUp:"Sign up",benefits:"Benefits",statistics:"Statistics",faq:"FAQ",copy:r.jsxs(r.Fragment,{children:["© 2017-",yt," RTSP.ME ",r.jsx("br",{}),r.jsxs("small",{children:[" ","Linecam Inc.",r.jsx("br",{})," 680 S CACHE STREET SUITE 100-7414 Jackson, WY 83001 United States"," "]})]}),links:[{href:"/rules.html",text:"Rules"},{href:"/rules.html",text:"Privacy Policy"},{href:"/fp.html",text:"Fulfilment Policy"},{href:"/rules.html",text:""}]},ru:{logoTld:".RU",createBroadcasting:"Cоздать трансляцию",signUp:"Регистрация",benefits:"Преимущества",statistics:"Статистика",faq:"FAQ",copy:r.jsxs(r.Fragment,{children:["© 2017-",yt," RTSP.RU ",r.jsx("br",{}),r.jsxs("small",{children:[" ","ИП Ярушкин Александр Ð
67’ладимирович ИНН 233001847270 ",r.jsx("br",{})," Россия, Краснодар, ул. Шоссе Нефтяников 28, офис 405 ",r.jsx("br",{}),' ТОО "СМАРТКАМ" БИН 2310 4002 4551 ',r.jsx("br",{})," Казахстан, Алматы, ул.Чаплина 71/66 оф.422"," "]})]}),links:[{href:"/rules_ru.html",text:"Правила"},{href:"/rules_ru.html",text:"Политика конфиденциальности"},{href:"/fp_ru.html",text:"ПВООПД"},{href:"/offer.html",text:"Оферта"}]},de:{logoTld:".ME",createBroadcasting:"Streaming erstellen",signUp:"Registrieren",benefits:"Vorteile",statistics:"Statistiken",faq:"FAQ",copy:r.jsxs(r.Fragment,{children:["© 2017-",yt," RTSP.ME ",r.jsx("br",{}),r.jsxs("small",{children:[" ","Linecam Inc.",r.jsx("br",{})," 680 S CACHE STREET SUITE 100-7414 Jackson, WY 83001 United States"," "]})]}),links:[{href:"/rules.html",text:"Regeln"},{href:"/rules.html",text:"Datenschutzrichtlinie"},{href:"/fp.html",text:"Erfüllungsrichtlinie"},{href:"/rules.html",text:""}]},pr:{logoTld:".ME",createBroadcasting:"Criar transmissão",signUp:"Cadastrar",benefits:"Vantagens",statistics:"Estatísticas",faq:"FAQ",copy:r.jsxs(r.Fragment,{children:["© 2017-",yt," RTSP.ME ",r.jsx("br",{}),r.jsxs("small",{children:[" ","Linecam Inc.",r.jsx("br",{})," 680 S CACHE STREET SUITE 100-7414 Jackson, WY 83001 United States"," "]})]}),links:[{href:"/rules.html",text:"Termos"},{href:"/rules.html",text:"Política de Privacidade"},{href:"/fp.html",text:"Política de Atendimento"},{href:"/rules.html",text:""}]},fr:{logoTld:".ME",createBroadcasting:"Créer une diffusion",signUp:"S’inscrire",benefits:"Avantages",statistics:"Statistiques",faq:"FAQ",copy:r.jsxs(r.Fragment,{children:["© 2017-",yt," RTSP.ME ",r.jsx("br",{}),r.jsxs("small",{children:[" ","Linecam Inc.",r.jsx("br",{})," 680 S CACHE STREET SUITE 100-7414 Jackson, WY 83001 United States"," "]})]}),links:[{href:"/rules.html",text:"Règles"},{href:"/rules.html",text:"Politique de confidentialité"},{href:"/fp.html",text:"Politique de livraison"},{href:"/rules.html",text:""}]},es:{logoTld:".ME",createBroadcasting:"Crear transmisión",signUp:"Registrarse",benefits:"Ventajas",statistics:"Estadísticas",faq:"FAQ",copy:r.jsxs(r.Fragment,{children:["© 2017-",yt," RTSP.ME ",r.jsx("br",{}),r.jsxs("small",{children:[" ","Linecam Inc.",r.jsx("br",{})," 680 S CACHE STREET SUITE 100-7414 Jackson, WY 83001 United States"," "]})]}),links:[{href:"/rules.html",text:"Términos"},{href:"/rules.html",text:"Política de privacidad"},{href:"/fp.html",text:"Política de cumplimiento"},{href:"/rules.html",text:""}]},it:{logoTld:".ME",createBroadcasting:"Crea trasmissione",signUp:"Registrati",benefits:"Vantaggi",statistics:"Statistiche",faq:"FAQ",copy:r.jsxs(r.Fragment,{children:["© 2017-",yt," RTSP.ME ",r.jsx("br",{}),r.jsxs("small",{children:[" ","Linecam Inc.",r.jsx("br",{})," 680 S CACHE STREET SUITE 100-7414 Jackson, WY 83001 United States"," "]})]}),links:[{href:"/rules.html",text:"Regolamento"},{href:"/rules.html",text:"Informativa sulla privacy"},{href:"/fp.html",text:"Condizioni di servizio"},{href:"/rules.html",text:""}]},tr:{logoTld:".ME",createBroadcasting:"Yayın Oluştur",signUp:"Kayıt Ol",benefits:"Avantajlar",statistics:"İstatistikler",faq:"FAQ",copy:r.jsxs(r.Fragment,{children:["© 2017-",yt," RTSP.ME ",r.jsx("br",{}),r.jsxs("small",{children:[" ","Linecam Inc.",r.jsx("br",{})," 680 S CACHE STREET SUITE 100-7414 Jackson, WY 83001 United States"," "]})]}),links:[{href:"/rules.html",text:"Kurallar"},{href:"/rules.html",text:"Gizlilik Politikası"},{href:"/fp.html",text:"Hizmet Şartları"},{href:"/rules.html",text:""}]},zh:{logoTld:".ME",createBroadcasting:"创建直播",signUp:"注册",benefits:"优势",statistics:"统计",faq:"FAQ",copy:r.jsxs(r.Fragment,{children:["© 2017-",yt," RTSP.ME ",r.jsx("br",{}),r.jsxs("small",{children:[" ","Linecam Inc.",r.jsx("br",{})," 680 S CACHE STREET SUITE 100-7414 Jackson, WY 83001 United States"," "]})]}),links:[{href:"/rules.html",text:"条款"},{href:"/rules.html",text:"隐私政策"},{href:"/fp.html",text:"履行政策"},{href:"/rules.html",text:""}]}},Sj=()=>{const{lang:e,openPopup:t}=V(),n=wj[e];return r.jsx("footer",{className:"footer",children:r.jsxs("div",{className:"container",children:[r.jsxs("div",{className:"footer__inner",children:[r.jsx("div",{className:"footer__logo",children:r.jsxs("a",{className:"header__logo",href:"#hero",children:["RTSP",r.jsx("span",{children:n.logoTld})]})}),r.jsxs("ul",{className:"footer__list list-reset",children:[r.jsx("li",{children:r.jsx("a",{href:"#hero",className:"auth",children:n.createBroadcasting})}),r.jsx("li",{children:r.jsx("a",{className:"auth popup-link",style:{cursor:"pointer"},onClick:()=>t("popup-registration"),children:n.signUp})}),r.jsx("li",{children:r.jsx("a",{href:"#benefits",children:n.benefits})}),r.jsx("li",{children:r.jsx("a",{href:"#statistics",children:n.statistics})}),r.jsx("li",{children:r.jsx("a",{href:"#faq",children:n.faq})})]}),r.jsx("ul",{className:"social list-reset",children:r.jsx("li",{children:r.jsx("a",{href:"mailto:[email protected]",children:r.jsx("img",{loading:"lazy",src:"/landing/img/svg/mail.svg",width:"24",height:"24",alt:"E-mail"})})})})]}),r.jsxs("div",{className:"footer__bottom",children:[r.jsx("p",{className:"footer__c
67opy text",children:n.copy}),r.jsx("ul",{className:"footer__links",children:n.links.map((a,s)=>r.jsx("li",{children:r.jsx("a",{href:a.href,children:a.text})},s))})]})]})})},_j=e=>`https://${encodeURIComponent(e)}.rtsp.me`,Pj={createJob:async(e,t)=>{if(!e)throw new qe(0,"no_check_server","No check server for region");let n;try{n=await fetch(`${_j(e)}/check/jobs`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({rtspUrl:t})})}catch{throw new qe(0,"connection_lost","Could not reach check server")}if(!n.ok){let a=null;try{a=await n.json()}catch{}const s=a&&typeof a=="object"&&typeof a.error=="string"?a.error:n.status===429?"too_many_requests":null;throw new qe(n.status,s,s??`Check failed (${n.status})`)}return await n.json()}},ws=["url","ping","port","streamInfo","preview"],kj={url:"url",ping:"ping",port:"port","stream-info":"streamInfo",preview:"preview"},Nj=60,nl=()=>({url:{status:"active",error:null},ping:{status:"pending",error:null},port:{status:"pending",error:null},streamInfo:{status:"pending",error:null},preview:{status:"pending",error:null}}),Tj=e=>{const t=e.streamInfo;return!t||typeof t!="object"?null:t},al=e=>{if(!e||typeof e!="object")return null;const t=e;return{isOpen:t.isOpen===!0,status:typeof t.status=="string"?t.status:null}},Ej=e=>{const t=al(e.tcp),n=al(e.udp);return t||n?{tcp:t,udp:n,overall:null}:typeof e.isOpen=="boolean"||typeof e.status=="string"?{tcp:null,udp:null,overall:al(e)}:null},zj=e=>{const t=e.rttMs;return{avg:t&&typeof t.avg=="number"?t.avg:null,lossPercent:typeof e.lossPercent=="number"?e.lossPercent:null}},Rj=(e,t)=>{const n=t?`https://${t}.rtsp.me`:"";for(const a of["url","previewUrl","preview","image","imageUrl"]){const s=e[a];if(!(typeof s!="string"||!s)){if(/^https?:\/\//.test(s))return s;if(s.startsWith("/")&&n)return n+s}}return null},Cj=(e,t)=>{const[n,a]=x.useState(nl),[s,i]=x.useState("idle"),[l,o]=x.useState(null),[u,c]=x.useState(null),[p,m]=x.useState(null),[h,v]=x.useState(null),[j,b]=x.useState(null),[S,f]=x.useState(null),d=x.useRef(null),g=x.useRef(null),y=x.useRef(0),w=x.useCallback(()=>{var C;(C=d.current)==null||C.close(),d.current=null,g.current!=null&&(clearInterval(g.current),g.current=null)},[]),P=x.useCallback(()=>{f(Nj),g.current=setInterval(()=>f(C=>C==null||C<=0?0:C-1),1e3)},[]),T=x.useCallback(()=>{y.current+=1,w(),i("idle"),a(nl()),o(null),c(null),m(null),v(null),b(null),f(null)},[w]),z=x.useCallback(async C=>{const N=++y.current;w(),a(nl()),i("running"),o(null),c(null),m(null),v(null),b(null),P();let A;try{({eventsUrl:A}=await Pj.createJob(e,C))}catch(ie){if(N!==y.current)return;w(),i("error"),a(Q=>({...Q,url:{status:"pending",error:null}})),o(t(ie instanceof qe&&ie.code?ie.code:"connection_lost"));return}if(N!==y.current)return;const Y=new EventSource(A);d.current=Y;let re=null;const Ze=ie=>{try{return JSON.parse(ie.data)}catch{return{success:!1}}};for(const[ie,Q]of Object.entries(kj))Y.addEventListener(ie,dr=>{const E=Ze(dr);if(!E.success&&Q!=="ping"&&(re={step:Q,hasError:!!E.error}),a(F=>{const M={...F},K=()=>{const ne=ws[ws.indexOf(Q)+1];ne&&M[ne].status==="pending"&&(M[ne]={status:"active",error:null})};return E.success?(M[Q]={status:"ok",error:null},K()):(M[Q]={status:"fail",error:E.error?t(E.error):null},Q==="ping"&&K()),M}),Q==="ping"&&E.success&&v(zj(E)),Q==="port"){const F=Ej(E);F&&b(F)}Q==="streamInfo"&&E.success&&m(Tj(E)),Q==="preview"&&E.success&&c(Rj(E,e))});Y.addEventListener("done",ie=>{const Q=Ze(ie);w(),i(Q.success?"success":"failed"),a(dr=>{const E={...dr};for(const F of ws)E[F].status==="active"&&(E[F]={...E[F],status:"pending"});return re&&!re.hasError&&Q.error&&(E[re.step]={status:"fail",error:t(Q.error)}),E}),!Q.success&&Q.error&&!re&&o(t(Q.error))}),Y.onerror=()=>{d.current===Y&&(w(),i("error"),o(t("connection_lost")))}},[e,w,P,t]);return x.useEffect(()=>w,[w]),{steps:n,phase:s,topError:l,image:u,streamInfo:p,ping:h,port:j,secondsLeft:S,run:z,reset:T,stop:w}},Ij=()=>r.jsx("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M21 21L3 3M21.0001 3L3 21.0001",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),wt=({id:e,children:t,back:n})=>{const{activePopup:a,closePopup:s,openPopup:i}=V(),{lang:l}=V();return r.jsx("div",{className:`popup${a===e?" open":""}`,id:e,children:r.jsx("div",{className:"popup__body",children:r.jsxs("div",{className:"popup__content simplebar",style:{overflowY:"auto"},children:[r.jsx("button",{className:"popup__close btn-reset close-popup",onClick:s,children:r.jsx(Ij,{})}),n&&r.jsxs("a",{className:"popup__back popup-link",onClick:()=>i("popup-broadcast"),children:[r.jsx("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M19 12L5 12M5 12L11 18M5 12L11 6",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),r.jsx("span",{children:l==="ru"?"Назад":"Back"})]}),t]})})})},Fj={en:{title:r.jsxs(r.Fragment,{children:["Checking ",r.jsx("br",{})," your RTSP stream"]}),steps:{url:"URL check (format and DNS)",ping:"Host ping",port:"Port check",streamInfo:"RTSP stream check",preview:"Capturing a frame from the stream"},success:"The stream works — frame captured.",confirmEmail:"To finish registration, confirm the broadcast via the link we've sent to your email.",failed:"The check did not pass.",timeLeft:"~{s} s left",retry:"Retry",close:"Close",errors:{invalid_rtsp_url:"Invalid RTSP URL format",host_resolve_failed:"Host could not be resolved (DNS)",local_address:"Local/private IP address — the server cannot check such addresses",port_closed:"Port is closed",ffprobe_unavailable:"ffprobe is unavailable on the server",ffmpeg_unavailable:"ffmpeg is unavailable on the server",stream_timeout:"Stream check timed out",unauthorized:"Invalid RTSP credentials (login or password)",connection_timeout:"Connection timed out",connection_refused:"Connection refused",no_route_host:"No route to host",not_found:"RTSP stream not found",no_video:"No video stream found",invali
67d_data:"The stream returned invalid data",unknown_ffprobe_error:"Unknown stream check error",unknown_ffmpeg_error:"Unknown frame capture error",too_many_requests:"Too many requests. Please try again in a minute.",connection_lost:"Connection to the check server was lost. Please try again.",unknown:"Unknown check error"},info:{video:"Video",audio:"Audio",ch:"ch",hz:"Hz",ms:"ms",loss:"loss",fps:"fps",gop:"GOP",sec:"s",frames:"frames",open:"open",closed:"closed",noReply:"no reply",filtered:"filtered"}},ru:{title:r.jsxs(r.Fragment,{children:["Проверяем ",r.jsx("br",{})," ваш RTSP-поток"]}),steps:{url:"Проверка адреса (формат и DNS)",ping:"Пинг хоста",port:"Проверка порта",streamInfo:"Проверка RTSP-потока",preview:"Получение кадра из потока"},success:"Поток работает — кадр получен.",confirmEmail:"Для завершения регистрации подтвердите создание трансляции по ссылке, отправленной на вашу почту.",failed:"Проверка не пройдена.",timeLeft:"Осталось ~{s} с",retry:"Повторить",close:"Закрыть",errors:{invalid_rtsp_url:"Неверный формат RTSP-ссылки",host_resolve_failed:"Хост не найден (не резолвится DNS)",local_address:"Локальный/приватный IP-адрес — сервер не проверяет такие адреса",port_closed:"Порт закрыт",ffprobe_unavailable:"На сервере недоступен ffprobe",ffmpeg_unavailable:"На сервере недоступен ffmpeg",stream_timeout:"Тайм-аут проверки потока",unauthorized:"Неверная авторизация RTSP (логин или пароль)",connection_timeout:"Тайм-аут подключения",connection_refused:"Соединение отклонено",no_route_host:"Нет маршрута до хоста",not_found:"RTSP-поток не найден",no_video:"Видеопоток не найден",invalid_data:"Поток вернул некорректные данные",unknown_ffprobe_error:"Неизвестная ошибка проверки потока",unknown_ffmpeg_error:"Неизвестная ошибка получения кадра",too_many_requests:"Слишком много запросов. Попробуйте через 1 минуту.",connection_lost:"Соединение с сервером проверки прервалось. Попробуйте ещё раз.",unknown:"Неизвестная ошибка проверки"},info:{video:"Видео",audio:"Аудио",ch:"кан.",hz:"Гц",ms:"мс",loss:"потерь",fps:"fps",gop:"GOP",sec:"с",frames:"кадр.",open:"открыт",closed:"закрыт",noReply:"нет ответа",filtered:"фильтруется"}},de:{title:r.jsxs(r.Fragment,{children:["Wir prüfen ",r.jsx("br",{})," Ihren RTSP-Stream"]}),steps:{url:"Adressprüfung (Format und DNS)",ping:"Host-Ping",port:"Portprüfung",streamInfo:"RTSP-Stream-Prüfung",preview:"Einzelbild aus dem Stream aufnehmen"},success:"Der Stream funktioniert — Einzelbild aufgenommen.",confirmEmail:"Um die Registrierung abzuschließen, bestätigen Sie die Erstellung über den Link, den wir an Ihre E-Mail gesendet haben.",failed:"Die Prüfung war nicht erfolgreich.",timeLeft:"Noch ~{s} s",retry:"Wiederholen",close:"Schließen",errors:{invalid_rtsp_url:"Ungültiges RTSP-URL-Format",host_resolve_failed:"Host konnte nicht aufgelöst werden (DNS)",local_address:"Lokale/private IP-Adresse — der Server kann solche Adressen nicht prüfen",port_closed:"Port ist geschlossen",ffprobe_unavailable:"ffprobe ist auf dem Server nicht verfügbar",ffmpeg_unavailable:"ffmpeg ist auf dem Server nicht verfügbar",stream_timeout:"Zeitüberschreitung bei der Stream-Prüfung",unauthorized:"Ungültige RTSP-Zugangsdaten (Benutzername oder Passwort)",connection_timeout:"Zeitüberschreitung der Verbindung",connection_refused:"Verbindung abgelehnt",no_route_host:"Keine Route zum Host",not_found:"RTSP-Stream nicht gefunden",no_video:"Kein Videostream gefunden",invali
67d_data:"Der Stream hat ungültige Daten zurückgegeben",unknown_ffprobe_error:"Unbekannter Fehler bei der Stream-Prüfung",unknown_ffmpeg_error:"Unbekannter Fehler bei der Einzelbildaufnahme",too_many_requests:"Zu viele Anfragen. Bitte versuchen Sie es in einer Minute erneut.",connection_lost:"Die Verbindung zum Prüfserver wurde unterbrochen. Bitte versuchen Sie es erneut.",unknown:"Unbekannter Prüffehler"},info:{video:"Video",audio:"Audio",ch:"Kan.",hz:"Hz",ms:"ms",loss:"Verlust",fps:"fps",gop:"GOP",sec:"s",frames:"Frames",open:"offen",closed:"geschlossen",noReply:"keine Antwort",filtered:"gefiltert"}},pr:{title:r.jsxs(r.Fragment,{children:["Verificando ",r.jsx("br",{})," seu fluxo RTSP"]}),steps:{url:"Verificação do endereço (formato e DNS)",ping:"Ping do host",port:"Verificação da porta",streamInfo:"Verificação do fluxo RTSP",preview:"Capturando um quadro do fluxo"},success:"O fluxo funciona — quadro capturado.",confirmEmail:"Para concluir o cadastro, confirme a criação pelo link enviado ao seu e-mail.",failed:"A verificação não foi aprovada.",timeLeft:"Faltam ~{s} s",retry:"Tentar novamente",close:"Fechar",errors:{invalid_rtsp_url:"Formato de URL RTSP inválido",host_resolve_failed:"Não foi possível resolver o host (DNS)",local_address:"Endereço IP local/privado — o servidor não pode verificar esse tipo de endereço",port_closed:"A porta está fechada",ffprobe_unavailable:"O ffprobe não está disponível no servidor",ffmpeg_unavailable:"O ffmpeg não está disponível no servidor",stream_timeout:"Tempo esgotado na verificação do fluxo",unauthorized:"Credenciais RTSP inválidas (login ou senha)",connection_timeout:"Tempo de conexão esgotado",connection_refused:"Conexão recusada",no_route_host:"Sem rota para o host",not_found:"Fluxo RTSP não encontrado",no_video:"Nenhum fluxo de vídeo encontrado",invalid_data:"O fluxo retornou dados inválidos",unknown_ffprobe_error:"Erro desconhecido na verificação do fluxo",unknown_ffmpeg_error:"Erro desconhecido na captura do quadro",too_many_requests:"Muitas solicitações. Tente novamente em um minuto.",connection_lost:"A conexão com o servidor de verificação foi perdida. Tente novamente.",unknown:"Erro de verificação desconhecido"},info:{video:"Vídeo",audio:"Áudio",ch:"can.",hz:"Hz",ms:"ms",loss:"perda",fps:"fps",gop:"GOP",sec:"s",frames:"quadros",open:"aberta",closed:"fechada",noReply:"sem resposta",filtered:"filtrada"}},fr:{title:r.jsxs(r.Fragment,{children:["Vérification ",r.jsx("br",{})," de votre flux RTSP"]}),steps:{url:"Vérification de l'adresse (format et DNS)",ping:"Ping de l'hôte",port:"Vérification du port",streamInfo:"Vérification du flux RTSP",preview:"Capture d'une image du flux"},success:"Le flux fonctionne — image capturée.",confirmEmail:"Pour finaliser l'inscription, confirmez la création via le lien envoyé à votre adresse e-mail.",failed:"La vérification a échoué.",timeLeft:"Encore ~{s} s",retry:"Réessayer",close:"Fermer",errors:{invalid_rtsp_url:"Format d'URL RTSP invalide",host_resolve_failed:"L'hôte n'a pas pu être résolu (DNS)",local_address:"Adresse IP locale/privée — le serveur ne peut pas vérifier ce type d'adresse",port_closed:"Le port est fermé",ffprobe_unavailable:"ffprobe n'est pas disponible sur le serveur",ffmpeg_unavailable:"ffmpeg n'est pas disponible sur le serveur",stream_timeout:"Délai de vérification du flux dépassé",unauthorized:"Identifiants RTSP invalides (identifiant ou mot de passe)",connection_timeout:"Délai de connexion dépassé",connection_refused:"Connexion refusée",no_route_host:"Aucune route vers l'hôte",not_found:"Flux RTSP introuvable",no_video:"Aucun flux vidéo trouvé",invalid_data:"Le flux a renvoyé des données invalides",unknown_ffprobe_error:"Erreur inconnue lors de la vérification du flux",unknown_ffmpeg_error:"Erreur inconnue lors de la capture de l'image",too_many_requests:"Trop de requêtes. Veuillez réessayer dans une minute.",connection_lost:"La connexion au serveur de vérification a été perdue. Veuillez réessayer.",unknown:"Erreur de vérification inconnue"},info:{video:"Vidéo",audio:"Audio",ch:"can.",hz:"Hz",ms:"ms",loss:"perte",fps:"fps",gop:"GOP",sec:"s",frames:"images",open:"ouvert",closed:"fermé",noReply:"pas de réponse",filtered:"filtré"}},es:{title:r.jsxs(r.Fragment,{children:["Verificando ",r.jsx("br",{})," tu flujo RTSP"]}),steps:{url:"Verificación de la dirección (formato y DNS)",ping:"Ping al host",port:"Verificación del puerto",streamInfo:"Verificación del flujo RTSP",preview:"Capturando un fotograma del flujo"},success:"El flujo funciona — fotograma capturado.",confirmEmail:"Para completar el registro, c
67onfirma la creación mediante el enlace enviado a tu correo electrónico.",failed:"La verificación no se ha superado.",timeLeft:"Quedan ~{s} s",retry:"Reintentar",close:"Cerrar",errors:{invalid_rtsp_url:"Formato de URL RTSP no válido",host_resolve_failed:"No se pudo resolver el host (DNS)",local_address:"Dirección IP local/privada — el servidor no puede verificar este tipo de direcciones",port_closed:"El puerto está cerrado",ffprobe_unavailable:"ffprobe no está disponible en el servidor",ffmpeg_unavailable:"ffmpeg no está disponible en el servidor",stream_timeout:"Se agotó el tiempo de verificación del flujo",unauthorized:"Credenciales RTSP no válidas (usuario o contraseña)",connection_timeout:"Se agotó el tiempo de conexión",connection_refused:"Conexión rechazada",no_route_host:"No hay ruta hacia el host",not_found:"Flujo RTSP no encontrado",no_video:"No se encontró ningún flujo de video",invalid_data:"El flujo devolvió datos no válidos",unknown_ffprobe_error:"Error desconocido en la verificación del flujo",unknown_ffmpeg_error:"Error desconocido al capturar el fotograma",too_many_requests:"Demasiadas solicitudes. Inténtalo de nuevo en un minuto.",connection_lost:"Se perdió la conexión con el servidor de verificación. Inténtalo de nuevo.",unknown:"Error de verificación desconocido"},info:{video:"Vídeo",audio:"Audio",ch:"can.",hz:"Hz",ms:"ms",loss:"pérdida",fps:"fps",gop:"GOP",sec:"s",frames:"fotogramas",open:"abierto",closed:"cerrado",noReply:"sin respuesta",filtered:"filtrado"}},it:{title:r.jsxs(r.Fragment,{children:["Verifica ",r.jsx("br",{})," del tuo flusso RTSP"]}),steps:{url:"Verifica dell'indirizzo (formato e DNS)",ping:"Ping dell'host",port:"Verifica della porta",streamInfo:"Verifica del flusso RTSP",preview:"Acquisizione di un fotogramma dal flusso"},success:"Il flusso funziona — fotogramma acquisito.",confirmEmail:"Per completare la registrazione, conferma la creazione tramite il link inviato alla tua email.",failed:"La verifica non è stata superata.",timeLeft:"Ancora ~{s} s",retry:"Riprova",close:"Chiudi",errors:{invalid_rtsp_url:"Formato URL RTSP non valido",host_resolve_failed:"Impossibile risolvere l'host (DNS)",local_address:"Indirizzo IP locale/privato — il server non può verificare questo tipo di indirizzi",port_closed:"La porta è chiusa",ffprobe_unavailable:"ffprobe non è disponibile sul server",ffmpeg_unavailable:"ffmpeg non è disponibile sul server",stream_timeout:"Timeout della verifica del flusso",unauthorized:"Credenziali RTSP non valide (nome utente o password)",connection_timeout:"Timeout della connessione",connection_refused:"Connessione rifiutata",no_route_host:"Nessuna route verso l'host",not_found:"Flusso RTSP non trovato",no_video:"Nessun flusso video trovato",invalid_data:"Il flusso ha restituito dati non validi",unknown_ffprobe_error:"Errore sconosciuto durante la verifica del flusso",unknown_ffmpeg_error:"Errore sconosciuto durante l'acquisizione del fotogramma",too_many_requests:"Troppe richieste. Riprova tra un minuto.",connection_lost:"La connessione al server di verifica è stata persa. Riprova.",unknown:"Errore di verifica sconosciuto"},info:{video:"Video",audio:"Audio",ch:"can.",hz:"Hz",ms:"ms",loss:"persi",fps:"fps",gop:"GOP",sec:"s",frames:"fotogrammi",open:"aperta",closed:"chiusa",noReply:"nessuna risposta",filtered:"filtrata"}},tr:{title:r.jsxs(r.Fragment,{children:["RTSP yayınınız ",r.jsx("br",{})," kontrol ediliyor"]}),steps:{url:"Adres kontrolü (format ve DNS)",ping:"Host ping'i",port:"Port kontrolü",streamInfo:"RTSP yayın kontrolü",preview:"Yayından bir kare yakalanıyor"},success:"Yayın çalışıyor — kare yakalandı.",confirmEmail:"Kaydı tamamlamak için e-postanıza gönderilen bağlantıdan oluşturmayı onaylayın.",failed:"Kontrol geçilemedi.",timeLeft:"Kalan süre ~{s} sn",retry:"Tekrar dene",close:"Kapat",errors:{invalid_rtsp_url:"Geçersiz RTSP URL biçimi",host_resolve_failed:"Host çözümlenemedi (DNS)",local_address:"Yerel/özel IP adresi — sunucu bu tür adresleri kontrol edemez",port_closed:"Port kapalı",ffprobe_unavailable:"Sunucuda ffprobe kullanılamıyor",ffmpeg_unavailable:"Sunucuda ffmpeg kullanılamıyor",stream_timeout:"Yayın kontrolü zaman aşımına uğradı",unauthorized:"Geçersiz RTSP kimlik bilgileri (kullanıcı adı veya parola)",connection_timeout:"Bağlantı zaman aşımına uğradı",connection_refused:"Bağlantı reddedildi",no_route_host:"Host'a yol yok",not_found:"RTSP yayını bulunamadı",no_video:"Video akışı bulunamadı",invali
67d_data:"Yayın geçersiz veri döndürdü",unknown_ffprobe_error:"Bilinmeyen yayın kontrol hatası",unknown_ffmpeg_error:"Bilinmeyen kare yakalama hatası",too_many_requests:"Çok fazla istek. Lütfen bir dakika sonra tekrar deneyin.",connection_lost:"Kontrol sunucusuyla bağlantı koptu. Lütfen tekrar deneyin.",unknown:"Bilinmeyen kontrol hatası"},info:{video:"Video",audio:"Ses",ch:"kanal",hz:"Hz",ms:"ms",loss:"kayıp",fps:"fps",gop:"GOP",sec:"sn",frames:"kare",open:"açık",closed:"kapalı",noReply:"yanıt yok",filtered:"filtreleniyor"}},zh:{title:r.jsxs(r.Fragment,{children:["正在检测 ",r.jsx("br",{})," 你的RTSP流"]}),steps:{url:"地址检查(格式和DNS)",ping:"主机Ping",port:"端口检查",streamInfo:"RTSP流检查",preview:"正在从流中捕获一帧画面"},success:"流正常 — 已捕获画面。",confirmEmail:"为完成注册,请通过我们发送到您邮箱的链接确认创建。",failed:"检测未通过。",timeLeft:"剩余约 {s} 秒",retry:"重试",close:"关闭",errors:{invalid_rtsp_url:"RTSP URL格式无效",host_resolve_failed:"无法解析主机(DNS)",local_address:"本地/私有IP地址 — 服务器无法检查此类地址",port_closed:"端口已关闭",ffprobe_unavailable:"服务器上无法使用ffprobe",ffmpeg_unavailable:"服务器上无法使用ffmpeg",stream_timeout:"流检查超时",unauthorized:"RTSP凭据无效(用户名或密码)",connection_timeout:"连接超时",connection_refused:"连接被拒绝",no_route_host:"无法路由到主机",not_found:"未找到RTSP流",no_video:"未找到视频流",invalid_data:"流返回了无效数据",unknown_ffprobe_error:"未知的流检查错误",unknown_ffmpeg_error:"未知的画面捕获错误",too_many_requests:"请求过多,请一分钟后重试。",connection_lost:"与检查服务器的连接已断开,请重试。",unknown:"未知的检查错误"},info:{video:"视频",audio:"音频",ch:"声道",hz:"Hz",ms:"毫秒",loss:"丢包",fps:"fps",gop:"GOP",sec:"秒",frames:"帧",open:"开放",closed:"关闭",noReply:"无响应",filtered:"被过滤"}}},Bn="#6b6b6b",nd=e=>String(Math.round(e*100)/100),Lj=({status:e})=>e==="active"?r.jsx("span",{style:{display:"inline-block",width:14,height:14,border:"2px solid currentColor",borderTopColor:"transparent",borderRadius:"50%",animation:"landing-check-spin .8s linear infinite"}}):e==="ok"?r.jsx("span",{style:{color:"var(--success)"},children:"✓"}):e==="fail"?r.jsx("span",{style:{color:"var(--error)"},children:"✕"}):r.jsx("span",{style:{color:Bn},children:"○"}),Mj=()=>{const{lang:e,activePopup:t,checkTarget:n,closePopup:a}=V(),s=Fj[e],i=x.useCallback(N=>s.errors[N??"unknown"]??s.errors.unknown,[s]),{steps:l,phase:o,topError:u,image:c,streamInfo:p,ping:m,port:h,secondsLeft:v,run:j,reset:b}=Cj((n==null?void 0:n.node)??"",i),[S,f]=x.useState(!1),d=x.useRef(null),g=x.useCallback(()=>{var A;const N=(A=d.current)==null?void 0:A.closest(".popup__content");N&&N.scrollTo({top:N.scrollHeight,behavior:"smooth"})},[]),y={display:"block",marginTop:2,color:Bn,fontSize:13},w=()=>{if(!m||m.avg==null)return null;const N=[`${Math.round(m.avg)} ${s.info.ms}`];return m.lossPercent!=null&&N.push(`${m.lossPercent}% ${s.info.loss}`),r.jsx("span",{style:y,children:N.join(" · ")})},P=N=>N.isOpen?s.info.open:N.status==="no_reply"?s.info.noReply:N.status==="filtered"?s.info.filtered:s.info.closed,T=()=>{if(!h)return null;const N=[];return h.tcp&&N.push(["TCP",h.tcp]),h.udp&&N.push(["UDP",h.udp]),!N.length&&h.overall?r.jsx("span",{style:y,children:r.jsx("span",{style:{color:h.overall.isOpen?"var(--success)":"var(--error)"},children:P(h.overall)})}):N.length?r.jsx("span",{style:y,children:N.map(([A,Y],re)=>r.jsxs("span",{children:[re>0&&" · ",A,":"," ",r.jsx("span",{style:{color:Y.isOpen?"var(--success)":"var(--error)"},children:P(Y)})]},A))}):null},z=()=>{if(!p)return null;const N=[],{video:A,audio:Y}=p;if(A){const re=[A.gopSec!=null?`${nd(A.gopSec)} ${s.info.sec}`:null,A.gopFrames!=null?`${A.gopFrames} ${s.info.frames}`:null].filter(Boolean),Ze=[A.codec,A.width&&A.height?`${A.width}×${A.height}`:null,A.fps!=null?`${nd(A.fps)} ${s.info.fps}`:null,re.length?`${s.info.gop} ${re.join(" / ")}
67`:null].filter(Boolean);Ze.length&&N.push(r.jsxs("span",{style:y,children:[s.info.video,": ",Ze.join(" · ")]},"v"))}if(Y){const re=[Y.codec,Y.channels!=null?`${Y.channels} ${s.info.ch}`:null,Y.sample_rate!=null?`${Y.sample_rate} ${s.info.hz}`:null].filter(Boolean);re.length&&N.push(r.jsxs("span",{style:y,children:[s.info.audio,": ",re.join(" · ")]},"a"))}return N.length?r.jsx(r.Fragment,{children:N}):null};x.useEffect(()=>{(o==="success"||o==="failed"||o==="error")&&g()},[o,g]);const C=t==="popup-check";return x.useEffect(()=>{f(!1),C&&n?j(n.rtspUrl):b()},[C,n]),r.jsxs(wt,{id:"popup-check",children:[r.jsx("style",{children:"@keyframes landing-check-spin{to{transform:rotate(360deg)}}"}),r.jsx("h2",{className:"popup__h2 h2",children:s.title}),r.jsxs("div",{className:"popup__form form",children:[r.jsx("p",{className:"text",style:{wordBreak:"break-all",color:Bn},children:n==null?void 0:n.rtspUrl}),r.jsx("div",{style:{display:"grid",gap:12},children:ws.map(N=>r.jsxs("div",{style:{display:"flex",gap:10,alignItems:"baseline"},children:[r.jsx("span",{style:{width:16,flexShrink:0,textAlign:"center"},children:r.jsx(Lj,{status:l[N].status})}),r.jsxs("span",{className:"text",style:l[N].status==="pending"?{color:Bn}:void 0,children:[s.steps[N],l[N].error&&r.jsx("span",{className:"form__error",style:{display:"block"},children:l[N].error}),N==="ping"&&w(),N==="port"&&T(),N==="streamInfo"&&z()]})]},N))}),o==="running"&&v!=null&&r.jsx("p",{className:"text",style:{color:Bn,fontSize:13},children:s.timeLeft.replace("{s}",String(v))}),c&&!S&&r.jsx("img",{src:c,alt:s.steps.preview,style:{width:"100%",borderRadius:16,display:"block"},onError:()=>f(!0),onLoad:g}),o==="success"&&r.jsxs(r.Fragment,{children:[r.jsx("p",{className:"form__error",style:{color:"var(--success)"},children:s.success}),r.jsx("div",{style:{display:"flex",gap:12,alignItems:"flex-start",padding:16,borderRadius:16,background:"rgba(25, 135, 84, .08)",border:"1px solid rgba(25, 135, 84, .35)"},children:r.jsx("p",{className:"text",style:{fontWeight:600},children:s.confirmEmail})})]}),(o==="failed"||o==="error")&&r.jsx("p",{className:"form__error",children:u??s.failed}),o!=="running"&&n&&r.jsx("button",{ref:d,className:"form__btn btn btn--red btn-reset",type:"button",onClick:o==="success"?a:()=>void j(n.rtspUrl),children:o==="success"?s.close:s.retry})]})]})},I={emailLabel:{en:"ENTER YOUR EMAIL",ru:"ВВЕДИТЕ ВАШ EMAIL",de:"GEBEN SIE IHRE E-MAIL EIN",pr:"INSIRA SEU E-MAIL",fr:"ENTREZ VOTRE EMAIL",es:"INGRESA TU CORREO ELECTRÓNICO",it:"INSERISCI LA TUA EMAIL",tr:"E-POSTA ADRESİNİZİ GİRİN",zh:"输入电子邮箱"},fillAll:{en:"Fill in all fields",ru:"Заполните все поля",de:"Bitte füllen Sie alle Felder aus",pr:"Preencha todos os campos",fr:"Remplissez tous les champs",es:"Rellena todos los campos",it:"Compila tutti i campi",tr:"Tüm alanları doldurun",zh:"请填写所有字段"},invalidCredentials:{en:"Invalid email or password",ru:"Неверный email или пароль",de:"Ungültige E-Mail oder ungültiges Passwort",pr:"E-mail ou senha inválidos",fr:"E-mail ou mot de passe invalide",es:"Correo electrónico o contraseña incorrectos",it:"E-mail o password non validi",tr:"Geçersiz e-posta veya şifre",zh:"邮箱或密码错误"},generic:{en:"Something went wrong. Please try again.",ru:"Что-то пошло не так. Попробуйте ещё раз.",de:"Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut.",pr:"Algo deu errado. Tente novamente.",fr:"Une erreur est survenue. Veuillez réessayer.",es:"Algo salió mal. Inténtalo de nuevo.",it:"Qualcosa è andato storto. Riprova.",tr:"Bir şeyler ters gitti. Lütfen tekrar deneyin.",zh:"出现问题,请重试。"},tooManyRequests:{en:"Too many requests. Please try again in {sec}s.",ru:"Слишком много запросов. Попробуйте через {sec} сек.",de:"Zu viele Anfragen. Bitte versuchen Sie es in {sec} Sek. erneut.",pr:"Muitas solicitações. Tente novamente em {sec}s.",fr:"Trop de requêtes. Veuillez réessayer dans {sec}s.",es:"Demasiadas solicitudes. Inténtalo de nuevo en {sec}s.",it:"Troppe richieste. Riprova tra {sec}s.",tr:"Çok fazla istek. Lütfen {sec} sn. sonra tekrar deneyin.",zh:"请求过多,请在 {sec} 秒后重试。"},tooManyRequestsNoSec:{en:"Too many requests. Please try again later.",ru:"Слишком много запросов. Попробуйте позже.",de:"Zu viele Anfragen. Bitte versuchen Sie es später erneut.",pr:"Muitas solicitações. Tente novamente mais tarde.",fr:"Trop de requêtes. Veuillez réessayer plus tard.",es:"Demasiadas solicitudes. Inténtalo de nuevo más tarde.",it:"Troppe richieste. Riprova più tardi.",tr:"Çok fazla istek. Lütfen daha sonra tekrar deneyin.",zh:"请求过多,请稍后重试。"},passwordLabel:{en:"ENTER YOUR PASSWORD",ru:"ВВЕДИТЕ ВАШ пароль",de
67:"GEBEN SIE IHR PASSWORT EIN",pr:"INSIRA SUA SENHA",fr:"ENTREZ VOTRE MOT DE PASSE",es:"INGRESA TU CONTRASEÑA",it:"INSERISCI LA TUA PASSWORD",tr:"ŞİFRENİZİ GİRİN",zh:"输入你的密码"},loginBtn:{en:"Log In",ru:"Войти",de:"Anmelden",pr:"Entrar",fr:"Connexion",es:"Iniciar sesión",it:"Accedi",tr:"Giriş Yap",zh:"登录"},loginBtnLoading:{en:"Logging in…",ru:"Вход…",de:"Anmeldung…",pr:"Entrando…",fr:"Connexion…",es:"Iniciando sesión…",it:"Accesso…",tr:"Giriş yapılıyor…",zh:"登录中…"},resetSubmitted:{en:"If that email is registered, we've sent a password reset link to it.",ru:"Если такой email зарегистрирован, мы отправили на него ссылку для сброса пароля.",de:"Falls diese E-Mail registriert ist, haben wir einen Link zum Zurücksetzen des Passworts an sie gesendet.",pr:"Se esse e-mail estiver cadastrado, enviamos um link para redefinir a senha.",fr:"Si cette adresse e-mail est enregistrée, nous y avons envoyé un lien de réinitialisation du mot de passe.",es:"Si ese correo electrónico está registrado, te hemos enviado un enlace para restablecer la contraseña.",it:"Se questa e-mail è registrata, ti abbiamo inviato un link per reimpostare la password.",tr:"Bu e-posta kayıtlıysa, şifre sıfırlama bağlantısını e-posta adresinize gönderdik.",zh:"如果该邮箱已注册,我们已向其发送了密码重置链接。"},resetBtn:{en:"Send",ru:"отправить",de:"Senden",pr:"Enviar",fr:"Envoyer",es:"Enviar",it:"Invia",tr:"Gönder",zh:"发送"},resetBtnLoading:{en:"Sending…",ru:"Отправка…",de:"Senden…",pr:"Enviando…",fr:"Envoi…",es:"Enviando…",it:"Invio…",tr:"Gönderiliyor…",zh:"发送中…"},rtspLabel:{en:"YOUR RTSP LINK (H.264/H.265)",ru:"ВАША RTSP-ССЫЛКА (H.264/H.265)",de:"IHRE RTSP-URL (H.264/H.265)",pr:"SEU LINK RTSP (H.264/H.265)",fr:"VOTRE LIEN RTSP (H.264/H.265)",es:"TU ENLACE RTSP (H.264/H.265)",it:"IL TUO LINK RTSP (H.264/H.265)",tr:"RTSP LİNKİNİZ (H.264/H.265)",zh:"输入RTSP链接(H.264/H.265)"},dcLabel:{en:"Nearest data center",ru:"Ближайший дата центр",de:"Nächstgelegenes Rechenzentrum",pr:"Data center mais próximo",fr:"Centre de données le plus proche",es:"Centro de datos más cercano",it:"Data center più vicino",tr:"En yakın veri merkezi",zh:"最近的数据中心"},loginTitle:{en:"Log In",ru:"Войти",de:"Anmelden",pr:"Entrar",fr:"Connexion",es:"Iniciar sesión",it:"Accedi",tr:"Giriş Yap",zh:"登录"},loginSubtitle:{en:r.jsxs(r.Fragment,{children:["Log in to access ",r.jsx("br",{})," your personal account"]}),ru:r.jsxs(r.Fragment,{children:["Войдите в аккаунт, чтобы получить ",r.jsx("br",{})," доступ к личному кабинету"]}),de:r.jsxs(r.Fragment,{children:["Melden Sie sich an, ",r.jsx("br",{})," um auf Ihr persönliches Konto zuzugreifen"]}),pr:r.jsxs(r.Fragment,{children:["Faça login para acessar ",r.jsx("br",{})," sua conta pessoal"]}),fr:r.jsxs(r.Fragment,{children:["Connectez-vous pour accéder ",r.jsx("br",{})," à votre compte personnel"]}),es:r.jsxs(r.Fragment,{children:["Inicia sesión para acceder ",r.jsx("br",{})," a tu cuenta personal"]}),it:r.jsxs(r.Fragment,{children:["Accedi per ",r.jsx("br",{})," entrare nel tuo account personale"]}),tr:r.jsxs(r.Fragment,{children:["Kişisel hesabınıza ",r.jsx("br",{})," erişmek için giriş yapın"]}),zh:r.jsxs(r.Fragment,{children:["登录你的 ",r.jsx("br",{})," 个人账户"]})},resetLink:{en:"RESET PASSWORD",ru:"СБРОСИТЬ ПАРОЛЬ",de:"PASSWORT ZURÜCKSETZEN",pr:"REDEFINIR SENHA",fr:"RÉINITIALISER LE MOT DE PASSE",es:"RESTABLECER CONTRASEÑA",it:"REIMPOSTA PASSWORD",tr:"ŞİFREYİ SIFIRLA",zh:"重置密码"},noAccount:{en:"No account? ",ru:"Нет аккаунта? ",de:"Noch kein Konto? ",pr:"Não tem conta? ",fr:"Pas de compte ? ",es:"¿No tienes cuenta? ",it:"Non hai un account? ",tr:"Hesabınız yok mu? ",zh:"还没有账户? "},signUp:{en:" Sign up",ru:" Регистрация",de:" Registrieren",pr:" Cadastrar",fr:" S’inscrire",es:" Registrarse",it:" Registrati",tr:" Kayıt Ol",zh:" 注册"},signUpTitle:{en:"Sign up",ru:"Регистрация",de:"Registrieren",pr:"Cadastrar",fr:"S’inscrire",es:"Registrarse",it:"Registrati",tr:"Kayıt Ol",zh:"注册"},signUpSubtitle:{en:r.jsxs(r.Fragment,{children:["Enter your email and create a password ",r.jsx("br",{})," to access your personal account"]}),ru:r.jsxs(r.Fragment,{children:["Введите email и придумайте пароль ",r.jsx("br",{})," для входа в личный кабинет"]}),de:r.jsxs(r.Fragment,{children:["Geben Sie Ihre E-Mail ein und erstellen Sie ein Passwort ",r.jsx("br",{})," für den Zugang zu Ihrem persönlichen Konto"]}),pr:r.jsxs(r.Fragment,{children:["Insira seu e-mail e crie uma senha ",r.jsx("br",{})," para acessar sua conta pessoal"]}),fr:r.jsxs(r.Fragment,{children:["Saisissez votre e-mail et créez un mot de passe ",r.jsx("br",{})," pour accéder à votre compte personnel"]}),es:r.jsxs(r.Fragment,{children:["Introduce tu correo y crea una contraseña ",r.jsx("br",{})," para acceder a tu cuenta personal"]}),it:r.jsxs(r.Fragment,{children:["Inserisci la tua email e crea una password ",r.jsx("br",{})," per accedere al tuo account personale"]}),tr:r.jsxs(r.Fragment,{children:["E-postanızı girin ve kişisel hesabınıza ",r.jsx("br",{})," erişmek için bir şifre oluşturun"]}
67),zh:r.jsxs(r.Fragment,{children:["输入邮箱并创建密码 ",r.jsx("br",{})," 以访问你的个人账户"]})},confirmPasswordLabel:{en:"CONFIRM PASSWORD",ru:"ПОВТОРИТЕ ПАРОЛЬ",de:"PASSWORT BESTÄTIGEN",pr:"CONFIRME A SENHA",fr:"CONFIRMEZ LE MOT DE PASSE",es:"CONFIRMA LA CONTRASEÑA",it:"CONFERMA LA PASSWORD",tr:"ŞİFREYİ ONAYLAYIN",zh:"确认密码"},passwordMin:{en:"Password must be at least 8 characters",ru:"Пароль должен содержать не менее 8 символов",de:"Das Passwort muss mindestens 8 Zeichen lang sein",pr:"A senha deve ter pelo menos 8 caracteres",fr:"Le mot de passe doit contenir au moins 8 caractères",es:"La contraseña debe tener al menos 8 caracteres",it:"La password deve contenere almeno 8 caratteri",tr:"Şifre en az 8 karakter olmalıdır",zh:"密码至少需要8个字符"},passwordsDontMatch:{en:"Passwords do not match",ru:"Пароли не совпадают",de:"Die Passwörter stimmen nicht überein",pr:"As senhas não coincidem",fr:"Les mots de passe ne correspondent pas",es:"Las contraseñas no coinciden",it:"Le password non coincidono",tr:"Şifreler eşleşmiyor",zh:"两次输入的密码不一致"},registerSuccess:{en:"Almost there! Check your email and confirm your account via the link we've sent.",ru:"Почти готово! Проверьте почту и подтвердите аккаунт по ссылке из письма.",de:"Fast fertig! Prüfen Sie Ihre E-Mails und bestätigen Sie Ihr Konto über den gesendeten Link.",pr:"Quase lá! Verifique seu e-mail e confirme sua conta pelo link que enviamos.",fr:"Presque terminé ! Vérifiez votre e-mail et confirmez votre compte via le lien envoyé.",es:"¡Casi listo! Revisa tu correo y confirma tu cuenta con el enlace que te enviamos.",it:"Ci siamo quasi! Controlla la tua email e conferma l'account tramite il link inviato.",tr:"Neredeyse tamam! E-postanızı kontrol edin ve gönderdiğimiz bağlantıyla hesabınızı onaylayın.",zh:"就快完成了!请查收邮件并通过我们发送的链接确认你的账户。"},emailTaken:{en:"This email is already registered",ru:"Этот email уже зарегистрирован",de:"Diese E-Mail ist bereits registriert",pr:"Este e-mail já está cadastrado",fr:"Cet e-mail est déjà enregistré",es:"Este correo electrónico ya está registrado",it:"Questa email è già registrata",tr:"Bu e-posta zaten kayıtlı",zh:"该邮箱已注册"},signUpSubmitting:{en:"Signing up…",ru:"Регистрация…",de:"Registrierung…",pr:"Cadastrando…",fr:"Inscription…",es:"Registrando…",it:"Registrazione…",tr:"Kayıt olunuyor…",zh:"注册中…"},haveAccount:{en:"Have an account? ",ru:"Есть аккаунт? ",de:"Bereits ein Konto? ",pr:"Já tem conta? ",fr:"Vous avez déjà un compte ? ",es:"¿Ya tienes una cuenta? ",it:"Hai già un account? ",tr:"Zaten bir hesabınız var mı? ",zh:"已经有账户? "},resetTitle:{en:"RESET PASSWORD",ru:"СБРОСИТЬ ПАРОЛЬ",de:"PASSWORT ZURÜCKSETZEN",pr:"REDEFINIR SENHA",fr:"RÉINITIALISER LE MOT DE PASSE",es:"RESTABLECER CONTRASEÑA",it:"REIMPOSTA PASSWORD",tr:"ŞİFREYİ SIFIRLA",zh:"重置密码"},resetSubtitle:{en:"A password reset link will be sent to the email you provided during registration.",ru:"Ссылка для сброса пароля будет выслана на вашу почту, указанную при регистрации",de:"Ein Link zum Zurücksetzen des Passworts wird an die bei der Registrierung angegebene E-Mail gesendet.",pr:"Um link para redefinir a senha será enviado ao e-mail fornecido no cadastro.",fr:"Un lien de réinitialisation du mot de passe sera envoyé à l’adresse e-mail que vous avez renseignée lors de l’inscription.",es:"Se enviará un enlace para restablecer la contraseña al correo electrónico que proporcionaste durante el registro.",it:"Un link per reimpostare la password verrà inviato all’indirizzo e-mail che hai fornito in fase di registrazione.",tr:"Kayıt sırasında belirttiğiniz e-posta adresine bir şifre sıfırlama bağlantısı gönderilecektir.",zh:"将会向你注册时填写的邮箱发送密码重置链接。"},broadcastTitle:{en:r.jsxs(r.Fragment,{children:["Create ",r.jsx("br",{})," RTSP Broadcast"]}),ru:r.jsxs(r.Fragment,{children:["Создать ",r.jsx("br",{})," RTSP-трансляцию"]}),de:r.jsxs(r.Fragment,{children:["RTSP-Übertragung ",r.jsx("br",{})," erstellen"]}),pr:r.jsxs(r.Fragment,{children:["Criar ",r.jsx("br",{})," transmissão RTSP"]}),fr:r.jsxs(r.Fragment,{children:["Créer ",r.jsx("br",{})," une diffusion RTSP"]}),es:r.jsxs(r.Fragment,{children:["Crear ",r.jsx("br",{})," transmisión RTSP"]}),it:r.jsxs(r.Fragment,{children:["Crea ",r.jsx("br",{})," trasmissione RTSP"]}),tr:r.jsxs(r.Fragment,{children:["RTSP Yayını ",r.jsx("br",{})," Oluştur"]}
67),zh:r.jsxs(r.Fragment,{children:["创建 ",r.jsx("br",{})," RTSP直播"]})},agreePrefix:{en:"By clicking the button, you agree to the ",ru:"Нажимая кнопку, вы соглашаетесь с ",de:"Mit dem Klick auf den Button akzeptieren Sie die ",pr:"Ao clicar no botão, você concorda com ",fr:"En cliquant sur le bouton, vous acceptez ",es:"Al hacer clic en el botón, aceptas ",it:"Cliccando sul pulsante, accetti ",tr:"Hizmet kurallarını ",zh:"点击按钮表示你同意 "},serviceRules:{en:"service rules",ru:"правилами сервиса",de:"Nutzungsbedingungen",pr:"os termos do serviço",fr:"les règles du service",es:"los términos del servicio",it:"i termini del servizio",tr:"kabul etmiş olursunuz",zh:"服务条款"},videoTitle:{en:r.jsxs(r.Fragment,{children:["Your ",r.jsx("br",{})," RTSP broadcast"]}),ru:r.jsxs(r.Fragment,{children:["ваша ",r.jsx("br",{})," RTSP трансляция"]}),de:r.jsxs(r.Fragment,{children:["Ihr ",r.jsx("br",{})," RTSP-Stream"]}),pr:r.jsxs(r.Fragment,{children:["Sua ",r.jsx("br",{})," transmissão RTSP"]}),fr:r.jsxs(r.Fragment,{children:["Votre ",r.jsx("br",{})," diffusion RTSP"]}),es:r.jsxs(r.Fragment,{children:["Tu ",r.jsx("br",{})," transmisión RTSP"]}),it:r.jsxs(r.Fragment,{children:["La tua ",r.jsx("br",{})," trasmissione RTSP"]}),tr:r.jsxs(r.Fragment,{children:["RTSP ",r.jsx("br",{})," Yayınınız"]}),zh:r.jsxs(r.Fragment,{children:["你的 ",r.jsx("br",{})," RTSP直播"]})},videoPlayerLabel:{en:"HTML5 Video Player",ru:"HTML5 Видео плеер",de:"HTML5-Videoplayer",pr:"Player de vídeo HTML5",fr:"Lecteur vidéo HTML5",es:"Reproductor de video HTML5",it:"Lettore video HTML5",tr:"HTML5 Video Oynatıcı",zh:"HTML5视频播放器"},htmlCodeLabel:{en:"HTML CODE",ru:"HTML КОД",de:"HTML-CODE",pr:"CÓDIGO HTML",fr:"CODE HTML",es:"CÓDIGO HTML",it:"CODICE HTML",tr:"HTML KODU",zh:"HTML代码"},permanentLinkLabel:{en:"Permanent Link",ru:"постоянная ссылка",de:"Permanenter Link",pr:"Link permanente",fr:"Lien permanent",es:"Enlace permanente",it:"Link permanente",tr:"Kalıcı Bağlantı",zh:"永久链接"},copied:{en:"Copied!",ru:"Скопировано!",de:"Kopiert!",pr:"Copiado!",fr:"Copié !",es:"¡Copiado!",it:"Copiato!",tr:"Kopyalandı!",zh:"已复制!"},contactSupport:{en:"Contact Support",ru:"Написать в поддержку",de:"Support kontaktieren",pr:"Entrar em contato com suporte",fr:"Contacter le support",es:"Contactar al soporte",it:"Contatta il supporto",tr:"Destek ile İletişime Geçin",zh:"联系技术支持"},thanksTitle:{en:"Thank you!",ru:"Спасибо!",de:"Danke!",pr:"Obrigado!",fr:"Merci !",es:"¡Gracias!",it:"Grazie!",tr:"Teşekkürler!",zh:"谢谢!"},thanksText:{en:"We will contact you shortly",ru:"Мы свяжемся с вами в ближайшее время",de:"Wir werden uns in Kürze bei Ihnen melden.",pr:"Entraremos em contato em breve",fr:"Nous vous contacterons prochainement",es:"Nos pondremos en contacto contigo pronto",it:"Ti contatteremo al più presto",tr:"En kısa zamanda sizinle iletişime geçeceğiz",zh:"我们会尽快联系你"},localIpError:{en:"Creating a broadcast with a local IP is not possible.",ru:"Создание трансляции с локального IP невозможно.",de:"Ein Stream mit lokaler IP kann nicht erstellt werden.",pr:"Não é possível criar uma transmissão com IP local.",fr:"Impossible de créer une diffusion avec une IP locale.",es:"No se puede crear una transmisión con una IP local.",it:"Non è possibile creare una trasmissione con un IP locale.",tr:"Yerel IP adresiyle yayın oluşturulamaz.",zh:"无法使用局域网IP来创建直播。"},close:{en:"Close",ru:"Закрыть",de:"Schließen",pr:"Fechar",fr:"Fermer",es:"Cerrar",it:"Chiudi",tr:"Kapat",zh:"关闭"},button:{en:"Button",ru:"Кнопка",de:"Button",pr:"Botão",fr:"Bouton",es:"Botón",it:"Pulsante",tr:"Düğme",zh:"按钮"}},zh=(e,t)=>{const n=e instanceof qe?e.retryAfterSec:null;return n&&n>0?I.tooManyRequests[t].replace("{sec}",String(Math.ceil(n))):I.tooManyRequestsNoSec[t]}
67,ao=({value:e,onChange:t,name:n,autoComplete:a,placeholder:s})=>{const[i,l]=x.useState(!1);return r.jsxs("div",{className:"form__wrap",children:[r.jsx("input",{className:"form__input input-reset input-password",type:i?"text":"password",name:n,autoComplete:a,placeholder:s,value:e,onChange:o=>t(o.currentTarget.value)}),r.jsx("button",{type:"button",className:"form__password","aria-label":i?"Hide password":"Show password",onClick:()=>l(o=>!o),style:{border:"none",padding:0,backgroundColor:"transparent",backgroundImage:`url(/landing/img/svg/${i?"no-view":"view"}.svg)`,backgroundRepeat:"no-repeat",backgroundPosition:"center",backgroundSize:"contain"}})]})},Aj=()=>{const{lang:e}=V(),t=Ft(p=>p.login),n=Ft(p=>p.isLoading),[a,s]=x.useState(""),[i,l]=x.useState(""),[o,u]=x.useState(null),c=async p=>{if(p.preventDefault(),u(null),!a.trim()||!i){u(I.fillAll[e]);return}try{await t(a.trim(),i),window.location.assign(uu(e,"/cameras"))}catch(m){const h=m instanceof qe&&(m.code==="invalid_credentials"||m.status===401);u(h?I.invalidCredentials[e]:I.generic[e])}};return r.jsxs("form",{className:"popup__form form",onSubmit:c,children:[r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.emailLabel[e]}),r.jsx("input",{className:"form__input input-reset input-email login-modal-email",type:"email",name:"email",placeholder:"[email protected]",value:a,onChange:p=>s(p.currentTarget.value),autoComplete:"email"})]}),r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.passwordLabel[e]}),r.jsx(ao,{value:i,onChange:l,name:"password",autoComplete:"current-password"})]}),o&&r.jsx("p",{className:"form__error",children:o}),r.jsx("button",{className:"form__btn btn btn--red btn-reset",type:"submit",disabled:n,children:n?I.loginBtnLoading[e]:I.loginBtn[e]})]})},qj=()=>{const{lang:e}=V(),t=Ft(p=>p.requestPasswordReset),n=Ft(p=>p.isLoading),[a,s]=x.useState(""),[i,l]=x.useState(null),[o,u]=x.useState(!1),c=async p=>{if(p.preventDefault(),l(null),!a.trim()){l(I.fillAll[e]);return}try{await t(a.trim(),e),u(!0)}catch(m){Xs(m)?l(zh(m,e)):u(!0)}};return o?r.jsx("p",{className:"popup__text text",children:I.resetSubmitted[e]}):r.jsxs("form",{className:"popup__form form",onSubmit:c,children:[r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.emailLabel[e]}),r.jsx("input",{className:"form__input input-reset input-email",type:"email",name:"email",placeholder:"[email protected]",value:a,onChange:p=>s(p.currentTarget.value),autoComplete:"email"})]}),i&&r.jsx("p",{className:"form__error",children:i}),r.jsx("button",{className:"form__btn btn btn--red btn-reset",type:"submit",disabled:n,children:n?I.resetBtnLoading[e]:I.resetBtn[e]})]})},Dj=()=>{const{lang:e,openPopup:t}=V(),n=Ft(S=>S.register),a=Ft(S=>S.isLoading),[s,i]=x.useState(""),[l,o]=x.useState(""),[u,c]=x.useState(""),[p,m]=x.useState(null),[h,v]=x.useState(!1),j=async S=>{if(S.preventDefault(),m(null),!s.trim()||!l||!u){m(I.fillAll[e]);return}if(l.length<8){m(I.passwordMin[e]);return}if(l!==u){m(I.passwordsDontMatch[e]);return}try{await n(s.trim(),l,e),v(!0)}catch(f){Ph(f)?m(I.emailTaken[e]):Xs(f)?m(zh(f,e)):m(I.generic[e])}},b=r.jsx("div",{className:"popup__bottom",children:r.jsxs("p",{className:"popup__desc text",children:[I.haveAccount[e],r.jsx("a",{className:"popup-link",onClick:()=>t("popup-login"),children:I.loginTitle[e]})]})});return h?r.jsxs("div",{style:{marginTop:120,textAlign:"center"},children:[r.jsx("p",{className:"popup__text text",children:I.registerSuccess[e]}),b]}):r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"popup__top",children:[r.jsx("h2",{className:"popup__h2 h2 anim",children:I.signUpTitle[e]}),r.jsx("p",{className:"popup__text text",children:I.signUpSubtitle[e]})]}),r.jsxs("form",{className:"popup__form form",onSubmit:j,children:[r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.emailLabel[e]}),r.jsx("input",{className:"form__input input-reset input-email",type:"email",name:"email",placeholder:"[email protected]",value:s,onChange:S=>i(S.currentTarget.value),autoComplete:"email"})]}),r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.passwordLabel[e]}
67),r.jsx(ao,{value:l,onChange:o,name:"password",autoComplete:"new-password"})]}),r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.confirmPasswordLabel[e]}),r.jsx(ao,{value:u,onChange:c,name:"confirmPassword",autoComplete:"new-password"})]}),p&&r.jsx("p",{className:"form__error",children:p}),r.jsx("button",{className:"form__btn btn btn--red btn-reset",type:"submit",disabled:a,children:a?I.signUpSubmitting[e]:I.signUpTitle[e]})]}),b]})},Oj=()=>{const{lang:e}=V(),{m:t,dc:n,setDc:a,rtspLink:s,setRtspLink:i,email:l,setEmail:o,submitting:u,notice:c,handleSubmit:p,handleTest:m}=Nh();return r.jsxs("form",{className:"popup__form form form--broadcast",onSubmit:p,children:[r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.rtspLabel[e]}),r.jsxs("div",{style:{display:"flex",gap:8,alignItems:"stretch"},children:[r.jsx("input",{className:"form__input input-reset input-link",style:{flex:1,minWidth:0},type:"text",name:"rtspLink",placeholder:"rtsp://admin:[email protected]:554/main",value:s,onChange:h=>i(h.currentTarget.value)}),r.jsx("button",{className:"btn btn-reset",type:"button",style:{flex:"0 0 auto",width:"auto",padding:"0 22px",whiteSpace:"nowrap",border:"1px solid var(--accent)",background:"transparent",color:"var(--accent)"},onClick:m,children:t.test})]})]}),r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.emailLabel[e]}),r.jsx("input",{className:"form__input input-reset input-email",type:"email",name:"rtspEmail",placeholder:"[email protected]",value:l,onChange:h=>o(h.currentTarget.value),autoComplete:"email"})]}),r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.dcLabel[e]}),r.jsx(_h,{value:n,onChange:a})]}),r.jsx(Th,{notice:c}),r.jsx("button",{className:"form__btn btn btn--red btn-reset",type:"submit",disabled:u,children:u?t.submitting:t.submit})]})},Hj=()=>{const{lang:e,openPopup:t}=V();return r.jsxs(r.Fragment,{children:[r.jsxs(wt,{id:"popup-login",children:[r.jsxs("div",{className:"popup__top",children:[r.jsxs("h2",{className:"popup__h2 h2 anim",children:[I.loginTitle[e]," "]}),r.jsx("p",{className:"popup__text text",children:I.loginSubtitle[e]})]}),r.jsx(Aj,{}),r.jsxs("div",{className:"popup__bottom",children:[r.jsx("a",{className:"popup__reset popup-link",onClick:()=>t("popup-reset-password"),children:I.resetLink[e]}),r.jsxs("p",{className:"popup__desc text",children:[I.noAccount[e],r.jsx("a",{className:"popup-link",onClick:()=>t("popup-registration"),children:I.signUp[e]})]})]})]}),r.jsx(wt,{id:"popup-registration",children:r.jsx(Dj,{})}),r.jsxs(wt,{id:"popup-reset-password",children:[r.jsxs("div",{className:"popup__top",children:[r.jsx("h2",{className:"popup__h2 h2 anim",children:I.resetTitle[e]}),r.jsx("p",{className:"popup__text text",children:I.resetSubtitle[e]})]}),r.jsx(qj,{})]}),r.jsxs(wt,{id:"popup-broadcast",children:[r.jsx("h2",{className:"popup__h2 h2 anim",children:I.broadcastTitle[e]}),r.jsx(Oj,{}),r.jsx("div",{className:"popup__bottom",children:r.jsxs("p",{className:"popup__desc text",children:[I.agreePrefix[e],r.jsx("a",{href:"#!",children:I.serviceRules[e]})]})})]}),r.jsxs(wt,{id:"popup-video",back:!0,children:[r.jsx("h2",{className:"popup__h2 h2 anim",children:I.videoTitle[e]}),r.jsxs("form",{className:"popup__form form",onSubmit:n=>n.preventDefault(),children:[r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.videoPlayerLabel[e]}),r.jsx("div",{className:"form__video",children:r.jsx("div",{className:"modal-video-iframe",children:r.jsx("iframe",{width:"640",height:"480",frameBorder:"0",allowFullScreen:!0,title:"player"})})})]}),r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.htmlCodeLabel[e]}),r.jsxs("div",{className:"copy",children:[r.jsx("input",{className:"copy__input input-reset modal-video-iframe-input",type:"text",value:'<iframe src="https://rtsp.me/embed/waiting/" style="width:100%; aspect-ratio:4/3; border:0;" title="RTSP streaming player" allow="fullscreen; autoplay" allowfullscreen></iframe><p align="right">powered by <a href="https://rtsp.me" title="RTSP.ME - Free website RTSP video steaming service" target="_blank">rtsp.me</a></p>',readOnly:!0}),r.jsx("button",{className:"copy__btn btn-reset",type:"button"}),r.jsx("span",{className:"copy__message text",children:I.copied[e]})]})]}),r.jsxs("div",{className:"form__group",children:[r.jsx("label",{className:"form__label",children:I.permanentLinkLabel[e]}),r.jsxs("div",{className:"copy",children:[r.jsx("input",{className:"copy__input input-reset modal-video-link-input",type:"text",value:"rtsp://example.rtsp.me:9784/cameras/6/streaming/sub?authorization=Basic%20YWRtaW46&audio=0",readOnly:!0}),r.jsx("button",{className:"copy__btn btn-reset",type:"button"}),r.jsx("span",{className:"copy__message text",children:I.copied[e]})]})]}),r.jsx("a",{className:"form__btn btn btn--red",href:"#!",children:I.contactSupport[e]})]})]}),r.jsx(wt,{id:"popup-thanks",children:r.jsxs("div",{className:"popup__top",children:[r.jsx("h2",{className:"popup__h2 h2 anim",children:I.thanksTitle[e]}),r.jsx("p",{className:"popup__text text",children:I.thanksText[e]})]})}),r.jsxs(wt,{id:"popup-error",children:[r.jsx("div",{className:"popup__top popup__top--space",children:r.jsx("p",{className:"popup__text text modal-error-text",children:I.localIpError[e]})}),r.jsx("div",{className:"modal-error-btns",children:r.jsx("button",{className:"popup__btn btn btn--red close-popup modal
67-error-button",onClick:()=>t("popup-broadcast"),children:I.close[e]})})]}),r.jsx(Mj,{}),r.jsx(wt,{id:"popup-empty",children:r.jsx("a",{className:"popup__btn btn btn--red popup-link",onClick:()=>t("popup-broadcast"),children:I.button[e]})})]})},Uj=()=>{const[e,t]=x.useState(!1);return x.useEffect(()=>{const n=()=>t(window.scrollY>400);return window.addEventListener("scroll",n,{passive:!0}),n(),()=>window.removeEventListener("scroll",n)},[]),r.jsx("button",{className:`scrolltop btn-reset${e?" active":""}`,onClick:()=>window.scrollTo({top:0,behavior:"smooth"}),"aria-label":"Scroll to top",children:r.jsx("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:r.jsx("path",{d:"M23.9997 21.5999L17.9853 27.1247C17.7555 27.3508 17.4461 27.4774 17.1237 27.4774C16.8014 27.4774 16.492 27.3508 16.2621 27.1247C16.1497 27.0132 16.0604 26.8805 15.9995 26.7342C15.9385 26.588 15.9072 26.4311 15.9072 26.2727C15.9072 26.1143 15.9385 25.9575 15.9995 25.8112C16.0604 25.665 16.1497 25.5323 16.2621 25.4207L23.1357 18.6839C23.3649 18.4575 23.674 18.3305 23.9961 18.3305C24.3183 18.3305 24.6274 18.4575 24.8565 18.6839L31.7301 25.4207C31.8432 25.532 31.933 25.6646 31.9943 25.8109C32.0556 25.9571 32.0871 26.1141 32.0871 26.2727C32.0871 26.4313 32.0556 26.5883 31.9943 26.7346C31.933 26.8809 31.8432 27.0135 31.7301 27.1247C31.501 27.3512 31.1919 27.4782 30.8697 27.4782C30.5476 27.4782 30.2385 27.3512 30.0093 27.1247L23.9997 21.5999ZM0.959717 23.9999C0.959717 20.9743 1.55571 17.9783 2.71361 15.1829C3.87141 12.3876 5.56852 9.84769 7.70802 7.70822C9.84752 5.56875 12.3874 3.87164 15.1827 2.71377C17.9781 1.5559 20.9741 0.959961 23.9997 0.959961C36.7269 0.95996 47.0398 11.2751 47.0398 23.9999C47.0398 36.7247 36.7269 47.0399 23.9997 47.0399C17.8892 47.0399 12.0288 44.6125 7.70802 40.2917C3.38721 35.9708 0.959717 30.1105 0.959717 23.9999ZM44.0494 23.9999C44.0494 18.6821 41.9369 13.5821 38.1766 9.82191C34.4163 6.06164 29.3163 3.94916 23.9985 3.94916C18.6807 3.94916 13.5807 6.06164 9.82052 9.82191C6.06021 13.5821 3.94772 18.6821 3.94772 23.9999C3.94772 29.3177 6.06021 34.4177 9.82052 38.178C13.5807 41.9382 18.6807 44.0507 23.9985 44.0507C29.3163 44.0507 34.4163 41.9382 38.1766 38.178C41.9369 34.4177 44.0494 29.3177 44.0494 23.9999Z"})})})},Vj=()=>{x.useEffect(()=>{const e=Array.from(document.querySelectorAll(".anim:not(.show)"));if(e.length===0)return;const t=new IntersectionObserver(n=>{for(const a of n)a.isIntersecting&&(a.target.classList.add("show"),t.unobserve(a.target))},{threshold:.05,rootMargin:"0px 0px -5% 0px"});return e.forEach(n=>t.observe(n)),()=>t.disconnect()},[])},Bj=()=>(Vj(),r.jsxs("div",{className:"wrapper",children:[r.jsx(fy,{}),r.jsxs("main",{className:"main",children:[r.jsx(Ry,{}),r.jsx(Iy,{}),r.jsx(qy,{}),r.jsx($y,{}),r.jsx(nj,{}),r.jsx(oj,{}),r.jsx(Yy,{}),r.jsx(Jy,{}),r.jsx(tj,{}),r.jsx(cj,{}),r.jsx(mj,{}),r.jsx(hj,{}),r.jsx(gj,{}),r.jsx(vj,{})]}),r.jsx(jj,{}),r.jsx(Sj,{}),r.jsx(Hj,{}),r.jsx(Uj,{})]})),Wj=()=>r.jsx(Kv,{children:r.jsx(Bj,{})}),Ss=document.getElementById("root");if(!Ss)throw new Error('Root element with id "root" not found');const ad=r.jsx(Pd.StrictMode,{children:r.jsx(Rv,{children:r.jsx(lv,{children:r.jsx(Zp,{path:":lang",element:r.jsx(Wj,{})})})})});Ss.hasChildNodes()?Tp(Ss,ad):Ep(Ss).render(ad);

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