Files
Gnuboard7/public/build/core/template-engine.min.js
T
HeuJung dd8f9a49c4 fix(core,template): 편집기 image 위젯 값 형태·데이터 연결 값 보호·상속 노드 편집 표면 수정
공개 는 헤더 「로고 이미지」에 이미지를 지정하면 화면이 엑박이 되는 제보였다.
image 위젯은 배경용으로 설계되어 {url,size,repeat,position} 객체를 내보내는데, 값 슬롯이
하나뿐인 apply 경로(propValue/cssVar/단일 styleProp)가 그 객체를 그대로 props 에 기록해
소비 컴포넌트가 [object Object] 를 URL 로 받았다. 예외도 콘솔 오류도 서버 로그도 남지
않는다 — 깨진 이미지 요청은 SPA catch-all 때문에 404 조차 아니라 200(HTML)이고, 편집기
미리보기는 정상이라 조작 중에는 이상이 보이지 않는다.

방어선을 넷으로 세웠다. 쓰기 축약(공용 헬퍼 scalarizeImageValue 단일 지점, 게이트는 위젯
이름이며 값 형태 sniffing 이 아니다) · 읽기 역조립(표현식 문자열도 되감아 업로드 1클릭에
소실되지 않게 한다) · 런타임 방어(업그레이드 전 화면을 위해 템플릿 Img 가 url 을 해석하고
손상값이면 src 를 아예 붙이지 않는다) · 저장 데이터 백필(업그레이드 스텝). 런타임과 백필은
완전히 같은 엄격 판정식(키 집합 ⊆ 4키 AND url 보유)을 쓴다 — 엔진의 느슨한 판정식을 백필에
이식하면 레이아웃 전수에서 정상 props 2,219건을 파괴한다(실측).

전수조사에서 파생한 인접 결함 넷을 함께 고쳤다.

- number 위젯이 코어 레지스트리에 미등록이라 「탭 표시 게시판 수」 같은 컨트롤이
 「지원하지 않는 컨트롤」로 폴백해 편집 자체가 불가했다. nodeKey apply 는 coreProps 가
 선언만 하고 엔진 switch 에 case 가 없어 무음 no-op 이었다.
- 상속(base)·주입(extension) 노드 중 바인딩을 가진 것이 data_bound 로 분류돼 편집이
 열려 있었는데, 저장 마스킹이 그 노드를 통째로 폐기하므로 편집분이 오류도 경고도 없이
 사라졌다(저장은 200 이고 history 는 clear 돼 undo 도 불가). 출처 잠금이 항상 우선하도록
 판정 순서를 통일하고, 단일 판정 헬퍼로 인라인 편집·복제·Delete·잘라내기·드래그 commit
 까지 전 표면을 같은 기준으로 막았다.
- prop 자리의 표현식 값을 위젯이 해석하지 못해 빈 컨트롤로 보이고, 조작하는 순간 환경설정
 과의 연결이 소리 없이 끊겼다. 판정·배지·잠금·해제·복구를 ControlRenderer 공용 게이트
 한 곳으로 올려 신규 위젯에도 자동 적용되게 했다. 「직접 지정으로 바꾸기」에는 「되돌리기」를
 동반해 편도가 되지 않게 한다.
- 편집기 모드에서 updateTemplateData 가 빈 레이아웃으로 같은 reactRoot 에 두 번째 커밋을
 걸어 편집기 트리를 통째로 제거했다. renderTemplate 의 편집기 분기가 비동기라 부팅 중
 setGlobalState 가 그 커밋 뒤에 도착할 때만 발현하는 경합이었다.
2026-09-08 17:20:01 +09:00

277 lines
800 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var wR=Object.defineProperty;var CR=(tn,na,ra)=>na in tn?wR(tn,na,{enumerable:!0,configurable:!0,writable:!0,value:ra}):tn[na]=ra;var M=(tn,na,ra)=>CR(tn,typeof na!="symbol"?na+"":na,ra);(function(tn){"use strict";function na(s,e){for(var n=0;n<e.length;n++){const r=e[n];if(typeof r!="string"&&!Array.isArray(r)){for(const i in r)if(i!=="default"&&!(i in s)){const l=Object.getOwnPropertyDescriptor(r,i);l&&Object.defineProperty(s,i,l.get?l:{enumerable:!0,get:()=>r[i]})}}}return Object.freeze(Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}))}function ra(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var Ed={exports:{}},Ye={};/**
* @license React
* react.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var $g;function i0(){if($g)return Ye;$g=1;var s=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),c=Symbol.for("react.context"),d=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),v=Symbol.iterator;function S(H){return H===null||typeof H!="object"?null:(H=v&&H[v]||H["@@iterator"],typeof H=="function"?H:null)}var _={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x=Object.assign,A={};function D(H,T,fe){this.props=H,this.context=T,this.refs=A,this.updater=fe||_}D.prototype.isReactComponent={},D.prototype.setState=function(H,T){if(typeof H!="object"&&typeof H!="function"&&H!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,H,T,"setState")},D.prototype.forceUpdate=function(H){this.updater.enqueueForceUpdate(this,H,"forceUpdate")};function O(){}O.prototype=D.prototype;function k(H,T,fe){this.props=H,this.context=T,this.refs=A,this.updater=fe||_}var L=k.prototype=new O;L.constructor=k,x(L,D.prototype),L.isPureReactComponent=!0;var B=Array.isArray;function q(){}var z={H:null,A:null,T:null,S:null},W=Object.prototype.hasOwnProperty;function de(H,T,fe){var he=fe.ref;return{$$typeof:s,type:H,key:T,ref:he!==void 0?he:null,props:fe}}function _e(H,T){return de(H.type,T,H.props)}function Se(H){return typeof H=="object"&&H!==null&&H.$$typeof===s}function je(H){var T={"=":"=0",":":"=2"};return"$"+H.replace(/[=:]/g,function(fe){return T[fe]})}var Fe=/\/+/g;function ze(H,T){return typeof H=="object"&&H!==null&&H.key!=null?je(""+H.key):T.toString(36)}function Et(H){switch(H.status){case"fulfilled":return H.value;case"rejected":throw H.reason;default:switch(typeof H.status=="string"?H.then(q,q):(H.status="pending",H.then(function(T){H.status==="pending"&&(H.status="fulfilled",H.value=T)},function(T){H.status==="pending"&&(H.status="rejected",H.reason=T)})),H.status){case"fulfilled":return H.value;case"rejected":throw H.reason}}throw H}function Q(H,T,fe,he,Ae){var se=typeof H;(se==="undefined"||se==="boolean")&&(H=null);var ge=!1;if(H===null)ge=!0;else switch(se){case"bigint":case"string":case"number":ge=!0;break;case"object":switch(H.$$typeof){case s:case e:ge=!0;break;case m:return ge=H._init,Q(ge(H._payload),T,fe,he,Ae)}}if(ge)return Ae=Ae(H),ge=he===""?"."+ze(H,0):he,B(Ae)?(fe="",ge!=null&&(fe=ge.replace(Fe,"$&/")+"/"),Q(Ae,T,fe,"",function(Ie){return Ie})):Ae!=null&&(Se(Ae)&&(Ae=_e(Ae,fe+(Ae.key==null||H&&H.key===Ae.key?"":(""+Ae.key).replace(Fe,"$&/")+"/")+ge)),T.push(Ae)),1;ge=0;var $e=he===""?".":he+":";if(B(H))for(var Te=0;Te<H.length;Te++)he=H[Te],se=$e+ze(he,Te),ge+=Q(he,T,fe,se,Ae);else if(Te=S(H),typeof Te=="function")for(H=Te.call(H),Te=0;!(he=H.next()).done;)he=he.value,se=$e+ze(he,Te++),ge+=Q(he,T,fe,se,Ae);else if(se==="object"){if(typeof H.then=="function")return Q(Et(H),T,fe,he,Ae);throw T=String(H),Error("Objects are not valid as a React child (found: "+(T==="[object Object]"?"object with keys {"+Object.keys(H).join(", ")+"}":T)+"). If you meant to render a collection of children, use an array instead.")}return ge}function ue(H,T,fe){if(H==null)return H;var he=[],Ae=0;return Q(H,he,"","",function(se){return T.call(fe,se,Ae++)}),he}function De(H){if(H._status===-1){var T=H._result;T=T(),T.then(function(fe){(H._status===0||H._status===-1)&&(H._status=1,H._result=fe)},function(fe){(H._status===0||H._status===-1)&&(H._status=2,H._result=fe)}),H._status===-1&&(H._status=0,H._result=T)}if(H._status===1)return H._result.default;throw H._result}var ee=typeof reportError=="function"?reportError:function(H){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var T=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof H=="object"&&H!==null&&typeof H.message=="string"?String(H.message):String(H),error:H});if(!window.dispatchEvent(T))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",H);return}console.error(H)},me={map:ue,forEach:function(H,T,fe){ue(H,function(){T.apply(this,arguments)},fe)},count:function(H){var T=0;return ue(H,function(){T++}),T},toArray:function(H){return ue(H,function(T){return T})||[]},only:function(H){if(!Se(H))throw Error("React.Children.only expected to receive a single React element child.");return H}};return Ye.Activity=y,Ye.Children=me,Ye.Component=D,Ye.Fragment=n,Ye.Profiler=i,Ye.PureComponent=k,Ye.StrictMode=r,Ye.Suspense=f,Ye.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=z,Ye.__COMPILER_RUNTIME={__proto__:null,c:function(H){return z.H.useMemoCache(H)}},Ye.cache=function(H){return function(){return H.apply(null,arguments)}},Ye.cacheSignal=function(){return null},Ye.cloneElement=function(H,T,fe){if(H==null)throw Error("The argument must be a React element, but you passed "+H+".");var he=x({},H.props),Ae=H.key;if(T!=null)for(se in T.key!==void 0&&(Ae=""+T.key),T)!W.call(T,se)||se==="key"||se==="__self"||se==="__source"||se==="ref"&&T.ref===void 0||(he[se]=T[se]);var se=arguments.length-2;if(se===1)he.children=fe;else if(1<se){for(var ge=Array(se),$e=0;$e<se;$e++)ge[$e]=arguments[$e+2];he.children=ge}return de(H.type,Ae,he)},Ye.createContext=function(H){return H={$$typeof:c,_currentValue:H,_currentValue2:H,_threadCount:0,Provider:null,Consumer:null},H.Provider=H,H.Consumer={$$typeof:l,_context:H},H},Ye.createElement=function(H,T,fe){var he,Ae={},se=null;if(T!=null)for(he in T.key!==void 0&&(se=""+T.key),T)W.call(T,he)&&he!=="key"&&he!=="__self"&&he!=="__source"&&(Ae[he]=T[he]);var ge=arguments.length-2;if(ge===1)Ae.children=fe;else if(1<ge){for(var $e=Array(ge),Te=0;Te<ge;Te++)$e[Te]=arguments[Te+2];Ae.children=$e}if(H&&H.defaultProps)for(he in ge=H.defaultProps,ge)Ae[he]===void 0&&(Ae[he]=ge[he]);return de(H,se,Ae)},Ye.createRef=function(){return{current:null}},Ye.forwardRef=function(H){return{$$typeof:d,render:H}},Ye.isValidElement=Se,Ye.lazy=function(H){return{$$typeof:m,_payload:{_status:-1,_result:H},_init:De}},Ye.memo=function(H,T){return{$$typeof:h,type:H,compare:T===void 0?null:T}},Ye.startTransition=function(H){var T=z.T,fe={};z.T=fe;try{var he=H(),Ae=z.S;Ae!==null&&Ae(fe,he),typeof he=="object"&&he!==null&&typeof he.then=="function"&&he.then(q,ee)}catch(se){ee(se)}finally{T!==null&&fe.types!==null&&(T.types=fe.types),z.T=T}},Ye.unstable_useCacheRefresh=function(){return z.H.useCacheRefresh()},Ye.use=function(H){return z.H.use(H)},Ye.useActionState=function(H,T,fe){return z.H.useActionState(H,T,fe)},Ye.useCallback=function(H,T){return z.H.useCallback(H,T)},Ye.useContext=function(H){return z.H.useContext(H)},Ye.useDebugValue=function(){},Ye.useDeferredValue=function(H,T){return z.H.useDeferredValue(H,T)},Ye.useEffect=function(H,T){return z.H.useEffect(H,T)},Ye.useEffectEvent=function(H){return z.H.useEffectEvent(H)},Ye.useId=function(){return z.H.useId()},Ye.useImperativeHandle=function(H,T,fe){return z.H.useImperativeHandle(H,T,fe)},Ye.useInsertionEffect=function(H,T){return z.H.useInsertionEffect(H,T)},Ye.useLayoutEffect=function(H,T){return z.H.useLayoutEffect(H,T)},Ye.useMemo=function(H,T){return z.H.useMemo(H,T)},Ye.useOptimistic=function(H,T){return z.H.useOptimistic(H,T)},Ye.useReducer=function(H,T,fe){return z.H.useReducer(H,T,fe)},Ye.useRef=function(H){return z.H.useRef(H)},Ye.useState=function(H){return z.H.useState(H)},Ye.useSyncExternalStore=function(H,T,fe){return z.H.useSyncExternalStore(H,T,fe)},Ye.useTransition=function(){return z.H.useTransition()},Ye.version="19.2.0",Ye}var Mg;function _d(){return Mg||(Mg=1,Ed.exports=i0()),Ed.exports}var N=_d();const Xe=ra(N);var Ad={exports:{}},fo={},xd={exports:{}},Td={};/**
* @license React
* scheduler.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Ng;function s0(){return Ng||(Ng=1,(function(s){function e(Q,ue){var De=Q.length;Q.push(ue);e:for(;0<De;){var ee=De-1>>>1,me=Q[ee];if(0<i(me,ue))Q[ee]=ue,Q[De]=me,De=ee;else break e}}function n(Q){return Q.length===0?null:Q[0]}function r(Q){if(Q.length===0)return null;var ue=Q[0],De=Q.pop();if(De!==ue){Q[0]=De;e:for(var ee=0,me=Q.length,H=me>>>1;ee<H;){var T=2*(ee+1)-1,fe=Q[T],he=T+1,Ae=Q[he];if(0>i(fe,De))he<me&&0>i(Ae,fe)?(Q[ee]=Ae,Q[he]=De,ee=he):(Q[ee]=fe,Q[T]=De,ee=T);else if(he<me&&0>i(Ae,De))Q[ee]=Ae,Q[he]=De,ee=he;else break e}}return ue}function i(Q,ue){var De=Q.sortIndex-ue.sortIndex;return De!==0?De:Q.id-ue.id}if(s.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var l=performance;s.unstable_now=function(){return l.now()}}else{var c=Date,d=c.now();s.unstable_now=function(){return c.now()-d}}var f=[],h=[],m=1,y=null,v=3,S=!1,_=!1,x=!1,A=!1,D=typeof setTimeout=="function"?setTimeout:null,O=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;function L(Q){for(var ue=n(h);ue!==null;){if(ue.callback===null)r(h);else if(ue.startTime<=Q)r(h),ue.sortIndex=ue.expirationTime,e(f,ue);else break;ue=n(h)}}function B(Q){if(x=!1,L(Q),!_)if(n(f)!==null)_=!0,q||(q=!0,je());else{var ue=n(h);ue!==null&&Et(B,ue.startTime-Q)}}var q=!1,z=-1,W=5,de=-1;function _e(){return A?!0:!(s.unstable_now()-de<W)}function Se(){if(A=!1,q){var Q=s.unstable_now();de=Q;var ue=!0;try{e:{_=!1,x&&(x=!1,O(z),z=-1),S=!0;var De=v;try{t:{for(L(Q),y=n(f);y!==null&&!(y.expirationTime>Q&&_e());){var ee=y.callback;if(typeof ee=="function"){y.callback=null,v=y.priorityLevel;var me=ee(y.expirationTime<=Q);if(Q=s.unstable_now(),typeof me=="function"){y.callback=me,L(Q),ue=!0;break t}y===n(f)&&r(f),L(Q)}else r(f);y=n(f)}if(y!==null)ue=!0;else{var H=n(h);H!==null&&Et(B,H.startTime-Q),ue=!1}}break e}finally{y=null,v=De,S=!1}ue=void 0}}finally{ue?je():q=!1}}}var je;if(typeof k=="function")je=function(){k(Se)};else if(typeof MessageChannel<"u"){var Fe=new MessageChannel,ze=Fe.port2;Fe.port1.onmessage=Se,je=function(){ze.postMessage(null)}}else je=function(){D(Se,0)};function Et(Q,ue){z=D(function(){Q(s.unstable_now())},ue)}s.unstable_IdlePriority=5,s.unstable_ImmediatePriority=1,s.unstable_LowPriority=4,s.unstable_NormalPriority=3,s.unstable_Profiling=null,s.unstable_UserBlockingPriority=2,s.unstable_cancelCallback=function(Q){Q.callback=null},s.unstable_forceFrameRate=function(Q){0>Q||125<Q?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):W=0<Q?Math.floor(1e3/Q):5},s.unstable_getCurrentPriorityLevel=function(){return v},s.unstable_next=function(Q){switch(v){case 1:case 2:case 3:var ue=3;break;default:ue=v}var De=v;v=ue;try{return Q()}finally{v=De}},s.unstable_requestPaint=function(){A=!0},s.unstable_runWithPriority=function(Q,ue){switch(Q){case 1:case 2:case 3:case 4:case 5:break;default:Q=3}var De=v;v=Q;try{return ue()}finally{v=De}},s.unstable_scheduleCallback=function(Q,ue,De){var ee=s.unstable_now();switch(typeof De=="object"&&De!==null?(De=De.delay,De=typeof De=="number"&&0<De?ee+De:ee):De=ee,Q){case 1:var me=-1;break;case 2:me=250;break;case 5:me=1073741823;break;case 4:me=1e4;break;default:me=5e3}return me=De+me,Q={id:m++,callback:ue,priorityLevel:Q,startTime:De,expirationTime:me,sortIndex:-1},De>ee?(Q.sortIndex=De,e(h,Q),n(f)===null&&Q===n(h)&&(x?(O(z),z=-1):x=!0,Et(B,De-ee))):(Q.sortIndex=me,e(f,Q),_||S||(_=!0,q||(q=!0,je()))),Q},s.unstable_shouldYield=_e,s.unstable_wrapCallback=function(Q){var ue=v;return function(){var De=v;v=ue;try{return Q.apply(this,arguments)}finally{v=De}}}})(Td)),Td}var Ig;function o0(){return Ig||(Ig=1,xd.exports=s0()),xd.exports}var kd={exports:{}},An={};/**
* @license React
* react-dom.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var jg;function l0(){if(jg)return An;jg=1;var s=_d();function e(f){var h="https://react.dev/errors/"+f;if(1<arguments.length){h+="?args[]="+encodeURIComponent(arguments[1]);for(var m=2;m<arguments.length;m++)h+="&args[]="+encodeURIComponent(arguments[m])}return"Minified React error #"+f+"; visit "+h+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function n(){}var r={d:{f:n,r:function(){throw Error(e(522))},D:n,C:n,L:n,m:n,X:n,S:n,M:n},p:0,findDOMNode:null},i=Symbol.for("react.portal");function l(f,h,m){var y=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:i,key:y==null?null:""+y,children:f,containerInfo:h,implementation:m}}var c=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function d(f,h){if(f==="font")return"";if(typeof h=="string")return h==="use-credentials"?h:""}return An.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=r,An.createPortal=function(f,h){var m=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!h||h.nodeType!==1&&h.nodeType!==9&&h.nodeType!==11)throw Error(e(299));return l(f,h,null,m)},An.flushSync=function(f){var h=c.T,m=r.p;try{if(c.T=null,r.p=2,f)return f()}finally{c.T=h,r.p=m,r.d.f()}},An.preconnect=function(f,h){typeof f=="string"&&(h?(h=h.crossOrigin,h=typeof h=="string"?h==="use-credentials"?h:"":void 0):h=null,r.d.C(f,h))},An.prefetchDNS=function(f){typeof f=="string"&&r.d.D(f)},An.preinit=function(f,h){if(typeof f=="string"&&h&&typeof h.as=="string"){var m=h.as,y=d(m,h.crossOrigin),v=typeof h.integrity=="string"?h.integrity:void 0,S=typeof h.fetchPriority=="string"?h.fetchPriority:void 0;m==="style"?r.d.S(f,typeof h.precedence=="string"?h.precedence:void 0,{crossOrigin:y,integrity:v,fetchPriority:S}):m==="script"&&r.d.X(f,{crossOrigin:y,integrity:v,fetchPriority:S,nonce:typeof h.nonce=="string"?h.nonce:void 0})}},An.preinitModule=function(f,h){if(typeof f=="string")if(typeof h=="object"&&h!==null){if(h.as==null||h.as==="script"){var m=d(h.as,h.crossOrigin);r.d.M(f,{crossOrigin:m,integrity:typeof h.integrity=="string"?h.integrity:void 0,nonce:typeof h.nonce=="string"?h.nonce:void 0})}}else h==null&&r.d.M(f)},An.preload=function(f,h){if(typeof f=="string"&&typeof h=="object"&&h!==null&&typeof h.as=="string"){var m=h.as,y=d(m,h.crossOrigin);r.d.L(f,m,{crossOrigin:y,integrity:typeof h.integrity=="string"?h.integrity:void 0,nonce:typeof h.nonce=="string"?h.nonce:void 0,type:typeof h.type=="string"?h.type:void 0,fetchPriority:typeof h.fetchPriority=="string"?h.fetchPriority:void 0,referrerPolicy:typeof h.referrerPolicy=="string"?h.referrerPolicy:void 0,imageSrcSet:typeof h.imageSrcSet=="string"?h.imageSrcSet:void 0,imageSizes:typeof h.imageSizes=="string"?h.imageSizes:void 0,media:typeof h.media=="string"?h.media:void 0})}},An.preloadModule=function(f,h){if(typeof f=="string")if(h){var m=d(h.as,h.crossOrigin);r.d.m(f,{as:typeof h.as=="string"&&h.as!=="script"?h.as:void 0,crossOrigin:m,integrity:typeof h.integrity=="string"?h.integrity:void 0})}else r.d.m(f)},An.requestFormReset=function(f){r.d.r(f)},An.unstable_batchedUpdates=function(f,h){return f(h)},An.useFormState=function(f,h,m){return c.H.useFormState(f,h,m)},An.useFormStatus=function(){return c.H.useHostTransitionStatus()},An.version="19.2.0",An}var Hg;function zg(){if(Hg)return kd.exports;Hg=1;function s(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(s)}catch(e){console.error(e)}}return s(),kd.exports=l0(),kd.exports}/**
* @license React
* react-dom-client.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Pg;function c0(){if(Pg)return fo;Pg=1;var s=o0(),e=_d(),n=zg();function r(t){var a="https://react.dev/errors/"+t;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var o=2;o<arguments.length;o++)a+="&args[]="+encodeURIComponent(arguments[o])}return"Minified React error #"+t+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function i(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function l(t){var a=t,o=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,(a.flags&4098)!==0&&(o=a.return),t=a.return;while(t)}return a.tag===3?o:null}function c(t){if(t.tag===13){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function d(t){if(t.tag===31){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function f(t){if(l(t)!==t)throw Error(r(188))}function h(t){var a=t.alternate;if(!a){if(a=l(t),a===null)throw Error(r(188));return a!==t?null:t}for(var o=t,u=a;;){var p=o.return;if(p===null)break;var g=p.alternate;if(g===null){if(u=p.return,u!==null){o=u;continue}break}if(p.child===g.child){for(g=p.child;g;){if(g===o)return f(p),t;if(g===u)return f(p),a;g=g.sibling}throw Error(r(188))}if(o.return!==u.return)o=p,u=g;else{for(var w=!1,R=p.child;R;){if(R===o){w=!0,o=p,u=g;break}if(R===u){w=!0,u=p,o=g;break}R=R.sibling}if(!w){for(R=g.child;R;){if(R===o){w=!0,o=g,u=p;break}if(R===u){w=!0,u=g,o=p;break}R=R.sibling}if(!w)throw Error(r(189))}}if(o.alternate!==u)throw Error(r(190))}if(o.tag!==3)throw Error(r(188));return o.stateNode.current===o?t:a}function m(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t;for(t=t.child;t!==null;){if(a=m(t),a!==null)return a;t=t.sibling}return null}var y=Object.assign,v=Symbol.for("react.element"),S=Symbol.for("react.transitional.element"),_=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),A=Symbol.for("react.strict_mode"),D=Symbol.for("react.profiler"),O=Symbol.for("react.consumer"),k=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),B=Symbol.for("react.suspense"),q=Symbol.for("react.suspense_list"),z=Symbol.for("react.memo"),W=Symbol.for("react.lazy"),de=Symbol.for("react.activity"),_e=Symbol.for("react.memo_cache_sentinel"),Se=Symbol.iterator;function je(t){return t===null||typeof t!="object"?null:(t=Se&&t[Se]||t["@@iterator"],typeof t=="function"?t:null)}var Fe=Symbol.for("react.client.reference");function ze(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===Fe?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case x:return"Fragment";case D:return"Profiler";case A:return"StrictMode";case B:return"Suspense";case q:return"SuspenseList";case de:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case _:return"Portal";case k:return t.displayName||"Context";case O:return(t._context.displayName||"Context")+".Consumer";case L:var a=t.render;return t=t.displayName,t||(t=a.displayName||a.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case z:return a=t.displayName||null,a!==null?a:ze(t.type)||"Memo";case W:a=t._payload,t=t._init;try{return ze(t(a))}catch{}}return null}var Et=Array.isArray,Q=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ue=n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,De={pending:!1,data:null,method:null,action:null},ee=[],me=-1;function H(t){return{current:t}}function T(t){0>me||(t.current=ee[me],ee[me]=null,me--)}function fe(t,a){me++,ee[me]=t.current,t.current=a}var he=H(null),Ae=H(null),se=H(null),ge=H(null);function $e(t,a){switch(fe(se,a),fe(Ae,t),fe(he,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?Aw(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=Aw(a),t=xw(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}T(he),fe(he,t)}function Te(){T(he),T(Ae),T(se)}function Ie(t){t.memoizedState!==null&&fe(ge,t);var a=he.current,o=xw(a,t.type);a!==o&&(fe(Ae,t),fe(he,o))}function xt(t){Ae.current===t&&(T(he),T(Ae)),ge.current===t&&(T(ge),Yl._currentValue=De)}var rt,gt;function at(t){if(rt===void 0)try{throw Error()}catch(o){var a=o.stack.trim().match(/\n( *(at )?)/);rt=a&&a[1]||"",gt=-1<o.stack.indexOf(`
at`)?" (<anonymous>)":-1<o.stack.indexOf("@")?"@unknown:0:0":""}return`
`+rt+t+gt}var Yt=!1;function Ht(t,a){if(!t||Yt)return"";Yt=!0;var o=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var u={DetermineComponentFrameRoot:function(){try{if(a){var le=function(){throw Error()};if(Object.defineProperty(le.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(le,[])}catch(te){var J=te}Reflect.construct(t,[],le)}else{try{le.call()}catch(te){J=te}t.call(le.prototype)}}else{try{throw Error()}catch(te){J=te}(le=t())&&typeof le.catch=="function"&&le.catch(function(){})}}catch(te){if(te&&J&&typeof te.stack=="string")return[te.stack,J.stack]}return[null,null]}};u.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var p=Object.getOwnPropertyDescriptor(u.DetermineComponentFrameRoot,"name");p&&p.configurable&&Object.defineProperty(u.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var g=u.DetermineComponentFrameRoot(),w=g[0],R=g[1];if(w&&R){var P=w.split(`
`),X=R.split(`
`);for(p=u=0;u<P.length&&!P[u].includes("DetermineComponentFrameRoot");)u++;for(;p<X.length&&!X[p].includes("DetermineComponentFrameRoot");)p++;if(u===P.length||p===X.length)for(u=P.length-1,p=X.length-1;1<=u&&0<=p&&P[u]!==X[p];)p--;for(;1<=u&&0<=p;u--,p--)if(P[u]!==X[p]){if(u!==1||p!==1)do if(u--,p--,0>p||P[u]!==X[p]){var re=`
`+P[u].replace(" at new "," at ");return t.displayName&&re.includes("<anonymous>")&&(re=re.replace("<anonymous>",t.displayName)),re}while(1<=u&&0<=p);break}}}finally{Yt=!1,Error.prepareStackTrace=o}return(o=t?t.displayName||t.name:"")?at(o):""}function bt(t,a){switch(t.tag){case 26:case 27:case 5:return at(t.type);case 16:return at("Lazy");case 13:return t.child!==a&&a!==null?at("Suspense Fallback"):at("Suspense");case 19:return at("SuspenseList");case 0:case 15:return Ht(t.type,!1);case 11:return Ht(t.type.render,!1);case 1:return Ht(t.type,!0);case 31:return at("Activity");default:return""}}function qe(t){try{var a="",o=null;do a+=bt(t,o),o=t,t=t.return;while(t);return a}catch(u){return`
Error generating stack: `+u.message+`
`+u.stack}}var mt=Object.prototype.hasOwnProperty,Dt=s.unstable_scheduleCallback,zt=s.unstable_cancelCallback,kn=s.unstable_shouldYield,hr=s.unstable_requestPaint,Ot=s.unstable_now,Mi=s.unstable_getCurrentPriorityLevel,ua=s.unstable_ImmediatePriority,bn=s.unstable_UserBlockingPriority,Mn=s.unstable_NormalPriority,it=s.unstable_LowPriority,Un=s.unstable_IdlePriority,vn=s.log,da=s.unstable_setDisableYieldValue,pr=null,un=null;function Rn(t){if(typeof vn=="function"&&da(t),un&&typeof un.setStrictMode=="function")try{un.setStrictMode(pr,t)}catch{}}var dn=Math.clz32?Math.clz32:ce,V=Math.log,ie=Math.LN2;function ce(t){return t>>>=0,t===0?32:31-(V(t)/ie|0)|0}var Z=256,ve=262144,pe=4194304;function Ee(t){var a=t&42;if(a!==0)return a;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function xe(t,a,o){var u=t.pendingLanes;if(u===0)return 0;var p=0,g=t.suspendedLanes,w=t.pingedLanes;t=t.warmLanes;var R=u&134217727;return R!==0?(u=R&~g,u!==0?p=Ee(u):(w&=R,w!==0?p=Ee(w):o||(o=R&~t,o!==0&&(p=Ee(o))))):(R=u&~g,R!==0?p=Ee(R):w!==0?p=Ee(w):o||(o=u&~t,o!==0&&(p=Ee(o)))),p===0?0:a!==0&&a!==p&&(a&g)===0&&(g=p&-p,o=a&-a,g>=o||g===32&&(o&4194048)!==0)?a:p}function Ke(t,a){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&a)===0}function ke(t,a){switch(t){case 1:case 2:case 4:case 8:case 64:return a+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Me(){var t=pe;return pe<<=1,(pe&62914560)===0&&(pe=4194304),t}function Re(t){for(var a=[],o=0;31>o;o++)a.push(t);return a}function tt(t,a){t.pendingLanes|=a,a!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Pe(t,a,o,u,p,g){var w=t.pendingLanes;t.pendingLanes=o,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=o,t.entangledLanes&=o,t.errorRecoveryDisabledLanes&=o,t.shellSuspendCounter=0;var R=t.entanglements,P=t.expirationTimes,X=t.hiddenUpdates;for(o=w&~o;0<o;){var re=31-dn(o),le=1<<re;R[re]=0,P[re]=-1;var J=X[re];if(J!==null)for(X[re]=null,re=0;re<J.length;re++){var te=J[re];te!==null&&(te.lane&=-536870913)}o&=~le}u!==0&&Ve(t,u,0),g!==0&&p===0&&t.tag!==0&&(t.suspendedLanes|=g&~(w&~a))}function Ve(t,a,o){t.pendingLanes|=a,t.suspendedLanes&=~a;var u=31-dn(a);t.entangledLanes|=a,t.entanglements[u]=t.entanglements[u]|1073741824|o&261930}function Ce(t,a){var o=t.entangledLanes|=a;for(t=t.entanglements;o;){var u=31-dn(o),p=1<<u;p&a|t[u]&a&&(t[u]|=a),o&=~p}}function He(t,a){var o=a&-a;return o=(o&42)!==0?1:nt(o),(o&(t.suspendedLanes|a))!==0?0:o}function nt(t){switch(t){case 2:t=1;break;case 8:t=4;break;case 32:t=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:t=128;break;case 268435456:t=134217728;break;default:t=0}return t}function Lt(t){return t&=-t,2<t?8<t?(t&134217727)!==0?32:268435456:8:2}function Bt(){var t=ue.p;return t!==0?t:(t=window.event,t===void 0?32:Yw(t.type))}function Nn(t,a){var o=ue.p;try{return ue.p=t,a()}finally{ue.p=o}}var Gt=Math.random().toString(36).slice(2),Ft="__reactFiber$"+Gt,Dn="__reactProps$"+Gt,Ua="__reactContainer$"+Gt,nl="__reactEvents$"+Gt,gh="__reactListeners$"+Gt,Jc="__reactHandles$"+Gt,Yr="__reactResources$"+Gt,Ni="__reactMarker$"+Gt;function rl(t){delete t[Ft],delete t[Dn],delete t[nl],delete t[gh],delete t[Jc]}function Ba(t){var a=t[Ft];if(a)return a;for(var o=t.parentNode;o;){if(a=o[Ua]||o[Ft]){if(o=a.alternate,a.child!==null||o!==null&&o.child!==null)for(t=$w(t);t!==null;){if(o=t[Ft])return o;t=$w(t)}return a}t=o,o=t.parentNode}return null}function Xr(t){if(t=t[Ft]||t[Ua]){var a=t.tag;if(a===5||a===6||a===13||a===31||a===26||a===27||a===3)return t}return null}function fa(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t.stateNode;throw Error(r(33))}function qa(t){var a=t[Yr];return a||(a=t[Yr]={hoistableStyles:new Map,hoistableScripts:new Map}),a}function nn(t){t[Ni]=!0}var Qc=new Set,Zc={};function Mr(t,a){Ga(t,a),Ga(t+"Capture",a)}function Ga(t,a){for(Zc[t]=a,t=0;t<a.length;t++)Qc.add(a[t])}var mh=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),eu={},tu={};function yh(t){return mt.call(tu,t)?!0:mt.call(eu,t)?!1:mh.test(t)?tu[t]=!0:(eu[t]=!0,!1)}function Bn(t,a,o){if(yh(a))if(o===null)t.removeAttribute(a);else{switch(typeof o){case"undefined":case"function":case"symbol":t.removeAttribute(a);return;case"boolean":var u=a.toLowerCase().slice(0,5);if(u!=="data-"&&u!=="aria-"){t.removeAttribute(a);return}}t.setAttribute(a,""+o)}}function Ii(t,a,o){if(o===null)t.removeAttribute(a);else{switch(typeof o){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(a);return}t.setAttribute(a,""+o)}}function Sn(t,a,o,u){if(u===null)t.removeAttribute(o);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(o);return}t.setAttributeNS(a,o,""+u)}}function On(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function nu(t){var a=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(a==="checkbox"||a==="radio")}function bh(t,a,o){var u=Object.getOwnPropertyDescriptor(t.constructor.prototype,a);if(!t.hasOwnProperty(a)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var p=u.get,g=u.set;return Object.defineProperty(t,a,{configurable:!0,get:function(){return p.call(this)},set:function(w){o=""+w,g.call(this,w)}}),Object.defineProperty(t,a,{enumerable:u.enumerable}),{getValue:function(){return o},setValue:function(w){o=""+w},stopTracking:function(){t._valueTracker=null,delete t[a]}}}}function al(t){if(!t._valueTracker){var a=nu(t)?"checked":"value";t._valueTracker=bh(t,a,""+t[a])}}function ru(t){if(!t)return!1;var a=t._valueTracker;if(!a)return!0;var o=a.getValue(),u="";return t&&(u=nu(t)?t.checked?"true":"false":t.value),t=u,t!==o?(a.setValue(t),!0):!1}function Fa(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var vh=/[\n"\\]/g;function qn(t){return t.replace(vh,function(a){return"\\"+a.charCodeAt(0).toString(16)+" "})}function Os(t,a,o,u,p,g,w,R){t.name="",w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"?t.type=w:t.removeAttribute("type"),a!=null?w==="number"?(a===0&&t.value===""||t.value!=a)&&(t.value=""+On(a)):t.value!==""+On(a)&&(t.value=""+On(a)):w!=="submit"&&w!=="reset"||t.removeAttribute("value"),a!=null?ha(t,w,On(a)):o!=null?ha(t,w,On(o)):u!=null&&t.removeAttribute("value"),p==null&&g!=null&&(t.defaultChecked=!!g),p!=null&&(t.checked=p&&typeof p!="function"&&typeof p!="symbol"),R!=null&&typeof R!="function"&&typeof R!="symbol"&&typeof R!="boolean"?t.name=""+On(R):t.removeAttribute("name")}function ji(t,a,o,u,p,g,w,R){if(g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"&&(t.type=g),a!=null||o!=null){if(!(g!=="submit"&&g!=="reset"||a!=null)){al(t);return}o=o!=null?""+On(o):"",a=a!=null?""+On(a):o,R||a===t.value||(t.value=a),t.defaultValue=a}u=u??p,u=typeof u!="function"&&typeof u!="symbol"&&!!u,t.checked=R?t.checked:!!u,t.defaultChecked=!!u,w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"&&(t.name=w),al(t)}function ha(t,a,o){a==="number"&&Fa(t.ownerDocument)===t||t.defaultValue===""+o||(t.defaultValue=""+o)}function Va(t,a,o,u){if(t=t.options,a){a={};for(var p=0;p<o.length;p++)a["$"+o[p]]=!0;for(o=0;o<t.length;o++)p=a.hasOwnProperty("$"+t[o].value),t[o].selected!==p&&(t[o].selected=p),p&&u&&(t[o].defaultSelected=!0)}else{for(o=""+On(o),a=null,p=0;p<t.length;p++){if(t[p].value===o){t[p].selected=!0,u&&(t[p].defaultSelected=!0);return}a!==null||t[p].disabled||(a=t[p])}a!==null&&(a.selected=!0)}}function Ka(t,a,o){if(a!=null&&(a=""+On(a),a!==t.value&&(t.value=a),o==null)){t.defaultValue!==a&&(t.defaultValue=a);return}t.defaultValue=o!=null?""+On(o):""}function au(t,a,o,u){if(a==null){if(u!=null){if(o!=null)throw Error(r(92));if(Et(u)){if(1<u.length)throw Error(r(93));u=u[0]}o=u}o==null&&(o=""),a=o}o=On(a),t.defaultValue=o,u=t.textContent,u===o&&u!==""&&u!==null&&(t.value=u),al(t)}function Wa(t,a){if(a){var o=t.firstChild;if(o&&o===t.lastChild&&o.nodeType===3){o.nodeValue=a;return}}t.textContent=a}var Sh=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function iu(t,a,o){var u=a.indexOf("--")===0;o==null||typeof o=="boolean"||o===""?u?t.setProperty(a,""):a==="float"?t.cssFloat="":t[a]="":u?t.setProperty(a,o):typeof o!="number"||o===0||Sh.has(a)?a==="float"?t.cssFloat=o:t[a]=(""+o).trim():t[a]=o+"px"}function su(t,a,o){if(a!=null&&typeof a!="object")throw Error(r(62));if(t=t.style,o!=null){for(var u in o)!o.hasOwnProperty(u)||a!=null&&a.hasOwnProperty(u)||(u.indexOf("--")===0?t.setProperty(u,""):u==="float"?t.cssFloat="":t[u]="");for(var p in a)u=a[p],a.hasOwnProperty(p)&&o[p]!==u&&iu(t,p,u)}else for(var g in a)a.hasOwnProperty(g)&&iu(t,g,a[g])}function il(t){if(t.indexOf("-")===-1)return!1;switch(t){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 wh=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),sl=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function gr(t){return sl.test(""+t)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":t}function Nr(){}var ol=null;function ll(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Ya=null,pa=null;function ou(t){var a=Xr(t);if(a&&(t=a.stateNode)){var o=t[Dn]||null;e:switch(t=a.stateNode,a.type){case"input":if(Os(t,o.value,o.defaultValue,o.defaultValue,o.checked,o.defaultChecked,o.type,o.name),a=o.name,o.type==="radio"&&a!=null){for(o=t;o.parentNode;)o=o.parentNode;for(o=o.querySelectorAll('input[name="'+qn(""+a)+'"][type="radio"]'),a=0;a<o.length;a++){var u=o[a];if(u!==t&&u.form===t.form){var p=u[Dn]||null;if(!p)throw Error(r(90));Os(u,p.value,p.defaultValue,p.defaultValue,p.checked,p.defaultChecked,p.type,p.name)}}for(a=0;a<o.length;a++)u=o[a],u.form===t.form&&ru(u)}break e;case"textarea":Ka(t,o.value,o.defaultValue);break e;case"select":a=o.value,a!=null&&Va(t,!!o.multiple,a,!1)}}}var Ls=!1;function lu(t,a,o){if(Ls)return t(a,o);Ls=!0;try{var u=t(a);return u}finally{if(Ls=!1,(Ya!==null||pa!==null)&&(td(),Ya&&(a=Ya,t=pa,pa=Ya=null,ou(a),t)))for(a=0;a<t.length;a++)ou(t[a])}}function Hi(t,a){var o=t.stateNode;if(o===null)return null;var u=o[Dn]||null;if(u===null)return null;o=u[a];e:switch(a){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(u=!u.disabled)||(t=t.type,u=!(t==="button"||t==="input"||t==="select"||t==="textarea")),t=!u;break e;default:t=!1}if(t)return null;if(o&&typeof o!="function")throw Error(r(231,a,typeof o));return o}var Ir=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),cl=!1;if(Ir)try{var zi={};Object.defineProperty(zi,"passive",{get:function(){cl=!0}}),window.addEventListener("test",zi,zi),window.removeEventListener("test",zi,zi)}catch{cl=!1}var Jr=null,ul=null,$s=null;function cu(){if($s)return $s;var t,a=ul,o=a.length,u,p="value"in Jr?Jr.value:Jr.textContent,g=p.length;for(t=0;t<o&&a[t]===p[t];t++);var w=o-t;for(u=1;u<=w&&a[o-u]===p[g-u];u++);return $s=p.slice(t,1<u?1-u:void 0)}function Pi(t){var a=t.keyCode;return"charCode"in t?(t=t.charCode,t===0&&a===13&&(t=13)):t=a,t===10&&(t=13),32<=t||t===13?t:0}function dl(){return!0}function uu(){return!1}function Ue(t){function a(o,u,p,g,w){this._reactName=o,this._targetInst=p,this.type=u,this.nativeEvent=g,this.target=w,this.currentTarget=null;for(var R in t)t.hasOwnProperty(R)&&(o=t[R],this[R]=o?o(g):g[R]);return this.isDefaultPrevented=(g.defaultPrevented!=null?g.defaultPrevented:g.returnValue===!1)?dl:uu,this.isPropagationStopped=uu,this}return y(a.prototype,{preventDefault:function(){this.defaultPrevented=!0;var o=this.nativeEvent;o&&(o.preventDefault?o.preventDefault():typeof o.returnValue!="unknown"&&(o.returnValue=!1),this.isDefaultPrevented=dl)},stopPropagation:function(){var o=this.nativeEvent;o&&(o.stopPropagation?o.stopPropagation():typeof o.cancelBubble!="unknown"&&(o.cancelBubble=!0),this.isPropagationStopped=dl)},persist:function(){},isPersistent:dl}),a}var jr={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(t){return t.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},ga=Ue(jr),Ui=y({},jr,{view:0,detail:0}),Ch=Ue(Ui),Ms,fl,Bi,Ns=y({},Ui,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:pl,button:0,buttons:0,relatedTarget:function(t){return t.relatedTarget===void 0?t.fromElement===t.srcElement?t.toElement:t.fromElement:t.relatedTarget},movementX:function(t){return"movementX"in t?t.movementX:(t!==Bi&&(Bi&&t.type==="mousemove"?(Ms=t.screenX-Bi.screenX,fl=t.screenY-Bi.screenY):fl=Ms=0,Bi=t),Ms)},movementY:function(t){return"movementY"in t?t.movementY:fl}}),du=Ue(Ns),Eh=y({},Ns,{dataTransfer:0}),Ub=Ue(Eh),_h=y({},Ui,{relatedTarget:0}),hl=Ue(_h),Bb=y({},jr,{animationName:0,elapsedTime:0,pseudoElement:0}),Ah=Ue(Bb),xh=y({},jr,{clipboardData:function(t){return"clipboardData"in t?t.clipboardData:window.clipboardData}}),fu=Ue(xh),Th=y({},jr,{data:0}),hu=Ue(Th),kh={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Rh={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"},Dh={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function pu(t){var a=this.nativeEvent;return a.getModifierState?a.getModifierState(t):(t=Dh[t])?!!a[t]:!1}function pl(){return pu}var Oh=y({},Ui,{key:function(t){if(t.key){var a=kh[t.key]||t.key;if(a!=="Unidentified")return a}return t.type==="keypress"?(t=Pi(t),t===13?"Enter":String.fromCharCode(t)):t.type==="keydown"||t.type==="keyup"?Rh[t.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:pl,charCode:function(t){return t.type==="keypress"?Pi(t):0},keyCode:function(t){return t.type==="keydown"||t.type==="keyup"?t.keyCode:0},which:function(t){return t.type==="keypress"?Pi(t):t.type==="keydown"||t.type==="keyup"?t.keyCode:0}}),Lh=Ue(Oh),$h=y({},Ns,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),gu=Ue($h),Mh=y({},Ui,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:pl}),Nh=Ue(Mh),fn=y({},jr,{propertyName:0,elapsedTime:0,pseudoElement:0}),Is=Ue(fn),Ih=y({},Ns,{deltaX:function(t){return"deltaX"in t?t.deltaX:"wheelDeltaX"in t?-t.wheelDeltaX:0},deltaY:function(t){return"deltaY"in t?t.deltaY:"wheelDeltaY"in t?-t.wheelDeltaY:"wheelDelta"in t?-t.wheelDelta:0},deltaZ:0,deltaMode:0}),E=Ue(Ih),b=y({},jr,{newState:0,oldState:0}),C=Ue(b),$=[9,13,27,32],j=Ir&&"CompositionEvent"in window,ne=null;Ir&&"documentMode"in document&&(ne=document.documentMode);var ye=Ir&&"TextEvent"in window&&!ne,Le=Ir&&(!j||ne&&8<ne&&11>=ne),We=" ",ft=!1;function vt(t,a){switch(t){case"keyup":return $.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Vt(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Hr=!1;function jh(t,a){switch(t){case"compositionend":return Vt(a);case"keypress":return a.which!==32?null:(ft=!0,We);case"textInput":return t=a.data,t===We&&ft?null:t;default:return null}}function mu(t,a){if(Hr)return t==="compositionend"||!j&&vt(t,a)?(t=cu(),$s=ul=Jr=null,Hr=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1<a.char.length)return a.char;if(a.which)return String.fromCharCode(a.which)}return null;case"compositionend":return Le&&a.locale!=="ko"?null:a.data;default:return null}}var Hh={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 gl(t){var a=t&&t.nodeName&&t.nodeName.toLowerCase();return a==="input"?!!Hh[t.type]:a==="textarea"}function yu(t,a,o,u){Ya?pa?pa.push(u):pa=[u]:Ya=u,a=ld(a,"onChange"),0<a.length&&(o=new ga("onChange","change",null,o,u),t.push({event:o,listeners:a}))}var Xa=null,qi=null;function zh(t){vw(t,0)}function Gi(t){var a=fa(t);if(ru(a))return t}function ml(t,a){if(t==="change")return a}var yl=!1;if(Ir){var Fi;if(Ir){var Vi="oninput"in document;if(!Vi){var bl=document.createElement("div");bl.setAttribute("oninput","return;"),Vi=typeof bl.oninput=="function"}Fi=Vi}else Fi=!1;yl=Fi&&(!document.documentMode||9<document.documentMode)}function bu(){Xa&&(Xa.detachEvent("onpropertychange",vu),qi=Xa=null)}function vu(t){if(t.propertyName==="value"&&Gi(qi)){var a=[];yu(a,qi,t,ll(t)),lu(zh,a)}}function Ph(t,a,o){t==="focusin"?(bu(),Xa=a,qi=o,Xa.attachEvent("onpropertychange",vu)):t==="focusout"&&bu()}function Uh(t){if(t==="selectionchange"||t==="keyup"||t==="keydown")return Gi(qi)}function Su(t,a){if(t==="click")return Gi(a)}function QT(t,a){if(t==="input"||t==="change")return Gi(a)}function ZT(t,a){return t===a&&(t!==0||1/t===1/a)||t!==t&&a!==a}var tr=typeof Object.is=="function"?Object.is:ZT;function vl(t,a){if(tr(t,a))return!0;if(typeof t!="object"||t===null||typeof a!="object"||a===null)return!1;var o=Object.keys(t),u=Object.keys(a);if(o.length!==u.length)return!1;for(u=0;u<o.length;u++){var p=o[u];if(!mt.call(a,p)||!tr(t[p],a[p]))return!1}return!0}function qb(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function Gb(t,a){var o=qb(t);t=0;for(var u;o;){if(o.nodeType===3){if(u=t+o.textContent.length,t<=a&&u>=a)return{node:o,offset:a-t};t=u}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=qb(o)}}function Fb(t,a){return t&&a?t===a?!0:t&&t.nodeType===3?!1:a&&a.nodeType===3?Fb(t,a.parentNode):"contains"in t?t.contains(a):t.compareDocumentPosition?!!(t.compareDocumentPosition(a)&16):!1:!1}function Vb(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var a=Fa(t.document);a instanceof t.HTMLIFrameElement;){try{var o=typeof a.contentWindow.location.href=="string"}catch{o=!1}if(o)t=a.contentWindow;else break;a=Fa(t.document)}return a}function Bh(t){var a=t&&t.nodeName&&t.nodeName.toLowerCase();return a&&(a==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||a==="textarea"||t.contentEditable==="true")}var ek=Ir&&"documentMode"in document&&11>=document.documentMode,js=null,qh=null,Sl=null,Gh=!1;function Kb(t,a,o){var u=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;Gh||js==null||js!==Fa(u)||(u=js,"selectionStart"in u&&Bh(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),Sl&&vl(Sl,u)||(Sl=u,u=ld(qh,"onSelect"),0<u.length&&(a=new ga("onSelect","select",null,a,o),t.push({event:a,listeners:u}),a.target=js)))}function Ki(t,a){var o={};return o[t.toLowerCase()]=a.toLowerCase(),o["Webkit"+t]="webkit"+a,o["Moz"+t]="moz"+a,o}var Hs={animationend:Ki("Animation","AnimationEnd"),animationiteration:Ki("Animation","AnimationIteration"),animationstart:Ki("Animation","AnimationStart"),transitionrun:Ki("Transition","TransitionRun"),transitionstart:Ki("Transition","TransitionStart"),transitioncancel:Ki("Transition","TransitionCancel"),transitionend:Ki("Transition","TransitionEnd")},Fh={},Wb={};Ir&&(Wb=document.createElement("div").style,"AnimationEvent"in window||(delete Hs.animationend.animation,delete Hs.animationiteration.animation,delete Hs.animationstart.animation),"TransitionEvent"in window||delete Hs.transitionend.transition);function Wi(t){if(Fh[t])return Fh[t];if(!Hs[t])return t;var a=Hs[t],o;for(o in a)if(a.hasOwnProperty(o)&&o in Wb)return Fh[t]=a[o];return t}var Yb=Wi("animationend"),Xb=Wi("animationiteration"),Jb=Wi("animationstart"),tk=Wi("transitionrun"),nk=Wi("transitionstart"),rk=Wi("transitioncancel"),Qb=Wi("transitionend"),Zb=new Map,Vh="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Vh.push("scrollEnd");function zr(t,a){Zb.set(t,a),Mr(a,[t])}var wu=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var a=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(a))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)},mr=[],zs=0,Kh=0;function Cu(){for(var t=zs,a=Kh=zs=0;a<t;){var o=mr[a];mr[a++]=null;var u=mr[a];mr[a++]=null;var p=mr[a];mr[a++]=null;var g=mr[a];if(mr[a++]=null,u!==null&&p!==null){var w=u.pending;w===null?p.next=p:(p.next=w.next,w.next=p),u.pending=p}g!==0&&ev(o,p,g)}}function Eu(t,a,o,u){mr[zs++]=t,mr[zs++]=a,mr[zs++]=o,mr[zs++]=u,Kh|=u,t.lanes|=u,t=t.alternate,t!==null&&(t.lanes|=u)}function Wh(t,a,o,u){return Eu(t,a,o,u),_u(t)}function Yi(t,a){return Eu(t,null,null,a),_u(t)}function ev(t,a,o){t.lanes|=o;var u=t.alternate;u!==null&&(u.lanes|=o);for(var p=!1,g=t.return;g!==null;)g.childLanes|=o,u=g.alternate,u!==null&&(u.childLanes|=o),g.tag===22&&(t=g.stateNode,t===null||t._visibility&1||(p=!0)),t=g,g=g.return;return t.tag===3?(g=t.stateNode,p&&a!==null&&(p=31-dn(o),t=g.hiddenUpdates,u=t[p],u===null?t[p]=[a]:u.push(a),a.lane=o|536870912),g):null}function _u(t){if(50<Bl)throw Bl=0,rg=null,Error(r(185));for(var a=t.return;a!==null;)t=a,a=t.return;return t.tag===3?t.stateNode:null}var Ps={};function ak(t,a,o,u){this.tag=t,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=a,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=u,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function nr(t,a,o,u){return new ak(t,a,o,u)}function Yh(t){return t=t.prototype,!(!t||!t.isReactComponent)}function ma(t,a){var o=t.alternate;return o===null?(o=nr(t.tag,a,t.key,t.mode),o.elementType=t.elementType,o.type=t.type,o.stateNode=t.stateNode,o.alternate=t,t.alternate=o):(o.pendingProps=a,o.type=t.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=t.flags&65011712,o.childLanes=t.childLanes,o.lanes=t.lanes,o.child=t.child,o.memoizedProps=t.memoizedProps,o.memoizedState=t.memoizedState,o.updateQueue=t.updateQueue,a=t.dependencies,o.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext},o.sibling=t.sibling,o.index=t.index,o.ref=t.ref,o.refCleanup=t.refCleanup,o}function tv(t,a){t.flags&=65011714;var o=t.alternate;return o===null?(t.childLanes=0,t.lanes=a,t.child=null,t.subtreeFlags=0,t.memoizedProps=null,t.memoizedState=null,t.updateQueue=null,t.dependencies=null,t.stateNode=null):(t.childLanes=o.childLanes,t.lanes=o.lanes,t.child=o.child,t.subtreeFlags=0,t.deletions=null,t.memoizedProps=o.memoizedProps,t.memoizedState=o.memoizedState,t.updateQueue=o.updateQueue,t.type=o.type,a=o.dependencies,t.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext}),t}function Au(t,a,o,u,p,g){var w=0;if(u=t,typeof t=="function")Yh(t)&&(w=1);else if(typeof t=="string")w=cR(t,o,he.current)?26:t==="html"||t==="head"||t==="body"?27:5;else e:switch(t){case de:return t=nr(31,o,a,p),t.elementType=de,t.lanes=g,t;case x:return Xi(o.children,p,g,a);case A:w=8,p|=24;break;case D:return t=nr(12,o,a,p|2),t.elementType=D,t.lanes=g,t;case B:return t=nr(13,o,a,p),t.elementType=B,t.lanes=g,t;case q:return t=nr(19,o,a,p),t.elementType=q,t.lanes=g,t;default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case k:w=10;break e;case O:w=9;break e;case L:w=11;break e;case z:w=14;break e;case W:w=16,u=null;break e}w=29,o=Error(r(130,t===null?"null":typeof t,"")),u=null}return a=nr(w,o,a,p),a.elementType=t,a.type=u,a.lanes=g,a}function Xi(t,a,o,u){return t=nr(7,t,u,a),t.lanes=o,t}function Xh(t,a,o){return t=nr(6,t,null,a),t.lanes=o,t}function nv(t){var a=nr(18,null,null,0);return a.stateNode=t,a}function Jh(t,a,o){return a=nr(4,t.children!==null?t.children:[],t.key,a),a.lanes=o,a.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},a}var rv=new WeakMap;function yr(t,a){if(typeof t=="object"&&t!==null){var o=rv.get(t);return o!==void 0?o:(a={value:t,source:a,stack:qe(a)},rv.set(t,a),a)}return{value:t,source:a,stack:qe(a)}}var Us=[],Bs=0,xu=null,wl=0,br=[],vr=0,Ja=null,Qr=1,Zr="";function ya(t,a){Us[Bs++]=wl,Us[Bs++]=xu,xu=t,wl=a}function av(t,a,o){br[vr++]=Qr,br[vr++]=Zr,br[vr++]=Ja,Ja=t;var u=Qr;t=Zr;var p=32-dn(u)-1;u&=~(1<<p),o+=1;var g=32-dn(a)+p;if(30<g){var w=p-p%5;g=(u&(1<<w)-1).toString(32),u>>=w,p-=w,Qr=1<<32-dn(a)+p|o<<p|u,Zr=g+t}else Qr=1<<g|o<<p|u,Zr=t}function Qh(t){t.return!==null&&(ya(t,1),av(t,1,0))}function Zh(t){for(;t===xu;)xu=Us[--Bs],Us[Bs]=null,wl=Us[--Bs],Us[Bs]=null;for(;t===Ja;)Ja=br[--vr],br[vr]=null,Zr=br[--vr],br[vr]=null,Qr=br[--vr],br[vr]=null}function iv(t,a){br[vr++]=Qr,br[vr++]=Zr,br[vr++]=Ja,Qr=a.id,Zr=a.overflow,Ja=t}var wn=null,Pt=null,ht=!1,Qa=null,Sr=!1,ep=Error(r(519));function Za(t){var a=Error(r(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw Cl(yr(a,t)),ep}function sv(t){var a=t.stateNode,o=t.type,u=t.memoizedProps;switch(a[Ft]=t,a[Dn]=u,o){case"dialog":ot("cancel",a),ot("close",a);break;case"iframe":case"object":case"embed":ot("load",a);break;case"video":case"audio":for(o=0;o<Gl.length;o++)ot(Gl[o],a);break;case"source":ot("error",a);break;case"img":case"image":case"link":ot("error",a),ot("load",a);break;case"details":ot("toggle",a);break;case"input":ot("invalid",a),ji(a,u.value,u.defaultValue,u.checked,u.defaultChecked,u.type,u.name,!0);break;case"select":ot("invalid",a);break;case"textarea":ot("invalid",a),au(a,u.value,u.defaultValue,u.children)}o=u.children,typeof o!="string"&&typeof o!="number"&&typeof o!="bigint"||a.textContent===""+o||u.suppressHydrationWarning===!0||Ew(a.textContent,o)?(u.popover!=null&&(ot("beforetoggle",a),ot("toggle",a)),u.onScroll!=null&&ot("scroll",a),u.onScrollEnd!=null&&ot("scrollend",a),u.onClick!=null&&(a.onclick=Nr),a=!0):a=!1,a||Za(t,!0)}function ov(t){for(wn=t.return;wn;)switch(wn.tag){case 5:case 31:case 13:Sr=!1;return;case 27:case 3:Sr=!0;return;default:wn=wn.return}}function qs(t){if(t!==wn)return!1;if(!ht)return ov(t),ht=!0,!1;var a=t.tag,o;if((o=a!==3&&a!==27)&&((o=a===5)&&(o=t.type,o=!(o!=="form"&&o!=="button")||bg(t.type,t.memoizedProps)),o=!o),o&&Pt&&Za(t),ov(t),a===13){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(317));Pt=Lw(t)}else if(a===31){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(317));Pt=Lw(t)}else a===27?(a=Pt,hi(t.type)?(t=Eg,Eg=null,Pt=t):Pt=a):Pt=wn?Cr(t.stateNode.nextSibling):null;return!0}function Ji(){Pt=wn=null,ht=!1}function tp(){var t=Qa;return t!==null&&(Kn===null?Kn=t:Kn.push.apply(Kn,t),Qa=null),t}function Cl(t){Qa===null?Qa=[t]:Qa.push(t)}var np=H(null),Qi=null,ba=null;function ei(t,a,o){fe(np,a._currentValue),a._currentValue=o}function va(t){t._currentValue=np.current,T(np)}function rp(t,a,o){for(;t!==null;){var u=t.alternate;if((t.childLanes&a)!==a?(t.childLanes|=a,u!==null&&(u.childLanes|=a)):u!==null&&(u.childLanes&a)!==a&&(u.childLanes|=a),t===o)break;t=t.return}}function ap(t,a,o,u){var p=t.child;for(p!==null&&(p.return=t);p!==null;){var g=p.dependencies;if(g!==null){var w=p.child;g=g.firstContext;e:for(;g!==null;){var R=g;g=p;for(var P=0;P<a.length;P++)if(R.context===a[P]){g.lanes|=o,R=g.alternate,R!==null&&(R.lanes|=o),rp(g.return,o,t),u||(w=null);break e}g=R.next}}else if(p.tag===18){if(w=p.return,w===null)throw Error(r(341));w.lanes|=o,g=w.alternate,g!==null&&(g.lanes|=o),rp(w,o,t),w=null}else w=p.child;if(w!==null)w.return=p;else for(w=p;w!==null;){if(w===t){w=null;break}if(p=w.sibling,p!==null){p.return=w.return,w=p;break}w=w.return}p=w}}function Gs(t,a,o,u){t=null;for(var p=a,g=!1;p!==null;){if(!g){if((p.flags&524288)!==0)g=!0;else if((p.flags&262144)!==0)break}if(p.tag===10){var w=p.alternate;if(w===null)throw Error(r(387));if(w=w.memoizedProps,w!==null){var R=p.type;tr(p.pendingProps.value,w.value)||(t!==null?t.push(R):t=[R])}}else if(p===ge.current){if(w=p.alternate,w===null)throw Error(r(387));w.memoizedState.memoizedState!==p.memoizedState.memoizedState&&(t!==null?t.push(Yl):t=[Yl])}p=p.return}t!==null&&ap(a,t,o,u),a.flags|=262144}function Tu(t){for(t=t.firstContext;t!==null;){if(!tr(t.context._currentValue,t.memoizedValue))return!0;t=t.next}return!1}function Zi(t){Qi=t,ba=null,t=t.dependencies,t!==null&&(t.firstContext=null)}function Cn(t){return lv(Qi,t)}function ku(t,a){return Qi===null&&Zi(t),lv(t,a)}function lv(t,a){var o=a._currentValue;if(a={context:a,memoizedValue:o,next:null},ba===null){if(t===null)throw Error(r(308));ba=a,t.dependencies={lanes:0,firstContext:a},t.flags|=524288}else ba=ba.next=a;return o}var ik=typeof AbortController<"u"?AbortController:function(){var t=[],a=this.signal={aborted:!1,addEventListener:function(o,u){t.push(u)}};this.abort=function(){a.aborted=!0,t.forEach(function(o){return o()})}},sk=s.unstable_scheduleCallback,ok=s.unstable_NormalPriority,rn={$$typeof:k,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function ip(){return{controller:new ik,data:new Map,refCount:0}}function El(t){t.refCount--,t.refCount===0&&sk(ok,function(){t.controller.abort()})}var _l=null,sp=0,Fs=0,Vs=null;function lk(t,a){if(_l===null){var o=_l=[];sp=0,Fs=cg(),Vs={status:"pending",value:void 0,then:function(u){o.push(u)}}}return sp++,a.then(cv,cv),a}function cv(){if(--sp===0&&_l!==null){Vs!==null&&(Vs.status="fulfilled");var t=_l;_l=null,Fs=0,Vs=null;for(var a=0;a<t.length;a++)(0,t[a])()}}function ck(t,a){var o=[],u={status:"pending",value:null,reason:null,then:function(p){o.push(p)}};return t.then(function(){u.status="fulfilled",u.value=a;for(var p=0;p<o.length;p++)(0,o[p])(a)},function(p){for(u.status="rejected",u.reason=p,p=0;p<o.length;p++)(0,o[p])(void 0)}),u}var uv=Q.S;Q.S=function(t,a){KS=Ot(),typeof a=="object"&&a!==null&&typeof a.then=="function"&&lk(t,a),uv!==null&&uv(t,a)};var es=H(null);function op(){var t=es.current;return t!==null?t:jt.pooledCache}function Ru(t,a){a===null?fe(es,es.current):fe(es,a.pool)}function dv(){var t=op();return t===null?null:{parent:rn._currentValue,pool:t}}var Ks=Error(r(460)),lp=Error(r(474)),Du=Error(r(542)),Ou={then:function(){}};function fv(t){return t=t.status,t==="fulfilled"||t==="rejected"}function hv(t,a,o){switch(o=t[o],o===void 0?t.push(a):o!==a&&(a.then(Nr,Nr),a=o),a.status){case"fulfilled":return a.value;case"rejected":throw t=a.reason,gv(t),t;default:if(typeof a.status=="string")a.then(Nr,Nr);else{if(t=jt,t!==null&&100<t.shellSuspendCounter)throw Error(r(482));t=a,t.status="pending",t.then(function(u){if(a.status==="pending"){var p=a;p.status="fulfilled",p.value=u}},function(u){if(a.status==="pending"){var p=a;p.status="rejected",p.reason=u}})}switch(a.status){case"fulfilled":return a.value;case"rejected":throw t=a.reason,gv(t),t}throw ns=a,Ks}}function ts(t){try{var a=t._init;return a(t._payload)}catch(o){throw o!==null&&typeof o=="object"&&typeof o.then=="function"?(ns=o,Ks):o}}var ns=null;function pv(){if(ns===null)throw Error(r(459));var t=ns;return ns=null,t}function gv(t){if(t===Ks||t===Du)throw Error(r(483))}var Ws=null,Al=0;function Lu(t){var a=Al;return Al+=1,Ws===null&&(Ws=[]),hv(Ws,t,a)}function xl(t,a){a=a.props.ref,t.ref=a!==void 0?a:null}function $u(t,a){throw a.$$typeof===v?Error(r(525)):(t=Object.prototype.toString.call(a),Error(r(31,t==="[object Object]"?"object with keys {"+Object.keys(a).join(", ")+"}":t)))}function mv(t){function a(K,F){if(t){var Y=K.deletions;Y===null?(K.deletions=[F],K.flags|=16):Y.push(F)}}function o(K,F){if(!t)return null;for(;F!==null;)a(K,F),F=F.sibling;return null}function u(K){for(var F=new Map;K!==null;)K.key!==null?F.set(K.key,K):F.set(K.index,K),K=K.sibling;return F}function p(K,F){return K=ma(K,F),K.index=0,K.sibling=null,K}function g(K,F,Y){return K.index=Y,t?(Y=K.alternate,Y!==null?(Y=Y.index,Y<F?(K.flags|=67108866,F):Y):(K.flags|=67108866,F)):(K.flags|=1048576,F)}function w(K){return t&&K.alternate===null&&(K.flags|=67108866),K}function R(K,F,Y,oe){return F===null||F.tag!==6?(F=Xh(Y,K.mode,oe),F.return=K,F):(F=p(F,Y),F.return=K,F)}function P(K,F,Y,oe){var Be=Y.type;return Be===x?re(K,F,Y.props.children,oe,Y.key):F!==null&&(F.elementType===Be||typeof Be=="object"&&Be!==null&&Be.$$typeof===W&&ts(Be)===F.type)?(F=p(F,Y.props),xl(F,Y),F.return=K,F):(F=Au(Y.type,Y.key,Y.props,null,K.mode,oe),xl(F,Y),F.return=K,F)}function X(K,F,Y,oe){return F===null||F.tag!==4||F.stateNode.containerInfo!==Y.containerInfo||F.stateNode.implementation!==Y.implementation?(F=Jh(Y,K.mode,oe),F.return=K,F):(F=p(F,Y.children||[]),F.return=K,F)}function re(K,F,Y,oe,Be){return F===null||F.tag!==7?(F=Xi(Y,K.mode,oe,Be),F.return=K,F):(F=p(F,Y),F.return=K,F)}function le(K,F,Y){if(typeof F=="string"&&F!==""||typeof F=="number"||typeof F=="bigint")return F=Xh(""+F,K.mode,Y),F.return=K,F;if(typeof F=="object"&&F!==null){switch(F.$$typeof){case S:return Y=Au(F.type,F.key,F.props,null,K.mode,Y),xl(Y,F),Y.return=K,Y;case _:return F=Jh(F,K.mode,Y),F.return=K,F;case W:return F=ts(F),le(K,F,Y)}if(Et(F)||je(F))return F=Xi(F,K.mode,Y,null),F.return=K,F;if(typeof F.then=="function")return le(K,Lu(F),Y);if(F.$$typeof===k)return le(K,ku(K,F),Y);$u(K,F)}return null}function J(K,F,Y,oe){var Be=F!==null?F.key:null;if(typeof Y=="string"&&Y!==""||typeof Y=="number"||typeof Y=="bigint")return Be!==null?null:R(K,F,""+Y,oe);if(typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case S:return Y.key===Be?P(K,F,Y,oe):null;case _:return Y.key===Be?X(K,F,Y,oe):null;case W:return Y=ts(Y),J(K,F,Y,oe)}if(Et(Y)||je(Y))return Be!==null?null:re(K,F,Y,oe,null);if(typeof Y.then=="function")return J(K,F,Lu(Y),oe);if(Y.$$typeof===k)return J(K,F,ku(K,Y),oe);$u(K,Y)}return null}function te(K,F,Y,oe,Be){if(typeof oe=="string"&&oe!==""||typeof oe=="number"||typeof oe=="bigint")return K=K.get(Y)||null,R(F,K,""+oe,Be);if(typeof oe=="object"&&oe!==null){switch(oe.$$typeof){case S:return K=K.get(oe.key===null?Y:oe.key)||null,P(F,K,oe,Be);case _:return K=K.get(oe.key===null?Y:oe.key)||null,X(F,K,oe,Be);case W:return oe=ts(oe),te(K,F,Y,oe,Be)}if(Et(oe)||je(oe))return K=K.get(Y)||null,re(F,K,oe,Be,null);if(typeof oe.then=="function")return te(K,F,Y,Lu(oe),Be);if(oe.$$typeof===k)return te(K,F,Y,ku(F,oe),Be);$u(F,oe)}return null}function Oe(K,F,Y,oe){for(var Be=null,St=null,Ne=F,Ze=F=0,ut=null;Ne!==null&&Ze<Y.length;Ze++){Ne.index>Ze?(ut=Ne,Ne=null):ut=Ne.sibling;var wt=J(K,Ne,Y[Ze],oe);if(wt===null){Ne===null&&(Ne=ut);break}t&&Ne&&wt.alternate===null&&a(K,Ne),F=g(wt,F,Ze),St===null?Be=wt:St.sibling=wt,St=wt,Ne=ut}if(Ze===Y.length)return o(K,Ne),ht&&ya(K,Ze),Be;if(Ne===null){for(;Ze<Y.length;Ze++)Ne=le(K,Y[Ze],oe),Ne!==null&&(F=g(Ne,F,Ze),St===null?Be=Ne:St.sibling=Ne,St=Ne);return ht&&ya(K,Ze),Be}for(Ne=u(Ne);Ze<Y.length;Ze++)ut=te(Ne,K,Ze,Y[Ze],oe),ut!==null&&(t&&ut.alternate!==null&&Ne.delete(ut.key===null?Ze:ut.key),F=g(ut,F,Ze),St===null?Be=ut:St.sibling=ut,St=ut);return t&&Ne.forEach(function(bi){return a(K,bi)}),ht&&ya(K,Ze),Be}function Ge(K,F,Y,oe){if(Y==null)throw Error(r(151));for(var Be=null,St=null,Ne=F,Ze=F=0,ut=null,wt=Y.next();Ne!==null&&!wt.done;Ze++,wt=Y.next()){Ne.index>Ze?(ut=Ne,Ne=null):ut=Ne.sibling;var bi=J(K,Ne,wt.value,oe);if(bi===null){Ne===null&&(Ne=ut);break}t&&Ne&&bi.alternate===null&&a(K,Ne),F=g(bi,F,Ze),St===null?Be=bi:St.sibling=bi,St=bi,Ne=ut}if(wt.done)return o(K,Ne),ht&&ya(K,Ze),Be;if(Ne===null){for(;!wt.done;Ze++,wt=Y.next())wt=le(K,wt.value,oe),wt!==null&&(F=g(wt,F,Ze),St===null?Be=wt:St.sibling=wt,St=wt);return ht&&ya(K,Ze),Be}for(Ne=u(Ne);!wt.done;Ze++,wt=Y.next())wt=te(Ne,K,Ze,wt.value,oe),wt!==null&&(t&&wt.alternate!==null&&Ne.delete(wt.key===null?Ze:wt.key),F=g(wt,F,Ze),St===null?Be=wt:St.sibling=wt,St=wt);return t&&Ne.forEach(function(SR){return a(K,SR)}),ht&&ya(K,Ze),Be}function Nt(K,F,Y,oe){if(typeof Y=="object"&&Y!==null&&Y.type===x&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case S:e:{for(var Be=Y.key;F!==null;){if(F.key===Be){if(Be=Y.type,Be===x){if(F.tag===7){o(K,F.sibling),oe=p(F,Y.props.children),oe.return=K,K=oe;break e}}else if(F.elementType===Be||typeof Be=="object"&&Be!==null&&Be.$$typeof===W&&ts(Be)===F.type){o(K,F.sibling),oe=p(F,Y.props),xl(oe,Y),oe.return=K,K=oe;break e}o(K,F);break}else a(K,F);F=F.sibling}Y.type===x?(oe=Xi(Y.props.children,K.mode,oe,Y.key),oe.return=K,K=oe):(oe=Au(Y.type,Y.key,Y.props,null,K.mode,oe),xl(oe,Y),oe.return=K,K=oe)}return w(K);case _:e:{for(Be=Y.key;F!==null;){if(F.key===Be)if(F.tag===4&&F.stateNode.containerInfo===Y.containerInfo&&F.stateNode.implementation===Y.implementation){o(K,F.sibling),oe=p(F,Y.children||[]),oe.return=K,K=oe;break e}else{o(K,F);break}else a(K,F);F=F.sibling}oe=Jh(Y,K.mode,oe),oe.return=K,K=oe}return w(K);case W:return Y=ts(Y),Nt(K,F,Y,oe)}if(Et(Y))return Oe(K,F,Y,oe);if(je(Y)){if(Be=je(Y),typeof Be!="function")throw Error(r(150));return Y=Be.call(Y),Ge(K,F,Y,oe)}if(typeof Y.then=="function")return Nt(K,F,Lu(Y),oe);if(Y.$$typeof===k)return Nt(K,F,ku(K,Y),oe);$u(K,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"||typeof Y=="bigint"?(Y=""+Y,F!==null&&F.tag===6?(o(K,F.sibling),oe=p(F,Y),oe.return=K,K=oe):(o(K,F),oe=Xh(Y,K.mode,oe),oe.return=K,K=oe),w(K)):o(K,F)}return function(K,F,Y,oe){try{Al=0;var Be=Nt(K,F,Y,oe);return Ws=null,Be}catch(Ne){if(Ne===Ks||Ne===Du)throw Ne;var St=nr(29,Ne,null,K.mode);return St.lanes=oe,St.return=K,St}finally{}}}var rs=mv(!0),yv=mv(!1),ti=!1;function cp(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function up(t,a){t=t.updateQueue,a.updateQueue===t&&(a.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function ni(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function ri(t,a,o){var u=t.updateQueue;if(u===null)return null;if(u=u.shared,(_t&2)!==0){var p=u.pending;return p===null?a.next=a:(a.next=p.next,p.next=a),u.pending=a,a=_u(t),ev(t,null,o),a}return Eu(t,u,a,o),_u(t)}function Tl(t,a,o){if(a=a.updateQueue,a!==null&&(a=a.shared,(o&4194048)!==0)){var u=a.lanes;u&=t.pendingLanes,o|=u,a.lanes=o,Ce(t,o)}}function dp(t,a){var o=t.updateQueue,u=t.alternate;if(u!==null&&(u=u.updateQueue,o===u)){var p=null,g=null;if(o=o.firstBaseUpdate,o!==null){do{var w={lane:o.lane,tag:o.tag,payload:o.payload,callback:null,next:null};g===null?p=g=w:g=g.next=w,o=o.next}while(o!==null);g===null?p=g=a:g=g.next=a}else p=g=a;o={baseState:u.baseState,firstBaseUpdate:p,lastBaseUpdate:g,shared:u.shared,callbacks:u.callbacks},t.updateQueue=o;return}t=o.lastBaseUpdate,t===null?o.firstBaseUpdate=a:t.next=a,o.lastBaseUpdate=a}var fp=!1;function kl(){if(fp){var t=Vs;if(t!==null)throw t}}function Rl(t,a,o,u){fp=!1;var p=t.updateQueue;ti=!1;var g=p.firstBaseUpdate,w=p.lastBaseUpdate,R=p.shared.pending;if(R!==null){p.shared.pending=null;var P=R,X=P.next;P.next=null,w===null?g=X:w.next=X,w=P;var re=t.alternate;re!==null&&(re=re.updateQueue,R=re.lastBaseUpdate,R!==w&&(R===null?re.firstBaseUpdate=X:R.next=X,re.lastBaseUpdate=P))}if(g!==null){var le=p.baseState;w=0,re=X=P=null,R=g;do{var J=R.lane&-536870913,te=J!==R.lane;if(te?(ct&J)===J:(u&J)===J){J!==0&&J===Fs&&(fp=!0),re!==null&&(re=re.next={lane:0,tag:R.tag,payload:R.payload,callback:null,next:null});e:{var Oe=t,Ge=R;J=a;var Nt=o;switch(Ge.tag){case 1:if(Oe=Ge.payload,typeof Oe=="function"){le=Oe.call(Nt,le,J);break e}le=Oe;break e;case 3:Oe.flags=Oe.flags&-65537|128;case 0:if(Oe=Ge.payload,J=typeof Oe=="function"?Oe.call(Nt,le,J):Oe,J==null)break e;le=y({},le,J);break e;case 2:ti=!0}}J=R.callback,J!==null&&(t.flags|=64,te&&(t.flags|=8192),te=p.callbacks,te===null?p.callbacks=[J]:te.push(J))}else te={lane:J,tag:R.tag,payload:R.payload,callback:R.callback,next:null},re===null?(X=re=te,P=le):re=re.next=te,w|=J;if(R=R.next,R===null){if(R=p.shared.pending,R===null)break;te=R,R=te.next,te.next=null,p.lastBaseUpdate=te,p.shared.pending=null}}while(!0);re===null&&(P=le),p.baseState=P,p.firstBaseUpdate=X,p.lastBaseUpdate=re,g===null&&(p.shared.lanes=0),li|=w,t.lanes=w,t.memoizedState=le}}function bv(t,a){if(typeof t!="function")throw Error(r(191,t));t.call(a)}function vv(t,a){var o=t.callbacks;if(o!==null)for(t.callbacks=null,t=0;t<o.length;t++)bv(o[t],a)}var Ys=H(null),Mu=H(0);function Sv(t,a){t=ka,fe(Mu,t),fe(Ys,a),ka=t|a.baseLanes}function hp(){fe(Mu,ka),fe(Ys,Ys.current)}function pp(){ka=Mu.current,T(Ys),T(Mu)}var rr=H(null),wr=null;function ai(t){var a=t.alternate;fe(Zt,Zt.current&1),fe(rr,t),wr===null&&(a===null||Ys.current!==null||a.memoizedState!==null)&&(wr=t)}function gp(t){fe(Zt,Zt.current),fe(rr,t),wr===null&&(wr=t)}function wv(t){t.tag===22?(fe(Zt,Zt.current),fe(rr,t),wr===null&&(wr=t)):ii()}function ii(){fe(Zt,Zt.current),fe(rr,rr.current)}function ar(t){T(rr),wr===t&&(wr=null),T(Zt)}var Zt=H(0);function Nu(t){for(var a=t;a!==null;){if(a.tag===13){var o=a.memoizedState;if(o!==null&&(o=o.dehydrated,o===null||wg(o)||Cg(o)))return a}else if(a.tag===19&&(a.memoizedProps.revealOrder==="forwards"||a.memoizedProps.revealOrder==="backwards"||a.memoizedProps.revealOrder==="unstable_legacy-backwards"||a.memoizedProps.revealOrder==="together")){if((a.flags&128)!==0)return a}else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break;for(;a.sibling===null;){if(a.return===null||a.return===t)return null;a=a.return}a.sibling.return=a.return,a=a.sibling}return null}var Sa=0,Qe=null,$t=null,an=null,Iu=!1,Xs=!1,as=!1,ju=0,Dl=0,Js=null,uk=0;function Xt(){throw Error(r(321))}function mp(t,a){if(a===null)return!1;for(var o=0;o<a.length&&o<t.length;o++)if(!tr(t[o],a[o]))return!1;return!0}function yp(t,a,o,u,p,g){return Sa=g,Qe=a,a.memoizedState=null,a.updateQueue=null,a.lanes=0,Q.H=t===null||t.memoizedState===null?aS:Lp,as=!1,g=o(u,p),as=!1,Xs&&(g=Ev(a,o,u,p)),Cv(t),g}function Cv(t){Q.H=$l;var a=$t!==null&&$t.next!==null;if(Sa=0,an=$t=Qe=null,Iu=!1,Dl=0,Js=null,a)throw Error(r(300));t===null||sn||(t=t.dependencies,t!==null&&Tu(t)&&(sn=!0))}function Ev(t,a,o,u){Qe=t;var p=0;do{if(Xs&&(Js=null),Dl=0,Xs=!1,25<=p)throw Error(r(301));if(p+=1,an=$t=null,t.updateQueue!=null){var g=t.updateQueue;g.lastEffect=null,g.events=null,g.stores=null,g.memoCache!=null&&(g.memoCache.index=0)}Q.H=iS,g=a(o,u)}while(Xs);return g}function dk(){var t=Q.H,a=t.useState()[0];return a=typeof a.then=="function"?Ol(a):a,t=t.useState()[0],($t!==null?$t.memoizedState:null)!==t&&(Qe.flags|=1024),a}function bp(){var t=ju!==0;return ju=0,t}function vp(t,a,o){a.updateQueue=t.updateQueue,a.flags&=-2053,t.lanes&=~o}function Sp(t){if(Iu){for(t=t.memoizedState;t!==null;){var a=t.queue;a!==null&&(a.pending=null),t=t.next}Iu=!1}Sa=0,an=$t=Qe=null,Xs=!1,Dl=ju=0,Js=null}function In(){var t={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return an===null?Qe.memoizedState=an=t:an=an.next=t,an}function en(){if($t===null){var t=Qe.alternate;t=t!==null?t.memoizedState:null}else t=$t.next;var a=an===null?Qe.memoizedState:an.next;if(a!==null)an=a,$t=t;else{if(t===null)throw Qe.alternate===null?Error(r(467)):Error(r(310));$t=t,t={memoizedState:$t.memoizedState,baseState:$t.baseState,baseQueue:$t.baseQueue,queue:$t.queue,next:null},an===null?Qe.memoizedState=an=t:an=an.next=t}return an}function Hu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Ol(t){var a=Dl;return Dl+=1,Js===null&&(Js=[]),t=hv(Js,t,a),a=Qe,(an===null?a.memoizedState:an.next)===null&&(a=a.alternate,Q.H=a===null||a.memoizedState===null?aS:Lp),t}function zu(t){if(t!==null&&typeof t=="object"){if(typeof t.then=="function")return Ol(t);if(t.$$typeof===k)return Cn(t)}throw Error(r(438,String(t)))}function wp(t){var a=null,o=Qe.updateQueue;if(o!==null&&(a=o.memoCache),a==null){var u=Qe.alternate;u!==null&&(u=u.updateQueue,u!==null&&(u=u.memoCache,u!=null&&(a={data:u.data.map(function(p){return p.slice()}),index:0})))}if(a==null&&(a={data:[],index:0}),o===null&&(o=Hu(),Qe.updateQueue=o),o.memoCache=a,o=a.data[a.index],o===void 0)for(o=a.data[a.index]=Array(t),u=0;u<t;u++)o[u]=_e;return a.index++,o}function wa(t,a){return typeof a=="function"?a(t):a}function Pu(t){var a=en();return Cp(a,$t,t)}function Cp(t,a,o){var u=t.queue;if(u===null)throw Error(r(311));u.lastRenderedReducer=o;var p=t.baseQueue,g=u.pending;if(g!==null){if(p!==null){var w=p.next;p.next=g.next,g.next=w}a.baseQueue=p=g,u.pending=null}if(g=t.baseState,p===null)t.memoizedState=g;else{a=p.next;var R=w=null,P=null,X=a,re=!1;do{var le=X.lane&-536870913;if(le!==X.lane?(ct&le)===le:(Sa&le)===le){var J=X.revertLane;if(J===0)P!==null&&(P=P.next={lane:0,revertLane:0,gesture:null,action:X.action,hasEagerState:X.hasEagerState,eagerState:X.eagerState,next:null}),le===Fs&&(re=!0);else if((Sa&J)===J){X=X.next,J===Fs&&(re=!0);continue}else le={lane:0,revertLane:X.revertLane,gesture:null,action:X.action,hasEagerState:X.hasEagerState,eagerState:X.eagerState,next:null},P===null?(R=P=le,w=g):P=P.next=le,Qe.lanes|=J,li|=J;le=X.action,as&&o(g,le),g=X.hasEagerState?X.eagerState:o(g,le)}else J={lane:le,revertLane:X.revertLane,gesture:X.gesture,action:X.action,hasEagerState:X.hasEagerState,eagerState:X.eagerState,next:null},P===null?(R=P=J,w=g):P=P.next=J,Qe.lanes|=le,li|=le;X=X.next}while(X!==null&&X!==a);if(P===null?w=g:P.next=R,!tr(g,t.memoizedState)&&(sn=!0,re&&(o=Vs,o!==null)))throw o;t.memoizedState=g,t.baseState=w,t.baseQueue=P,u.lastRenderedState=g}return p===null&&(u.lanes=0),[t.memoizedState,u.dispatch]}function Ep(t){var a=en(),o=a.queue;if(o===null)throw Error(r(311));o.lastRenderedReducer=t;var u=o.dispatch,p=o.pending,g=a.memoizedState;if(p!==null){o.pending=null;var w=p=p.next;do g=t(g,w.action),w=w.next;while(w!==p);tr(g,a.memoizedState)||(sn=!0),a.memoizedState=g,a.baseQueue===null&&(a.baseState=g),o.lastRenderedState=g}return[g,u]}function _v(t,a,o){var u=Qe,p=en(),g=ht;if(g){if(o===void 0)throw Error(r(407));o=o()}else o=a();var w=!tr(($t||p).memoizedState,o);if(w&&(p.memoizedState=o,sn=!0),p=p.queue,xp(Tv.bind(null,u,p,t),[t]),p.getSnapshot!==a||w||an!==null&&an.memoizedState.tag&1){if(u.flags|=2048,Qs(9,{destroy:void 0},xv.bind(null,u,p,o,a),null),jt===null)throw Error(r(349));g||(Sa&127)!==0||Av(u,a,o)}return o}function Av(t,a,o){t.flags|=16384,t={getSnapshot:a,value:o},a=Qe.updateQueue,a===null?(a=Hu(),Qe.updateQueue=a,a.stores=[t]):(o=a.stores,o===null?a.stores=[t]:o.push(t))}function xv(t,a,o,u){a.value=o,a.getSnapshot=u,kv(a)&&Rv(t)}function Tv(t,a,o){return o(function(){kv(a)&&Rv(t)})}function kv(t){var a=t.getSnapshot;t=t.value;try{var o=a();return!tr(t,o)}catch{return!0}}function Rv(t){var a=Yi(t,2);a!==null&&Wn(a,t,2)}function _p(t){var a=In();if(typeof t=="function"){var o=t;if(t=o(),as){Rn(!0);try{o()}finally{Rn(!1)}}}return a.memoizedState=a.baseState=t,a.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:wa,lastRenderedState:t},a}function Dv(t,a,o,u){return t.baseState=o,Cp(t,$t,typeof u=="function"?u:wa)}function fk(t,a,o,u,p){if(qu(t))throw Error(r(485));if(t=a.action,t!==null){var g={payload:p,action:t,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(w){g.listeners.push(w)}};Q.T!==null?o(!0):g.isTransition=!1,u(g),o=a.pending,o===null?(g.next=a.pending=g,Ov(a,g)):(g.next=o.next,a.pending=o.next=g)}}function Ov(t,a){var o=a.action,u=a.payload,p=t.state;if(a.isTransition){var g=Q.T,w={};Q.T=w;try{var R=o(p,u),P=Q.S;P!==null&&P(w,R),Lv(t,a,R)}catch(X){Ap(t,a,X)}finally{g!==null&&w.types!==null&&(g.types=w.types),Q.T=g}}else try{g=o(p,u),Lv(t,a,g)}catch(X){Ap(t,a,X)}}function Lv(t,a,o){o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(function(u){$v(t,a,u)},function(u){return Ap(t,a,u)}):$v(t,a,o)}function $v(t,a,o){a.status="fulfilled",a.value=o,Mv(a),t.state=o,a=t.pending,a!==null&&(o=a.next,o===a?t.pending=null:(o=o.next,a.next=o,Ov(t,o)))}function Ap(t,a,o){var u=t.pending;if(t.pending=null,u!==null){u=u.next;do a.status="rejected",a.reason=o,Mv(a),a=a.next;while(a!==u)}t.action=null}function Mv(t){t=t.listeners;for(var a=0;a<t.length;a++)(0,t[a])()}function Nv(t,a){return a}function Iv(t,a){if(ht){var o=jt.formState;if(o!==null){e:{var u=Qe;if(ht){if(Pt){t:{for(var p=Pt,g=Sr;p.nodeType!==8;){if(!g){p=null;break t}if(p=Cr(p.nextSibling),p===null){p=null;break t}}g=p.data,p=g==="F!"||g==="F"?p:null}if(p){Pt=Cr(p.nextSibling),u=p.data==="F!";break e}}Za(u)}u=!1}u&&(a=o[0])}}return o=In(),o.memoizedState=o.baseState=a,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Nv,lastRenderedState:a},o.queue=u,o=tS.bind(null,Qe,u),u.dispatch=o,u=_p(!1),g=Op.bind(null,Qe,!1,u.queue),u=In(),p={state:a,dispatch:null,action:t,pending:null},u.queue=p,o=fk.bind(null,Qe,p,g,o),p.dispatch=o,u.memoizedState=t,[a,o,!1]}function jv(t){var a=en();return Hv(a,$t,t)}function Hv(t,a,o){if(a=Cp(t,a,Nv)[0],t=Pu(wa)[0],typeof a=="object"&&a!==null&&typeof a.then=="function")try{var u=Ol(a)}catch(w){throw w===Ks?Du:w}else u=a;a=en();var p=a.queue,g=p.dispatch;return o!==a.memoizedState&&(Qe.flags|=2048,Qs(9,{destroy:void 0},hk.bind(null,p,o),null)),[u,g,t]}function hk(t,a){t.action=a}function zv(t){var a=en(),o=$t;if(o!==null)return Hv(a,o,t);en(),a=a.memoizedState,o=en();var u=o.queue.dispatch;return o.memoizedState=t,[a,u,!1]}function Qs(t,a,o,u){return t={tag:t,create:o,deps:u,inst:a,next:null},a=Qe.updateQueue,a===null&&(a=Hu(),Qe.updateQueue=a),o=a.lastEffect,o===null?a.lastEffect=t.next=t:(u=o.next,o.next=t,t.next=u,a.lastEffect=t),t}function Pv(){return en().memoizedState}function Uu(t,a,o,u){var p=In();Qe.flags|=t,p.memoizedState=Qs(1|a,{destroy:void 0},o,u===void 0?null:u)}function Bu(t,a,o,u){var p=en();u=u===void 0?null:u;var g=p.memoizedState.inst;$t!==null&&u!==null&&mp(u,$t.memoizedState.deps)?p.memoizedState=Qs(a,g,o,u):(Qe.flags|=t,p.memoizedState=Qs(1|a,g,o,u))}function Uv(t,a){Uu(8390656,8,t,a)}function xp(t,a){Bu(2048,8,t,a)}function pk(t){Qe.flags|=4;var a=Qe.updateQueue;if(a===null)a=Hu(),Qe.updateQueue=a,a.events=[t];else{var o=a.events;o===null?a.events=[t]:o.push(t)}}function Bv(t){var a=en().memoizedState;return pk({ref:a,nextImpl:t}),function(){if((_t&2)!==0)throw Error(r(440));return a.impl.apply(void 0,arguments)}}function qv(t,a){return Bu(4,2,t,a)}function Gv(t,a){return Bu(4,4,t,a)}function Fv(t,a){if(typeof a=="function"){t=t();var o=a(t);return function(){typeof o=="function"?o():a(null)}}if(a!=null)return t=t(),a.current=t,function(){a.current=null}}function Vv(t,a,o){o=o!=null?o.concat([t]):null,Bu(4,4,Fv.bind(null,a,t),o)}function Tp(){}function Kv(t,a){var o=en();a=a===void 0?null:a;var u=o.memoizedState;return a!==null&&mp(a,u[1])?u[0]:(o.memoizedState=[t,a],t)}function Wv(t,a){var o=en();a=a===void 0?null:a;var u=o.memoizedState;if(a!==null&&mp(a,u[1]))return u[0];if(u=t(),as){Rn(!0);try{t()}finally{Rn(!1)}}return o.memoizedState=[u,a],u}function kp(t,a,o){return o===void 0||(Sa&1073741824)!==0&&(ct&261930)===0?t.memoizedState=a:(t.memoizedState=o,t=YS(),Qe.lanes|=t,li|=t,o)}function Yv(t,a,o,u){return tr(o,a)?o:Ys.current!==null?(t=kp(t,o,u),tr(t,a)||(sn=!0),t):(Sa&42)===0||(Sa&1073741824)!==0&&(ct&261930)===0?(sn=!0,t.memoizedState=o):(t=YS(),Qe.lanes|=t,li|=t,a)}function Xv(t,a,o,u,p){var g=ue.p;ue.p=g!==0&&8>g?g:8;var w=Q.T,R={};Q.T=R,Op(t,!1,a,o);try{var P=p(),X=Q.S;if(X!==null&&X(R,P),P!==null&&typeof P=="object"&&typeof P.then=="function"){var re=ck(P,u);Ll(t,a,re,or(t))}else Ll(t,a,u,or(t))}catch(le){Ll(t,a,{then:function(){},status:"rejected",reason:le},or())}finally{ue.p=g,w!==null&&R.types!==null&&(w.types=R.types),Q.T=w}}function gk(){}function Rp(t,a,o,u){if(t.tag!==5)throw Error(r(476));var p=Jv(t).queue;Xv(t,p,a,De,o===null?gk:function(){return Qv(t),o(u)})}function Jv(t){var a=t.memoizedState;if(a!==null)return a;a={memoizedState:De,baseState:De,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:wa,lastRenderedState:De},next:null};var o={};return a.next={memoizedState:o,baseState:o,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:wa,lastRenderedState:o},next:null},t.memoizedState=a,t=t.alternate,t!==null&&(t.memoizedState=a),a}function Qv(t){var a=Jv(t);a.next===null&&(a=t.alternate.memoizedState),Ll(t,a.next.queue,{},or())}function Dp(){return Cn(Yl)}function Zv(){return en().memoizedState}function eS(){return en().memoizedState}function mk(t){for(var a=t.return;a!==null;){switch(a.tag){case 24:case 3:var o=or();t=ni(o);var u=ri(a,t,o);u!==null&&(Wn(u,a,o),Tl(u,a,o)),a={cache:ip()},t.payload=a;return}a=a.return}}function yk(t,a,o){var u=or();o={lane:u,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},qu(t)?nS(a,o):(o=Wh(t,a,o,u),o!==null&&(Wn(o,t,u),rS(o,a,u)))}function tS(t,a,o){var u=or();Ll(t,a,o,u)}function Ll(t,a,o,u){var p={lane:u,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null};if(qu(t))nS(a,p);else{var g=t.alternate;if(t.lanes===0&&(g===null||g.lanes===0)&&(g=a.lastRenderedReducer,g!==null))try{var w=a.lastRenderedState,R=g(w,o);if(p.hasEagerState=!0,p.eagerState=R,tr(R,w))return Eu(t,a,p,0),jt===null&&Cu(),!1}catch{}finally{}if(o=Wh(t,a,p,u),o!==null)return Wn(o,t,u),rS(o,a,u),!0}return!1}function Op(t,a,o,u){if(u={lane:2,revertLane:cg(),gesture:null,action:u,hasEagerState:!1,eagerState:null,next:null},qu(t)){if(a)throw Error(r(479))}else a=Wh(t,o,u,2),a!==null&&Wn(a,t,2)}function qu(t){var a=t.alternate;return t===Qe||a!==null&&a===Qe}function nS(t,a){Xs=Iu=!0;var o=t.pending;o===null?a.next=a:(a.next=o.next,o.next=a),t.pending=a}function rS(t,a,o){if((o&4194048)!==0){var u=a.lanes;u&=t.pendingLanes,o|=u,a.lanes=o,Ce(t,o)}}var $l={readContext:Cn,use:zu,useCallback:Xt,useContext:Xt,useEffect:Xt,useImperativeHandle:Xt,useLayoutEffect:Xt,useInsertionEffect:Xt,useMemo:Xt,useReducer:Xt,useRef:Xt,useState:Xt,useDebugValue:Xt,useDeferredValue:Xt,useTransition:Xt,useSyncExternalStore:Xt,useId:Xt,useHostTransitionStatus:Xt,useFormState:Xt,useActionState:Xt,useOptimistic:Xt,useMemoCache:Xt,useCacheRefresh:Xt};$l.useEffectEvent=Xt;var aS={readContext:Cn,use:zu,useCallback:function(t,a){return In().memoizedState=[t,a===void 0?null:a],t},useContext:Cn,useEffect:Uv,useImperativeHandle:function(t,a,o){o=o!=null?o.concat([t]):null,Uu(4194308,4,Fv.bind(null,a,t),o)},useLayoutEffect:function(t,a){return Uu(4194308,4,t,a)},useInsertionEffect:function(t,a){Uu(4,2,t,a)},useMemo:function(t,a){var o=In();a=a===void 0?null:a;var u=t();if(as){Rn(!0);try{t()}finally{Rn(!1)}}return o.memoizedState=[u,a],u},useReducer:function(t,a,o){var u=In();if(o!==void 0){var p=o(a);if(as){Rn(!0);try{o(a)}finally{Rn(!1)}}}else p=a;return u.memoizedState=u.baseState=p,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:p},u.queue=t,t=t.dispatch=yk.bind(null,Qe,t),[u.memoizedState,t]},useRef:function(t){var a=In();return t={current:t},a.memoizedState=t},useState:function(t){t=_p(t);var a=t.queue,o=tS.bind(null,Qe,a);return a.dispatch=o,[t.memoizedState,o]},useDebugValue:Tp,useDeferredValue:function(t,a){var o=In();return kp(o,t,a)},useTransition:function(){var t=_p(!1);return t=Xv.bind(null,Qe,t.queue,!0,!1),In().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,a,o){var u=Qe,p=In();if(ht){if(o===void 0)throw Error(r(407));o=o()}else{if(o=a(),jt===null)throw Error(r(349));(ct&127)!==0||Av(u,a,o)}p.memoizedState=o;var g={value:o,getSnapshot:a};return p.queue=g,Uv(Tv.bind(null,u,g,t),[t]),u.flags|=2048,Qs(9,{destroy:void 0},xv.bind(null,u,g,o,a),null),o},useId:function(){var t=In(),a=jt.identifierPrefix;if(ht){var o=Zr,u=Qr;o=(u&~(1<<32-dn(u)-1)).toString(32)+o,a="_"+a+"R_"+o,o=ju++,0<o&&(a+="H"+o.toString(32)),a+="_"}else o=uk++,a="_"+a+"r_"+o.toString(32)+"_";return t.memoizedState=a},useHostTransitionStatus:Dp,useFormState:Iv,useActionState:Iv,useOptimistic:function(t){var a=In();a.memoizedState=a.baseState=t;var o={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return a.queue=o,a=Op.bind(null,Qe,!0,o),o.dispatch=a,[t,a]},useMemoCache:wp,useCacheRefresh:function(){return In().memoizedState=mk.bind(null,Qe)},useEffectEvent:function(t){var a=In(),o={impl:t};return a.memoizedState=o,function(){if((_t&2)!==0)throw Error(r(440));return o.impl.apply(void 0,arguments)}}},Lp={readContext:Cn,use:zu,useCallback:Kv,useContext:Cn,useEffect:xp,useImperativeHandle:Vv,useInsertionEffect:qv,useLayoutEffect:Gv,useMemo:Wv,useReducer:Pu,useRef:Pv,useState:function(){return Pu(wa)},useDebugValue:Tp,useDeferredValue:function(t,a){var o=en();return Yv(o,$t.memoizedState,t,a)},useTransition:function(){var t=Pu(wa)[0],a=en().memoizedState;return[typeof t=="boolean"?t:Ol(t),a]},useSyncExternalStore:_v,useId:Zv,useHostTransitionStatus:Dp,useFormState:jv,useActionState:jv,useOptimistic:function(t,a){var o=en();return Dv(o,$t,t,a)},useMemoCache:wp,useCacheRefresh:eS};Lp.useEffectEvent=Bv;var iS={readContext:Cn,use:zu,useCallback:Kv,useContext:Cn,useEffect:xp,useImperativeHandle:Vv,useInsertionEffect:qv,useLayoutEffect:Gv,useMemo:Wv,useReducer:Ep,useRef:Pv,useState:function(){return Ep(wa)},useDebugValue:Tp,useDeferredValue:function(t,a){var o=en();return $t===null?kp(o,t,a):Yv(o,$t.memoizedState,t,a)},useTransition:function(){var t=Ep(wa)[0],a=en().memoizedState;return[typeof t=="boolean"?t:Ol(t),a]},useSyncExternalStore:_v,useId:Zv,useHostTransitionStatus:Dp,useFormState:zv,useActionState:zv,useOptimistic:function(t,a){var o=en();return $t!==null?Dv(o,$t,t,a):(o.baseState=t,[t,o.queue.dispatch])},useMemoCache:wp,useCacheRefresh:eS};iS.useEffectEvent=Bv;function $p(t,a,o,u){a=t.memoizedState,o=o(u,a),o=o==null?a:y({},a,o),t.memoizedState=o,t.lanes===0&&(t.updateQueue.baseState=o)}var Mp={enqueueSetState:function(t,a,o){t=t._reactInternals;var u=or(),p=ni(u);p.payload=a,o!=null&&(p.callback=o),a=ri(t,p,u),a!==null&&(Wn(a,t,u),Tl(a,t,u))},enqueueReplaceState:function(t,a,o){t=t._reactInternals;var u=or(),p=ni(u);p.tag=1,p.payload=a,o!=null&&(p.callback=o),a=ri(t,p,u),a!==null&&(Wn(a,t,u),Tl(a,t,u))},enqueueForceUpdate:function(t,a){t=t._reactInternals;var o=or(),u=ni(o);u.tag=2,a!=null&&(u.callback=a),a=ri(t,u,o),a!==null&&(Wn(a,t,o),Tl(a,t,o))}};function sS(t,a,o,u,p,g,w){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(u,g,w):a.prototype&&a.prototype.isPureReactComponent?!vl(o,u)||!vl(p,g):!0}function oS(t,a,o,u){t=a.state,typeof a.componentWillReceiveProps=="function"&&a.componentWillReceiveProps(o,u),typeof a.UNSAFE_componentWillReceiveProps=="function"&&a.UNSAFE_componentWillReceiveProps(o,u),a.state!==t&&Mp.enqueueReplaceState(a,a.state,null)}function is(t,a){var o=a;if("ref"in a){o={};for(var u in a)u!=="ref"&&(o[u]=a[u])}if(t=t.defaultProps){o===a&&(o=y({},o));for(var p in t)o[p]===void 0&&(o[p]=t[p])}return o}function lS(t){wu(t)}function cS(t){console.error(t)}function uS(t){wu(t)}function Gu(t,a){try{var o=t.onUncaughtError;o(a.value,{componentStack:a.stack})}catch(u){setTimeout(function(){throw u})}}function dS(t,a,o){try{var u=t.onCaughtError;u(o.value,{componentStack:o.stack,errorBoundary:a.tag===1?a.stateNode:null})}catch(p){setTimeout(function(){throw p})}}function Np(t,a,o){return o=ni(o),o.tag=3,o.payload={element:null},o.callback=function(){Gu(t,a)},o}function fS(t){return t=ni(t),t.tag=3,t}function hS(t,a,o,u){var p=o.type.getDerivedStateFromError;if(typeof p=="function"){var g=u.value;t.payload=function(){return p(g)},t.callback=function(){dS(a,o,u)}}var w=o.stateNode;w!==null&&typeof w.componentDidCatch=="function"&&(t.callback=function(){dS(a,o,u),typeof p!="function"&&(ci===null?ci=new Set([this]):ci.add(this));var R=u.stack;this.componentDidCatch(u.value,{componentStack:R!==null?R:""})})}function bk(t,a,o,u,p){if(o.flags|=32768,u!==null&&typeof u=="object"&&typeof u.then=="function"){if(a=o.alternate,a!==null&&Gs(a,o,p,!0),o=rr.current,o!==null){switch(o.tag){case 31:case 13:return wr===null?nd():o.alternate===null&&Jt===0&&(Jt=3),o.flags&=-257,o.flags|=65536,o.lanes=p,u===Ou?o.flags|=16384:(a=o.updateQueue,a===null?o.updateQueue=new Set([u]):a.add(u),sg(t,u,p)),!1;case 22:return o.flags|=65536,u===Ou?o.flags|=16384:(a=o.updateQueue,a===null?(a={transitions:null,markerInstances:null,retryQueue:new Set([u])},o.updateQueue=a):(o=a.retryQueue,o===null?a.retryQueue=new Set([u]):o.add(u)),sg(t,u,p)),!1}throw Error(r(435,o.tag))}return sg(t,u,p),nd(),!1}if(ht)return a=rr.current,a!==null?((a.flags&65536)===0&&(a.flags|=256),a.flags|=65536,a.lanes=p,u!==ep&&(t=Error(r(422),{cause:u}),Cl(yr(t,o)))):(u!==ep&&(a=Error(r(423),{cause:u}),Cl(yr(a,o))),t=t.current.alternate,t.flags|=65536,p&=-p,t.lanes|=p,u=yr(u,o),p=Np(t.stateNode,u,p),dp(t,p),Jt!==4&&(Jt=2)),!1;var g=Error(r(520),{cause:u});if(g=yr(g,o),Ul===null?Ul=[g]:Ul.push(g),Jt!==4&&(Jt=2),a===null)return!0;u=yr(u,o),o=a;do{switch(o.tag){case 3:return o.flags|=65536,t=p&-p,o.lanes|=t,t=Np(o.stateNode,u,t),dp(o,t),!1;case 1:if(a=o.type,g=o.stateNode,(o.flags&128)===0&&(typeof a.getDerivedStateFromError=="function"||g!==null&&typeof g.componentDidCatch=="function"&&(ci===null||!ci.has(g))))return o.flags|=65536,p&=-p,o.lanes|=p,p=fS(p),hS(p,t,o,u),dp(o,p),!1}o=o.return}while(o!==null);return!1}var Ip=Error(r(461)),sn=!1;function En(t,a,o,u){a.child=t===null?yv(a,null,o,u):rs(a,t.child,o,u)}function pS(t,a,o,u,p){o=o.render;var g=a.ref;if("ref"in u){var w={};for(var R in u)R!=="ref"&&(w[R]=u[R])}else w=u;return Zi(a),u=yp(t,a,o,w,g,p),R=bp(),t!==null&&!sn?(vp(t,a,p),Ca(t,a,p)):(ht&&R&&Qh(a),a.flags|=1,En(t,a,u,p),a.child)}function gS(t,a,o,u,p){if(t===null){var g=o.type;return typeof g=="function"&&!Yh(g)&&g.defaultProps===void 0&&o.compare===null?(a.tag=15,a.type=g,mS(t,a,g,u,p)):(t=Au(o.type,null,u,a,a.mode,p),t.ref=a.ref,t.return=a,a.child=t)}if(g=t.child,!Gp(t,p)){var w=g.memoizedProps;if(o=o.compare,o=o!==null?o:vl,o(w,u)&&t.ref===a.ref)return Ca(t,a,p)}return a.flags|=1,t=ma(g,u),t.ref=a.ref,t.return=a,a.child=t}function mS(t,a,o,u,p){if(t!==null){var g=t.memoizedProps;if(vl(g,u)&&t.ref===a.ref)if(sn=!1,a.pendingProps=u=g,Gp(t,p))(t.flags&131072)!==0&&(sn=!0);else return a.lanes=t.lanes,Ca(t,a,p)}return jp(t,a,o,u,p)}function yS(t,a,o,u){var p=u.children,g=t!==null?t.memoizedState:null;if(t===null&&a.stateNode===null&&(a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),u.mode==="hidden"){if((a.flags&128)!==0){if(g=g!==null?g.baseLanes|o:o,t!==null){for(u=a.child=t.child,p=0;u!==null;)p=p|u.lanes|u.childLanes,u=u.sibling;u=p&~g}else u=0,a.child=null;return bS(t,a,g,o,u)}if((o&536870912)!==0)a.memoizedState={baseLanes:0,cachePool:null},t!==null&&Ru(a,g!==null?g.cachePool:null),g!==null?Sv(a,g):hp(),wv(a);else return u=a.lanes=536870912,bS(t,a,g!==null?g.baseLanes|o:o,o,u)}else g!==null?(Ru(a,g.cachePool),Sv(a,g),ii(),a.memoizedState=null):(t!==null&&Ru(a,null),hp(),ii());return En(t,a,p,o),a.child}function Ml(t,a){return t!==null&&t.tag===22||a.stateNode!==null||(a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.sibling}function bS(t,a,o,u,p){var g=op();return g=g===null?null:{parent:rn._currentValue,pool:g},a.memoizedState={baseLanes:o,cachePool:g},t!==null&&Ru(a,null),hp(),wv(a),t!==null&&Gs(t,a,u,!0),a.childLanes=p,null}function Fu(t,a){return a=Ku({mode:a.mode,children:a.children},t.mode),a.ref=t.ref,t.child=a,a.return=t,a}function vS(t,a,o){return rs(a,t.child,null,o),t=Fu(a,a.pendingProps),t.flags|=2,ar(a),a.memoizedState=null,t}function vk(t,a,o){var u=a.pendingProps,p=(a.flags&128)!==0;if(a.flags&=-129,t===null){if(ht){if(u.mode==="hidden")return t=Fu(a,u),a.lanes=536870912,Ml(null,t);if(gp(a),(t=Pt)?(t=Ow(t,Sr),t=t!==null&&t.data==="&"?t:null,t!==null&&(a.memoizedState={dehydrated:t,treeContext:Ja!==null?{id:Qr,overflow:Zr}:null,retryLane:536870912,hydrationErrors:null},o=nv(t),o.return=a,a.child=o,wn=a,Pt=null)):t=null,t===null)throw Za(a);return a.lanes=536870912,null}return Fu(a,u)}var g=t.memoizedState;if(g!==null){var w=g.dehydrated;if(gp(a),p)if(a.flags&256)a.flags&=-257,a=vS(t,a,o);else if(a.memoizedState!==null)a.child=t.child,a.flags|=128,a=null;else throw Error(r(558));else if(sn||Gs(t,a,o,!1),p=(o&t.childLanes)!==0,sn||p){if(u=jt,u!==null&&(w=He(u,o),w!==0&&w!==g.retryLane))throw g.retryLane=w,Yi(t,w),Wn(u,t,w),Ip;nd(),a=vS(t,a,o)}else t=g.treeContext,Pt=Cr(w.nextSibling),wn=a,ht=!0,Qa=null,Sr=!1,t!==null&&iv(a,t),a=Fu(a,u),a.flags|=4096;return a}return t=ma(t.child,{mode:u.mode,children:u.children}),t.ref=a.ref,a.child=t,t.return=a,t}function Vu(t,a){var o=a.ref;if(o===null)t!==null&&t.ref!==null&&(a.flags|=4194816);else{if(typeof o!="function"&&typeof o!="object")throw Error(r(284));(t===null||t.ref!==o)&&(a.flags|=4194816)}}function jp(t,a,o,u,p){return Zi(a),o=yp(t,a,o,u,void 0,p),u=bp(),t!==null&&!sn?(vp(t,a,p),Ca(t,a,p)):(ht&&u&&Qh(a),a.flags|=1,En(t,a,o,p),a.child)}function SS(t,a,o,u,p,g){return Zi(a),a.updateQueue=null,o=Ev(a,u,o,p),Cv(t),u=bp(),t!==null&&!sn?(vp(t,a,g),Ca(t,a,g)):(ht&&u&&Qh(a),a.flags|=1,En(t,a,o,g),a.child)}function wS(t,a,o,u,p){if(Zi(a),a.stateNode===null){var g=Ps,w=o.contextType;typeof w=="object"&&w!==null&&(g=Cn(w)),g=new o(u,g),a.memoizedState=g.state!==null&&g.state!==void 0?g.state:null,g.updater=Mp,a.stateNode=g,g._reactInternals=a,g=a.stateNode,g.props=u,g.state=a.memoizedState,g.refs={},cp(a),w=o.contextType,g.context=typeof w=="object"&&w!==null?Cn(w):Ps,g.state=a.memoizedState,w=o.getDerivedStateFromProps,typeof w=="function"&&($p(a,o,w,u),g.state=a.memoizedState),typeof o.getDerivedStateFromProps=="function"||typeof g.getSnapshotBeforeUpdate=="function"||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(w=g.state,typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount(),w!==g.state&&Mp.enqueueReplaceState(g,g.state,null),Rl(a,u,g,p),kl(),g.state=a.memoizedState),typeof g.componentDidMount=="function"&&(a.flags|=4194308),u=!0}else if(t===null){g=a.stateNode;var R=a.memoizedProps,P=is(o,R);g.props=P;var X=g.context,re=o.contextType;w=Ps,typeof re=="object"&&re!==null&&(w=Cn(re));var le=o.getDerivedStateFromProps;re=typeof le=="function"||typeof g.getSnapshotBeforeUpdate=="function",R=a.pendingProps!==R,re||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(R||X!==w)&&oS(a,g,u,w),ti=!1;var J=a.memoizedState;g.state=J,Rl(a,u,g,p),kl(),X=a.memoizedState,R||J!==X||ti?(typeof le=="function"&&($p(a,o,le,u),X=a.memoizedState),(P=ti||sS(a,o,P,u,J,X,w))?(re||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount()),typeof g.componentDidMount=="function"&&(a.flags|=4194308)):(typeof g.componentDidMount=="function"&&(a.flags|=4194308),a.memoizedProps=u,a.memoizedState=X),g.props=u,g.state=X,g.context=w,u=P):(typeof g.componentDidMount=="function"&&(a.flags|=4194308),u=!1)}else{g=a.stateNode,up(t,a),w=a.memoizedProps,re=is(o,w),g.props=re,le=a.pendingProps,J=g.context,X=o.contextType,P=Ps,typeof X=="object"&&X!==null&&(P=Cn(X)),R=o.getDerivedStateFromProps,(X=typeof R=="function"||typeof g.getSnapshotBeforeUpdate=="function")||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(w!==le||J!==P)&&oS(a,g,u,P),ti=!1,J=a.memoizedState,g.state=J,Rl(a,u,g,p),kl();var te=a.memoizedState;w!==le||J!==te||ti||t!==null&&t.dependencies!==null&&Tu(t.dependencies)?(typeof R=="function"&&($p(a,o,R,u),te=a.memoizedState),(re=ti||sS(a,o,re,u,J,te,P)||t!==null&&t.dependencies!==null&&Tu(t.dependencies))?(X||typeof g.UNSAFE_componentWillUpdate!="function"&&typeof g.componentWillUpdate!="function"||(typeof g.componentWillUpdate=="function"&&g.componentWillUpdate(u,te,P),typeof g.UNSAFE_componentWillUpdate=="function"&&g.UNSAFE_componentWillUpdate(u,te,P)),typeof g.componentDidUpdate=="function"&&(a.flags|=4),typeof g.getSnapshotBeforeUpdate=="function"&&(a.flags|=1024)):(typeof g.componentDidUpdate!="function"||w===t.memoizedProps&&J===t.memoizedState||(a.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||w===t.memoizedProps&&J===t.memoizedState||(a.flags|=1024),a.memoizedProps=u,a.memoizedState=te),g.props=u,g.state=te,g.context=P,u=re):(typeof g.componentDidUpdate!="function"||w===t.memoizedProps&&J===t.memoizedState||(a.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||w===t.memoizedProps&&J===t.memoizedState||(a.flags|=1024),u=!1)}return g=u,Vu(t,a),u=(a.flags&128)!==0,g||u?(g=a.stateNode,o=u&&typeof o.getDerivedStateFromError!="function"?null:g.render(),a.flags|=1,t!==null&&u?(a.child=rs(a,t.child,null,p),a.child=rs(a,null,o,p)):En(t,a,o,p),a.memoizedState=g.state,t=a.child):t=Ca(t,a,p),t}function CS(t,a,o,u){return Ji(),a.flags|=256,En(t,a,o,u),a.child}var Hp={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function zp(t){return{baseLanes:t,cachePool:dv()}}function Pp(t,a,o){return t=t!==null?t.childLanes&~o:0,a&&(t|=sr),t}function ES(t,a,o){var u=a.pendingProps,p=!1,g=(a.flags&128)!==0,w;if((w=g)||(w=t!==null&&t.memoizedState===null?!1:(Zt.current&2)!==0),w&&(p=!0,a.flags&=-129),w=(a.flags&32)!==0,a.flags&=-33,t===null){if(ht){if(p?ai(a):ii(),(t=Pt)?(t=Ow(t,Sr),t=t!==null&&t.data!=="&"?t:null,t!==null&&(a.memoizedState={dehydrated:t,treeContext:Ja!==null?{id:Qr,overflow:Zr}:null,retryLane:536870912,hydrationErrors:null},o=nv(t),o.return=a,a.child=o,wn=a,Pt=null)):t=null,t===null)throw Za(a);return Cg(t)?a.lanes=32:a.lanes=536870912,null}var R=u.children;return u=u.fallback,p?(ii(),p=a.mode,R=Ku({mode:"hidden",children:R},p),u=Xi(u,p,o,null),R.return=a,u.return=a,R.sibling=u,a.child=R,u=a.child,u.memoizedState=zp(o),u.childLanes=Pp(t,w,o),a.memoizedState=Hp,Ml(null,u)):(ai(a),Up(a,R))}var P=t.memoizedState;if(P!==null&&(R=P.dehydrated,R!==null)){if(g)a.flags&256?(ai(a),a.flags&=-257,a=Bp(t,a,o)):a.memoizedState!==null?(ii(),a.child=t.child,a.flags|=128,a=null):(ii(),R=u.fallback,p=a.mode,u=Ku({mode:"visible",children:u.children},p),R=Xi(R,p,o,null),R.flags|=2,u.return=a,R.return=a,u.sibling=R,a.child=u,rs(a,t.child,null,o),u=a.child,u.memoizedState=zp(o),u.childLanes=Pp(t,w,o),a.memoizedState=Hp,a=Ml(null,u));else if(ai(a),Cg(R)){if(w=R.nextSibling&&R.nextSibling.dataset,w)var X=w.dgst;w=X,u=Error(r(419)),u.stack="",u.digest=w,Cl({value:u,source:null,stack:null}),a=Bp(t,a,o)}else if(sn||Gs(t,a,o,!1),w=(o&t.childLanes)!==0,sn||w){if(w=jt,w!==null&&(u=He(w,o),u!==0&&u!==P.retryLane))throw P.retryLane=u,Yi(t,u),Wn(w,t,u),Ip;wg(R)||nd(),a=Bp(t,a,o)}else wg(R)?(a.flags|=192,a.child=t.child,a=null):(t=P.treeContext,Pt=Cr(R.nextSibling),wn=a,ht=!0,Qa=null,Sr=!1,t!==null&&iv(a,t),a=Up(a,u.children),a.flags|=4096);return a}return p?(ii(),R=u.fallback,p=a.mode,P=t.child,X=P.sibling,u=ma(P,{mode:"hidden",children:u.children}),u.subtreeFlags=P.subtreeFlags&65011712,X!==null?R=ma(X,R):(R=Xi(R,p,o,null),R.flags|=2),R.return=a,u.return=a,u.sibling=R,a.child=u,Ml(null,u),u=a.child,R=t.child.memoizedState,R===null?R=zp(o):(p=R.cachePool,p!==null?(P=rn._currentValue,p=p.parent!==P?{parent:P,pool:P}:p):p=dv(),R={baseLanes:R.baseLanes|o,cachePool:p}),u.memoizedState=R,u.childLanes=Pp(t,w,o),a.memoizedState=Hp,Ml(t.child,u)):(ai(a),o=t.child,t=o.sibling,o=ma(o,{mode:"visible",children:u.children}),o.return=a,o.sibling=null,t!==null&&(w=a.deletions,w===null?(a.deletions=[t],a.flags|=16):w.push(t)),a.child=o,a.memoizedState=null,o)}function Up(t,a){return a=Ku({mode:"visible",children:a},t.mode),a.return=t,t.child=a}function Ku(t,a){return t=nr(22,t,null,a),t.lanes=0,t}function Bp(t,a,o){return rs(a,t.child,null,o),t=Up(a,a.pendingProps.children),t.flags|=2,a.memoizedState=null,t}function _S(t,a,o){t.lanes|=a;var u=t.alternate;u!==null&&(u.lanes|=a),rp(t.return,a,o)}function qp(t,a,o,u,p,g){var w=t.memoizedState;w===null?t.memoizedState={isBackwards:a,rendering:null,renderingStartTime:0,last:u,tail:o,tailMode:p,treeForkCount:g}:(w.isBackwards=a,w.rendering=null,w.renderingStartTime=0,w.last=u,w.tail=o,w.tailMode=p,w.treeForkCount=g)}function AS(t,a,o){var u=a.pendingProps,p=u.revealOrder,g=u.tail;u=u.children;var w=Zt.current,R=(w&2)!==0;if(R?(w=w&1|2,a.flags|=128):w&=1,fe(Zt,w),En(t,a,u,o),u=ht?wl:0,!R&&t!==null&&(t.flags&128)!==0)e:for(t=a.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&_S(t,o,a);else if(t.tag===19)_S(t,o,a);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===a)break e;for(;t.sibling===null;){if(t.return===null||t.return===a)break e;t=t.return}t.sibling.return=t.return,t=t.sibling}switch(p){case"forwards":for(o=a.child,p=null;o!==null;)t=o.alternate,t!==null&&Nu(t)===null&&(p=o),o=o.sibling;o=p,o===null?(p=a.child,a.child=null):(p=o.sibling,o.sibling=null),qp(a,!1,p,o,g,u);break;case"backwards":case"unstable_legacy-backwards":for(o=null,p=a.child,a.child=null;p!==null;){if(t=p.alternate,t!==null&&Nu(t)===null){a.child=p;break}t=p.sibling,p.sibling=o,o=p,p=t}qp(a,!0,o,null,g,u);break;case"together":qp(a,!1,null,null,void 0,u);break;default:a.memoizedState=null}return a.child}function Ca(t,a,o){if(t!==null&&(a.dependencies=t.dependencies),li|=a.lanes,(o&a.childLanes)===0)if(t!==null){if(Gs(t,a,o,!1),(o&a.childLanes)===0)return null}else return null;if(t!==null&&a.child!==t.child)throw Error(r(153));if(a.child!==null){for(t=a.child,o=ma(t,t.pendingProps),a.child=o,o.return=a;t.sibling!==null;)t=t.sibling,o=o.sibling=ma(t,t.pendingProps),o.return=a;o.sibling=null}return a.child}function Gp(t,a){return(t.lanes&a)!==0?!0:(t=t.dependencies,!!(t!==null&&Tu(t)))}function Sk(t,a,o){switch(a.tag){case 3:$e(a,a.stateNode.containerInfo),ei(a,rn,t.memoizedState.cache),Ji();break;case 27:case 5:Ie(a);break;case 4:$e(a,a.stateNode.containerInfo);break;case 10:ei(a,a.type,a.memoizedProps.value);break;case 31:if(a.memoizedState!==null)return a.flags|=128,gp(a),null;break;case 13:var u=a.memoizedState;if(u!==null)return u.dehydrated!==null?(ai(a),a.flags|=128,null):(o&a.child.childLanes)!==0?ES(t,a,o):(ai(a),t=Ca(t,a,o),t!==null?t.sibling:null);ai(a);break;case 19:var p=(t.flags&128)!==0;if(u=(o&a.childLanes)!==0,u||(Gs(t,a,o,!1),u=(o&a.childLanes)!==0),p){if(u)return AS(t,a,o);a.flags|=128}if(p=a.memoizedState,p!==null&&(p.rendering=null,p.tail=null,p.lastEffect=null),fe(Zt,Zt.current),u)break;return null;case 22:return a.lanes=0,yS(t,a,o,a.pendingProps);case 24:ei(a,rn,t.memoizedState.cache)}return Ca(t,a,o)}function xS(t,a,o){if(t!==null)if(t.memoizedProps!==a.pendingProps)sn=!0;else{if(!Gp(t,o)&&(a.flags&128)===0)return sn=!1,Sk(t,a,o);sn=(t.flags&131072)!==0}else sn=!1,ht&&(a.flags&1048576)!==0&&av(a,wl,a.index);switch(a.lanes=0,a.tag){case 16:e:{var u=a.pendingProps;if(t=ts(a.elementType),a.type=t,typeof t=="function")Yh(t)?(u=is(t,u),a.tag=1,a=wS(null,a,t,u,o)):(a.tag=0,a=jp(null,a,t,u,o));else{if(t!=null){var p=t.$$typeof;if(p===L){a.tag=11,a=pS(null,a,t,u,o);break e}else if(p===z){a.tag=14,a=gS(null,a,t,u,o);break e}}throw a=ze(t)||t,Error(r(306,a,""))}}return a;case 0:return jp(t,a,a.type,a.pendingProps,o);case 1:return u=a.type,p=is(u,a.pendingProps),wS(t,a,u,p,o);case 3:e:{if($e(a,a.stateNode.containerInfo),t===null)throw Error(r(387));u=a.pendingProps;var g=a.memoizedState;p=g.element,up(t,a),Rl(a,u,null,o);var w=a.memoizedState;if(u=w.cache,ei(a,rn,u),u!==g.cache&&ap(a,[rn],o,!0),kl(),u=w.element,g.isDehydrated)if(g={element:u,isDehydrated:!1,cache:w.cache},a.updateQueue.baseState=g,a.memoizedState=g,a.flags&256){a=CS(t,a,u,o);break e}else if(u!==p){p=yr(Error(r(424)),a),Cl(p),a=CS(t,a,u,o);break e}else{switch(t=a.stateNode.containerInfo,t.nodeType){case 9:t=t.body;break;default:t=t.nodeName==="HTML"?t.ownerDocument.body:t}for(Pt=Cr(t.firstChild),wn=a,ht=!0,Qa=null,Sr=!0,o=yv(a,null,u,o),a.child=o;o;)o.flags=o.flags&-3|4096,o=o.sibling}else{if(Ji(),u===p){a=Ca(t,a,o);break e}En(t,a,u,o)}a=a.child}return a;case 26:return Vu(t,a),t===null?(o=jw(a.type,null,a.pendingProps,null))?a.memoizedState=o:ht||(o=a.type,t=a.pendingProps,u=cd(se.current).createElement(o),u[Ft]=a,u[Dn]=t,_n(u,o,t),nn(u),a.stateNode=u):a.memoizedState=jw(a.type,t.memoizedProps,a.pendingProps,t.memoizedState),null;case 27:return Ie(a),t===null&&ht&&(u=a.stateNode=Mw(a.type,a.pendingProps,se.current),wn=a,Sr=!0,p=Pt,hi(a.type)?(Eg=p,Pt=Cr(u.firstChild)):Pt=p),En(t,a,a.pendingProps.children,o),Vu(t,a),t===null&&(a.flags|=4194304),a.child;case 5:return t===null&&ht&&((p=u=Pt)&&(u=Xk(u,a.type,a.pendingProps,Sr),u!==null?(a.stateNode=u,wn=a,Pt=Cr(u.firstChild),Sr=!1,p=!0):p=!1),p||Za(a)),Ie(a),p=a.type,g=a.pendingProps,w=t!==null?t.memoizedProps:null,u=g.children,bg(p,g)?u=null:w!==null&&bg(p,w)&&(a.flags|=32),a.memoizedState!==null&&(p=yp(t,a,dk,null,null,o),Yl._currentValue=p),Vu(t,a),En(t,a,u,o),a.child;case 6:return t===null&&ht&&((t=o=Pt)&&(o=Jk(o,a.pendingProps,Sr),o!==null?(a.stateNode=o,wn=a,Pt=null,t=!0):t=!1),t||Za(a)),null;case 13:return ES(t,a,o);case 4:return $e(a,a.stateNode.containerInfo),u=a.pendingProps,t===null?a.child=rs(a,null,u,o):En(t,a,u,o),a.child;case 11:return pS(t,a,a.type,a.pendingProps,o);case 7:return En(t,a,a.pendingProps,o),a.child;case 8:return En(t,a,a.pendingProps.children,o),a.child;case 12:return En(t,a,a.pendingProps.children,o),a.child;case 10:return u=a.pendingProps,ei(a,a.type,u.value),En(t,a,u.children,o),a.child;case 9:return p=a.type._context,u=a.pendingProps.children,Zi(a),p=Cn(p),u=u(p),a.flags|=1,En(t,a,u,o),a.child;case 14:return gS(t,a,a.type,a.pendingProps,o);case 15:return mS(t,a,a.type,a.pendingProps,o);case 19:return AS(t,a,o);case 31:return vk(t,a,o);case 22:return yS(t,a,o,a.pendingProps);case 24:return Zi(a),u=Cn(rn),t===null?(p=op(),p===null&&(p=jt,g=ip(),p.pooledCache=g,g.refCount++,g!==null&&(p.pooledCacheLanes|=o),p=g),a.memoizedState={parent:u,cache:p},cp(a),ei(a,rn,p)):((t.lanes&o)!==0&&(up(t,a),Rl(a,null,null,o),kl()),p=t.memoizedState,g=a.memoizedState,p.parent!==u?(p={parent:u,cache:u},a.memoizedState=p,a.lanes===0&&(a.memoizedState=a.updateQueue.baseState=p),ei(a,rn,u)):(u=g.cache,ei(a,rn,u),u!==p.cache&&ap(a,[rn],o,!0))),En(t,a,a.pendingProps.children,o),a.child;case 29:throw a.pendingProps}throw Error(r(156,a.tag))}function Ea(t){t.flags|=4}function Fp(t,a,o,u,p){if((a=(t.mode&32)!==0)&&(a=!1),a){if(t.flags|=16777216,(p&335544128)===p)if(t.stateNode.complete)t.flags|=8192;else if(ZS())t.flags|=8192;else throw ns=Ou,lp}else t.flags&=-16777217}function TS(t,a){if(a.type!=="stylesheet"||(a.state.loading&4)!==0)t.flags&=-16777217;else if(t.flags|=16777216,!Bw(a))if(ZS())t.flags|=8192;else throw ns=Ou,lp}function Wu(t,a){a!==null&&(t.flags|=4),t.flags&16384&&(a=t.tag!==22?Me():536870912,t.lanes|=a,no|=a)}function Nl(t,a){if(!ht)switch(t.tailMode){case"hidden":a=t.tail;for(var o=null;a!==null;)a.alternate!==null&&(o=a),a=a.sibling;o===null?t.tail=null:o.sibling=null;break;case"collapsed":o=t.tail;for(var u=null;o!==null;)o.alternate!==null&&(u=o),o=o.sibling;u===null?a||t.tail===null?t.tail=null:t.tail.sibling=null:u.sibling=null}}function Ut(t){var a=t.alternate!==null&&t.alternate.child===t.child,o=0,u=0;if(a)for(var p=t.child;p!==null;)o|=p.lanes|p.childLanes,u|=p.subtreeFlags&65011712,u|=p.flags&65011712,p.return=t,p=p.sibling;else for(p=t.child;p!==null;)o|=p.lanes|p.childLanes,u|=p.subtreeFlags,u|=p.flags,p.return=t,p=p.sibling;return t.subtreeFlags|=u,t.childLanes=o,a}function wk(t,a,o){var u=a.pendingProps;switch(Zh(a),a.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ut(a),null;case 1:return Ut(a),null;case 3:return o=a.stateNode,u=null,t!==null&&(u=t.memoizedState.cache),a.memoizedState.cache!==u&&(a.flags|=2048),va(rn),Te(),o.pendingContext&&(o.context=o.pendingContext,o.pendingContext=null),(t===null||t.child===null)&&(qs(a)?Ea(a):t===null||t.memoizedState.isDehydrated&&(a.flags&256)===0||(a.flags|=1024,tp())),Ut(a),null;case 26:var p=a.type,g=a.memoizedState;return t===null?(Ea(a),g!==null?(Ut(a),TS(a,g)):(Ut(a),Fp(a,p,null,u,o))):g?g!==t.memoizedState?(Ea(a),Ut(a),TS(a,g)):(Ut(a),a.flags&=-16777217):(t=t.memoizedProps,t!==u&&Ea(a),Ut(a),Fp(a,p,t,u,o)),null;case 27:if(xt(a),o=se.current,p=a.type,t!==null&&a.stateNode!=null)t.memoizedProps!==u&&Ea(a);else{if(!u){if(a.stateNode===null)throw Error(r(166));return Ut(a),null}t=he.current,qs(a)?sv(a):(t=Mw(p,u,o),a.stateNode=t,Ea(a))}return Ut(a),null;case 5:if(xt(a),p=a.type,t!==null&&a.stateNode!=null)t.memoizedProps!==u&&Ea(a);else{if(!u){if(a.stateNode===null)throw Error(r(166));return Ut(a),null}if(g=he.current,qs(a))sv(a);else{var w=cd(se.current);switch(g){case 1:g=w.createElementNS("http://www.w3.org/2000/svg",p);break;case 2:g=w.createElementNS("http://www.w3.org/1998/Math/MathML",p);break;default:switch(p){case"svg":g=w.createElementNS("http://www.w3.org/2000/svg",p);break;case"math":g=w.createElementNS("http://www.w3.org/1998/Math/MathML",p);break;case"script":g=w.createElement("div"),g.innerHTML="<script><\/script>",g=g.removeChild(g.firstChild);break;case"select":g=typeof u.is=="string"?w.createElement("select",{is:u.is}):w.createElement("select"),u.multiple?g.multiple=!0:u.size&&(g.size=u.size);break;default:g=typeof u.is=="string"?w.createElement(p,{is:u.is}):w.createElement(p)}}g[Ft]=a,g[Dn]=u;e:for(w=a.child;w!==null;){if(w.tag===5||w.tag===6)g.appendChild(w.stateNode);else if(w.tag!==4&&w.tag!==27&&w.child!==null){w.child.return=w,w=w.child;continue}if(w===a)break e;for(;w.sibling===null;){if(w.return===null||w.return===a)break e;w=w.return}w.sibling.return=w.return,w=w.sibling}a.stateNode=g;e:switch(_n(g,p,u),p){case"button":case"input":case"select":case"textarea":u=!!u.autoFocus;break e;case"img":u=!0;break e;default:u=!1}u&&Ea(a)}}return Ut(a),Fp(a,a.type,t===null?null:t.memoizedProps,a.pendingProps,o),null;case 6:if(t&&a.stateNode!=null)t.memoizedProps!==u&&Ea(a);else{if(typeof u!="string"&&a.stateNode===null)throw Error(r(166));if(t=se.current,qs(a)){if(t=a.stateNode,o=a.memoizedProps,u=null,p=wn,p!==null)switch(p.tag){case 27:case 5:u=p.memoizedProps}t[Ft]=a,t=!!(t.nodeValue===o||u!==null&&u.suppressHydrationWarning===!0||Ew(t.nodeValue,o)),t||Za(a,!0)}else t=cd(t).createTextNode(u),t[Ft]=a,a.stateNode=t}return Ut(a),null;case 31:if(o=a.memoizedState,t===null||t.memoizedState!==null){if(u=qs(a),o!==null){if(t===null){if(!u)throw Error(r(318));if(t=a.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(557));t[Ft]=a}else Ji(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;Ut(a),t=!1}else o=tp(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=o),t=!0;if(!t)return a.flags&256?(ar(a),a):(ar(a),null);if((a.flags&128)!==0)throw Error(r(558))}return Ut(a),null;case 13:if(u=a.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(p=qs(a),u!==null&&u.dehydrated!==null){if(t===null){if(!p)throw Error(r(318));if(p=a.memoizedState,p=p!==null?p.dehydrated:null,!p)throw Error(r(317));p[Ft]=a}else Ji(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;Ut(a),p=!1}else p=tp(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=p),p=!0;if(!p)return a.flags&256?(ar(a),a):(ar(a),null)}return ar(a),(a.flags&128)!==0?(a.lanes=o,a):(o=u!==null,t=t!==null&&t.memoizedState!==null,o&&(u=a.child,p=null,u.alternate!==null&&u.alternate.memoizedState!==null&&u.alternate.memoizedState.cachePool!==null&&(p=u.alternate.memoizedState.cachePool.pool),g=null,u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(g=u.memoizedState.cachePool.pool),g!==p&&(u.flags|=2048)),o!==t&&o&&(a.child.flags|=8192),Wu(a,a.updateQueue),Ut(a),null);case 4:return Te(),t===null&&hg(a.stateNode.containerInfo),Ut(a),null;case 10:return va(a.type),Ut(a),null;case 19:if(T(Zt),u=a.memoizedState,u===null)return Ut(a),null;if(p=(a.flags&128)!==0,g=u.rendering,g===null)if(p)Nl(u,!1);else{if(Jt!==0||t!==null&&(t.flags&128)!==0)for(t=a.child;t!==null;){if(g=Nu(t),g!==null){for(a.flags|=128,Nl(u,!1),t=g.updateQueue,a.updateQueue=t,Wu(a,t),a.subtreeFlags=0,t=o,o=a.child;o!==null;)tv(o,t),o=o.sibling;return fe(Zt,Zt.current&1|2),ht&&ya(a,u.treeForkCount),a.child}t=t.sibling}u.tail!==null&&Ot()>Zu&&(a.flags|=128,p=!0,Nl(u,!1),a.lanes=4194304)}else{if(!p)if(t=Nu(g),t!==null){if(a.flags|=128,p=!0,t=t.updateQueue,a.updateQueue=t,Wu(a,t),Nl(u,!0),u.tail===null&&u.tailMode==="hidden"&&!g.alternate&&!ht)return Ut(a),null}else 2*Ot()-u.renderingStartTime>Zu&&o!==536870912&&(a.flags|=128,p=!0,Nl(u,!1),a.lanes=4194304);u.isBackwards?(g.sibling=a.child,a.child=g):(t=u.last,t!==null?t.sibling=g:a.child=g,u.last=g)}return u.tail!==null?(t=u.tail,u.rendering=t,u.tail=t.sibling,u.renderingStartTime=Ot(),t.sibling=null,o=Zt.current,fe(Zt,p?o&1|2:o&1),ht&&ya(a,u.treeForkCount),t):(Ut(a),null);case 22:case 23:return ar(a),pp(),u=a.memoizedState!==null,t!==null?t.memoizedState!==null!==u&&(a.flags|=8192):u&&(a.flags|=8192),u?(o&536870912)!==0&&(a.flags&128)===0&&(Ut(a),a.subtreeFlags&6&&(a.flags|=8192)):Ut(a),o=a.updateQueue,o!==null&&Wu(a,o.retryQueue),o=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==o&&(a.flags|=2048),t!==null&&T(es),null;case 24:return o=null,t!==null&&(o=t.memoizedState.cache),a.memoizedState.cache!==o&&(a.flags|=2048),va(rn),Ut(a),null;case 25:return null;case 30:return null}throw Error(r(156,a.tag))}function Ck(t,a){switch(Zh(a),a.tag){case 1:return t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 3:return va(rn),Te(),t=a.flags,(t&65536)!==0&&(t&128)===0?(a.flags=t&-65537|128,a):null;case 26:case 27:case 5:return xt(a),null;case 31:if(a.memoizedState!==null){if(ar(a),a.alternate===null)throw Error(r(340));Ji()}return t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 13:if(ar(a),t=a.memoizedState,t!==null&&t.dehydrated!==null){if(a.alternate===null)throw Error(r(340));Ji()}return t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 19:return T(Zt),null;case 4:return Te(),null;case 10:return va(a.type),null;case 22:case 23:return ar(a),pp(),t!==null&&T(es),t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 24:return va(rn),null;case 25:return null;default:return null}}function kS(t,a){switch(Zh(a),a.tag){case 3:va(rn),Te();break;case 26:case 27:case 5:xt(a);break;case 4:Te();break;case 31:a.memoizedState!==null&&ar(a);break;case 13:ar(a);break;case 19:T(Zt);break;case 10:va(a.type);break;case 22:case 23:ar(a),pp(),t!==null&&T(es);break;case 24:va(rn)}}function Il(t,a){try{var o=a.updateQueue,u=o!==null?o.lastEffect:null;if(u!==null){var p=u.next;o=p;do{if((o.tag&t)===t){u=void 0;var g=o.create,w=o.inst;u=g(),w.destroy=u}o=o.next}while(o!==p)}}catch(R){kt(a,a.return,R)}}function si(t,a,o){try{var u=a.updateQueue,p=u!==null?u.lastEffect:null;if(p!==null){var g=p.next;u=g;do{if((u.tag&t)===t){var w=u.inst,R=w.destroy;if(R!==void 0){w.destroy=void 0,p=a;var P=o,X=R;try{X()}catch(re){kt(p,P,re)}}}u=u.next}while(u!==g)}}catch(re){kt(a,a.return,re)}}function RS(t){var a=t.updateQueue;if(a!==null){var o=t.stateNode;try{vv(a,o)}catch(u){kt(t,t.return,u)}}}function DS(t,a,o){o.props=is(t.type,t.memoizedProps),o.state=t.memoizedState;try{o.componentWillUnmount()}catch(u){kt(t,a,u)}}function jl(t,a){try{var o=t.ref;if(o!==null){switch(t.tag){case 26:case 27:case 5:var u=t.stateNode;break;case 30:u=t.stateNode;break;default:u=t.stateNode}typeof o=="function"?t.refCleanup=o(u):o.current=u}}catch(p){kt(t,a,p)}}function ea(t,a){var o=t.ref,u=t.refCleanup;if(o!==null)if(typeof u=="function")try{u()}catch(p){kt(t,a,p)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof o=="function")try{o(null)}catch(p){kt(t,a,p)}else o.current=null}function OS(t){var a=t.type,o=t.memoizedProps,u=t.stateNode;try{e:switch(a){case"button":case"input":case"select":case"textarea":o.autoFocus&&u.focus();break e;case"img":o.src?u.src=o.src:o.srcSet&&(u.srcset=o.srcSet)}}catch(p){kt(t,t.return,p)}}function Vp(t,a,o){try{var u=t.stateNode;Gk(u,t.type,o,a),u[Dn]=a}catch(p){kt(t,t.return,p)}}function LS(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&hi(t.type)||t.tag===4}function Kp(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||LS(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&hi(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Wp(t,a,o){var u=t.tag;if(u===5||u===6)t=t.stateNode,a?(o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o).insertBefore(t,a):(a=o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o,a.appendChild(t),o=o._reactRootContainer,o!=null||a.onclick!==null||(a.onclick=Nr));else if(u!==4&&(u===27&&hi(t.type)&&(o=t.stateNode,a=null),t=t.child,t!==null))for(Wp(t,a,o),t=t.sibling;t!==null;)Wp(t,a,o),t=t.sibling}function Yu(t,a,o){var u=t.tag;if(u===5||u===6)t=t.stateNode,a?o.insertBefore(t,a):o.appendChild(t);else if(u!==4&&(u===27&&hi(t.type)&&(o=t.stateNode),t=t.child,t!==null))for(Yu(t,a,o),t=t.sibling;t!==null;)Yu(t,a,o),t=t.sibling}function $S(t){var a=t.stateNode,o=t.memoizedProps;try{for(var u=t.type,p=a.attributes;p.length;)a.removeAttributeNode(p[0]);_n(a,u,o),a[Ft]=t,a[Dn]=o}catch(g){kt(t,t.return,g)}}var _a=!1,on=!1,Yp=!1,MS=typeof WeakSet=="function"?WeakSet:Set,yn=null;function Ek(t,a){if(t=t.containerInfo,mg=md,t=Vb(t),Bh(t)){if("selectionStart"in t)var o={start:t.selectionStart,end:t.selectionEnd};else e:{o=(o=t.ownerDocument)&&o.defaultView||window;var u=o.getSelection&&o.getSelection();if(u&&u.rangeCount!==0){o=u.anchorNode;var p=u.anchorOffset,g=u.focusNode;u=u.focusOffset;try{o.nodeType,g.nodeType}catch{o=null;break e}var w=0,R=-1,P=-1,X=0,re=0,le=t,J=null;t:for(;;){for(var te;le!==o||p!==0&&le.nodeType!==3||(R=w+p),le!==g||u!==0&&le.nodeType!==3||(P=w+u),le.nodeType===3&&(w+=le.nodeValue.length),(te=le.firstChild)!==null;)J=le,le=te;for(;;){if(le===t)break t;if(J===o&&++X===p&&(R=w),J===g&&++re===u&&(P=w),(te=le.nextSibling)!==null)break;le=J,J=le.parentNode}le=te}o=R===-1||P===-1?null:{start:R,end:P}}else o=null}o=o||{start:0,end:0}}else o=null;for(yg={focusedElem:t,selectionRange:o},md=!1,yn=a;yn!==null;)if(a=yn,t=a.child,(a.subtreeFlags&1028)!==0&&t!==null)t.return=a,yn=t;else for(;yn!==null;){switch(a=yn,g=a.alternate,t=a.flags,a.tag){case 0:if((t&4)!==0&&(t=a.updateQueue,t=t!==null?t.events:null,t!==null))for(o=0;o<t.length;o++)p=t[o],p.ref.impl=p.nextImpl;break;case 11:case 15:break;case 1:if((t&1024)!==0&&g!==null){t=void 0,o=a,p=g.memoizedProps,g=g.memoizedState,u=o.stateNode;try{var Oe=is(o.type,p);t=u.getSnapshotBeforeUpdate(Oe,g),u.__reactInternalSnapshotBeforeUpdate=t}catch(Ge){kt(o,o.return,Ge)}}break;case 3:if((t&1024)!==0){if(t=a.stateNode.containerInfo,o=t.nodeType,o===9)Sg(t);else if(o===1)switch(t.nodeName){case"HEAD":case"HTML":case"BODY":Sg(t);break;default:t.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((t&1024)!==0)throw Error(r(163))}if(t=a.sibling,t!==null){t.return=a.return,yn=t;break}yn=a.return}}function NS(t,a,o){var u=o.flags;switch(o.tag){case 0:case 11:case 15:xa(t,o),u&4&&Il(5,o);break;case 1:if(xa(t,o),u&4)if(t=o.stateNode,a===null)try{t.componentDidMount()}catch(w){kt(o,o.return,w)}else{var p=is(o.type,a.memoizedProps);a=a.memoizedState;try{t.componentDidUpdate(p,a,t.__reactInternalSnapshotBeforeUpdate)}catch(w){kt(o,o.return,w)}}u&64&&RS(o),u&512&&jl(o,o.return);break;case 3:if(xa(t,o),u&64&&(t=o.updateQueue,t!==null)){if(a=null,o.child!==null)switch(o.child.tag){case 27:case 5:a=o.child.stateNode;break;case 1:a=o.child.stateNode}try{vv(t,a)}catch(w){kt(o,o.return,w)}}break;case 27:a===null&&u&4&&$S(o);case 26:case 5:xa(t,o),a===null&&u&4&&OS(o),u&512&&jl(o,o.return);break;case 12:xa(t,o);break;case 31:xa(t,o),u&4&&HS(t,o);break;case 13:xa(t,o),u&4&&zS(t,o),u&64&&(t=o.memoizedState,t!==null&&(t=t.dehydrated,t!==null&&(o=Lk.bind(null,o),Qk(t,o))));break;case 22:if(u=o.memoizedState!==null||_a,!u){a=a!==null&&a.memoizedState!==null||on,p=_a;var g=on;_a=u,(on=a)&&!g?Ta(t,o,(o.subtreeFlags&8772)!==0):xa(t,o),_a=p,on=g}break;case 30:break;default:xa(t,o)}}function IS(t){var a=t.alternate;a!==null&&(t.alternate=null,IS(a)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(a=t.stateNode,a!==null&&rl(a)),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}var qt=null,Gn=!1;function Aa(t,a,o){for(o=o.child;o!==null;)jS(t,a,o),o=o.sibling}function jS(t,a,o){if(un&&typeof un.onCommitFiberUnmount=="function")try{un.onCommitFiberUnmount(pr,o)}catch{}switch(o.tag){case 26:on||ea(o,a),Aa(t,a,o),o.memoizedState?o.memoizedState.count--:o.stateNode&&(o=o.stateNode,o.parentNode.removeChild(o));break;case 27:on||ea(o,a);var u=qt,p=Gn;hi(o.type)&&(qt=o.stateNode,Gn=!1),Aa(t,a,o),Vl(o.stateNode),qt=u,Gn=p;break;case 5:on||ea(o,a);case 6:if(u=qt,p=Gn,qt=null,Aa(t,a,o),qt=u,Gn=p,qt!==null)if(Gn)try{(qt.nodeType===9?qt.body:qt.nodeName==="HTML"?qt.ownerDocument.body:qt).removeChild(o.stateNode)}catch(g){kt(o,a,g)}else try{qt.removeChild(o.stateNode)}catch(g){kt(o,a,g)}break;case 18:qt!==null&&(Gn?(t=qt,Rw(t.nodeType===9?t.body:t.nodeName==="HTML"?t.ownerDocument.body:t,o.stateNode),uo(t)):Rw(qt,o.stateNode));break;case 4:u=qt,p=Gn,qt=o.stateNode.containerInfo,Gn=!0,Aa(t,a,o),qt=u,Gn=p;break;case 0:case 11:case 14:case 15:si(2,o,a),on||si(4,o,a),Aa(t,a,o);break;case 1:on||(ea(o,a),u=o.stateNode,typeof u.componentWillUnmount=="function"&&DS(o,a,u)),Aa(t,a,o);break;case 21:Aa(t,a,o);break;case 22:on=(u=on)||o.memoizedState!==null,Aa(t,a,o),on=u;break;default:Aa(t,a,o)}}function HS(t,a){if(a.memoizedState===null&&(t=a.alternate,t!==null&&(t=t.memoizedState,t!==null))){t=t.dehydrated;try{uo(t)}catch(o){kt(a,a.return,o)}}}function zS(t,a){if(a.memoizedState===null&&(t=a.alternate,t!==null&&(t=t.memoizedState,t!==null&&(t=t.dehydrated,t!==null))))try{uo(t)}catch(o){kt(a,a.return,o)}}function _k(t){switch(t.tag){case 31:case 13:case 19:var a=t.stateNode;return a===null&&(a=t.stateNode=new MS),a;case 22:return t=t.stateNode,a=t._retryCache,a===null&&(a=t._retryCache=new MS),a;default:throw Error(r(435,t.tag))}}function Xu(t,a){var o=_k(t);a.forEach(function(u){if(!o.has(u)){o.add(u);var p=$k.bind(null,t,u);u.then(p,p)}})}function Fn(t,a){var o=a.deletions;if(o!==null)for(var u=0;u<o.length;u++){var p=o[u],g=t,w=a,R=w;e:for(;R!==null;){switch(R.tag){case 27:if(hi(R.type)){qt=R.stateNode,Gn=!1;break e}break;case 5:qt=R.stateNode,Gn=!1;break e;case 3:case 4:qt=R.stateNode.containerInfo,Gn=!0;break e}R=R.return}if(qt===null)throw Error(r(160));jS(g,w,p),qt=null,Gn=!1,g=p.alternate,g!==null&&(g.return=null),p.return=null}if(a.subtreeFlags&13886)for(a=a.child;a!==null;)PS(a,t),a=a.sibling}var Pr=null;function PS(t,a){var o=t.alternate,u=t.flags;switch(t.tag){case 0:case 11:case 14:case 15:Fn(a,t),Vn(t),u&4&&(si(3,t,t.return),Il(3,t),si(5,t,t.return));break;case 1:Fn(a,t),Vn(t),u&512&&(on||o===null||ea(o,o.return)),u&64&&_a&&(t=t.updateQueue,t!==null&&(u=t.callbacks,u!==null&&(o=t.shared.hiddenCallbacks,t.shared.hiddenCallbacks=o===null?u:o.concat(u))));break;case 26:var p=Pr;if(Fn(a,t),Vn(t),u&512&&(on||o===null||ea(o,o.return)),u&4){var g=o!==null?o.memoizedState:null;if(u=t.memoizedState,o===null)if(u===null)if(t.stateNode===null){e:{u=t.type,o=t.memoizedProps,p=p.ownerDocument||p;t:switch(u){case"title":g=p.getElementsByTagName("title")[0],(!g||g[Ni]||g[Ft]||g.namespaceURI==="http://www.w3.org/2000/svg"||g.hasAttribute("itemprop"))&&(g=p.createElement(u),p.head.insertBefore(g,p.querySelector("head > title"))),_n(g,u,o),g[Ft]=t,nn(g),u=g;break e;case"link":var w=Pw("link","href",p).get(u+(o.href||""));if(w){for(var R=0;R<w.length;R++)if(g=w[R],g.getAttribute("href")===(o.href==null||o.href===""?null:o.href)&&g.getAttribute("rel")===(o.rel==null?null:o.rel)&&g.getAttribute("title")===(o.title==null?null:o.title)&&g.getAttribute("crossorigin")===(o.crossOrigin==null?null:o.crossOrigin)){w.splice(R,1);break t}}g=p.createElement(u),_n(g,u,o),p.head.appendChild(g);break;case"meta":if(w=Pw("meta","content",p).get(u+(o.content||""))){for(R=0;R<w.length;R++)if(g=w[R],g.getAttribute("content")===(o.content==null?null:""+o.content)&&g.getAttribute("name")===(o.name==null?null:o.name)&&g.getAttribute("property")===(o.property==null?null:o.property)&&g.getAttribute("http-equiv")===(o.httpEquiv==null?null:o.httpEquiv)&&g.getAttribute("charset")===(o.charSet==null?null:o.charSet)){w.splice(R,1);break t}}g=p.createElement(u),_n(g,u,o),p.head.appendChild(g);break;default:throw Error(r(468,u))}g[Ft]=t,nn(g),u=g}t.stateNode=u}else Uw(p,t.type,t.stateNode);else t.stateNode=zw(p,u,t.memoizedProps);else g!==u?(g===null?o.stateNode!==null&&(o=o.stateNode,o.parentNode.removeChild(o)):g.count--,u===null?Uw(p,t.type,t.stateNode):zw(p,u,t.memoizedProps)):u===null&&t.stateNode!==null&&Vp(t,t.memoizedProps,o.memoizedProps)}break;case 27:Fn(a,t),Vn(t),u&512&&(on||o===null||ea(o,o.return)),o!==null&&u&4&&Vp(t,t.memoizedProps,o.memoizedProps);break;case 5:if(Fn(a,t),Vn(t),u&512&&(on||o===null||ea(o,o.return)),t.flags&32){p=t.stateNode;try{Wa(p,"")}catch(Oe){kt(t,t.return,Oe)}}u&4&&t.stateNode!=null&&(p=t.memoizedProps,Vp(t,p,o!==null?o.memoizedProps:p)),u&1024&&(Yp=!0);break;case 6:if(Fn(a,t),Vn(t),u&4){if(t.stateNode===null)throw Error(r(162));u=t.memoizedProps,o=t.stateNode;try{o.nodeValue=u}catch(Oe){kt(t,t.return,Oe)}}break;case 3:if(fd=null,p=Pr,Pr=ud(a.containerInfo),Fn(a,t),Pr=p,Vn(t),u&4&&o!==null&&o.memoizedState.isDehydrated)try{uo(a.containerInfo)}catch(Oe){kt(t,t.return,Oe)}Yp&&(Yp=!1,US(t));break;case 4:u=Pr,Pr=ud(t.stateNode.containerInfo),Fn(a,t),Vn(t),Pr=u;break;case 12:Fn(a,t),Vn(t);break;case 31:Fn(a,t),Vn(t),u&4&&(u=t.updateQueue,u!==null&&(t.updateQueue=null,Xu(t,u)));break;case 13:Fn(a,t),Vn(t),t.child.flags&8192&&t.memoizedState!==null!=(o!==null&&o.memoizedState!==null)&&(Qu=Ot()),u&4&&(u=t.updateQueue,u!==null&&(t.updateQueue=null,Xu(t,u)));break;case 22:p=t.memoizedState!==null;var P=o!==null&&o.memoizedState!==null,X=_a,re=on;if(_a=X||p,on=re||P,Fn(a,t),on=re,_a=X,Vn(t),u&8192)e:for(a=t.stateNode,a._visibility=p?a._visibility&-2:a._visibility|1,p&&(o===null||P||_a||on||ss(t)),o=null,a=t;;){if(a.tag===5||a.tag===26){if(o===null){P=o=a;try{if(g=P.stateNode,p)w=g.style,typeof w.setProperty=="function"?w.setProperty("display","none","important"):w.display="none";else{R=P.stateNode;var le=P.memoizedProps.style,J=le!=null&&le.hasOwnProperty("display")?le.display:null;R.style.display=J==null||typeof J=="boolean"?"":(""+J).trim()}}catch(Oe){kt(P,P.return,Oe)}}}else if(a.tag===6){if(o===null){P=a;try{P.stateNode.nodeValue=p?"":P.memoizedProps}catch(Oe){kt(P,P.return,Oe)}}}else if(a.tag===18){if(o===null){P=a;try{var te=P.stateNode;p?Dw(te,!0):Dw(P.stateNode,!1)}catch(Oe){kt(P,P.return,Oe)}}}else if((a.tag!==22&&a.tag!==23||a.memoizedState===null||a===t)&&a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break e;for(;a.sibling===null;){if(a.return===null||a.return===t)break e;o===a&&(o=null),a=a.return}o===a&&(o=null),a.sibling.return=a.return,a=a.sibling}u&4&&(u=t.updateQueue,u!==null&&(o=u.retryQueue,o!==null&&(u.retryQueue=null,Xu(t,o))));break;case 19:Fn(a,t),Vn(t),u&4&&(u=t.updateQueue,u!==null&&(t.updateQueue=null,Xu(t,u)));break;case 30:break;case 21:break;default:Fn(a,t),Vn(t)}}function Vn(t){var a=t.flags;if(a&2){try{for(var o,u=t.return;u!==null;){if(LS(u)){o=u;break}u=u.return}if(o==null)throw Error(r(160));switch(o.tag){case 27:var p=o.stateNode,g=Kp(t);Yu(t,g,p);break;case 5:var w=o.stateNode;o.flags&32&&(Wa(w,""),o.flags&=-33);var R=Kp(t);Yu(t,R,w);break;case 3:case 4:var P=o.stateNode.containerInfo,X=Kp(t);Wp(t,X,P);break;default:throw Error(r(161))}}catch(re){kt(t,t.return,re)}t.flags&=-3}a&4096&&(t.flags&=-4097)}function US(t){if(t.subtreeFlags&1024)for(t=t.child;t!==null;){var a=t;US(a),a.tag===5&&a.flags&1024&&a.stateNode.reset(),t=t.sibling}}function xa(t,a){if(a.subtreeFlags&8772)for(a=a.child;a!==null;)NS(t,a.alternate,a),a=a.sibling}function ss(t){for(t=t.child;t!==null;){var a=t;switch(a.tag){case 0:case 11:case 14:case 15:si(4,a,a.return),ss(a);break;case 1:ea(a,a.return);var o=a.stateNode;typeof o.componentWillUnmount=="function"&&DS(a,a.return,o),ss(a);break;case 27:Vl(a.stateNode);case 26:case 5:ea(a,a.return),ss(a);break;case 22:a.memoizedState===null&&ss(a);break;case 30:ss(a);break;default:ss(a)}t=t.sibling}}function Ta(t,a,o){for(o=o&&(a.subtreeFlags&8772)!==0,a=a.child;a!==null;){var u=a.alternate,p=t,g=a,w=g.flags;switch(g.tag){case 0:case 11:case 15:Ta(p,g,o),Il(4,g);break;case 1:if(Ta(p,g,o),u=g,p=u.stateNode,typeof p.componentDidMount=="function")try{p.componentDidMount()}catch(X){kt(u,u.return,X)}if(u=g,p=u.updateQueue,p!==null){var R=u.stateNode;try{var P=p.shared.hiddenCallbacks;if(P!==null)for(p.shared.hiddenCallbacks=null,p=0;p<P.length;p++)bv(P[p],R)}catch(X){kt(u,u.return,X)}}o&&w&64&&RS(g),jl(g,g.return);break;case 27:$S(g);case 26:case 5:Ta(p,g,o),o&&u===null&&w&4&&OS(g),jl(g,g.return);break;case 12:Ta(p,g,o);break;case 31:Ta(p,g,o),o&&w&4&&HS(p,g);break;case 13:Ta(p,g,o),o&&w&4&&zS(p,g);break;case 22:g.memoizedState===null&&Ta(p,g,o),jl(g,g.return);break;case 30:break;default:Ta(p,g,o)}a=a.sibling}}function Xp(t,a){var o=null;t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),t=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(t=a.memoizedState.cachePool.pool),t!==o&&(t!=null&&t.refCount++,o!=null&&El(o))}function Jp(t,a){t=null,a.alternate!==null&&(t=a.alternate.memoizedState.cache),a=a.memoizedState.cache,a!==t&&(a.refCount++,t!=null&&El(t))}function Ur(t,a,o,u){if(a.subtreeFlags&10256)for(a=a.child;a!==null;)BS(t,a,o,u),a=a.sibling}function BS(t,a,o,u){var p=a.flags;switch(a.tag){case 0:case 11:case 15:Ur(t,a,o,u),p&2048&&Il(9,a);break;case 1:Ur(t,a,o,u);break;case 3:Ur(t,a,o,u),p&2048&&(t=null,a.alternate!==null&&(t=a.alternate.memoizedState.cache),a=a.memoizedState.cache,a!==t&&(a.refCount++,t!=null&&El(t)));break;case 12:if(p&2048){Ur(t,a,o,u),t=a.stateNode;try{var g=a.memoizedProps,w=g.id,R=g.onPostCommit;typeof R=="function"&&R(w,a.alternate===null?"mount":"update",t.passiveEffectDuration,-0)}catch(P){kt(a,a.return,P)}}else Ur(t,a,o,u);break;case 31:Ur(t,a,o,u);break;case 13:Ur(t,a,o,u);break;case 23:break;case 22:g=a.stateNode,w=a.alternate,a.memoizedState!==null?g._visibility&2?Ur(t,a,o,u):Hl(t,a):g._visibility&2?Ur(t,a,o,u):(g._visibility|=2,Zs(t,a,o,u,(a.subtreeFlags&10256)!==0||!1)),p&2048&&Xp(w,a);break;case 24:Ur(t,a,o,u),p&2048&&Jp(a.alternate,a);break;default:Ur(t,a,o,u)}}function Zs(t,a,o,u,p){for(p=p&&((a.subtreeFlags&10256)!==0||!1),a=a.child;a!==null;){var g=t,w=a,R=o,P=u,X=w.flags;switch(w.tag){case 0:case 11:case 15:Zs(g,w,R,P,p),Il(8,w);break;case 23:break;case 22:var re=w.stateNode;w.memoizedState!==null?re._visibility&2?Zs(g,w,R,P,p):Hl(g,w):(re._visibility|=2,Zs(g,w,R,P,p)),p&&X&2048&&Xp(w.alternate,w);break;case 24:Zs(g,w,R,P,p),p&&X&2048&&Jp(w.alternate,w);break;default:Zs(g,w,R,P,p)}a=a.sibling}}function Hl(t,a){if(a.subtreeFlags&10256)for(a=a.child;a!==null;){var o=t,u=a,p=u.flags;switch(u.tag){case 22:Hl(o,u),p&2048&&Xp(u.alternate,u);break;case 24:Hl(o,u),p&2048&&Jp(u.alternate,u);break;default:Hl(o,u)}a=a.sibling}}var zl=8192;function eo(t,a,o){if(t.subtreeFlags&zl)for(t=t.child;t!==null;)qS(t,a,o),t=t.sibling}function qS(t,a,o){switch(t.tag){case 26:eo(t,a,o),t.flags&zl&&t.memoizedState!==null&&uR(o,Pr,t.memoizedState,t.memoizedProps);break;case 5:eo(t,a,o);break;case 3:case 4:var u=Pr;Pr=ud(t.stateNode.containerInfo),eo(t,a,o),Pr=u;break;case 22:t.memoizedState===null&&(u=t.alternate,u!==null&&u.memoizedState!==null?(u=zl,zl=16777216,eo(t,a,o),zl=u):eo(t,a,o));break;default:eo(t,a,o)}}function GS(t){var a=t.alternate;if(a!==null&&(t=a.child,t!==null)){a.child=null;do a=t.sibling,t.sibling=null,t=a;while(t!==null)}}function Pl(t){var a=t.deletions;if((t.flags&16)!==0){if(a!==null)for(var o=0;o<a.length;o++){var u=a[o];yn=u,VS(u,t)}GS(t)}if(t.subtreeFlags&10256)for(t=t.child;t!==null;)FS(t),t=t.sibling}function FS(t){switch(t.tag){case 0:case 11:case 15:Pl(t),t.flags&2048&&si(9,t,t.return);break;case 3:Pl(t);break;case 12:Pl(t);break;case 22:var a=t.stateNode;t.memoizedState!==null&&a._visibility&2&&(t.return===null||t.return.tag!==13)?(a._visibility&=-3,Ju(t)):Pl(t);break;default:Pl(t)}}function Ju(t){var a=t.deletions;if((t.flags&16)!==0){if(a!==null)for(var o=0;o<a.length;o++){var u=a[o];yn=u,VS(u,t)}GS(t)}for(t=t.child;t!==null;){switch(a=t,a.tag){case 0:case 11:case 15:si(8,a,a.return),Ju(a);break;case 22:o=a.stateNode,o._visibility&2&&(o._visibility&=-3,Ju(a));break;default:Ju(a)}t=t.sibling}}function VS(t,a){for(;yn!==null;){var o=yn;switch(o.tag){case 0:case 11:case 15:si(8,o,a);break;case 23:case 22:if(o.memoizedState!==null&&o.memoizedState.cachePool!==null){var u=o.memoizedState.cachePool.pool;u!=null&&u.refCount++}break;case 24:El(o.memoizedState.cache)}if(u=o.child,u!==null)u.return=o,yn=u;else e:for(o=t;yn!==null;){u=yn;var p=u.sibling,g=u.return;if(IS(u),u===o){yn=null;break e}if(p!==null){p.return=g,yn=p;break e}yn=g}}}var Ak={getCacheForType:function(t){var a=Cn(rn),o=a.data.get(t);return o===void 0&&(o=t(),a.data.set(t,o)),o},cacheSignal:function(){return Cn(rn).controller.signal}},xk=typeof WeakMap=="function"?WeakMap:Map,_t=0,jt=null,st=null,ct=0,Tt=0,ir=null,oi=!1,to=!1,Qp=!1,ka=0,Jt=0,li=0,os=0,Zp=0,sr=0,no=0,Ul=null,Kn=null,eg=!1,Qu=0,KS=0,Zu=1/0,ed=null,ci=null,hn=0,ui=null,ro=null,Ra=0,tg=0,ng=null,WS=null,Bl=0,rg=null;function or(){return(_t&2)!==0&&ct!==0?ct&-ct:Q.T!==null?cg():Bt()}function YS(){if(sr===0)if((ct&536870912)===0||ht){var t=ve;ve<<=1,(ve&3932160)===0&&(ve=262144),sr=t}else sr=536870912;return t=rr.current,t!==null&&(t.flags|=32),sr}function Wn(t,a,o){(t===jt&&(Tt===2||Tt===9)||t.cancelPendingCommit!==null)&&(ao(t,0),di(t,ct,sr,!1)),tt(t,o),((_t&2)===0||t!==jt)&&(t===jt&&((_t&2)===0&&(os|=o),Jt===4&&di(t,ct,sr,!1)),ta(t))}function XS(t,a,o){if((_t&6)!==0)throw Error(r(327));var u=!o&&(a&127)===0&&(a&t.expiredLanes)===0||Ke(t,a),p=u?Rk(t,a):ig(t,a,!0),g=u;do{if(p===0){to&&!u&&di(t,a,0,!1);break}else{if(o=t.current.alternate,g&&!Tk(o)){p=ig(t,a,!1),g=!1;continue}if(p===2){if(g=a,t.errorRecoveryDisabledLanes&g)var w=0;else w=t.pendingLanes&-536870913,w=w!==0?w:w&536870912?536870912:0;if(w!==0){a=w;e:{var R=t;p=Ul;var P=R.current.memoizedState.isDehydrated;if(P&&(ao(R,w).flags|=256),w=ig(R,w,!1),w!==2){if(Qp&&!P){R.errorRecoveryDisabledLanes|=g,os|=g,p=4;break e}g=Kn,Kn=p,g!==null&&(Kn===null?Kn=g:Kn.push.apply(Kn,g))}p=w}if(g=!1,p!==2)continue}}if(p===1){ao(t,0),di(t,a,0,!0);break}e:{switch(u=t,g=p,g){case 0:case 1:throw Error(r(345));case 4:if((a&4194048)!==a)break;case 6:di(u,a,sr,!oi);break e;case 2:Kn=null;break;case 3:case 5:break;default:throw Error(r(329))}if((a&62914560)===a&&(p=Qu+300-Ot(),10<p)){if(di(u,a,sr,!oi),xe(u,0,!0)!==0)break e;Ra=a,u.timeoutHandle=Tw(JS.bind(null,u,o,Kn,ed,eg,a,sr,os,no,oi,g,"Throttled",-0,0),p);break e}JS(u,o,Kn,ed,eg,a,sr,os,no,oi,g,null,-0,0)}}break}while(!0);ta(t)}function JS(t,a,o,u,p,g,w,R,P,X,re,le,J,te){if(t.timeoutHandle=-1,le=a.subtreeFlags,le&8192||(le&16785408)===16785408){le={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Nr},qS(a,g,le);var Oe=(g&62914560)===g?Qu-Ot():(g&4194048)===g?KS-Ot():0;if(Oe=dR(le,Oe),Oe!==null){Ra=g,t.cancelPendingCommit=Oe(iw.bind(null,t,a,g,o,u,p,w,R,P,re,le,null,J,te)),di(t,g,w,!X);return}}iw(t,a,g,o,u,p,w,R,P)}function Tk(t){for(var a=t;;){var o=a.tag;if((o===0||o===11||o===15)&&a.flags&16384&&(o=a.updateQueue,o!==null&&(o=o.stores,o!==null)))for(var u=0;u<o.length;u++){var p=o[u],g=p.getSnapshot;p=p.value;try{if(!tr(g(),p))return!1}catch{return!1}}if(o=a.child,a.subtreeFlags&16384&&o!==null)o.return=a,a=o;else{if(a===t)break;for(;a.sibling===null;){if(a.return===null||a.return===t)return!0;a=a.return}a.sibling.return=a.return,a=a.sibling}}return!0}function di(t,a,o,u){a&=~Zp,a&=~os,t.suspendedLanes|=a,t.pingedLanes&=~a,u&&(t.warmLanes|=a),u=t.expirationTimes;for(var p=a;0<p;){var g=31-dn(p),w=1<<g;u[g]=-1,p&=~w}o!==0&&Ve(t,o,a)}function td(){return(_t&6)===0?(ql(0),!1):!0}function ag(){if(st!==null){if(Tt===0)var t=st.return;else t=st,ba=Qi=null,Sp(t),Ws=null,Al=0,t=st;for(;t!==null;)kS(t.alternate,t),t=t.return;st=null}}function ao(t,a){var o=t.timeoutHandle;o!==-1&&(t.timeoutHandle=-1,Kk(o)),o=t.cancelPendingCommit,o!==null&&(t.cancelPendingCommit=null,o()),Ra=0,ag(),jt=t,st=o=ma(t.current,null),ct=a,Tt=0,ir=null,oi=!1,to=Ke(t,a),Qp=!1,no=sr=Zp=os=li=Jt=0,Kn=Ul=null,eg=!1,(a&8)!==0&&(a|=a&32);var u=t.entangledLanes;if(u!==0)for(t=t.entanglements,u&=a;0<u;){var p=31-dn(u),g=1<<p;a|=t[p],u&=~g}return ka=a,Cu(),o}function QS(t,a){Qe=null,Q.H=$l,a===Ks||a===Du?(a=pv(),Tt=3):a===lp?(a=pv(),Tt=4):Tt=a===Ip?8:a!==null&&typeof a=="object"&&typeof a.then=="function"?6:1,ir=a,st===null&&(Jt=1,Gu(t,yr(a,t.current)))}function ZS(){var t=rr.current;return t===null?!0:(ct&4194048)===ct?wr===null:(ct&62914560)===ct||(ct&536870912)!==0?t===wr:!1}function ew(){var t=Q.H;return Q.H=$l,t===null?$l:t}function tw(){var t=Q.A;return Q.A=Ak,t}function nd(){Jt=4,oi||(ct&4194048)!==ct&&rr.current!==null||(to=!0),(li&134217727)===0&&(os&134217727)===0||jt===null||di(jt,ct,sr,!1)}function ig(t,a,o){var u=_t;_t|=2;var p=ew(),g=tw();(jt!==t||ct!==a)&&(ed=null,ao(t,a)),a=!1;var w=Jt;e:do try{if(Tt!==0&&st!==null){var R=st,P=ir;switch(Tt){case 8:ag(),w=6;break e;case 3:case 2:case 9:case 6:rr.current===null&&(a=!0);var X=Tt;if(Tt=0,ir=null,io(t,R,P,X),o&&to){w=0;break e}break;default:X=Tt,Tt=0,ir=null,io(t,R,P,X)}}kk(),w=Jt;break}catch(re){QS(t,re)}while(!0);return a&&t.shellSuspendCounter++,ba=Qi=null,_t=u,Q.H=p,Q.A=g,st===null&&(jt=null,ct=0,Cu()),w}function kk(){for(;st!==null;)nw(st)}function Rk(t,a){var o=_t;_t|=2;var u=ew(),p=tw();jt!==t||ct!==a?(ed=null,Zu=Ot()+500,ao(t,a)):to=Ke(t,a);e:do try{if(Tt!==0&&st!==null){a=st;var g=ir;t:switch(Tt){case 1:Tt=0,ir=null,io(t,a,g,1);break;case 2:case 9:if(fv(g)){Tt=0,ir=null,rw(a);break}a=function(){Tt!==2&&Tt!==9||jt!==t||(Tt=7),ta(t)},g.then(a,a);break e;case 3:Tt=7;break e;case 4:Tt=5;break e;case 7:fv(g)?(Tt=0,ir=null,rw(a)):(Tt=0,ir=null,io(t,a,g,7));break;case 5:var w=null;switch(st.tag){case 26:w=st.memoizedState;case 5:case 27:var R=st;if(w?Bw(w):R.stateNode.complete){Tt=0,ir=null;var P=R.sibling;if(P!==null)st=P;else{var X=R.return;X!==null?(st=X,rd(X)):st=null}break t}}Tt=0,ir=null,io(t,a,g,5);break;case 6:Tt=0,ir=null,io(t,a,g,6);break;case 8:ag(),Jt=6;break e;default:throw Error(r(462))}}Dk();break}catch(re){QS(t,re)}while(!0);return ba=Qi=null,Q.H=u,Q.A=p,_t=o,st!==null?0:(jt=null,ct=0,Cu(),Jt)}function Dk(){for(;st!==null&&!kn();)nw(st)}function nw(t){var a=xS(t.alternate,t,ka);t.memoizedProps=t.pendingProps,a===null?rd(t):st=a}function rw(t){var a=t,o=a.alternate;switch(a.tag){case 15:case 0:a=SS(o,a,a.pendingProps,a.type,void 0,ct);break;case 11:a=SS(o,a,a.pendingProps,a.type.render,a.ref,ct);break;case 5:Sp(a);default:kS(o,a),a=st=tv(a,ka),a=xS(o,a,ka)}t.memoizedProps=t.pendingProps,a===null?rd(t):st=a}function io(t,a,o,u){ba=Qi=null,Sp(a),Ws=null,Al=0;var p=a.return;try{if(bk(t,p,a,o,ct)){Jt=1,Gu(t,yr(o,t.current)),st=null;return}}catch(g){if(p!==null)throw st=p,g;Jt=1,Gu(t,yr(o,t.current)),st=null;return}a.flags&32768?(ht||u===1?t=!0:to||(ct&536870912)!==0?t=!1:(oi=t=!0,(u===2||u===9||u===3||u===6)&&(u=rr.current,u!==null&&u.tag===13&&(u.flags|=16384))),aw(a,t)):rd(a)}function rd(t){var a=t;do{if((a.flags&32768)!==0){aw(a,oi);return}t=a.return;var o=wk(a.alternate,a,ka);if(o!==null){st=o;return}if(a=a.sibling,a!==null){st=a;return}st=a=t}while(a!==null);Jt===0&&(Jt=5)}function aw(t,a){do{var o=Ck(t.alternate,t);if(o!==null){o.flags&=32767,st=o;return}if(o=t.return,o!==null&&(o.flags|=32768,o.subtreeFlags=0,o.deletions=null),!a&&(t=t.sibling,t!==null)){st=t;return}st=t=o}while(t!==null);Jt=6,st=null}function iw(t,a,o,u,p,g,w,R,P){t.cancelPendingCommit=null;do ad();while(hn!==0);if((_t&6)!==0)throw Error(r(327));if(a!==null){if(a===t.current)throw Error(r(177));if(g=a.lanes|a.childLanes,g|=Kh,Pe(t,o,g,w,R,P),t===jt&&(st=jt=null,ct=0),ro=a,ui=t,Ra=o,tg=g,ng=p,WS=u,(a.subtreeFlags&10256)!==0||(a.flags&10256)!==0?(t.callbackNode=null,t.callbackPriority=0,Mk(Mn,function(){return uw(),null})):(t.callbackNode=null,t.callbackPriority=0),u=(a.flags&13878)!==0,(a.subtreeFlags&13878)!==0||u){u=Q.T,Q.T=null,p=ue.p,ue.p=2,w=_t,_t|=4;try{Ek(t,a,o)}finally{_t=w,ue.p=p,Q.T=u}}hn=1,sw(),ow(),lw()}}function sw(){if(hn===1){hn=0;var t=ui,a=ro,o=(a.flags&13878)!==0;if((a.subtreeFlags&13878)!==0||o){o=Q.T,Q.T=null;var u=ue.p;ue.p=2;var p=_t;_t|=4;try{PS(a,t);var g=yg,w=Vb(t.containerInfo),R=g.focusedElem,P=g.selectionRange;if(w!==R&&R&&R.ownerDocument&&Fb(R.ownerDocument.documentElement,R)){if(P!==null&&Bh(R)){var X=P.start,re=P.end;if(re===void 0&&(re=X),"selectionStart"in R)R.selectionStart=X,R.selectionEnd=Math.min(re,R.value.length);else{var le=R.ownerDocument||document,J=le&&le.defaultView||window;if(J.getSelection){var te=J.getSelection(),Oe=R.textContent.length,Ge=Math.min(P.start,Oe),Nt=P.end===void 0?Ge:Math.min(P.end,Oe);!te.extend&&Ge>Nt&&(w=Nt,Nt=Ge,Ge=w);var K=Gb(R,Ge),F=Gb(R,Nt);if(K&&F&&(te.rangeCount!==1||te.anchorNode!==K.node||te.anchorOffset!==K.offset||te.focusNode!==F.node||te.focusOffset!==F.offset)){var Y=le.createRange();Y.setStart(K.node,K.offset),te.removeAllRanges(),Ge>Nt?(te.addRange(Y),te.extend(F.node,F.offset)):(Y.setEnd(F.node,F.offset),te.addRange(Y))}}}}for(le=[],te=R;te=te.parentNode;)te.nodeType===1&&le.push({element:te,left:te.scrollLeft,top:te.scrollTop});for(typeof R.focus=="function"&&R.focus(),R=0;R<le.length;R++){var oe=le[R];oe.element.scrollLeft=oe.left,oe.element.scrollTop=oe.top}}md=!!mg,yg=mg=null}finally{_t=p,ue.p=u,Q.T=o}}t.current=a,hn=2}}function ow(){if(hn===2){hn=0;var t=ui,a=ro,o=(a.flags&8772)!==0;if((a.subtreeFlags&8772)!==0||o){o=Q.T,Q.T=null;var u=ue.p;ue.p=2;var p=_t;_t|=4;try{NS(t,a.alternate,a)}finally{_t=p,ue.p=u,Q.T=o}}hn=3}}function lw(){if(hn===4||hn===3){hn=0,hr();var t=ui,a=ro,o=Ra,u=WS;(a.subtreeFlags&10256)!==0||(a.flags&10256)!==0?hn=5:(hn=0,ro=ui=null,cw(t,t.pendingLanes));var p=t.pendingLanes;if(p===0&&(ci=null),Lt(o),a=a.stateNode,un&&typeof un.onCommitFiberRoot=="function")try{un.onCommitFiberRoot(pr,a,void 0,(a.current.flags&128)===128)}catch{}if(u!==null){a=Q.T,p=ue.p,ue.p=2,Q.T=null;try{for(var g=t.onRecoverableError,w=0;w<u.length;w++){var R=u[w];g(R.value,{componentStack:R.stack})}}finally{Q.T=a,ue.p=p}}(Ra&3)!==0&&ad(),ta(t),p=t.pendingLanes,(o&261930)!==0&&(p&42)!==0?t===rg?Bl++:(Bl=0,rg=t):Bl=0,ql(0)}}function cw(t,a){(t.pooledCacheLanes&=a)===0&&(a=t.pooledCache,a!=null&&(t.pooledCache=null,El(a)))}function ad(){return sw(),ow(),lw(),uw()}function uw(){if(hn!==5)return!1;var t=ui,a=tg;tg=0;var o=Lt(Ra),u=Q.T,p=ue.p;try{ue.p=32>o?32:o,Q.T=null,o=ng,ng=null;var g=ui,w=Ra;if(hn=0,ro=ui=null,Ra=0,(_t&6)!==0)throw Error(r(331));var R=_t;if(_t|=4,FS(g.current),BS(g,g.current,w,o),_t=R,ql(0,!1),un&&typeof un.onPostCommitFiberRoot=="function")try{un.onPostCommitFiberRoot(pr,g)}catch{}return!0}finally{ue.p=p,Q.T=u,cw(t,a)}}function dw(t,a,o){a=yr(o,a),a=Np(t.stateNode,a,2),t=ri(t,a,2),t!==null&&(tt(t,2),ta(t))}function kt(t,a,o){if(t.tag===3)dw(t,t,o);else for(;a!==null;){if(a.tag===3){dw(a,t,o);break}else if(a.tag===1){var u=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof u.componentDidCatch=="function"&&(ci===null||!ci.has(u))){t=yr(o,t),o=fS(2),u=ri(a,o,2),u!==null&&(hS(o,u,a,t),tt(u,2),ta(u));break}}a=a.return}}function sg(t,a,o){var u=t.pingCache;if(u===null){u=t.pingCache=new xk;var p=new Set;u.set(a,p)}else p=u.get(a),p===void 0&&(p=new Set,u.set(a,p));p.has(o)||(Qp=!0,p.add(o),t=Ok.bind(null,t,a,o),a.then(t,t))}function Ok(t,a,o){var u=t.pingCache;u!==null&&u.delete(a),t.pingedLanes|=t.suspendedLanes&o,t.warmLanes&=~o,jt===t&&(ct&o)===o&&(Jt===4||Jt===3&&(ct&62914560)===ct&&300>Ot()-Qu?(_t&2)===0&&ao(t,0):Zp|=o,no===ct&&(no=0)),ta(t)}function fw(t,a){a===0&&(a=Me()),t=Yi(t,a),t!==null&&(tt(t,a),ta(t))}function Lk(t){var a=t.memoizedState,o=0;a!==null&&(o=a.retryLane),fw(t,o)}function $k(t,a){var o=0;switch(t.tag){case 31:case 13:var u=t.stateNode,p=t.memoizedState;p!==null&&(o=p.retryLane);break;case 19:u=t.stateNode;break;case 22:u=t.stateNode._retryCache;break;default:throw Error(r(314))}u!==null&&u.delete(a),fw(t,o)}function Mk(t,a){return Dt(t,a)}var id=null,so=null,og=!1,sd=!1,lg=!1,fi=0;function ta(t){t!==so&&t.next===null&&(so===null?id=so=t:so=so.next=t),sd=!0,og||(og=!0,Ik())}function ql(t,a){if(!lg&&sd){lg=!0;do for(var o=!1,u=id;u!==null;){if(t!==0){var p=u.pendingLanes;if(p===0)var g=0;else{var w=u.suspendedLanes,R=u.pingedLanes;g=(1<<31-dn(42|t)+1)-1,g&=p&~(w&~R),g=g&201326741?g&201326741|1:g?g|2:0}g!==0&&(o=!0,mw(u,g))}else g=ct,g=xe(u,u===jt?g:0,u.cancelPendingCommit!==null||u.timeoutHandle!==-1),(g&3)===0||Ke(u,g)||(o=!0,mw(u,g));u=u.next}while(o);lg=!1}}function Nk(){hw()}function hw(){sd=og=!1;var t=0;fi!==0&&Vk()&&(t=fi);for(var a=Ot(),o=null,u=id;u!==null;){var p=u.next,g=pw(u,a);g===0?(u.next=null,o===null?id=p:o.next=p,p===null&&(so=o)):(o=u,(t!==0||(g&3)!==0)&&(sd=!0)),u=p}hn!==0&&hn!==5||ql(t),fi!==0&&(fi=0)}function pw(t,a){for(var o=t.suspendedLanes,u=t.pingedLanes,p=t.expirationTimes,g=t.pendingLanes&-62914561;0<g;){var w=31-dn(g),R=1<<w,P=p[w];P===-1?((R&o)===0||(R&u)!==0)&&(p[w]=ke(R,a)):P<=a&&(t.expiredLanes|=R),g&=~R}if(a=jt,o=ct,o=xe(t,t===a?o:0,t.cancelPendingCommit!==null||t.timeoutHandle!==-1),u=t.callbackNode,o===0||t===a&&(Tt===2||Tt===9)||t.cancelPendingCommit!==null)return u!==null&&u!==null&&zt(u),t.callbackNode=null,t.callbackPriority=0;if((o&3)===0||Ke(t,o)){if(a=o&-o,a===t.callbackPriority)return a;switch(u!==null&&zt(u),Lt(o)){case 2:case 8:o=bn;break;case 32:o=Mn;break;case 268435456:o=Un;break;default:o=Mn}return u=gw.bind(null,t),o=Dt(o,u),t.callbackPriority=a,t.callbackNode=o,a}return u!==null&&u!==null&&zt(u),t.callbackPriority=2,t.callbackNode=null,2}function gw(t,a){if(hn!==0&&hn!==5)return t.callbackNode=null,t.callbackPriority=0,null;var o=t.callbackNode;if(ad()&&t.callbackNode!==o)return null;var u=ct;return u=xe(t,t===jt?u:0,t.cancelPendingCommit!==null||t.timeoutHandle!==-1),u===0?null:(XS(t,u,a),pw(t,Ot()),t.callbackNode!=null&&t.callbackNode===o?gw.bind(null,t):null)}function mw(t,a){if(ad())return null;XS(t,a,!0)}function Ik(){Wk(function(){(_t&6)!==0?Dt(ua,Nk):hw()})}function cg(){if(fi===0){var t=Fs;t===0&&(t=Z,Z<<=1,(Z&261888)===0&&(Z=256)),fi=t}return fi}function yw(t){return t==null||typeof t=="symbol"||typeof t=="boolean"?null:typeof t=="function"?t:gr(""+t)}function bw(t,a){var o=a.ownerDocument.createElement("input");return o.name=a.name,o.value=a.value,t.id&&o.setAttribute("form",t.id),a.parentNode.insertBefore(o,a),t=new FormData(t),o.parentNode.removeChild(o),t}function jk(t,a,o,u,p){if(a==="submit"&&o&&o.stateNode===p){var g=yw((p[Dn]||null).action),w=u.submitter;w&&(a=(a=w[Dn]||null)?yw(a.formAction):w.getAttribute("formAction"),a!==null&&(g=a,w=null));var R=new ga("action","action",null,u,p);t.push({event:R,listeners:[{instance:null,listener:function(){if(u.defaultPrevented){if(fi!==0){var P=w?bw(p,w):new FormData(p);Rp(o,{pending:!0,data:P,method:p.method,action:g},null,P)}}else typeof g=="function"&&(R.preventDefault(),P=w?bw(p,w):new FormData(p),Rp(o,{pending:!0,data:P,method:p.method,action:g},g,P))},currentTarget:p}]})}}for(var ug=0;ug<Vh.length;ug++){var dg=Vh[ug],Hk=dg.toLowerCase(),zk=dg[0].toUpperCase()+dg.slice(1);zr(Hk,"on"+zk)}zr(Yb,"onAnimationEnd"),zr(Xb,"onAnimationIteration"),zr(Jb,"onAnimationStart"),zr("dblclick","onDoubleClick"),zr("focusin","onFocus"),zr("focusout","onBlur"),zr(tk,"onTransitionRun"),zr(nk,"onTransitionStart"),zr(rk,"onTransitionCancel"),zr(Qb,"onTransitionEnd"),Ga("onMouseEnter",["mouseout","mouseover"]),Ga("onMouseLeave",["mouseout","mouseover"]),Ga("onPointerEnter",["pointerout","pointerover"]),Ga("onPointerLeave",["pointerout","pointerover"]),Mr("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Mr("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Mr("onBeforeInput",["compositionend","keypress","textInput","paste"]),Mr("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Mr("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Mr("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Gl="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(" "),Pk=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Gl));function vw(t,a){a=(a&4)!==0;for(var o=0;o<t.length;o++){var u=t[o],p=u.event;u=u.listeners;e:{var g=void 0;if(a)for(var w=u.length-1;0<=w;w--){var R=u[w],P=R.instance,X=R.currentTarget;if(R=R.listener,P!==g&&p.isPropagationStopped())break e;g=R,p.currentTarget=X;try{g(p)}catch(re){wu(re)}p.currentTarget=null,g=P}else for(w=0;w<u.length;w++){if(R=u[w],P=R.instance,X=R.currentTarget,R=R.listener,P!==g&&p.isPropagationStopped())break e;g=R,p.currentTarget=X;try{g(p)}catch(re){wu(re)}p.currentTarget=null,g=P}}}}function ot(t,a){var o=a[nl];o===void 0&&(o=a[nl]=new Set);var u=t+"__bubble";o.has(u)||(Sw(a,t,2,!1),o.add(u))}function fg(t,a,o){var u=0;a&&(u|=4),Sw(o,t,u,a)}var od="_reactListening"+Math.random().toString(36).slice(2);function hg(t){if(!t[od]){t[od]=!0,Qc.forEach(function(o){o!=="selectionchange"&&(Pk.has(o)||fg(o,!1,t),fg(o,!0,t))});var a=t.nodeType===9?t:t.ownerDocument;a===null||a[od]||(a[od]=!0,fg("selectionchange",!1,a))}}function Sw(t,a,o,u){switch(Yw(a)){case 2:var p=pR;break;case 8:p=gR;break;default:p=kg}o=p.bind(null,a,o,t),p=void 0,!cl||a!=="touchstart"&&a!=="touchmove"&&a!=="wheel"||(p=!0),u?p!==void 0?t.addEventListener(a,o,{capture:!0,passive:p}):t.addEventListener(a,o,!0):p!==void 0?t.addEventListener(a,o,{passive:p}):t.addEventListener(a,o,!1)}function pg(t,a,o,u,p){var g=u;if((a&1)===0&&(a&2)===0&&u!==null)e:for(;;){if(u===null)return;var w=u.tag;if(w===3||w===4){var R=u.stateNode.containerInfo;if(R===p)break;if(w===4)for(w=u.return;w!==null;){var P=w.tag;if((P===3||P===4)&&w.stateNode.containerInfo===p)return;w=w.return}for(;R!==null;){if(w=Ba(R),w===null)return;if(P=w.tag,P===5||P===6||P===26||P===27){u=g=w;continue e}R=R.parentNode}}u=u.return}lu(function(){var X=g,re=ll(o),le=[];e:{var J=Zb.get(t);if(J!==void 0){var te=ga,Oe=t;switch(t){case"keypress":if(Pi(o)===0)break e;case"keydown":case"keyup":te=Lh;break;case"focusin":Oe="focus",te=hl;break;case"focusout":Oe="blur",te=hl;break;case"beforeblur":case"afterblur":te=hl;break;case"click":if(o.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":te=du;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":te=Ub;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":te=Nh;break;case Yb:case Xb:case Jb:te=Ah;break;case Qb:te=Is;break;case"scroll":case"scrollend":te=Ch;break;case"wheel":te=E;break;case"copy":case"cut":case"paste":te=fu;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":te=gu;break;case"toggle":case"beforetoggle":te=C}var Ge=(a&4)!==0,Nt=!Ge&&(t==="scroll"||t==="scrollend"),K=Ge?J!==null?J+"Capture":null:J;Ge=[];for(var F=X,Y;F!==null;){var oe=F;if(Y=oe.stateNode,oe=oe.tag,oe!==5&&oe!==26&&oe!==27||Y===null||K===null||(oe=Hi(F,K),oe!=null&&Ge.push(Fl(F,oe,Y))),Nt)break;F=F.return}0<Ge.length&&(J=new te(J,Oe,null,o,re),le.push({event:J,listeners:Ge}))}}if((a&7)===0){e:{if(J=t==="mouseover"||t==="pointerover",te=t==="mouseout"||t==="pointerout",J&&o!==ol&&(Oe=o.relatedTarget||o.fromElement)&&(Ba(Oe)||Oe[Ua]))break e;if((te||J)&&(J=re.window===re?re:(J=re.ownerDocument)?J.defaultView||J.parentWindow:window,te?(Oe=o.relatedTarget||o.toElement,te=X,Oe=Oe?Ba(Oe):null,Oe!==null&&(Nt=l(Oe),Ge=Oe.tag,Oe!==Nt||Ge!==5&&Ge!==27&&Ge!==6)&&(Oe=null)):(te=null,Oe=X),te!==Oe)){if(Ge=du,oe="onMouseLeave",K="onMouseEnter",F="mouse",(t==="pointerout"||t==="pointerover")&&(Ge=gu,oe="onPointerLeave",K="onPointerEnter",F="pointer"),Nt=te==null?J:fa(te),Y=Oe==null?J:fa(Oe),J=new Ge(oe,F+"leave",te,o,re),J.target=Nt,J.relatedTarget=Y,oe=null,Ba(re)===X&&(Ge=new Ge(K,F+"enter",Oe,o,re),Ge.target=Y,Ge.relatedTarget=Nt,oe=Ge),Nt=oe,te&&Oe)t:{for(Ge=Uk,K=te,F=Oe,Y=0,oe=K;oe;oe=Ge(oe))Y++;oe=0;for(var Be=F;Be;Be=Ge(Be))oe++;for(;0<Y-oe;)K=Ge(K),Y--;for(;0<oe-Y;)F=Ge(F),oe--;for(;Y--;){if(K===F||F!==null&&K===F.alternate){Ge=K;break t}K=Ge(K),F=Ge(F)}Ge=null}else Ge=null;te!==null&&ww(le,J,te,Ge,!1),Oe!==null&&Nt!==null&&ww(le,Nt,Oe,Ge,!0)}}e:{if(J=X?fa(X):window,te=J.nodeName&&J.nodeName.toLowerCase(),te==="select"||te==="input"&&J.type==="file")var St=ml;else if(gl(J))if(yl)St=QT;else{St=Uh;var Ne=Ph}else te=J.nodeName,!te||te.toLowerCase()!=="input"||J.type!=="checkbox"&&J.type!=="radio"?X&&il(X.elementType)&&(St=ml):St=Su;if(St&&(St=St(t,X))){yu(le,St,o,re);break e}Ne&&Ne(t,J,X),t==="focusout"&&X&&J.type==="number"&&X.memoizedProps.value!=null&&ha(J,"number",J.value)}switch(Ne=X?fa(X):window,t){case"focusin":(gl(Ne)||Ne.contentEditable==="true")&&(js=Ne,qh=X,Sl=null);break;case"focusout":Sl=qh=js=null;break;case"mousedown":Gh=!0;break;case"contextmenu":case"mouseup":case"dragend":Gh=!1,Kb(le,o,re);break;case"selectionchange":if(ek)break;case"keydown":case"keyup":Kb(le,o,re)}var Ze;if(j)e:{switch(t){case"compositionstart":var ut="onCompositionStart";break e;case"compositionend":ut="onCompositionEnd";break e;case"compositionupdate":ut="onCompositionUpdate";break e}ut=void 0}else Hr?vt(t,o)&&(ut="onCompositionEnd"):t==="keydown"&&o.keyCode===229&&(ut="onCompositionStart");ut&&(Le&&o.locale!=="ko"&&(Hr||ut!=="onCompositionStart"?ut==="onCompositionEnd"&&Hr&&(Ze=cu()):(Jr=re,ul="value"in Jr?Jr.value:Jr.textContent,Hr=!0)),Ne=ld(X,ut),0<Ne.length&&(ut=new hu(ut,t,null,o,re),le.push({event:ut,listeners:Ne}),Ze?ut.data=Ze:(Ze=Vt(o),Ze!==null&&(ut.data=Ze)))),(Ze=ye?jh(t,o):mu(t,o))&&(ut=ld(X,"onBeforeInput"),0<ut.length&&(Ne=new hu("onBeforeInput","beforeinput",null,o,re),le.push({event:Ne,listeners:ut}),Ne.data=Ze)),jk(le,t,X,o,re)}vw(le,a)})}function Fl(t,a,o){return{instance:t,listener:a,currentTarget:o}}function ld(t,a){for(var o=a+"Capture",u=[];t!==null;){var p=t,g=p.stateNode;if(p=p.tag,p!==5&&p!==26&&p!==27||g===null||(p=Hi(t,o),p!=null&&u.unshift(Fl(t,p,g)),p=Hi(t,a),p!=null&&u.push(Fl(t,p,g))),t.tag===3)return u;t=t.return}return[]}function Uk(t){if(t===null)return null;do t=t.return;while(t&&t.tag!==5&&t.tag!==27);return t||null}function ww(t,a,o,u,p){for(var g=a._reactName,w=[];o!==null&&o!==u;){var R=o,P=R.alternate,X=R.stateNode;if(R=R.tag,P!==null&&P===u)break;R!==5&&R!==26&&R!==27||X===null||(P=X,p?(X=Hi(o,g),X!=null&&w.unshift(Fl(o,X,P))):p||(X=Hi(o,g),X!=null&&w.push(Fl(o,X,P)))),o=o.return}w.length!==0&&t.push({event:a,listeners:w})}var Bk=/\r\n?/g,qk=/\u0000|\uFFFD/g;function Cw(t){return(typeof t=="string"?t:""+t).replace(Bk,`
`).replace(qk,"")}function Ew(t,a){return a=Cw(a),Cw(t)===a}function Mt(t,a,o,u,p,g){switch(o){case"children":typeof u=="string"?a==="body"||a==="textarea"&&u===""||Wa(t,u):(typeof u=="number"||typeof u=="bigint")&&a!=="body"&&Wa(t,""+u);break;case"className":Ii(t,"class",u);break;case"tabIndex":Ii(t,"tabindex",u);break;case"dir":case"role":case"viewBox":case"width":case"height":Ii(t,o,u);break;case"style":su(t,u,g);break;case"data":if(a!=="object"){Ii(t,"data",u);break}case"src":case"href":if(u===""&&(a!=="a"||o!=="href")){t.removeAttribute(o);break}if(u==null||typeof u=="function"||typeof u=="symbol"||typeof u=="boolean"){t.removeAttribute(o);break}u=gr(""+u),t.setAttribute(o,u);break;case"action":case"formAction":if(typeof u=="function"){t.setAttribute(o,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof g=="function"&&(o==="formAction"?(a!=="input"&&Mt(t,a,"name",p.name,p,null),Mt(t,a,"formEncType",p.formEncType,p,null),Mt(t,a,"formMethod",p.formMethod,p,null),Mt(t,a,"formTarget",p.formTarget,p,null)):(Mt(t,a,"encType",p.encType,p,null),Mt(t,a,"method",p.method,p,null),Mt(t,a,"target",p.target,p,null)));if(u==null||typeof u=="symbol"||typeof u=="boolean"){t.removeAttribute(o);break}u=gr(""+u),t.setAttribute(o,u);break;case"onClick":u!=null&&(t.onclick=Nr);break;case"onScroll":u!=null&&ot("scroll",t);break;case"onScrollEnd":u!=null&&ot("scrollend",t);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(r(61));if(o=u.__html,o!=null){if(p.children!=null)throw Error(r(60));t.innerHTML=o}}break;case"multiple":t.multiple=u&&typeof u!="function"&&typeof u!="symbol";break;case"muted":t.muted=u&&typeof u!="function"&&typeof u!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(u==null||typeof u=="function"||typeof u=="boolean"||typeof u=="symbol"){t.removeAttribute("xlink:href");break}o=gr(""+u),t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":u!=null&&typeof u!="function"&&typeof u!="symbol"?t.setAttribute(o,""+u):t.removeAttribute(o);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":u&&typeof u!="function"&&typeof u!="symbol"?t.setAttribute(o,""):t.removeAttribute(o);break;case"capture":case"download":u===!0?t.setAttribute(o,""):u!==!1&&u!=null&&typeof u!="function"&&typeof u!="symbol"?t.setAttribute(o,u):t.removeAttribute(o);break;case"cols":case"rows":case"size":case"span":u!=null&&typeof u!="function"&&typeof u!="symbol"&&!isNaN(u)&&1<=u?t.setAttribute(o,u):t.removeAttribute(o);break;case"rowSpan":case"start":u==null||typeof u=="function"||typeof u=="symbol"||isNaN(u)?t.removeAttribute(o):t.setAttribute(o,u);break;case"popover":ot("beforetoggle",t),ot("toggle",t),Bn(t,"popover",u);break;case"xlinkActuate":Sn(t,"http://www.w3.org/1999/xlink","xlink:actuate",u);break;case"xlinkArcrole":Sn(t,"http://www.w3.org/1999/xlink","xlink:arcrole",u);break;case"xlinkRole":Sn(t,"http://www.w3.org/1999/xlink","xlink:role",u);break;case"xlinkShow":Sn(t,"http://www.w3.org/1999/xlink","xlink:show",u);break;case"xlinkTitle":Sn(t,"http://www.w3.org/1999/xlink","xlink:title",u);break;case"xlinkType":Sn(t,"http://www.w3.org/1999/xlink","xlink:type",u);break;case"xmlBase":Sn(t,"http://www.w3.org/XML/1998/namespace","xml:base",u);break;case"xmlLang":Sn(t,"http://www.w3.org/XML/1998/namespace","xml:lang",u);break;case"xmlSpace":Sn(t,"http://www.w3.org/XML/1998/namespace","xml:space",u);break;case"is":Bn(t,"is",u);break;case"innerText":case"textContent":break;default:(!(2<o.length)||o[0]!=="o"&&o[0]!=="O"||o[1]!=="n"&&o[1]!=="N")&&(o=wh.get(o)||o,Bn(t,o,u))}}function gg(t,a,o,u,p,g){switch(o){case"style":su(t,u,g);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(r(61));if(o=u.__html,o!=null){if(p.children!=null)throw Error(r(60));t.innerHTML=o}}break;case"children":typeof u=="string"?Wa(t,u):(typeof u=="number"||typeof u=="bigint")&&Wa(t,""+u);break;case"onScroll":u!=null&&ot("scroll",t);break;case"onScrollEnd":u!=null&&ot("scrollend",t);break;case"onClick":u!=null&&(t.onclick=Nr);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Zc.hasOwnProperty(o))e:{if(o[0]==="o"&&o[1]==="n"&&(p=o.endsWith("Capture"),a=o.slice(2,p?o.length-7:void 0),g=t[Dn]||null,g=g!=null?g[o]:null,typeof g=="function"&&t.removeEventListener(a,g,p),typeof u=="function")){typeof g!="function"&&g!==null&&(o in t?t[o]=null:t.hasAttribute(o)&&t.removeAttribute(o)),t.addEventListener(a,u,p);break e}o in t?t[o]=u:u===!0?t.setAttribute(o,""):Bn(t,o,u)}}}function _n(t,a,o){switch(a){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":ot("error",t),ot("load",t);var u=!1,p=!1,g;for(g in o)if(o.hasOwnProperty(g)){var w=o[g];if(w!=null)switch(g){case"src":u=!0;break;case"srcSet":p=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(r(137,a));default:Mt(t,a,g,w,o,null)}}p&&Mt(t,a,"srcSet",o.srcSet,o,null),u&&Mt(t,a,"src",o.src,o,null);return;case"input":ot("invalid",t);var R=g=w=p=null,P=null,X=null;for(u in o)if(o.hasOwnProperty(u)){var re=o[u];if(re!=null)switch(u){case"name":p=re;break;case"type":w=re;break;case"checked":P=re;break;case"defaultChecked":X=re;break;case"value":g=re;break;case"defaultValue":R=re;break;case"children":case"dangerouslySetInnerHTML":if(re!=null)throw Error(r(137,a));break;default:Mt(t,a,u,re,o,null)}}ji(t,g,R,P,X,w,p,!1);return;case"select":ot("invalid",t),u=w=g=null;for(p in o)if(o.hasOwnProperty(p)&&(R=o[p],R!=null))switch(p){case"value":g=R;break;case"defaultValue":w=R;break;case"multiple":u=R;default:Mt(t,a,p,R,o,null)}a=g,o=w,t.multiple=!!u,a!=null?Va(t,!!u,a,!1):o!=null&&Va(t,!!u,o,!0);return;case"textarea":ot("invalid",t),g=p=u=null;for(w in o)if(o.hasOwnProperty(w)&&(R=o[w],R!=null))switch(w){case"value":u=R;break;case"defaultValue":p=R;break;case"children":g=R;break;case"dangerouslySetInnerHTML":if(R!=null)throw Error(r(91));break;default:Mt(t,a,w,R,o,null)}au(t,u,p,g);return;case"option":for(P in o)if(o.hasOwnProperty(P)&&(u=o[P],u!=null))switch(P){case"selected":t.selected=u&&typeof u!="function"&&typeof u!="symbol";break;default:Mt(t,a,P,u,o,null)}return;case"dialog":ot("beforetoggle",t),ot("toggle",t),ot("cancel",t),ot("close",t);break;case"iframe":case"object":ot("load",t);break;case"video":case"audio":for(u=0;u<Gl.length;u++)ot(Gl[u],t);break;case"image":ot("error",t),ot("load",t);break;case"details":ot("toggle",t);break;case"embed":case"source":case"link":ot("error",t),ot("load",t);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(X in o)if(o.hasOwnProperty(X)&&(u=o[X],u!=null))switch(X){case"children":case"dangerouslySetInnerHTML":throw Error(r(137,a));default:Mt(t,a,X,u,o,null)}return;default:if(il(a)){for(re in o)o.hasOwnProperty(re)&&(u=o[re],u!==void 0&&gg(t,a,re,u,o,void 0));return}}for(R in o)o.hasOwnProperty(R)&&(u=o[R],u!=null&&Mt(t,a,R,u,o,null))}function Gk(t,a,o,u){switch(a){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var p=null,g=null,w=null,R=null,P=null,X=null,re=null;for(te in o){var le=o[te];if(o.hasOwnProperty(te)&&le!=null)switch(te){case"checked":break;case"value":break;case"defaultValue":P=le;default:u.hasOwnProperty(te)||Mt(t,a,te,null,u,le)}}for(var J in u){var te=u[J];if(le=o[J],u.hasOwnProperty(J)&&(te!=null||le!=null))switch(J){case"type":g=te;break;case"name":p=te;break;case"checked":X=te;break;case"defaultChecked":re=te;break;case"value":w=te;break;case"defaultValue":R=te;break;case"children":case"dangerouslySetInnerHTML":if(te!=null)throw Error(r(137,a));break;default:te!==le&&Mt(t,a,J,te,u,le)}}Os(t,w,R,P,X,re,g,p);return;case"select":te=w=R=J=null;for(g in o)if(P=o[g],o.hasOwnProperty(g)&&P!=null)switch(g){case"value":break;case"multiple":te=P;default:u.hasOwnProperty(g)||Mt(t,a,g,null,u,P)}for(p in u)if(g=u[p],P=o[p],u.hasOwnProperty(p)&&(g!=null||P!=null))switch(p){case"value":J=g;break;case"defaultValue":R=g;break;case"multiple":w=g;default:g!==P&&Mt(t,a,p,g,u,P)}a=R,o=w,u=te,J!=null?Va(t,!!o,J,!1):!!u!=!!o&&(a!=null?Va(t,!!o,a,!0):Va(t,!!o,o?[]:"",!1));return;case"textarea":te=J=null;for(R in o)if(p=o[R],o.hasOwnProperty(R)&&p!=null&&!u.hasOwnProperty(R))switch(R){case"value":break;case"children":break;default:Mt(t,a,R,null,u,p)}for(w in u)if(p=u[w],g=o[w],u.hasOwnProperty(w)&&(p!=null||g!=null))switch(w){case"value":J=p;break;case"defaultValue":te=p;break;case"children":break;case"dangerouslySetInnerHTML":if(p!=null)throw Error(r(91));break;default:p!==g&&Mt(t,a,w,p,u,g)}Ka(t,J,te);return;case"option":for(var Oe in o)if(J=o[Oe],o.hasOwnProperty(Oe)&&J!=null&&!u.hasOwnProperty(Oe))switch(Oe){case"selected":t.selected=!1;break;default:Mt(t,a,Oe,null,u,J)}for(P in u)if(J=u[P],te=o[P],u.hasOwnProperty(P)&&J!==te&&(J!=null||te!=null))switch(P){case"selected":t.selected=J&&typeof J!="function"&&typeof J!="symbol";break;default:Mt(t,a,P,J,u,te)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var Ge in o)J=o[Ge],o.hasOwnProperty(Ge)&&J!=null&&!u.hasOwnProperty(Ge)&&Mt(t,a,Ge,null,u,J);for(X in u)if(J=u[X],te=o[X],u.hasOwnProperty(X)&&J!==te&&(J!=null||te!=null))switch(X){case"children":case"dangerouslySetInnerHTML":if(J!=null)throw Error(r(137,a));break;default:Mt(t,a,X,J,u,te)}return;default:if(il(a)){for(var Nt in o)J=o[Nt],o.hasOwnProperty(Nt)&&J!==void 0&&!u.hasOwnProperty(Nt)&&gg(t,a,Nt,void 0,u,J);for(re in u)J=u[re],te=o[re],!u.hasOwnProperty(re)||J===te||J===void 0&&te===void 0||gg(t,a,re,J,u,te);return}}for(var K in o)J=o[K],o.hasOwnProperty(K)&&J!=null&&!u.hasOwnProperty(K)&&Mt(t,a,K,null,u,J);for(le in u)J=u[le],te=o[le],!u.hasOwnProperty(le)||J===te||J==null&&te==null||Mt(t,a,le,J,u,te)}function _w(t){switch(t){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function Fk(){if(typeof performance.getEntriesByType=="function"){for(var t=0,a=0,o=performance.getEntriesByType("resource"),u=0;u<o.length;u++){var p=o[u],g=p.transferSize,w=p.initiatorType,R=p.duration;if(g&&R&&_w(w)){for(w=0,R=p.responseEnd,u+=1;u<o.length;u++){var P=o[u],X=P.startTime;if(X>R)break;var re=P.transferSize,le=P.initiatorType;re&&_w(le)&&(P=P.responseEnd,w+=re*(P<R?1:(R-X)/(P-X)))}if(--u,a+=8*(g+w)/(p.duration/1e3),t++,10<t)break}}if(0<t)return a/t/1e6}return navigator.connection&&(t=navigator.connection.downlink,typeof t=="number")?t:5}var mg=null,yg=null;function cd(t){return t.nodeType===9?t:t.ownerDocument}function Aw(t){switch(t){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function xw(t,a){if(t===0)switch(a){case"svg":return 1;case"math":return 2;default:return 0}return t===1&&a==="foreignObject"?0:t}function bg(t,a){return t==="textarea"||t==="noscript"||typeof a.children=="string"||typeof a.children=="number"||typeof a.children=="bigint"||typeof a.dangerouslySetInnerHTML=="object"&&a.dangerouslySetInnerHTML!==null&&a.dangerouslySetInnerHTML.__html!=null}var vg=null;function Vk(){var t=window.event;return t&&t.type==="popstate"?t===vg?!1:(vg=t,!0):(vg=null,!1)}var Tw=typeof setTimeout=="function"?setTimeout:void 0,Kk=typeof clearTimeout=="function"?clearTimeout:void 0,kw=typeof Promise=="function"?Promise:void 0,Wk=typeof queueMicrotask=="function"?queueMicrotask:typeof kw<"u"?function(t){return kw.resolve(null).then(t).catch(Yk)}:Tw;function Yk(t){setTimeout(function(){throw t})}function hi(t){return t==="head"}function Rw(t,a){var o=a,u=0;do{var p=o.nextSibling;if(t.removeChild(o),p&&p.nodeType===8)if(o=p.data,o==="/$"||o==="/&"){if(u===0){t.removeChild(p),uo(a);return}u--}else if(o==="$"||o==="$?"||o==="$~"||o==="$!"||o==="&")u++;else if(o==="html")Vl(t.ownerDocument.documentElement);else if(o==="head"){o=t.ownerDocument.head,Vl(o);for(var g=o.firstChild;g;){var w=g.nextSibling,R=g.nodeName;g[Ni]||R==="SCRIPT"||R==="STYLE"||R==="LINK"&&g.rel.toLowerCase()==="stylesheet"||o.removeChild(g),g=w}}else o==="body"&&Vl(t.ownerDocument.body);o=p}while(o);uo(a)}function Dw(t,a){var o=t;t=0;do{var u=o.nextSibling;if(o.nodeType===1?a?(o._stashedDisplay=o.style.display,o.style.display="none"):(o.style.display=o._stashedDisplay||"",o.getAttribute("style")===""&&o.removeAttribute("style")):o.nodeType===3&&(a?(o._stashedText=o.nodeValue,o.nodeValue=""):o.nodeValue=o._stashedText||""),u&&u.nodeType===8)if(o=u.data,o==="/$"){if(t===0)break;t--}else o!=="$"&&o!=="$?"&&o!=="$~"&&o!=="$!"||t++;o=u}while(o)}function Sg(t){var a=t.firstChild;for(a&&a.nodeType===10&&(a=a.nextSibling);a;){var o=a;switch(a=a.nextSibling,o.nodeName){case"HTML":case"HEAD":case"BODY":Sg(o),rl(o);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(o.rel.toLowerCase()==="stylesheet")continue}t.removeChild(o)}}function Xk(t,a,o,u){for(;t.nodeType===1;){var p=o;if(t.nodeName.toLowerCase()!==a.toLowerCase()){if(!u&&(t.nodeName!=="INPUT"||t.type!=="hidden"))break}else if(u){if(!t[Ni])switch(a){case"meta":if(!t.hasAttribute("itemprop"))break;return t;case"link":if(g=t.getAttribute("rel"),g==="stylesheet"&&t.hasAttribute("data-precedence"))break;if(g!==p.rel||t.getAttribute("href")!==(p.href==null||p.href===""?null:p.href)||t.getAttribute("crossorigin")!==(p.crossOrigin==null?null:p.crossOrigin)||t.getAttribute("title")!==(p.title==null?null:p.title))break;return t;case"style":if(t.hasAttribute("data-precedence"))break;return t;case"script":if(g=t.getAttribute("src"),(g!==(p.src==null?null:p.src)||t.getAttribute("type")!==(p.type==null?null:p.type)||t.getAttribute("crossorigin")!==(p.crossOrigin==null?null:p.crossOrigin))&&g&&t.hasAttribute("async")&&!t.hasAttribute("itemprop"))break;return t;default:return t}}else if(a==="input"&&t.type==="hidden"){var g=p.name==null?null:""+p.name;if(p.type==="hidden"&&t.getAttribute("name")===g)return t}else return t;if(t=Cr(t.nextSibling),t===null)break}return null}function Jk(t,a,o){if(a==="")return null;for(;t.nodeType!==3;)if((t.nodeType!==1||t.nodeName!=="INPUT"||t.type!=="hidden")&&!o||(t=Cr(t.nextSibling),t===null))return null;return t}function Ow(t,a){for(;t.nodeType!==8;)if((t.nodeType!==1||t.nodeName!=="INPUT"||t.type!=="hidden")&&!a||(t=Cr(t.nextSibling),t===null))return null;return t}function wg(t){return t.data==="$?"||t.data==="$~"}function Cg(t){return t.data==="$!"||t.data==="$?"&&t.ownerDocument.readyState!=="loading"}function Qk(t,a){var o=t.ownerDocument;if(t.data==="$~")t._reactRetry=a;else if(t.data!=="$?"||o.readyState!=="loading")a();else{var u=function(){a(),o.removeEventListener("DOMContentLoaded",u)};o.addEventListener("DOMContentLoaded",u),t._reactRetry=u}}function Cr(t){for(;t!=null;t=t.nextSibling){var a=t.nodeType;if(a===1||a===3)break;if(a===8){if(a=t.data,a==="$"||a==="$!"||a==="$?"||a==="$~"||a==="&"||a==="F!"||a==="F")break;if(a==="/$"||a==="/&")return null}}return t}var Eg=null;function Lw(t){t=t.nextSibling;for(var a=0;t;){if(t.nodeType===8){var o=t.data;if(o==="/$"||o==="/&"){if(a===0)return Cr(t.nextSibling);a--}else o!=="$"&&o!=="$!"&&o!=="$?"&&o!=="$~"&&o!=="&"||a++}t=t.nextSibling}return null}function $w(t){t=t.previousSibling;for(var a=0;t;){if(t.nodeType===8){var o=t.data;if(o==="$"||o==="$!"||o==="$?"||o==="$~"||o==="&"){if(a===0)return t;a--}else o!=="/$"&&o!=="/&"||a++}t=t.previousSibling}return null}function Mw(t,a,o){switch(a=cd(o),t){case"html":if(t=a.documentElement,!t)throw Error(r(452));return t;case"head":if(t=a.head,!t)throw Error(r(453));return t;case"body":if(t=a.body,!t)throw Error(r(454));return t;default:throw Error(r(451))}}function Vl(t){for(var a=t.attributes;a.length;)t.removeAttributeNode(a[0]);rl(t)}var Er=new Map,Nw=new Set;function ud(t){return typeof t.getRootNode=="function"?t.getRootNode():t.nodeType===9?t:t.ownerDocument}var Da=ue.d;ue.d={f:Zk,r:eR,D:tR,C:nR,L:rR,m:aR,X:sR,S:iR,M:oR};function Zk(){var t=Da.f(),a=td();return t||a}function eR(t){var a=Xr(t);a!==null&&a.tag===5&&a.type==="form"?Qv(a):Da.r(t)}var oo=typeof document>"u"?null:document;function Iw(t,a,o){var u=oo;if(u&&typeof a=="string"&&a){var p=qn(a);p='link[rel="'+t+'"][href="'+p+'"]',typeof o=="string"&&(p+='[crossorigin="'+o+'"]'),Nw.has(p)||(Nw.add(p),t={rel:t,crossOrigin:o,href:a},u.querySelector(p)===null&&(a=u.createElement("link"),_n(a,"link",t),nn(a),u.head.appendChild(a)))}}function tR(t){Da.D(t),Iw("dns-prefetch",t,null)}function nR(t,a){Da.C(t,a),Iw("preconnect",t,a)}function rR(t,a,o){Da.L(t,a,o);var u=oo;if(u&&t&&a){var p='link[rel="preload"][as="'+qn(a)+'"]';a==="image"&&o&&o.imageSrcSet?(p+='[imagesrcset="'+qn(o.imageSrcSet)+'"]',typeof o.imageSizes=="string"&&(p+='[imagesizes="'+qn(o.imageSizes)+'"]')):p+='[href="'+qn(t)+'"]';var g=p;switch(a){case"style":g=lo(t);break;case"script":g=co(t)}Er.has(g)||(t=y({rel:"preload",href:a==="image"&&o&&o.imageSrcSet?void 0:t,as:a},o),Er.set(g,t),u.querySelector(p)!==null||a==="style"&&u.querySelector(Kl(g))||a==="script"&&u.querySelector(Wl(g))||(a=u.createElement("link"),_n(a,"link",t),nn(a),u.head.appendChild(a)))}}function aR(t,a){Da.m(t,a);var o=oo;if(o&&t){var u=a&&typeof a.as=="string"?a.as:"script",p='link[rel="modulepreload"][as="'+qn(u)+'"][href="'+qn(t)+'"]',g=p;switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":g=co(t)}if(!Er.has(g)&&(t=y({rel:"modulepreload",href:t},a),Er.set(g,t),o.querySelector(p)===null)){switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(o.querySelector(Wl(g)))return}u=o.createElement("link"),_n(u,"link",t),nn(u),o.head.appendChild(u)}}}function iR(t,a,o){Da.S(t,a,o);var u=oo;if(u&&t){var p=qa(u).hoistableStyles,g=lo(t);a=a||"default";var w=p.get(g);if(!w){var R={loading:0,preload:null};if(w=u.querySelector(Kl(g)))R.loading=5;else{t=y({rel:"stylesheet",href:t,"data-precedence":a},o),(o=Er.get(g))&&_g(t,o);var P=w=u.createElement("link");nn(P),_n(P,"link",t),P._p=new Promise(function(X,re){P.onload=X,P.onerror=re}),P.addEventListener("load",function(){R.loading|=1}),P.addEventListener("error",function(){R.loading|=2}),R.loading|=4,dd(w,a,u)}w={type:"stylesheet",instance:w,count:1,state:R},p.set(g,w)}}}function sR(t,a){Da.X(t,a);var o=oo;if(o&&t){var u=qa(o).hoistableScripts,p=co(t),g=u.get(p);g||(g=o.querySelector(Wl(p)),g||(t=y({src:t,async:!0},a),(a=Er.get(p))&&Ag(t,a),g=o.createElement("script"),nn(g),_n(g,"link",t),o.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},u.set(p,g))}}function oR(t,a){Da.M(t,a);var o=oo;if(o&&t){var u=qa(o).hoistableScripts,p=co(t),g=u.get(p);g||(g=o.querySelector(Wl(p)),g||(t=y({src:t,async:!0,type:"module"},a),(a=Er.get(p))&&Ag(t,a),g=o.createElement("script"),nn(g),_n(g,"link",t),o.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},u.set(p,g))}}function jw(t,a,o,u){var p=(p=se.current)?ud(p):null;if(!p)throw Error(r(446));switch(t){case"meta":case"title":return null;case"style":return typeof o.precedence=="string"&&typeof o.href=="string"?(a=lo(o.href),o=qa(p).hoistableStyles,u=o.get(a),u||(u={type:"style",instance:null,count:0,state:null},o.set(a,u)),u):{type:"void",instance:null,count:0,state:null};case"link":if(o.rel==="stylesheet"&&typeof o.href=="string"&&typeof o.precedence=="string"){t=lo(o.href);var g=qa(p).hoistableStyles,w=g.get(t);if(w||(p=p.ownerDocument||p,w={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},g.set(t,w),(g=p.querySelector(Kl(t)))&&!g._p&&(w.instance=g,w.state.loading=5),Er.has(t)||(o={rel:"preload",as:"style",href:o.href,crossOrigin:o.crossOrigin,integrity:o.integrity,media:o.media,hrefLang:o.hrefLang,referrerPolicy:o.referrerPolicy},Er.set(t,o),g||lR(p,t,o,w.state))),a&&u===null)throw Error(r(528,""));return w}if(a&&u!==null)throw Error(r(529,""));return null;case"script":return a=o.async,o=o.src,typeof o=="string"&&a&&typeof a!="function"&&typeof a!="symbol"?(a=co(o),o=qa(p).hoistableScripts,u=o.get(a),u||(u={type:"script",instance:null,count:0,state:null},o.set(a,u)),u):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,t))}}function lo(t){return'href="'+qn(t)+'"'}function Kl(t){return'link[rel="stylesheet"]['+t+"]"}function Hw(t){return y({},t,{"data-precedence":t.precedence,precedence:null})}function lR(t,a,o,u){t.querySelector('link[rel="preload"][as="style"]['+a+"]")?u.loading=1:(a=t.createElement("link"),u.preload=a,a.addEventListener("load",function(){return u.loading|=1}),a.addEventListener("error",function(){return u.loading|=2}),_n(a,"link",o),nn(a),t.head.appendChild(a))}function co(t){return'[src="'+qn(t)+'"]'}function Wl(t){return"script[async]"+t}function zw(t,a,o){if(a.count++,a.instance===null)switch(a.type){case"style":var u=t.querySelector('style[data-href~="'+qn(o.href)+'"]');if(u)return a.instance=u,nn(u),u;var p=y({},o,{"data-href":o.href,"data-precedence":o.precedence,href:null,precedence:null});return u=(t.ownerDocument||t).createElement("style"),nn(u),_n(u,"style",p),dd(u,o.precedence,t),a.instance=u;case"stylesheet":p=lo(o.href);var g=t.querySelector(Kl(p));if(g)return a.state.loading|=4,a.instance=g,nn(g),g;u=Hw(o),(p=Er.get(p))&&_g(u,p),g=(t.ownerDocument||t).createElement("link"),nn(g);var w=g;return w._p=new Promise(function(R,P){w.onload=R,w.onerror=P}),_n(g,"link",u),a.state.loading|=4,dd(g,o.precedence,t),a.instance=g;case"script":return g=co(o.src),(p=t.querySelector(Wl(g)))?(a.instance=p,nn(p),p):(u=o,(p=Er.get(g))&&(u=y({},o),Ag(u,p)),t=t.ownerDocument||t,p=t.createElement("script"),nn(p),_n(p,"link",u),t.head.appendChild(p),a.instance=p);case"void":return null;default:throw Error(r(443,a.type))}else a.type==="stylesheet"&&(a.state.loading&4)===0&&(u=a.instance,a.state.loading|=4,dd(u,o.precedence,t));return a.instance}function dd(t,a,o){for(var u=o.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),p=u.length?u[u.length-1]:null,g=p,w=0;w<u.length;w++){var R=u[w];if(R.dataset.precedence===a)g=R;else if(g!==p)break}g?g.parentNode.insertBefore(t,g.nextSibling):(a=o.nodeType===9?o.head:o,a.insertBefore(t,a.firstChild))}function _g(t,a){t.crossOrigin==null&&(t.crossOrigin=a.crossOrigin),t.referrerPolicy==null&&(t.referrerPolicy=a.referrerPolicy),t.title==null&&(t.title=a.title)}function Ag(t,a){t.crossOrigin==null&&(t.crossOrigin=a.crossOrigin),t.referrerPolicy==null&&(t.referrerPolicy=a.referrerPolicy),t.integrity==null&&(t.integrity=a.integrity)}var fd=null;function Pw(t,a,o){if(fd===null){var u=new Map,p=fd=new Map;p.set(o,u)}else p=fd,u=p.get(o),u||(u=new Map,p.set(o,u));if(u.has(t))return u;for(u.set(t,null),o=o.getElementsByTagName(t),p=0;p<o.length;p++){var g=o[p];if(!(g[Ni]||g[Ft]||t==="link"&&g.getAttribute("rel")==="stylesheet")&&g.namespaceURI!=="http://www.w3.org/2000/svg"){var w=g.getAttribute(a)||"";w=t+w;var R=u.get(w);R?R.push(g):u.set(w,[g])}}return u}function Uw(t,a,o){t=t.ownerDocument||t,t.head.insertBefore(o,a==="title"?t.querySelector("head > title"):null)}function cR(t,a,o){if(o===1||a.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof a.precedence!="string"||typeof a.href!="string"||a.href==="")break;return!0;case"link":if(typeof a.rel!="string"||typeof a.href!="string"||a.href===""||a.onLoad||a.onError)break;switch(a.rel){case"stylesheet":return t=a.disabled,typeof a.precedence=="string"&&t==null;default:return!0}case"script":if(a.async&&typeof a.async!="function"&&typeof a.async!="symbol"&&!a.onLoad&&!a.onError&&a.src&&typeof a.src=="string")return!0}return!1}function Bw(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function uR(t,a,o,u){if(o.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(o.state.loading&4)===0){if(o.instance===null){var p=lo(u.href),g=a.querySelector(Kl(p));if(g){a=g._p,a!==null&&typeof a=="object"&&typeof a.then=="function"&&(t.count++,t=hd.bind(t),a.then(t,t)),o.state.loading|=4,o.instance=g,nn(g);return}g=a.ownerDocument||a,u=Hw(u),(p=Er.get(p))&&_g(u,p),g=g.createElement("link"),nn(g);var w=g;w._p=new Promise(function(R,P){w.onload=R,w.onerror=P}),_n(g,"link",u),o.instance=g}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(o,a),(a=o.state.preload)&&(o.state.loading&3)===0&&(t.count++,o=hd.bind(t),a.addEventListener("load",o),a.addEventListener("error",o))}}var xg=0;function dR(t,a){return t.stylesheets&&t.count===0&&gd(t,t.stylesheets),0<t.count||0<t.imgCount?function(o){var u=setTimeout(function(){if(t.stylesheets&&gd(t,t.stylesheets),t.unsuspend){var g=t.unsuspend;t.unsuspend=null,g()}},6e4+a);0<t.imgBytes&&xg===0&&(xg=62500*Fk());var p=setTimeout(function(){if(t.waitingForImages=!1,t.count===0&&(t.stylesheets&&gd(t,t.stylesheets),t.unsuspend)){var g=t.unsuspend;t.unsuspend=null,g()}},(t.imgBytes>xg?50:800)+a);return t.unsuspend=o,function(){t.unsuspend=null,clearTimeout(u),clearTimeout(p)}}:null}function hd(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)gd(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var pd=null;function gd(t,a){t.stylesheets=null,t.unsuspend!==null&&(t.count++,pd=new Map,a.forEach(fR,t),pd=null,hd.call(t))}function fR(t,a){if(!(a.state.loading&4)){var o=pd.get(t);if(o)var u=o.get(null);else{o=new Map,pd.set(t,o);for(var p=t.querySelectorAll("link[data-precedence],style[data-precedence]"),g=0;g<p.length;g++){var w=p[g];(w.nodeName==="LINK"||w.getAttribute("media")!=="not all")&&(o.set(w.dataset.precedence,w),u=w)}u&&o.set(null,u)}p=a.instance,w=p.getAttribute("data-precedence"),g=o.get(w)||u,g===u&&o.set(null,p),o.set(w,p),this.count++,u=hd.bind(this),p.addEventListener("load",u),p.addEventListener("error",u),g?g.parentNode.insertBefore(p,g.nextSibling):(t=t.nodeType===9?t.head:t,t.insertBefore(p,t.firstChild)),a.state.loading|=4}}var Yl={$$typeof:k,Provider:null,Consumer:null,_currentValue:De,_currentValue2:De,_threadCount:0};function hR(t,a,o,u,p,g,w,R,P){this.tag=1,this.containerInfo=t,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Re(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Re(0),this.hiddenUpdates=Re(null),this.identifierPrefix=u,this.onUncaughtError=p,this.onCaughtError=g,this.onRecoverableError=w,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=P,this.incompleteTransitions=new Map}function qw(t,a,o,u,p,g,w,R,P,X,re,le){return t=new hR(t,a,o,w,P,X,re,le,R),a=1,g===!0&&(a|=24),g=nr(3,null,null,a),t.current=g,g.stateNode=t,a=ip(),a.refCount++,t.pooledCache=a,a.refCount++,g.memoizedState={element:u,isDehydrated:o,cache:a},cp(g),t}function Gw(t){return t?(t=Ps,t):Ps}function Fw(t,a,o,u,p,g){p=Gw(p),u.context===null?u.context=p:u.pendingContext=p,u=ni(a),u.payload={element:o},g=g===void 0?null:g,g!==null&&(u.callback=g),o=ri(t,u,a),o!==null&&(Wn(o,t,a),Tl(o,t,a))}function Vw(t,a){if(t=t.memoizedState,t!==null&&t.dehydrated!==null){var o=t.retryLane;t.retryLane=o!==0&&o<a?o:a}}function Tg(t,a){Vw(t,a),(t=t.alternate)&&Vw(t,a)}function Kw(t){if(t.tag===13||t.tag===31){var a=Yi(t,67108864);a!==null&&Wn(a,t,67108864),Tg(t,67108864)}}function Ww(t){if(t.tag===13||t.tag===31){var a=or();a=nt(a);var o=Yi(t,a);o!==null&&Wn(o,t,a),Tg(t,a)}}var md=!0;function pR(t,a,o,u){var p=Q.T;Q.T=null;var g=ue.p;try{ue.p=2,kg(t,a,o,u)}finally{ue.p=g,Q.T=p}}function gR(t,a,o,u){var p=Q.T;Q.T=null;var g=ue.p;try{ue.p=8,kg(t,a,o,u)}finally{ue.p=g,Q.T=p}}function kg(t,a,o,u){if(md){var p=Rg(u);if(p===null)pg(t,a,u,yd,o),Xw(t,u);else if(yR(p,t,a,o,u))u.stopPropagation();else if(Xw(t,u),a&4&&-1<mR.indexOf(t)){for(;p!==null;){var g=Xr(p);if(g!==null)switch(g.tag){case 3:if(g=g.stateNode,g.current.memoizedState.isDehydrated){var w=Ee(g.pendingLanes);if(w!==0){var R=g;for(R.pendingLanes|=2,R.entangledLanes|=2;w;){var P=1<<31-dn(w);R.entanglements[1]|=P,w&=~P}ta(g),(_t&6)===0&&(Zu=Ot()+500,ql(0))}}break;case 31:case 13:R=Yi(g,2),R!==null&&Wn(R,g,2),td(),Tg(g,2)}if(g=Rg(u),g===null&&pg(t,a,u,yd,o),g===p)break;p=g}p!==null&&u.stopPropagation()}else pg(t,a,u,null,o)}}function Rg(t){return t=ll(t),Dg(t)}var yd=null;function Dg(t){if(yd=null,t=Ba(t),t!==null){var a=l(t);if(a===null)t=null;else{var o=a.tag;if(o===13){if(t=c(a),t!==null)return t;t=null}else if(o===31){if(t=d(a),t!==null)return t;t=null}else if(o===3){if(a.stateNode.current.memoizedState.isDehydrated)return a.tag===3?a.stateNode.containerInfo:null;t=null}else a!==t&&(t=null)}}return yd=t,null}function Yw(t){switch(t){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Mi()){case ua:return 2;case bn:return 8;case Mn:case it:return 32;case Un:return 268435456;default:return 32}default:return 32}}var Og=!1,pi=null,gi=null,mi=null,Xl=new Map,Jl=new Map,yi=[],mR="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function Xw(t,a){switch(t){case"focusin":case"focusout":pi=null;break;case"dragenter":case"dragleave":gi=null;break;case"mouseover":case"mouseout":mi=null;break;case"pointerover":case"pointerout":Xl.delete(a.pointerId);break;case"gotpointercapture":case"lostpointercapture":Jl.delete(a.pointerId)}}function Ql(t,a,o,u,p,g){return t===null||t.nativeEvent!==g?(t={blockedOn:a,domEventName:o,eventSystemFlags:u,nativeEvent:g,targetContainers:[p]},a!==null&&(a=Xr(a),a!==null&&Kw(a)),t):(t.eventSystemFlags|=u,a=t.targetContainers,p!==null&&a.indexOf(p)===-1&&a.push(p),t)}function yR(t,a,o,u,p){switch(a){case"focusin":return pi=Ql(pi,t,a,o,u,p),!0;case"dragenter":return gi=Ql(gi,t,a,o,u,p),!0;case"mouseover":return mi=Ql(mi,t,a,o,u,p),!0;case"pointerover":var g=p.pointerId;return Xl.set(g,Ql(Xl.get(g)||null,t,a,o,u,p)),!0;case"gotpointercapture":return g=p.pointerId,Jl.set(g,Ql(Jl.get(g)||null,t,a,o,u,p)),!0}return!1}function Jw(t){var a=Ba(t.target);if(a!==null){var o=l(a);if(o!==null){if(a=o.tag,a===13){if(a=c(o),a!==null){t.blockedOn=a,Nn(t.priority,function(){Ww(o)});return}}else if(a===31){if(a=d(o),a!==null){t.blockedOn=a,Nn(t.priority,function(){Ww(o)});return}}else if(a===3&&o.stateNode.current.memoizedState.isDehydrated){t.blockedOn=o.tag===3?o.stateNode.containerInfo:null;return}}}t.blockedOn=null}function bd(t){if(t.blockedOn!==null)return!1;for(var a=t.targetContainers;0<a.length;){var o=Rg(t.nativeEvent);if(o===null){o=t.nativeEvent;var u=new o.constructor(o.type,o);ol=u,o.target.dispatchEvent(u),ol=null}else return a=Xr(o),a!==null&&Kw(a),t.blockedOn=o,!1;a.shift()}return!0}function Qw(t,a,o){bd(t)&&o.delete(a)}function bR(){Og=!1,pi!==null&&bd(pi)&&(pi=null),gi!==null&&bd(gi)&&(gi=null),mi!==null&&bd(mi)&&(mi=null),Xl.forEach(Qw),Jl.forEach(Qw)}function vd(t,a){t.blockedOn===a&&(t.blockedOn=null,Og||(Og=!0,s.unstable_scheduleCallback(s.unstable_NormalPriority,bR)))}var Sd=null;function Zw(t){Sd!==t&&(Sd=t,s.unstable_scheduleCallback(s.unstable_NormalPriority,function(){Sd===t&&(Sd=null);for(var a=0;a<t.length;a+=3){var o=t[a],u=t[a+1],p=t[a+2];if(typeof u!="function"){if(Dg(u||o)===null)continue;break}var g=Xr(o);g!==null&&(t.splice(a,3),a-=3,Rp(g,{pending:!0,data:p,method:o.method,action:u},u,p))}}))}function uo(t){function a(P){return vd(P,t)}pi!==null&&vd(pi,t),gi!==null&&vd(gi,t),mi!==null&&vd(mi,t),Xl.forEach(a),Jl.forEach(a);for(var o=0;o<yi.length;o++){var u=yi[o];u.blockedOn===t&&(u.blockedOn=null)}for(;0<yi.length&&(o=yi[0],o.blockedOn===null);)Jw(o),o.blockedOn===null&&yi.shift();if(o=(t.ownerDocument||t).$$reactFormReplay,o!=null)for(u=0;u<o.length;u+=3){var p=o[u],g=o[u+1],w=p[Dn]||null;if(typeof g=="function")w||Zw(o);else if(w){var R=null;if(g&&g.hasAttribute("formAction")){if(p=g,w=g[Dn]||null)R=w.formAction;else if(Dg(p)!==null)continue}else R=w.action;typeof R=="function"?o[u+1]=R:(o.splice(u,3),u-=3),Zw(o)}}}function e0(){function t(g){g.canIntercept&&g.info==="react-transition"&&g.intercept({handler:function(){return new Promise(function(w){return p=w})},focusReset:"manual",scroll:"manual"})}function a(){p!==null&&(p(),p=null),u||setTimeout(o,20)}function o(){if(!u&&!navigation.transition){var g=navigation.currentEntry;g&&g.url!=null&&navigation.navigate(g.url,{state:g.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var u=!1,p=null;return navigation.addEventListener("navigate",t),navigation.addEventListener("navigatesuccess",a),navigation.addEventListener("navigateerror",a),setTimeout(o,100),function(){u=!0,navigation.removeEventListener("navigate",t),navigation.removeEventListener("navigatesuccess",a),navigation.removeEventListener("navigateerror",a),p!==null&&(p(),p=null)}}}function Lg(t){this._internalRoot=t}wd.prototype.render=Lg.prototype.render=function(t){var a=this._internalRoot;if(a===null)throw Error(r(409));var o=a.current,u=or();Fw(o,u,t,a,null,null)},wd.prototype.unmount=Lg.prototype.unmount=function(){var t=this._internalRoot;if(t!==null){this._internalRoot=null;var a=t.containerInfo;Fw(t.current,2,null,t,null,null),td(),a[Ua]=null}};function wd(t){this._internalRoot=t}wd.prototype.unstable_scheduleHydration=function(t){if(t){var a=Bt();t={blockedOn:null,target:t,priority:a};for(var o=0;o<yi.length&&a!==0&&a<yi[o].priority;o++);yi.splice(o,0,t),o===0&&Jw(t)}};var t0=e.version;if(t0!=="19.2.0")throw Error(r(527,t0,"19.2.0"));ue.findDOMNode=function(t){var a=t._reactInternals;if(a===void 0)throw typeof t.render=="function"?Error(r(188)):(t=Object.keys(t).join(","),Error(r(268,t)));return t=h(a),t=t!==null?m(t):null,t=t===null?null:t.stateNode,t};var vR={bundleType:0,version:"19.2.0",rendererPackageName:"react-dom",currentDispatcherRef:Q,reconcilerVersion:"19.2.0"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Cd=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Cd.isDisabled&&Cd.supportsFiber)try{pr=Cd.inject(vR),un=Cd}catch{}}return fo.createRoot=function(t,a){if(!i(t))throw Error(r(299));var o=!1,u="",p=lS,g=cS,w=uS;return a!=null&&(a.unstable_strictMode===!0&&(o=!0),a.identifierPrefix!==void 0&&(u=a.identifierPrefix),a.onUncaughtError!==void 0&&(p=a.onUncaughtError),a.onCaughtError!==void 0&&(g=a.onCaughtError),a.onRecoverableError!==void 0&&(w=a.onRecoverableError)),a=qw(t,1,!1,null,null,o,u,null,p,g,w,e0),t[Ua]=a.current,hg(t),new Lg(a)},fo.hydrateRoot=function(t,a,o){if(!i(t))throw Error(r(299));var u=!1,p="",g=lS,w=cS,R=uS,P=null;return o!=null&&(o.unstable_strictMode===!0&&(u=!0),o.identifierPrefix!==void 0&&(p=o.identifierPrefix),o.onUncaughtError!==void 0&&(g=o.onUncaughtError),o.onCaughtError!==void 0&&(w=o.onCaughtError),o.onRecoverableError!==void 0&&(R=o.onRecoverableError),o.formState!==void 0&&(P=o.formState)),a=qw(t,1,!0,a,o??null,u,p,P,g,w,R,e0),a.context=Gw(null),o=a.current,u=or(),u=nt(u),p=ni(u),p.callback=null,ri(o,p,u),o=u,a.current.lanes=o,tt(a,o),ta(a),t[Ua]=a.current,hg(t),new wd(a)},fo.version="19.2.0",fo}var Ug;function u0(){if(Ug)return Ad.exports;Ug=1;function s(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(s)}catch(e){console.error(e)}}return s(),Ad.exports=c0(),Ad.exports}var Rd=u0();const Dd=ra(Rd),ho=[],d0=50;let Od=!1;function Bg(){try{return window.G7Core?.devTools}catch{return}}function ls(s,e,n){const r=Bg();if(Od&&r?.isEnabled?.()){r.trackLog?.(s,e,n);return}Od||(s==="error"||s==="warn")&&ho.length<d0&&ho.push({level:s,prefix:e,args:n,timestamp:Date.now()})}function Ld(){Od=!0;const s=Bg();if(!s?.isEnabled?.()){ho.length=0;return}for(const e of ho)s.trackLog?.(e.level,e.prefix,e.args);ho.length=0}const Oi=class Oi{constructor(){M(this,"debug");M(this,"prefix","[TemplateEngine]");this.debug=!1}static getInstance(){return Oi.instance||(Oi.instance=new Oi),Oi.instance}setDebug(e){this.debug=e}isDebugEnabled(){return this.debug}log(...e){this.debug&&console.log(this.prefix,...e),ls("log","TemplateEngine",e)}error(...e){this.debug&&console.error(this.prefix,...e),ls("error","TemplateEngine",e)}warn(...e){this.debug&&console.warn(this.prefix,...e),ls("warn","TemplateEngine",e)}};M(Oi,"instance");let po=Oi;function pt(s){const e=`[${s}]`,n=po.getInstance();return{log:(...r)=>{n.isDebugEnabled()&&console.log(e,...r),ls("log",s,r)},warn:(...r)=>{n.isDebugEnabled()&&console.warn(e,...r),ls("warn",s,r)},error:(...r)=>{n.isDebugEnabled()&&console.error(e,...r),ls("error",s,r)}}}po.getInstance();const qg="extension",cs="extensionless",Gg="file";function f0(){const s=globalThis?.G7Config;if(globalThis?.__g7AssetUrlMode===cs)return cs;const n=s?.assetUrlMode;return n===cs||n===qg?n:s?.settings?.general?.asset_url_mode===cs?cs:qg}function $d(){return f0()===cs}function h0(s,e,n){return Md("templates",s,e,n)}function p0(s,e){const n=e.replace(/^\/+/,"").replace(/\/+$/,""),r=encodeURIComponent(s),i=go(`templates/${s}/assets/${n}`);return i!==null?i:`/api/templates/assets/${r}/${n}`}function g0(s,e,n){return Md("modules",s,e,n)}function m0(s,e,n){return Md("plugins",s,e,n)}function Md(s,e,n,r){const i=n.replace(/^\/+/,""),l=encodeURIComponent(e);if(!$d())return`/api/${s}/assets/${l}/${i}${v0(r)}`;let c=`${Gg}=${encodeURIComponent(i)}`;return r!=null&&r!==""&&(c+=`&v=${r}`),`/api/${s}/assets/${l}?${c}`}function Br(s,e,n,r){const i=s.replace(/\/+$/,""),l=e.replace(/^\.+/,""),c=$d()?i:`${i}.${l}`,d=[];return r&&d.push(r.replace(/^[?&]+/,"")),n!=null&&n!==""&&d.push(`v=${n}`),d.length>0?`${c}?${d.join("&")}`:c}function Fg(){const s=globalThis?.G7Config?.staticBase;return typeof s=="string"&&s!==""?s.replace(/\/+$/,""):null}function y0(){const s=Fg();if(!s)return null;const e=s.match(/\/(\d+)$/);return e?Number(e[1]):null}function go(s,e){const n=Fg();if(!n)return null;const r=s.replace(/^\/+/,"");return e!==void 0&&e>0&&e!==y0()?`${n.replace(/\/\d+$/,"")}/${e}/${r}`:`${n}/${r}`}function Nd(s){if(!s)return null;const e=globalThis?.location?.origin,r=(e&&s.startsWith(e)?s.slice(e.length):s).match(/^\/build\/ext\/(\d+)\/(.+)$/);if(!r)return null;const i=r[1],l=r[2].split("?")[0],c=l.match(/^(templates|modules|plugins)\/([^/]+)\/assets\/(.+)$/);if(c){const[,h,m,y]=c;return`/api/${h}/assets/${m}/${y}?v=${i}`}const d=l.match(/^bundles\/(modules|plugins)\.(js|css)$/);if(d)return`/api/${d[1]}/bundle.${d[2]}?v=${i}`;const f=l.match(/^templates\/([^/]+)\/(routes\.json|components\.json|lang\/([a-zA-Z-]+)\.json)$/);if(f){const[,h,m]=f,y=m.replace(/\.json$/,"");return`/api/templates/${h}/${y}.json?v=${i}`}return null}function Ln(s){if(!s||!$d())return s;const e=globalThis?.location?.origin,n=e&&s.startsWith(e)?s.slice(e.length):s;if(!n.startsWith("/api/"))return s;const[r,i]=b0(n),l=r.match(/^\/api\/(modules|plugins)\/bundle\.(js|css)$/);if(l)return Vg(`/api/${l[1]}/bundle/${l[2]}`,i);const c=r.match(/^\/api\/(templates|modules|plugins)\/assets\/([^/]+)\/(.+)$/);if(c){const[,f,h,m]=c,y=`${Gg}=${encodeURIComponent(decodeURIComponent(m))}`;return`/api/${f}/assets/${h}?${y}${i?`&${i}`:""}`}const d=r.match(/^(\/api\/.+)\.(json|js|css)$/);return d?Vg(d[1],i):s}function b0(s){const e=s.indexOf("?");return e===-1?[s,""]:[s.slice(0,e),s.slice(e+1)]}function Vg(s,e){return e?`${s}?${e}`:s}function v0(s){return s==null||s===""?"":`?v=${s}`}const aa=pt("networkResilience"),Id=2,jd=300,Hd=2e3,S0=15e3;function zd(s){return s?.name==="AbortError"}function Kg(s){if(zd(s))return!1;if(s instanceof TypeError)return!0;const e=s?.code;return e==="ERR_NETWORK"||e==="ECONNABORTED"}let Zl=!1,Wg=!1;function ec(){return Zl}function w0(){typeof window>"u"||Wg||(Wg=!0,window.addEventListener("pagehide",()=>{Zl=!0}),window.addEventListener("pageshow",s=>{s.persisted&&(Zl=!1)}),window.addEventListener("beforeunload",()=>{Zl=!0}))}function Pd(s,e,n){const r=Math.min(e*Math.pow(2,s),n),i=r*.25*(Math.random()*2-1);return Math.max(0,Math.round(r+i))}function Ud(s){return new Promise(e=>setTimeout(e,s))}async function tc(s,e={}){const{retries:n=Id,baseDelayMs:r=jd,maxDelayMs:i=Hd,timeoutMs:l=S0,label:c=s,init:d}=e,f=n+1;let h;for(let m=0;m<f;m++){let y=!1,v;const S=l>0?new AbortController:null;try{const _={...d};if(S){const A=d?.signal;A&&(A.aborted?S.abort():A.addEventListener("abort",()=>S.abort(),{once:!0})),_.signal=S.signal,v=setTimeout(()=>{y=!0,S.abort()},l)}return await fetch(s,_)}catch(_){if(h=_,zd(_)&&!y||!(y||Kg(_)))throw _;if(ec())throw aa.warn(`Document unloading, aborting retries: ${c}`),_;if(m===f-1)throw aa.warn(`All ${f} attempts failed: ${c}`,_),_;const D=Pd(m,r,i);aa.warn(`Network failure (attempt ${m+1}/${f}), retrying in ${D}ms: ${c}`),await Ud(D)}finally{v!==void 0&&clearTimeout(v)}}throw h}async function _r(s,e={},n={}){const{retries:r=Id,baseDelayMs:i=jd,maxDelayMs:l=Hd,label:c=s}=n,d=r+1;for(let f=0;f<d;f++)try{await C0(s,e);return}catch(h){if(e.id&&document.getElementById(e.id)?.remove(),ec())throw aa.warn(`Document unloading, aborting script retries: ${c}`),h;if(f===d-1)throw aa.warn(`All ${d} script attempts failed: ${c}`),h;const y=Pd(f,i,l);aa.warn(`Script load failed (attempt ${f+1}/${d}), retrying in ${y}ms: ${c}`),await Ud(y)}}function C0(s,e){return new Promise((n,r)=>{const i=document.createElement("script");i.src=s,i.async=!1;for(const[l,c]of Object.entries(e))l==="id"?i.id=c:i.setAttribute(l,c);i.onload=()=>n(),i.onerror=()=>r(new Error(`Failed to load script: ${s}`)),document.head.appendChild(i)})}async function ia(s,e={},n={}){const{retries:r=Id,baseDelayMs:i=jd,maxDelayMs:l=Hd,label:c=s}=n,d=r+1;for(let f=0;f<d;f++){let h=null;try{h=E0(s,e),await _0(h);return}catch(m){if(h?.remove(),e.id&&document.getElementById(e.id)?.remove(),ec())throw aa.warn(`Document unloading, aborting stylesheet retries: ${c}`),m;if(f===d-1)throw aa.warn(`All ${d} stylesheet attempts failed: ${c}`),m;const v=Pd(f,i,l);aa.warn(`Stylesheet load failed (attempt ${f+1}/${d}), retrying in ${v}ms: ${c}`),await Ud(v)}}}function E0(s,e){const n=document.createElement("link");n.rel="stylesheet",n.href=s;for(const[r,i]of Object.entries(e))r==="id"?n.id=i:n.setAttribute(r,i);return document.head.appendChild(n),n}function _0(s){return new Promise((e,n)=>{s.onload=()=>e(),s.onerror=()=>n(new Error(`Failed to load stylesheet: ${s.href}`))})}async function nc(s,e,n={}){if(!s)return tc(e,n);try{const r=await fetch(s,n.init);if(r.ok){const i=await r.text();try{return JSON.parse(i),new Response(i,{status:r.status,statusText:r.statusText,headers:r.headers})}catch{return console.warn(`[fetchStaticFirst] Static fast path returned malformed JSON — falling back to API: ${s}`),tc(e,n)}}console.warn(`[fetchStaticFirst] Static fast path miss (${r.status}) — falling back to API: ${s}`)}catch(r){console.warn(`[fetchStaticFirst] Static fast path fetch failed — falling back to API: ${s}`,r)}return tc(e,n)}const qr=pt("ComponentRegistry");class pn extends Error{constructor(e,n,r){super(e),this.code=n,this.details=r,this.name="ComponentRegistryError"}}const er=class er{constructor(){M(this,"registry",{});M(this,"manifest",null);M(this,"cacheVersion",0);M(this,"loadingState","idle");M(this,"error",null);M(this,"templateId",null);M(this,"templateType",null)}static getInstance(){return er.instance||(er.instance=new er),er.instance}static createIsolatedInstance(){return new er}static resetInstance(){er.instance=null}async loadComponents(e,n,r=0){if(this.loadingState==="loading")throw new pn("Components are already being loaded","LOADING_IN_PROGRESS");if(this.loadingState==="loaded"&&this.templateId===e&&this.templateType===n){qr.log("Components already loaded for template:",e,n);return}this.loadingState="loading",this.templateId=e,this.templateType=n,this.cacheVersion=r,this.error=null;try{await this.loadManifest(),await this.loadComponentBundle(),this.loadingState="loaded",qr.log("Successfully loaded components:",Object.keys(this.registry).length)}catch(i){throw this.loadingState="error",this.error=i instanceof Error?i:new Error(String(i)),new pn(`Failed to load components: ${this.error.message}`,"LOAD_FAILED",{originalError:this.error})}}async loadManifest(){try{if(!this.templateId)throw new pn("Template ID not set","TEMPLATE_ID_NOT_SET");const e=`${this.templateId}:${this.templateType}:v${this.cacheVersion||0}`;if(er.manifestCache.has(e)){this.manifest=er.manifestCache.get(e),qr.log("Manifest loaded from cache:",this.manifest.templateId);return}const n=Br(`/api/templates/${this.templateId}/components`,"json",this.cacheVersion>0?this.cacheVersion:null),r=await nc(this.cacheVersion>0?go(`templates/${this.templateId}/components.json`,this.cacheVersion):null,n,{label:"components.json"});if(!r.ok)throw new pn(`Failed to fetch manifest: ${r.status} ${r.statusText}`,"MANIFEST_FETCH_FAILED",{status:r.status,statusText:r.statusText});const i=await r.json();this.validateManifest(i),this.manifest=i,er.manifestCache.set(e,i),qr.log("Manifest loaded and cached:",i.templateId)}catch(e){throw e instanceof pn?e:new pn("Failed to load component manifest","MANIFEST_LOAD_FAILED",{originalError:e})}}validateManifest(e){if(!e.version)throw new pn("Manifest missing required field: version","MANIFEST_INVALID",{field:"version"});if(!e.templateId)throw new pn("Manifest missing required field: templateId","MANIFEST_INVALID",{field:"templateId"});if(!e.components||typeof e.components!="object")throw new pn("Manifest missing required field: components","MANIFEST_INVALID",{field:"components"});const n=["basic","composite","layout"];for(const r of n){if(!Array.isArray(e.components[r]))throw new pn(`Manifest field 'components.${r}' must be an array`,"MANIFEST_INVALID",{field:`components.${r}`,value:e.components[r]});e.components[r].forEach((i,l)=>{if(!i.name||typeof i.name!="string")throw new pn(`Invalid component metadata at ${r}[${l}]: missing or invalid 'name'`,"MANIFEST_INVALID",{type:r,index:l,metadata:i});if(!i.type||typeof i.type!="string")throw new pn(`Invalid component metadata at ${r}[${l}]: missing or invalid 'type'`,"MANIFEST_INVALID",{type:r,index:l,metadata:i})})}qr.log("Manifest validation passed")}async loadComponentBundle(){try{if(!this.templateId)throw new pn("Template ID not set","TEMPLATE_ID_NOT_SET");const e=this.getGlobalVariableName(),n=window[e];if(!n||typeof n!="object")throw new pn(`Component bundle not loaded. Expected global variable: ${e}. Ensure admin.blade.php includes the IIFE bundle script.`,"BUNDLE_NOT_LOADED",{expectedVariable:e});await this.registerComponentsFromManifest(n),qr.log("Component bundle loaded from global variable:",e)}catch(e){throw e instanceof pn?e:new pn("Failed to load component bundle","BUNDLE_LOAD_FAILED",{originalError:e})}}getGlobalVariableName(){if(!this.templateId)throw new pn("Template ID not set","TEMPLATE_ID_NOT_SET");return this.templateId.split(/[-_]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("")}async registerComponentsFromManifest(e){if(!this.manifest)throw new pn("Manifest not loaded","MANIFEST_NOT_LOADED");const n=["basic","composite","layout"];for(const r of n){const i=this.manifest.components[r]||[];for(const l of i){const c=l.name,d=e[c];if(!d){qr.warn(`Component '${c}' not found in bundle`);continue}this.registerComponent(c,d,l)}}}registerComponent(e,n,r){this.registry[e]&&qr.warn(`Component '${e}' already registered, overwriting`);const i=Xe.memo(n);this.registry[e]={component:i,metadata:r},qr.log(`[ComponentRegistry] Registered component: ${e} (${r.type})`)}getComponent(e){const n=this.registry[e];return n?n.component:null}getMetadata(e){const n=this.registry[e];return n?n.metadata:null}hasComponent(e){return e in this.registry}getComponentsByType(e){return Object.entries(this.registry).filter(([n,r])=>r.metadata.type===e).map(([n,r])=>n)}getAllComponents(){return Object.keys(this.registry)}getComponentMap(){const e={};for(const[n,r]of Object.entries(this.registry))e[n]=r.component;return e}getLoadingState(){return this.loadingState}getError(){return this.error}getTemplateId(){return this.templateId}getManifest(){return this.manifest}clear(){this.registry={},this.manifest=null,this.loadingState="idle",this.error=null,this.templateId=null,this.templateType=null,qr.log("Registry cleared")}};M(er,"instance",null),M(er,"manifestCache",new Map);let Ar=er;const us=pt("PipeRegistry");function Yg(s,e){const n=s.getFullYear(),r=String(s.getMonth()+1).padStart(2,"0"),i=String(s.getDate()).padStart(2,"0"),l=String(s.getHours()).padStart(2,"0"),c=String(s.getMinutes()).padStart(2,"0"),d=String(s.getSeconds()).padStart(2,"0");return e.replace("YYYY",String(n)).replace("YY",String(n).slice(-2)).replace("MM",r).replace("M",String(s.getMonth()+1)).replace("DD",i).replace("D",String(s.getDate())).replace("HH",l).replace("H",String(s.getHours())).replace("mm",c).replace("m",String(s.getMinutes())).replace("ss",d).replace("s",String(s.getSeconds()))}function A0(s,e="ko"){const r=new Date().getTime()-s.getTime(),i=Math.floor(r/1e3),l=Math.floor(i/60),c=Math.floor(l/60),d=Math.floor(c/24),f=Math.floor(d/7),h=Math.floor(d/30),m=Math.floor(d/365);return e==="ko"?i<60?"방금 전":l<60?`${l}분 전`:c<24?`${c}시간 전`:d<7?`${d}일 전`:f<4?`${f}주 전`:h<12?`${h}개월 전`:`${m}년 전`:i<60?"just now":l<60?`${l} minute${l===1?"":"s"} ago`:c<24?`${c} hour${c===1?"":"s"} ago`:d<7?`${d} day${d===1?"":"s"} ago`:f<4?`${f} week${f===1?"":"s"} ago`:h<12?`${h} month${h===1?"":"s"} ago`:`${m} year${m===1?"":"s"} ago`}function Bd(s){if(s==null)return null;if(s instanceof Date)return s;if(typeof s=="number")return new Date(s);if(typeof s=="string"){const e=new Date(s);return isNaN(e.getTime())?null:e}return null}const mo={date:{fn:(s,e="YYYY-MM-DD")=>{const n=Bd(s);return n?Yg(n,e):""},description:"날짜 포맷 (기본: YYYY-MM-DD)"},datetime:{fn:(s,e="YYYY-MM-DD HH:mm")=>{const n=Bd(s);return n?Yg(n,e):""},description:"날짜+시간 포맷 (기본: YYYY-MM-DD HH:mm)"},relativeTime:{fn:(s,e="ko")=>{const n=Bd(s);return n?A0(n,e):""},description:'상대 시간 표시 (예: "3분 전")'},number:{fn:(s,e)=>{const n=Number(s);if(isNaN(n))return String(s??"");const r={};return e!==void 0&&(r.minimumFractionDigits=e,r.maximumFractionDigits=e),n.toLocaleString(void 0,r)},description:"숫자 포맷 (천단위 구분, 선택적 소수점)"},truncate:{fn:(s,e=100,n="...")=>typeof s!="string"?String(s??""):s.length<=e?s:s.slice(0,e)+n,description:'문자열 자르기 (기본: 100자, 접미사: "...")'},uppercase:{fn:s=>typeof s!="string"?String(s??""):s.toUpperCase(),description:"대문자 변환"},lowercase:{fn:s=>typeof s!="string"?String(s??""):s.toLowerCase(),description:"소문자 변환"},stripHtml:{fn:s=>typeof s!="string"?String(s??""):s.replace(/<[^>]*>/g,""),description:"HTML 태그 제거"},default:{fn:(s,e="")=>s==null||s===""?e:s,description:"기본값 설정 (null, undefined, 빈문자열 시)"},fallback:{fn:(s,e)=>s??e,description:"폴백 값 설정 (null, undefined 시만)"},first:{fn:s=>{if(Array.isArray(s))return s[0]},description:"배열의 첫 번째 요소"},last:{fn:s=>{if(Array.isArray(s))return s[s.length-1]},description:"배열의 마지막 요소"},join:{fn:(s,e=", ")=>Array.isArray(s)?s.join(e):"",description:'배열을 문자열로 결합 (기본 구분자: ", ")'},length:{fn:s=>Array.isArray(s)||typeof s=="string"?s.length:0,description:"배열/문자열 길이"},filterBy:{fn:(s,e,n)=>Array.isArray(s)?Array.isArray(e)?s.filter(r=>{const i=n?r?.[n]:r;return e.includes(i)}):s:[],description:"배열 필터링 (allowList에 포함된 항목만 반환)"},keys:{fn:s=>s==null||typeof s!="object"?[]:Object.keys(s),description:"객체의 키 배열"},values:{fn:s=>s==null||typeof s!="object"?[]:Object.values(s),description:"객체의 값 배열"},json:{fn:(s,e)=>{try{return JSON.stringify(s,null,e)}catch{return""}},description:"JSON 문자열로 변환"},localized:{fn:(s,e)=>s==null?"":typeof s=="string"?s:typeof s!="object"?String(s):s[e||"ko"]||s.ko||s.en||Object.values(s)[0]||"",description:"다국어 객체에서 로케일에 맞는 값 추출"}},ds=new Map,Li=class Li{static getInstance(){return Li.instance||(Li.instance=new Li),Li.instance}register(e,n,r){if(mo[e]){us.warn(`[PipeRegistry] 내장 파이프를 덮어쓸 수 없습니다: ${e}`);return}ds.set(e,{fn:n,description:r}),us.log(`[PipeRegistry] 커스텀 파이프 등록됨: ${e}`)}unregister(e){if(mo[e])return us.warn(`[PipeRegistry] 내장 파이프는 해제할 수 없습니다: ${e}`),!1;const n=ds.delete(e);return n&&us.log(`[PipeRegistry] 커스텀 파이프 해제됨: ${e}`),n}get(e){const n=mo[e];return n?n.fn:ds.get(e)?.fn}has(e){return!!mo[e]||ds.has(e)}execute(e,n,r=[]){const i=this.get(e);if(!i)return us.warn(`[PipeRegistry] 알 수 없는 파이프: ${e}`),n;try{return i(n,...r)}catch(l){return us.error(`[PipeRegistry] 파이프 실행 오류 (${e}):`,l),n}}list(){const e=[];for(const[n,r]of Object.entries(mo))e.push({name:n,description:r.description,type:"built-in"});for(const[n,r]of ds.entries())e.push({name:n,description:r.description,type:"custom"});return e.sort((n,r)=>n.name.localeCompare(r.name))}clearCustomPipes(){ds.clear()}};M(Li,"instance",null);let rc=Li;rc.getInstance();function x0(s){const e=s.trim(),n=e.indexOf("(");if(n===-1)return{name:e,args:[]};const r=e.slice(0,n).trim(),i=e.slice(n+1,-1);if(!i.trim())return{name:r,args:[]};const l=[];let c="",d=null,f=0;for(let h=0;h<i.length;h++){const m=i[h];if((h>0?i[h-1]:"")==="\\"){c+=m;continue}if((m==='"'||m==="'")&&!d){d=m;continue}if(m===d){d=null;continue}if(d){c+=m;continue}if(m==="("||m==="["||m==="{"){f++,c+=m;continue}if(m===")"||m==="]"||m==="}"){f--,c+=m;continue}if(m===","&&f===0){l.push(Xg(c.trim())),c="";continue}c+=m}return c.trim()&&l.push(Xg(c.trim())),{name:r,args:l}}function Xg(s){if(s==="null")return null;if(s==="undefined")return;if(s==="true")return!0;if(s==="false")return!1;const e=Number(s);return!isNaN(e)&&s!==""?e:s}function T0(s){const e=[];let n="",r=null,i=0;for(let l=0;l<s.length;l++){const c=s[l],d=l>0?s[l-1]:"",f=l<s.length-1?s[l+1]:"";if(d==="\\"){n+=c;continue}if((c==='"'||c==="'")&&!r){r=c,n+=c;continue}if(c===r){r=null,n+=c;continue}if(r){n+=c;continue}if(c==="("||c==="["||c==="{"){i++,n+=c;continue}if(c===")"||c==="]"||c==="}"){i--,n+=c;continue}if(c==="|"&&f!=="|"&&d!=="|"&&i===0){e.push(n.trim()),n="";continue}n+=c}return n.trim()&&e.push(n.trim()),e.length===0?[s,[]]:[e[0],e.slice(1)]}function jn(s){let e=null,n=0;for(let r=0;r<s.length;r++){const i=s[r],l=r>0?s[r-1]:"",c=r<s.length-1?s[r+1]:"";if(l!=="\\"){if((i==='"'||i==="'")&&!e){e=i;continue}if(i===e){e=null;continue}if(!e){if(i==="("||i==="["||i==="{"){n++;continue}if(i===")"||i==="]"||i==="}"){n--;continue}if(i==="|"&&c!=="|"&&l!=="|"&&n===0)return!0}}}return!1}function k0(s,e){const n=rc.getInstance();let r=s;for(const i of e){const l=x0(i);r=n.execute(l.name,r,l.args)}return r}const qd=pt("TranslationEngine");class Gd extends Error{constructor(e,n,r){super(e),this.key=n,this.locale=r,this.name="TranslationError"}}const Pn=class Pn{constructor(e={}){M(this,"cache",new Map);M(this,"translations",new Map);M(this,"options");M(this,"cacheVersion",0);this.options={defaultLocale:e.defaultLocale||"ko",fallbackLocale:e.fallbackLocale||"en",cacheTTL:e.cacheTTL||3e5}}static getInstance(e={}){return Pn.instance||(Pn.instance=new Pn(e)),Pn.instance}static resetInstance(){Pn.instance=null}setCacheVersion(e){this.cacheVersion!==e&&(qd.log("Cache version updated:",this.cacheVersion,"->",e),this.cacheVersion=e,this.cache.clear())}getCacheVersion(){return this.cacheVersion}async loadTranslations(e,n,r="/api",i=!1){const l=`${e}:${n}`;if(!i){const c=this.getFromCache(l);if(c)return this.translations.set(l,c),c}try{const c=[];i&&c.push(`_=${Date.now()}`);const d=Br(`${r}/templates/${e}/lang/${n}`,"json",this.cacheVersion>0?this.cacheVersion:null,c.length>0?c.join("&"):void 0),f=!i&&this.cacheVersion>0?go(`templates/${e}/lang/${n}.json`,this.cacheVersion):null,h=f!==null?await nc(f,d,{label:`lang/${n}.json`}):await fetch(d);if(!h.ok)throw new Gd(`Failed to load translations: ${h.statusText}`,void 0,n);const y=await h.json();return this.saveToCache(l,y),this.translations.set(l,y),y}catch(c){throw new Gd(`Failed to fetch translations for ${n}: ${c instanceof Error?c.message:String(c)}`,void 0,n)}}resolveTranslations(e,n,r){let i=e;const l=5;let c=0;for(;c<l&&i.includes("=$t:");){const d=i;if(i=i.replace(Pn.NESTED_TRANSLATION_PARAM_PATTERN,(f,h,m)=>"="+this.translate(m,n,void 0,r)),i===d)break;c++}return i.replace(Pn.TRANSLATION_PATTERN,(d,f,h)=>{const{cleanedParams:m,trailing:y}=this.separateTrailingText(h);return this.translate(f,n,m,r)+y})}translate(e,n,r,i){const l=this.getTranslation(e,n),c=r&&this.cleanParamsStr(r);if(c){const d=this.parseParams(c,i);return this.replaceParams(l,d)}return l}getTranslation(e,n){const{templateId:r,locale:i}=n,l=`${r}:${i}`,c=this.translations.get(l);if(c){const d=this.getNestedValue(c,e);if(d!==null)return d}if(i!==this.options.fallbackLocale){const d=`${r}:${this.options.fallbackLocale}`,f=this.translations.get(d);if(f){const h=this.getNestedValue(f,e);if(h!==null)return h}}return e}getNestedValue(e,n){const r=n.split(".");let i=e;for(const l of r){if(i==null||typeof i!="object")return null;i=i[l]}return typeof i=="string"?i:null}setTranslationValue(e,n,r,i){const l=`${e}:${n}`,c=this.translations.get(l)??{},d=r.split(".");let f=c;for(let h=0;h<d.length-1;h+=1){const m=d[h],y=f[m];(y==null||typeof y!="object"||Array.isArray(y))&&(f[m]={}),f=f[m]}f[d[d.length-1]]=i,this.translations.set(l,c)}parseParams(e,n){const r={},i=e.startsWith("|")?e.slice(1):e,l=[],d=i.replace(/\{\{(?:[^}]|\}(?!\}))*\}\}/g,f=>(l.push(f),`__PLACEHOLDER_${l.length-1}__`)).matchAll(Pn.PARAM_PATTERN);for(const f of d){const[,h,m]=f,y=m.replace(/__PLACEHOLDER_(\d+)__/g,(v,S)=>l[parseInt(S,10)]);r[h.trim()]=this.resolveParamValue(y.trim(),n)}return r}resolveParamValue(e,n){if(e.startsWith("{{")&&e.endsWith("}}")){const r=e.slice(2,-2).trim();if(jn(r)&&n)try{const l=oc.evaluatePipeExpression(r,n);return String(l??"")}catch(l){return qd.error("Pipe expression evaluation failed:",r,l),""}if(/[|&()[\]!?:+\-*/%<>=\s]/.test(r)&&n)try{const l=oc.evaluateExpression(r,n);return String(l??"")}catch(l){return qd.error("Expression evaluation failed:",r,l),""}else{const l=this.getNestedDataValue(n,r);return String(l??"")}}return e}separateTrailingText(e){if(!e)return{cleanedParams:void 0,trailing:""};if(e.trimEnd().endsWith("}}"))return{cleanedParams:e,trailing:""};if(!(e.startsWith("|")?e.slice(1):e).includes("="))return{cleanedParams:void 0,trailing:e};const r=e.match(/(\s+[^\p{L}\w=|&\s][^\p{L}\w=]*\s*)$/u);return r?{cleanedParams:e.slice(0,-r[1].length),trailing:r[1]}:{cleanedParams:e,trailing:""}}cleanParamsStr(e){return this.separateTrailingText(e).cleanedParams||""}getNestedDataValue(e,n){if(!e)return;const r=n.split(".");let i=e;for(const l of r){if(i==null)return;i=i[l]}return i}replaceParams(e,n){let r=e;for(const[i,l]of Object.entries(n)){const c=new RegExp(`\\{\\{${i}\\}\\}`,"g");r=r.replace(c,String(l));const d=new RegExp(`\\{${i}\\}`,"g");r=r.replace(d,String(l))}return r}getFromCache(e){const n=this.cache.get(e);return n?Date.now()-n.timestamp>this.options.cacheTTL?(this.cache.delete(e),null):n.data:null}saveToCache(e,n){this.cache.set(e,{data:n,timestamp:Date.now()})}clearCache(){this.cache.clear(),this.translations.clear()}pruneCache(){const e=Date.now(),n=[];for(const[r,i]of this.cache.entries())e-i.timestamp>this.options.cacheTTL&&n.push(r);for(const r of n)this.cache.delete(r)}getCacheStats(){const e=Date.now();let n=0;for(const r of this.cache.values())e-r.timestamp>this.options.cacheTTL&&n++;return{size:this.cache.size,expired:n}}};M(Pn,"instance",null),M(Pn,"TRANSLATION_PATTERN",/\$t:(?:defer:)?([a-zA-Z0-9._-]+)(\|(?:(?!\$t:).)+)?/g),M(Pn,"NESTED_TRANSLATION_PARAM_PATTERN",/=(\$t:([a-zA-Z0-9._-]+))(?=[|&\s]|$)/g),M(Pn,"PARAM_PATTERN",/([^=|&]+)=([^|&]+)/g);let vi=Pn;const Jg=Object.freeze(Object.defineProperty({__proto__:null,TranslationEngine:vi,TranslationError:Gd},Symbol.toStringTag,{value:"Module"})),Fd=new Map([["true",!0],["false",!1],["null",null],["undefined",void 0]]);function Oa(s){if(typeof s!="string"||!s.startsWith("{{")||!s.endsWith("}}")||s.length<4)return null;const e=s.slice(2,-2);let n=null,r=0;for(let i=0;i<e.length;i++){const l=e[i];if(n!==null){if(l==="\\"){i++;continue}l===n&&(n=null);continue}if(l==='"'||l==="'"||l==="`"){n=l;continue}if(l==="{"){r++;continue}if(l==="}"){if(r>0){r--;continue}return null}}return r===0?e.trim():null}function R0(s){const e=[];if(typeof s!="string")return e;for(let n=0;n<s.length-1;n++){if(s[n]!=="{"||s[n+1]!=="{")continue;let r=null,i=0,l=-1;for(let c=n+2;c<s.length;c++){const d=s[c];if(r!==null){if(d==="\\"){c++;continue}d===r&&(r=null);continue}if(d==='"'||d==="'"||d==="`"){r=d;continue}if(d==="{"){i++;continue}if(d==="}"){if(i>0){i--;continue}if(s[c+1]==="}"){l=c;break}break}}l!==-1&&(e.push({start:n,end:l+2,expr:s.slice(n+2,l)}),n=l+1)}return e}function yo(s){return/[?:|&!+\-*/<>=()[\]{}]/.test(s)}function Qg(s){const e=typeof s=="string"?s.trim():"";return e===""?"empty":Fd.has(e)?"literal":jn(e)?"pipe":yo(e)?"expression":"path"}function Vd(s,e,n,r){const i=typeof s=="string"?s.trim():"",l=Qg(i),c=r?.skipCache?{skipCache:!0}:void 0;if(l==="empty"){r?.onEmpty?.(s);return}if(l==="literal")return Fd.get(i);try{return l==="pipe"?n.evaluatePipeExpression(i,e,c,r?.trackingInfo):l==="expression"?n.evaluateExpression(i,e,r?.trackingInfo):n.resolve(i,e,c,r?.trackingInfo)}catch(d){if(r?.onError)return r.onError(d,i);throw d}}const lr="raw:";function Zg(s){return s.startsWith(lr)?s.slice(lr.length):s}const bo="﷐",Si="﷑",La="﷒";function vo(s){return bo+s+Si}function ac(s){return s.length>=2&&s.charCodeAt(0)===64976&&s.charCodeAt(s.length-1)===64977}function ic(s){return s.includes(bo)}function Kd(s){return s.slice(1,-1)}function fs(s){if(typeof s=="string")return vo(s);if(Array.isArray(s))return s.map(fs);if(s&&typeof s=="object"){const e={};for(const[n,r]of Object.entries(s))e[n]=fs(r);return e}return s}function $a(s){if(typeof s=="string")return ac(s)?Kd(s):ic(s)||s.includes(Si)?s.split(bo).join("").split(Si).join(""):s;if(Array.isArray(s)){let e=!1;const n=s.map(r=>{const i=$a(r);return i!==r&&(e=!0),i});return e?n:s}if(s&&typeof s=="object"){if(s.$$typeof!==void 0)return s;let e=!1;const n={};for(const[r,i]of Object.entries(s)){const l=$a(i);l!==i&&(e=!0),n[r]=l}return e?n:s}return s}const So=new Set(["constructor","__proto__","prototype","__lookupGetter__","__lookupSetter__","__defineGetter__","__defineSetter__"]),D0=new Set(["Function","eval","globalThis","window","self","document","require","module","process","Reflect","Proxy","WebAssembly","import","constructor"]);function em(s,e){if(s!==null&&(typeof s=="object"||typeof s=="function")&&tm.has(s))throw new Error(`Object.${e} on a built-in global object is not allowed`);return s}const O0=Object.freeze({keys:Object.keys,values:Object.values,entries:Object.entries,assign:(s,...e)=>{const n=em(s,"assign");for(const r of e)if(r!=null)for(const i of Object.keys(r)){if(So.has(i))throw new Error(`Access to "${i}" is forbidden`);tf(n,i,r[i])}return n},freeze:s=>Object.freeze(em(s,"freeze")),fromEntries:Object.fromEntries,create:Object.create,isFrozen:Object.isFrozen}),Wd={Math,JSON,Date,Array,Object:O0,Number,String,Boolean,Set,Map,WeakSet,WeakMap,parseInt,parseFloat,isNaN,isFinite},Yd={Date,Set,Map,WeakSet,WeakMap,Array,Number,String,Boolean,Object},tm=new Set([...Object.values(Wd),...Object.values(Yd)].filter(s=>s!==null&&(typeof s=="object"||typeof s=="function"))),sc=new Set(["function"]),xr=Symbol("short-circuit");class Xd{constructor(e){this.value=e}}class Jd{}class Qd{}function L0(s){return/[A-Za-z_$]/.test(s)}function $0(s){return/[A-Za-z0-9_$]/.test(s)}function wi(s){return s>="0"&&s<="9"}function M0(s,e,n){let r=e+1;for(;r<s.length;){if(s[r]==="\\"){r+=2;continue}if(s[r]===n)return r+1;r++}throw new Error(`Unterminated string literal at position ${e}`)}function nm(s,e){let n=e+1;const r=[],i=[];let l="";for(;n<s.length;){const c=s[n];if(c==="\\"){const d=s[n+1];switch(d){case"n":l+=`
`;break;case"t":l+=" ";break;case"r":l+="\r";break;case"b":l+="\b";break;case"f":l+="\f";break;case"v":l+="\v";break;case"0":l+="\0";break;case"\\":l+="\\";break;case"`":l+="`";break;case"$":l+="$";break;default:l+=d;break}n+=2;continue}if(c==="`")return r.push(l),{quasis:r,exprs:i,end:n+1};if(c==="$"&&s[n+1]==="{"){r.push(l),l="",n+=2;const d=n;let f=1;for(;n<s.length&&f>0;){const h=s[n];if(h==="{")f++,n++;else if(h==="}"){if(f--,f===0)break;n++}else h==='"'||h==="'"?n=M0(s,n,h):h==="`"?n=nm(s,n).end:n++}if(f!==0)throw new Error("Unterminated ${...} in template literal");i.push(s.slice(d,n)),n++;continue}l+=c,n++}throw new Error(`Unterminated template literal at position ${e}`)}function N0(s){const e=[];let n=0;const r=s.length,i=l=>n+l<r?s[n+l]:"";for(;n<r;){const l=s[n];if(l===" "||l===" "||l===`
`||l==="\r"||l==="\f"||l==="\v"){n++;continue}if(wi(l)||l==="."&&wi(i(1))){const h=n;for(;n<r&&wi(s[n]);)n++;if(s[n]===".")for(n++;n<r&&wi(s[n]);)n++;if(s[n]==="e"||s[n]==="E"){if(n++,(s[n]==="+"||s[n]==="-")&&n++,!wi(s[n]))throw new Error(`Invalid number literal at position ${h}`);for(;n<r&&wi(s[n]);)n++}const m=s.slice(h,n);e.push({type:"num",value:Number(m),pos:h});continue}if(l==='"'||l==="'"){const h=n,m=l;n++;let y="";for(;n<r&&s[n]!==m;)if(s[n]==="\\"){n++;const v=s[n];switch(v){case"n":y+=`
`;break;case"t":y+=" ";break;case"r":y+="\r";break;case"b":y+="\b";break;case"f":y+="\f";break;case"v":y+="\v";break;case"0":y+="\0";break;case"\\":y+="\\";break;case"'":y+="'";break;case'"':y+='"';break;case"`":y+="`";break;default:y+=v;break}n++}else y+=s[n],n++;if(n>=r)throw new Error(`Unterminated string literal at position ${h}`);n++,e.push({type:"str",value:y,pos:h});continue}if(L0(l)){const h=n;for(n++;n<r&&$0(s[n]);)n++;e.push({type:"ident",value:s.slice(h,n),pos:h});continue}if(l==="`"){const h=nm(s,n);e.push({type:"template",value:"",pos:n,quasis:h.quasis,exprs:h.exprs}),n=h.end;continue}const c=n,d=s.substr(n,2);if(s.substr(n,3)==="..."){e.push({type:"punct",value:"...",pos:c}),n+=3;continue}switch(l){case"=":{i(1)===">"?(e.push({type:"punct",value:"=>",pos:c}),n+=2):i(1)==="="?i(2)==="="?(e.push({type:"punct",value:"===",pos:c}),n+=3):(e.push({type:"punct",value:"==",pos:c}),n+=2):(e.push({type:"punct",value:"=",pos:c}),n+=1);continue}case"!":{i(1)==="="?i(2)==="="?(e.push({type:"punct",value:"!==",pos:c}),n+=3):(e.push({type:"punct",value:"!=",pos:c}),n+=2):(e.push({type:"punct",value:"!",pos:c}),n+=1);continue}case"<":{if(i(1)==="=")e.push({type:"punct",value:"<=",pos:c}),n+=2;else{if(i(1)==="<")throw new Error("Bitwise/shift operators are not allowed");e.push({type:"punct",value:"<",pos:c}),n+=1}continue}case">":{if(i(1)==="=")e.push({type:"punct",value:">=",pos:c}),n+=2;else{if(i(1)===">")throw new Error("Bitwise/shift operators are not allowed");e.push({type:"punct",value:">",pos:c}),n+=1}continue}case"&":{if(i(1)==="&")e.push({type:"punct",value:"&&",pos:c}),n+=2;else throw new Error("Bitwise operators are not allowed");continue}case"|":{if(i(1)==="|")e.push({type:"punct",value:"||",pos:c}),n+=2;else throw new Error("Bitwise operators are not allowed");continue}case"?":{i(1)==="."&&!wi(i(2))?(e.push({type:"punct",value:"?.",pos:c}),n+=2):i(1)==="?"?(e.push({type:"punct",value:"??",pos:c}),n+=2):(e.push({type:"punct",value:"?",pos:c}),n+=1);continue}case"+":{if(i(1)==="+")throw new Error("Increment operator is not allowed");if(i(1)==="=")throw new Error("Assignment operators are not allowed");e.push({type:"punct",value:"+",pos:c}),n+=1;continue}case"-":{if(i(1)==="-")throw new Error("Decrement operator is not allowed");if(i(1)==="=")throw new Error("Assignment operators are not allowed");e.push({type:"punct",value:"-",pos:c}),n+=1;continue}case"*":{if(i(1)==="=")throw new Error("Assignment operators are not allowed");if(i(1)==="*")throw new Error("Exponentiation operator is not supported");e.push({type:"punct",value:"*",pos:c}),n+=1;continue}case"/":{if(i(1)==="=")throw new Error("Assignment operators are not allowed");e.push({type:"punct",value:"/",pos:c}),n+=1;continue}case"%":{if(i(1)==="=")throw new Error("Assignment operators are not allowed");e.push({type:"punct",value:"%",pos:c}),n+=1;continue}case"~":case"^":throw new Error("Bitwise operators are not allowed");case".":case":":case"(":case")":case"[":case"]":case"{":case"}":case",":e.push({type:"punct",value:l,pos:c}),n+=1;continue;case";":e.push({type:"punct",value:";",pos:c}),n+=1;continue;default:throw new Error(`Unexpected character "${l}" at position ${c}`)}}return e}const I0={"??":1,"||":1,"&&":2,"===":3,"!==":3,"==":3,"!=":3,"<":4,">":4,"<=":4,">=":4,"+":5,"-":5,"*":6,"/":6,"%":6},j0=new Set(["??","||","&&"]);class H0{constructor(e){M(this,"tokens");M(this,"pos",0);this.tokens=e}atEnd(){return this.pos>=this.tokens.length}peek(e=0){const n=this.pos+e;return n<this.tokens.length?this.tokens[n]:null}next(){if(this.atEnd())throw new Error("Unexpected end of expression");return this.tokens[this.pos++]}isPunct(e,n=0){const r=this.peek(n);return!!r&&r.type==="punct"&&r.value===e}expectPunct(e){const n=this.peek();if(!n||n.type!=="punct"||n.value!==e)throw new Error(`Expected "${e}" but found "${n?n.value:"<end>"}"`);this.pos++}parseExpression(){const e=this.tryParseArrow();return e||this.parseTernary()}tryParseArrow(){const e=this.pos,n=this.peek();if(!n)return null;if(n.type==="ident"&&this.isPunct("=>",1)&&!sc.has(String(n.value))){this.pos+=1,this.pos+=1;const{body:r,isBlock:i}=this.parseArrowBody();return{type:"Arrow",params:[{name:String(n.value),default:null}],body:r,isBlock:i}}if(n.type==="punct"&&n.value==="("){this.pos+=1;const r=this.tryParseParamList();if(r&&this.isPunct(")")&&(this.pos+=1,this.isPunct("=>"))){this.pos+=1;const{body:i,isBlock:l}=this.parseArrowBody();return{type:"Arrow",params:r,body:i,isBlock:l}}return this.pos=e,null}return this.pos=e,null}tryParseParamList(){const e=[];if(this.isPunct(")"))return e;for(;;){const n=this.peek();let r=null,i;if(n&&n.type==="punct"&&n.value==="["){const c=this.tryParseArrayPattern();if(!c)return null;i=c}else if(n&&n.type==="ident"&&!sc.has(String(n.value)))r=String(n.value),this.pos+=1;else return null;let l=null;if(this.isPunct("=")&&(this.pos+=1,l=this.parseExpression()),e.push(i?{name:r,elements:i,default:l}:{name:r,default:l}),this.isPunct(",")){this.pos+=1;continue}break}return e}tryParseArrayPattern(){const e=this.pos;this.pos+=1;const n=[];for(;;){if(this.isPunct("]"))return this.pos+=1,n;if(this.isPunct(",")){n.push(null),this.pos+=1;continue}const r=this.peek();if(!r||r.type!=="ident"||sc.has(String(r.value)))return this.pos=e,null;if(n.push(String(r.value)),this.pos+=1,this.isPunct(",")){this.pos+=1;continue}return this.isPunct("]")?(this.pos+=1,n):(this.pos=e,null)}}parseArrowBody(){return this.isPunct("{")?{body:this.parseBlock(),isBlock:!0}:{body:this.parseExpression(),isBlock:!1}}parseBlock(){this.expectPunct("{");const e=[];for(;!this.isPunct("}");){if(this.atEnd())throw new Error("Unterminated block");e.push(this.parseStatement())}return this.expectPunct("}"),{type:"Block",body:e}}parseStatement(){const e=this.peek();if(!e)throw new Error("Unexpected end of statement");if(e.type==="punct"&&e.value==="{")return this.parseBlock();if(e.type==="punct"&&e.value===";")return this.pos+=1,{type:"Empty"};if(e.type==="ident")switch(String(e.value)){case"const":case"let":return this.parseVarDecl();case"if":return this.parseIf();case"for":return this.parseForOf();case"return":return this.parseReturn();case"try":return this.parseTry();case"break":return this.pos+=1,this.consumeSemicolon(),{type:"Break"};case"continue":return this.pos+=1,this.consumeSemicolon(),{type:"Continue"}}const n=this.parseExpression();return this.consumeSemicolon(),{type:"ExprStmt",expression:n}}consumeSemicolon(){this.isPunct(";")&&(this.pos+=1)}parseVarDecl(){this.pos+=1;const e=[];for(;;){const n=this.peek();if(!n||n.type!=="ident")throw new Error("Expected variable name in declaration");const r=String(n.value);this.pos+=1,this.expectPunct("=");const i=this.parseExpression();if(e.push({name:r,init:i}),this.isPunct(",")){this.pos+=1;continue}break}return this.consumeSemicolon(),{type:"VarDecl",declarations:e}}parseIf(){this.pos+=1,this.expectPunct("(");const e=this.parseExpression();this.expectPunct(")");const n=this.parseStatement();let r=null;const i=this.peek();return i&&i.type==="ident"&&i.value==="else"&&(this.pos+=1,r=this.parseStatement()),{type:"If",test:e,consequent:n,alternate:r}}parseForOf(){this.pos+=1,this.expectPunct("(");const e=this.peek();if(!e||e.type!=="ident"||e.value!=="const"&&e.value!=="let")throw new Error('Only "for (const x of …)" / "for (let x of …)" loops are supported');this.pos+=1;const n=this.peek();if(!n||n.type!=="ident")throw new Error("Expected loop variable name");const r=String(n.value);this.pos+=1;const i=this.peek();if(!i||i.type!=="ident"||i.value!=="of")throw new Error("Only for-of loops are supported (for-in / C-style for are not allowed)");this.pos+=1;const l=this.parseExpression();this.expectPunct(")");const c=this.parseStatement();return{type:"ForOf",name:r,iterable:l,body:c}}parseReturn(){if(this.pos+=1,this.isPunct(";")||this.isPunct("}")||this.atEnd())return this.consumeSemicolon(),{type:"Return",argument:null};const e=this.parseExpression();return this.consumeSemicolon(),{type:"Return",argument:e}}parseTry(){this.pos+=1;const e=this.parseBlock();let n=null,r=null,i=null;const l=this.peek();if(l&&l.type==="ident"&&l.value==="catch"){if(this.pos+=1,this.isPunct("(")){this.pos+=1;const d=this.peek();d&&d.type==="ident"&&(n=String(d.value),this.pos+=1),this.expectPunct(")")}r=this.parseBlock()}const c=this.peek();if(c&&c.type==="ident"&&c.value==="finally"&&(this.pos+=1,i=this.parseBlock()),!r&&!i)throw new Error("Missing catch or finally after try");return{type:"Try",block:e,handlerParam:n,handler:r,finalizer:i}}parseFunctionExpression(){this.pos+=1;let e=null;const n=this.peek();n&&n.type==="ident"&&n.value!==void 0&&!this.isPunct("(")&&(e=String(n.value),this.pos+=1),this.expectPunct("(");const r=this.tryParseParamList();if(!r)throw new Error("Invalid function parameter list");this.expectPunct(")");const i=this.parseBlock();return{type:"Function",name:e,params:r,body:i}}parseTernary(){const e=this.parseBinary(0);if(this.isPunct("?")){this.pos+=1;const n=this.parseExpression();this.expectPunct(":");const r=this.parseExpression();return{type:"Conditional",test:e,consequent:n,alternate:r}}return e}parseBinary(e){let n=this.parseUnary();for(;;){const r=this.peek();if(!r||r.type!=="punct")break;const i=String(r.value),l=I0[i];if(l===void 0||l<e)break;this.pos+=1;const c=this.parseBinary(l+1);j0.has(i)?n={type:"Logical",operator:i,left:n,right:c}:n={type:"Binary",operator:i,left:n,right:c}}return n}parseUnary(){const e=this.peek();if(e){if(e.type==="punct"&&(e.value==="!"||e.value==="-"||e.value==="+")){this.pos+=1;const n=this.parseUnary();return{type:"Unary",operator:String(e.value),argument:n}}if(e.type==="ident"&&e.value==="typeof")return this.pos+=1,{type:"Unary",operator:"typeof",argument:this.parseUnary()};if(e.type==="ident"&&e.value==="delete"){this.pos+=1;const n=this.parseUnary();if(n.type!=="Member")throw new Error("delete is only allowed on a property reference");return{type:"Delete",argument:n}}}return this.parsePostfix()}parsePostfix(){let e=this.parsePrimary();for(;;){const n=this.peek();if(!n||n.type!=="punct")break;if(n.value==="."){this.pos+=1;const r=this.next();if(r.type!=="ident")throw new Error(`Expected property name after "." but found "${r.value}"`);const i=String(r.value);if(So.has(i))throw new Error(`Access to "${i}" is forbidden`);e={type:"Member",object:e,property:{type:"Literal",value:i},computed:!1,optional:!1}}else if(n.value==="?.")if(this.pos+=1,this.isPunct("[")){this.pos+=1;const r=this.parseExpression();this.expectPunct("]"),this.assertComputedKeyNotBlocked(r),e={type:"Member",object:e,property:r,computed:!0,optional:!0}}else if(this.isPunct("(")){const r=this.parseArguments();e={type:"Call",callee:e,args:r,optional:!0}}else{const r=this.next();if(r.type!=="ident")throw new Error(`Expected property name after "?." but found "${r.value}"`);const i=String(r.value);if(So.has(i))throw new Error(`Access to "${i}" is forbidden`);e={type:"Member",object:e,property:{type:"Literal",value:i},computed:!1,optional:!0}}else if(n.value==="["){this.pos+=1;const r=this.parseExpression();this.expectPunct("]"),this.assertComputedKeyNotBlocked(r),e={type:"Member",object:e,property:r,computed:!0,optional:!1}}else if(n.value==="("){const r=this.parseArguments();e={type:"Call",callee:e,args:r,optional:!1}}else break}return e}assertComputedKeyNotBlocked(e){if(e.type==="Literal"&&typeof e.value=="string"&&So.has(e.value))throw new Error(`Access to "${e.value}" is forbidden`)}parseArguments(){this.expectPunct("(");const e=[];if(!this.isPunct(")"))for(;;){if(this.isPunct("...")?(this.pos+=1,e.push({type:"Spread",argument:this.parseExpression()})):e.push(this.parseExpression()),this.isPunct(",")){this.pos+=1;continue}break}return this.expectPunct(")"),e}parseNew(){this.expectIdent("new");const e=this.peek();if(!e||e.type!=="ident")throw new Error("new is only allowed on whitelisted built-in constructors");const n=String(e.value);if(!Object.prototype.hasOwnProperty.call(Yd,n))throw new Error("new is only allowed on whitelisted built-in constructors");this.pos+=1;let r=[];return this.isPunct("(")&&(r=this.parseArguments()),{type:"New",ctor:n,args:r}}expectIdent(e){const n=this.peek();if(!n||n.type!=="ident"||n.value!==e)throw new Error(`Expected "${e}"`);this.pos+=1}parsePrimary(){const e=this.peek();if(!e)throw new Error("Unexpected end of expression");if(e.type==="num")return this.pos+=1,{type:"Literal",value:e.value};if(e.type==="str")return this.pos+=1,{type:"Literal",value:e.value};if(e.type==="template"){this.pos+=1;const n=e.quasis||[""],i=(e.exprs||[]).map(l=>rm(l));return{type:"Template",quasis:n,expressions:i}}if(e.type==="ident"&&e.value==="new")return this.parseNew();if(e.type==="ident"&&e.value==="function")return this.parseFunctionExpression();if(e.type==="ident"){const n=String(e.value);if(sc.has(n))throw new Error(`Keyword "${n}" is not allowed`);switch(this.pos+=1,n){case"true":return{type:"Literal",value:!0};case"false":return{type:"Literal",value:!1};case"null":return{type:"Literal",value:null};case"undefined":return{type:"Literal",value:void 0};default:return{type:"Identifier",name:n}}}if(e.type==="punct"){if(e.value==="("){this.pos+=1;const n=this.parseExpression();return this.expectPunct(")"),n}if(e.value==="[")return this.parseArrayLiteral();if(e.value==="{")return this.parseObjectLiteral()}throw new Error(`Unexpected token "${e.value}"`)}parseArrayLiteral(){this.expectPunct("[");const e=[];for(;!this.isPunct("]");){if(this.isPunct(",")){this.pos+=1,e.push({type:"Literal",value:void 0});continue}if(this.isPunct("...")?(this.pos+=1,e.push({type:"Spread",argument:this.parseExpression()})):e.push(this.parseExpression()),this.isPunct(",")){this.pos+=1;continue}break}return this.expectPunct("]"),{type:"Array",elements:e}}parseObjectLiteral(){this.expectPunct("{");const e=[];for(;!this.isPunct("}");){if(this.isPunct("..."))this.pos+=1,e.push({kind:"spread",value:this.parseExpression()});else{let n,r=!1;const i=this.peek();if(!i)throw new Error("Unexpected end of expression in object literal");if(i.type==="punct"&&i.value==="[")this.pos+=1,n=this.parseExpression(),this.expectPunct("]"),r=!0;else if(i.type==="str")this.pos+=1,n={type:"Literal",value:i.value};else if(i.type==="num")this.pos+=1,n={type:"Literal",value:String(i.value)};else if(i.type==="ident")this.pos+=1,n={type:"Literal",value:String(i.value)};else throw new Error(`Unexpected token "${i.value}" in object literal`);if(this.isPunct(":")){this.pos+=1;const l=this.parseExpression();e.push({kind:"init",key:n,computed:r,value:l})}else{if(r||n.type!=="Literal"||typeof n.value!="string")throw new Error("Invalid shorthand property in object literal");if(i.type!=="ident")throw new Error("Invalid shorthand property in object literal");e.push({kind:"init",key:n,computed:!1,value:{type:"Identifier",name:n.value}})}}if(this.isPunct(",")){this.pos+=1;continue}break}return this.expectPunct("}"),{type:"Object",properties:e}}}function rm(s){const e=N0(s),n=new H0(e),r=n.parseExpression();if(!n.atEnd()){const i=n.peek();throw i&&i.type==="punct"&&i.value===","?new Error("The comma/sequence operator is not allowed"):new Error(`Unexpected token "${i?i.value:"<end>"}" after expression`)}return r}function z0(s,e){let n=e;for(;n;){if(Object.prototype.hasOwnProperty.call(n.vars,s))return n.vars[s];n=n.parent}if(Object.prototype.hasOwnProperty.call(Wd,s))return Wd[s];if(D0.has(s))throw new Error(`Reference to forbidden global "${s}" is not allowed`)}function Zd(s){const e=typeof s=="symbol"?s:String(s);if(typeof e=="string"&&So.has(e))throw new Error(`Access to "${e}" is forbidden`);return e}function ef(s,e){return s.type==="Member"?am(s,e):s.type==="Call"?im(s,e):et(s,e)}function am(s,e){const n=ef(s.object,e);if(n===xr||s.optional&&n==null)return xr;let r;s.computed?r=et(s.property,e):r=s.property.value;const i=Zd(r);if(n!=null)return n[i]}function im(s,e){let n,r;if(s.callee.type==="Member"){const l=s.callee,c=ef(l.object,e);if(c===xr||l.optional&&c==null)return xr;let d;l.computed?d=et(l.property,e):d=l.property.value;const f=Zd(d);c==null?n=void 0:(n=c[f],r=c)}else if(n=ef(s.callee,e),n===xr)return xr;if(s.optional&&n==null)return xr;if(typeof n!="function")throw new Error("Attempted to call a non-function value");const i=sm(s.args,e);return n.apply(r,i)}function sm(s,e){const n=[];for(const r of s)if(r.type==="Spread"){const i=et(r.argument,e);if(i!=null)for(const l of i)n.push(l)}else n.push(et(r,e));return n}function om(s,e,n){for(let r=0;r<s.length;r++){const i=s[r];let l=e[r];if(l===void 0&&i.default&&(l=et(i.default,n)),i.elements){if(l==null)throw new TypeError(`Cannot destructure ${String(l)}: value is not iterable`);const c=Array.isArray(l)?l:Array.from(l);for(let d=0;d<i.elements.length;d++){const f=i.elements[d];f!==null&&(n.vars[f]=c[d])}}else i.name!==null&&(n.vars[i.name]=l)}}function lm(s,e){try{et(s,e)}catch(n){if(n instanceof Xd)return n.value;throw n}}function et(s,e){switch(s.type){case"Literal":return s.value;case"Identifier":return z0(s.name,e);case"Member":{const n=am(s,e);return n===xr?void 0:n}case"Call":{const n=im(s,e);return n===xr?void 0:n}case"Unary":{const n=et(s.argument,e);switch(s.operator){case"!":return!n;case"-":return-n;case"+":return+n;case"typeof":return typeof n;default:throw new Error(`Unknown unary operator "${s.operator}"`)}}case"Binary":{const n=et(s.left,e),r=et(s.right,e);switch(s.operator){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":return n/r;case"%":return n%r;case"===":return n===r;case"!==":return n!==r;case"==":return n==r;case"!=":return n!=r;case"<":return n<r;case">":return n>r;case"<=":return n<=r;case">=":return n>=r;default:throw new Error(`Unknown binary operator "${s.operator}"`)}}case"Logical":{const n=et(s.left,e);switch(s.operator){case"&&":return n&&et(s.right,e);case"||":return n||et(s.right,e);case"??":return n??et(s.right,e);default:throw new Error(`Unknown logical operator "${s.operator}"`)}}case"Conditional":return et(s.test,e)?et(s.consequent,e):et(s.alternate,e);case"Array":{const n=[];for(const r of s.elements)if(r.type==="Spread"){const i=et(r.argument,e);if(i!=null)for(const l of i)n.push(l)}else n.push(et(r,e));return n}case"Object":{const n={};for(const r of s.properties)if(r.kind==="spread"){const i=et(r.value,e);if(i!=null&&typeof i=="object")for(const l of Object.keys(i))tf(n,l,i[l])}else{let i;r.computed?i=et(r.key,e):i=r.key.value;const l=et(r.value,e);tf(n,String(i),l)}return n}case"Arrow":{const n=e,r=s.params,i=s.body,l=s.isBlock;return function(...d){const f={vars:{},parent:n};return om(r,d,f),l?lm(i,f):et(i,f)}}case"Function":{const n=e,r=s.params,i=s.body,l=s.name,c=function(...f){const h={vars:{},parent:n};return l&&(h.vars[l]=c),om(r,f,h),lm(i,h)};return c}case"Delete":{const n=s.argument,r=et(n.object,e);let i;n.computed?i=et(n.property,e):i=n.property.value;const l=Zd(i);if(r==null||typeof r!="object"&&typeof r!="function")return!0;if(tm.has(r))throw new Error("delete on a built-in global object is not allowed");return delete r[l]}case"Block":{const n={vars:{},parent:e};for(const r of s.body)et(r,n);return}case"VarDecl":{for(const n of s.declarations)e.vars[n.name]=et(n.init,e);return}case"If":{et(s.test,e)?et(s.consequent,e):s.alternate&&et(s.alternate,e);return}case"ForOf":{const n=et(s.iterable,e);if(n!=null)for(const r of n){const i={vars:{},parent:e};i.vars[s.name]=r;try{et(s.body,i)}catch(l){if(l instanceof Qd)continue;if(l instanceof Jd)break;throw l}}return}case"Return":throw new Xd(s.argument?et(s.argument,e):void 0);case"ExprStmt":et(s.expression,e);return;case"Break":throw new Jd;case"Continue":throw new Qd;case"Empty":return;case"Try":{try{try{et(s.block,e)}catch(n){if(n instanceof Xd||n instanceof Jd||n instanceof Qd)throw n;if(s.handler){const r={vars:{},parent:e};s.handlerParam&&(r.vars[s.handlerParam]=n),et(s.handler,r)}else throw n}}finally{s.finalizer&&et(s.finalizer,e)}return}case"New":{const n=Yd[s.ctor];if(typeof n!="function")throw new Error("new on non-whitelisted constructor");const r=sm(s.args,e);return new n(...r)}case"Template":{let n=s.quasis[0]??"";for(let r=0;r<s.expressions.length;r++)n+=String(et(s.expressions[r],e)),n+=s.quasis[r+1]??"";return n}case"Spread":throw new Error("Unexpected spread element");default:throw new Error(`Unknown node type "${s.type}"`)}}function tf(s,e,n){Object.defineProperty(s,e,{value:n,enumerable:!0,writable:!0,configurable:!0})}function nf(s,e){if(typeof s!="string")throw new Error("Expression must be a string");const n=rm(s);return et(n,{vars:e||{},parent:null})}const Ma=pt("DataBindingEngine");function wo(){try{return window.G7Core?.devTools}catch{return}}class rf extends Error{constructor(e,n,r){super(e),this.path=n,this.context=r,this.name="DataBindingError"}}const ca=class ca{constructor(e){M(this,"cache",new Map);M(this,"renderCycleCache",new Map);M(this,"currentRenderCycleId",0);M(this,"defaultOptions",{defaultValue:void 0,nullSafe:!0,detectCircular:!0,maxDepth:10});e&&(this.defaultOptions={...this.defaultOptions,...e})}startRenderCycle(){this.currentRenderCycleId++,this.renderCycleCache.clear()}isRenderCycleCacheActive(){return this.currentRenderCycleId>0}getFromRenderCycleCache(e){if(this.isRenderCycleCacheActive())return this.renderCycleCache.get(e)}saveToRenderCycleCache(e,n){this.isRenderCycleCacheActive()&&this.renderCycleCache.set(e,n)}resolveBindings(e,n,r,i){const l={...this.defaultOptions,...r},c=wo(),d=n._computed&&!n.$computed?{...n,$computed:n._computed}:n,f=(v,S)=>{const _=S.trim();let x=!1,A=_;if(_.startsWith(lr)&&(x=!0,A=_.slice(lr.length)),jn(A))try{const z=this.evaluatePipeExpression(A,d,l,{...i,method:"resolveBindings",displayExpression:`{{${_}}}`}),W=this.formatValue(z);return x?vo(W):W}catch(z){return Ma.error("Pipe expression evaluation failed:",A,z),v}if(yo(A)){const z=c?.isEnabled()?performance.now():0;try{let W,de=!1;if(l.skipCache)W=this.evaluateExpression(A,d);else{const Se=`expr:${A}`,je=this.getFromRenderCycleCache(Se);je!==void 0?(W=je,de=!0):(W=this.evaluateExpression(A,d),this.saveToRenderCycleCache(Se,W))}if(c?.isEnabled()){const Se=performance.now()-z;c.trackExpressionEval({expression:`{{${_}}}`,result:this.sanitizeResultForTracking(W),resultType:this.getResultType(W),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:de,duration:Se,method:"resolveBindings",skipCache:l.skipCache})}const _e=this.formatValue(W);return x?vo(_e):_e}catch(W){return Ma.error("Expression evaluation failed:",A,W),v}}if(l.skipCache){const z=c?.isEnabled()?performance.now():0,W=this.resolvePath(A,d,l);if(c?.isEnabled()){const _e=performance.now()-z;c.trackExpressionEval({expression:`{{${_}}}`,result:this.sanitizeResultForTracking(W),resultType:this.getResultType(W),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:!1,duration:_e,method:"resolveBindings",skipCache:!0})}const de=this.formatValue(W);return x?vo(de):de}const O=A.startsWith("_global")||A.startsWith("_local")||A.startsWith("_isolated")||A.startsWith("$parent"),k=c?.isEnabled()?performance.now():0;let L,B=!1;if(O){const z=this.getFromRenderCycleCache(A);z!==void 0?(L=z,B=!0):(L=this.resolvePath(A,d,l),this.saveToRenderCycleCache(A,L))}else{const z=this.getFromCache(A);z!==void 0?(L=z,B=!0):(L=this.resolvePath(A,d,l),this.saveToCache(A,L))}if(c?.isEnabled()){const z=performance.now()-k;c.trackExpressionEval({expression:`{{${_}}}`,result:this.sanitizeResultForTracking(L),resultType:this.getResultType(L),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:B,duration:z,method:"resolveBindings",skipCache:l.skipCache})}const q=this.formatValue(L);return x?vo(q):q},h=R0(e);if(h.length===0)return e;let m="",y=0;for(const v of h)m+=e.slice(y,v.start),m+=f(e.slice(v.start,v.end),v.expr),y=v.end;return m+e.slice(y)}evaluatePipeExpression(e,n,r,i){const l={...this.defaultOptions,...r},c=wo(),d=c?.isEnabled()?performance.now():0,f=n._computed&&!n.$computed?{...n,$computed:n._computed}:n,[h,m]=T0(e);let y,v=!1;const S=yo(h),_=h.startsWith("_global")||h.startsWith("_local")||h.startsWith("_isolated")||h.startsWith("$parent");if(l.skipCache)S?y=this.evaluateExpression(h,f):y=this.resolvePath(h,f,l);else if(S){const A=this.getFromRenderCycleCache(`expr:${h}`);A!==void 0?(y=A,v=!0):(y=this.evaluateExpression(h,f),this.saveToRenderCycleCache(`expr:${h}`,y))}else if(_){const A=this.getFromRenderCycleCache(h);A!==void 0?(y=A,v=!0):(y=this.resolvePath(h,f,l),this.saveToRenderCycleCache(h,y))}else{const A=this.getFromCache(h);A!==void 0?(y=A,v=!0):(y=this.resolvePath(h,f,l),this.saveToCache(h,y))}const x=k0(y,m);if(c?.isEnabled()){const A=performance.now()-d;c.trackExpressionEval({expression:i?.displayExpression??`{{${e}}}`,result:this.sanitizeResultForTracking(x),resultType:this.getResultType(x),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:v,duration:A,method:i?.method??"evaluatePipeExpression",skipCache:l.skipCache})}return x}resolve(e,n,r,i){const l={...this.defaultOptions,...r},c=wo(),d=c?.isEnabled()?performance.now():0;if(l.skipCache){const y=this.resolvePath(e,n,l);return c?.isEnabled()&&c.trackExpressionEval({expression:e,result:this.sanitizeResultForTracking(y),resultType:this.getResultType(y),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:!1,duration:performance.now()-d,method:"resolve",skipCache:!0}),y}const f=e.startsWith("_global")||e.startsWith("_local")||e.startsWith("_isolated")||e.startsWith("$parent");let h=!1;if(f){const y=this.getFromRenderCycleCache(e);if(y!==void 0)return h=!0,c?.isEnabled()&&c.trackExpressionEval({expression:e,result:this.sanitizeResultForTracking(y),resultType:this.getResultType(y),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:!0,duration:performance.now()-d,method:"resolve",skipCache:l.skipCache}),y}else{const y=this.getFromCache(e);if(y!==void 0)return h=!0,c?.isEnabled()&&c.trackExpressionEval({expression:e,result:this.sanitizeResultForTracking(y),resultType:this.getResultType(y),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:!0,duration:performance.now()-d,method:"resolve",skipCache:l.skipCache}),y}const m=this.resolvePath(e,n,l);return f?this.saveToRenderCycleCache(e,m):this.saveToCache(e,m),c?.isEnabled()&&c.trackExpressionEval({expression:e,result:this.sanitizeResultForTracking(m),resultType:this.getResultType(m),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:h,duration:performance.now()-d,method:"resolve",skipCache:l.skipCache}),m}resolvePath(e,n,r,i=0,l=new WeakSet){if(typeof e!="string"||e.trim()===""){Ma.warn("resolvePath: 빈 경로가 전달되었습니다 — undefined 로 해석합니다.");return}if(r.maxDepth&&i>r.maxDepth){if(r.detectCircular)throw new rf(`Maximum depth exceeded (${r.maxDepth}). Possible circular reference.`,e,n);return r.defaultValue}const c=this.parsePath(e);let d=n;for(let f=0;f<c.length;f++){const h=c[f];if(d==null){if(r.nullSafe)return r.defaultValue;throw new rf(`Cannot read property '${h}' of ${d}`,e,n)}if(r.detectCircular&&typeof d=="object"){if(l.has(d))throw new rf(`Circular reference detected at path: ${c.slice(0,f+1).join(".")}`,e,n);l.add(d)}d=d[h],e==="_global.toasts"&&Ma.log(`[DataBindingEngine] segment: ${h}, current:`,d)}return d!==void 0?d:r.defaultValue}parsePath(e){const n=[];let r;for(ca.PATH_SEGMENT_PATTERN.lastIndex=0;(r=ca.PATH_SEGMENT_PATTERN.exec(e))!==null;){const i=r[1]||r[2];i&&n.push(i)}return n}formatValue(e){if(e==null)return"";if(typeof e=="object")try{return JSON.stringify(e)}catch{return"[Object]"}return String(e)}getFromCache(e){const n=this.cache.get(e),r=wo();if(!n){r?.isEnabled()&&r.recordCacheMiss();return}if(Date.now()-n.timestamp>ca.CACHE_EXPIRY){this.cache.delete(e),r?.isEnabled()&&r.recordCacheMiss();return}return r?.isEnabled()&&r.recordCacheHit(),n.value}saveToCache(e,n){this.cache.set(e,{value:n,timestamp:Date.now()})}isActionDefinition(e){return typeof e.handler!="string"?!1:e.params!==void 0||Array.isArray(e.actions)||typeof e.target=="string"||e.onSuccess!==void 0||e.onError!==void 0}resolveObject(e,n,r){if(this.isSwitchExpression(e)){const d=e;return this.resolveSwitch(d,n,r)}if(this.isActionDefinition(e))return{...e};if("iteration"in e)return{...e};const i={},c=[...["cellChildren","expandChildren","expandContext","render"],...r?.skipBindingKeys||[]];for(const[d,f]of Object.entries(e)){if(c.includes(d)){i[d]=f;continue}try{this.resolveObjectEntry(i,d,f,n,r)}catch(h){Ma.warn(`resolveObject: 값 해석 실패 (key: ${d}):`,h),i[d]=void 0}}return i}resolveObjectEntry(e,n,r,i,l){if(typeof r=="string"){const c=Oa(r);if(c!==null){const d=c.trim();let f=!1,h=d;d.startsWith(lr)&&(f=!0,h=d.slice(lr.length));let m;switch(Qg(h)){case"empty":Ma.warn(`resolveObject: 빈 바인딩 \`{{}}\` (key: ${n}) — undefined 로 해석합니다.`),m=void 0;break;case"literal":m=Fd.get(h);break;case"pipe":m=this.evaluatePipeExpression(h,i,l);break;case"expression":m=this.evaluateExpression(h,i,l);break;default:m=this.resolve(h,i,l)}e[n]=f&&m!=null?fs(m):m}else e[n]=this.resolveBindings(r,i,l)}else Array.isArray(r)?e[n]=r.map(c=>typeof c=="string"?this.resolveBindings(c,i,l):typeof c=="object"&&c!==null?this.resolveObject(c,i,l):c):r&&typeof r=="object"?e[n]=this.resolveObject(r,i,l):e[n]=r}clearCache(){this.cache.clear()}invalidateCacheByKeys(e){for(const n of this.cache.keys())for(const r of e)if(n===r||n.startsWith(`${r}.`)||n.startsWith(`${r}[`)){this.cache.delete(n);break}}pruneCache(){const e=Date.now();for(const[n,r]of this.cache.entries())e-r.timestamp>ca.CACHE_EXPIRY&&this.cache.delete(n)}getCacheStats(){const e=Date.now();let n=0;for(const r of this.cache.values())e-r.timestamp>ca.CACHE_EXPIRY&&n++;return{size:this.cache.size,expired:n}}evaluateExpression(e,n,r){const i=wo(),l=i?.isEnabled()?performance.now():0;i?.isEnabled()&&i.trackBindingEval();try{let c=this.preprocessOptionalChaining(e);c=this.preprocessTranslationTokens(c);const d=this.extractVariablesFromExpression(c),f={...n};for(const A of d)A in f||(f[A]=void 0);n._computed&&!f.$computed&&(f.$computed=n._computed);let h=n.$templateId,m=n.$locale;if(typeof window<"u"&&(!h||!m)){const A=window.__templateApp?.getConfig?.();h??(h=A?.templateId),m??(m=A?.locale)}const y=m||"ko";f.$localized=(A,D)=>{if(A==null&&!D)return"";if(typeof A=="string")return A;if(A&&typeof A=="object"&&A[y])return A[y];if(D&&typeof D=="string"){const O=f.$t?f.$t(D):D;if(O&&O!==D)return O}return A&&typeof A=="object"?A.ko||A.en||Object.values(A)[0]||"":A==null?"":String(A)};const v=typeof window<"u"?window.G7Core:void 0;f.$uuid=()=>v?.uuid?v.uuid():typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,A=>{const D=Math.random()*16|0;return(A==="x"?D:D&3|8).toString(16)});const S={templateId:h||"",locale:y};f.$t=A=>{if(!A||typeof A!="string")return"";try{return vi.getInstance().translate(A,S)}catch(D){return Ma.warn("$t() translation failed for key:",A,D),A}},f.$get=(A,D,O=void 0)=>{if(A==null)return O;const k=Array.isArray(D)?D:[D];if(k.length===0)return A;let L=A;for(const B of k){if(L==null||B==null)return O;L=L[B]}return L??O};const _=!1,x=nf(c,f);if(i?.isEnabled()){const A=performance.now()-l;i.trackExpressionEval({expression:e,result:this.sanitizeResultForTracking(x),resultType:this.getResultType(x),componentId:r?.componentId,componentName:r?.componentName,propName:r?.propName,fromCache:_,duration:A,method:"evaluateExpression",skipCache:r?.skipCache})}return x}catch(c){throw new Error(`Failed to evaluate expression "${e}": ${c instanceof Error?c.message:String(c)}`)}}getResultType(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}sanitizeResultForTracking(e){if(e==null||typeof e!="object")return e;try{if(Array.isArray(e))return e.length>10?`[Array(${e.length})]`:e.slice(0,10);const n=Object.keys(e);return n.length>20?`{Object(${n.length} keys)}`:(JSON.stringify(e),e)}catch{return"[Complex Object]"}}preprocessTranslationTokens(e){return e=e.replace(/(['"])(\$t:([a-zA-Z_][a-zA-Z0-9_.\-]*))\1/g,(n,r,i,l)=>`$t('${l}')`),e.replace(/(['"]\s*)?(\$t:[a-zA-Z_][a-zA-Z0-9_.\-]*)(?!\s*['"])/g,(n,r,i)=>r?n:`"${i}"`)}preprocessOptionalChaining(e){const n=[];let r=e.replace(/(['"])(?:(?!\1|\\).|\\.)*\1/g,l=>(n.push(l),`__STRING_LITERAL_${n.length-1}__`));const i=[];return r=r.replace(/\$t:[a-zA-Z_][a-zA-Z0-9_.\-]*(?:\|[^'"\s,)]+)?/g,l=>(i.push(l),`__TRANSLATION_TOKEN_${i.length-1}__`)),r=r.replace(/([a-zA-Z_$][a-zA-Z0-9_$]*)\.(?!\?)/g,"$1?."),r=r.replace(/__TRANSLATION_TOKEN_(\d+)__/g,(l,c)=>i[parseInt(c,10)]),r=r.replace(/__STRING_LITERAL_(\d+)__/g,(l,c)=>n[parseInt(c,10)]),r}extractVariablesFromExpression(e){const n=new Set(["true","false","null","undefined","NaN","Infinity","if","else","for","while","do","switch","case","break","continue","return","function","class","const","let","var","new","delete","typeof","instanceof","this","super","import","export","default","try","catch","finally","throw","Math","Date","JSON","Array","Object","String","Number","Boolean","RegExp","Set","Map","WeakSet","WeakMap","Symbol","Promise","BigInt","Error","parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent"]),r=/(^|[^.\w$])([a-zA-Z_$][a-zA-Z0-9_$]*)/g,i=new Set;let l;for(;(l=r.exec(e))!==null;){const c=l[2];n.has(c)||i.add(c)}return Array.from(i)}isSwitchExpression(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&"$switch"in e&&"$cases"in e}resolveSwitch(e,n,r){const i={...r,skipCache:!0};let l;try{l=this.resolveBindings(e.$switch,n,i)?.toString()?.trim()??""}catch(d){Ma.warn("resolveSwitch: $switch 키 평가 실패:",e.$switch,d),l=""}let c;if(l&&e.$cases&&l in e.$cases)c=e.$cases[l];else if("$default"in e)c=e.$default;else return;return typeof c=="string"?c.includes("{{")?this.resolveBindings(c,n,i):c:c!==null&&typeof c=="object"?this.resolveObject(c,n,i):c}};M(ca,"PATH_SEGMENT_PATTERN",/([^.[\]]+)|\[(\d+)\]/g),M(ca,"CACHE_EXPIRY",3e4);let $n=ca;const oc=new $n,lc={mobile:{min:0,max:767},tablet:{min:768,max:1023},desktop:{min:1024,max:1/0},portable:{min:0,max:1023}},cc=new Map;function P0(s,e){let n=null;return((...r)=>{n!==null&&clearTimeout(n),n=setTimeout(()=>{s(...r)},e)})}class U0{constructor(){M(this,"subscribers",new Set);M(this,"currentWidth",1024);M(this,"debouncedHandler",null);M(this,"isInitialized",!1);this.initialize()}initialize(){typeof window>"u"||(this.currentWidth=window.innerWidth,this.isInitialized=!0,this.debouncedHandler=P0(()=>{this.currentWidth=window.innerWidth,this.notifySubscribers()},150),window.addEventListener("resize",this.debouncedHandler))}notifySubscribers(){this.subscribers.forEach(e=>{e(this.currentWidth)})}subscribe(e){return this.subscribers.add(e),e(this.currentWidth),()=>{this.subscribers.delete(e)}}getWidth(){return this.currentWidth}parseRange(e){if(cc.has(e))return cc.get(e)??null;let n=null;if(lc[e])n={...lc[e]};else{const r=e.match(/^(-?\d*)-(-?\d*)$/);if(r){const[,i,l]=r,c=i===""?0:parseInt(i,10),d=l===""?1/0:parseInt(l,10);!isNaN(c)&&!isNaN(d)&&c<=d&&(n={min:c,max:d})}}return cc.set(e,n),n}getMatchingKey(e,n){const r=[];for(const i of Object.keys(e)){const l=this.parseRange(i);l&&n>=l.min&&n<=l.max&&r.push({key:i,range:l,isPreset:!!lc[i]})}return r.length===0?null:(r.sort((i,l)=>{if(i.isPreset!==l.isPreset)return i.isPreset?1:-1;const c=i.range.max-i.range.min,d=l.range.max-l.range.min;return c-d}),r[0].key)}matches(e){const n=this.parseRange(e);return n?this.currentWidth>=n.min&&this.currentWidth<=n.max:!1}clearSubscribers(){this.subscribers.clear()}destroy(){this.debouncedHandler&&typeof window<"u"&&window.removeEventListener("resize",this.debouncedHandler),this.clearSubscribers(),cc.clear()}_setWidthForTesting(e){this.currentWidth=e,this.notifySubscribers()}}const Ci=new U0,Co=pt("ConditionEvaluator");function B0(s,e,n,r){return Vd(Zg(s),e,n,{skipCache:!0,onEmpty:()=>{Co.warn(`${r}: 빈 바인딩 \`{{}}\` — undefined 로 해석합니다.`)}})}function cm(s,e,n){if(!s)return!0;try{const r=Oa(s);let i;if(r!==null?i=B0(r,e,n,"evaluateStringCondition"):i=n.resolveBindings(s,e,{skipCache:!0}),typeof i=="string"){const l=i.toLowerCase().trim();if(l==="false"||l==="0"||l===""||l==="null"||l==="undefined")return!1}return!!i}catch(r){return Co.warn(`evaluateStringCondition: 조건 평가 실패: ${s}`,r),!1}}function uc(s,e,n){if(typeof s=="string")return cm(s,e,n);if("and"in s){if(!Array.isArray(s.and)||s.and.length===0)return Co.warn("evaluateConditionExpression: AND 그룹이 비어있습니다"),!0;for(const r of s.and)if(!uc(r,e,n))return!1;return!0}if("or"in s){if(!Array.isArray(s.or)||s.or.length===0)return Co.warn("evaluateConditionExpression: OR 그룹이 비어있습니다"),!1;for(const r of s.or)if(uc(r,e,n))return!0;return!1}return Co.warn("evaluateConditionExpression: 알 수 없는 조건 형식",s),!1}function um(s,e,n){if(!Array.isArray(s)||s.length===0)return{matched:!1,branchIndex:-1};for(let r=0;r<s.length;r++){const i=s[r];if(i.if===void 0)return{matched:!0,branchIndex:r};if(uc(i.if,e,n))return{matched:!0,branchIndex:r}}return{matched:!1,branchIndex:-1}}function q0(s){return typeof s=="string"?!0:s&&typeof s=="object"?"and"in s||"or"in s:!1}function G0(s){if(!Array.isArray(s)||s.length===0)return!1;const e=s[0];return!e||typeof e!="object"?!1:"if"in e||"then"in e}const cr=pt("RenderHelpers");function dm(){try{return window.G7Core?.devTools}catch{return}}const fm=new $n,F0=yo,hm=Oa;function af(s,e,n){let r=s;if(s.startsWith("{{")&&s.endsWith("}}")&&(r=s.slice(2,-2).trim()),jn(r))try{return n.evaluatePipeExpression(r,e,{skipCache:!0})}catch(i){cr.warn(`resolveIterationSource: 파이프 표현식 평가 실패: ${s}`,i);return}if(F0(r))try{return n.evaluateExpression(r,e)}catch(i){cr.warn(`resolveIterationSource: 표현식 평가 실패: ${s}`,i);return}return n.resolve(r,e,{skipCache:!0})}function V0(s,e){const n={...s};if(e?.parentDataContext)for(const[r,i]of Object.entries(e.parentDataContext))r in n||(n[r]=i);if(e?.state){const r=n._local||{};n._local={...r,...e.state}}return e?.isolatedContext?.state&&(n._isolated=e.isolatedContext.state),n}function sf(s,e,n,r){if(!e||!Array.isArray(e)||e.length===0)return s;const i=r?.actionDispatcher??Cy(),l={...s,actions:e},c=i.bindActionsToProps(l,n,r?.componentContext);return delete c.actions,c}function pm(s,e,n,r){if(typeof s=="boolean")return s;if(!s)return!0;try{const i=hm(s);let l;if(i!==null?l=Vd(Zg(i),e,n,{skipCache:!0,onEmpty:()=>{cr.warn(`evaluateIfCondition: 빈 바인딩 \`{{}}\` (컴포넌트: ${r||"unknown"}) — undefined 로 해석합니다.`)}}):l=n.resolveBindings(s,e,{skipCache:!0}),typeof l=="string"){const c=l.toLowerCase().trim();if(c==="false"||c==="0"||c===""||c==="null"||c==="undefined")return!1}return!!l}catch(i){return cr.warn(`evaluateIfCondition: 조건 평가 실패 (컴포넌트: ${r||"unknown"}):`,i),!1}}function hs(s,e,n,r){if(s.if!==void 0)return pm(s.if,e,n,r);if(s.condition!==void 0)return pm(s.condition,e,n,r);if(s.conditions===void 0)return!0;const i=s.conditions;try{return q0(i)?uc(i,e,n):G0(i)?um(i,e,n).matched:(cr.warn(`evaluateRenderCondition: 알 수 없는 conditions 형식 (컴포넌트: ${r||"unknown"})`),!0)}catch(l){return cr.warn(`evaluateRenderCondition: conditions 평가 실패 (컴포넌트: ${r||"unknown"}):`,l),!1}}function gm(s){if(!s.responsive)return s;const e=Ci.getWidth(),n=Ci.getMatchingKey(s.responsive,e);if(!n)return s;const r=s.responsive[n];return{...s,props:{...s.props,...r.props},children:r.children??s.children,text:r.text??s.text,if:r.if??s.if,iteration:r.iteration??s.iteration}}function Eo(s,e,n,r,i){if(!s||s.length===0)return[];const l=i?.bindingEngine??new $n,c=i?.translationEngine??vi.getInstance(),d=i?.translationContext??{templateId:"",locale:"ko"},f=V0(e,i?.componentContext),h=(S,_)=>{if(typeof S=="string")return ac(S)||ic(S)||!/\$t:[a-zA-Z0-9._-]+/.test(S)?S:c.resolveTranslations(S,d,_);if(Array.isArray(S))return S.map(x=>h(x,_));if(S&&typeof S=="object"){const x={};for(const[A,D]of Object.entries(S))x[A]=h(D,_);return x}return S},m=(S,_)=>{if(typeof S=="string"){if(ac(S))return Kd(S);if(ic(S)){const A=[],D=S.replace(new RegExp(`${bo}([^${Si}]*)${Si}`,"g"),(k,L)=>(A.push(L),`${La}${A.length-1}${La}`));let O=D;return/\$t:[a-zA-Z0-9._-]+/.test(D)&&(O=c.resolveTranslations(D,d,_)),O.replace(new RegExp(`${La}(\\d+)${La}`,"g"),(k,L)=>A[parseInt(L)])}if(S.startsWith("$t:defer:")){const A="$t:"+S.slice(9);return c.resolveTranslations(A,d,_)}if(S.startsWith("$t:"))return c.resolveTranslations(S,d,_);if(/\$t:[a-zA-Z0-9._-]+/.test(S)){const A=S.trim();if(!(A.startsWith("{")&&A.endsWith("}")||A.startsWith("[")&&A.endsWith("]"))&&!S.includes("{{"))return c.resolveTranslations(S,d,_)}const x=hm(S);if(x!==null){let A=!1,D=x;x.startsWith(lr)&&(A=!0,D=x.slice(lr.length));let O=!1,k=Vd(D,_,l,{skipCache:!0,onError:L=>{cr.warn("renderItemChildren: 표현식 평가 실패:",L),O=!0},onEmpty:()=>{cr.warn("renderItemChildren: 빈 바인딩 `{{}}` 은 해석하지 않습니다.")}});return O?void 0:(A||(k=h(k,_)),A&&k!=null?fs(k):k)}if(S.includes("{{")){const A=l.resolveBindings(S,_,{skipCache:!0});return typeof A=="string"&&/\$t:[a-zA-Z0-9._-]+/.test(A)?c.resolveTranslations(A,d,_):A}return S}if(Array.isArray(S))return S.map(x=>m(x,_));if(S&&typeof S=="object"){if(l.isSwitchExpression(S))return l.resolveSwitch(S,_,{skipCache:!0});if(l.isActionDefinition(S))return{...S};const x={};for(const[A,D]of Object.entries(S))x[A]=m(D,_);return x}return S},y=(S,_)=>{if(!S)return{};const x={};for(const[A,D]of Object.entries(S))x[A]=m(D,_);return x},v=(S,_,x)=>{const A=gm(S),D=A.iteration;if(!D)return[];const O=af(D.source,x,l);if(!Array.isArray(O))return cr.warn(`renderItemChildren: iteration.source가 배열이 아닙니다: ${D.source}`),[];const k=dm();if(k?.isEnabled()){const B=`${_}-iteration`;k.trackIteration(B,D.source,D.item_var,D.index_var,O.length)}const L=n[A.name];return L?O.flatMap((B,q)=>{const z={...x,[D.item_var]:B,[`${D.item_var}_index`]:q,...D.index_var?{[D.index_var]:q}:{}},W=hs({if:A.if,condition:A.condition,conditions:A.conditions},z,l,A.id);if(A.if&&k?.isEnabled()){const Et=`${_}-iter-${q}-if`;k.trackIfCondition(Et,A.if,W,A.name)}if(!W)return[];const de=A.id?String($a(m(A.id,z))):void 0,_e=`${_}-iter-${q}`,Se=i?.getRemountKey?i.getRemountKey(de,_e):_e,je=y(A.props,z),Fe=sf(je,A.actions,z,{actionDispatcher:i?.actionDispatcher,componentContext:i?.componentContext});let ze=null;return A.text!==void 0?ze=m(A.text,z):A.children&&A.children.length>0&&(ze=Eo(A.children,z,n,Se,i)),k?.isEnabled()&&k.trackRender(A.name),[Xe.createElement(L,{key:Se,...$a(Fe)},$a(ze))]}):(cr.warn(`renderItemChildren: 컴포넌트를 찾을 수 없습니다: ${A.name}`),[])};return s.flatMap((S,_)=>{const x=gm(S),A=x.id?String($a(m(x.id,f))):void 0,D=r?`${r}-${A||_}`:A||`child-${_}`,O=i?.getRemountKey?i.getRemountKey(A,D):D;if(x.iteration)return v(x,O,f);const k=hs({if:x.if,condition:x.condition,conditions:x.conditions},f,l,x.id),L=dm();if(x.if&&L?.isEnabled()){const de=`${O}-if`;L.trackIfCondition(de,x.if,k,x.name)}if(!k)return[];const B=n[x.name];if(!B)return cr.warn(`renderItemChildren: 컴포넌트를 찾을 수 없습니다: ${x.name}`),[];const q=y(x.props,f),z=sf(q,x.actions,f,{actionDispatcher:i?.actionDispatcher,componentContext:i?.componentContext});let W=null;return x.text!==void 0?W=m(x.text,f):x.children&&x.children.length>0&&(W=Eo(x.children,f,n,O,i)),L?.isEnabled()&&L.trackRender(x.name),[Xe.createElement(B,{key:O,...$a(z)},$a(W))]})}function ps(s,e,n,r){let i,l;return n instanceof $n?(i=n,l=r):(i=fm,l=n),i.resolveBindings(s,e,l)}function K0(s,e,n,r){const i=n??fm,l={skipCache:!0,...r};let c;try{c=i.resolveBindings(s.key,e,{skipCache:l.skipCache})?.toString()?.trim()??""}catch(h){cr.warn("resolveClassMap: key 평가 실패:",s.key,h),c=""}let d="";c&&s.variants&&c in s.variants?d=s.variants[c]:s.default&&(d=s.default);const f=[];return s.base?.trim()&&f.push(s.base.trim()),d?.trim()&&f.push(d.trim()),f.join(" ")}function mm(s,e){return function(){return s.apply(e,arguments)}}const{toString:W0}=Object.prototype,{getPrototypeOf:Na}=Object,{iterator:_o,toStringTag:ym}=Symbol,Ao=(({hasOwnProperty:s})=>(e,n)=>s.call(e,n))(Object.prototype),bm=s=>typeof s=="string"&&(s==="__proto__"||s==="constructor"||s==="prototype"),vm=(s,e,n)=>s===Object.prototype||!n&&e===null,Y0=s=>{if(!Object.isExtensible(s))return!1;const e=Object.getOwnPropertyNames(s);return Object.getOwnPropertySymbols&&e.push(...Object.getOwnPropertySymbols(s)),e.every(n=>{if(bm(n))return!1;const r=Object.getOwnPropertyDescriptor(s,n);return!!r&&r.configurable&&r.writable===!0})},xo=(s,e)=>{let n=s;const r=[];for(;n!=null;){if(r.indexOf(n)!==-1)return!1;r.push(n);const i=Na(n);if(vm(n,i,n===s))return!1;if(Ao(n,e))return!0;n=i}return!1},X0=(s,e)=>s!=null&&xo(s,e)?s[e]:void 0,J0=s=>{if(s==null||typeof s!="object"&&typeof s!="function")return s;const e=Na(s);if(e===null&&Y0(s))return s;const n=Object.create(null),r=Object.create(null),i=[];let l=s;for(;l!=null&&i.indexOf(l)===-1;){i.push(l);const c=l===s?e:Na(l);if(vm(l,c,l===s))break;const d=Object.getOwnPropertyNames(l);Object.getOwnPropertySymbols&&d.push(...Object.getOwnPropertySymbols(l));for(const f of d)bm(f)||Ao(r,f)||(n[f]=s[f],r[f]=!0);l=c}return n},of=(s=>e=>{const n=W0.call(e);return s[n]||(s[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),ur=s=>(s=s.toLowerCase(),e=>of(e)===s),dc=s=>e=>typeof e===s,{isArray:Ei}=Array,_i=dc("undefined");function gs(s){return s!==null&&!_i(s)&&s.constructor!==null&&!_i(s.constructor)&&Hn(s.constructor.isBuffer)&&s.constructor.isBuffer(s)}const Sm=ur("ArrayBuffer");function Q0(s){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(s):e=s&&s.buffer&&Sm(s.buffer),e}const Z0=dc("string"),Hn=dc("function"),wm=dc("number"),ms=s=>s!==null&&typeof s=="object",eC=s=>s===!0||s===!1,fc=s=>{if(!ms(s))return!1;const e=Na(s);return(e===null||e===Object.prototype||Na(e)===null)&&!xo(s,ym)&&!xo(s,_o)},tC=s=>{if(!ms(s)||gs(s))return!1;try{return Object.keys(s).length===0&&Object.getPrototypeOf(s)===Object.prototype}catch{return!1}},nC=ur("Date"),rC=ur("File"),aC=s=>!!(s&&typeof s.uri<"u"),iC=s=>s&&typeof s.getParts<"u",sC=ur("Blob"),oC=ur("FileList"),lC=ur("Set"),cC=s=>ms(s)&&Hn(s.pipe);function uC(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const Cm=uC(),Em=typeof Cm.FormData<"u"?Cm.FormData:void 0,dC=s=>{if(!s)return!1;if(Em&&s instanceof Em)return!0;const e=Na(s);if(!e||e===Object.prototype||!Hn(s.append))return!1;const n=of(s);return n==="formdata"||n==="object"&&Hn(s.toString)&&s.toString()==="[object FormData]"},fC=ur("URLSearchParams"),[hC,pC,gC,mC]=["ReadableStream","Request","Response","Headers"].map(ur),yC=s=>s.trim?s.trim():s.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function To(s,e,{allOwnKeys:n=!1}={}){if(s===null||typeof s>"u")return;let r,i;if(typeof s!="object"&&(s=[s]),Ei(s))for(r=0,i=s.length;r<i;r++)e.call(null,s[r],r,s);else{if(gs(s))return;const l=n?Object.getOwnPropertyNames(s):Object.keys(s),c=l.length;let d;for(r=0;r<c;r++)d=l[r],e.call(null,s[d],d,s)}}function _m(s,e){if(gs(s))return null;e=e.toLowerCase();const n=Object.keys(s);let r=n.length,i;for(;r-- >0;)if(i=n[r],e===i.toLowerCase())return i;return null}const Ai=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Am=s=>!_i(s)&&s!==Ai;function lf(...s){const{caseless:e,skipUndefined:n}=Am(this)&&this||{},r={},i=(l,c)=>{if(c==="__proto__"||c==="constructor"||c==="prototype")return;const d=e&&typeof c=="string"&&_m(r,c)||c,f=Ao(r,d)?r[d]:void 0;fc(f)&&fc(l)?r[d]=lf(f,l):fc(l)?r[d]=lf({},l):Ei(l)?r[d]=l.slice():(!n||!_i(l))&&(r[d]=l)};for(let l=0,c=s.length;l<c;l++){const d=s[l];if(!d||gs(d)||(To(d,i),typeof d!="object"||Ei(d)))continue;const f=Object.getOwnPropertySymbols(d);for(let h=0;h<f.length;h++){const m=f[h];RC.call(d,m)&&i(d[m],m)}}return r}const bC=(s,e,n,{allOwnKeys:r}={})=>(To(e,(i,l)=>{n&&Hn(i)?Object.defineProperty(s,l,{__proto__:null,value:mm(i,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(s,l,{__proto__:null,value:i,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),s),vC=s=>(s.charCodeAt(0)===65279&&(s=s.slice(1)),s),SC=(s,e,n,r)=>{s.prototype=Object.create(e.prototype,r),Object.defineProperty(s.prototype,"constructor",{__proto__:null,value:s,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(s,"super",{__proto__:null,value:e.prototype}),n&&Object.assign(s.prototype,n)},wC=(s,e,n,r)=>{let i,l,c;const d={};if(e=e||{},s==null)return e;do{for(i=Object.getOwnPropertyNames(s),l=i.length;l-- >0;)c=i[l],(!r||r(c,s,e))&&!d[c]&&(e[c]=s[c],d[c]=!0);s=n!==!1&&Na(s)}while(s&&(!n||n(s,e))&&s!==Object.prototype);return e},CC=(s,e,n)=>{s=String(s),(n===void 0||n>s.length)&&(n=s.length),n-=e.length;const r=s.indexOf(e,n);return r!==-1&&r===n},EC=s=>{if(!s)return null;if(Ei(s))return s;let e=s.length;if(!wm(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=s[e];return n},_C=(s=>e=>s&&e instanceof s)(typeof Uint8Array<"u"&&Na(Uint8Array)),AC=(s,e)=>{const r=(s&&s[_o]).call(s);let i;for(;(i=r.next())&&!i.done;){const l=i.value;e.call(s,l[0],l[1])}},xC=(s,e)=>{let n;const r=[];for(;(n=s.exec(e))!==null;)r.push(n);return r},TC=ur("HTMLFormElement"),kC=s=>s.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,i){return r.toUpperCase()+i}),{propertyIsEnumerable:RC}=Object.prototype,DC=ur("RegExp"),xm=(s,e)=>{const n=Object.getOwnPropertyDescriptors(s),r={};To(n,(i,l)=>{let c;(c=e(i,l,s))!==!1&&(r[l]=c||i)}),Object.defineProperties(s,r)},OC=s=>{xm(s,(e,n)=>{if(Hn(s)&&["arguments","caller","callee"].includes(n))return!1;const r=s[n];if(Hn(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},LC=(s,e)=>{const n={},r=i=>{i.forEach(l=>{n[l]=!0})};return Ei(s)?r(s):r(String(s).split(e)),n},$C=()=>{},MC=(s,e)=>s!=null&&Number.isFinite(s=+s)?s:e;function NC(s){return!!(s&&Hn(s.append)&&s[ym]==="FormData"&&s[_o])}const IC=s=>{const e=new WeakSet,n=r=>{if(ms(r)){if(e.has(r))return;if(gs(r))return r;if(!("toJSON"in r)){e.add(r);let i;if(lC(r)){i=[];for(const l of r){const c=n(l);!_i(c)&&i.push(c)}}else i=Ei(r)?[]:{},To(r,(l,c)=>{const d=n(l);!_i(d)&&(i[c]=d)});return e.delete(r),i}}return r};return n(s)},jC=ur("AsyncFunction"),HC=s=>s&&(ms(s)||Hn(s))&&Hn(s.then)&&Hn(s.catch),Tm=((s,e)=>s?setImmediate:e?((n,r)=>(Ai.addEventListener("message",({source:i,data:l})=>{i===Ai&&l===n&&r.length&&r.shift()()},!1),i=>{r.push(i),Ai.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Hn(Ai.postMessage)),zC=typeof queueMicrotask<"u"?queueMicrotask.bind(Ai):typeof process<"u"&&process.nextTick||Tm,km=s=>s!=null&&Hn(s[_o]),G={isArray:Ei,isArrayBuffer:Sm,isBuffer:gs,isFormData:dC,isArrayBufferView:Q0,isString:Z0,isNumber:wm,isBoolean:eC,isObject:ms,isPlainObject:fc,isEmptyObject:tC,isReadableStream:hC,isRequest:pC,isResponse:gC,isHeaders:mC,isUndefined:_i,isDate:nC,isFile:rC,isReactNativeBlob:aC,isReactNative:iC,isBlob:sC,isRegExp:DC,isFunction:Hn,isStream:cC,isURLSearchParams:fC,isTypedArray:_C,isFileList:oC,forEach:To,merge:lf,extend:bC,trim:yC,stripBOM:vC,inherits:SC,toFlatObject:wC,kindOf:of,kindOfTest:ur,endsWith:CC,toArray:EC,forEachEntry:AC,matchAll:xC,isHTMLForm:TC,hasOwnProperty:Ao,hasOwnProp:Ao,hasOwnInPrototypeChain:xo,getSafeProp:X0,toSafeFlatObject:J0,reduceDescriptors:xm,freezeMethods:OC,toObjectSet:LC,toCamelCase:kC,noop:$C,toFiniteNumber:MC,findKey:_m,global:Ai,isContextDefined:Am,isSpecCompliantForm:NC,toJSONObject:IC,isAsyncFn:jC,isThenable:HC,setImmediate:Tm,asap:zC,isIterable:km,isSafeIterable:s=>s!=null&&xo(s,_o)&&km(s)},PC=G.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),UC=s=>{const e={};let n,r,i;return s&&s.split(`
`).forEach(function(c){i=c.indexOf(":"),n=c.substring(0,i).trim().toLowerCase(),r=c.substring(i+1).trim();const d=G.hasOwnProp(e,n);!n||d&&G.hasOwnProp(PC,n)||(n==="set-cookie"?d?e[n].push(r):e[n]=[r]:e[n]=d?e[n]+", "+r:r)}),e};function BC(s){let e=0,n=s.length;for(;e<n;){const r=s.charCodeAt(e);if(r!==9&&r!==32)break;e+=1}for(;n>e;){const r=s.charCodeAt(n-1);if(r!==9&&r!==32)break;n-=1}return e===0&&n===s.length?s:s.slice(e,n)}const qC=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),GC=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function cf(s,e){return G.isArray(s)?s.map(n=>cf(n,e)):BC(String(s).replace(e,""))}const FC=s=>cf(s,qC),VC=s=>cf(s,GC);function Rm(s){const e=Object.create(null);return G.forEach(s.toJSON(),(n,r)=>{e[r]=VC(n)}),e}const Dm=Symbol("internals");function ko(s){return s&&String(s).trim().toLowerCase()}function hc(s){return s===!1||s==null?s:G.isArray(s)?s.map(hc):FC(String(s))}function KC(s){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(s);)e[r[1]]=r[2];return e}const WC=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function uf(s){let e=0,n=s.length;for(;e<n;){const r=s.charCodeAt(e);if(r!==9&&r!==32)break;e+=1}for(;n>e;){const r=s.charCodeAt(n-1);if(r!==9&&r!==32)break;n-=1}return e===0&&n===s.length?s:s.slice(e,n)}function YC(s){const e=s.length-1;if(e<1||s.charCodeAt(0)!==34||s.charCodeAt(e)!==34)return s;let n="";for(let r=1;r<e;r++){const i=s.charCodeAt(r);if(i===34||i===92&&(r+=1,r>=e))return s;n+=s[r]}return n}function XC(s){const e=Object.create(null),n=String(s);let r=0,i=!1,l=!1;function c(d){const f=uf(n.slice(r,d)),h=f.indexOf("=");if(h<1)return;const m=uf(f.slice(0,h));if(!WC.test(m))return;const y=m.toLowerCase();if(y==="__proto__"||y==="constructor"||y==="prototype")return;const v=uf(f.slice(h+1));e[y]=YC(v)}for(let d=0;d<n.length;d++){const f=n.charCodeAt(d);i?l?l=!1:f===92?l=!0:f===34&&(i=!1):f===34?i=!0:(f===44||f===59)&&(c(d),r=d+1)}return c(n.length),e}const JC=s=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(s.trim());function df(s,e,n,r,i){if(G.isFunction(r))return r.call(this,e,n);if(i&&(e=n),!!G.isString(e)){if(G.isString(r))return e.indexOf(r)!==-1;if(G.isRegExp(r))return r.test(e)}}function QC(s){return s.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function ZC(s,e){const n=G.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(s,r+n,{__proto__:null,value:function(i,l,c){return this[r].call(this,e,i,l,c)},configurable:!0})})}let xn=class{constructor(e){e&&this.set(e)}set(e,n,r){const i=this;function l(d,f,h){const m=ko(f);if(!m)return;const y=G.findKey(i,m);(!y||i[y]===void 0||h===!0||h===void 0&&i[y]!==!1)&&(i[y||f]=hc(d))}const c=(d,f)=>G.forEach(d,(h,m)=>l(h,m,f));if(G.isPlainObject(e)||e instanceof this.constructor)c(e,n);else if(G.isString(e)&&(e=e.trim())&&!JC(e))c(UC(e),n);else if(G.isObject(e)&&G.isSafeIterable(e)){let d=Object.create(null),f,h;for(const m of e){if(!G.isArray(m))throw new TypeError("Object iterator must return a key-value pair");h=m[0],G.hasOwnProp(d,h)?(f=d[h],d[h]=G.isArray(f)?[...f,m[1]]:[f,m[1]]):d[h]=m[1]}c(d,n)}else e!=null&&l(n,e,r);return this}get(e,n){if(e=ko(e),e){const r=G.findKey(this,e);if(r){const i=this[r];if(!n)return i;if(n===!0)return KC(i);if(G.isFunction(n))return n.call(this,i,r);if(G.isRegExp(n))return n.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=ko(e),e){const r=G.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||df(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let i=!1;function l(c){if(c=ko(c),c){const d=G.findKey(r,c);d&&(!n||df(r,r[d],d,n))&&(delete r[d],i=!0)}}return G.isArray(e)?e.forEach(l):l(e),i}clear(e){const n=Object.keys(this);let r=n.length,i=!1;for(;r--;){const l=n[r];(!e||df(this,this[l],l,e,!0))&&(delete this[l],i=!0)}return i}normalize(e){const n=this,r={};return G.forEach(this,(i,l)=>{const c=G.findKey(r,l);if(c){n[c]=hc(i),delete n[l];return}const d=e?QC(l):String(l).trim();d!==l&&delete n[l],n[d]=hc(i),r[d]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return G.forEach(this,(r,i)=>{r!=null&&r!==!1&&(n[i]=e&&G.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(`
`)}getSetCookie(){const e=this.get("set-cookie");return G.isArray(e)?e:e==null||e===!1?[]:[e]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static parseParameters(e){return XC(e)}static concat(e,...n){const r=new this(e);return n.forEach(i=>r.set(i)),r}static accessor(e){const r=(this[Dm]=this[Dm]={accessors:{}}).accessors,i=this.prototype;function l(c){const d=ko(c);r[d]||(ZC(i,c),r[d]=!0)}return G.isArray(e)?e.forEach(l):l(e),this}};xn.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),G.reduceDescriptors(xn.prototype,({value:s},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>s,set(r){this[n]=r}}}),G.freezeMethods(xn);const pc="[REDACTED ****]";function eE(s){if(G.hasOwnProp(s,"toJSON"))return!0;let e=Object.getPrototypeOf(s);for(;e&&e!==Object.prototype;){if(G.hasOwnProp(e,"toJSON"))return!0;e=Object.getPrototypeOf(e)}return!1}function tE(s,e){const n=new Set(e.map(l=>String(l).toLowerCase())),r=[],i=l=>{if(l===null||typeof l!="object"||G.isBuffer(l))return l;if(r.indexOf(l)!==-1)return;l instanceof xn&&(l=l.toJSON()),r.push(l);let c;if(G.isArray(l))c=[],l.forEach((d,f)=>{const h=i(d);G.isUndefined(h)||(c[f]=h)});else{if(!G.isPlainObject(l)&&eE(l))return r.pop(),l;c=Object.create(null);for(const[d,f]of Object.entries(l)){const h=n.has(d.toLowerCase())?pc:i(f);G.isUndefined(h)||(c[d]=h)}}return r.pop(),c};return i(s)}function Om(s){try{return String(s)}catch{return""}}function nE(s){return s.errors.map(n=>{try{return n&&n.message?Om(n.message):Om(n)}catch{return""}}).filter(Boolean).join("; ")||s.name||"AggregateError"}let we=class n0 extends Error{static from(e,n,r,i,l,c){let d=e.message;!d&&G.isArray(e.errors)&&e.errors.length&&(d=nE(e));const f=new n0(d,n||e.code,r,i,l);return Object.defineProperty(f,"cause",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),f.name=e.name,e.status!=null&&f.status==null&&(f.status=e.status),c&&Object.assign(f,c),f}constructor(e,n,r,i,l){super(e),Object.defineProperty(this,"message",{__proto__:null,value:e,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),r&&(this.config=r),i&&(this.request=i),l&&(this.response=l,this.status=l.status)}toJSON(){const e=this.config,n=e&&G.hasOwnProp(e,"redact")?e.redact:void 0,r=G.isArray(n)&&n.length>0?tE(e,n):G.toJSONObject(e);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:r,code:this.code,status:this.status}}};we.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",we.ERR_BAD_OPTION="ERR_BAD_OPTION",we.ECONNABORTED="ECONNABORTED",we.ETIMEDOUT="ETIMEDOUT",we.ECONNREFUSED="ECONNREFUSED",we.ERR_NETWORK="ERR_NETWORK",we.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",we.ERR_DEPRECATED="ERR_DEPRECATED",we.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",we.ERR_BAD_REQUEST="ERR_BAD_REQUEST",we.ERR_CANCELED="ERR_CANCELED",we.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",we.ERR_INVALID_URL="ERR_INVALID_URL",we.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const rE=null,Lm=100;function ff(s){return G.isPlainObject(s)||G.isArray(s)}function $m(s){return G.endsWith(s,"[]")?s.slice(0,-2):s}function hf(s,e,n){return s?s.concat(e).map(function(i,l){return i=$m(i),!n&&l?"["+i+"]":i}).join(n?".":""):e}function aE(s){return G.isArray(s)&&!s.some(ff)}const iE=G.toFlatObject(G,{},null,function(e){return/^is[A-Z]/.test(e)});function gc(s,e,n){if(!G.isObject(s))throw new TypeError("target must be an object");e=e||new FormData;const r=(O,k)=>{const L=G.getSafeProp(n,O);return G.isUndefined(L)?k:L},i=r("metaTokens",!0),l=r("visitor")||x,c=r("dots",!1),d=r("indexes",!1),f=r("Blob")||typeof Blob<"u"&&Blob,h=r("maxDepth",Lm),m=f&&G.isSpecCompliantForm(e),y=[];if(!G.isFunction(l))throw new TypeError("visitor must be a function");function v(O){if(O===null)return"";if(G.isDate(O))return O.toISOString();if(G.isBoolean(O))return O.toString();if(!m&&G.isBlob(O))throw new we("Blob is not supported. Use a Buffer instead.");if(G.isArrayBuffer(O)||G.isTypedArray(O)){if(m&&typeof f=="function")return new f([O]);throw new we("Blob is not supported. Use a Buffer instead.",we.ERR_NOT_SUPPORT)}return O}function S(O){if(O>h)throw new we("Object is too deeply nested ("+O+" levels). Max depth: "+h,we.ERR_FORM_DATA_DEPTH_EXCEEDED)}function _(O,k){if(h===1/0)return JSON.stringify(O);const L=[];return JSON.stringify(O,function(q,z){if(!G.isObject(z))return z;for(;L.length&&L[L.length-1]!==this;)L.pop();return L.push(z),S(k+L.length-1),z})}function x(O,k,L){let B=O;if(G.isReactNative(e)&&G.isReactNativeBlob(O))return e.append(hf(L,k,c),v(O)),!1;if(O&&!L&&typeof O=="object"){if(G.endsWith(k,"{}"))k=i?k:k.slice(0,-2),O=_(O,1);else if(G.isArray(O)&&aE(O)||(G.isFileList(O)||G.endsWith(k,"[]"))&&(B=G.toArray(O)))return k=$m(k),B.forEach(function(z,W){!(G.isUndefined(z)||z===null)&&e.append(d===!0?hf([k],W,c):d===null?k:k+"[]",v(z))}),!1}return ff(O)?!0:(e.append(hf(L,k,c),v(O)),!1)}const A=Object.assign(iE,{defaultVisitor:x,convertValue:v,isVisitable:ff});function D(O,k,L=0){if(!G.isUndefined(O)){if(S(L),y.indexOf(O)!==-1)throw new Error("Circular reference detected in "+k.join("."));y.push(O),G.forEach(O,function(q,z){(!(G.isUndefined(q)||q===null)&&l.call(e,q,G.isString(z)?z.trim():z,k,A))===!0&&D(q,k?k.concat(z):[z],L+1)}),y.pop()}}if(!G.isObject(s))throw new TypeError("data must be an object");return D(s),e}function Mm(s){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(s).replace(/[!'()~]|%20/g,function(r){return e[r]})}function pf(s,e){this._pairs=[],s&&gc(s,this,e)}const Nm=pf.prototype;Nm.append=function(e,n){this._pairs.push([e,n])},Nm.toString=function(e){const n=e?r=>e.call(this,r,Mm):Mm;return this._pairs.map(function(i){return n(i[0])+"="+n(i[1])},"").join("&")};function sE(s){return encodeURIComponent(s).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Im(s,e,n){if(!e)return s;s=s||"";const r=G.isFunction(n)?{serialize:n}:n,i=G.getSafeProp(r,"encode")||sE,l=G.getSafeProp(r,"serialize");let c;if(l?c=l(e,r):c=G.isURLSearchParams(e)?e.toString():new pf(e,r).toString(i),c){const d=s.indexOf("#");d!==-1&&(s=s.slice(0,d)),s+=(s.indexOf("?")===-1?"?":"&")+c}return s}const Ro=Symbol("internals");function jm(s){return s?s.length:0}function Hm(s){if(s)for(;s.length&&s[s.length-1]===null;)s.pop()}function Do(s,e){const n=s.handlers,r=jm(n);n!==e.handlersRef?(e.handlersRef=n,e.handlerEntries.clear()):r!==e.handlersLength&&(r?e.handlerEntries.forEach(function(l,c){n[l.index]!==l.handler&&e.handlerEntries.delete(c)}):e.handlerEntries.clear()),e.handlersLength=r}class zm{constructor(){this.handlers=[],this[Ro]={handlersRef:this.handlers,handlersLength:this.handlers.length,handlerEntries:new Map,iterationDepth:0,nextId:0}}use(e,n,r){const i={fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null},l=this[Ro];this.handlers==null&&(this.handlers=[]),Do(this,l);const c=l.nextId++;return this.handlers.push(i),l.handlerEntries.set(c,{handler:i,index:this.handlers.length-1}),l.handlersLength=this.handlers.length,c}eject(e){const n=this[Ro];Do(this,n);const r=n.handlerEntries.get(e);if(r){if(n.handlerEntries.delete(e),this.handlers[r.index]!==r.handler)return;this.handlers[r.index]=null,n.iterationDepth||(Hm(this.handlers),n.handlersLength=this.handlers.length)}}clear(){this.handlers&&(this.handlers=[],Do(this,this[Ro]))}forEach(e){const n=this[Ro];Do(this,n),n.iterationDepth++;try{G.forEach(this.handlers,function(i){i!==null&&e(i)})}finally{--n.iterationDepth||(Do(this,n),Hm(this.handlers),n.handlersLength=jm(this.handlers))}}}const gf={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0},oE={isBrowser:!0,classes:{URLSearchParams:typeof URLSearchParams<"u"?URLSearchParams:pf,FormData:typeof FormData<"u"?FormData:null,Blob:typeof Blob<"u"?Blob:null},protocols:["http","https","file","blob","url","data"]},mf=typeof window<"u"&&typeof document<"u",yf=typeof navigator=="object"&&navigator||void 0,lE=mf&&(!yf||["ReactNative","NativeScript","NS"].indexOf(yf.product)<0),cE=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",uE=mf&&window.location.href||"http://localhost",gn={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:mf,hasStandardBrowserEnv:lE,hasStandardBrowserWebWorkerEnv:cE,navigator:yf,origin:uE},Symbol.toStringTag,{value:"Module"})),...oE};function dE(s,e){return gc(s,new gn.classes.URLSearchParams,{visitor:function(n,r,i,l){return gn.isNode&&G.isBuffer(n)?(this.append(r,n.toString("base64")),!1):l.defaultVisitor.apply(this,arguments)},...e})}const Pm=Lm;function Um(s){if(s>Pm)throw new we("FormData field is too deeply nested ("+s+" levels). Max depth: "+Pm,we.ERR_FORM_DATA_DEPTH_EXCEEDED)}function fE(s){const e=[],n=/[^.[\]]+|\[([^.[\]]*)]/g;let r;for(;(r=n.exec(s))!==null;)Um(e.length),e.push(r[0]==="[]"?"":r[1]||r[0]);return e}function hE(s){const e={},n=Object.keys(s);let r;const i=n.length;let l;for(r=0;r<i;r++)l=n[r],e[l]=s[l];return e}function Bm(s){function e(n,r,i,l){Um(l);let c=n[l++];if(c==="__proto__")return!0;const d=Number.isFinite(+c),f=l>=n.length;return c=!c&&G.isArray(i)?i.length:c,f?(G.hasOwnProp(i,c)?i[c]=G.isArray(i[c])?i[c].concat(r):[i[c],r]:i[c]=r,!d):((!G.hasOwnProp(i,c)||!G.isObject(i[c]))&&(i[c]=[]),e(n,r,i[c],l)&&G.isArray(i[c])&&(i[c]=hE(i[c])),!d)}if(G.isFormData(s)&&G.isFunction(s.entries)){const n={};return G.forEachEntry(s,(r,i)=>{e(fE(r),i,n,0)}),n}return null}const qm=Object.freeze(["get","delete","head","options","post","put","patch","purge","link","unlink","query"]),ys=(s,e)=>s!=null&&G.hasOwnProp(s,e)?s[e]:void 0;function pE(s,e,n){if(G.isString(s))try{return(e||JSON.parse)(s),G.trim(s)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(s)}const Oo={transitional:gf,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",i=r.indexOf("application/json")>-1,l=G.isObject(e);if(l&&G.isHTMLForm(e)&&(e=new FormData(e)),G.isFormData(e))return i?JSON.stringify(Bm(e)):e;if(G.isArrayBuffer(e)||G.isBuffer(e)||G.isStream(e)||G.isFile(e)||G.isBlob(e)||G.isReadableStream(e))return e;if(G.isArrayBufferView(e))return e.buffer;if(G.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let d;if(l){const f=ys(this,"formSerializer");if(r.indexOf("application/x-www-form-urlencoded")>-1)return dE(e,f).toString();if((d=G.isFileList(e))||r.indexOf("multipart/form-data")>-1){const h=ys(this,"env"),m=h&&h.FormData;return gc(d?{"files[]":e}:e,m&&new m,f)}}return l||i?(n.setContentType("application/json",!1),pE(e)):e}],transformResponse:[function(e){const n=ys(this,"transitional")||Oo.transitional,r=n&&n.forcedJSONParsing,i=ys(this,"responseType"),l=i==="json";if(G.isResponse(e)||G.isReadableStream(e))return e;if(e&&G.isString(e)&&(r&&!i||l)){const d=!(n&&n.silentJSONParsing)&&l;try{return JSON.parse(e,ys(this,"parseReviver"))}catch(f){if(d)throw f.name==="SyntaxError"?we.from(f,we.ERR_BAD_RESPONSE,this,null,ys(this,"response")):f}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:gn.classes.FormData,Blob:gn.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};G.forEach(qm,s=>{Oo.headers[s]={}});function bf(s,e){const n=this||Oo,r=e||n,i=xn.from(r.headers);let l=r.data;return G.forEach(s,function(d){l=d.call(n,l,i.normalize(),e?e.status:void 0)}),i.normalize(),l}function Gm(s){return!!(s&&s.__CANCEL__)}let Lo=class extends we{constructor(e,n,r){super(e??"canceled",we.ERR_CANCELED,n,r),this.name="CanceledError",this.__CANCEL__=!0}};function Fm(s,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?s(n):e(new we("Request failed with status code "+n.status,n.status>=400&&n.status<500?we.ERR_BAD_REQUEST:we.ERR_BAD_RESPONSE,n.config,n.request,n))}const gE=/[\t\n\r]/g;function Vm(s){if(typeof s!="string")return s;let e=0;for(;e<s.length&&s.charCodeAt(e)<=32;)e++;return s.slice(e).replace(gE,"")}function vf(s){const e=/^([-+\w]{1,25}):(?:\/\/)?/.exec(s);return e&&e[1]||""}function mE(s,e){s=s||10;const n=new Array(s),r=new Array(s);let i=0,l=0,c;return e=e!==void 0?e:1e3,function(f){const h=Date.now(),m=r[l];c||(c=h),n[i]=f,r[i]=h;let y=l,v=0;for(;y!==i;)v+=n[y++],y=y%s;if(i=(i+1)%s,i===l&&(l=(l+1)%s),h-c<e)return;const S=m&&h-m;return S?Math.round(v*1e3/S):void 0}}function yE(s,e){let n=0,r=1e3/e,i,l;const c=(m,y=Date.now())=>{n=y,i=null,l&&(clearTimeout(l),l=null),s(...m)};return[(...m)=>{const y=Date.now(),v=y-n;v>=r?c(m,y):(i=m,l||(l=setTimeout(()=>{l=null,c(i)},r-v)))},()=>i&&c(i),(...m)=>c(m)]}const mc=(s,e,n=3)=>{let r=0;const i=mE(50,250);return yE(l=>{if(!l||!G.isNumber(l.loaded))return;const c=l.loaded,d=l.lengthComputable?l.total:void 0,f=Math.max(0,d!=null?Math.min(c,d):c),h=Math.max(0,f-r),m=i(h);r=Math.max(r,f);const y={loaded:f,total:d,progress:d?f/d:void 0,bytes:h,rate:m||void 0,estimated:m&&d?(d-f)/m:void 0,event:l,lengthComputable:d!=null,[e?"download":"upload"]:!0};s(y)},n)},Km=(s,e)=>{const n=s!=null;return[r=>e[0]({lengthComputable:n,total:s,loaded:r}),e[1]]},Wm=(s,e=G.asap)=>(...n)=>e(()=>s(...n)),bE=gn.hasStandardBrowserEnv?((s,e)=>n=>(n=new URL(n,gn.origin),s.protocol===n.protocol&&s.host===n.host&&(e||s.port===n.port)))(new URL(gn.origin),gn.navigator&&/(msie|trident)/i.test(gn.navigator.userAgent)):()=>!0,vE=gn.hasStandardBrowserEnv?{write(s,e,n,r,i,l,c){if(typeof document>"u")return;const d=[`${s}=${encodeURIComponent(e)}`];G.isNumber(n)&&d.push(`expires=${new Date(n).toUTCString()}`),G.isString(r)&&d.push(`path=${r}`),G.isString(i)&&d.push(`domain=${i}`),l===!0&&d.push("secure"),G.isString(c)&&d.push(`SameSite=${c}`),document.cookie=d.join("; ")},read(s){if(typeof document>"u")return null;const e=document.cookie.split(";");for(let n=0;n<e.length;n++){const r=e[n].replace(/^\s+/,""),i=r.indexOf("=");if(i!==-1&&r.slice(0,i)===s)try{return decodeURIComponent(r.slice(i+1))}catch{return r.slice(i+1)}}return null},remove(s){this.write(s,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function SE(s){return typeof s!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(s)}function wE(s,e){if(!e)return s;let n=s.length;for(;n>0&&s.charCodeAt(n-1)===47;)n--;return s.slice(0,n)+"/"+e.replace(/^\/+/,"")}const CE=/^https?:(?!\/\/)/i;function EE(s){return s&&s.replace(/(^|&)([^=&]*=)?[^&]+/g,(e,n,r="")=>`${n}${r}${pc}`)}function _E(s){const e=s.replace(/^(https?:\/{0,2})[^/?#]*@/i,`$1${pc}@`),n=e.indexOf("#"),i=(n===-1?e:e.slice(0,n)).replace(/([?&][^=&#]*=)[^&#]*/g,`$1${pc}`);return n===-1?i:`${i}#${EE(e.slice(n+1))}`}function Ym(s,e){if(typeof s=="string"){const n=Vm(s);if(CE.test(n))throw new we(`Invalid URL ${JSON.stringify(_E(n))}: missing "//" after protocol`,we.ERR_INVALID_URL,e)}}function Xm(s,e,n,r){Ym(e,r);let i=!SE(e);return s&&(i||n===!1)?(Ym(s,r),wE(s,e)):e}const Jm=s=>s instanceof xn?{...s}:s,AE=s=>Object.getOwnPropertySymbols&&Object.getOwnPropertyDescriptor?Object.keys(s).concat(Object.getOwnPropertySymbols(s).filter(e=>Object.getOwnPropertyDescriptor(s,e).enumerable)):Object.keys(s);function xi(s,e){s=s||{},e=e||{};const n=Object.create(null);Object.defineProperty(n,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function r(m,y,v,S){return G.isPlainObject(m)&&G.isPlainObject(y)?G.merge.call({caseless:S},m,y):G.isPlainObject(y)?G.merge({},y):G.isArray(y)?y.slice():y}function i(m,y,v,S){if(G.isUndefined(y)){if(!G.isUndefined(m))return r(void 0,m,v,S)}else return r(m,y,v,S)}function l(m,y){if(!G.isUndefined(y))return r(void 0,y)}function c(m,y){if(G.isUndefined(y)){if(!G.isUndefined(m))return r(void 0,m)}else return r(void 0,y)}function d(m){const y=G.hasOwnProp(e,"transitional")?e.transitional:void 0;if(!G.isUndefined(y))if(G.isPlainObject(y)){if(G.hasOwnProp(y,m))return y[m]}else return;const v=G.hasOwnProp(s,"transitional")?s.transitional:void 0;if(G.isPlainObject(v)&&G.hasOwnProp(v,m))return v[m]}function f(m,y,v){if(G.hasOwnProp(e,v))return r(m,y);if(G.hasOwnProp(s,v))return r(void 0,m)}const h={url:l,method:l,data:l,baseURL:c,transformRequest:c,transformResponse:c,paramsSerializer:c,timeout:c,timeoutErrorMessage:c,withCredentials:c,withXSRFToken:c,adapter:c,responseType:c,xsrfCookieName:c,xsrfHeaderName:c,onUploadProgress:c,onDownloadProgress:c,decompress:c,maxContentLength:c,maxBodyLength:c,beforeRedirect:c,transport:c,httpAgent:c,httpsAgent:c,cancelToken:c,socketPath:c,allowedSocketPaths:c,responseEncoding:c,validateStatus:f,headers:(m,y,v)=>i(Jm(m),Jm(y),v,!0)};return G.forEach(AE({...s,...e}),function(y){if(y==="__proto__"||y==="constructor"||y==="prototype")return;const v=G.hasOwnProp(h,y)?h[y]:i,S=G.hasOwnProp(s,y)?s[y]:void 0,_=G.hasOwnProp(e,y)?e[y]:void 0,x=v(S,_,y);G.isUndefined(x)&&v!==f||(n[y]=x)}),G.hasOwnProp(e,"validateStatus")&&G.isUndefined(e.validateStatus)&&d("validateStatusUndefinedResolves")===!1&&(G.hasOwnProp(s,"validateStatus")?n.validateStatus=r(void 0,s.validateStatus):delete n.validateStatus),n}const xE=["content-type","content-length"];function TE(s,e,n){if(n!=="content-only"){s.set(e);return}Object.entries(e||{}).forEach(([r,i])=>{xE.includes(r.toLowerCase())&&s.set(r,i)})}const kE=s=>encodeURIComponent(s).replace(/%([0-9A-F]{2})/gi,(e,n)=>String.fromCharCode(parseInt(n,16)));function Qm(s){const e=xi({},s),n=v=>G.hasOwnProp(e,v)?e[v]:void 0,r=n("data");let i=n("withXSRFToken");const l=n("xsrfHeaderName"),c=n("xsrfCookieName");let d=n("headers");const f=n("auth"),h=n("baseURL"),m=n("allowAbsoluteUrls"),y=n("url");if(e.headers=d=xn.from(d),e.url=Im(Xm(h,y,m,e),n("params"),n("paramsSerializer")),f){const v=G.getSafeProp(f,"username")||"",S=G.getSafeProp(f,"password")||"";try{d.set("Authorization","Basic "+btoa(v+":"+(S?kE(S):"")))}catch(_){throw we.from(_,we.ERR_BAD_OPTION_VALUE,s)}}if(G.isFormData(r)){const v=G.getSafeProp(r,"getHeaders");gn.hasStandardBrowserEnv||gn.hasStandardBrowserWebWorkerEnv||G.isReactNative(r)?d.setContentType(void 0):G.isFunction(v)&&TE(d,v.call(r),n("formDataHeaderPolicy"))}if(gn.hasStandardBrowserEnv&&(G.isFunction(i)&&(i=i(e)),i===!0||i==null&&bE(e.url))){const S=l&&c&&vE.read(c);S&&d.set(l,S)}return e}const RE=typeof XMLHttpRequest<"u"&&function(s){return new Promise(function(n,r){const i=Qm(s);let l=i.data;const c=xn.from(i.headers).normalize();let{responseType:d,onUploadProgress:f,onDownloadProgress:h}=i,m,y,v,S,_,x;function A(){S&&S(),_&&_(),i.cancelToken&&i.cancelToken.unsubscribe(m),i.signal&&i.signal.removeEventListener("abort",m)}let D=new XMLHttpRequest;D.open(i.method.toUpperCase(),i.url,!0),D.timeout=i.timeout;function O(L){if(!D)return;if(D.status===0&&(vf(Vm(i.url))||vf(gn.origin))!=="file"&&!(D.responseURL&&D.responseURL.startsWith("file:"))){r(new we("Request aborted",we.ECONNABORTED,s,D)),A(),D=null;return}try{L?x&&x(L):_&&_()}catch(W){setTimeout(()=>{throw W})}if(!D)return;const B=xn.from("getAllResponseHeaders"in D&&D.getAllResponseHeaders()),z={data:!d||d==="text"||d==="json"?D.responseText:D.response,status:D.status,statusText:D.statusText,headers:B,config:s,request:D};Fm(function(de){n(de),A()},function(de){r(de),A()},z),D=null}"onloadend"in D?D.onloadend=O:D.onreadystatechange=function(){!D||D.readyState!==4||D.status===0&&!(D.responseURL&&D.responseURL.startsWith("file:"))||setTimeout(O)},D.onabort=function(){D&&(r(new we("Request aborted",we.ECONNABORTED,s,D)),A(),D=null)},D.onerror=function(B){const q=B&&B.message?B.message:"Network Error",z=new we(q,we.ERR_NETWORK,s,D);z.event=B||null,r(z),A(),D=null},D.ontimeout=function(){let B=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const q=i.transitional||gf;i.timeoutErrorMessage&&(B=i.timeoutErrorMessage),r(new we(B,q.clarifyTimeoutError?we.ETIMEDOUT:we.ECONNABORTED,s,D)),A(),D=null},l===void 0&&c.setContentType(null),"setRequestHeader"in D&&G.forEach(Rm(c),function(B,q){D.setRequestHeader(q,B)}),G.isUndefined(i.withCredentials)||(D.withCredentials=!!i.withCredentials),d&&d!=="json"&&(D.responseType=i.responseType),h&&([v,_,x]=mc(h,!0),D.addEventListener("progress",v)),f&&D.upload&&([y,S]=mc(f),D.upload.addEventListener("progress",y),D.upload.addEventListener("loadend",S)),(i.cancelToken||i.signal)&&(m=L=>{D&&(r(!L||L.type?new Lo(null,s,D):L),D.abort(),A(),D=null)},i.cancelToken&&i.cancelToken.subscribe(m),i.signal&&(i.signal.aborted?m():i.signal.addEventListener("abort",m)));const k=vf(i.url);if(k&&!gn.protocols.includes(k)){r(new we("Unsupported protocol "+k+":",we.ERR_BAD_REQUEST,s)),A();return}D.send(l||null)})},DE=(s,e)=>{if(s=s?s.filter(Boolean):[],!e&&!s.length)return;const n=new AbortController;let r=!1;const i=function(f){if(!r){r=!0,c();const h=f instanceof Error?f:this.reason;n.abort(h instanceof we?h:new Lo(h instanceof Error?h.message:h))}};let l=e&&setTimeout(()=>{l=null,i(new we(`timeout of ${e}ms exceeded`,we.ETIMEDOUT))},e);const c=()=>{s&&(l&&clearTimeout(l),l=null,s.forEach(f=>{f.unsubscribe?f.unsubscribe(i):f.removeEventListener("abort",i)}),s=null)};s.forEach(f=>{if(!r){if(f.aborted){i.call(f);return}f.addEventListener("abort",i,{once:!0})}});const{signal:d}=n;return d.unsubscribe=()=>G.asap(c),d},OE=function*(s,e){let n=s.byteLength;if(n<e){yield s;return}let r=0,i;for(;r<n;)i=r+e,yield s.slice(r,i),r=i},LE=async function*(s,e){for await(const n of $E(s))yield*OE(n,e)},$E=async function*(s){if(s[Symbol.asyncIterator]){yield*s;return}const e=s.getReader();try{for(;;){const{done:n,value:r}=await e.read();if(n)break;yield r}}finally{await e.cancel()}},Zm=(s,e,n,r)=>{const i=LE(s,e);let l=0,c,d=f=>{c||(c=!0,r&&r(f))};return new ReadableStream({async pull(f){try{const{done:h,value:m}=await i.next();if(h){d(),f.close();return}let y=m.byteLength;if(n){let v=l+=y;n(v)}f.enqueue(new Uint8Array(m))}catch(h){throw d(h),h}},cancel(f){return d(f),i.return()}},{highWaterMark:2})},ey=s=>s>=48&&s<=57||s>=65&&s<=70||s>=97&&s<=102,ty=(s,e,n)=>e+2<n&&ey(s.charCodeAt(e+1))&&ey(s.charCodeAt(e+2)),ny=s=>s<=57?s-48:(s&223)-55,ME=s=>s>=65&&s<=90||s>=97&&s<=122||s>=48&&s<=57||s===43||s===47||s===45||s===95,NE=s=>s===9||s===10||s===12||s===13||s===32,IE=s=>{const e=Math.floor(s/4),n=s%4;return e*3+(n===2?1:n===3?2:0)},jE=s=>{const e=s.length;let n=0;return e>0&&s.charCodeAt(e-1)===61&&(n++,e>1&&s.charCodeAt(e-2)===61&&n++),Math.floor((e-n)*3/4)},HE=s=>{const e=s.length;let n=0,r=0,i=!1;for(let l=0;l<e;l++){let c=s.charCodeAt(l);if(c===37&&ty(s,l,e)&&(c=ny(s.charCodeAt(l+1))*16+ny(s.charCodeAt(l+2)),l+=2),!NE(c)){if(c===61){r++;continue}if(!ME(c)||r>0){i=!0;continue}n++}}return i||r>2||r>0&&(n+r)%4!==0||n%4===1?jE(s):IE(n)},zE=(s,e)=>{if(!s||typeof s!="string"||!s.startsWith("data:"))return 0;const n=s.indexOf(",");if(n<0)return 0;const r=s.slice(5,n),i=s.slice(n+1);if(/;base64/i.test(r))return e(i);let c=0;for(let d=0,f=i.length;d<f;d++){const h=i.charCodeAt(d);if(h===37&&ty(i,d,f))c+=1,d+=2;else if(h<128)c+=1;else if(h<2048)c+=2;else if(h>=55296&&h<=56319&&d+1<f){const m=i.charCodeAt(d+1);m>=56320&&m<=57343?(c+=4,d++):c+=3}else c+=3}return c};function PE(s){const e=typeof s=="string"?s.indexOf("#"):-1;return zE(e===-1?s:s.slice(0,e),HE)}const Sf="1.20.0",ry=64*1024,UE={cache:"default",redirect:"follow",referrer:"about:client",referrerPolicy:"",mode:"cors",integrity:"",keepalive:!1,priority:"auto",window:null},{isFunction:yc}=G,BE=s=>encodeURIComponent(s).replace(/%([0-9A-F]{2})/gi,(e,n)=>String.fromCharCode(parseInt(n,16))),ay=s=>{if(!G.isString(s))return s;try{return decodeURIComponent(s)}catch{return s}},iy=(s,...e)=>{try{return!!s(...e)}catch{return!1}},qE=s=>{const e=s.indexOf("://");let n=s;return e!==-1&&(n=n.slice(e+3)),n.includes("@")||n.includes(":")},GE=s=>{const e=G.global!==void 0&&G.global!==null?G.global:globalThis,{ReadableStream:n,TextEncoder:r}=e;s=G.merge.call({skipUndefined:!0},{Request:e.Request,Response:e.Response},s);const{fetch:i,Request:l,Response:c}=s,d=i?yc(i):typeof fetch=="function",f=yc(l),h=yc(c);if(!d)return!1;const m=d&&yc(n),y=d&&(typeof r=="function"?(D=>O=>D.encode(O))(new r):async D=>new Uint8Array(await new l(D).arrayBuffer())),v=f&&m&&iy(()=>{let D=!1;const O=new l(gn.origin,{body:new n,method:"POST",get duplex(){return D=!0,"half"}}),k=O.headers.has("Content-Type");return O.body!=null&&O.body.cancel(),D&&!k}),S=h&&m&&iy(()=>G.isReadableStream(new c("").body)),_={stream:S&&(D=>D.body)};d&&["text","arrayBuffer","blob","formData","stream"].forEach(D=>{!_[D]&&(_[D]=(O,k)=>{let L=O&&O[D];if(L)return L.call(O);throw new we(`Response type '${D}' is not supported`,we.ERR_NOT_SUPPORT,k)})});const x=async D=>{if(D==null)return 0;if(G.isBlob(D))return D.size;if(G.isSpecCompliantForm(D))return(await new l(gn.origin,{method:"POST",body:D}).arrayBuffer()).byteLength;if(G.isArrayBufferView(D)||G.isArrayBuffer(D))return D.byteLength;if(G.isURLSearchParams(D)&&(D=D+""),G.isString(D))return(await y(D)).byteLength},A=async(D,O)=>{const k=G.toFiniteNumber(D.getContentLength());return k??x(O)};return async D=>{let{url:O,method:k,data:L,signal:B,cancelToken:q,timeout:z,onDownloadProgress:W,onUploadProgress:de,responseType:_e,headers:Se,withCredentials:je="same-origin",fetchOptions:Fe,maxContentLength:ze,maxBodyLength:Et,maxRedirects:Q}=Qm(D);const ue=G.isNumber(ze)&&ze>-1,De=G.isNumber(Et)&&Et>-1,ee=ge=>G.hasOwnProp(D,ge)?D[ge]:void 0;let me=i||fetch;_e=_e?(_e+"").toLowerCase():"text";let H=DE([B,q&&q.toAbortSignal()],z),T=null;const fe=H&&H.unsubscribe&&(()=>{H.unsubscribe()});let he,Ae=null;const se=()=>new we("Request body larger than maxBodyLength limit",we.ERR_BAD_REQUEST,D,T);try{let ge;const $e=ee("auth");if($e){const qe=G.getSafeProp($e,"username")||"",mt=G.getSafeProp($e,"password")||"";ge={username:qe,password:mt}}if(qE(O)){const qe=new URL(O,gn.origin);if(!ge&&(qe.username||qe.password)){const mt=ay(qe.username),Dt=ay(qe.password);ge={username:mt,password:Dt}}(qe.username||qe.password)&&(qe.username="",qe.password="",O=qe.href)}if(ge&&(Se.delete("authorization"),Se.set("Authorization","Basic "+btoa(BE((ge.username||"")+":"+(ge.password||""))))),ue&&typeof O=="string"&&O.startsWith("data:")&&PE(O)>ze)throw new we("maxContentLength size of "+ze+" exceeded",we.ERR_BAD_RESPONSE,D,T);if(De&&k!=="get"&&k!=="head"){const qe=await x(L);if(typeof qe=="number"&&isFinite(qe)&&(he=qe,qe>Et))throw se()}const Te=De&&(G.isReadableStream(L)||G.isStream(L)),Ie=(qe,mt,Dt)=>Zm(qe,ry,zt=>{if(De&&zt>Et)throw Ae=se();mt&&mt(zt)},Dt);if(v&&k!=="get"&&k!=="head"&&(de||Te)){if(he=he??await A(Se,L),he!==0||Te){let qe=new l(O,{method:"POST",body:L,duplex:"half"}),mt;if(G.isFormData(L)&&(mt=qe.headers.get("content-type"))&&Se.setContentType(mt),qe.body){const[Dt,zt]=de&&Km(he,mc(Wm(de)))||[];L=Ie(qe.body,Dt,zt)}}}else if(Te&&!f&&m&&k!=="get"&&k!=="head")L=Ie(L);else if(Te&&f&&!v&&k!=="get"&&k!=="head")throw new we("Stream request bodies are not supported by the current fetch implementation",we.ERR_NOT_SUPPORT,D,T);G.isString(je)||(je=je?"include":"omit");const xt=f&&"credentials"in l.prototype;if(G.isFormData(L)){const qe=Se.getContentType();qe&&/^multipart\/form-data/i.test(qe)&&!/boundary=/i.test(qe)&&Se.delete("content-type")}Se.set("User-Agent","axios/"+Sf,!1);const rt=Fe==null?Fe:Object.assign(Object.create(null),Fe);rt&&(delete rt.body,delete rt.headers,delete rt.method,delete rt.signal,delete rt.duplex,delete rt.credentials);const gt=Object.assign(Object.create(null),rt,{signal:H,method:k.toUpperCase(),headers:Rm(Se.normalize()),body:L,duplex:"half",credentials:xt?je:void 0});f&&(G.forEach(UE,(qe,mt)=>{gt[mt]===void 0&&(gt[mt]=qe)}),gt.signal===void 0&&(gt.signal=null),gt.body===void 0&&(gt.body=null)),Q===0&&(gt.redirect="manual",rt&&(rt.redirect="manual")),T=f&&new l(O,gt);let at=await(f?me(T,rt):me(O,gt));const Yt=xn.from(at.headers);if(ue){const qe=G.toFiniteNumber(Yt.getContentLength());if(qe!=null&&qe>ze)throw new we("maxContentLength size of "+ze+" exceeded",we.ERR_BAD_RESPONSE,D,T)}const Ht=S&&(_e==="stream"||_e==="response");if(S&&at.body&&(W||ue||Ht&&fe)){const qe={};["status","statusText","headers"].forEach(Ot=>{qe[Ot]=at[Ot]});const mt=G.toFiniteNumber(Yt.getContentLength()),[Dt,zt]=W&&Km(mt,mc(Wm(W),!0))||[];let kn=0;const hr=Ot=>{if(ue&&(kn=Ot,kn>ze))throw new we("maxContentLength size of "+ze+" exceeded",we.ERR_BAD_RESPONSE,D,T);Dt&&Dt(Ot)};at=new c(Zm(at.body,ry,hr,()=>{zt&&zt(),fe&&fe()}),qe)}_e=_e||"text";let bt=await _[G.findKey(_,_e)||"text"](at,D);if(ue&&!S&&!Ht){let qe;if(bt!=null&&(typeof bt.byteLength=="number"?qe=bt.byteLength:typeof bt.size=="number"?qe=bt.size:typeof bt=="string"&&(qe=typeof r=="function"?new r().encode(bt).byteLength:bt.length)),typeof qe=="number"&&qe>ze)throw new we("maxContentLength size of "+ze+" exceeded",we.ERR_BAD_RESPONSE,D,T)}return!Ht&&fe&&fe(),await new Promise((qe,mt)=>{Fm(qe,mt,{data:bt,headers:xn.from(at.headers),status:at.status,statusText:at.statusText,config:D,request:T})})}catch(ge){if(fe&&fe(),H&&H.aborted&&H.reason instanceof we){const $e=H.reason;throw $e.config=D,T&&($e.request=T),ge!==$e&&Object.defineProperty($e,"cause",{__proto__:null,value:ge,writable:!0,enumerable:!1,configurable:!0}),$e}if(Ae)throw T&&!Ae.request&&(Ae.request=T),Ae;if(ge instanceof we)throw T&&!ge.request&&(ge.request=T),ge;if(ge&&ge.name==="TypeError"&&/Load failed|fetch/i.test(ge.message)){const $e=new we("Network Error",we.ERR_NETWORK,D,T,ge&&ge.response);throw Object.defineProperty($e,"cause",{__proto__:null,value:ge.cause||ge,writable:!0,enumerable:!1,configurable:!0}),$e}throw we.from(ge,ge&&ge.code,D,T,ge&&ge.response)}}},FE=new Map,sy=s=>{let e=s&&s.env||{};const{fetch:n,Request:r,Response:i}=e,l=[r,i,n];let c=l.length,d=c,f,h,m=FE;for(;d--;)f=l[d],h=m.get(f),h===void 0&&m.set(f,h=d?new Map:GE(e)),m=h;return h};sy();const wf={http:rE,xhr:RE,fetch:{get:sy}};G.forEach(wf,(s,e)=>{if(s){try{Object.defineProperty(s,"name",{__proto__:null,value:e})}catch{}Object.defineProperty(s,"adapterName",{__proto__:null,value:e})}});const oy=s=>`- ${s}`,VE=s=>G.isFunction(s)||s===null||s===!1;function KE(s,e){s=G.isArray(s)?s:[s];const{length:n}=s;let r,i;const l={};for(let c=0;c<n;c++){r=s[c];let d;if(i=r,!VE(r)&&(i=wf[(d=String(r)).toLowerCase()],i===void 0))throw new we(`Unknown adapter '${d}'`);if(i&&(G.isFunction(i)||(i=i.get(e))))break;l[d||"#"+c]=i}if(!i){const c=Object.entries(l).map(([f,h])=>`adapter ${f} `+(h===!1?"is not supported by the environment":"is not available in the build"));let d=n?c.length>1?`since :
`+c.map(oy).join(`
`):" "+oy(c[0]):"as no adapter specified";throw new we("There is no suitable adapter to dispatch the request "+d,we.ERR_NOT_SUPPORT)}return i}const ly={getAdapter:KE,adapters:wf};function Cf(s){if(s.cancelToken&&s.cancelToken.throwIfRequested(),s.signal&&s.signal.aborted)throw new Lo(null,s)}function Ef(s){const e=G.toSafeFlatObject(s);return Cf(e),e.headers=xn.from(G.getSafeProp(e,"headers")),e.data=bf.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),ly.getAdapter(e.adapter||Oo.adapter,e)(e).then(function(i){Cf(e),e.response=i;try{i.data=bf.call(e,e.transformResponse,i)}finally{delete e.response}return i.headers=xn.from(i.headers),i},function(i){if(!Gm(i)&&(Cf(e),i&&i.response)){e.response=i.response;try{i.response.data=bf.call(e,e.transformResponse,i.response)}finally{delete e.response}i.response.headers=xn.from(i.response.headers)}return Promise.reject(i)})}const bc={};["object","boolean","number","function","string","symbol"].forEach((s,e)=>{bc[s]=function(r){return typeof r===s||"a"+(e<1?"n ":" ")+s}});const cy={};bc.transitional=function(e,n,r){function i(l,c){return"[Axios v"+Sf+"] Transitional option '"+l+"'"+c+(r?". "+r:"")}return(l,c,d)=>{if(e===!1)throw new we(i(c," has been removed"+(n?" in "+n:"")),we.ERR_DEPRECATED);return n&&!cy[c]&&(cy[c]=!0,console.warn(i(c," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(l,c,d):!0}},bc.spelling=function(e){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function WE(s,e,n){if(typeof s!="object"||s===null)throw new we("options must be an object",we.ERR_BAD_OPTION_VALUE);const r=Object.keys(s);let i=r.length;for(;i-- >0;){const l=r[i],c=Object.prototype.hasOwnProperty.call(e,l)?e[l]:void 0;if(c){const d=s[l],f=d===void 0||c(d,l,s);if(f!==!0)throw new we("option "+l+" must be "+f,we.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new we("Unknown option "+l,we.ERR_BAD_OPTION)}}const vc={assertOptions:WE,validators:bc},Tn=vc.validators;let Ti=class{constructor(e){this.defaults=e||{},this.interceptors={request:new zm,response:new zm}}async request(e,n){try{return await this._request(e,n)}catch(r){if(r instanceof Error)try{let i={};Error.captureStackTrace?Error.captureStackTrace(i):i=new Error;const l=i.stack;let c="";if(typeof l=="string"){const d=l.indexOf(`
`);c=d===-1?"":l.slice(d+1)}if(!r.stack)r.stack=c;else if(c){const d=c.indexOf(`
`),f=d===-1?-1:c.indexOf(`
`,d+1),h=f===-1?"":c.slice(f+1);String(r.stack).endsWith(h)||(r.stack+=`
`+c)}}catch{}throw r}}_request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=xi(this.defaults,n);const{transitional:r,paramsSerializer:i,headers:l}=n;r!==void 0&&vc.assertOptions(r,{silentJSONParsing:Tn.transitional(Tn.boolean),forcedJSONParsing:Tn.transitional(Tn.boolean),clarifyTimeoutError:Tn.transitional(Tn.boolean),legacyInterceptorReqResOrdering:Tn.transitional(Tn.boolean),advertiseZstdAcceptEncoding:Tn.transitional(Tn.boolean),validateStatusUndefinedResolves:Tn.transitional(Tn.boolean)},!1),i!=null&&(G.isFunction(i)?n.paramsSerializer={serialize:i}:vc.assertOptions(i,{encode:Tn.function,serialize:Tn.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),vc.assertOptions(n,{baseUrl:Tn.spelling("baseURL"),withXsrfToken:Tn.spelling("withXSRFToken")},!0),n.method=(G.getSafeProp(n,"method")||G.getSafeProp(this.defaults,"method")||"get").toLowerCase();let c=l&&G.merge(l.common,l[n.method]);l&&G.forEach(qm.concat("common"),_=>{delete l[_]}),n.headers=xn.concat(c,l);const d=[];let f=!0;this.interceptors.request.forEach(function(x){if(typeof x.runWhen=="function"&&x.runWhen(n)===!1)return;f=f&&x.synchronous;const A=n.transitional||gf;A&&A.legacyInterceptorReqResOrdering?d.unshift(x.fulfilled,x.rejected):d.push(x.fulfilled,x.rejected)});const h=[];this.interceptors.response.forEach(function(x){h.push(x.fulfilled,x.rejected)});let m,y=0,v;if(!f){const _=[Ef.bind(this),void 0];for(_.unshift(...d),_.push(...h),v=_.length,m=Promise.resolve(n);y<v;)m=m.then(_[y++],_[y++]);return m}v=d.length;let S=n;for(;y<v;){const _=d[y++],x=d[y++];try{S=_?_(S):S}catch(A){if(!x){m=Promise.reject(A);break}try{const D=x.call(this,A);G.isThenable(D)&&(m=Promise.resolve(D).then(()=>Ef.call(this,S)))}catch(D){m=Promise.reject(D)}break}}if(!m)try{m=Ef.call(this,S)}catch(_){m=Promise.reject(_)}for(y=0,v=h.length;y<v;)m=m.then(h[y++],h[y++]);return m}getUri(e){e=xi(this.defaults,e);const n=Xm(e.baseURL,e.url,e.allowAbsoluteUrls,e);return Im(n,e.params,e.paramsSerializer)}};G.forEach(["delete","get","head","options"],function(e){Ti.prototype[e]=function(n,r){return this.request(xi(r||{},{method:e,url:n,data:r&&G.hasOwnProp(r,"data")?r.data:void 0}))}}),G.forEach(["post","put","patch","query"],function(e){function n(r){return function(l,c,d){return this.request(xi(d||{},{method:e,headers:r?{"Content-Type":"multipart/form-data"}:{},url:l,data:c}))}}Ti.prototype[e]=n(),e!=="query"&&(Ti.prototype[e+"Form"]=n(!0))});let YE=class r0{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(l){n=l});const r=this;this.promise.then(i=>{if(!r._listeners)return;let l=r._listeners.length;for(;l-- >0;)r._listeners[l](i);r._listeners=null}),this.promise.then=i=>{let l;const c=new Promise(d=>{r.subscribe(d),l=d}).then(i);return c.cancel=function(){r.unsubscribe(l)},c},e(function(l,c,d){r.reason||(r.reason=new Lo(l,c,d),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=r=>{e.abort(r)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new r0(function(i){e=i}),cancel:e}}};function XE(s){return function(n){return s.apply(null,n)}}function JE(s){return G.isObject(s)&&s.isAxiosError===!0}const Sc={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,ContentTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,UnprocessableContent:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerReturnsAnUnknownError:520,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Sc).forEach(([s,e])=>{Sc[e]===void 0&&(Sc[e]=s)});function uy(s){const e=new Ti(s),n=mm(Ti.prototype.request,e);return G.extend(n,Ti.prototype,e,{allOwnKeys:!0}),G.extend(n,e,null,{allOwnKeys:!0}),n.create=function(i){return uy(xi(s,i))},n}const Qt=uy(Oo);Qt.Axios=Ti,Qt.CanceledError=Lo,Qt.CancelToken=YE,Qt.isCancel=Gm,Qt.VERSION=Sf,Qt.toFormData=gc,Qt.AxiosError=we,Qt.Cancel=Qt.CanceledError,Qt.all=function(e){return Promise.all(e)},Qt.spread=XE,Qt.isAxiosError=JE,Qt.mergeConfig=xi,Qt.AxiosHeaders=xn,Qt.formToJSON=s=>Bm(G.isHTMLForm(s)?new FormData(s):s),Qt.getAdapter=ly.getAdapter,Qt.HttpStatusCode=Sc,Qt.default=Qt;const{Axios:RR,AxiosError:DR,CanceledError:OR,isCancel:LR,CancelToken:$R,VERSION:MR,all:NR,Cancel:IR,isAxiosError:jR,spread:HR,toFormData:zR,AxiosHeaders:PR,HttpStatusCode:UR,formToJSON:BR,getAdapter:qR,mergeConfig:GR,create:FR}=Qt,_f="g7.identity.redirectStash",wc=pt("IdentityGuardInterceptor");class At{static setLauncher(e){this.launcher=e}static hasLauncher(){return this.launcher!==null}static markDomainNoticeShown(){this.domainNoticeShown=!0}static consumeDomainNoticeShown(){const e=this.domainNoticeShown;return this.domainNoticeShown=!1,e}static resolveDeferred(e){const n=this.deferredResolver;if(!n){wc.warn("IdentityGuardInterceptor.resolveDeferred 호출됐지만 대기 중인 launcher 가 없습니다. 모달이 launcher 외부에서 열렸는지 확인하세요.");return}this.deferredResolver=null,n(e)}static createDeferred(){if(this.deferredResolver){const e=this.deferredResolver;this.deferredResolver=null,e({status:"cancelled"})}return new Promise(e=>{this.deferredResolver=e})}static isIdentityRequired(e,n){return e===428&&typeof n=="object"&&n!==null&&n.error_code==="identity_verification_required"}static async handle(e,n,r){this.domainNoticeShown=!1;const i=this.launcher??ZE,c=!!(r&&(r.email||r.phone))?{...e.verification,target:r}:e.verification,d=await i(c);if(d.status!=="verified")return null;const f=c.return_request;if(!f)return null;const h=QE(f.url,d.token);return fetch(h,{method:f.method,headers:n?.headers??{Accept:"application/json","Content-Type":"application/json"},body:n?.body,credentials:n?.credentials??"same-origin"})}static redirectExternally(e){const n=e.redirect_url;if(!n)return wc.error("redirectExternally 호출 시 verification.redirect_url 이 없습니다. payload:",e),Promise.resolve({status:"failed",failureCode:"MISSING_REDIRECT_URL",reason:"verification.redirect_url is required for external_redirect flow"});if(typeof window<"u"){const r={return_url:window.location.href,payload:e,stashed_at:Date.now()};try{window.sessionStorage?.setItem(_f,JSON.stringify(r))}catch(i){wc.warn("sessionStorage 접근 실패 — stash 없이 redirect 합니다.",i)}window.location.href=n}return new Promise(()=>{})}static reset(){if(this.deferredResolver){const e=this.deferredResolver;this.deferredResolver=null;try{e({status:"cancelled"})}catch{}}this.launcher=null,this.domainNoticeShown=!1}}M(At,"launcher",null),M(At,"deferredResolver",null),M(At,"domainNoticeShown",!1);function QE(s,e){if(!e)return s;try{const n=typeof window<"u"?window.location.origin:"http://localhost",r=new URL(s,n);return r.searchParams.set("verification_token",e),/^https?:\/\//i.test(s)?r.toString():`${r.pathname}${r.search}${r.hash}`}catch{const n=s.includes("?")?"&":"?";return`${s}${n}verification_token=${encodeURIComponent(e)}`}}const ZE=async s=>{if(typeof window>"u")return{status:"cancelled"};if(s.render_hint==="external_redirect"||s.redirect_url)return At.redirectExternally(s);const e=window.G7Core;if(!e?.dispatch)return console.error("[IdentityGuardInterceptor] defaultLauncher: G7Core 가 초기화되지 않아 본인인증 흐름을 시작할 수 없습니다."),{status:"failed",failureCode:"G7_NOT_READY"};try{await e.dispatch({handler:"toast",params:{message:"본인 확인이 필요합니다.",variant:"warning"}})}catch{}const n=window.location.href,r={return_url:n,payload:s,stashed_at:Date.now()};try{window.sessionStorage?.setItem(_f,JSON.stringify(r))}catch{}const i=`/identity/challenge?return=${encodeURIComponent(n)}`;try{await e.dispatch({handler:"navigate",params:{path:i}})}catch(l){wc.warn("navigate 실패 — window.location 으로 폴백",l),window.location.href=i}return new Promise(()=>{})},dy=pt("ApiClient");function Af(){return typeof window<"u"&&window.__G7_DEVTOOLS__?window.__G7_DEVTOOLS__:null}class e_{constructor(e={}){M(this,"client");M(this,"config");M(this,"TOKEN_KEY","auth_token");this.config={baseURL:e.baseURL||"/api",timeout:e.timeout||3e4,onTokenExpired:e.onTokenExpired,onUnauthorized:e.onUnauthorized,onError:e.onError},this.client=Qt.create({baseURL:this.config.baseURL,timeout:this.config.timeout,headers:{"Content-Type":"application/json",Accept:"application/json"},paramsSerializer:{serialize:n=>{const r=[];for(const[i,l]of Object.entries(n))if(l!=null)if(Array.isArray(l)){const c=i.endsWith("[]")?i:`${i}[]`;for(const d of l)r.push(`${encodeURIComponent(c)}=${encodeURIComponent(String(d))}`)}else r.push(`${encodeURIComponent(i)}=${encodeURIComponent(String(l))}`);return r.join("&")}}}),this.setupInterceptors()}setToken(e){if(typeof e!="string"||e===""){dy.warn("Ignoring invalid auth token — token must be a non-empty string.");return}typeof window<"u"&&localStorage.setItem(this.TOKEN_KEY,e)}getToken(){return typeof window<"u"?localStorage.getItem(this.TOKEN_KEY):null}removeToken(){typeof window<"u"&&localStorage.removeItem(this.TOKEN_KEY)}setupInterceptors(){this.client.interceptors.request.use(e=>{e.url?.startsWith("/api")&&e.baseURL==="/api"&&(e.baseURL="");const n=this.getToken();if(n&&e.headers&&!this.isCrossOriginRequest(e.url)&&(e.headers.Authorization=`Bearer ${n}`),typeof window<"u"&&e.headers){const i=localStorage.getItem("g7_locale");i&&(e.headers["Accept-Language"]=i)}const r=Af();if(r?.isEnabled()){const i=this.buildFullUrl(e),l=(e.method||"GET").toUpperCase(),c=r.trackRequest(i,l,{requestBody:e.data});e._devToolsRequestId=c}return e},e=>Promise.reject(e)),this.client.interceptors.response.use(e=>{const n=e.config,r=n._devToolsRequestId;if(r){const i=Af();i?.isEnabled()&&i.completeRequest(r,e.status,e.data),n._devToolsRequestId=null}return e},async e=>{const n=e.config,r=n?.url||"",l=["/auth/","/layouts/"].some(c=>r.includes(c));if(e.response?.status===401&&!n?._retry&&!l){if(n._retry=!0,await Xn.getInstance().refreshToken()){const f=this.getToken();return f&&(n.headers.Authorization=`Bearer ${f}`),n._devToolsRequestId=null,this.client(n)}return this.completeDevToolsRequest(n,e),this.removeToken(),this.config.onUnauthorized&&this.config.onUnauthorized(),Promise.reject(e)}if(e.response?.status===401&&l)return this.completeDevToolsRequest(n,e),Promise.reject(e);if(At.isIdentityRequired(e.response?.status,e.response?.data)){this.completeDevToolsRequest(n,e);const c={},d=n?.headers??{};for(const[v,S]of Object.entries(d))typeof S=="string"&&(c[v]=S);let f;n?.data!==void 0&&n?.data!==null&&(f=typeof n.data=="string"?n.data:JSON.stringify(n.data),c["Content-Type"]=c["Content-Type"]??"application/json");const h=n?.identity_target,m=await At.handle(e.response.data,{headers:c,body:f,credentials:"same-origin"},h);if(!m)return Promise.reject(e);let y=null;try{y=await m.json()}catch{y=null}return m.ok?{...e.response,status:m.status,data:y}:Promise.reject(Object.assign(new Error("replay failed"),{response:{status:m.status,data:y}}))}return e.response?.status===403?(this.completeDevToolsRequest(n,e),this.callOnError(e),Promise.reject(e)):(this.completeDevToolsRequest(n,e),e.response&&this.callOnError(e),Promise.reject(e))})}async get(e,n){return(await this.client.get(e,n)).data}async post(e,n,r){return(await this.client.post(e,n,r)).data}async put(e,n,r){return(await this.client.put(e,n,r)).data}async patch(e,n,r){return(await this.client.patch(e,n,r)).data}async delete(e,n){return(await this.client.delete(e,n)).data}getInstance(){return this.client}setOnUnauthorized(e){this.config.onUnauthorized=e}setOnError(e){this.config.onError=e}completeDevToolsRequest(e,n){if(!e?._devToolsRequestId)return;const r=Af();if(!r?.isEnabled())return;const i=e._devToolsRequestId;e._devToolsRequestId=null,n.response?r.completeRequest(i,n.response.status,n.response.data):n.request?r.failRequest(i,n.message||"Network error"):r.failRequest(i,n.message||"Request error")}isCrossOriginRequest(e){if(!e||typeof window>"u"||!window.location||!/^(https?:)?\/\//i.test(e))return!1;try{return new URL(e,window.location.href).origin!==window.location.origin}catch{return!1}}buildFullUrl(e){let n=e.url||"";if(e.baseURL&&!n.startsWith("http")&&(n=`${e.baseURL}${n.startsWith("/")?"":"/"}${n}`),e.params&&typeof e.params=="object"){const r=e.params,i=[];for(const[l,c]of Object.entries(r))if(c!=null)if(Array.isArray(c)){const d=l.endsWith("[]")?l:`${l}[]`;for(const f of c)i.push(`${encodeURIComponent(d)}=${encodeURIComponent(String(f))}`)}else i.push(`${encodeURIComponent(l)}=${encodeURIComponent(String(c))}`);i.length>0&&(n+=(n.includes("?")?"&":"?")+i.join("&"))}return n}callOnError(e){if(!this.config.onError)return;const n={status:e.response?.status||0,message:e.response?.data?.message||e.message||"Unknown error",data:e.response?.data,statusText:e.response?.statusText};try{this.config.onError(n)}catch(r){dy.error("Error in onError handler:",r)}}}let xf=null;function Yn(){return xf||(xf=new e_),xf}const $o=pt("AuthManager");function ki(s,e,n,r){try{window.G7Core?.devTools?.trackAuthEvent?.(s,e,n,r)}catch{}}const fy={admin:{type:"admin",loginPath:"/admin/login",defaultPath:"/admin",userEndpoint:"/admin/auth/user",loginEndpoint:"/auth/admin/login",logoutEndpoint:"/admin/auth/logout",refreshEndpoint:"/admin/auth/refresh",twoFactorEndpoint:"/auth/admin/login/two-factor",twoFactorResendEndpoint:"/auth/admin/login/two-factor/resend"},user:{type:"user",loginPath:"/login",defaultPath:"/",userEndpoint:"/auth/user",loginEndpoint:"/auth/login",logoutEndpoint:"/auth/logout",refreshEndpoint:"/auth/refresh",twoFactorEndpoint:"/auth/login/two-factor",twoFactorResendEndpoint:"/auth/login/two-factor/resend"}},Lr=class Lr{constructor(){M(this,"state");M(this,"config");M(this,"isRefreshing",!1);M(this,"refreshPromise",null);M(this,"eventHandlers",new Map);this.state={isAuthenticated:!1,user:null,type:null},this.config=new Map,this.config.set("admin",fy.admin),this.config.set("user",fy.user)}static getInstance(){return Lr.instance||(Lr.instance=new Lr),Lr.instance}on(e,n){this.eventHandlers.has(e)||this.eventHandlers.set(e,[]),this.eventHandlers.get(e).push(n)}emit(e,...n){const r=this.eventHandlers.get(e);r&&r.forEach(i=>i(...n))}isAuthenticated(){return this.state.isAuthenticated}getUser(){return this.state.user}getAuthType(){return this.state.type}async checkAuth(e){const n=Yn();if(!n.getToken())return this.clearState(),!1;const i=this.config.get(e);if(!i)return $o.error(`Unknown auth type: ${e}`),!1;try{const l=await n.get(i.userEndpoint);return l.success&&l.data?(this.state={isAuthenticated:!0,user:l.data,type:e},this.emit("authStateChange",this.state),!0):(this.clearState(),!1)}catch(l){return l.response?.status===401&&await this.refreshToken()?this.checkAuth(e):(this.clearState(),!1)}}async preloadAuth(e){try{return await this.checkAuth(e)}catch(n){return $o.warn(`Preload auth failed for type ${e}:`,n),!1}}async login(e,n,r){const i=Yn(),l=this.config.get(e);if(!l)throw new Error(`Unknown auth type: ${e}`);try{const c=r?.headers?{headers:r.headers}:void 0,d=await i.post(l.loginEndpoint,n,c);if(d.success&&d.data){if(d.data.two_factor_required===!0)return ki("login",!0,void 0,{type:e,two_factor:!0}),{status:"two_factor_required",challenge:{challengeId:String(d.data.challenge_id??""),providerId:String(d.data.provider_id??""),expiresAt:d.data.expires_at??null}};if(d.data.token&&d.data.user)return{status:"authenticated",user:this.establishSession(e,d.data.token,d.data.user)}}throw new Error("Login failed")}catch(c){throw this.clearState(),this.enhanceAuthError(c,e,"Login failed")}}async completeTwoFactor(e,n,r){const i=Yn(),l=this.config.get(e);if(!l)throw new Error(`Unknown auth type: ${e}`);try{const c=r?.headers?{headers:r.headers}:void 0,d=await i.post(l.twoFactorEndpoint,{challenge_id:n.challengeId,code:n.code},c);if(d.success&&d.data?.token&&d.data?.user)return this.establishSession(e,d.data.token,d.data.user);throw new Error("Login failed")}catch(c){throw this.clearState(),this.enhanceAuthError(c,e,"Login failed")}}async resendTwoFactor(e,n,r){const i=Yn(),l=this.config.get(e);if(!l)throw new Error(`Unknown auth type: ${e}`);try{const c=r?.headers?{headers:r.headers}:void 0,d=await i.post(l.twoFactorResendEndpoint,{challenge_id:n.challengeId},c);if(d.success&&d.data?.challenge_id)return{challengeId:String(d.data.challenge_id),providerId:String(d.data.provider_id??""),expiresAt:d.data.expires_at??null};throw new Error("Resend failed")}catch(c){throw this.enhanceAuthError(c,e,"Resend failed")}}establishSession(e,n,r){Yn().setToken(n);const l=r.language,c=localStorage.getItem(Lr.LOCALE_STORAGE_KEY),d=l&&l!==c;if(l)try{localStorage.setItem(Lr.LOCALE_STORAGE_KEY,l)}catch(f){$o.warn("Failed to save user language to localStorage:",f)}return this.state={isAuthenticated:!0,user:r,type:e},this.emit("login",this.state),this.emit("authStateChange",this.state),ki("login",!0,void 0,{userId:r.uuid,email:r.email,type:e}),d&&window.__templateApp&&window.__templateApp.changeLocale(l),r}enhanceAuthError(e,n,r){const i=e?.response?.data?.message,l=new Error(i||e?.message||r);return l.response=e?.response,l.status=e?.response?.status,l.code=e?.code,ki("login",!1,l.message,{type:n,status:e?.response?.status}),l}async logout(){const e=Yn(),n=this.state.type?this.config.get(this.state.type):null;try{n&&await e.post(n.logoutEndpoint)}catch(r){$o.warn("Logout API call failed:",r)}finally{e.removeToken();const r={...this.state};if(this.clearState(),this.emit("logout",r),this.emit("authStateChange",this.state),ki("logout",!0,void 0,{previousType:r.type}),n&&r.type){const i=window.location.pathname+window.location.search;window.location.href=this.getLoginRedirectUrl(r.type,i)}}}async refreshToken(){if(this.isRefreshing&&this.refreshPromise)return this.refreshPromise;this.isRefreshing=!0,this.refreshPromise=this.doRefreshToken();try{return await this.refreshPromise}finally{this.isRefreshing=!1,this.refreshPromise=null}}async doRefreshToken(){const e=this.state.type;if(!e)return!1;const n=this.config.get(e);if(!n)return!1;const r=Yn();try{const i=await r.post(n.refreshEndpoint);return i.success&&i.data?.token?(r.setToken(i.data.token),this.emit("tokenRefreshed"),ki("token-refresh",!0,void 0,{type:e}),!0):(ki("token-refresh",!1,"No token in response",{type:e}),!1)}catch(i){return $o.error("Token refresh failed:",i),ki("token-refresh",!1,i instanceof Error?i.message:"Unknown error",{type:e}),!1}}getLoginRedirectUrl(e,n,r){const i=this.config.get(e);if(!i)return"/login";const l=encodeURIComponent(n);let c=`${i.loginPath}?redirect=${l}`;return r&&(c+=`&reason=${encodeURIComponent(r)}`),c}updateConfig(e,n){if(n.loginPath!==void 0){const i=n.loginPath;if(!i.startsWith("/")||i.startsWith("//"))throw new Error(`AuthManager.updateConfig: loginPath must be a same-origin path starting with '/' (got: ${i})`)}const r=this.config.get(e);r&&this.config.set(e,{...r,...n})}getRedirectUrl(e){const r=this.config.get(e)?.defaultPath||"/",l=new URLSearchParams(window.location.search).get("redirect");if(l)try{const c=decodeURIComponent(l);if(c.startsWith("/"))return c}catch{}return r}getConfig(e){return this.config.get(e)}clearState(){this.state={isAuthenticated:!1,user:null,type:null}}static resetInstance(){Lr.instance=null}};M(Lr,"instance"),M(Lr,"LOCALE_STORAGE_KEY","g7_locale");let Xn=Lr;const hy={401:{handler:"navigate",params:{path:"{{auth.loginPath}}"}},403:{handler:"toast",params:{type:"error",message:"{{error.message}}"}},404:{handler:"toast",params:{type:"error",message:"{{error.message}}"}},422:{handler:"toast",params:{type:"error",message:"{{error.message}}"}},default:{handler:"toast",params:{type:"error",message:"{{error.message}}"}}},sa={findHandler(s,e){if(s){if(s[e])return s[e];if(s[String(e)])return s[String(e)];if(s.default)return s.default}},normalizeOnError(s){return s?Array.isArray(s)?s:[s]:[]},injectErrorCode(s,e,n){if(s.handler!=="showErrorPage"||s.params?.errorCode!==void 0)return s;const r=typeof e=="string"?parseInt(e,10):e,i=isNaN(r)?n:r;return i===void 0?s:{...s,params:{...s.params,errorCode:i}}}},Tr=pt("ErrorHandlingResolver"),Pa=class Pa{constructor(){M(this,"templateErrorHandling",null);M(this,"layoutErrorHandling",null);M(this,"executeAction",null)}static getInstance(){return Pa.instance||(Pa.instance=new Pa),Pa.instance}static resetInstance(){Pa.instance=null}setTemplateConfig(e){this.templateErrorHandling=e,Tr.log("Template config set:",e)}setLayoutConfig(e){this.layoutErrorHandling=e,Tr.log("Layout config set:",e)}setActionExecutor(e){this.executeAction=e}resolve(e,n={}){const{errorHandling:r,onError:i}=n;Tr.log("Resolving error:",e,{hasActionErrorHandling:!!r,hasActionOnError:!!i,hasLayoutConfig:!!this.layoutErrorHandling,hasTemplateConfig:!!this.templateErrorHandling});let l=sa.findHandler(r,e);if(l){const c=this.getMatchedKey(r,e);return{handler:sa.injectErrorCode(l,c,e),level:"action",matchedKey:c}}if(i){const c=sa.normalizeOnError(i);if(c.length>0)return{handler:c.length===1?c[0]:{handler:"sequence",actions:c},level:"action",matchedKey:"onError"}}if(l=sa.findHandler(this.layoutErrorHandling||void 0,e),l){const c=this.getMatchedKey(this.layoutErrorHandling,e);return{handler:sa.injectErrorCode(l,c,e),level:"layout",matchedKey:c}}if(l=sa.findHandler(this.templateErrorHandling||void 0,e),l){const c=this.getMatchedKey(this.templateErrorHandling,e);return{handler:sa.injectErrorCode(l,c,e),level:"template",matchedKey:c}}if(l=sa.findHandler(hy,e),l){const c=this.getMatchedKey(hy,e);return{handler:sa.injectErrorCode(l,c,e),level:"system",matchedKey:c}}return{handler:null,level:null,matchedKey:null}}async execute(e,n){if(!this.executeAction){Tr.error("Action executor is not set");return}Tr.log("Executing handler:",e.handler,{errorContext:n});try{return await this.executeAction(e,{error:n})}catch(r){throw Tr.error("Failed to execute handler:",r),r}}async resolveAndExecute(e,n,r={}){const i=this.resolve(e,r);if(Tr.log("Resolve result:",{errorCode:e,handler:i.handler?.handler,level:i.level,matchedKey:i.matchedKey}),!i.handler)return Tr.warn("No handler found for error:",e),{handled:!1};try{return{handled:!0,result:await this.execute(i.handler,n)}}catch(l){return Tr.error("Handler execution failed:",l),{handled:!1}}}getMatchedKey(e,n){return e[n]?n:e[String(n)]?String(n):"default"}clearLayoutConfig(){this.layoutErrorHandling=null,Tr.log("Layout config cleared")}clearAllConfig(){this.templateErrorHandling=null,this.layoutErrorHandling=null,Tr.log("All config cleared")}getConfigStatus(){return{hasTemplate:this.templateErrorHandling!==null,hasLayout:this.layoutErrorHandling!==null,hasExecutor:this.executeAction!==null}}};M(Pa,"instance",null);let Tf=Pa;function kr(){return Tf.getInstance()}function Mo(s,e){const n={...s};for(const r of Object.keys(e))r in n?n[r]!==null&&typeof n[r]=="object"&&!Array.isArray(n[r])&&e[r]!==null&&typeof e[r]=="object"&&!Array.isArray(e[r])&&(n[r]=Mo(n[r],e[r])):n[r]=e[r];return n}var kf={exports:{}},No={};/**
* @license React
* react-jsx-runtime.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var py;function t_(){if(py)return No;py=1;var s=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,i,l){var c=null;if(l!==void 0&&(c=""+l),i.key!==void 0&&(c=""+i.key),"key"in i){l={};for(var d in i)d!=="key"&&(l[d]=i[d])}else l=i;return i=l.ref,{$$typeof:s,type:r,key:c,ref:i!==void 0?i:null,props:l}}return No.Fragment=e,No.jsx=n,No.jsxs=n,No}var gy;function n_(){return gy||(gy=1,kf.exports=t_()),kf.exports}var yt=n_();const r_=na({__proto__:null,default:ra(yt)},[yt]),Rf=pt("ParentContextProvider"),my=N.createContext(null);let Cc=null;function Df(){Cc?(Rf.log("[triggerModalParentUpdate] 모달 부모 컨텍스트 업데이트 트리거"),Cc()):Rf.warn("[triggerModalParentUpdate] Provider가 아직 마운트되지 않음")}const yy=({children:s})=>{const[e,n]=N.useState(0),r=N.useRef(!0),i=N.useCallback(()=>{const c=window.__g7LayoutContextStack||[];return c[c.length-1]?.dataContext},[]);N.useEffect(()=>(r.current=!0,Cc=()=>{r.current&&(n(c=>c+1),Rf.log("[ParentContextProvider] 버전 업데이트됨"))},()=>{r.current=!1,Cc=null}),[]);const l={version:e,getParentDataContext:i};return yt.jsx(my.Provider,{value:l,children:s})};function a_(){return N.useContext(my)}function by(s){return s.replace(/[\t\n\r]/g,"").replace(/\\/g,"/").replace(/^([a-z][a-z0-9+.\-]*:)?\/{2,}/i,"$1//")}function vy(s,e){try{const n=typeof window<"u"&&window.location?.protocol||"https:",r=e||(typeof window<"u"?window.location?.origin:void 0)||"https://localhost",i=s.startsWith("//")?`${n}${s}`:s,l=new URL(i,r);return l.protocol!=="http:"&&l.protocol!=="https:"?null:l.hostname.toLowerCase()}catch{return null}}function bs(){const s=typeof window<"u"?window.G7Config?.trustedScriptHosts:void 0;return Array.isArray(s)?s.map(e=>String(e).toLowerCase()):[]}function Io(s,e){if(typeof s!="string")return!1;const n=s.trim();if(n==="")return!1;const r=by(n),i=r.startsWith("//"),l=/^[a-z][a-z0-9+.-]*:/i.test(r);if(!i&&!l&&r.startsWith("/"))return!0;const c=vy(r),d=e??bs();return c!==null&&d.map(f=>String(f).toLowerCase()).includes(c)}const I=pt("ActionDispatcher");function i_(s,e,n,r){return n||(Kg(s)||zd(s)?"$t:core.errors.network_request_failed":r||`Failed to execute action: ${e}`)}const Sy=new Set(["navigate","navigateBack","navigateForward","replaceUrl","refresh","logout"]),s_=new Set(["redirect"]);function Jn(){try{return window.G7Core?.devTools}catch{return}}class It extends Error{constructor(n,r,i){super(n);M(this,"unknownHandler",!1);this.action=r,this.originalError=i,this.name="ActionError"}}const wy={click:"onClick",change:"onChange",input:"onInput",submit:"onSubmit",focus:"onFocus",blur:"onBlur",keydown:"onKeyDown",keyup:"onKeyUp",keypress:"onKeyPress",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",scroll:"onScroll",dragstart:"onDragStart",drag:"onDrag",dragend:"onDragEnd",dragenter:"onDragEnter",dragover:"onDragOver",dragleave:"onDragLeave",drop:"onDrop"},cn=class cn{constructor(e={},n,r){M(this,"bindingEngine");M(this,"translationEngine");M(this,"translationContext");M(this,"customHandlers",new Map);M(this,"defaultContext");M(this,"globalStateUpdater");M(this,"errorHandlingSetup",!1);M(this,"debounceTimers",new Map);M(this,"pendingDebounceFlushers",new Map);M(this,"debounceAccumulatedValues",new Map);M(this,"globalHeaders",[]);M(this,"namedActions",{});M(this,"previewMode",!1);M(this,"localMirrorDepth",0);M(this,"intervals",new Map);this.bindingEngine=new $n,this.translationEngine=n,this.translationContext=r,this.defaultContext=e,this.registerDefaultHandlers(),this.setupErrorHandling()}setGlobalHeaders(e){this.globalHeaders=e||[]}setNamedActions(e){this.namedActions=e||{};const n=Jn();n?.isEnabled?.()&&n.setNamedActionDefinitions?.(this.namedActions),I.log("[setNamedActions] registered:",Object.keys(this.namedActions))}getNamedActions(){return this.namedActions}setPreviewMode(e){this.previewMode=e,I.log("Preview mode:",e?"enabled":"disabled")}isPreviewMode(){return this.previewMode}static getPreviewSuppressedHandlers(){return Sy}static getPreviewSuppressedLayoutFeatures(){return s_}resolveActionRef(e){if(!e.actionRef)return e;const n=this.namedActions[e.actionRef];if(!n)return I.warn(`[resolveActionRef] named action not found: "${e.actionRef}"`),e;const r=Jn();r?.isEnabled?.()&&r.trackNamedActionRef?.({actionRefName:e.actionRef,resolvedHandler:n.handler,timestamp:Date.now()});const{actionRef:i,type:l,key:c,event:d,...f}=e,h={...n,...Object.fromEntries(Object.entries(f).filter(([,m])=>m!==void 0)),type:l??n.type};return c!==void 0&&(h.key=c),d!==void 0&&(h.event=d),h}matchesPattern(e,n){if(n==="*")return!0;const r=n.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${r}$`).test(e)}getMatchingGlobalHeaders(e,n){const r={};for(const i of this.globalHeaders)this.matchesPattern(e,i.pattern)&&Object.entries(i.headers).forEach(([l,c])=>{const d=ps(c,n,{skipCache:!0});d!=null&&d!==""&&(r[l]=String(d))});return r}setupErrorHandling(){if(this.errorHandlingSetup)return;kr().setActionExecutor(async(n,r)=>{const i={type:"click",handler:n.handler,target:n.target,params:n.params,actions:n.actions},l={data:{...this.defaultContext.data,error:r.error}};return await this.dispatchAction(i,l)}),this.errorHandlingSetup=!0}registerDefaultHandlers(){this.registerHandler("refetchDataSource",async(n,r)=>{const i=n.params?.dataSourceId,l=n.params?.sync;if(!i){I.warn("refetchDataSource: dataSourceId is required");return}if(typeof window<"u"&&window.G7Core?.dataSource?.refetch){const c=window.G7Core?.state?.get?.()||{},d={...r.state?._global,...c},f=window.G7Core?.state?.getLocal?.()||{},h=r.data?._local||r.state||{},m={...f,...h},y=r.isolatedContext?.state;I.log("[refetchDataSource] localStateOverride:",m),await window.G7Core.dataSource.refetch(i,{...l?{sync:!0}:{},...d?{globalStateOverride:d}:{},...m?{localStateOverride:m}:{},...y?{isolatedStateOverride:y}:{}})}else I.warn("refetchDataSource: G7Core.dataSource.refetch is not available")}),this.registerHandler("appendDataSource",async(n,r)=>{const{dataSourceId:i,dataPath:l,newData:c}=n.params||{};if(!i){I.warn("appendDataSource: dataSourceId is required");return}if(c===void 0){I.warn("appendDataSource: newData is required");return}if(typeof window<"u"&&window.G7Core?.dataSource?.updateData){if(!Array.isArray(c)){I.warn("appendDataSource: newData must be an array, got:",typeof c,c);return}await window.G7Core.dataSource.updateData(i,l||null,c,"append")}else I.warn("appendDataSource: G7Core.dataSource.updateData is not available")}),this.registerHandler("updateDataSource",async(n,r)=>{const{dataSourceId:i,data:l,merge:c=!1}=n.params||{};if(!i){I.warn("updateDataSource: dataSourceId is required");return}if(l===void 0){I.warn("updateDataSource: data is required");return}typeof window<"u"&&window.G7Core?.dataSource?.set?(I.log(`[updateDataSource] Updating dataSource '${i}' with:`,l),window.G7Core.dataSource.set(i,l,{merge:c})):I.warn("updateDataSource: G7Core.dataSource.set is not available")}),this.registerHandler("scrollIntoView",async(n,r)=>{const{selector:i,behavior:l="smooth",block:c="nearest",inline:d="nearest",waitForElement:f=!1,timeout:h=2e3,delay:m=0,retryCount:y=0,retryInterval:v=50,scrollContainer:S}=n.params||{};if(!i){I.warn("scrollIntoView: selector is required");return}if(typeof window>"u"||typeof document>"u"){I.warn("scrollIntoView: window/document is not available");return}let _=null;if(f){if(_=await new Promise(x=>{const A=document.querySelector(i);if(A){x(A);return}const D=setTimeout(()=>{O.disconnect(),x(null)},h),O=new MutationObserver(()=>{const k=document.querySelector(i);k&&(clearTimeout(D),O.disconnect(),x(k))});O.observe(document.body,{childList:!0,subtree:!0})}),!_){I.warn(`scrollIntoView: element not found for selector "${i}" after ${h}ms timeout`);return}}else{m>0&&await new Promise(A=>setTimeout(A,m)),_=document.querySelector(i);let x=0;for(;!_&&x<y;)await new Promise(A=>setTimeout(A,v)),_=document.querySelector(i),x++;if(!_){I.warn(`scrollIntoView: element not found for selector "${i}" after ${x+1} attempts`);return}}if(S){const x=document.querySelector(S);if(!x){I.warn(`scrollIntoView: container not found for selector "${S}"`);return}const A=_.getBoundingClientRect(),D=x.getBoundingClientRect(),O=A.top-D.top+x.scrollTop,k=O+A.height;let L;switch(c){case"start":L=O;break;case"center":L=O-x.clientHeight/2+A.height/2;break;case"end":L=k-x.clientHeight;break;case"nearest":default:const B=A.top<D.top,q=A.bottom>D.bottom;if(B)L=O;else if(q)L=k-x.clientHeight;else return;break}x.scrollTo({top:Math.max(0,L),behavior:l});return}_.scrollIntoView({behavior:l,block:c,inline:d})}),this.registerHandler("reloadExtensions",async(n,r)=>{if(typeof window>"u"){I.warn("reloadExtensions: window is not available");return}const i=window.__templateApp;if(!i){I.warn("reloadExtensions: TemplateApp not initialized");return}if(typeof i.reloadExtensionState=="function")try{await i.reloadExtensionState()}catch(d){throw I.error("reloadExtensions: reloadExtensionState failed",d),d}else I.warn("reloadExtensions: TemplateApp.reloadExtensionState unavailable");const{moduleInfo:l,pluginInfo:c}=n.params||{};if(l)try{await this.executeAction({handler:"reloadModuleHandlers",params:n.params},r)}catch(d){I.error("reloadExtensions: reloadModuleHandlers failed",d)}if(c)try{await this.executeAction({handler:"reloadPluginHandlers",params:n.params},r)}catch(d){I.error("reloadExtensions: reloadPluginHandlers failed",d)}I.log("reloadExtensions: done")}),this.registerHandler("reloadRoutes",async(n,r)=>{if(typeof window>"u"){I.warn("reloadRoutes: window is not available");return}const i=window.__templateApp;if(!i){I.warn("reloadRoutes: TemplateApp not initialized");return}if(typeof i.reloadExtensionState=="function")try{await i.reloadExtensionState(),I.log("reloadRoutes: delegated to reloadExtensionState")}catch(l){throw I.error("reloadRoutes: Failed to reload routes",l),l}else{const l=i.getRouter?.();l&&(await l.loadRoutes(),I.log("reloadRoutes: Routes reloaded (legacy fallback)"))}}),this.registerHandler("refresh",async(n,r)=>{if(typeof window>"u"){I.warn("refresh: window is not available");return}const i=Number(n.params?.delayMs??0);i>0&&await new Promise(l=>setTimeout(l,i)),window.location.reload()}),this.registerHandler("remount",async(n,r)=>{const{componentId:i}=n.params||{};if(!i){I.warn("remount: componentId parameter is required");return}if(!this.globalStateUpdater){I.warn("remount: globalStateUpdater is not set");return}const d=(window.G7Core?.state?.get()||{})._global?._remountKeys||{},f=d[i]||0;this.globalStateUpdater({_remountKeys:{...d,[i]:f+1}}),I.log(`remount: ${i} key incremented to ${f+1}`)}),this.registerHandler("reloadTranslations",async(n,r)=>{if(typeof window>"u"){I.warn("reloadTranslations: window is not available");return}const i=window.__templateApp;if(!i){I.warn("reloadTranslations: TemplateApp not initialized");return}if(typeof i.reloadExtensionState=="function")try{await i.reloadExtensionState(),I.log("reloadTranslations: delegated to reloadExtensionState")}catch(l){throw I.error("reloadTranslations: Failed to reload translations",l),l}}),this.registerHandler("reloadModuleHandlers",async(n,r)=>{if(typeof window>"u"){I.warn("reloadModuleHandlers: window is not available");return}const{moduleInfo:i,action:l}=n.params||{};if(!i){I.warn("reloadModuleHandlers: moduleInfo is required");return}const c=i.data||i;if(!c.identifier){I.warn("reloadModuleHandlers: moduleInfo with identifier is required");return}if(!l||l!=="add"&&l!=="remove"){I.warn('reloadModuleHandlers: action must be "add" or "remove"');return}const d=window.G7Config;if(!d){I.warn("reloadModuleHandlers: G7Config not available");return}const f=c.identifier;try{if(l==="add"){if(c.assets){if(d.moduleAssets=d.moduleAssets||{},d.moduleAssets[f]=c.assets,I.log(`reloadModuleHandlers: Added assets for ${f}`),c.assets.js){const h=c.assets.js,m=`module-${f}`;this.assertAllowedExtensionAssetUrl(h,`module script (${f})`,n),document.getElementById(m)?I.warn(`reloadModuleHandlers: Script ${m} already loaded`):(await _r(h,{id:m},{label:`module-script:${f}`}),I.log(`reloadModuleHandlers: Script loaded successfully for ${f}`))}if(c.assets.css){const h=c.assets.css,m=`module-css-${f}`;this.assertAllowedExtensionAssetUrl(h,`module stylesheet (${f})`,n),document.getElementById(m)||(await ia(h,{id:m},{label:`module-css:${f}`}),I.log(`reloadModuleHandlers: CSS loaded for ${f}`))}}}else if(l==="remove"){d.moduleAssets&&d.moduleAssets[f]&&(delete d.moduleAssets[f],I.log(`reloadModuleHandlers: Removed assets for ${f}`));const h=`module-${f}`,m=document.getElementById(h);m&&(m.remove(),I.log(`reloadModuleHandlers: Removed script for ${f}`));const y=`module-css-${f}`,v=document.getElementById(y);v&&(v.remove(),I.log(`reloadModuleHandlers: Removed CSS for ${f}`))}}catch(h){throw I.error(`reloadModuleHandlers: Failed to ${l} module assets`,h),h}}),this.registerHandler("reloadPluginHandlers",async(n,r)=>{if(typeof window>"u"){I.warn("reloadPluginHandlers: window is not available");return}const{pluginInfo:i,action:l}=n.params||{};if(!i){I.warn("reloadPluginHandlers: pluginInfo is required");return}const c=i.data||i;if(!c.identifier){I.warn("reloadPluginHandlers: pluginInfo with identifier is required");return}if(!l||l!=="add"&&l!=="remove"){I.warn('reloadPluginHandlers: action must be "add" or "remove"');return}const d=window.G7Config;if(!d){I.warn("reloadPluginHandlers: G7Config not available");return}const f=c.identifier;try{if(l==="add"){if(c.assets){if(d.pluginAssets=d.pluginAssets||{},d.pluginAssets[f]=c.assets,I.log(`reloadPluginHandlers: Added assets for ${f}`),c.assets.js){const h=c.assets.js,m=`plugin-${f}`;this.assertAllowedExtensionAssetUrl(h,`plugin script (${f})`,n),document.getElementById(m)?I.warn(`reloadPluginHandlers: Script ${m} already loaded`):(await _r(h,{id:m},{label:`plugin-script:${f}`}),I.log(`reloadPluginHandlers: Script loaded successfully for ${f}`))}if(c.assets.css){const h=c.assets.css,m=`plugin-css-${f}`;this.assertAllowedExtensionAssetUrl(h,`plugin stylesheet (${f})`,n),document.getElementById(m)||(await ia(h,{id:m},{label:`plugin-css:${f}`}),I.log(`reloadPluginHandlers: CSS loaded for ${f}`))}}}else if(l==="remove"){d.pluginAssets&&d.pluginAssets[f]&&(delete d.pluginAssets[f],I.log(`reloadPluginHandlers: Removed assets for ${f}`));const h=`plugin-${f}`,m=document.getElementById(h);m&&(m.remove(),I.log(`reloadPluginHandlers: Removed script for ${f}`));const y=`plugin-css-${f}`,v=document.getElementById(y);v&&(v.remove(),I.log(`reloadPluginHandlers: Removed CSS for ${f}`))}}catch(h){throw I.error(`reloadPluginHandlers: Failed to ${l} plugin assets`,h),h}});let e=!1;this.registerHandler("showErrorPage",async(n,r)=>{if(e){I.log("showErrorPage: Already active, skipping duplicate call");return}if(e=!0,typeof window>"u"){e=!1,I.warn("showErrorPage: window is not available");return}const i=window.__templateApp;if(!i){e=!1,I.warn("showErrorPage: TemplateApp not initialized");return}const l=i.getErrorPageHandler?.();if(!l){e=!1,I.warn("showErrorPage: ErrorPageHandler not available");return}const c=n.params?.errorCode||500,d=n.params?.target||"content";let f=n.params?.containerId;f||(f=d==="full"?"app":"main_content"),I.log("showErrorPage:",{errorCode:c,target:d,containerId:f});const h=(m,y=6e4)=>new Promise((v,S)=>{const _=document.getElementById(m);if(_){v(_);return}I.log(`showErrorPage: Waiting for container #${m}...`);let x;const A=new MutationObserver((D,O)=>{const k=document.getElementById(m);k&&(I.log(`showErrorPage: Container #${m} found`),O.disconnect(),clearTimeout(x),v(k))});A.observe(document.body,{childList:!0,subtree:!0}),x=setTimeout(()=>{A.disconnect(),S(new Error(`Container #${m} not found within ${y}ms`))},y)});try{await h(f);const m=kr(),y=m.layoutErrorHandling;m.clearLayoutConfig();try{await l.renderError(c,f)||I.warn(`showErrorPage: Failed to render error page for code ${c}`)}finally{m.setLayoutConfig(y)}}catch(m){throw I.error("showErrorPage: Error rendering error page:",m),m}finally{e=!1}}),this.registerHandler("emitEvent",async(n,r)=>{const i=n.params?.event,l=n.params?.data;if(!i){I.warn("emitEvent: event parameter is required");return}if(typeof window>"u"){I.warn("emitEvent: window is not available");return}const c=window.G7Core;if(!c?.componentEvent?.emit){I.warn("emitEvent: G7Core.componentEvent is not available");return}try{I.log(`emitEvent: Emitting "${i}"`,l);const d={...l,_context:{data:r.data,state:r.state}},f=await c.componentEvent.emit(i,d);if(!f||f.length===0?I.warn(`emitEvent: No listeners found for "${i}"`):I.log(`emitEvent: Event "${i}" completed with ${f.length} listener(s)`,f),this.globalStateUpdater){const h=(c?.state?.get()||{})._local||{},m={event:i,success:!0,data:f.length===1?f[0]:f,listeners:f.length};this.globalStateUpdater({_local:{...h,_eventResult:m}});const y=r.state&&typeof r.state=="object"&&!Array.isArray(r.state)?r.state:h;window.__g7SequenceLocalSync={...y,_eventResult:m}}}catch(d){if(I.error(`emitEvent: Event "${i}" failed`,d),this.globalStateUpdater){const f=c?.state?.get()||{};this.globalStateUpdater({_local:{...f._local,_eventResult:{event:i,success:!1,error:d instanceof Error?d.message:String(d)}}})}throw d}}),this.registerHandler("updateProductField",async(n,r)=>{const{productId:i,field:l,value:c}=n.params||{};if(!i||!l){I.warn("updateProductField: productId and field are required");return}if(typeof window>"u"){I.warn("updateProductField: window is not available");return}const d=window.G7Core;if(!d?.state?.get||!this.globalStateUpdater){I.warn("updateProductField: G7Core.state or globalStateUpdater is not available");return}try{const f=d.state.get()||{},m=(f.products?.data?.data||[]).map(v=>v.id===i?{...v,[l]:c,_modified:!0}:v),y=new Set(f._local?.modifiedProductIds||[]);y.add(i),this.globalStateUpdater({products:{...f.products,data:{...f.products?.data,data:m}},_local:{...f._local,modifiedProductIds:Array.from(y)}}),I.log(`updateProductField: Updated product ${i}, field: ${l}, value:`,c)}catch(f){throw I.error("updateProductField: Error updating product field",f),f}}),this.registerHandler("updateOptionField",async(n,r)=>{const{productId:i,optionId:l,field:c,value:d}=n.params||{};if(!i||!l||!c){I.warn("updateOptionField: productId, optionId and field are required");return}if(typeof window>"u"){I.warn("updateOptionField: window is not available");return}const f=window.G7Core;if(!f?.state?.get||!this.globalStateUpdater){I.warn("updateOptionField: G7Core.state or globalStateUpdater is not available");return}try{const h=f.state.get()||{},y=(h.products?.data?.data||[]).map(S=>{if(S.id===i&&S.options){const _=S.options.map(x=>x.id===l?{...x,[c]:d,_modified:!0}:x);return{...S,options:_,_modified:!0}}return S}),v=new Set(h._local?.modifiedProductIds||[]);v.add(i),this.globalStateUpdater({products:{...h.products,data:{...h.products?.data,data:y}},_local:{...h._local,modifiedProductIds:Array.from(v)}}),I.log(`updateOptionField: Updated product ${i} option ${l}, field: ${c}, value:`,d)}catch(h){throw I.error("updateOptionField: Error updating option field",h),h}}),this.registerHandler("setLocale",async(n,r)=>{const i=n.target;if(!i||typeof i!="string"){I.warn("setLocale: Invalid locale:",i);return}const l=window.__templateApp;if(l&&typeof l.changeLocale=="function")try{await l.changeLocale(i),I.log("setLocale: Locale changed to",i)}catch(c){I.error("setLocale: Failed to change locale:",c),window.location.reload()}else{I.warn("setLocale: TemplateApp not found, falling back to page reload");try{localStorage.setItem("g7_locale",i)}catch{}window.location.reload()}}),this.registerHandler("suppress",async()=>{I.log("suppress: Error intentionally suppressed")}),this.registerBuiltInHandlerMetadata()}registerBuiltInHandlerMetadata(){const e=Jn();if(!e?.isEnabled())return;const n=[{name:"refetchDataSource",description:"데이터 소스를 다시 fetch합니다"},{name:"appendDataSource",description:"데이터 소스에 새 데이터를 병합합니다 (무한 스크롤용)"},{name:"updateDataSource",description:"API 응답으로 데이터 소스를 직접 업데이트합니다 (refetch 대체)"},{name:"reloadRoutes",description:"라우트를 다시 로드합니다"},{name:"refresh",description:"현재 페이지를 새로고침합니다"},{name:"remount",description:"컴포넌트를 리마운트합니다"},{name:"reloadTranslations",description:"다국어 파일을 다시 로드합니다"},{name:"showErrorPage",description:"에러 페이지를 표시합니다"},{name:"emitEvent",description:"이벤트를 발생시킵니다"},{name:"updateProductField",description:"상품 필드를 인라인 수정합니다"},{name:"updateOptionField",description:"상품 옵션 필드를 인라인 수정합니다"},{name:"setLocale",description:"언어를 변경합니다 (DB 저장 + UI 리렌더링)"}];for(const r of n)e.trackHandlerRegistration(r.name,"built-in",r.description)}createHandler(e,n,r){I.log("createHandler called for:",e.handler,e.type);const i=window.__g7DevTools,l=Date.now(),c=r?.state?{...r.state}:null,d=`handler_${e.handler}_${l}`;return async f=>{if(I.log("Handler invoked for:",e.handler,"event:",f.type),i?.isEnabled?.()&&c){const m=window.G7Core?.state?.getLocal?.()??r?.state??{},y=Date.now()-l;for(const v of Object.keys(c)){const S=c[v],_=m[v];S!==_&&y>100&&(i.trackStaleClosureWarning?.({type:"event-handler-stale",location:`createHandler(${e.handler})`,capturedPath:`_local.${v}`,capturedValue:S,capturedAt:l,currentValue:_,actionId:d,stackTrace:new Error().stack}),I.warn(`[Stale Closure] _local.${v} changed after handler creation:`,`captured="${S}" → current="${_}" (${y}ms ago)`))}}try{f.type!=="change"&&f.preventDefault();let h={};if(f.type==="submit"&&f.target instanceof HTMLFormElement){const v=f.target;new FormData(v).forEach((_,x)=>{h[x]=_})}const m={...this.defaultContext,data:{...n,form:h,_local:r?.state||{},$event:f},event:f,...r&&{state:r.state,setState:r.setState},isolatedContext:r?.isolatedContext};if(e.confirm){let v=this.resolveValue(e.confirm,m.data);if(this.translationEngine&&this.translationContext&&v.startsWith("$t:")&&(v=this.translationEngine.resolveTranslations(v,this.translationContext,m.data)),!confirm(v))return}const y=window.__g7ActionContext;window.__g7ActionContext={...r,data:m.data};try{await this.executeAction(e,m)}finally{window.__g7ActionContext=y}}catch(h){if(I.error("Action execution failed:",h),e.onError){const m=h instanceof It&&h.originalError?h.originalError:h,y={...this.defaultContext,data:{...n,error:m,_local:r?.state||{},$event:f},event:f,...r&&{state:r.state,setState:r.setState}},v=Array.isArray(e.onError)?e.onError:[e.onError];for(const S of v)await this.executeAction(S,y)}}}}generateActionId(e,n){const r=e.handler,i=n||"no-target",l=Date.now(),c=Math.random().toString(36).substring(2,9);return`${r}_${i.replace(/[^a-zA-Z0-9]/g,"_")}_${l}_${c}`}async executeAction(e,n){if(e=this.resolveActionRef(e),typeof e.handler=="string"&&e.handler.includes("{{")){const f=this.evaluateExpression(e.handler,n.data);e={...e,handler:f==null?"":String(f)}}const r=Jn(),i=r?.isEnabled()?`action_${Date.now()}_${Math.random().toString(36).substring(2,11)}`:void 0,l=performance.now();let c;if(i&&r&&r.logAction({id:i,type:e.handler,params:this.sanitizeForDevTools(e.params),context:this.sanitizeForDevTools({hasState:!!n.state,hasSetState:!!n.setState,dataKeys:n.data?Object.keys(n.data):[]}),startTime:l,status:"started"}),e.if!==void 0)try{const f=this.resolveValue(e.if,n.data),h=f===!0||f==="true"||f&&f!=="false"&&f!=="0"&&f!==!1;if(I.log("[executeAction] if condition result:",e.handler,h),!h)return i&&r&&r.logAction({id:i,type:e.handler,startTime:l,endTime:performance.now(),duration:performance.now()-l,status:"success",result:{skipped:!0,reason:"if condition false"}}),{success:!0,data:void 0}}catch(f){return I.error("[executeAction] if condition error:",e.handler,f),i&&r&&r.logAction({id:i,type:e.handler,startTime:l,endTime:performance.now(),duration:performance.now()-l,status:"error",error:{name:"ConditionEvaluationError",message:f instanceof Error?f.message:String(f),stack:f instanceof Error?f.stack:void 0}}),{success:!0,data:void 0}}let d;try{const f=this.resolveParams(e.params,n.data);i&&(c=this.sanitizeForDevTools(f));const h=e.target?this.resolveValue(e.target,n.data):void 0;if(e.handler==="apiCall"&&n.setState){d=this.generateActionId(e,h);const y=n.state?.loadingActions||{};n.setState({loadingActions:{...y,[d]:!0}})}if(this.previewMode&&Sy.has(e.handler))return I.warn(`Preview mode: "${e.handler}" suppressed`,h||f),i&&r&&r.logAction({id:i,type:e.handler,startTime:l,endTime:performance.now(),duration:performance.now()-l,status:"skipped",metadata:{reason:"preview_mode_suppressed"}}),{success:!0,data:void 0};let m;switch(e.handler){case"ensureIdentityVerified":m=await this.handleEnsureIdentityVerified(f);break;case"resolveIdentityChallenge":m=this.handleResolveIdentityChallenge(f);break;case"navigate":const y=f.path||h;m=await this.handleNavigate(y,f,n);break;case"navigateBack":m=await this.handleNavigateBack();break;case"navigateForward":m=await this.handleNavigateForward();break;case"openWindow":{const _=f.path||h;m=await this.handleOpenWindow(_,f);break}case"replaceUrl":{const _=f.path||h||window.location.pathname;m=await this.handleReplaceUrl(_,f);break}case"apiCall":if(e.onSuccess&&r?.isEnabled()&&i){const _=window.G7Core,x={};if(_?.state?.get){const A=_.state.get();x._global=A}n.state&&(x._local=n.state),r.registerStateCaptureForHandler?.(i,["_global","_local"],x)}const v=e.auth_mode??(e.auth_required?"required":"none"),S=e.identity_target?this.resolveParams(e.identity_target,n.data):void 0;m=await this.handleApiCall(h,f,n,v,S);break;case"login":m=await this.handleLogin(h,f,n);break;case"loginTwoFactor":m=await this.handleLoginTwoFactor(h,f,n);break;case"loginTwoFactorResend":m=await this.handleLoginTwoFactorResend(h,f,n);break;case"logout":m=await this.handleLogout(h,n);break;case"setState":I.log("[executeAction] setState resolvedParams:",f),m=await this.handleSetState(e.render!==void 0?{...f,__render:e.render}:f,n);break;case"setError":m=await this.handleSetError(h,f,n);break;case"openModal":m=await this.handleOpenModal(h,n);break;case"closeModal":m=await this.handleCloseModal(n);break;case"showAlert":m=await this.handleShowAlert(h,n);break;case"toast":m=await this.handleToast(f,n);break;case"switch":m=await this.handleSwitch(e,n);break;case"conditions":m=await this.handleConditions(e,n);break;case"sequence":m=await this.handleSequence(e,n);break;case"parallel":m=await this.handleParallel(e,n);break;case"startInterval":m=this.handleStartInterval(f,n);break;case"stopInterval":m=this.handleStopInterval(f);break;case"loadScript":m=await this.handleLoadScript(f,e,n);break;case"callExternal":m=await this.handleCallExternal(f,e,n);break;case"callExternalEmbed":m=await this.handleCallExternalEmbed(f,e,n);break;case"saveToLocalStorage":m=await this.handleSaveToLocalStorage(f,n);break;case"loadFromLocalStorage":m=await this.handleLoadFromLocalStorage(f,n);break;default:m=await this.handleCustomAction({...e,target:h,params:f},n);break}if(e.resultTo&&m!==void 0){const{target:y,key:v,merge:S}=e.resultTo,_=this.resolveValue(v,n.data),x=S==="replace"?"replace":S==="shallow"?"shallow":"deep";if(y==="_local"&&n.setState){const A=this.buildNestedUpdate(_,m),D=x!=="deep"?{...A,__mergeMode:x}:A;this.writeLocalState(n,D),I.log(`[resultTo] Saved to _local.${_} (merge=${x}):`,m)}else if(y==="_local"&&this.globalStateUpdater){const O=(window.G7Core?.state?.get()||{})._local||{},k=this.buildNestedUpdate(_,m);let L;x==="replace"?L=k:x==="shallow"?L={...O,...k}:L=this.deepMergeWithState(k,O),this.globalStateUpdater({_local:L}),I.log(`[resultTo] Saved to _local.${_} via globalStateUpdater (merge=${x}):`,m)}else if(y==="_global"&&this.globalStateUpdater){const A=this.buildNestedUpdate(_,m);this.globalStateUpdater(A),I.log(`[resultTo] Saved to _global.${_}:`,m)}else if(y==="_isolated"&&n.isolatedContext){const A=this.buildNestedUpdate(_,m);n.isolatedContext.mergeState(A,x),I.log(`[resultTo] Saved to _isolated.${_} (merge=${x}):`,m)}else I.warn(`[resultTo] Cannot save result: target=${y}, setState=${!!n.setState}, globalStateUpdater=${!!this.globalStateUpdater}, isolatedContext=${!!n.isolatedContext}`)}if(e.onSuccess){if(r?.isEnabled()&&i&&e.handler==="apiCall"){const S=window.G7Core,_={};S?.state?.get&&(_._global=S.state.get()),n.state&&(_._local=n.state),r.detectStaleClosure?.(i,`${e.handler} → onSuccess`,_,"callback-state-capture",i)}const y={...n,data:{...n.data,result:m,response:m}},v=Array.isArray(e.onSuccess)?e.onSuccess:[e.onSuccess];v.length>1?await this.handleSequence({handler:"sequence",type:"click",actions:v},y):v.length===1&&await this.executeAction(v[0],y)}return i&&r&&r.logAction({id:i,type:e.handler,params:this.sanitizeForDevTools(e.params),resolvedParams:c,startTime:l,endTime:performance.now(),duration:performance.now()-l,status:"success",result:this.sanitizeForDevTools(m)}),{success:!0,data:m}}catch(f){const h=f instanceof It?f:new It(`Failed to execute action: ${e.handler}`,e,f instanceof Error?f:void 0),m=h.originalError?.response||{},y=m.data||{},v=h.originalError?.status||m.status||500;let S=i_(h.originalError??f,e.handler,y.message,h.message);this.translationEngine&&this.translationContext&&S.startsWith("$t:")&&(S=this.translationEngine.resolveTranslations(S,this.translationContext));const _={status:v,message:S,errors:y.errors||m.errors,data:y,statusText:h.originalError?.statusText,error_code:y.error_code??m.error_code};if(h.unknownHandler)throw I.warn(`Unknown action handler "${e.handler}" — skipped (extension not loaded?). Not surfaced to the user.`),h;const A=kr().resolve(v,{errorHandling:e.errorHandling,onError:e.onError});if(A.handler){if(r?.isEnabled()&&i&&e.handler==="apiCall"){const O=window.G7Core,k={};O?.state?.get&&(k._global=O.state.get()),n.state&&(k._local=n.state),r.detectStaleClosure?.(i,`${e.handler} → onError`,k,"callback-state-capture",i)}const D={...n,data:{...n.data,error:_}};try{const O={type:"click",handler:A.handler.handler,target:A.handler.target,params:A.handler.params,actions:A.handler.actions};return await this.executeAction(O,D),{success:!1,error:h}}catch(O){return I.error("Error executing error handler:",O),{success:!1,error:h}}}throw i&&r&&r.logAction({id:i,type:e.handler,params:this.sanitizeForDevTools(e.params),resolvedParams:c,startTime:l,endTime:performance.now(),duration:performance.now()-l,status:"error",error:{name:h.name,message:h.message,stack:h.stack}}),h}finally{if(e.handler==="apiCall"&&n.setState&&d){const f=n.state?.loadingActions||{},{[d]:h,...m}=f;n.setState({loadingActions:m})}}}async handleNavigate(e,n,r){let i=e;if(n.query||n.mergeQuery===!0)if(n.mergeQuery===!0)i=this.buildMergedQueryPath(e,n.query??{});else{const c=new URLSearchParams;for(const[f,h]of Object.entries(n.query))if(h!=null&&h!=="")if(Array.isArray(h)){const m=f.endsWith("[]")?f:`${f}[]`;for(const y of h)y!=null&&y!==""&&c.append(m,String(y))}else c.set(f,String(h));const d=c.toString();d&&(i=`${e}?${d}`)}if(I.log("handleNavigate:",{target:e,params:n,finalPath:i,replace:n.replace,windowLocationSearch:window.location.search}),n.replace===!0){const c=window.G7Core;if(c?.updateQueryParams){const d=typeof n.transition_overlay_target=="string"?n.transition_overlay_target:void 0;await c.updateQueryParams(i,d?{transitionOverlayTarget:d}:void 0),I.log("handleNavigate: Used updateQueryParams for replace mode",d?{transitionOverlayTarget:d}:void 0),this.applyScrollOption(n.scroll,n.scrollBehavior,"top");return}I.warn("handleNavigate: G7Core.updateQueryParams not available, falling back to React Router")}const l=this.resolveNavigateFallbackAction(i,n);if(l){I.warn(`handleNavigate: No route matched, falling back to "${l.handler}"`),await this.dispatchAction({type:"click",handler:l.handler,params:l.params},r),this.applyScrollOption(n.scroll,n.scrollBehavior,"top");return}if(!r.navigate)throw new It("Navigate function is not provided in context");r.navigate(i,{replace:n.replace===!0}),this.applyScrollOption(n.scroll,n.scrollBehavior,"top")}resolveNavigateFallbackAction(e,n){const r=n.fallback;if(r===!1||n.replace===!0)return null;const l=window.__templateApp?.getRouter?.();if(!l||typeof l.match!="function"||typeof l.getRoutes=="function"&&l.getRoutes().length===0)return null;const c=e.split("?")[0];return l.match(c)?null:this.resolveNavigateFallback(r,e,n)}resolveNavigateFallback(e,n,r){return e==null?{handler:"openWindow",params:{path:n,target:"_self"}}:typeof e=="string"?{handler:e,params:{path:n}}:typeof e=="object"&&typeof e.handler=="string"?{handler:e.handler,params:{path:n,...e.params||{}}}:(I.warn("resolveNavigateFallback: unrecognized fallback option, using openWindow",e),{handler:"openWindow",params:{path:n,target:"_blank"}})}applyScrollOption(e,n,r){const i=e===void 0?r:e;if(i==="preserve")return;const l=n==="smooth"?"smooth":"instant",c=y=>{if(typeof y!="object"||y===null)return!1;const v=y;return"container"in v||"to"in v||"block"in v||"offset"in v},d=(y,v,S=0)=>{y===window?window.scrollTo({top:v,left:S,behavior:l}):y.scrollTo({top:v,left:S,behavior:l})},f=(y,v,S,_)=>{if(v===window){y.scrollIntoView({behavior:l,block:S}),_&&window.scrollBy({top:-_,left:0,behavior:l});return}const x=v,A=y.getBoundingClientRect(),D=x.getBoundingClientRect(),O=x.scrollTop+(A.top-D.top);let k;S==="center"?k=O-(x.clientHeight-y.clientHeight)/2:S==="end"?k=O-(x.clientHeight-y.clientHeight):k=O,k-=_,x.scrollTo({top:Math.max(0,k),left:0,behavior:l})},h=()=>{window.scrollTo({top:0,left:0,behavior:l});const y=document.getElementById("app")??document.body;if(!y)return;y.querySelectorAll("*").forEach(S=>{if(S.scrollTop===0&&S.scrollLeft===0)return;const _=window.getComputedStyle(S),x=_.overflowY,A=_.overflowX;(x==="auto"||x==="scroll"||A==="auto"||A==="scroll")&&S.scrollTo({top:0,left:0,behavior:l})})},m=()=>{try{if(c(i)){const y=i,v=y.block??"start",S=typeof y.offset=="number"?y.offset:0;let _=window;if(typeof y.container=="string"&&y.container.length>0){const A=document.querySelector(y.container);if(!A){I.warn(`applyScrollOption: container not found: ${y.container}`);return}_=A}const x=y.to??"top";if(x==="top"){_===window?h():d(_,0);return}if(typeof x=="number"){d(_,x-S);return}if(typeof x=="object"&&x!==null&&("x"in x||"y"in x)){const{x:A=0,y:D=0}=x;d(_,D-S,A);return}if(typeof x=="string"&&(x.startsWith("#")||x.startsWith("."))){const A=document.querySelector(x);A?f(A,_,v,S):I.warn(`applyScrollOption: target element not found: ${x}`);return}I.warn('applyScrollOption: invalid "to" value in extended form',x);return}if(i==="top"){h();return}if(typeof i=="number"){window.scrollTo({top:i,left:0,behavior:l});return}if(typeof i=="object"&&i!==null&&("x"in i||"y"in i)){const{x:y=0,y:v=0}=i;window.scrollTo({top:v,left:y,behavior:l});return}if(typeof i=="string"&&(i.startsWith("#")||i.startsWith("."))){const y=document.querySelector(i);y&&y.scrollIntoView({behavior:l,block:"start"});return}}catch(y){I.warn("applyScrollOption: failed to apply scroll",y)}};typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(m):m()}async handleOpenWindow(e,n){let r=e;if(n.query){const l=new URLSearchParams;for(const[d,f]of Object.entries(n.query))f!=null&&f!==""&&l.set(d,String(f));const c=l.toString();c&&(r=`${e}?${c}`)}const i=n.target==="_self"?"_self":"_blank";I.log("handleOpenWindow:",{target:e,params:n,finalPath:r,windowTarget:i}),i==="_self"?window.location.assign(r):window.open(r,"_blank")}async handleNavigateBack(){I.log("handleNavigateBack"),window.history.back()}async handleNavigateForward(){I.log("handleNavigateForward"),window.history.forward()}async handleReplaceUrl(e,n){let r=e;if(n.query||n.mergeQuery===!0)if(n.mergeQuery===!0)r=this.buildMergedQueryPath(e,n.query??{});else{const i=new URLSearchParams;for(const[c,d]of Object.entries(n.query))if(d!=null&&d!=="")if(Array.isArray(d)){const f=c.endsWith("[]")?c:`${c}[]`;for(const h of d)h!=null&&h!==""&&i.append(f,String(h))}else i.set(c,String(d));const l=i.toString();l&&(r=`${e}?${l}`)}I.log("handleReplaceUrl:",{target:e,params:n,finalPath:r}),window.history.replaceState(null,"",r),this.applyScrollOption(n.scroll,n.scrollBehavior,"preserve")}buildMergedQueryPath(e,n){const r=new URLSearchParams(window.location.search);for(const[c,d]of Object.entries(n))if(d==null||d==="")r.delete(c);else if(Array.isArray(d)){const f=c.endsWith("[]")?c:`${c}[]`;r.delete(c),r.delete(f);for(const h of d)h!=null&&h!==""&&r.append(f,String(h))}else r.set(c,String(d));const i=r.toString(),l=e.split("?")[0];return i?`${l}?${i}`:l}async ensureCsrfToken(){try{await fetch("/sanctum/csrf-cookie",{credentials:"include"})}catch(e){throw new It("Failed to fetch CSRF token",void 0,e instanceof Error?e:void 0)}}getCsrfTokenFromCookie(){const r=`; ${document.cookie}`.split("; XSRF-TOKEN=");if(r.length===2){const i=r.pop()?.split(";").shift();return i?decodeURIComponent(i):null}return null}buildQueryString(e){const n=new URLSearchParams;for(const[r,i]of Object.entries(e))if(!(i==null||i===""))if(Array.isArray(i))for(const l of i)l!=null&&l!==""&&n.append(`${r}[]`,String(l));else typeof i=="object"?n.append(r,JSON.stringify(i)):n.append(r,String(i));return n.toString()}async handleEnsureIdentityVerified(e){const n=typeof e.purpose=="string"?e.purpose:"sensitive_action",r=e.target&&typeof e.target=="object"?e.target:void 0;return await At.handle({success:!1,error_code:"identity_verification_required",message:"",verification:{policy_key:e.policy_key??"",purpose:n,provider_id:e.provider_id??null,render_hint:e.render_hint??null,return_request:null}},void 0,r)!==null}handleResolveIdentityChallenge(e){const n=typeof e.result=="string"?e.result:"cancelled";let r;switch(n){case"verified":{const i=typeof e.token=="string"?e.token:"";if(!i){I.warn("resolveIdentityChallenge: result=verified 인데 token 이 비어있습니다. failed 로 강등합니다."),r={status:"failed",failureCode:"MISSING_TOKEN"};break}r={status:"verified",token:i,providerData:e.providerData&&typeof e.providerData=="object"?e.providerData:void 0};break}case"pending":{const i=typeof e.pollUrl=="string"?e.pollUrl:"",l=typeof e.expiresAt=="string"?e.expiresAt:"";if(!i||!l){I.warn("resolveIdentityChallenge: result=pending 인데 pollUrl/expiresAt 누락 — failed 로 강등합니다."),r={status:"failed",failureCode:"MALFORMED_PENDING"};break}r={status:"pending",pollUrl:i,pollIntervalMs:typeof e.pollIntervalMs=="number"?e.pollIntervalMs:void 0,expiresAt:l};break}case"failed":r={status:"failed",failureCode:typeof e.failureCode=="string"?e.failureCode:"UNKNOWN",reason:typeof e.reason=="string"?e.reason:void 0};break;case"cancelled":default:r={status:"cancelled"};break}return At.resolveDeferred(r),!0}async handleApiCall(e,n,r,i="none",l){const{method:c="GET",body:d,headers:f,contentType:h}=n;c!=="GET"&&c!=="HEAD"&&await this.ensureCsrfToken();const m=this.getCsrfTokenFromCookie();let y={};if(i==="required"||i==="optional"){const W=Yn().getToken();W&&(y={Authorization:`Bearer ${W}`})}let v=e;const S=n.query||(c==="GET"?d:null);if(S&&typeof S=="object"){const z=this.buildQueryString(S);if(z){const W=e.includes("?")?"&":"?";v=`${e}${W}${z}`}}const _=window.G7Core?.state?.getGlobal?.()||r.state?._global||{},x=window.G7Core?.state?.getLocal?.()||r.state?._local||{},A={_global:_,_local:x},D=this.getMatchingGlobalHeaders(e,A),O={};if(typeof window<"u"){const z=localStorage.getItem("g7_locale");z&&(O["Accept-Language"]=z)}const k=h==="multipart/form-data",L={method:c,headers:{...k?{}:{"Content-Type":"application/json"},Accept:"application/json",...O,...m&&{"X-XSRF-TOKEN":m},...y,...D,...f},credentials:"include"};if(d&&c!=="GET")if(k){const z=new FormData;for(const[W,de]of Object.entries(d))de instanceof File||de instanceof Blob?z.append(W,de):de!=null&&z.append(W,typeof de=="object"?JSON.stringify(de):String(de));L.body=z}else L.body=JSON.stringify(d);const B=Jn();let q=null;B?.isEnabled()&&(q=B.trackRequest(v,c));try{let z=await fetch(v,L),W;try{W=await z.json()}catch{W=null}if(At.isIdentityRequired(z.status,W)){const de=await At.handle(W,{body:L.body,headers:L.headers,credentials:L.credentials},l);if(de){z=de;try{W=await z.json()}catch{W=null}}}if(q&&B?.isEnabled()&&(B.completeRequest(q,z.status,W),q=null),!z.ok){const de=W||{},_e=new Error(de.message||`API call failed: ${z.statusText}`);throw _e.response=de,_e.status=z.status,_e.statusText=z.statusText,new It(de.message||`API call failed: ${z.statusText}`,void 0,_e)}return W}catch(z){throw q&&B?.isEnabled()&&B.failRequest(q,z instanceof Error?z.message:String(z)),z}}async handleLogin(e,n,r){const{body:i}=n;if(!i||!i.email||!i.password)throw new It("Login requires email and password in body params");const l=this.resolveAuthType(e),c=l==="admin"?"/api/auth/admin/login":"/api/auth/login",d=Xn.getInstance();try{const f=await d.login(l,{email:i.email,password:i.password},this.buildAuthRequestOptions(c,r));return f.status==="two_factor_required"?{user:null,two_factor_required:!0,challenge_id:f.challenge.challengeId,provider_id:f.challenge.providerId,expires_at:f.challenge.expiresAt}:{user:f.user,two_factor_required:!1}}catch(f){throw this.toLoginActionError(f,"Login failed")}}async handleLoginTwoFactor(e,n,r){const{body:i}=n;if(!i||!i.challenge_id||!i.code)throw new It("loginTwoFactor requires challenge_id and code in body params");const l=this.resolveAuthType(e),c=l==="admin"?"/api/auth/admin/login/two-factor":"/api/auth/login/two-factor";try{return{user:await Xn.getInstance().completeTwoFactor(l,{challengeId:String(i.challenge_id),code:String(i.code)},this.buildAuthRequestOptions(c,r))}}catch(d){throw this.toLoginActionError(d,"Login failed")}}async handleLoginTwoFactorResend(e,n,r){const{body:i}=n;if(!i||!i.challenge_id)throw new It("loginTwoFactorResend requires challenge_id in body params");const l=this.resolveAuthType(e),c=l==="admin"?"/api/auth/admin/login/two-factor/resend":"/api/auth/login/two-factor/resend";try{const d=await Xn.getInstance().resendTwoFactor(l,{challengeId:String(i.challenge_id)},this.buildAuthRequestOptions(c,r));return{two_factor_required:!0,challenge_id:d.challengeId,provider_id:d.providerId,expires_at:d.expiresAt}}catch(d){throw this.toLoginActionError(d,"Resend failed")}}resolveAuthType(e){return e==="user"?"user":"admin"}buildAuthRequestOptions(e,n){const r=window.G7Core?.state?.getGlobal?.()||n.state?._global||{},i=window.G7Core?.state?.getLocal?.()||n.state?._local||{},l={_global:r,_local:i},c=this.getMatchingGlobalHeaders(e,l);return Object.keys(c).length>0?{headers:c}:void 0}toLoginActionError(e,n){const r=e?.message||n,i=new Error(r);return i.response=e?.response?.data||{},i.status=e?.status||e?.response?.status||500,i.code=e?.code,new It(r,void 0,i)}async handleLogout(e,n){await Xn.getInstance().logout()}async handleSetState(e,n){I.log("[handleSetState] START, params:",e);const{target:r="component",scope:i,merge:l,__render:c,...d}=e,f=Jn(),h=window.G7Core;if(typeof r=="string"&&(r.startsWith("$parent.")||r.startsWith("$root.")))return this.handleParentScopeSetState(r,d,l,n);const m=n.state&&Object.keys(n.state).length>0?n.state:h?.state?.get()||{},y=r==="global"?"_global":r.startsWith("_local.")?r:"_local",v=y==="_global"?m._global:y.startsWith("_local.")?this.getNestedProperty(m._local||{},y.slice(7)):m._local,S=f?.isEnabled()?f.startStateChange(y,v,d,{actionId:n.actionId,handlerType:"setState",source:`target=${r}`}):void 0,_=l==="replace"?"replace":l==="shallow"?"shallow":"deep",x=_!=="deep"?{...d,__mergeMode:_,...S?{__setStateId:S}:{}}:{...d,...S?{__setStateId:S}:{}};if(r==="global"){if(!this.globalStateUpdater){I.warn("Global state updater is not set"),S&&f&&f.completeStateChange(S);return}const A=h?.state?.get()||{},{__setStateId:D,__mergeMode:O,...k}=x,L=_==="deep"?this.deepMergeWithState(k,A):k,B={...L,...S?{__setStateId:S}:{},..._!=="deep"?{__mergeMode:_}:{}};return I.log("setState global:",B),this.globalStateUpdater(B,{render:c}),S&&f&&setTimeout(()=>f.completeStateChange(S),0),{__target:"global",..._!=="deep"?{__mergeMode:_}:{},...L}}else if(r==="isolated"){const A=n.isolatedContext;if(A){const{__mergeMode:D,__setStateId:O,...k}=x;return A.mergeState(k,_),I.log("[handleSetState] isolated state updated:",k,"mergeMode:",_),S&&f&&setTimeout(()=>f.completeStateChange(S),0),{__target:"isolated",...k}}else if(I.warn('[handleSetState] isolated target used but no IsolatedStateContext found. Make sure the component has "isolatedState" attribute. Falling back to local state.'),n.setState){const O=window.__g7PendingLocalState||n.state||{},k=_==="deep"?this.deepMergeWithState(x,O):x;return this.writeLocalState(n,k),S&&f&&setTimeout(()=>f.completeStateChange(S),0),k}else throw S&&f&&f.completeStateChange(S),new It("isolated target used but no IsolatedStateContext found and no setState function in context")}else if(r==="local"||r==="component"||r==="_local"){if(i==="parent"||i==="root"){const D=window.__g7LayoutContextStack||[];if(D.length>0){const O=i==="parent"?D[D.length-1]:D[0];if(O?.setState){const{__mergeMode:k,__setStateId:L,...B}=x,q=_==="deep"?this.deepMergeWithState(B,O.state||{}):B;return I.log(`[handleSetState] scope=${i}: 타겟 컨텍스트에 상태 업데이트`,q),O.setState(q),S&&f&&setTimeout(()=>f.completeStateChange(S),0),q}}I.warn(`[handleSetState] scope=${i}: 레이아웃 컨텍스트 스택이 비어있습니다. current로 폴백합니다.`)}const A=n.setState&&!n._isDispatchFallbackContext;if(I.log("[handleSetState] isRealComponentContext:",A,"context.setState:",!!n.setState,"_isDispatchFallbackContext:",n._isDispatchFallbackContext),A){I.log("[handleSetState] Using COMPONENT setState path"),I.log("[handleSetState] resolvedPayload:",x),I.log("[handleSetState] context.state:",n.state),I.log("[handleSetState] mergeMode:",_);const O=window.__g7PendingLocalState||n.state||{},k=_==="deep"?this.deepMergeWithState(x,{}):x;I.log("[handleSetState] convertedPayload (변경 필드만, dot notation 변환):",k),n.setState(k);const L=_==="deep"?this.deepMergeWithState(x,O):_==="shallow"?{...n.state||{},...x}:x,{__mergeMode:B,__setStateId:q,...z}=L;window.__g7PendingLocalState=z,I.log("[handleSetState] __g7PendingLocalState updated:",z);const W=(window.__g7LayoutContextStack||[]).length;let de;if(this.globalStateUpdater){const ze=W===0?window.__templateApp?.getGlobalState?.()?._local:void 0;if(_!=="replace"&&!!ze&&typeof ze=="object"&&!Array.isArray(ze)){const ue=_==="deep"?this.deepMergeWithState(x,ze):{...ze,...x},{__mergeMode:De,__setStateId:ee,...me}=ue;de=me}else _!=="replace"&&I.log("[handleSetState] canonical _local 미사용 → 전체 스냅샷 폴백",{modalDepth:W,hasTemplateApp:!!window.__templateApp});const Q=de?Mo(de,z):z;this.globalStateUpdater({_local:Q},{render:!1}),I.log("[handleSetState] _global._local synced (render:false):",Q)}const{__mergeMode:_e,__setStateId:Se,...je}=x;if(_==="replace")window.__g7ForcedLocalFields=je;else{const ze=window.__g7ForcedLocalFields||{};window.__g7ForcedLocalFields=this.deepMergeWithState(je,ze)}return I.log("[handleSetState] __g7ForcedLocalFields updated:",je),S&&f&&setTimeout(()=>f.completeStateChange(S),0),{__target:"local",...de?Mo(de,z):L,..._!=="deep"?{__mergeMode:_}:{}}}else if(this.globalStateUpdater){I.log("[handleSetState] Using GLOBAL STATE UPDATER path for _local");const O=window.__g7PendingLocalState||m._local||{};I.log("[handleSetState] currentLocal (with pending):",O);const k=_==="deep"?this.deepMergeWithState(x,O):x;return I.log("[handleSetState] finalLocal (merged):",k),this.globalStateUpdater({_local:k},{render:c}),window.__g7PendingLocalState=k,I.log("[handleSetState] __g7PendingLocalState updated for globalStateUpdater path"),S&&f&&setTimeout(()=>f.completeStateChange(S),0),{__target:"local",...k}}else throw S&&f&&f.completeStateChange(S),new It("setState function is not provided in context and globalStateUpdater is not set")}else if(r.startsWith("_local.")){const A=r.slice(7),{__mergeMode:D,__setStateId:O,...k}=x,L=k.value!==void 0?k.value:Object.values(k)[0];if(n.setState){const q=window.__g7PendingLocalState||n.state||{},z=this.createNestedUpdate(A,L,q),W={...q,...z};if(n.setState(z),this.globalStateUpdater&&i!=="parent"&&i!=="root"){const de=window.__templateApp?.getGlobalState?.()?._local,_e=de&&typeof de=="object"?{...de,...z}:W;this.globalStateUpdater({_local:_e},{render:!1}),I.log("[handleSetState] _global._local synced for dot notation (render:false):",_e)}return S&&f&&setTimeout(()=>f.completeStateChange(S),0),W}else throw S&&f&&f.completeStateChange(S),new It("setState function is not provided in context")}else{if(!n.setState)throw S&&f&&f.completeStateChange(S),new It("setState function is not provided in context");const D=window.__g7PendingLocalState||n.state||{},O=_==="deep"?this.deepMergeWithState(x,D):x;return this.writeLocalState(n,O,void 0,{scope:i}),S&&f&&setTimeout(()=>f.completeStateChange(S),0),O}}async handleParentScopeSetState(e,n,r,i){const l=Jn(),c=window.G7Core,d=r==="replace"?"replace":r==="shallow"?"shallow":"deep",f=e.startsWith("$parent."),h=f?"$parent.":"$root.",m=e.slice(h.length);let y,v;if(m==="_local"||m==="_global")y=m,v=void 0;else if(m.startsWith("_local."))y="_local",v=m.slice(7);else if(m.startsWith("_global."))y="_global",v=m.slice(8);else{I.warn(`[handleParentScopeSetState] 지원하지 않는 타겟 형식: ${e}. _local 또는 _global으로 시작해야 합니다.`);return}const S=window.__g7LayoutContextStack||[];if(S.length===0){I.warn(`[handleParentScopeSetState] 레이아웃 컨텍스트 스택이 비어있습니다. target=${e}`);return}const _=f?S[S.length-1]:S[0];if(!_){I.warn(`[handleParentScopeSetState] 타겟 컨텍스트를 찾을 수 없습니다. target=${e}`);return}const x=y==="_global"?_.state?._global:_.state?._local,A=l?.isEnabled()?l.startStateChange(e,x,n,{actionId:i.actionId,handlerType:"setState",source:`target=${e}`}):void 0,{__mergeMode:D,__setStateId:O,...k}=n;if(y==="_global"){if(!this.globalStateUpdater){I.warn("[handleParentScopeSetState] globalStateUpdater가 설정되지 않았습니다."),A&&l&&l.completeStateChange(A);return}const L=c?.state?.get()||{};if(v){const B=k.value!==void 0?k.value:Object.values(k)[0],q=this.createNestedUpdate(v,B,L),z={...L,...q};I.log(`[handleParentScopeSetState] ${e}: 전역 상태 중첩 경로 업데이트`,z),this.globalStateUpdater(z)}else{const B=d==="deep"?this.deepMergeWithState(k,L):k;I.log(`[handleParentScopeSetState] ${e}: 전역 상태 업데이트 (mergeMode=${d})`,B),this.globalStateUpdater(d!=="deep"?{...B,__mergeMode:d}:B)}return A&&l&&setTimeout(()=>l.completeStateChange(A),0),{__target:e,...k}}else{if(!_.setState){I.warn(`[handleParentScopeSetState] 타겟 컨텍스트에 setState가 없습니다. target=${e}`),A&&l&&l.completeStateChange(A);return}const L=_.state||{};if(v){const B=k.value!==void 0?k.value:Object.values(k)[0],q=this.createNestedUpdate(v,B,L),z={...L,...q};return I.log(`[handleParentScopeSetState] ${e}: 로컬 상태 중첩 경로 업데이트`,q),_.setState(q),_.state=z,_.dataContext&&(_.dataContext._local=z),Df(),A&&l&&setTimeout(()=>l.completeStateChange(A),0),z}else{const B=d!=="deep"?{...k,__mergeMode:d}:k,q=d==="replace"?k:d==="shallow"?{...L,...k}:this.deepMergeWithState(k,L);return I.log(`[handleParentScopeSetState] ${e}: 로컬 상태 업데이트 (mergeMode=${d})`,q),_.setState(B),_.state=q,_.dataContext&&(_.dataContext._local=q),Df(),A&&l&&setTimeout(()=>l.completeStateChange(A),0),q}}}deepMergeWithState(e,n){const r=["errors"];let i=e;if("..."in e){const c=e["..."];if(c&&typeof c=="object"&&!Array.isArray(c)){const{"...":d,...f}=e;i={...c,...f}}else{const{"...":d,...f}=e;i=f}}const l={...n};for(const[c,d]of Object.entries(i)){if(r.includes(c)){l[c]=d;continue}if(c.includes(".")&&c!=="..."){const f=this.createNestedUpdate(c,d,l);this.deepMergeInto(l,f,l);continue}if(d!==null&&typeof d=="object"&&!Array.isArray(d)&&Object.getPrototypeOf(d)!==Object.prototype&&Object.getPrototypeOf(d)!==null){l[c]=d;continue}d!==null&&typeof d=="object"&&!Array.isArray(d)&&n[c]!==null&&typeof n[c]=="object"&&!Array.isArray(n[c])?l[c]=this.deepMergeWithState(d,n[c]):l[c]=d}return l}deepMergeInto(e,n,r){for(const[i,l]of Object.entries(n)){if(l===null){e[i]=l;continue}if(e[i]===null){e[i]=l;continue}typeof l=="object"&&!Array.isArray(l)&&e[i]!==void 0&&e[i]!==null&&typeof e[i]=="object"&&!Array.isArray(e[i])?(e[i]===r[i]&&(e[i]={...e[i]}),this.deepMergeInto(e[i],l,r[i]||{})):typeof l=="object"&&!Array.isArray(l)&&e[i]===void 0&&r[i]!==null&&typeof r[i]=="object"&&!Array.isArray(r[i])?e[i]={...r[i],...l}:e[i]=l}}createNestedUpdate(e,n,r){const i=e.split(".");if(i.length===1)return{[i[0]]:n};const l={};let c=l,d=r;for(let f=0;f<i.length-1;f++){const h=i[f],m=d?.[h],y=m!=null&&typeof m=="object"&&!Array.isArray(m);y?c[h]={...m}:c[h]={},c=c[h],d=y?m:{}}return c[i[i.length-1]]=n,l}buildNestedUpdate(e,n){const r=e.split(".");if(r.length===1)return{[r[0]]:n};const i={};let l=i;for(let c=0;c<r.length-1;c++)l[r[c]]={},l=l[r[c]];return l[r[r.length-1]]=n,i}async handleSetError(e,n,r){let i=e;i=this.resolveValue(i,r.data),this.translationEngine&&this.translationContext&&i.startsWith("$t:")&&(i=this.translationEngine.resolveTranslations(i,this.translationContext,r.data));const l=n?.stateTarget||"local";l==="isolated"&&r.isolatedContext?(r.isolatedContext.mergeState({apiError:i}),I.log("[handleSetError] Error set to isolated state:",i)):l==="global"&&this.globalStateUpdater?(this.globalStateUpdater({apiError:i}),I.log("[handleSetError] Error set to global state:",i)):r.setState?(this.writeLocalState(r,{apiError:i}),I.log("[handleSetError] Error set to local state:",i)):I.warn("[handleSetError] Cannot set error: no state updater available")}async handleOpenModal(e,n){if(!this.globalStateUpdater){I.warn("Global state updater is not set for openModal");return}const r=n.data?._global?.modalStack||[];if(r.includes(e)){I.warn(`Modal "${e}" is already open`);return}const i=window.G7Core,l=n.setState&&n.state!==void 0,c=l?void 0:i?.state?.getLocal?.()||{},d=!l&&c!==void 0&&this.globalStateUpdater;if(l||d){const m=window.__g7LayoutContextStack||[],y=l?n.state:c,v=l?n.setState:S=>{this.globalStateUpdater({_local:S})};m.push({state:y,setState:v,dataContext:{_local:y||n.data?._local,_global:l?n.data?._global:n.data?._global||i?.state?.get?.(),_computed:n.data?._computed}}),window.__g7LayoutContextStack=m,I.log(`[handleOpenModal] 레이아웃 컨텍스트 스택에 push, 스택 크기: ${m.length}, state:`,y,l?"(direct)":"(fallback via G7Core)")}else I.warn(`[handleOpenModal] 컨텍스트 스택에 push 실패 - setState: ${!!n.setState}, state: ${n.state!==void 0}, G7Core: ${!!i?.state?.getLocal}`);const f=[...r,e];this.globalStateUpdater({modalStack:f,activeModal:e});const h=Jn();if(h?.isEnabled()){const m=r.length>0?r[r.length-1]:void 0;h.trackModalOpen?.({modalId:e,modalName:e,scopeType:"isolated",parentModalId:m,initialState:n.state?{...n.state}:{}})}}async handleCloseModal(e){if(!this.globalStateUpdater){I.warn("Global state updater is not set for closeModal");return}const n=e?.data?._global?.modalStack||[],r=n.length>0?n[n.length-1]:null,i=n.slice(0,-1),l=i.length>0?i[i.length-1]:null,c=window.__g7LayoutContextStack||[];if(c.length>0){const d=c[c.length-1];d&&(d.dataContext=void 0),c.pop(),window.__g7LayoutContextStack=c,I.log(`[handleCloseModal] 레이아웃 컨텍스트 스택에서 pop, 스택 크기: ${c.length}`)}if(r){const d=Jn();d?.isEnabled()&&d.trackModalClose?.(r,e?.state)}this.globalStateUpdater({modalStack:i,activeModal:l})}async handleShowAlert(e,n){let r=e;this.translationEngine&&this.translationContext&&e.startsWith("$t:")&&(r=this.translationEngine.resolveTranslations(e,this.translationContext,n.data)),alert(r)}async handleToast(e,n){const{type:r="info",message:i,icon:l,duration:c}=e;if(r==="error"){const f=n.data?.error;if((f?.error_code==="identity_verification_required"||f?.data?.error_code==="identity_verification_required")&&At.consumeDomainNoticeShown()){I.log("[Toast] IDV 도메인 안내 표출됨 — 중복 가드 토스트 1건 skip");return}}let d=i;if(this.translationEngine&&this.translationContext&&i?.startsWith("$t:")&&(d=this.translationEngine.resolveTranslations(i,this.translationContext,n.data)),this.globalStateUpdater){const h={id:`toast_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,type:r,message:d,...l&&{icon:l},...c&&{duration:c}},S=[...window.G7Core?.state?.get()?.toasts||[],h];this.globalStateUpdater({toasts:S})}else I.log(`[Toast ${r}] ${d}`)}async handleSwitch(e,n){const{cases:r}=e;if(!r){I.warn("switch handler requires cases property");return}const i=this.resolveParams(e.params,n.data);let l;if(i?.value!==void 0?(l=i.value,I.log("switch handler: using params.value as case key:",l)):(l=n.data?.$args?.[0],I.log("switch handler: using $args[0] as case key:",l)),l==null){if(r.default)return I.log("switch handler: case key is undefined, using default case"),await this.executeAction(r.default,n);I.warn("switch handler: case key is not defined and no default case");return}const c=String(l);let d=r[c];if(!d&&r.default&&(I.log(`switch handler: no case found for key "${c}", using default case`),d=r.default),!d){I.warn(`switch handler: no case found for key "${c}" and no default case`);return}return await this.executeAction(d,n)}async handleConditions(e,n){const{conditions:r}=e;if(!r||!Array.isArray(r)){I.warn("conditions handler requires conditions array");return}const i=n.data||{},l=um(r,i,this.bindingEngine);if(!l.matched){I.log("conditions handler: no matching branch found");return}const c=r[l.branchIndex];if(I.log(`conditions handler: matched branch ${l.branchIndex}`),!c.then){I.warn('conditions handler: matched branch has no "then" action');return}return Array.isArray(c.then)?await this.handleSequence({...e,actions:c.then},n):await this.executeAction(c.then,n)}handleStartInterval(e,n){const r=typeof e.id=="string"?e.id:"",i=Number(e.intervalMs??1e3),l=Array.isArray(e.actions)?e.actions:[];if(r===""||!l.length||i<=0)return I.warn("startInterval requires non-empty id, positive intervalMs, and actions array"),{success:!1};const c=this.intervals.get(r);c&&(clearInterval(c),this.intervals.delete(r));const d=setInterval(()=>{for(const f of l)this.executeAction(f,n).catch(h=>{I.error(`[startInterval:${r}] tick action failed`,h)})},i);return this.intervals.set(r,d),{success:!0,id:r}}handleStopInterval(e){const n=typeof e.id=="string"?e.id:"";if(n==="")return I.warn("stopInterval requires id parameter"),{success:!1};const r=this.intervals.get(n);return r&&(clearInterval(r),this.intervals.delete(n)),{success:!0,id:n}}stopAllIntervals(){for(const e of this.intervals.values())clearInterval(e);this.intervals.clear()}async handleSequence(e,n){const r=e.actions||e.params?.actions;if(!r||!Array.isArray(r)||r.length===0)return I.warn("sequence handler requires non-empty actions array"),[];const i=Jn(),l=i?.isEnabled()&&i.startSequenceExecution?.({eventType:e.type})||"";window.__g7SequenceLocalSync=void 0;const c=[];let d,f=n.state?{...n.state}:{},h=n.isolatedContext?.state?{...n.isolatedContext.state}:{},m=n.data?._computed||{};const y=window.G7Core,v=()=>({_global:y?.state?.get()||{},_local:{...f},_isolated:Object.keys(h).length>0?{...h}:void 0});for(let S=0;S<r.length;S++){const _=r[S],x=Date.now();l&&i?.isEnabled()&&i.captureSequenceActionBefore?.(l,S,_.handler||"unknown",_.params||{},v());const A={...n,state:f,data:{...n.data,_local:f,_computed:m,$computed:m,$prev:d,$results:[...c],_isolated:h},isolatedContext:n.isolatedContext?{...n.isolatedContext,state:h}:null};try{const D=await this.executeAction(_,A);if(d=D.data,c.push(D.data),_.handler==="setState"&&D.data!==void 0){if(D.data.__target==="global"){const{__target:k,__mergeMode:L,...B}=D.data;L==="replace"?f={...f,_global:B}:f={...f,_global:{...f._global||{},...B}},I.log("[handleSequence] global state synchronized (mergeMode=%s):",L||"deep",f._global)}else if(D.data.__target==="isolated"){const{__target:k,__mergeMode:L,...B}=D.data;L==="replace"?h=B:h={...h,...B},I.log("[handleSequence] isolated state synchronized (mergeMode=%s):",L||"deep",h)}else if(D.data.__target==="local"){const{__target:k,__mergeMode:L,__setStateId:B,...q}=D.data;L==="replace"?f=q:f={...f,...q},I.log("[handleSequence] local state synchronized (mergeMode=%s):",L||"deep",f)}else f=D.data,I.log("[handleSequence] state synchronized (legacy):",f);const O=n.data?._computedDefinitions;if(O&&Object.keys(O).length>0){const k={},L={...n.data,_local:f,_computed:k,$computed:k,_isolated:h};for(const[B,q]of Object.entries(O))if(typeof q=="string"){const z=q.trim();if(z.startsWith("{{")&&z.endsWith("}}"))try{const W=z.slice(2,-2).trim();k[B]=jn(W)?this.bindingEngine.evaluatePipeExpression(W,L,{skipCache:!0}):this.bindingEngine.evaluateExpression(W,L,{skipCache:!0})}catch{k[B]=m[B]}}m=k,I.log("[handleSequence] _computed recalculated after setState:",m)}}if(_.handler!=="setState"){const O=window.__g7SequenceLocalSync;if(O&&O!==f){f=O,window.__g7SequenceLocalSync=void 0,I.log("[handleSequence] currentState synchronized from __g7SequenceLocalSync after custom handler:",_.handler);const k=n.data?._computedDefinitions;if(k&&Object.keys(k).length>0){const L={},B={...n.data,_local:f,_computed:L,$computed:L,_isolated:h};for(const[q,z]of Object.entries(k))if(typeof z=="string"){const W=z.trim();if(W.startsWith("{{")&&W.endsWith("}}"))try{const de=W.slice(2,-2).trim();L[q]=jn(de)?this.bindingEngine.evaluatePipeExpression(de,B,{skipCache:!0}):this.bindingEngine.evaluateExpression(de,B,{skipCache:!0})}catch{L[q]=m[q]}}m=L,I.log("[handleSequence] _computed recalculated after custom handler:",m)}}}l&&i?.isEnabled()&&i.captureSequenceActionAfter?.(l,S,v(),Date.now()-x,D.data)}catch(D){throw l&&i?.isEnabled()&&(i.captureSequenceActionAfter?.(l,S,v(),Date.now()-x,void 0,D),i.endSequenceExecution?.(l,D)),I.error(`sequence handler: action[${S}] failed:`,D),D}}return window.__g7SequenceLocalSync=void 0,l&&i?.isEnabled()&&i.endSequenceExecution?.(l),c}async handleParallel(e,n){const r=e.actions||e.params?.actions;if(!r||!Array.isArray(r)||r.length===0)return I.warn("parallel handler requires non-empty actions array"),[];I.log(`parallel handler: executing ${r.length} actions in parallel`);const i=n.isolatedContext?{...n.isolatedContext,state:{...n.isolatedContext.state}}:null,l=r.map((f,h)=>{const m={...n,isolatedContext:i};return this.executeAction(f,m).catch(y=>{throw I.error(`parallel handler: action[${h}] failed:`,y),y})}),c=await Promise.allSettled(l),d=c.filter(f=>f.status==="rejected").length;return d>0&&I.warn(`parallel handler: ${d}/${r.length} actions failed`),c}assertAllowedExtensionAssetUrl(e,n,r){if(!Io(e,bs()))throw I.error(`Blocked untrusted ${n} asset url: ${e}`),new It(`Blocked untrusted ${n} url (same-origin path or declared trusted host required): ${e}`,r)}async handleLoadScript(e,n,r){const{src:i,id:l,async:c=!0,defer:d=!1}=e;if(!i)throw new It('loadScript handler requires "src" parameter',n);if(!Io(i,bs()))throw I.warn(`loadScript: blocked untrusted script src (same-origin path or declared trusted host required): ${i}`),new It(`Blocked untrusted script src (same-origin path or declared trusted host required): ${i}`,n);const f=l||`script_${i.replace(/[^a-zA-Z0-9]/g,"_")}`;if(cn.loadedScripts.has(f))return I.log(`loadScript: script already loaded, skipping: ${f}`),n.onLoad&&await this.executeAction(n.onLoad,r),!0;const h=cn.loadingScripts.get(f);if(h)return I.log(`loadScript: joining in-flight load: ${f}`),await h,n.onLoad&&await this.executeAction(n.onLoad,r),!0;if(document.getElementById(f))return I.log(`loadScript: script element already exists: ${f}`),cn.loadedScripts.add(f),n.onLoad&&await this.executeAction(n.onLoad,r),!0;I.log(`loadScript: loading script: ${i}`);const y=document.createElement("script");if(y.id=f,y.src=i,y.async=c,y.defer=d,y.hasAttribute("data-gdpr-blocked-src"))return I.warn(`loadScript: script blocked by consent manager (not loaded): ${i}`),!1;const v=new Promise((S,_)=>{y.onload=()=>{I.log(`loadScript: script loaded successfully: ${f}`),cn.loadedScripts.add(f),cn.loadingScripts.delete(f),S()},y.onerror=x=>{I.error(`loadScript: failed to load script: ${i}`,x),cn.loadingScripts.delete(f),_(new It(`Failed to load script: ${i}`,n))},document.head.appendChild(y)});if(v.catch(()=>{}),cn.loadingScripts.set(f,v),await v,n.onLoad)try{await this.executeAction(n.onLoad,r)}catch(S){I.error("loadScript: onLoad action failed:",S)}return!0}async handleCallExternal(e,n,r){const i=e.constructor,l=e.args||{},c=e.method,d=e.methodArgs||[],f=e.callbackEvent,h=e.embedTarget,m=e.callbackSetState,y=e.callbackAction;if(!i)throw new It('callExternal handler requires "constructor" parameter',n);const v=this.getNestedProperty(window,i);if(!v||typeof v!="function")throw new It(`Constructor not found or not a function: ${i}. Make sure the script is loaded first using loadScript handler.`,n);this.assertCallableExternalConstructor(v,i,n),I.log(`callExternal: calling constructor ${i}`);const S={...l};for(const[x,A]of Object.entries(l))A===!0&&(S[x]=D=>{if(I.log(`callExternal: callback triggered for ${x}`,D),f&&typeof window<"u"&&window.G7Core?.componentEvent&&window.G7Core.componentEvent.emit(f,D),m&&r.setState){const O=B=>{const q={};for(const[z,W]of Object.entries(B)){if(cn.isPrototypePathSegment(z)){I.warn(`callExternal: skipped prototype-polluting mapping key: ${z}`);continue}typeof W=="string"?q[z]=this.getNestedProperty(D,W):typeof W=="object"&&W!==null&&(q[z]=O(W))}return q},k=O(m);I.log("callExternal: callbackSetState mapping result",k);const L=this.deepMergeWithState(k,r.state||{});I.log("callExternal: merged with existing state",L),this.writeLocalState(r,L)}else f&&r.setState&&this.writeLocalState(r,{[`${f.replace(/:/g,"_")}_result`]:D});if(y){const O={...r,data:{...r.data,$event:D}},k=Array.isArray(y)?y:[y];for(const L of k)try{this.executeAction(L,O)}catch(B){I.error("callExternal: callbackAction failed:",B)}}});const _=new v(S);if(c&&typeof _[c]=="function"){if(I.log(`callExternal: calling method ${c}`),c==="embed"&&h){const x=document.querySelector(h);if(x)return _[c](x,...d);throw new It(`Embed target element not found: ${h}`,n)}return _[c](...d)}return _}async handleCallExternalEmbed(e,n,r){const i=e.constructor,l=e.args||{},c=e.callbackSetState,d=e.callbackEvent,f=e.layerClassName,h=e.callbackAction;if(!i)throw new It('callExternalEmbed handler requires "constructor" parameter',n);const m=this.getNestedProperty(window,i);if(!m||typeof m!="function")throw new It(`Constructor not found or not a function: ${i}. Make sure the script is loaded first.`,n);this.assertCallableExternalConstructor(m,i,n),I.log(`callExternalEmbed: creating layer for ${i}`);const{layer:y,closeLayer:v}=this.createEmbedLayer(f),S={...l};for(const[x,A]of Object.entries(l))A===!0&&(S[x]=D=>{if(I.log(`callExternalEmbed: callback triggered for ${x}`,D),v(),d&&typeof window<"u"&&window.G7Core?.componentEvent&&window.G7Core.componentEvent.emit(d,D),c&&r.setState){const O=B=>{const q={};for(const[z,W]of Object.entries(B)){if(cn.isPrototypePathSegment(z)){I.warn(`callExternal: skipped prototype-polluting mapping key: ${z}`);continue}typeof W=="string"?q[z]=this.getNestedProperty(D,W):typeof W=="object"&&W!==null&&(q[z]=O(W))}return q},k=O(c);I.log("callExternalEmbed: callbackSetState mapping result",k);const L=this.deepMergeWithState(k,r.state||{});I.log("callExternalEmbed: merged with existing state",L),this.writeLocalState(r,L)}if(h){const O={...r,data:{...r.data,$event:D}},k=Array.isArray(h)?h:[h];for(const L of k)try{this.executeAction(L,O)}catch(B){I.error("callExternalEmbed: callbackAction failed:",B)}}});const _=new m(S);if(typeof _.embed=="function")_.embed(y),I.log("callExternalEmbed: embedded in layer");else throw v(),new It(`Constructor ${i} does not have embed method`,n);return _}isImeComposing(e){return e?.isComposing===!0||e?.keyCode===229}createEmbedLayer(e){const n=document.createElement("div");n.id="g7-embed-overlay",n.style.cssText=`
position: fixed;
inset: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
`;const r=document.createElement("div");r.id="g7-embed-layer",r.style.cssText=`
position: relative;
background: white;
border-radius: 8px;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
max-width: 90vw;
max-height: 90vh;
overflow: hidden;
`,e&&(r.className=e);const i=document.createElement("button");i.type="button",i.innerHTML="×",i.style.cssText=`
position: absolute;
top: 8px;
right: 8px;
width: 32px;
height: 32px;
border: none;
background: rgba(0, 0, 0, 0.1);
border-radius: 50%;
font-size: 20px;
cursor: pointer;
z-index: 10;
display: flex;
align-items: center;
justify-content: center;
color: #666;
transition: background-color 0.2s;
`,i.onmouseenter=()=>{i.style.backgroundColor="rgba(0, 0, 0, 0.2)"},i.onmouseleave=()=>{i.style.backgroundColor="rgba(0, 0, 0, 0.1)"};const l=()=>{n.parentNode&&n.parentNode.removeChild(n)};i.onclick=l;const c=d=>{this.isImeComposing(d)||d.key==="Escape"&&(l(),document.removeEventListener("keydown",c))};return document.addEventListener("keydown",c),n.onclick=d=>{d.target===n&&l()},r.appendChild(i),n.appendChild(r),document.body.appendChild(n),{overlay:n,layer:r,closeLayer:l}}static isPrototypePathSegment(e){return cn.PROTOTYPE_PATH_SEGMENTS.includes(e)}getNestedProperty(e,n){return n.split(".").reduce((r,i)=>{if(!cn.isPrototypePathSegment(i))return r&&r[i]!==void 0?r[i]:void 0},e)}assertCallableExternalConstructor(e,n,r){if(typeof window>"u")return;if([window.Function,window.eval,window.setTimeout,window.setInterval].some(l=>l!==void 0&&l===e))throw I.error(`callExternal: blocked arbitrary code execution seam: ${n}`),new It(`Blocked constructor (arbitrary code execution): ${n}`,r)}async handleSaveToLocalStorage(e,n){const{key:r,value:i}=e;if(!r)return I.error("saveToLocalStorage: key parameter is required"),!1;try{const l=typeof i=="string"?i:JSON.stringify(i);return localStorage.setItem(r,l),I.log(`saveToLocalStorage: saved ${r}`,i),!0}catch(l){return I.error("saveToLocalStorage: failed to save",{key:r,error:l}),!1}}async handleLoadFromLocalStorage(e,n){const{key:r,target:i,stateKey:l,defaultValue:c}=e;if(!r)return I.error("loadFromLocalStorage: key parameter is required"),c;try{const d=localStorage.getItem(r);if(d===null)return I.log(`loadFromLocalStorage: no value found for ${r}, using default`),l&&n.setState&&this.writeLocalState(n,{[l]:c}),c;let f;try{f=JSON.parse(d)}catch{f=d}return I.log(`loadFromLocalStorage: loaded ${r}`,f),l&&n.setState&&this.writeLocalState(n,{[l]:f}),f}catch(d){return I.error("loadFromLocalStorage: failed to load",{key:r,error:d}),c}}writeLocalState(e,n,r,i){const l=r||e.setState;if(!l)return;if(typeof n=="function"){I.warn("[writeLocalState] 함수형 업데이터는 저장소 B 미러 대상이 아닙니다 (payload 추출 불가). 저장소 A 만 갱신합니다."),l(n);return}if(i?.scope==="parent"||i?.scope==="root"){l(n);return}if(this.localMirrorDepth>0||l?.__g7CanonicalWriter){l(n);return}const c=n&&typeof n=="object"?n:{},d=c.__mergeMode;if(d==="replace"){l(n);return}const{__mergeMode:f,__setStateId:h,...m}=c;if("errors"in m||!cn.isMirrorSafePayload(m)){l(n);return}const y=window;if((y.__g7LayoutContextStack||[]).length>0){l(n);return}const v=y.G7Core?.state?.setLocal;if(!y.__templateApp||typeof v!="function"){l(n);return}const S=this.deepMergeWithState(m,{});this.localMirrorDepth++;try{v(S,{render:!1,merge:d??"deep"}),y.__g7ActionContext?.setState!==l&&l(n),d&&(y.__g7ForcedLocalFields={...y.__g7ForcedLocalFields||{},...S})}finally{this.localMirrorDepth--}}static isMirrorSafePayload(e,n=0){if(e===null||typeof e!="object"||n>=8)return!0;if(Array.isArray(e))return e.every(i=>cn.isMirrorSafePayload(i,n+1));const r=Object.getPrototypeOf(e);return r!==Object.prototype&&r!==null?!1:Object.values(e).every(i=>cn.isMirrorSafePayload(i,n+1))}makeLocalSetStateProxy(e){const n=e.setState;if(!n)return;if(n.__g7CanonicalWriter)return n;const r=i=>{this.writeLocalState(e,i,n)};return r.__g7CanonicalWriter=!0,r}async handleCustomAction(e,n){const r=this.customHandlers.get(e.handler);if(!r){if(this.previewMode){I.warn(`[Preview] Unknown action handler "${e.handler}" — skipped (preview mode)`);return}const c=new It(`Unknown action handler: ${e.handler}`,e);throw c.unknownHandler=!0,c}const i=this.makeLocalSetStateProxy(n),l=i&&i!==n.setState?{...n,setState:i}:n;return await r(e,l)}resolveParams(e,n){if(!e)return{};const r={};for(const[i,l]of Object.entries(e))i.includes("{{")&&I.warn(`[resolveParams] setState params의 키에 표현식이 포함되어 있습니다: "${i}". 키는 해석되지 않습니다. 배열 항목 수정은 .map()/.filter() 패턴을 사용하세요.`),typeof l=="string"&&l.includes("{{")?r[i]=this.evaluateExpression(l,n):typeof l=="string"?r[i]=l:Array.isArray(l)?r[i]=l.map(c=>typeof c=="string"&&c.includes("{{")?this.evaluateExpression(c,n):c):typeof l=="object"&&l!==null&&!Array.isArray(l)&&Object.getPrototypeOf(l)!==Object.prototype&&Object.getPrototypeOf(l)!==null?r[i]=l:typeof l=="object"&&l!==null?r[i]=this.resolveParams(l,n):r[i]=l;return r}resolveValue(e,n){return n?this.bindingEngine.resolveBindings(e,n,{skipCache:!0}):e}evaluateExpressions(e,n){let r={};for(const[i,l]of Object.entries(e))if(i==="..."){let c=l;typeof l=="string"&&l.includes("{{")&&(c=this.evaluateExpression(l,n)),c&&typeof c=="object"&&!Array.isArray(c)&&(r={...r,...c})}else typeof l=="string"&&l.includes("{{")?r[i]=this.evaluateExpression(l,n):typeof l=="object"&&l!==null&&!Array.isArray(l)?r[i]=this.evaluateExpressions(l,n):r[i]=l;return r}evaluateExpressionsIfNeeded(e,n){const r={};for(const[i,l]of Object.entries(e))typeof l=="string"&&l.includes("{{")?r[i]=this.evaluateExpression(l,n):r[i]=l;return r}evaluateExpression(e,n){if(!n)return e;const r=Oa(e);if(r===null){let c=n;if(e.includes("_global")){const f=window.G7Core?.state?.get()?._global;f&&(c={...n,_global:f})}if(e.includes("_computed")||e.includes("$computed")){const f=window.__g7ActionContext?.computedRef?.current;f&&Object.keys(f).length>0&&(c={...c,_computed:f,$computed:f})}return this.bindingEngine.resolveBindings(e,c,{skipCache:!0})}let i=r;i=i.replace(/\$args\.(\d+)/g,"$args[$1]");let l=n;if(i.includes("_global")){const d=window.G7Core?.state?.get()?._global;d&&(l={...n,_global:d})}if(i.includes("_computed")||i.includes("$computed")){const d=window.__g7ActionContext?.computedRef?.current;d&&Object.keys(d).length>0&&(l={...l,_computed:d,$computed:d})}i.includes("_global.modules")&&(I.log("[evaluateExpression] expression:",i),I.log("[evaluateExpression] dataContext._global:",l._global),I.log("[evaluateExpression] dataContext._global?.modules:",l._global?.modules));try{const c=jn(i)?this.bindingEngine.evaluatePipeExpression(i,l,{skipCache:!0}):this.bindingEngine.evaluateExpression(i,l);return i.includes("_global.modules")&&I.log("[evaluateExpression] result:",c),typeof c=="string"&&c.startsWith("$t:")&&this.translationEngine&&this.translationContext?this.translationEngine.resolveTranslations(c,this.translationContext,n):c}catch(c){return I.error("Expression evaluation failed:",e,c),e}}setDefaultContext(e){this.defaultContext={...this.defaultContext,...e}}setGlobalStateUpdater(e){this.globalStateUpdater=e}getGlobalStateUpdater(){return this.globalStateUpdater}async dispatchAction(e,n){const r={...this.defaultContext,...n,data:{...this.defaultContext.data,...n?.data}};if(e.confirm){let i=this.resolveValue(e.confirm,r.data);if(this.translationEngine&&this.translationContext&&i.startsWith("$t:")&&(i=this.translationEngine.resolveTranslations(i,this.translationContext,r.data)),!confirm(i))return{success:!1}}try{return await this.executeAction(e,r)}catch(i){if(I.error("dispatchAction failed:",i),e.onError){const l=i instanceof It&&i.originalError?{message:i.originalError.message,response:i.originalError.response}:{message:i instanceof Error?i.message:String(i)},c={...r,data:{...r.data,error:l}},d=Array.isArray(e.onError)?e.onError:[e.onError];for(const f of d)await this.executeAction(f,c)}return{success:!1,error:i instanceof Error?i:new Error(String(i))}}}registerHandler(e,n,r){this.customHandlers.set(e,n);const i=Jn();i?.isEnabled()&&i.trackHandlerRegistration(e,r?.category??"custom",r?.description,r?.source)}unregisterHandler(e){this.customHandlers.delete(e);const n=Jn();n?.isEnabled()&&n.trackHandlerUnregistration(e)}getRegisteredHandlers(){return Array.from(this.customHandlers.keys())}getHandler(e){return this.customHandlers.get(e)}normalizeDebounceConfig(e){return typeof e=="number"?{delay:e,leading:!1,trailing:!0}:{delay:e.delay,leading:e.leading??!1,trailing:e.trailing??!0}}extractEventData(e){const n=e.target;if(n&&!("tagName"in n)){const l={type:e.type??"custom",target:{value:n.value,name:n.name??""}};return e._changedKeys&&(l._changedKeys=e._changedKeys),l}const i=n?{value:n.value,name:n.name??"",checked:n.checked??!1,type:n.type??"",tagName:n.tagName}:{};if(e.type==="scroll"&&n){const l=n;i.scrollHeight=l.scrollHeight??0,i.scrollTop=l.scrollTop??0,i.clientHeight=l.clientHeight??0,i.scrollLeft=l.scrollLeft??0,i.clientWidth=l.clientWidth??0,i.scrollWidth=l.scrollWidth??0}return{type:e.type,target:n?i:null}}executeDebouncedAction(e,n,r,i,l){const c={...r,$event:n,$args:l},d={type:n.type,target:n.target,preventDefault:()=>{},stopPropagation:()=>{}};this.createHandler(e,c,i)(d)}handleDebouncedAction(e,n,r,i,l,c){const d=this.normalizeDebounceConfig(e.debounce),f=l||`default-${e.handler}-${Date.now()}`,h=this.extractEventData(n),m=h._changedKeys;if(m&&Array.isArray(m)&&h?.target?.value&&typeof h.target.value=="object"&&!Array.isArray(h.target.value)){const _=this.debounceAccumulatedValues.get(f);if(_){const x={..._};for(const A of m)x[A]=h.target.value[A];h.target.value=x}this.debounceAccumulatedValues.set(f,h.target.value)}const y=this.debounceTimers.get(f);y&&(clearTimeout(y),this.debounceTimers.delete(f));const v=Jn();v?.isEnabled()&&v.trackAction({handler:typeof e.handler=="string"?e.handler:String(e.handler),type:e.type,status:"pending",params:e.params,debounce:{delay:d.delay,status:"pending",scheduledAt:Date.now()}});const S=!this.debounceTimers.has(f+"_leading");if(d.leading&&S&&(this.debounceTimers.set(f+"_leading",setTimeout(()=>{},0)),this.executeDebouncedAction(e,h,r,i,c),v?.isEnabled()&&v.trackAction({handler:typeof e.handler=="string"?e.handler:String(e.handler),type:e.type,status:"success",params:e.params,debounce:{delay:d.delay,status:"executed",executedAt:Date.now(),mode:"leading"}})),d.trailing){const _=()=>{this.executeDebouncedAction(e,h,r,i,c),v?.isEnabled()&&v.trackAction({handler:typeof e.handler=="string"?e.handler:String(e.handler),type:e.type,status:"success",params:e.params,debounce:{delay:d.delay,status:"executed",executedAt:Date.now(),mode:"trailing"}})},x=setTimeout(()=>{this.debounceTimers.delete(f),this.debounceTimers.delete(f+"_leading"),this.pendingDebounceFlushers.delete(f),this.debounceAccumulatedValues.delete(f),_()},d.delay);this.debounceTimers.set(f,x),this.pendingDebounceFlushers.set(f,_)}}clearDebounceTimers(e){if(e)for(const[n,r]of this.debounceTimers)n.startsWith(e+"-")&&(clearTimeout(r),this.debounceTimers.delete(n),this.pendingDebounceFlushers.delete(n),this.debounceAccumulatedValues.delete(n));else{for(const n of this.debounceTimers.values())clearTimeout(n);this.debounceTimers.clear(),this.pendingDebounceFlushers.clear(),this.debounceAccumulatedValues.clear()}}debouncedCall(e,n,r){const i=this.debounceTimers.get(e);i&&(clearTimeout(i),this.debounceTimers.delete(e));const l=setTimeout(()=>{this.debounceTimers.delete(e),this.pendingDebounceFlushers.delete(e),r()},n);this.debounceTimers.set(e,l),this.pendingDebounceFlushers.set(e,r)}flushPendingDebounceTimers(){if(this.pendingDebounceFlushers.size===0)return;const e=new Map(this.pendingDebounceFlushers);for(const[n,r]of e){const i=this.debounceTimers.get(n);i&&(clearTimeout(i),this.debounceTimers.delete(n)),this.debounceTimers.delete(n+"_leading"),this.pendingDebounceFlushers.delete(n),r()}this.globalStateUpdater&&this.globalStateUpdater({})}bindActionsToProps(e,n,r){const i={...e};if(e.actions&&Array.isArray(e.actions)){const l=new Map;for(const m of e.actions){const y=this.resolveActionRef(m),v=y.event?this.normalizeEventPropName(y.event):this.getEventHandlerName(y.type);l.has(v)||l.set(v,[]),l.get(v).push(y)}const c=e.name||e.id||"unknown",d=l.has("onDrop"),f=l.has("onDragOver"),h=l.has("onDragEnter");d&&!f&&(i.onDragOver=m=>{m.preventDefault()}),d&&!h&&(i.onDragEnter=m=>{m.preventDefault()});for(const[m,y]of l)i[m]=(...v)=>{for(const S of y){const _=v[0],x=_&&typeof _=="object"&&"preventDefault"in _;if(x&&(m==="onDragOver"||m==="onDrop")&&_.preventDefault(),x&&S.key&&"key"in _){if(this.isImeComposing(_)){I.log("Key filter skipped (IME composing):",S.key);continue}if(_.key!==S.key){I.log("Key filter not matched:",S.key,"actual:",_.key);continue}I.log("Key filter matched:",S.key)}if(S.debounce){const A=`${c}-${S.handler}-${m}`,D=_&&typeof _=="object"&&!("preventDefault"in _)&&"target"in _&&_.target!==null;let O;if(x)O=_;else if(D){const L={type:"custom",target:_.target,preventDefault:()=>{},stopPropagation:()=>{}};_._changedKeys&&(L._changedKeys=_._changedKeys),O=L}else O=new Event("custom");const k=S.event?{...n,$args:v}:n;this.handleDebouncedAction(S,O,k,r,A,v)}else if(this.flushPendingDebounceTimers(),S.event){const A={...n,$args:v},D=this.resolveEventForHandler(_,x);this.createHandler(S,A,r)(D)}else if(x)this.createHandler(S,n,r)(_);else if(_&&typeof _=="object"&&!("preventDefault"in _)&&"target"in _&&_.target!==null){const D={type:"custom",target:_.target,preventDefault:()=>{},stopPropagation:()=>{}};this.createHandler(S,n,r)(D)}}}}return i}getEventHandlerName(e){return wy[e]||`on${e.charAt(0).toUpperCase()}${e.slice(1)}`}normalizeEventPropName(e){return wy[e]??e}resolveEventForHandler(e,n){if(n)return e;if(!(e&&typeof e=="object"&&!("preventDefault"in e)&&"target"in e&&e.target!==null))return new Event("custom");const i={type:"custom",target:e.target,preventDefault:()=>{},stopPropagation:()=>{}};return e._changedKeys&&(i._changedKeys=e._changedKeys),i}sanitizeForDevTools(e,n=5){const r=new WeakSet,i=(l,c)=>{if(l==null||typeof l=="string"||typeof l=="number"||typeof l=="boolean")return l;if(c>n)return"[Max Depth Exceeded]";if(typeof l=="function")return`[Function: ${l.name||"anonymous"}]`;if(l instanceof Element)return`[Element: ${l.tagName}${l.className?"."+l.className.split(" ").join("."):""}]`;if(l instanceof Event)return`[Event: ${l.type}]`;if(Array.isArray(l)){if(r.has(l))return"[Circular Array]";r.add(l);const d=l.slice(0,10).map(f=>i(f,c+1));return l.length>10&&d.push(`... ${l.length-10} more items`),d}if(typeof l=="object"){if(r.has(l))return"[Circular Reference]";r.add(l);const d={},f=Object.keys(l),h=f.slice(0,20);for(const m of h)try{d[m]=i(l[m],c+1)}catch{d[m]="[Error accessing property]"}return f.length>20&&(d["..."]=`${f.length-20} more properties`),d}return String(l)};return i(e,0)}};M(cn,"loadedScripts",new Set),M(cn,"loadingScripts",new Map),M(cn,"PROTOTYPE_PATH_SEGMENTS",["__proto__","prototype","constructor"]);let jo=cn,Ec=null;function Cy(s){return Ec||(Ec=new jo(s)),Ec}function o_(s){Ec=s}const Ey=pt("TransitionManager");class l_{constructor(){M(this,"isPending",!1);M(this,"subscribers",new Set)}setPending(e){this.isPending!==e&&(Ey.log("setPending:",{from:this.isPending,to:e,stack:new Error().stack}),this.isPending=e,this.notifySubscribers())}getIsPending(){return this.isPending}subscribe(e){return this.subscribers.add(e),()=>{this.subscribers.delete(e)}}notifySubscribers(){Ey.log("notifySubscribers:",{isPending:this.isPending,subscriberCount:this.subscribers.size}),this.subscribers.forEach(e=>{e(this.isPending)})}clearSubscribers(){this.subscribers.clear()}}const Gr=new l_,_c=pt("TransitionContext"),_y=N.createContext({isTransitioning:!1}),Of=({children:s})=>{const[e,n]=N.useState(()=>{const i=Gr.getIsPending();return _c.log("Initial state:",i),i});N.useEffect(()=>{_c.log("Subscribing to TransitionManager");const i=Gr.subscribe(l=>{_c.log("Received isPending update:",l),n(l)});return()=>{_c.log("Unsubscribing from TransitionManager"),i()}},[]);const r=N.useMemo(()=>({isTransitioning:e}),[e]);return yt.jsx(_y.Provider,{value:r,children:s})},Ay=()=>N.useContext(_y),Ac="__g7LocalInitTracking";function Lf(){const s=globalThis;return s[Ac]||(s[Ac]={hash:"",timestamp:void 0,consumed:void 0}),s[Ac]}function c_(){const s=globalThis;s[Ac]={hash:"",timestamp:void 0,consumed:void 0}}function u_(s){Lf().consumed=s}function d_(s){return Lf().consumed===s}function f_(s){return s.globalTrackedKey!==s.trackingKey?"apply":s.instanceHandledKey===s.trackingKey?"skip":"prune"}function h_(s,e){return typeof s=="number"&&typeof e=="number"?Math.max(s,e):e??s}function p_(s,e){if(e===void 0)return s;if(!(s!==null&&typeof s=="object"&&e!==null&&typeof e=="object"&&!d_(s)))return e;const{_forceLocalInit:r,...i}=s,{_forceLocalInit:l,...c}=e,d={...i,...c},f=h_(r,l);return f!==void 0&&(d._forceLocalInit=f),d}function g_(s){return s<768?"mobile":s<1024?"tablet":"desktop"}function xy(s){const e=g_(s);return{width:s,isMobile:e==="mobile",isTablet:e==="tablet",isDesktop:e==="desktop",matchedPreset:e}}const $f=N.createContext(xy(1024)),xc=({children:s,overrideWidth:e})=>{const[n,r]=N.useState(()=>Ci.getWidth());N.useEffect(()=>{const c=Ci.subscribe(d=>{r(d)});return()=>{c()}},[]);const i=e??n,l=N.useMemo(()=>xy(i),[i]);return yt.jsx($f.Provider,{value:l,children:s})},Mf=()=>N.useContext($f);window.G7Core?.createLogger?.("Core:State");function m_(s,e,n,r){const{syncOnControlledChange:i=!0,isEqual:l}=r??{},c=s!==void 0;N.useRef(c);const[d,f]=N.useState(s!==void 0?s:e),h=d,m=N.useRef(s),y=N.useRef(!1);N.useEffect(()=>{if(y.current){m.current=s;return}i&&c&&s!==m.current&&(l?!l(d,s):d!==s)&&f(s),m.current=s},[s,c,i,l,d]);const v=N.useCallback(S=>{const _=typeof S=="function"?S(h):S;(l?l(h,_):h===_)||(y.current=!0,f(_),n?.(_),requestAnimationFrame(()=>{y.current=!1}))},[h,c,n,l]);return[h,v]}function y_(s,e){return s===e?!0:s.length!==e.length?!1:s.every((n,r)=>n===e[r])}function Ty(s,e){if(s===e)return!0;const n=Object.keys(s),r=Object.keys(e);return n.length!==r.length?!1:n.every(i=>s[i]===e[i])}const ky=N.createContext({}),b_=({children:s,value:e})=>yt.jsx(ky.Provider,{value:e,children:s}),v_=()=>N.useContext(ky),S_=(s,e)=>{if(!s)return;const n=e.split(".");let r=s;for(const i of n){if(r==null)return;r=r[i]}return r},Ry=(s,e,n)=>{const r=e.split(".");if(r.length===1)return{...s,[r[0]]:n};const i={...s};let l=i;for(let c=0;c<r.length-1;c++){const d=r[c],f=r[c+1],h=/^\d+$/.test(f);Array.isArray(l[d])&&!h?l[d]={...l[d]}:Array.isArray(l[d])?l[d]=[...l[d]]:h?l[d]=Array.isArray(l[d])?[...l[d]]:[]:l[d]={...l[d]||{}},l=l[d]}return l[r[r.length-1]]=n,i},vs=pt("IsolatedStateContext"),w_={state:{},setState:()=>{vs.warn("IsolatedStateContext not available: setState called outside IsolatedStateProvider")},getState:()=>{},mergeState:()=>{vs.warn("IsolatedStateContext not available: mergeState called outside IsolatedStateProvider")},stateRef:{current:{}},scopeId:""},Dy=N.createContext(w_);let C_=0;function E_(){return`isolated-${++C_}-${Date.now().toString(36)}`}function Oy(s,e){if(e==null)return s;if(typeof e!="object"||Array.isArray(e))return e;const n={...s};for(const r of Object.keys(e)){const i=e[r],l=s?.[r];i!==null&&typeof i=="object"&&!Array.isArray(i)&&l!==null&&typeof l=="object"&&!Array.isArray(l)?n[r]=Oy(l,i):n[r]=i}return n}function __(s,e){return e?e.split(".").reduce((n,r)=>n?.[r],s):s}function A_(s,e,n){const r=e.split("."),i={...s};let l=i;for(let c=0;c<r.length-1;c++){const d=r[c];l[d]={...l[d]},l=l[d]}return l[r[r.length-1]]=n,i}const x_=({initialState:s={},scopeId:e,children:n})=>{const i=N.useRef(e||E_()).current,[l,c]=N.useState(s),d=N.useRef(l);d.current=l;const f=N.useCallback(S=>__(d.current,S),[]),h=N.useCallback((S,_)=>{c(x=>{const A=A_(x,S,_);return vs.log(`[${i}] setState: ${S} =`,_),A})},[i]),m=N.useCallback((S,_="deep")=>{c(x=>{let A;return _==="replace"?A=S:_==="shallow"?A={...x,...S}:A=Oy(x,S),vs.log(`[${i}] mergeState (${_}):`,S),A})},[i]),y=N.useMemo(()=>({state:l,setState:h,getState:f,mergeState:m,stateRef:d,scopeId:i}),[l,h,f,m,i]),v=N.useMemo(()=>({state:d.current,setState:h,getState:f,mergeState:m}),[h,f,m]);return N.useEffect(()=>{const S=window.G7Core,_=window.__g7IsolatedStates||{};return window.__g7IsolatedStates||(window.__g7IsolatedStates=_),_[i]=v,S&&(S._isolatedStates||(S._isolatedStates={}),S._isolatedStates[i]=l),S?.devTools?.isEnabled?.()&&S.devTools.emit?.("isolated:created",{id:i,state:l}),vs.log(`[${i}] IsolatedStateProvider mounted with initial state:`,l),()=>{delete _[i],S?._isolatedStates&&delete S._isolatedStates[i],S?.devTools?.isEnabled?.()&&S.devTools.emit?.("isolated:destroyed",{id:i}),vs.log(`[${i}] IsolatedStateProvider unmounted`)}},[i,v]),N.useEffect(()=>{const S=window.G7Core,_=window.__g7IsolatedStates;_?.[i]&&(_[i].state=l),S?._isolatedStates&&(S._isolatedStates[i]=l),S?.devTools?.isEnabled?.()&&S.devTools.emit?.("isolated:updated",{id:i,state:l})},[l,i]),yt.jsx(Dy.Provider,{value:y,children:n})},T_=()=>{const s=N.useContext(Dy);return s.scopeId?s:null};var Ia=zg();function k_(){for(var s=arguments.length,e=new Array(s),n=0;n<s;n++)e[n]=arguments[n];return N.useMemo(()=>r=>{e.forEach(i=>i(r))},e)}const Tc=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Ss(s){const e=Object.prototype.toString.call(s);return e==="[object Window]"||e==="[object global]"}function Nf(s){return"nodeType"in s}function zn(s){var e,n;return s?Ss(s)?s:Nf(s)&&(e=(n=s.ownerDocument)==null?void 0:n.defaultView)!=null?e:window:window}function If(s){const{Document:e}=zn(s);return s instanceof e}function Ho(s){return Ss(s)?!1:s instanceof zn(s).HTMLElement}function Ly(s){return s instanceof zn(s).SVGElement}function ws(s){return s?Ss(s)?s.document:Nf(s)?If(s)?s:Ho(s)||Ly(s)?s.ownerDocument:document:document:document}const Fr=Tc?N.useLayoutEffect:N.useEffect;function jf(s){const e=N.useRef(s);return Fr(()=>{e.current=s}),N.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return e.current==null?void 0:e.current(...r)},[])}function R_(){const s=N.useRef(null),e=N.useCallback((r,i)=>{s.current=setInterval(r,i)},[]),n=N.useCallback(()=>{s.current!==null&&(clearInterval(s.current),s.current=null)},[]);return[e,n]}function zo(s,e){e===void 0&&(e=[s]);const n=N.useRef(s);return Fr(()=>{n.current!==s&&(n.current=s)},e),n}function Po(s,e){const n=N.useRef();return N.useMemo(()=>{const r=s(n.current);return n.current=r,r},[...e])}function kc(s){const e=jf(s),n=N.useRef(null),r=N.useCallback(i=>{i!==n.current&&e?.(i,n.current),n.current=i},[]);return[n,r]}function Hf(s){const e=N.useRef();return N.useEffect(()=>{e.current=s},[s]),e.current}let zf={};function Uo(s,e){return N.useMemo(()=>{if(e)return e;const n=zf[s]==null?0:zf[s]+1;return zf[s]=n,s+"-"+n},[s,e])}function $y(s){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return r.reduce((l,c)=>{const d=Object.entries(c);for(const[f,h]of d){const m=l[f];m!=null&&(l[f]=m+s*h)}return l},{...e})}}const Cs=$y(1),Bo=$y(-1);function D_(s){return"clientX"in s&&"clientY"in s}function Pf(s){if(!s)return!1;const{KeyboardEvent:e}=zn(s.target);return e&&s instanceof e}function O_(s){if(!s)return!1;const{TouchEvent:e}=zn(s.target);return e&&s instanceof e}function Uf(s){if(O_(s)){if(s.touches&&s.touches.length){const{clientX:e,clientY:n}=s.touches[0];return{x:e,y:n}}else if(s.changedTouches&&s.changedTouches.length){const{clientX:e,clientY:n}=s.changedTouches[0];return{x:e,y:n}}}return D_(s)?{x:s.clientX,y:s.clientY}:null}const qo=Object.freeze({Translate:{toString(s){if(!s)return;const{x:e,y:n}=s;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(s){if(!s)return;const{scaleX:e,scaleY:n}=s;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(s){if(s)return[qo.Translate.toString(s),qo.Scale.toString(s)].join(" ")}},Transition:{toString(s){let{property:e,duration:n,easing:r}=s;return e+" "+n+"ms "+r}}}),My="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function L_(s){return s.matches(My)?s:s.querySelector(My)}const $_={display:"none"};function M_(s){let{id:e,value:n}=s;return Xe.createElement("div",{id:e,style:$_},n)}function N_(s){let{id:e,announcement:n,ariaLiveType:r="assertive"}=s;const i={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return Xe.createElement("div",{id:e,style:i,role:"status","aria-live":r,"aria-atomic":!0},n)}function I_(){const[s,e]=N.useState("");return{announce:N.useCallback(r=>{r!=null&&e(r)},[]),announcement:s}}const Ny=N.createContext(null);function j_(s){const e=N.useContext(Ny);N.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of <DndContext>");return e(s)},[s,e])}function H_(){const[s]=N.useState(()=>new Set),e=N.useCallback(r=>(s.add(r),()=>s.delete(r)),[s]);return[N.useCallback(r=>{let{type:i,event:l}=r;s.forEach(c=>{var d;return(d=c[i])==null?void 0:d.call(c,l)})},[s]),e]}const z_={draggable:`
To pick up a draggable item, press the space bar.
While dragging, use the arrow keys to move the item.
Press space again to drop the item in its new position, or press escape to cancel.
`},P_={onDragStart(s){let{active:e}=s;return"Picked up draggable item "+e.id+"."},onDragOver(s){let{active:e,over:n}=s;return n?"Draggable item "+e.id+" was moved over droppable area "+n.id+".":"Draggable item "+e.id+" is no longer over a droppable area."},onDragEnd(s){let{active:e,over:n}=s;return n?"Draggable item "+e.id+" was dropped over droppable area "+n.id:"Draggable item "+e.id+" was dropped."},onDragCancel(s){let{active:e}=s;return"Dragging was cancelled. Draggable item "+e.id+" was dropped."}};function U_(s){let{announcements:e=P_,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=z_}=s;const{announce:l,announcement:c}=I_(),d=Uo("DndLiveRegion"),[f,h]=N.useState(!1);if(N.useEffect(()=>{h(!0)},[]),j_(N.useMemo(()=>({onDragStart(y){let{active:v}=y;l(e.onDragStart({active:v}))},onDragMove(y){let{active:v,over:S}=y;e.onDragMove&&l(e.onDragMove({active:v,over:S}))},onDragOver(y){let{active:v,over:S}=y;l(e.onDragOver({active:v,over:S}))},onDragEnd(y){let{active:v,over:S}=y;l(e.onDragEnd({active:v,over:S}))},onDragCancel(y){let{active:v,over:S}=y;l(e.onDragCancel({active:v,over:S}))}}),[l,e])),!f)return null;const m=Xe.createElement(Xe.Fragment,null,Xe.createElement(M_,{id:r,value:i.draggable}),Xe.createElement(N_,{id:d,announcement:c}));return n?Ia.createPortal(m,n):m}var ln;(function(s){s.DragStart="dragStart",s.DragMove="dragMove",s.DragEnd="dragEnd",s.DragCancel="dragCancel",s.DragOver="dragOver",s.RegisterDroppable="registerDroppable",s.SetDroppableDisabled="setDroppableDisabled",s.UnregisterDroppable="unregisterDroppable"})(ln||(ln={}));function Rc(){}function Iy(s,e){return N.useMemo(()=>({sensor:s,options:e??{}}),[s,e])}function B_(){for(var s=arguments.length,e=new Array(s),n=0;n<s;n++)e[n]=arguments[n];return N.useMemo(()=>[...e].filter(r=>r!=null),[...e])}const Rr=Object.freeze({x:0,y:0});function jy(s,e){return Math.sqrt(Math.pow(s.x-e.x,2)+Math.pow(s.y-e.y,2))}function Hy(s,e){let{data:{value:n}}=s,{data:{value:r}}=e;return n-r}function q_(s,e){let{data:{value:n}}=s,{data:{value:r}}=e;return r-n}function zy(s){let{left:e,top:n,height:r,width:i}=s;return[{x:e,y:n},{x:e+i,y:n},{x:e,y:n+r},{x:e+i,y:n+r}]}function Py(s,e){if(!s||s.length===0)return null;const[n]=s;return n[e]}function Uy(s,e,n){return e===void 0&&(e=s.left),n===void 0&&(n=s.top),{x:e+s.width*.5,y:n+s.height*.5}}const G_=s=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=s;const i=Uy(e,e.left,e.top),l=[];for(const c of r){const{id:d}=c,f=n.get(d);if(f){const h=jy(Uy(f),i);l.push({id:d,data:{droppableContainer:c,value:h}})}}return l.sort(Hy)},F_=s=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=s;const i=zy(e),l=[];for(const c of r){const{id:d}=c,f=n.get(d);if(f){const h=zy(f),m=i.reduce((v,S,_)=>v+jy(h[_],S),0),y=Number((m/4).toFixed(4));l.push({id:d,data:{droppableContainer:c,value:y}})}}return l.sort(Hy)};function V_(s,e){const n=Math.max(e.top,s.top),r=Math.max(e.left,s.left),i=Math.min(e.left+e.width,s.left+s.width),l=Math.min(e.top+e.height,s.top+s.height),c=i-r,d=l-n;if(r<i&&n<l){const f=e.width*e.height,h=s.width*s.height,m=c*d,y=m/(f+h-m);return Number(y.toFixed(4))}return 0}const K_=s=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=s;const i=[];for(const l of r){const{id:c}=l,d=n.get(c);if(d){const f=V_(d,e);f>0&&i.push({id:c,data:{droppableContainer:l,value:f}})}}return i.sort(q_)};function W_(s,e,n){return{...s,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function By(s,e){return s&&e?{x:s.left-e.left,y:s.top-e.top}:Rr}function Y_(s){return function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),l=1;l<r;l++)i[l-1]=arguments[l];return i.reduce((c,d)=>({...c,top:c.top+s*d.y,bottom:c.bottom+s*d.y,left:c.left+s*d.x,right:c.right+s*d.x}),{...n})}}const X_=Y_(1);function J_(s){if(s.startsWith("matrix3d(")){const e=s.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(s.startsWith("matrix(")){const e=s.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function Q_(s,e,n){const r=J_(e);if(!r)return s;const{scaleX:i,scaleY:l,x:c,y:d}=r,f=s.left-c-(1-i)*parseFloat(n),h=s.top-d-(1-l)*parseFloat(n.slice(n.indexOf(" ")+1)),m=i?s.width/i:s.width,y=l?s.height/l:s.height;return{width:m,height:y,top:h,right:f+m,bottom:h+y,left:f}}const Z_={ignoreTransform:!1};function Es(s,e){e===void 0&&(e=Z_);let n=s.getBoundingClientRect();if(e.ignoreTransform){const{transform:h,transformOrigin:m}=zn(s).getComputedStyle(s);h&&(n=Q_(n,h,m))}const{top:r,left:i,width:l,height:c,bottom:d,right:f}=n;return{top:r,left:i,width:l,height:c,bottom:d,right:f}}function qy(s){return Es(s,{ignoreTransform:!0})}function eA(s){const e=s.innerWidth,n=s.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function tA(s,e){return e===void 0&&(e=zn(s).getComputedStyle(s)),e.position==="fixed"}function nA(s,e){e===void 0&&(e=zn(s).getComputedStyle(s));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(i=>{const l=e[i];return typeof l=="string"?n.test(l):!1})}function Dc(s,e){const n=[];function r(i){if(e!=null&&n.length>=e||!i)return n;if(If(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Ho(i)||Ly(i)||n.includes(i))return n;const l=zn(s).getComputedStyle(i);return i!==s&&nA(i,l)&&n.push(i),tA(i,l)?n:r(i.parentNode)}return s?r(s):n}function Gy(s){const[e]=Dc(s,1);return e??null}function Bf(s){return!Tc||!s?null:Ss(s)?s:Nf(s)?If(s)||s===ws(s).scrollingElement?window:Ho(s)?s:null:null}function Fy(s){return Ss(s)?s.scrollX:s.scrollLeft}function Vy(s){return Ss(s)?s.scrollY:s.scrollTop}function qf(s){return{x:Fy(s),y:Vy(s)}}var mn;(function(s){s[s.Forward=1]="Forward",s[s.Backward=-1]="Backward"})(mn||(mn={}));function Ky(s){return!Tc||!s?!1:s===document.scrollingElement}function Wy(s){const e={x:0,y:0},n=Ky(s)?{height:window.innerHeight,width:window.innerWidth}:{height:s.clientHeight,width:s.clientWidth},r={x:s.scrollWidth-n.width,y:s.scrollHeight-n.height},i=s.scrollTop<=e.y,l=s.scrollLeft<=e.x,c=s.scrollTop>=r.y,d=s.scrollLeft>=r.x;return{isTop:i,isLeft:l,isBottom:c,isRight:d,maxScroll:r,minScroll:e}}const rA={x:.2,y:.2};function aA(s,e,n,r,i){let{top:l,left:c,right:d,bottom:f}=n;r===void 0&&(r=10),i===void 0&&(i=rA);const{isTop:h,isBottom:m,isLeft:y,isRight:v}=Wy(s),S={x:0,y:0},_={x:0,y:0},x={height:e.height*i.y,width:e.width*i.x};return!h&&l<=e.top+x.height?(S.y=mn.Backward,_.y=r*Math.abs((e.top+x.height-l)/x.height)):!m&&f>=e.bottom-x.height&&(S.y=mn.Forward,_.y=r*Math.abs((e.bottom-x.height-f)/x.height)),!v&&d>=e.right-x.width?(S.x=mn.Forward,_.x=r*Math.abs((e.right-x.width-d)/x.width)):!y&&c<=e.left+x.width&&(S.x=mn.Backward,_.x=r*Math.abs((e.left+x.width-c)/x.width)),{direction:S,speed:_}}function iA(s){if(s===document.scrollingElement){const{innerWidth:l,innerHeight:c}=window;return{top:0,left:0,right:l,bottom:c,width:l,height:c}}const{top:e,left:n,right:r,bottom:i}=s.getBoundingClientRect();return{top:e,left:n,right:r,bottom:i,width:s.clientWidth,height:s.clientHeight}}function Yy(s){return s.reduce((e,n)=>Cs(e,qf(n)),Rr)}function sA(s){return s.reduce((e,n)=>e+Fy(n),0)}function oA(s){return s.reduce((e,n)=>e+Vy(n),0)}function lA(s,e){if(e===void 0&&(e=Es),!s)return;const{top:n,left:r,bottom:i,right:l}=e(s);Gy(s)&&(i<=0||l<=0||n>=window.innerHeight||r>=window.innerWidth)&&s.scrollIntoView({block:"center",inline:"center"})}const cA=[["x",["left","right"],sA],["y",["top","bottom"],oA]];class Gf{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=Dc(n),i=Yy(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[l,c,d]of cA)for(const f of c)Object.defineProperty(this,f,{get:()=>{const h=d(r),m=i[l]-h;return this.rect[f]+m},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Go{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var i;(i=this.target)==null||i.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function uA(s){const{EventTarget:e}=zn(s);return s instanceof e?s:ws(s)}function Ff(s,e){const n=Math.abs(s.x),r=Math.abs(s.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var dr;(function(s){s.Click="click",s.DragStart="dragstart",s.Keydown="keydown",s.ContextMenu="contextmenu",s.Resize="resize",s.SelectionChange="selectionchange",s.VisibilityChange="visibilitychange"})(dr||(dr={}));function Xy(s){s.preventDefault()}function dA(s){s.stopPropagation()}var dt;(function(s){s.Space="Space",s.Down="ArrowDown",s.Right="ArrowRight",s.Left="ArrowLeft",s.Up="ArrowUp",s.Esc="Escape",s.Enter="Enter",s.Tab="Tab"})(dt||(dt={}));const Jy={start:[dt.Space,dt.Enter],cancel:[dt.Esc],end:[dt.Space,dt.Enter,dt.Tab]},fA=(s,e)=>{let{currentCoordinates:n}=e;switch(s.code){case dt.Right:return{...n,x:n.x+25};case dt.Left:return{...n,x:n.x-25};case dt.Down:return{...n,y:n.y+25};case dt.Up:return{...n,y:n.y-25}}};class Vf{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new Go(ws(n)),this.windowListeners=new Go(zn(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(dr.Resize,this.handleCancel),this.windowListeners.add(dr.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(dr.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&lA(r),n(Rr)}handleKeyDown(e){if(Pf(e)){const{active:n,context:r,options:i}=this.props,{keyboardCodes:l=Jy,coordinateGetter:c=fA,scrollBehavior:d="smooth"}=i,{code:f}=e;if(l.end.includes(f)){this.handleEnd(e);return}if(l.cancel.includes(f)){this.handleCancel(e);return}const{collisionRect:h}=r.current,m=h?{x:h.left,y:h.top}:Rr;this.referenceCoordinates||(this.referenceCoordinates=m);const y=c(e,{active:n,context:r.current,currentCoordinates:m});if(y){const v=Bo(y,m),S={x:0,y:0},{scrollableAncestors:_}=r.current;for(const x of _){const A=e.code,{isTop:D,isRight:O,isLeft:k,isBottom:L,maxScroll:B,minScroll:q}=Wy(x),z=iA(x),W={x:Math.min(A===dt.Right?z.right-z.width/2:z.right,Math.max(A===dt.Right?z.left:z.left+z.width/2,y.x)),y:Math.min(A===dt.Down?z.bottom-z.height/2:z.bottom,Math.max(A===dt.Down?z.top:z.top+z.height/2,y.y))},de=A===dt.Right&&!O||A===dt.Left&&!k,_e=A===dt.Down&&!L||A===dt.Up&&!D;if(de&&W.x!==y.x){const Se=x.scrollLeft+v.x,je=A===dt.Right&&Se<=B.x||A===dt.Left&&Se>=q.x;if(je&&!v.y){x.scrollTo({left:Se,behavior:d});return}je?S.x=x.scrollLeft-Se:S.x=A===dt.Right?x.scrollLeft-B.x:x.scrollLeft-q.x,S.x&&x.scrollBy({left:-S.x,behavior:d});break}else if(_e&&W.y!==y.y){const Se=x.scrollTop+v.y,je=A===dt.Down&&Se<=B.y||A===dt.Up&&Se>=q.y;if(je&&!v.x){x.scrollTo({top:Se,behavior:d});return}je?S.y=x.scrollTop-Se:S.y=A===dt.Down?x.scrollTop-B.y:x.scrollTop-q.y,S.y&&x.scrollBy({top:-S.y,behavior:d});break}}this.handleMove(e,Cs(Bo(y,this.referenceCoordinates),S))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}Vf.activators=[{eventName:"onKeyDown",handler:(s,e,n)=>{let{keyboardCodes:r=Jy,onActivation:i}=e,{active:l}=n;const{code:c}=s.nativeEvent;if(r.start.includes(c)){const d=l.activatorNode.current;return d&&s.target!==d?!1:(s.preventDefault(),i?.({event:s.nativeEvent}),!0)}return!1}}];function Qy(s){return!!(s&&"distance"in s)}function Zy(s){return!!(s&&"delay"in s)}class Kf{constructor(e,n,r){var i;r===void 0&&(r=uA(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:l}=e,{target:c}=l;this.props=e,this.events=n,this.document=ws(c),this.documentListeners=new Go(this.document),this.listeners=new Go(r),this.windowListeners=new Go(zn(c)),this.initialCoordinates=(i=Uf(l))!=null?i:Rr,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(dr.Resize,this.handleCancel),this.windowListeners.add(dr.DragStart,Xy),this.windowListeners.add(dr.VisibilityChange,this.handleCancel),this.windowListeners.add(dr.ContextMenu,Xy),this.documentListeners.add(dr.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Zy(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(Qy(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:i}=this.props;i(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(dr.Click,dA,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(dr.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:i,props:l}=this,{onMove:c,options:{activationConstraint:d}}=l;if(!i)return;const f=(n=Uf(e))!=null?n:Rr,h=Bo(i,f);if(!r&&d){if(Qy(d)){if(d.tolerance!=null&&Ff(h,d.tolerance))return this.handleCancel();if(Ff(h,d.distance))return this.handleStart()}if(Zy(d)&&Ff(h,d.tolerance))return this.handleCancel();this.handlePending(d,h);return}e.cancelable&&e.preventDefault(),c(f)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===dt.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const hA={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class Wf extends Kf{constructor(e){const{event:n}=e,r=ws(n.target);super(e,hA,r)}}Wf.activators=[{eventName:"onPointerDown",handler:(s,e)=>{let{nativeEvent:n}=s,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const pA={move:{name:"mousemove"},end:{name:"mouseup"}};var Yf;(function(s){s[s.RightClick=2]="RightClick"})(Yf||(Yf={}));class gA extends Kf{constructor(e){super(e,pA,ws(e.event.target))}}gA.activators=[{eventName:"onMouseDown",handler:(s,e)=>{let{nativeEvent:n}=s,{onActivation:r}=e;return n.button===Yf.RightClick?!1:(r?.({event:n}),!0)}}];const Xf={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class mA extends Kf{constructor(e){super(e,Xf)}static setup(){return window.addEventListener(Xf.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Xf.move.name,e)};function e(){}}}mA.activators=[{eventName:"onTouchStart",handler:(s,e)=>{let{nativeEvent:n}=s,{onActivation:r}=e;const{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var Fo;(function(s){s[s.Pointer=0]="Pointer",s[s.DraggableRect=1]="DraggableRect"})(Fo||(Fo={}));var Oc;(function(s){s[s.TreeOrder=0]="TreeOrder",s[s.ReversedTreeOrder=1]="ReversedTreeOrder"})(Oc||(Oc={}));function yA(s){let{acceleration:e,activator:n=Fo.Pointer,canScroll:r,draggingRect:i,enabled:l,interval:c=5,order:d=Oc.TreeOrder,pointerCoordinates:f,scrollableAncestors:h,scrollableAncestorRects:m,delta:y,threshold:v}=s;const S=vA({delta:y,disabled:!l}),[_,x]=R_(),A=N.useRef({x:0,y:0}),D=N.useRef({x:0,y:0}),O=N.useMemo(()=>{switch(n){case Fo.Pointer:return f?{top:f.y,bottom:f.y,left:f.x,right:f.x}:null;case Fo.DraggableRect:return i}},[n,i,f]),k=N.useRef(null),L=N.useCallback(()=>{const q=k.current;if(!q)return;const z=A.current.x*D.current.x,W=A.current.y*D.current.y;q.scrollBy(z,W)},[]),B=N.useMemo(()=>d===Oc.TreeOrder?[...h].reverse():h,[d,h]);N.useEffect(()=>{if(!l||!h.length||!O){x();return}for(const q of B){if(r?.(q)===!1)continue;const z=h.indexOf(q),W=m[z];if(!W)continue;const{direction:de,speed:_e}=aA(q,W,O,e,v);for(const Se of["x","y"])S[Se][de[Se]]||(_e[Se]=0,de[Se]=0);if(_e.x>0||_e.y>0){x(),k.current=q,_(L,c),A.current=_e,D.current=de;return}}A.current={x:0,y:0},D.current={x:0,y:0},x()},[e,L,r,x,l,c,JSON.stringify(O),JSON.stringify(S),_,h,B,m,JSON.stringify(v)])}const bA={x:{[mn.Backward]:!1,[mn.Forward]:!1},y:{[mn.Backward]:!1,[mn.Forward]:!1}};function vA(s){let{delta:e,disabled:n}=s;const r=Hf(e);return Po(i=>{if(n||!r||!i)return bA;const l={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[mn.Backward]:i.x[mn.Backward]||l.x===-1,[mn.Forward]:i.x[mn.Forward]||l.x===1},y:{[mn.Backward]:i.y[mn.Backward]||l.y===-1,[mn.Forward]:i.y[mn.Forward]||l.y===1}}},[n,e,r])}function SA(s,e){const n=e!=null?s.get(e):void 0,r=n?n.node.current:null;return Po(i=>{var l;return e==null?null:(l=r??i)!=null?l:null},[r,e])}function wA(s,e){return N.useMemo(()=>s.reduce((n,r)=>{const{sensor:i}=r,l=i.activators.map(c=>({eventName:c.eventName,handler:e(c.handler,r)}));return[...n,...l]},[]),[s,e])}var Vo;(function(s){s[s.Always=0]="Always",s[s.BeforeDragging=1]="BeforeDragging",s[s.WhileDragging=2]="WhileDragging"})(Vo||(Vo={}));var Jf;(function(s){s.Optimized="optimized"})(Jf||(Jf={}));const eb=new Map;function CA(s,e){let{dragging:n,dependencies:r,config:i}=e;const[l,c]=N.useState(null),{frequency:d,measure:f,strategy:h}=i,m=N.useRef(s),y=A(),v=zo(y),S=N.useCallback(function(D){D===void 0&&(D=[]),!v.current&&c(O=>O===null?D:O.concat(D.filter(k=>!O.includes(k))))},[v]),_=N.useRef(null),x=Po(D=>{if(y&&!n)return eb;if(!D||D===eb||m.current!==s||l!=null){const O=new Map;for(let k of s){if(!k)continue;if(l&&l.length>0&&!l.includes(k.id)&&k.rect.current){O.set(k.id,k.rect.current);continue}const L=k.node.current,B=L?new Gf(f(L),L):null;k.rect.current=B,B&&O.set(k.id,B)}return O}return D},[s,l,n,y,f]);return N.useEffect(()=>{m.current=s},[s]),N.useEffect(()=>{y||S()},[n,y]),N.useEffect(()=>{l&&l.length>0&&c(null)},[JSON.stringify(l)]),N.useEffect(()=>{y||typeof d!="number"||_.current!==null||(_.current=setTimeout(()=>{S(),_.current=null},d))},[d,y,S,...r]),{droppableRects:x,measureDroppableContainers:S,measuringScheduled:l!=null};function A(){switch(h){case Vo.Always:return!1;case Vo.BeforeDragging:return n;default:return!n}}}function tb(s,e){return Po(n=>s?n||(typeof e=="function"?e(s):s):null,[e,s])}function EA(s,e){return tb(s,e)}function _A(s){let{callback:e,disabled:n}=s;const r=jf(e),i=N.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:l}=window;return new l(r)},[r,n]);return N.useEffect(()=>()=>i?.disconnect(),[i]),i}function Lc(s){let{callback:e,disabled:n}=s;const r=jf(e),i=N.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:l}=window;return new l(r)},[n]);return N.useEffect(()=>()=>i?.disconnect(),[i]),i}function AA(s){return new Gf(Es(s),s)}function nb(s,e,n){e===void 0&&(e=AA);const[r,i]=N.useState(null);function l(){i(f=>{if(!s)return null;if(s.isConnected===!1){var h;return(h=f??n)!=null?h:null}const m=e(s);return JSON.stringify(f)===JSON.stringify(m)?f:m})}const c=_A({callback(f){if(s)for(const h of f){const{type:m,target:y}=h;if(m==="childList"&&y instanceof HTMLElement&&y.contains(s)){l();break}}}}),d=Lc({callback:l});return Fr(()=>{l(),s?(d?.observe(s),c?.observe(document.body,{childList:!0,subtree:!0})):(d?.disconnect(),c?.disconnect())},[s]),r}function xA(s){const e=tb(s);return By(s,e)}const rb=[];function TA(s){const e=N.useRef(s),n=Po(r=>s?r&&r!==rb&&s&&e.current&&s.parentNode===e.current.parentNode?r:Dc(s):rb,[s]);return N.useEffect(()=>{e.current=s},[s]),n}function kA(s){const[e,n]=N.useState(null),r=N.useRef(s),i=N.useCallback(l=>{const c=Bf(l.target);c&&n(d=>d?(d.set(c,qf(c)),new Map(d)):null)},[]);return N.useEffect(()=>{const l=r.current;if(s!==l){c(l);const d=s.map(f=>{const h=Bf(f);return h?(h.addEventListener("scroll",i,{passive:!0}),[h,qf(h)]):null}).filter(f=>f!=null);n(d.length?new Map(d):null),r.current=s}return()=>{c(s),c(l)};function c(d){d.forEach(f=>{const h=Bf(f);h?.removeEventListener("scroll",i)})}},[i,s]),N.useMemo(()=>s.length?e?Array.from(e.values()).reduce((l,c)=>Cs(l,c),Rr):Yy(s):Rr,[s,e])}function ab(s,e){e===void 0&&(e=[]);const n=N.useRef(null);return N.useEffect(()=>{n.current=null},e),N.useEffect(()=>{const r=s!==Rr;r&&!n.current&&(n.current=s),!r&&n.current&&(n.current=null)},[s]),n.current?Bo(s,n.current):Rr}function RA(s){N.useEffect(()=>{if(!Tc)return;const e=s.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n?.()}},s.map(e=>{let{sensor:n}=e;return n}))}function DA(s,e){return N.useMemo(()=>s.reduce((n,r)=>{let{eventName:i,handler:l}=r;return n[i]=c=>{l(c,e)},n},{}),[s,e])}function ib(s){return N.useMemo(()=>s?eA(s):null,[s])}const sb=[];function OA(s,e){e===void 0&&(e=Es);const[n]=s,r=ib(n?zn(n):null),[i,l]=N.useState(sb);function c(){l(()=>s.length?s.map(f=>Ky(f)?r:new Gf(e(f),f)):sb)}const d=Lc({callback:c});return Fr(()=>{d?.disconnect(),c(),s.forEach(f=>d?.observe(f))},[s]),i}function LA(s){if(!s)return null;if(s.children.length>1)return s;const e=s.children[0];return Ho(e)?e:s}function $A(s){let{measure:e}=s;const[n,r]=N.useState(null),i=N.useCallback(h=>{for(const{target:m}of h)if(Ho(m)){r(y=>{const v=e(m);return y?{...y,width:v.width,height:v.height}:v});break}},[e]),l=Lc({callback:i}),c=N.useCallback(h=>{const m=LA(h);l?.disconnect(),m&&l?.observe(m),r(m?e(m):null)},[e,l]),[d,f]=kc(c);return N.useMemo(()=>({nodeRef:d,rect:n,setRef:f}),[n,d,f])}const MA=[{sensor:Wf,options:{}},{sensor:Vf,options:{}}],NA={current:{}},$c={draggable:{measure:qy},droppable:{measure:qy,strategy:Vo.WhileDragging,frequency:Jf.Optimized},dragOverlay:{measure:Es}};class Ko extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const IA={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Ko,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Rc},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:$c,measureDroppableContainers:Rc,windowRect:null,measuringScheduled:!1},jA={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Rc,draggableNodes:new Map,over:null,measureDroppableContainers:Rc},Mc=N.createContext(jA),ob=N.createContext(IA);function HA(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Ko}}}function zA(s,e){switch(e.type){case ln.DragStart:return{...s,draggable:{...s.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case ln.DragMove:return s.draggable.active==null?s:{...s,draggable:{...s.draggable,translate:{x:e.coordinates.x-s.draggable.initialCoordinates.x,y:e.coordinates.y-s.draggable.initialCoordinates.y}}};case ln.DragEnd:case ln.DragCancel:return{...s,draggable:{...s.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case ln.RegisterDroppable:{const{element:n}=e,{id:r}=n,i=new Ko(s.droppable.containers);return i.set(r,n),{...s,droppable:{...s.droppable,containers:i}}}case ln.SetDroppableDisabled:{const{id:n,key:r,disabled:i}=e,l=s.droppable.containers.get(n);if(!l||r!==l.key)return s;const c=new Ko(s.droppable.containers);return c.set(n,{...l,disabled:i}),{...s,droppable:{...s.droppable,containers:c}}}case ln.UnregisterDroppable:{const{id:n,key:r}=e,i=s.droppable.containers.get(n);if(!i||r!==i.key)return s;const l=new Ko(s.droppable.containers);return l.delete(n),{...s,droppable:{...s.droppable,containers:l}}}default:return s}}function PA(s){let{disabled:e}=s;const{active:n,activatorEvent:r,draggableNodes:i}=N.useContext(Mc),l=Hf(r),c=Hf(n?.id);return N.useEffect(()=>{if(!e&&!r&&l&&c!=null){if(!Pf(l)||document.activeElement===l.target)return;const d=i.get(c);if(!d)return;const{activatorNode:f,node:h}=d;if(!f.current&&!h.current)return;requestAnimationFrame(()=>{for(const m of[f.current,h.current]){if(!m)continue;const y=L_(m);if(y){y.focus();break}}})}},[r,e,i,c,l]),null}function UA(s,e){let{transform:n,...r}=e;return s!=null&&s.length?s.reduce((i,l)=>l({transform:i,...r}),n):n}function BA(s){return N.useMemo(()=>({draggable:{...$c.draggable,...s?.draggable},droppable:{...$c.droppable,...s?.droppable},dragOverlay:{...$c.dragOverlay,...s?.dragOverlay}}),[s?.draggable,s?.droppable,s?.dragOverlay])}function qA(s){let{activeNode:e,measure:n,initialRect:r,config:i=!0}=s;const l=N.useRef(!1),{x:c,y:d}=typeof i=="boolean"?{x:i,y:i}:i;Fr(()=>{if(!c&&!d||!e){l.current=!1;return}if(l.current||!r)return;const h=e?.node.current;if(!h||h.isConnected===!1)return;const m=n(h),y=By(m,r);if(c||(y.x=0),d||(y.y=0),l.current=!0,Math.abs(y.x)>0||Math.abs(y.y)>0){const v=Gy(h);v&&v.scrollBy({top:y.y,left:y.x})}},[e,c,d,r,n])}const lb=N.createContext({...Rr,scaleX:1,scaleY:1});var ja;(function(s){s[s.Uninitialized=0]="Uninitialized",s[s.Initializing=1]="Initializing",s[s.Initialized=2]="Initialized"})(ja||(ja={}));const GA=N.memo(function(e){var n,r,i,l;let{id:c,accessibility:d,autoScroll:f=!0,children:h,sensors:m=MA,collisionDetection:y=K_,measuring:v,modifiers:S,..._}=e;const x=N.useReducer(zA,void 0,HA),[A,D]=x,[O,k]=H_(),[L,B]=N.useState(ja.Uninitialized),q=L===ja.Initialized,{draggable:{active:z,nodes:W,translate:de},droppable:{containers:_e}}=A,Se=z!=null?W.get(z):null,je=N.useRef({initial:null,translated:null}),Fe=N.useMemo(()=>{var pe;return z!=null?{id:z,data:(pe=Se?.data)!=null?pe:NA,rect:je}:null},[z,Se]),ze=N.useRef(null),[Et,Q]=N.useState(null),[ue,De]=N.useState(null),ee=zo(_,Object.values(_)),me=Uo("DndDescribedBy",c),H=N.useMemo(()=>_e.getEnabled(),[_e]),T=BA(v),{droppableRects:fe,measureDroppableContainers:he,measuringScheduled:Ae}=CA(H,{dragging:q,dependencies:[de.x,de.y],config:T.droppable}),se=SA(W,z),ge=N.useMemo(()=>ue?Uf(ue):null,[ue]),$e=ve(),Te=EA(se,T.draggable.measure);qA({activeNode:z!=null?W.get(z):null,config:$e.layoutShiftCompensation,initialRect:Te,measure:T.draggable.measure});const Ie=nb(se,T.draggable.measure,Te),xt=nb(se?se.parentElement:null),rt=N.useRef({activatorEvent:null,active:null,activeNode:se,collisionRect:null,collisions:null,droppableRects:fe,draggableNodes:W,draggingNode:null,draggingNodeRect:null,droppableContainers:_e,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),gt=_e.getNodeFor((n=rt.current.over)==null?void 0:n.id),at=$A({measure:T.dragOverlay.measure}),Yt=(r=at.nodeRef.current)!=null?r:se,Ht=q?(i=at.rect)!=null?i:Ie:null,bt=!!(at.nodeRef.current&&at.rect),qe=xA(bt?null:Ie),mt=ib(Yt?zn(Yt):null),Dt=TA(q?gt??se:null),zt=OA(Dt),kn=UA(S,{transform:{x:de.x-qe.x,y:de.y-qe.y,scaleX:1,scaleY:1},activatorEvent:ue,active:Fe,activeNodeRect:Ie,containerNodeRect:xt,draggingNodeRect:Ht,over:rt.current.over,overlayNodeRect:at.rect,scrollableAncestors:Dt,scrollableAncestorRects:zt,windowRect:mt}),hr=ge?Cs(ge,de):null,Ot=kA(Dt),Mi=ab(Ot),ua=ab(Ot,[Ie]),bn=Cs(kn,Mi),Mn=Ht?X_(Ht,kn):null,it=Fe&&Mn?y({active:Fe,collisionRect:Mn,droppableRects:fe,droppableContainers:H,pointerCoordinates:hr}):null,Un=Py(it,"id"),[vn,da]=N.useState(null),pr=bt?kn:Cs(kn,ua),un=W_(pr,(l=vn?.rect)!=null?l:null,Ie),Rn=N.useRef(null),dn=N.useCallback((pe,Ee)=>{let{sensor:xe,options:Ke}=Ee;if(ze.current==null)return;const ke=W.get(ze.current);if(!ke)return;const Me=pe.nativeEvent,Re=new xe({active:ze.current,activeNode:ke,event:Me,options:Ke,context:rt,onAbort(Pe){if(!W.get(Pe))return;const{onDragAbort:Ce}=ee.current,He={id:Pe};Ce?.(He),O({type:"onDragAbort",event:He})},onPending(Pe,Ve,Ce,He){if(!W.get(Pe))return;const{onDragPending:Lt}=ee.current,Bt={id:Pe,constraint:Ve,initialCoordinates:Ce,offset:He};Lt?.(Bt),O({type:"onDragPending",event:Bt})},onStart(Pe){const Ve=ze.current;if(Ve==null)return;const Ce=W.get(Ve);if(!Ce)return;const{onDragStart:He}=ee.current,nt={activatorEvent:Me,active:{id:Ve,data:Ce.data,rect:je}};Ia.unstable_batchedUpdates(()=>{He?.(nt),B(ja.Initializing),D({type:ln.DragStart,initialCoordinates:Pe,active:Ve}),O({type:"onDragStart",event:nt}),Q(Rn.current),De(Me)})},onMove(Pe){D({type:ln.DragMove,coordinates:Pe})},onEnd:tt(ln.DragEnd),onCancel:tt(ln.DragCancel)});Rn.current=Re;function tt(Pe){return async function(){const{active:Ce,collisions:He,over:nt,scrollAdjustedTranslate:Lt}=rt.current;let Bt=null;if(Ce&&Lt){const{cancelDrop:Nn}=ee.current;Bt={activatorEvent:Me,active:Ce,collisions:He,delta:Lt,over:nt},Pe===ln.DragEnd&&typeof Nn=="function"&&await Promise.resolve(Nn(Bt))&&(Pe=ln.DragCancel)}ze.current=null,Ia.unstable_batchedUpdates(()=>{D({type:Pe}),B(ja.Uninitialized),da(null),Q(null),De(null),Rn.current=null;const Nn=Pe===ln.DragEnd?"onDragEnd":"onDragCancel";if(Bt){const Gt=ee.current[Nn];Gt?.(Bt),O({type:Nn,event:Bt})}})}}},[W]),V=N.useCallback((pe,Ee)=>(xe,Ke)=>{const ke=xe.nativeEvent,Me=W.get(Ke);if(ze.current!==null||!Me||ke.dndKit||ke.defaultPrevented)return;const Re={active:Me};pe(xe,Ee.options,Re)===!0&&(ke.dndKit={capturedBy:Ee.sensor},ze.current=Ke,dn(xe,Ee))},[W,dn]),ie=wA(m,V);RA(m),Fr(()=>{Ie&&L===ja.Initializing&&B(ja.Initialized)},[Ie,L]),N.useEffect(()=>{const{onDragMove:pe}=ee.current,{active:Ee,activatorEvent:xe,collisions:Ke,over:ke}=rt.current;if(!Ee||!xe)return;const Me={active:Ee,activatorEvent:xe,collisions:Ke,delta:{x:bn.x,y:bn.y},over:ke};Ia.unstable_batchedUpdates(()=>{pe?.(Me),O({type:"onDragMove",event:Me})})},[bn.x,bn.y]),N.useEffect(()=>{const{active:pe,activatorEvent:Ee,collisions:xe,droppableContainers:Ke,scrollAdjustedTranslate:ke}=rt.current;if(!pe||ze.current==null||!Ee||!ke)return;const{onDragOver:Me}=ee.current,Re=Ke.get(Un),tt=Re&&Re.rect.current?{id:Re.id,rect:Re.rect.current,data:Re.data,disabled:Re.disabled}:null,Pe={active:pe,activatorEvent:Ee,collisions:xe,delta:{x:ke.x,y:ke.y},over:tt};Ia.unstable_batchedUpdates(()=>{da(tt),Me?.(Pe),O({type:"onDragOver",event:Pe})})},[Un]),Fr(()=>{rt.current={activatorEvent:ue,active:Fe,activeNode:se,collisionRect:Mn,collisions:it,droppableRects:fe,draggableNodes:W,draggingNode:Yt,draggingNodeRect:Ht,droppableContainers:_e,over:vn,scrollableAncestors:Dt,scrollAdjustedTranslate:bn},je.current={initial:Ht,translated:Mn}},[Fe,se,it,Mn,W,Yt,Ht,fe,_e,vn,Dt,bn]),yA({...$e,delta:de,draggingRect:Mn,pointerCoordinates:hr,scrollableAncestors:Dt,scrollableAncestorRects:zt});const ce=N.useMemo(()=>({active:Fe,activeNode:se,activeNodeRect:Ie,activatorEvent:ue,collisions:it,containerNodeRect:xt,dragOverlay:at,draggableNodes:W,droppableContainers:_e,droppableRects:fe,over:vn,measureDroppableContainers:he,scrollableAncestors:Dt,scrollableAncestorRects:zt,measuringConfiguration:T,measuringScheduled:Ae,windowRect:mt}),[Fe,se,Ie,ue,it,xt,at,W,_e,fe,vn,he,Dt,zt,T,Ae,mt]),Z=N.useMemo(()=>({activatorEvent:ue,activators:ie,active:Fe,activeNodeRect:Ie,ariaDescribedById:{draggable:me},dispatch:D,draggableNodes:W,over:vn,measureDroppableContainers:he}),[ue,ie,Fe,Ie,D,me,W,vn,he]);return Xe.createElement(Ny.Provider,{value:k},Xe.createElement(Mc.Provider,{value:Z},Xe.createElement(ob.Provider,{value:ce},Xe.createElement(lb.Provider,{value:un},h)),Xe.createElement(PA,{disabled:d?.restoreFocus===!1})),Xe.createElement(U_,{...d,hiddenTextDescribedById:me}));function ve(){const pe=Et?.autoScrollEnabled===!1,Ee=typeof f=="object"?f.enabled===!1:f===!1,xe=q&&!pe&&!Ee;return typeof f=="object"?{...f,enabled:xe}:{enabled:xe}}}),FA=N.createContext(null),cb="button",VA="Draggable";function KA(s){let{id:e,data:n,disabled:r=!1,attributes:i}=s;const l=Uo(VA),{activators:c,activatorEvent:d,active:f,activeNodeRect:h,ariaDescribedById:m,draggableNodes:y,over:v}=N.useContext(Mc),{role:S=cb,roleDescription:_="draggable",tabIndex:x=0}=i??{},A=f?.id===e,D=N.useContext(A?lb:FA),[O,k]=kc(),[L,B]=kc(),q=DA(c,e),z=zo(n);Fr(()=>(y.set(e,{id:e,key:l,node:O,activatorNode:L,data:z}),()=>{const de=y.get(e);de&&de.key===l&&y.delete(e)}),[y,e]);const W=N.useMemo(()=>({role:S,tabIndex:x,"aria-disabled":r,"aria-pressed":A&&S===cb?!0:void 0,"aria-roledescription":_,"aria-describedby":m.draggable}),[r,S,x,A,_,m.draggable]);return{active:f,activatorEvent:d,activeNodeRect:h,attributes:W,isDragging:A,listeners:r?void 0:q,node:O,over:v,setNodeRef:k,setActivatorNodeRef:B,transform:D}}function WA(){return N.useContext(ob)}const YA="Droppable",XA={timeout:25};function JA(s){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:i}=s;const l=Uo(YA),{active:c,dispatch:d,over:f,measureDroppableContainers:h}=N.useContext(Mc),m=N.useRef({disabled:n}),y=N.useRef(!1),v=N.useRef(null),S=N.useRef(null),{disabled:_,updateMeasurementsFor:x,timeout:A}={...XA,...i},D=zo(x??r),O=N.useCallback(()=>{if(!y.current){y.current=!0;return}S.current!=null&&clearTimeout(S.current),S.current=setTimeout(()=>{h(Array.isArray(D.current)?D.current:[D.current]),S.current=null},A)},[A]),k=Lc({callback:O,disabled:_||!c}),L=N.useCallback((W,de)=>{k&&(de&&(k.unobserve(de),y.current=!1),W&&k.observe(W))},[k]),[B,q]=kc(L),z=zo(e);return N.useEffect(()=>{!k||!B.current||(k.disconnect(),y.current=!1,k.observe(B.current))},[B,k]),N.useEffect(()=>(d({type:ln.RegisterDroppable,element:{id:r,key:l,disabled:n,node:B,rect:v,data:z}}),()=>d({type:ln.UnregisterDroppable,key:l,id:r})),[r]),N.useEffect(()=>{n!==m.current.disabled&&(d({type:ln.SetDroppableDisabled,id:r,key:l,disabled:n}),m.current.disabled=n)},[r,l,n,d]),{active:c,rect:v,isOver:f?.id===r,node:B,over:f,setNodeRef:q}}function Qf(s,e,n){const r=s.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function QA(s,e){return s.reduce((n,r,i)=>{const l=e.get(r);return l&&(n[i]=l),n},Array(s.length))}function Nc(s){return s!==null&&s>=0}function ZA(s,e){if(s===e)return!0;if(s.length!==e.length)return!1;for(let n=0;n<s.length;n++)if(s[n]!==e[n])return!1;return!0}function ex(s){return typeof s=="boolean"?{draggable:s,droppable:s}:s}const Ic={scaleX:1,scaleY:1},tx=s=>{var e;let{rects:n,activeNodeRect:r,activeIndex:i,overIndex:l,index:c}=s;const d=(e=n[i])!=null?e:r;if(!d)return null;const f=nx(n,c,i);if(c===i){const h=n[l];return h?{x:i<l?h.left+h.width-(d.left+d.width):h.left-d.left,y:0,...Ic}:null}return c>i&&c<=l?{x:-d.width-f,y:0,...Ic}:c<i&&c>=l?{x:d.width+f,y:0,...Ic}:{x:0,y:0,...Ic}};function nx(s,e,n){const r=s[e],i=s[e-1],l=s[e+1];return!r||!i&&!l?0:n<e?i?r.left-(i.left+i.width):l.left-(r.left+r.width):l?l.left-(r.left+r.width):r.left-(i.left+i.width)}const Zf=s=>{let{rects:e,activeIndex:n,overIndex:r,index:i}=s;const l=Qf(e,r,n),c=e[i],d=l[i];return!d||!c?null:{x:d.left-c.left,y:d.top-c.top,scaleX:d.width/c.width,scaleY:d.height/c.height}},jc={scaleX:1,scaleY:1},rx=s=>{var e;let{activeIndex:n,activeNodeRect:r,index:i,rects:l,overIndex:c}=s;const d=(e=l[n])!=null?e:r;if(!d)return null;if(i===n){const h=l[c];return h?{x:0,y:n<c?h.top+h.height-(d.top+d.height):h.top-d.top,...jc}:null}const f=ax(l,i,n);return i>n&&i<=c?{x:0,y:-d.height-f,...jc}:i<n&&i>=c?{x:0,y:d.height+f,...jc}:{x:0,y:0,...jc}};function ax(s,e,n){const r=s[e],i=s[e-1],l=s[e+1];return r?n<e?i?r.top-(i.top+i.height):l?l.top-(r.top+r.height):0:l?l.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}const ub="Sortable",db=Xe.createContext({activeIndex:-1,containerId:ub,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:Zf,disabled:{draggable:!1,droppable:!1}});function ix(s){let{children:e,id:n,items:r,strategy:i=Zf,disabled:l=!1}=s;const{active:c,dragOverlay:d,droppableRects:f,over:h,measureDroppableContainers:m}=WA(),y=Uo(ub,n),v=d.rect!==null,S=N.useMemo(()=>r.map(q=>typeof q=="object"&&"id"in q?q.id:q),[r]),_=c!=null,x=c?S.indexOf(c.id):-1,A=h?S.indexOf(h.id):-1,D=N.useRef(S),O=!ZA(S,D.current),k=A!==-1&&x===-1||O,L=ex(l);Fr(()=>{O&&_&&m(S)},[O,S,_,m]),N.useEffect(()=>{D.current=S},[S]);const B=N.useMemo(()=>({activeIndex:x,containerId:y,disabled:L,disableTransforms:k,items:S,overIndex:A,useDragOverlay:v,sortedRects:QA(S,f),strategy:i}),[x,y,L.draggable,L.droppable,k,S,A,f,v,i]);return Xe.createElement(db.Provider,{value:B},e)}const sx=s=>{let{id:e,items:n,activeIndex:r,overIndex:i}=s;return Qf(n,r,i).indexOf(e)},ox=s=>{let{containerId:e,isSorting:n,wasDragging:r,index:i,items:l,newIndex:c,previousItems:d,previousContainerId:f,transition:h}=s;return!h||!r||d!==l&&i===c?!1:n?!0:c!==i&&e===f},lx={duration:200,easing:"ease"},fb="transform",cx=qo.Transition.toString({property:fb,duration:0,easing:"linear"}),ux={roleDescription:"sortable"};function dx(s){let{disabled:e,index:n,node:r,rect:i}=s;const[l,c]=N.useState(null),d=N.useRef(n);return Fr(()=>{if(!e&&n!==d.current&&r.current){const f=i.current;if(f){const h=Es(r.current,{ignoreTransform:!0}),m={x:f.left-h.left,y:f.top-h.top,scaleX:f.width/h.width,scaleY:f.height/h.height};(m.x||m.y)&&c(m)}}n!==d.current&&(d.current=n)},[e,n,r,i]),N.useEffect(()=>{l&&c(null)},[l]),l}function fx(s){let{animateLayoutChanges:e=ox,attributes:n,disabled:r,data:i,getNewIndex:l=sx,id:c,strategy:d,resizeObserverConfig:f,transition:h=lx}=s;const{items:m,containerId:y,activeIndex:v,disabled:S,disableTransforms:_,sortedRects:x,overIndex:A,useDragOverlay:D,strategy:O}=N.useContext(db),k=hx(r,S),L=m.indexOf(c),B=N.useMemo(()=>({sortable:{containerId:y,index:L,items:m},...i}),[y,i,L,m]),q=N.useMemo(()=>m.slice(m.indexOf(c)),[m,c]),{rect:z,node:W,isOver:de,setNodeRef:_e}=JA({id:c,data:B,disabled:k.droppable,resizeObserverConfig:{updateMeasurementsFor:q,...f}}),{active:Se,activatorEvent:je,activeNodeRect:Fe,attributes:ze,setNodeRef:Et,listeners:Q,isDragging:ue,over:De,setActivatorNodeRef:ee,transform:me}=KA({id:c,data:B,attributes:{...ux,...n},disabled:k.draggable}),H=k_(_e,Et),T=!!Se,fe=T&&!_&&Nc(v)&&Nc(A),he=!D&&ue,Ae=he&&fe?me:null,ge=fe?Ae??(d??O)({rects:x,activeNodeRect:Fe,activeIndex:v,overIndex:A,index:L}):null,$e=Nc(v)&&Nc(A)?l({id:c,items:m,activeIndex:v,overIndex:A}):L,Te=Se?.id,Ie=N.useRef({activeId:Te,items:m,newIndex:$e,containerId:y}),xt=m!==Ie.current.items,rt=e({active:Se,containerId:y,isDragging:ue,isSorting:T,id:c,index:L,items:m,newIndex:Ie.current.newIndex,previousItems:Ie.current.items,previousContainerId:Ie.current.containerId,transition:h,wasDragging:Ie.current.activeId!=null}),gt=dx({disabled:!rt,index:L,node:W,rect:z});return N.useEffect(()=>{T&&Ie.current.newIndex!==$e&&(Ie.current.newIndex=$e),y!==Ie.current.containerId&&(Ie.current.containerId=y),m!==Ie.current.items&&(Ie.current.items=m)},[T,$e,y,m]),N.useEffect(()=>{if(Te===Ie.current.activeId)return;if(Te!=null&&Ie.current.activeId==null){Ie.current.activeId=Te;return}const Yt=setTimeout(()=>{Ie.current.activeId=Te},50);return()=>clearTimeout(Yt)},[Te]),{active:Se,activeIndex:v,attributes:ze,data:B,rect:z,index:L,newIndex:$e,items:m,isOver:de,isSorting:T,isDragging:ue,listeners:Q,node:W,overIndex:A,over:De,setNodeRef:H,setActivatorNodeRef:ee,setDroppableNodeRef:_e,setDraggableNodeRef:Et,transform:gt??ge,transition:at()};function at(){if(gt||xt&&Ie.current.newIndex===L)return cx;if(!(he&&!Pf(je)||!h)&&(T||rt))return qo.Transition.toString({...h,property:fb})}}function hx(s,e){var n,r;return typeof s=="boolean"?{draggable:s,droppable:!1}:{draggable:(n=s?.draggable)!=null?n:e.draggable,droppable:(r=s?.droppable)!=null?r:e.droppable}}function Hc(s){if(!s)return!1;const e=s.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const px=[dt.Down,dt.Right,dt.Up,dt.Left],gx=(s,e)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:l,over:c,scrollableAncestors:d}}=e;if(px.includes(s.code)){if(s.preventDefault(),!n||!r)return;const f=[];l.getEnabled().forEach(y=>{if(!y||y!=null&&y.disabled)return;const v=i.get(y.id);if(v)switch(s.code){case dt.Down:r.top<v.top&&f.push(y);break;case dt.Up:r.top>v.top&&f.push(y);break;case dt.Left:r.left>v.left&&f.push(y);break;case dt.Right:r.left<v.left&&f.push(y);break}});const h=F_({collisionRect:r,droppableRects:i,droppableContainers:f});let m=Py(h,"id");if(m===c?.id&&h.length>1&&(m=h[1].id),m!=null){const y=l.get(n.id),v=l.get(m),S=v?i.get(v.id):null,_=v?.node.current;if(_&&S&&y&&v){const A=Dc(_).some((q,z)=>d[z]!==q),D=hb(y,v),O=mx(y,v),k=A||!D?{x:0,y:0}:{x:O?r.width-S.width:0,y:O?r.height-S.height:0},L={x:S.left,y:S.top};return k.x&&k.y?L:Bo(L,k)}}}};function hb(s,e){return!Hc(s)||!Hc(e)?!1:s.data.current.sortable.containerId===e.data.current.sortable.containerId}function mx(s,e){return!Hc(s)||!Hc(e)||!hb(s,e)?!1:s.data.current.sortable.index<e.data.current.sortable.index}const yx={verticalList:rx,horizontalList:tx,rectSorting:Zf},bx=({items:s,itemKey:e,strategy:n,children:r,onSortEnd:i,onSortStart:l,sortVersion:c})=>{const d=N.useId(),f=N.useRef({inProgress:!1,lastSortTime:0,lastActiveId:null}),h=B_(Iy(Wf,{activationConstraint:{distance:5}}),Iy(Vf,{coordinateGetter:gx})),m=N.useCallback(S=>{f.current={inProgress:!0,lastSortTime:Date.now(),lastActiveId:S.active.id},l?.({activeId:S.active.id})},[l]),y=N.useCallback(S=>{const{active:_,over:x}=S,A=Date.now();if(!x||_.id===x.id){f.current.inProgress=!1;return}const{lastSortTime:D,lastActiveId:O,inProgress:k}=f.current;if(O===_.id&&A-D<500&&!k)return;f.current={inProgress:!1,lastSortTime:A,lastActiveId:_.id};const L=s.findIndex(q=>String(q[e])===String(_.id)),B=s.findIndex(q=>String(q[e])===String(x.id));if(L!==-1&&B!==-1&&L!==B){const q=Qf(s,L,B);i?.(q,{oldIndex:L,newIndex:B})}},[s,e,i]),v=s.map(S=>String(S[e]));return yt.jsx(GA,{id:d,sensors:h,collisionDetection:G_,onDragStart:m,onDragEnd:y,children:yt.jsx(ix,{items:v,strategy:yx[n],children:r})},c!==void 0?`${d}-v${c}`:d)},pb=N.createContext(null),vx=({value:s,children:e})=>yt.jsx(pb.Provider,{value:s,children:e}),Sx=()=>N.useContext(pb),wx=({id:s,handle:e,as:n="div",children:r})=>{const{attributes:i,listeners:l,setNodeRef:c,transform:d,transition:f,isDragging:h}=fx({id:s}),m={transform:qo.Transform.toString(d),transition:f,opacity:h?.5:1,position:"relative"};return yt.jsx(n,{ref:c,style:m,...i,...e?{}:l,"data-sortable-item":!0,"data-sortable-id":String(s),"data-dragging":h,children:yt.jsx(vx,{value:{listeners:l,handle:e,isDragging:h},children:r})})},lt=pt("DynamicRenderer");function oa(){try{return window.G7Core?.devTools}catch{return}}function eh(s,e,n,r){if(typeof s=="string"){if(/\$t:[a-zA-Z_][a-zA-Z0-9_.\-]*/.test(s))try{return e.resolveTranslations(s,n,r)}catch{return s}return s}if(Array.isArray(s))return s.map(i=>eh(i,e,n,r));if(s&&typeof s=="object"){const i={};for(const[l,c]of Object.entries(s))i[l]=eh(c,e,n,r);return i}return s}function Cx(s){const e=Object.keys(s);return e.length>0&&e.every(n=>/^\d+$/.test(n))}const fr=(s,e)=>{const n=["errors"],r={...s};for(const i of Object.keys(e)){const l=e[i],c=s[i];if(l===null){r[i]=null;continue}if(n.includes(i)){r[i]=l;continue}if(Array.isArray(l)){r[i]=l;continue}if(Array.isArray(c)&&l!==null&&typeof l=="object"&&!Array.isArray(l)&&Cx(l)){const d=Object.keys(l).map(h=>parseInt(h,10));if((d.length>0?Math.max(...d):0)>=c.length+d.length+10)r[i]={...l};else{const h=[...c];for(const[m,y]of Object.entries(l)){const v=parseInt(m,10);v>=0&&v<h.length?y!==null&&typeof y=="object"&&!Array.isArray(y)&&h[v]!==null&&typeof h[v]=="object"?h[v]=fr(h[v],y):h[v]=y:v>=h.length&&(h[v]=y)}r[i]=h}}else l!==null&&typeof l=="object"&&c!==null&&typeof c=="object"&&!Array.isArray(c)?r[i]=fr(c,l):r[i]=l}return r},Ex=(s,e,n,r)=>{if(!e||typeof e!="object"||Array.isArray(e))return s;const i=fr(s,e);return Ry(i,n,r)},zc=(s,e)=>{let n=null;const r=()=>(n===null&&(n={...s}),n);for(const i of Object.keys(e)){if(!(i in s))continue;const l=e[i],c=s[i];if(l!==null&&typeof l=="object"&&!Array.isArray(l)&&c!==null&&typeof c=="object"&&!Array.isArray(c)){const d=zc(c,l);if(d===c)continue;Object.keys(d).length===0?delete r()[i]:r()[i]=d}else delete r()[i]}return n??s},_x=s=>{const e={},n=s.split(";").filter(r=>r.trim());for(const r of n){const i=r.indexOf(":");if(i===-1)continue;const l=r.substring(0,i).trim(),c=r.substring(i+1).trim();if(l&&c){const d=l.replace(/-([a-z])/g,(f,h)=>h.toUpperCase());e[d]=c}}return e};class Ax extends N.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,n){lt.error(`컴포넌트 렌더링 에러 (ID: ${this.props.componentId}, Name: ${this.props.componentName}):`,e,n)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:yt.jsxs("div",{className:"p-4 my-2 bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg text-red-800 dark:text-red-400",children:[yt.jsx("div",{className:"font-semibold mb-1",children:"컴포넌트 로드 실패"}),yt.jsxs("div",{className:"text-xs opacity-80",children:[this.props.componentName&&`[${this.props.componentName}] `,"데이터를 표시할 수 없습니다."]}),this.state.error&&yt.jsxs("details",{className:"mt-2",children:[yt.jsx("summary",{className:"cursor-pointer text-xs opacity-70 hover:opacity-100",children:"상세 정보"}),yt.jsx("div",{className:"mt-1 p-2 bg-red-100 dark:bg-red-900/30 rounded text-xs font-mono whitespace-pre-wrap break-all",children:this.state.error.message})]})]}):this.props.children}}const Vr=N.memo(({componentDef:s,dataContext:e,translationContext:n,registry:r,bindingEngine:i,translationEngine:l,actionDispatcher:c,parentComponentContext:d,parentFormContextProp:f,parentDataContext:h,isRootRenderer:m=!1,isInsideIteration:y=!1,isEditMode:v=!1,onComponentSelect:S,onComponentHover:_,onDragStart:x,onDragEnd:A,componentPath:D,layoutKey:O})=>{const[k,L]=N.useState({loadingActions:{}});N.useLayoutEffect(()=>{d||(i.startRenderCycle(),window.__g7SetLocalOverrideKeys||(window.__g7ForcedLocalFields=void 0),window.__g7PendingLocalState=null)});const B=N.useRef(null);N.useLayoutEffect(()=>{if(!d&&e._localInit&&typeof e._localInit=="object"){const{_forceLocalInit:V,_merge:ie,...ce}=e._localInit,Z=`${JSON.stringify(ce)}:${V||"no-force"}`;if(B.current!==Z){B.current=Z;const ve=ie||"shallow",Ee=window.G7Core?.state?.get?.()?._local||{},xe=window.__g7PendingLocalState||{},Ke={...Ee,...xe};ve==="replace"?window.__g7PendingLocalState={loadingActions:Ke.loadingActions||{},...ce,hasChanges:!1}:ve==="deep"?window.__g7PendingLocalState=fr(Ke,{...ce,hasChanges:!1}):window.__g7PendingLocalState={...Ke,...ce,hasChanges:!1};const ke=window.__g7SetLocalOverrideKeys;ke&&typeof ke=="object"&&(ve==="replace"?window.__g7SetLocalOverrideKeys={...ce,hasChanges:!1}:window.__g7SetLocalOverrideKeys=fr(ke,{...ce,hasChanges:!1}))}}}),N.useLayoutEffect(()=>{if(!d){const V=window.__g7SetLocalOverrideKeys;if(V){L(ve=>zc(ve,V));const ie=V,ce=window.__g7ForcedLocalFields,Z=window.__g7LastSetLocalSnapshot;queueMicrotask(()=>{window.__g7SetLocalOverrideKeys===ie&&(window.__g7SetLocalOverrideKeys=void 0),window.__g7ForcedLocalFields===ce&&(window.__g7ForcedLocalFields=void 0),window.__g7LastSetLocalSnapshot===Z&&(window.__g7LastSetLocalSnapshot=void 0)})}}},[e._local]);const q=N.useRef(O);N.useEffect(()=>{s._fromBase&&O&&q.current!==O&&(q.current=O,L({loadingActions:{}}))},[O,s._fromBase]);const z=N.useRef(""),W=N.useRef(!1),de=N.useRef(null),_e=N.useRef(null),Se=N.useRef({}),je=N.useRef({}),Fe=N.useRef(h),ze=T_(),Et=a_(),Q=Et?.getParentDataContext()??h;N.useEffect(()=>{if(e._localInit&&typeof e._localInit=="object"){const{_forceLocalInit:V,...ie}=e._localInit,ce=JSON.stringify(ie),Z=V!==void 0,ve=Lf(),pe=`${ce}:${V||"no-force"}`,Ee=f_({globalTrackedKey:ve.hash,instanceHandledKey:_e.current,trackingKey:pe});if(Ee==="apply"){_e.current=pe,ve.hash=pe,ve.timestamp=V,z.current=ce,Z&&(W.current=!0);const{_merge:Ke,...ke}=ie,Me=Ke||"shallow";L(Re=>Me==="replace"?{loadingActions:Re.loadingActions||{},...ke,hasChanges:!1}:Me==="deep"?fr(Re,{...ke,hasChanges:!1}):{...Re,...ke,hasChanges:!1}),e._globalSetState&&e._globalSetState(Re=>{const tt=Re?._local||{};let Pe;return Me==="replace"?Pe={...ke,hasChanges:!1}:Me==="deep"?Pe=fr(tt,{...ke,hasChanges:!1}):Pe={...tt,...ke,hasChanges:!1},{...Re,_local:Pe}}),i.invalidateCacheByKeys(["_local"]),lt.log("_localInit applied (data changed):",Object.keys(ie))}else if(Ee==="prune"){_e.current=pe;const{_merge:Ke,...ke}=ie;L(Re=>zc(Re,ke)),zc(k,ke)!==k&&(i.invalidateCacheByKeys(["_local"]),lt.log("_localInit pruned (applied by another renderer):",Object.keys(ke)))}de.current=e._localInit,u_(e._localInit)}},[e._localInit,h,i]);const{isTransitioning:ue}=Ay(),De=v_(),ee=f??De,{width:me}=Mf(),H=Sx(),T=N.useMemo(()=>{let V=s;if(s.type==="iterator"&&s.data){const{data:Z,itemName:ve,indexName:pe,...Ee}=s;V={...Ee,iteration:{source:Z,item_var:ve||"item",index_var:pe}}}if(!V.responsive)return V;const ie=Ci.getMatchingKey(V.responsive,me);if(!ie)return V;const ce=V.responsive[ie];return{...V,props:{...V.props,...ce.props},children:ce.children??V.children,text:ce.text??V.text,if:ce.if??V.if,iteration:ce.iteration??V.iteration,__responsiveChildrenKey:ce.children!==void 0?ie:void 0}},[s,me]),fe=N.useCallback(V=>{const ie=V?.__setStateId;if(L(ce=>{const Z=window.__g7PendingLocalState,pe=window.__g7SetLocalOverrideKeys||Z,Ee=pe?fr(ce,pe):ce;if(typeof V=="function"){const Re=V(Ee);return fr(Ee,Re)}const{__mergeMode:xe,__setStateId:Ke,...ke}=V;let Me;if(xe==="replace"?Me=ke:xe==="shallow"?Me={...Ee,...ke}:Me=fr(Ee,ke),xe!==void 0){const Re=window.__g7ForcedLocalFields;Re&&(window.__g7ForcedLocalFields={...Re,...ke})}return Me}),ie){const ce=oa();if(ce?.isEnabled()){const Z=T.id||"unknown",ve=T.name||"Unknown";setTimeout(()=>{ce.trackComponentRender?.(Z,ve,0,["_local"],[]),ce.completeStateChange?.(ie)},0)}}},[T.id,T.name]),he=d?.state??k,Ae=d?.setState??fe,se=N.useMemo(()=>{const V=e._localInit&&e._localInit!==de.current;let ie;V&&e._local?ie=e._local:ie=e._local?fr(e._local,he):he;const ce=window.__g7ForcedLocalFields;ce&&(ie=fr(ie,ce));const Z={...e,_local:ie},ve=e._computedDefinitions;if(ve&&Object.keys(ve).length>0){const pe=new $n,Ee={...Z,...ze?{_isolated:ze.state}:{}},xe={},Ke=oa(),ke=Ke?.isEnabled()??!1;for(const[Me,Re]of Object.entries(ve)){const tt=ke?Date.now():0,Pe=ke?e._computed?.[Me]:void 0;let Ve;try{if(typeof Re=="string")if(Re.startsWith("{{")&&Re.endsWith("}}")){const Ce=Re.slice(2,-2).trim(),He=jn(Ce)?pe.evaluatePipeExpression(Ce,Ee,{skipCache:!0}):pe.evaluateExpression(Ce,Ee,{skipCache:!0});xe[Me]=He}else xe[Me]=Re;else if(Re&&typeof Re=="object"&&"$switch"in Re){const Ce=pe.resolveSwitch(Re,Ee,{skipCache:!0});xe[Me]=Ce}}catch(Ce){lt.warn(`Failed to recalculate computed value: ${Me}`,Ce),xe[Me]=e._computed?.[Me],Ve=Ce instanceof Error?Ce.message:String(Ce)}if(ke&&(Ve||Pe!==xe[Me])){const He=Date.now()-tt;Ke.trackComputedProperty?.(Me,typeof Re=="string"?Re:JSON.stringify(Re),[{type:"_local",path:"_local",value:Z._local}],xe[Me],He,T.id,Ve),Pe!==xe[Me]&&Ke.trackComputedRecalc?.(Me,"dependency-change",Pe,xe[Me],He,{type:"_local",path:"_local"},T.id)}}Z._computed=xe}if(ze&&(Z._isolated=ze.state),Q&&(Z.$parent=Q),s.extensionPointProps){const pe=i.resolveObject(s.extensionPointProps,Z,y?{skipCache:!0}:void 0);Z.extensionPointProps=v&&l?eh(pe,l,n,Z):pe}return s.extensionPointCallbacks&&(Z.extensionPointCallbacks=s.extensionPointCallbacks),v&&(Z.$templateId===void 0&&n?.templateId&&(Z.$templateId=n.templateId),Z.$locale===void 0&&n?.locale&&(Z.$locale=n.locale)),Z},[e,he,ze?.state,Q,Et?.version,s.extensionPointProps,s.extensionPointCallbacks]);Se.current=se._local,je.current=se._computed||{},Fe.current=Q,N.useEffect(()=>{const V=oa();if(!V?.isEnabled())return;const ie=se._local;ie&&V.updateLocalState(ie);const ce=se._computed;ce&&V.updateComputedState(ce),Q&&V.updateParentContext?.(Q);const Z=T.id||`comp-${Date.now()}`,ve=T.name||"Unknown",pe={global:Object.keys(e._global||{}),local:Object.keys(ie||{}),context:d?Object.keys(d.state||{}):[]},Ee={type:d?"componentContext":"dynamicState",hasComponentContext:!!d,parentId:d?"parent":void 0};V.trackComponentStateSource?.(Z,ve,pe,Ee),he&&Object.keys(he).length>0&&V.trackDynamicState?.(Z,he);const xe=!!(T.expandChildren||T.props?.expandChildren);V.trackContextFlow?.(Z,ve,!!d,xe,!0)},[se._local,e,T.id,T.name,d,he,T.expandChildren,T.props?.expandChildren,Q]);const ge=N.useMemo(()=>({state:{...se._local},setState:Ae,stateRef:Se,computedRef:je,isolatedContext:ze,parentDataContext:se}),[se._local,Ae,k,ze,se]),$e=N.useMemo(()=>{const V=hs({if:T.if,condition:T.condition,conditions:T.conditions},se,i,T.id);if(T.if||T.condition!==void 0||T.conditions){const ce=oa();ce?.isEnabled()&&T.if&&ce.trackIfCondition(T.id||`if-${Date.now()}`,T.if,V)}return V},[T.if,T.conditions,se,i,T.id]),Te=N.useMemo(()=>{if(!T.slot)return null;const V=T.slot;if(V.startsWith("{{")&&V.endsWith("}}")){const ie=V.slice(2,-2).trim();try{const ce={componentId:T.id,componentName:T.name,propName:"slot"},Z=jn(ie)?i.evaluatePipeExpression(ie,se,void 0,ce):i.evaluateExpression(ie,se,ce);return lt.log(`[Slot] 표현식 평가: "${ie}" => "${Z}" (컴포넌트: ${T.id})`),typeof Z=="string"?Z:null}catch(ce){return lt.warn(`slot 표현식 평가 실패 (컴포넌트: ${T.id}):`,ce),null}}return lt.log(`[Slot] 정적 슬롯 ID: "${V}" (컴포넌트: ${T.id})`),V},[T.slot,T.id,se,i]),Ie=N.useMemo(()=>!Te||!T.id?"":`${T.id}-${Te}-${JSON.stringify(T.slotOrder??0)}`,[Te,T.id,T.slotOrder]),xt=N.useRef(null);N.useEffect(()=>{const V=window.__slotContextValue,ie=V?.isEnabled??!1;if(T.slot&&lt.log(`[Slot Registration] 컴포넌트: ${T.id}, isSlotEnabled: ${ie}, shouldRender: ${$e}, resolvedSlotId: ${Te}`),!ie||!$e){T.slot&&lt.log(`[Slot Registration] 등록 스킵 - isSlotEnabled: ${ie}, shouldRender: ${$e}`),xt.current&&T.id&&V&&(V.unregisterFromSlot(xt.current,T.id),xt.current=null);return}if(!Te||!T.id){T.slot&&lt.log(`[Slot Registration] 등록 스킵 - resolvedSlotId: ${Te}, id: ${T.id}`),xt.current&&T.id&&V&&(V.unregisterFromSlot(xt.current,T.id),xt.current=null);return}xt.current&&xt.current!==Te&&V.unregisterFromSlot(xt.current,T.id);const ce={...T,slot:void 0,slotOrder:void 0};return V.registerToSlot(Te,T.id,{componentDef:ce,dataContext:e,order:T.slotOrder??0,parentFormContext:f??null,getParentComponentContext:()=>ge,translationContext:n,registrationKey:Ie}),xt.current=Te,()=>{const Z=window.__slotContextValue;Te&&T.id&&Z&&Z.unregisterFromSlot(Te,T.id)}},[$e,Te,T,e,f,ge,n,Ie]);const rt=N.useCallback(V=>{if(typeof V=="string"){if(ac(V))return Kd(V);if(ic(V)){const ie=[],ce=V.replace(new RegExp(`${bo}([^${Si}]*)${Si}`,"g"),(ve,pe)=>(ie.push(pe),`${La}${ie.length-1}${La}`));let Z=ce;return/\$t:[a-zA-Z0-9._-]+/.test(ce)&&(Z=l.resolveTranslations(ce,n,se)),Z.replace(new RegExp(`${La}(\\d+)${La}`,"g"),(ve,pe)=>ie[parseInt(pe)])}if(V.startsWith("$t:defer:"))return V;if(/\$t:[a-zA-Z0-9._-]+/.test(V)){const ie=V.trim();return ie.startsWith("{")&&ie.endsWith("}")||ie.startsWith("[")&&ie.endsWith("]")?V:l.resolveTranslations(V,n,se)}return V}if(Array.isArray(V))return V.map(ie=>rt(ie));if(V&&typeof V=="object"){const ie={};for(const[ce,Z]of Object.entries(V))ie[ce]=rt(Z);return ie}return V},[l,n,se]),gt=N.useCallback(V=>yo(V),[]),at=N.useCallback(V=>Oa(V),[]),Yt=N.useMemo(()=>{let V={...T.props||{}};const ie=["cellChildren","expandChildren","expandContext","render"],Z=r.getMetadata(T.name)?.skipBindingKeys||[],ve=[...new Set([...ie,...Z])],pe=y?{skipCache:!0}:void 0,Ee={...pe??{},skipBindingKeys:ve},xe=Ce=>{if(pe)return pe;if(Ce.startsWith("_computed")||Ce.startsWith("$computed"))return{skipCache:!0}};for(const[Ce,He]of Object.entries(V))if(!ve.includes(Ce))if(typeof He=="string"){const nt=at(He);if(nt!==null){let Lt=!1,Bt=nt;nt.startsWith(lr)&&(Lt=!0,Bt=nt.slice(lr.length));const Nn={componentId:T.id,componentName:T.name,propName:Ce};let Gt;if(jn(Bt))try{Gt=i.evaluatePipeExpression(Bt,se,xe(Bt),Nn)}catch(Ft){lt.warn(`파이프 표현식 평가 실패 (컴포넌트: ${T.id}, prop: ${Ce}):`,Ft),Gt=void 0}else if(gt(Bt))try{Gt=i.evaluateExpression(Bt,se,Nn)}catch(Ft){lt.warn(`표현식 평가 실패 (컴포넌트: ${T.id}, prop: ${Ce}):`,Ft),Gt=void 0}else Gt=i.resolve(Bt,se,xe(Bt),Nn);V[Ce]=Lt&&Gt!=null?fs(Gt):Gt}else{const Lt={componentId:T.id,componentName:T.name,propName:Ce};V[Ce]=i.resolveBindings(He,se,pe,Lt)}}else Array.isArray(He)?V[Ce]=He.map(nt=>typeof nt=="string"?i.resolveBindings(nt,se,pe):typeof nt=="object"&&nt!==null?i.resolveObject(nt,se,Ee):nt):He&&typeof He=="object"&&(V[Ce]=i.resolveObject(He,se,Ee));for(const[Ce,He]of Object.entries(V))V[Ce]=rt(He);if(typeof V.style=="string"&&(V.style=_x(V.style)),V=sf(V,v?void 0:T.actions,se,{componentContext:ge,actionDispatcher:c}),T.classMap){const Ce=K0(T.classMap,se,i,{skipCache:!0});if(Ce){const He=V.className||"";V.className=He?`${He} ${Ce}`:Ce}}T.style&&(V.style=T.style),T.actions&&T.actions.length>0&&T.type==="composite"&&Object.assign(V,he),T.component_layout&&(V.__componentLayoutDefs=T.component_layout);const Ke=T.expandChildren||T.props?.expandChildren,ke=T.props?.cellChildren,Me=T.children&&T.children.length>0,Re=T.component_layout,tt=T.slot,Pe=T.props?.modalId,Ve=T.type==="composite";return(Ke||ke||Me||Re||tt||Pe||Ve)&&(V.__componentContext=ge),V},[T.props,T.actions,T.style,T.classMap,T.id,se,n,i,l,ge,he,rt,gt,at,y]),Ht=N.useRef(null),bt=N.useMemo(()=>Ht.current&&Ty(Ht.current,Yt)?Ht.current:(Ht.current=Yt,Yt),[Yt]),qe=N.useMemo(()=>{const V=T.id;if(typeof V!="string"||!V.includes("{{"))return V;const ie=i.resolveBindings(V,se,{skipCache:!0});return typeof ie=="string"?ie:V},[T.id,se,i]),mt=N.useMemo(()=>{const V=T.dataKey,ie=T.trackChanges,ce=T.debounce;if(V){const Z=V.startsWith("_global."),ve=Z?V.slice(8):V,pe=Z?e._global:se._local;return{dataKey:ve,trackChanges:ie??!1,debounce:ce,setState:Z?xe=>{e._globalSetState?e._globalSetState(xe):lt.warn("_global.formData 사용 시 _globalSetState가 필요합니다.")}:Ae,state:pe??{},_isGlobal:Z}}if(ee.dataKey)return ee},[T.dataKey,T.trackChanges,T.debounce,T.id,Ae,se._local,e._global,e._globalSetState,ee]),Dt=N.useRef(new Set);N.useEffect(()=>{Dt.current.clear()},[e._global?._remountKeys]);const zt=N.useCallback((V,ie)=>{const ce=e._global?._remountKeys;return V&&ce?.[V]&&!Dt.current.has(V)?(Dt.current.add(V),`${V}-remount-${ce[V]}`):V||ie},[e._global?._remountKeys]),kn=N.useMemo(()=>{if(T.text!==void 0){if(typeof T.text=="string"){const V=T.text;let ie=V;const ce={componentId:T.id,componentName:T.name,propName:"text",skipCache:!0},Z=at(V);if(Z!==null){let ve=!1,pe=Z;if(Z.startsWith(lr)&&(ve=!0,pe=Z.slice(lr.length)),jn(pe))try{ie=i.evaluatePipeExpression(pe,se,{skipCache:!0},ce)}catch(Ee){lt.warn(`text 파이프 표현식 평가 실패 (컴포넌트: ${T.id}):`,Ee),ie=""}else if(gt(pe))try{ie=i.evaluateExpression(pe,se,ce)}catch(Ee){lt.warn(`text 표현식 평가 실패 (컴포넌트: ${T.id}):`,Ee),ie=""}else ie=i.resolve(pe,se,{skipCache:!0},ce);ve&&ie!=null&&(ie=fs(ie))}else V.includes("{{")&&(ie=i.resolveBindings(V,se,{skipCache:!0},ce));return ie=rt(ie),ie??""}return T.text}return!T.children||T.children.length===0?null:T.children.map((V,ie)=>{if(typeof V=="string")return V;const ce=T.__responsiveChildrenKey,Z=ce?`responsive.${ce}.children`:"children",ve=D?`${D}.${Z}.${ie}`:`${ie}`,pe=V._fromBase?V.id||`child-${ie}`:zt(V.id,`child-${ie}`),Ee=!V._fromBase&&O?`${pe}_${O}`:pe;return yt.jsx(Vr,{componentDef:V,dataContext:se,translationContext:n,registry:r,bindingEngine:i,translationEngine:l,actionDispatcher:c,parentComponentContext:ge,parentFormContextProp:mt,isInsideIteration:y,isEditMode:v,onComponentSelect:S,onComponentHover:_,componentPath:ve,onDragStart:x,onDragEnd:A,layoutKey:O},Ee)})},[T.text,T.children,T.id,e,se,n,r,i,l,c,ge,mt,at,gt,rt,zt,y,v,S,_,D,x,A,O]),hr=N.useMemo(()=>{if(!T.iteration)return null;try{const V=af(T.iteration.source,se,i);if(!Array.isArray(V))return lt.warn(`iteration source가 배열이 아닙니다 (컴포넌트: ${T.id}):`,V),null;const ie=oa();return ie?.isEnabled()&&ie.trackIteration(T.id||`iteration-${Date.now()}`,T.iteration.source,T.iteration.item_var,T.iteration.index_var,V.length),V.map((ce,Z)=>{const ve={...se,[T.iteration.item_var]:ce,[`${T.iteration.item_var}_index`]:Z};T.iteration.index_var&&(ve[T.iteration.index_var]=Z);const pe=Z===0||Z===V.length-1;ie?.isEnabled()&&pe&&ie.trackNestedContext?.({componentId:`${T.id||"unknown"}-iter-${Z}`,componentType:"iteration",parentContext:{available:Object.keys(se),values:{}},ownContext:{added:[T.iteration.item_var,...T.iteration.index_var?[T.iteration.index_var]:[]],values:{[T.iteration.item_var]:ce,...T.iteration.index_var?{[T.iteration.index_var]:Z}:{}}},depth:1});const Ee={...T,iteration:void 0,responsive:void 0},xe=D?`${D}.iteration.${Z}`:`iteration.${Z}`,Ke=`${zt(T.id,"item")}-${Z}`;return yt.jsx(Vr,{componentDef:Ee,dataContext:ve,translationContext:n,registry:r,bindingEngine:i,translationEngine:l,actionDispatcher:c,parentComponentContext:ge,parentFormContextProp:mt,isInsideIteration:!0,isEditMode:v,onComponentSelect:S,onComponentHover:_,componentPath:xe,onDragStart:x,onDragEnd:A,layoutKey:O},Ke)})}catch(V){return lt.error(`iteration 렌더링 실패 (컴포넌트: ${T.id}):`,V),null}},[T.iteration,T.children,T.id,e,se,n,r,i,l,c,ge,mt,zt,v,S,_,D,x,A,O]),[Ot,Mi]=N.useState(0),ua=N.useMemo(()=>{if(!T.sortable||!T.itemTemplate)return null;const{sortable:V,itemTemplate:ie}=T;try{const ce=af(V.source,se,i);if(!Array.isArray(ce))return lt.warn(`sortable source가 배열이 아닙니다 (컴포넌트: ${T.id}):`,ce),null;if(ce.length===0)return null;const Z=V.itemKey||"id",ve=V.strategy||"verticalList",pe=V.itemVar||"$item",Ee=V.indexVar||"$index",xe=V.handle,Ke=V.wrapperElement,ke=(tt,Pe)=>{const Ve=T.actions?.filter(Ce=>Ce.event==="onSortEnd"||Ce.type==="onSortEnd");if(Mi(Ce=>Ce+1),Ve&&Ve.length>0&&c){const Ce={...se,$sortedItems:tt,$sortEvent:Pe};Ve.forEach(He=>{try{const nt=c.createHandler(He,Ce,ge),Lt=new Event("sortend");nt(Lt)}catch(nt){lt.error(`onSortEnd action failed: ${He.handler}`,nt)}})}},Me=tt=>{const Pe=T.actions?.filter(Ve=>Ve.event==="onSortStart"||Ve.type==="onSortStart");if(Pe&&Pe.length>0&&c){const Ve={...se,$activeId:tt.activeId};Pe.forEach(Ce=>{try{const He=c.createHandler(Ce,Ve,ge),nt=new Event("sortstart");He(nt)}catch(He){lt.error(`onSortStart action failed: ${Ce.handler}`,He)}})}},Re=ce.map((tt,Pe)=>{const Ve=String(tt[Z]),Ce={...se,[pe]:tt,[Ee]:Pe},He=D?`${D}.sortable.${Pe}`:`sortable.${Pe}`,nt=`${zt(T.id,"sortable-item")}-v${Ot}-${Ve}`;return yt.jsx(wx,{id:Ve,handle:xe,...Ke?{as:Ke}:{},children:(Ke&&ie.children?ie.children:[ie]).map((Lt,Bt)=>yt.jsx(Vr,{componentDef:Lt,dataContext:Ce,translationContext:n,registry:r,bindingEngine:i,translationEngine:l,actionDispatcher:c,parentComponentContext:ge,parentFormContextProp:void 0,isInsideIteration:!0,isEditMode:v,onComponentSelect:S,onComponentHover:_,componentPath:He,onDragStart:x,onDragEnd:A,layoutKey:O},`${nt}-child-${Bt}`))},nt)});return yt.jsx(bx,{items:ce,itemKey:Z,strategy:ve,onSortEnd:ke,onSortStart:Me,sortVersion:Ot,children:Re})}catch(ce){return lt.error(`sortable 렌더링 실패 (컴포넌트: ${T.id}):`,ce),null}},[T.sortable,T.itemTemplate,T.actions,T.id,e,se,n,r,i,l,c,ge,zt,v,S,_,D,x,A,Ot,O]),bn=N.useRef(!1);N.useEffect(()=>{if(bn.current)return;bn.current=!0;const V=oa();if(V?.isEnabled()&&V.trackMount(s.id,{name:s.name,type:s.type||"component",props:bt}),s.lifecycle?.onMount&&s.lifecycle.onMount.length>0)for(const ce of s.lifecycle.onMount)try{const Z=c.createHandler(ce,se,ge),ve=new Event("mount");Z(ve),lt.log(`Lifecycle onMount executed: ${ce.handler} (Component: ${s.id})`)}catch(Z){lt.error(`Lifecycle onMount failed: ${ce.handler} (Component: ${s.id})`,Z)}const ie=[];if(s.onComponentEvent&&s.onComponentEvent.length>0){const ce=window.G7Core;if(ce?.componentEvent?.on)for(const Z of s.onComponentEvent){if(!Z.event){lt.warn(`onComponentEvent: event name is required (Component: ${s.id})`);continue}const ve=async Ee=>{try{const xe={...se,_eventData:Ee},ke=await c.createHandler({handler:Z.handler,params:Z.params,onSuccess:Z.onSuccess,onError:Z.onError},xe,ge)(new CustomEvent(Z.event,{detail:Ee}));return lt.log(`onComponentEvent "${Z.event}" handled: ${Z.handler} (Component: ${s.id})`,{eventData:Ee,result:ke}),ke}catch(xe){throw lt.error(`onComponentEvent "${Z.event}" failed: ${Z.handler} (Component: ${s.id})`,xe),xe}},pe=ce.componentEvent.on(Z.event,ve);ie.push(pe),lt.log(`onComponentEvent: Subscribed to "${Z.event}" (Component: ${s.id})`)}else lt.warn(`onComponentEvent: G7Core.componentEvent is not available (Component: ${s.id})`)}return()=>{const ce=oa();ce?.isEnabled()&&ce.trackUnmount(s.id);for(const Z of ie)try{Z()}catch(ve){lt.error(`onComponentEvent: Failed to unsubscribe (Component: ${s.id})`,ve)}if(ie.length>0&&lt.log(`onComponentEvent: Unsubscribed ${ie.length} event(s) (Component: ${s.id})`),s.lifecycle?.onUnmount&&s.lifecycle.onUnmount.length>0)for(const Z of s.lifecycle.onUnmount)try{const ve=c.createHandler(Z,se,ge),pe=new Event("unmount");ve(pe),lt.log(`Lifecycle onUnmount executed: ${Z.handler} (Component: ${s.id})`)}catch(ve){lt.error(`Lifecycle onUnmount failed: ${Z.handler} (Component: ${s.id})`,ve)}}},[]);const Mn=N.useMemo(()=>{const V=bt.dataKey,ie=bt.trackChanges,ce=bt.debounce;return V?{dataKey:V,trackChanges:ie??!1,debounce:ce,setState:Ae,state:he}:null},[bt.dataKey,bt.trackChanges,bt.debounce,Ae,he]);N.useEffect(()=>{const V=T.dataKey||bt.dataKey;if(!V)return;const ie=oa();if(!ie?.isEnabled())return;const ce=[],Z=pe=>{if(pe)for(const Ee of pe){const xe=Ee?.props?.name;if(xe&&ce.push({name:xe,type:Ee.name||Ee.type||"unknown"}),Ee?.children&&Z(Ee.children),Ee?.slots)for(const Ke of Object.values(Ee.slots))Array.isArray(Ke)&&Z(Ke)}};if(s.children&&Z(s.children),s.slots)for(const pe of Object.values(s.slots))Array.isArray(pe)&&Z(pe);const ve=s.id||`form-${V}`;return ie.trackForm(ve,V,ce),()=>{ie.untrackForm(ve)}},[T,bt.dataKey,s.id,s.children]);const it=N.useRef(null),Un=N.useRef(void 0);N.useEffect(()=>{const V=bt?.name;if(!V||!ee.dataKey||!ee.setState||bt?.autoBinding===!1)return;const ie=`${ee.dataKey}.${V}`,ce=window.__g7AutoBindingPaths??new Map;return window.__g7AutoBindingPaths=ce,ce.set(ie,(ce.get(ie)??0)+1),()=>{const Z=ce.get(ie)??0;Z<=1?ce.delete(ie):ce.set(ie,Z-1)}},[bt?.name,bt?.autoBinding,ee.dataKey,ee.setState]);const vn=N.useMemo(()=>{const{dataKey:V,trackChanges:ie,debounce:ce,...Z}=bt,ve=Z.name;if(!ve||!ee.dataKey||!ee.setState)return Z;if(Z.autoBinding===!1){const{autoBinding:Ve,...Ce}=Z;return Ce}const pe=`${ee.dataKey}.${ve}`,Ee=S_(ee.state,pe),xe=Ee!==void 0?Ee:Z.value,ke=r.getMetadata(s.name)?.bindingType,Me=typeof xe=="boolean"&&(ke==="checked"||ke==="checkable"&&["checkbox","radio"].includes(Z?.type)),Re=ee.debounce,tt=Ve=>{const Ce=ee.state||{},He=Ry(Ce,pe,Ve);if(ee.trackChanges&&(He.hasChanges=!0),window.__g7PendingLocalState=Ex(He,window.__g7ForcedLocalFields,pe,Ve),ee.setState(He),ee._isGlobal)return;const nt=window.G7Core,Lt={[pe]:Ve};ee.trackChanges&&(Lt.hasChanges=!0),nt?.state?.setLocal?.(Lt,{render:!1})},Pe=(Ve,Ce)=>{Re&&Re>0?(it.current&&clearTimeout(it.current),it.current=setTimeout(()=>{tt(Ve),it.current=null,Ce&&(Ce(),window.__g7PendingLocalState=null)},Re)):(tt(Ve),Ce&&(Ce(),window.__g7PendingLocalState=null))};if(Me)return{...Z,checked:xe,onChange:Ce=>{const He=Ce.target.checked;tt(He),Z.onChange&&Z.onChange(Ce)}};{const Ve=He=>{const nt=He?.target?.value!==void 0?He.target.value:He;Re&&Re>0&&(Un.current=nt);const Lt=He?.target?{target:{value:nt,name:He.target.name,type:He.target.type,checked:He.target.checked},currentTarget:He.currentTarget?{value:nt,name:He.currentTarget.name}:void 0}:He;Pe(nt,()=>{Z.onChange&&Z.onChange(Lt)})};let Ce;return Un.current!==void 0?it.current!==null?Ce=Un.current:String(xe??"")===String(Un.current)?(Un.current=void 0,Ce=xe??""):Ce=Un.current:Ce=xe??"",{...Z,value:Ce,onChange:Ve}}},[bt,ee,ee.state,ee.debounce]),da=N.useMemo(()=>{const V=oa();if(V?.isEnabled()&&V.trackRender(s.name),!$e)return T.iteration?hr:null;if(T.sortable&&T.itemTemplate)return ua;if(T.iteration)return hr;if(T.type==="extension_point"){const{layout:ke,columns:Me,gap:Re,className:tt,...Pe}=T.props||{};let Ve=tt||"";return ke==="grid"&&Me?Ve=`${Ve} grid grid-cols-${Me} gap-${Re||4}`.trim():ke==="flex"&&(Ve=`${Ve} flex flex-col gap-${Re||4}`.trim()),yt.jsx("div",{id:qe,className:Ve||void 0,...Pe,children:kn})}const ie=r.getComponent(T.name);if(!ie)return lt.error(`컴포넌트를 찾을 수 없습니다: ${T.name} (ID: ${T.id})`,"componentDef:",JSON.stringify(T,null,2)),null;const ce=e._global?._remountKeys,Z={...vn,id:vn.id??qe,...ce&&Object.keys(ce).length>0&&{__remountTrigger:JSON.stringify(ce)}};if(H?.listeners&&H.handle&&vn["data-drag-handle"]!==void 0&&(Object.assign(Z,H.listeners),Z.style={...Z.style,cursor:H.isDragging?"grabbing":"grab"}),v){const ke=T.id||`auto_${T.name||T.type||"unknown"}_${Math.random().toString(36).substring(2,8)}`,Me=Pe=>{typeof Pe.preventDefault=="function"&&Pe.preventDefault(),S&&(Pe.stopPropagation(),S(ke,Pe))},Re={"data-editor-id":ke,"data-editor-name":T.name,"data-editor-type":T.type,onClick:Me};D&&(Re["data-editor-path"]=D);const tt=T.__editorSlotName??T.slot;typeof tt=="string"&&(Re["data-editor-slot"]=tt),_&&(Re.onMouseMove=Pe=>{Pe.stopPropagation(),_(ke,Pe)},Re.onMouseLeave=Pe=>{_(null,Pe)}),Object.assign(Z,Re),Z.editorAttrs=Re}const ve=T.type==="basic",pe=T.type==="layout",xe=ve||pe?(()=>{const ke={};for(const[Me,Re]of Object.entries(Z))Me.startsWith("__")||Me==="editorAttrs"&&ve||(ke[Me]=Re);return ke})():Z;let Ke=yt.jsx(ie,{...xe,children:kn});if(mt&&(Ke=yt.jsx(b_,{value:mt,children:Ke})),T.isolatedState){const ke=typeof T.isolatedState=="object"?T.isolatedState:{},Me=e?._isolatedInit,Re=Me?{...ke,...Me}:ke;Ke=yt.jsx(x_,{initialState:Re,scopeId:T.isolatedScopeId,children:Ke})}return Ke},[$e,T.iteration,T.sortable,T.itemTemplate,T.type,T.name,T.id,T.props,T.isolatedState,T.isolatedScopeId,r,vn,kn,hr,ua,H,Mn,v,S,_,x,A,D,e._global?._remountKeys]),pr=N.useMemo(()=>{const V=T.blur_until_loaded;if(!V||e?._global?.__isPreview)return!1;if(typeof V=="string"){const Z=at(V);if(Z!==null)try{const ve={componentId:T.id,componentName:T.name,propName:"blur_until_loaded"};return!!i.evaluateExpression(Z,se,ve)}catch(ve){return lt.warn(`blur_until_loaded 표현식 평가 실패 (컴포넌트: ${T.id}):`,ve),!1}return!1}if(typeof V=="object"&&V!==null){if(!V.enabled)return!1;if(V.data_sources)return(Array.isArray(V.data_sources)?V.data_sources:[V.data_sources]).some(Ee=>e[Ee]===void 0);if(ue)return!0;const Z=["route","query","_global","_local","_dataSourceErrors"];return Object.keys(e).filter(pe=>!Z.includes(pe)&&!pe.startsWith("_")).some(pe=>e[pe]===void 0)}if(ue)return!0;const ie=["route","query","_global","_local","_dataSourceErrors"];return Object.keys(e).filter(Z=>!ie.includes(Z)&&!Z.startsWith("_")).some(Z=>e[Z]===void 0)},[T.blur_until_loaded,T.id,ue,e,se,i,at]);if(pr){const V=T.blur_until_loaded;if(typeof V=="object"&&V?.data_sources){const ce=(Array.isArray(V.data_sources)?V.data_sources:[V.data_sources]).reduce((ve,pe)=>(ve[pe]=e[pe]===void 0?"UNDEFINED":"LOADED",ve),{}),Z=Object.keys(e).filter(ve=>!ve.startsWith("_"));lt.log(`[BLUR APPLIED] Component: ${T.id}, data_sources status:`,ce,"Available keys:",Z)}else lt.log(`[BLUR APPLIED] Component: ${T.id}, blur_until_loaded:`,V)}const un=N.useMemo(()=>{if(!T.blur_until_loaded)return{wrapperClasses:"",innerClasses:""};const V=Yt?.className||"";if(!V)return{wrapperClasses:"",innerClasses:""};const ie=[/^(sm:|md:|lg:|xl:|2xl:)?(col-span-|row-span-|col-start-|col-end-|row-start-|row-end-)/,/^(sm:|md:|lg:|xl:|2xl:)?(self-|place-self-|order-)/,/^(sm:|md:|lg:|xl:|2xl:)?(flex-shrink|flex-grow|flex-\d|basis-)/],ce=V.split(/\s+/).filter(Boolean),Z=[],ve=[];for(const pe of ce)ie.some(xe=>xe.test(pe))?Z.push(pe):ve.push(pe);return{wrapperClasses:Z.join(" "),innerClasses:ve.join(" ")}},[T.blur_until_loaded,Yt?.className]),Rn=window.__slotContextValue;return Te&&Rn?.isEnabled?null:yt.jsx(Ax,{componentId:s.id,componentName:s.name,children:T.blur_until_loaded?yt.jsx("div",{className:[un.wrapperClasses,pr?"opacity-50 blur-sm transition-all duration-300 pointer-events-none":void 0].filter(Boolean).join(" ")||void 0,children:da}):da})});Vr.displayName="DynamicRenderer",typeof window<"u"&&(window.__DynamicRenderer=Vr);function xx(s){const e={};try{const r=new URL(s,typeof window<"u"?window.location.origin:"http://localhost").searchParams,i=new Set;for(const l of r.keys()){if(i.has(l))continue;i.add(l);const c=r.getAll(l);c.length>1||l.endsWith("[]")?e[l]=c:e[l]=c[0]}}catch{}return e}function Tx(s){try{return new URL(s,typeof window<"u"?window.location.origin:"http://localhost").pathname}catch{return s.split("?")[0]}}const $i=class $i{constructor(){M(this,"config",{enabled:!1,maxHistorySize:100,logLevel:"info",serverEndpoint:"/_boost/g7-debug/dump-state",autoCapture:!0});M(this,"stateHistory",[]);M(this,"snapshotIdCounter",0);M(this,"stateWatchers",new Map);M(this,"currentLocalState",{});M(this,"currentComputedState",{});M(this,"currentParentContext");M(this,"actionHistory",[]);M(this,"actionWatchers",new Set);M(this,"cacheStats",{hits:0,misses:0,entries:0});M(this,"cacheDecisions",[]);M(this,"cacheDecisionIdCounter",0);M(this,"maxCacheDecisions",200);M(this,"currentRenderCycleId",null);M(this,"isInActionExecution",!1);M(this,"isInIteration",!1);M(this,"mountedComponents",new Map);M(this,"eventListeners",new Map);M(this,"mountWatchers",new Set);M(this,"unmountWatchers",new Set);M(this,"renderCounts",new Map);M(this,"bindingEvalCount",0);M(this,"profilingData",[]);M(this,"isProfiling",!1);M(this,"profilingStartTime",0);M(this,"activeRequests",new Map);M(this,"requestHistory",[]);M(this,"pendingDataSources",new Set);M(this,"requestWatchers",new Set);M(this,"wsConnections",new Map);M(this,"wsMessageHistory",[]);M(this,"wsMessageWatchers",new Set);M(this,"ifConditions",new Map);M(this,"iterations",new Map);M(this,"conditionWatchers",new Set);M(this,"forms",new Map);M(this,"formWatchers",new Set);M(this,"expressionHistory",[]);M(this,"expressionWatchers",new Set);M(this,"expressionIdCounter",0);M(this,"dataSources",new Map);M(this,"dataPathTransforms",[]);M(this,"maxDataPathTransforms",100);M(this,"nestedContexts",[]);M(this,"nestedContextIdCounter",0);M(this,"maxNestedContexts",100);M(this,"formBindingIssues",[]);M(this,"formBindingValidations",[]);M(this,"formBindingIssueIdCounter",0);M(this,"maxFormBindingIssues",100);M(this,"computedProperties",new Map);M(this,"computedRecalcLogs",[]);M(this,"computedRecalcIdCounter",0);M(this,"maxComputedRecalcLogs",100);M(this,"handlers",new Map);M(this,"componentEventSubscriptions",new Map);M(this,"componentEventEmitHistory",[]);M(this,"componentEventIdCounter",0);M(this,"maxComponentEventHistory",100);M(this,"stateRenderingLogs",[]);M(this,"currentStateChangeContext",null);M(this,"stateRenderingIdCounter",0);M(this,"componentRenderCounts",new Map);M(this,"stateToComponentMap",new Map);M(this,"maxStateRenderingLogs",100);M(this,"componentStateSources",new Map);M(this,"contextFlowNodes",new Map);M(this,"dynamicStates",new Map);M(this,"styleIssues",[]);M(this,"componentStyles",new Map);M(this,"authEvents",[]);M(this,"authHeaderHistory",[]);M(this,"authEventIdCounter",0);M(this,"maxAuthEventHistory",50);M(this,"logHistory",[]);M(this,"logIdCounter",0);M(this,"maxLogHistory",500);M(this,"currentLayout",null);M(this,"layoutHistory",[]);M(this,"layoutIdCounter",0);M(this,"layoutStats",{totalLoads:0,cacheHits:0,apiLoads:0});M(this,"maxLayoutHistory",50);M(this,"executionDetails",new Map);M(this,"stateChangeHistory",[]);M(this,"dataSourceChangeHistory",[]);M(this,"changeAlerts",[]);M(this,"changeExpectations",new Map);M(this,"executionIdCounter",0);M(this,"stateChangeIdCounter",0);M(this,"alertIdCounter",0);M(this,"maxExecutionDetails",100);M(this,"maxStateChangeHistory",200);M(this,"maxChangeAlerts",100);M(this,"sequenceExecutions",[]);M(this,"sequenceExecutionStack",[]);M(this,"sequenceIdCounter",0);M(this,"maxSequenceExecutions",50);M(this,"staleClosureWarnings",[]);M(this,"staleClosureIdCounter",0);M(this,"maxStaleClosureWarnings",100);M(this,"stateCaptureRegistry",new Map);M(this,"modalStates",new Map);M(this,"modalStateIssues",[]);M(this,"modalStateRelations",[]);M(this,"modalStateChangeLogs",[]);M(this,"modalStateIssueIdCounter",0);M(this,"modalStateChangeLogIdCounter",0);M(this,"maxModalStateIssues",100);M(this,"maxModalStateChangeLogs",200);M(this,"namedActionDefinitions",{});M(this,"namedActionRefLogs",[]);M(this,"namedActionRefIdCounter",0);M(this,"maxNamedActionRefLogs",200);M(this,"debounceActionHistory",[]);M(this,"dataSourceUpdateHistory",[]);M(this,"debounceActionIdCounter",0);M(this,"dataSourceUpdateIdCounter",0)}static getInstance(){return $i.instance||($i.instance=new $i),$i.instance}initialize(){if(this.config.enabled=this.checkDebugMode(),!this.config.enabled){console.log("[G7DevTools] 비활성화됨 (환경설정 > 고급 설정 > 디버그 모드를 켜세요)");return}console.log("[G7DevTools] 활성화됨"),this.setupGlobalErrorHandler()}checkDebugMode(){try{if(window.G7Config?.debug===!0)return!0;const r=window.G7Core?.state?.get?.();return r?.settings?.advanced?.debug_mode===!0||r?._global?.settings?.advanced?.debug_mode===!0}catch{return!1}}isEnabled(){return this.config.enabled}setupGlobalErrorHandler(){window.addEventListener("error",e=>{this.config.enabled&&this.logAction({id:this.generateId(),type:"globalError",startTime:Date.now(),status:"error",error:{name:"Error",message:e.message,stack:e.error?.stack}})}),window.addEventListener("unhandledrejection",e=>{this.config.enabled&&this.logAction({id:this.generateId(),type:"unhandledRejection",startTime:Date.now(),status:"error",error:{name:"UnhandledRejection",message:String(e.reason)}})})}captureStateSnapshot(e){if(!this.config.enabled)return;const n={id:++this.snapshotIdCounter,timestamp:Date.now(),source:e.source,prev:this.sanitizeObject(e.prev),next:this.sanitizeObject(e.next),diff:e.diff};this.stateHistory.push(n),this.stateHistory.length>this.config.maxHistorySize&&this.stateHistory.shift(),this.notifyStateWatchers(n)}getState(){try{const e=window.G7Core,n=e?.state?.get?.()||{},r={};if(e?._isolatedStates&&typeof e._isolatedStates=="object")for(const[i,l]of Object.entries(e._isolatedStates))r[i]=this.sanitizeObject(l);return{_global:n._global||n,_local:this.currentLocalState,_computed:this.currentComputedState,_isolated:Object.keys(r).length>0?r:void 0,$parent:this.currentParentContext}}catch{return{_global:{},_local:this.currentLocalState,_computed:this.currentComputedState}}}updateLocalState(e){this.config.enabled&&(this.currentLocalState=this.sanitizeObject(e))}updateComputedState(e){this.config.enabled&&(this.currentComputedState=this.sanitizeObject(e))}updateParentContext(e){this.config.enabled&&(this.currentParentContext=e?this.sanitizeObject(e):void 0)}getStateHistory(){return[...this.stateHistory]}getDualStorageMismatch(){const e=this.currentLocalState||{};let n={};try{n=(window.G7Core?.state?.get?.()||{})._local||{}}catch{n={}}const r=this.findMismatchedLeafPaths(e,n);return{hasMismatch:r.length>0,mismatchedPaths:r,storageA:e,storageB:n}}findMismatchedLeafPaths(e,n,r=""){const i=[],l=new Set([...Object.keys(e||{}),...Object.keys(n||{})]);for(const c of l){const d=r?`${r}.${c}`:c,f=e?.[c],h=n?.[c],m=f&&typeof f=="object"&&!Array.isArray(f),y=h&&typeof h=="object"&&!Array.isArray(h);if(m&&y)i.push(...this.findMismatchedLeafPaths(f,h,d));else{const v=f===void 0?"__undefined__":JSON.stringify(f),S=h===void 0?"__undefined__":JSON.stringify(h);v!==S&&i.push(d)}}return i}watchState(e,n){return this.stateWatchers.has(e)||this.stateWatchers.set(e,new Set),this.stateWatchers.get(e).add(n),()=>{this.stateWatchers.get(e)?.delete(n)}}notifyStateWatchers(e){if(this.stateWatchers.get("*")?.forEach(n=>{try{n(e.next,e.prev,"*")}catch(r){console.error("[G7DevTools] State watcher error:",r)}}),e.diff)for(const n of e.diff.changed)this.stateWatchers.get(n.path)?.forEach(r=>{try{r(n.newValue,n.oldValue,n.path)}catch(i){console.error("[G7DevTools] State watcher error:",i)}})}diffSnapshots(e,n){const r=this.stateHistory.find(l=>l.id===e),i=this.stateHistory.find(l=>l.id===n);return!r||!i?null:this.calculateDiff(r.next,i.next)}calculateDiff(e,n,r=""){const i={added:[],removed:[],changed:[]},l=new Set(Object.keys(e)),c=new Set(Object.keys(n));for(const d of c){const f=r?`${r}.${d}`:d;l.has(d)?JSON.stringify(e[d])!==JSON.stringify(n[d])&&i.changed.push({path:f,oldValue:e[d],newValue:n[d]}):i.added.push(f)}for(const d of l){const f=r?`${r}.${d}`:d;c.has(d)||i.removed.push(f)}return i}logAction(e){if(!this.config.enabled)return;const n=this.actionHistory.findIndex(r=>r.id===e.id);n>=0?this.actionHistory[n]={...this.actionHistory[n],...e}:(this.actionHistory.push(e),this.actionHistory.length>this.config.maxHistorySize&&this.actionHistory.shift()),this.isProfiling&&this.profilingData.push({type:"action",action:e.type,timestamp:performance.now(),duration:e.duration}),this.notifyActionWatchers(e)}getActionHistory(){return[...this.actionHistory]}watchActions(e){return this.actionWatchers.add(e),()=>{this.actionWatchers.delete(e)}}notifyActionWatchers(e){this.actionWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] Action watcher error:",r)}})}getActionMetrics(){const e=this.actionHistory.filter(l=>l.status==="success"),n=this.actionHistory.filter(l=>l.status==="error"),r={};for(const l of this.actionHistory)r[l.type]=(r[l.type]||0)+1;const i=e.reduce((l,c)=>l+(c.duration||0),0);return{totalActions:this.actionHistory.length,successCount:e.length,errorCount:n.length,averageDuration:e.length>0?i/e.length:0,actionsByType:r}}recordCacheHit(){this.config.enabled&&this.cacheStats.hits++}recordCacheMiss(){this.config.enabled&&this.cacheStats.misses++}updateCacheEntries(e){this.config.enabled&&(this.cacheStats.entries=e)}getCacheStats(){const e=this.cacheStats.hits+this.cacheStats.misses;return{...this.cacheStats,hitRate:e>0?this.cacheStats.hits/e:0}}resetCacheStats(){this.cacheStats={hits:0,misses:0,entries:0}}trackCacheDecision(e){if(!this.config.enabled)return;const n={id:`cache-${++this.cacheDecisionIdCounter}`,timestamp:Date.now(),expression:e.expression,decision:e.decision,reason:e.reason,context:{isInIteration:this.isInIteration,isInAction:this.isInActionExecution,renderCycleId:this.currentRenderCycleId||void 0,componentId:e.componentId,skipCacheOption:e.skipCacheOption},cachedValue:e.cachedValue!==void 0?this.safeClone(e.cachedValue):void 0,freshValue:e.freshValue!==void 0?this.safeClone(e.freshValue):void 0,valueMatch:e.cachedValue!==void 0&&e.freshValue!==void 0?JSON.stringify(e.cachedValue)===JSON.stringify(e.freshValue):void 0,duration:e.duration};this.cacheDecisions.push(n),this.cacheDecisions.length>this.maxCacheDecisions&&this.cacheDecisions.shift(),e.decision==="cache_hit"?this.cacheStats.hits++:(e.decision==="cache_miss"||e.decision==="skip_cache")&&this.cacheStats.misses++}startRenderCycle(e){return this.currentRenderCycleId=`render-${Date.now()}-${e||"root"}`,this.currentRenderCycleId}endRenderCycle(){this.currentRenderCycleId=null}startActionContext(){this.isInActionExecution=!0}endActionContext(){this.isInActionExecution=!1}startIterationContext(){this.isInIteration=!0}endIterationContext(){this.isInIteration=!1}getCacheDecisionTrackingInfo(){const e=this.getCacheDecisionStats();return{decisions:[...this.cacheDecisions],stats:e,timestamp:Date.now()}}getCacheDecisionStats(){const e=this.cacheDecisions;let n=0,r=0,i=0,l=0;const c={},d={};for(const h of e)h.decision==="cache_hit"?n++:h.decision==="cache_miss"?r++:h.decision==="skip_cache"?i++:h.decision==="invalidate"&&l++,c[h.reason]=(c[h.reason]||0)+1,h.context.componentId&&(d[h.context.componentId]=(d[h.context.componentId]||0)+1);const f=n+r+i;return{totalDecisions:e.length,cacheHits:n,cacheMisses:r,skipCacheCount:i,invalidateCount:l,byReason:c,byComponent:d,avgHitRate:f>0?n/f:0}}getRecentCacheDecisions(e=20,n){let r=[...this.cacheDecisions];return n&&(r=r.filter(i=>i.decision===n)),r.slice(-e)}clearCacheDecisionData(){this.cacheDecisions=[],this.cacheDecisionIdCounter=0}summarizePropsForLifecycle(e){if(!e||typeof e!="object")return e;const n={},r=["children","ref","key"];for(const[i,l]of Object.entries(e))if(!r.includes(i))if(l==null)n[i]=l;else if(Array.isArray(l))n[i]=`[Array(${l.length})]`;else if(typeof l=="object"){const c=Object.keys(l);c.length<=3?n[i]=`{${c.join(", ")}}`:n[i]=`{${c.slice(0,3).join(", ")}, ... +${c.length-3}}`}else typeof l=="string"&&l.length>50?n[i]=l.substring(0,50)+"...":typeof l=="function"?n[i]="[Function]":n[i]=l;return n}trackMount(e,n){if(!this.config.enabled)return;const r=this.summarizePropsForLifecycle(n.props),i={...n,props:r,id:e,mountTime:Date.now()};this.mountedComponents.set(e,i),this.mountWatchers.forEach(l=>{try{l({componentId:e,componentName:n.name,timestamp:i.mountTime})}catch(c){console.error("[G7DevTools] Mount watcher error:",c)}})}trackUnmount(e){if(!this.config.enabled)return;const n=this.mountedComponents.get(e),r=this.eventListeners.get(e)||[];r.length>0&&console.warn(`[G7DevTools] 컴포넌트 ${e} 언마운트 시 ${r.length}개 리스너 미정리`),n&&this.unmountWatchers.forEach(i=>{try{i({componentId:e,componentName:n.name,timestamp:Date.now(),orphanedListeners:r.length})}catch(l){console.error("[G7DevTools] Unmount watcher error:",l)}}),this.mountedComponents.delete(e)}trackListener(e,n,r){if(!this.config.enabled)return;const i=this.eventListeners.get(e)||[];i.push({type:n,target:r,addedAt:Date.now()}),this.eventListeners.set(e,i)}removeListener(e,n){if(!this.config.enabled)return;const r=this.eventListeners.get(e)||[],i=r.findIndex(l=>l.type===n);i>=0&&r.splice(i,1)}getMountedComponents(){return Array.from(this.mountedComponents.values())}getOrphanedListeners(){const e=[];for(const[n,r]of this.eventListeners)this.mountedComponents.has(n)||e.push(...r.map(i=>({...i,componentId:n})));return e}watchMount(e){return this.mountWatchers.add(e),()=>{this.mountWatchers.delete(e)}}watchUnmount(e){return this.unmountWatchers.add(e),()=>{this.unmountWatchers.delete(e)}}trackRender(e){if(!this.config.enabled)return;const n=this.renderCounts.get(e)||0;this.renderCounts.set(e,n+1),this.isProfiling&&this.profilingData.push({type:"render",component:e,timestamp:performance.now()})}trackBindingEval(e){this.config.enabled&&(this.bindingEvalCount++,this.isProfiling&&e&&this.profilingData.push({type:"binding",expression:e,timestamp:performance.now()}))}getRenderCount(){return new Map(this.renderCounts)}getBindingEvalCount(){return this.bindingEvalCount}getMemoryWarnings(){const e=[];try{const i=this.getState(),l=JSON.stringify(i).length;l>1e6&&e.push({type:"large-state",message:`상태 크기가 ${(l/1024/1024).toFixed(2)}MB입니다`,suggestion:"불필요한 데이터 정리 필요",severity:l>5e6?"error":"warning"})}catch{}this.stateHistory.length>this.config.maxHistorySize*.8&&e.push({type:"large-history",message:`상태 이력이 ${this.stateHistory.length}개입니다`,suggestion:"maxHistory 설정 조정 필요",severity:"warning"});const n=this.getOrphanedListeners().length;n>0&&e.push({type:"orphaned-listeners",message:`${n}개의 정리되지 않은 이벤트 리스너`,suggestion:"useEffect cleanup 또는 removeEventListener 확인",severity:n>10?"error":"warning"});const r=Array.from(this.renderCounts.entries()).filter(([,i])=>i>50);return r.length>0&&e.push({type:"excessive-renders",message:`${r.length}개 컴포넌트가 50회 이상 렌더링`,suggestion:"React.memo, useMemo, useCallback 사용 고려",severity:"warning"}),e}startProfiling(){this.config.enabled&&(this.isProfiling=!0,this.profilingData=[],this.profilingStartTime=performance.now(),console.log("[G7DevTools] 프로파일링 시작"))}stopProfiling(){this.isProfiling=!1;const e=performance.now()-this.profilingStartTime,n=this.analyzeProfile(e);return console.log("[G7DevTools] 프로파일링 완료",n),n}analyzeProfile(e){const n=this.profilingData.filter(h=>h.type==="render"),r=this.profilingData.filter(h=>h.type==="binding"),i=this.profilingData.filter(h=>h.type==="action"),l={};for(const h of n)h.component&&(l[h.component]||(l[h.component]={count:0,durations:[]}),l[h.component].count++,h.duration&&l[h.component].durations.push(h.duration));const c=Object.entries(l).map(([h,m])=>({name:h,renderCount:m.count,avgDuration:m.durations.length>0?m.durations.reduce((y,v)=>y+v,0)/m.durations.length:0})).sort((h,m)=>m.renderCount-h.renderCount).slice(0,10),d={};for(const h of r)h.expression&&(d[h.expression]=(d[h.expression]||0)+1);const f=Object.entries(d).sort(([,h],[,m])=>m-h).slice(0,10).map(([h])=>h);return{duration:e,entries:this.profilingData,summary:{totalRenders:n.length,totalBindings:r.length,totalActions:i.length,slowestComponents:c,hotPaths:f}}}resetPerformanceStats(){this.renderCounts.clear(),this.bindingEvalCount=0,this.profilingData=[]}trackRequest(e,n,r){if(!this.config.enabled)return"";const i=this.generateId(),l=Tx(e),c=xx(e);return this.activeRequests.set(i,{id:i,url:l,fullUrl:e,queryParams:c,method:n,startTime:Date.now(),status:"pending",requestBody:r?.requestBody?this.sanitizeObject(r.requestBody):void 0,dataSourceId:r?.dataSourceId}),this.isProfiling&&this.profilingData.push({type:"network",timestamp:performance.now()}),i}completeRequest(e,n,r){if(!this.config.enabled)return;const i=this.activeRequests.get(e);if(!i)return;const l={...i,status:n>=200&&n<300?"success":"error",statusCode:n,duration:Date.now()-i.startTime,endTime:Date.now(),response:this.sanitizeObject(r)};this.requestHistory.push(l),this.activeRequests.delete(e),this.requestHistory.length>this.config.maxHistorySize&&this.requestHistory.shift(),this.notifyRequestWatchers(l)}failRequest(e,n){if(!this.config.enabled)return;const r=this.activeRequests.get(e);if(!r)return;const i={...r,status:"error",error:n,duration:Date.now()-r.startTime,endTime:Date.now()};this.requestHistory.push(i),this.activeRequests.delete(e),this.notifyRequestWatchers(i)}trackDataSource(e){this.config.enabled&&this.pendingDataSources.add(e)}completeDataSource(e){this.config.enabled&&this.pendingDataSources.delete(e)}getActiveRequests(){return Array.from(this.activeRequests.values())}getRequestHistory(){return[...this.requestHistory]}getPendingDataSources(){return Array.from(this.pendingDataSources)}watchRequest(e){return this.requestWatchers.add(e),()=>{this.requestWatchers.delete(e)}}notifyRequestWatchers(e){this.requestWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] Request watcher error:",r)}})}trackWebSocketConnection(e,n,r){this.config.enabled&&this.wsConnections.set(e,{id:e,url:n,state:r,connectedAt:r==="open"?Date.now():void 0})}trackWebSocketMessage(e,n,r,i){if(!this.config.enabled)return;const l={id:this.generateId(),connectionId:e,direction:n,type:r,payload:this.sanitizeObject(i),timestamp:Date.now(),sequence:this.wsMessageHistory.length};this.wsMessageHistory.push(l),this.wsMessageHistory.length>this.config.maxHistorySize&&this.wsMessageHistory.shift(),this.notifyWebSocketWatchers(l)}getWebSocketConnections(){return Array.from(this.wsConnections.values())}getWebSocketMessageHistory(){return[...this.wsMessageHistory]}getWebSocketConnectionState(){const e=Array.from(this.wsConnections.values());return e.some(n=>n.state==="open")?"connected":e.some(n=>n.state==="connecting")?"reconnecting":"disconnected"}watchWebSocketMessage(e){return this.wsMessageWatchers.add(e),()=>{this.wsMessageWatchers.delete(e)}}notifyWebSocketWatchers(e){this.wsMessageWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] WebSocket watcher error:",r)}})}trackIfCondition(e,n,r){if(!this.config.enabled)return;const i=this.ifConditions.get(e),l=i?.evaluatedValue;this.ifConditions.set(e,{id:e,expression:n,evaluatedValue:r,evaluationCount:(i?.evaluationCount||0)+1,lastEvaluated:Date.now()}),i&&l!==r&&this.notifyConditionWatchers({id:e,expression:n,oldValue:l,newValue:r,timestamp:Date.now()})}trackIteration(e,n){this.config.enabled&&this.iterations.set(e,{id:e,...n,lastRendered:Date.now()})}getIfConditions(){return Array.from(this.ifConditions.values())}getIterations(){return Array.from(this.iterations.values())}getScopeChain(e){const n=[],r=this.getState();return n.push({name:"_global",value:r._global,source:"global"}),n.push({name:"_local",value:r._local,source:"local"}),n.push({name:"_computed",value:r._computed,source:"computed"}),n}watchConditionChange(e){return this.conditionWatchers.add(e),()=>{this.conditionWatchers.delete(e)}}notifyConditionWatchers(e){this.conditionWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] Condition watcher error:",r)}})}trackForm(e,n,r){this.config.enabled&&this.forms.set(e,{id:e,dataKey:n,inputs:r,trackedAt:Date.now()})}trackFormChange(e,n,r){if(!this.config.enabled)return;const i={formId:e,inputName:n,value:r,timestamp:Date.now()};this.notifyFormWatchers(i)}untrackForm(e){this.forms.delete(e)}getForms(){return Array.from(this.forms.values())}getFormState(e){const n=this.getState();return this.getNestedValue(n,e)||{}}getBindingPath(e,n){return`${e}.${n}`}watchFormChange(e){return this.formWatchers.add(e),()=>{this.formWatchers.delete(e)}}notifyFormWatchers(e){this.formWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] Form watcher error:",r)}})}trackFormBindingIssue(e,n,r){if(!this.config.enabled)return;const i={id:`form-issue-${++this.formBindingIssueIdCounter}`,timestamp:Date.now(),type:e,severity:n,formId:r.formId,formDataKey:r.formDataKey,inputInfo:r.inputInfo,contextInfo:r.contextInfo,description:r.description,suggestion:r.suggestion,docLink:r.docLink};this.formBindingIssues.push(i),this.formBindingIssues.length>this.maxFormBindingIssues&&this.formBindingIssues.shift()}validateFormBinding(e,n,r,i){const l=r.map(f=>{const h=[];let m=!0;return f.name||(h.push("Input에 name 속성이 없습니다"),m=!1,this.trackFormBindingIssue("missing-input-name","error",{formId:e,formDataKey:n,inputInfo:{name:f.name,type:f.type},description:"Input에 name 속성이 없어 자동 바인딩이 동작하지 않습니다",suggestion:"Input에 name 속성을 추가하세요",docLink:"troubleshooting-components-form.md"})),n||(h.push("Form에 dataKey가 없습니다"),m=!1),{inputName:f.name||"(unnamed)",inputType:f.type,bindingPath:n&&f.name?`${n}.${f.name}`:"-",isValid:m,currentValue:f.value,issues:h}});if(n||this.trackFormBindingIssue("missing-datakey","error",{formId:e,description:"Form에 dataKey가 설정되지 않아 자동 바인딩이 동작하지 않습니다",suggestion:"Form 컴포넌트에 dataKey props를 설정하세요",docLink:"troubleshooting-components-form.md"}),i.isContextBroken){const f=i.breakReason?.includes("sortable")?"sortable-context-break":i.breakReason?.includes("modal")?"modal-context-isolation":"context-not-propagated";this.trackFormBindingIssue(f,"warning",{formId:e,formDataKey:n,contextInfo:{hasParentFormContext:i.hasParentContext,parentFormContextProp:i.parentContextProp,isInsideSortable:i.breakReason?.includes("sortable")||!1,isInsideModal:i.breakReason?.includes("modal")||!1,depth:0},description:i.breakReason||"Form 컨텍스트가 제대로 전파되지 않았습니다",suggestion:"parentFormContextProp={undefined}를 확인하거나 중첩 구조를 검토하세요",docLink:"troubleshooting-components-form.md"})}const c={formId:e,dataKey:n,timestamp:Date.now(),contextPropagation:i,inputBindings:l,isValid:l.every(f=>f.isValid)&&!!n&&!i.isContextBroken,issueCount:l.filter(f=>!f.isValid).length+(n?0:1)+(i.isContextBroken?1:0)},d=this.formBindingValidations.findIndex(f=>f.formId===e);return d>=0?this.formBindingValidations[d]=c:this.formBindingValidations.push(c),c}getFormBindingValidationTrackingInfo(){const e=this.getFormBindingValidationStats();return{issues:[...this.formBindingIssues],validations:[...this.formBindingValidations],stats:e,timestamp:Date.now()}}getFormBindingValidationStats(){const e={"missing-datakey":0,"missing-input-name":0,"context-not-propagated":0,"sortable-context-break":0,"modal-context-isolation":0,"duplicate-input-name":0,"value-type-mismatch":0,"binding-path-invalid":0},n={info:0,warning:0,error:0};for(const i of this.formBindingIssues)e[i.type]++,n[i.severity]++;const r=Object.entries(e).filter(([,i])=>i>0).sort((i,l)=>l[1]-i[1]).slice(0,5).map(([i,l])=>({type:i,count:l,description:this.getIssueTypeDescription(i)}));return{totalFormsValidated:this.formBindingValidations.length,validForms:this.formBindingValidations.filter(i=>i.isValid).length,formsWithIssues:this.formBindingValidations.filter(i=>!i.isValid).length,totalIssues:this.formBindingIssues.length,byIssueType:e,bySeverity:n,topIssues:r}}getIssueTypeDescription(e){return{"missing-datakey":"Form에 dataKey 누락","missing-input-name":"Input에 name 속성 누락","context-not-propagated":"Form 컨텍스트 전파 실패","sortable-context-break":"Sortable 컨테이너에서 컨텍스트 단절","modal-context-isolation":"모달에서 부모 Form 컨텍스트 격리","duplicate-input-name":"동일 Form 내 중복 Input name","value-type-mismatch":"값 타입과 Input 타입 불일치","binding-path-invalid":"바인딩 경로 유효하지 않음"}[e]||e}clearFormBindingIssues(){this.formBindingIssues=[],this.formBindingValidations=[],this.formBindingIssueIdCounter=0}trackComputedProperty(e,n,r,i,l,c,d){if(!this.config.enabled)return;const f=`computed-${e}-${c||"global"}`,h={id:f,name:e,expression:n,componentId:c,dependencies:r,currentValue:this.safeClone(i),lastComputedAt:Date.now(),computationTime:l,error:d};this.computedProperties.set(f,h)}trackComputedRecalc(e,n,r,i,l,c,d){if(!this.config.enabled)return;const f=`computed-${e}-${d||"global"}`,h=JSON.stringify(r)!==JSON.stringify(i),m={id:`recalc-${++this.computedRecalcIdCounter}`,computedId:f,computedName:e,timestamp:Date.now(),trigger:n,triggeredBy:c,previousValue:this.safeClone(r),newValue:this.safeClone(i),valueChanged:h,computationTime:l,cascadeCount:0};this.computedRecalcLogs.push(m),this.computedRecalcLogs.length>this.maxComputedRecalcLogs&&this.computedRecalcLogs.shift();const y=this.computedProperties.get(f);y&&(y.currentValue=this.safeClone(i),y.lastComputedAt=Date.now(),y.computationTime=l)}analyzeComputedDependencyChain(e,n){const r=new Set,i=[];let l=!1,c,d=0;const f=(m,y)=>{if(d=Math.max(d,y),r.has(m))return l=!0,c=[...i,m],{name:m,type:"computed",children:[],depth:y};r.add(m),i.push(m);const v=this.computedProperties.get(`computed-${m}-${n||"global"}`),S=[];if(v)for(const _ of v.dependencies)_.type==="computed"?S.push(f(_.path,y+1)):S.push({name:_.path,type:_.type,children:[],depth:y+1});return i.pop(),r.delete(m),{name:m,type:"computed",children:S,depth:y}},h=f(e,0);return{root:e,tree:h,hasCycle:l,cyclePath:c,maxDepth:d}}getComputedDependencyTrackingInfo(){const e=Array.from(this.computedProperties.values()),n=this.getComputedDependencyStats(),r=[];for(const i of e){const l=this.analyzeComputedDependencyChain(i.name,i.componentId);r.push(l)}return{properties:e,recalcLogs:[...this.computedRecalcLogs],dependencyChains:r,stats:n,timestamp:Date.now()}}getComputedDependencyStats(){const e={"state-change":0,"datasource-update":0,"dependency-change":0,manual:0,initial:0},n={},r={};let i=0,l=0;for(const h of this.computedRecalcLogs)e[h.trigger]++,h.valueChanged||l++,n[h.computedName]=(n[h.computedName]||0)+1,r[h.computedName]||(r[h.computedName]=[]),r[h.computedName].push(h.computationTime),i+=h.computationTime;const c=Object.entries(n).sort((h,m)=>m[1]-h[1]).slice(0,5).map(([h,m])=>({name:h,count:m})),d=Object.entries(r).map(([h,m])=>({name:h,avgTime:m.reduce((y,v)=>y+v,0)/m.length})).sort((h,m)=>m.avgTime-h.avgTime).slice(0,5);let f=0;for(const h of this.computedProperties.values())this.analyzeComputedDependencyChain(h.name,h.componentId).hasCycle&&f++;return{totalComputed:this.computedProperties.size,totalRecalculations:this.computedRecalcLogs.length,unnecessaryRecalculations:l,avgComputationTime:this.computedRecalcLogs.length>0?i/this.computedRecalcLogs.length:0,topRecalculated:c,slowestComputed:d,cycleDetectionCount:f,byTrigger:e}}clearComputedTracking(){this.computedProperties.clear(),this.computedRecalcLogs=[],this.computedRecalcIdCounter=0}trackModalOpen(e){if(!this.config.enabled)return;const n={modalId:e.modalId,modalName:e.modalName,openedAt:Date.now(),closedAt:null,scopeType:e.scopeType||"isolated",parentModalId:e.parentModalId,componentId:e.componentId,initialState:e.initialState?{...e.initialState}:{},currentState:e.initialState?{...e.initialState}:{},stateChangeCount:0,isolatedStateKeys:e.isolatedStateKeys||[],sharedStateKeys:e.sharedStateKeys||[]};this.modalStates.set(e.modalId,n),this.validateModalDefinitionExists(e.modalId,e.modalName),e.parentModalId&&(this.modalStateRelations.find(i=>i.parentModalId===e.parentModalId&&i.childModalId===e.modalId)||this.modalStateRelations.push({parentModalId:e.parentModalId,childModalId:e.modalId,sharedKeys:e.sharedStateKeys||[],isolatedKeys:e.isolatedStateKeys||[],relationType:"parent-child"}))}trackModalClose(e,n){if(!this.config.enabled)return;const r=this.modalStates.get(e);r&&(r.closedAt=Date.now(),n&&(r.currentState={...n}),this.detectStateLeakage(r))}validateModalDefinitionExists(e,n){const r=this.currentLayout;if(!r?.layoutJson)return;const i=r.layoutJson.modals;if(!i){this.recordModalStateIssue({type:"missing-definition",modalId:e,modalName:n,severity:"error",description:`모달 "${e}"이(가) modalStack에 추가되었으나, 현재 레이아웃에 modals 섹션이 없습니다. 레이아웃 경로: ${r.layoutPath}`,affectedStateKeys:[],expectedValue:`modals 섹션에 id="${e}" 정의 존재`,actualValue:"modals 섹션 없음"});return}const l=Array.isArray(i)?i:Object.values(i);l.some(d=>d?.id===e||d?.props?.id===e)||this.recordModalStateIssue({type:"missing-definition",modalId:e,modalName:n,severity:"error",description:`모달 "${e}"이(가) modalStack에 추가되었으나, 렌더링된 레이아웃의 modals 섹션에 해당 ID의 정의가 없습니다. partial 로딩 실패, 레이아웃 병합 문제, extends 상속 누락 등을 확인하세요. 레이아웃 경로: ${r.layoutPath}`,affectedStateKeys:[],expectedValue:`modals 배열에 id="${e}" 항목 존재`,actualValue:`modals 배열에 ${l.length}개 모달 정의 (${l.map(d=>d?.id||"unknown").join(", ")})`})}trackModalStateChange(e){if(!this.config.enabled)return;const n=this.modalStates.get(e.modalId);if(!n)return;n.stateChangeCount++,n.currentState[e.stateKey]=e.newValue;const r=this.checkIsolationViolation(n,e.stateKey),i={id:`modal-change-${++this.modalStateChangeLogIdCounter}`,modalId:e.modalId,modalName:n.modalName,timestamp:Date.now(),stateKey:e.stateKey,previousValue:e.previousValue,newValue:e.newValue,changeSource:e.changeSource||"user-action",violatesIsolation:r};this.modalStateChangeLogs.push(i),this.modalStateChangeLogs.length>this.maxModalStateChangeLogs&&this.modalStateChangeLogs.shift(),r&&this.recordModalStateIssue({type:"isolation-violation",modalId:e.modalId,modalName:n.modalName,severity:"warning",description:`모달 '${n.modalName}'에서 격리된 상태 키 '${e.stateKey}'가 변경됨`,affectedStateKeys:[e.stateKey]})}detectStateLeakage(e){if(e.scopeType==="isolated")for(const n of e.isolatedStateKeys){const r=e.initialState[n],i=e.currentState[n];if(r!==i&&e.parentModalId){const l=this.modalStates.get(e.parentModalId);l&&l.currentState.hasOwnProperty(n)&&this.recordModalStateIssue({type:"state-leakage",modalId:e.modalId,modalName:e.modalName,severity:"error",description:`모달 닫힘 후 상태 '${n}'가 부모 모달로 유출될 수 있음`,affectedStateKeys:[n],leakedValue:i,expectedValue:r})}}}checkIsolationViolation(e,n){return e.scopeType==="isolated",!1}recordModalStateIssue(e){const n={id:`modal-issue-${++this.modalStateIssueIdCounter}`,type:e.type,modalId:e.modalId,modalName:e.modalName,timestamp:Date.now(),severity:e.severity,description:e.description,affectedStateKeys:e.affectedStateKeys,leakedValue:e.leakedValue,expectedValue:e.expectedValue,actualValue:e.actualValue,stackInfo:e.stackInfo};this.modalStateIssues.push(n),this.modalStateIssues.length>this.maxModalStateIssues&&this.modalStateIssues.shift()}getModalStateScopeTrackingInfo(){const e=Array.from(this.modalStates.values()),n=this.getModalStateScopeStats();return{modals:e,issues:[...this.modalStateIssues],relations:[...this.modalStateRelations],changeLogs:[...this.modalStateChangeLogs],stats:n,timestamp:Date.now()}}getModalStateScopeStats(){const e=Array.from(this.modalStates.values()),n={warning:0,error:0},r={"state-leakage":0,"isolation-violation":0,"parent-mutation":0,"orphaned-state":0,"scope-mismatch":0,"cleanup-failure":0,"missing-definition":0};for(const l of this.modalStateIssues)n[l.severity]++,r[l.type]++;const i={isolated:0,shared:0,inherited:0};for(const l of e)i[l.scopeType]++;return{totalModals:e.length,openModals:e.filter(l=>l.closedAt===null).length,nestedModals:e.filter(l=>l.parentModalId!==void 0).length,totalIssues:this.modalStateIssues.length,issuesBySeverity:n,issuesByType:r,byScope:i,leakageDetectionCount:r["state-leakage"],cleanupFailureCount:r["cleanup-failure"]}}clearModalStateScopeTracking(){this.modalStates.clear(),this.modalStateIssues=[],this.modalStateRelations=[],this.modalStateChangeLogs=[],this.modalStateIssueIdCounter=0,this.modalStateChangeLogIdCounter=0}setNamedActionDefinitions(e){this.config.enabled&&(this.namedActionDefinitions=e||{})}trackNamedActionRef(e){if(!this.config.enabled)return;const n={...e,id:`named_action_ref_${++this.namedActionRefIdCounter}`};this.namedActionRefLogs.push(n),this.namedActionRefLogs.length>this.maxNamedActionRefLogs&&(this.namedActionRefLogs=this.namedActionRefLogs.slice(-this.maxNamedActionRefLogs))}getNamedActionTrackingInfo(){const e={};for(const r of this.namedActionRefLogs)e[r.actionRefName]=(e[r.actionRefName]||0)+1;const n=Object.keys(this.namedActionDefinitions).filter(r=>!e[r]);return{definitions:this.namedActionDefinitions,refLogs:[...this.namedActionRefLogs],stats:{totalDefinitions:Object.keys(this.namedActionDefinitions).length,totalRefs:this.namedActionRefLogs.length,refCountByName:e,unusedDefinitions:n},timestamp:Date.now()}}clearNamedActionTracking(){this.namedActionDefinitions={},this.namedActionRefLogs=[],this.namedActionRefIdCounter=0}trackExpressionEval(e){if(!this.config.enabled)return;const n={...e,id:`expr-${++this.expressionIdCounter}`,timestamp:Date.now(),warning:this.detectExpressionWarning(e)};this.expressionHistory.push(n),this.expressionHistory.length>500&&this.expressionHistory.shift(),this.isProfiling&&this.profilingData.push({type:"binding",expression:e.expression,timestamp:performance.now(),duration:e.duration}),this.notifyExpressionWatchers(n)}detectExpressionWarning(e){const{expression:n,result:r,resultType:i,method:l,duration:c}=e;if(i==="undefined"&&!n.includes("??")&&!n.includes("||")&&/^[a-zA-Z_$][a-zA-Z0-9_$.]*$/.test(n.replace(/{{|}}/g,"").trim()))return{type:"undefined-result",message:"표현식 결과가 undefined입니다",suggestion:`데이터가 로드되었는지 확인하거나 fallback 값을 추가하세요: ${n} ?? ''`};if(i==="null")return{type:"null-result",message:"표현식 결과가 null입니다",suggestion:`nullish coalescing 연산자를 사용하세요: ${n} ?? ''`};if(l==="resolveBindings"&&i==="string"){const d=String(r);if(d.includes("[object Object]")||/^\[.*\]$/.test(d))return{type:"array-to-string",message:"배열/객체가 문자열로 변환되었습니다",suggestion:"evaluateExpression()을 사용하여 원본 타입을 유지하세요"}}if(l==="resolveBindings"&&i==="string"&&String(r).includes("[object Object]"))return{type:"object-to-string",message:"객체가 [object Object]로 변환되었습니다",suggestion:"evaluateExpression()을 사용하거나 특정 속성에 접근하세요"};if(i==="undefined"&&n.includes(".")&&!n.includes("?.")){const d=n.replace(/{{|}}/g,"").trim().split(".");if(d.length>=2)return{type:"missing-optional-chain",message:"Optional chaining(?.) 누락 가능성",suggestion:`안전한 접근을 위해 ?. 사용을 고려하세요: ${d.join("?.")}`}}if((n.includes("{{item.")||n.includes("{{index}}"))&&Array.from(this.iterations.values()).some(h=>h.itemVar!=="item"))return{type:"wrong-iteration-var",message:"'item'/'index' 대신 iteration에서 정의한 변수명을 사용해야 합니다",suggestion:"iteration의 item_var/index_var에 정의된 변수명을 확인하세요"};if(c&&c>10)return{type:"slow-evaluation",message:`표현식 평가에 ${c.toFixed(2)}ms 소요됨`,suggestion:"복잡한 표현식을 단순화하거나 computed 값으로 분리하세요"}}getExpressions(){return[...this.expressionHistory]}getExpressionWarnings(){return this.expressionHistory.filter(e=>e.warning!=null)}searchExpressions(e){const n=e.toLowerCase();return this.expressionHistory.filter(r=>r.expression.toLowerCase().includes(n)||r.componentName?.toLowerCase().includes(n)||r.propName?.toLowerCase().includes(n))}getExpressionStats(){const e=this.expressionHistory,n=new Set(e.map(f=>f.expression)),r=e.filter(f=>f.warning!=null),i=e.filter(f=>f.fromCache),l=e.filter(f=>f.duration!=null).map(f=>f.duration),c={};for(const f of e)c[f.resultType]=(c[f.resultType]||0)+1;const d={};for(const f of r)f.warning&&(d[f.warning.type]=(d[f.warning.type]||0)+1);return{totalEvaluations:e.length,uniqueExpressions:n.size,warningCount:r.length,cacheHitRate:e.length>0?i.length/e.length:0,averageDuration:l.length>0?l.reduce((f,h)=>f+h,0)/l.length:0,byType:c,byWarning:d}}clearExpressions(){this.expressionHistory=[],this.expressionIdCounter=0}watchExpressions(e){return this.expressionWatchers.add(e),()=>{this.expressionWatchers.delete(e)}}notifyExpressionWatchers(e){this.expressionWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] Expression watcher error:",r)}})}setLogLevel(e){this.config.logLevel=e}setMaxHistory(e){this.config.maxHistorySize=Math.max(10,Math.min(1e3,e))}setServerEndpoint(e){this.config.serverEndpoint=e}getConfig(){return{...this.config}}generateId(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}sanitizeObject(e,n=new WeakSet){if(e===null||typeof e!="object")return e;if(n.has(e))return"[Circular]";if(n.add(e),Array.isArray(e))return e.map(i=>this.sanitizeObject(i,n));const r={};for(const i of Object.keys(e))try{r[i]=this.sanitizeObject(e[i],n)}catch{r[i]="[Unable to serialize]"}return r}getNestedValue(e,n){if(!n)return e;const r=n.split(".");let i=e;for(const l of r){if(i==null)return;i=i[l]}return i}getLifecycleInfo(){return{mountedComponents:Array.from(this.mountedComponents.values()),orphanedListeners:this.getOrphanedListeners()}}getPerformanceInfo(){return{renderCounts:this.renderCounts,bindingEvalCount:this.bindingEvalCount,memoryWarnings:this.getMemoryWarnings()}}getNetworkInfo(){return{activeRequests:Array.from(this.activeRequests.values()),requestHistory:[...this.requestHistory],pendingDataSources:Array.from(this.pendingDataSources)}}getConditionalInfo(){return{ifConditions:Array.from(this.ifConditions.values()),iterations:Array.from(this.iterations.values())}}getFormInfo(){return Array.from(this.forms.values())}getWebSocketInfo(){return{connections:Array.from(this.wsConnections.values()),messageHistory:[...this.wsMessageHistory],connectionState:this.getWebSocketConnectionState()}}getStateAtTime(e){const n=[...this.stateHistory].reverse().find(r=>r.timestamp<=e);if(n)return{_global:n.next,_local:{}}}reset(){this.stateHistory=[],this.actionHistory=[],this.cacheStats={hits:0,misses:0,entries:0},this.cacheDecisions=[],this.cacheDecisionIdCounter=0,this.currentRenderCycleId=null,this.isInActionExecution=!1,this.isInIteration=!1,this.mountedComponents.clear(),this.eventListeners.clear(),this.renderCounts.clear(),this.bindingEvalCount=0,this.profilingData=[],this.activeRequests.clear(),this.requestHistory=[],this.pendingDataSources.clear(),this.wsConnections.clear(),this.wsMessageHistory=[],this.ifConditions.clear(),this.iterations.clear(),this.forms.clear(),this.expressionHistory=[],this.expressionIdCounter=0,this.dataSources.clear(),this.dataPathTransforms=[],this.nestedContexts=[],this.nestedContextIdCounter=0,this.formBindingIssues=[],this.formBindingValidations=[],this.formBindingIssueIdCounter=0,this.computedProperties.clear(),this.computedRecalcLogs=[],this.computedRecalcIdCounter=0,this.modalStates.clear(),this.modalStateIssues=[],this.modalStateRelations=[],this.modalStateChangeLogs=[],this.modalStateIssueIdCounter=0,this.modalStateChangeLogIdCounter=0,this.logHistory=[],this.logIdCounter=0}getExpressionInfo(){return{expressions:this.getExpressions(),stats:this.getExpressionStats()}}trackLog(e,n,r){if(!this.config.enabled)return;const i=r.map(c=>{if(typeof c=="string")return c;try{return JSON.stringify(c)}catch{return String(c)}}).join(" "),l={id:`log-${++this.logIdCounter}`,level:e,prefix:n,message:i,args:this.sanitizeObject(r),timestamp:Date.now(),stack:e==="error"?new Error().stack:void 0};this.logHistory.push(l),this.logHistory.length>this.maxLogHistory&&this.logHistory.shift()}trackAction(e){if(!this.config.enabled)return;const n={id:`debounce-action-${++this.debounceActionIdCounter}`,...e,timestamp:Date.now()};this.debounceActionHistory.push(n),this.debounceActionHistory.length>100&&this.debounceActionHistory.shift()}trackDataSourceUpdate(e){if(!this.config.enabled)return;const n={id:`ds-update-${++this.dataSourceUpdateIdCounter}`,...e};this.dataSourceUpdateHistory.push(n),this.dataSourceUpdateHistory.length>100&&this.dataSourceUpdateHistory.shift()}getDebounceActionHistory(e){let n=[...this.debounceActionHistory];return e?.handler&&(n=n.filter(r=>r.handler.includes(e.handler))),e?.status&&(n=n.filter(r=>r.status===e.status)),e?.limit&&(n=n.slice(-e.limit)),n}getDataSourceUpdateHistory(e){let n=[...this.dataSourceUpdateHistory];return e?.dataSourceId&&(n=n.filter(r=>r.dataSourceId===e.dataSourceId)),e?.updateType&&(n=n.filter(r=>r.updateType===e.updateType)),e?.limit&&(n=n.slice(-e.limit)),n}getLogs(e){let n=[...this.logHistory];if(e?.level){const r=Array.isArray(e.level)?e.level:[e.level];n=n.filter(i=>r.includes(i.level))}if(e?.prefix){const r=e.prefix.toLowerCase();n=n.filter(i=>i.prefix.toLowerCase().includes(r))}if(e?.search){const r=e.search.toLowerCase();n=n.filter(i=>i.message.toLowerCase().includes(r))}return e?.since&&(n=n.filter(r=>r.timestamp>=e.since)),e?.limit&&(n=n.slice(-e.limit)),n}getLogStats(){const n=Date.now()-6e4,r={log:0,warn:0,error:0,debug:0,info:0},i={};let l=0,c=0;for(const d of this.logHistory)r[d.level]++,i[d.prefix]=(i[d.prefix]||0)+1,d.timestamp>=n&&(d.level==="error"&&l++,d.level==="warn"&&c++);return{totalLogs:this.logHistory.length,byLevel:r,byPrefix:i,recentErrors:l,recentWarnings:c}}clearLogs(){this.logHistory=[],this.logIdCounter=0}getLogInfo(){return{entries:this.getLogs(),stats:this.getLogStats()}}trackDataSourceDefinition(e){this.config.enabled&&this.dataSources.set(e.id,{...e,status:"idle"})}trackDataSourceLoading(e){if(!this.config.enabled)return;const n=this.dataSources.get(e);n&&this.dataSources.set(e,{...n,status:"loading"})}trackDataSourceLoaded(e,n,r){if(!this.config.enabled)return;const i=this.dataSources.get(e);if(!i)return;let l,c,d=r;n&&(Array.isArray(n)?(l=n.length,c=n.length>0&&typeof n[0]=="object"?Object.keys(n[0]):void 0):typeof n=="object"&&(Array.isArray(n.data)?(d=d||"data",l=n.data.length,c=n.data.length>0&&typeof n.data[0]=="object"?Object.keys(n.data[0]):void 0):Array.isArray(n.items)?(d=d||"items",l=n.items.length,c=n.items.length>0&&typeof n.items[0]=="object"?Object.keys(n.items[0]):void 0):c=Object.keys(n))),this.dataSources.set(e,{...i,status:"loaded",dataPath:d,itemCount:l,keys:c,lastLoadedAt:Date.now(),error:void 0})}trackDataSourceError(e,n){if(!this.config.enabled)return;const r=this.dataSources.get(e);r&&this.dataSources.set(e,{...r,status:"error",error:n,lastLoadedAt:Date.now()})}untrackDataSource(e){this.dataSources.delete(e)}getDataSources(){return Array.from(this.dataSources.values())}getDataSource(e){return this.dataSources.get(e)}clearDataSources(){this.dataSources.clear()}trackDataPathTransform(e){if(!this.config.enabled)return;let n=this.dataPathTransforms.find(r=>r.dataSourceId===e.dataSourceId);n||(n={dataSourceId:e.dataSourceId,timestamp:Date.now(),transformSteps:[],warnings:[]},this.dataPathTransforms.push(n),this.dataPathTransforms.length>this.maxDataPathTransforms&&this.dataPathTransforms.shift()),n.transformSteps.push({step:e.step,inputPath:e.inputPath,inputValue:this.safeClone(e.inputValue),outputPath:e.outputPath,outputValue:this.safeClone(e.outputValue),config:e.config}),e.warning&&n.warnings.push(e.warning)}setDataPathFinalBinding(e,n){if(!this.config.enabled)return;const r=this.dataPathTransforms.find(i=>i.dataSourceId===e);r&&(r.finalBinding={expression:n.expression,resolvedPath:n.resolvedPath,value:this.safeClone(n.value)})}getDataPathTransformTrackingInfo(){const e=this.getDataPathTransformStats();return{transforms:[...this.dataPathTransforms],stats:e,timestamp:Date.now()}}getDataPathTransformStats(){const e=this.dataPathTransforms,n={};let r=0;const i={};for(const c of e){n[c.dataSourceId]=(n[c.dataSourceId]||0)+1,r+=c.warnings.length;for(const d of c.warnings)i[d]=(i[d]||0)+1}const l=Object.entries(i).map(([c,d])=>({warning:c,count:d})).sort((c,d)=>d.count-c.count).slice(0,10);return{totalTransforms:e.length,byDataSource:n,warningsCount:r,commonWarnings:l}}getDataPathTransformForDataSource(e){return this.dataPathTransforms.find(n=>n.dataSourceId===e)}clearDataPathTransforms(){this.dataPathTransforms=[]}trackNestedContext(e){if(!this.config.enabled)return"";const n=`nested-${++this.nestedContextIdCounter}`,r=[...new Set([...e.parentContext.available,...e.ownContext.added])],i={...e.parentContext.values,...e.ownContext.values},l={id:n,timestamp:Date.now(),componentId:e.componentId,componentType:e.componentType,parentContext:{available:e.parentContext.available,values:this.safeClone(e.parentContext.values)},ownContext:{added:e.ownContext.added,values:this.safeClone(e.ownContext.values)},mergedContext:{all:r,values:this.safeClone(i)},accessAttempts:[],depth:e.depth,parentId:e.parentId};return this.nestedContexts.push(l),this.nestedContexts.length>this.maxNestedContexts&&this.nestedContexts.shift(),n}trackNestedContextAccess(e,n){if(!this.config.enabled)return;const r=this.nestedContexts.find(i=>i.id===e);r&&r.accessAttempts.push({path:n.path,found:n.found,value:n.found?this.safeClone(n.value):void 0,error:n.error})}getNestedContextTrackingInfo(){const e=this.getNestedContextStats();return{contexts:[...this.nestedContexts],stats:e,timestamp:Date.now()}}getNestedContextStats(){const e=this.nestedContexts,n={expandChildren:0,cellChildren:0,iteration:0,modal:0,slot:0};let r=0,i=0;const l={};for(const d of e){n[d.componentType]++,d.depth>r&&(r=d.depth);for(const f of d.accessAttempts)f.found||(i++,l[f.path]=(l[f.path]||0)+1)}const c=Object.entries(l).map(([d,f])=>({path:d,count:f})).sort((d,f)=>f.count-d.count).slice(0,10);return{totalContexts:e.length,byType:n,maxDepth:r,failedAccessCount:i,commonFailedPaths:c}}getNestedContextForComponent(e){return this.nestedContexts.find(n=>n.componentId===e)}clearNestedContexts(){this.nestedContexts=[],this.nestedContextIdCounter=0}trackHandlerRegistration(e,n="custom",r,i){this.isEnabled&&this.handlers.set(e,{name:e,category:n,description:r,registeredAt:Date.now(),source:i})}trackHandlerUnregistration(e){this.isEnabled&&this.handlers.delete(e)}getHandlers(){return Array.from(this.handlers.values())}getHandler(e){return this.handlers.get(e)}getHandlersByCategory(e){return Array.from(this.handlers.values()).filter(n=>n.category===e)}clearHandlers(){this.handlers.clear()}trackEventSubscribe(e){if(!this.isEnabled)return;const n=this.componentEventSubscriptions.get(e),r=Date.now();n?(n.subscriberCount++,n.lastSubscribedAt=r):this.componentEventSubscriptions.set(e,{eventName:e,subscriberCount:1,firstSubscribedAt:r,lastSubscribedAt:r})}trackEventUnsubscribe(e){if(!this.isEnabled)return;const n=this.componentEventSubscriptions.get(e);n&&(n.subscriberCount--,n.subscriberCount<=0&&this.componentEventSubscriptions.delete(e))}trackEventEmit(e,n,r,i,l){if(!this.isEnabled)return;const c={id:`evt_${++this.componentEventIdCounter}`,eventName:e,data:this.sanitizeForLogging(n),timestamp:Date.now(),listenerCount:r,results:i?this.sanitizeForLogging(i):void 0,hasError:!!l,errorMessage:l?.message};this.componentEventEmitHistory.push(c),this.componentEventEmitHistory.length>this.maxComponentEventHistory&&(this.componentEventEmitHistory=this.componentEventEmitHistory.slice(-this.maxComponentEventHistory))}trackEventOff(e){this.isEnabled&&this.componentEventSubscriptions.delete(e)}trackEventClear(){this.isEnabled&&this.componentEventSubscriptions.clear()}getComponentEventInfo(){const e=Array.from(this.componentEventSubscriptions.values());return{subscriptions:e,emitHistory:[...this.componentEventEmitHistory],totalSubscribers:e.reduce((n,r)=>n+r.subscriberCount,0),totalEmits:this.componentEventEmitHistory.length}}getEventEmitHistory(){return[...this.componentEventEmitHistory]}getEventSubscriptions(){return Array.from(this.componentEventSubscriptions.values())}clearComponentEvents(){this.componentEventSubscriptions.clear(),this.componentEventEmitHistory=[],this.componentEventIdCounter=0}sanitizeForLogging(e){if(e==null||typeof e!="object")return e;try{return JSON.parse(JSON.stringify(e))}catch{return"[Circular or Non-serializable]"}}startStateChange(e,n,r,i){if(!this.config.enabled)return"";const l=`setState_${++this.stateRenderingIdCounter}`;this.currentStateChangeContext={setStateId:l,startTime:performance.now(),changedPath:e,trigger:i||{},renderedComponents:[]};const c={id:`sr_${this.stateRenderingIdCounter}`,setStateId:l,statePath:e,oldValue:this.sanitizeForLogging(n),newValue:this.sanitizeForLogging(r),timestamp:Date.now(),triggeredBy:i||{},renderedComponents:[],totalRenderDuration:0,affectedBindingsCount:0};return this.stateRenderingLogs.push(c),this.stateRenderingLogs.length>this.maxStateRenderingLogs&&this.stateRenderingLogs.shift(),l}trackComponentRender(e,n,r,i=[],l=[],c){if(!this.config.enabled)return;const d=this.componentRenderCounts.get(n)||0;this.componentRenderCounts.set(n,d+1);for(const f of i)this.stateToComponentMap.has(f)||this.stateToComponentMap.set(f,new Set),this.stateToComponentMap.get(f).add(n);if(this.currentStateChangeContext){const f={componentId:e,componentName:n,renderDuration:r,accessedStatePaths:i,evaluatedBindings:l,renderOrder:this.currentStateChangeContext.renderedComponents.length,parentId:c};this.currentStateChangeContext.renderedComponents.push(f)}this.trackRender(n)}completeStateChange(e){if(!this.config.enabled||!this.currentStateChangeContext||this.currentStateChangeContext.setStateId!==e)return;const n=this.currentStateChangeContext,i=performance.now()-n.startTime,l=this.stateRenderingLogs.findIndex(c=>c.setStateId===e);if(l>=0){const c=this.stateRenderingLogs[l];c.renderedComponents=n.renderedComponents,c.totalRenderDuration=i,c.affectedBindingsCount=n.renderedComponents.reduce((d,f)=>d+f.evaluatedBindings.length,0)}this.currentStateChangeContext=null}getCurrentStateChangeContext(){return this.currentStateChangeContext}getStateRenderingLogs(){return[...this.stateRenderingLogs]}getStateRenderingInfo(){const e=this.stateRenderingLogs,n=Object.fromEntries(this.componentRenderCounts),r={};for(const[i,l]of this.stateToComponentMap)r[i]=Array.from(l);return{logs:e,componentRenderCounts:n,stateToComponentMap:r,stats:this.calculateStateRenderingStats()}}calculateStateRenderingStats(){const e=this.stateRenderingLogs;if(e.length===0)return{totalStateChanges:0,totalRenders:0,avgRenderDuration:0,avgComponentsPerChange:0,topRenderedComponents:[],topInfluentialPaths:[]};const n=e.reduce((d,f)=>d+f.renderedComponents.length,0),r=e.reduce((d,f)=>d+f.totalRenderDuration,0)/e.length,i=n/e.length,l=Array.from(this.componentRenderCounts.entries()).sort((d,f)=>f[1]-d[1]).slice(0,5).map(([d,f])=>({name:d,count:f})),c=Array.from(this.stateToComponentMap.entries()).sort((d,f)=>f[1].size-d[1].size).slice(0,5).map(([d,f])=>({path:d,affectedComponents:f.size}));return{totalStateChanges:e.length,totalRenders:n,avgRenderDuration:r,avgComponentsPerChange:i,topRenderedComponents:l,topInfluentialPaths:c}}getComponentsAffectedByState(e){const n=this.stateToComponentMap.get(e);return n?Array.from(n):[]}getComponentRenderHistory(e){return this.stateRenderingLogs.filter(n=>n.renderedComponents.some(r=>r.componentName===e))}clearStateRenderingLogs(){this.stateRenderingLogs=[],this.componentRenderCounts.clear(),this.stateToComponentMap.clear(),this.currentStateChangeContext=null,this.stateRenderingIdCounter=0}trackComponentStateSource(e,n,r,i){this.config.enabled&&this.componentStateSources.set(e,{componentId:e,componentName:n,stateSource:r,stateProvider:i})}trackDynamicState(e,n){this.config.enabled&&this.dynamicStates.set(e,n)}trackContextFlow(e,n,r,i,l,c){if(!this.config.enabled)return;const d={component:n,componentId:e,contextReceived:r,passedToChildren:i,usedInRender:l};if(this.contextFlowNodes.set(e,d),c){const f=this.contextFlowNodes.get(c);f&&(f.children||(f.children=[]),f.children.push(d))}}getStateHierarchyInfo(e=!0){const n=this.buildStateHierarchyLayers(),r=this.detectStateConflicts(n),i=Array.from(this.componentStateSources.values());return{layers:e?n.map(c=>({...c,values:this.summarizeValues(c.values,2)})):n,conflicts:r,componentStateSources:i,timestamp:Date.now()}}summarizeValues(e,n,r=0){if(e==null)return e;if(typeof e!="object")return typeof e=="string"&&e.length>100?e.substring(0,100)+`... (${e.length}자)`:e;if(r>=n){if(Array.isArray(e))return`[Array(${e.length})]`;const c=Object.keys(e);return`{${c.slice(0,5).join(", ")}${c.length>5?`, ... +${c.length-5}`:""}}`}if(Array.isArray(e))return e.length<=3?e.map(c=>this.summarizeValues(c,n,r+1)):{__type:"array",__length:e.length,__preview:e.slice(0,3).map(c=>this.summarizeValues(c,n,r+1))};const i={},l=Object.keys(e);for(const c of l)i[c]=this.summarizeValues(e[c],n,r+1);return i}buildStateHierarchyLayers(){const e=[];try{const r=window.G7Core?.state?.get?.();if(!r)return e;r._local&&e.push({name:"Global _local",type:"global",path:"_local",values:r._local,priority:1}),r._global&&e.push({name:"Global _global",type:"global",path:"_global",values:r._global,priority:1});for(const[l,c]of this.dynamicStates)c&&Object.keys(c).length>0&&e.push({name:`DynamicState (${l})`,type:"dynamicState",componentId:l,values:c,priority:2});const i=this.computeEffectiveState(r._local||{});e.push({name:"Effective _local (merged)",type:"effective",values:i,priority:3})}catch(n){console.warn("[G7DevTools] 상태 계층 빌드 실패:",n)}return e}computeEffectiveState(e){const n={...e};for(const[,r]of this.dynamicStates)r._local&&Object.assign(n,r._local);return n}detectStateConflicts(e){const n=[],r=e.find(l=>l.type==="global"&&l.path==="_local");if(!r)return n;const i=e.filter(l=>l.type==="dynamicState");for(const l of i){const c=l.values._local||l.values;for(const[d,f]of Object.entries(c)){const h=r.values[d];if(JSON.stringify(h)!==JSON.stringify(f)){const m=[],y=[];for(const v of this.componentStateSources.values())v.stateSource.local.some(_=>_===`_local.${d}`||_===d)&&(v.stateProvider.type==="dynamicState"?m.push(v.componentName):v.stateProvider.type==="globalState"&&y.push(v.componentName));n.push({path:`_local.${d}`,globalValue:h,dynamicStateValue:f,effectiveValue:f,usedBy:m,notUsedBy:y,severity:y.length>0?"warning":"info",description:y.length>0?`${y.join(", ")}은(는) globalState._local을 읽어 dynamicState 값을 사용하지 못함`:"dynamicState 값이 globalState와 다르지만 모든 컴포넌트가 dynamicState를 사용"})}}}return n}getContextFlowInfo(){const e=[],n=new Set(this.contextFlowNodes.keys());for(const r of this.contextFlowNodes.values())if(r.children)for(const i of r.children)n.delete(i.componentId);for(const r of n){const i=this.contextFlowNodes.get(r);i&&e.push(i)}return{rootComponent:e.length>0?e[0].component:"Unknown",contextFlow:e,timestamp:Date.now()}}clearStateHierarchyData(){this.componentStateSources.clear(),this.contextFlowNodes.clear(),this.dynamicStates.clear()}trackComponentStyle(e,n,r,i){if(!this.config.enabled)return;const l=this.analyzeTailwindClasses(r),c={componentId:e,componentName:n,classes:r,computedStyles:i,tailwindAnalysis:l};this.componentStyles.set(e,c),this.detectStyleIssues(c)}analyzeTailwindClasses(e){const n=[],r=[],i=[],l=[],c=["sm:","md:","lg:","xl:","2xl:"],d=[/bg-\w+-\d+/,/text-\w+-\d+/,/border-\w+-\d+/];for(const f of e){l.push(f),f.startsWith("dark:")&&n.push(f);for(const h of c)if(f.startsWith(h)){r.push(f);break}for(const h of d)if(h.test(f)){i.push(f);break}}return{usedClasses:l,darkClasses:n,responsiveClasses:r,dynamicClasses:i}}detectStyleIssues(e){const{componentId:n,componentName:r,computedStyles:i,tailwindAnalysis:l}=e;(i.opacity==="0"||i.visibility==="hidden"||i.display==="none"||i.width==="0px"&&i.height==="0px")&&this.addStyleIssue({id:this.generateId(),type:"invisible-element",componentId:n,componentName:r,property:i.opacity==="0"?"opacity":i.visibility==="hidden"?"visibility":i.display==="none"?"display":"width/height",currentValue:i.opacity==="0"?"0":i.visibility==="hidden"?"hidden":i.display==="none"?"none":"0px",severity:"warning",description:"요소가 화면에 보이지 않습니다.",suggestion:"opacity, visibility, display, width/height 값을 확인하세요."});const c=l.usedClasses.filter(f=>f.startsWith("bg-")&&!f.startsWith("dark:")),d=l.darkClasses.filter(f=>f.includes("bg-"));c.length>0&&d.length===0&&this.addStyleIssue({id:this.generateId(),type:"dark-mode-missing",componentId:n,componentName:r,property:"background-color",currentValue:c.join(", "),expectedValue:"dark:bg-* 클래스 필요",severity:"info",description:"다크 모드 배경색 클래스가 누락되었습니다.",suggestion:`${c[0]}에 대응하는 dark: 클래스를 추가하세요.`}),l.dynamicClasses.length>0&&this.addStyleIssue({id:this.generateId(),type:"tailwind-purging",componentId:n,componentName:r,property:"class",currentValue:l.dynamicClasses.join(", "),severity:"info",description:"동적으로 생성된 Tailwind 클래스가 있습니다.",suggestion:"tailwind.config.js의 safelist에 추가하거나 전체 클래스명을 상수로 정의하세요."})}addStyleIssue(e){this.styleIssues.some(r=>r.componentId===e.componentId&&r.type===e.type&&r.property===e.property)||this.styleIssues.push(e)}getStyleValidationInfo(){const e=Array.from(this.componentStyles.values());return{issues:[...this.styleIssues],componentStyles:e,stats:{totalComponents:e.length,invisibleCount:this.styleIssues.filter(n=>n.type==="invisible-element").length,tailwindIssueCount:this.styleIssues.filter(n=>n.type==="tailwind-purging").length,darkModeIssueCount:this.styleIssues.filter(n=>n.type==="dark-mode-missing").length},timestamp:Date.now()}}clearStyleValidationData(){this.styleIssues=[],this.componentStyles.clear()}trackAuthEvent(e,n,r,i){if(!this.config.enabled)return;const l={id:`auth_${++this.authEventIdCounter}`,type:e,timestamp:Date.now(),success:n,error:r,details:i};this.authEvents.push(l),this.authEvents.length>this.maxAuthEventHistory&&(this.authEvents=this.authEvents.slice(-this.maxAuthEventHistory))}trackAuthHeader(e,n,r,i,l){if(!this.config.enabled)return;const c={url:e,hasAuthHeader:n,headerType:r,tokenValid:i??!1,responseStatus:l,timestamp:Date.now()};this.authHeaderHistory.push(c),this.authHeaderHistory.length>this.maxAuthEventHistory&&(this.authHeaderHistory=this.authHeaderHistory.slice(-this.maxAuthEventHistory)),l===401&&this.trackAuthEvent("api-unauthorized",!1,`401 Unauthorized: ${e}`,{url:e})}getAuthState(){try{const e=window.G7Core,n=e?.api;let r=e?.auth;!r&&e?.AuthManager?.getInstance&&(r=e.AuthManager.getInstance());const i=n?.getToken?.()||r?.getAccessToken?.()||localStorage.getItem("auth_token")||localStorage.getItem("access_token"),l=r?.getRefreshToken?.()||localStorage.getItem("refresh_token");let c="unknown",d=r?.getUser?.();if(d&&(c="AuthManager"),!d){const S=e?.state?.get?.();d=S?._global?.user||S?._global?.currentUser||S?.user||S?.currentUser,d&&(c="G7Core.state")}const f=r?.isAuthenticated?.()??!1;let h="memory";localStorage.getItem("auth_token")||localStorage.getItem("access_token")?h="localStorage":(sessionStorage.getItem("auth_token")||sessionStorage.getItem("access_token"))&&(h="sessionStorage");const m=!!i&&(!!d||f);let y;i&&typeof i=="string"&&i.length>20?y=`${i.substring(0,10)}...${i.substring(i.length-6)}`:i&&(y="***");const v=d?{id:d.id,email:d.email,name:d.name,roles:d.roles?.map(S=>typeof S=="string"?{name:S}:{id:S.id,name:S.name,guard_name:S.guard_name}),permissions:d.permissions?.map(S=>typeof S=="string"?{name:S}:{id:S.id,name:S.name,guard_name:S.guard_name}),avatar:d.avatar||d.profile_photo_url||d.profile_image,created_at:d.created_at,updated_at:d.updated_at,last_login_at:d.last_login_at,email_verified_at:d.email_verified_at,...d.phone&&{phone:d.phone},...d.nickname&&{nickname:d.nickname},...d.status&&{status:d.status},...d.locale&&{locale:d.locale}}:void 0;return{isAuthenticated:m,user:v,tokens:{hasAccessToken:!!i,hasRefreshToken:!!l,storage:h,accessTokenPreview:y},lastActivity:Date.now(),source:c}}catch{return{isAuthenticated:!1,tokens:{hasAccessToken:!1,hasRefreshToken:!1,storage:"memory"},source:"unknown"}}}getAuthDebugInfo(){const e=[...this.authEvents];return{state:this.getAuthState(),events:e,headerAnalysis:[...this.authHeaderHistory],stats:{loginAttempts:e.filter(n=>n.type==="login").length,successfulLogins:e.filter(n=>n.type==="login"&&n.success).length,failedLogins:e.filter(n=>n.type==="login"&&!n.success).length,tokenRefreshes:e.filter(n=>n.type==="token-refresh").length,unauthorizedResponses:e.filter(n=>n.type==="api-unauthorized").length},timestamp:Date.now()}}clearAuthData(){this.authEvents=[],this.authHeaderHistory=[],this.authEventIdCounter=0}trackLayoutLoad(e,n,r,i="api"){if(!this.config.enabled)return;const l=Date.now();this.currentLayout={layoutPath:e,templateId:n,layoutJson:this.sanitizeObject(r),loadedAt:l,version:r.version,layoutName:r.layout_name,source:i};const c={id:`layout-${++this.layoutIdCounter}`,layoutPath:e,templateId:n,loadedAt:l,source:i,version:r.version};this.layoutHistory.push(c),this.layoutHistory.length>this.maxLayoutHistory&&this.layoutHistory.shift(),this.layoutStats.totalLoads++,i==="cache"?this.layoutStats.cacheHits++:this.layoutStats.apiLoads++}getCurrentLayout(){return this.currentLayout}getLayoutHistory(){return[...this.layoutHistory]}getLayoutDebugInfo(){return{current:this.currentLayout,history:[...this.layoutHistory],stats:{...this.layoutStats}}}clearLayoutData(){this.currentLayout=null,this.layoutHistory=[],this.layoutIdCounter=0,this.layoutStats={totalLoads:0,cacheHits:0,apiLoads:0}}startHandlerExecution(e){if(!this.config.enabled)return"";const n=`exec_${++this.executionIdCounter}_${Date.now()}`,r={handlerName:e,executionId:n,startTime:Date.now(),stateChanges:[],dataSourceChanges:[],alerts:[]};if(this.executionDetails.set(n,r),this.executionDetails.size>this.maxExecutionDetails){const i=Array.from(this.executionDetails.keys());i.slice(0,i.length-this.maxExecutionDetails).forEach(c=>this.executionDetails.delete(c))}return n}endHandlerExecution(e,n,r,i){if(!this.config.enabled||!e)return;const l=this.executionDetails.get(e);if(!l)return;l.endTime=Date.now(),l.duration=l.endTime-l.startTime,l.exitReason=n,l.exitLocation=r,l.exitDescription=i;const c=this.changeExpectations.get(e);c&&(l.expectedChanges=c,this.checkExpectations(e,l,c),this.changeExpectations.delete(e)),n==="normal"&&l.stateChanges.length===0&&l.dataSourceChanges.length===0&&this.addChangeAlert(e,{type:"no-state-change",severity:"warning",message:`핸들러 "${l.handlerName}"이(가) 상태 변경 없이 완료됨`,description:"핸들러가 성공적으로 완료되었지만 상태나 데이터소스 변경이 없습니다. 의도한 동작인지 확인하세요.",handlerName:l.handlerName,suggestion:'핸들러 내부 조건문을 확인하거나 DevTools의 "변경감지" 탭에서 exitLocation을 확인하세요.',docLink:"troubleshooting-state.md"}),(n==="early-return-condition"||n==="early-return-validation")&&this.addChangeAlert(e,{type:"early-return-detected",severity:"info",message:`핸들러 "${l.handlerName}"이(가) early return으로 종료됨`,description:i||`종료 위치: ${r||"알 수 없음"}`,handlerName:l.handlerName,suggestion:n==="early-return-validation"?"검증 실패로 인한 early return입니다. 입력 데이터를 확인하세요.":"조건부 early return입니다. 조건문의 평가 결과를 확인하세요."})}recordExitReason(e,n,r,i){if(!this.config.enabled||!e)return;const l=this.executionDetails.get(e);l&&(l.exitReason=n,l.exitLocation=r,l.exitDescription=i)}recordStateChange(e,n,r,i,l){if(!this.config.enabled)return;const c={id:`sc_${++this.stateChangeIdCounter}`,path:n,changeType:r,oldValue:this.safeClone(i),newValue:this.safeClone(l),timestamp:Date.now(),comparison:this.compareValues(i,l),executionId:e};if(this.stateChangeHistory.push(c),e){const d=this.executionDetails.get(e);d&&d.stateChanges.push(c)}this.stateChangeHistory.length>this.maxStateChangeHistory&&this.stateChangeHistory.splice(0,this.stateChangeHistory.length-this.maxStateChangeHistory),c.comparison.isDeepEqual&&typeof i=="object"&&i!==null&&this.addChangeAlert(e||"",{type:"object-reference-same",severity:"warning",message:`상태 "${n}"가 변경되었으나 값이 동일함`,description:"객체 참조가 동일하거나 깊은 비교 결과 변경이 없습니다. 변경 감지가 실패할 수 있습니다.",handlerName:e&&this.executionDetails.get(e)?.handlerName||"unknown",statePath:n,suggestion:"불변성을 유지하여 새 객체를 생성하세요. 예: { ...oldObject, newField: value }",docLink:"troubleshooting-state.md#object-mutation"})}recordDataSourceChange(e,n,r,i,l){if(!this.config.enabled)return;const c={dataSourceId:n,changeType:r,timestamp:Date.now(),previousStatus:i,newStatus:l,executionId:e};if(this.dataSourceChangeHistory.push(c),e){const d=this.executionDetails.get(e);d&&d.dataSourceChanges.push(c)}this.dataSourceChangeHistory.length>this.maxStateChangeHistory&&this.dataSourceChangeHistory.splice(0,this.dataSourceChangeHistory.length-this.maxStateChangeHistory)}expectChange(e,n,r){if(!this.config.enabled||!e)return;const i=this.executionDetails.get(e);if(!i)return;const l={expectedStatePaths:n,expectedDataSources:r,setAt:Date.now(),source:i.handlerName};this.changeExpectations.set(e,l)}checkExpectations(e,n,r){const i=new Set(n.stateChanges.map(c=>c.path)),l=new Set(n.dataSourceChanges.map(c=>c.dataSourceId));for(const c of r.expectedStatePaths)i.has(c)||this.addChangeAlert(e,{type:"expected-not-fulfilled",severity:"error",message:`기대한 상태 변경 "${c}"가 발생하지 않음`,description:`핸들러 "${n.handlerName}"이(가) "${c}" 변경을 예고했지만 실제로 변경되지 않았습니다.`,handlerName:n.handlerName,statePath:c,suggestion:"핸들러 내부 로직을 확인하세요. early return이나 조건부 분기로 인해 변경이 생략되었을 수 있습니다.",docLink:"troubleshooting-state.md"});for(const c of r.expectedDataSources)l.has(c)||this.addChangeAlert(e,{type:"expected-not-fulfilled",severity:"error",message:`기대한 데이터소스 갱신 "${c}"가 발생하지 않음`,description:`핸들러 "${n.handlerName}"이(가) "${c}" 갱신을 예고했지만 실제로 갱신되지 않았습니다.`,handlerName:n.handlerName,dataSourceId:c,suggestion:"refetchDataSource 호출이 실행되었는지 확인하세요.",docLink:"data-sources.md"})}addChangeAlert(e,n){const r={...n,id:`alert_${++this.alertIdCounter}`,timestamp:Date.now()};if(this.changeAlerts.push(r),e){const i=this.executionDetails.get(e);i&&i.alerts.push(r)}this.changeAlerts.length>this.maxChangeAlerts&&this.changeAlerts.splice(0,this.changeAlerts.length-this.maxChangeAlerts)}compareValues(e,n){const r=this.getValueType(e),i=this.getValueType(n),l=r!==i;let c=!1,d;return!l&&(r==="object"||r==="array")?(c=this.deepEqual(e,n),!c&&r==="object"&&(d=this.getChangedKeys(e,n))):c=e===n,{typeChanged:l,oldType:r,newType:i,isDeepEqual:c,changedKeys:d}}getValueType(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}deepEqual(e,n){if(e===n)return!0;if(typeof e!=typeof n)return!1;if(e===null||n===null||typeof e!="object")return e===n;if(Array.isArray(e)!==Array.isArray(n))return!1;const r=Object.keys(e),i=Object.keys(n);if(r.length!==i.length)return!1;for(const l of r)if(!i.includes(l)||!this.deepEqual(e[l],n[l]))return!1;return!0}getChangedKeys(e,n){const r=[],i=new Set([...Object.keys(e),...Object.keys(n)]);for(const l of i)this.deepEqual(e[l],n[l])||r.push(l);return r}getChangeDetectionInfo(){const e=Array.from(this.executionDetails.values()),n={totalExecutions:e.length,executionsWithStateChange:e.filter(r=>r.stateChanges.length>0).length,executionsWithoutStateChange:e.filter(r=>r.stateChanges.length===0&&r.exitReason==="normal").length,earlyReturnCount:e.filter(r=>r.exitReason==="early-return-condition"||r.exitReason==="early-return-validation").length,alertCount:this.changeAlerts.length,alertsByType:this.getAlertsByType()};return{executionDetails:e,stateChangeHistory:[...this.stateChangeHistory],dataSourceChangeHistory:[...this.dataSourceChangeHistory],alerts:[...this.changeAlerts],stats:n,timestamp:Date.now()}}getAlertsByType(){const e={"no-state-change":0,"no-datasource-change":0,"expected-not-fulfilled":0,"object-reference-same":0,"early-return-detected":0,"async-timing-issue":0};for(const n of this.changeAlerts)e[n.type]++;return e}clearChangeDetectionData(){this.executionDetails.clear(),this.stateChangeHistory=[],this.dataSourceChangeHistory=[],this.changeAlerts=[],this.changeExpectations.clear(),this.executionIdCounter=0,this.stateChangeIdCounter=0,this.alertIdCounter=0}getRecentAlerts(e=10,n){let r=[...this.changeAlerts];return n&&(r=r.filter(i=>i.severity===n)),r.slice(-e)}getHandlerExecutions(e,n=10){return Array.from(this.executionDetails.values()).filter(i=>i.handlerName===e).slice(-n)}findExecutionInStack(e){return this.sequenceExecutionStack.find(n=>n.sequenceId===e)}startSequenceExecution(e){if(!this.config.enabled)return"";const n=`seq_${++this.sequenceIdCounter}_${Date.now()}`,r={sequenceId:n,startTime:Date.now(),totalDuration:0,trigger:e,actions:[],status:"running"};return this.sequenceExecutionStack.push(r),n}captureSequenceActionBefore(e,n,r,i,l){if(!this.config.enabled)return;const c=this.findExecutionInStack(e);if(!c)return;const d={index:n,handler:r,params:this.safeClone(i),stateBeforeAction:{_global:this.safeClone(l._global),_local:this.safeClone(l._local),_isolated:l._isolated?this.safeClone(l._isolated):void 0},stateAfterAction:{_global:{},_local:{}},duration:0,status:"success"};c.actions.push(d)}captureSequenceActionAfter(e,n,r,i,l,c){if(!this.config.enabled)return;const d=this.findExecutionInStack(e);if(!d)return;const f=d.actions.find(m=>m.index===n);if(!f)return;f.stateAfterAction={_global:this.safeClone(r._global),_local:this.safeClone(r._local),_isolated:r._isolated?this.safeClone(r._isolated):void 0},f.duration=i,f.result=this.safeClone(l),f.stateDiff={global:this.computeStateDiff(f.stateBeforeAction._global,f.stateAfterAction._global),local:this.computeStateDiff(f.stateBeforeAction._local,f.stateAfterAction._local)},f.stateBeforeAction._isolated&&f.stateAfterAction._isolated&&(f.stateDiff.isolated=this.computeStateDiff(f.stateBeforeAction._isolated,f.stateAfterAction._isolated));const h=window.__g7PendingLocalState;h&&(f.pendingState=this.safeClone(h)),c&&(f.status="error",f.error={name:c.name,message:c.message,stack:c.stack})}endSequenceExecution(e,n){if(!this.config.enabled)return;const r=this.sequenceExecutionStack.findIndex(l=>l.sequenceId===e);if(r===-1)return;const i=this.sequenceExecutionStack[r];if(i.endTime=Date.now(),i.totalDuration=i.endTime-i.startTime,n){i.status="error",i.error={name:n.name,message:n.message,stack:n.stack};const l=i.actions.find(c=>c.status==="error");l&&(i.failedAtIndex=l.index)}else i.status="success";this.sequenceExecutions.push(i),this.sequenceExecutions.length>this.maxSequenceExecutions&&this.sequenceExecutions.shift(),this.sequenceExecutionStack.splice(r,1)}computeStateDiff(e,n){const r=[],i=[],l=[],c=new Set(Object.keys(e)),d=new Set(Object.keys(n));for(const f of d)c.has(f)||r.push(f);for(const f of c)d.has(f)||i.push(f);for(const f of c)if(d.has(f)){const h=e[f],m=n[f];JSON.stringify(h)!==JSON.stringify(m)&&l.push({path:f,oldValue:h,newValue:m})}return{added:r,removed:i,changed:l}}getSequenceTrackingInfo(){const e=this.getSequenceStats(),n=this.sequenceExecutionStack.length>0?this.sequenceExecutionStack[this.sequenceExecutionStack.length-1]:void 0;return{executions:[...this.sequenceExecutions],currentExecution:n,stats:e}}getSequenceStats(){const e=this.sequenceExecutions,n=e.length,r=e.filter(h=>h.status==="success").length,i=e.filter(h=>h.status==="error").length,l=e.reduce((h,m)=>h+m.actions.length,0),c=n>0?e.reduce((h,m)=>h+m.totalDuration,0)/n:0,d={};for(const h of e)for(const m of h.actions)d[m.handler]=(d[m.handler]||0)+1;const f=Object.entries(d).sort(([,h],[,m])=>m-h).slice(0,5).map(([h,m])=>({handler:h,count:m}));return{totalExecutions:n,successCount:r,errorCount:i,totalActions:l,avgDuration:c,topHandlers:f}}clearSequenceData(){this.sequenceExecutions=[],this.sequenceExecutionStack=[],this.sequenceIdCounter=0}getSequenceExecution(e){const n=this.findExecutionInStack(e);return n||this.sequenceExecutions.find(r=>r.sequenceId===e)}getRecentSequences(e=10){return this.sequenceExecutions.slice(-e)}registerStateCaptureForHandler(e,n,r){if(!this.config.enabled)return;const i=new Map,l=Date.now();for(const c of n)i.set(c,{value:this.safeClone(r[c]),capturedAt:l});this.stateCaptureRegistry.set(e,i)}detectStaleClosure(e,n,r,i,l){if(!this.config.enabled)return[];const c=this.stateCaptureRegistry.get(e);if(!c)return[];const d=Date.now(),f=[];for(const[h,m]of c){const y=this.getValueByPath(r,h),v=d-m.capturedAt;if(!this.isDeepEqual(m.value,y)&&v>0){const S=this.createStaleClosureWarning(i,n,h,m.value,m.capturedAt,y,d,v,l);f.push(S),this.addStaleClosureWarning(S)}}return this.stateCaptureRegistry.delete(e),f}trackStaleClosureWarning(e){if(!this.config.enabled)return;const n=Date.now(),r=this.createStaleClosureWarning(e.type,e.location,e.capturedPath,e.capturedValue,e.capturedAt,e.currentValue,n,n-e.capturedAt,e.actionId,e.stackTrace);this.addStaleClosureWarning(r)}createStaleClosureWarning(e,n,r,i,l,c,d,f,h,m){const y=this.getStaleClosureSeverity(e,f),{description:v,suggestion:S,docLink:_}=this.getStaleClosureMessages(e,r,f);return{id:`stale_${++this.staleClosureIdCounter}_${Date.now()}`,timestamp:Date.now(),type:e,location:n,capturedState:{path:r,capturedValue:this.safeClone(i),capturedAt:l},currentState:{path:r,currentValue:this.safeClone(c),retrievedAt:d},timeDiff:f,severity:y,description:v,suggestion:S,docLink:_,actionId:h,stackTrace:m}}getStaleClosureSeverity(e,n){if(n>5e3)return"error";if(n>1e3)return"warning";switch(e){case"async-state-capture":case"sequence-state-mismatch":return"warning";case"callback-state-capture":case"timeout-state-capture":return"info";case"event-handler-stale":return"warning";default:return"info"}}getStaleClosureMessages(e,n,r){const i=r<1e3?`${r}ms`:`${(r/1e3).toFixed(1)}s`;switch(e){case"async-state-capture":return{description:`await 후 ${i} 경과 시점에 '${n}' 상태가 변경됨. 캡처된 상태 대신 최신 상태를 사용해야 함`,suggestion:"await 이후에는 G7Core.state.get()으로 최신 상태를 다시 조회하거나, useRef + getter 패턴을 사용하세요",docLink:"troubleshooting-state-closure.md"};case"callback-state-capture":return{description:`콜백에서 ${i} 전에 캡처된 '${n}' 상태를 사용 중. 최신 상태와 다름`,suggestion:"콜백에서 상태를 참조할 때는 stateRef.current 패턴 또는 G7Core.state.get()를 사용하세요",docLink:"troubleshooting-state-closure.md"};case"timeout-state-capture":return{description:`setTimeout/setInterval 콜백에서 '${n}' 상태가 ${i} 전 값 사용 중`,suggestion:"타이머 콜백 내에서는 G7Core.state.get()으로 최신 상태를 조회하세요",docLink:"troubleshooting-state-closure.md"};case"sequence-state-mismatch":return{description:`sequence 내 '${n}' 상태가 이전 액션 결과와 불일치. context.state 대신 캡처된 값 사용 의심`,suggestion:"sequence 내에서는 context.state 또는 $prev를 사용하여 최신 상태를 참조하세요",docLink:"troubleshooting-state-setstate.md"};case"event-handler-stale":return{description:`이벤트 핸들러에서 ${i} 전에 바인딩된 '${n}' 상태 사용 중`,suggestion:"이벤트 핸들러에서 상태를 참조할 때는 useRef 패턴 또는 G7Core.state.get()를 사용하세요",docLink:"troubleshooting-state-closure.md"};default:return{description:`'${n}' 상태에서 stale closure 감지됨 (${i} 경과)`,suggestion:"상태 참조 시 최신 값을 사용하는지 확인하세요"}}}addStaleClosureWarning(e){this.staleClosureWarnings.push(e),this.staleClosureWarnings.length>this.maxStaleClosureWarnings&&this.staleClosureWarnings.shift()}getValueByPath(e,n){const r=n.split(".");let i=e;for(const l of r){if(i==null)return;i=i[l]}return i}isDeepEqual(e,n){if(e===n)return!0;if(e===null||n===null)return e===n;if(typeof e!=typeof n)return!1;if(typeof e!="object")return e===n;try{return JSON.stringify(e)===JSON.stringify(n)}catch{return!1}}getStaleClosureTrackingInfo(){const e=this.getStaleClosureStats();return{warnings:[...this.staleClosureWarnings],stats:e,timestamp:Date.now()}}getStaleClosureStats(){const e=this.staleClosureWarnings,n={"async-state-capture":0,"callback-state-capture":0,"timeout-state-capture":0,"sequence-state-mismatch":0,"event-handler-stale":0};for(const f of e)n[f.type]++;const r={info:0,warning:0,error:0};for(const f of e)r[f.severity]++;const i={};for(const f of e)i[f.location]=(i[f.location]||0)+1;const l=Object.entries(i).sort(([,f],[,h])=>h-f).slice(0,5).map(([f,h])=>({location:f,count:h})),c={};for(const f of e)c[f.capturedState.path]=(c[f.capturedState.path]||0)+1;const d=Object.entries(c).sort(([,f],[,h])=>h-f).slice(0,5).map(([f,h])=>({path:f,count:h}));return{totalWarnings:e.length,warningsByType:n,warningsBySeverity:r,topLocations:l,topAffectedPaths:d}}clearStaleClosureData(){this.staleClosureWarnings=[],this.staleClosureIdCounter=0,this.stateCaptureRegistry.clear()}getRecentStaleClosureWarnings(e=10,n){let r=[...this.staleClosureWarnings];return n&&(r=r.filter(i=>i.severity===n)),r.slice(-e)}safeClone(e){if(e==null||typeof e!="object")return e;try{return JSON.parse(JSON.stringify(e))}catch{if(Array.isArray(e))return e.map(r=>{try{return JSON.parse(JSON.stringify(r))}catch{return"[Unserializable]"}});const n={};for(const r of Object.keys(e))try{n[r]=JSON.parse(JSON.stringify(e[r]))}catch{n[r]="[Unserializable]"}return n}}};M($i,"instance");let Ha=$i;const Qn=pt("LayoutLoader");class Dr extends Error{constructor(e,n,r){super(e),this.code=n,this.details=r,this.name="LayoutLoaderError"}}class th{constructor(e){M(this,"componentRegistry");M(this,"currentLayout",null);M(this,"layoutCache",new Map);M(this,"cacheVersion",0);this.componentRegistry=e}setCacheVersion(e){this.cacheVersion!==e&&(Qn.log("Cache version updated:",this.cacheVersion,"->",e),this.cacheVersion=e,this.layoutCache.clear())}getCacheVersion(){return this.cacheVersion}async loadLayout(e,n){const r=`${e}:${n}`;if(this.layoutCache.has(r)){Qn.log("Loading layout from cache:",n);const l=await this.layoutCache.get(r),c=JSON.parse(JSON.stringify(l));return this.currentLayout=c,Ha.getInstance().trackLayoutLoad(n,e,c,"cache"),c}const i=this.fetchLayout(e,n);return this.layoutCache.set(r,i),i.catch(()=>{this.layoutCache.get(r)===i&&this.layoutCache.delete(r)}),i}async fetchLayout(e,n,r=!1){try{const i=this.cacheVersion>0?this.cacheVersion:null;let l;if(n.startsWith("__preview__/")){const v=n.replace("__preview__/","");l=Br(`/api/layouts/preview/${v}`,"json",i)}else l=Br(`/api/layouts/${e}/${n}`,"json",i);Qn.log("Fetching layout from API:",l);const c=Yn(),d=r?null:c.getToken(),f={Accept:"application/json"};d&&(f.Authorization=`Bearer ${d}`);const h=await tc(l,{init:{headers:f},label:`layout: ${n}`});let m;try{m=await h.json()}catch{m=null}if(!h.ok){if(h.status===401&&!r&&d){Qn.log("Token invalid, removing and retrying without token"),c.removeToken();try{return await this.fetchLayout(e,n,!0)}catch(S){throw S instanceof Dr&&S.details?.status===401?new Dr(S.message,S.code,{...S.details,hadToken:!0}):S}}const v=m?.message||m?.error;throw new Dr(`Failed to fetch layout: ${h.status} ${h.statusText}`,"FETCH_FAILED",{status:h.status,statusText:h.statusText,url:l,apiMessage:v})}const y=m.data||m;return this.validateLayoutData(y),this.currentLayout=y,Ha.getInstance().trackLayoutLoad(n,e,y,"api"),Qn.log("Layout fetched and cached successfully:",y.layout_name),y}catch(i){const l=`${e}:${n}`;throw this.layoutCache.delete(l),i instanceof Dr?i:new Dr("Failed to load layout","LOAD_FAILED",{originalError:i})}}prefetchLayout(e,n){return this.loadLayout(e,n)}validateLayoutData(e){if(!e.version)throw new Dr("Layout data missing required field: version","VALIDATION_FAILED",{field:"version"});if(!e.layout_name)throw new Dr("Layout data missing required field: layout_name","VALIDATION_FAILED",{field:"layout_name"});if(!Array.isArray(e.components))throw new Dr('Layout data field "components" must be an array',"VALIDATION_FAILED",{field:"components",value:e.components});Qn.log("Layout data validation passed")}renderLayout(e,n){try{const r=n||this.currentLayout;if(!r)throw new Dr("No layout data to render","NO_LAYOUT_DATA");Qn.log("Rendering layout:",r.layout_name),e.innerHTML="",this.renderComponents(e,r.components),Qn.log("Layout rendered successfully")}catch(r){Qn.error("Render error:",r),this.renderErrorState(e,r)}}renderComponents(e,n){for(const r of n){const i=this.renderComponent(r);i&&e.appendChild(i)}}renderComponent(e){try{if(!this.componentRegistry.getComponent(e.type))return Qn.warn(`Component not found: ${e.type}`),this.createPlaceholderElement(e.type);const r=document.createElement("div");return r.setAttribute("data-component",e.type),e.props&&Object.entries(e.props).forEach(([i,l])=>{r.setAttribute(`data-prop-${i}`,JSON.stringify(l))}),e.children&&e.children.length>0?this.renderComponents(r,e.children):e.text&&(r.textContent=e.text),r}catch(n){return Qn.error(`Error rendering component ${e.type}:`,n),this.createErrorElement(e.type,n)}}createPlaceholderElement(e){const n=document.createElement("div");return n.className="component-placeholder",n.setAttribute("data-component-type",e),n.innerHTML=`
<div style="padding: 1rem; border: 2px dashed #ccc; background: #f9f9f9; text-align: center;">
<p style="margin: 0; color: #666;">Component not found: <strong>${e}</strong></p>
</div>
`,n}createErrorElement(e,n){const r=document.createElement("div");return r.className="component-error",r.setAttribute("data-component-type",e),r.innerHTML=`
<div style="padding: 1rem; border: 2px solid #f44336; background: #ffebee; border-radius: 4px;">
<p style="margin: 0 0 0.5rem 0; color: #c62828; font-weight: bold;">Component Error: ${e}</p>
<p style="margin: 0; color: #666; font-size: 0.875rem;">${n?.message||"Unknown error"}</p>
</div>
`,r}renderErrorState(e,n){const r=n instanceof Error?n.message:String(n),i=n instanceof Dr?n.code:"UNKNOWN_ERROR";e.innerHTML=`
<div class="layout-error" data-error-code="${i}" style="
padding: 2rem;
text-align: center;
background: #ffebee;
border: 2px solid #f44336;
border-radius: 8px;
margin: 2rem auto;
max-width: 600px;
">
<h2 style="
margin: 0 0 1rem 0;
color: #c62828;
font-size: 1.5rem;
">레이아웃 로드 실패</h2>
<p style="
margin: 0 0 1rem 0;
color: #666;
font-size: 1rem;
">${r}</p>
<p style="
margin: 0;
color: #999;
font-size: 0.875rem;
">오류 코드: ${i}</p>
<button
onclick="window.location.reload()"
style="
margin-top: 1.5rem;
padding: 0.75rem 1.5rem;
background: #f44336;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1rem;
"
>페이지 새로고침</button>
</div>
`,Qn.error("Error state rendered:",i,r)}getCurrentLayout(){return this.currentLayout}clear(){this.currentLayout=null,this.layoutCache.clear(),Qn.log("Layout data and cache cleared")}}const kx=pt("TranslationContext"),nh=N.createContext(null),Pc=({children:s,translationEngine:e,translationContext:n})=>{const r=N.useMemo(()=>(l,c)=>{if(c){const d="|"+Object.entries(c).map(([f,h])=>`${f}=${h}`).join("|");return e.translate(l,n,d)}return e.translate(l,n)},[e,n]),i=N.useMemo(()=>({translationEngine:e,translationContext:n,t:r}),[e,n,r]);return yt.jsx(nh.Provider,{value:i,children:s})},gb=()=>{const s=N.useContext(nh);return s||(kx.warn("TranslationProvider 외부에서 호출되었습니다. 키를 그대로 반환합니다."),{t:e=>e,translationEngine:null,translationContext:null})},za=pt("SlotContext"),Rx={registerToSlot:()=>{za.warn("SlotContext not available: registerToSlot called outside SlotProvider")},unregisterFromSlot:()=>{za.warn("SlotContext not available: unregisterFromSlot called outside SlotProvider")},getSlotComponents:()=>[],subscribeToSlot:()=>()=>{},clearAllSlots:()=>{},isEnabled:!1},Dx=N.createContext(Rx),rh=({children:s})=>{const e=N.useRef(new Map),n=N.useRef(new Map),r=N.useCallback(m=>{const y=n.current.get(m);y&&y.forEach(v=>{try{v()}catch(S){za.error(`Slot subscriber error (slotId: ${m}):`,S)}})},[]),i=N.useCallback((m,y,v)=>{if(!m||!y){za.warn("registerToSlot: slotId and componentId are required");return}e.current.has(m)||e.current.set(m,new Map);const S=e.current.get(m),_=S.get(y);_&&_.registrationKey===v.registrationKey||(S.set(y,v),za.log(`Component registered to slot: ${y} -> ${m} (order: ${v.order})`),r(m))},[r]),l=N.useCallback((m,y)=>{const v=e.current.get(m);v&&v.has(y)&&(v.delete(y),za.log(`Component unregistered from slot: ${y} <- ${m}`),v.size===0&&e.current.delete(m),r(m))},[r]),c=N.useCallback(m=>{const y=e.current.get(m);return y?Array.from(y.values()).sort((v,S)=>v.order-S.order):[]},[]),d=N.useCallback((m,y)=>{n.current.has(m)||n.current.set(m,new Set);const v=n.current.get(m);return v.add(y),()=>{v.delete(y),v.size===0&&n.current.delete(m)}},[]),f=N.useCallback(()=>{e.current.forEach((m,y)=>{r(y)}),e.current.clear(),n.current.clear(),za.log("All slots cleared")},[r]),h=N.useMemo(()=>({registerToSlot:i,unregisterFromSlot:l,getSlotComponents:c,subscribeToSlot:d,clearAllSlots:f,isEnabled:!0}),[i,l,c,d,f]);return N.useLayoutEffect(()=>{typeof window<"u"&&(window.__slotContextValue=h,za.log("SlotContext exposed to window.__slotContextValue"))},[h]),yt.jsx(Dx.Provider,{value:h,children:s})};class ah{constructor(){this.notificationCreatedEvent=".Illuminate\\Notifications\\Events\\BroadcastNotificationCreated"}listenForWhisper(e,n){return this.listen(".client-"+e,n)}notification(e){return this.listen(this.notificationCreatedEvent,e)}stopListeningForNotification(e){return this.stopListening(this.notificationCreatedEvent,e)}stopListeningForWhisper(e,n){return this.stopListening(".client-"+e,n)}}class mb{constructor(e){this.namespace=e}format(e){return[".","\\"].includes(e.charAt(0))?e.substring(1):(this.namespace&&(e=this.namespace+"."+e),e.replace(/\./g,"\\"))}setNamespace(e){this.namespace=e}}function Ox(s){try{return Reflect.construct(String,[],s),!0}catch{return!1}}class ih extends ah{constructor(e,n,r){super(),this.name=n,this.pusher=e,this.options=r,this.eventFormatter=new mb(this.options.namespace),this.subscribe()}subscribe(){this.subscription=this.pusher.subscribe(this.name)}unsubscribe(){this.pusher.unsubscribe(this.name)}listen(e,n){return this.on(this.eventFormatter.format(e),n),this}listenToAll(e){return this.subscription.bind_global((n,r)=>{if(n.startsWith("pusher:"))return;let i=String(this.options.namespace??"").replace(/\./g,"\\"),l=n.startsWith(i)?n.substring(i.length+1):"."+n;e(l,r)}),this}stopListening(e,n){return n?this.subscription.unbind(this.eventFormatter.format(e),n):this.subscription.unbind(this.eventFormatter.format(e)),this}stopListeningToAll(e){return e?this.subscription.unbind_global(e):this.subscription.unbind_global(),this}subscribed(e){return this.on("pusher:subscription_succeeded",()=>{e()}),this}error(e){return this.on("pusher:subscription_error",n=>{e(n)}),this}on(e,n){return this.subscription.bind(e,n),this}}class yb extends ih{whisper(e,n){return this.pusher.channels.channels[this.name].trigger(`client-${e}`,n),this}}class Lx extends ih{whisper(e,n){return this.pusher.channels.channels[this.name].trigger(`client-${e}`,n),this}}class $x extends yb{here(e){return this.on("pusher:subscription_succeeded",n=>{e(Object.keys(n.members).map(r=>n.members[r]))}),this}joining(e){return this.on("pusher:member_added",n=>{e(n.info)}),this}whisper(e,n){return this.pusher.channels.channels[this.name].trigger(`client-${e}`,n),this}leaving(e){return this.on("pusher:member_removed",n=>{e(n.info)}),this}}class bb extends ah{constructor(e,n,r){super(),this.events={},this.listeners={},this.name=n,this.socket=e,this.options=r,this.eventFormatter=new mb(this.options.namespace),this.subscribe()}subscribe(){this.socket.emit("subscribe",{channel:this.name,auth:this.options.auth||{}})}unsubscribe(){this.unbind(),this.socket.emit("unsubscribe",{channel:this.name,auth:this.options.auth||{}})}listen(e,n){return this.on(this.eventFormatter.format(e),n),this}stopListening(e,n){return this.unbindEvent(this.eventFormatter.format(e),n),this}subscribed(e){return this.on("connect",n=>{e(n)}),this}error(e){return this}on(e,n){return this.listeners[e]=this.listeners[e]||[],this.events[e]||(this.events[e]=(r,i)=>{this.name===r&&this.listeners[e]&&this.listeners[e].forEach(l=>l(i))},this.socket.on(e,this.events[e])),this.listeners[e].push(n),this}unbind(){Object.keys(this.events).forEach(e=>{this.unbindEvent(e)})}unbindEvent(e,n){this.listeners[e]=this.listeners[e]||[],n&&(this.listeners[e]=this.listeners[e].filter(r=>r!==n)),(!n||this.listeners[e].length===0)&&(this.events[e]&&(this.socket.removeListener(e,this.events[e]),delete this.events[e]),delete this.listeners[e])}}class vb extends bb{whisper(e,n){return this.socket.emit("client event",{channel:this.name,event:`client-${e}`,data:n}),this}}class Mx extends vb{here(e){return this.on("presence:subscribed",n=>{e(n.map(r=>r.user_info))}),this}joining(e){return this.on("presence:joining",n=>e(n.user_info)),this}whisper(e,n){return this.socket.emit("client event",{channel:this.name,event:`client-${e}`,data:n}),this}leaving(e){return this.on("presence:leaving",n=>e(n.user_info)),this}}class Uc extends ah{subscribe(){}unsubscribe(){}listen(e,n){return this}listenToAll(e){return this}stopListening(e,n){return this}subscribed(e){return this}error(e){return this}on(e,n){return this}}class Sb extends Uc{whisper(e,n){return this}}class Nx extends Uc{whisper(e,n){return this}}class Ix extends Sb{here(e){return this}joining(e){return this}whisper(e,n){return this}leaving(e){return this}}const wb=class a0{constructor(e){this.setOptions(e),this.connect()}setOptions(e){this.options={...a0._defaultOptions,...e,broadcaster:e.broadcaster};let n=this.csrfToken();n&&(this.options.auth.headers["X-CSRF-TOKEN"]=n,this.options.userAuthentication.headers["X-CSRF-TOKEN"]=n),n=this.options.bearerToken,n&&(this.options.auth.headers.Authorization="Bearer "+n,this.options.userAuthentication.headers.Authorization="Bearer "+n)}csrfToken(){var e,n;return typeof window<"u"&&(e=window.Laravel)!=null&&e.csrfToken?window.Laravel.csrfToken:this.options.csrfToken?this.options.csrfToken:typeof document<"u"&&typeof document.querySelector=="function"?((n=document.querySelector('meta[name="csrf-token"]'))==null?void 0:n.getAttribute("content"))??null:null}};wb._defaultOptions={auth:{headers:{}},authEndpoint:"/broadcasting/auth",userAuthentication:{endpoint:"/broadcasting/user-auth",headers:{}},csrfToken:null,bearerToken:null,host:null,key:null,namespace:"App.Events"};let sh=wb;class Bc extends sh{constructor(){super(...arguments),this.channels={}}connect(){if(typeof this.options.client<"u")this.pusher=this.options.client;else if(this.options.Pusher)this.pusher=new this.options.Pusher(this.options.key,this.options);else if(typeof window<"u"&&typeof window.Pusher<"u")this.pusher=new window.Pusher(this.options.key,this.options);else throw new Error("Pusher client not found. Should be globally available or passed via options.client")}signin(){this.pusher.signin()}listen(e,n,r){return this.channel(e).listen(n,r)}channel(e){return this.channels[e]||(this.channels[e]=new ih(this.pusher,e,this.options)),this.channels[e]}privateChannel(e){return this.channels["private-"+e]||(this.channels["private-"+e]=new yb(this.pusher,"private-"+e,this.options)),this.channels["private-"+e]}encryptedPrivateChannel(e){return this.channels["private-encrypted-"+e]||(this.channels["private-encrypted-"+e]=new Lx(this.pusher,"private-encrypted-"+e,this.options)),this.channels["private-encrypted-"+e]}presenceChannel(e){return this.channels["presence-"+e]||(this.channels["presence-"+e]=new $x(this.pusher,"presence-"+e,this.options)),this.channels["presence-"+e]}leave(e){[e,"private-"+e,"private-encrypted-"+e,"presence-"+e].forEach(n=>{this.leaveChannel(n)})}leaveChannel(e){this.channels[e]&&(this.channels[e].unsubscribe(),delete this.channels[e])}socketId(){return this.pusher.connection.socket_id}connectionStatus(){const e=this.pusher.connection.state;switch(e){case"connected":case"connecting":return e;case"failed":case"unavailable":return"failed";default:return"disconnected"}}onConnectionChange(e){const n=()=>{e(this.connectionStatus())},r=["state_change","connected","disconnected"];return r.forEach(i=>{this.pusher.connection.bind(i,n)}),()=>{r.forEach(i=>{this.pusher.connection.unbind(i,n)})}}disconnect(){this.pusher.disconnect()}}class jx extends sh{constructor(){super(...arguments),this.channels={}}connect(){let e=this.getSocketIO();this.socket=e(this.options.host??void 0,this.options),this.socket.io.on("reconnect",()=>{Object.values(this.channels).forEach(n=>{n.subscribe()})})}getSocketIO(){if(typeof this.options.client<"u")return this.options.client;if(typeof window<"u"&&typeof window.io<"u")return window.io;throw new Error("Socket.io client not found. Should be globally available or passed via options.client")}listen(e,n,r){return this.channel(e).listen(n,r)}channel(e){return this.channels[e]||(this.channels[e]=new bb(this.socket,e,this.options)),this.channels[e]}privateChannel(e){return this.channels["private-"+e]||(this.channels["private-"+e]=new vb(this.socket,"private-"+e,this.options)),this.channels["private-"+e]}presenceChannel(e){return this.channels["presence-"+e]||(this.channels["presence-"+e]=new Mx(this.socket,"presence-"+e,this.options)),this.channels["presence-"+e]}leave(e){[e,"private-"+e,"presence-"+e].forEach(n=>{this.leaveChannel(n)})}leaveChannel(e){this.channels[e]&&(this.channels[e].unsubscribe(),delete this.channels[e])}socketId(){return this.socket.id}connectionStatus(){return this.socket.connected?"connected":this.socket.io._reconnecting?"reconnecting":this.socket.id!==void 0?"disconnected":"connecting"}onConnectionChange(e){const n=()=>{e(this.connectionStatus())},r=["connect","disconnect","connect_error","reconnect_attempt","reconnect","reconnect_error","reconnect_failed"];return r.forEach(i=>{this.socket.on(i,n)}),()=>{r.forEach(i=>{this.socket.off(i,n)})}}disconnect(){this.socket.disconnect()}}class Cb extends sh{constructor(){super(...arguments),this.channels={}}connect(){}listen(e,n,r){return new Uc}channel(e){return new Uc}privateChannel(e){return new Sb}encryptedPrivateChannel(e){return new Nx}presenceChannel(e){return new Ix}leave(e){}leaveChannel(e){}socketId(){return"fake-socket-id"}connectionStatus(){return"connected"}onConnectionChange(e){return()=>{}}disconnect(){}}class Hx{constructor(e){this.options=e,this.connect(),this.options.withoutInterceptors||this.registerInterceptors()}channel(e){return this.connector.channel(e)}connect(){if(this.options.broadcaster==="reverb")this.connector=new Bc({...this.options,cluster:""});else if(this.options.broadcaster==="pusher")this.connector=new Bc(this.options);else if(this.options.broadcaster==="ably")this.connector=new Bc({...this.options,cluster:"",broadcaster:"pusher"});else if(this.options.broadcaster==="socket.io")this.connector=new jx(this.options);else if(this.options.broadcaster==="null")this.connector=new Cb(this.options);else if(typeof this.options.broadcaster=="function"&&Ox(this.options.broadcaster))this.connector=new this.options.broadcaster(this.options);else throw new Error(`Broadcaster ${typeof this.options.broadcaster} ${String(this.options.broadcaster)} is not supported.`)}disconnect(){this.connector.disconnect()}join(e){return this.connector.presenceChannel(e)}leave(e){this.connector.leave(e)}leaveChannel(e){this.connector.leaveChannel(e)}leaveAllChannels(){for(const e in this.connector.channels)this.leaveChannel(e)}listen(e,n,r){return this.connector.listen(e,n,r)}private(e){return this.connector.privateChannel(e)}encryptedPrivate(e){if(this.connectorSupportsEncryptedPrivateChannels(this.connector))return this.connector.encryptedPrivateChannel(e);throw new Error(`Broadcaster ${typeof this.options.broadcaster} ${String(this.options.broadcaster)} does not support encrypted private channels.`)}connectorSupportsEncryptedPrivateChannels(e){return e instanceof Bc||e instanceof Cb}socketId(){return this.connector.socketId()}connectionStatus(){return this.connector.connectionStatus()}registerInterceptors(){typeof Vue<"u"&&Vue!=null&&Vue.http&&this.registerVueRequestInterceptor(),typeof axios=="function"&&this.registerAxiosRequestInterceptor(),typeof jQuery=="function"&&this.registerjQueryAjaxSetup(),typeof Turbo=="object"&&this.registerTurboRequestInterceptor()}registerVueRequestInterceptor(){Vue.http.interceptors.push((e,n)=>{this.socketId()&&e.headers.set("X-Socket-ID",this.socketId()),n()})}registerAxiosRequestInterceptor(){axios.interceptors.request.use(e=>(this.socketId()&&(e.headers["X-Socket-Id"]=this.socketId()),e))}registerjQueryAjaxSetup(){typeof jQuery.ajax<"u"&&jQuery.ajaxPrefilter((e,n,r)=>{this.socketId()&&r.setRequestHeader("X-Socket-Id",this.socketId())})}registerTurboRequestInterceptor(){document.addEventListener("turbo:before-fetch-request",e=>{e.detail.fetchOptions.headers["X-Socket-Id"]=this.socketId()})}}var oh={exports:{}};/*!
* Pusher JavaScript Library v8.5.0
* https://pusher.com/
*
* Copyright 2020, Pusher
* Released under the MIT licence.
*/var Eb;function zx(){return Eb||(Eb=1,(function(s,e){(function(r,i){s.exports=i()})(self,()=>(()=>{var n={594(c,d){var f=this&&this.__extends||(function(){var O=function(k,L){return O=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(B,q){B.__proto__=q}||function(B,q){for(var z in q)q.hasOwnProperty(z)&&(B[z]=q[z])},O(k,L)};return function(k,L){O(k,L);function B(){this.constructor=k}k.prototype=L===null?Object.create(L):(B.prototype=L.prototype,new B)}})();Object.defineProperty(d,"__esModule",{value:!0});var h=256,m=(function(){function O(k){k===void 0&&(k="="),this._paddingCharacter=k}return O.prototype.encodedLength=function(k){return this._paddingCharacter?(k+2)/3*4|0:(k*8+5)/6|0},O.prototype.encode=function(k){for(var L="",B=0;B<k.length-2;B+=3){var q=k[B]<<16|k[B+1]<<8|k[B+2];L+=this._encodeByte(q>>>18&63),L+=this._encodeByte(q>>>12&63),L+=this._encodeByte(q>>>6&63),L+=this._encodeByte(q>>>0&63)}var z=k.length-B;if(z>0){var q=k[B]<<16|(z===2?k[B+1]<<8:0);L+=this._encodeByte(q>>>18&63),L+=this._encodeByte(q>>>12&63),z===2?L+=this._encodeByte(q>>>6&63):L+=this._paddingCharacter||"",L+=this._paddingCharacter||""}return L},O.prototype.maxDecodedLength=function(k){return this._paddingCharacter?k/4*3|0:(k*6+7)/8|0},O.prototype.decodedLength=function(k){return this.maxDecodedLength(k.length-this._getPaddingLength(k))},O.prototype.decode=function(k){if(k.length===0)return new Uint8Array(0);for(var L=this._getPaddingLength(k),B=k.length-L,q=new Uint8Array(this.maxDecodedLength(B)),z=0,W=0,de=0,_e=0,Se=0,je=0,Fe=0;W<B-4;W+=4)_e=this._decodeChar(k.charCodeAt(W+0)),Se=this._decodeChar(k.charCodeAt(W+1)),je=this._decodeChar(k.charCodeAt(W+2)),Fe=this._decodeChar(k.charCodeAt(W+3)),q[z++]=_e<<2|Se>>>4,q[z++]=Se<<4|je>>>2,q[z++]=je<<6|Fe,de|=_e&h,de|=Se&h,de|=je&h,de|=Fe&h;if(W<B-1&&(_e=this._decodeChar(k.charCodeAt(W)),Se=this._decodeChar(k.charCodeAt(W+1)),q[z++]=_e<<2|Se>>>4,de|=_e&h,de|=Se&h),W<B-2&&(je=this._decodeChar(k.charCodeAt(W+2)),q[z++]=Se<<4|je>>>2,de|=je&h),W<B-3&&(Fe=this._decodeChar(k.charCodeAt(W+3)),q[z++]=je<<6|Fe,de|=Fe&h),de!==0)throw new Error("Base64Coder: incorrect characters for decoding");return q},O.prototype._encodeByte=function(k){var L=k;return L+=65,L+=25-k>>>8&6,L+=51-k>>>8&-75,L+=61-k>>>8&-15,L+=62-k>>>8&3,String.fromCharCode(L)},O.prototype._decodeChar=function(k){var L=h;return L+=(42-k&k-44)>>>8&-h+k-43+62,L+=(46-k&k-48)>>>8&-h+k-47+63,L+=(47-k&k-58)>>>8&-h+k-48+52,L+=(64-k&k-91)>>>8&-h+k-65+0,L+=(96-k&k-123)>>>8&-h+k-97+26,L},O.prototype._getPaddingLength=function(k){var L=0;if(this._paddingCharacter){for(var B=k.length-1;B>=0&&k[B]===this._paddingCharacter;B--)L++;if(k.length<4||L>2)throw new Error("Base64Coder: incorrect padding")}return L},O})();d.Coder=m;var y=new m;function v(O){return y.encode(O)}d.encode=v;function S(O){return y.decode(O)}d.decode=S;var _=(function(O){f(k,O);function k(){return O!==null&&O.apply(this,arguments)||this}return k.prototype._encodeByte=function(L){var B=L;return B+=65,B+=25-L>>>8&6,B+=51-L>>>8&-75,B+=61-L>>>8&-13,B+=62-L>>>8&49,String.fromCharCode(B)},k.prototype._decodeChar=function(L){var B=h;return B+=(44-L&L-46)>>>8&-h+L-45+62,B+=(94-L&L-96)>>>8&-h+L-95+63,B+=(47-L&L-58)>>>8&-h+L-48+52,B+=(64-L&L-91)>>>8&-h+L-65+0,B+=(96-L&L-123)>>>8&-h+L-97+26,B},k})(m);d.URLSafeCoder=_;var x=new _;function A(O){return x.encode(O)}d.encodeURLSafe=A;function D(O){return x.decode(O)}d.decodeURLSafe=D,d.encodedLength=function(O){return y.encodedLength(O)},d.maxDecodedLength=function(O){return y.maxDecodedLength(O)},d.decodedLength=function(O){return y.decodedLength(O)}},978(c,d){var f="utf8: invalid source encoding";function h(m){for(var y=[],v=0;v<m.length;v++){var S=m[v];if(S&128){var _=void 0;if(S<224){if(v>=m.length)throw new Error(f);var x=m[++v];if((x&192)!==128)throw new Error(f);S=(S&31)<<6|x&63,_=128}else if(S<240){if(v>=m.length-1)throw new Error(f);var x=m[++v],A=m[++v];if((x&192)!==128||(A&192)!==128)throw new Error(f);S=(S&15)<<12|(x&63)<<6|A&63,_=2048}else if(S<248){if(v>=m.length-2)throw new Error(f);var x=m[++v],A=m[++v],D=m[++v];if((x&192)!==128||(A&192)!==128||(D&192)!==128)throw new Error(f);S=(S&15)<<18|(x&63)<<12|(A&63)<<6|D&63,_=65536}else throw new Error(f);if(S<_||S>=55296&&S<=57343)throw new Error(f);if(S>=65536){if(S>1114111)throw new Error(f);S-=65536,y.push(String.fromCharCode(55296|S>>10)),S=56320|S&1023}}y.push(String.fromCharCode(S))}return y.join("")}d.D4=h},721(c,d,f){c.exports=f(207).default},207(c,d,f){f.d(d,{default:()=>Is});class h{constructor(b,C){this.lastId=0,this.prefix=b,this.name=C}create(b){this.lastId++;var C=this.lastId,$=this.prefix+C,j=this.name+"["+C+"]",ne=!1,ye=function(){ne||(b.apply(null,arguments),ne=!0)};return this[C]=ye,{number:C,id:$,name:j,callback:ye}}remove(b){delete this[b.number]}}var m=new h("_pusher_script_","Pusher.ScriptReceivers"),y={VERSION:"8.5.0",PROTOCOL:7,wsPort:80,wssPort:443,wsPath:"",httpHost:"sockjs.pusher.com",httpPort:80,httpsPort:443,httpPath:"/pusher",stats_host:"stats.pusher.com",authEndpoint:"/pusher/auth",authTransport:"ajax",activityTimeout:12e4,pongTimeout:3e4,unavailableTimeout:1e4,userAuthentication:{endpoint:"/pusher/user-auth",transport:"ajax"},channelAuthorization:{endpoint:"/pusher/auth",transport:"ajax"},cdn_http:"http://js.pusher.com",cdn_https:"https://js.pusher.com",dependency_suffix:""};const v=y;class S{constructor(b){this.options=b,this.receivers=b.receivers||m,this.loading={}}load(b,C,$){var j=this;if(j.loading[b]&&j.loading[b].length>0)j.loading[b].push($);else{j.loading[b]=[$];var ne=Ue.createScriptRequest(j.getPath(b,C)),ye=j.receivers.create(function(Le){if(j.receivers.remove(ye),j.loading[b]){var We=j.loading[b];delete j.loading[b];for(var ft=function(Vt){Vt||ne.cleanup()},vt=0;vt<We.length;vt++)We[vt](Le,ft)}});ne.send(ye)}}getRoot(b){var C,$=Ue.getDocument().location.protocol;return b&&b.useTLS||$==="https:"?C=this.options.cdn_https:C=this.options.cdn_http,C.replace(/\/*$/,"")+"/"+this.options.version}getPath(b,C){return this.getRoot(C)+"/"+b+this.options.suffix+".js"}}var _=new h("_pusher_dependencies","Pusher.DependenciesReceivers"),x=new S({cdn_http:v.cdn_http,cdn_https:v.cdn_https,version:v.VERSION,suffix:v.dependency_suffix,receivers:_});const A={baseUrl:"https://pusher.com",urls:{authenticationEndpoint:{path:"/docs/channels/server_api/authenticating_users"},authorizationEndpoint:{path:"/docs/channels/server_api/authorizing-users/"},javascriptQuickStart:{path:"/docs/javascript_quick_start"},triggeringClientEvents:{path:"/docs/client_api_guide/client_events#trigger-events"},encryptedChannelSupport:{fullUrl:"https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support"}}},O={buildLogSuffix:function(E){const b="See:",C=A.urls[E];if(!C)return"";let $;return C.fullUrl?$=C.fullUrl:C.path&&($=A.baseUrl+C.path),$?`${b} ${$}`:""}};var k;(function(E){E.UserAuthentication="user-authentication",E.ChannelAuthorization="channel-authorization"})(k||(k={}));class L extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class B extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class q extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class z extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class W extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class de extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class _e extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class Se extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class je extends Error{constructor(b,C){super(C),this.status=b,Object.setPrototypeOf(this,new.target.prototype)}}const ze=function(E,b,C,$,j){const ne=Ue.createXHR();ne.open("POST",C.endpoint,!0),ne.setRequestHeader("Content-Type","application/x-www-form-urlencoded");for(var ye in C.headers)ne.setRequestHeader(ye,C.headers[ye]);if(C.headersProvider!=null){let Le=C.headersProvider();for(var ye in Le)ne.setRequestHeader(ye,Le[ye])}return ne.onreadystatechange=function(){if(ne.readyState===4)if(ne.status===200){let Le,We=!1;try{Le=JSON.parse(ne.responseText),We=!0}catch{j(new je(200,`JSON returned from ${$.toString()} endpoint was invalid, yet status code was 200. Data was: ${ne.responseText}`),null)}We&&j(null,Le)}else{let Le="";switch($){case k.UserAuthentication:Le=O.buildLogSuffix("authenticationEndpoint");break;case k.ChannelAuthorization:Le=`Clients must be authorized to join private or presence channels. ${O.buildLogSuffix("authorizationEndpoint")}`;break}j(new je(ne.status,`Unable to retrieve auth string from ${$.toString()} endpoint - received status: ${ne.status} from ${C.endpoint}. ${Le}`),null)}},ne.send(b),ne};function Et(E){return H(ee(E))}var Q=String.fromCharCode,ue="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",De=function(E){var b=E.charCodeAt(0);return b<128?E:b<2048?Q(192|b>>>6)+Q(128|b&63):Q(224|b>>>12&15)+Q(128|b>>>6&63)+Q(128|b&63)},ee=function(E){return E.replace(/[^\x00-\x7F]/g,De)},me=function(E){var b=[0,2,1][E.length%3],C=E.charCodeAt(0)<<16|(E.length>1?E.charCodeAt(1):0)<<8|(E.length>2?E.charCodeAt(2):0),$=[ue.charAt(C>>>18),ue.charAt(C>>>12&63),b>=2?"=":ue.charAt(C>>>6&63),b>=1?"=":ue.charAt(C&63)];return $.join("")},H=window.btoa||function(E){return E.replace(/[\s\S]{1,3}/g,me)};class T{constructor(b,C,$,j){this.clear=C,this.timer=b(()=>{this.timer&&(this.timer=j(this.timer))},$)}isRunning(){return this.timer!==null}ensureAborted(){this.timer&&(this.clear(this.timer),this.timer=null)}}const fe=T;function he(E){window.clearTimeout(E)}function Ae(E){window.clearInterval(E)}class se extends fe{constructor(b,C){super(setTimeout,he,b,function($){return C(),null})}}class ge extends fe{constructor(b,C){super(setInterval,Ae,b,function($){return C(),$})}}var $e={now(){return Date.now?Date.now():new Date().valueOf()},defer(E){return new se(0,E)},method(E,...b){var C=Array.prototype.slice.call(arguments,1);return function($){return $[E].apply($,C.concat(arguments))}}};const Te=$e;function Ie(E,...b){for(var C=0;C<b.length;C++){var $=b[C];for(var j in $)$[j]&&$[j].constructor&&$[j].constructor===Object?E[j]=Ie(E[j]||{},$[j]):E[j]=$[j]}return E}function xt(){for(var E=["Pusher"],b=0;b<arguments.length;b++)typeof arguments[b]=="string"?E.push(arguments[b]):E.push(bn(arguments[b]));return E.join(" : ")}function rt(E,b){var C=Array.prototype.indexOf;if(E===null)return-1;if(C&&E.indexOf===C)return E.indexOf(b);for(var $=0,j=E.length;$<j;$++)if(E[$]===b)return $;return-1}function gt(E,b){for(var C in E)Object.prototype.hasOwnProperty.call(E,C)&&b(E[C],C,E)}function at(E){var b=[];return gt(E,function(C,$){b.push($)}),b}function Yt(E){var b=[];return gt(E,function(C){b.push(C)}),b}function Ht(E,b,C){for(var $=0;$<E.length;$++)b.call(C||window,E[$],$,E)}function bt(E,b){for(var C=[],$=0;$<E.length;$++)C.push(b(E[$],$,E,C));return C}function qe(E,b){var C={};return gt(E,function($,j){C[j]=b($)}),C}function mt(E,b){b=b||function(j){return!!j};for(var C=[],$=0;$<E.length;$++)b(E[$],$,E,C)&&C.push(E[$]);return C}function Dt(E,b){var C={};return gt(E,function($,j){(b&&b($,j,E,C)||$)&&(C[j]=$)}),C}function zt(E){var b=[];return gt(E,function(C,$){b.push([$,C])}),b}function kn(E,b){for(var C=0;C<E.length;C++)if(b(E[C],C,E))return!0;return!1}function hr(E,b){for(var C=0;C<E.length;C++)if(!b(E[C],C,E))return!1;return!0}function Ot(E){return qe(E,function(b){return typeof b=="object"&&(b=bn(b)),encodeURIComponent(Et(b.toString()))})}function Mi(E){var b=Dt(E,function($){return $!==void 0}),C=bt(zt(Ot(b)),Te.method("join","=")).join("&");return C}function ua(E){var b=[],C=[];return(function $(j,ne){var ye,Le,We;switch(typeof j){case"object":if(!j)return null;for(ye=0;ye<b.length;ye+=1)if(b[ye]===j)return{$ref:C[ye]};if(b.push(j),C.push(ne),Object.prototype.toString.apply(j)==="[object Array]")for(We=[],ye=0;ye<j.length;ye+=1)We[ye]=$(j[ye],ne+"["+ye+"]");else{We={};for(Le in j)Object.prototype.hasOwnProperty.call(j,Le)&&(We[Le]=$(j[Le],ne+"["+JSON.stringify(Le)+"]"))}return We;case"number":case"string":case"boolean":return j}})(E,"$")}function bn(E){try{return JSON.stringify(E)}catch{return JSON.stringify(ua(E))}}class Mn{constructor(){this.globalLog=b=>{window.console&&window.console.log&&window.console.log(b)}}debug(...b){this.log(this.globalLog,b)}warn(...b){this.log(this.globalLogWarn,b)}error(...b){this.log(this.globalLogError,b)}globalLogWarn(b){window.console&&window.console.warn?window.console.warn(b):this.globalLog(b)}globalLogError(b){window.console&&window.console.error?window.console.error(b):this.globalLogWarn(b)}log(b,...C){var $=xt.apply(this,arguments);Is.log?Is.log($):Is.logToConsole&&b.bind(this)($)}}const it=new Mn;var Un=function(E,b,C,$,j){(C.headers!==void 0||C.headersProvider!=null)&&it.warn(`To send headers with the ${$.toString()} request, you must use AJAX, rather than JSONP.`);var ne=E.nextAuthCallbackID.toString();E.nextAuthCallbackID++;var ye=E.getDocument(),Le=ye.createElement("script");E.auth_callbacks[ne]=function(vt){j(null,vt)};var We="Pusher.auth_callbacks['"+ne+"']";Le.src=C.endpoint+"?callback="+encodeURIComponent(We)+"&"+b;var ft=ye.getElementsByTagName("head")[0]||ye.documentElement;ft.insertBefore(Le,ft.firstChild)};const vn=Un;class da{constructor(b){this.src=b}send(b){var C=this,$="Error loading "+C.src;C.script=document.createElement("script"),C.script.id=b.id,C.script.src=C.src,C.script.type="text/javascript",C.script.charset="UTF-8",C.script.addEventListener?(C.script.onerror=function(){b.callback($)},C.script.onload=function(){b.callback(null)}):C.script.onreadystatechange=function(){(C.script.readyState==="loaded"||C.script.readyState==="complete")&&b.callback(null)},C.script.async===void 0&&document.attachEvent&&/opera/i.test(navigator.userAgent)?(C.errorScript=document.createElement("script"),C.errorScript.id=b.id+"_error",C.errorScript.text=b.name+"('"+$+"');",C.script.async=C.errorScript.async=!1):C.script.async=!0;var j=document.getElementsByTagName("head")[0];j.insertBefore(C.script,j.firstChild),C.errorScript&&j.insertBefore(C.errorScript,C.script.nextSibling)}cleanup(){this.script&&(this.script.onload=this.script.onerror=null,this.script.onreadystatechange=null),this.script&&this.script.parentNode&&this.script.parentNode.removeChild(this.script),this.errorScript&&this.errorScript.parentNode&&this.errorScript.parentNode.removeChild(this.errorScript),this.script=null,this.errorScript=null}}class pr{constructor(b,C){this.url=b,this.data=C}send(b){if(!this.request){var C=Mi(this.data),$=this.url+"/"+b.number+"?"+C;this.request=Ue.createScriptRequest($),this.request.send(b)}}cleanup(){this.request&&this.request.cleanup()}}var un=function(E,b){return function(C,$){var j="http"+(b?"s":"")+"://",ne=j+(E.host||E.options.host)+E.options.path,ye=Ue.createJSONPRequest(ne,C),Le=Ue.ScriptReceivers.create(function(We,ft){m.remove(Le),ye.cleanup(),ft&&ft.host&&(E.host=ft.host),$&&$(We,ft)});ye.send(Le)}},Rn={name:"jsonp",getAgent:un};const dn=Rn;function V(E,b,C){var $=E+(b.useTLS?"s":""),j=b.useTLS?b.hostTLS:b.hostNonTLS;return $+"://"+j+C}function ie(E,b){var C="/app/"+E,$="?protocol="+v.PROTOCOL+"&client=js&version="+v.VERSION+(b?"&"+b:"");return C+$}var ce={getInitial:function(E,b){var C=(b.httpPath||"")+ie(E,"flash=false");return V("ws",b,C)}},Z={getInitial:function(E,b){var C=(b.httpPath||"/pusher")+ie(E);return V("http",b,C)}},ve={getInitial:function(E,b){return V("http",b,b.httpPath||"/pusher")},getPath:function(E,b){return ie(E)}};class pe{constructor(){this._callbacks={}}get(b){return this._callbacks[Ee(b)]}add(b,C,$){var j=Ee(b);this._callbacks[j]=this._callbacks[j]||[],this._callbacks[j].push({fn:C,context:$})}remove(b,C,$){if(!b&&!C&&!$){this._callbacks={};return}var j=b?[Ee(b)]:at(this._callbacks);C||$?this.removeCallback(j,C,$):this.removeAllCallbacks(j)}removeCallback(b,C,$){Ht(b,function(j){this._callbacks[j]=mt(this._callbacks[j]||[],function(ne){return C&&C!==ne.fn||$&&$!==ne.context}),this._callbacks[j].length===0&&delete this._callbacks[j]},this)}removeAllCallbacks(b){Ht(b,function(C){delete this._callbacks[C]},this)}}function Ee(E){return"_"+E}class xe{constructor(b){this.callbacks=new pe,this.global_callbacks=[],this.failThrough=b}bind(b,C,$){return this.callbacks.add(b,C,$),this}bind_global(b){return this.global_callbacks.push(b),this}unbind(b,C,$){return this.callbacks.remove(b,C,$),this}unbind_global(b){return b?(this.global_callbacks=mt(this.global_callbacks||[],C=>C!==b),this):(this.global_callbacks=[],this)}unbind_all(){return this.unbind(),this.unbind_global(),this}emit(b,C,$){for(var j=0;j<this.global_callbacks.length;j++)this.global_callbacks[j](b,C);var ne=this.callbacks.get(b),ye=[];if($?ye.push(C,$):C&&ye.push(C),ne&&ne.length>0)for(var j=0;j<ne.length;j++)ne[j].fn.apply(ne[j].context||window,ye);else this.failThrough&&this.failThrough(b,C);return this}}class Ke extends xe{constructor(b,C,$,j,ne){super(),this.initialize=Ue.transportConnectionInitializer,this.hooks=b,this.name=C,this.priority=$,this.key=j,this.options=ne,this.state="new",this.timeline=ne.timeline,this.activityTimeout=ne.activityTimeout,this.id=this.timeline.generateUniqueID()}handlesActivityChecks(){return!!this.hooks.handlesActivityChecks}supportsPing(){return!!this.hooks.supportsPing}connect(){if(this.socket||this.state!=="initialized")return!1;var b=this.hooks.urls.getInitial(this.key,this.options);try{this.socket=this.hooks.getSocket(b,this.options)}catch(C){return Te.defer(()=>{this.onError(C),this.changeState("closed")}),!1}return this.bindListeners(),it.debug("Connecting",{transport:this.name,url:b}),this.changeState("connecting"),!0}close(){return this.socket?(this.socket.close(),!0):!1}send(b){return this.state==="open"?(Te.defer(()=>{this.socket&&this.socket.send(b)}),!0):!1}ping(){this.state==="open"&&this.supportsPing()&&this.socket.ping()}onOpen(){this.hooks.beforeOpen&&this.hooks.beforeOpen(this.socket,this.hooks.urls.getPath(this.key,this.options)),this.changeState("open"),this.socket.onopen=void 0}onError(b){this.emit("error",{type:"WebSocketError",error:b}),this.timeline.error(this.buildTimelineMessage({error:b.toString()}))}onClose(b){b?this.changeState("closed",{code:b.code,reason:b.reason,wasClean:b.wasClean}):this.changeState("closed"),this.unbindListeners(),this.socket=void 0}onMessage(b){this.emit("message",b)}onActivity(){this.emit("activity")}bindListeners(){this.socket.onopen=()=>{this.onOpen()},this.socket.onerror=b=>{this.onError(b)},this.socket.onclose=b=>{this.onClose(b)},this.socket.onmessage=b=>{this.onMessage(b)},this.supportsPing()&&(this.socket.onactivity=()=>{this.onActivity()})}unbindListeners(){this.socket&&(this.socket.onopen=void 0,this.socket.onerror=void 0,this.socket.onclose=void 0,this.socket.onmessage=void 0,this.supportsPing()&&(this.socket.onactivity=void 0))}changeState(b,C){this.state=b,this.timeline.info(this.buildTimelineMessage({state:b,params:C})),this.emit(b,C)}buildTimelineMessage(b){return Ie({cid:this.id},b)}}class ke{constructor(b){this.hooks=b}isSupported(b){return this.hooks.isSupported(b)}createConnection(b,C,$,j){return new Ke(this.hooks,b,C,$,j)}}var Me=new ke({urls:ce,handlesActivityChecks:!1,supportsPing:!1,isInitialized:function(){return!!Ue.getWebSocketAPI()},isSupported:function(){return!!Ue.getWebSocketAPI()},getSocket:function(E){return Ue.createWebSocket(E)}}),Re={urls:Z,handlesActivityChecks:!1,supportsPing:!0,isInitialized:function(){return!0}},tt=Ie({getSocket:function(E){return Ue.HTTPFactory.createStreamingSocket(E)}},Re),Pe=Ie({getSocket:function(E){return Ue.HTTPFactory.createPollingSocket(E)}},Re),Ve={isSupported:function(){return Ue.isXHRSupported()}},Ce=new ke(Ie({},tt,Ve)),He=new ke(Ie({},Pe,Ve)),nt={ws:Me,xhr_streaming:Ce,xhr_polling:He};const Lt=nt;var Bt=new ke({file:"sockjs",urls:ve,handlesActivityChecks:!0,supportsPing:!1,isSupported:function(){return!0},isInitialized:function(){return window.SockJS!==void 0},getSocket:function(E,b){return new window.SockJS(E,null,{js_path:x.getPath("sockjs",{useTLS:b.useTLS}),ignore_null_origin:b.ignoreNullOrigin})},beforeOpen:function(E,b){E.send(JSON.stringify({path:b}))}}),Nn={isSupported:function(E){var b=Ue.isXDRSupported(E.useTLS);return b}},Gt=new ke(Ie({},tt,Nn)),Ft=new ke(Ie({},Pe,Nn));Lt.xdr_streaming=Gt,Lt.xdr_polling=Ft,Lt.sockjs=Bt;const Dn=Lt;class Ua extends xe{constructor(){super();var b=this;window.addEventListener!==void 0&&(window.addEventListener("online",function(){b.emit("online")},!1),window.addEventListener("offline",function(){b.emit("offline")},!1))}isOnline(){return window.navigator.onLine===void 0?!0:window.navigator.onLine}}var nl=new Ua;class gh{constructor(b,C,$){this.manager=b,this.transport=C,this.minPingDelay=$.minPingDelay,this.maxPingDelay=$.maxPingDelay,this.pingDelay=void 0}createConnection(b,C,$,j){j=Ie({},j,{activityTimeout:this.pingDelay});var ne=this.transport.createConnection(b,C,$,j),ye=null,Le=function(){ne.unbind("open",Le),ne.bind("closed",We),ye=Te.now()},We=ft=>{if(ne.unbind("closed",We),ft.code===1002||ft.code===1003)this.manager.reportDeath();else if(!ft.wasClean&&ye){var vt=Te.now()-ye;vt<2*this.maxPingDelay&&(this.manager.reportDeath(),this.pingDelay=Math.max(vt/2,this.minPingDelay))}};return ne.bind("open",Le),ne}isSupported(b){return this.manager.isAlive()&&this.transport.isSupported(b)}}const Jc={decodeMessage:function(E){try{var b=JSON.parse(E.data),C=b.data;if(typeof C=="string")try{C=JSON.parse(b.data)}catch{}var $={event:b.event,channel:b.channel,data:C};return b.user_id&&($.user_id=b.user_id),$}catch(j){throw{type:"MessageParseError",error:j,data:E.data}}},encodeMessage:function(E){return JSON.stringify(E)},processHandshake:function(E){var b=Jc.decodeMessage(E);if(b.event==="pusher:connection_established"){if(!b.data.activity_timeout)throw"No activity timeout specified in handshake";return{action:"connected",id:b.data.socket_id,activityTimeout:b.data.activity_timeout*1e3}}else{if(b.event==="pusher:error")return{action:this.getCloseAction(b.data),error:this.getCloseError(b.data)};throw"Invalid handshake"}},getCloseAction:function(E){return E.code<4e3?E.code>=1002&&E.code<=1004?"backoff":null:E.code===4e3?"tls_only":E.code<4100?"refused":E.code<4200?"backoff":E.code<4300?"retry":"refused"},getCloseError:function(E){return E.code!==1e3&&E.code!==1001?{type:"PusherError",data:{code:E.code,message:E.reason||E.message}}:null}},Yr=Jc;class Ni extends xe{constructor(b,C){super(),this.id=b,this.transport=C,this.activityTimeout=C.activityTimeout,this.bindListeners()}handlesActivityChecks(){return this.transport.handlesActivityChecks()}send(b){return this.transport.send(b)}send_event(b,C,$){var j={event:b,data:C};return $&&(j.channel=$),it.debug("Event sent",j),this.send(Yr.encodeMessage(j))}ping(){this.transport.supportsPing()?this.transport.ping():this.send_event("pusher:ping",{})}close(){this.transport.close()}bindListeners(){var b={message:$=>{var j;try{j=Yr.decodeMessage($)}catch(ne){this.emit("error",{type:"MessageParseError",error:ne,data:$.data})}if(j!==void 0){switch(it.debug("Event recd",j),j.event){case"pusher:error":this.emit("error",{type:"PusherError",data:j.data});break;case"pusher:ping":this.emit("ping");break;case"pusher:pong":this.emit("pong");break}this.emit("message",j)}},activity:()=>{this.emit("activity")},error:$=>{this.emit("error",$)},closed:$=>{C(),$&&$.code&&this.handleCloseEvent($),this.transport=null,this.emit("closed")}},C=()=>{gt(b,($,j)=>{this.transport.unbind(j,$)})};gt(b,($,j)=>{this.transport.bind(j,$)})}handleCloseEvent(b){var C=Yr.getCloseAction(b),$=Yr.getCloseError(b);$&&this.emit("error",$),C&&this.emit(C,{action:C,error:$})}}class rl{constructor(b,C){this.transport=b,this.callback=C,this.bindListeners()}close(){this.unbindListeners(),this.transport.close()}bindListeners(){this.onMessage=b=>{this.unbindListeners();var C;try{C=Yr.processHandshake(b)}catch($){this.finish("error",{error:$}),this.transport.close();return}C.action==="connected"?this.finish("connected",{connection:new Ni(C.id,this.transport),activityTimeout:C.activityTimeout}):(this.finish(C.action,{error:C.error}),this.transport.close())},this.onClosed=b=>{this.unbindListeners();var C=Yr.getCloseAction(b)||"backoff",$=Yr.getCloseError(b);this.finish(C,{error:$})},this.transport.bind("message",this.onMessage),this.transport.bind("closed",this.onClosed)}unbindListeners(){this.transport.unbind("message",this.onMessage),this.transport.unbind("closed",this.onClosed)}finish(b,C){this.callback(Ie({transport:this.transport,action:b},C))}}class Ba{constructor(b,C){this.timeline=b,this.options=C||{}}send(b,C){this.timeline.isEmpty()||this.timeline.send(Ue.TimelineTransport.getAgent(this,b),C)}}class Xr extends xe{constructor(b,C){super(function($,j){it.debug("No callbacks on "+b+" for "+$)}),this.name=b,this.pusher=C,this.subscribed=!1,this.subscriptionPending=!1,this.subscriptionCancelled=!1}authorize(b,C){return C(null,{auth:""})}trigger(b,C){if(b.indexOf("client-")!==0)throw new L("Event '"+b+"' does not start with 'client-'");if(!this.subscribed){var $=O.buildLogSuffix("triggeringClientEvents");it.warn(`Client event triggered before channel 'subscription_succeeded' event . ${$}`)}return this.pusher.send_event(b,C,this.name)}disconnect(){this.subscribed=!1,this.subscriptionPending=!1}handleEvent(b){var C=b.event,$=b.data;if(C==="pusher_internal:subscription_succeeded")this.handleSubscriptionSucceededEvent(b);else if(C==="pusher_internal:subscription_count")this.handleSubscriptionCountEvent(b);else if(C.indexOf("pusher_internal:")!==0){var j={};this.emit(C,$,j)}}handleSubscriptionSucceededEvent(b){this.subscriptionPending=!1,this.subscribed=!0,this.subscriptionCancelled?this.pusher.unsubscribe(this.name):this.emit("pusher:subscription_succeeded",b.data)}handleSubscriptionCountEvent(b){b.data.subscription_count&&(this.subscriptionCount=b.data.subscription_count),this.emit("pusher:subscription_count",b.data)}subscribe(){this.subscribed||(this.subscriptionPending=!0,this.subscriptionCancelled=!1,this.authorize(this.pusher.connection.socket_id,(b,C)=>{b?(this.subscriptionPending=!1,it.error(b.toString()),this.emit("pusher:subscription_error",Object.assign({},{type:"AuthError",error:b.message},b instanceof je?{status:b.status}:{}))):this.pusher.send_event("pusher:subscribe",{auth:C.auth,channel_data:C.channel_data,channel:this.name})}))}unsubscribe(){this.subscribed=!1,this.pusher.send_event("pusher:unsubscribe",{channel:this.name})}cancelSubscription(){this.subscriptionCancelled=!0}reinstateSubscription(){this.subscriptionCancelled=!1}}class fa extends Xr{authorize(b,C){return this.pusher.config.channelAuthorizer({channelName:this.name,socketId:b},C)}}class qa{constructor(){this.reset()}get(b){return Object.prototype.hasOwnProperty.call(this.members,b)?{id:b,info:this.members[b]}:null}each(b){gt(this.members,(C,$)=>{b(this.get($))})}setMyID(b){this.myID=b}onSubscription(b){this.members=b.presence.hash,this.count=b.presence.count,this.me=this.get(this.myID)}addMember(b){return this.get(b.user_id)===null&&this.count++,this.members[b.user_id]=b.user_info,this.get(b.user_id)}removeMember(b){var C=this.get(b.user_id);return C&&(delete this.members[b.user_id],this.count--),C}reset(){this.members={},this.count=0,this.myID=null,this.me=null}}var nn=function(E,b,C,$){function j(ne){return ne instanceof C?ne:new C(function(ye){ye(ne)})}return new(C||(C=Promise))(function(ne,ye){function Le(vt){try{ft($.next(vt))}catch(Vt){ye(Vt)}}function We(vt){try{ft($.throw(vt))}catch(Vt){ye(Vt)}}function ft(vt){vt.done?ne(vt.value):j(vt.value).then(Le,We)}ft(($=$.apply(E,b||[])).next())})};class Qc extends fa{constructor(b,C){super(b,C),this.members=new qa}authorize(b,C){super.authorize(b,($,j)=>nn(this,void 0,void 0,function*(){if(!$)if(j=j,j.channel_data!=null){var ne=JSON.parse(j.channel_data);this.members.setMyID(ne.user_id)}else if(yield this.pusher.user.signinDonePromise,this.pusher.user.user_data!=null)this.members.setMyID(this.pusher.user.user_data.id);else{let ye=O.buildLogSuffix("authorizationEndpoint");it.error(`Invalid auth response for channel '${this.name}', expected 'channel_data' field. ${ye}, or the user should be signed in.`),C("Invalid auth response");return}C($,j)}))}handleEvent(b){var C=b.event;if(C.indexOf("pusher_internal:")===0)this.handleInternalEvent(b);else{var $=b.data,j={};b.user_id&&(j.user_id=b.user_id),this.emit(C,$,j)}}handleInternalEvent(b){var C=b.event,$=b.data;switch(C){case"pusher_internal:subscription_succeeded":this.handleSubscriptionSucceededEvent(b);break;case"pusher_internal:subscription_count":this.handleSubscriptionCountEvent(b);break;case"pusher_internal:member_added":var j=this.members.addMember($);this.emit("pusher:member_added",j);break;case"pusher_internal:member_removed":var ne=this.members.removeMember($);ne&&this.emit("pusher:member_removed",ne);break}}handleSubscriptionSucceededEvent(b){this.subscriptionPending=!1,this.subscribed=!0,this.subscriptionCancelled?this.pusher.unsubscribe(this.name):(this.members.onSubscription(b.data),this.emit("pusher:subscription_succeeded",this.members))}disconnect(){this.members.reset(),super.disconnect()}}var Zc=f(978),Mr=f(594);class Ga extends fa{constructor(b,C,$){super(b,C),this.key=null,this.nacl=$}authorize(b,C){super.authorize(b,($,j)=>{if($){C($,j);return}let ne=j.shared_secret;if(!ne){C(new Error(`No shared_secret key in auth payload for encrypted channel: ${this.name}`),null);return}this.key=(0,Mr.decode)(ne),delete j.shared_secret,C(null,j)})}trigger(b,C){throw new de("Client events are not currently supported for encrypted channels")}handleEvent(b){var C=b.event,$=b.data;if(C.indexOf("pusher_internal:")===0||C.indexOf("pusher:")===0){super.handleEvent(b);return}this.handleEncryptedEvent(C,$)}handleEncryptedEvent(b,C){if(!this.key){it.debug("Received encrypted event before key has been retrieved from the authEndpoint");return}if(!C.ciphertext||!C.nonce){it.error("Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: "+C);return}let $=(0,Mr.decode)(C.ciphertext);if($.length<this.nacl.secretbox.overheadLength){it.error(`Expected encrypted event ciphertext length to be ${this.nacl.secretbox.overheadLength}, got: ${$.length}`);return}let j=(0,Mr.decode)(C.nonce);if(j.length<this.nacl.secretbox.nonceLength){it.error(`Expected encrypted event nonce length to be ${this.nacl.secretbox.nonceLength}, got: ${j.length}`);return}let ne=this.nacl.secretbox.open($,j,this.key);if(ne===null){it.debug("Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint..."),this.authorize(this.pusher.connection.socket_id,(ye,Le)=>{if(ye){it.error(`Failed to make a request to the authEndpoint: ${Le}. Unable to fetch new key, so dropping encrypted event`);return}if(ne=this.nacl.secretbox.open($,j,this.key),ne===null){it.error("Failed to decrypt event with new key. Dropping encrypted event");return}this.emit(b,this.getDataToEmit(ne))});return}this.emit(b,this.getDataToEmit(ne))}getDataToEmit(b){let C=(0,Zc.D4)(b);try{return JSON.parse(C)}catch{return C}}}class mh extends xe{constructor(b,C){super(),this.state="initialized",this.connection=null,this.key=b,this.options=C,this.timeline=this.options.timeline,this.usingTLS=this.options.useTLS,this.errorCallbacks=this.buildErrorCallbacks(),this.connectionCallbacks=this.buildConnectionCallbacks(this.errorCallbacks),this.handshakeCallbacks=this.buildHandshakeCallbacks(this.errorCallbacks);var $=Ue.getNetwork();$.bind("online",()=>{this.timeline.info({netinfo:"online"}),(this.state==="connecting"||this.state==="unavailable")&&this.retryIn(0)}),$.bind("offline",()=>{this.timeline.info({netinfo:"offline"}),this.connection&&this.sendActivityCheck()}),this.updateStrategy()}switchCluster(b){this.key=b,this.updateStrategy(),this.retryIn(0)}connect(){if(!(this.connection||this.runner)){if(!this.strategy.isSupported()){this.updateState("failed");return}this.updateState("connecting"),this.startConnecting(),this.setUnavailableTimer()}}send(b){return this.connection?this.connection.send(b):!1}send_event(b,C,$){return this.connection?this.connection.send_event(b,C,$):!1}disconnect(){this.disconnectInternally(),this.updateState("disconnected")}isUsingTLS(){return this.usingTLS}startConnecting(){var b=(C,$)=>{C?this.runner=this.strategy.connect(0,b):$.action==="error"?(this.emit("error",{type:"HandshakeError",error:$.error}),this.timeline.error({handshakeError:$.error})):(this.abortConnecting(),this.handshakeCallbacks[$.action]($))};this.runner=this.strategy.connect(0,b)}abortConnecting(){this.runner&&(this.runner.abort(),this.runner=null)}disconnectInternally(){if(this.abortConnecting(),this.clearRetryTimer(),this.clearUnavailableTimer(),this.connection){var b=this.abandonConnection();b.close()}}updateStrategy(){this.strategy=this.options.getStrategy({key:this.key,timeline:this.timeline,useTLS:this.usingTLS})}retryIn(b){this.timeline.info({action:"retry",delay:b}),b>0&&this.emit("connecting_in",Math.round(b/1e3)),this.retryTimer=new se(b||0,()=>{this.disconnectInternally(),this.connect()})}clearRetryTimer(){this.retryTimer&&(this.retryTimer.ensureAborted(),this.retryTimer=null)}setUnavailableTimer(){this.unavailableTimer=new se(this.options.unavailableTimeout,()=>{this.updateState("unavailable")})}clearUnavailableTimer(){this.unavailableTimer&&this.unavailableTimer.ensureAborted()}sendActivityCheck(){this.stopActivityCheck(),this.connection.ping(),this.activityTimer=new se(this.options.pongTimeout,()=>{this.timeline.error({pong_timed_out:this.options.pongTimeout}),this.retryIn(0)})}resetActivityCheck(){this.stopActivityCheck(),this.connection&&!this.connection.handlesActivityChecks()&&(this.activityTimer=new se(this.activityTimeout,()=>{this.sendActivityCheck()}))}stopActivityCheck(){this.activityTimer&&this.activityTimer.ensureAborted()}buildConnectionCallbacks(b){return Ie({},b,{message:C=>{this.resetActivityCheck(),this.emit("message",C)},ping:()=>{this.send_event("pusher:pong",{})},activity:()=>{this.resetActivityCheck()},error:C=>{this.emit("error",C)},closed:()=>{this.abandonConnection(),this.shouldRetry()&&this.retryIn(1e3)}})}buildHandshakeCallbacks(b){return Ie({},b,{connected:C=>{this.activityTimeout=Math.min(this.options.activityTimeout,C.activityTimeout,C.connection.activityTimeout||1/0),this.clearUnavailableTimer(),this.setConnection(C.connection),this.socket_id=this.connection.id,this.updateState("connected",{socket_id:this.socket_id})}})}buildErrorCallbacks(){let b=C=>$=>{$.error&&this.emit("error",{type:"WebSocketError",error:$.error}),C($)};return{tls_only:b(()=>{this.usingTLS=!0,this.updateStrategy(),this.retryIn(0)}),refused:b(()=>{this.disconnect()}),backoff:b(()=>{this.retryIn(1e3)}),retry:b(()=>{this.retryIn(0)})}}setConnection(b){this.connection=b;for(var C in this.connectionCallbacks)this.connection.bind(C,this.connectionCallbacks[C]);this.resetActivityCheck()}abandonConnection(){if(this.connection){this.stopActivityCheck();for(var b in this.connectionCallbacks)this.connection.unbind(b,this.connectionCallbacks[b]);var C=this.connection;return this.connection=null,C}}updateState(b,C){var $=this.state;if(this.state=b,$!==b){var j=b;j==="connected"&&(j+=" with new socket ID "+C.socket_id),it.debug("State changed",$+" -> "+j),this.timeline.info({state:b,params:C}),this.emit("state_change",{previous:$,current:b}),this.emit(b,C)}}shouldRetry(){return this.state==="connecting"||this.state==="connected"}}class eu{constructor(){this.channels={}}add(b,C){return this.channels[b]||(this.channels[b]=tu(b,C)),this.channels[b]}all(){return Yt(this.channels)}find(b){return this.channels[b]}remove(b){var C=this.channels[b];return delete this.channels[b],C}disconnect(){gt(this.channels,function(b){b.disconnect()})}}function tu(E,b){if(E.indexOf("private-encrypted-")===0){if(b.config.nacl)return Bn.createEncryptedChannel(E,b,b.config.nacl);let C="Tried to subscribe to a private-encrypted- channel but no nacl implementation available",$=O.buildLogSuffix("encryptedChannelSupport");throw new de(`${C}. ${$}`)}else{if(E.indexOf("private-")===0)return Bn.createPrivateChannel(E,b);if(E.indexOf("presence-")===0)return Bn.createPresenceChannel(E,b);if(E.indexOf("#")===0)throw new B('Cannot create a channel with name "'+E+'".');return Bn.createChannel(E,b)}}var yh={createChannels(){return new eu},createConnectionManager(E,b){return new mh(E,b)},createChannel(E,b){return new Xr(E,b)},createPrivateChannel(E,b){return new fa(E,b)},createPresenceChannel(E,b){return new Qc(E,b)},createEncryptedChannel(E,b,C){return new Ga(E,b,C)},createTimelineSender(E,b){return new Ba(E,b)},createHandshake(E,b){return new rl(E,b)},createAssistantToTheTransportManager(E,b,C){return new gh(E,b,C)}};const Bn=yh;class Ii{constructor(b){this.options=b||{},this.livesLeft=this.options.lives||1/0}getAssistant(b){return Bn.createAssistantToTheTransportManager(this,b,{minPingDelay:this.options.minPingDelay,maxPingDelay:this.options.maxPingDelay})}isAlive(){return this.livesLeft>0}reportDeath(){this.livesLeft-=1}}class Sn{constructor(b,C){this.strategies=b,this.loop=!!C.loop,this.failFast=!!C.failFast,this.timeout=C.timeout,this.timeoutLimit=C.timeoutLimit}isSupported(){return kn(this.strategies,Te.method("isSupported"))}connect(b,C){var $=this.strategies,j=0,ne=this.timeout,ye=null,Le=(We,ft)=>{ft?C(null,ft):(j=j+1,this.loop&&(j=j%$.length),j<$.length?(ne&&(ne=ne*2,this.timeoutLimit&&(ne=Math.min(ne,this.timeoutLimit))),ye=this.tryStrategy($[j],b,{timeout:ne,failFast:this.failFast},Le)):C(!0))};return ye=this.tryStrategy($[j],b,{timeout:ne,failFast:this.failFast},Le),{abort:function(){ye.abort()},forceMinPriority:function(We){b=We,ye&&ye.forceMinPriority(We)}}}tryStrategy(b,C,$,j){var ne=null,ye=null;return $.timeout>0&&(ne=new se($.timeout,function(){ye.abort(),j(!0)})),ye=b.connect(C,function(Le,We){Le&&ne&&ne.isRunning()&&!$.failFast||(ne&&ne.ensureAborted(),j(Le,We))}),{abort:function(){ne&&ne.ensureAborted(),ye.abort()},forceMinPriority:function(Le){ye.forceMinPriority(Le)}}}}class On{constructor(b){this.strategies=b}isSupported(){return kn(this.strategies,Te.method("isSupported"))}connect(b,C){return nu(this.strategies,b,function($,j){return function(ne,ye){if(j[$].error=ne,ne){bh(j)&&C(!0);return}Ht(j,function(Le){Le.forceMinPriority(ye.transport.priority)}),C(null,ye)}})}}function nu(E,b,C){var $=bt(E,function(j,ne,ye,Le){return j.connect(b,C(ne,Le))});return{abort:function(){Ht($,al)},forceMinPriority:function(j){Ht($,function(ne){ne.forceMinPriority(j)})}}}function bh(E){return hr(E,function(b){return!!b.error})}function al(E){!E.error&&!E.aborted&&(E.abort(),E.aborted=!0)}class ru{constructor(b,C,$){this.strategy=b,this.transports=C,this.ttl=$.ttl||18e5,this.usingTLS=$.useTLS,this.timeline=$.timeline}isSupported(){return this.strategy.isSupported()}connect(b,C){var $=this.usingTLS,j=vh($),ne=j&&j.cacheSkipCount?j.cacheSkipCount:0,ye=[this.strategy];if(j&&j.timestamp+this.ttl>=Te.now()){var Le=this.transports[j.transport];Le&&(["ws","wss"].includes(j.transport)||ne>3?(this.timeline.info({cached:!0,transport:j.transport,latency:j.latency}),ye.push(new Sn([Le],{timeout:j.latency*2+1e3,failFast:!0}))):ne++)}var We=Te.now(),ft=ye.pop().connect(b,function vt(Vt,Hr){Vt?(Os($),ye.length>0?(We=Te.now(),ft=ye.pop().connect(b,vt)):C(Vt)):(qn($,Hr.transport.name,Te.now()-We,ne),C(null,Hr))});return{abort:function(){ft.abort()},forceMinPriority:function(vt){b=vt,ft&&ft.forceMinPriority(vt)}}}}function Fa(E){return"pusherTransport"+(E?"TLS":"NonTLS")}function vh(E){var b=Ue.getLocalStorage();if(b)try{var C=b[Fa(E)];if(C)return JSON.parse(C)}catch{Os(E)}return null}function qn(E,b,C,$){var j=Ue.getLocalStorage();if(j)try{j[Fa(E)]=bn({timestamp:Te.now(),transport:b,latency:C,cacheSkipCount:$})}catch{}}function Os(E){var b=Ue.getLocalStorage();if(b)try{delete b[Fa(E)]}catch{}}class ji{constructor(b,{delay:C}){this.strategy=b,this.options={delay:C}}isSupported(){return this.strategy.isSupported()}connect(b,C){var $=this.strategy,j,ne=new se(this.options.delay,function(){j=$.connect(b,C)});return{abort:function(){ne.ensureAborted(),j&&j.abort()},forceMinPriority:function(ye){b=ye,j&&j.forceMinPriority(ye)}}}}class ha{constructor(b,C,$){this.test=b,this.trueBranch=C,this.falseBranch=$}isSupported(){var b=this.test()?this.trueBranch:this.falseBranch;return b.isSupported()}connect(b,C){var $=this.test()?this.trueBranch:this.falseBranch;return $.connect(b,C)}}class Va{constructor(b){this.strategy=b}isSupported(){return this.strategy.isSupported()}connect(b,C){var $=this.strategy.connect(b,function(j,ne){ne&&$.abort(),C(j,ne)});return $}}function Ka(E){return function(){return E.isSupported()}}var au=function(E,b,C){var $={};function j(bl,bu,vu,Ph,Uh){var Su=C(E,bl,bu,vu,Ph,Uh);return $[bl]=Su,Su}var ne=Object.assign({},b,{hostNonTLS:E.wsHost+":"+E.wsPort,hostTLS:E.wsHost+":"+E.wssPort,httpPath:E.wsPath}),ye=Object.assign({},ne,{useTLS:!0}),Le=Object.assign({},b,{hostNonTLS:E.httpHost+":"+E.httpPort,hostTLS:E.httpHost+":"+E.httpsPort,httpPath:E.httpPath}),We={loop:!0,timeout:15e3,timeoutLimit:6e4},ft=new Ii({minPingDelay:1e4,maxPingDelay:E.activityTimeout}),vt=new Ii({lives:2,minPingDelay:1e4,maxPingDelay:E.activityTimeout}),Vt=j("ws","ws",3,ne,ft),Hr=j("wss","ws",3,ye,ft),jh=j("sockjs","sockjs",1,Le),mu=j("xhr_streaming","xhr_streaming",1,Le,vt),Hh=j("xdr_streaming","xdr_streaming",1,Le,vt),gl=j("xhr_polling","xhr_polling",1,Le),yu=j("xdr_polling","xdr_polling",1,Le),Xa=new Sn([Vt],We),qi=new Sn([Hr],We),zh=new Sn([jh],We),Gi=new Sn([new ha(Ka(mu),mu,Hh)],We),ml=new Sn([new ha(Ka(gl),gl,yu)],We),yl=new Sn([new ha(Ka(Gi),new On([Gi,new ji(ml,{delay:4e3})]),ml)],We),Fi=new ha(Ka(yl),yl,zh),Vi;return b.useTLS?Vi=new On([Xa,new ji(Fi,{delay:2e3})]):Vi=new On([Xa,new ji(qi,{delay:2e3}),new ji(Fi,{delay:5e3})]),new ru(new Va(new ha(Ka(Vt),Vi,Fi)),$,{ttl:18e5,timeline:b.timeline,useTLS:b.useTLS})};const Wa=au;function Sh(){var E=this;E.timeline.info(E.buildTimelineMessage({transport:E.name+(E.options.useTLS?"s":"")})),E.hooks.isInitialized()?E.changeState("initialized"):E.hooks.file?(E.changeState("initializing"),x.load(E.hooks.file,{useTLS:E.options.useTLS},function(b,C){E.hooks.isInitialized()?(E.changeState("initialized"),C(!0)):(b&&E.onError(b),E.onClose(),C(!1))})):E.onClose()}var iu={getRequest:function(E){var b=new window.XDomainRequest;return b.ontimeout=function(){E.emit("error",new q),E.close()},b.onerror=function(C){E.emit("error",C),E.close()},b.onprogress=function(){b.responseText&&b.responseText.length>0&&E.onChunk(200,b.responseText)},b.onload=function(){b.responseText&&b.responseText.length>0&&E.onChunk(200,b.responseText),E.emit("finished",200),E.close()},b},abortRequest:function(E){E.ontimeout=E.onerror=E.onprogress=E.onload=null,E.abort()}};const su=iu,il=256*1024;class wh extends xe{constructor(b,C,$){super(),this.hooks=b,this.method=C,this.url=$}start(b){this.position=0,this.xhr=this.hooks.getRequest(this),this.unloader=()=>{this.close()},Ue.addUnloadListener(this.unloader),this.xhr.open(this.method,this.url,!0),this.xhr.setRequestHeader&&this.xhr.setRequestHeader("Content-Type","application/json"),this.xhr.send(b)}close(){this.unloader&&(Ue.removeUnloadListener(this.unloader),this.unloader=null),this.xhr&&(this.hooks.abortRequest(this.xhr),this.xhr=null)}onChunk(b,C){for(;;){var $=this.advanceBuffer(C);if($)this.emit("chunk",{status:b,data:$});else break}this.isBufferTooLong(C)&&this.emit("buffer_too_long")}advanceBuffer(b){var C=b.slice(this.position),$=C.indexOf(`
`);return $!==-1?(this.position+=$+1,C.slice(0,$)):null}isBufferTooLong(b){return this.position===b.length&&b.length>il}}var sl;(function(E){E[E.CONNECTING=0]="CONNECTING",E[E.OPEN=1]="OPEN",E[E.CLOSED=3]="CLOSED"})(sl||(sl={}));const gr=sl;var Nr=1;class ol{constructor(b,C){this.hooks=b,this.session=Ls(1e3)+"/"+lu(8),this.location=ll(C),this.readyState=gr.CONNECTING,this.openStream()}send(b){return this.sendRaw(JSON.stringify([b]))}ping(){this.hooks.sendHeartbeat(this)}close(b,C){this.onClose(b,C,!0)}sendRaw(b){if(this.readyState===gr.OPEN)try{return Ue.createSocketRequest("POST",pa(Ya(this.location,this.session))).start(b),!0}catch{return!1}else return!1}reconnect(){this.closeStream(),this.openStream()}onClose(b,C,$){this.closeStream(),this.readyState=gr.CLOSED,this.onclose&&this.onclose({code:b,reason:C,wasClean:$})}onChunk(b){if(b.status===200){this.readyState===gr.OPEN&&this.onActivity();var C,$=b.data.slice(0,1);switch($){case"o":C=JSON.parse(b.data.slice(1)||"{}"),this.onOpen(C);break;case"a":C=JSON.parse(b.data.slice(1)||"[]");for(var j=0;j<C.length;j++)this.onEvent(C[j]);break;case"m":C=JSON.parse(b.data.slice(1)||"null"),this.onEvent(C);break;case"h":this.hooks.onHeartbeat(this);break;case"c":C=JSON.parse(b.data.slice(1)||"[]"),this.onClose(C[0],C[1],!0);break}}}onOpen(b){this.readyState===gr.CONNECTING?(b&&b.hostname&&(this.location.base=ou(this.location.base,b.hostname)),this.readyState=gr.OPEN,this.onopen&&this.onopen()):this.onClose(1006,"Server lost session",!0)}onEvent(b){this.readyState===gr.OPEN&&this.onmessage&&this.onmessage({data:b})}onActivity(){this.onactivity&&this.onactivity()}onError(b){this.onerror&&this.onerror(b)}openStream(){this.stream=Ue.createSocketRequest("POST",pa(this.hooks.getReceiveURL(this.location,this.session))),this.stream.bind("chunk",b=>{this.onChunk(b)}),this.stream.bind("finished",b=>{this.hooks.onFinished(this,b)}),this.stream.bind("buffer_too_long",()=>{this.reconnect()});try{this.stream.start()}catch(b){Te.defer(()=>{this.onError(b),this.onClose(1006,"Could not start streaming",!1)})}}closeStream(){this.stream&&(this.stream.unbind_all(),this.stream.close(),this.stream=null)}}function ll(E){var b=/([^\?]*)\/*(\??.*)/.exec(E);return{base:b[1],queryString:b[2]}}function Ya(E,b){return E.base+"/"+b+"/xhr_send"}function pa(E){var b=E.indexOf("?")===-1?"?":"&";return E+b+"t="+ +new Date+"&n="+Nr++}function ou(E,b){var C=/(https?:\/\/)([^\/:]+)((\/|:)?.*)/.exec(E);return C[1]+b+C[3]}function Ls(E){return Ue.randomInt(E)}function lu(E){for(var b=[],C=0;C<E;C++)b.push(Ls(32).toString(32));return b.join("")}const Hi=ol;var Ir={getReceiveURL:function(E,b){return E.base+"/"+b+"/xhr_streaming"+E.queryString},onHeartbeat:function(E){E.sendRaw("[]")},sendHeartbeat:function(E){E.sendRaw("[]")},onFinished:function(E,b){E.onClose(1006,"Connection interrupted ("+b+")",!1)}};const cl=Ir;var zi={getReceiveURL:function(E,b){return E.base+"/"+b+"/xhr"+E.queryString},onHeartbeat:function(){},sendHeartbeat:function(E){E.sendRaw("[]")},onFinished:function(E,b){b===200?E.reconnect():E.onClose(1006,"Connection interrupted ("+b+")",!1)}};const Jr=zi;var ul={getRequest:function(E){var b=Ue.getXHRAPI(),C=new b;return C.onreadystatechange=C.onprogress=function(){switch(C.readyState){case 3:C.responseText&&C.responseText.length>0&&E.onChunk(C.status,C.responseText);break;case 4:C.responseText&&C.responseText.length>0&&E.onChunk(C.status,C.responseText),E.emit("finished",C.status),E.close();break}},C},abortRequest:function(E){E.onreadystatechange=null,E.abort()}};const $s=ul;var cu={createStreamingSocket(E){return this.createSocket(cl,E)},createPollingSocket(E){return this.createSocket(Jr,E)},createSocket(E,b){return new Hi(E,b)},createXHR(E,b){return this.createRequest($s,E,b)},createRequest(E,b,C){return new wh(E,b,C)}};const Pi=cu;Pi.createXDR=function(E,b){return this.createRequest(su,E,b)};var uu={nextAuthCallbackID:1,auth_callbacks:{},ScriptReceivers:m,DependenciesReceivers:_,getDefaultStrategy:Wa,Transports:Dn,transportConnectionInitializer:Sh,HTTPFactory:Pi,TimelineTransport:dn,getXHRAPI(){return window.XMLHttpRequest},getWebSocketAPI(){return window.WebSocket||window.MozWebSocket},setup(E){window.Pusher=E;var b=()=>{this.onDocumentBody(E.ready)};window.JSON?b():x.load("json2",{},b)},getDocument(){return document},getProtocol(){return this.getDocument().location.protocol},getAuthorizers(){return{ajax:ze,jsonp:vn}},onDocumentBody(E){document.body?E():setTimeout(()=>{this.onDocumentBody(E)},0)},createJSONPRequest(E,b){return new pr(E,b)},createScriptRequest(E){return new da(E)},getLocalStorage(){try{return window.localStorage}catch{return}},createXHR(){return this.getXHRAPI()?this.createXMLHttpRequest():this.createMicrosoftXHR()},createXMLHttpRequest(){var E=this.getXHRAPI();return new E},createMicrosoftXHR(){return new ActiveXObject("Microsoft.XMLHTTP")},getNetwork(){return nl},createWebSocket(E){var b=this.getWebSocketAPI();return new b(E)},createSocketRequest(E,b){if(this.isXHRSupported())return this.HTTPFactory.createXHR(E,b);if(this.isXDRSupported(b.indexOf("https:")===0))return this.HTTPFactory.createXDR(E,b);throw"Cross-origin HTTP requests are not supported"},isXHRSupported(){var E=this.getXHRAPI();return!!E&&new E().withCredentials!==void 0},isXDRSupported(E){var b=E?"https:":"http:",C=this.getProtocol();return!!window.XDomainRequest&&C===b},addUnloadListener(E){window.addEventListener!==void 0?window.addEventListener("unload",E,!1):window.attachEvent!==void 0&&window.attachEvent("onunload",E)},removeUnloadListener(E){window.addEventListener!==void 0?window.removeEventListener("unload",E,!1):window.detachEvent!==void 0&&window.detachEvent("onunload",E)},randomInt(E){return Math.floor(function(){return(window.crypto||window.msCrypto).getRandomValues(new Uint32Array(1))[0]/Math.pow(2,32)}()*E)}};const Ue=uu;var jr;(function(E){E[E.ERROR=3]="ERROR",E[E.INFO=6]="INFO",E[E.DEBUG=7]="DEBUG"})(jr||(jr={}));const ga=jr;class Ui{constructor(b,C,$){this.key=b,this.session=C,this.events=[],this.options=$||{},this.sent=0,this.uniqueID=0}log(b,C){b<=this.options.level&&(this.events.push(Ie({},C,{timestamp:Te.now()})),this.options.limit&&this.events.length>this.options.limit&&this.events.shift())}error(b){this.log(ga.ERROR,b)}info(b){this.log(ga.INFO,b)}debug(b){this.log(ga.DEBUG,b)}isEmpty(){return this.events.length===0}send(b,C){var $=Ie({session:this.session,bundle:this.sent+1,key:this.key,lib:"js",version:this.options.version,cluster:this.options.cluster,features:this.options.features,timeline:this.events},this.options.params);return this.events=[],b($,(j,ne)=>{j||this.sent++,C&&C(j,ne)}),!0}generateUniqueID(){return this.uniqueID++,this.uniqueID}}class Ch{constructor(b,C,$,j){this.name=b,this.priority=C,this.transport=$,this.options=j||{}}isSupported(){return this.transport.isSupported({useTLS:this.options.useTLS})}connect(b,C){if(this.isSupported()){if(this.priority<b)return Ms(new z,C)}else return Ms(new Se,C);var $=!1,j=this.transport.createConnection(this.name,this.priority,this.options.key,this.options),ne=null,ye=function(){j.unbind("initialized",ye),j.connect()},Le=function(){ne=Bn.createHandshake(j,function(Vt){$=!0,vt(),C(null,Vt)})},We=function(Vt){vt(),C(Vt)},ft=function(){vt();var Vt;Vt=bn(j),C(new W(Vt))},vt=function(){j.unbind("initialized",ye),j.unbind("open",Le),j.unbind("error",We),j.unbind("closed",ft)};return j.bind("initialized",ye),j.bind("open",Le),j.bind("error",We),j.bind("closed",ft),j.initialize(),{abort:()=>{$||(vt(),ne?ne.close():j.close())},forceMinPriority:Vt=>{$||this.priority<Vt&&(ne?ne.close():j.close())}}}}function Ms(E,b){return Te.defer(function(){b(E)}),{abort:function(){},forceMinPriority:function(){}}}const{Transports:fl}=Ue;var Bi=function(E,b,C,$,j,ne){var ye=fl[C];if(!ye)throw new _e(C);var Le=(!E.enabledTransports||rt(E.enabledTransports,b)!==-1)&&(!E.disabledTransports||rt(E.disabledTransports,b)===-1),We;return Le?(j=Object.assign({ignoreNullOrigin:E.ignoreNullOrigin},j),We=new Ch(b,$,ne?ne.getAssistant(ye):ye,j)):We=Ns,We},Ns={isSupported:function(){return!1},connect:function(E,b){var C=Te.defer(function(){b(new Se)});return{abort:function(){C.ensureAborted()},forceMinPriority:function(){}}}};function du(E){if(E==null)throw"You must pass an options object";if(E.cluster==null)throw"Options object must provide a cluster";"disableStats"in E&&it.warn("The disableStats option is deprecated in favor of enableStats")}const Eh=(E,b)=>{var C="socket_id="+encodeURIComponent(E.socketId);for(var $ in b.params)C+="&"+encodeURIComponent($)+"="+encodeURIComponent(b.params[$]);if(b.paramsProvider!=null){let j=b.paramsProvider();for(var $ in j)C+="&"+encodeURIComponent($)+"="+encodeURIComponent(j[$])}return C},_h=E=>{if(typeof Ue.getAuthorizers()[E.transport]>"u")throw`'${E.transport}' is not a recognized auth transport`;return(b,C)=>{const $=Eh(b,E);Ue.getAuthorizers()[E.transport](Ue,$,E,k.UserAuthentication,C)}},hl=(E,b)=>{var C="socket_id="+encodeURIComponent(E.socketId);C+="&channel_name="+encodeURIComponent(E.channelName);for(var $ in b.params)C+="&"+encodeURIComponent($)+"="+encodeURIComponent(b.params[$]);if(b.paramsProvider!=null){let j=b.paramsProvider();for(var $ in j)C+="&"+encodeURIComponent($)+"="+encodeURIComponent(j[$])}return C},Ah=E=>{if(typeof Ue.getAuthorizers()[E.transport]>"u")throw`'${E.transport}' is not a recognized auth transport`;return(b,C)=>{const $=hl(b,E);Ue.getAuthorizers()[E.transport](Ue,$,E,k.ChannelAuthorization,C)}},xh=(E,b,C)=>{const $={authTransport:b.transport,authEndpoint:b.endpoint,auth:{params:b.params,headers:b.headers}};return(j,ne)=>{const ye=E.channel(j.channelName);C(ye,$).authorize(j.socketId,ne)}};function fu(E,b){let C={activityTimeout:E.activityTimeout||v.activityTimeout,cluster:E.cluster,httpPath:E.httpPath||v.httpPath,httpPort:E.httpPort||v.httpPort,httpsPort:E.httpsPort||v.httpsPort,pongTimeout:E.pongTimeout||v.pongTimeout,statsHost:E.statsHost||v.stats_host,unavailableTimeout:E.unavailableTimeout||v.unavailableTimeout,wsPath:E.wsPath||v.wsPath,wsPort:E.wsPort||v.wsPort,wssPort:E.wssPort||v.wssPort,enableStats:Dh(E),httpHost:Th(E),useTLS:Rh(E),wsHost:hu(E),userAuthenticator:pl(E),channelAuthorizer:Lh(E,b)};return"disabledTransports"in E&&(C.disabledTransports=E.disabledTransports),"enabledTransports"in E&&(C.enabledTransports=E.enabledTransports),"ignoreNullOrigin"in E&&(C.ignoreNullOrigin=E.ignoreNullOrigin),"timelineParams"in E&&(C.timelineParams=E.timelineParams),"nacl"in E&&(C.nacl=E.nacl),C}function Th(E){return E.httpHost?E.httpHost:E.cluster?`sockjs-${E.cluster}.pusher.com`:v.httpHost}function hu(E){return E.wsHost?E.wsHost:kh(E.cluster)}function kh(E){return`ws-${E}.pusher.com`}function Rh(E){return Ue.getProtocol()==="https:"?!0:E.forceTLS!==!1}function Dh(E){return"enableStats"in E?E.enableStats:"disableStats"in E?!E.disableStats:!1}const pu=E=>"customHandler"in E&&E.customHandler!=null;function pl(E){const b=Object.assign(Object.assign({},v.userAuthentication),E.userAuthentication);return pu(b)?b.customHandler:_h(b)}function Oh(E,b){let C;if("channelAuthorization"in E)C=Object.assign(Object.assign({},v.channelAuthorization),E.channelAuthorization);else if(C={transport:E.authTransport||v.authTransport,endpoint:E.authEndpoint||v.authEndpoint},"auth"in E&&("params"in E.auth&&(C.params=E.auth.params),"headers"in E.auth&&(C.headers=E.auth.headers)),"authorizer"in E)return{customHandler:xh(b,C,E.authorizer)};return C}function Lh(E,b){const C=Oh(E,b);return pu(C)?C.customHandler:Ah(C)}class $h extends xe{constructor(b){super(function(C,$){it.debug(`No callbacks on watchlist events for ${C}`)}),this.pusher=b,this.bindWatchlistInternalEvent()}handleEvent(b){b.data.events.forEach(C=>{this.emit(C.name,C)})}bindWatchlistInternalEvent(){this.pusher.connection.bind("message",b=>{var C=b.event;C==="pusher_internal:watchlist_events"&&this.handleEvent(b)})}}function gu(){let E,b;return{promise:new Promise(($,j)=>{E=$,b=j}),resolve:E,reject:b}}const Mh=gu;class Nh extends xe{constructor(b){super(function(C,$){it.debug("No callbacks on user for "+C)}),this.signin_requested=!1,this.user_data=null,this.serverToUserChannel=null,this.signinDonePromise=null,this._signinDoneResolve=null,this._onAuthorize=(C,$)=>{if(C){it.warn(`Error during signin: ${C}`),this._cleanup();return}this.pusher.send_event("pusher:signin",{auth:$.auth,user_data:$.user_data})},this.pusher=b,this.pusher.connection.bind("state_change",({previous:C,current:$})=>{C!=="connected"&&$==="connected"&&this._signin(),C==="connected"&&$!=="connected"&&(this._cleanup(),this._newSigninPromiseIfNeeded())}),this.watchlist=new $h(b),this.pusher.connection.bind("message",C=>{var $=C.event;$==="pusher:signin_success"&&this._onSigninSuccess(C.data),this.serverToUserChannel&&this.serverToUserChannel.name===C.channel&&this.serverToUserChannel.handleEvent(C)})}signin(){this.signin_requested||(this.signin_requested=!0,this._signin())}_signin(){this.signin_requested&&(this._newSigninPromiseIfNeeded(),this.pusher.connection.state==="connected"&&this.pusher.config.userAuthenticator({socketId:this.pusher.connection.socket_id},this._onAuthorize))}_onSigninSuccess(b){try{this.user_data=JSON.parse(b.user_data)}catch{it.error(`Failed parsing user data after signin: ${b.user_data}`),this._cleanup();return}if(typeof this.user_data.id!="string"||this.user_data.id===""){it.error(`user_data doesn't contain an id. user_data: ${this.user_data}`),this._cleanup();return}this._signinDoneResolve(),this._subscribeChannels()}_subscribeChannels(){const b=C=>{C.subscriptionPending&&C.subscriptionCancelled?C.reinstateSubscription():!C.subscriptionPending&&this.pusher.connection.state==="connected"&&C.subscribe()};this.serverToUserChannel=new Xr(`#server-to-user-${this.user_data.id}`,this.pusher),this.serverToUserChannel.bind_global((C,$)=>{C.indexOf("pusher_internal:")===0||C.indexOf("pusher:")===0||this.emit(C,$)}),b(this.serverToUserChannel)}_cleanup(){this.user_data=null,this.serverToUserChannel&&(this.serverToUserChannel.unbind_all(),this.serverToUserChannel.disconnect(),this.serverToUserChannel=null),this.signin_requested&&this._signinDoneResolve()}_newSigninPromiseIfNeeded(){if(!this.signin_requested||this.signinDonePromise&&!this.signinDonePromise.done)return;const{promise:b,resolve:C}=Mh();b.done=!1;const $=()=>{b.done=!0};b.then($).catch($),this.signinDonePromise=b,this._signinDoneResolve=C}}class fn{static ready(){fn.isReady=!0;for(var b=0,C=fn.instances.length;b<C;b++)fn.instances[b].connect()}static getClientFeatures(){return at(Dt({ws:Ue.Transports.ws},function(b){return b.isSupported({})}))}constructor(b,C){Ih(b),du(C),this.key=b,this.options=C,this.config=fu(this.options,this),this.channels=Bn.createChannels(),this.global_emitter=new xe,this.sessionID=Ue.randomInt(1e9),this.timeline=new Ui(this.key,this.sessionID,{cluster:this.config.cluster,features:fn.getClientFeatures(),params:this.config.timelineParams||{},limit:50,level:ga.INFO,version:v.VERSION}),this.config.enableStats&&(this.timelineSender=Bn.createTimelineSender(this.timeline,{host:this.config.statsHost,path:"/timeline/v2/"+Ue.TimelineTransport.name}));var $=j=>Ue.getDefaultStrategy(this.config,j,Bi);this.connection=Bn.createConnectionManager(this.key,{getStrategy:$,timeline:this.timeline,activityTimeout:this.config.activityTimeout,pongTimeout:this.config.pongTimeout,unavailableTimeout:this.config.unavailableTimeout,useTLS:!!this.config.useTLS}),this.connection.bind("connected",()=>{this.subscribeAll(),this.timelineSender&&this.timelineSender.send(this.connection.isUsingTLS())}),this.connection.bind("message",j=>{var ne=j.event,ye=ne.indexOf("pusher_internal:")===0;if(j.channel){var Le=this.channel(j.channel);Le&&Le.handleEvent(j)}ye||this.global_emitter.emit(j.event,j.data)}),this.connection.bind("connecting",()=>{this.channels.disconnect()}),this.connection.bind("disconnected",()=>{this.channels.disconnect()}),this.connection.bind("error",j=>{it.warn(j)}),fn.instances.push(this),this.timeline.info({instances:fn.instances.length}),this.user=new Nh(this),fn.isReady&&this.connect()}switchCluster(b){const{appKey:C,cluster:$}=b;this.key=C,this.options=Object.assign(Object.assign({},this.options),{cluster:$}),this.config=fu(this.options,this),this.connection.switchCluster(this.key)}channel(b){return this.channels.find(b)}allChannels(){return this.channels.all()}connect(){if(this.connection.connect(),this.timelineSender&&!this.timelineSenderTimer){var b=this.connection.isUsingTLS(),C=this.timelineSender;this.timelineSenderTimer=new ge(6e4,function(){C.send(b)})}}disconnect(){this.connection.disconnect(),this.timelineSenderTimer&&(this.timelineSenderTimer.ensureAborted(),this.timelineSenderTimer=null)}bind(b,C,$){return this.global_emitter.bind(b,C,$),this}unbind(b,C,$){return this.global_emitter.unbind(b,C,$),this}bind_global(b){return this.global_emitter.bind_global(b),this}unbind_global(b){return this.global_emitter.unbind_global(b),this}unbind_all(b){return this.global_emitter.unbind_all(),this}subscribeAll(){var b;for(b in this.channels.channels)this.channels.channels.hasOwnProperty(b)&&this.subscribe(b)}subscribe(b){var C=this.channels.add(b,this);return C.subscriptionPending&&C.subscriptionCancelled?C.reinstateSubscription():!C.subscriptionPending&&this.connection.state==="connected"&&C.subscribe(),C}unsubscribe(b){var C=this.channels.find(b);C&&C.subscriptionPending?C.cancelSubscription():(C=this.channels.remove(b),C&&C.subscribed&&C.unsubscribe())}send_event(b,C,$){return this.connection.send_event(b,C,$)}shouldUseTLS(){return this.config.useTLS}signin(){this.user.signin()}}fn.instances=[],fn.isReady=!1,fn.logToConsole=!1,fn.Runtime=Ue,fn.ScriptReceivers=Ue.ScriptReceivers,fn.DependenciesReceivers=Ue.DependenciesReceivers,fn.auth_callbacks=Ue.auth_callbacks;const Is=fn;function Ih(E){if(E==null)throw"You must pass your app key when you instantiate Pusher."}Ue.setup(fn)}},r={};function i(c){var d=r[c];if(d!==void 0)return d.exports;var f=r[c]={exports:{}};return n[c].call(f.exports,f,f.exports,i),f.exports}i.d=(c,d)=>{for(var f in d)i.o(d,f)&&!i.o(c,f)&&Object.defineProperty(c,f,{enumerable:!0,get:d[f]})},i.o=(c,d)=>Object.prototype.hasOwnProperty.call(c,d);var l=i(721);return l})())})(oh)),oh.exports}var Px=zx();const _b=ra(Px),Kt=pt("WebSocketManager");class Ux{constructor(){M(this,"echo",null);M(this,"subscriptions",new Map);M(this,"initialized",!1);M(this,"config",null)}configure(e){if(this.initialized){Kt.warn("[WebSocketManager] 이미 초기화되어 설정을 변경할 수 없습니다.");return}this.config=e,Kt.log("[WebSocketManager] 설정 완료:",{appKey:e.appKey?"***":"(없음)",host:e.host,port:e.port,scheme:e.scheme})}initialize(){if(this.initialized)return;if(!this.config||!this.config.appKey){Kt.warn("[WebSocketManager] WebSocket 설정이 없습니다. initTemplateApp에서 websocket 옵션을 전달해주세요.");return}const{appKey:e,host:n="localhost",port:r=80,scheme:i="https",authEndpoint:l="/api/broadcasting/auth"}=this.config,c=Number(r)||80,d=i==="https";Kt.log("[WebSocketManager] 연결 설정:",{host:n,port:c,scheme:i,useTLS:d,authEndpoint:l}),window.Pusher=_b;const f=localStorage.getItem("auth_token"),h={wsHost:n,wsPort:c,wssPort:c,forceTLS:d,disableStats:!0,enabledTransports:["ws","wss"],cluster:"mt1",authEndpoint:l,auth:{headers:{Authorization:f?`Bearer ${f}`:"",Accept:"application/json"}}};Kt.log("[WebSocketManager] Pusher 옵션:",h);const m=new _b(e,h);m.connection.bind("connecting",()=>{Kt.log("[WebSocketManager] 연결 시도 중...")}),m.connection.bind("connected",()=>{Kt.log("[WebSocketManager] 연결 성공! Socket ID:",m.connection.socket_id)}),m.connection.bind("failed",()=>{Kt.error("[WebSocketManager] 연결 실패 - WebSocket을 사용할 수 없습니다.")}),m.connection.bind("error",y=>{Kt.error("[WebSocketManager] 연결 오류:",y)}),m.connection.bind("state_change",y=>{Kt.log(`[WebSocketManager] 상태 변경: ${y.previous} → ${y.current}`)}),m.connection.bind("unavailable",()=>{Kt.error("[WebSocketManager] WebSocket 사용 불가 - 연결할 수 없습니다.")}),m.connection.bind("disconnected",()=>{Kt.warn("[WebSocketManager] 연결이 끊어졌습니다.")}),Kt.log("[WebSocketManager] 초기 연결 상태:",m.connection.state),this.echo=new Hx({broadcaster:"reverb",client:m}),Kt.log("[WebSocketManager] 연결 시작 시도..."),m.connect(),window.Echo=this.echo,this.initialized=!0,Kt.log("[WebSocketManager] Echo 초기화 완료")}subscribe(e,n,r,i={}){if(this.initialize(),!this.echo)return Kt.warn("[WebSocketManager] Echo가 초기화되지 않았습니다."),"";const{channelType:l="private"}=i,c=`${e}:${n}`;if(this.subscriptions.has(c))return Kt.log(`[WebSocketManager] 이미 구독 중: ${c}`),c;let d;switch(l){case"public":d=this.echo.channel(e);break;case"presence":d=this.echo.join(e);break;default:d=this.echo.private(e)}return d.listen(`.${n}`,r),this.subscriptions.set(c,d),Kt.log(`[WebSocketManager] 구독 완료: ${c} (${l})`),c}unsubscribe(e){const n=this.subscriptions.get(e);if(!n)return;const r=e.lastIndexOf(":"),i=r>=0?e.substring(r+1):"";if(i)try{n.stopListening(`.${i}`)}catch(l){Kt.warn(`[WebSocketManager] stopListening 실패: ${e}`,l)}this.subscriptions.delete(e),Kt.log(`[WebSocketManager] 구독 해제: ${e}`)}leaveChannel(e){if(!this.echo)return;this.echo.leave(e);const n=[];this.subscriptions.forEach((r,i)=>{i.startsWith(`${e}:`)&&n.push(i)}),n.forEach(r=>this.subscriptions.delete(r)),Kt.log(`[WebSocketManager] 채널 구독 해제: ${e}`)}disconnect(){this.echo&&(this.echo.disconnect(),this.subscriptions.clear(),this.initialized=!1,Kt.log("[WebSocketManager] 연결 종료"))}getEcho(){return this.echo}isInitialized(){return this.initialized}isConfigured(){return this.config!==null&&!!this.config.appKey}getSubscriptionCount(){return this.subscriptions.size}}const qc=new Ux,Ct=pt("DataSourceManager"),Ab=new $n;function Gc(s,e){const n=Oa(s);if(n!==null)try{return jn(n)?Ab.evaluatePipeExpression(n,e,{skipCache:!0}):Ab.evaluateExpression(n,e)}catch(r){return Ct.error("Failed to evaluate param expression:",n,r),s}return ps(s,e,{skipCache:!0})}function xb(s){const e={};for(const n of s.keys()){if(n in e)continue;const r=s.getAll(n);r.length>1?e[n]=r:r.length===1&&(n.endsWith("[]")?e[n]=r:e[n]=r[0])}return e}function Bx(){try{return window.G7Core?.devTools}catch{return}}const Xc=class Xc{constructor(e={}){M(this,"options");M(this,"dataCache",new Map);M(this,"bindingEngine");M(this,"globalHeaders",[]);this.options=e,this.bindingEngine=new $n}setGlobalHeaders(e){this.globalHeaders=e||[]}matchesPattern(e,n){if(n==="*")return!0;const r=n.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${r}$`).test(e)}toFormData(e){const n=new FormData;for(const[r,i]of Object.entries(e))i instanceof File||i instanceof Blob?n.append(r,i):i!=null&&n.append(r,typeof i=="object"?JSON.stringify(i):String(i));return n}getMatchingGlobalHeaders(e,n){const r={};for(const i of this.globalHeaders)this.matchesPattern(e,i.pattern)&&Object.entries(i.headers).forEach(([l,c])=>{const d=Gc(c,n);d!=null&&d!==""&&(r[l]=String(d))});return r}filterByCondition(e,n={}){const r=new Set,i=[];for(const l of e){if(r.has(l.id))continue;if(!l.if&&!l.conditions){r.add(l.id),i.push(l);continue}hs({if:l.if,conditions:l.conditions},n,this.bindingEngine,`data_source:${l.id}`)&&(r.add(l.id),i.push(l))}return i}checkErrorCondition(e,n){if(!e.errorCondition?.if||e.errorCondition?.errorCode===void 0)return null;try{const r={response:n};if(hs({if:e.errorCondition.if},r,this.bindingEngine,`errorCondition:${e.id}`))return Ct.log(`errorCondition matched for ${e.id}, triggering error ${e.errorCondition.errorCode}`),e.errorCondition.errorCode}catch(r){Ct.error(`Failed to evaluate errorCondition for ${e.id}:`,r)}return null}async fetchDataSources(e,n={},r=new URLSearchParams,i,l){const c={},d=!!this.options.sampleProvider,f=e.filter(h=>(d||h.auto_fetch!==!1)&&h.type!=="websocket");return await Promise.all(f.map(async h=>{try{const m=await this.fetchDataSource(h,n,r,i,l);c[h.id]=m,this.dataCache.set(h.id,{data:m,timestamp:Date.now()});const y=this.checkErrorCondition(h,m);if(y!==null){const v={status:y,message:`Error condition matched for ${h.id}`,data:m},S=kr(),_=S.resolve(y,{errorHandling:h.errorHandling,onError:h.onError});if(_.handler)try{await S.execute(_.handler,v)}catch(x){Ct.error(`Error executing errorCondition handler for ${h.id}:`,x)}h.fallback!==void 0&&(c[h.id]=h.fallback,this.dataCache.set(h.id,{data:h.fallback,timestamp:Date.now()}),Ct.log(`Using fallback data for ${h.id} (errorCondition)`));return}if(h.onSuccess)try{const v={data:m,sourceId:h.id};await this.executeOnSuccessHandler(h.onSuccess,v)}catch(v){Ct.error(`Error executing onSuccess handler for ${h.id}:`,v)}}catch(m){Ct.error(`Failed to fetch data source: ${h.id}`,m);const y=m?.response?.status||m?.status||500,v=m?.response?.data,S=v?.message||m.message||"Unknown error",_={status:y,message:S,errors:v?.errors,data:v,statusText:m?.response?.statusText},x=kr(),A=x.resolve(y,{errorHandling:h.errorHandling,onError:h.onError});if(A.handler)try{await x.execute(A.handler,_)}catch(D){Ct.error(`Error executing error handler for ${h.id}:`,D)}h.fallback!==void 0&&(c[h.id]=h.fallback,this.dataCache.set(h.id,{data:h.fallback,timestamp:Date.now()}),Ct.log(`Using fallback data for ${h.id}`)),this.options.onError&&this.options.onError(m,h)}})),c}async fetchDataSourcesWithResults(e,n={},r=new URLSearchParams,i,l,c){if(e.some(m=>m.type==="websocket")){const m=e.filter(y=>y.type==="websocket").map(y=>y.id).join(", ");Ct.warn(`fetchDataSourcesWithResults received WebSocket sources (caller should filter them out before calling): ${m}. WebSocket sources are event listeners, not data providers — they should not be passed to fetch.`)}const f=c?.ignoreAutoFetch?e.filter(m=>m.type!=="websocket"):e.filter(m=>m.auto_fetch!==!1&&m.type!=="websocket");return await Promise.all(f.map(async m=>{try{const y=await this.fetchDataSource(m,n,r,i,l);this.dataCache.set(m.id,{data:y,timestamp:Date.now()});const v=this.checkErrorCondition(m,y);if(v!==null){const S={status:v,message:`Error condition matched for ${m.id}`,data:y},_=kr(),x=_.resolve(v,{errorHandling:m.errorHandling,onError:m.onError});let A=!1;if(x.handler)if(m.loading_strategy==="blocking")_.execute(x.handler,S).catch(D=>{Ct.error(`Error executing errorCondition handler for ${m.id}:`,D)}),A=!0;else try{await _.execute(x.handler,S),A=!0}catch(D){Ct.error(`Error executing errorCondition handler for ${m.id}:`,D)}return m.fallback!==void 0?(this.dataCache.set(m.id,{data:m.fallback,timestamp:Date.now()}),Ct.log(`Using fallback data for ${m.id} (errorCondition)`),{id:m.id,state:"success",data:m.fallback}):{id:m.id,state:"error",error:new Error(`Error condition matched: ${v}`),errorCode:v,errorHandled:A}}if(m.onSuccess)try{const S={data:y,sourceId:m.id};await this.executeOnSuccessHandler(m.onSuccess,S)}catch(S){Ct.error(`Error executing onSuccess handler for ${m.id}:`,S)}return{id:m.id,state:"success",data:y}}catch(y){Ct.error(`Failed to fetch data source: ${m.id}`,y);const v=y?.response?.status||y?.status||500,S=y?.response?.data,_=S?.message||y.message||"Unknown error",x={status:v,message:_,errors:S?.errors,data:S,statusText:y?.response?.statusText},A=kr(),D=A.resolve(v,{errorHandling:m.errorHandling,onError:m.onError});let O=!1;if(D.handler)if(m.loading_strategy==="blocking")A.execute(D.handler,x).catch(k=>{Ct.error(`Error executing error handler for ${m.id}:`,k)}),O=!0;else try{await A.execute(D.handler,x),O=!0}catch(k){Ct.error(`Error executing error handler for ${m.id}:`,k)}return m.fallback!==void 0?(this.dataCache.set(m.id,{data:m.fallback,timestamp:Date.now()}),Ct.log(`Using fallback data for ${m.id}`),{id:m.id,state:"success",data:m.fallback}):(this.options.onError&&this.options.onError(y,m),{id:m.id,state:"error",error:y,errorCode:v,errorHandled:O})}}))}fetchDataSourcesInBackground(e,n={},r=new URLSearchParams,i){e.filter(c=>c.auto_fetch!==!1&&c.loading_strategy==="background"&&c.type!=="websocket").forEach(c=>{this.fetchDataSource(c,n,r).then(async d=>{this.dataCache.set(c.id,{data:d,timestamp:Date.now()});const f=this.checkErrorCondition(c,d);if(f!==null){const h={status:f,message:`Error condition matched for ${c.id}`,data:d},m=kr(),y=m.resolve(f,{errorHandling:c.errorHandling,onError:c.onError});if(y.handler)try{await m.execute(y.handler,h)}catch(v){Ct.error(`Error executing errorCondition handler for ${c.id}:`,v)}c.fallback!==void 0&&(this.dataCache.set(c.id,{data:c.fallback,timestamp:Date.now()}),Ct.log(`Using fallback data for ${c.id} (errorCondition)`),i&&i(c.id,c.fallback));return}if(c.onSuccess)try{const h={data:d,sourceId:c.id};await this.executeOnSuccessHandler(c.onSuccess,h)}catch(h){Ct.error(`Error executing onSuccess handler for ${c.id}:`,h)}i&&i(c.id,d)}).catch(async d=>{Ct.error(`Background fetch failed: ${c.id}`,d);const f=d?.response?.status||d?.status||500,h=d?.response?.data,m=h?.message||d.message||"Unknown error",y={status:f,message:m,errors:h?.errors,data:h,statusText:d?.response?.statusText},v=kr(),S=v.resolve(f,{errorHandling:c.errorHandling,onError:c.onError});if(S.handler)try{await v.execute(S.handler,y)}catch(_){Ct.error(`Error executing error handler for ${c.id}:`,_)}if(c.fallback!==void 0){this.dataCache.set(c.id,{data:c.fallback,timestamp:Date.now()}),Ct.log(`Using fallback data for ${c.id}`),i&&i(c.id,c.fallback);return}this.options.onError&&this.options.onError(d,c)})})}async fetchDataSource(e,n,r,i,l){switch(e.type){case"api":return this.fetchApiDataSource(e,n,r,i,l);case"static":return e.data;case"route_params":return n;case"query_params":return xb(r);default:throw new Error(`Unknown data source type: ${e.type}`)}}async fetchApiDataSource(e,n,r,i,l){if(this.options.sampleProvider?.has(e.id))return await Promise.resolve(this.options.sampleProvider.resolve(e));if(!e.endpoint)throw new Error(`API data source ${e.id} has no endpoint`);const c={route:n,query:xb(r)};i&&(c._global=i),l&&(c._local=l);let d=ps(e.endpoint,c,{skipCache:!0});const f=e.method||"GET",m=(e.contentType?typeof e.contentType=="string"&&e.contentType.includes("{{")?ps(e.contentType,c,{skipCache:!0}):e.contentType:"application/json")==="multipart/form-data";let y=m?{...e.params||{}}:JSON.parse(JSON.stringify(e.params||{}));Object.entries(y).forEach(([_,x])=>{typeof x=="string"&&(y[_]=Gc(x,c))}),Object.keys(y).forEach(_=>{y[_]===""&&delete y[_]});const v=Bx();let S=null;if(v?.isEnabled()){v.trackDataSourceDefinition({id:e.id,type:e.type,endpoint:d,method:f,autoFetch:e.auto_fetch,initLocal:e.initLocal,initGlobal:e.initGlobal});let _=d;if(f==="GET"&&Object.keys(y).length>0){const x=new URLSearchParams;Object.entries(y).forEach(([D,O])=>{Array.isArray(O)?O.forEach(k=>x.append(D,String(k))):O!=null&&x.append(D,String(O))});const A=x.toString();_=A?`${d}?${A}`:d}S=v.trackRequest(_,f,{requestBody:f!=="GET"?y:void 0,dataSourceId:e.id}),v.trackDataSourceLoading(e.id)}try{let _;const x=e.auth_mode??(e.auth_required===!0?"required":"none"),A=Xn.getInstance().isAuthenticated();if(x==="required"&&!A){Ct.log(`[DataSourceManager] Skipping ${e.id}: auth_mode is 'required' but no token available`),v?.isEnabled()&&(v.trackDataSourceError(e.id,"Skipped: auth_mode required but not authenticated"),S&&v.failRequest(S,"Skipped: not authenticated"));const O=new Error("Auth required but not authenticated");throw O.response={status:401,statusText:"Unauthorized",data:null},O.status=401,O._authSkipped=!0,O}const D=x==="required"||x==="optional"&&A;if(D){const O=Yn(),k=d.startsWith("/api/")?d.substring(4):d.startsWith("/api")?d.substring(4)||"/":d;this.options.onError&&Ct.log(`[DataSourceManager] Normalized endpoint: ${d} -> ${k}`);const L=this.getMatchingGlobalHeaders(d,c),B={};e.headers&&Object.entries(e.headers).forEach(([de,_e])=>{const Se=Gc(_e,c);Se!=null&&Se!==""&&(B[de]=String(Se))});const q={...L,...B},z=Object.keys(q).length>0,W=m?this.toFormData(y):y;switch(f){case"GET":_=await O.get(k,{params:y,...z&&{headers:q}});break;case"POST":z?_=await O.post(k,W,{headers:q}):_=await O.post(k,W);break;case"PUT":z?_=await O.put(k,W,{headers:q}):_=await O.put(k,W);break;case"PATCH":z?_=await O.patch(k,W,{headers:q}):_=await O.patch(k,W);break;case"DELETE":_=await O.delete(k,{params:y,...z&&{headers:q}});break;default:throw new Error(`Unsupported HTTP method: ${f}`)}}else{let O=d;if(f==="GET"){const W=new URLSearchParams(y).toString();O=W?`${d}?${W}`:d}const k={...m?{}:{"Content-Type":"application/json"},Accept:"application/json"};if(typeof window<"u"){const W=localStorage.getItem("g7_locale");W&&(k["Accept-Language"]=W)}const L=this.getMatchingGlobalHeaders(d,c);Object.assign(k,L),e.headers&&Object.entries(e.headers).forEach(([W,de])=>{const _e=Gc(de,c);_e!=null&&_e!==""&&(k[W]=String(_e))});let B;f!=="GET"&&(m?(B=this.toFormData(y),delete k["Content-Type"]):B=JSON.stringify(y));const q=await fetch(O,{method:f,headers:k,body:B});let z;try{z=await q.json()}catch{z=null}if(S&&v?.isEnabled()&&(v.completeRequest(S,q.status,z),S=null),!q.ok){v?.isEnabled()&&v.trackDataSourceError(e.id,`HTTP ${q.status}: ${q.statusText}`);const W=new Error(`HTTP error! status: ${q.status}`);throw W.response={status:q.status,statusText:q.statusText,data:z},W.status=q.status,W}_=z,v?.isEnabled()&&v.trackDataSourceLoaded(e.id,_)}return D&&S&&v?.isEnabled()&&(v.completeRequest(S,200,_),v.trackDataSourceLoaded(e.id,_)),_}catch(_){if(S&&v?.isEnabled()){const x=_;x?.response?v.completeRequest(S,x.response.status,x.response.data):v.failRequest(S,_ instanceof Error?_.message:String(_)),v.trackDataSourceError(e.id,_ instanceof Error?_.message:String(_))}throw _}}getCachedData(e){const n=this.dataCache.get(e);if(!n)return;if(Date.now()-n.timestamp>Xc.DATA_CACHE_TTL){this.dataCache.delete(e);return}return n.data}clearCache(){this.dataCache.clear()}subscribeWebSockets(e,n,r={}){const i=[],l=e.filter(c=>c.type==="websocket");return l.length===0||l.forEach(c=>{if(!c.channel||!c.event){Ct.warn(`WebSocket source ${c.id} missing channel or event`);return}let d,f;try{d=ps(c.channel,r,{skipCache:!0}),f=ps(c.event,r,{skipCache:!0})}catch(y){Ct.error(`Failed to resolve WebSocket channel/event for source ${c.id}:`,y);return}const h=y=>!!(!y||y.trim()===""||y.includes("{{")||y.endsWith(".")||y.endsWith(":")||y.startsWith(".")||y.startsWith(":")||y.includes("..")||y.includes("::"));if(h(d)||h(f)){Ct.warn(`WebSocket source ${c.id} has invalid channel/event after expression resolution, skipping. Original channel="${c.channel}", resolved="${d}". Original event="${c.event}", resolved="${f}". Available context keys: [${Object.keys(r).join(", ")}]`);return}const m=qc.subscribe(d,f,y=>{const v=c.target_source||c.id;this.dataCache.set(v,{data:y,timestamp:Date.now()}),n(v,y)},{channelType:c.channel_type||"private"});m&&i.push(m)}),i}unsubscribeWebSockets(e){e.length!==0&&e.forEach(n=>{qc.unsubscribe(n)})}async executeOnSuccessHandler(e,n){const r=this.options.actionDispatcher??Cy();if(!r){Ct.warn("ActionDispatcher not available, skipping onSuccess handler");return}const i=Array.isArray(e)?e:[e];for(const l of i)try{await r.dispatchAction({type:"click",...l},{data:{response:n}})}catch(c){throw Ct.error("Failed to execute onSuccess handler:",c),c}}};M(Xc,"DATA_CACHE_TTL",3e5);let Or=Xc;const qx=new Or,Ri=pt("ModalDataSourceWrapper");function Gx(s,e){if(!s||!e)return s;const r=e.replace(/\?\./g,".").split(/\.(?![^\[]*\])/).flatMap(l=>{const c=l.match(/^([^\[]*)((?:\[\d+\])*)$/);if(c){const[,d,f]=c,h=[];d&&h.push(d);const m=f.match(/\[\d+\]/g);return m&&h.push(...m),h}return[l]}).filter(l=>l!=="");let i=s;for(const l of r){if(i==null)return;if(l.startsWith("[")&&l.endsWith("]")){const c=parseInt(l.slice(1,-1),10);i=i[c]}else i=i[l]}return i}const Tb=({isOpen:s,modalId:e,dataSources:n,dataContext:r,globalStateUpdater:i,bindingEngine:l,debug:c=!1,children:d})=>{const[f,h]=N.useState(!1),[m,y]=N.useState(!1),v=N.useRef(!1),S=N.useRef(null);S.current||(S.current=new Or);const _=N.useCallback(async()=>{if(!(!n||n.length===0)&&S.current){h(!0);try{const x=r.route||{},A=new URLSearchParams(window.location.search),D=n.map(k=>{let L={...k};if(k.endpoint&&l){const B=l.resolveBindings(k.endpoint,r,{skipCache:!0});L.endpoint=B}if(k.params&&l){const B={};Object.entries(k.params).forEach(([q,z])=>{typeof z=="string"?B[q]=l.resolveBindings(z,r,{skipCache:!0}):B[q]=z}),L.params=B}return L});c&&Ri.log(`[ModalDataSourceWrapper] Modal "${e}" fetching data sources:`,D.map(k=>({id:k.id,endpoint:k.endpoint})));const O=await S.current.fetchDataSourcesWithResults(D,x,A);i&&O.forEach(k=>{if(k.state==="success"&&k.data!==void 0){const L=D.find(B=>B.id===k.id);if(L?.initGlobal){const B=k.data?.data??k.data,q=Array.isArray(L.initGlobal)?L.initGlobal:[L.initGlobal];for(const z of q)if(typeof z=="string")i({[z]:B}),c&&Ri.log(`[ModalDataSourceWrapper] Modal "${e}" initGlobal: ${k.id}.data -> _global.${z}`);else if(typeof z=="object"&&z.key){const{key:W,path:de}=z,_e=de?Gx(B,de):B;i({[W]:_e}),c&&Ri.log(`Modal "${e}" initGlobal: ${k.id}.data${de?"."+de:""} -> _global.${W}`)}}}else k.state==="error"&&Ri.error(`Modal "${e}" data source error:`,k.id,k.error)}),c&&Ri.log(`Modal "${e}" data sources fetched successfully`)}catch(x){Ri.error(`Modal "${e}" data source fetch error:`,x)}finally{h(!1),y(!0)}}},[n,r,i,l,e,c]);return N.useEffect(()=>{if(!n||n.length===0)return;const x=window.__templateApp;return x?.registerModalDataSources&&x.registerModalDataSources(e,n),()=>{x?.unregisterModalDataSources&&x.unregisterModalDataSources(e)}},[e,n]),N.useEffect(()=>{!s&&v.current&&(y(!1),c&&Ri.log(`[ModalDataSourceWrapper] Modal "${e}" closed, reset fetch state`)),s&&!v.current&&n&&n.length>0&&!m&&_(),v.current=s},[s,n,m,_,e,c]),yt.jsx(yt.Fragment,{children:d})};class Fc extends Error{constructor(n,r,i={}){super(r);M(this,"code");M(this,"userMessageKey");M(this,"showStack");M(this,"icon");M(this,"recoverable");this.name="TemplateEngineError",this.code=n,this.userMessageKey=r,this.showStack=i.showStack??!0,this.icon=i.icon??"fa-circle-exclamation",this.recoverable=i.recoverable??!0,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}getUserMessage(n,r){if(!r||!n)return this.userMessageKey;try{return r.translate(this.userMessageKey,n)}catch{return this.userMessageKey}}}class Fx extends Fc{constructor(){super("TEMPLATE_NOT_FOUND","$t:core.errors.template_not_found",{showStack:!1,icon:"fa-paint-brush",recoverable:!1}),this.name="TemplateNotFoundError"}}function kb(s){if(s instanceof Fc)return s;if(s instanceof Error){const e=new Fc("TEMPLATE_INIT_ERROR",s.message||"$t:core.errors.template_init_error",{showStack:!0,icon:"fa-circle-exclamation",recoverable:!0});return e.stack=s.stack,e}return new Fc("TEMPLATE_INIT_ERROR","$t:core.errors.template_init_error",{showStack:!1,icon:"fa-circle-exclamation",recoverable:!0})}const Vx=pt("ErrorDisplay");class lh{static render(e,n){const r=document.getElementById(e);if(!r){Vx.error(`Container #${e} not found`);return}const i=n.debug&&n.showStack&&n.stackTrace,l=window.matchMedia("(prefers-color-scheme: dark)").matches,c={container:`
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
background-color: ${l?"#111827":"#f9fafb"};
padding: 1rem;
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
`,card:`
max-width: 28rem;
width: 100%;
background-color: ${l?"#1f2937":"#ffffff"};
border-radius: 0.5rem;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
padding: 2rem;
text-align: center;
`,iconContainer:`
margin-bottom: 1.5rem;
`,icon:`
font-size: 4rem;
color: #ef4444;
`,title:`
font-size: 1.5rem;
font-weight: 700;
color: ${l?"#ffffff":"#111827"};
margin-bottom: 1rem;
`,message:`
color: ${l?"#d1d5db":"#4b5563"};
margin-bottom: 0.5rem;
line-height: 1.625;
`,detailMessage:`
font-size: 0.875rem;
color: ${l?"#9ca3af":"#6b7280"};
margin-bottom: 1.5rem;
background-color: ${l?"#374151":"#f3f4f6"};
padding: 0.5rem 0.75rem;
border-radius: 0.25rem;
`,spacer:`
margin-bottom: 1.5rem;
`,stackContainer:`
margin-top: 1.5rem;
padding: 1rem;
background-color: ${l?"#374151":"#f3f4f6"};
border-radius: 0.375rem;
text-align: left;
`,stackTitle:`
font-size: 0.875rem;
font-weight: 600;
color: ${l?"#e5e7eb":"#374151"};
margin-bottom: 0.5rem;
`,stackTrace:`
font-size: 0.75rem;
color: ${l?"#d1d5db":"#4b5563"};
overflow-x: auto;
white-space: pre-wrap;
word-break: break-word;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
`,buttonContainer:`
margin-top: 1.5rem;
`,button:`
display: inline-flex;
align-items: center;
padding: 0.75rem 1.5rem;
background-color: #2563eb;
color: #ffffff;
font-weight: 500;
border-radius: 0.375rem;
border: none;
cursor: pointer;
transition: background-color 0.2s;
`};r.innerHTML=`
<div style="${c.container}">
<div style="${c.card}">
<!-- 아이콘 -->
<div style="${c.iconContainer}">
<i class="fa-solid ${n.icon}" style="${c.icon}"></i>
</div>
<!-- 제목 -->
<h1 style="${c.title}">
${this.escapeHtml(n.title)}
</h1>
<!-- 사용자 메시지 -->
<p style="${c.message}">
${this.escapeHtml(n.message)}
</p>
<!-- 상세 메시지 (API 응답 등) -->
${n.detailMessage?`
<p style="${c.detailMessage}">
${this.escapeHtml(n.detailMessage)}
</p>
`:`<div style="${c.spacer}"></div>`}
<!-- Stack Trace (디버그 모드일 때만) -->
${i?`
<div style="${c.stackContainer}">
<p style="${c.stackTitle}">
Stack Trace:
</p>
<pre style="${c.stackTrace}">${this.escapeHtml(n.stackTrace)}</pre>
</div>
`:""}
<!-- 새로고침 버튼 (복구 가능할 때만) -->
${n.showReloadButton?`
<div style="${c.buttonContainer}">
<button
onclick="window.location.reload()"
style="${c.button}"
onmouseover="this.style.backgroundColor='#1d4ed8'"
onmouseout="this.style.backgroundColor='#2563eb'"
>
<i class="fa-solid fa-rotate-right" style="margin-right: 0.5rem;"></i>
새로고침
</button>
</div>
`:""}
</div>
</div>
`}static renderFromError(e,n,r,i=!1,l,c,d){let f,h;if(n.userMessageKey.startsWith("$t:"))if(c&&l)try{f=c.translate(n.userMessageKey,l)}catch{f=n.userMessageKey.replace("$t:","")}else f=n.userMessageKey.replace("$t:","");else f=n.userMessageKey;if(d){const m=d;m.details?.apiMessage?h=m.details.apiMessage:m.response?.data?.message&&(h=m.response.data.message)}this.render(e,{title:r,message:f,detailMessage:h,icon:n.icon,showStack:n.showStack,stackTrace:n.stack,showReloadButton:n.recoverable,debug:i})}static escapeHtml(e){if(!e)return"";const n=document.createElement("div");return n.textContent=e,n.innerHTML}}const _s=pt("Router");class Kx{constructor(e){M(this,"routes",[]);M(this,"templateIdentifier");M(this,"eventHandlers",new Map);M(this,"pendingNavigation",null);M(this,"isNavigating",!1);M(this,"handlePopState",()=>{this.navigateToCurrentPath()});this.templateIdentifier=e,this.initPopstateListener()}initPopstateListener(){window.addEventListener("popstate",this.handlePopState)}on(e,n){this.eventHandlers.has(e)||this.eventHandlers.set(e,[]),this.eventHandlers.get(e).push(n)}async emit(e,...n){const r=this.eventHandlers.get(e);r&&await Promise.all(r.map(i=>i(...n)))}async loadRoutes(e){try{const n=e!==void 0&&e>0?e:null,r=await fetch(Br(`/api/templates/${this.templateIdentifier}/routes`,"json",n));if(!r.ok)throw new Error(`Failed to load routes: ${r.statusText}`);const i=await r.json();if(!i.success)throw new Error("Failed to load routes from API");if(i.data&&Array.isArray(i.data.routes))this.routes=i.data.routes,_s.log(`Loaded ${this.routes.length} routes${e?` (v=${e})`:""}`);else throw new Error("Invalid routes data format")}catch(n){throw _s.error("Error loading routes:",n),n}}setRoutes(e){this.routes=e,_s.log(`Set ${this.routes.length} routes`)}match(e){const n=this.normalizePathname(e);for(const r of this.routes){const i=this.matchPattern(r.path,n);if(i!==null)return{route:r,params:i}}return null}normalizePathname(e){return e.length>1&&e.endsWith("/")?e.replace(/\/+$/,"")||"/":e}matchPattern(e,n){const r=[];let i=e.replace(/:([^/]+)/g,(f,h)=>(r.push(h),"([^/]+)"));i.startsWith("*/")&&(i="(?:/[^/]+)?"+i.slice(1)),i=i.replace(/\//g,"\\/");const l=new RegExp(`^${i}$`),c=n.match(l);if(!c)return null;const d={};return r.forEach((f,h)=>{d[f]=c[h+1]}),d}getRoutes(){return[...this.routes]}getAuthType(e,n){return e.auth_type?e.auth_type:n.startsWith("/admin")?"admin":"user"}async navigateToCurrentPath(){const e=window.location.pathname,n=window.location.search,r=this.match(e);if(!r){_s.warn(`No route matched for path: ${e}`),this.emit("routeNotFound",e);return}if(r.route.redirect){_s.log(`Redirecting from ${e} to ${r.route.redirect}`),this.navigate(r.route.redirect);return}if(r.route.auth_required){const c=this.getAuthType(r.route,e),d=Xn.getInstance();let f=d.isAuthenticated()&&d.getAuthType()===c;if(f||(f=await d.checkAuth(c)),!f){const h=d.getLoginRedirectUrl(c,e+n);_s.log(`Not authenticated, redirecting to: ${h}`),window.location.href=h;return}}const i=new URLSearchParams(n),l={};for(const c of i.keys()){if(c in l)continue;const d=i.getAll(c);d.length>1?l[c]=d:d.length===1&&(c.endsWith("[]")?l[c]=d:l[c]=d[0])}await this.emit("routeChange",{path:e,layout:r.route.layout,endpoint:r.route.endpoint,params:{...r.route.params||{},...r.params},query:l,auth_required:r.route.auth_required,auth_type:r.route.auth_type,meta:r.route.meta})}navigate(e){if(this.isNavigating){this.pendingNavigation=e;return}this.executeNavigation(e)}async executeNavigation(e){this.isNavigating=!0,this.pendingNavigation=null;try{window.history.pushState({},"",e),await this.navigateToCurrentPath()}finally{if(this.isNavigating=!1,this.pendingNavigation){const n=this.pendingNavigation;this.executeNavigation(n)}}}}const Wx=/^\/admin\/layout-editor\/([^/?#]+)\/?$/;function ch(s){const e=Wx.exec(s);return e?{templateIdentifier:e[1]}:null}const Wt=pt("ErrorPageHandler");class Yx{constructor(e){M(this,"templateId");M(this,"layoutLoader");M(this,"locale");M(this,"debug");M(this,"renderFunction");M(this,"dataSourceManager");M(this,"globalState");M(this,"errorConfig",null);M(this,"configLoaded",!1);this.templateId=e.templateId,this.layoutLoader=e.layoutLoader,this.locale=e.locale,this.debug=e.debug,this.renderFunction=e.renderFunction,this.dataSourceManager=e.dataSourceManager,this.globalState=e.globalState||{}}async loadConfig(){if(this.configLoaded)return this.errorConfig;try{const e=await fetch(Br(`/api/templates/${this.templateId}/config`,"json"));if(!e.ok)return this.debug&&Wt.warn("Failed to load template config:",e.statusText),this.configLoaded=!0,null;const n=await e.json();if(!n.success||!n.data)return this.debug&&Wt.warn("Invalid template config response"),this.configLoaded=!0,null;const r=n.data;return!r.error_config||!r.error_config.layouts?(this.debug&&Wt.warn("No error_config found in template.json"),this.configLoaded=!0,null):(this.errorConfig=r.error_config,this.configLoaded=!0,this.debug&&Wt.log("Error config loaded:",this.errorConfig),this.errorConfig)}catch(e){return Wt.error("Failed to load error config:",e),this.configLoaded=!0,null}}async renderError(e,n="app"){try{const r=await this.loadConfig();if(!r)return this.debug&&Wt.warn("No error config available, cannot render error page"),!1;const i=r.layouts[e]||r.layouts[String(e)];if(!i)return this.debug&&Wt.warn(`No layout defined for error code: ${e}`),!1;this.debug&&Wt.log(`Loading error layout: ${i} for code: ${e}`);const l=await this.layoutLoader.loadLayout(this.templateId,i);if(!l)return this.debug&&Wt.error(`Failed to load error layout: ${i}`),!1;this.debug&&Wt.log("Error layout loaded:",l);let c={};const d=l.data_sources||[];if(d.length>0){this.debug&&Wt.log("Fetching data sources:",d.map(S=>S.id));const m=d.filter(S=>S.loading_strategy==="blocking"),y=d.filter(S=>!S.loading_strategy||S.loading_strategy==="progressive"),v=[...m,...y];if(v.length>0)try{c=await this.dataSourceManager.fetchDataSources(v,{},new URLSearchParams),this.debug&&Wt.log("Data sources fetched:",Object.keys(c))}catch(S){Wt.error("Failed to fetch data sources:",S)}}const f={};d.length>0&&(this.processInitOptions(d,c,f),this.debug&&Wt.log("initOptions processed:",{globalKeys:Object.keys(this.globalState),localKeys:Object.keys(f)}));const h={...c,errorCode:e,_global:{...this.globalState},_local:{...f}};return await this.renderFunction({containerId:n,layoutJson:l,dataContext:h,translationContext:{templateId:this.templateId,locale:this.locale}}),this.debug&&Wt.log(`Error page ${e} rendered successfully`),!0}catch(r){return Wt.error(`Failed to render error page ${e}:`,r),!1}}processInitOptions(e,n,r){for(const i of e){const l=n[i.id];if(!l)continue;const c=l?.data??l;if(i.initLocal){if(typeof i.initLocal=="string")r[i.initLocal]=c,Wt.log(`initLocal: ${i.id}.data -> _local.${i.initLocal}`);else if(typeof i.initLocal=="object"&&"key"in i.initLocal){const{key:d,path:f}=i.initLocal;r[d]=f?this.getValueByPath(c,f):c,Wt.log(`initLocal: ${i.id}.data${f?"."+f:""} -> _local.${d}`)}}if(i.initGlobal){const d=Array.isArray(i.initGlobal)?i.initGlobal:[i.initGlobal];for(const f of d)if(typeof f=="string")this.globalState[f]=c,Wt.log(`initGlobal: ${i.id}.data -> _global.${f}`);else if(typeof f=="object"&&f!==null&&"key"in f){const{key:h,path:m}=f;this.globalState[h]=m?this.getValueByPath(c,m):c,Wt.log(`initGlobal: ${i.id}.data${m?"."+m:""} -> _global.${h}`)}}}}getValueByPath(e,n){return n.split(".").reduce((r,i)=>r?.[i],e)}updateGlobalState(e){this.globalState={...this.globalState,...e}}updateLocale(e){this.locale=e,this.debug&&Wt.log("Locale updated:",e)}isConfigLoaded(){return this.configLoaded}async hasErrorLayout(e){const n=await this.loadConfig();return n?!!(n.layouts[e]||n.layouts[String(e)]):!1}clearConfigCache(){this.errorConfig=null,this.configLoaded=!1,this.debug&&Wt.log("Config cache cleared")}}const Vc=pt("AssetFailureNotice"),Rb="g7-asset-failure-notice",Xx="g7-system-banners",Kr=new Map;let As=!1,Kc=!1,Wo=null;function Di(s,e,n){try{const r=window?.G7Core?.t;if(typeof r=="function"){const i=r(s,n);if(typeof i=="string"&&i!==s&&!i.startsWith("core.assets."))return i}}catch{}return Jx(e,n)}function Jx(s,e){return e?Object.entries(e).reduce((n,[r,i])=>n.split("{"+r+"}").join(String(i)),s):s}function xs(s){!s||!s.id||(Kr.set(s.id,s),Kc=!1,Vc.warn(`Asset failure notified: ${s.id} (${s.label})`),Ts())}function Db(s){Kr.delete(s)&&(Vc.log(`Asset failure cleared: ${s}`),Ts())}function Ob(){Kr.size!==0&&(Kr.clear(),Ts())}function Qx(){return Array.from(Kr.values())}function Lb(s,e,n){return Di(s,e,n)}async function $b(){if(As)return;As=!0,Kc=!1,Ts();const s=Array.from(Kr.values()).filter(n=>typeof n.retry=="function");let e=!1;for(const n of s)try{await n.retry(),Kr.delete(n.id)}catch(r){e=!0,Vc.warn(`Asset retry failed: ${n.id}`,r)}As=!1,Kc=e,Ts()}function Zx(){try{return document.documentElement.classList.contains("dark")}catch{return!1}}function Ts(){if(typeof document>"u"||!document.body)return;const s=document.getElementById(Rb);if(Kr.size===0){s?.remove(),sT();return}const e=s??eT();tT(e),e.replaceChildren(nT()),iT()}function eT(){const s=document.createElement("div");return s.id=Rb,s.setAttribute("role","alert"),s.setAttribute("aria-live","polite"),document.body.appendChild(s),s}function tT(s){const n=document.getElementById(Xx)?.offsetHeight??0;s.style.cssText=["position:fixed",`top:${n}px`,"left:0","right:0","z-index:9998","display:flex","justify-content:center","pointer-events:none"].join(";")}function nT(){const s=Zx(),e=Array.from(Kr.values()),n=typeof window<"u"&&window.innerWidth<768,r=document.createElement("div");return r.style.cssText=["pointer-events:auto","box-sizing:border-box","width:100%","max-width:960px","margin:8px","padding:12px 16px","border-radius:8px",`border:1px solid ${s?"#78350f":"#fcd34d"}`,`background:${s?"#451a03":"#fffbeb"}`,`color:${s?"#fef3c7":"#78350f"}`,"box-shadow:0 4px 12px rgba(0,0,0,0.12)","font-size:14px","line-height:1.5","display:flex",n?"flex-direction:column":"flex-direction:row",n?"align-items:stretch":"align-items:center","gap:12px"].join(";"),r.style.background=s?"#451a03":"#fffbeb",r.style.color=s?"#fef3c7":"#78350f",r.style.borderColor=s?"#78350f":"#fcd34d",r.appendChild(rT(e,n)),r.appendChild(aT(e,n,s)),r}function rT(s,e){const n=document.createElement("div");n.style.cssText=["flex:1 1 auto","min-width:0","display:flex","gap:8px"].join(";");const r=document.createElement("span");r.setAttribute("aria-hidden","true"),r.textContent="⚠",r.style.cssText="flex:0 0 auto;font-size:16px;line-height:1.4",n.appendChild(r);const i=document.createElement("div");if(i.style.cssText="flex:1 1 auto;min-width:0",s.length===1){const l=s[0],c=document.createElement("div");c.setAttribute("data-asset-failure-id",l.id),c.textContent=l.message??Di("core.assets.load_failed","{label}을(를) 불러오지 못했습니다.",{label:l.label}),i.appendChild(c)}else{const l=document.createElement("div");l.style.cssText="font-weight:600",l.textContent=Di("core.assets.load_failed_multiple","{count}개 항목을 불러오지 못했습니다.",{count:s.length}),i.appendChild(l);const c=document.createElement("div");c.style.cssText="margin-top:2px;opacity:0.9;word-break:break-word",c.textContent=s.map(d=>d.label).join(", "),i.appendChild(c)}if(Kc){const l=document.createElement("div");l.style.cssText="margin-top:4px;font-weight:600",l.textContent=Di("core.assets.retry_failed","다시 시도했지만 실패했습니다. 잠시 후 다시 시도해 주세요."),i.appendChild(l)}return n.appendChild(i),e&&(n.style.alignItems="flex-start"),n}function aT(s,e,n){const r=document.createElement("div");if(r.style.cssText=["flex:0 0 auto","display:flex","gap:8px",e?"width:100%":"","align-items:center"].filter(Boolean).join(";"),s.some(c=>typeof c.retry=="function")){const c=document.createElement("button");c.type="button",c.dataset.action="retry",c.disabled=As,c.textContent=As?Di("core.assets.retrying","다시 시도 중..."):Di("core.assets.retry","다시 시도"),c.style.cssText=[e?"flex:1 1 auto":"","padding:6px 14px","border-radius:6px","font-size:14px","font-weight:600","cursor:pointer",`border:1px solid ${n?"#b45309":"#d97706"}`,`background:${n?"#b45309":"#f59e0b"}`,`color:${n?"#fffbeb":"#451a03"}`,As?"opacity:0.6":""].filter(Boolean).join(";"),c.addEventListener("click",()=>{$b()}),r.appendChild(c)}const l=document.createElement("button");return l.type="button",l.dataset.action="close",l.setAttribute("aria-label",Di("core.assets.close","닫기")),l.textContent="✕",l.style.cssText=["padding:6px 10px","border-radius:6px","font-size:14px","cursor:pointer","border:1px solid transparent","background:transparent",`color:${n?"#fef3c7":"#78350f"}`].join(";"),l.addEventListener("click",()=>{Ob()}),r.appendChild(l),r}function iT(){Wo||typeof MutationObserver>"u"||(Wo=new MutationObserver(()=>{Kr.size>0&&Ts()}),Wo.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}))}function sT(){Wo?.disconnect(),Wo=null}function oT(){const s=window,e=r=>({id:String(r?.id??""),label:String(r?.label??r?.url??"asset"),retry:typeof r?.retry=="function"?r.retry:void 0}),n=Array.isArray(s.__g7ExternalAssetFailures)?s.__g7ExternalAssetFailures:[];n.forEach(r=>{r?.id&&xs(e(r))}),s.__g7ExternalAssetSink=r=>{r?.id&&xs(e(r))},Vc.log(`템플릿 externals 실패 대기열 ${n.length}건 반영`)}const Rt=pt("ModuleAssetLoader");function lT(s){return s==="plugin"?Lb("core.assets.plugin_styles","플러그인 스타일"):Lb("core.assets.module_styles","모듈 스타일")}class cT{constructor(){M(this,"loadedAssets",new Map);M(this,"loadingPromises",new Map);M(this,"failedJsAssets",new Set);M(this,"failedCssAssets",new Set)}getFailedCssAssets(){return[...this.failedCssAssets]}hasFailedJsAssets(){return this.failedJsAssets.size>0}getFailedJsAssets(){return[...this.failedJsAssets]}async loadActiveExtensionAssets(e){if(!e||e.length===0){Rt.log("No module assets to load");return}const n=[...e].sort((d,f)=>d.priority-f.priority);Rt.log("Loading module assets:",n.map(d=>d.identifier));const r=n.filter(d=>d.css).map(d=>this.loadCSS(d.identifier,d.css)),i=n.filter(d=>d.js).map(d=>this.loadJS(d.identifier,d.js)),l=await Promise.allSettled([...r,...i]),c=l.filter(d=>d.status==="rejected");if(c.length>0){Rt.warn(`Some module assets failed to load (${c.length}/${l.length}); continuing with the rest`,this.getFailedJsAssets());return}Rt.log("All module assets loaded successfully")}async loadBundle(e,n,r){const i=[];if(r&&i.push(this.loadBundleCss(e,r)),n&&i.push(this.loadBundleJs(e,n)),i.length===0){Rt.log(`No bundle assets to load for: ${e}`);return}await Promise.all(i)}async loadCustomAssets(){const e=uT();if(e.length!==0)for(const n of e){const r=`g7-custom-${n.type}-${dT(n.id)}`;if(document.getElementById(r))continue;const i=`${n.type==="style"?"custom CSS":"custom JS"}: ${n.id}`,l=(d,f)=>n.type==="style"?ia(Ln(d),{id:r},{label:i,retries:f}):_r(Ln(d),{id:r},{label:i,retries:f}),c=Nd(n.url);try{if(c!==null)try{await l(n.url,0)}catch{Rt.warn(`Custom asset static miss, falling back to API: ${n.id} (${n.url} -> ${c})`),await l(c)}else await l(n.url);Rt.log(`Custom asset loaded: ${n.id}`)}catch(d){Rt.warn(`Failed to load custom asset: ${n.id} (${n.url})`,d),xs({id:`custom-asset:${n.id}`,label:n.id.split(":").pop()??n.id,retry:async()=>{document.getElementById(r)?.remove(),await l(c??n.url)}})}}}async loadBundleCss(e,n){const r=`ext-bundle-css-${e}`;if(document.getElementById(r)){Rt.log(`Bundle CSS already loaded: ${e}`);return}const i=Nd(n);try{if(i!==null)try{await ia(n,{id:r},{label:`bundle CSS: ${e}`,retries:0})}catch{Rt.warn(`Bundle CSS static miss, falling back to API: ${e} (${n} -> ${i})`),await ia(Ln(i),{id:r},{label:`bundle CSS: ${e}`})}else await ia(n,{id:r},{label:`bundle CSS: ${e}`});Rt.log(`Bundle CSS loaded: ${e}`);const l=document.getElementById(r);l&&this.registerLoadedAsset(`bundle-${e}`,{type:"css",element:l})}catch(l){this.surfaceCssFailure(`bundle-${e}`,lT(e),i!==null?Ln(i):n,l)}}async loadBundleJs(e,n){const r=`ext-bundle-js-${e}`;if(document.getElementById(r)){Rt.log(`Bundle JS already loaded: ${e}`);return}const i=this.loadingPromises.get(r);if(i)return Rt.log(`Bundle JS already loading: ${e}`),i;const l=Nd(n),d=(l!==null?_r(n,{id:r},{label:`bundle JS: ${e}`,retries:0}).catch(()=>(Rt.warn(`Bundle JS static miss, falling back to API: ${e} (${n} -> ${l})`),_r(Ln(l),{id:r},{label:`bundle JS: ${e}`}))):_r(n,{id:r},{label:`bundle JS: ${e}`})).then(()=>{Rt.log(`Bundle JS loaded: ${e}`);const f=document.getElementById(r);f&&this.registerLoadedAsset(`bundle-${e}`,{type:"js",element:f}),this.loadingPromises.delete(r)}).catch(f=>{throw Rt.warn(`Failed to load bundle JS: ${e} (${n})`,f),this.failedJsAssets.add(e),this.loadingPromises.delete(r),f});return this.loadingPromises.set(r,d),d}async loadCSS(e,n){const r=`module-css-${e}`;if(document.getElementById(r)){Rt.log(`CSS already loaded: ${e}`);return}const i=this.loadingPromises.get(r);if(i)return Rt.log(`CSS already loading: ${e}`),i;const l=ia(n,{id:r},{label:`CSS: ${e}`}).then(()=>{Rt.log(`CSS loaded: ${e}`);const c=document.getElementById(r);c&&this.registerLoadedAsset(e,{type:"css",element:c}),this.loadingPromises.delete(r)}).catch(c=>{this.loadingPromises.delete(r),this.surfaceCssFailure(e,e,n,c)});return this.loadingPromises.set(r,l),l}surfaceCssFailure(e,n,r,i){Rt.warn(`Failed to load CSS after retries: ${e} (${r})`,i),this.failedCssAssets.add(e),xs({id:`ext-css:${e}`,label:n,retry:async()=>{document.getElementById(`module-css-${e}`)?.remove(),document.getElementById(`ext-bundle-css-${e.replace(/^bundle-/,"")}`)?.remove(),await ia(r,{},{label:`CSS retry: ${e}`}),this.failedCssAssets.delete(e)}})}async loadJS(e,n){const r=`module-js-${e}`;if(document.getElementById(r)){Rt.log(`JS already loaded: ${e}`);return}const i=this.loadingPromises.get(e);if(i)return Rt.log(`JS already loading: ${e}`),i;const l=_r(n,{id:r},{label:`JS: ${e}`}).then(()=>{Rt.log(`JS loaded: ${e}`);const c=document.getElementById(r);c&&this.registerLoadedAsset(e,{type:"js",element:c}),this.loadingPromises.delete(e)}).catch(c=>{throw Rt.warn(`Failed to load JS: ${e} (${n})`,c),this.failedJsAssets.add(e),this.loadingPromises.delete(e),c});return this.loadingPromises.set(e,l),l}registerLoadedAsset(e,n){const r=this.loadedAssets.get(e)||[];r.push(n),this.loadedAssets.set(e,r)}unloadExtensionAsset(e){const n=this.loadedAssets.get(e);if(!n||n.length===0){Rt.log(`No assets to unload for: ${e}`);return}n.forEach(r=>{r.element.parentNode&&(r.element.parentNode.removeChild(r.element),Rt.log(`${r.type.toUpperCase()} unloaded: ${e}`))}),this.loadedAssets.delete(e),Rt.log(`All assets unloaded for: ${e}`)}unloadAllAssets(){Array.from(this.loadedAssets.keys()).forEach(n=>{this.unloadExtensionAsset(n)}),Rt.log("All module assets unloaded")}isLoaded(e){return this.loadedAssets.has(e)}getLoadedModules(){return Array.from(this.loadedAssets.keys())}}let uh=null;function uT(){const s=window?.G7Config?.customAssets;return Array.isArray(s)?s.filter(e=>e&&typeof e.id=="string"&&typeof e.url=="string"&&(e.type==="style"||e.type==="script")):[]}function dT(s){return s.replace(/[^A-Za-z0-9_-]/g,"-")}function dh(){return uh||(uh=new cT),uh}function fT(){if(typeof window>"u")return[];const s=window.G7Config;if(!s?.moduleAssets)return[];const e=[];for(const[n,r]of Object.entries(s.moduleAssets)){const i=r;e.push({identifier:n,js:i.js?Ln(i.js):i.js,css:i.css?Ln(i.css):i.css,priority:i.priority,external:i.external})}return e}function hT(){if(typeof window>"u")return null;const s=window.G7Config;if(!s?.bundleUrls)return null;const e=s.bundleUrls;return{moduleJs:e.moduleJs?Ln(e.moduleJs):e.moduleJs,moduleCss:e.moduleCss?Ln(e.moduleCss):e.moduleCss,pluginJs:e.pluginJs?Ln(e.pluginJs):e.pluginJs,pluginCss:e.pluginCss?Ln(e.pluginCss):e.pluginCss}}function pT(){if(typeof window>"u")return[];const s=window.G7Config;if(!s?.pluginAssets)return[];const e=[];for(const[n,r]of Object.entries(s.pluginAssets)){const i=r;e.push({identifier:n,js:i.js?Ln(i.js):i.js,css:i.css?Ln(i.css):i.css,priority:i.priority,external:i.external})}return e}const fh=pt("SystemBannerManager");class Wc{static show(e){this.banners.set(e.id,e),this.render(),fh.log(`Banner shown: ${e.id}`)}static hide(e){this.banners.delete(e)&&(this.render(),fh.log(`Banner hidden: ${e}`))}static hideAll(){this.banners.clear(),this.render(),fh.log("All banners hidden")}static detectLocale(){try{const n=window.G7Core;if(n?.locale?.current)return n.locale.current()}catch{}return(navigator.language||"ko").split("-")[0]}static resolveMessage(e,n){return typeof e=="string"?e:e[n]||e.en||e.ko||Object.values(e)[0]||""}static render(){if(typeof document>"u")return;let e=document.getElementById(this.containerId);if(this.banners.size===0){e&&(e.remove(),this.adjustAppPadding(0));return}e||(e=document.createElement("div"),e.id=this.containerId,e.style.cssText="position:fixed;top:0;left:0;right:0;z-index:99999;",document.body.prepend(e));const n=Array.from(this.banners.values()).sort((i,l)=>(i.order??0)-(l.order??0)),r=this.detectLocale();e.innerHTML=n.map(i=>{const l=this.resolveMessage(i.message,r),c=i.background||"#f59e0b",d=i.color||"white";return`<div data-banner-id="${i.id}" style="background:${c};color:${d};text-align:center;padding:8px 16px;font-size:14px;font-weight:500;">${l}</div>`}).join(""),requestAnimationFrame(()=>{e&&this.adjustAppPadding(e.offsetHeight)})}static adjustAppPadding(e){const n=document.getElementById("app");n&&(n.style.paddingTop=e>0?`${e}px`:"")}}M(Wc,"banners",new Map),M(Wc,"containerId","g7-system-banners");const U=pt("TemplateApp");function Mb(s){const e={};for(const n of s.keys()){if(n in e)continue;const r=s.getAll(n);r.length>1?e[n]=r:r.length===1&&(n.endsWith("[]")?e[n]=r:e[n]=r[0])}return e}const $r=class $r{constructor(e){M(this,"router",null);M(this,"layoutLoader",null);M(this,"errorPageHandler",null);M(this,"config");M(this,"globalState");M(this,"globalStateListeners",new Set);M(this,"currentRouteChangeId",0);M(this,"failedLayoutScripts",new Set);M(this,"currentDataSources",[]);M(this,"currentRawDataSources",[]);M(this,"currentRouteParams",{});M(this,"currentQueryParams",new URLSearchParams);M(this,"currentFetchedData",{});M(this,"currentLayoutName","");M(this,"templateErrorHandling",null);M(this,"currentWebSocketSubscriptions",[]);M(this,"extensionCacheVersion",0);M(this,"currentGlobalHeaders",[]);M(this,"transitionOverlayEl",null);M(this,"skeletonOverlayRoot",null);M(this,"skeletonOverlayContainer",null);M(this,"_spinnerState",null);M(this,"modalDataSources",new Map);this.globalState={sidebarOpen:!1},this.loadG7Config(),this.migrateLocaleStorage();const n=this.loadLocaleFromStorage(),r=n||e.locale||"ko";this.config={...e,locale:r},!n&&e.locale&&this.saveLocaleToStorage(e.locale)}loadG7Config(){if(typeof window<"u"&&window.G7Config){const e=window.G7Config;e.settings&&(this.globalState.settings=e.settings,U.log("Loaded settings from G7Config:",Object.keys(e.settings)),e.settings.upload&&(this.globalState.uploadSettings=e.settings.upload)),e.plugins&&(this.globalState.plugins=e.plugins,U.log("Loaded plugin settings from G7Config:",Object.keys(e.plugins))),e.modules&&(this.globalState.modules=e.modules,U.log("Loaded module settings from G7Config:",Object.keys(e.modules))),e.appConfig&&(this.globalState.appConfig=e.appConfig,U.log("Loaded appConfig from G7Config:",Object.keys(e.appConfig)))}}resolveRouteExpressions(e){const n=new $n,r={_global:this.globalState};return e.map(i=>{const l={...i};if(l.path&&l.path.includes("{{")){const c=l.path;l.path=n.resolveBindings(l.path,r),l.path=l.path.replace(/\/\/+/g,"/")||"/",l.path.includes("{{")&&(U.warn("Route expression resolution failed, using fallback:",c),l.path=c.replace(/\{\{[^}]+\}\}/g,"").replace(/\/\/+/g,"/")||"/")}if(l.redirect&&l.redirect.includes("{{")){const c=l.redirect;l.redirect=n.resolveBindings(l.redirect,r),l.redirect=l.redirect.replace(/\/\/+/g,"/")||"/",l.redirect.includes("{{")&&(U.warn("Route redirect expression resolution failed:",c),l.redirect=c.replace(/\{\{[^}]+\}\}/g,"").replace(/\/\/+/g,"/")||"/")}return l})}migrateLocaleStorage(){const e=["locale","g7_template_locale"];for(const n of e)try{const r=localStorage.getItem(n);r&&r!==localStorage.getItem($r.LOCALE_STORAGE_KEY)&&(localStorage.setItem($r.LOCALE_STORAGE_KEY,r),U.log(`Migrated locale from '${n}' to '${$r.LOCALE_STORAGE_KEY}'`)),localStorage.removeItem(n)}catch(r){U.warn(`Failed to migrate locale key '${n}':`,r)}}async init(){try{po.getInstance().setDebug(this.config.debug),U.log("Initializing with config:",this.config),w0();const e=Ar.getInstance(),n=Xn.getInstance(),r=typeof window<"u"&&Number(window.G7Config?.cache_version)||0,i=r>0?r:this.loadCacheVersionFromStorage()||0,[l,c,d,f,h]=await Promise.all([el({templateId:this.config.templateId,templateType:this.config.templateType,locale:this.config.locale,debug:this.config.debug,cacheVersion:i}),e.loadComponents(this.config.templateId,this.config.templateType,i),nc(i>0?go(`templates/${this.config.templateId}/routes.json`,i):null,Br(`/api/templates/${this.config.templateId}/routes`,"json",i>0?i:null),{label:"routes.json"}).then(A=>{if(!A.ok)throw new Error(`Failed to load routes: ${A.statusText}`);return A.json()}).then(A=>{if(!A.success)throw new Error("Failed to load routes from API");return A.data}).catch(A=>{throw U.error("Error loading routes:",A),A}),n.preloadAuth(this.config.templateType==="admin"?"admin":"user"),fetch(Br(`/api/templates/${this.config.templateId}/config`,"json")).then(A=>A.ok?A.json():null).then(A=>!A?.success||!A?.data?null:A.data).catch(A=>(U.warn("Error loading template config:",A),null))]);if(U.log("Template Engine initialized"),U.log("ComponentRegistry loaded"),U.log("Routes data loaded"),U.log("User info preloaded"),U.log("Template config loaded:",h),h?.cache_version!==void 0){const A=i>0?i:null;if(this.extensionCacheVersion=h.cache_version,this.saveCacheVersionToStorage(this.extensionCacheVersion),U.log("Extension cache version:",this.extensionCacheVersion),A!==null&&A!==this.extensionCacheVersion){U.log("Cache version changed, reloading routes...");const D=await nc(go(`templates/${this.config.templateId}/routes.json`,this.extensionCacheVersion),Br(`/api/templates/${this.config.templateId}/routes`,"json",this.extensionCacheVersion),{label:"routes.json (reload)"}).then(O=>{if(!O.ok)throw new Error(`Failed to reload routes: ${O.statusText}`);return O.json()}).then(O=>{if(!O.success)throw new Error("Failed to reload routes from API");return O.data});Array.isArray(D.routes)&&(D.routes=this.resolveRouteExpressions(D.routes),Object.assign(d,D),U.log("Routes reloaded with new cache version"));try{const{TranslationEngine:O}=await Promise.resolve().then(()=>Jg),k=O.getInstance();k.setCacheVersion(this.extensionCacheVersion);const L=this.config.locale||"ko",B="en";await k.loadTranslations(this.config.templateId,L,"/api",!0),L!==B&&await k.loadTranslations(this.config.templateId,B,"/api",!0),U.log("Translations reloaded with new cache version")}catch(O){U.error("Failed to reload translations:",O)}}}h?.errorHandling&&(this.templateErrorHandling=h.errorHandling,kr().setTemplateConfig(this.templateErrorHandling),U.log("Template errorHandling registered:",this.templateErrorHandling)),n.on("logout",()=>{U.log("User logged out")}),n.on("authStateChange",A=>{U.log("Auth state changed:",A)}),U.log("AuthManager event handlers registered");const m=Yn(),y=this.config.templateType==="admin"?"admin":"user",v=n.getConfig(y);m.setOnUnauthorized(()=>{U.log("Unauthorized - redirecting to login page"),m.removeToken();const A=window.location.pathname+window.location.search,D=n.getLoginRedirectUrl(y,A,"session_expired");window.location.href=D}),U.log("ApiClient onUnauthorized callback registered"),this.layoutLoader=new th(e),this.extensionCacheVersion>0&&this.layoutLoader.setCacheVersion(this.extensionCacheVersion),U.log("LayoutLoader initialized:",this.layoutLoader);const S=new Or({onUnauthorized:()=>{U.warn("Unauthorized request in error page")}});if(this.errorPageHandler=new Yx({templateId:this.config.templateId,layoutLoader:this.layoutLoader,locale:this.config.locale,debug:this.config.debug,renderFunction:Rs,dataSourceManager:S,globalState:this.globalState}),U.log("ErrorPageHandler initialized with DataSourceManager"),await this.handleServerError()){U.log("Server error handled, skipping normal initialization");return}if(this.router=new Kx(this.config.templateId),Array.isArray(d.routes)){const A=this.resolveRouteExpressions(d.routes);this.router.setRoutes(A)}else throw new Error("Invalid routes data format");U.log("Router initialized:",this.router),U.log("Routes set:",this.router.getRoutes());const{getActionDispatcher:_}=await Promise.resolve().then(()=>Wr),x=_();if(x&&(x.setDefaultContext({navigate:A=>this.router?.navigate(A)}),x.setGlobalStateUpdater((A,D)=>this.setGlobalState(A,D)),U.log("Navigate function and setGlobalState injected to ActionDispatcher")),await this.loadExtensionAssets(),this.reinitializeTemplateHandlers(),this.router.on("routeChange",A=>this.handleRouteChange(A)),this.router.on("routeNotFound",A=>this.handleRouteNotFound(A)),typeof window<"u"&&ch(window.location.pathname)){U.log("Layout editor mode detected — skipping router match"),await Rs({containerId:"app",layoutJson:{components:[]},dataContext:{},translationContext:{templateId:this.config.templateId,locale:this.config.locale}}),U.log("Template App initialized in layout editor mode");return}this.router.navigateToCurrentPath(),U.log("Template App initialized successfully")}catch(e){U.error("Initialization failed:",e),this.showInitError(e)}}async loadExtensionAssets(){try{const e=dh(),n=hT();if(!n){await this.loadExtensionAssetsIndividually(),await e.loadCustomAssets();return}await e.loadBundle("module",n.moduleJs,n.moduleCss),await e.loadBundle("plugin",n.pluginJs,n.pluginCss),await e.loadCustomAssets(),U.log("Extension bundle assets loaded successfully")}catch(e){U.warn("Failed to load extension assets:",e)}}async loadExtensionAssetsIndividually(){const e=dh(),n=fT();n.length>0&&(U.log("Loading module assets (individual fallback):",n.map(i=>i.identifier)),await e.loadActiveExtensionAssets(n));const r=pT();r.length>0&&(U.log("Loading plugin assets (individual fallback):",r.map(i=>i.identifier)),await e.loadActiveExtensionAssets(r))}async handleRouteChange(e){const n=++this.currentRouteChangeId;window.__g7ForcedLocalFields=void 0,window.__g7ActionContext=void 0,window.__g7PendingLocalState=void 0,window.__g7LastSetLocalSnapshot=void 0,window.__g7SetLocalOverrideKeys=void 0,window.__g7SequenceLocalSync=void 0,window.__g7AutoBindingPaths=new Map;try{if(U.log("Route changed:",e,"requestId:",n),!this.layoutLoader)throw new Error("LayoutLoader is not initialized");if(!e.layout)throw new Error("Route layout is not defined");let r=e.layout;const i=r==="__preview__";i&&e.params?.token&&(r=`__preview__/${e.params.token}`);const l=await this.layoutLoader.loadLayout(this.config.templateId,r);if(n!==this.currentRouteChangeId){U.log("Route change cancelled (newer request exists):",n);return}U.log("Layout loaded:",l);const c=kr();l.errorHandling?(c.setLayoutConfig(l.errorHandling),U.log("Layout errorHandling registered:",l.errorHandling)):c.clearLayoutConfig();const d=l.data_sources||[],f=e.query||{},h=new URLSearchParams;for(const[ee,me]of Object.entries(f))if(Array.isArray(me))for(const H of me)h.append(ee,H);else h.set(ee,me);const m={route:e.params||{},query:f,_global:this.globalState};l.scripts&&Array.isArray(l.scripts)&&await this.loadLayoutScripts(l.scripts,m);const{DataSourceManager:y,getActionDispatcher:v}=await Promise.resolve().then(()=>Wr),S=new y;if(i){const ee=v();ee&&ee.setPreviewMode(!0),this.setGlobalState({__isPreview:!0}),Wc.show({id:"preview-mode",message:{ko:"⚠ 미리보기 모드 — 페이지 이동이 비활성화됩니다",en:"⚠ Preview Mode — Navigation is disabled"},background:"linear-gradient(90deg, #f59e0b, #d97706)",color:"white"}),U.log("Preview mode activated")}else{const ee=v();ee?.isPreviewMode()&&(ee.setPreviewMode(!1),Wc.hide("preview-mode"))}if(this.currentGlobalHeaders=l.globalHeaders||[],this.currentGlobalHeaders.length>0){S.setGlobalHeaders(this.currentGlobalHeaders);const ee=v();ee&&ee.setGlobalHeaders(this.currentGlobalHeaders),U.log("globalHeaders set:",this.currentGlobalHeaders.map(me=>me.pattern))}if(l.named_actions&&Object.keys(l.named_actions).length>0){const ee=v();ee&&ee.setNamedActions(l.named_actions)}const _=S.filterByCondition(d,m);d.length!==_.length&&U.log("Data sources filtered by condition:",{before:d.map(ee=>ee.id),after:_.map(ee=>ee.id)});const x=_.filter(ee=>ee.loading_strategy==="blocking"),A=_.filter(ee=>(ee.loading_strategy||"progressive")!=="blocking"&&ee.type!=="websocket"),D=Array.isArray(l.transition_overlay?.wait_for)?l.transition_overlay.wait_for:[],O=D.length>0&&_.some(ee=>D.includes(ee.id)&&ee.type!=="websocket"&&(ee.loading_strategy||"progressive")!=="background");if((x.length>0||O)&&l.transition_overlay){const ee=typeof l.transition_overlay=="boolean"?{enabled:l.transition_overlay,style:"opaque"}:l.transition_overlay;ee.enabled&&ee.style==="skeleton"&&ee.skeleton?.component&&ee.target?this.renderSkeletonOverlay(ee.target,ee.skeleton,l,ee.fallback_target):ee.enabled&&ee.style==="spinner"&&ee.target&&this.renderSpinnerOverlay(ee.target,ee.spinner,ee.fallback_target)}let k={},L={},B={},q={};this.currentWebSocketSubscriptions.length>0&&(U.log("Unsubscribing previous WebSocket subscriptions:",this.currentWebSocketSubscriptions),S.unsubscribeWebSockets(this.currentWebSocketSubscriptions),this.currentWebSocketSubscriptions=[]),this.currentDataSources=_,this.currentRawDataSources=d,this.currentRouteParams=e.params||{},this.currentQueryParams=h,U.log(`handleRouteChange #${n} - queryObject:`,f),U.log(`handleRouteChange #${n} - queryParams:`,h.toString()),x.length>0&&(U.log("Fetching blocking data sources:",x.map(me=>me.id)),(await S.fetchDataSourcesWithResults(x,e.params||{},h)).forEach(me=>{if(me.state==="success"&&me.data!==void 0)k[me.id]=me.data;else if(me.state==="error"&&me.error){const H=me.error,T=H.response?.data?.message;L[me.id]={message:T||me.error.message,status:H.response?.status||H.status}}}),this.processInitOptions(x,k,B,q),this.currentFetchedData={...k},U.log("Blocking data loaded:",Object.keys(k)),Object.keys(L).length>0&&U.log("Data source errors:",L),Object.keys(B).length>0&&U.log("Local state init (blocking):",Object.keys(B)),Object.keys(q).length>0&&U.log("Isolated state init (blocking):",Object.keys(q)));const z=A.length>0;if(z&&(Gr.setPending(!0),U.log("Transition started before rendering")),n!==this.currentRouteChangeId){U.log("Route change cancelled after blocking data (newer request exists):",n);return}const{getState:W}=await Promise.resolve().then(()=>Wr),de=W().currentDataContext||{},_e=A.map(ee=>ee.id),Se={};if(z){_e.forEach(me=>{de[me]!==void 0?Se[me]=de[me]:Se[me]=void 0});const ee=Object.keys(Se).filter(me=>Se[me]!==void 0);ee.length>0&&U.log("Preserving previous progressive data:",ee),U.log("Progressive data sources initialized:",_e)}const je=l.defines||{},Fe={...Se,...e.params,...k,route:{...e.params||{},path:e.path},query:f,_global:{...this.globalState},_globalSetState:ee=>this.setGlobalState(ee),_dataSourceErrors:Object.keys(L).length>0?L:void 0,_localInit:Object.keys(B).length>0?B:void 0,_isolatedInit:Object.keys(q).length>0?q:void 0,_defines:Object.keys(je).length>0?je:void 0};if(l.computed&&Object.keys(l.computed).length>0){const ee=this.calculateComputed(l.computed,Fe);Object.keys(ee).length>0&&(Fe._computed=ee,this.globalState._computed=ee,U.log("Computed values calculated:",Object.keys(ee))),Fe._computedDefinitions=l.computed}const ze=l.layout_name||e.layout;this.currentLayoutName!==""&&this.currentLayoutName!==ze&&(U.log("_local reset due to layout change:",{from:this.currentLayoutName,to:ze}),this.globalState._local={},c_()),this.currentLayoutName=ze;const Q=l.initLocal||l.state;if(Q&&Object.keys(Q).length>0){this.globalState._local||(this.globalState._local={});for(const[ee,me]of Object.entries(Q))this.globalState._local[ee]===void 0&&(this.globalState._local[ee]=JSON.parse(JSON.stringify(me)));Fe._local={...this.globalState._local},U.log("initLocal applied to _local:",Object.keys(Q))}if(l.initGlobal&&Object.keys(l.initGlobal).length>0){for(const[ee,me]of Object.entries(l.initGlobal))this.globalState[ee]===void 0&&(this.globalState[ee]=JSON.parse(JSON.stringify(me)));U.log("initGlobal applied to _global:",Object.keys(l.initGlobal))}if(l.initIsolated&&Object.keys(l.initIsolated).length>0){for(const[ee,me]of Object.entries(l.initIsolated))q[ee]===void 0&&(q[ee]=JSON.parse(JSON.stringify(me)));U.log("initIsolated applied:",Object.keys(l.initIsolated))}Fe._global={...this.globalState,layoutWarnings:l.warnings||[]};const ue=l.initActions||l.init_actions;if(ue&&ue.length>0){await this.executeInitActions(ue,Fe),U.log("initActions executed before render");const ee=this.globalState;if(ee._local){if(Object.keys(B).length>0){for(const[me,H]of Object.entries(B))ee._local[me]!==void 0?ee._local[me]=this.deepMerge(ee._local[me],H):ee._local[me]=H;U.log("localInit merged into _local after initActions:",Object.keys(B))}Fe._local=ee._local,U.log("_local merged into dataContext:",ee._local)}if(Fe._global={...this.globalState,layoutWarnings:l.warnings||[]},U.log("_global merged into dataContext after initActions"),l.computed&&Object.keys(l.computed).length>0){const me=this.calculateComputed(l.computed,Fe);Object.keys(me).length>0&&(Fe._computed=me,this.globalState._computed=me,U.log("Computed values recalculated after init_actions:",Object.keys(me)))}if(Object.keys(this.currentFetchedData).length>0){for(const[me,H]of Object.entries(this.currentFetchedData))Fe[me]=H;U.log("Fetched data sources merged into dataContext after initActions:",Object.keys(this.currentFetchedData))}}if(l.transition_overlay&&!this.skeletonOverlayContainer&&this.showTransitionOverlay(l.transition_overlay,l),await Rs({containerId:"app",layoutJson:l,dataContext:Fe,translationContext:{templateId:this.config.templateId,locale:this.config.locale}}),U.log("Initial render complete with blocking data"),this.reattachSpinnerOverlay(),A.length>0){if(n!==this.currentRouteChangeId){U.log("Route change cancelled before progressive fetch (newer request exists):",n),Gr.setPending(!1),this.hideTransitionOverlay();return}U.log("Fetching progressive/background data sources:",A.map(H=>H.id));const{updateTemplateData:ee,getState:me}=await Promise.resolve().then(()=>Wr);try{const H=A.map(async T=>{try{const he=(await S.fetchDataSourcesWithResults([T],e.params||{},h,this.globalState))[0];if(!he){U.log(`Data source ${T.id} skipped (no fetch result)`);return}if(n!==this.currentRouteChangeId){U.log(`Data source ${T.id} fetch cancelled (newer request exists)`);return}if(he.state==="success"&&he.data!==void 0){U.log(`Progressive data source loaded: ${T.id}`),this.currentFetchedData[T.id]=he.data;const Ae={};this.processInitOptions([T],{[T.id]:he.data},Ae);const se=me();if(se.bindingEngine){const $e=[T.id];T.initGlobal&&$e.push("_global"),T.initLocal&&$e.push("_local"),se.bindingEngine.invalidateCacheByKeys($e)}const ge={[T.id]:he.data};Object.keys(Ae).length>0&&(ge._localInit=Ae,Object.assign(B,Ae)),T.initGlobal&&(ge._global={...this.globalState}),ee(ge)}else if(he.state==="error"&&he.error){const Ae=he.error,se=Ae.response?.data?.message;L[T.id]={message:se||he.error.message,status:Ae.response?.status||Ae.status},U.log(`Progressive data source error: ${T.id}`,L[T.id]),ee({[T.id]:null,_dataSourceErrors:{...L}})}}catch(fe){U.error(`Failed to fetch data source: ${T.id}`,fe)}});if(await Promise.all(H),n!==this.currentRouteChangeId){U.log("Route change cancelled after progressive fetch (newer request exists):",n);return}U.log("All progressive data sources loaded")}finally{Gr.setPending(!1),this.hideTransitionOverlay()}}else this.hideTransitionOverlay();const De=_.filter(ee=>ee.type==="websocket");if(De.length>0){U.log("Subscribing WebSocket data sources:",De.map(T=>T.id));const{updateTemplateData:ee,getState:me}=await Promise.resolve().then(()=>Wr),H={...this.currentFetchedData,...e.params,route:{...e.params||{},path:e.path},query:f,_global:{...this.globalState}};U.log("WebSocket binding context keys:",Object.keys(H)),this.currentWebSocketSubscriptions=S.subscribeWebSockets(_,(T,fe)=>{U.log(`WebSocket data received for: ${T}`,fe),this.currentFetchedData[T]=fe;const he=_.find($e=>$e.id===T),Ae=me();if(Ae.bindingEngine){const $e=[T];he?.initGlobal&&$e.push("_global"),he?.initLocal&&$e.push("_local"),Ae.bindingEngine.invalidateCacheByKeys($e)}ee({[T]:fe});const ge=_.find($e=>$e.type==="websocket"&&($e.target_source||$e.id)===T)?.onReceive;Array.isArray(ge)&&ge.length>0&&window.G7Core?.dispatch&&(async()=>{for(const Te of ge)try{const Ie=this.getActionDispatcher?.();Ie&&await Ie.dispatchAction(Te,{navigate:this.getRouter?.()?(xt,rt)=>this.getRouter().navigate(xt,rt):void 0,setState:xt=>this.setGlobalState(xt),state:this.globalState,data:{...this.globalState,$args:[fe],$event:fe},_isDispatchFallbackContext:!0})}catch(Ie){U.error(`WebSocket onReceive action failed for ${T}:`,Ie)}})()},H),U.log("WebSocket subscriptions established:",this.currentWebSocketSubscriptions)}U.log("Layout rendered successfully")}catch(r){U.error("Route change handling failed:",r),this.hideTransitionOverlay(),this.showRouteError(r)}}processInitOptions(e,n,r,i){e.some(c=>c.refetchOnMount===!0&&c.initLocal)&&(r._forceLocalInit=Date.now(),U.log("refetchOnMount detected, forcing local state init")),e.forEach(c=>{const d=n[c.id];if(!d)return;const f=d.data??d;if(c.initLocal){if(typeof c.initLocal=="string"){let h=f;if(c.initLocalDefaults&&typeof c.initLocalDefaults=="object"){const y=this.evaluateDefaults(c.initLocalDefaults,n);h={...y,...f},U.log(`initLocalDefaults applied for ${c.initLocal}:`,Object.keys(y))}const m=this.globalState._local?.[c.initLocal];m!==void 0&&typeof m=="object"&&typeof h=="object"?(r[c.initLocal]=this.deepMerge(m,h),U.log(`initLocal (merged): ${c.id}.data -> _local.${c.initLocal}`)):(r[c.initLocal]=h,U.log(`initLocal: ${c.id}.data -> _local.${c.initLocal}`))}else if(typeof c.initLocal=="object"&&c.initLocal.key){const{key:h,path:m}=c.initLocal;let y=m?this.extractValueByPathOrExpression(f,m,c.id):f;if(c.initLocalDefaults&&typeof c.initLocalDefaults=="object"){const S=this.evaluateDefaults(c.initLocalDefaults,n);y={...S,...y},U.log(`initLocalDefaults applied for ${h}:`,Object.keys(S))}const v=this.globalState._local?.[h];v!==void 0&&typeof v=="object"&&typeof y=="object"?(r[h]=this.deepMerge(v,y),U.log(`initLocal (merged): ${c.id}.data${m?"."+m:""} -> _local.${h}`)):(r[h]=y,U.log(`initLocal: ${c.id}.data${m?"."+m:""} -> _local.${h}`))}else if(typeof c.initLocal=="object"){const h=c.initLocal._merge||"deep",m=this.flattenNestedObjectToMappings(c.initLocal);for(const{targetPath:y,sourcePath:v}of m){const S=this.extractValueByPathOrExpression(f,v,c.id);if(y.includes(".")){const _=y.split(".")[0];r[_]===void 0&&this.globalState._local?.[_]!==void 0&&(r[_]=JSON.parse(JSON.stringify(this.globalState._local[_]))),this.setValueAtPath(r,y,S,h),U.log(`initLocal map (${h}): ${c.id} ${v} -> _local.${y}`)}else{const _=this.globalState._local?.[y];h==="replace"?(r[y]=S,U.log(`initLocal map (replace): ${c.id} ${v} -> _local.${y}`)):h==="shallow"?_!==void 0&&typeof _=="object"&&typeof S=="object"?(r[y]={..._,...S},U.log(`initLocal map (shallow): ${c.id} ${v} -> _local.${y}`)):(r[y]=S,U.log(`initLocal map: ${c.id} ${v} -> _local.${y}`)):_!==void 0&&typeof _=="object"&&typeof S=="object"?(r[y]=this.deepMerge(_,S),U.log(`initLocal map (deep): ${c.id} ${v} -> _local.${y}`)):(r[y]=S,U.log(`initLocal map: ${c.id} ${v} -> _local.${y}`))}}}}if(c.initGlobal)if(typeof c.initGlobal=="object"&&!Array.isArray(c.initGlobal)&&!("key"in c.initGlobal))for(const[m,y]of Object.entries(c.initGlobal)){if(typeof y!="string"){U.warn(`initGlobal map value must be string, got ${typeof y} for key ${m}`);continue}const v=this.extractValueByPathOrExpression(f,y,c.id),S=this.globalState[m];S!==void 0&&typeof S=="object"&&typeof v=="object"?(this.globalState[m]=this.deepMerge(S,v),U.log(`initGlobal map (merged): ${c.id} ${y} -> _global.${m}`)):(this.globalState[m]=v,U.log(`initGlobal map: ${c.id} ${y} -> _global.${m}`))}else{const m=Array.isArray(c.initGlobal)?c.initGlobal:[c.initGlobal];for(const y of m)if(typeof y=="string"){const v=this.globalState[y];v!==void 0&&typeof v=="object"&&typeof f=="object"?(this.globalState[y]=this.deepMerge(v,f),U.log(`initGlobal (merged): ${c.id}.data -> _global.${y}`)):(this.globalState[y]=f,U.log(`initGlobal: ${c.id}.data -> _global.${y}`))}else if(typeof y=="object"&&y.key){const{key:v,path:S}=y,_=S?this.extractValueByPathOrExpression(f,S,c.id):f,x=this.globalState[v];x!==void 0&&typeof x=="object"&&typeof _=="object"?(this.globalState[v]=this.deepMerge(x,_),U.log(`initGlobal (merged): ${c.id}.data${S?"."+S:""} -> _global.${v}`)):(this.globalState[v]=_,U.log(`initGlobal: ${c.id}.data${S?"."+S:""} -> _global.${v}`))}}if(i&&c.initIsolated){if(typeof c.initIsolated=="string"){const h=i[c.initIsolated];h!==void 0&&typeof h=="object"&&typeof f=="object"?(i[c.initIsolated]=this.deepMerge(h,f),U.log(`initIsolated (merged): ${c.id}.data -> _isolated.${c.initIsolated}`)):(i[c.initIsolated]=f,U.log(`initIsolated: ${c.id}.data -> _isolated.${c.initIsolated}`))}else if(typeof c.initIsolated=="object"&&c.initIsolated.key){const{key:h,path:m}=c.initIsolated,y=m?this.extractValueByPathOrExpression(f,m,c.id):f,v=i[h];v!==void 0&&typeof v=="object"&&typeof y=="object"?(i[h]=this.deepMerge(v,y),U.log(`initIsolated (merged): ${c.id}.data${m?"."+m:""} -> _isolated.${h}`)):(i[h]=y,U.log(`initIsolated: ${c.id}.data${m?"."+m:""} -> _isolated.${h}`))}else if(typeof c.initIsolated=="object")for(const[h,m]of Object.entries(c.initIsolated)){if(typeof m!="string"){U.warn(`initIsolated map value must be string, got ${typeof m} for key ${h}`);continue}const y=this.extractValueByPathOrExpression(f,m,c.id),v=i[h];v!==void 0&&typeof v=="object"&&typeof y=="object"?(i[h]=this.deepMerge(v,y),U.log(`initIsolated map (merged): ${c.id} ${m} -> _isolated.${h}`)):(i[h]=y,U.log(`initIsolated map: ${c.id} ${m} -> _isolated.${h}`))}}})}evaluateDefaults(e,n){const r={};for(const[i,l]of Object.entries(e))if(typeof l=="string"&&l.startsWith("{{")&&l.endsWith("}}")){const c=l.slice(2,-2).trim();r[i]=this.evaluateExpression(c,n)}else r[i]=l;return r}evaluateExpression(e,n){try{const r=e.split("??").map(i=>i.trim());for(const i of r){if(/^['"].*['"]$/.test(i))return i.slice(1,-1);if(i==="true")return!0;if(i==="false")return!1;if(/^-?\d+(\.\d+)?$/.test(i))return Number(i);const l=this.getNestedValue(n,i);if(l!=null)return l}return}catch(r){U.warn(`Expression evaluation failed: ${e}`,r);return}}getNestedValue(e,n){const r=n.replace(/\?\./g,".");let i=e;const l=r.split(/\.(?![^\[]*\])/).flatMap(c=>{const d=c.match(/^([^\[]*)((?:\[\d+\])*)$/);if(d){const[,f,h]=d,m=[];f&&m.push(f);const y=h.match(/\[\d+\]/g);return y&&m.push(...y),m}return[c]}).filter(c=>c!=="");for(const c of l){if(i==null)return;if(c.startsWith("[")&&c.endsWith("]")){const d=parseInt(c.slice(1,-1),10);i=i[d]}else i=i[c]}return i}extractValueByPathOrExpression(e,n,r){const i=Oa(n);if(i!==null){const l=new $n,c={data:e,_global:this.globalState,_local:this.globalState._local||{}};try{const d=jn(i)?l.evaluatePipeExpression(i,c,{skipCache:!0}):l.evaluateExpression(i,c);return U.log(`initLocal/initGlobal expression evaluated: ${n} -> `,d),d}catch(d){U.warn(`initLocal/initGlobal expression evaluation failed for ${r}:`,n,d);return}}return this.getNestedValue(e,n)}async loadLayoutScripts(e,n){const r=[];for(const i of e){if((i.if!==void 0||i.conditions!==void 0)&&!hs({if:i.if,conditions:i.conditions},n,this.bindingEngine,`script:${i.id}`)){U.log(`Script skipped (condition not met): ${i.id}`);continue}if(document.getElementById(i.id)){U.log(`Script already loaded: ${i.id}`);continue}if(!this.isAllowedScriptSrc(i.src)){U.warn(`Blocked untrusted external script src (same-origin path or declared trusted host required): ${i.id} (${i.src})`);continue}r.push(this.loadLayoutScript(i))}r.length>0&&(await Promise.all(r),U.log(`All scripts loaded: ${e.filter(i=>!document.getElementById(i.id)||r.length>0).map(i=>i.id).join(", ")}`))}async loadLayoutScript(e){const n=e.src.startsWith("/")?Ln(e.src):e.src;try{await _r(n,{id:e.id},{label:`layout-script:${e.id}`}),this.failedLayoutScripts.delete(e.id),Db(`layout-script:${e.id}`),U.log(`Script loaded successfully: ${e.id}`)}catch(r){this.failedLayoutScripts.add(e.id),U.warn(`Failed to load script after retries: ${e.id} (${n})`,r),xs({id:`layout-script:${e.id}`,label:e.id,retry:async()=>{document.getElementById(e.id)?.remove(),await _r(n,{id:e.id},{label:`layout-script:${e.id}`}),this.failedLayoutScripts.delete(e.id)}})}}getFailedLayoutScripts(){return Array.from(this.failedLayoutScripts)}isAllowedScriptSrc(e){return Io(e)}static normalizeScriptSrcForOriginCheck(e){return by(e)}extractScriptHost(e){return vy(e)}getTrustedScriptHosts(){return bs()}evaluateScriptCondition(e,n){try{if(e.startsWith("{{")&&e.endsWith("}}")){const r=e.slice(2,-2).trim();return!!nf(r,n)}return!!e}catch(r){return U.warn(`Failed to evaluate script condition: ${e}`,r),!1}}showInitError(e){if(ec()){U.warn("Init failed while document is unloading — skipping error screen",e);return}const n=kb(e);lh.renderFromError("app",n,"초기화 실패",this.config.debug,{templateId:this.config.templateId,locale:this.config.locale},void 0,e)}showTransitionOverlay(e,n){const r=typeof e=="boolean"?{enabled:e,style:"opaque",target:void 0,skeleton:void 0,spinner:void 0}:{enabled:e.enabled,style:e.style||"opaque",target:e.target,skeleton:e.skeleton,spinner:e.spinner,fallback_target:e.fallback_target};if(!r.enabled)return;if(this.hideTransitionOverlay(),r.style==="skeleton"&&r.skeleton?.component&&r.target&&n){this.renderSkeletonOverlay(r.target,r.skeleton,n,r.fallback_target);return}if(r.style==="spinner"&&r.target){this.renderSpinnerOverlay(r.target,r.spinner,r.fallback_target);return}const i=document.documentElement.classList.contains("dark");let l,c="";switch(r.style){case"blur":l=i?"rgba(17,24,39,0.3)":"rgba(255,255,255,0.3)",c="backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);";break;case"fade":l=i?"rgba(17,24,39,0.8)":"rgba(255,255,255,0.8)";break;case"skeleton":l=i?"rgb(17,24,39)":"rgb(249,250,251)";break;case"opaque":default:l=i?"rgb(17,24,39)":"rgb(249,250,251)";break}if(r.target){const d=`#${CSS.escape(r.target)}`,f=document.createElement("style");f.id="g7-transition-overlay",f.textContent=`${d}{position:relative;z-index:0;}${d}::after{content:'';position:absolute;inset:0;background:${l};${c}z-index:2147483647;pointer-events:none;}`,document.head.appendChild(f),this.transitionOverlayEl=f}else{const d=document.createElement("div");d.id="g7-transition-overlay",d.setAttribute("aria-hidden","true"),d.style.position="fixed",d.style.inset="0",d.style.zIndex="9999",d.style.pointerEvents="none",d.style.background=l;for(const f of c.split(";")){const h=f.indexOf(":");h!==-1&&d.style.setProperty(f.slice(0,h).trim(),f.slice(h+1).trim())}document.body.appendChild(d),this.transitionOverlayEl=d}}hideTransitionOverlay(){this.transitionOverlayEl&&(this.transitionOverlayEl.remove(),this.transitionOverlayEl=null),this.hideSkeletonOverlay()}renderSkeletonOverlay(e,n,r,i){const c=Ar.getInstance().getComponent(n.component);if(!c){U.log(`Skeleton component "${n.component}" not found in registry, falling back to opaque overlay`),this.showTransitionOverlay({enabled:!0,style:"opaque",target:e});return}let d=document.getElementById(e),f="target";if(!d&&i&&(d=document.getElementById(i),f="fallback"),d||(d=document.getElementById("app"),f="fullpage"),!d){U.log(`Skeleton overlay: no target found (target="#${e}", fallback="${i||"none"}"), falling back to opaque overlay`),this.showTransitionOverlay({enabled:!0,style:"opaque",target:e});return}this.hideSkeletonOverlay();const m=document.documentElement.classList.contains("dark")?"rgb(17,24,39)":"rgb(249,250,251)",y=f==="fullpage"?"app":f==="fallback"?i:e,v=`#${CSS.escape(y)}`,S=document.createElement("style");S.id="g7-skeleton-overlay-style",S.textContent=`${v}{position:relative;z-index:0;}${v}::after{content:'';position:absolute;inset:0;background:${m};z-index:2147483646;pointer-events:none;}`,document.head.appendChild(S),this.transitionOverlayEl=S;const _=document.createElement("div");if(_.id="g7-skeleton-overlay",_.setAttribute("role","status"),_.setAttribute("aria-busy","true"),_.setAttribute("aria-label","Loading..."),f==="fullpage")_.style.cssText=["position:fixed","inset:0","z-index:20","overflow:hidden","pointer-events:none",`background:${m}`].join(";")+";";else{const k=d.getBoundingClientRect(),L=window.scrollX||document.documentElement.scrollLeft,B=window.scrollY||document.documentElement.scrollTop;_.style.cssText=["position:absolute",`top:${k.top+B}px`,`left:${k.left+L}px`,`width:${k.width}px`,`height:${k.height}px`,"z-index:20","overflow:hidden","pointer-events:none",`background:${m}`].join(";")+";"}document.body.appendChild(_),this.skeletonOverlayContainer=_;const x=r.components||[];let A;if(f==="fullpage")A=x;else{const k=f==="fallback"?i:e;A=this.findComponentChildrenById(x,k)}const D=Rd.createRoot(_);this.skeletonOverlayRoot=D,Ia.flushSync(()=>{D.render(Xe.createElement(c,{components:A,options:{animation:n.animation||"pulse",iteration_count:n.iteration_count||5}}))});const O=f==="fullpage"?"fullpage (#app)":f==="fallback"?`fallback (#${i})`:`target (#${e})`;U.log(`Skeleton overlay rendered [${O}] with "${n.component}" (${A.length} components)`)}findComponentChildrenById(e,n){const r=i=>{for(const l of i){if(l.id===n)return l.children||[];if(l.children&&Array.isArray(l.children)){const c=r(l.children);if(c!==null)return c}}return null};return r(e)||e}renderSpinnerOverlay(e,n,r){let i=document.getElementById(e),l="target";if(!i&&r&&(i=document.getElementById(r),l="fallback"),i||(i=document.getElementById("app"),l="fullpage"),!i){U.log(`Spinner overlay: no target found (target="#${e}", fallback="${r||"none"}"), falling back to opaque overlay`),this.showTransitionOverlay({enabled:!0,style:"opaque",target:e});return}this.hideSkeletonOverlay();const c=l==="fullpage"?"app":l==="fallback"?r:e,d=`#${CSS.escape(c)}`,f=document.createElement("style");f.id="g7-skeleton-overlay-style",f.textContent=[`${d}{position:relative;}`,"@keyframes g7-spin{to{transform:rotate(360deg)}}"].join(""),document.head.appendChild(f),this.transitionOverlayEl=f;const h=n?.text||window.G7Core?.t?.("nav.loading")||"";this._spinnerState={target:e,fallbackTarget:r,spinnerConfig:n,resolvedText:h},this._mountSpinnerInTarget(i);const m=l==="fullpage"?"fullpage (#app)":l==="fallback"?`fallback (#${r})`:`target (#${e})`,y=n?.component||"default spinner";U.log(`Spinner overlay rendered [${m}] with "${y}"`)}_mountSpinnerInTarget(e){if(!this._spinnerState)return;const{spinnerConfig:n,resolvedText:r}=this._spinnerState;if(this.skeletonOverlayRoot){try{this.skeletonOverlayRoot.unmount()}catch{}this.skeletonOverlayRoot=null}if(this.skeletonOverlayContainer){try{this.skeletonOverlayContainer.remove()}catch{}this.skeletonOverlayContainer=null}const i=document.createElement("div");if(i.id="g7-skeleton-overlay",i.setAttribute("role","status"),i.setAttribute("aria-busy","true"),e.appendChild(i),this.skeletonOverlayContainer=i,n?.component){const c=Ar.getInstance().getComponent(n.component);if(c){const d=Rd.createRoot(i);this.skeletonOverlayRoot=d,Ia.flushSync(()=>{d.render(Xe.createElement(c,{options:{text:r}}))});return}U.log(`Spinner component "${n.component}" not found in registry, using default spinner`)}i.innerHTML='<div style="position:absolute;inset:0;z-index:2147483647;overflow:hidden;background:var(--g7-overlay-bg, rgb(249,250,251));display:flex;align-items:center;justify-content:center;"><div style="width:32px;height:32px;border:3px solid var(--g7-spinner-color, #9ca3af);border-top-color:transparent;border-radius:50%;animation:g7-spin 0.8s linear infinite;"></div></div>'}reattachSpinnerOverlay(){if(!this._spinnerState)return;const{target:e,fallbackTarget:n}=this._spinnerState;let r=document.getElementById(e);!r&&n&&(r=document.getElementById(n)),r||(r=document.getElementById("app")),r&&(this._mountSpinnerInTarget(r),U.log("Spinner overlay reattached to new DOM target"))}hideSkeletonOverlay(){if(this.skeletonOverlayRoot){try{this.skeletonOverlayRoot.unmount()}catch{}this.skeletonOverlayRoot=null}if(this.skeletonOverlayContainer){try{this.skeletonOverlayContainer.parentNode&&this.skeletonOverlayContainer.remove()}catch{}this.skeletonOverlayContainer=null}const e=document.getElementById("g7-skeleton-overlay-style");e&&e.remove(),this._spinnerState=null}showRouteError(e){if(e instanceof Dr&&e.details?.status===401){const r=this.config.templateId||"",i=window.location.pathname,l=r.includes("admin")||i.startsWith("/admin")?"admin":"user",c=i+window.location.search,d=!!Yn().getToken()||e.details?.hadToken===!0,f=Xn.getInstance().getLoginRedirectUrl(l,c,d?"session_expired":void 0);window.location.href=f;return}const n=kb(e);lh.renderFromError("app",n,"페이지 로딩 실패",this.config.debug,{templateId:this.config.templateId,locale:this.config.locale},void 0,e)}async handleServerError(){const e=window.G7Error;if(!e)return!1;U.warn("Server error detected:",e);try{return this.errorPageHandler&&(e.data&&(this.globalState.errorData=e.data),this.errorPageHandler.updateGlobalState(this.globalState),this.errorPageHandler.updateLocale(this.config.locale),await this.errorPageHandler.renderError(e.code,"app"))?(U.log(`${e.code} error page rendered successfully`),!0):(U.log(`Falling back to ErrorDisplay for ${e.code}`),this.showInitError(new Error(`Service unavailable (${e.code})`)),!0)}catch(n){return U.error(`Failed to render ${e.code} page:`,n),this.showInitError(new Error(`Service unavailable (${e.code})`)),!0}}async handleRouteNotFound(e){U.warn("Route not found:",e);try{if(this.errorPageHandler&&(this.errorPageHandler.updateGlobalState(this.globalState),this.errorPageHandler.updateLocale(this.config.locale),await this.errorPageHandler.renderError(404,"app"))){U.log("404 error page rendered successfully");return}U.log("Falling back to ErrorDisplay for 404"),this.showRouteError(new Error(`Page not found: ${e}`))}catch(n){U.error("Failed to render 404 page:",n),this.showRouteError(new Error(`Page not found: ${e}`))}}getRouter(){return this.router}getConfig(){return this.config}getLayoutLoader(){return this.layoutLoader}async reloadExtensionState(){U.log("reloadExtensionState: start");let e;try{const n=await fetch(Br(`/api/templates/${this.config.templateId}/config`,"json",null,`_=${Date.now()}`));if(n.ok){const r=await n.json();r?.success&&r?.data?.cache_version!==void 0&&(e=r.data.cache_version)}}catch(n){U.warn("reloadExtensionState: failed to fetch config.json",n)}e!==void 0&&e!==this.extensionCacheVersion&&(U.log(`reloadExtensionState: cache version ${this.extensionCacheVersion} -> ${e}`),this.extensionCacheVersion=e,this.saveCacheVersionToStorage(e));try{this.router&&(await this.router.loadRoutes(this.extensionCacheVersion),U.log("reloadExtensionState: routes reloaded"))}catch(n){U.error("reloadExtensionState: routes reload failed",n)}try{this.layoutLoader&&(this.extensionCacheVersion>0&&this.layoutLoader.setCacheVersion(this.extensionCacheVersion),this.layoutLoader.clear(),U.log("reloadExtensionState: layout cache cleared"))}catch(n){U.error("reloadExtensionState: layout cache clear failed",n)}try{const{TranslationEngine:n}=await Promise.resolve().then(()=>Jg),r=n.getInstance();this.extensionCacheVersion>0&&r.setCacheVersion(this.extensionCacheVersion);const i=this.config.locale||"ko",l="en";await r.loadTranslations(this.config.templateId,i,"/api",!0),i!==l&&await r.loadTranslations(this.config.templateId,l,"/api",!0),U.log("reloadExtensionState: translations reloaded")}catch(n){U.error("reloadExtensionState: translations reload failed",n)}try{const n=await fetch(`/api/locales/active?_=${Date.now()}`);if(n.ok){const i=(await n.json())?.data?.locales;if(Array.isArray(i)&&i.length>0){const l=this.globalState.appConfig??{};this.setGlobalState({appConfig:{...l,supportedLocales:i}}),U.log("reloadExtensionState: supportedLocales refreshed",i)}}}catch(n){U.warn("reloadExtensionState: supportedLocales refresh failed",n)}U.log("reloadExtensionState: done")}getActionDispatcher(){return la().actionDispatcher}async changeLocale(e){try{if(U.log("Changing locale to:",e),this.config.locale===e){U.log("Locale is already",e);return}this.config.locale=e,this.saveLocaleToStorage(e),await this.saveLocaleToDatabase(e),this.layoutLoader&&(this.layoutLoader.clear(),U.log("Layout cache cleared")),this.errorPageHandler&&(this.errorPageHandler.updateLocale(e),U.log("ErrorPageHandler locale updated")),Yc(),await el({templateId:this.config.templateId,templateType:this.config.templateType,locale:e,debug:this.config.debug,cacheVersion:this.extensionCacheVersion}),U.log("Template Engine re-initialized with new locale");const{getActionDispatcher:n}=await Promise.resolve().then(()=>Wr),r=n();r&&(r.setDefaultContext({navigate:i=>this.router?.navigate(i)}),r.setGlobalStateUpdater((i,l)=>this.setGlobalState(i,l)),U.log("Navigate function and setGlobalState re-injected to ActionDispatcher")),this.reinitializeModuleHandlers(),U.log("Module handlers re-initialized"),this.reinitializeTemplateHandlers(),U.log("Template handlers re-initialized"),this.reinitializePluginHandlers(),U.log("Plugin handlers re-initialized"),this.router&&this.router.navigateToCurrentPath(),U.log("Locale changed successfully to",e)}catch(n){throw U.error("Failed to change locale:",n),n}}loadLocaleFromStorage(){try{return localStorage.getItem($r.LOCALE_STORAGE_KEY)}catch(e){return U.warn("Failed to load locale from storage:",e),null}}saveLocaleToStorage(e){try{localStorage.setItem($r.LOCALE_STORAGE_KEY,e)}catch(n){U.warn("Failed to save locale to storage:",n)}}async saveLocaleToDatabase(e){const n=localStorage.getItem("auth_token");if(!n){U.log("No auth token, skipping DB locale save");return}let r,i;if(this.config.localeApi)r=this.config.localeApi.endpoint,i=this.config.localeApi.method;else{const l=this.config.templateType==="admin";r=l?"/api/admin/users/me/language":"/api/user/profile/update-language",i=l?"PATCH":"POST"}try{const l=this.getXsrfToken(),c=await fetch(r,{method:i,headers:{"Content-Type":"application/json",Accept:"application/json",...l&&{"X-XSRF-TOKEN":l},Authorization:`Bearer ${n}`},credentials:"include",body:JSON.stringify({language:e})});c.ok?U.log("Locale saved to DB:",e):U.warn("Failed to save locale to DB (UI will still change):",c.statusText)}catch(l){U.warn("Failed to call locale API (UI will still change):",l)}}getXsrfToken(){if(typeof document>"u")return null;const n=`; ${document.cookie}`.split("; XSRF-TOKEN=");return n.length===2?decodeURIComponent(n.pop()?.split(";").shift()||""):null}loadCacheVersionFromStorage(){try{const e=localStorage.getItem($r.CACHE_VERSION_STORAGE_KEY);return e?parseInt(e,10):null}catch(e){return U.warn("Failed to load cache version from storage:",e),null}}saveCacheVersionToStorage(e){try{localStorage.setItem($r.CACHE_VERSION_STORAGE_KEY,String(e))}catch(n){U.warn("Failed to save cache version to storage:",n)}}reinitializeModuleHandlers(){if(typeof window>"u")return;const e="__",n=window;Object.keys(n).forEach(r=>{if(r.startsWith(e)&&typeof n[r]?.initModule=="function")try{n[r].initModule(),U.log(`Module handler re-initialized: ${r}`)}catch(i){U.warn(`Failed to re-initialize module handlers for ${r}:`,i)}})}reinitializeTemplateHandlers(){if(typeof window>"u")return;const e=window.G7TemplateHandlers;if(!e){U.warn("Template handlers not found on window.G7TemplateHandlers");return}const n=this.getActionDispatcher();if(!n){U.warn("ActionDispatcher not available for template handler registration");return}Object.entries(e).forEach(([r,i])=>{n.registerHandler(r,i)}),U.log(`${Object.keys(e).length} template handler(s) re-registered:`,Object.keys(e))}reinitializePluginHandlers(){if(typeof window>"u")return;const e="__",n=window;Object.keys(n).forEach(r=>{if(r.startsWith(e)&&typeof n[r]?.initPlugin=="function")try{n[r].initPlugin(),U.log(`Plugin handler re-initialized: ${r}`)}catch(i){U.warn(`Failed to re-initialize plugin handlers for ${r}:`,i)}})}getLocale(){return this.config.locale}getErrorPageHandler(){return this.errorPageHandler}getGlobalState(){return{...this.globalState}}setGlobalState(e,n){const r={...this.globalState};typeof e=="function"?this.globalState=e(this.globalState):this.globalState={...this.globalState,...e},U.log("Global state updated:",this.globalState),window.G7Core?.devTools?.captureStateSnapshot?.({source:"setGlobalState",prev:r,next:this.globalState}),this.globalStateListeners.forEach(l=>{l(this.globalState)}),n?.render!==!1&&Promise.resolve().then(()=>Wr).then(({updateTemplateData:l,getState:c})=>{const d=c();d.reactRoot&&d.currentLayoutJson&&l({_global:{...this.globalState},_local:this.globalState._local||{}})})}onGlobalStateChange(e){this.globalStateListeners.add(e)}offGlobalStateChange(e){this.globalStateListeners.delete(e)}async refetchDataSource(e,n){let r=this.currentDataSources.find(i=>i.id===e);if(!r)for(const[,i]of this.modalDataSources){const l=i.find(c=>c.id===e);if(l){r=l;break}}if(!r){U.warn(`Data source not found: ${e}`);return}U.log(`Refetching data source: ${e}`,n?.sync?"(sync mode)":"",n?.globalStateOverride?"(with global override)":"",n?.localStateOverride?"(with local override)":""),Gr.setPending(!0);try{const i=new Or;this.currentGlobalHeaders.length>0&&i.setGlobalHeaders(this.currentGlobalHeaders);const l=la(),c=l.currentDataContext?._global||{},d=n?.globalStateOverride?{...c,...n.globalStateOverride}:c,f=l.currentDataContext?._local||{},h=n?.localStateOverride?{...f,...n.localStateOverride}:f,y=(await i.fetchDataSourcesWithResults([r],this.currentRouteParams,this.currentQueryParams,d,h,{ignoreAutoFetch:!0}))[0];if(y.state==="success"&&y.data!==void 0){this.currentFetchedData[e]=y.data;const v={};this.processInitOptions([r],{[e]:y.data},v);const S=la();if(S.bindingEngine){const x=[e];r.initGlobal&&x.push("_global"),r.initLocal&&x.push("_local"),S.bindingEngine.invalidateCacheByKeys(x)}const _={[e]:y.data};return Object.keys(v).length>0&&(_._localInit=v),r.initGlobal&&(_._global={...this.globalState}),Ds(_,n?.sync?{sync:!0}:void 0),U.log(`Data source refetched successfully: ${e}`),y.data}else if(y.state==="error"){U.error(`Failed to refetch data source: ${e}`,y.error);return}}catch(i){U.error(`Error refetching data source: ${e}`,i);return}finally{Gr.setPending(!1)}}registerModalDataSources(e,n){this.modalDataSources.set(e,n),U.log(`Modal data sources registered: ${e} (${n.length} sources)`)}unregisterModalDataSources(e){this.modalDataSources.delete(e),U.log(`Modal data sources unregistered: ${e}`)}getDataSource(e){return this.currentFetchedData[e]}setDataSource(e,n,r){if(!e){U.warn("setDataSource: dataSourceId is required");return}const{merge:i=!1,sync:l=!1}=r||{};i&&this.currentFetchedData[e]?this.currentFetchedData[e]={...this.currentFetchedData[e],...n}:this.currentFetchedData[e]=n,Promise.resolve().then(()=>Wr).then(({updateTemplateData:c})=>{c({[e]:this.currentFetchedData[e]},l?{sync:!0}:void 0)}),U.log(`setDataSource: Updated ${e}`,i?"(merged)":"(replaced)")}updateDataSourceItem(e,n,r,i,l){const{idField:c="id",merge:d=!0,skipRender:f=!1}=l||{},h=this.currentFetchedData[e];if(!h)return U.warn(`updateDataSourceItem: DataSource '${e}' not found`),!1;const m=this.parseItemPath(n);let y=h;for(const _ of m)if(y=y?.[_],y===void 0)return U.warn(`updateDataSourceItem: Path '${n}' not found in dataSource`),!1;if(!Array.isArray(y))return U.warn(`updateDataSourceItem: Target at '${n}' is not an array`),!1;const v=y.findIndex(_=>String(_[c])===String(r));if(v===-1)return U.warn(`updateDataSourceItem: Item with ${c}='${r}' not found`),!1;d?y[v]=this.deepMerge(y[v],i):y[v]={...y[v],...i};const S=window.G7Core?.devTools;return S?.isEnabled?.()&&S.trackDataSourceUpdate?.({dataSourceId:e,updateType:"partial",itemPath:n,itemId:r,updates:i,timestamp:Date.now()}),f||Promise.resolve().then(()=>Wr).then(({updateTemplateData:_})=>{_({[e]:this.currentFetchedData[e]},{sync:!1})}),U.log(`updateDataSourceItem: Updated ${e}.${n}[${c}=${r}]`),!0}parseItemPath(e){const n=[],r=/([^\.\[\]]+)|\[(\d+)\]/g;let i;for(;(i=r.exec(e))!==null;)i[1]!==void 0?n.push(i[1]):i[2]!==void 0&&n.push(parseInt(i[2],10));return n}deepMerge(e,n){if(n==null)return e;if(typeof n!="object"||Array.isArray(n))return n;const r={...e};for(const i of Object.keys(n))typeof n[i]=="object"&&n[i]!==null&&!Array.isArray(n[i])?r[i]=this.deepMerge(r[i]||{},n[i]):r[i]=n[i];return r}setValueAtPath(e,n,r,i="deep"){const l=n.split(".");let c=e;for(let h=0;h<l.length-1;h++){const m=l[h];(c[m]===void 0||c[m]===null||typeof c[m]!="object")&&(c[m]={}),c=c[m]}const d=l[l.length-1],f=c[d];i==="replace"||f===void 0?c[d]=r:i==="shallow"?typeof f=="object"&&typeof r=="object"&&!Array.isArray(r)?c[d]={...f,...r}:c[d]=r:typeof f=="object"&&typeof r=="object"&&!Array.isArray(r)?c[d]=this.deepMerge(f,r):c[d]=r}flattenNestedObjectToMappings(e,n=""){const r=[];for(const[i,l]of Object.entries(e)){if(i==="_merge")continue;const c=n?`${n}.${i}`:i;typeof l=="string"?r.push({targetPath:c,sourcePath:l}):typeof l=="object"&&l!==null&&!Array.isArray(l)&&r.push(...this.flattenNestedObjectToMappings(l,c))}return r}async updateQueryParams(e,n){U.log("updateQueryParams:",e);const r=new URL(e,window.location.origin),i=new URLSearchParams(r.search);window.history.replaceState(null,"",e),U.log("URL updated via replaceState"),this.currentQueryParams=i,U.log("currentQueryParams updated:",Object.fromEntries(i.entries()));const l=new Or,c=la().currentDataContext?._global||this.globalState||{},d={route:this.currentRouteParams||{},query:Mb(this.currentQueryParams),_global:c},f=Array.isArray(this.currentRawDataSources)&&this.currentRawDataSources.length>0?l.filterByCondition(this.currentRawDataSources,d):this.currentDataSources;this.currentDataSources=f;const h=f.filter(x=>x.auto_fetch!==!1&&x.type!=="websocket");if(h.length===0){U.log("No auto_fetch data sources to refetch");return}U.log(`Refetching ${h.length} auto_fetch data sources`),Gr.setPending(!0);const m=la().currentLayoutJson,y=m?.transition_overlay,v=Array.isArray(y?.wait_for)?y.wait_for:[],S=h.some(x=>(x.loading_strategy||"progressive")==="blocking"),_=v.length>0&&h.some(x=>v.includes(x.id)&&x.type!=="websocket"&&(x.loading_strategy||"progressive")!=="background");if((S||_)&&y&&typeof y=="object"){const x=n?.transitionOverlayTarget||y.target;y.enabled&&y.style==="skeleton"&&y.skeleton?.component&&x?this.renderSkeletonOverlay(x,y.skeleton,m,y.fallback_target):y.enabled&&y.style==="spinner"&&x&&this.renderSpinnerOverlay(x,y.spinner,y.fallback_target)}try{const x=new Or;this.currentGlobalHeaders.length>0&&x.setGlobalHeaders(this.currentGlobalHeaders);const A=la(),D=A.currentDataContext?._global||{},O=await x.fetchDataSourcesWithResults(h,this.currentRouteParams,this.currentQueryParams,D,void 0,{ignoreAutoFetch:!1}),k={},L={},B=new Map(h.map(q=>[q.id,q]));for(const q of O){const z=B.get(q.id);if(!z){U.warn(`Refetch result id not found in autoFetchDataSources: ${q.id}`);continue}const W=q.id;q.state==="success"&&q.data!==void 0?(this.currentFetchedData[W]=q.data,k[W]=q.data,this.processInitOptions([z],{[W]:q.data},L),U.log(`Data source refetched: ${W}`)):q.state==="error"&&U.error(`Failed to refetch data source: ${W}`,q.error)}if(A.bindingEngine){const q=Object.keys(k);q.push("query"),A.bindingEngine.invalidateCacheByKeys(q)}if(Object.keys(L).length>0&&(k._localInit=L),Object.keys(k).length>0){if(k.query=Mb(this.currentQueryParams),A.currentLayoutJson?.computed&&Object.keys(A.currentLayoutJson.computed).length>0){const q={...A.currentDataContext,...k,query:k.query},z=this.calculateComputed(A.currentLayoutJson.computed,q);Object.keys(z).length>0&&(k._computed=z,this.globalState._computed=z,U.log("Computed values recalculated in updateQueryParams:",Object.keys(z)))}Ds(k,{sync:!0}),U.log("Template data updated with new query params")}}catch(x){U.error("Error in updateQueryParams:",x)}finally{Gr.setPending(!1),this.hideTransitionOverlay()}}calculateComputed(e,n){const r={},i=new $n;for(const[l,c]of Object.entries(e))try{let d;if(this.isComputedSwitchDefinition(c))d=i.resolveSwitch(c,n,{skipCache:!0});else if(typeof c=="string")if(c.startsWith("{{")&&c.endsWith("}}")){const f=c.slice(2,-2).trim();d=this.evaluateComputedExpression(f,n)}else d=c;r[l]=d,U.log(`Computed ${l}:`,d)}catch(d){U.warn(`Failed to calculate computed value: ${l}`,d),r[l]=void 0}return r}isComputedSwitchDefinition(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&"$switch"in e&&"$cases"in e}evaluateComputedExpression(e,n){try{return nf(e,n)}catch(r){U.warn(`Expression evaluation failed: ${e}`,r);return}}async executeInitActions(e,n={}){const{getActionDispatcher:r}=await Promise.resolve().then(()=>Wr),i=r();if(!i){U.warn("ActionDispatcher not available for init_actions");return}U.log("Executing init_actions:",e.map(d=>d.handler)),U.log("Init actions dataContext:",n),U.log("Init actions dataContext._global:",n._global);const l=e.map(d=>d.handler).filter(d=>d.includes("."));l.length>0&&await this.waitForHandlers(i,l);let c={...n};for(const d of e)try{const f={type:"click",handler:d.handler,target:d.target,params:d.params,resultTo:d.resultTo,onSuccess:d.onSuccess,onError:d.onError,if:d.if,conditions:d.conditions,auth_mode:d.auth_mode,auth_required:d.auth_required},h=i.createHandler(f,c),m=new Event("init");await h(m),U.log(`Init action executed: ${d.handler}`);const y=this.globalState;c={...c,_global:{...y},_local:y._local||c._local||{}},U.log(`Data context refreshed after ${d.handler}:`,{cartKey:c._global?.cartKey})}catch(f){U.error(`Failed to execute init action: ${d.handler}`,f)}}async waitForHandlers(e,n,r=5e3){const i=Date.now(),l=50,c=()=>n.every(f=>e.customHandlers?.has(f));if(c()){U.log("All module handlers already registered");return}const d=dh().getFailedJsAssets();if(d.length>0){const f=d.some(y=>y==="module"||y==="plugin"),h=n.filter(y=>!e.customHandlers?.has(y)),m=h.length>0&&h.every(y=>d.some(v=>y.startsWith(`${v}.`)));if(f||m){U.warn("Extension asset load failed — not waiting for handlers that will never register:",{pending:h,failedAssets:d});return}}return U.log("Waiting for module handlers:",n),new Promise(f=>{const h=()=>{if(c()){U.log("All module handlers now registered"),f();return}if(Date.now()-i>=r){const m=n.filter(y=>!e.customHandlers?.has(y));U.warn("Timeout waiting for handlers:",m),f();return}setTimeout(h,l)};h()})}};M($r,"LOCALE_STORAGE_KEY","g7_locale"),M($r,"CACHE_VERSION_STORAGE_KEY","g7_cache_version");let Yo=$r;function hh(s){const e=new Yo(s);return s.websocket&&(qc.configure(s.websocket),U.log("WebSocket 설정 완료")),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{e.init(),window.__templateApp=e}):(e.init(),window.__templateApp=e),e}typeof window<"u"&&(window.G7Core=window.G7Core||{},window.G7Core.initTemplateApp=hh,window.G7Core.dataSource={refetch:async(s,e)=>{const n=window.__templateApp;if(!n){U.warn("TemplateApp not initialized (G7Core.dataSource.refetch)");return}return n.refetchDataSource(s,e)},get:s=>{const e=window.__templateApp;if(!e){U.warn("TemplateApp not initialized (G7Core.dataSource.get)");return}return e.getDataSource(s)}});function gT(s={}){const{checked:e,value:n,name:r,type:i="checkbox"}=s,c=n!==void 0?n:i==="checkbox"||i==="radio"?e??!1:String(e??""),d={checked:e??!1,value:c,name:r??"",type:i};return{target:d,currentTarget:d,preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:new Event("change"),bubbles:!0,cancelable:!0,defaultPrevented:!1,eventPhase:Event.AT_TARGET,isTrusted:!1,timeStamp:Date.now(),type:"change",isDefaultPrevented:()=>!1,isPropagationStopped:()=>!1,persist:()=>{}}}function mT(s={}){const{button:e=0,clientX:n=0,clientY:r=0}=s;return{button:e,clientX:n,clientY:r,preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:new MouseEvent("click"),bubbles:!0,cancelable:!0,defaultPrevented:!1,eventPhase:Event.AT_TARGET,isTrusted:!1,timeStamp:Date.now(),type:"click",isDefaultPrevented:()=>!1,isPropagationStopped:()=>!1,persist:()=>{},target:document.createElement("div"),currentTarget:document.createElement("div")}}function yT(){return{preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:new Event("submit"),bubbles:!0,cancelable:!0,defaultPrevented:!1,eventPhase:Event.AT_TARGET,isTrusted:!1,timeStamp:Date.now(),type:"submit",isDefaultPrevented:()=>!1,isPropagationStopped:()=>!1,persist:()=>{},target:document.createElement("form"),currentTarget:document.createElement("form")}}function bT(s,e="keydown"){return{key:s,code:s.length===1?`Key${s.toUpperCase()}`:s,preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:new KeyboardEvent(e,{key:s}),bubbles:!0,cancelable:!0,defaultPrevented:!1,eventPhase:Event.AT_TARGET,isTrusted:!1,timeStamp:Date.now(),type:e,isDefaultPrevented:()=>!1,isPropagationStopped:()=>!1,persist:()=>{},target:document.createElement("div"),currentTarget:document.createElement("div"),altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,repeat:!1}}const vT={justify:/^justify-(start|end|center|between|around|evenly)$/,items:/^items-(start|end|center|baseline|stretch)$/,content:/^content-(start|end|center|between|around|evenly|stretch)$/,self:/^self-(auto|start|end|center|stretch|baseline)$/,flex:/^flex-(row|row-reverse|col|col-reverse|wrap|wrap-reverse|nowrap|1|auto|initial|none)$/,grow:/^(grow|grow-0)$/,shrink:/^(shrink|shrink-0)$/,basis:/^basis-/,order:/^(order-|-)order-/,gap:/^gap(-x|-y)?-/,gridCols:/^grid-cols-/,gridRows:/^grid-rows-/,colSpan:/^col-(span-|start-|end-)/,rowSpan:/^row-(span-|start-|end-)/,display:/^(block|inline-block|inline|flex|inline-flex|table|inline-table|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row-group|table-row|flow-root|grid|inline-grid|contents|list-item|hidden)$/,position:/^(static|fixed|absolute|relative|sticky)$/,inset:/^(inset|top|right|bottom|left)-/,zIndex:/^z-/,width:/^w-/,minWidth:/^min-w-/,maxWidth:/^max-w-/,height:/^h-/,minHeight:/^min-h-/,maxHeight:/^max-h-/,padding:/^p[xytblr]?-/,margin:/^-?m[xytblr]?-/,space:/^space-(x|y)-/,fontSize:/^text-(xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)$/,fontWeight:/^font-(thin|extralight|light|normal|medium|semibold|bold|extrabold|black)$/,fontStyle:/^(italic|not-italic)$/,fontFamily:/^font-(sans|serif|mono)/,textAlign:/^text-(left|center|right|justify|start|end)$/,textColor:/^text-(inherit|current|transparent|black|white|slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-/,textDecoration:/^(underline|overline|line-through|no-underline)$/,textTransform:/^(uppercase|lowercase|capitalize|normal-case)$/,lineHeight:/^leading-/,letterSpacing:/^tracking-/,textOverflow:/^(truncate|text-ellipsis|text-clip)$/,whitespace:/^whitespace-/,wordBreak:/^break-/,bgColor:/^bg-(inherit|current|transparent|black|white|slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-/,bgGradient:/^bg-gradient-/,bgSize:/^bg-(auto|cover|contain)$/,bgPosition:/^bg-(bottom|center|left|left-bottom|left-top|right|right-bottom|right-top|top)$/,bgRepeat:/^bg-(repeat|no-repeat|repeat-x|repeat-y|repeat-round|repeat-space)$/,bgAttachment:/^bg-(fixed|local|scroll)$/,bgClip:/^bg-clip-/,bgOrigin:/^bg-origin-/,borderWidth:/^border(-[xytblr])?(-0|-2|-4|-8)?$/,borderColor:/^border-(inherit|current|transparent|black|white|slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-/,borderStyle:/^border-(solid|dashed|dotted|double|hidden|none)$/,borderRadius:/^rounded(-[tblrse]{1,2})?(-none|-sm|-md|-lg|-xl|-2xl|-3xl|-full)?$/,ringWidth:/^ring(-0|-1|-2|-4|-8|-inset)?$/,ringColor:/^ring-(inherit|current|transparent|black|white|slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-/,ringOffset:/^ring-offset-/,shadow:/^shadow(-sm|-md|-lg|-xl|-2xl|-inner|-none)?$/,opacity:/^opacity-/,mixBlend:/^mix-blend-/,bgBlend:/^bg-blend-/,blur:/^blur(-none|-sm|-md|-lg|-xl|-2xl|-3xl)?$/,brightness:/^brightness-/,contrast:/^contrast-/,grayscale:/^grayscale(-0)?$/,hueRotate:/^-?hue-rotate-/,invert:/^invert(-0)?$/,saturate:/^saturate-/,sepia:/^sepia(-0)?$/,backdropBlur:/^backdrop-blur-/,backdropBrightness:/^backdrop-brightness-/,backdropContrast:/^backdrop-contrast-/,backdropGrayscale:/^backdrop-grayscale-/,backdropHueRotate:/^backdrop-hue-rotate-/,backdropInvert:/^backdrop-invert-/,backdropOpacity:/^backdrop-opacity-/,backdropSaturate:/^backdrop-saturate-/,backdropSepia:/^backdrop-sepia-/,scale:/^scale(-x|-y)?-/,rotate:/^-?rotate-/,translate:/^-?translate-[xy]-/,skew:/^-?skew-[xy]-/,transformOrigin:/^origin-/,transition:/^transition(-none|-all|-colors|-opacity|-shadow|-transform)?$/,duration:/^duration-/,ease:/^ease-(linear|in|out|in-out)$/,delay:/^delay-/,animate:/^animate-/,cursor:/^cursor-/,userSelect:/^select-/,pointerEvents:/^pointer-events-/,resize:/^resize(-none|-x|-y)?$/,scrollBehavior:/^scroll-(auto|smooth)$/,touchAction:/^touch-/,overflow:/^overflow(-x|-y)?-(auto|hidden|clip|visible|scroll)$/,overscroll:/^overscroll(-x|-y)?-(auto|contain|none)$/,visibility:/^(visible|invisible|collapse)$/,aspectRatio:/^aspect-/,columns:/^columns-/,breakAfter:/^break-after-/,breakBefore:/^break-before-/,breakInside:/^break-inside-/,boxDecorationBreak:/^box-decoration-/,boxSizing:/^box-(border|content)$/,float:/^float-(right|left|none)$/,clear:/^clear-(left|right|both|none)$/,isolation:/^(isolate|isolation-auto)$/,objectFit:/^object-(contain|cover|fill|none|scale-down)$/,objectPosition:/^object-/};function Nb(s){const e=s.replace(/^(dark:|hover:|focus:|active:|disabled:|group-hover:|sm:|md:|lg:|xl:|2xl:)+/,"");for(const[n,r]of Object.entries(vT))if(r.test(e))return n;return null}function Ib(s){const e=s.match(/^((dark:|hover:|focus:|active:|disabled:|group-hover:|sm:|md:|lg:|xl:|2xl:)+)/);return e?e[1]:""}function ST(s,e){if(!e||e.trim()==="")return s;if(!s||s.trim()==="")return e;const n=s.split(/\s+/).filter(Boolean),r=e.split(/\s+/).filter(Boolean),i=new Map;for(const c of r){const d=Nb(c);if(d){const f=Ib(c),h=`${d}:${f}`;i.set(h,c)}}return[...n.filter(c=>{const d=Nb(c);if(!d)return!0;const f=Ib(c),h=`${d}:${f}`;return!i.has(h)}),...r].join(" ")}function wT(s){return Object.entries(s).filter(([,e])=>e).map(([e])=>e).join(" ")}function CT(...s){return s.filter(e=>typeof e=="string"&&e.length>0).join(" ")}const be=pt("G7CoreGlobals");function ET(){window.React=Xe,window.ReactDOM={...Dd,createPortal:Ia.createPortal,unstable_batchedUpdates:s=>s()},window.ReactJSXRuntime=r_,be.log("전역 객체 window.React, window.ReactDOM, window.ReactJSXRuntime에 노출됨")}function _T(s){const e=new Map,n=Ha.getInstance();s.componentEvent={on:(r,i)=>(e.has(r)||e.set(r,new Set),e.get(r).add(i),n.trackEventSubscribe(r),()=>{e.get(r)?.delete(i),n.trackEventUnsubscribe(r)}),emit:async(r,i)=>{const l=e.get(r),c=l?.size??0;if(!l||l.size===0)return n.trackEventEmit(r,i,0),[];let d,f=[];try{f=await Promise.all(Array.from(l).map(async h=>{try{return await h(i)}catch(m){throw be.error(`componentEvent: Error in listener for "${r}":`,m),m}}))}catch(h){d=h instanceof Error?h:new Error(String(h))}if(n.trackEventEmit(r,i,c,f,d),d)throw d;return f},off:r=>{e.delete(r),n.trackEventOff(r)},clear:()=>{e.clear(),n.trackEventClear()}},be.log("전역 객체 window.G7Core.componentEvent에 노출됨")}function AT(s){s.__runtime||(s.__runtime={DynamicRenderer:Vr,ComponentRegistry:Ar,TranslationEngine:vi,DataSourceManager:Or,dataSourceManager:qx,DataBindingEngine:$n,dataBindingEngine:oc,ActionDispatcher:jo,TranslationReactContext:nh,TranslationProvider:Pc,useTranslation:gb,ResponsiveContext:$f,ResponsiveProvider:xc,useResponsive:Mf,responsiveManager:Ci,BREAKPOINT_PRESETS:lc,AuthManager:Xn,createLogger:pt,G7DevToolsCore:Ha},be.log("전역 객체 window.G7Core.__runtime(코어 런타임 표면)에 노출됨"))}function xT(s){if(s.layoutEditor&&s.layoutEditor.__isStub!==!0||s.layoutEditor&&s.layoutEditor.__isStub===!0)return;const e=[],n=[];s.layoutEditor={__isStub:!0,__queue:e,__readyCallbacks:n,registerWidget:(r,i)=>e.push(["widget",r,i]),registerNodeEditor:(r,i)=>e.push(["nodeEditor",r,i]),registerCanvasOverlay:(r,i)=>e.push(["canvasOverlay",r,i]),onReady:r=>{typeof r=="function"&&n.push(r)}},be.log("전역 객체 window.G7Core.layoutEditor 예약 접수함(stub) 노출됨")}function TT(s){s.asset={template:(e,n,r)=>h0(e,n,r),templateDir:(e,n)=>p0(e,n),module:(e,n,r)=>g0(e,n,r),plugin:(e,n,r)=>m0(e,n,r),convertToCurrentMode:e=>Ln(e),loadScript:(e,n,r)=>Io(e,bs())?_r(e,n,r):Promise.reject(new Error(`Blocked untrusted script src (same-origin path or declared trusted host required): ${e}`)),isAllowedScriptSrc:e=>Io(e,bs()),loadStylesheet:(e,n,r)=>ia(e,n,r)},s.assets={notifyFailure:xs,clearFailure:Db,clearAll:Ob,getFailures:Qx,retryAll:$b},oT(),be.log("전역 객체 window.G7Core.asset / window.G7Core.assets 노출됨")}function kT(s,e){s.useTranslation=gb,s.t=(n,r)=>{const i=e.getState();if(!i.translationEngine||!i.translationContext)return n;if(r){const l="|"+Object.entries(r).map(([c,d])=>`${c}=${d}`).join("|");return i.translationEngine.translate(n,i.translationContext,l)}return i.translationEngine.translate(n,i.translationContext)},be.log("전역 객체 window.G7Core.useTranslation에 노출됨")}function RT(s,e){s.createChangeEvent=gT,s.createClickEvent=mT,s.createSubmitEvent=yT,s.createKeyboardEvent=bT,s.uuid=()=>typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{const r=Math.random()*16|0;return(n==="x"?r:r&3|8).toString(16)}),s.createLogger=pt,be.log("전역 객체 window.G7Core.createLogger에 노출됨"),s.renderItemChildren=(n,r,i,l,c)=>{const d=e.getState(),m={_global:window.__templateApp?.getGlobalState?.()||{},_local:r._local||{},_computed:r._computed||{},...r},y=new Set,v=(_,x)=>{const A=m._global?._remountKeys;return _&&A?.[_]&&!y.has(_)?(y.add(_),`${_}-remount-${A[_]}`):_||x},S={translationContext:d.translationContext,translationEngine:d.translationEngine,bindingEngine:d.bindingEngine,actionDispatcher:d.actionDispatcher,getRemountKey:v,...c};return Eo(n,m,i,l,S)},s.evaluateCondition=(n,r)=>{if(!n)return!0;const i=e.getState(),c=window.__templateApp?.getGlobalState?.()||{},d={_global:c,_local:c._local||{},_computed:c._computed||{},...r||{}},f=i.bindingEngine??oc;return cm(n,d,f)},s.getComponentMap=()=>Ar.getInstance().getComponentMap(),s.renderComponentLayout=(n,r,i)=>{if(!n||!Array.isArray(n)||n.length===0)return null;const l=Ar.getInstance().getComponentMap(),c=e.getState(),f=window.__templateApp?.getGlobalState?.()||{},h={_global:f._global||{},_local:f._local||{},_computed:f._computed||{},...r},m=new Set,y=(v,S)=>{const _=h._global?._remountKeys;return v&&_?.[v]&&!m.has(v)?(m.add(v),`${v}-remount-${_[v]}`):v||S};return Eo(n,h,l,i,{translationContext:c.translationContext,translationEngine:c.translationEngine,bindingEngine:c.bindingEngine,actionDispatcher:c.actionDispatcher,getRemountKey:y})},s.renderExpandContent=n=>{const{children:r,row:i,expandContext:l,componentContext:c,keyPrefix:d}=n;if(!r||!Array.isArray(r)||r.length===0)return null;const f=n.componentMap||Ar.getInstance().getComponentMap(),h=e.getState(),m=s.state?.get?.()||{},y=c?.stateRef?.current??c?.state??{},v={...m._local||{},...y},S=c?.computedRef?.current??m._computed??{},_=h.bindingEngine??s.getDataBindingEngine?.(),x={...m,_local:v,_computed:S,row:i,item:i,$item:i};let A={};if(l&&typeof l=="object"&&_)try{for(const[L,B]of Object.entries(l))if(typeof B=="string"){const q=Oa(B);if(q!==null)try{A[L]=jn(q)?_.evaluatePipeExpression(q,x,{skipCache:!0}):_.evaluateExpression(q,x,{skipCache:!0})}catch{A[L]=void 0}else A[L]=_.resolveBindings(B,x,{skipCache:!0})}else A[L]=B}catch(L){be.warn("renderExpandContent: expandContext 평가 오류:",L)}const D={row:i,item:i,$item:i,_local:v,_global:m._global||{},_computed:m._computed||{},...A},O=new Set,k=(L,B)=>{const q=D._global?._remountKeys;return L&&q?.[L]&&!O.has(L)?(O.add(L),`${L}-remount-${q[L]}`):L||B};return Eo(r,D,f,d,{translationContext:h.translationContext,translationEngine:h.translationEngine??void 0,bindingEngine:h.bindingEngine??void 0,actionDispatcher:h.actionDispatcher,componentContext:c,getRemountKey:k})},s.$get=function(r,i,l=void 0){if(r==null)return l;const c=Array.isArray(i)?i:[i];if(c.length===0)return r;let d=r;for(const f of c){if(d==null||f==null)return l;d=d[f]}return d??l},be.log("전역 객체 window.G7Core.renderItemChildren에 노출됨"),be.log("전역 객체 window.G7Core.renderComponentLayout에 노출됨"),be.log("전역 객체 window.G7Core.renderExpandContent에 노출됨"),be.log("전역 객체 window.G7Core.$get에 노출됨")}function DT(s){s.dispatch=async(e,n)=>{const r=window.__templateApp;if(!r)return be.warn("G7Core.dispatch: TemplateApp이 초기화되지 않았습니다."),{success:!1,error:new Error("TemplateApp이 초기화되지 않았습니다.")};const i=r.getActionDispatcher?.();if(!i)return be.warn("G7Core.dispatch: ActionDispatcher를 찾을 수 없습니다."),{success:!1,error:new Error("ActionDispatcher를 찾을 수 없습니다.")};const l=r.getRouter?.(),c=r.getGlobalState?.(),d=r.setGlobalState?.bind(r),h=n?.componentContext||window.__g7ActionContext,m=window.__g7PendingLocalState;let y=h?.state??c;m&&h&&(y=m,be.log("[dispatch] Using __g7PendingLocalState for context.state:",m));let v=h?.data??c;m&&h?.data?._local&&(v={...h.data,_local:m},be.log("[dispatch] Updated context.data._local with pendingLocalState"));const S={navigate:l?(_,x)=>l.navigate(_,x):void 0,setState:h?.setState??d,state:y,data:v,_isDispatchFallbackContext:!h?.setState};if(e.debounce){const _=e.debounceKey||`dispatch-${e.handler}`,x=typeof e.debounce=="number"?e.debounce:e.debounce.delay;return i.debouncedCall(_,x,()=>{const{debounce:A,debounceKey:D,...O}=e;i.dispatchAction(O,S)}),{success:!0,debounced:!0}}try{return await i.dispatchAction(e,S)}catch(_){return be.error("G7Core.dispatch: 액션 실행 오류:",_),{success:!1,error:_ instanceof Error?_:new Error(String(_))}}},be.log("전역 객체 window.G7Core.dispatch에 노출됨")}function Xo(s){const e={};for(const[n,r]of Object.entries(s))if(n.includes(".")){const i=n.split(".");let l=e;for(let c=0;c<i.length-1;c++){const d=i[c];d in l?(typeof l[d]!="object"||l[d]===null)&&(l[d]={}):l[d]={},l=l[d]}l[i[i.length-1]]=r}else e[n]=r;return e}function jb(s,e=""){const n=[];if(!s||typeof s!="object")return n;for(const r of Object.keys(s)){const i=e?`${e}.${r}`:r,l=s[r];l&&typeof l=="object"&&!Array.isArray(l)?n.push(...jb(l,i)):n.push(i)}return n}function OT(s){const e=Object.keys(s);return e.length>0&&e.every(n=>/^\d+$/.test(n))}function Zn(s,e){if(Array.isArray(s)&&!Array.isArray(e)&&OT(e)){const r=Object.keys(e).map(l=>parseInt(l,10));if(!((r.length>0?Math.max(...r):0)>=s.length+r.length+10)){const l=[...s];for(const[c,d]of Object.entries(e)){const f=parseInt(c,10);f>=0&&f<l.length?d!==null&&typeof d=="object"&&!Array.isArray(d)&&l[f]!==null&&typeof l[f]=="object"?l[f]=Zn(l[f],d):l[f]=d:f>=l.length&&(l[f]=d)}return l}}const n={...s};for(const[r,i]of Object.entries(e))i!==null&&typeof i=="object"&&!Array.isArray(i)?n[r]!==null&&typeof n[r]=="object"?n[r]=Zn(n[r],i):n[r]={...i}:n[r]=i;return n}function LT(s){s.state={get:()=>window.__templateApp?.getGlobalState?.()||{},set:(e,n)=>{const r=window.__templateApp;if(r?.setGlobalState&&r?.getGlobalState){const i=n?.merge||"deep",l=Xo(e);let c;if(i==="replace")c=l;else if(i==="shallow")c={...r.getGlobalState(),...l};else{const d=r.getGlobalState();c=Zn(d,l)}r.setGlobalState(c,{render:n?.render})}else be.warn("G7Core.state.set: TemplateApp이 초기화되지 않았습니다.")},setLocal:(e,n)=>{const r=window.__templateApp;if(n?.render===!1&&!n?.selfManaged){const A=window.__g7AutoBindingPaths;A&&A.size>0&&jb(Xo(e)).some(O=>A.has(O))&&(be.log("[setLocal] render:false + 자동바인딩 경로 겹침 감지 → render:true 자동 승격 (engine-v1.43.0)"),n={...n,render:!0})}if(n?.debounce){const A=r?.getActionDispatcher?.();if(A){const D=n.debounceKey||`setLocal-${Object.keys(e).join(",")}`,{debounce:O,debounceKey:k,...L}=n;A.debouncedCall(D,n.debounce,()=>{s.state.setLocal(e,L)});return}}const i=n?.scope??"current",l=n?.merge||"deep",c=window.__g7ActionContext,d=Xo(e);if(i==="parent"||i==="root"){const A=window.__g7LayoutContextStack||[];if(A.length>0){const D=i==="parent"?A[A.length-1]:A[0];if(D?.setState){D.setState(O=>l==="replace"?d:l==="shallow"?{...O||{},...d}:Zn(O||{},d)),be.log(`[setLocal] scope=${i}: 타겟 컨텍스트에 상태 업데이트 (mergeMode=${l})`,d);return}}be.warn(`[setLocal] scope=${i}: 레이아웃 컨텍스트 스택이 비어있습니다. current로 폴백합니다.`)}const f=window.__g7PendingLocalState,h=r?.getGlobalState?.()?._local||{},v=!((window.__g7LayoutContextStack||[]).length>0)&&c?.state?c.state:void 0,S=v?Mo(h,v):h,_=f||S;let x;if(l==="replace"?x=d:l==="shallow"?x={..._,...d}:x=Zn(_,d),r?.setGlobalState&&(r.setGlobalState({_local:x},{render:n?.render}),be.log(`[setLocal] globalLocal updated via setGlobalState (mergeMode=${l}, render=${n?.render??!0}):`,d)),window.__g7PendingLocalState=x,be.log("[setLocal] __g7PendingLocalState updated:",x),window.__g7SequenceLocalSync=x,window.__g7LastSetLocalSnapshot=x,l==="replace")window.__g7ForcedLocalFields=d;else{const A=window.__g7ForcedLocalFields||{};window.__g7ForcedLocalFields=Zn(A,d)}if(be.log("[setLocal] __g7ForcedLocalFields updated:",d),l==="replace")window.__g7SetLocalOverrideKeys=d;else{const A=window.__g7SetLocalOverrideKeys||{};window.__g7SetLocalOverrideKeys=Zn(A,d)}be.log("[setLocal] __g7SetLocalOverrideKeys updated:",d),c?.setState&&c.setState(A=>l==="replace"?d:l==="shallow"?{...A||{},...d}:Zn(A||{},d)),r?.setGlobalState||be.warn("G7Core.state.setLocal: TemplateApp이 없습니다.")},getLocal:()=>{const r=(window.__templateApp?.getGlobalState?.()||{})._local||{},i=window.__g7PendingLocalState;if(i)return Zn(r,i);const l=window.__g7LastSetLocalSnapshot;return l&&l!==r?Zn(r,l):r},update:e=>{const n=window.__templateApp;if(n?.getGlobalState&&n?.setGlobalState){const r=n.getGlobalState(),i=e(r);n.setGlobalState(i)}else be.warn("G7Core.state.update: TemplateApp이 초기화되지 않았습니다.")},subscribe:e=>{const n=window.__templateApp;return n?.onGlobalStateChange?n.onGlobalStateChange(e):(be.warn("G7Core.state.subscribe: TemplateApp이 초기화되지 않았습니다."),()=>{})},getDataSource:e=>window.__templateApp?.getDataSource?.(e),getIsolated:e=>e?window.__g7IsolatedStates?.[e]?.state??null:window.__g7ActionContext?.isolatedContext?.state??null,setIsolated:(e,n,r)=>{let i,l,c;typeof e=="string"?(i=e,l=n||{},c=r):(l=e,c=n&&typeof n=="object"&&"merge"in n?n:r);const d=c?.merge||"deep",f=Xo(l);if(i){const y=window.__g7IsolatedStates?.[i];y?.mergeState?y.mergeState(f,d):be.warn(`G7Core.state.setIsolated: scopeId '${i}'를 찾을 수 없습니다.`);return}const h=window.__g7ActionContext;h?.isolatedContext?.mergeState?h.isolatedContext.mergeState(f,d):be.warn("G7Core.state.setIsolated: 액션 컨텍스트에 isolatedContext가 없습니다.")},getParent:()=>{const e=window.__g7LayoutContextStack||[];if(e.length===0)return be.log("[getParent] 레이아웃 컨텍스트 스택이 비어있습니다."),null;const n=e[e.length-1];if(!n)return null;const r=n.dataContext||{};return{_local:n.state||r._local||{},_global:r._global||s.state.get()||{},setState:n.setState}},setParentLocal:(e,n,r)=>{const i=window.__g7LayoutContextStack||[];if(i.length===0){be.warn("[setParentLocal] 레이아웃 컨텍스트 스택이 비어있습니다.");return}const l=i[i.length-1];if(!l?.setState){be.warn("[setParentLocal] 부모 컨텍스트에 setState가 없습니다.");return}let c,d;typeof e=="string"?(c={[e]:n},d=r):(c=e,d=n&&typeof n=="object"&&"merge"in n?n:r);const f=d?.merge||"deep",h=Xo(c),m=l.state?._local!==void 0,y=m?l.state._local:l.state||{};let v;f==="replace"?v=h:f==="shallow"?v={...y,...h}:v=Zn(y,h),window.__g7PendingLocalState=v;const S=window.__templateApp;if(S?.setGlobalState){const _=S.getGlobalState?.()?._local,A=f!=="replace"&&!!_&&typeof _=="object"&&!Array.isArray(_)?f==="shallow"?{..._,...h}:Zn(_,h):void 0;S.setGlobalState({_local:A?Mo(A,v):v})}if(l.setState(v),m?l.state._local=v:l.state=v,l.dataContext&&(l.dataContext._local=v),f==="replace")window.__g7ForcedLocalFields=h;else{const _=window.__g7ForcedLocalFields||{};window.__g7ForcedLocalFields=Zn(_,h)}Df()},setParentGlobal:(e,n)=>{let r;typeof e=="string"?r={[e]:n}:r=e,s.state.set(r),be.log("[setParentGlobal] 전역 상태 업데이트:",r)}},window.__g7IsolatedStates||(window.__g7IsolatedStates={}),s.state.getGlobal=s.state.get,s.state.setGlobal=s.state.set,be.log("전역 객체 window.G7Core.state에 노출됨")}function $T(s){s.dataSource={get:e=>window.__templateApp?.getDataSource?.(e),set:(e,n,r)=>{const i=window.__templateApp;i?.setDataSource?i.setDataSource(e,n,r):be.warn("G7Core.dataSource.set: TemplateApp이 초기화되지 않았습니다.")},refetch:async(e,n)=>{const r=window.__templateApp;if(r?.refetchDataSource)return r.refetchDataSource(e,n);be.warn("G7Core.dataSource.refetch: TemplateApp이 초기화되지 않았습니다.")},updateItem:(e,n,r,i,l)=>{const c=window.__templateApp;return c?.updateDataSourceItem?c.updateDataSourceItem(e,n,r,i,l):(be.warn("G7Core.dataSource.updateItem: TemplateApp이 초기화되지 않았습니다."),!1)},updateData:(e,n,r,i="append")=>{const l=window.__templateApp;if(!l?.getDataSource||!l?.setDataSource)return be.warn("G7Core.dataSource.updateData: TemplateApp이 초기화되지 않았습니다."),!1;const c=l.getDataSource(e);if(!c)return be.warn(`G7Core.dataSource.updateData: 데이터 소스 '${e}'를 찾을 수 없습니다.`),!1;let d,f=c,h=null;if(n){const y=n.split(".");h=y.pop();for(const v of y)if(f&&typeof f=="object"&&v in f)f=f[v];else return be.warn(`G7Core.dataSource.updateData: 경로 '${n}'를 찾을 수 없습니다.`),!1;d=f[h]}else d=c;if(!Array.isArray(d))return be.warn("G7Core.dataSource.updateData: 대상 경로의 데이터가 배열이 아닙니다."),!1;if(!Array.isArray(r))return be.warn("G7Core.dataSource.updateData: newData가 배열이 아닙니다."),!1;const m=i==="prepend"?[...r,...d]:[...d,...r];return n&&h?(f[h]=m,l.setDataSource(e,c,{merge:!1})):l.setDataSource(e,m,{merge:!1}),be.log(`G7Core.dataSource.updateData: '${e}'에 ${r.length}개 항목 ${i==="prepend"?"앞에":"뒤에"} 추가됨`),!0}},be.log("전역 객체 window.G7Core.dataSource에 노출됨")}function MT(s,e){s.locale={current:()=>window.__templateApp?.getLocale?.()||"ko",supported:()=>{const r=window.__templateApp?.globalState?.appConfig?.supportedLocales;return Array.isArray(r)&&r.length>0?r:e.getState().templateMetadata?.locales||["ko","en"]},change:async n=>{const r=window.__templateApp;r?.changeLocale?await r.changeLocale(n):be.warn("G7Core.locale.change: TemplateApp이 초기화되지 않았습니다.")}},be.log("전역 객체 window.G7Core.locale에 노출됨")}function NT(s){s.toast={show:(e,n)=>{s.dispatch({handler:"toast",params:{message:e,type:n?.type||"info",...n?.duration&&{duration:n.duration}}})},success:(e,n)=>{s.toast.show(e,{type:"success",duration:n})},error:(e,n)=>{s.toast.show(e,{type:"error",duration:n})},warning:(e,n)=>{s.toast.show(e,{type:"warning",duration:n})},info:(e,n)=>{s.toast.show(e,{type:"info",duration:n})}},be.log("전역 객체 window.G7Core.toast에 노출됨")}function IT(s){s.modal={open:e=>{s.dispatch({handler:"openModal",target:e})},close:e=>{s.dispatch({handler:"closeModal",...e&&{target:e}})},closeAll:()=>{s.dispatch({handler:"closeAllModals"})},isOpen:e=>{const n=s.state.get();return n._global?.activeModal===e||n._global?.modalStack?.includes(e)||!1},getStack:()=>s.state.get()._global?.modalStack||[]},be.log("전역 객체 window.G7Core.modal에 노출됨")}function jT(s){s.style={mergeClasses:ST,conditionalClass:wT,joinClasses:CT},be.log("전역 객체 window.G7Core.style에 노출됨")}function HT(s,e){const{webSocketManager:n}=e;s.websocket={manager:n,subscribe:(r,i,l,c)=>n.subscribe(r,i,l,c),unsubscribe:r=>n.unsubscribe(r),leaveChannel:r=>n.leaveChannel(r),disconnect:()=>n.disconnect(),isInitialized:()=>n.isInitialized(),getSubscriptionCount:()=>n.getSubscriptionCount()},be.log("전역 객체 window.G7Core.websocket에 노출됨")}function zT(s,e){const{transitionManager:n}=e;s.navigation={isPending:()=>n?.getIsPending?.()||!1,onComplete:r=>{if(!n)return r(),()=>{};let i=n.getIsPending();const l=n.subscribe(c=>{c?i=!0:i&&(r(),l())});return l}},be.log("전역 객체 window.G7Core.navigation에 노출됨")}function PT(s){s.plugin={getSettings:e=>window.G7Config?.plugins?.[e],get:(e,n,r)=>window.G7Config?.plugins?.[e]?.[n]??r,getAll:()=>window.G7Config?.plugins??{}},be.log("전역 객체 window.G7Core.plugin에 노출됨")}function UT(s){s.module={getSettings:e=>window.G7Config?.modules?.[e],get:(e,n,r)=>window.G7Config?.modules?.[e]?.[n]??r,getAll:()=>window.G7Config?.modules??{}},be.log("전역 객체 window.G7Core.module에 노출됨")}function BT(s,e){const{transitionManager:n,responsiveManager:r}=e;s.AuthManager=Xn,s.api=Yn(),s.TransitionManager=n,s.useTransitionState=Ay,s.ResponsiveManager=r,s.useResponsive=Mf,s.useControllableState=m_,s.shallowArrayEqual=y_,s.shallowObjectEqual=Ty,s.updateQueryParams=async(i,l)=>{const c=window.__templateApp;if(c?.updateQueryParams)return c.updateQueryParams(i,l);be.warn("G7Core.updateQueryParams: TemplateApp이 초기화되지 않았습니다.")},be.log("전역 객체 window.G7Core.AuthManager에 노출됨"),be.log("전역 객체 window.G7Core.api에 노출됨"),be.log("전역 객체 window.G7Core.ResponsiveManager에 노출됨"),be.log("전역 객체 window.G7Core.useResponsive에 노출됨"),be.log("전역 객체 window.G7Core.useControllableState에 노출됨"),be.log("전역 객체 window.G7Core.updateQueryParams에 노출됨")}function qT(s,e){s.getSlotContext=()=>window.__slotContextValue??null,s.getDynamicRenderer=()=>window.__DynamicRenderer??null,s.getComponentRegistry=()=>e.getComponentRegistry?.()??Ar.getInstance(),s.getDataBindingEngine=()=>e.getDataBindingEngine?.()??e.getState().bindingEngine,s.getTranslationEngine=()=>e.getTranslationEngine?.()??e.getState().translationEngine,s.getActionDispatcher=()=>e.getActionDispatcher?.()??e.getState().actionDispatcher,be.log("전역 객체 window.G7Core 슬롯 API에 노출됨 (getSlotContext, getDynamicRenderer 등)")}function GT(s){s.identity={setLauncher:At.setLauncher.bind(At),handle:At.handle.bind(At),isIdentityRequired:At.isIdentityRequired.bind(At),hasLauncher:At.hasLauncher.bind(At),markDomainNoticeShown:At.markDomainNoticeShown.bind(At),redirectExternally:At.redirectExternally.bind(At),createDeferred:At.createDeferred.bind(At),resolveDeferred:At.resolveDeferred.bind(At),reset:At.reset.bind(At),redirectStashKey:_f},be.log("전역 객체 window.G7Core 본인인증(IDV) API에 노출됨 (identity)")}function FT(s){if(typeof window>"u")return;ET(),window.G7Core||(window.G7Core={});const e=window.G7Core;AT(e),_T(e),xT(e),BT(e,s),TT(e),kT(e,s),RT(e,s),DT(e),LT(e),$T(e),MT(e,s),NT(e),IT(e),jT(e),HT(e,s),zT(e,s),PT(e),UT(e),qT(e,s),GT(e),be.log("G7Core 전역 객체 초기화 완료")}function VT(){const s=window.G7Core;if(!s){be.warn("G7Core가 초기화되지 않았습니다.");return}const e=()=>Ha.getInstance(),n={isEnabled:()=>{try{return e().isEnabled()}catch{return!1}},trackRender:r=>{try{e().isEnabled()&&e().trackRender(r)}catch{}},trackIteration:(r,i,l,c,d)=>{try{e().isEnabled()&&e().trackIteration(r,{source:i,itemVar:l,indexVar:c,sourceLength:d})}catch{}},trackIfCondition:(r,i,l,c)=>{try{e().isEnabled()&&e().trackIfCondition(r,i,l)}catch{}},trackMount:(r,i)=>{try{e().isEnabled()&&e().trackMount(r,{...i,id:r})}catch{}},trackUnmount:r=>{try{e().isEnabled()&&e().trackUnmount(r)}catch{}},trackExpressionEval:r=>{try{e().isEnabled()&&e().trackExpressionEval(r)}catch{}},trackBindingEval:r=>{try{e().isEnabled()&&e().trackBindingEval(r)}catch{}},recordCacheHit:()=>{try{e().isEnabled()&&e().recordCacheHit()}catch{}},recordCacheMiss:()=>{try{e().isEnabled()&&e().recordCacheMiss()}catch{}},trackHandlerRegistration:(r,i,l,c)=>{try{e().isEnabled()&&e().trackHandlerRegistration(r,i,l,c)}catch{}},trackHandlerUnregistration:r=>{try{e().isEnabled()&&e().trackHandlerUnregistration(r)}catch{}},logAction:r=>{try{e().isEnabled()&&e().logAction(r)}catch{}},trackRequest:(r,i)=>{try{return e().isEnabled()?e().trackRequest(r,i):""}catch{return""}},completeRequest:(r,i,l)=>{try{e().isEnabled()&&e().completeRequest(r,i,l)}catch{}},failRequest:(r,i)=>{try{e().isEnabled()&&e().failRequest(r,i)}catch{}},trackDataSourceDefinition:r=>{try{e().isEnabled()&&e().trackDataSourceDefinition(r)}catch{}},trackDataSourceLoading:r=>{try{e().isEnabled()&&e().trackDataSourceLoading(r)}catch{}},trackDataSourceLoaded:(r,i,l)=>{try{e().isEnabled()&&e().trackDataSourceLoaded(r,i,l)}catch{}},trackDataSourceError:(r,i)=>{try{e().isEnabled()&&e().trackDataSourceError(r,i)}catch{}},trackForm:(r,i,l)=>{try{e().isEnabled()&&e().trackForm(r,i,l)}catch{}},untrackForm:r=>{try{e().isEnabled()&&e().untrackForm(r)}catch{}},startStateChange:(r,i,l,c)=>{try{return e().isEnabled()?e().startStateChange(r,i,l,c):""}catch{return""}},completeStateChange:r=>{try{e().isEnabled()&&e().completeStateChange(r)}catch{}},trackComponentRender:(r,i,l,c,d,f)=>{try{e().isEnabled()&&e().trackComponentRender(r,i,l,c,d,f)}catch{}},updateLocalState:r=>{try{e().isEnabled()&&e().updateLocalState(r)}catch{}},updateComputedState:r=>{try{e().isEnabled()&&e().updateComputedState(r)}catch{}},updateParentContext:r=>{try{e().isEnabled()&&e().updateParentContext(r)}catch{}},trackComponentStateSource:(r,i,l,c)=>{try{e().isEnabled()&&e().trackComponentStateSource(r,i,l,c)}catch{}},trackDynamicState:(r,i)=>{try{e().isEnabled()&&e().trackDynamicState(r,i)}catch{}},trackContextFlow:(r,i,l,c,d,f)=>{try{e().isEnabled()&&e().trackContextFlow(r,i,l,c,d,f)}catch{}},trackComponentStyle:(r,i,l,c)=>{try{e().isEnabled()&&e().trackComponentStyle(r,i,l,c)}catch{}},trackAuthEvent:(r,i,l,c)=>{try{e().isEnabled()&&e().trackAuthEvent(r,i,l,c)}catch{}},trackAuthHeader:(r,i,l,c,d)=>{try{e().isEnabled()&&e().trackAuthHeader(r,i,l,c,d)}catch{}},trackLog:(r,i,l)=>{try{e().isEnabled()&&e().trackLog(r,i,l)}catch{}},trackAction:r=>{try{e().isEnabled()&&e().trackAction?.(r)}catch{}},trackDataSourceUpdate:r=>{try{e().isEnabled()&&e().trackDataSourceUpdate?.(r)}catch{}},startSequenceExecution:r=>{try{return e().isEnabled()?e().startSequenceExecution(r):""}catch{return""}},captureSequenceActionBefore:(r,i,l,c,d)=>{try{e().isEnabled()&&e().captureSequenceActionBefore(r,i,l,c,d)}catch{}},captureSequenceActionAfter:(r,i,l,c,d,f)=>{try{e().isEnabled()&&e().captureSequenceActionAfter(r,i,l,c,d,f)}catch{}},endSequenceExecution:(r,i)=>{try{e().isEnabled()&&e().endSequenceExecution(r,i)}catch{}},registerStateCaptureForHandler:(r,i,l)=>{try{e().isEnabled()&&e().registerStateCaptureForHandler(r,i,l)}catch{}},detectStaleClosure:(r,i,l,c,d)=>{try{return e().isEnabled()?e().detectStaleClosure(r,i,l,c,d):[]}catch{return[]}},trackStaleClosureWarning:r=>{try{e().isEnabled()&&e().trackStaleClosureWarning(r)}catch{}},trackModalOpen:r=>{try{e().isEnabled()&&e().trackModalOpen(r)}catch{}},trackModalClose:(r,i)=>{try{e().isEnabled()&&e().trackModalClose(r,i)}catch{}},trackModalStateChange:r=>{try{e().isEnabled()&&e().trackModalStateChange(r)}catch{}},trackNestedContext:r=>{try{return e().isEnabled()?e().trackNestedContext(r):""}catch{return""}},trackNestedContextAccess:(r,i)=>{try{e().isEnabled()&&e().trackNestedContextAccess(r,i)}catch{}},trackComputedProperty:(r,i,l,c,d,f,h)=>{try{e().isEnabled()&&e().trackComputedProperty(r,i,l,c,d,f,h)}catch{}},trackComputedRecalc:(r,i,l,c,d,f,h)=>{try{e().isEnabled()&&e().trackComputedRecalc(r,i,l,c,d,f,h)}catch{}},setNamedActionDefinitions:r=>{try{e().isEnabled()&&e().setNamedActionDefinitions(r)}catch{}},trackNamedActionRef:r=>{try{e().isEnabled()&&e().trackNamedActionRef(r)}catch{}}};s.devTools=n,be.log("G7Core.devTools 인터페이스 초기화 완료")}let Jo=null;function KT(){const s=window.G7Core;return s?.__devtools?Promise.resolve(s.__devtools):Jo||(Jo=new Promise((e,n)=>{const r=window.G7Config?.coreDevToolsAsset||"/build/core/devtools.min.js",i="g7-devtools-bundle",l=()=>{const f=window.G7Core?.__devtools;f?e(f):n(new Error("DevTools 번들 로드됨 — 그러나 __devtools 미노출"))};window.G7Core=window.G7Core||{},window.G7Core.__onDevToolsReady=l;const c=document.getElementById(i);if(c){c.addEventListener("load",l,{once:!0}),c.addEventListener("error",()=>n(new Error(`DevTools 번들 로드 실패: ${r}`)),{once:!0});return}const d=document.createElement("script");d.id=i,d.src=r,d.async=!1,d.addEventListener("load",l,{once:!0}),d.addEventListener("error",()=>{Jo=null,n(new Error(`DevTools 번들 로드 실패: ${r}`))},{once:!0}),document.head.appendChild(d)}),Jo)}function WT(){const s=window.G7Core;if(!s){be.warn("G7Core가 초기화되지 않았습니다.");return}const e=Ha.getInstance();if(e.initialize(),!e.isEnabled()){window.G7DevTools={isEnabled:()=>!1,enable:()=>{be.log("환경설정 > 고급 설정 > 디버그 모드를 켜세요")}},Ld(),be.log("G7DevTools 비활성화됨 (디버그 모드 꺼짐)");return}YT(s,e)}async function YT(s,e){let n;try{n=await KT()}catch(h){be.warn("DevTools 번들 로드 실패 — 최소 API 로 폴백:",h),window.G7DevTools={isEnabled:()=>!1,enable:()=>{}},Ld();return}const{DiagnosticEngine:r,getServerConnector:i,getStyleTracker:l}=n;VT(),Ld();try{l().enable(),be.log("StyleTracker 활성화됨")}catch(h){be.warn("StyleTracker 활성화 실패:",h)}const c=new r,d=i(),f={isEnabled:()=>e.isEnabled(),state:{get:()=>e.getState(),getHistory:()=>e.getStateHistory(),watch:(h,m)=>e.watchState(h,m)},actions:{getHistory:()=>e.getActionHistory(),watch:h=>e.watchActions(h),getMetrics:()=>e.getActionMetrics()},binding:{evaluate:h=>{const m=s.getDataBindingEngine?.();if(!m){be.warn("DataBindingEngine이 없습니다.");return}return m.evaluateExpression(h,e.getState())},getCacheStats:()=>e.getCacheStats(),clearStats:()=>{e.resetCacheStats(),be.log("캐시 통계 초기화됨")}},diagnose:{analyze:h=>c.analyze(h),suggestFix:h=>c.suggestFix(h),getCommonIssues:()=>c.getCommonIssues(),getRulesByCategory:h=>c.getRulesByCategory(h)},server:{dumpState:h=>d.dumpState(h),sendLog:h=>d.sendLog(h),sendError:(h,m)=>d.sendError(h,m),isConnected:()=>d.isConnected(),testConnection:()=>d.testConnection()},config:{isDebugMode:()=>e.isEnabled(),setLogLevel:h=>e.setLogLevel(h),setMaxHistory:h=>e.setMaxHistory(h)},lifecycle:{getMountedComponents:()=>e.getLifecycleInfo().mountedComponents,getOrphanedListeners:()=>e.getLifecycleInfo().orphanedListeners},performance:{getRenderCount:()=>e.getPerformanceInfo().renderCounts,getBindingEvalCount:()=>e.getPerformanceInfo().bindingEvalCount,getMemoryWarnings:()=>e.getPerformanceInfo().memoryWarnings,startProfiling:()=>e.startProfiling(),stopProfiling:()=>e.stopProfiling()},network:{getActiveRequests:()=>e.getNetworkInfo().activeRequests,getRequestHistory:()=>e.getNetworkInfo().requestHistory,getPendingDataSources:()=>e.getNetworkInfo().pendingDataSources},conditional:{getIfConditions:()=>e.getConditionalInfo().ifConditions,getIterations:()=>e.getConditionalInfo().iterations},form:{getForms:()=>e.getFormInfo()},websocket:{getInfo:()=>e.getWebSocketInfo()}};window.G7DevTools=f,s.devtools=f,be.log("G7DevTools 전역 객체 초기화 완료 (window.G7DevTools)"),XT(n.DevToolsPanel)}function XT(s){if(document.getElementById("g7-devtools-root")){be.log("DevToolsPanel 이미 렌더링됨");return}const e=document.createElement("div");e.id="g7-devtools-root",document.body.appendChild(e);try{Dd.createRoot(e).render(Xe.createElement(s)),be.log("DevToolsPanel UI 렌더링 완료")}catch(n){be.error("DevToolsPanel UI 렌더링 실패:",n)}}const Je=pt("TemplateEngine"),ae={templateId:null,locale:"ko",isInitialized:!1,reactRoot:null,containerId:null,currentLayoutJson:null,currentDataContext:{},translationContext:{templateId:"",locale:"ko"},registry:null,bindingEngine:null,translationEngine:null,actionDispatcher:null,templateMetadata:null};let Qo=!1;const Zo=[];async function JT(s){try{Je.log("템플릿 메타데이터 로드 중...",s);const e=s.split("-").map(r=>r.split("_").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join("")).join(""),n=window[e];return n?.templateMetadata?(Je.log("템플릿 메타데이터 로드 완료 (전역 변수)",n.templateMetadata),n.templateMetadata):(Je.warn(`템플릿 번들에 메타데이터가 없습니다. 전역 변수: ${e}`),{identifier:s,locales:["ko","en"],name:{ko:s,en:s},description:{ko:"",en:""},version:"1.0.0",type:"admin"})}catch(e){return Je.error("템플릿 메타데이터 로드 실패",e),{identifier:s,locales:["ko","en"],name:{ko:s,en:s},description:{ko:"",en:""},version:"1.0.0",type:"admin"}}}function Hb(){const e=(typeof window<"u"?window.__templateApp:void 0)?.globalState?.appConfig?.supportedLocales,n=ae.templateMetadata?.locales;return{$locale:ae.locale,$locales:Array.isArray(e)&&e.length>0?e:n||["ko","en"],$templateLocales:n||["ko","en"],$templateId:ae.templateId}}async function el(s){try{if(Je.log("템플릿 엔진 초기화 시작",s),ae.isInitialized)throw new Error("템플릿 엔진이 이미 초기화되었습니다. destroyTemplate()을 먼저 호출하세요.");if(!s.templateId)throw new Fx;Qo=s.debug??!1,typeof window<"u"&&(window.G7Config||(window.G7Config={}),window.G7Config.debug=Qo),WT(),ae.templateId=s.templateId,ae.locale=s.locale||"ko",Je.log("엔진 인스턴스 생성 중..."),ae.registry=Ar.getInstance(),ae.bindingEngine=new $n,ae.translationEngine=vi.getInstance(),s.cacheVersion!==void 0&&s.cacheVersion>0&&ae.translationEngine.setCacheVersion(s.cacheVersion),ae.translationContext={templateId:s.templateId,locale:ae.locale},ae.actionDispatcher=new jo({},ae.translationEngine,ae.translationContext),o_(ae.actionDispatcher),Je.log("다국어 파일 로드 중...",s.templateId,ae.locale);const e="en",n=[ae.translationEngine.loadTranslations(s.templateId,ae.locale).then(()=>{Je.log(`다국어 파일 로드 완료: ${ae.locale}`)}).catch(r=>{Je.warn(`다국어 파일 로드 실패 (${ae.locale}):`,r instanceof Error?r.message:r)})];ae.locale!==e&&n.push(ae.translationEngine.loadTranslations(s.templateId,e).then(()=>{Je.log(`폴백 다국어 파일 로드 완료: ${e}`)}).catch(r=>{Je.warn(`폴백 다국어 파일 로드 실패 (${e}):`,r instanceof Error?r.message:r)})),await Promise.allSettled(n),Je.log("템플릿 메타데이터 로드 중...",s.templateId),ae.templateMetadata=await JT(s.templateId),ae.isInitialized=!0,Je.log("템플릿 엔진 초기화 완료 (ComponentRegistry는 별도 로드)")}catch(e){throw Je.error("템플릿 엔진 초기화 실패",e),ae.isInitialized=!1,ae.registry=null,ae.bindingEngine=null,ae.translationEngine=null,ae.actionDispatcher=null,e}}let ks=null;const zb="g7-layout-editor-bundle";function ph(){const s=window.G7Core;return s?.__LayoutEditorChrome?Promise.resolve(s.__LayoutEditorChrome):ks||(ks=(async()=>{const e=window.G7Config?.coreEditorAsset||"/build/core/layout-editor.min.js";document.getElementById(zb)?.remove(),window.G7Core=window.G7Core||{},window.G7Core.__onChromeReady=()=>{};try{await _r(e,{id:zb},{label:"layout-editor bundle"})}catch(r){throw ks=null,Je.error(`편집기 번들 로드 실패 (${e})`,r),new Error("편집기를 불러오지 못했습니다. 네트워크 상태를 확인한 뒤 다시 시도해 주세요.")}const n=window.G7Core?.__LayoutEditorChrome;if(!n)throw ks=null,Je.error(`편집기 번들 로드됨 — 그러나 __LayoutEditorChrome 미노출 (${e})`),new Error("편집기를 불러왔으나 초기화하지 못했습니다. 페이지를 새로고침해 주세요.");return n})(),ks)}async function Rs(s){try{if(Je.log("템플릿 렌더링 시작",s),!ae.isInitialized)throw new Error("템플릿 엔진이 초기화되지 않았습니다. initTemplateEngine()을 먼저 호출하세요.");if(!s.containerId)throw new Error("containerId는 필수입니다.");if(!s.layoutJson)throw new Error("layoutJson은 필수입니다.");const e=document.getElementById(s.containerId);if(!e)throw new Error(`컨테이너를 찾을 수 없습니다: #${s.containerId}`);const n=Hb();if(ae.containerId=s.containerId,ae.currentLayoutJson=s.layoutJson,ae.currentDataContext={...n,...s.dataContext||{}},ae.translationContext=s.translationContext||{templateId:ae.templateId||"",locale:ae.locale},ae.reactRoot||(Je.log("React Root 생성"),ae.reactRoot=Dd.createRoot(e)),typeof window<"u"){const l=ch(window.location.pathname);if(l){Je.log("레이아웃 편집기 모드 진입",l);let c;try{c=await ph()}catch(f){Je.error("레이아웃 편집기 번들 로드 실패",f),lh.render(s.containerId,{title:"레이아웃 편집기 로드 실패",message:f instanceof Error?f.message:"편집기 번들을 불러오지 못했습니다.",icon:"fas fa-triangle-exclamation",showStack:!1,showReloadButton:!0,debug:Qo});return}const d=Xe.createElement(c,{templateIdentifier:l.templateIdentifier,initialLocale:ae.locale});ae.reactRoot.render(Xe.createElement(Pc,{translationEngine:ae.translationEngine,translationContext:ae.translationContext,children:Xe.createElement(Of,{children:Xe.createElement(xc,{children:Xe.createElement(rh,{children:d})})})}));return}}const r=s.layoutJson.components||[];if(r.length===0){Je.warn("렌더링할 컴포넌트가 없습니다.");return}const i=s.layoutJson.modals||[];if(Je.log("modals 배열:",i),Je.log("modals 개수:",i.length),Je.log("DynamicRenderer로 렌더링 시작"),ae.reactRoot.render(Xe.createElement(Pc,{translationEngine:ae.translationEngine,translationContext:ae.translationContext},Xe.createElement(Of,null,Xe.createElement(xc,null,Xe.createElement(rh,null,[...r.map((l,c)=>{const d=ae.currentLayoutJson?.layout_name||"";return Xe.createElement(Vr,{key:d&&!l._fromBase?`${l.id}_${d}`:l.id,componentDef:l,dataContext:ae.currentDataContext,translationContext:ae.translationContext,registry:ae.registry,bindingEngine:ae.bindingEngine,translationEngine:ae.translationEngine,actionDispatcher:ae.actionDispatcher,isRootRenderer:c===0,layoutKey:d})}),Xe.createElement(yy,{key:"__modal_parent_context_provider"},i.map(l=>{const c=ae.currentDataContext._global?.modalStack||[],f=c.includes(l.id)||ae.currentDataContext._global?.activeModal===l.id,h=c.indexOf(l.id),m=h>=0?50+h:50,y=window.__g7LayoutContextStack||[],S=y[y.length-1]?.dataContext,_=Xe.createElement(Vr,{key:`modal_${l.id}_renderer`,componentDef:{...l,props:{...l.props,isOpen:f,style:{...l.props?.style,zIndex:m},onClose:ae.actionDispatcher?.createHandler({type:"click",handler:"closeModal"},ae.currentDataContext)}},dataContext:ae.currentDataContext,translationContext:ae.translationContext,registry:ae.registry,bindingEngine:ae.bindingEngine,translationEngine:ae.translationEngine,actionDispatcher:ae.actionDispatcher,parentDataContext:S});return l.data_sources&&l.data_sources.length>0?Xe.createElement(Tb,{key:`modal_${l.id}`,isOpen:f,modalId:l.id,dataSources:l.data_sources,dataContext:ae.currentDataContext,globalStateUpdater:ae.actionDispatcher?.getGlobalStateUpdater(),bindingEngine:ae.bindingEngine,debug:Qo,children:_}):_}))]))))),Je.log("템플릿 렌더링 완료"),Zo.length>0){Je.log(`대기 중인 데이터 업데이트 ${Zo.length}건 적용`);const l=[...Zo];Zo.length=0;for(const{data:c,options:d}of l)Ds(c,d)}}catch(e){throw Je.error("템플릿 렌더링 실패",e),e}}function Ds(s,e){try{if(Je.log("템플릿 데이터 업데이트 시작",Object.keys(s)),!ae.isInitialized)throw new Error("템플릿 엔진이 초기화되지 않았습니다.");if(!ae.reactRoot||!ae.currentLayoutJson){Je.log("React 미준비 - 데이터 업데이트 큐잉:",Object.keys(s)),Zo.push({data:s,options:e});return}const n=Hb(),r={...ae.currentDataContext._global||{},...s._global||{}},i=p_(ae.currentDataContext._localInit,s._localInit);if(ae.currentDataContext={...n,...ae.currentDataContext,...s,_global:r,_localInit:i},r._local!==void 0&&(ae.currentDataContext._local=r._local),r._computed!==void 0&&(ae.currentDataContext._computed=r._computed),typeof window<"u"&&ch(window.location.pathname)){Je.log("레이아웃 편집기 모드 — 재렌더 건너뜀 (편집기 트리 보존)");return}const l=ae.currentLayoutJson.components||[],c=ae.currentLayoutJson.modals||[];Je.log("updateTemplateData - modals 배열:",c),Je.log("updateTemplateData - modals 개수:",c.length),Je.log("updateTemplateData - activeModal:",ae.currentDataContext._global?.activeModal);const d=()=>{ae.reactRoot.render(Xe.createElement(Pc,{translationEngine:ae.translationEngine,translationContext:ae.translationContext},Xe.createElement(Of,null,Xe.createElement(xc,null,Xe.createElement(rh,null,[...l.map((f,h)=>{const m=ae.currentLayoutJson?.layout_name||"";return Xe.createElement(Vr,{key:m&&!f._fromBase?`${f.id}_${m}`:f.id,componentDef:f,dataContext:ae.currentDataContext,translationContext:ae.translationContext,registry:ae.registry,bindingEngine:ae.bindingEngine,translationEngine:ae.translationEngine,actionDispatcher:ae.actionDispatcher,isRootRenderer:h===0,layoutKey:m})}),Xe.createElement(yy,{key:"__modal_parent_context_provider_update"},c.map(f=>{const h=ae.currentDataContext._global?.modalStack||[],y=h.includes(f.id)||ae.currentDataContext._global?.activeModal===f.id,v=h.indexOf(f.id),S=v>=0?50+v:50,_=window.__g7LayoutContextStack||[],A=_[_.length-1]?.dataContext,D=Xe.createElement(Vr,{key:`modal_${f.id}_renderer`,componentDef:{...f,props:{...f.props,isOpen:y,style:{...f.props?.style,zIndex:S},onClose:ae.actionDispatcher?.createHandler({type:"click",handler:"closeModal"},ae.currentDataContext)}},dataContext:ae.currentDataContext,translationContext:ae.translationContext,registry:ae.registry,bindingEngine:ae.bindingEngine,translationEngine:ae.translationEngine,actionDispatcher:ae.actionDispatcher,parentDataContext:A});return f.data_sources&&f.data_sources.length>0?Xe.createElement(Tb,{key:`modal_${f.id}`,isOpen:y,modalId:f.id,dataSources:f.data_sources,dataContext:ae.currentDataContext,globalStateUpdater:ae.actionDispatcher?.getGlobalStateUpdater(),bindingEngine:ae.bindingEngine,debug:Qo,children:D}):D}))])))))};e?.sync?(Je.log("재렌더링 시작 (sync mode - 즉시 렌더링)"),d()):(Je.log("재렌더링 시작 (with startTransition)"),N.startTransition(()=>{d()})),Je.log("템플릿 데이터 업데이트 완료")}catch(n){throw Je.error("템플릿 데이터 업데이트 실패",n),n}}function Yc(){try{Je.log("템플릿 정리 시작"),ae.reactRoot&&(Je.log("React Root 언마운트"),ae.reactRoot.unmount(),ae.reactRoot=null),ae.templateId=null,ae.locale="ko",ae.isInitialized=!1,ae.containerId=null,ae.currentLayoutJson=null,ae.currentDataContext={},ae.translationContext={templateId:"",locale:"ko"},ae.registry=null,ae.bindingEngine=null,ae.translationEngine=null,ae.actionDispatcher=null,ae.templateMetadata=null,Je.log("템플릿 정리 완료")}catch(s){throw Je.error("템플릿 정리 실패",s),s}}function la(){return Object.freeze({...ae})}function Pb(){return ae.actionDispatcher}const tl={initTemplateEngine:el,renderTemplate:Rs,updateTemplateData:Ds,destroyTemplate:Yc,getState:la};typeof window<"u"&&(window.G7Core||(window.G7Core={}),window.G7Core.TemplateEngine=tl,FT({getState:()=>({translationEngine:ae.translationEngine,translationContext:ae.translationContext,bindingEngine:ae.bindingEngine,actionDispatcher:ae.actionDispatcher,templateMetadata:ae.templateMetadata}),transitionManager:Gr,responsiveManager:Ci,webSocketManager:qc}),Je.log("전역 객체 window.G7Core.TemplateEngine에 노출됨"));const Wr=Object.freeze(Object.defineProperty({__proto__:null,DataSourceManager:Or,LayoutLoader:th,TemplateApp:Yo,TemplateEngine:tl,default:tl,destroyTemplate:Yc,getActionDispatcher:Pb,getState:la,initTemplateApp:hh,initTemplateEngine:el,loadLayoutEditorBundle:ph,renderTemplate:Rs,updateTemplateData:Ds},Symbol.toStringTag,{value:"Module"}));tn.DataSourceManager=Or,tn.LayoutLoader=th,tn.TemplateApp=Yo,tn.TemplateEngine=tl,tn.default=tl,tn.destroyTemplate=Yc,tn.getActionDispatcher=Pb,tn.getState=la,tn.initTemplateApp=hh,tn.initTemplateEngine=el,tn.loadLayoutEditorBundle=ph,tn.renderTemplate=Rs,tn.updateTemplateData=Ds,Object.defineProperties(tn,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})})(this.G7Core=this.G7Core||{});