@abtnode/webapp 1.16.31-beta-4246ab25 → 1.16.31-beta-53480e26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blocklet.js +1 -1
- package/blocklet.yml +1 -1
- package/dist/assets/{Add-DL37aees.js → Add-Cgp6UmAg.js} +1 -1
- package/dist/assets/{ArrowDropDown-dhBf3UQN.js → ArrowDropDown-BVjtUDnO.js} +1 -1
- package/dist/assets/{Autocomplete-B1K-z6j7.js → Autocomplete-CX2pOSKy.js} +1 -1
- package/dist/assets/{Breadcrumbs-CPq3Co_Q.js → Breadcrumbs-CfLdvQuh.js} +1 -1
- package/dist/assets/{ButtonGroup-B8amf32z.js → ButtonGroup-BFB8FBwo.js} +1 -1
- package/dist/assets/{CheckCircle-KqDiWfg9.js → CheckCircle-BxN7W-le.js} +1 -1
- package/dist/assets/{ChevronLeft-CHS38-Lf.js → ChevronLeft-Pw3iZqJe.js} +1 -1
- package/dist/assets/{ChevronRight-DfWcXs0k.js → ChevronRight-CmJg2Cw4.js} +1 -1
- package/dist/assets/{Close-c20DJvRG.js → Close-bUHIxhaj.js} +1 -1
- package/dist/assets/{Delete-CIF3-2at.js → Delete-D_OS9ALf.js} +1 -1
- package/dist/assets/DeleteOutline-BvZiK55n.js +1 -0
- package/dist/assets/{DeleteOutline-56evEBiz.js → DeleteOutline-DMSjGyRf.js} +1 -1
- package/dist/assets/{Done-BYn5tion.js → Done-B3fd1NBv.js} +1 -1
- package/dist/assets/{Edit-Dsu22ySn.js → Edit-D0kDKp7P.js} +1 -1
- package/dist/assets/{EditIcon-CYYg8zYs.js → EditIcon-BK0ltKbv.js} +1 -1
- package/dist/assets/{ExpandMore-C21iA0xJ.js → ExpandMore-Bf1LLE51.js} +1 -1
- package/dist/assets/{FilterList-BFL6oxUg.js → FilterList-DmnR7V-T.js} +1 -1
- package/dist/assets/{Google-CZd5WdNY.js → Google-DQcXNjwe.js} +1 -1
- package/dist/assets/{Https-CvxDQ1y6.js → Https-DOuq786b.js} +1 -1
- package/dist/assets/{InputAdornment-BZ_RPHtc.js → InputAdornment-B4c5V3Mf.js} +1 -1
- package/dist/assets/{InputLabel-ZaMTuamD.js → InputLabel-BH8ojsN6.js} +1 -1
- package/dist/assets/{LastPage-Bmj6_zXy.js → LastPage-VB_AS_Vh.js} +1 -1
- package/dist/assets/{Launch-DyPv-wpY.js → Launch-DVaDsXRB.js} +1 -1
- package/dist/assets/{Link-Cn96OUM-.js → Link-Cq7wD1in.js} +1 -1
- package/dist/assets/{LoadingButton-B7ngIBYG.js → LoadingButton-BB0SfI5U.js} +1 -1
- package/dist/assets/{LockIcon-C2_I6NRC.js → LockIcon-ikzn_F6v.js} +1 -1
- package/dist/assets/{Loop-CXxNVtqo.js → Loop-CoIB6wNF.js} +1 -1
- package/dist/assets/{MoreHoriz-C-thER3e.js → MoreHoriz-ipAxzckg.js} +1 -1
- package/dist/assets/{MoreVert-BbRpNG54.js → MoreVert-nny3Ft7E.js} +1 -1
- package/dist/assets/{Pagination-YsqG8BmD.js → Pagination-DupWn88M.js} +1 -1
- package/dist/assets/{Public-D40ngsv3.js → Public-7nhJMjBD.js} +1 -1
- package/dist/assets/{SchemaReference.es-4ilmwa0a.js → SchemaReference.es-BMApSZwQ.js} +1 -1
- package/dist/assets/{Search-BjqcNmUl.js → Search-BUTthfzy.js} +1 -1
- package/dist/assets/{Select-CTPbRXl_.js → Select-BARjOLQh.js} +1 -1
- package/dist/assets/{Skeleton-9aiTk_xE.js → Skeleton-TUa0fNMH.js} +1 -1
- package/dist/assets/{Slider-Dy4m2qCN.js → Slider-DiT8jKeQ.js} +1 -1
- package/dist/assets/{Stepper-Bp8fNaBj.js → Stepper-BolhLUn_.js} +1 -1
- package/dist/assets/{TextField--mkozHu1.js → TextField-DLzLnEQT.js} +1 -1
- package/dist/assets/{ToggleButtonGroup-CljyOBsZ.js → ToggleButtonGroup-cXYZUu5r.js} +1 -1
- package/dist/assets/{ViewList-1TToQDPQ.js → ViewList-DxCKhzhs.js} +1 -1
- package/dist/assets/{actions-CKEDmJsZ.js → actions-DuBtPyY2.js} +1 -1
- package/dist/assets/{actions-CVYlEm9g.js → actions-ieXq1D_3.js} +1 -1
- package/dist/assets/{agreement-BELKcZFJ.js → agreement--45MLHN7.js} +1 -1
- package/dist/assets/api-DJ02_-Oy.js +1 -0
- package/dist/assets/{app-avatar-DmA8thcQ.js → app-avatar-2eSD2CPg.js} +1 -1
- package/dist/assets/{ar-CqvGG4eC.js → ar-2JePd-i1.js} +1 -1
- package/dist/assets/{audit-logs-BmbmEurZ.js → audit-logs-Dt9lalk3.js} +1 -1
- package/dist/assets/blocklet-C4NgRaSH.js +1 -0
- package/dist/assets/{brace-fold.es-DM6M5C2I.js → brace-fold.es-Cx7Pp8oO.js} +1 -1
- package/dist/assets/{bundle-avatar-BgWpyLQN.js → bundle-avatar-CstwvF2w.js} +1 -1
- package/dist/assets/{chart-CPaIqFF4.js → chart-DEAsbY7p.js} +1 -1
- package/dist/assets/{click-to-copy-B8WKUmW2.js → click-to-copy-Bsaf2xRi.js} +1 -1
- package/dist/assets/{closebrackets.es-Cfx18euz.js → closebrackets.es-LDf_Hccp.js} +1 -1
- package/dist/assets/{codemirror.es-DGWmyCdP.js → codemirror.es-DCD0kuMs.js} +1 -1
- package/dist/assets/{comment.es-DRCrPFfC.js → comment.es-RtZGLLrV.js} +1 -1
- package/dist/assets/{config-navigation-MxvX_AXR.js → config-navigation-_ZUWFkgh.js} +1 -1
- package/dist/assets/{de-l0XzFKav.js → de-DFRVy5eA.js} +1 -1
- package/dist/assets/{delete-confirm-DRGukBtY.js → delete-confirm-CpfgPoTZ.js} +1 -1
- package/dist/assets/{detail-Bhy-IRuk.js → detail-CGNFghKt.js} +3 -3
- package/dist/assets/{dialog.es-D--XLIrn.js → dialog.es-CY4DcxNf.js} +1 -1
- package/dist/assets/{download-BQnLF2v1.js → download-CWVMCLbP.js} +1 -1
- package/dist/assets/{es-DYmEeFzA.js → es-D3TLX5Mb.js} +1 -1
- package/dist/assets/{foldgutter.es-C0qtKtAX.js → foldgutter.es-BZu7SNj_.js} +1 -1
- package/dist/assets/{fr-DwS-xj4v.js → fr-B2p5dLWr.js} +1 -1
- package/dist/assets/getValidReactChildren-CLVx1EWM.js +1 -0
- package/dist/assets/{hi-Dj91QHv6.js → hi-DmXVnjfE.js} +1 -1
- package/dist/assets/{hint.es-BmhQ25XR.js → hint.es-DdDZBiN1.js} +1 -1
- package/dist/assets/{hint.es2-BX3GRjfO.js → hint.es2-B6S-tUTH.js} +1 -1
- package/dist/assets/{id-CzhlCzfQ.js → id-BPCkzz44.js} +1 -1
- package/dist/assets/{iframe-BFCDhgOr.js → iframe-BkaiAX0T.js} +1 -1
- package/dist/assets/{index-5SNrEmrV.js → index--loYEiKM.js} +1 -1
- package/dist/assets/{index-oTFnJoAS.js → index-0Sgb5oPf.js} +1 -1
- package/dist/assets/{index-BGE0jyVo.js → index-6-px9qAy.js} +1 -1
- package/dist/assets/{index-RrJkcdxY.js → index-B0m14nWb.js} +3 -3
- package/dist/assets/{index-Pzow3iAK.js → index-BD4I6crD.js} +1 -1
- package/dist/assets/{index-lIhJ9hU9.js → index-BJGMWnA_.js} +1 -1
- package/dist/assets/{index-CiG2dcjc.js → index-BQXrgmCr.js} +1 -1
- package/dist/assets/{index-C_hgTU8a.js → index-BZAu7qvV.js} +4 -4
- package/dist/assets/{index-CIrcsI7B.js → index-B_Mci9Ef.js} +1 -1
- package/dist/assets/{index-BvJ8mTCj.js → index-BkB6wU5C.js} +1 -1
- package/dist/assets/{index-B5uOXUkd.js → index-BkZfZe7e.js} +1 -1
- package/dist/assets/{index-CDOPpBF8.js → index-Bmta40GX.js} +1 -1
- package/dist/assets/{index-Br78006l.js → index-BnYjPpqB.js} +1 -1
- package/dist/assets/{index-YQ0W9Dn_.js → index-Bv32KhPI.js} +1 -1
- package/dist/assets/{index-B3q00Emv.js → index-C0C9n0GF.js} +1 -1
- package/dist/assets/{index-CALkY1DF.js → index-C6PRgT9c.js} +13 -13
- package/dist/assets/{index-BNm8r4bF.js → index-CDZ9mGf1.js} +1 -1
- package/dist/assets/{index-B6u-tjKR.js → index-CDfDGgRs.js} +1 -1
- package/dist/assets/{index-DWpyvk3k.js → index-CEIupTjX.js} +1 -1
- package/dist/assets/{index-DxhUoMTb.js → index-CNLVpIub.js} +1 -1
- package/dist/assets/{index-CmmvTPoy.js → index-CPI218vA.js} +1 -1
- package/dist/assets/{index-Cq3aT1Wc.js → index-CRNV5rSE.js} +1 -1
- package/dist/assets/{index-D1klsajH.js → index-CWuN3id6.js} +1 -1
- package/dist/assets/{index-C-Ia-HAG.js → index-CiBtNKkh.js} +1 -1
- package/dist/assets/{index-DRrUQA71.js → index-Cqx1aanX.js} +1 -1
- package/dist/assets/{index-IQotLDn2.js → index-Cyskc2Kt.js} +1 -1
- package/dist/assets/{index-BQelzM1K.js → index-D0sHKZuS.js} +1 -1
- package/dist/assets/{index-CogXVUQY.js → index-D6A1AZLm.js} +1 -1
- package/dist/assets/{index-5nCkYSvj.js → index-D9MRQCOD.js} +1 -1
- package/dist/assets/{index-CBzqRiyi.js → index-DEogVXBk.js} +1 -1
- package/dist/assets/{index-_Ee7BreY.js → index-DVSDRPzS.js} +1 -1
- package/dist/assets/{index-DYXXHiAp.js → index-DXkDzCPE.js} +1 -1
- package/dist/assets/{index-Ba-ukhc4.js → index-DfvPVPq7.js} +3 -3
- package/dist/assets/{index-DPSBf70U.js → index-Dhhn-NRS.js} +1 -1
- package/dist/assets/{index-BlPCM5LR.js → index-DojNP9lM.js} +1 -1
- package/dist/assets/{index-N_ezqcL0.js → index-DqEMTm5N.js} +1 -1
- package/dist/assets/{index-B7E0Awcq.js → index-DwxAoeFn.js} +5 -5
- package/dist/assets/{index-D9wmIisB.js → index-JFZCWUM3.js} +1 -1
- package/dist/assets/{index-CXjif8dM.js → index-PdOAjq0M.js} +1 -1
- package/dist/assets/{index-BpwaCLmN.js → index-gLfOV5I3.js} +1 -1
- package/dist/assets/{index-DVsz8ohf.js → index-juZnKaO5.js} +1 -1
- package/dist/assets/{index-RNKTxkl-.js → index-wpCTocms.js} +1 -1
- package/dist/assets/{index-Dtikx7Eg.js → index-xLDIvbfZ.js} +1 -1
- package/dist/assets/{index.es-ySO_wrVY.js → index.es-rNOLQa7L.js} +1 -1
- package/dist/assets/{index.esm-Dt9b-oQQ.js → index.esm-DsLyE9Xu.js} +1 -1
- package/dist/assets/{info-addon.es-Cti7SUf3.js → info-addon.es-BbJL0YX-.js} +1 -1
- package/dist/assets/{info.es-Cjq7uYw1.js → info.es-9ZCzgTD_.js} +1 -1
- package/dist/assets/{install-from-url-CnbA65na.js → install-from-url-BBpJ4CMF.js} +1 -1
- package/dist/assets/{invitation-CnkWqlnk.js → invitation-CikC7uq2.js} +1 -1
- package/dist/assets/{is-path-prefix-equal-VZvrfn15.js → is-path-prefix-equal-J2hOhmvd.js} +1 -1
- package/dist/assets/{isEqual-DbaWgzI7.js → isEqual-Bmi5Bu3B.js} +1 -1
- package/dist/assets/{item-9QHCFNCg.js → item-CnEz-3f1.js} +1 -1
- package/dist/assets/{ja-Ut-jFS9r.js → ja-DdBhyqmR.js} +1 -1
- package/dist/assets/{javascript.es-CgU_y5qk.js → javascript.es-BF3qqDhg.js} +1 -1
- package/dist/assets/{jump-to-line.es-CkyEHJGg.js → jump-to-line.es-BN5G6tY4.js} +1 -1
- package/dist/assets/{jump.es-COrGNxUe.js → jump.es-CnQvllfZ.js} +1 -1
- package/dist/assets/{ko-Clp4qzRT.js → ko-DagkAgw5.js} +1 -1
- package/dist/assets/{line-lhxzoPMu.js → line-UNVSEb9_.js} +3 -3
- package/dist/assets/{lint.es-CkHP4nYe.js → lint.es-C2AN8ZFv.js} +1 -1
- package/dist/assets/{lint.es2-Bw_rT_LD.js → lint.es2-C2WqkHvr.js} +1 -1
- package/dist/assets/{lint.es3-B0ohsdqX.js → lint.es3-Fz-_4dtf.js} +1 -1
- package/dist/assets/{list-header-u47Vy7cK.js → list-header-DA_lXPf6.js} +1 -1
- package/dist/assets/{log-DAb66FWZ.js → log-C8vvn-bO.js} +1 -1
- package/dist/assets/{lottie-D3pWzJE5.js → lottie-BKBPu1u_.js} +1 -1
- package/dist/assets/{matchbrackets.es-D0dI78Ov.js → matchbrackets.es-DO06XhQI.js} +1 -1
- package/dist/assets/{memory-DCJHOzSN.js → memory-WvEFC3gh.js} +1 -1
- package/dist/assets/{mode.es-DIFYwRGJ.js → mode.es-CRa-no-H.js} +1 -1
- package/dist/assets/{mode.es2-UFFtoNko.js → mode.es2-CHXzYyrw.js} +1 -1
- package/dist/assets/{mode.es3-Czs05A2c.js → mode.es3-DLPMB81l.js} +1 -1
- package/dist/assets/{onlineParser.es-Cve5jod2.js → onlineParser.es-B30kjcEV.js} +1 -1
- package/dist/assets/{overview-CwgWiiQU.js → overview-CQAvezED.js} +1 -1
- package/dist/assets/{pt-BXaJbqdY.js → pt-DTmAqAWs.js} +1 -1
- package/dist/assets/{react-QTh71lk0.js → react-BaSd4pJ4.js} +3 -3
- package/dist/assets/{redux-DuVPlCbI.js → redux-DM810vAx.js} +1 -1
- package/dist/assets/{resource-dialog-qQmBsEn9.js → resource-dialog-2z0a-PF6.js} +1 -1
- package/dist/assets/{ru-p_K_7IoQ.js → ru-BZQlsXeO.js} +1 -1
- package/dist/assets/{runtime-mWgKIuny.js → runtime-CIi4aCkC.js} +1 -1
- package/dist/assets/{schema-DzJK4Qpe.js → schema-DuwsmSM1.js} +1 -1
- package/dist/assets/sdk-BKOngHkd.js +1 -0
- package/dist/assets/{search.es-DiJHc_2I.js → search.es-cqcZ4Cw-.js} +1 -1
- package/dist/assets/{searchcursor.es-BYY4_s1M.js → searchcursor.es-B3Ng334L.js} +1 -1
- package/dist/assets/service-Bmw11bED.js +1 -0
- package/dist/assets/{shorten-label-BEC5vkYE.js → shorten-label-DkMvii7f.js} +1 -1
- package/dist/assets/{show-hint.es-BpFxoO3A.js → show-hint.es-Dp6As-xn.js} +1 -1
- package/dist/assets/{slicedToArray-B2K3KAC3.js → slicedToArray-CtU0PO29.js} +1 -1
- package/dist/assets/{spaces-CDn9UU1P.js → spaces-D1jkJ7_l.js} +1 -1
- package/dist/assets/{status-Cd5tThoM.js → status-rJ7yuno3.js} +1 -1
- package/dist/assets/{sublime.es-kDncqIBh.js → sublime.es-_V1o9dX1.js} +1 -1
- package/dist/assets/{switch-control-ocoukMWO.js → switch-control-CfrXUkfO.js} +1 -1
- package/dist/assets/{table-icons-Dmg06KMa.js → table-icons-Kvp_gs0u.js} +1 -1
- package/dist/assets/{team-DMKqiFvO.js → team-Y8ObkRFn.js} +1 -1
- package/dist/assets/{th-BJT9w_Lk.js → th-DSRLorcE.js} +1 -1
- package/dist/assets/{toUpper-Bcve63Ex.js → toUpper-DjqnYte2.js} +1 -1
- package/dist/assets/{traffic-Wxp8Ltv5.js → traffic-Co02z8Fi.js} +1 -1
- package/dist/assets/{url-evaluation-nvX3IIaY.js → url-evaluation-B6AI2aUV.js} +1 -1
- package/dist/assets/{url-join-BCJqa7hr.js → url-join-FDweORaV.js} +1 -1
- package/dist/assets/{use-blocklet-info-for-connect-did-spaces-BtE34caf.js → use-blocklet-info-for-connect-did-spaces-DsZkMmxY.js} +1 -1
- package/dist/assets/{useLocalStorage-BD5WLoZI.js → useLocalStorage-BoA343IZ.js} +1 -1
- package/dist/assets/{useThemeProps-4gHuFupb.js → useThemeProps-C9K3QBYc.js} +1 -1
- package/dist/assets/{util-C4ms7HGA.js → util-D5fDZ_8L.js} +1 -1
- package/dist/assets/{vi-CycHlNkN.js → vi-dE7BhTCc.js} +1 -1
- package/dist/assets/{wait-container-LHLomXQI.js → wait-container-f5I4qQ6M.js} +1 -1
- package/dist/assets/{withStyles-DsOD3JMa.js → withStyles-CenNsZ2i.js} +1 -1
- package/dist/assets/wrap-locale-6M8hS8dV.js +1 -0
- package/dist/assets/{zh-Dv1l1HNj.js → zh-DfGqeTts.js} +1 -1
- package/dist/assets/{zh-tw-44W5osxR.js → zh-tw-COZAaB9V.js} +1 -1
- package/dist/index.html +1 -1
- package/dist/service-worker.js +1 -1
- package/package.json +1 -1
- package/dist/assets/DeleteOutline-DbOwkOVw.js +0 -1
- package/dist/assets/api-DQmH1_5T.js +0 -1
- package/dist/assets/blocklet-ORJg4gol.js +0 -1
- package/dist/assets/getValidReactChildren-ljwZENsP.js +0 -1
- package/dist/assets/sdk-CuTlhAhm.js +0 -1
- package/dist/assets/service-CMRv4JDv.js +0 -1
- package/dist/assets/wrap-locale-DhsSCfjT.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-Bmta40GX.js","./index-BojVbZw0.js","./index-CDfDGgRs.js","./click-to-copy-Bsaf2xRi.js","./withStyles-CenNsZ2i.js","./index-B_Mci9Ef.js","./useLocalStorage-BoA343IZ.js","./index-xLDIvbfZ.js","./FilterList-DmnR7V-T.js","./useThemeProps-C9K3QBYc.js","./Select-BARjOLQh.js","./Delete-D_OS9ALf.js","./InputLabel-BH8ojsN6.js","./TextField-DLzLnEQT.js","./LastPage-VB_AS_Vh.js","./index-Dhhn-NRS.js","./redux-DM810vAx.js","./Search-BUTthfzy.js","./index-BQXrgmCr.js","./MoreVert-nny3Ft7E.js","./status-rJ7yuno3.js","./url-evaluation-B6AI2aUV.js","./actions-ieXq1D_3.js","./ButtonGroup-BFB8FBwo.js","./getValidReactChildren-CLVx1EWM.js","./index-Cqx1aanX.js","./isEqual-Bmi5Bu3B.js","./install-from-url-BBpJ4CMF.js","./schema-DuwsmSM1.js","./index-CWuN3id6.js","./Stepper-BolhLUn_.js","./app-avatar-2eSD2CPg.js","./Add-Cgp6UmAg.js","./index-BnYjPpqB.js","./ExpandMore-Bf1LLE51.js","./index-PdOAjq0M.js","./index-wpCTocms.js","./url-join-FDweORaV.js","./Skeleton-TUa0fNMH.js","./Close-bUHIxhaj.js","./lottie-BKBPu1u_.js","./wait-container-f5I4qQ6M.js","./Launch-DVaDsXRB.js","./DeleteOutline-BvZiK55n.js","./DeleteOutline-DMSjGyRf.js","./spaces-D1jkJ7_l.js","./api-DJ02_-Oy.js","./index-D0sHKZuS.js","./item-CnEz-3f1.js","./index-juZnKaO5.js","./index-ZG7jWpak.js","./index-gLfOV5I3.js","./InputAdornment-B4c5V3Mf.js","./preact.module-DJUF--8d.js","./Done-B3fd1NBv.js","./delete-confirm-CpfgPoTZ.js","./shorten-label-DkMvii7f.js","./blocklet-C4NgRaSH.js","./item-D_j8BgsJ.css","./ArrowDropDown-BVjtUDnO.js","./Breadcrumbs-CfLdvQuh.js","./index-C6PRgT9c.js","./index-CNLVpIub.js","./index.esm-DsLyE9Xu.js","./switch-control-CfrXUkfO.js","./is-path-prefix-equal-J2hOhmvd.js","./Link-Cq7wD1in.js","./logo-BKA11TRi.js","./LoadingButton-BB0SfI5U.js","./Public-7nhJMjBD.js","./CheckCircle-BxN7W-le.js","./ChevronRight-CmJg2Cw4.js","./Edit-D0kDKp7P.js","./Https-DOuq786b.js","./Slider-DiT8jKeQ.js","./index-6-px9qAy.js","./download-CWVMCLbP.js","./download-D33dFtt_.css","./index-Cyskc2Kt.js","./audit-logs-Dt9lalk3.js","./index-DXkDzCPE.js","./index-D4PP6P2d.css","./Pagination-DupWn88M.js","./index-BD4I6crD.js","./index-CPI218vA.js","./Loop-CoIB6wNF.js","./ViewList-DxCKhzhs.js","./list-header-DA_lXPf6.js","./index--loYEiKM.js","./resource-dialog-2z0a-PF6.js","./index-CRNV5rSE.js","./team-Y8ObkRFn.js","./sdk-BKOngHkd.js","./actions-DuBtPyY2.js","./MoreHoriz-ipAxzckg.js","./index-Bv32KhPI.js","./EditIcon-BK0ltKbv.js","./LockIcon-ikzn_F6v.js","./Google-DQcXNjwe.js","./ToggleButtonGroup-cXYZUu5r.js","./detail-CGNFghKt.js","./index-DEogVXBk.js","./index-CiBtNKkh.js","./invitation-CikC7uq2.js","./index-BkB6wU5C.js","./wrap-locale-6M8hS8dV.js","./index-B0m14nWb.js","./index-DqEMTm5N.js","./index-BkZfZe7e.js","./agreement--45MLHN7.js","./index-DojNP9lM.js","./index-0Sgb5oPf.js","./index-DwxAoeFn.js","./index-C7igR7se.css","./index-DVSDRPzS.js","./traffic-Co02z8Fi.js","./iframe-BkaiAX0T.js","./ChevronLeft-Pw3iZqJe.js","./chart-DEAsbY7p.js","./bundle-avatar-CstwvF2w.js","./memory-WvEFC3gh.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
var Km=a=>{throw TypeError(a)};var Pp=(a,j,_e)=>j.has(a)||Km("Cannot "+_e);var Wr=(a,j,_e)=>(Pp(a,j,"read from private field"),_e?_e.call(a):j.get(a)),Ms=(a,j,_e)=>j.has(a)?Km("Cannot add the same private member more than once"):j instanceof WeakSet?j.add(a):j.set(a,_e),Uo=(a,j,_e,et)=>(Pp(a,j,"write to private field"),et?et.call(a,_e):j.set(a,_e),_e),So=(a,j,_e)=>(Pp(a,j,"access private method"),_e);var Mp=(a,j,_e,et)=>({set _(nt){Uo(a,j,nt,_e)},get _(){return Wr(a,j,et)}});function _mergeNamespaces(a,j){for(var _e=0;_e<j.length;_e++){const et=j[_e];if(typeof et!="string"&&!Array.isArray(et)){for(const nt in et)if(nt!=="default"&&!(nt in a)){const tt=Object.getOwnPropertyDescriptor(et,nt);tt&&Object.defineProperty(a,nt,tt.get?tt:{enumerable:!0,get:()=>et[nt]})}}}return Object.freeze(Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}))}(function(){const j=document.createElement("link").relList;if(j&&j.supports&&j.supports("modulepreload"))return;for(const nt of document.querySelectorAll('link[rel="modulepreload"]'))et(nt);new MutationObserver(nt=>{for(const tt of nt)if(tt.type==="childList")for(const it of tt.addedNodes)it.tagName==="LINK"&&it.rel==="modulepreload"&&et(it)}).observe(document,{childList:!0,subtree:!0});function _e(nt){const tt={};return nt.integrity&&(tt.integrity=nt.integrity),nt.referrerPolicy&&(tt.referrerPolicy=nt.referrerPolicy),nt.crossOrigin==="use-credentials"?tt.credentials="include":nt.crossOrigin==="anonymous"?tt.credentials="omit":tt.credentials="same-origin",tt}function et(nt){if(nt.ep)return;nt.ep=!0;const tt=_e(nt);fetch(nt.href,tt)}})();var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs$1(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}function getAugmentedNamespace(a){if(a.__esModule)return a;var j=a.default;if(typeof j=="function"){var _e=function et(){return this instanceof et?Reflect.construct(j,arguments,this.constructor):j.apply(this,arguments)};_e.prototype=j.prototype}else _e={};return Object.defineProperty(_e,"__esModule",{value:!0}),Object.keys(a).forEach(function(et){var nt=Object.getOwnPropertyDescriptor(a,et);Object.defineProperty(_e,et,nt.get?nt:{enumerable:!0,get:function(){return a[et]}})}),_e}var jsxRuntime={exports:{}},reactJsxRuntime_production_min={},react={exports:{}},react_production_min={};/**
|
|
3
3
|
* @license React
|
|
4
4
|
* react.production.min.js
|
|
@@ -276,7 +276,7 @@ use chrome, FireFox or Internet Explorer 11`)}var j=safeBufferExports,_e=browser
|
|
|
276
276
|
`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(j){return j instanceof this?j:new this(j)}static concat(j,..._e){const et=new this(j);return _e.forEach(nt=>et.set(nt)),et}static accessor(j){const et=(this[$internals]=this[$internals]={accessors:{}}).accessors,nt=this.prototype;function tt(it){const ut=normalizeHeader(it);et[ut]||(buildAccessors(nt,it),et[ut]=!0)}return utils$1.isArray(j)?j.forEach(tt):tt(j),this}};AxiosHeaders$1.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);utils$1.reduceDescriptors(AxiosHeaders$1.prototype,({value:a},j)=>{let _e=j[0].toUpperCase()+j.slice(1);return{get:()=>a,set(et){this[_e]=et}}});utils$1.freezeMethods(AxiosHeaders$1);function transformData(a,j){const _e=this||defaults$1,et=j||_e,nt=AxiosHeaders$1.from(et.headers);let tt=et.data;return utils$1.forEach(a,function(ut){tt=ut.call(_e,tt,nt.normalize(),j?j.status:void 0)}),nt.normalize(),tt}function isCancel$1(a){return!!(a&&a.__CANCEL__)}function CanceledError$1(a,j,_e){AxiosError$1.call(this,a??"canceled",AxiosError$1.ERR_CANCELED,j,_e),this.name="CanceledError"}utils$1.inherits(CanceledError$1,AxiosError$1,{__CANCEL__:!0});function settle(a,j,_e){const et=_e.config.validateStatus;!_e.status||!et||et(_e.status)?a(_e):j(new AxiosError$1("Request failed with status code "+_e.status,[AxiosError$1.ERR_BAD_REQUEST,AxiosError$1.ERR_BAD_RESPONSE][Math.floor(_e.status/100)-4],_e.config,_e.request,_e))}function parseProtocol(a){const j=/^([-+\w]{1,25})(:?\/\/|:)/.exec(a);return j&&j[1]||""}function speedometer(a,j){a=a||10;const _e=new Array(a),et=new Array(a);let nt=0,tt=0,it;return j=j!==void 0?j:1e3,function(ft){const pt=Date.now(),dt=et[tt];it||(it=pt),_e[nt]=ft,et[nt]=pt;let mt=tt,Et=0;for(;mt!==nt;)Et+=_e[mt++],mt=mt%a;if(nt=(nt+1)%a,nt===tt&&(tt=(tt+1)%a),pt-it<j)return;const wt=dt&&pt-dt;return wt?Math.round(Et*1e3/wt):void 0}}function throttle(a,j){let _e=0,et=1e3/j,nt,tt;const it=(pt,dt=Date.now())=>{_e=dt,nt=null,tt&&(clearTimeout(tt),tt=null),a.apply(null,pt)};return[(...pt)=>{const dt=Date.now(),mt=dt-_e;mt>=et?it(pt,dt):(nt=pt,tt||(tt=setTimeout(()=>{tt=null,it(nt)},et-mt)))},()=>nt&&it(nt)]}const progressEventReducer=(a,j,_e=3)=>{let et=0;const nt=speedometer(50,250);return throttle(tt=>{const it=tt.loaded,ut=tt.lengthComputable?tt.total:void 0,ft=it-et,pt=nt(ft),dt=it<=ut;et=it;const mt={loaded:it,total:ut,progress:ut?it/ut:void 0,bytes:ft,rate:pt||void 0,estimated:pt&&ut&&dt?(ut-it)/pt:void 0,event:tt,lengthComputable:ut!=null,[j?"download":"upload"]:!0};a(mt)},_e)},progressEventDecorator=(a,j)=>{const _e=a!=null;return[et=>j[0]({lengthComputable:_e,total:a,loaded:et}),j[1]]},asyncDecorator=a=>(...j)=>utils$1.asap(()=>a(...j)),isURLSameOrigin=platform.hasStandardBrowserEnv?function a(){const j=platform.navigator&&/(msie|trident)/i.test(platform.navigator.userAgent),_e=document.createElement("a");let et;function nt(tt){let it=tt;return j&&(_e.setAttribute("href",it),it=_e.href),_e.setAttribute("href",it),{href:_e.href,protocol:_e.protocol?_e.protocol.replace(/:$/,""):"",host:_e.host,search:_e.search?_e.search.replace(/^\?/,""):"",hash:_e.hash?_e.hash.replace(/^#/,""):"",hostname:_e.hostname,port:_e.port,pathname:_e.pathname.charAt(0)==="/"?_e.pathname:"/"+_e.pathname}}return et=nt(window.location.href),function(it){const ut=utils$1.isString(it)?nt(it):it;return ut.protocol===et.protocol&&ut.host===et.host}}():function a(){return function(){return!0}}(),cookies=platform.hasStandardBrowserEnv?{write(a,j,_e,et,nt,tt){const it=[a+"="+encodeURIComponent(j)];utils$1.isNumber(_e)&&it.push("expires="+new Date(_e).toGMTString()),utils$1.isString(et)&&it.push("path="+et),utils$1.isString(nt)&&it.push("domain="+nt),tt===!0&&it.push("secure"),document.cookie=it.join("; ")},read(a){const j=document.cookie.match(new RegExp("(^|;\\s*)("+a+")=([^;]*)"));return j?decodeURIComponent(j[3]):null},remove(a){this.write(a,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function isAbsoluteURL(a){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(a)}function combineURLs(a,j){return j?a.replace(/\/?\/$/,"")+"/"+j.replace(/^\/+/,""):a}function buildFullPath(a,j){return a&&!isAbsoluteURL(j)?combineURLs(a,j):j}const headersToObject=a=>a instanceof AxiosHeaders$1?{...a}:a;function mergeConfig$1(a,j){j=j||{};const _e={};function et(pt,dt,mt){return utils$1.isPlainObject(pt)&&utils$1.isPlainObject(dt)?utils$1.merge.call({caseless:mt},pt,dt):utils$1.isPlainObject(dt)?utils$1.merge({},dt):utils$1.isArray(dt)?dt.slice():dt}function nt(pt,dt,mt){if(utils$1.isUndefined(dt)){if(!utils$1.isUndefined(pt))return et(void 0,pt,mt)}else return et(pt,dt,mt)}function tt(pt,dt){if(!utils$1.isUndefined(dt))return et(void 0,dt)}function it(pt,dt){if(utils$1.isUndefined(dt)){if(!utils$1.isUndefined(pt))return et(void 0,pt)}else return et(void 0,dt)}function ut(pt,dt,mt){if(mt in j)return et(pt,dt);if(mt in a)return et(void 0,pt)}const ft={url:tt,method:tt,data:tt,baseURL:it,transformRequest:it,transformResponse:it,paramsSerializer:it,timeout:it,timeoutMessage:it,withCredentials:it,withXSRFToken:it,adapter:it,responseType:it,xsrfCookieName:it,xsrfHeaderName:it,onUploadProgress:it,onDownloadProgress:it,decompress:it,maxContentLength:it,maxBodyLength:it,beforeRedirect:it,transport:it,httpAgent:it,httpsAgent:it,cancelToken:it,socketPath:it,responseEncoding:it,validateStatus:ut,headers:(pt,dt)=>nt(headersToObject(pt),headersToObject(dt),!0)};return utils$1.forEach(Object.keys(Object.assign({},a,j)),function(dt){const mt=ft[dt]||nt,Et=mt(a[dt],j[dt],dt);utils$1.isUndefined(Et)&&mt!==ut||(_e[dt]=Et)}),_e}const resolveConfig=a=>{const j=mergeConfig$1({},a);let{data:_e,withXSRFToken:et,xsrfHeaderName:nt,xsrfCookieName:tt,headers:it,auth:ut}=j;j.headers=it=AxiosHeaders$1.from(it),j.url=buildURL(buildFullPath(j.baseURL,j.url),a.params,a.paramsSerializer),ut&&it.set("Authorization","Basic "+btoa((ut.username||"")+":"+(ut.password?unescape(encodeURIComponent(ut.password)):"")));let ft;if(utils$1.isFormData(_e)){if(platform.hasStandardBrowserEnv||platform.hasStandardBrowserWebWorkerEnv)it.setContentType(void 0);else if((ft=it.getContentType())!==!1){const[pt,...dt]=ft?ft.split(";").map(mt=>mt.trim()).filter(Boolean):[];it.setContentType([pt||"multipart/form-data",...dt].join("; "))}}if(platform.hasStandardBrowserEnv&&(et&&utils$1.isFunction(et)&&(et=et(j)),et||et!==!1&&isURLSameOrigin(j.url))){const pt=nt&&tt&&cookies.read(tt);pt&&it.set(nt,pt)}return j},isXHRAdapterSupported=typeof XMLHttpRequest<"u",xhrAdapter=isXHRAdapterSupported&&function(a){return new Promise(function(_e,et){const nt=resolveConfig(a);let tt=nt.data;const it=AxiosHeaders$1.from(nt.headers).normalize();let{responseType:ut,onUploadProgress:ft,onDownloadProgress:pt}=nt,dt,mt,Et,wt,St;function Ct(){wt&&wt(),St&&St(),nt.cancelToken&&nt.cancelToken.unsubscribe(dt),nt.signal&&nt.signal.removeEventListener("abort",dt)}let Dt=new XMLHttpRequest;Dt.open(nt.method.toUpperCase(),nt.url,!0),Dt.timeout=nt.timeout;function At(){if(!Dt)return;const It=AxiosHeaders$1.from("getAllResponseHeaders"in Dt&&Dt.getAllResponseHeaders()),zt={data:!ut||ut==="text"||ut==="json"?Dt.responseText:Dt.response,status:Dt.status,statusText:Dt.statusText,headers:It,config:a,request:Dt};settle(function(Ht){_e(Ht),Ct()},function(Ht){et(Ht),Ct()},zt),Dt=null}"onloadend"in Dt?Dt.onloadend=At:Dt.onreadystatechange=function(){!Dt||Dt.readyState!==4||Dt.status===0&&!(Dt.responseURL&&Dt.responseURL.indexOf("file:")===0)||setTimeout(At)},Dt.onabort=function(){Dt&&(et(new AxiosError$1("Request aborted",AxiosError$1.ECONNABORTED,a,Dt)),Dt=null)},Dt.onerror=function(){et(new AxiosError$1("Network Error",AxiosError$1.ERR_NETWORK,a,Dt)),Dt=null},Dt.ontimeout=function(){let Lt=nt.timeout?"timeout of "+nt.timeout+"ms exceeded":"timeout exceeded";const zt=nt.transitional||transitionalDefaults;nt.timeoutErrorMessage&&(Lt=nt.timeoutErrorMessage),et(new AxiosError$1(Lt,zt.clarifyTimeoutError?AxiosError$1.ETIMEDOUT:AxiosError$1.ECONNABORTED,a,Dt)),Dt=null},tt===void 0&&it.setContentType(null),"setRequestHeader"in Dt&&utils$1.forEach(it.toJSON(),function(Lt,zt){Dt.setRequestHeader(zt,Lt)}),utils$1.isUndefined(nt.withCredentials)||(Dt.withCredentials=!!nt.withCredentials),ut&&ut!=="json"&&(Dt.responseType=nt.responseType),pt&&([Et,St]=progressEventReducer(pt,!0),Dt.addEventListener("progress",Et)),ft&&Dt.upload&&([mt,wt]=progressEventReducer(ft),Dt.upload.addEventListener("progress",mt),Dt.upload.addEventListener("loadend",wt)),(nt.cancelToken||nt.signal)&&(dt=It=>{Dt&&(et(!It||It.type?new CanceledError$1(null,a,Dt):It),Dt.abort(),Dt=null)},nt.cancelToken&&nt.cancelToken.subscribe(dt),nt.signal&&(nt.signal.aborted?dt():nt.signal.addEventListener("abort",dt)));const Pt=parseProtocol(nt.url);if(Pt&&platform.protocols.indexOf(Pt)===-1){et(new AxiosError$1("Unsupported protocol "+Pt+":",AxiosError$1.ERR_BAD_REQUEST,a));return}Dt.send(tt||null)})},composeSignals=(a,j)=>{let _e=new AbortController,et;const nt=function(ft){if(!et){et=!0,it();const pt=ft instanceof Error?ft:this.reason;_e.abort(pt instanceof AxiosError$1?pt:new CanceledError$1(pt instanceof Error?pt.message:pt))}};let tt=j&&setTimeout(()=>{nt(new AxiosError$1(`timeout ${j} of ms exceeded`,AxiosError$1.ETIMEDOUT))},j);const it=()=>{a&&(tt&&clearTimeout(tt),tt=null,a.forEach(ft=>{ft&&(ft.removeEventListener?ft.removeEventListener("abort",nt):ft.unsubscribe(nt))}),a=null)};a.forEach(ft=>ft&&ft.addEventListener&&ft.addEventListener("abort",nt));const{signal:ut}=_e;return ut.unsubscribe=it,[ut,()=>{tt&&clearTimeout(tt),tt=null}]},streamChunk=function*(a,j){let _e=a.byteLength;if(!j||_e<j){yield a;return}let et=0,nt;for(;et<_e;)nt=et+j,yield a.slice(et,nt),et=nt},readBytes=async function*(a,j,_e){for await(const et of a)yield*streamChunk(ArrayBuffer.isView(et)?et:await _e(String(et)),j)},trackStream=(a,j,_e,et,nt)=>{const tt=readBytes(a,j,nt);let it=0,ut,ft=pt=>{ut||(ut=!0,et&&et(pt))};return new ReadableStream({async pull(pt){try{const{done:dt,value:mt}=await tt.next();if(dt){ft(),pt.close();return}let Et=mt.byteLength;if(_e){let wt=it+=Et;_e(wt)}pt.enqueue(new Uint8Array(mt))}catch(dt){throw ft(dt),dt}},cancel(pt){return ft(pt),tt.return()}},{highWaterMark:2})},isFetchSupported=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",isReadableStreamSupported=isFetchSupported&&typeof ReadableStream=="function",encodeText=isFetchSupported&&(typeof TextEncoder=="function"?(a=>j=>a.encode(j))(new TextEncoder):async a=>new Uint8Array(await new Response(a).arrayBuffer())),test$1=(a,...j)=>{try{return!!a(...j)}catch{return!1}},supportsRequestStream=isReadableStreamSupported&&test$1(()=>{let a=!1;const j=new Request(platform.origin,{body:new ReadableStream,method:"POST",get duplex(){return a=!0,"half"}}).headers.has("Content-Type");return a&&!j}),DEFAULT_CHUNK_SIZE=64*1024,supportsResponseStream=isReadableStreamSupported&&test$1(()=>utils$1.isReadableStream(new Response("").body)),resolvers={stream:supportsResponseStream&&(a=>a.body)};isFetchSupported&&(a=>{["text","arrayBuffer","blob","formData","stream"].forEach(j=>{!resolvers[j]&&(resolvers[j]=utils$1.isFunction(a[j])?_e=>_e[j]():(_e,et)=>{throw new AxiosError$1(`Response type '${j}' is not supported`,AxiosError$1.ERR_NOT_SUPPORT,et)})})})(new Response);const getBodyLength=async a=>{if(a==null)return 0;if(utils$1.isBlob(a))return a.size;if(utils$1.isSpecCompliantForm(a))return(await new Request(a).arrayBuffer()).byteLength;if(utils$1.isArrayBufferView(a)||utils$1.isArrayBuffer(a))return a.byteLength;if(utils$1.isURLSearchParams(a)&&(a=a+""),utils$1.isString(a))return(await encodeText(a)).byteLength},resolveBodyLength=async(a,j)=>{const _e=utils$1.toFiniteNumber(a.getContentLength());return _e??getBodyLength(j)},fetchAdapter=isFetchSupported&&(async a=>{let{url:j,method:_e,data:et,signal:nt,cancelToken:tt,timeout:it,onDownloadProgress:ut,onUploadProgress:ft,responseType:pt,headers:dt,withCredentials:mt="same-origin",fetchOptions:Et}=resolveConfig(a);pt=pt?(pt+"").toLowerCase():"text";let[wt,St]=nt||tt||it?composeSignals([nt,tt],it):[],Ct,Dt;const At=()=>{!Ct&&setTimeout(()=>{wt&&wt.unsubscribe()}),Ct=!0};let Pt;try{if(ft&&supportsRequestStream&&_e!=="get"&&_e!=="head"&&(Pt=await resolveBodyLength(dt,et))!==0){let Ht=new Request(j,{method:"POST",body:et,duplex:"half"}),Qt;if(utils$1.isFormData(et)&&(Qt=Ht.headers.get("content-type"))&&dt.setContentType(Qt),Ht.body){const[tn,mn]=progressEventDecorator(Pt,progressEventReducer(asyncDecorator(ft)));et=trackStream(Ht.body,DEFAULT_CHUNK_SIZE,tn,mn,encodeText)}}utils$1.isString(mt)||(mt=mt?"include":"omit");const It="credentials"in Request.prototype;Dt=new Request(j,{...Et,signal:wt,method:_e.toUpperCase(),headers:dt.normalize().toJSON(),body:et,duplex:"half",credentials:It?mt:void 0});let Lt=await fetch(Dt);const zt=supportsResponseStream&&(pt==="stream"||pt==="response");if(supportsResponseStream&&(ut||zt)){const Ht={};["status","statusText","headers"].forEach($t=>{Ht[$t]=Lt[$t]});const Qt=utils$1.toFiniteNumber(Lt.headers.get("content-length")),[tn,mn]=ut&&progressEventDecorator(Qt,progressEventReducer(asyncDecorator(ut),!0))||[];Lt=new Response(trackStream(Lt.body,DEFAULT_CHUNK_SIZE,tn,()=>{mn&&mn(),zt&&At()},encodeText),Ht)}pt=pt||"text";let Ft=await resolvers[utils$1.findKey(resolvers,pt)||"text"](Lt,a);return!zt&&At(),St&&St(),await new Promise((Ht,Qt)=>{settle(Ht,Qt,{data:Ft,headers:AxiosHeaders$1.from(Lt.headers),status:Lt.status,statusText:Lt.statusText,config:a,request:Dt})})}catch(It){throw At(),It&&It.name==="TypeError"&&/fetch/i.test(It.message)?Object.assign(new AxiosError$1("Network Error",AxiosError$1.ERR_NETWORK,a,Dt),{cause:It.cause||It}):AxiosError$1.from(It,It&&It.code,a,Dt)}}),knownAdapters={http:httpAdapter,xhr:xhrAdapter,fetch:fetchAdapter};utils$1.forEach(knownAdapters,(a,j)=>{if(a){try{Object.defineProperty(a,"name",{value:j})}catch{}Object.defineProperty(a,"adapterName",{value:j})}});const renderReason=a=>`- ${a}`,isResolvedHandle=a=>utils$1.isFunction(a)||a===null||a===!1,adapters={getAdapter:a=>{a=utils$1.isArray(a)?a:[a];const{length:j}=a;let _e,et;const nt={};for(let tt=0;tt<j;tt++){_e=a[tt];let it;if(et=_e,!isResolvedHandle(_e)&&(et=knownAdapters[(it=String(_e)).toLowerCase()],et===void 0))throw new AxiosError$1(`Unknown adapter '${it}'`);if(et)break;nt[it||"#"+tt]=et}if(!et){const tt=Object.entries(nt).map(([ut,ft])=>`adapter ${ut} `+(ft===!1?"is not supported by the environment":"is not available in the build"));let it=j?tt.length>1?`since :
|
|
277
277
|
`+tt.map(renderReason).join(`
|
|
278
278
|
`):" "+renderReason(tt[0]):"as no adapter specified";throw new AxiosError$1("There is no suitable adapter to dispatch the request "+it,"ERR_NOT_SUPPORT")}return et},adapters:knownAdapters};function throwIfCancellationRequested(a){if(a.cancelToken&&a.cancelToken.throwIfRequested(),a.signal&&a.signal.aborted)throw new CanceledError$1(null,a)}function dispatchRequest(a){return throwIfCancellationRequested(a),a.headers=AxiosHeaders$1.from(a.headers),a.data=transformData.call(a,a.transformRequest),["post","put","patch"].indexOf(a.method)!==-1&&a.headers.setContentType("application/x-www-form-urlencoded",!1),adapters.getAdapter(a.adapter||defaults$1.adapter)(a).then(function(et){return throwIfCancellationRequested(a),et.data=transformData.call(a,a.transformResponse,et),et.headers=AxiosHeaders$1.from(et.headers),et},function(et){return isCancel$1(et)||(throwIfCancellationRequested(a),et&&et.response&&(et.response.data=transformData.call(a,a.transformResponse,et.response),et.response.headers=AxiosHeaders$1.from(et.response.headers))),Promise.reject(et)})}const VERSION$1="1.7.5",validators$1={};["object","boolean","number","function","string","symbol"].forEach((a,j)=>{validators$1[a]=function(et){return typeof et===a||"a"+(j<1?"n ":" ")+a}});const deprecatedWarnings={};validators$1.transitional=function a(j,_e,et){function nt(tt,it){return"[Axios v"+VERSION$1+"] Transitional option '"+tt+"'"+it+(et?". "+et:"")}return(tt,it,ut)=>{if(j===!1)throw new AxiosError$1(nt(it," has been removed"+(_e?" in "+_e:"")),AxiosError$1.ERR_DEPRECATED);return _e&&!deprecatedWarnings[it]&&(deprecatedWarnings[it]=!0,console.warn(nt(it," has been deprecated since v"+_e+" and will be removed in the near future"))),j?j(tt,it,ut):!0}};function assertOptions(a,j,_e){if(typeof a!="object")throw new AxiosError$1("options must be an object",AxiosError$1.ERR_BAD_OPTION_VALUE);const et=Object.keys(a);let nt=et.length;for(;nt-- >0;){const tt=et[nt],it=j[tt];if(it){const ut=a[tt],ft=ut===void 0||it(ut,tt,a);if(ft!==!0)throw new AxiosError$1("option "+tt+" must be "+ft,AxiosError$1.ERR_BAD_OPTION_VALUE);continue}if(_e!==!0)throw new AxiosError$1("Unknown option "+tt,AxiosError$1.ERR_BAD_OPTION)}}const validator={assertOptions,validators:validators$1},validators=validator.validators;let Axios$1=class{constructor(j){this.defaults=j,this.interceptors={request:new InterceptorManager,response:new InterceptorManager}}async request(j,_e){try{return await this._request(j,_e)}catch(et){if(et instanceof Error){let nt;Error.captureStackTrace?Error.captureStackTrace(nt={}):nt=new Error;const tt=nt.stack?nt.stack.replace(/^.+\n/,""):"";try{et.stack?tt&&!String(et.stack).endsWith(tt.replace(/^.+\n.+\n/,""))&&(et.stack+=`
|
|
279
|
-
`+tt):et.stack=tt}catch{}}throw et}}_request(j,_e){typeof j=="string"?(_e=_e||{},_e.url=j):_e=j||{},_e=mergeConfig$1(this.defaults,_e);const{transitional:et,paramsSerializer:nt,headers:tt}=_e;et!==void 0&&validator.assertOptions(et,{silentJSONParsing:validators.transitional(validators.boolean),forcedJSONParsing:validators.transitional(validators.boolean),clarifyTimeoutError:validators.transitional(validators.boolean)},!1),nt!=null&&(utils$1.isFunction(nt)?_e.paramsSerializer={serialize:nt}:validator.assertOptions(nt,{encode:validators.function,serialize:validators.function},!0)),_e.method=(_e.method||this.defaults.method||"get").toLowerCase();let it=tt&&utils$1.merge(tt.common,tt[_e.method]);tt&&utils$1.forEach(["delete","get","head","post","put","patch","common"],St=>{delete tt[St]}),_e.headers=AxiosHeaders$1.concat(it,tt);const ut=[];let ft=!0;this.interceptors.request.forEach(function(Ct){typeof Ct.runWhen=="function"&&Ct.runWhen(_e)===!1||(ft=ft&&Ct.synchronous,ut.unshift(Ct.fulfilled,Ct.rejected))});const pt=[];this.interceptors.response.forEach(function(Ct){pt.push(Ct.fulfilled,Ct.rejected)});let dt,mt=0,Et;if(!ft){const St=[dispatchRequest.bind(this),void 0];for(St.unshift.apply(St,ut),St.push.apply(St,pt),Et=St.length,dt=Promise.resolve(_e);mt<Et;)dt=dt.then(St[mt++],St[mt++]);return dt}Et=ut.length;let wt=_e;for(mt=0;mt<Et;){const St=ut[mt++],Ct=ut[mt++];try{wt=St(wt)}catch(Dt){Ct.call(this,Dt);break}}try{dt=dispatchRequest.call(this,wt)}catch(St){return Promise.reject(St)}for(mt=0,Et=pt.length;mt<Et;)dt=dt.then(pt[mt++],pt[mt++]);return dt}getUri(j){j=mergeConfig$1(this.defaults,j);const _e=buildFullPath(j.baseURL,j.url);return buildURL(_e,j.params,j.paramsSerializer)}};utils$1.forEach(["delete","get","head","options"],function a(j){Axios$1.prototype[j]=function(_e,et){return this.request(mergeConfig$1(et||{},{method:j,url:_e,data:(et||{}).data}))}});utils$1.forEach(["post","put","patch"],function a(j){function _e(et){return function(tt,it,ut){return this.request(mergeConfig$1(ut||{},{method:j,headers:et?{"Content-Type":"multipart/form-data"}:{},url:tt,data:it}))}}Axios$1.prototype[j]=_e(),Axios$1.prototype[j+"Form"]=_e(!0)});let CancelToken$1=class Zm{constructor(j){if(typeof j!="function")throw new TypeError("executor must be a function.");let _e;this.promise=new Promise(function(tt){_e=tt});const et=this;this.promise.then(nt=>{if(!et._listeners)return;let tt=et._listeners.length;for(;tt-- >0;)et._listeners[tt](nt);et._listeners=null}),this.promise.then=nt=>{let tt;const it=new Promise(ut=>{et.subscribe(ut),tt=ut}).then(nt);return it.cancel=function(){et.unsubscribe(tt)},it},j(function(tt,it,ut){et.reason||(et.reason=new CanceledError$1(tt,it,ut),_e(et.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(j){if(this.reason){j(this.reason);return}this._listeners?this._listeners.push(j):this._listeners=[j]}unsubscribe(j){if(!this._listeners)return;const _e=this._listeners.indexOf(j);_e!==-1&&this._listeners.splice(_e,1)}static source(){let j;return{token:new Zm(function(nt){j=nt}),cancel:j}}};function spread$1(a){return function(_e){return a.apply(null,_e)}}function isAxiosError$1(a){return utils$1.isObject(a)&&a.isAxiosError===!0}const HttpStatusCode$1={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,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity: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};Object.entries(HttpStatusCode$1).forEach(([a,j])=>{HttpStatusCode$1[j]=a});function createInstance(a){const j=new Axios$1(a),_e=bind(Axios$1.prototype.request,j);return utils$1.extend(_e,Axios$1.prototype,j,{allOwnKeys:!0}),utils$1.extend(_e,j,null,{allOwnKeys:!0}),_e.create=function(nt){return createInstance(mergeConfig$1(a,nt))},_e}const axios$4=createInstance(defaults$1);axios$4.Axios=Axios$1;axios$4.CanceledError=CanceledError$1;axios$4.CancelToken=CancelToken$1;axios$4.isCancel=isCancel$1;axios$4.VERSION=VERSION$1;axios$4.toFormData=toFormData$1;axios$4.AxiosError=AxiosError$1;axios$4.Cancel=axios$4.CanceledError;axios$4.all=function a(j){return Promise.all(j)};axios$4.spread=spread$1;axios$4.isAxiosError=isAxiosError$1;axios$4.mergeConfig=mergeConfig$1;axios$4.AxiosHeaders=AxiosHeaders$1;axios$4.formToJSON=a=>formDataToJSON(utils$1.isHTMLForm(a)?new FormData(a):a);axios$4.getAdapter=adapters.getAdapter;axios$4.HttpStatusCode=HttpStatusCode$1;axios$4.default=axios$4;const{Axios,AxiosError,CanceledError,isCancel,CancelToken,VERSION,all,Cancel,isAxiosError,spread,toFormData,AxiosHeaders,HttpStatusCode,formToJSON,getAdapter,mergeConfig}=axios$4,axios$3=Object.freeze(Object.defineProperty({__proto__:null,Axios,AxiosError,AxiosHeaders,Cancel,CancelToken,CanceledError,HttpStatusCode,VERSION,all,default:axios$4,formToJSON,getAdapter,isAxiosError,isCancel,mergeConfig,spread,toFormData},Symbol.toStringTag,{value:"Module"}));var __defProp$2$1=Object.defineProperty,__defNormalProp$2=(a,j,_e)=>j in a?__defProp$2$1(a,j,{enumerable:!0,configurable:!0,writable:!0,value:_e}):a[j]=_e,__publicField$2=(a,j,_e)=>(__defNormalProp$2(a,j+"",_e),_e);class AuthService{constructor({api:j}){__publicField$2(this,"api"),this.api=j}async getUserPublicInfo({did:j}){const{data:_e}=await this.api.get("/api/user",{params:{did:j}});return _e}async getUserPrivacyConfig({did:j}){const{data:_e}=await this.api.get("/api/user/privacy/config",{params:{did:j}});return _e}async saveUserPrivacyConfig(j){const{data:_e}=await this.api.post("/api/user/privacy/config",j);return _e}async getUserNotificationConfig(){const{data:j}=await this.api.get("/api/user/notification/config");return j}async saveUserNotificationConfig(j){const{data:_e}=await this.api.post("/api/user/notification/config",j);return _e}async testNotificationWebhook(j){const{data:_e}=await this.api.put("/api/user/notification/webhook",j);return _e}async getProfileUrl({did:j,locale:_e}){const et=`${constant$3.WELLKNOWN_SERVICE_PATH_PREFIX}/user`;return withQuery(et,{did:j,locale:_e})}async getProfile(){const{data:j}=await this.api.get("/api/user/profile");return j}async refreshProfile(){await this.api.put("/api/user/refreshProfile")}async saveProfile({locale:j}){const{data:_e}=await this.api.put("/api/user/profile",{locale:j});return _e}async logout({visitorId:j}){const{data:_e}=await this.api.post("/api/user/logout",{visitorId:j});return _e}}class TokenService{getSessionToken(){return api$2.get(constant$3.SESSION_TOKEN_STORAGE_KEY)}setSessionToken(j){api$2.set(constant$3.SESSION_TOKEN_STORAGE_KEY,j)}removeSessionToken(){api$2.remove(constant$3.SESSION_TOKEN_STORAGE_KEY)}getRefreshToken(){return localStorage.getItem(constant$3.REFRESH_TOKEN_STORAGE_KEY)}setRefreshToken(j){localStorage.setItem(constant$3.REFRESH_TOKEN_STORAGE_KEY,j)}removeRefreshToken(){localStorage.removeItem(constant$3.REFRESH_TOKEN_STORAGE_KEY)}}var __defProp$1$1=Object.defineProperty,__defNormalProp$1=(a,j,_e)=>j in a?__defProp$1$1(a,j,{enumerable:!0,configurable:!0,writable:!0,value:_e}):a[j]=_e,__publicField$1=(a,j,_e)=>(__defNormalProp$1(a,j+"",_e),_e);class UserSessionService{constructor({api:j}){__publicField$1(this,"api"),this.api=j}async getUserSessions({did:j}){const{data:_e}=await this.api.get("/api/user-session",{params:{userDid:j}});return _e}}const blockletCache=new QuickLRU({maxSize:30,maxAge:60*1e3});class BlockletService{async getBlocklet(j,_e=!1){if(!j){if(typeof window>"u"||typeof document>"u")throw new Error("Cannot get blocklet in server side without baseUrl");return window.blocklet}if(!_e&&blockletCache.has(j))return blockletCache.get(j);const et=withQuery(joinURL(j,"__blocklet__.js"),{type:"json",t:Date.now()}),tt=await(await fetch(et)).json();return blockletCache.set(j,tt),tt}async loadBlocklet(){return new Promise((j,_e)=>{if(typeof window>"u"||typeof document>"u"){_e();return}const et=document.createElement("script");let nt="/";window.blocklet&&window.blocklet.prefix&&(nt=window.blocklet.prefix),et.src=withQuery(joinURL(nt,"__blocklet__.js"),{t:Date.now()}),et.onload=()=>{j()},et.onerror=()=>{_e()},document.head.append(et)})}getPrefix(j){var _e;return j?(j==null?void 0:j.prefix)||"/":typeof window>"u"||typeof document>"u"?null:((_e=window.blocklet)==null?void 0:_e.prefix)||"/"}}const version$3="1.16.30",sleep$2=(a=0)=>new Promise(j=>{setTimeout(()=>{j()},a)}),getBearerToken=a=>`Bearer ${encodeURIComponent(a)}`,visitorIdKey="__visitor_id",getVisitorId$1=()=>localStorage.getItem(visitorIdKey);async function sleepForLoading(a,j=300){a.metaData.endTime=+new Date;const{startTime:_e,endTime:et}=a.metaData,nt=et-_e;nt<j&&await sleep$2(j-nt),delete a.metaData}const createAxios$1=(a,j)=>{const _e={...a==null?void 0:a.headers,"x-blocklet-js-sdk-version":version$3},et=getVisitorId$1();[void 0,null].includes(et)||(_e["x-blocklet-visitor-id"]=et);const nt=axios$4.create({...a,headers:_e});return j!=null&&j.lazy&&(nt.interceptors.request.use(tt=>(tt.metaData={startTime:+new Date},tt),tt=>Promise.reject(tt)),nt.interceptors.response.use(async tt=>(await sleepForLoading(tt.config,j==null?void 0:j.lazyTime),tt),async tt=>(await sleepForLoading(tt.response.config,j==null?void 0:j.lazyTime),Promise.reject(tt)))),nt};async function renewRefreshToken$1(a){if(!a)throw new Error("Refresh token not found");const j=createAxios$1({baseURL:constant$3.WELLKNOWN_SERVICE_PATH_PREFIX,timeout:10*1e3,headers:{authorization:getBearerToken(a)}}),{data:_e}=await j.post("/api/did/refreshSession");return _e}function createRequest$1({getSessionToken:a,setSessionToken:j,removeSessionToken:_e,getRefreshToken:et,setRefreshToken:nt,removeRefreshToken:tt,onRefreshTokenError:it,onRefreshTokenSuccess:ut},ft,pt){let dt=null;const mt=createAxios$1({timeout:30*1e3,...ft},pt);return mt.interceptors.request.use(async Et=>{if(!api$2.get(constant$3.SESSION_TOKEN_STORAGE_KEY)){const wt=a();wt&&(Et.headers.authorization=getBearerToken(wt))}return dt&&await dt,Et},Et=>Promise.reject(Et)),mt.interceptors.response.use(Et=>Et,async Et=>{var St;const wt=Et.config;if(wt.headers={...wt==null?void 0:wt.headers},((St=Et==null?void 0:Et.response)==null?void 0:St.status)===401&&!wt._retry){wt._retry=!0;try{dt||(dt=renewRefreshToken$1(et()));const Ct=await dt;return j(Ct.nextToken),nt(Ct.nextRefreshToken),typeof ut=="function"&&ut(Ct),mt(wt)}catch(Ct){return _e(),tt(),typeof it=="function"&&it(Ct),Promise.reject(Et)}finally{dt=null}}return Promise.reject(Et)}),mt}var __defProp$3=Object.defineProperty,__defNormalProp$3=(a,j,_e)=>j in a?__defProp$3(a,j,{enumerable:!0,configurable:!0,writable:!0,value:_e}):a[j]=_e,__publicField=(a,j,_e)=>(__defNormalProp$3(a,typeof j!="symbol"?j+"":j,_e),_e);class BlockletSDK{constructor(){__publicField(this,"api"),__publicField(this,"user"),__publicField(this,"userSession"),__publicField(this,"token"),__publicField(this,"blocklet");const j=new TokenService,_e=createRequest$1({getSessionToken:j.getSessionToken,setSessionToken:j.setSessionToken,removeSessionToken:j.removeSessionToken,getRefreshToken:j.getRefreshToken,setRefreshToken:j.setRefreshToken,removeRefreshToken:j.removeRefreshToken,onRefreshTokenError:()=>{console.error("Failed to refresh token")},onRefreshTokenSuccess:()=>{}},{baseURL:constant$3.WELLKNOWN_SERVICE_PATH_PREFIX});this.user=new AuthService({api:_e}),this.userSession=new UserSessionService({api:_e}),this.token=j,this.api=_e,this.blocklet=new BlockletService}}function createAxios$2(a={},j={}){const _e=new TokenService,et=new BlockletService;return a.baseURL===void 0&&(a.baseURL=et.getPrefix()),createRequest$1({getSessionToken:_e.getSessionToken,setSessionToken:_e.setSessionToken,removeSessionToken:_e.removeSessionToken,getRefreshToken:_e.getRefreshToken,setRefreshToken:_e.setRefreshToken,removeRefreshToken:_e.removeRefreshToken,onRefreshTokenError:()=>{console.error("Failed to refresh token")},onRefreshTokenSuccess:()=>{}},a,j)}const name="@arcblock/did-connect",version$2="2.10.27",description="Client side library to work with DID Connect by ArcBlock.",keywords=["react","arcblock","component"],author="wangshijun<wangshijun2010@gmail.com>",homepage="https://github.com/ArcBlock/ux#readme",license="Apache-2.0",main="lib/index.js",module$1="lib/index.js",repository={type:"git",url:"git+https://github.com/ArcBlock/ux.git"},scripts={lint:"eslint src tests --ext js --ext jsx","lint:fix":"npm run lint -- --fix",build:"babel --config-file ./babel.config.es.js src --out-dir lib --copy-files --no-copy-ignored",autoexports:"node tools/auto-exports.js",watch:"babel --config-file ./babel.config.es.js src --out-dir lib -w --copy-files --no-copy-ignored",precommit:"CI=1 npm run lint",prepush:"CI=1 npm run lint",prepublish:"npm run build",test:"node tools/jest.js",coverage:"npm run test -- --coverage"},bugs={url:"https://github.com/ArcBlock/ux/issues"},dependencies={"@arcblock/bridge":"^2.10.27","@arcblock/icons":"^2.10.27","@arcblock/react-hooks":"^2.10.27","@arcblock/ws":"^1.18.135","@fontsource/inter":"^5.0.16","@iconify-icons/logos":"^1.2.36","@iconify-icons/material-symbols":"^1.2.58","@iconify/react":"^4.1.1",ahooks:"^3.7.10",axios:"^1.7.5",buffer:"^6.0.3","core-js":"^3.25.5",eventemitter3:"^5.0.1","js-cookie":"^2.2.1","jwt-decode":"^3.1.2",lodash:"^4.17.21","mdi-material-ui":"^7.5.0","p-queue":"^6.6.2","p-wait-for":"^5.0.2","path-to-regexp":"^1.8.0",semver:"^7.6.3",tweetnacl:"^1.0.3","tweetnacl-sealedbox-js":"^1.2.0",ufo:"^1.5.3"},peerDependencies={"@arcblock/ux":"^2.9.79","@blocklet/js-sdk":"^1.16.30","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/material":"^5.15.0",react:"^18.2.0","react-dom":"^18.2.0"},publishConfig={access:"public"},devDependencies={"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.3","@babel/preset-react":"^7.18.6","eslint-plugin-react-hooks":"^4.6.0",glob:"^10.3.3",jest:"^28.1.3"},gitHead="22f8b70a73928fc915274ee0f609e96f330b1d2e",pkg={name,version:version$2,description,keywords,author,homepage,license,main,module:module$1,repository,scripts,bugs,dependencies,peerDependencies,publishConfig,devDependencies,gitHead},DEFAULT_TIMEOUT$1=5*60,DEFAULT_WINDOW_TIMEOUT=30*60,AUTH_SERVICE_PREFIX="/.well-known/service",SESSION_TOKEN_STORAGE_KEY="login_token",REFRESH_TOKEN_STORAGE_KEY="refresh_token",RELAY_SOCKET_PREFIX="/.well-known/service",API_DID_PREFIX="/api/did",DEFAULT_NAME="DID Connect",DID_CONNECT_URL_PARAMS_NAME="__did-connect__";class NotOpenError extends Error{constructor(){super("Failed to open popup")}}const{version:version$1}=pkg;function unescape$2(a){return(a+"===".slice((a.length+3)%4)).replace(/-/g,"+").replace(/_/g,"/")}function escape$3(a){return a.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}const decodeConnectUrl=a=>window.atob(unescape$2(a)),parseTokenFromConnectUrl=a=>{const j=new URL(a),_e=decodeURIComponent(j.searchParams.get("url"));return new URL(_e).searchParams.get("_t_")},getAppId$1=(a,j)=>{var et,nt,tt;let _e=j==null?void 0:j.publisher;if(!_e){if(a!=null&&a.agentDid)return a.agentDid;_e=a==null?void 0:a.publisher}return _e?_e.replace("did:abt:",""):((et=globalThis.blocklet)==null?void 0:et.appPid)||((nt=globalThis.blocklet)==null?void 0:nt.appId)||((tt=globalThis.env)==null?void 0:tt.appId)||""},getConnectedInfo=a=>{var _e;const j={connected_did:a.did||"",connected_pk:a.pk||"",connected_app:getAppId$1(a.appInfo,a.memberAppInfo)};return(_e=a==null?void 0:a.connectedWallet)!=null&&_e.os&&(j.connected_wallet_os=a.connectedWallet.os),j},updateConnectedInfo=(a,j=!1)=>{if(!a)return;j||(a=getConnectedInfo(a));const _e=getCookieOptions({expireInDays:7,returnDomain:!1});isNil$1(a.connected_did)||Cookies.set("connected_did",a.connected_did,_e),isNil$1(a.connected_pk)||Cookies.set("connected_pk",a.connected_pk,_e),isNil$1(a.connected_app)||Cookies.set("connected_app",a.connected_app,_e),a.connected_wallet_os&&Cookies.set("connected_wallet_os",a.connected_wallet_os,_e)},encodeKey=a=>escape$3(Buffer$1$1.from(a).toString("base64")),decodeKey=a=>Uint8Array.from(Buffer$1$1.from(unescape$2(a),"base64")),decrypt$1=(a,j,_e)=>{const et=SealedBox.open(Uint8Array.from(Buffer$1$1.from(a,"base64")),decodeKey(j),decodeKey(_e));return JSON.parse(Buffer$1$1.from(et).toString("utf8"))},encrypt=(a,j)=>Buffer$1$1.from(SealedBox.seal(Uint8Array.from(Buffer$1$1.from(a)),decodeKey(j))).toString("base64"),parseNextWorkflow=(a,j="_t_")=>{const _e=new URL(a),et={baseUrl:_e.origin,prefix:_e.pathname.replace(/\/auth$/,""),token:_e.searchParams.get(j)||""};if(!et.baseUrl)throw new Error("Invalid next workflow: origin empty");if(!et.token)throw new Error("Invalid next workflow: token not found");return et},getApiErrorMessage=(a,j)=>{var et;let _e=a.message;return a.response&&(_e=((et=a.response)==null?void 0:et.data)||j),_e},createAxios=(a={},{lazy:j=!1,lazyTime:_e=300}={})=>createAxios$2({...a,headers:{...a.headers,"x-did-connect-version":version$1}},{lazy:j,lazyTime:_e}),sleep$1=(a=0)=>new Promise(j=>{setTimeout(()=>{j()},a)});function getBrowserLang(){if(typeof window>"u")return null;const a=window.navigator.languages&&window.navigator.languages[0]||window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage||window.navigator.systemLanguage||null;return{"zh-CN":"zh","zh-TW":"zh",zh:"zh",en:"en"}[a]||"en"}async function decodeUrlParams(){const a=window.location.href;try{const j=new URL(a),_e=j.searchParams.get(DID_CONNECT_URL_PARAMS_NAME);if(_e){j.searchParams.delete(DID_CONNECT_URL_PARAMS_NAME);const et=JSON.parse(Buffer$1$1.from(_e,"base64").toString("utf-8"));if(isString$2(et.forceConnected)&&isUndefined$2(et.sourceAppPid)){const tt=await new BlockletSDK().user.getUserPublicInfo({did:et.forceConnected});isUndefined$2(tt==null?void 0:tt.sourceAppPid)||(et.sourceAppPid=tt.sourceAppPid)}return{params:et,url:j.href}}}catch{console.warn("Failed to decode did-connect url params")}return{params:null,url:a}}const openPopup=(a,{width:j=600,height:_e=700,name:et="did-connect:popup"}={})=>{const nt=window.screenX+(window.innerWidth-j)/2,tt=window.screenY+(window.innerHeight-_e)/2,it=[`left=${nt}`,`top=${tt}`,`width=${j}`,`height=${_e}`,"resizable=no","scrollbars=yes","status=yes","popup=yes"],ut=window.open("",et,it.join(","));if(ut===null)throw new NotOpenError;return ut.location.href=a,ut},runPopup=a=>new Promise((j,_e)=>{let et,nt;const tt=({data:it})=>{if(it&&it.type==="authorization_response"){if(it!=null&&it.error){console.error(it.error);return}setTimeout(()=>{var ut;(ut=a.popup)==null||ut.close(),clearTimeout(nt),clearInterval(et),window.removeEventListener("message",tt,!1),j(it)},a.closeTimeout||0)}};nt=setTimeout(()=>{clearInterval(et),_e(new Error("Timeout")),window.removeEventListener("message",tt,!1)},(a.timeoutInSeconds||DEFAULT_WINDOW_TIMEOUT)*1e3),et=setInterval(()=>{var it;(it=a.popup)!=null&&it.closed&&(clearInterval(et),clearTimeout(nt),window.removeEventListener("message",tt,!1),_e(new Error("Popup closed")))},1e3),window.addEventListener("message",tt)}),keyPair=tweetnacl.box.keyPair();function useSecurity(){const[a,j]=useLocalStorageState("__encKey",{defaultValue:encodeKey(keyPair.publicKey),deserializer:it=>it,serializer:it=>it}),[_e,et]=useLocalStorageState("__decKey",{defaultValue:encodeKey(keyPair.secretKey),deserializer:it=>it,serializer:it=>it});return reactExports.useEffect(()=>{localStorage.getItem("__encKey")||j(encodeKey(keyPair.publicKey)),localStorage.getItem("__decKey")||et(encodeKey(keyPair.secretKey))},[]),{encryptKey:a,decryptKey:_e,decrypt:(it,ut=a,ft=_e)=>decrypt$1(it,ut,ft),encrypt:(it,ut=a)=>encrypt(it,ut)}}var lodash={exports:{}};/**
|
|
279
|
+
`+tt):et.stack=tt}catch{}}throw et}}_request(j,_e){typeof j=="string"?(_e=_e||{},_e.url=j):_e=j||{},_e=mergeConfig$1(this.defaults,_e);const{transitional:et,paramsSerializer:nt,headers:tt}=_e;et!==void 0&&validator.assertOptions(et,{silentJSONParsing:validators.transitional(validators.boolean),forcedJSONParsing:validators.transitional(validators.boolean),clarifyTimeoutError:validators.transitional(validators.boolean)},!1),nt!=null&&(utils$1.isFunction(nt)?_e.paramsSerializer={serialize:nt}:validator.assertOptions(nt,{encode:validators.function,serialize:validators.function},!0)),_e.method=(_e.method||this.defaults.method||"get").toLowerCase();let it=tt&&utils$1.merge(tt.common,tt[_e.method]);tt&&utils$1.forEach(["delete","get","head","post","put","patch","common"],St=>{delete tt[St]}),_e.headers=AxiosHeaders$1.concat(it,tt);const ut=[];let ft=!0;this.interceptors.request.forEach(function(Ct){typeof Ct.runWhen=="function"&&Ct.runWhen(_e)===!1||(ft=ft&&Ct.synchronous,ut.unshift(Ct.fulfilled,Ct.rejected))});const pt=[];this.interceptors.response.forEach(function(Ct){pt.push(Ct.fulfilled,Ct.rejected)});let dt,mt=0,Et;if(!ft){const St=[dispatchRequest.bind(this),void 0];for(St.unshift.apply(St,ut),St.push.apply(St,pt),Et=St.length,dt=Promise.resolve(_e);mt<Et;)dt=dt.then(St[mt++],St[mt++]);return dt}Et=ut.length;let wt=_e;for(mt=0;mt<Et;){const St=ut[mt++],Ct=ut[mt++];try{wt=St(wt)}catch(Dt){Ct.call(this,Dt);break}}try{dt=dispatchRequest.call(this,wt)}catch(St){return Promise.reject(St)}for(mt=0,Et=pt.length;mt<Et;)dt=dt.then(pt[mt++],pt[mt++]);return dt}getUri(j){j=mergeConfig$1(this.defaults,j);const _e=buildFullPath(j.baseURL,j.url);return buildURL(_e,j.params,j.paramsSerializer)}};utils$1.forEach(["delete","get","head","options"],function a(j){Axios$1.prototype[j]=function(_e,et){return this.request(mergeConfig$1(et||{},{method:j,url:_e,data:(et||{}).data}))}});utils$1.forEach(["post","put","patch"],function a(j){function _e(et){return function(tt,it,ut){return this.request(mergeConfig$1(ut||{},{method:j,headers:et?{"Content-Type":"multipart/form-data"}:{},url:tt,data:it}))}}Axios$1.prototype[j]=_e(),Axios$1.prototype[j+"Form"]=_e(!0)});let CancelToken$1=class Zm{constructor(j){if(typeof j!="function")throw new TypeError("executor must be a function.");let _e;this.promise=new Promise(function(tt){_e=tt});const et=this;this.promise.then(nt=>{if(!et._listeners)return;let tt=et._listeners.length;for(;tt-- >0;)et._listeners[tt](nt);et._listeners=null}),this.promise.then=nt=>{let tt;const it=new Promise(ut=>{et.subscribe(ut),tt=ut}).then(nt);return it.cancel=function(){et.unsubscribe(tt)},it},j(function(tt,it,ut){et.reason||(et.reason=new CanceledError$1(tt,it,ut),_e(et.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(j){if(this.reason){j(this.reason);return}this._listeners?this._listeners.push(j):this._listeners=[j]}unsubscribe(j){if(!this._listeners)return;const _e=this._listeners.indexOf(j);_e!==-1&&this._listeners.splice(_e,1)}static source(){let j;return{token:new Zm(function(nt){j=nt}),cancel:j}}};function spread$1(a){return function(_e){return a.apply(null,_e)}}function isAxiosError$1(a){return utils$1.isObject(a)&&a.isAxiosError===!0}const HttpStatusCode$1={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,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity: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};Object.entries(HttpStatusCode$1).forEach(([a,j])=>{HttpStatusCode$1[j]=a});function createInstance(a){const j=new Axios$1(a),_e=bind(Axios$1.prototype.request,j);return utils$1.extend(_e,Axios$1.prototype,j,{allOwnKeys:!0}),utils$1.extend(_e,j,null,{allOwnKeys:!0}),_e.create=function(nt){return createInstance(mergeConfig$1(a,nt))},_e}const axios$4=createInstance(defaults$1);axios$4.Axios=Axios$1;axios$4.CanceledError=CanceledError$1;axios$4.CancelToken=CancelToken$1;axios$4.isCancel=isCancel$1;axios$4.VERSION=VERSION$1;axios$4.toFormData=toFormData$1;axios$4.AxiosError=AxiosError$1;axios$4.Cancel=axios$4.CanceledError;axios$4.all=function a(j){return Promise.all(j)};axios$4.spread=spread$1;axios$4.isAxiosError=isAxiosError$1;axios$4.mergeConfig=mergeConfig$1;axios$4.AxiosHeaders=AxiosHeaders$1;axios$4.formToJSON=a=>formDataToJSON(utils$1.isHTMLForm(a)?new FormData(a):a);axios$4.getAdapter=adapters.getAdapter;axios$4.HttpStatusCode=HttpStatusCode$1;axios$4.default=axios$4;const{Axios,AxiosError,CanceledError,isCancel,CancelToken,VERSION,all,Cancel,isAxiosError,spread,toFormData,AxiosHeaders,HttpStatusCode,formToJSON,getAdapter,mergeConfig}=axios$4,axios$3=Object.freeze(Object.defineProperty({__proto__:null,Axios,AxiosError,AxiosHeaders,Cancel,CancelToken,CanceledError,HttpStatusCode,VERSION,all,default:axios$4,formToJSON,getAdapter,isAxiosError,isCancel,mergeConfig,spread,toFormData},Symbol.toStringTag,{value:"Module"}));var __defProp$2$1=Object.defineProperty,__defNormalProp$2=(a,j,_e)=>j in a?__defProp$2$1(a,j,{enumerable:!0,configurable:!0,writable:!0,value:_e}):a[j]=_e,__publicField$2=(a,j,_e)=>(__defNormalProp$2(a,j+"",_e),_e);class AuthService{constructor({api:j}){__publicField$2(this,"api"),this.api=j}async getUserPublicInfo({did:j}){const{data:_e}=await this.api.get("/api/user",{params:{did:j}});return _e}async getUserPrivacyConfig({did:j}){const{data:_e}=await this.api.get("/api/user/privacy/config",{params:{did:j}});return _e}async saveUserPrivacyConfig(j){const{data:_e}=await this.api.post("/api/user/privacy/config",j);return _e}async getUserNotificationConfig(){const{data:j}=await this.api.get("/api/user/notification/config");return j}async saveUserNotificationConfig(j){const{data:_e}=await this.api.post("/api/user/notification/config",j);return _e}async testNotificationWebhook(j){const{data:_e}=await this.api.put("/api/user/notification/webhook",j);return _e}async getProfileUrl({did:j,locale:_e}){const et=`${constant$3.WELLKNOWN_SERVICE_PATH_PREFIX}/user`;return withQuery(et,{did:j,locale:_e})}async getProfile(){const{data:j}=await this.api.get("/api/user/profile");return j}async refreshProfile(){await this.api.put("/api/user/refreshProfile")}async saveProfile({locale:j,inviter:_e}){const{data:et}=await this.api.put("/api/user/profile",{locale:j,inviter:_e});return et}async logout({visitorId:j}){const{data:_e}=await this.api.post("/api/user/logout",{visitorId:j});return _e}}class TokenService{getSessionToken(){return api$2.get(constant$3.SESSION_TOKEN_STORAGE_KEY)}setSessionToken(j){api$2.set(constant$3.SESSION_TOKEN_STORAGE_KEY,j)}removeSessionToken(){api$2.remove(constant$3.SESSION_TOKEN_STORAGE_KEY)}getRefreshToken(){return localStorage.getItem(constant$3.REFRESH_TOKEN_STORAGE_KEY)}setRefreshToken(j){localStorage.setItem(constant$3.REFRESH_TOKEN_STORAGE_KEY,j)}removeRefreshToken(){localStorage.removeItem(constant$3.REFRESH_TOKEN_STORAGE_KEY)}}var __defProp$1$1=Object.defineProperty,__defNormalProp$1=(a,j,_e)=>j in a?__defProp$1$1(a,j,{enumerable:!0,configurable:!0,writable:!0,value:_e}):a[j]=_e,__publicField$1=(a,j,_e)=>(__defNormalProp$1(a,j+"",_e),_e);class UserSessionService{constructor({api:j}){__publicField$1(this,"api"),this.api=j}async getUserSessions({did:j}){const{data:_e}=await this.api.get("/api/user-session",{params:{userDid:j}});return _e}}const blockletCache=new QuickLRU({maxSize:30,maxAge:60*1e3});class BlockletService{async getBlocklet(j,_e=!1){if(!j){if(typeof window>"u"||typeof document>"u")throw new Error("Cannot get blocklet in server side without baseUrl");return window.blocklet}if(!_e&&blockletCache.has(j))return blockletCache.get(j);const et=withQuery(joinURL(j,"__blocklet__.js"),{type:"json",t:Date.now()}),tt=await(await fetch(et)).json();return blockletCache.set(j,tt),tt}async loadBlocklet(){return new Promise((j,_e)=>{if(typeof window>"u"||typeof document>"u"){_e();return}const et=document.createElement("script");let nt="/";window.blocklet&&window.blocklet.prefix&&(nt=window.blocklet.prefix),et.src=withQuery(joinURL(nt,"__blocklet__.js"),{t:Date.now()}),et.onload=()=>{j()},et.onerror=()=>{_e()},document.head.append(et)})}getPrefix(j){var _e;return j?(j==null?void 0:j.prefix)||"/":typeof window>"u"||typeof document>"u"?null:((_e=window.blocklet)==null?void 0:_e.prefix)||"/"}}const version$3="1.16.30",sleep$2=(a=0)=>new Promise(j=>{setTimeout(()=>{j()},a)}),getBearerToken=a=>`Bearer ${encodeURIComponent(a)}`,visitorIdKey="__visitor_id",getVisitorId$1=()=>localStorage.getItem(visitorIdKey);async function sleepForLoading(a,j=300){a.metaData.endTime=+new Date;const{startTime:_e,endTime:et}=a.metaData,nt=et-_e;nt<j&&await sleep$2(j-nt),delete a.metaData}const createAxios$1=(a,j)=>{const _e={...a==null?void 0:a.headers,"x-blocklet-js-sdk-version":version$3},et=getVisitorId$1();[void 0,null].includes(et)||(_e["x-blocklet-visitor-id"]=et);const nt=axios$4.create({...a,headers:_e});return j!=null&&j.lazy&&(nt.interceptors.request.use(tt=>(tt.metaData={startTime:+new Date},tt),tt=>Promise.reject(tt)),nt.interceptors.response.use(async tt=>(await sleepForLoading(tt.config,j==null?void 0:j.lazyTime),tt),async tt=>(await sleepForLoading(tt.response.config,j==null?void 0:j.lazyTime),Promise.reject(tt)))),nt};async function renewRefreshToken$1(a){if(!a)throw new Error("Refresh token not found");const j=createAxios$1({baseURL:constant$3.WELLKNOWN_SERVICE_PATH_PREFIX,timeout:10*1e3,headers:{authorization:getBearerToken(a)}}),{data:_e}=await j.post("/api/did/refreshSession");return _e}function createRequest$1({getSessionToken:a,setSessionToken:j,removeSessionToken:_e,getRefreshToken:et,setRefreshToken:nt,removeRefreshToken:tt,onRefreshTokenError:it,onRefreshTokenSuccess:ut},ft,pt){let dt=null;const mt=createAxios$1({timeout:30*1e3,...ft},pt);return mt.interceptors.request.use(async Et=>{if(!api$2.get(constant$3.SESSION_TOKEN_STORAGE_KEY)){const wt=a();wt&&(Et.headers.authorization=getBearerToken(wt))}return dt&&await dt,Et},Et=>Promise.reject(Et)),mt.interceptors.response.use(Et=>Et,async Et=>{var St;const wt=Et.config;if(wt.headers={...wt==null?void 0:wt.headers},((St=Et==null?void 0:Et.response)==null?void 0:St.status)===401&&!wt._retry){wt._retry=!0;try{dt||(dt=renewRefreshToken$1(et()));const Ct=await dt;return j(Ct.nextToken),nt(Ct.nextRefreshToken),typeof ut=="function"&&ut(Ct),mt(wt)}catch(Ct){return _e(),tt(),typeof it=="function"&&it(Ct),Promise.reject(Et)}finally{dt=null}}return Promise.reject(Et)}),mt}var __defProp$3=Object.defineProperty,__defNormalProp$3=(a,j,_e)=>j in a?__defProp$3(a,j,{enumerable:!0,configurable:!0,writable:!0,value:_e}):a[j]=_e,__publicField=(a,j,_e)=>(__defNormalProp$3(a,typeof j!="symbol"?j+"":j,_e),_e);class BlockletSDK{constructor(){__publicField(this,"api"),__publicField(this,"user"),__publicField(this,"userSession"),__publicField(this,"token"),__publicField(this,"blocklet");const j=new TokenService,_e=createRequest$1({getSessionToken:j.getSessionToken,setSessionToken:j.setSessionToken,removeSessionToken:j.removeSessionToken,getRefreshToken:j.getRefreshToken,setRefreshToken:j.setRefreshToken,removeRefreshToken:j.removeRefreshToken,onRefreshTokenError:()=>{console.error("Failed to refresh token")},onRefreshTokenSuccess:()=>{}},{baseURL:constant$3.WELLKNOWN_SERVICE_PATH_PREFIX});this.user=new AuthService({api:_e}),this.userSession=new UserSessionService({api:_e}),this.token=j,this.api=_e,this.blocklet=new BlockletService}}function createAxios$2(a={},j={}){const _e=new TokenService,et=new BlockletService;return a.baseURL===void 0&&(a.baseURL=et.getPrefix()),createRequest$1({getSessionToken:_e.getSessionToken,setSessionToken:_e.setSessionToken,removeSessionToken:_e.removeSessionToken,getRefreshToken:_e.getRefreshToken,setRefreshToken:_e.setRefreshToken,removeRefreshToken:_e.removeRefreshToken,onRefreshTokenError:()=>{console.error("Failed to refresh token")},onRefreshTokenSuccess:()=>{}},a,j)}const name="@arcblock/did-connect",version$2="2.10.28",description="Client side library to work with DID Connect by ArcBlock.",keywords=["react","arcblock","component"],author="wangshijun<wangshijun2010@gmail.com>",homepage="https://github.com/ArcBlock/ux#readme",license="Apache-2.0",main="lib/index.js",module$1="lib/index.js",repository={type:"git",url:"git+https://github.com/ArcBlock/ux.git"},scripts={lint:"eslint src tests --ext js --ext jsx","lint:fix":"npm run lint -- --fix",build:"babel --config-file ./babel.config.es.js src --out-dir lib --copy-files --no-copy-ignored",autoexports:"node tools/auto-exports.js",watch:"babel --config-file ./babel.config.es.js src --out-dir lib -w --copy-files --no-copy-ignored",precommit:"CI=1 npm run lint",prepush:"CI=1 npm run lint",prepublish:"npm run build",test:"node tools/jest.js",coverage:"npm run test -- --coverage"},bugs={url:"https://github.com/ArcBlock/ux/issues"},dependencies={"@arcblock/bridge":"^2.10.28","@arcblock/icons":"^2.10.28","@arcblock/react-hooks":"^2.10.28","@arcblock/ws":"^1.18.135","@fontsource/inter":"^5.0.16","@iconify-icons/logos":"^1.2.36","@iconify-icons/material-symbols":"^1.2.58","@iconify/react":"^4.1.1",ahooks:"^3.7.10",axios:"^1.7.5",buffer:"^6.0.3","core-js":"^3.25.5",eventemitter3:"^5.0.1","js-cookie":"^2.2.1","jwt-decode":"^3.1.2",lodash:"^4.17.21","mdi-material-ui":"^7.5.0","p-queue":"^6.6.2","p-wait-for":"^5.0.2","path-to-regexp":"^1.8.0",semver:"^7.6.3",tweetnacl:"^1.0.3","tweetnacl-sealedbox-js":"^1.2.0",ufo:"^1.5.3"},peerDependencies={"@arcblock/ux":"^2.9.79","@blocklet/js-sdk":"^1.16.30","@emotion/react":"^11.10.4","@emotion/styled":"^11.10.4","@mui/material":"^5.15.0",react:"^18.2.0","react-dom":"^18.2.0"},publishConfig={access:"public"},devDependencies={"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.3","@babel/preset-react":"^7.18.6","eslint-plugin-react-hooks":"^4.6.0",glob:"^10.3.3",jest:"^28.1.3"},gitHead="71cb15e455bd2f3bdf906c14ae4ef87f9da9c271",pkg={name,version:version$2,description,keywords,author,homepage,license,main,module:module$1,repository,scripts,bugs,dependencies,peerDependencies,publishConfig,devDependencies,gitHead},DEFAULT_TIMEOUT$1=5*60,DEFAULT_WINDOW_TIMEOUT=30*60,AUTH_SERVICE_PREFIX="/.well-known/service",SESSION_TOKEN_STORAGE_KEY="login_token",REFRESH_TOKEN_STORAGE_KEY="refresh_token",RELAY_SOCKET_PREFIX="/.well-known/service",API_DID_PREFIX="/api/did",DEFAULT_NAME="DID Connect",DID_CONNECT_URL_PARAMS_NAME="__did-connect__";class NotOpenError extends Error{constructor(){super("Failed to open popup")}}const{version:version$1}=pkg;function unescape$2(a){return(a+"===".slice((a.length+3)%4)).replace(/-/g,"+").replace(/_/g,"/")}function escape$3(a){return a.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}const decodeConnectUrl=a=>window.atob(unescape$2(a)),parseTokenFromConnectUrl=a=>{const j=new URL(a),_e=decodeURIComponent(j.searchParams.get("url"));return new URL(_e).searchParams.get("_t_")},getAppId$1=(a,j)=>{var et,nt,tt;let _e=j==null?void 0:j.publisher;if(!_e){if(a!=null&&a.agentDid)return a.agentDid;_e=a==null?void 0:a.publisher}return _e?_e.replace("did:abt:",""):((et=globalThis.blocklet)==null?void 0:et.appPid)||((nt=globalThis.blocklet)==null?void 0:nt.appId)||((tt=globalThis.env)==null?void 0:tt.appId)||""},getConnectedInfo=a=>{var _e;const j={connected_did:a.did||"",connected_pk:a.pk||"",connected_app:getAppId$1(a.appInfo,a.memberAppInfo)};return(_e=a==null?void 0:a.connectedWallet)!=null&&_e.os&&(j.connected_wallet_os=a.connectedWallet.os),j},updateConnectedInfo=(a,j=!1)=>{if(!a)return;j||(a=getConnectedInfo(a));const _e=getCookieOptions({expireInDays:7,returnDomain:!1});isNil$1(a.connected_did)||Cookies.set("connected_did",a.connected_did,_e),isNil$1(a.connected_pk)||Cookies.set("connected_pk",a.connected_pk,_e),isNil$1(a.connected_app)||Cookies.set("connected_app",a.connected_app,_e),a.connected_wallet_os&&Cookies.set("connected_wallet_os",a.connected_wallet_os,_e)},encodeKey=a=>escape$3(Buffer$1$1.from(a).toString("base64")),decodeKey=a=>Uint8Array.from(Buffer$1$1.from(unescape$2(a),"base64")),decrypt$1=(a,j,_e)=>{const et=SealedBox.open(Uint8Array.from(Buffer$1$1.from(a,"base64")),decodeKey(j),decodeKey(_e));return JSON.parse(Buffer$1$1.from(et).toString("utf8"))},encrypt=(a,j)=>Buffer$1$1.from(SealedBox.seal(Uint8Array.from(Buffer$1$1.from(a)),decodeKey(j))).toString("base64"),parseNextWorkflow=(a,j="_t_")=>{const _e=new URL(a),et={baseUrl:_e.origin,prefix:_e.pathname.replace(/\/auth$/,""),token:_e.searchParams.get(j)||""};if(!et.baseUrl)throw new Error("Invalid next workflow: origin empty");if(!et.token)throw new Error("Invalid next workflow: token not found");return et},getApiErrorMessage=(a,j)=>{var et;let _e=a.message;return a.response&&(_e=((et=a.response)==null?void 0:et.data)||j),_e},createAxios=(a={},{lazy:j=!1,lazyTime:_e=300}={})=>createAxios$2({...a,headers:{...a.headers,"x-did-connect-version":version$1}},{lazy:j,lazyTime:_e}),sleep$1=(a=0)=>new Promise(j=>{setTimeout(()=>{j()},a)});function getBrowserLang(){if(typeof window>"u")return null;const a=window.navigator.languages&&window.navigator.languages[0]||window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage||window.navigator.systemLanguage||null;return{"zh-CN":"zh","zh-TW":"zh",zh:"zh",en:"en"}[a]||"en"}async function decodeUrlParams(){const a=window.location.href;try{const j=new URL(a),_e=j.searchParams.get(DID_CONNECT_URL_PARAMS_NAME);if(_e){j.searchParams.delete(DID_CONNECT_URL_PARAMS_NAME);const et=JSON.parse(Buffer$1$1.from(_e,"base64").toString("utf-8"));if(isString$2(et.forceConnected)&&isUndefined$2(et.sourceAppPid)){const tt=await new BlockletSDK().user.getUserPublicInfo({did:et.forceConnected});isUndefined$2(tt==null?void 0:tt.sourceAppPid)||(et.sourceAppPid=tt.sourceAppPid)}return{params:et,url:j.href}}}catch{console.warn("Failed to decode did-connect url params")}return{params:null,url:a}}const openPopup=(a,{width:j=600,height:_e=700,name:et="did-connect:popup"}={})=>{const nt=window.screenX+(window.innerWidth-j)/2,tt=window.screenY+(window.innerHeight-_e)/2,it=[`left=${nt}`,`top=${tt}`,`width=${j}`,`height=${_e}`,"resizable=no","scrollbars=yes","status=yes","popup=yes"],ut=window.open("",et,it.join(","));if(ut===null)throw new NotOpenError;return ut.location.href=a,ut},runPopup=a=>new Promise((j,_e)=>{let et,nt;const tt=({data:it})=>{if(it&&it.type==="authorization_response"){if(it!=null&&it.error){console.error(it.error);return}setTimeout(()=>{var ut;(ut=a.popup)==null||ut.close(),clearTimeout(nt),clearInterval(et),window.removeEventListener("message",tt,!1),j(it)},a.closeTimeout||0)}};nt=setTimeout(()=>{clearInterval(et),_e(new Error("Timeout")),window.removeEventListener("message",tt,!1)},(a.timeoutInSeconds||DEFAULT_WINDOW_TIMEOUT)*1e3),et=setInterval(()=>{var it;(it=a.popup)!=null&&it.closed&&(clearInterval(et),clearTimeout(nt),window.removeEventListener("message",tt,!1),_e(new Error("Popup closed")))},1e3),window.addEventListener("message",tt)}),keyPair=tweetnacl.box.keyPair();function useSecurity(){const[a,j]=useLocalStorageState("__encKey",{defaultValue:encodeKey(keyPair.publicKey),deserializer:it=>it,serializer:it=>it}),[_e,et]=useLocalStorageState("__decKey",{defaultValue:encodeKey(keyPair.secretKey),deserializer:it=>it,serializer:it=>it});return reactExports.useEffect(()=>{localStorage.getItem("__encKey")||j(encodeKey(keyPair.publicKey)),localStorage.getItem("__decKey")||et(encodeKey(keyPair.secretKey))},[]),{encryptKey:a,decryptKey:_e,decrypt:(it,ut=a,ft=_e)=>decrypt$1(it,ut,ft),encrypt:(it,ut=a)=>encrypt(it,ut)}}var lodash={exports:{}};/**
|
|
280
280
|
* @license
|
|
281
281
|
* Lodash <https://lodash.com/>
|
|
282
282
|
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
@@ -1489,7 +1489,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
1489
1489
|
background-color: rgba(0, 0, 0, 0.12) !important;
|
|
1490
1490
|
}
|
|
1491
1491
|
`;function CheckNodeStatus(){const{t:a}=useLocaleContext(),{info:j={},api:_e}=useNodeContext(),[et,nt]=reactExports.useState(),{status:tt}=j;reactExports.useEffect(()=>{tt===constant$3.SERVER_STATUS.START_FROM_CRASH&&(nt(!0),_e.resetNodeStatus().catch(ut=>{console.error(ut.message)}))},[tt]);const it=()=>{nt(!1)};return et?jsxRuntimeExports.jsx(ConfirmDialog,{description:a("dashboard.startFromCrashTip"),confirm:a("common.confirm"),showCancel:!1,color:"primary",onConfirm:it}):null}function ErrorFallback$1({error:a,resetErrorBoundary:j}){return jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsxs(Alert,{severity:"error",action:jsxRuntimeExports.jsx(ButtonComponent,{onClick:j,color:"secondary",variant:"outlined",children:"Reload"}),style:{minWidth:480},children:[jsxRuntimeExports.jsx(AlertTitle,{children:"Oops, this application crashed"}),jsxRuntimeExports.jsx(Typography,{children:a.message})]})})}var flat=flatten;flatten.flatten=flatten;flatten.unflatten=unflatten;function isBuffer(a){return a&&a.constructor&&typeof a.constructor.isBuffer=="function"&&a.constructor.isBuffer(a)}function keyIdentity(a){return a}function flatten(a,j){j=j||{};const _e=j.delimiter||".",et=j.maxDepth,nt=j.transformKey||keyIdentity,tt={};function it(ut,ft,pt){pt=pt||1,Object.keys(ut).forEach(function(dt){const mt=ut[dt],Et=j.safe&&Array.isArray(mt),wt=Object.prototype.toString.call(mt),St=isBuffer(mt),Ct=wt==="[object Object]"||wt==="[object Array]",Dt=ft?ft+_e+nt(dt):nt(dt);if(!Et&&!St&&Ct&&Object.keys(mt).length&&(!j.maxDepth||pt<et))return it(mt,Dt,pt+1);tt[Dt]=mt})}return it(a),tt}function unflatten(a,j){j=j||{};const _e=j.delimiter||".",et=j.overwrite||!1,nt=j.transformKey||keyIdentity,tt={};if(isBuffer(a)||Object.prototype.toString.call(a)!=="[object Object]")return a;function ut(dt){const mt=Number(dt);return isNaN(mt)||dt.indexOf(".")!==-1||j.object?dt:mt}function ft(dt,mt,Et){return Object.keys(Et).reduce(function(wt,St){return wt[dt+_e+St]=Et[St],wt},mt)}function pt(dt){const mt=Object.prototype.toString.call(dt),Et=mt==="[object Array]",wt=mt==="[object Object]";if(dt){if(Et)return!dt.length;if(wt)return!Object.keys(dt).length}else return!0}return a=Object.keys(a).reduce(function(dt,mt){const Et=Object.prototype.toString.call(a[mt]);return!(Et==="[object Object]"||Et==="[object Array]")||pt(a[mt])?(dt[mt]=a[mt],dt):ft(mt,dt,flatten(a[mt],j))},{}),Object.keys(a).forEach(function(dt){const mt=dt.split(_e).map(nt);let Et=ut(mt.shift()),wt=ut(mt[0]),St=tt;for(;wt!==void 0;){if(Et==="__proto__")return;const Ct=Object.prototype.toString.call(St[Et]),Dt=Ct==="[object Object]"||Ct==="[object Array]";if(!et&&!Dt&&typeof St[Et]<"u")return;(et&&!Dt||!et&&St[Et]==null)&&(St[Et]=typeof wt=="number"&&!j.object?[]:{}),St=St[Et],mt.length>0&&(Et=ut(mt.shift()),wt=ut(mt[0]))}St[Et]=unflatten(a[dt],j)}),tt}const flat$1=getDefaultExportFromCjs$1(flat);var baseMerge=_baseMerge,createAssigner=_createAssigner,merge=createAssigner(function(a,j,_e){baseMerge(a,j,_e)}),merge_1=merge;const merge$1=getDefaultExportFromCjs$1(merge_1),en$2={setup:{connect:{title:"Signature Required",scan:"Connect your DID Wallet to become the owner of this server",confirm:"Review this operation on your DID Wallet",success:"Your account is connected to this server"},keyPair:{title:"Derived KeyPair Required",scan:"Connect your DID Wallet to generate a key-pair for this app",confirm:"Review this operation on your DID Wallet",success:"Your key pair is securely stored"},verify:{title:"Ownership Credential Required",scan:"Connect your DID Wallet to provide ownership credentials",confirm:"Review this operation on your DID Wallet",success:"Your account is connected to this server"},accept:{title:"Accepting server require ownership certificates",scan:"Connect your DID Wallet to provide ownership credentials",confirm:"Review this operation on your DID Wallet",success:"Your account is connected to this server"},title:"Setup Blocklet Server",steps:{eula:"End User License Agreement",eulaFooter:"I have read and agreed to the terms of the EULA",connect:"Connect Owner DID Wallet",verify:"Verify Ownership",basicSettings:"Basic Settings",launchApp:"Launch Application",complete:"Complete"},congratulation:"Congratulations! Your Blocklet Server is secure and ready to use",redirectButton:"Take me to dashboard!"},login:{loginTo:"Connect to",description:"Only server owner and approved members can access the dashboard",switchDid:{title:"Switch DID Wallet",scan:"Scan following qrcode to switch account",confirm:"Confirm switch in your DID Wallet",success:"Successfully switched"},switchSpecifiedDid:{title:"Switch DID Wallet",scan:"You need switch DID to {did} to complete the following actions",confirm:"Confirm switch in your DID Wallet",success:"Successfully switched"},connect:{title:"Connect DID Wallet",scan:"Connect your DID Wallet to provide passport",confirm:"Confirm on your DID Wallet",success:"You are successfully connected"}},acceptServer:{title:"Claim Server with Ownership NFT",tooltip:"If you received a server ownership nft, you can claim your owner passport with this link."},exchangePassport:{title:"Get Passport with NFT",success:"You have successfully get your passport and logged in with the passport",login:"Login",tooltip:"If you own NFT from collection {collections}, you can exchange your passport with this link.",dialog:{title:"Get Passport with NFT",scan:"Connect your DID Wallet to present your NFT to get a passport",confirm:"Select NFT on your DID Wallet",success:"Passport has been successfully exchanged"}},payablePassport:{title:"Purchase passport with payment",tooltip:"If you do not have a passport, you can purchase a passport with this link."},sidebar:{dashboard:"Dashboard",blocklets:"Blocklets",console:"Console",settings:"Settings"},system:{total:"Total",used:"Used",free:"Free",cores:"Number of cores",instances:"Number of instances"},common:{invalid:"Invalid",about:"About",access:"Access",change:"Change",upload:"Upload",accessKey:"Access Keys",action:"Action",actions:"Actions",add:"Add",address:"Address",afterTime:"After {time}",allow:"Allow",alreadyExist:"already exists",approve:"Approve",approved:"approved",appUrl:"APP Url",auditLogs:"Audit Trail",author:"Author",avatar:"Avatar",back:"Back",basic:"Basic",basicInfo:"Basic Information",profile:"Profile",bind:"Bind",blocklet:"Blocklet",blocklets:"Blocklets",blockletsStorage:"Blocklets Storage",cacheStorage:"Cache Storage",cancel:"Cancel",certificate:"certificate",category:"Log Topic",click:"Click to copy",close:"Close",collapseAll:"Collapse All",community:"Community",complete:"Complete",componentBasicInfo:"Component Basic Information",components:"Blocklets",config:"Configure",configuration:"Configuration",configNavigation:"Navigation",configSuccess:"Config successfully",confirm:"Confirm",connect:"Connect",console:"Console",continue:"Continue",continueWith:"Continue With",copiedTip:"Copied",copyAndClose:"Copy & Close",copyTip:"Click To Copy",coreStorage:"Core Storage",cpu:"CPU",create:"Create",createSuccess:"Create Access Key",created:"Created At",createdAt:"Created At",createdBy:"Created By",dAddress:"Decentralized Identifiers (DID)",dataStorage:"Storage on Local Disk",delConfirm:"Delete",delConfirmDescription:"Confirm delete {data}?",delete:"Delete",dependents:"Dependents",description:"Description",detail:"Detail",did:"DID",disk:"Disk",diskInfo:"Disk Info",docker:"IS Docker",documentation:"Documentation",domain:"Domain",downgradeTo:"Downgrade to",download:"Download",connectToStore:"Connect to Store",blockletStudio:"Studio",uploaded:"Uploaded",downloading:"Downloading",edit:"Edit",email:"Email",phone:"Phone",empty:"Empty",emptyData:"No results found",enable:"Enable",engine:"Engine",env:"Environment",environment:"Environment",expandAll:"Expand All",expired:"Expired",expires:"Expires",export:"Export",externalIp:"External IP",failed:"Failed",filter:"Log Filter",fingerprint:"Fingerprint",finish:"Finish",forbid:"Forbid",free:"Free",general:"General",gitpod:"IS Gitpod",goEULA:'Click to view "End User License Agreement"',group:"Group",image:"IS Image",install:"Install",installed:"Installed",installedAt:"Installed At",installSuccess:"Successfully installed",installing:"Installing",internalIp:"Internal IP",introduction:"Introduction",invite:"Invite",inviting:"Inviting",ip:"IP",isPublic:"Public",issue:"Issue",issuer:"Issuer",item:"Item",joined:"Joined",key:"Key",lastPublishedAt:"Published At",launcher:"Launcher Information",leavePageTip:"Are you sure to leave the page?",link:"Link",loading:"loading",log:"View Logs",logStorage:"Log Storage",login:"Login",logo:"Logo",logout:"Logout",logs:"Logs",manageTeam:"Manage Team",marketplace:"Marketplace",member:"Member",members:"Members",memory:"Memory",meta:"Meta Data",analytics:"Analytics",runtime:"Runtime",traffic:"Traffic",more:"More",mountPoint:"MountPoint",name:"Name",next:"Next",no:"No",noData:"No records to display",notice:"Unexpected bad things will happen if you don’t read this!",noticeTitle:"Notice",notification:"Notification",open:"Open",visitStore:"Visit Store",visitTarget:"Visit {name}",management:"Management",os:"Operating System",overview:"Overview",owner:"Owner",page404:"404 Page",passport:"Passport",permission:"Permission",port:"Port",pre:"Previous",preferences:"Preferences",preview:"Preview",protected:"Protected",protocol:"Protocol",purchase:"Purchase",reconnect:"Reconnect",disconnect:"Disconnect",readMore:"More",redirect:"Redirect",redirectCode:"Redirect Code",redirectPermanently:"Permanent Redirect",redirectTemporary:"Temporary Redirect",redirectUrl:"Redirect URL",rewrite:"Rewrite",release:"Release",rewriteUrl:"Rewrite URL",reject:"Reject",reload:"Reload",remark:"Remark",remove:"Remove",removeSuccess:"Remove successfully",renew:"Renew",reportIssue:"Report an issue",required:"Required",requiredErrorText:"{name} is required",resource:"Resource",restart:"Restart",restore:"Restore",retry:"Retry",revoke:"Revoke",role:"Role",running:"running",runtimeInfo:"Runtime Info",save:"Save",saveChanges:"Save Changes",saveSuccess:"Saved successfully",scheduleFailed:"schedule failed",scheduleSuccess:"successfully scheduled",scope:"Scope",screenshot:"Screenshot",search:"Search",security:"Security",serverDid:"Server DID",serverVersion:"Server Version",setting:"Settings",start:"Start",status:"Status",stop:"Stop",storage:"Storage",backup:"Backup",store:"Store",succeeded:"Succeeded",subscription:"Subscription",support:"Support",switch:"Switch",team:"Team",the:"The",timeAgo:"{time} ago",title:"Title",type:"Type",unavailable:"Unavailable",update:"Update",updateAvailable:"New version {version} available",updatedAt:"Updated At",updatedBy:"Updated By",upgrade:"Upgrade",upgradeTo:"Upgrade to",upgrading:"Upgrading",uptime:"Uptime",url:"URL",valid:"Valid",value:"Value",version:"Version",visit:"Visit",waiting:"Waiting",webhook:"Integrations",yes:"Yes",invalidParam:"Invalid Params",launch:"Launch",price:"Price",redirecting:"Redirecting",error:"Error",reminder:"Reminder",normal:"Normal",gateway:"Gateway",verifyNFT:"Verify NFT",errorMessage:"Error Message: ",slugifyHint:"The actual mount point will be: {value}",strategy:"Strategy",auto:"Auto",manual:"Manual",progress:"In progress",startTime:"Start time",endTime:"End time",selected:"Selected",timeoutError:"Timeout error",tags:"Tags",sourceApp:"Belong to App"},blocklet:{external:"External",notFound:"Blocklet not found on this server, maybe it has been deleted",installFromMarket:"Install New Blocklets",installFromUrl:"Install From Url",installFromCreate:"Create Blocklet",titleValidationError:"Title length must be between 3 and 20 characters",descriptionValidationError:"Description length must be between 3 and 80 characters",installFromDiskBackup:"Restore from this server",installedAt:"Installed At",internal:"Internal",startedAt:"Started At",stoppedAt:"Stopped At",urlEmptyTip:"No Access URL, ",goToAddRule:"Go To Add",services:"Exposed Services",upstreamPort:"Upstream Port",noService:"No Services",appId:"App DID",appPid:"Permanent DID",whyNeedAppPid:"If your application has been migrated, the permanent DID is the DID generated when this Blocklet was originally installed",alsoKnownAs:"Also Known As",skSource:"Owner Wallet",reloadSuccess:"Blocklet was reloaded successfully",statusTip:"Blocklet is {status}",initialUptime:"Less than 1m",dashboard:"Blocklet Dashboard",noComponent:"Application has no components and cannot be started",fromUrl:{title:"Install Blocklet",label:"Blocklet Meta URL",description:"The URL should point to the Meta File of the Blocklet. If you need to refer to a local file, please add the file:// prefix, e.g. file:///Users/foo/blocklet.json.",confirm:"Install",step0:"Input URL",step1:"Confirm Meta Info",existTipPrefix:"Blocklet with the same DID already exists, the version is",existTipSuffix:", Please install a higher version."},action:{stopDescription:"Stopping the blocklet will make its public interfaces unaccessible, which may cause end user failures",stopComponentDescription:"Stopping the component will make its public interfaces unaccessible, which may cause end user failures",confirmStop:"Yes, Stop It",cancelDownloadDescription:"Cancel download {name} ?",removeApplicationDescription:"Removing the application will erase code and data generated by this application, which is not recoverable if you do not have any backups",removeApplicationAfterBackup:"Backup and remove the application. You can restore the application from this server if you need",removeApplicationComplete:"Remove both code and data for this application",removeComponentDescription:"Removing the component will erase code and data generated by this component, which is not recoverable if you do not have any backups",removeComponentKeepData:"Keep data for this component, only remove code",removeComponentComplete:"Remove both code and data for this component",confirmRemove:"Yes, Remove It",confirmComponentRemove:"Yes, Remove It",upgradeDescription:"Upgrading the blocklet will make it temporarily unavailable, are you sure to continue?",confirmUpgrade:"Yes, Upgrade It",confirmRestart:"Yes, Restart It",restartDescription:"Restarting the blocklet will temporarily suspended and may not start because of a configuration change"},dev:{modeTip:"Please switch Blocklet Server to DEBUG mode"},index:{tableTitle:"Manage Your Blocklets",noBlocklet:"No blocklets found in this Blocklet Server, install a blocklet from market place to start."},admin:{iframeTitle:"Blocklet Admin Interface",title:"Admin Interface",noContent:"This blocklet does not have a admin interface",securityError:"SecurityError: Can not open the admin url from accessing a cross-origin frame"},config:{name:"App Name",description:"App Description",sk:"Secret key for the app wallet",logoSquare:"App Logo",logoRect:"Rect logo",logoRectDesc:"Usually displayed at the top of the page, default to app logo",logoFavicon:"Favicon",logoFaviconDesc:"Usually displayed in the browser's address bar or tab page, default to app logo",clusterSize:"Instance count when run this blocklet in cluster mode",copyrightOwner:"Copyright Owner (Display in footer)",copyrightYear:"Copyright Year (Display in footer)",deletable:{name:"Delete Protection",enable:"This blocklet can NOT currently be deleted",disable:"This blocklet can currently be deleted"},tenantMode:{name:"Multiple Tenant Mode",multiple:"This blocklet runs in multiple tenant mode, data should be isolated for each tenant",single:"This blocklet runs in single tenant mode, all data are shared"},walletType:{name:"Wallet Type",description:"Blocklet instance wallet type, will change the derived DID"},languages:"Supported Languages",selectLanguagesTip:"Adjust the order by removing and re-adding",languagesSearch:"Search by Country's Local Name, English Name, or ISO Code...",passportColor:"Passport Color",appUrl:"App URL",access:{title:"Who Can Access",description:"Who can access the blocklet",useDefault:"Use default",defaultDescription:"Use the application's default configuration",whoCanAccess:{all:{title:"Accessible to all",description:"Open to the world anyone can access without passport"},owner:{title:"Only me can access",description:"You must provide owner passport to access this application"},invited:{title:"Only invited people can access",description:"You can invite members later in the admin page"}},publicToStore:"Public On Store",publicInstanceTip:"The access address of this blocklet will be displayed in the Store (along with your DID for accepting donations)",updatedTip:"Access Control Modified"},changedTip:"Configuration updated, please restart Blocklet",missingRequired:"Missing required configuration to start the blocklet",gotoFix:"Go to fix",environment:{key:"Configuration key",value:"Configuration value",keyValueRequired:"Configuration key and value must be specified",invalidKey:"Configuration key must not start with BLOCKLET_ or COMPONENT_",deleteForbidden:"This configuration is required and should not be deleted",tip:"Configurations prefixed with BWA_ should not contain sensitive information because they will be sent to the browser"},dangerZone:"Danger Zone",blockletTypeChangeTip:"Wallet Type will be changed to <b>{value}</b>",appDidChangeTip:"This operation will change the DID of the application, which will lead to the following problems. Please confirm after careful evaluation:",appDidChangeTipL1:"The user's account connected to this application will change",appDidChangeTipL2:"The DID domain name of the application will change, and the original domain name will become invalid",appSkChangeTip:"You are changing application secret key",walletTypeTitle:"Update Wallet Type",appSkTitle:"Update Application Secret Key",sharedToAllComponents:"Will be shared to all components",session:{ttl:"Login session validity period (user will be asked to login again if they have no activity on this site for {day} days)",day:"{day} day",days:"{day} days"},clearCache:{name:"Cache Management",purpose:"Manage files cached in router and blocklet services",title:"Confirm Cache Clear?",action:"Clear Cache",success:"Successfully cleared {count} cache entries",description:"Are you sure you want to clear cached files in router and blocklet service? this operation may cause slight performance downgrade in the short term"}},overview:{source:"Source",deployedFrom:"Deployed From",accessControl:"Access Control",viewInStore:"View It In Store"},diskInfo:{empty:"Disk info not available now!",appDir:"App Directory",dataDir:"Data Directory",logDir:"Log Directory",cacheDir:"Cache Directory"},runtimeInfo:{noRunning:"Runtime information will be available when blocklet is running!",memoryUsage:"Memory Usage",cpuUsage:"CPU Usage",uptime:"Uptime",port:"Port",processId:"Process ID"},dist:{downloadLink:"Download Link",verify:"Verify"},status:{added:"Added",waiting:"Waiting",downloading:"Downloading",extracting:"Extracting",installing:"Installing",upgrading:"Upgrading",installed:"Installed",created:"Created",starting:"Starting",running:"Running",stopping:"Stopping",stopped:"Stopped",error:"Error",deleting:"Deleting",corrupted:"Corrupted",purchasing:"Waiting for purchase",purchased:"Purchased",verifying:"Verifying purchase",resource:"Resource"},list:{download:"Download",star:"Star"},component:{container:"Global Config",showContainer:"Show Global Config",didSpaceConfig:"Configure DID Spaces",didSpaceConfigTip:"Complete the following authorize process to store application data in DID Spaces",didSpaceConnected:"Storage being authorized to: {endpoint}",checkUpdateTitle:"Check for Updates",updateTitle:"Update Blocklets",noUpdate:"No Blocklets to update",add:"Add Blocklet",selectComponent:"Select Blocklet",selectRegistry:"Select Blocklet Store",selectRegistryTip:"You can switch blocklet store to see more components",selectInstance:"Select Instance",selectInstanceTip:"You can select an existing instance or create a new instance. Existing instances will use previously saved configuration and data",newInstance:"Create New Instance",noComponent:"No Blocklets",mountPoint:"What's the mount point?",mountPointTip:"If you set mount point to '/my-prefix', then all requests that begins with that mount point will be routed to the selected Blocklet",delete:"Delete Blocklet",deleteDescription:"This Blocklet will not be accessible after deletion. Confirm delete?",purchase:"Payment Required",tip:{stopBlocklet:"Please stop running Blocklet first",requiredBy:"The Blocklet is required by {name}"},choose:"Choose",upgrade:"Upgrade",addWithName:"Add Blocklet To {name}",relatedComponents:"Related Blocklets",required:"Required",noDependencies:"{name} doesn't have any dependencies",installed:"Installed",installingTip:"Installing component, please wait...",installingCanCloseWindowTip:"Installing component in the background, you can safely close this window",installSuccessTip:"Congratulations, the component was installed successfully!",missDownloadTokenTip:"Cannot add paid component without valid download token",purchaseComponentSecondCheckTip:"Please present your blocklet purchase NFT to continue",installComponentError:"There was an error installing the component, please retry again",downloadComponentError:"There was an error downloading the component, please retry again",addComponentTip:{introduction:"Welcome to the Add Component Wizard",isPurchase:"You need to Verify NFT before use <b>{name}</b> as a component;",belowInformation:"Below is the information for the component: ",verifyNFT:"Please select the Verify NFT method",config:"Please fill in the configuration of the component",environment:"Please fill in the environment of the component",fromUrl:"Add Blocklet From Url"},addNext:"Add {name}",upgradeNext:"Upgrade {name}",setting:"Settings"},router:{urlPath:"URL Path",noRunning:"The blocklet is not currently started. Unable to access through the following address!",securitySetting:"Security Setting",checkUrlAccessible:"Check the accessibility of the address",urlInaccessible:"It may be due to network reasons, the address is temporarily inaccessible",noAccessibleUrl:"No accessible URL",domainLockTooltip:"The system generated Domain cannot be edited.",urlLockTooltip:"The system generated URL Path cannot be edited.",showAllDomains:"Show all domains",showAllDIDs:"Show all DIDs",currentDomainTip:"You are accessing the current page through this domain"},export:{title:"Export Blocklet",name:"Bundle Name",nameTip:'e.g. "my-blocklet-name" or "@my-scope/blocklet-name"',result:"What's next",exportSource:"Export Source",success:"Blocklet successfully exported",resultTipStart:"With",resultTipEnd:"you can build and publish this blocklet within minutes",uploadedComponentTip:"Directly uploaded components cannot be exported:"},migrate:{title:"Migrate Application",scan:"Connect your DID Wallet to generate a key-pair for this application",confirm:"Review this operation on your DID Wallet",success:"Your application is successfully migrated, the page will be refreshed in {sec} seconds",intro:{l1:"Click here",l2:"to migrate your application to new version (changes are disabled before the migration completes)",l3:"1. The application DID will be fully controlled from your DID Wallet.",l4:"2. The application data will be migrated, and no further changes required.",l5:"3. The new application structure will give you more flexibly when change components.",l6:"4. Please do not change component mount points before component new version is out."},tip:{duplicate:"Find duplicate component {name}, please delete useless components and migrate again",running:"Please stop blocklet before migration"}},error:{isRunning:"Blocklet is running, please stop it first",isInProgress:"Blocklet is in progress, please wait for it to finish"},publish:{connectOrUpload:"Connect or Upload",projectSettings:"Project Settings",noStoreSelected:"Please select one of the existing stores or add a new store to continue",autoUploadTip:"Upload release to connected Blocklet Stores automatically after creation",possibleSameStoreTip:"Try resolving dependency blocklets to the same Blocklet Store before each uploading when possible",needProjectId:"Please create a project first",developerInfo:"Developer Information",branding:"Branding",brandingHelp:"More information about the blocklet will be displayed in the Store",download:"Download {name}",deleteStoreTip:"Are you sure you want to remove {name} from the connect Store list?",delete:"Delete {name}",copyInstallUrl:"Copy Install URL",installToThisServer:"Install to this server",createResource:"Create Resource",blockletStudio:"Blocklet Studio",tenantScope:"Tenant",addResource:"Add Blocklet",productTitle:"Product",versionTitle:"Versioning",imgTitle:"Images",resourceTitle:"Resources",resourceSelect:"Select resource from following blocklets",resourceUpload:"Upload resource from your disk (index.html is required in the archive)",blockletEmptyTip:"There aren’t any blocklets here",createBlockletTip:"You can create new blocklet through existing resources, components, and configuration in this application",createBlocklet:"New blocklet",reconnectStoreTip:"After reconnecting, a new developer will be bound. Are you sure you want to reconnect?",disconnectStoreTip:"After disconnecting, the blocklet will be removed from the store. Are you sure you want to disconnect?",componentNotRunning:"Blocklet {name} is not running, please start it first",allComponentsNotRunning:"Blocklets is not running, please start it first",releaseEmptyTip:"There aren't any releases here",resourceEmptyTip:"No available resources",viewLastRelease:"View last release",createReleaseTip:"You can create a release of the blocklet, along with release notes and resources, for other people to use",createRelease:"Create release",deleteReleaseTip:"The release cannot be recovered after deletion",createBlockletDid:"Create from DID Wallet",createReleaseSuccess:"Release created successfully",saveDraftSuccess:"Draft saved successfully",packTip:"Currently blocklets can be installed directly as applications. Components and application configurations will be automatically included in the Blocklet",resourceTip:"Currently, as a Resource Blocklet, it cannot be directly installed from the Store.",whyCantSeeInStore:"You need to publish the blocklet on connected store before you can see it in the store listing page",whyCantSeeResourceBlockletInStore:"Resource Blocklet are hidden from the store listing page by default",resourceChangedWarning:"You have modified the resource, please save it in time",install:"Install {name}",installResourceTip:"Install Url:",installResourceTip2:"If you want to see more tips, please visit",installResourceHelp:"Help Document",componentIncluded:"Included",componentForceRequired:"Required",steps:{branding:"Describe the basic information of your Blocklet. This information will be presented to users in the store.",introduction:"A clear introduction can effectively highlight your Blocklet. You can use Markdown syntax to write and preview it.",resources:"Please select the resources that need to be associated with the current Blocklet, as these resources will be installed along with the Blocklet.",blocklets:"Please select the Blocklets that need to be associated and installed when installing the current Blocklet.",version:"Set the release version and the change log."},connect:{title:"Create Blocklet DID",scan:"Scan the QR code below to generate Blocklet DID",confirm:"Confirm using DID Wallet",success:"Blocklet DID has been generated, please continue your operation"},deleteProject:{title:"Delete {name}",scan:"Scan the QR code below to delete {name}",confirm:"Confirm using DID Wallet",success:"Blocklet has been deleted, please continue your operation",description:"Are you sure you want to delete the Blocklet? Here are the issues you might encounter:",tip1:"The Blocklet cannot be recovered after deletion.",tip2:"You will no longer be able to publish new versions to the deleted Blocklet, which means that the Blocklet will not be updated in the Store anymore.",tip3:"Deleting the Blocklet will not affect its currently published version in the Store."},saveDraft:"Save Draft",releaseNote:"Release Note",errorTip:{noDid:"Blocklet DID is required",noFirstDid:"Please create Blocklet DID first",noTitle:"Blocklet Title is required",noVersion:"Blocklet Version is required",inValidVersion:"Invalid Blocklet Version",noResource:"Please select upload resource to be included in the blocklet",noDescription:"Blocklet Description is required",noNote:"Release Note is required"},uploadToStoreSuccess:"Blocklet upload to Store successfully, you need publish it in the Store",publishToStoreSuccess:"Blocklet published to Store successfully",connectStoreSuccess:"Blocklet Store connected successfully"}},dashboard:{nodeDid:"Node",ownerDid:"Owner",routingEngine:"Routing Engine",ownerNftURL:"Owner NFT",expirationLeft:"Expiration Left",startFromCrashTip:"Blocklet Server did not exit normally last time, please manually start the blocklets that needs to be run.",runtimeConfig:{blockletMaxMemoryLimit:"Blocklet Max Memory Limit",daemonMaxMemoryLimit:"Server Max Memory Limit",proxyMaxMemoryLimit:"Event Bus Max Memory Limit"}},store:{nameSort:"Name",popularSort:"Popularity",headerDescription:"Find and Install Your Blocklets",detail:{purchase:"Purchase {name}",open:"Open {name}",install:"Install {name}",upgrade:"Upgrade {name}",empty:"No introduction"},blockletRegistry:{changeFailed:"Change Blocklet Store Failed: ",addFailed:"Add Blocklet Store Failed: ",editFailed:"Edit Blocklet Store Failed: ",switchRegistry:"Switch Blocklet Store",addRegistry:"Add Blocklet Store",editRegistry:"Edit Blocklet Store",deleteRegistry:"Delete Blocklet Store",haveSameRegistry:"The same blocklet store exists",registryName:"Blocklet Store Name",registryUrl:"Blocklet Store URL",registryNameEmpty:"Blocklet Store name cannot be empty",registryUrlEmpty:"Blocklet store url cannot be empty",deleteDesc:'Confirm Delete blocklet store {name} ?<br/><span style="color: {color}">*After removing this blocklet store, you cannot update the apps installed from this blocklet store unless you add them again.</span>',confirmDesc:"Please input {name} to delete"},purchase:{title:"Purchase {name}",confirmed:"Your blocklet purchase NFT is verified",declined:"You do not provided valid the blocklet purchase NFT",waiting:"Waiting for purchase complete...",purchase:{title:"Purchase NFT",description:"Pay some token before installing this blocklet if you have not purchased this blocklet"},verify:{title:"Verify NFT",description:"Your NFT will be verified before installing this blocklet if you have purchased and hold the purchase NFT in your DID Wallet",auth:{title:"Purchase Credential Required",scan:"Connect DID Wallet to provide blocklet purchase NFT",confirm:"Review this operation on your DID Wallet",success:"Your purchase NFT is verified, and installing has started"}},auth:{title:"Purchase {name}",scan:"Scan following QRCode with your DID Wallet",confirm:"Confirm on your DID Wallet",success:"Purchase NFT sent to your DID Wallet"},launch:"Launch {name}",autoLaunch:"{name} successfully purchased, redirecting to launch page..."}},setting:{saveSuccess:"Settings Saved Successfully",unSavedTip:'There are unsaved changes, please click "Save Changes" to save them.',unSavedLeaveTip:"There are unsaved changes, are you sure to leave the page?",form:{name:"Name Your Server",nameRequired:"Server description is required",namePlaceholder:"Server Name",description:"Describe Your Server",descriptionHolder:"Server Description",descriptionRequired:"Server description is required",domain:"Your Server Domain Name",domainPlaceholder:"Server Domain Name",domainRequired:"Server domain is required",ipPlaceholder:"IP",ipRequired:"IP is required",registry:"Blocklet Store",registryPlaceholder:"Blocklet store to fetch blocklets",registryRequired:"Blocklet store is required ",registerUrl:"Blocklet Launcher URL",registerUrlPlaceholder:"Input the URL of your preferred Blocklet Launcher, you can use the official one safely",webWalletUrl:"DID Wallet URL",webWalletUrlPlaceholder:'Please input the URL of your hosted "DID Wallet", you can use the official one safely',nftDomainUrl:"NFT Domain URL",nftDomainUrlPlaceholder:'Please input the URL of your hosted "NFT Domain", you can use the official one safely',enableWelcomePage:"Enable welcome page",welcome:{switchLabel:"Welcome Page"},security:{switchLabel:"File System Isolation",switchTips:"After disabling this option, the file system of the Blocklet will no longer be in isolation, which may pose a risk of malicious software damaging the file system.",warningTips:"The file system isolation feature cannot take effect. Please upgrade the node.js version (current version is {version}) to v21.6.0 or higher."},upgrade:{title:"Upgrade Blocklet Server to {version}",description:"During the upgrade, your Blocklet Server will enter maintenance mode for a few minutes while the update is completed.",dialog:'Click on "confirm" to install the update. Blocklet Server will enter maintenance mode until the update is completed and return to production mode automatically.',confirm:"Upgrade",switchLabel:"Auto Update Check",enableBetaRelease:"Enable Beta Release",setup:"Preparing the upgrade",installing:"Installing Blocklet Server v{version}",restarting:"Restarting Blocklet Server",cleanup:"Migrating Blocklet Server data",verifying:"Verifying Blocklet Server v{version}",rollback:"Rollback Blocklet Server",complete:"Upgrade complete!",progress:"Upgrading {name}",check:"Check for Updates",latest:"You are running the latest version."},restart:{title:"Restart Blocklet Server",description:"During the restarting, your Blocklet Server will enter maintenance mode while the restart is completed.",dialog:'Click on "confirm" to restart. Blocklet Server will enter maintenance mode until the restart is completed and return to production mode automatically.',confirm:"Restart",setup:"Preparing the restart",verifying:"Verifying Blocklet Server",restarting:"Restarting Blocklet Server",cleanup:"Ensure everything is OK",rollback:"Cleanup the dirty state",complete:"Maintain complete!",progress:"Restarting {name}"},register:{titleAdded:"Added to Blocklet Launcher",title:"Add to Blocklet Launcher",description:"Once added, you can launch blocklets to this blocklet server from {url}.",descriptionOnAdded:"you can launch blocklets to this blocklet server from {url}.",btn:"Add",update:"Update",added:"Added",addSucceed:"Add succeed",updateSucceed:"Update succeed",detecting:"Detecting",timeout:"Detection timeout, please check if the blocklet launcher is started"},monitor:{diskThreshold:"Send alert when disk usage exceeds (%)",diskThresholdPlaceholder:"Please set the disk usage alert threshold"}},accessKey:{accessKeyId:"ACCESS KEY",lastUsed:"Last Used At",tip:"Please enter a name for this access key for future reference:",saveSecretTip:"This is the only time that your Access Secret key can be viewed and cannot be recovered. However, you can create new access keys at any time",iKnow:"I have copied and saved the Access Secret",showSecret:"Show Secret Access Key",hideSecret:"Hide Secret",title:"Delete Access Key",descriptionNoTime:"This will permanently delete the access key {key} with name {name}, which is (never used before)",description:"This will permanently delete access key {key} with name {name}, which is (last used on {time}, {timeAge})",confirm_desc:"Please input {name} to delete",remark:"Access Key Name",remarkInvalid:"Access Key Name is required"},webhook:{add:"Add Integration",delTitle:"Delete Integration",requiredError:"Please provide a valid {type}",confirm_desc:"Please input {name} to delete",test:"Test",description:"This will permanently delete integration with ID {id}",columns:{description:"ID",params:"Params",createdAt:"createdAt"}}},notification:{title:"Activities",empty:"No activities yet",viewAll:"View All",showRead:"Show Read",markAllAsRead:"Mark All as Read",markAsRead:"Mark As Read",proceed:"Proceed",checkingForUpdates:"Checking for updates...",installComponentError:"Not found uninstalled component {name}",installingComponent:"Installing component {name}",pushKit:{enable:"Enable PushKit notification",endpoint:"PushKit endpoint",endpointInvalid:"PushKit endpoint is invalid URL",testSuccess:"Test PushKit send successfully",testFailed:"Test PushKit send failed",testReceiver:"PushKit receiver",testSend:"Test push-kit send",inputTestReceiver:"Please input test receiver did",receiverRequired:"PushKit receiver is required",pushPath:"Api path for push-kit (default /api/push)",did:"PushKit Blocklet DID",customOptions:"Custom Options"},email:{enable:"Enable email notification",from:"Email sender",host:"SMTP server host",port:"SMTP server port",user:"SMTP server username",secure:"Enable secure connection",password:"SMTP server user password",fromRequired:"Email sender is required",fromInvalid:"Email sender is invalid",receiverRequired:"Email receiver is required",receiverInvalid:"Email receiver is invalid",hostRequired:"SMTP server host is required",hostInvalid:"SMTP server host is invalid",portRequired:"SMTP server port is required",portInvalid:"SMTP server port is invalid, port should be between 1 and 65535",userRequired:"SMTP server username is required",passwordRequired:"SMTP server user password is required",testSuccess:"Test email send successfully",testFailed:"Test email send failed",testReceiver:"Email receiver",testSendEmail:"Test email send",inputTestReceiver:"Please input test receiver email",disable:"Unsubscribe email notification",disableDescription:"After unsubscribe, you will no longer receive email notifications. To receive email notifications, you can subscribe it again on this page.",unsubscribe:"Unsubscribe email notification",unsubscribeDescription:"After unsubscribe, you will no longer receive any email notifications.",subscribe:"subscribe",subscribeDescription:"To receive email notifications, you can subscribe it again on settings page."},comingSoon:"More notification channel are under construction",unsubscribe:"Unsubscribe",unsubscribeSucceed:"Unsubscribe succeeded",unsubscribeFailed:"Unsubscribe failed",unsubscribeTokenRequired:"Unsubscribe token in required",unsubscribeTokenExpired:"Unsubscribe token is expired",unsubscribeTokenInvalid:"Unsubscribe token is invalid"},router:{routerSetting:"Domains & URLs",certSetting:"SSL Certificates",defaultSite:"Default",urlHelperText:"URL that do not start with HTTP/HTTPS are considered relative paths",empty:"Click on Actions to setup URL Mapping",healthy:{ok:"Blocklet or service is running",error:"Blocklet or service is not running or not installed"},service:{select:"Select Blocklet Services (Optional)",what:"Blocklet Services are pipelines executed against the request before redirecting to upstream blocklet"},nonProvider:{title:"Engine Change Warning",description:"If you change engine to none, your current page may not work properly because the previous engine will be stopped, are you sure to continue?",confirm:"I understand, continue"},validation:{urlRequired:"URL is required",redirectCodeRequired:"Redirect code is required",didRequired:"Blocklet is required",pathPrefixTooLong:"The URL Prefix cannot exceed {length} characters",pathPrefixCannotBeEmpty:"The URL Prefix cannot be empty",domainRequired:"Server domain is required",invalidUrl:"Please provide a valid URL",pathPrefixRequired:"URL prefix is required",redirectUrlRequired:"Redirect URL is required",rewriteUrlRequired:"Rewrite URL is required"},domain:{addSite:"Add Site",validate:{emptyTip:"Site domain cannot be empty",suffixTip:"Site domain cannot include {suffix}"},add:{title:"Add Domain Name",description:"Please provide a valid domain name",confirm:"Add",cancel:"Cancel",blocklet:"Select Blocklet",redirect:"Where to redirect the traffic?",port:"What port does your request handler need to listen to?",portTip:"This defaults to the main port of request handler, you can customize this",type:"Traffic Handler",component:"Select Component",pageGroup:"Page Group",pageGroupTip:"This component can render any group of pages listed above, leave empty to render all pages"},update:{title:"Update Site Domain",label:"Site Domain",description:"Please provide a valid site domain"},setup:{tipStart:"Add the DNS records for the domain",tipEnd:"as per the following guidelines",recordType:"Record Type",recordValue:"Record Value"},verify:{ok:"The domain resolution is normal",notResolved:"This domain neither resolved nor accessible, please check your DNS configuration"},https:{ok:"This domain has https enabled",bad:"This domain has not enabled https"},delete:{title:"Delete Site",description:'By confirming, you will delete your existing "{name}" site. Type "{name}" below and select Delete to complete the change, or select Cancel if you want to leave your site',confirm_desc:"Please input {name} to confirm"}},domainAlias:{nftDomain:"Automatic config with DID Domain",showTipHint:"How do I configure domain name resolution?",add:{title:"Add Additional Domain",domainDescription:"Please provide a valid domain name",forceTip:"Force add if domain name already exists",helperText:"If an HTTP or HTTPS URL is entered, it will be automatically converted into a domain name.",isDidDomainError:"This domain is a DID Domain. Please add it using the method for automatic domain configuration."},addCustomDomain:{name:"Custom Domain"},addDomainNFT:{showNFT:"Configure domain automatically",tips:"You can enter a domain purchased from DID Domain. If a DID Domain is detected, you must present the DID Domain NFT to continue.",connect:{title:"Please show your Domain NFT",scan:"Scan following QR code with DID Wallet to authorize to blocklet to use your domain",confirm:"Confirm on your DID Wallet",success:"Authorization Successfully"},buyTip:"DID Domain will do the domain name resolution automatically, no need to configure it manually, and the application will update the resolution record of the domain name automatically when needed. If your don't have DID Domain NFT yet, ",buy:"buy it now!"},delete:{title:"Delete",description:"After removing a domain alias, access to that alias may not be handled properly."}},domainSecurity:{title:"Domain Security",cors:{title:"Allowed CORS Domains",description:'Domain list that can send cross origin requests to {name}, comma separated, use "*" to allow anyone, which is not recommended',domainInvalid:"Please input a valid list of domain names"}},rule:{add:{title:"Add URL Mapping",confirm:"Add",pathPrefix:"What's the URL Prefix?",pathPrefixTip:"If you set prefix to '/my-prefix', then all requests that begins with that prefix will be routed to the configured blocklet",blocklet:"Which Blocklet will be handling those requests?",port:"Which port of the blocklet will be handling requests?",portTip:"This defaults to the main port of blocklet, if your blocklet listens on multiple ports, you can customize this",responseType:"Response Type",responseBody:"Response Content",responseBodyTip:"Paste your response content here, should not exceed 4096 characters",responseBodyRequired:"Response content can not be empty"},delete:{title:"Delete URL Mapping",description:'By confirming, you will delete your existing "{name}" URL Mapping. Type "{name}" below and select Delete to complete the change, or select Cancel if you want to leave your URL Mapping.',confirm_desc:"Please input {name} to delete",cancel:"Cancel"},update:{title:"Update URL Mapping",confirm:"Yes, Update",cancel:"Cancel"}},cert:{name:"Certificate Name",domain:"Domain Name",action:"Action",commonName:"Common Name",boundDomains:"Domains",source:"Source",expired:"Expired",leftDays:" days left",issuedOn:"Issued On",expiryOn:"Expiry On",fingerprintAlg:"Fingerprint Algorithm",validityPeriod:"Validity Period",matchedSites:"Matched Sites",upload:"Manual Upload",publicCertHelperText:"Public certificates can be downloaded",nonPublicCertHelperText:"Non-public certificates cannot be downloaded",protectedCertHelperText:"Protected certificates cannot be edited",unprotectedCertHelperText:"Unprotected certificates can be edited",issuing:"Certificate being generated",sourceTypes:{upload:"Manual Upload",lets_encrypt:"Let's Encrypt"},table:{nodata:"No data"},delete:{title:"Delete Certificate",description:"Confirm delete certificate of domain {domain}? Deleting it may affect related services. Please confirm it's safe before proceeding with the deletion.",confirm:"Confirm"},nginx:{title:"Update Certificate",titleAdd:"Add Certificate",pem:"SSL Certificate File",pemTip:'Please drop your server certificate file here, it should ends with ".pem" or ".crt"',key:"Private Key File",keyTip:'Please drop your server private key file here, it should ends with ".pem" or ".key"',confirm:"Save",cancel:"Cancel",invalidFile:"You have selected an invalid file",empty:"No file selected yet",source:"Source",sourceTypes:{upload:"Manual Upload",lets_encrypt:"Let's Encrypt"}},detail:{title:"Certificate Details"},genLetsEncryptCert:{title:"Generate Let's Encrypt certificate",dnsTip:"Please make sure the domain name has point to the current Blocklet Server.",description:"Adding a certificate will make the service more secure, and Blocklet Server will automatically renew the certificate before it expires."}},gateway:{reqLimit:{status:{true:"Enabled",false:"Disabled"},switchLabel:"Request Limit",rate:"Request Limit({rate} Request/Second)",ipHeaderLabel:"Customize client IP header(Optional)",ipHeaderDesc:"If the Blocklet Server is running behind some proxies, you can set the header of the client's real IP here. Optional, leave empty to use default."},cacheEnabled:{switchLabel:"Enable Gateway Cache"}}},noMatch:{desc:"We can't find the page that you're looking for"},health:{connectionErrorTip:"Blocklet Server can't connect to the network, please check if Blocklet Server has been stopped or there is a network issue",connectionRecoveryTip:"Blocklet Server connectivity has been recovered",connectionStoppedTip:"Blocklet Server has been stopped",wrongAccessUrlTip:"Blocklet Server access address is wrong, please use the correct access address"},debug:{title:"Your Blocklet Server is up and running!"},team:{add:"Add New",invite:{action:"Invite New",setting:"Invite Settings",enabled:"Allow any user to invite new user to this blocklet",disabled:"Only owner/admin can invite new user to this blocklet",inviter:"Invited By"},member:{name:"Name",passport:"Passport",passports:"Passports",lastLogin:"Last Login",lastLoginIp:"Last Login IP",openProfile:"View Profile",source:"Register Source",source_derived:"Derived from oauth",source_wallet:"DID Wallet",filter:"Filter by",forbidLogin:"Forbid Login",forbidLoginDescription:"The user will not be able to connect to this application",allowLogin:"Allow Login",allowLoginDescription:"The user will be able to connect to this application",updateRole:"Update Role",deleteUser:"Delete User",deleteUserDescription:'Confirm delete user "{name}"?',revokePassport:"Revoke Passport",revokePassportDescription:"Once the passport is revoked, the passport holder can not use it to login again, are you sure to continue?",enablePassport:"Enable Passport",enablePassportDescription:"Once the revoked passport is enabled again, the passport holder can use it to login again, are you sure to continue?",passportPermissionTitle:"The passport has the following permissions:",search:"Search Member",hideBlockedMember:"Hide Unapproved Members",inviteDialog:{createInviteLink:"Generate Invitation Link",createSuccessTip:"The invitation link is successfully created, click to copy and send the link to the invited member, please note that this invitation link can not be reused and will expire on {expireDate}"},error:{passportEmpty:"Passport should not be empty"},connectedAccounts:"Connected Accounts",connections:"Connections",federated:"Federated",switch:{did:"Switch DID",profile:"Switch Profile",passport:"Switch Passport"},settings:{notification:"Notifications",email:"Send email to me when some events happen",wallet:"Send notification to my wallet when some events happen",phone:"Send text message to me when some events happen",webhook:"Webhooks",add:"Add new webhook",url:"Custom URL",slack:"Slack Webhook",tested:"Test message sent"},activeUserSessions:"Active User Sessions",forceLogout:"Force logout",forceLogoutDescription:"Confirm to force logout this user?"},transferNode:{name:"Transfer Ownership",inviteDialog:{title:"Transfer Blocklet Server",tips:{progress:"Transfer the server needs to be accepted by the receiver to complete the transfer operation, and once the receiver accepts it, you cannot log in to the server with the current passport again.",newOwnerPermissions:"The new Owner will have the right to manage all operations such as members, passports, and Blocklets.",revoke:'If you want to withdraw the transfer invitation, you can delete the invitation link in the "Team -> Members -> Inviting" page.'},createInviteLink:"Generate Invitation Link",createSuccessTip:"The invitation link is successfully created, click to copy and send the link to the invited member, please note that this invitation link can not be reused and will expire on {expireDate}"},delegateDialog:{title:"Authorize Required",scan:"Scan following QR code with DID Wallet to authorize server to transfer server ownership NFT.",confirm:"Confirm on your DID Wallet",success:"Authorization Successfully"}},transferApp:{name:"Transfer Ownership",transferDialog:{title:"Transfer Application",tips:{progress:"Transfer the application needs to be accepted by the receiver to complete the transfer operation, and once the receiver accepts it, you cannot log in to the application with the current passport again.",newOwnerPermissions:"The new Owner will have the right to manage all operations such as members, passports, and settings."},createTransferLink:"Generate Transfer Link",createSuccessTip1:'The transfer link is successfully created, the invitee must use <a style="color: rgb(29, 193, 199)" target="_blank" href="https://www.didwallet.io/">DID Wallet</a> to receive the app ownership',createSuccessTip2:"Please click to copy and send the link to the invited member, please note that this transfer link can not be reused and will expire on {expireDate}. Your transfer link will only be shown once and will not be viewable again after closing this dialog",createSuccessTip3:"After the transfer is successful, the application will automatically restart to make the changes take effect",link:"Transfer Link",iKnow:"I have copied and saved the link"},connectDialog:{title:"Authorize Required",scan:"Scan following QR code with DID Wallet to authorize application to transfer ownership.",confirm:"Confirm on your DID Wallet",success:"Authorization Successfully"},receiveDialog:{title:"Receive Application Ownership",scan:"Scan following QR code with DID Wallet to receive the application ownership.",confirm:"Confirm on your DID Wallet",success:"Receive Ownership Successfully"},successTitle:"You have become the new owner of this application",visitDashboard:"Visit Application Dashboard"},permission:{create:{title:"Create Permission",description:`Format: <action>_<resource>
|
|
1492
|
-
e.g. 'query_user', 'mutate_user'`},delete:{title:"Delete Permission",description:"Confirm delete {name}?"},error:{actionEmpty:"action cannot be empty",resourceEmpty:"resource cannot be empty",permissionTooLong:"permission cannot exceed {length} characters",descriptionTooLong:"description cannot exceed {length} characters"}},passport:{create:{title:"Create Passport",titleTip:"Title cannot be modified after created, recommended within 14 letters"},bind:{title:"Bind Permission",roleTip:"You will get all the permissions of the selected passport after binding",permissionTip:"You will get the selected permissions after binding",transferLeftTitle:"All permissions",transferRightTitle:"Granted permissions"},delete:{title:"Delete Passport",description:"The passports holds by user will lose all permissions after it is deleted. Are you sure to continue?"},error:{titleEmpty:"title cannot be empty",titleTooLong:"title cannot exceed {length} characters",descriptionEmpty:"description cannot be empty"},issuance:{pending:"Pending",create:{title:"Generate Link"},delete:{title:"Delete Receive Link",description:"Confirm delete {link}?"}},issue:"Issue Passport",disableIssuance:"Disable Passport Issuance",enableIssuance:"Enable Passport Issuance",disableIssuanceTip:'"Issue Passport", "Invite Member" and other operations will be disabled',enableIssuanceTip:'"Issue Passport", "Invite Member" and other operations will be enabled',trustedPassportIssuers:"Trusted Passport Issuers",trustedIssuers:"Trusted Issuers",trustedFactories:"Trusted NFT Collections",trustedFactoriesTip:"Manage trusted NFT Collections that can be used to exchange for a passport",searchFactoryAddress:"Search Collection DID",configFactories:"Config Trusted NFT Collections",configFactoriesTip:"Allow users to exchange NFTs for passport",factoryAddress:"NFT Collection Address",factory404:"NFT Collection not found",factoryAddressTip:"The NFT Collection address must exist on ArcBlock Main Chain",role:"Passport Type",ttl:"Passport Expire Policy",ttlNever:"Never Expire",ttlMint:"From NFT Purchase",ttlExchange:"From Passport Exchange",ttlNeverTip:"The passport will be valid until revoked",ttlMintTip:"The passport will be valid from the time the NFT is purchased until you specified ttl or revoke",ttlExchangeTip:"The passport will be valid from the time user successfully exchanged until you specified ttl or revoke",ttlTip:'"365d" means 365 days, you can also use "30 days" or "24h"',validUntil:"Valid until: {date}",externalPassport:"External Passport",notTrustedIssuerTip:"The passport cannot be used because the issuer is not on the list of trusted issuers",issuerDid:"Issuer DID",addNodeToTrustedIssuers:"Add current server as a trusted passport issuer",revoked:"Revoked",noPermission:"No permission to perform this operation",shouldNotDeleteCurrent:"You can not revoke your passport currently in use",mappingRule:"Mapping rule",defaultRule:"Default rule",search:"Search Passport",searchIssuerDid:"Search Issuer DID",issueBy:"Issue by {name}",configColor:"Config Passport Color",configColorTip:"Customize the color of the passport",color:"Passport Color",description:"Use this passport to connect {teamName} as {title}"},inviting:{link:"Invite Link",inviter:"Inviter",delete:{title:"Delete Invite Link",description:"Confirm delete {link}?"},disabledTip:"Invitation is not enabled"},whoCanAccess:{all:{title:"Accessible to all"},owner:{title:"Owner only"},invited:{title:"Invited user only"}}},launcher:{provider:"Provider",adminUrl:"URL"},session:{forbidLogin:"You have been blocked from access this server"},launchBlocklet:{appInfo:"Application Information",appInfoDesc:"Confirm the application information",author:"Application Author: {author}",setup:"Setup Blocklet",redirect:"Redirect",alreadyRunning:"Application {name} is already running on this Blocklet Server",alreadyInstalled:"Application {name} is already installed on this Blocklet Server",alreadyExists:"This application already exists, redirecting...",purchased:"Already Purchased",purchase:"Purchase",nextStep:"Next Step",agreement:"License Agreement",agreeAll:"Agree & Continue",installing:"Installing {appName} on {serverName}, it may take minutes to complete, please stay tuned...",redirecting:"{appName} is successfully installed, now starting...",start:"Launching",launch:"Install Blocklet to Server",launchSuccess:"{appName} is successfully launched!",installSuccess:"Blocklet is successfully installed and launched on {serverName}",openInRegistry:"View in Blocklet Store",subTitle:"Ready to install Blocklet {appName} on {serverName}",installingSubTitle:"{appName} installing",access:"Open the application",installRelatedComponents:"Install related Blocklets",viewApplication:"View Application",newVersion:"New Version",newVersionDesc:"The application already exists, but the current version can be upgraded",upgradeNow:"Upgrade Now",later:"Later",introduction:"Introduction",welcome:"Welcome to the Blocklet Launch Wizard",accept:"I agree to the Blocklet EULA",license:"Application License",next:"Agree to the EULA and continue",purchaseApp:"Purchase Blocklet",setupAppDesc:"Initialize your Blocklet",launched:"Complete",confirmInstall:"Confirm Installation",dialog:{title:"Become App Owner",nftFreeDescription:"Please present app space NFT and create app account to continue",nftPaidDescription:"Please present app space NFT and app purchase NFT to continue",freeDescription:"Please create app account to continue",paidDescription:"Please present app purchase NFT and create app account to continue",confirm:"Confirm on your DID Wallet",success:"Authorization Successfully",authorizationTimeout:"Authorization timeout"},waiting:{verifying:"Verifying app meta...",downloading:"Downloading app bundle...",downloadingComponent:"Downloading {name}",extractingComponent:"Extracting {name}",extracting:"Extracting app bundle...",installing:"Installing app components...",installed:"Installed",starting:"Starting the app...",done:"Waiting for app ready..."},error:{loadMetaFailed:"Load app information failed",appMetaNotFound:"No information found for this app",downloadFailed:"Failed to download the app, please try again",installFailed:"Failed to install the app, please try again",startFailed:"Failed to start the app, please try again",launchFailed:"Failed to launch the app, please try again",installedButStopped:"The app is installed successfully, but cannot be started. You can start it manually after resolving blocking issues",installedButError:"The app is successfully installed, but failed to start",restoreFailed:"Failed to restore app, please try again",resourceBlocklet:"This blocklet cannot be launched directly, but you can add it into existing application."},steps:{introduction:"Introduction",installApp:"Install Application",purchaseSpace:"Purchase Space",prepareSpace:"Prepare Space"}},issuePassport:{title:"Receive Passport",description:"Use DID Wallet to receive the passport issued by {name}",dialog:{scan:"Use your DID Wallet to claim the passport",confirm:"Confirm on your DID Wallet",success:"The passport has been successfully added in your wallet",loginWithPassport:"Connect with this Passport",autoClose:"Page will auto close in {seconds}s",autoJump:"Page will auto jump in {seconds}s"}},lostPassport:{title:"Lost Passport",description:"The owner of {name} can scan the QR code to retrieve the passport, members please contact the owner to reissue the passport",dialog:{title:"Recover Passport",scan:"Use your DID Wallet to recover the passport",confirm:"Confirm on your DID Wallet",success:"The passport has been successfully added in your wallet"},return:"Connect with passport",selectPassport:"Select passport",receivePassport:"Receive passport"},invite:{message:"{name} invite you to be the {role} of {dapp}",success:"You have successfully joined {dapp}",receive:"Receive with",validUntil:"Valid until:",viewPermission:"View Permission",emptyPermission:"Empty Permission",open:"Open",description:{step1:"Download and setup your {wallet}",step2:"Click above button to receive passport",step3:"Login in {dapp} with received passport"},transferNFTDialog:{title:"Accept Blocklet Server {name}",scan:"Connect the Launcher to complete the reception of the Blocklet Server.",confirm:"Review this operation on your DID Wallet",success:"Connect successfully, waiting for confirmation of receiving the Server"}},receive:{dialog:{title:"Use your DID Wallet to receive passport",scan:"Connect your DID Wallet to receive passport",confirm:"Confirm on your DID Wallet",success:"You are successfully connected"}},navigation:{navigation:"Navigation",access:"Access",members:"Members",passport:"Passport",analytics:"Analytics",dashboard:"Dashboard",studio:"Studio",blockletService:"Blocklet Service",actionFailed:"Action Failed",form:{title:"Title",titlePlaceholder:"Please input navigation title",titleTooLong:"Title length should small than {len}",icon:"Navigation Icon",iconPlaceholder:"Please input navigation icon",invalidIcon:"Icon is invalid",findMoreIcon:"Find more icons",link:"Link",linkPlaceholder:"Please input navigation link",invalidLink:"Link is invalid",component:"Component",componentPlaceholder:"Please select navigation component",role:"Role",rolePlaceholder:"Please select navigation role",locale:"Locale",localePlaceholder:"Please input locale need to add",localeExists:"{value} is already exists"},action:{add:"Add navigation",addSub:"Add sub navigation",edit:"Edit navigation",hide:"Hide navigation",show:"Show navigation",del:"Delete navigation",new:"New",noAddSub:"Uninstalled component can't add sub navigation",noEdit:"Uninstalled component can't edit",noDel:"Not allowed delete built-in navigation",reset:"Reset",restConfirmTitle:"Do you want to clear all custom navigation?",restConfirmDesc:"After clearing, the navigation will be restored to Blocklet's original default configuration.",resetSuccessful:"Reset successful"}},storage:{spaces:{tips:"Tips",label:"Enter DID Spaces Gateway",connected:{title:"Connected DID Spaces",tag:"Connected"},connectedWithName:"You have successfully connected to {name}",addedWithName:"You have successfully added {name}",connects:"Connect",reconnect:"Reconnect",addressCannotEmpty:"Address cannot be empty",addressNotValid:"{url} is not a valid address",authorize:{title:"Connect {appName} to DID Spaces",scan:"Use your DID Wallet to scan the QR code below to allow the app {appName} to connect to DID Spaces",success:"Connected successfully"},provideNFT:{title:"Please show the DID Spaces NFT for {appName}",scan:"Use your DID Wallet to scan the QR code below to allow the app {appName} show DID space NFT",success:"Connected successfully"},backup:{title:"Backup",records:"Backup Records"},autoBackup:{title:"Auto backup",enabled:"Automatic backup is on",disabled:"Automatic backup is off"},autoCheckUpdate:{title:"Automatically check for new version notification",enabled:"Automatically check for new version is on",disabled:"Automatically check for new version is off"},backupSuccessfully:"Backup successfully",restore:"Restore",restoreSuccessfully:"Restore successfully",gateway:{title:"Gateway",select:"Select a DID Spaces",add:{title:"Add DID Spaces",label:"Enter the url of the DID Spaces",failed:"Add DID Spaces failed",invalidUrl:"Invalid DID Spaces gateway url",duplicate:"DID Space({name}) already exist"},delete:{title:"Delete gateway",succeeded:"Delete DID Spaces{name} Success",failed:"Delete gateway failed",failedForSelected:"Unable to delete a selected DID Spaces"},connect:{title:"Connect DID Spaces",add:"Connect to DID Spaces now",addTips:"You are not connected to any Space yet",switch:"Switch DID Spaces",switchTips:"You are connected to {name}",connected:"Connected"},switch:{failedForMismatchSpace:"Please connect to the correct Space{name}"},connectTo:"Connect to DID Spaces"},strategy:{title:"Backup Strategy",autoBackup:"Auto backup",backupNow:"Backup now",viewBackupFiles:"View backup files"},progress:{title:"Backup progress"},record:{title:"Backup records",emptyData:"No records"},notYet:"You don't have a backup in progress yet...",connect:{now:"Connect now",title:"Connect DID Spaces",provider:"Provide your DID Spaces to start backups",providerForStorage:"Please connect your DID Spaces",useWallet:"Connect with DID Wallet",useWalletReconnect:"Reconnect with DID Wallet",useSpaceGateway:"Connect using the DID Spaces gateway",useSpaceGatewayReconnect:"Reconnect using the DID Spaces gateway",switchToSpace:"Switch to Space",switchToSpaceSucceeded:"Switched to Space{name}",succeeded:"You have successfully connected to DID Spaces",disconnect:"disconnect"},disconnected:{tag:"Disconnected",reconnectNow:"Reconnect Now"}}},log:{lastDays:{1:"Last 1 Day",7:"Last 1 Week"}},oauth:{commonSettings:"Common Settings",save:"Save",saveSuccess:"Save successfully",saveFailed:"Save failed",issued:"Issued",thirdPartyLogin:"Third party login",alreadyBindOAuth:"Already bind third party login",alreadyBindWallet:"Already bind DID Wallet",auth0:{enable:"Enable Auth0 login",domain:"Domain",domainDescription:"Auth0's domain is required",clientId:"Client ID",clientIdDescription:"Auth0 OAuth application client ID is required",clientSecret:"Client Secret",clientSecretDescription:"Auth0 OAuth application Client Secret is required"},github:{enable:"Enable Github login",clientId:"Client ID",clientIdDescription:"Github OAuth application Client ID is required",clientSecret:"Client Secret",clientSecretDescription:"Github OAuth application Client Secret is required"},google:{enable:"Enable Google login",clientId:"Client ID",clientIdDescription:"Google OAuth application Client ID is required",clientSecret:"Client Secret",clientSecretDescription:"Google OAuth application Client Secret is required"},apple:{enable:"Enable Apple login",teamId:"Team ID",teamIdDescription:"Apple OAuth application Team ID is required",serviceId:"Service ID",serviceIdDescription:"Apple OAuth application Service ID is required",keyId:"Key ID",keyIdDescription:"Apple OAuth application Key ID is required",authKey:"Auth Key",authKeyDescription:"Apple OAuth application Auth Key is required",bundleId:"Bundle ID",bundleIdDescription:"Apple OAuth application Bundle ID is required"},comingSoon:"More login methods are under construction",moreLogin:"More Login",federated:"Federated Login",oauth:"Third Party Login",runTest:"Test"},expiration:{mobile:{tips:{success:"{validity}",warning:"{validity}",error:"Expired"},loadFailed:"Retry!"},desktop:{tips:{success:"Subscription will expire after {validity}",warning:"Subscription will expire after {validity}",error:"Subscription Expired"},loading:"Load subscription...",loadFailed:"Failed to load subscription info, please retry!",nextInvoice:"Next Invoice: {date}"}},analytics:{trend:"Trends",detail:"Breakdown",traffic:{totalRequests:"Total Requests",validRequests:"Success Requests",failedRequests:"Failed Requests",uniqueVisitors:"Unique Visitors",uniqueFiles:"Unique URLs",uniqueReferrers:"Unique Referrers",uniqueNotFound:"Unique 404",uniqueStaticFiles:"Unique Static Files",logSize:"Log Size",bandwidth:"Bandwidth"}},federated:{inviteJoinFederatedLogin:"Invite to join federated login",inviteJoinFederatedLoginDescription:"Copy the following address and fill it in the application where you need to join to apply for federated login.",federatedLogin:"Federated login",joinFederatedLogin:"Join federated login",joinFederatedLoginDescription:"Please enter the federated login address provided by Master Blocklet to join the federated login",quitFederatedLogin:"Quit federated login",quitFederatedLoginDescription:"After quit federated login, normal login is always available",federatedJoinAppUrl:"Federated login join appUrl",federatedJoinAppUrlRequired:"Please input federated login join appUrl",failedToGetFederatedLoginAppUrl:"Failed to get federated login join appUrl",federatedJoinAppUrlInvalid:"Federated login appUrl is invalid",siteDetail:"Site detail",approveToJoinLogin:"Approve to join federated login",approve:"Enable login",revoke:"Disable login",enableFederatedLogin:"Enable federated login",disableFederatedLogin:"Disable federated login",enableFederatedLoginDescription:"After enable federated login, this site will be auto login",disableFederatedLoginDescription:"After disable federated login, this site will not be auto login",enableFederatedAutoLogin:"Enable automatic login",enableFederatedAutoLoginDescription:"After enable automatic login, if there is currently a unified login status, the site will automatically log in the identity of the federated login",disableFederatedAutoLogin:"Disable automatic login",disableFederatedAutoLoginDescription:"After the automatic login is turned off, the site will not automatically log in the user information of the unified login, and you can still choose to manually click to log in with the identity of the federated login",info:{appId:"APP DID",appPid:"Permanent ID",migratedFrom:"Also Known As",appName:"Blocklet name",appDescription:"Blocklet description",appUrl:"Blocklet url",appLogo:"Blocklet logo",did:"Blocklet DID",serverId:"Blocklet Server ID",serverVersion:"Blocklet Server version",version:"Blocklet version",appliedAt:"Apply at",status:"Status"},status:{pending:"Pending",approved:"Approved",rejected:"Rejected",revoked:"Revoked"},disbandFederatedLogin:"Disband federated login",disbandFederatedLoginDescription:"After disband federated login, all member site will quit federated login automatically"},optionsOrder:{1:"Option One",2:"Option Two"}},en$1={blocklet:{restoreBlocklet:{title:"Restore Blocklet",description:"Please select the blocklet you want to restore",verify:{title:"Verify Ownership",subTitle:"Verify ownership of the blocklet with your DID Wallet",verify:"Verify",reconnect:"Try another blocklet",scan:"Scan QR code with your DID Wallet to prove ownership",confirm:"Sign delegation to allow server to download and decrypt the backup",success:"Ownership verified, the restoring is in progress",exists:"This blocklet already exists on this server and restore is aborted",open:"Visit Blocklet",overwrite:"Overwrite"},overwrite:{title:"Overwrite existing blocklet?",description:"The blocklet you are restoring already exists on this server, do you want to overwrite it? The exiting blocklet will be deleted first if you continue"},restore:{title:"Restore Blocklet"}},restoreFromServer:{selectTitle:"Select Application",description:"Please select the application you want to restore",backupIn:"Backup in"},restoreFromSpaces:{title:"Restore from DID Spaces",navSubTitle:"Restore",connect:{title:"Connect DID Space",subTitle:"Jump to DID Spaces, and select the blocklet you want to restore.",select:"Select DID Spaces Gateway",connect:"Connect"},selectBlocklet:{title:"Select App"},restore:{title:"Restore App",subTitle:"The app is being restored",completeTitle:"Everything is Ready",installedTitle:"Successfully restored!",installedSubTitle:"But still needs some configurations to start",support:'If retrying does not work, please ask help in the <a href="{communityLink}" target="_blank">community</a> or contact us at <a href="mailto: {supportEmail}">{supportEmail}</a>.'},nftAuthDialog:{title:"Please present your App Space NFT",scan:"Scan QR code with your DID Wallet to present your NFT",confirm:"Confirm on your DID Wallet",success:"NFT successfully verified!"},progress:{waiting:"Waiting for restore...",restoring:"Restoring...",importData:"Importing data...",downloading:"Downloading files, progress: {progress}",importSuccess:"Successfully imported!",installing:"Installing..."}}},server:{checkUpgrade:"Check new version"}},flatMerge=a=>flat$1(merge$1(...a)),translations$1={en:flat$1(merge$1(en$2,en$1)),ar:async()=>{const a=await Promise.all([__vitePreload(()=>import("./ar-CqvGG4eC.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./ar-DEFG_HSF.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},de:async()=>{const a=await Promise.all([__vitePreload(()=>import("./de-l0XzFKav.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./de-BXx5XWMv.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},es:async()=>{const a=await Promise.all([__vitePreload(()=>import("./es-DYmEeFzA.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./es-dYDfzHE0.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},fr:async()=>{const a=await Promise.all([__vitePreload(()=>import("./fr-DwS-xj4v.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./fr-DGLilU-8.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},hi:async()=>{const a=await Promise.all([__vitePreload(()=>import("./hi-Dj91QHv6.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./hi-EiYI5FnU.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},id:async()=>{const a=await Promise.all([__vitePreload(()=>import("./id-CzhlCzfQ.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./id-BHuBzbF-.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},ja:async()=>{const a=await Promise.all([__vitePreload(()=>import("./ja-Ut-jFS9r.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./ja-BeNRi6CF.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},ko:async()=>{const a=await Promise.all([__vitePreload(()=>import("./ko-Clp4qzRT.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./ko-BGPBfmUw.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},pt:async()=>{const a=await Promise.all([__vitePreload(()=>import("./pt-BXaJbqdY.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./pt-BmW9xdbz.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},ru:async()=>{const a=await Promise.all([__vitePreload(()=>import("./ru-p_K_7IoQ.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./ru-DufkUHOM.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},th:async()=>{const a=await Promise.all([__vitePreload(()=>import("./th-BJT9w_Lk.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./th-Dl-J4TkD.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},vi:async()=>{const a=await Promise.all([__vitePreload(()=>import("./vi-CycHlNkN.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./vi-BMeJuBa9.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},zh:async()=>{const a=await Promise.all([__vitePreload(()=>import("./zh-Dv1l1HNj.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./zh-BDoN11lM.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},"zh-TW":async()=>{const a=await Promise.all([__vitePreload(()=>import("./zh-tw-44W5osxR.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./zh-tw-Dg9g_7UM.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)}},theme=create$4({typography:{fontSize:14,button:{textTransform:"none"}},overrides:{MuiTableRow:{root:{"&:nth-child(even)":{backgroundColor:"rgba(0, 0, 0, 0.02)"}},head:{backgroundColor:"transparent"}}},palette:{primary:{main:"#1DC1C7",contrastText:"#fff"}},breakpoints:{values:{xs:0,sm:600,md:960,lg:1280,xl:1920}}}),globalStyles=css$1`
|
|
1492
|
+
e.g. 'query_user', 'mutate_user'`},delete:{title:"Delete Permission",description:"Confirm delete {name}?"},error:{actionEmpty:"action cannot be empty",resourceEmpty:"resource cannot be empty",permissionTooLong:"permission cannot exceed {length} characters",descriptionTooLong:"description cannot exceed {length} characters"}},passport:{create:{title:"Create Passport",titleTip:"Title cannot be modified after created, recommended within 14 letters"},bind:{title:"Bind Permission",roleTip:"You will get all the permissions of the selected passport after binding",permissionTip:"You will get the selected permissions after binding",transferLeftTitle:"All permissions",transferRightTitle:"Granted permissions"},delete:{title:"Delete Passport",description:"The passports holds by user will lose all permissions after it is deleted. Are you sure to continue?"},error:{titleEmpty:"title cannot be empty",titleTooLong:"title cannot exceed {length} characters",descriptionEmpty:"description cannot be empty"},issuance:{pending:"Pending",create:{title:"Generate Link"},delete:{title:"Delete Receive Link",description:"Confirm delete {link}?"}},issue:"Issue Passport",disableIssuance:"Disable Passport Issuance",enableIssuance:"Enable Passport Issuance",disableIssuanceTip:'"Issue Passport", "Invite Member" and other operations will be disabled',enableIssuanceTip:'"Issue Passport", "Invite Member" and other operations will be enabled',trustedPassportIssuers:"Trusted Passport Issuers",trustedIssuers:"Trusted Issuers",trustedFactories:"Trusted NFT Collections",trustedFactoriesTip:"Manage trusted NFT Collections that can be used to exchange for a passport",searchFactoryAddress:"Search Collection DID",configFactories:"Config Trusted NFT Collections",configFactoriesTip:"Allow users to exchange NFTs for passport",factoryAddress:"NFT Collection Address",factory404:"NFT Collection not found",factoryAddressTip:"The NFT Collection address must exist on ArcBlock Main Chain",role:"Passport Type",ttl:"Passport Expire Policy",ttlNever:"Never Expire",ttlMint:"From NFT Purchase",ttlExchange:"From Passport Exchange",ttlNeverTip:"The passport will be valid until revoked",ttlMintTip:"The passport will be valid from the time the NFT is purchased until you specified ttl or revoke",ttlExchangeTip:"The passport will be valid from the time user successfully exchanged until you specified ttl or revoke",ttlTip:'"365d" means 365 days, you can also use "30 days" or "24h"',validUntil:"Valid until: {date}",externalPassport:"External Passport",notTrustedIssuerTip:"The passport cannot be used because the issuer is not on the list of trusted issuers",issuerDid:"Issuer DID",addNodeToTrustedIssuers:"Add current server as a trusted passport issuer",revoked:"Revoked",noPermission:"No permission to perform this operation",shouldNotDeleteCurrent:"You can not revoke your passport currently in use",mappingRule:"Mapping rule",defaultRule:"Default rule",search:"Search Passport",searchIssuerDid:"Search Issuer DID",issueBy:"Issue by {name}",configColor:"Config Passport Color",configColorTip:"Customize the color of the passport",color:"Passport Color",description:"Use this passport to connect {teamName} as {title}"},inviting:{link:"Invite Link",inviter:"Inviter",delete:{title:"Delete Invite Link",description:"Confirm delete {link}?"},disabledTip:"Invitation is not enabled"},whoCanAccess:{all:{title:"Accessible to all"},owner:{title:"Owner only"},invited:{title:"Invited user only"}}},launcher:{provider:"Provider",adminUrl:"URL"},session:{forbidLogin:"You have been blocked from access this server"},launchBlocklet:{appInfo:"Application Information",appInfoDesc:"Confirm the application information",author:"Application Author: {author}",setup:"Setup Blocklet",redirect:"Redirect",alreadyRunning:"Application {name} is already running on this Blocklet Server",alreadyInstalled:"Application {name} is already installed on this Blocklet Server",alreadyExists:"This application already exists, redirecting...",purchased:"Already Purchased",purchase:"Purchase",nextStep:"Next Step",agreement:"License Agreement",agreeAll:"Agree & Continue",installing:"Installing {appName} on {serverName}, it may take minutes to complete, please stay tuned...",redirecting:"{appName} is successfully installed, now starting...",start:"Launching",launch:"Install Blocklet to Server",launchSuccess:"{appName} is successfully launched!",installSuccess:"Blocklet is successfully installed and launched on {serverName}",openInRegistry:"View in Blocklet Store",subTitle:"Ready to install Blocklet {appName} on {serverName}",installingSubTitle:"{appName} installing",access:"Open the application",installRelatedComponents:"Install related Blocklets",viewApplication:"View Application",newVersion:"New Version",newVersionDesc:"The application already exists, but the current version can be upgraded",upgradeNow:"Upgrade Now",later:"Later",introduction:"Introduction",welcome:"Welcome to the Blocklet Launch Wizard",accept:"I agree to the Blocklet EULA",license:"Application License",next:"Agree to the EULA and continue",purchaseApp:"Purchase Blocklet",setupAppDesc:"Initialize your Blocklet",launched:"Complete",confirmInstall:"Confirm Installation",dialog:{title:"Become App Owner",nftFreeDescription:"Please present app space NFT and create app account to continue",nftPaidDescription:"Please present app space NFT and app purchase NFT to continue",freeDescription:"Please create app account to continue",paidDescription:"Please present app purchase NFT and create app account to continue",confirm:"Confirm on your DID Wallet",success:"Authorization Successfully",authorizationTimeout:"Authorization timeout"},waiting:{verifying:"Verifying app meta...",downloading:"Downloading app bundle...",downloadingComponent:"Downloading {name}",extractingComponent:"Extracting {name}",extracting:"Extracting app bundle...",installing:"Installing app components...",installed:"Installed",starting:"Starting the app...",done:"Waiting for app ready..."},error:{loadMetaFailed:"Load app information failed",appMetaNotFound:"No information found for this app",downloadFailed:"Failed to download the app, please try again",installFailed:"Failed to install the app, please try again",startFailed:"Failed to start the app, please try again",launchFailed:"Failed to launch the app, please try again",installedButStopped:"The app is installed successfully, but cannot be started. You can start it manually after resolving blocking issues",installedButError:"The app is successfully installed, but failed to start",restoreFailed:"Failed to restore app, please try again",resourceBlocklet:"This blocklet cannot be launched directly, but you can add it into existing application."},steps:{introduction:"Introduction",installApp:"Install Application",purchaseSpace:"Purchase Space",prepareSpace:"Prepare Space"}},issuePassport:{title:"Receive Passport",description:"Use DID Wallet to receive the passport issued by {name}",dialog:{scan:"Use your DID Wallet to claim the passport",confirm:"Confirm on your DID Wallet",success:"The passport has been successfully added in your wallet",loginWithPassport:"Connect with this Passport",autoClose:"Page will auto close in {seconds}s",autoJump:"Page will auto jump in {seconds}s"}},lostPassport:{title:"Lost Passport",description:"The owner of {name} can scan the QR code to retrieve the passport, members please contact the owner to reissue the passport",dialog:{title:"Recover Passport",scan:"Use your DID Wallet to recover the passport",confirm:"Confirm on your DID Wallet",success:"The passport has been successfully added in your wallet"},return:"Connect with passport",selectPassport:"Select passport",receivePassport:"Receive passport"},invite:{message:"{name} invite you to be the {role} of {dapp}",success:"You have successfully joined {dapp}",receive:"Receive with",validUntil:"Valid until:",viewPermission:"View Permission",emptyPermission:"Empty Permission",open:"Open",description:{step1:"Download and setup your {wallet}",step2:"Click above button to receive passport",step3:"Login in {dapp} with received passport"},transferNFTDialog:{title:"Accept Blocklet Server {name}",scan:"Connect the Launcher to complete the reception of the Blocklet Server.",confirm:"Review this operation on your DID Wallet",success:"Connect successfully, waiting for confirmation of receiving the Server"}},receive:{dialog:{title:"Use your DID Wallet to receive passport",scan:"Connect your DID Wallet to receive passport",confirm:"Confirm on your DID Wallet",success:"You are successfully connected"}},navigation:{navigation:"Navigation",access:"Access",members:"Members",passport:"Passport",analytics:"Analytics",dashboard:"Dashboard",studio:"Studio",blockletService:"Blocklet Service",actionFailed:"Action Failed",form:{title:"Title",titlePlaceholder:"Please input navigation title",titleTooLong:"Title length should small than {len}",icon:"Navigation Icon",iconPlaceholder:"Please input navigation icon",invalidIcon:"Icon is invalid",findMoreIcon:"Find more icons",link:"Link",linkPlaceholder:"Please input navigation link",invalidLink:"Link is invalid",component:"Component",componentPlaceholder:"Please select navigation component",role:"Role",rolePlaceholder:"Please select navigation role",locale:"Locale",localePlaceholder:"Please input locale need to add",localeExists:"{value} is already exists"},action:{add:"Add navigation",addSub:"Add sub navigation",edit:"Edit navigation",hide:"Hide navigation",show:"Show navigation",del:"Delete navigation",new:"New",noAddSub:"Uninstalled component can't add sub navigation",noEdit:"Uninstalled component can't edit",noDel:"Not allowed delete built-in navigation",reset:"Reset",restConfirmTitle:"Do you want to clear all custom navigation?",restConfirmDesc:"After clearing, the navigation will be restored to Blocklet's original default configuration.",resetSuccessful:"Reset successful"}},storage:{spaces:{tips:"Tips",label:"Enter DID Spaces Gateway",connected:{title:"Connected DID Spaces",tag:"Connected"},connectedWithName:"You have successfully connected to {name}",addedWithName:"You have successfully added {name}",connects:"Connect",reconnect:"Reconnect",addressCannotEmpty:"Address cannot be empty",addressNotValid:"{url} is not a valid address",authorize:{title:"Connect {appName} to DID Spaces",scan:"Use your DID Wallet to scan the QR code below to allow the app {appName} to connect to DID Spaces",success:"Connected successfully"},provideNFT:{title:"Please show the DID Spaces NFT for {appName}",scan:"Use your DID Wallet to scan the QR code below to allow the app {appName} show DID space NFT",success:"Connected successfully"},backup:{title:"Backup",records:"Backup Records"},autoBackup:{title:"Auto backup",enabled:"Automatic backup is on",disabled:"Automatic backup is off"},autoCheckUpdate:{title:"Automatically check for new version notification",enabled:"Automatically check for new version is on",disabled:"Automatically check for new version is off"},backupSuccessfully:"Backup successfully",restore:"Restore",restoreSuccessfully:"Restore successfully",gateway:{title:"Gateway",select:"Select a DID Spaces",add:{title:"Add DID Spaces",label:"Enter the url of the DID Spaces",failed:"Add DID Spaces failed",invalidUrl:"Invalid DID Spaces gateway url",duplicate:"DID Space({name}) already exist"},delete:{title:"Delete gateway",succeeded:"Delete DID Spaces{name} Success",failed:"Delete gateway failed",failedForSelected:"Unable to delete a selected DID Spaces"},connect:{title:"Connect DID Spaces",add:"Connect to DID Spaces now",addTips:"You are not connected to any Space yet",switch:"Switch DID Spaces",switchTips:"You are connected to {name}",connected:"Connected"},switch:{failedForMismatchSpace:"Please connect to the correct Space{name}"},connectTo:"Connect to DID Spaces"},strategy:{title:"Backup Strategy",autoBackup:"Auto backup",backupNow:"Backup now",viewBackupFiles:"View backup files"},progress:{title:"Backup progress"},record:{title:"Backup records",emptyData:"No records"},notYet:"You don't have a backup in progress yet...",connect:{now:"Connect now",title:"Connect DID Spaces",provider:"Provide your DID Spaces to start backups",providerForStorage:"Please connect your DID Spaces",useWallet:"Connect with DID Wallet",useWalletReconnect:"Reconnect with DID Wallet",useSpaceGateway:"Connect using the DID Spaces gateway",useSpaceGatewayReconnect:"Reconnect using the DID Spaces gateway",switchToSpace:"Switch to Space",switchToSpaceSucceeded:"Switched to Space{name}",succeeded:"You have successfully connected to DID Spaces",disconnect:"disconnect"},disconnected:{tag:"Disconnected",reconnectNow:"Reconnect Now"}}},log:{lastDays:{1:"Last 1 Day",7:"Last 1 Week"}},oauth:{commonSettings:"Common Settings",save:"Save",saveSuccess:"Save successfully",saveFailed:"Save failed",issued:"Issued",thirdPartyLogin:"Third party login",alreadyBindOAuth:"Already bind third party login",alreadyBindWallet:"Already bind DID Wallet",auth0:{enable:"Enable Auth0 login",domain:"Domain",domainDescription:"Auth0's domain is required",clientId:"Client ID",clientIdDescription:"Auth0 OAuth application client ID is required",clientSecret:"Client Secret",clientSecretDescription:"Auth0 OAuth application Client Secret is required"},github:{enable:"Enable Github login",clientId:"Client ID",clientIdDescription:"Github OAuth application Client ID is required",clientSecret:"Client Secret",clientSecretDescription:"Github OAuth application Client Secret is required"},google:{enable:"Enable Google login",clientId:"Client ID",clientIdDescription:"Google OAuth application Client ID is required",clientSecret:"Client Secret",clientSecretDescription:"Google OAuth application Client Secret is required"},apple:{enable:"Enable Apple login",teamId:"Team ID",teamIdDescription:"Apple OAuth application Team ID is required",serviceId:"Service ID",serviceIdDescription:"Apple OAuth application Service ID is required",keyId:"Key ID",keyIdDescription:"Apple OAuth application Key ID is required",authKey:"Auth Key",authKeyDescription:"Apple OAuth application Auth Key is required",bundleId:"Bundle ID",bundleIdDescription:"Apple OAuth application Bundle ID is required"},comingSoon:"More login methods are under construction",moreLogin:"More Login",federated:"Federated Login",oauth:"Third Party Login",runTest:"Test"},expiration:{mobile:{tips:{success:"{validity}",warning:"{validity}",error:"Expired"},loadFailed:"Retry!"},desktop:{tips:{success:"Subscription will expire after {validity}",warning:"Subscription will expire after {validity}",error:"Subscription Expired"},loading:"Load subscription...",loadFailed:"Failed to load subscription info, please retry!",nextInvoice:"Next Invoice: {date}"}},analytics:{trend:"Trends",detail:"Breakdown",traffic:{totalRequests:"Total Requests",validRequests:"Success Requests",failedRequests:"Failed Requests",uniqueVisitors:"Unique Visitors",uniqueFiles:"Unique URLs",uniqueReferrers:"Unique Referrers",uniqueNotFound:"Unique 404",uniqueStaticFiles:"Unique Static Files",logSize:"Log Size",bandwidth:"Bandwidth"}},federated:{inviteJoinFederatedLogin:"Invite to join federated login",inviteJoinFederatedLoginDescription:"Copy the following address and fill it in the application where you need to join to apply for federated login.",federatedLogin:"Federated login",joinFederatedLogin:"Join federated login",joinFederatedLoginDescription:"Please enter the federated login address provided by Master Blocklet to join the federated login",quitFederatedLogin:"Quit federated login",quitFederatedLoginDescription:"After quit federated login, normal login is always available",federatedJoinAppUrl:"Federated login join appUrl",federatedJoinAppUrlRequired:"Please input federated login join appUrl",failedToGetFederatedLoginAppUrl:"Failed to get federated login join appUrl",federatedJoinAppUrlInvalid:"Federated login appUrl is invalid",siteDetail:"Site detail",approveToJoinLogin:"Approve to join federated login",approve:"Enable login",revoke:"Disable login",enableFederatedLogin:"Enable federated login",disableFederatedLogin:"Disable federated login",enableFederatedLoginDescription:"After enable federated login, this site will be auto login",disableFederatedLoginDescription:"After disable federated login, this site will not be auto login",enableFederatedAutoLogin:"Enable automatic login",enableFederatedAutoLoginDescription:"After enable automatic login, if there is currently a unified login status, the site will automatically log in the identity of the federated login",disableFederatedAutoLogin:"Disable automatic login",disableFederatedAutoLoginDescription:"After the automatic login is turned off, the site will not automatically log in the user information of the unified login, and you can still choose to manually click to log in with the identity of the federated login",info:{appId:"APP DID",appPid:"Permanent ID",migratedFrom:"Also Known As",appName:"Blocklet name",appDescription:"Blocklet description",appUrl:"Blocklet url",appLogo:"Blocklet logo",did:"Blocklet DID",serverId:"Blocklet Server ID",serverVersion:"Blocklet Server version",version:"Blocklet version",appliedAt:"Apply at",status:"Status"},status:{pending:"Pending",approved:"Approved",rejected:"Rejected",revoked:"Revoked"},disbandFederatedLogin:"Disband federated login",disbandFederatedLoginDescription:"After disband federated login, all member site will quit federated login automatically"},optionsOrder:{1:"Option One",2:"Option Two"}},en$1={blocklet:{restoreBlocklet:{title:"Restore Blocklet",description:"Please select the blocklet you want to restore",verify:{title:"Verify Ownership",subTitle:"Verify ownership of the blocklet with your DID Wallet",verify:"Verify",reconnect:"Try another blocklet",scan:"Scan QR code with your DID Wallet to prove ownership",confirm:"Sign delegation to allow server to download and decrypt the backup",success:"Ownership verified, the restoring is in progress",exists:"This blocklet already exists on this server and restore is aborted",open:"Visit Blocklet",overwrite:"Overwrite"},overwrite:{title:"Overwrite existing blocklet?",description:"The blocklet you are restoring already exists on this server, do you want to overwrite it? The exiting blocklet will be deleted first if you continue"},restore:{title:"Restore Blocklet"}},restoreFromServer:{selectTitle:"Select Application",description:"Please select the application you want to restore",backupIn:"Backup in"},restoreFromSpaces:{title:"Restore from DID Spaces",navSubTitle:"Restore",connect:{title:"Connect DID Space",subTitle:"Jump to DID Spaces, and select the blocklet you want to restore.",select:"Select DID Spaces Gateway",connect:"Connect"},selectBlocklet:{title:"Select App"},restore:{title:"Restore App",subTitle:"The app is being restored",completeTitle:"Everything is Ready",installedTitle:"Successfully restored!",installedSubTitle:"But still needs some configurations to start",support:'If retrying does not work, please ask help in the <a href="{communityLink}" target="_blank">community</a> or contact us at <a href="mailto: {supportEmail}">{supportEmail}</a>.'},nftAuthDialog:{title:"Please present your App Space NFT",scan:"Scan QR code with your DID Wallet to present your NFT",confirm:"Confirm on your DID Wallet",success:"NFT successfully verified!"},progress:{waiting:"Waiting for restore...",restoring:"Restoring...",importData:"Importing data...",downloading:"Downloading files, progress: {progress}",importSuccess:"Successfully imported!",installing:"Installing..."}}},server:{checkUpgrade:"Check new version"}},flatMerge=a=>flat$1(merge$1(...a)),translations$1={en:flat$1(merge$1(en$2,en$1)),ar:async()=>{const a=await Promise.all([__vitePreload(()=>import("./ar-2JePd-i1.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./ar-DEFG_HSF.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},de:async()=>{const a=await Promise.all([__vitePreload(()=>import("./de-DFRVy5eA.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./de-BXx5XWMv.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},es:async()=>{const a=await Promise.all([__vitePreload(()=>import("./es-D3TLX5Mb.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./es-dYDfzHE0.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},fr:async()=>{const a=await Promise.all([__vitePreload(()=>import("./fr-B2p5dLWr.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./fr-DGLilU-8.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},hi:async()=>{const a=await Promise.all([__vitePreload(()=>import("./hi-DmXVnjfE.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./hi-EiYI5FnU.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},id:async()=>{const a=await Promise.all([__vitePreload(()=>import("./id-BPCkzz44.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./id-BHuBzbF-.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},ja:async()=>{const a=await Promise.all([__vitePreload(()=>import("./ja-DdBhyqmR.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./ja-BeNRi6CF.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},ko:async()=>{const a=await Promise.all([__vitePreload(()=>import("./ko-DagkAgw5.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./ko-BGPBfmUw.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},pt:async()=>{const a=await Promise.all([__vitePreload(()=>import("./pt-DTmAqAWs.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./pt-BmW9xdbz.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},ru:async()=>{const a=await Promise.all([__vitePreload(()=>import("./ru-BZQlsXeO.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./ru-DufkUHOM.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},th:async()=>{const a=await Promise.all([__vitePreload(()=>import("./th-DSRLorcE.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./th-Dl-J4TkD.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},vi:async()=>{const a=await Promise.all([__vitePreload(()=>import("./vi-dE7BhTCc.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./vi-BMeJuBa9.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},zh:async()=>{const a=await Promise.all([__vitePreload(()=>import("./zh-DfGqeTts.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./zh-BDoN11lM.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)},"zh-TW":async()=>{const a=await Promise.all([__vitePreload(()=>import("./zh-tw-COZAaB9V.js"),[],import.meta.url).then(j=>j.default),__vitePreload(()=>import("./zh-tw-Dg9g_7UM.js"),[],import.meta.url).then(j=>j.default)]);return flatMerge(a)}},theme=create$4({typography:{fontSize:14,button:{textTransform:"none"}},overrides:{MuiTableRow:{root:{"&:nth-child(even)":{backgroundColor:"rgba(0, 0, 0, 0.02)"}},head:{backgroundColor:"transparent"}}},palette:{primary:{main:"#1DC1C7",contrastText:"#fff"}},breakpoints:{values:{xs:0,sm:600,md:960,lg:1280,xl:1920}}}),globalStyles=css$1`
|
|
1493
1493
|
a {
|
|
1494
1494
|
color: ${teal.A700};
|
|
1495
1495
|
text-decoration: none;
|
|
@@ -2487,4 +2487,4 @@ ${et}
|
|
|
2487
2487
|
${a=>a.scrollable?"":"overflow: hidden"};
|
|
2488
2488
|
}
|
|
2489
2489
|
`;function GlobalSubscriber(){const{t:a}=useLocaleContext(),{session:j}=useSessionContext$1(),{info:_e,refresh:et}=useNodeContext();return useSubscription(constant.TeamEvents.userUpdated,({teamDid:nt,user:tt})=>{nt===_e.did&&tt&&!tt.approved&&j&&j.user&&j.user.did===tt.did&&(toast.warning(a("session.forbidLogin"),{autoHideDuration:10*1e3}),j.logout())}),useSubscription(constant$3.EVENTS.NOTIFICATION_CREATE,nt=>{nt.entityType==="node"&&et({silent:!0})}),useSubscription(constant$3.EVENTS.NODE_UPDATED,()=>{et({silent:!0})}),null}var util={},baseUniq=_baseUniq;function uniq(a){return a&&a.length?baseUniq(a):[]}var uniq_1=uniq;const uniq$1=getDefaultExportFromCjs$1(uniq_1),require$$6=getAugmentedNamespace(dist$2);class Node{constructor(j){this.value=j,this.next=void 0}}let Queue$1=class{constructor(){this.clear()}enqueue(j){const _e=new Node(j);this._head?(this._tail.next=_e,this._tail=_e):(this._head=_e,this._tail=_e),this._size++}dequeue(){const j=this._head;if(j)return this._head=this._head.next,this._size--,j.value}clear(){this._head=void 0,this._tail=void 0,this._size=0}get size(){return this._size}*[Symbol.iterator](){let j=this._head;for(;j;)yield j.value,j=j.next}};var yoctoQueue=Queue$1;const Queue=yoctoQueue,pLimit=a=>{if(!((Number.isInteger(a)||a===1/0)&&a>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up");const j=new Queue;let _e=0;const et=()=>{_e--,j.size>0&&j.dequeue()()},nt=async(ut,ft,...pt)=>{_e++;const dt=(async()=>ut(...pt))();ft(dt);try{await dt}catch{}et()},tt=(ut,ft,...pt)=>{j.enqueue(nt.bind(null,ut,ft,...pt)),(async()=>(await Promise.resolve(),_e<a&&j.size>0&&j.dequeue()()))()},it=(ut,...ft)=>new Promise(pt=>{tt(ut,pt,...ft)});return Object.defineProperties(it,{activeCount:{get:()=>_e},pendingCount:{get:()=>j.size},clearQueue:{value:()=>{j.clear()}}}),it};var pLimit_1=pLimit,engine={},browser={};browser.endianness=function(){return"LE"};browser.hostname=function(){return typeof location<"u"?location.hostname:""};browser.loadavg=function(){return[]};browser.uptime=function(){return 0};browser.freemem=function(){return Number.MAX_VALUE};browser.totalmem=function(){return Number.MAX_VALUE};browser.cpus=function(){return[]};browser.type=function(){return"Browser"};browser.release=function(){return typeof navigator<"u"?navigator.appVersion:""};browser.networkInterfaces=browser.getNetworkInterfaces=function(){return{}};browser.arch=function(){return"javascript"};browser.platform=function(){return"browser"};browser.tmpdir=browser.tmpDir=function(){return"/tmp"};browser.EOL=`
|
|
2490
|
-
`;browser.homedir=function(){return"/"};(function(a){var j=commonjsGlobal&&commonjsGlobal.__importDefault||function(pt){return pt&&pt.__esModule?pt:{default:pt}};Object.defineProperty(a,"__esModule",{value:!0}),a.hasMountPoint=a.hasStartEngine=a.isPackBlocklet=a.isGatewayBlocklet=a.getBlockletEngine=void 0;const _e=j(browser),et=constant,nt=pt=>{if(pt===void 0)throw new Error("blocklet meta param is required");const{engine:dt}=pt;if(!dt)return{interpreter:"node",source:""};if(!Array.isArray(dt))return dt;const mt=_e.default.platform(),Et=dt.find(wt=>wt.platform===mt);if(!Et)throw new Error(`can not find a proper engine interpreter on ${mt}`);return Et};a.getBlockletEngine=nt;const tt=pt=>(pt==null?void 0:pt.group)===et.BlockletGroup.gateway;a.isGatewayBlocklet=tt;const it=pt=>(pt==null?void 0:pt.group)===et.BlockletGroup.pack;a.isPackBlocklet=it;const ut=pt=>!!(pt!=null&&pt.main)||(0,a.getBlockletEngine)(pt||{}).interpreter==="blocklet";a.hasStartEngine=ut;const ft=pt=>((0,a.hasStartEngine)(pt)||((pt==null?void 0:pt.interfaces)||[]).find(dt=>dt.type===et.BLOCKLET_INTERFACE_TYPE_WEB))&&(0,a.isGatewayBlocklet)(pt)===!1;a.hasMountPoint=ft})(engine);(function(a){var j=commonjsGlobal&&commonjsGlobal.__importDefault||function(pn){return pn&&pn.__esModule?pn:{default:pn}};Object.defineProperty(a,"__esModule",{value:!0}),a.hasStartEngine=a.isPackBlocklet=a.isGatewayBlocklet=a.isAccessible=a.isRunning=a.isBeforeInstalled=a.isInProgress=a.getBlockletServices=a.getBlockletAppIdList=a.getRolesFromAuthConfig=a.isPreferenceKey=a.isExternalBlocklet=a.getBlockletChainInfo=a.getChainInfo=a.getConnectAppUrl=a.getParentComponentName=a.filterComponentsV2=a.findComponentByIdV2=a.findComponentV2=a.findComponentById=a.findComponent=a.getComponentBundleId=a.getComponentName=a.getComponentId=a.replaceSlotToIp=a.getComponentWhoCanAccess=a.getWhoCanAccess=a.findServiceFromMeta=a.findWebInterfacePort=a.findWebInterface=a.fixBlockletStatus=a.getAppDescription=a.getDisplayName=a.getAppName=a.hasRunnableComponent=a.wipeSensitiveData=a.isEnvShareable=a.isEnvShareableToClient=a.getComponentMissingConfigs=a.getAppMissingConfigs=a.getSharedConfigObj=a.isDeletableBlocklet=a.forEachComponentV2Sync=a.forEachComponentV2=a.forEachChildSync=a.forEachChild=a.forEachBlockletSync=a.forEachBlocklet=a.isFreeComponent=a.isFreeBlocklet=void 0,a.hasResourceType=void 0,a.getAppUrl=Gt;const _e=j(get_1),et=j(uniq_1),nt=require$$6,tt=j(pLimit_1),it=j(constant$3),ut=constant,ft=engine;Object.defineProperty(a,"hasStartEngine",{enumerable:!0,get:function(){return ft.hasStartEngine}}),Object.defineProperty(a,"isGatewayBlocklet",{enumerable:!0,get:function(){return ft.isGatewayBlocklet}}),Object.defineProperty(a,"isPackBlocklet",{enumerable:!0,get:function(){return ft.isPackBlocklet}});const{NODE_SERVICES:pt,SLOT_FOR_IP_DNS_SITE:dt,WHO_CAN_ACCESS:mt,WHO_CAN_ACCESS_PREFIX_ROLES:Et}=it.default,wt=(pn,En=[])=>`${En.map(An=>An&&An.meta?An.meta.did:"").join("/")}${En.length?"/":""}${pn&&pn.meta?pn.meta.did:""}`;a.getComponentId=wt;const St=(pn,En=[])=>`${En.map(An=>An&&An.meta?An.meta.name:"").join("/")}${En.length?"/":""}${pn&&pn.meta?pn.meta.name:""}`;a.getComponentName=St;const Ct=pn=>`${pn.meta.bundleName}@${pn.meta.version}`;a.getComponentBundleId=Ct;const Dt=pn=>{if(!pn)return"";const En=pn.split("/");return En.pop(),!En.length||(En[En.length-1].startsWith("@")&&En.pop(),!En.length)?"":En.join("/")};a.getParentComponentName=Dt;const At=(pn,En,{parallel:An=!1,concurrencyLimit:zn=5,sync:rn,params:Ut,_parent:Zt,_root:hn,_level:wn=0,_tasks:qn,_ancestors:kn=[],_limit:Mn}={})=>{const Kn=hn||Zt||pn,On=wt(pn,kn),jn=kn.concat(pn);if(rn){const Gn=En(pn,{parent:Zt,root:Kn,level:wn,params:Ut,ancestors:kn,id:On});if(pn.children)for(const Ir of pn.children)At(Ir,En,{sync:rn,params:Gn,_parent:pn,_root:Kn,_level:wn+1,_ancestors:jn});return null}if(!An)return new Promise(async(Gn,Ir)=>{try{const Wn=await En(pn,{parent:Zt,root:Kn,level:wn,ancestors:kn,params:Ut,id:On});if(pn.children)for(const Qn of pn.children)await At(Qn,En,{params:Wn,_parent:pn,_root:Kn,_level:wn+1,_ancestors:jn});Gn(null)}catch(Wn){Ir(Wn)}});const cr=Mn||(0,tt.default)(zn),Un=qn||[];if(Un.push(cr(()=>En(pn,{parent:Zt,root:Kn,level:wn,ancestors:kn,id:On}))),pn.children)for(const Gn of pn.children)At(Gn,En,{parallel:An,_parent:pn,_root:Kn,_level:wn+1,_tasks:Un,_ancestors:jn,_limit:cr});return qn?null:Promise.all(Un)};a.forEachBlocklet=At;const Pt=(pn,En)=>At(pn,En,{sync:!0});a.forEachBlockletSync=Pt;const It=(pn,En,{parallel:An=!1,concurrencyLimit:zn=5,sync:rn}={})=>{if(rn){if(pn.children)for(const hn of pn.children)En(hn);return null}if(!An)return new Promise(async(hn,wn)=>{try{if(pn.children)for(const qn of pn.children)await En(qn);hn(null)}catch(qn){wn(qn)}});const Ut=(0,tt.default)(zn),Zt=[];if(pn.children)for(const hn of pn.children)Zt.push(Ut(()=>En(hn)));return Promise.all(Zt)};a.forEachComponentV2=It;const Lt=(pn,En)=>It(pn,En,{sync:!0});a.forEachComponentV2Sync=Lt;const zt=(pn,En,An)=>At(pn,(zn,rn)=>rn.level===0?{}:En(zn,rn),An);a.forEachChild=zt;const Ft=(pn,En)=>zt(pn,En,{sync:!0});a.forEachChildSync=Ft;const Ht=(pn,En,{_ancestors:An=[],returnAncestors:zn=!1}={})=>{if(!En)return null;if(En(pn,{ancestors:An}))return zn?{component:pn,ancestors:An}:pn;for(const rn of pn.children||[]){const Ut=An.concat(pn),Zt=Ht(rn,En,{_ancestors:Ut,returnAncestors:zn});if(Zt)return Zt}return null};a.findComponent=Ht;const Qt=(pn,En,{returnAncestors:An=!1}={})=>(Array.isArray(En)&&(En=En.join("/")),Ht(pn,(zn,{ancestors:rn})=>{const Ut=wt(zn,rn);return En===Ut},{returnAncestors:An}));a.findComponentById=Qt;const tn=(pn,En)=>{if(!En)return null;for(const An of pn.children||[])if(En(An,pn))return An;return null};a.findComponentV2=tn;const mn=(pn,En)=>En?(Array.isArray(En)&&(En=En.join("/")),tn(pn,(An,zn)=>{if(En.includes("/")){const rn=wt(An,[zn]);return En===rn}return En===An.meta.did})):null;a.findComponentByIdV2=mn;const $t=(pn,En)=>{if(!En)return[];const An=[];for(const zn of pn.children||[])En(zn,pn)&&An.push(zn);return An};a.filterComponentsV2=$t;const rt=pn=>!!pn&&!!(pn.key||pn.name)&&!pn.secure&&pn.shared!==!1&&!ut.BLOCKLET_CONFIGURABLE_KEY[pn.key||pn.name];a.isEnvShareableToClient=rt;const st=pn=>!!pn&&!!(pn.key||pn.name)&&!pn.secure&&!!pn.shared&&!ut.BLOCKLET_CONFIGURABLE_KEY[pn.key||pn.name];a.isEnvShareable=st;const ct=(pn,En)=>{const An={};return!pn||!En||(Array.isArray(pn.configs)&&pn.configs.forEach(({key:zn,value:rn,secure:Ut})=>{if(!st({key:zn,secure:Ut,shared:!0}))return;const Zt=(pn.configObj||{})[zn]||rn,hn=(En.configs||[]).find(wn=>wn.key===zn);(!hn||st(hn)||!hn.value&&!(En.configObj||{})[hn.key])&&(An[zn]=Zt)}),(pn.configs||[]).forEach(({key:zn,value:rn})=>{[ut.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_CHAIN_HOST,ut.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_CHAIN_ID,ut.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_CHAIN_TYPE].includes(zn)&&(An[ut.CHAIN_PROP_MAP[zn]]=rn)})),An};a.getSharedConfigObj=ct;const ht=pn=>pn.key.startsWith(ut.BLOCKLET_PREFERENCE_PREFIX)===!0;a.isPreferenceKey=ht;const vt=(pn,En)=>!!(pn.required&&(!pn.value&&!En[pn.key]||Object.values(ut.CHAIN_PROP_MAP).includes(pn.key)&&Object.keys(En).includes(pn.key)&&!En[pn.key])),xt=(pn={})=>{const En=[];return Lt(pn,An=>{var Ut;if(((Ut=An.meta)==null?void 0:Ut.group)===ut.BlockletGroup.gateway)return;const zn=An.configs||[],rn=ct(pn,An);zn.forEach(Zt=>{vt(Zt,rn)&&En.push({did:An.meta.did,key:Zt.key,description:Zt.description})})}),En.filter(An=>!ht(An))};a.getAppMissingConfigs=xt;const Tt=(pn={},En={})=>{const An=[],zn=pn.configs||[],rn=ct(En,pn);return zn.forEach(Ut=>{vt(Ut,rn)&&An.push({did:pn.meta.did,key:Ut.key,description:Ut.description})}),An};a.getComponentMissingConfigs=Tt;const yt=pn=>pn.payment?(pn.payment.price||[]).map(An=>An.value||0).every(An=>An===0):!0;a.isFreeBlocklet=yt;const ot=pn=>!pn.payment||!pn.payment.componentPrice?!0:!pn.payment.componentPrice.length;a.isFreeComponent=ot;const bt=pn=>pn&&(At(pn,En=>{En.configs&&(En.configs=En.configs.filter(An=>!ht(An)),En.configs.forEach(An=>{An.secure&&(An.value=An.value?"__encrypted__":"")})),(En.environments||[]).forEach(An=>{["BLOCKLET_APP_SK","BLOCKLET_APP_PSK"].includes(An.key)&&(An.value="__encrypted__")}),(En.migratedFrom||[]).forEach(An=>{An.appSk="__encrypted__"}),delete pn.configObj,delete pn.environmentObj},{sync:!0}),pn);a.wipeSensitiveData=bt;const Mt=pn=>{if(!pn)return!1;const En=pn.environments.find(An=>An.key==="BLOCKLET_DELETABLE");return En?En.value==="yes":!0};a.isDeletableBlocklet=Mt;const Ot=pn=>{let En=!1;return Pt(pn,An=>{An.meta.group!==ut.BlockletGroup.gateway&&(En=!0)}),En};a.hasRunnableComponent=Ot;const Vt=(pn,En=!1)=>{if(!pn)return"";const{meta:An}=pn;let zn;if(!En&&pn.environments){const rn=pn.environments.find(Ut=>Ut.key==="BLOCKLET_APP_NAME");rn&&rn.value&&(zn=rn.value)}return zn||An.title||An.name};a.getAppName=Vt,a.getDisplayName=Vt;const Nt=(pn,En=!1)=>{if(!pn)return"";const{meta:An}=pn;let zn;if(!En&&pn.environments){const rn=pn.environments.find(Ut=>Ut.key==="BLOCKLET_APP_DESCRIPTION");rn&&rn.value&&(zn=rn.value)}return zn||An.description||An.name};a.getAppDescription=Nt;function Gt(pn){var zn,rn,Ut;const En=(Ut=(rn=(zn=pn==null?void 0:pn.site)==null?void 0:zn.domainAliases)==null?void 0:rn.sort((Zt,hn)=>{var wn,qn,kn,Mn;return(wn=Zt.accessibility)!=null&&wn.accessible&&((qn=hn.accessibility)!=null&&qn.accessible)?+Zt.isProtected-+hn.isProtected:+((kn=hn.accessibility)==null?void 0:kn.accessible)-+((Mn=Zt.accessibility)==null?void 0:Mn.accessible)}))==null?void 0:Ut.map(Zt=>{var qn;const hn=(qn=Zt==null?void 0:Zt.domainStatus)!=null&&qn.isHttps?"https://":"http://",wn=Zt==null?void 0:Zt.value;return`${hn}${wn}`}).filter(Boolean);return En==null?void 0:En[0]}const qt=pn=>{pn&&(Pt(pn,En=>{En.status=(0,ut.fromBlockletStatus)(En.status),En.source!==void 0&&(En.source=(0,ut.fromBlockletSource)(En.source))}),pn.settings&&(pn.settings.children||[]).forEach(En=>{Pt(En,An=>{An.status=(0,ut.fromBlockletStatus)(An.status),An.source!==void 0&&(An.source=(0,ut.fromBlockletSource)(An.source))})}))};a.fixBlockletStatus=qt;const nn=pn=>{if(!pn)return null;const En=pn.meta||pn||{},{interfaces:An=[]}=En;return Array.isArray(An)?An.find(zn=>zn.type===ut.BLOCKLET_INTERFACE_TYPE_WEB):null};a.findWebInterface=nn;const fn=pn=>{if(!pn)return null;const En=nn(pn),{ports:An}=pn;return!En||!An?null:An[En.port]};a.findWebInterfacePort=fn;const yn=(pn,En)=>{const An=[En];En===pt.AUTH&&An.push(pt.AUTH_SERVICE);const zn=nn(pn);return zn?(zn.services||[]).find(rn=>An.includes(rn.name)):null};a.findServiceFromMeta=yn;const Jt=pn=>{if(!pn)return mt.ALL;if((0,_e.default)(pn,"settings.whoCanAccess"))return pn.settings.whoCanAccess;const En=yn(pn.meta,pt.AUTH);return(0,_e.default)(En,"config.whoCanAccess")?En.config.whoCanAccess:mt.ALL};a.getWhoCanAccess=Jt;const Bt=(pn,En)=>{const An=(pn.configs||[]).find(rn=>rn.key===ut.BLOCKLET_CONFIGURABLE_KEY.COMPONENT_ACCESS_WHO);if(An)return An.value;if(En&&(0,_e.default)(En,"settings.whoCanAccess")&&(0,_e.default)(En,"settings.whoCanAccess")!==mt.ALL)return(0,_e.default)(En,"settings.whoCanAccess");const zn=yn(pn.meta,pt.AUTH);return(0,_e.default)(zn,"config.whoCanAccess")?zn.config.whoCanAccess:mt.ALL};a.getComponentWhoCanAccess=Bt;const Kt=({request:pn,baseUrl:En})=>{const An=pn.headers["x-blocklet-did"]||"",zn=pn.headers["x-blocklet-real-did"]||"",rn=pn.headers["x-path-prefix"]||"/",Ut=pn.headers["x-group-path-prefix"]||"/";let Zt=En;return An!==zn&&rn!==Ut&&(Zt=(0,nt.joinURL)(Zt,"/").replace(rn,Ut)),Zt};a.getConnectAppUrl=Kt;const un=(pn,En)=>{const An=(En||"").includes(":")?":":/\./;return(pn||"").replace(dt,(En||"").replace(new RegExp(An,"g"),"-"))};a.replaceSlotToIp=un;const sn=pn=>{const En=Object.entries(ut.CHAIN_INFO_CONFIG).reduce((An,zn)=>{const[rn,[Ut,Zt]]=zn;return An[Ut]=(0,_e.default)(pn,rn)||Zt,An},{});return En.type==="ethereum"&&En.id==="none"&&(En.id="1"),En};a.getChainInfo=sn;const vn=pn=>{const En=sn({});if(!pn)return En;const An=sn(pn.configObj);if(An.host!=="none")return An;let zn;return Ft(pn,rn=>{if(zn&&zn.host!=="none")return;const Ut=sn(rn.configObj);Ut.host!=="none"&&(zn=Ut)}),zn||En};a.getBlockletChainInfo=vn;const $n=pn=>!!(pn!=null&&pn.controller);a.isExternalBlocklet=$n;const cn=pn=>pn.whoCanAccess.startsWith(Et)?pn.whoCanAccess.substring(Et.length).split(","):[];a.getRolesFromAuthConfig=cn;const gn=pn=>{const En=Array.isArray(pn.migratedFrom)?pn.migratedFrom.map(An=>An.appDid):[];return(0,et.default)([pn.appDid,pn.appPid,...En].filter(Boolean))};a.getBlockletAppIdList=gn;const Fn=pn=>{const En=[];return pn&&Pt(pn,An=>{var rn;(((rn=An.meta)==null?void 0:rn.interfaces)||[]).filter(Ut=>Ut.type===ut.BLOCKLET_INTERFACE_TYPE_SERVICE).forEach(Ut=>{const Zt=Ut.port||{};En.push({name:Ut.name,protocol:Ut.protocol,port:Number(Zt.external),upstreamPort:Number((An.ports||{})[Zt.internal])})})}),En};a.getBlockletServices=Fn;const _n=pn=>[ut.BlockletStatus.downloading,ut.BlockletStatus.waiting,ut.BlockletStatus.starting,ut.BlockletStatus.installing,ut.BlockletStatus.stopping,ut.BlockletStatus.upgrading,"downloading","waiting","starting","installing","extracting","stopping","upgrading","restarting","deleting"].includes(pn);a.isInProgress=_n;const In=pn=>[ut.BlockletStatus.added,ut.BlockletStatus.waiting,ut.BlockletStatus.downloading,ut.BlockletStatus.installing,"added","waiting","downloading","installing"].includes(pn);a.isBeforeInstalled=In;const lr=pn=>[ut.BlockletStatus.running,"running"].includes(pn);a.isRunning=lr;const xn=pn=>[ut.BlockletStatus.running,ut.BlockletStatus.waiting,ut.BlockletStatus.downloading,"running","waiting","downloading"].includes(pn);a.isAccessible=xn;const Sn=(pn,{type:En,did:An}={type:"",did:""})=>{var zn,rn,Ut;return pn?!(0,ft.hasStartEngine)(pn.meta)&&((Ut=(rn=(zn=pn.meta)==null?void 0:zn.resource)==null?void 0:rn.bundles)==null?void 0:Ut.length)>0&&(pn.meta.resource.bundles||[]).some(Zt=>Zt.type===En&&Zt.did===An):!1};a.hasResourceType=Sn,a.default={isFreeBlocklet:yt,isFreeComponent:ot,forEachBlocklet:At,forEachBlockletSync:Pt,forEachChild:zt,forEachChildSync:Ft,forEachComponentV2:It,forEachComponentV2Sync:Lt,isDeletableBlocklet:Mt,getSharedConfigObj:ct,getAppMissingConfigs:xt,getComponentMissingConfigs:Tt,isEnvShareableToClient:rt,isEnvShareable:st,wipeSensitiveData:bt,hasRunnableComponent:Ot,getAppName:Vt,getAppDescription:Nt,getAppUrl:Gt,getDisplayName:Vt,fixBlockletStatus:qt,findWebInterface:nn,findWebInterfacePort:fn,findServiceFromMeta:yn,getWhoCanAccess:Jt,getComponentWhoCanAccess:Bt,replaceSlotToIp:un,getComponentId:wt,getComponentName:St,getComponentBundleId:Ct,findComponent:Ht,findComponentById:Qt,findComponentV2:tn,findComponentByIdV2:mn,filterComponentsV2:$t,getParentComponentName:Dt,getConnectAppUrl:Kt,getChainInfo:sn,getBlockletChainInfo:vn,isExternalBlocklet:$n,isPreferenceKey:ht,getRolesFromAuthConfig:cn,getBlockletServices:Fn,isInProgress:_n,isBeforeInstalled:In,isRunning:lr,isAccessible:xn,isGatewayBlocklet:ft.isGatewayBlocklet,isPackBlocklet:ft.isPackBlocklet,hasStartEngine:ft.hasStartEngine,hasResourceType:Sn}})(util);const getServerUrl=(a,j=!1)=>{const _e=a.routing.adminPath;return j?encodeURIComponent(joinURL(window.location.origin,_e)):joinURL(window.location.origin,_e)},getLaunchAgreementUrl=(a,j,_e)=>{const et=getServerUrl(j),nt=joinURL(_e,`/api/blocklets/${a.did}/blocklet.json`),tt=new URL(joinURL(et,"/launch-blocklet/agreement"));return tt.searchParams.set("blocklet_meta_url",nt),tt.searchParams.set("from",window.location.href),tt.href},ensureDomainAliases=async(a,{getIP:j}={})=>{if(!a||!a.length)return[];if(!j||!a.some(et=>et.value.includes(constant$3.SLOT_FOR_IP_DNS_SITE)))return a;const _e=await j();return _e?a.map(et=>{try{return et.value=util.replaceSlotToIp(et.value,_e),et}catch{return et}}).filter(Boolean):a},getAppCapabilities=a=>{const j={didSpace:null};return util.forEachBlockletSync(a,_e=>{var et,nt;j.didSpace===constant.BLOCKLET_APP_SPACE_REQUIREMENT.REQUIRED||j.didSpace===constant.BLOCKLET_APP_SPACE_REQUIREMENT.REQUIRED_ON_SETUP||(nt=(et=_e==null?void 0:_e.meta)==null?void 0:et.capabilities)!=null&&nt.didSpace&&(j.didSpace=_e.meta.capabilities.didSpace)}),j},fixBlocklet=async(a,{fixRuntime:j=!0,oldBlocklet:_e,getIP:et}={})=>{if(a.site||(a.site={domainAliases:[],rules:[]}),a.site.rules.forEach(nt=>{nt.from.pathPrefix=normalizePathPrefix$1(nt.from.pathPrefix||"/")}),a.site.rules=sortBy$1(a.site.rules,nt=>nt.from.pathPrefix),j===!0)a.site.domainAliases=await ensureDomainAliases(a.site.domainAliases,{getIP:et}),a.appRuntimeInfo&&(a.appRuntimeInfo.startAt=new Date-a.appRuntimeInfo.uptime),util.forEachBlockletSync(a,nt=>{nt.runtimeInfo&&(nt.runtimeInfo.startAt=new Date-nt.runtimeInfo.uptime)});else if(j==="merge-old"&&_e){a.site.domainAliases=_e.site.domainAliases,a.appRuntimeInfo=_e.appRuntimeInfo;const nt={};util.forEachBlockletSync(_e,(tt,{id:it})=>{nt[it]=tt}),util.forEachBlockletSync(a,(tt,{id:it})=>{const ut=nt[it];ut&&(tt.runtimeInfo=ut.runtimeInfo,tt.diskInfo=ut.diskInfo,tt.engine=ut.engine)})}else a.site.domainAliases=[];a.capabilities=getAppCapabilities(a)},DEFAULT_WALLET_TYPE="arcblock",getWalletType=(a,j=!1)=>{let _e;return j?(_e=(a.configs||[]).find(et=>et.key==="BLOCKLET_APP_CHAIN_TYPE"),_e&&_e.value||(_e=(a.environments||[]).find(et=>["CHAIN_TYPE","BLOCKLET_APP_CHAIN_TYPE"].includes(et.key)),_e&&_e.value)?_e.value:DEFAULT_WALLET_TYPE):(_e=(a.environments||[]).find(et=>["CHAIN_TYPE","BLOCKLET_APP_CHAIN_TYPE"].includes(et.name)),_e&&_e.default?_e.default:DEFAULT_WALLET_TYPE)},isServerless=a=>!isEmpty$2(a==null?void 0:a.controller);let cache=null;const fetch$1=async()=>{const a=window.env.apiPrefix||"/",j=joinURL(a,"/api/dns-resolve?accessible=1");try{return(await axios$4.get(j)).data.address}catch{return null}},getIp=()=>(cache||(cache=fetch$1()),cache),BlockletsContext=reactExports.createContext({}),{Provider:Provider$2,Consumer:Consumer$2}=BlockletsContext,mergeBlocklets=(a,j,_e)=>_e?a.map(et=>{const nt={...et},tt=j.find(it=>it.meta.did===et.meta.did);return tt&&_e.forEach(it=>{nt[it]=tt[it]}),nt}):j;function BlockletsProvider({children:a}){const j=useNodeContext(),_e=createClient(),[et,nt]=reactExports.useState(null),[tt,it]=reactExports.useState(!1),[ut,ft]=reactExports.useState([]),[pt,dt]=reactExports.useState([]),[mt,Et]=reactExports.useState(!1),wt=(Lt,zt)=>{util.isExternalBlocklet(Lt)?dt(zt):ft(zt)},St=4,Ct=async({silent:Lt=!0,retries:zt=St,updates:Ft,useCache:Ht=!0}={})=>{Lt||it(!0);try{nt(null);const{blocklets:Qt}=await _e.getBlocklets({input:{useCache:Ht}});for(const $t of Qt)await fixBlocklet($t,{getIP:getIp});const tn=Qt.filter($t=>!util.isExternalBlocklet($t)),mn=Qt.filter(util.isExternalBlocklet);ft($t=>mergeBlocklets($t,tn,Ft)),dt($t=>mergeBlocklets($t,mn,Ft)),it(!1),Et(!0)}catch(Qt){zt>0?setTimeout(()=>Ct({silent:Lt,retries:zt-1,useCache:Ht}),1e3):(it(!1),nt(Qt))}},Dt=async Lt=>{try{const{blocklet:zt}=await j.api.getBlocklet({input:{did:Lt.meta.did,attachRuntimeInfo:!0}});await fixBlocklet(zt,{getIP:getIp}),wt(zt,Ft=>Ft.some(Ht=>Ht.meta.did===zt.meta.did)?Ft.map(Ht=>Ht.meta.did===zt.meta.did?zt:Ht):[...Ft,zt])}catch(zt){nt(zt)}},At=Lt=>{j.refresh(),Dt(Lt)};reactExports.useEffect(()=>{Ct({silent:!1})},[]);const Pt=Lt=>{const zt={};util.forEachBlockletSync(Lt,(Ft,{id:Ht})=>{zt[Ht]=constant.fromBlockletStatus(Ft.status)}),wt(Lt,Ft=>Ft.map(Ht=>(Ht.meta.did===Lt.meta.did&&util.forEachBlockletSync(Ht,(Qt,{id:tn})=>{zt[tn]&&(Qt.status=zt[tn])}),Ht)))};useSubscription(constant.BlockletEvents.added,Lt=>{Lt.status=constant.fromBlockletStatus(Lt.status),wt(Lt,zt=>[...zt,Lt])}),useSubscription(constant.BlockletEvents.removed,Lt=>{j.refresh(),wt(Lt,zt=>zt.filter(Ft=>Ft.meta.did!==Lt.meta.did))}),useSubscription(constant.BlockletEvents.statusChange,Pt),useSubscription(constant.BlockletEvents.installed,At),useSubscription(constant.BlockletEvents.upgraded,At),useSubscription(constant.BlockletEvents.updated,Dt),useSubscription(constant.BlockletEvents.startFailed,Dt);const It={loading:tt,error:et,data:ut,externalData:pt,refresh:Ct,initialized:mt,api:_e};return jsxRuntimeExports.jsx(Provider$2,{value:{blocklets:It},children:a})}function useBlockletsContext(){const{blocklets:a}=reactExports.useContext(BlockletsContext);return a}const authorize=({user:a,launchType:j,nftId:_e})=>{var et;if(!a)return!1;if(j==="serverless"){if(!_e)throw new Error("nftId is required");return((et=a==null?void 0:a.controller)==null?void 0:et.nftId)===_e}return(a.permissions||[]).includes("mutate_blocklets")},isServerlessBlockletInstalled=a=>{var j,_e;return a.isGetBlocklet&&((_e=(j=a.runtimeBlocklet)==null?void 0:j.controller)==null?void 0:_e.consumedAt)},getRestoredAccessUrl=async a=>{const j=getBlockletUrls({blocklet:a});let _e="";return _e=j.find(et=>{try{const{hostname:nt}=new URL(et);return urlEvaluation.isSlpDomain(nt)}catch(nt){return console.error(nt),!1}}),_e||(_e=await getAccessibleUrl(j)),_e},LaunchBlockletContext=reactExports.createContext({}),{Provider:Provider$1,Consumer:Consumer$1}=LaunchBlockletContext;function LaunchBlockletProvider({children:a}){const{session:j}=useSessionContext$1(),{t:_e}=useLocaleContext(),{api:et,info:nt}=useNodeContext(),[tt]=useSearchParams(),it=createClient(),ut=tt.get("launchType"),ft=tt.get("fromLauncher"),pt=tt.get("blocklet_meta_url")||"",dt=tt.get("nftId")||"",mt=tt.get("launcherSessionId")||"",Et=tt.get("launcherUrl")||"",wt=new URL(pt).origin,[St,Ct]=reactExports.useState({meta:null,appDid:tt.get("appDid")||null,sessionId:tt.get("sessionId")||null,isFree:!0,isExternal:!1,isInstalling:!1,isInstalled:!1,isRunning:!1,launcherSession:null,registryUrl:""}),Dt=(mn,$t)=>Ct(rt=>({...rt,appDid:mn,sessionId:$t})),At=authorize({user:j.user,launchType:ut,nftId:dt}),[Pt,It]=reactExports.useState(null),[Lt,zt]=reactExports.useState(!0),Ft=reactExports.useMemo(()=>nt?getServerUrl(nt):"",[nt]),Ht=async mn=>{if(!mn)throw new Error("appDid should not be empty");const{blocklet:$t}=await et.getBlocklet({input:{did:mn,attachConfig:!1}});if(!$t)return null;const rt=constant.BlockletStatus[$t.status],st=!!dt,ct=rt<constant.BlockletStatus.installed,ht=rt===constant.BlockletStatus.installed,vt=rt===constant.BlockletStatus.running;return Ct(xt=>({...xt,isInstalled:ht,isRunning:vt,isExternal:st,isInstalling:ct})),{isInstalled:ht,isRunning:vt,isExternal:st,isInstalling:ct}},Qt=async()=>{zt(!0);try{if(!pt)throw new Error(_e("common.invalidParam"));const[{meta:mn,isFree:$t,registryUrl:rt},{launcherSession:st,error:ct}]=await Promise.all([et.getBlockletMetaFromUrl({input:{url:pt,checkPrice:!0}}),mt?et.getLauncherSession({input:{launcherSessionId:mt,launcherUrl:Et}}):Promise.resolve({})]);if(mt&&!st)throw new Error(`Launch session invalid: ${ct}`);if(!mn)throw new Error(_e("LaunchBlockletBlocklet.error.loadMetaFailed"));let ht={};At&&St.appDid&&(ht=await Ht(St.appDid)),Ct(vt=>({...vt,...ht,meta:mn,isFree:$t,registryUrl:rt,launcherSession:st}))}catch(mn){console.error(mn),It(mn.message)}finally{zt(!1)}};reactExports.useEffect(()=>{var mn,$t,rt;((mn=j==null?void 0:j.user)==null?void 0:mn.role)===constant$3.SERVER_ROLES.EXTERNAL_BLOCKLET_CONTROLLER&&((rt=($t=j==null?void 0:j.user)==null?void 0:$t.controller)==null?void 0:rt.nftId)!==dt&&j.logout(),Qt()},[]),reactExports.useEffect(()=>{Lt||!St.meta||(At?St.appDid&&Ht(St.appDid).catch(mn=>{toast.error(mn.message)}):(Ct(mn=>({...mn,isInstalled:!1,isRunning:!1,isExternal:!1})),It(null)))},[At]);const tn={meta:St.meta,isFree:St.isFree,appDid:St.appDid,sessionId:St.sessionId,isInstalling:St.isInstalling,isInstalled:St.isInstalled,isExternal:St.isExternal,isRunning:St.isRunning,serverUrl:Ft,storeUrl:St.registryUrl||wt,blockletMetaUrl:pt,fromLauncher:ft,loading:Lt,error:Pt,api:it,getBlocklet:Ht,setAppDid:Dt,launcherUrl:Et,launcherSession:St.launcherSession,launcherSessionId:mt};return jsxRuntimeExports.jsx(Provider$1,{value:tn,children:a})}function useLaunchBlockletContext(){return reactExports.useContext(LaunchBlockletContext)}function useQuery(){return new URLSearchParams(useLocation().search)}const BlockletAppContext=reactExports.createContext(),{Provider,Consumer}=BlockletAppContext;function BlockletAppProvider({children:a}){const _e=useQuery().get("blocklet_meta_url"),et=_default$2(async()=>{const{data:tt}=await axios$1.get(_e);return tt});if(et.loading)return jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(CircularProgress,{})});const nt={meta:et.value,error:et.error};return jsxRuntimeExports.jsx(Provider,{value:nt,children:a})}BlockletAppProvider.propTypes={children:PropTypes.any.isRequired};function useBlockletAppContext(){return reactExports.useContext(BlockletAppContext)}const Dashboard=reactExports.lazy(()=>__vitePreload(()=>import("./index-CDOPpBF8.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)),BlockletList=reactExports.lazy(()=>__vitePreload(()=>import("./index-CIrcsI7B.js"),__vite__mapDeps([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,2,30,31,32,33,34]),import.meta.url)),BlockletRestore=reactExports.lazy(()=>__vitePreload(()=>import("./index-CXjif8dM.js"),__vite__mapDeps([35,36,37,38,39,40,41,6,42,43,44,45,46,13,10,12,26,19,18]),import.meta.url)),BlockletStore=reactExports.lazy(()=>__vitePreload(()=>import("./index-BQelzM1K.js"),__vite__mapDeps([47,6,48,49,50,18,17,51,10,52,53,32,13,12,42,54,43,44,55,3,56,57,19,23,24,58,59,60]),import.meta.url)),Settings=reactExports.lazy(()=>__vitePreload(()=>import("./index-CALkY1DF.js"),__vite__mapDeps([61,62,11,59,63,64,51,65,13,10,12,7,8,9,14,15,16,17,18,19,66,55,3,56,2,67,6,68,69,32,21,20,70,34,71,72,73,4,74]),import.meta.url)),LogPage=reactExports.lazy(()=>__vitePreload(()=>import("./index-BGE0jyVo.js"),__vite__mapDeps([75,76,23,24,10,77]),import.meta.url)),TeamPage=reactExports.lazy(()=>__vitePreload(()=>import("./index-IQotLDn2.js"),__vite__mapDeps([78,62,11,79,80,81,18,6,10,12,82,14,83,84,32,85,86,87,17,13,7,8,9,15,16,19,88,34,89,90,51,25,26,50,21,91,57,3,2,92,93,94,56,95,33,23,24,96,97,98,49,52,99,1,55,72]),import.meta.url)),BlockletDetail=reactExports.lazy(()=>__vitePreload(()=>import("./detail-Bhy-IRuk.js"),__vite__mapDeps([100,62,11,20,21,22,6,19,23,24,31,57,91,60]),import.meta.url)),EULAPage=reactExports.lazy(()=>__vitePreload(()=>import("./index-DWpyvk3k.js"),[],import.meta.url)),Notifications=reactExports.lazy(()=>__vitePreload(()=>import("./index-CBzqRiyi.js"),__vite__mapDeps([101,1,82,14]),import.meta.url)),IssuePassport=reactExports.lazy(()=>__vitePreload(()=>import("./index-C-Ia-HAG.js"),__vite__mapDeps([102,103,90,104,92,70,105]),import.meta.url)),LostPassport=reactExports.lazy(()=>__vitePreload(()=>import("./index-RrJkcdxY.js"),__vite__mapDeps([106,70,86,54,105,30]),import.meta.url)),ExchangePassport=reactExports.lazy(()=>__vitePreload(()=>import("./index-N_ezqcL0.js"),__vite__mapDeps([107,105]),import.meta.url)),BlockletLauncher=reactExports.lazy(()=>__vitePreload(()=>import("./index-B5uOXUkd.js"),__vite__mapDeps([108,36,37,38,39,40,41,109,80,81,46,26,6,28,25,29,67]),import.meta.url)),NotFoundPage=reactExports.lazy(()=>__vitePreload(()=>import("./index-BlPCM5LR.js"),__vite__mapDeps([110,90]),import.meta.url)),Invite=reactExports.lazy(()=>__vitePreload(()=>import("./index-oTFnJoAS.js"),__vite__mapDeps([111,103,90,104,92,70,105]),import.meta.url)),Console=reactExports.lazy(()=>__vitePreload(()=>import("./index-B7E0Awcq.js").then(a=>a.a2),__vite__mapDeps([112,113]),import.meta.url)),AnalyticsPage=reactExports.lazy(()=>__vitePreload(()=>import("./index-_Ee7BreY.js"),__vite__mapDeps([114,62,11,115,116,117,71,10,118,9,13,12,52,7,8,14,15,16,17,18,19,31,119,120,4,6,99,24]),import.meta.url));function useSharedContext(){const a=useNodeContext(),{session:j}=useSessionContext$1(),{wallet:_e}=useBrowser(),et=j.user&&j.user.did;return reactExports.useEffect(()=>{const nt=getWsClient();return et?nt.connect():nt.isConnected()&&nt.disconnect(),()=>{nt.isConnected()&&nt.disconnect()}},[et]),reactExports.useEffect(()=>{if(_e)return()=>{};const nt=()=>{document.visibilityState==="visible"&&j.refresh()};return document.addEventListener("visibilitychange",nt),()=>{document.removeEventListener("visibilitychange",nt)}},[]),{node:a,session:j}}function ProtectedApp(){var it;const{t:a}=useLocaleContext(),{node:j,session:_e}=useSharedContext(),et=useLocation();reactExports.useEffect(()=>{window.tracker&&typeof window.tracker.pageView=="function"&&window.tracker.pageView(`${et.pathname}${et.search}`)},[et]),reactExports.useEffect(()=>{var ut;((ut=_e==null?void 0:_e.user)==null?void 0:ut.role)===constant$3.SERVER_ROLES.EXTERNAL_BLOCKLET_CONTROLLER&&_e.logout()},[(it=_e==null?void 0:_e.user)==null?void 0:it.role]);const nt=jsxRuntimeExports.jsx(CircularProgress,{});if(j.loading||_e.loading)return jsxRuntimeExports.jsx(Center,{children:nt});if(!j.info.initialized)return getAuthMethod.getServerAuthMethod(j.info)==="nft"?jsxRuntimeExports.jsx(NodeVerifyOwner,{action:"verify-owner"}):jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(NodeConnectOwner,{})});if(j.info.upgradeSessionId)return jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(MaintainProgress,{})});if(!_e.user)return jsxRuntimeExports.jsx(NodeLogin,{loadingEle:nt});const tt=jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(CircularProgress,{})});return jsxRuntimeExports.jsx(NotificationProvider,{children:jsxRuntimeExports.jsxs(BlockletsProvider,{children:[jsxRuntimeExports.jsx(Health,{}),jsxRuntimeExports.jsx(CheckNodeStatus,{}),jsxRuntimeExports.jsx(GlobalSubscriber,{}),jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:tt,children:jsxRuntimeExports.jsxs(Routes,{children:[jsxRuntimeExports.jsx(Route,{path:"/dashboard",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:"Dashboard",children:jsxRuntimeExports.jsx(Dashboard,{})})}),jsxRuntimeExports.jsx(Route,{path:"/blocklets",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("common.blocklets"),children:jsxRuntimeExports.jsx(BlockletList,{})})}),jsxRuntimeExports.jsx(Route,{path:"/blocklets/:did/:tab",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:"Blocklets",children:jsxRuntimeExports.jsx(BlockletDetail,{})})}),jsxRuntimeExports.jsx(Route,{path:"/settings/:tab",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("common.setting"),children:jsxRuntimeExports.jsx(Settings,{})})}),jsxRuntimeExports.jsx(Route,{path:"/eula",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("setup.steps.eula"),children:jsxRuntimeExports.jsx(EULAPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/store",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("common.store"),children:jsxRuntimeExports.jsx(BlockletStore,{})})}),jsxRuntimeExports.jsx(Route,{path:"/console",element:jsxRuntimeExports.jsx(DashboardRoute,{title:`GraphQL ${a("common.console")}`,scrollable:!1,fullWidth:!0,children:jsxRuntimeExports.jsx(Console,{})})}),jsxRuntimeExports.jsx(Route,{path:"/notifications",element:jsxRuntimeExports.jsx(DashboardRoute,{children:jsxRuntimeExports.jsx(Notifications,{})})}),jsxRuntimeExports.jsx(Route,{path:"/team/:tab",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("common.team"),children:jsxRuntimeExports.jsx(TeamPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/logs/:name",element:jsxRuntimeExports.jsx(DashboardRoute,{scrollable:!1,fullWidth:!0,title:a("common.logs"),children:jsxRuntimeExports.jsx(LogPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/analytics/:tab",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("common.analytics"),children:jsxRuntimeExports.jsx(AnalyticsPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/",element:jsxRuntimeExports.jsx(Navigate,{to:"/dashboard",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/team",element:jsxRuntimeExports.jsx(Navigate,{to:"/team/members",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/analytics",element:jsxRuntimeExports.jsx(Navigate,{to:"/analytics/traffic",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/logs",element:jsxRuntimeExports.jsx(Navigate,{to:"/logs/abtnode",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/router",element:jsxRuntimeExports.jsx(Navigate,{to:"/router/rules",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/settings",element:jsxRuntimeExports.jsx(Navigate,{to:"/settings/basic",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/marketplace",element:jsxRuntimeExports.jsx(Navigate,{to:"/store",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/marketplace/:did",element:jsxRuntimeExports.jsx(Navigate,{to:"/store/:did",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"*",element:jsxRuntimeExports.jsx(NotFoundPage,{})})]})})]})})}function UnprotectedWrapper({children:a}){const{node:j,session:_e}=useSharedContext();return j.loading||!_e.initialized&&_e.loading?jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(CircularProgress,{})}):j.info.upgradeSessionId?jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(MaintainProgress,{})}):a}function App(){const{changeLocale:a}=useLocaleContext(),j=useQuery();reactExports.useEffect(()=>{const et=j.get("locale");et&&["zh","en"].includes(et)&&a(et)},[]);const _e=jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(CircularProgress,{})});return jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:_e,children:jsxRuntimeExports.jsxs(Routes,{children:[jsxRuntimeExports.jsx(Route,{path:`${constant$3.WELLKNOWN_SERVICE_PATH_PREFIX}/issue-passport`,element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(IssuePassport,{})})}),jsxRuntimeExports.jsx(Route,{path:`${constant$3.WELLKNOWN_SERVICE_PATH_PREFIX}/lost-passport`,element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(LostPassport,{})})}),jsxRuntimeExports.jsx(Route,{path:`${constant$3.WELLKNOWN_SERVICE_PATH_PREFIX}/exchange-passport`,element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(ExchangePassport,{})})}),jsxRuntimeExports.jsx(Route,{path:"/accept-server",element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(NodeVerifyOwner,{action:"accept-server"})})}),jsxRuntimeExports.jsx(Route,{path:"/launch-blocklet/*",element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(LaunchBlockletProvider,{children:jsxRuntimeExports.jsx(BlockletLauncher,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/blocklets/restore/*",element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(BlockletAppProvider,{children:jsxRuntimeExports.jsx(BlockletRestore,{})})})}),jsxRuntimeExports.jsx(Route,{path:`${constant$3.WELLKNOWN_SERVICE_PATH_PREFIX}/invite`,element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(Invite,{})})}),jsxRuntimeExports.jsx(Route,{path:"/*",element:jsxRuntimeExports.jsx(ProtectedApp,{})})]})})}function AppWrapper(){const a=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(CssBaseline,{}),jsxRuntimeExports.jsx(BrowserRouter,{history,basename:a,children:jsxRuntimeExports.jsx(Root$5,{children:jsxRuntimeExports.jsx(App,{})})})]})}const root=createRoot(document.getElementById("root"));root.render(jsxRuntimeExports.jsx(AppWrapper,{}));const prefix=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";register(`${prefix}/service-worker.js`.replace(/\/+/g,"/"),{registrationOptions:{scope:prefix},registered(){console.info("Service worker has been registered.")},ready(){console.info("Service worker is active.")},cached(){console.info("Content has been cached for offline use.")},updatefound(){console.info("New content is downloading.")},updated(){console.info("New content is available; please refresh.")},offline(){console.info("No internet connection found. App is running in offline mode.")},error(a){console.error("Error during service worker registration:",a)}});export{default_1$n as $,useNavigate as A,ButtonComponent as B,CircularProgress as C,Dialog as D,toast as E,useSearchParams as F,Grid as G,constant$3 as H,ImageIcon as I,useMediaQuery as J,Alert as K,LinearProgress as L,formatError$1 as M,util as N,Link$2 as O,PropTypes as P,Box as Q,isEmpty$2 as R,RelativeTime$1 as S,TagComponent as T,MenuItem$1 as U,Permission as V,WrappedDidAddress as W,Center as X,toString_1 as Y,propTypesExports as Z,_createCompounder as _,useSubscription as a,Menu$1 as a$,lodashExports as a0,api$1 as a1,IconButton as a2,Confirm as a3,makeStyles as a4,ListItemSecondaryAction as a5,List as a6,ListItem as a7,ListItemText as a8,getServerUrl as a9,ErrorFallback as aA,formatRegistryLogoPath as aB,engine as aC,ListItemIcon as aD,ensureDomainAliases as aE,normalizePathPrefix$1 as aF,sortBy$1 as aG,getIp as aH,stringSortHandlerAsc as aI,getAccessUrl as aJ,requireCreateSvgIcon as aK,interopRequireDefaultExports as aL,history as aM,semver$1 as aN,useReactive as aO,useAsyncEffect as aP,sleep as aQ,checkInputByType as aR,Stack$5 as aS,isChrome as aT,_default$2 as aU,axios$1 as aV,shouldCheckDomainStatus as aW,formatMountPoint as aX,_default$5 as aY,FormControlLabel as aZ,Checkbox as a_,useBlockletAppContext as aa,getAuthMethod as ab,ConfirmDialog as ac,setSessionToken as ad,getRestoredAccessUrl as ae,Debug as af,isServerlessBlockletInstalled as ag,getWsClient as ah,useTheme$2 as ai,useQuery as aj,getPathPrefix as ak,HeaderAddon as al,SessionContext as am,Global as an,Routes as ao,Route as ap,Navigate as aq,css$1 as ar,AvatarWithErrorBoundary as as,formatToDatetime as at,getLaunchAgreementUrl as au,axios$4 as av,useSessionContext$1 as aw,Tooltip as ax,getBlockletMetaUrl as ay,ErrorBoundary as az,constant as b,useForkRef as b$,checkIsWildcardDomain as b0,Popover as b1,Card as b2,CardContent as b3,formatToDate as b4,sortDomains as b5,Collapse as b6,isUrl$1 as b7,__awaiter as b8,__generator as b9,_baseRest as bA,_arrayFilter as bB,last_1 as bC,isArrayLikeObject_1 as bD,default_1$c as bE,isDownloading as bF,withPermission as bG,getBlockletUrl as bH,getBlockletUrlParams as bI,createSvgIcon$1 as bJ,styled$1 as bK,ButtonBase as bL,_extends$2 as bM,emphasize_1 as bN,_objectWithoutPropertiesLoose$1 as bO,generateUtilityClasses as bP,generateUtilityClass as bQ,useDefaultProps as bR,useSlotProps as bS,clsx$1 as bT,composeClasses as bU,rootShouldForwardProp as bV,SwitchBase as bW,capitalize$3 as bX,alpha_1 as bY,createChainedFunction$1 as bZ,useControlled as b_,__spread as ba,React$2 as bb,dayjs$1 as bc,Divider as bd,isCertificateMatch as be,NodeContext as bf,useParams as bg,__assign as bh,__spreadArrays as bi,DidAddressWrapper as bj,createPassportSvg as bk,useNodeContext$1 as bl,getWalletType as bm,__vitePreload as bn,isInstalling as bo,Badge as bp,NavLink$1 as bq,createAppPassportSvg as br,_SetCache as bs,_arrayMap as bt,_baseUnary as bu,_arrayIncludes as bv,_arrayIncludesWith as bw,_cacheHas as bx,_baseFlatten as by,_baseUniq as bz,createClient as c,ownerDocument as c$,useId as c0,merge$1 as c1,toSlotDomain as c2,omit$1 as c3,fixBlocklet as c4,memoize$5 as c5,defaultCheckAccessible as c6,getBlockletUrls as c7,urlEvaluation as c8,ButtonGroupContext as c9,API_DID_PREFIX as cA,AUTH_SERVICE_PREFIX as cB,formatDateTime as cC,getExplorerLink as cD,patchJsxToLocale as cE,flat$1 as cF,en$2 as cG,LocaleProvider as cH,getAugmentedNamespace as cI,Theme as cJ,ReactDOM as cK,global$2 as cL,punycodeExports as cM,commonjsGlobal as cN,copy$1 as cO,dist$4 as cP,Util as cQ,require$$3 as cR,getSessionToken as cS,SvgLogo as cT,hoistStatics as cU,getLogoHash as cV,useEnhancedEffect$1 as cW,debounce$5 as cX,ownerWindow as cY,useRtl as cZ,useEventCallback$1 as c_,ButtonGroupButtonContext as ca,BlockletAdminRoles as cb,ListItemAvatar as cc,Avatar$1 as cd,NotificationTag as ce,useNotificationContext as cf,useRequest as cg,useMemoizedFn as ch,isNumber$2 as ci,__read as cj,useLatest as ck,defaultDayjs as cl,useBrowser as cm,Container$3 as cn,isFunction$8 as co,usePassportId as cp,FullPage as cq,useLaunchBlockletContext as cr,useSecurity as cs,authorize as ct,isNewStoreUrl as cu,getAccessibleUrl as cv,getBlockletLogoUrl as cw,Img as cx,useLocation as cy,useMount as cz,useBlockletsContext as d,private_safeAlpha_1 as d$,colors$1 as d0,useFormControl as d1,formControlState as d2,util$6 as d3,upperFirst$2 as d4,camelCase$2 as d5,ClickToCopy as d6,getGridUtilityClass as d7,gridClasses as d8,Grow as d9,lib$1 as dA,urlExports as dB,cloneDeep_1 as dC,get_1 as dD,DID as dE,isHostComponent as dF,FormControlContext as dG,GlobalStyles as dH,formatMuiErrorMessage$1 as dI,deepmerge$1 as dJ,isMuiElement as dK,slotShouldForwardProp as dL,Button$1 as dM,Paper as dN,ClickAwayListener as dO,MenuList as dP,Popper as dQ,useTheme$3 as dR,GlobalStyles$2 as dS,ThemeProvider$2 as dT,toPropertyKey$3 as dU,createSpacing as dV,createBreakpoints as dW,createTheme$1 as dX,private_safeDarken_1 as dY,private_safeLighten_1 as dZ,private_safeEmphasize_1 as d_,PopoverPaper as da,PopoverRoot as db,getOffsetLeft as dc,getOffsetTop as dd,getPopoverUtilityClass as de,popoverClasses as df,emotionSerialize_esm as dg,emotionUtils_browser_esm as dh,emotionCache_browser_esm as di,emotionReact_browser_esm as dj,reactDomExports as dk,Close as dl,_baseIteratee as dm,isArrayLike_1 as dn,keys_1 as dp,_baseFindIndex as dq,toInteger_1 as dr,noop$7 as ds,isObject$p as dt,cloneDeep$1 as du,padStart_1 as dv,Buffer$3 as dw,lib$2 as dx,upperFirst_1 as dy,pick_1 as dz,_default$1 as e,Hidden as e$,private_safeColorChannel_1 as e0,defaultSxConfig as e1,styleFunctionSx$1 as e2,getOverlayAlpha as e3,hslToRgb_1 as e4,THEME_ID as e5,createTypography as e6,StyledEngineProvider as e7,ThemeProvider$1 as e8,alpha$1 as e9,getChipUtilityClass as eA,buttonClasses as eB,getButtonUtilityClass as eC,checkboxClasses as eD,getCheckboxUtilityClass as eE,formControlLabelClasses as eF,getFormControlLabelUtilityClasses as eG,getListItemTextUtilityClass as eH,listItemTextClasses as eI,getMenuItemUtilityClass as eJ,menuItemClasses as eK,getTooltipUtilityClass as eL,tooltipClasses as eM,lighten_1 as eN,darken_1 as eO,Toolbar as eP,getToolbarUtilityClass as eQ,toolbarClasses$1 as eR,_baseIsEqual as eS,SvgIcon as eT,process$1$1 as eU,urlPathFriendly$1 as eV,useThemeProps as eW,defaultTheme$2 as eX,commonjsRequire as eY,create$4 as eZ,ThemeProvider$4 as e_,createMuiTheme as ea,darken$1 as eb,decomposeColor$1 as ec,duration as ed,easing as ee,emphasize$1 as ef,getContrastRatio$1 as eg,getLuminance$1 as eh,hexToRgb$1 as ei,hslToRgb$1 as ej,keyframes as ek,lighten$1 as el,createMixins as em,recomposeColor$1 as en,responsiveFontSizes as eo,rgbToHex$1 as ep,getUnit as eq,toUnitless as er,getPaperUtilityClass as es,paperClasses$1 as et,getIconButtonUtilityClass as eu,iconButtonClasses as ev,getTypographyUtilityClass as ew,typographyClasses$1 as ex,chipClasses as ey,Chip as ez,LocaleContext as f,Fade as f$,Check$1 as f0,withQuery as f1,createTheme$3 as f2,styled$2 as f3,useTheme$4 as f4,extendSxProp as f5,getTargetElement as f6,useEventListener as f7,useUpdateEffect as f8,__spreadArray as f9,util$5 as fA,shams$1 as fB,hasPropertyDescriptors_1 as fC,defineDataProperty as fD,safeBufferExports as fE,requireBrowser$9 as fF,requireElliptic as fG,requireCryptoBrowserify as fH,ripemd160 as fI,getInviteLink$1 as fJ,SessionContext$1 as fK,getIssuePassportLink as fL,Icon as fM,getTextColor_1 as fN,isProtectedRole as fO,lib$3 as fP,createPassportSvg$2 as fQ,semver as fR,browserExports as fS,require$$0$1 as fT,isAbsoluteUrl as fU,dist$1 as fV,browser$4 as fW,requireObjectWithoutPropertiesLoose as fX,loadIcon as fY,createTheme as fZ,ThemeProvider as f_,_baseOrderBy as fa,isArray_1 as fb,default_1$p as fc,useCreation as fd,parseQuery as fe,useDebounceFn as ff,createRoot as fg,useSize as fh,colors$2 as fi,callBound$2 as fj,callBindExports as fk,normalizePathPrefix_1 as fl,clamp$1 as fm,useIsFocusVisible as fn,extractEventHandlers as fo,resolveProps as fp,debounce_1 as fq,noop_1 as fr,_default$3 as fs,formatTime as ft,RelativeTime as fu,useUpdate as fv,tmp as fw,getVisitorId$2 as fx,useConfirm as fy,translate as fz,getDefaultExportFromCjs$1 as g,jssGlobal as g$,ListItemButton as g0,AUTH_SERVICE_PREFIX$1 as g1,getTranslation as g2,SessionPermission as g3,NAVIGATION_URL as g4,LocaleSelector as g5,SessionUser as g6,default_1$l as g7,ResponsiveHeader as g8,withErrorBoundary as g9,_inheritsLoose$3 as gA,forceReflow as gB,Transition$1 as gC,_baseIndexOf as gD,_baseToString as gE,_baseTrim as gF,_castSlice as gG,_charsEndIndex as gH,_stringToArray as gI,validateDomain as gJ,axios_1 as gK,CopyButton as gL,isServerless as gM,getSystemDomains as gN,data$m as gO,isRunning as gP,getTransferAppLink as gQ,pick$1 as gR,data$g as gS,data$f as gT,data$h as gU,_copyArray as gV,usePreviousProps as gW,setRef as gX,ClearIcon as gY,hoistNonReactStatics_cjs as gZ,functionPlugin as g_,NavMenu as ga,DashboardWrapper as gb,BlockletSDK as gc,useUnmount as gd,identity_1 as ge,_baseForOwn as gf,_baseMap as gg,isString_1 as gh,isPlainObject_1 as gi,default_1$h as gj,browser as gk,uniq_1 as gl,pLimit_1 as gm,require$$6 as gn,_isIndex as go,_typeof$2 as gp,Dialog$1 as gq,dialogClasses as gr,DialogContent as gs,FocusTrap as gt,DialogActions as gu,TransitionGroup as gv,localizedFormatPlugin as gw,isExtracting as gx,APP_PREFIX as gy,objectAssign$1 as gz,useTheme as h,jssNested as h0,camelCase as h1,defaultUnit as h2,jssVendorPrefixer as h3,jssPropsSort as h4,createJss as h5,getDynamicStyles as h6,isNil_1 as h7,omit_1 as h8,withoutTrailingSlash as h9,require$$1$4 as hA,Check as hB,reactIsExports as hC,isValidClusterSize as hD,extractStatusUrlFromNextWorkflow as hE,pWaitFor$1 as hF,hasRequiredSteps as hG,getStoreList as hH,flatten$4 as hI,trimEnd$1 as hJ,useCheckUpdateByUrl as hK,DialogTitle as hL,_baseEach as hM,_baseAssignValue as hN,throttle$4 as hO,pTimeout$2 as hP,TimeoutError_1 as hQ,debounce$3 as hR,uniq$1 as hS,Backdrop as hT,isString$2 as ha,isAbsoluteUrl$1 as hb,nanoid as hc,omitBy$1 as hd,isNil$1 as he,isEqual$1 as hf,useEffectWithTarget$1 as hg,__values as hh,isString$3 as hi,isFunction$5 as hj,circularProgressClasses$1 as hk,getCircularProgressUtilityClass as hl,collapseClasses$1 as hm,getCollapseUtilityClass as hn,boxClasses as ho,Icon$2 as hp,getIconUtilityClass as hq,iconClasses$1 as hr,getLinearProgressUtilityClass as hs,linearProgressClasses$1 as ht,getMenuUtilityClass as hu,menuClasses$1 as hv,_unsupportedIterableToArray as hw,_setPrototypeOf as hx,_assertThisInitialized$1 as hy,_createClass as hz,Link$1 as i,jsxRuntimeExports as j,get$6 as k,filesize as l,Typography as m,newStyled as n,formatLocale as o,prettyMs as p,joinURL as q,reactExports as r,styled as s,useLocaleContext as t,useNodeContext as u,useSessionContext as v,_default as w,DialogContentText as x,DidConnect as y,getWebWalletUrl as z};
|
|
2490
|
+
`;browser.homedir=function(){return"/"};(function(a){var j=commonjsGlobal&&commonjsGlobal.__importDefault||function(pt){return pt&&pt.__esModule?pt:{default:pt}};Object.defineProperty(a,"__esModule",{value:!0}),a.hasMountPoint=a.hasStartEngine=a.isPackBlocklet=a.isGatewayBlocklet=a.getBlockletEngine=void 0;const _e=j(browser),et=constant,nt=pt=>{if(pt===void 0)throw new Error("blocklet meta param is required");const{engine:dt}=pt;if(!dt)return{interpreter:"node",source:""};if(!Array.isArray(dt))return dt;const mt=_e.default.platform(),Et=dt.find(wt=>wt.platform===mt);if(!Et)throw new Error(`can not find a proper engine interpreter on ${mt}`);return Et};a.getBlockletEngine=nt;const tt=pt=>(pt==null?void 0:pt.group)===et.BlockletGroup.gateway;a.isGatewayBlocklet=tt;const it=pt=>(pt==null?void 0:pt.group)===et.BlockletGroup.pack;a.isPackBlocklet=it;const ut=pt=>!!(pt!=null&&pt.main)||(0,a.getBlockletEngine)(pt||{}).interpreter==="blocklet";a.hasStartEngine=ut;const ft=pt=>((0,a.hasStartEngine)(pt)||((pt==null?void 0:pt.interfaces)||[]).find(dt=>dt.type===et.BLOCKLET_INTERFACE_TYPE_WEB))&&(0,a.isGatewayBlocklet)(pt)===!1;a.hasMountPoint=ft})(engine);(function(a){var j=commonjsGlobal&&commonjsGlobal.__importDefault||function(pn){return pn&&pn.__esModule?pn:{default:pn}};Object.defineProperty(a,"__esModule",{value:!0}),a.hasStartEngine=a.isPackBlocklet=a.isGatewayBlocklet=a.isAccessible=a.isRunning=a.isBeforeInstalled=a.isInProgress=a.getBlockletServices=a.getBlockletAppIdList=a.getRolesFromAuthConfig=a.isPreferenceKey=a.isExternalBlocklet=a.getBlockletChainInfo=a.getChainInfo=a.getConnectAppUrl=a.getParentComponentName=a.filterComponentsV2=a.findComponentByIdV2=a.findComponentV2=a.findComponentById=a.findComponent=a.getComponentBundleId=a.getComponentName=a.getComponentId=a.replaceSlotToIp=a.getComponentWhoCanAccess=a.getWhoCanAccess=a.findServiceFromMeta=a.findWebInterfacePort=a.findWebInterface=a.fixBlockletStatus=a.getAppDescription=a.getDisplayName=a.getAppName=a.hasRunnableComponent=a.wipeSensitiveData=a.isEnvShareable=a.isEnvShareableToClient=a.getComponentMissingConfigs=a.getAppMissingConfigs=a.getSharedConfigObj=a.isDeletableBlocklet=a.forEachComponentV2Sync=a.forEachComponentV2=a.forEachChildSync=a.forEachChild=a.forEachBlockletSync=a.forEachBlocklet=a.isFreeComponent=a.isFreeBlocklet=void 0,a.hasResourceType=void 0,a.getAppUrl=Gt;const _e=j(get_1),et=j(uniq_1),nt=require$$6,tt=j(pLimit_1),it=j(constant$3),ut=constant,ft=engine;Object.defineProperty(a,"hasStartEngine",{enumerable:!0,get:function(){return ft.hasStartEngine}}),Object.defineProperty(a,"isGatewayBlocklet",{enumerable:!0,get:function(){return ft.isGatewayBlocklet}}),Object.defineProperty(a,"isPackBlocklet",{enumerable:!0,get:function(){return ft.isPackBlocklet}});const{NODE_SERVICES:pt,SLOT_FOR_IP_DNS_SITE:dt,WHO_CAN_ACCESS:mt,WHO_CAN_ACCESS_PREFIX_ROLES:Et}=it.default,wt=(pn,En=[])=>`${En.map(An=>An&&An.meta?An.meta.did:"").join("/")}${En.length?"/":""}${pn&&pn.meta?pn.meta.did:""}`;a.getComponentId=wt;const St=(pn,En=[])=>`${En.map(An=>An&&An.meta?An.meta.name:"").join("/")}${En.length?"/":""}${pn&&pn.meta?pn.meta.name:""}`;a.getComponentName=St;const Ct=pn=>`${pn.meta.bundleName}@${pn.meta.version}`;a.getComponentBundleId=Ct;const Dt=pn=>{if(!pn)return"";const En=pn.split("/");return En.pop(),!En.length||(En[En.length-1].startsWith("@")&&En.pop(),!En.length)?"":En.join("/")};a.getParentComponentName=Dt;const At=(pn,En,{parallel:An=!1,concurrencyLimit:zn=5,sync:rn,params:Ut,_parent:Zt,_root:hn,_level:wn=0,_tasks:qn,_ancestors:kn=[],_limit:Mn}={})=>{const Kn=hn||Zt||pn,On=wt(pn,kn),jn=kn.concat(pn);if(rn){const Gn=En(pn,{parent:Zt,root:Kn,level:wn,params:Ut,ancestors:kn,id:On});if(pn.children)for(const Ir of pn.children)At(Ir,En,{sync:rn,params:Gn,_parent:pn,_root:Kn,_level:wn+1,_ancestors:jn});return null}if(!An)return new Promise(async(Gn,Ir)=>{try{const Wn=await En(pn,{parent:Zt,root:Kn,level:wn,ancestors:kn,params:Ut,id:On});if(pn.children)for(const Qn of pn.children)await At(Qn,En,{params:Wn,_parent:pn,_root:Kn,_level:wn+1,_ancestors:jn});Gn(null)}catch(Wn){Ir(Wn)}});const cr=Mn||(0,tt.default)(zn),Un=qn||[];if(Un.push(cr(()=>En(pn,{parent:Zt,root:Kn,level:wn,ancestors:kn,id:On}))),pn.children)for(const Gn of pn.children)At(Gn,En,{parallel:An,_parent:pn,_root:Kn,_level:wn+1,_tasks:Un,_ancestors:jn,_limit:cr});return qn?null:Promise.all(Un)};a.forEachBlocklet=At;const Pt=(pn,En)=>At(pn,En,{sync:!0});a.forEachBlockletSync=Pt;const It=(pn,En,{parallel:An=!1,concurrencyLimit:zn=5,sync:rn}={})=>{if(rn){if(pn.children)for(const hn of pn.children)En(hn);return null}if(!An)return new Promise(async(hn,wn)=>{try{if(pn.children)for(const qn of pn.children)await En(qn);hn(null)}catch(qn){wn(qn)}});const Ut=(0,tt.default)(zn),Zt=[];if(pn.children)for(const hn of pn.children)Zt.push(Ut(()=>En(hn)));return Promise.all(Zt)};a.forEachComponentV2=It;const Lt=(pn,En)=>It(pn,En,{sync:!0});a.forEachComponentV2Sync=Lt;const zt=(pn,En,An)=>At(pn,(zn,rn)=>rn.level===0?{}:En(zn,rn),An);a.forEachChild=zt;const Ft=(pn,En)=>zt(pn,En,{sync:!0});a.forEachChildSync=Ft;const Ht=(pn,En,{_ancestors:An=[],returnAncestors:zn=!1}={})=>{if(!En)return null;if(En(pn,{ancestors:An}))return zn?{component:pn,ancestors:An}:pn;for(const rn of pn.children||[]){const Ut=An.concat(pn),Zt=Ht(rn,En,{_ancestors:Ut,returnAncestors:zn});if(Zt)return Zt}return null};a.findComponent=Ht;const Qt=(pn,En,{returnAncestors:An=!1}={})=>(Array.isArray(En)&&(En=En.join("/")),Ht(pn,(zn,{ancestors:rn})=>{const Ut=wt(zn,rn);return En===Ut},{returnAncestors:An}));a.findComponentById=Qt;const tn=(pn,En)=>{if(!En)return null;for(const An of pn.children||[])if(En(An,pn))return An;return null};a.findComponentV2=tn;const mn=(pn,En)=>En?(Array.isArray(En)&&(En=En.join("/")),tn(pn,(An,zn)=>{if(En.includes("/")){const rn=wt(An,[zn]);return En===rn}return En===An.meta.did})):null;a.findComponentByIdV2=mn;const $t=(pn,En)=>{if(!En)return[];const An=[];for(const zn of pn.children||[])En(zn,pn)&&An.push(zn);return An};a.filterComponentsV2=$t;const rt=pn=>!!pn&&!!(pn.key||pn.name)&&!pn.secure&&pn.shared!==!1&&!ut.BLOCKLET_CONFIGURABLE_KEY[pn.key||pn.name];a.isEnvShareableToClient=rt;const st=pn=>!!pn&&!!(pn.key||pn.name)&&!pn.secure&&!!pn.shared&&!ut.BLOCKLET_CONFIGURABLE_KEY[pn.key||pn.name];a.isEnvShareable=st;const ct=(pn,En)=>{const An={};return!pn||!En||(Array.isArray(pn.configs)&&pn.configs.forEach(({key:zn,value:rn,secure:Ut})=>{if(!st({key:zn,secure:Ut,shared:!0}))return;const Zt=(pn.configObj||{})[zn]||rn,hn=(En.configs||[]).find(wn=>wn.key===zn);(!hn||st(hn)||!hn.value&&!(En.configObj||{})[hn.key])&&(An[zn]=Zt)}),(pn.configs||[]).forEach(({key:zn,value:rn})=>{[ut.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_CHAIN_HOST,ut.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_CHAIN_ID,ut.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_CHAIN_TYPE].includes(zn)&&(An[ut.CHAIN_PROP_MAP[zn]]=rn)})),An};a.getSharedConfigObj=ct;const ht=pn=>pn.key.startsWith(ut.BLOCKLET_PREFERENCE_PREFIX)===!0;a.isPreferenceKey=ht;const vt=(pn,En)=>!!(pn.required&&(!pn.value&&!En[pn.key]||Object.values(ut.CHAIN_PROP_MAP).includes(pn.key)&&Object.keys(En).includes(pn.key)&&!En[pn.key])),xt=(pn={})=>{const En=[];return Lt(pn,An=>{var Ut;if(((Ut=An.meta)==null?void 0:Ut.group)===ut.BlockletGroup.gateway)return;const zn=An.configs||[],rn=ct(pn,An);zn.forEach(Zt=>{vt(Zt,rn)&&En.push({did:An.meta.did,key:Zt.key,description:Zt.description})})}),En.filter(An=>!ht(An))};a.getAppMissingConfigs=xt;const Tt=(pn={},En={})=>{const An=[],zn=pn.configs||[],rn=ct(En,pn);return zn.forEach(Ut=>{vt(Ut,rn)&&An.push({did:pn.meta.did,key:Ut.key,description:Ut.description})}),An};a.getComponentMissingConfigs=Tt;const yt=pn=>pn.payment?(pn.payment.price||[]).map(An=>An.value||0).every(An=>An===0):!0;a.isFreeBlocklet=yt;const ot=pn=>!pn.payment||!pn.payment.componentPrice?!0:!pn.payment.componentPrice.length;a.isFreeComponent=ot;const bt=pn=>pn&&(At(pn,En=>{En.configs&&(En.configs=En.configs.filter(An=>!ht(An)),En.configs.forEach(An=>{An.secure&&(An.value=An.value?"__encrypted__":"")})),(En.environments||[]).forEach(An=>{["BLOCKLET_APP_SK","BLOCKLET_APP_PSK"].includes(An.key)&&(An.value="__encrypted__")}),(En.migratedFrom||[]).forEach(An=>{An.appSk="__encrypted__"}),delete pn.configObj,delete pn.environmentObj},{sync:!0}),pn);a.wipeSensitiveData=bt;const Mt=pn=>{if(!pn)return!1;const En=pn.environments.find(An=>An.key==="BLOCKLET_DELETABLE");return En?En.value==="yes":!0};a.isDeletableBlocklet=Mt;const Ot=pn=>{let En=!1;return Pt(pn,An=>{An.meta.group!==ut.BlockletGroup.gateway&&(En=!0)}),En};a.hasRunnableComponent=Ot;const Vt=(pn,En=!1)=>{if(!pn)return"";const{meta:An}=pn;let zn;if(!En&&pn.environments){const rn=pn.environments.find(Ut=>Ut.key==="BLOCKLET_APP_NAME");rn&&rn.value&&(zn=rn.value)}return zn||An.title||An.name};a.getAppName=Vt,a.getDisplayName=Vt;const Nt=(pn,En=!1)=>{if(!pn)return"";const{meta:An}=pn;let zn;if(!En&&pn.environments){const rn=pn.environments.find(Ut=>Ut.key==="BLOCKLET_APP_DESCRIPTION");rn&&rn.value&&(zn=rn.value)}return zn||An.description||An.name};a.getAppDescription=Nt;function Gt(pn){var zn,rn,Ut;const En=(Ut=(rn=(zn=pn==null?void 0:pn.site)==null?void 0:zn.domainAliases)==null?void 0:rn.sort((Zt,hn)=>{var wn,qn,kn,Mn;return(wn=Zt.accessibility)!=null&&wn.accessible&&((qn=hn.accessibility)!=null&&qn.accessible)?+Zt.isProtected-+hn.isProtected:+((kn=hn.accessibility)==null?void 0:kn.accessible)-+((Mn=Zt.accessibility)==null?void 0:Mn.accessible)}))==null?void 0:Ut.map(Zt=>{var qn;const hn=(qn=Zt==null?void 0:Zt.domainStatus)!=null&&qn.isHttps?"https://":"http://",wn=Zt==null?void 0:Zt.value;return`${hn}${wn}`}).filter(Boolean);return En==null?void 0:En[0]}const qt=pn=>{pn&&(Pt(pn,En=>{En.status=(0,ut.fromBlockletStatus)(En.status),En.source!==void 0&&(En.source=(0,ut.fromBlockletSource)(En.source))}),pn.settings&&(pn.settings.children||[]).forEach(En=>{Pt(En,An=>{An.status=(0,ut.fromBlockletStatus)(An.status),An.source!==void 0&&(An.source=(0,ut.fromBlockletSource)(An.source))})}))};a.fixBlockletStatus=qt;const nn=pn=>{if(!pn)return null;const En=pn.meta||pn||{},{interfaces:An=[]}=En;return Array.isArray(An)?An.find(zn=>zn.type===ut.BLOCKLET_INTERFACE_TYPE_WEB):null};a.findWebInterface=nn;const fn=pn=>{if(!pn)return null;const En=nn(pn),{ports:An}=pn;return!En||!An?null:An[En.port]};a.findWebInterfacePort=fn;const yn=(pn,En)=>{const An=[En];En===pt.AUTH&&An.push(pt.AUTH_SERVICE);const zn=nn(pn);return zn?(zn.services||[]).find(rn=>An.includes(rn.name)):null};a.findServiceFromMeta=yn;const Jt=pn=>{if(!pn)return mt.ALL;if((0,_e.default)(pn,"settings.whoCanAccess"))return pn.settings.whoCanAccess;const En=yn(pn.meta,pt.AUTH);return(0,_e.default)(En,"config.whoCanAccess")?En.config.whoCanAccess:mt.ALL};a.getWhoCanAccess=Jt;const Bt=(pn,En)=>{const An=(pn.configs||[]).find(rn=>rn.key===ut.BLOCKLET_CONFIGURABLE_KEY.COMPONENT_ACCESS_WHO);if(An)return An.value;if(En&&(0,_e.default)(En,"settings.whoCanAccess")&&(0,_e.default)(En,"settings.whoCanAccess")!==mt.ALL)return(0,_e.default)(En,"settings.whoCanAccess");const zn=yn(pn.meta,pt.AUTH);return(0,_e.default)(zn,"config.whoCanAccess")?zn.config.whoCanAccess:mt.ALL};a.getComponentWhoCanAccess=Bt;const Kt=({request:pn,baseUrl:En})=>{const An=pn.headers["x-blocklet-did"]||"",zn=pn.headers["x-blocklet-real-did"]||"",rn=pn.headers["x-path-prefix"]||"/",Ut=pn.headers["x-group-path-prefix"]||"/";let Zt=En;return An!==zn&&rn!==Ut&&(Zt=(0,nt.joinURL)(Zt,"/").replace(rn,Ut)),Zt};a.getConnectAppUrl=Kt;const un=(pn,En)=>{const An=(En||"").includes(":")?":":/\./;return(pn||"").replace(dt,(En||"").replace(new RegExp(An,"g"),"-"))};a.replaceSlotToIp=un;const sn=pn=>{const En=Object.entries(ut.CHAIN_INFO_CONFIG).reduce((An,zn)=>{const[rn,[Ut,Zt]]=zn;return An[Ut]=(0,_e.default)(pn,rn)||Zt,An},{});return En.type==="ethereum"&&En.id==="none"&&(En.id="1"),En};a.getChainInfo=sn;const vn=pn=>{const En=sn({});if(!pn)return En;const An=sn(pn.configObj);if(An.host!=="none")return An;let zn;return Ft(pn,rn=>{if(zn&&zn.host!=="none")return;const Ut=sn(rn.configObj);Ut.host!=="none"&&(zn=Ut)}),zn||En};a.getBlockletChainInfo=vn;const $n=pn=>!!(pn!=null&&pn.controller);a.isExternalBlocklet=$n;const cn=pn=>pn.whoCanAccess.startsWith(Et)?pn.whoCanAccess.substring(Et.length).split(","):[];a.getRolesFromAuthConfig=cn;const gn=pn=>{const En=Array.isArray(pn.migratedFrom)?pn.migratedFrom.map(An=>An.appDid):[];return(0,et.default)([pn.appDid,pn.appPid,...En].filter(Boolean))};a.getBlockletAppIdList=gn;const Fn=pn=>{const En=[];return pn&&Pt(pn,An=>{var rn;(((rn=An.meta)==null?void 0:rn.interfaces)||[]).filter(Ut=>Ut.type===ut.BLOCKLET_INTERFACE_TYPE_SERVICE).forEach(Ut=>{const Zt=Ut.port||{};En.push({name:Ut.name,protocol:Ut.protocol,port:Number(Zt.external),upstreamPort:Number((An.ports||{})[Zt.internal])})})}),En};a.getBlockletServices=Fn;const _n=pn=>[ut.BlockletStatus.downloading,ut.BlockletStatus.waiting,ut.BlockletStatus.starting,ut.BlockletStatus.installing,ut.BlockletStatus.stopping,ut.BlockletStatus.upgrading,"downloading","waiting","starting","installing","extracting","stopping","upgrading","restarting","deleting"].includes(pn);a.isInProgress=_n;const In=pn=>[ut.BlockletStatus.added,ut.BlockletStatus.waiting,ut.BlockletStatus.downloading,ut.BlockletStatus.installing,"added","waiting","downloading","installing"].includes(pn);a.isBeforeInstalled=In;const lr=pn=>[ut.BlockletStatus.running,"running"].includes(pn);a.isRunning=lr;const xn=pn=>[ut.BlockletStatus.running,ut.BlockletStatus.waiting,ut.BlockletStatus.downloading,"running","waiting","downloading"].includes(pn);a.isAccessible=xn;const Sn=(pn,{type:En,did:An}={type:"",did:""})=>{var zn,rn,Ut;return pn?!(0,ft.hasStartEngine)(pn.meta)&&((Ut=(rn=(zn=pn.meta)==null?void 0:zn.resource)==null?void 0:rn.bundles)==null?void 0:Ut.length)>0&&(pn.meta.resource.bundles||[]).some(Zt=>Zt.type===En&&Zt.did===An):!1};a.hasResourceType=Sn,a.default={isFreeBlocklet:yt,isFreeComponent:ot,forEachBlocklet:At,forEachBlockletSync:Pt,forEachChild:zt,forEachChildSync:Ft,forEachComponentV2:It,forEachComponentV2Sync:Lt,isDeletableBlocklet:Mt,getSharedConfigObj:ct,getAppMissingConfigs:xt,getComponentMissingConfigs:Tt,isEnvShareableToClient:rt,isEnvShareable:st,wipeSensitiveData:bt,hasRunnableComponent:Ot,getAppName:Vt,getAppDescription:Nt,getAppUrl:Gt,getDisplayName:Vt,fixBlockletStatus:qt,findWebInterface:nn,findWebInterfacePort:fn,findServiceFromMeta:yn,getWhoCanAccess:Jt,getComponentWhoCanAccess:Bt,replaceSlotToIp:un,getComponentId:wt,getComponentName:St,getComponentBundleId:Ct,findComponent:Ht,findComponentById:Qt,findComponentV2:tn,findComponentByIdV2:mn,filterComponentsV2:$t,getParentComponentName:Dt,getConnectAppUrl:Kt,getChainInfo:sn,getBlockletChainInfo:vn,isExternalBlocklet:$n,isPreferenceKey:ht,getRolesFromAuthConfig:cn,getBlockletServices:Fn,isInProgress:_n,isBeforeInstalled:In,isRunning:lr,isAccessible:xn,isGatewayBlocklet:ft.isGatewayBlocklet,isPackBlocklet:ft.isPackBlocklet,hasStartEngine:ft.hasStartEngine,hasResourceType:Sn}})(util);const getServerUrl=(a,j=!1)=>{const _e=a.routing.adminPath;return j?encodeURIComponent(joinURL(window.location.origin,_e)):joinURL(window.location.origin,_e)},getLaunchAgreementUrl=(a,j,_e)=>{const et=getServerUrl(j),nt=joinURL(_e,`/api/blocklets/${a.did}/blocklet.json`),tt=new URL(joinURL(et,"/launch-blocklet/agreement"));return tt.searchParams.set("blocklet_meta_url",nt),tt.searchParams.set("from",window.location.href),tt.href},ensureDomainAliases=async(a,{getIP:j}={})=>{if(!a||!a.length)return[];if(!j||!a.some(et=>et.value.includes(constant$3.SLOT_FOR_IP_DNS_SITE)))return a;const _e=await j();return _e?a.map(et=>{try{return et.value=util.replaceSlotToIp(et.value,_e),et}catch{return et}}).filter(Boolean):a},getAppCapabilities=a=>{const j={didSpace:null};return util.forEachBlockletSync(a,_e=>{var et,nt;j.didSpace===constant.BLOCKLET_APP_SPACE_REQUIREMENT.REQUIRED||j.didSpace===constant.BLOCKLET_APP_SPACE_REQUIREMENT.REQUIRED_ON_SETUP||(nt=(et=_e==null?void 0:_e.meta)==null?void 0:et.capabilities)!=null&&nt.didSpace&&(j.didSpace=_e.meta.capabilities.didSpace)}),j},fixBlocklet=async(a,{fixRuntime:j=!0,oldBlocklet:_e,getIP:et}={})=>{if(a.site||(a.site={domainAliases:[],rules:[]}),a.site.rules.forEach(nt=>{nt.from.pathPrefix=normalizePathPrefix$1(nt.from.pathPrefix||"/")}),a.site.rules=sortBy$1(a.site.rules,nt=>nt.from.pathPrefix),j===!0)a.site.domainAliases=await ensureDomainAliases(a.site.domainAliases,{getIP:et}),a.appRuntimeInfo&&(a.appRuntimeInfo.startAt=new Date-a.appRuntimeInfo.uptime),util.forEachBlockletSync(a,nt=>{nt.runtimeInfo&&(nt.runtimeInfo.startAt=new Date-nt.runtimeInfo.uptime)});else if(j==="merge-old"&&_e){a.site.domainAliases=_e.site.domainAliases,a.appRuntimeInfo=_e.appRuntimeInfo;const nt={};util.forEachBlockletSync(_e,(tt,{id:it})=>{nt[it]=tt}),util.forEachBlockletSync(a,(tt,{id:it})=>{const ut=nt[it];ut&&(tt.runtimeInfo=ut.runtimeInfo,tt.diskInfo=ut.diskInfo,tt.engine=ut.engine)})}else a.site.domainAliases=[];a.capabilities=getAppCapabilities(a)},DEFAULT_WALLET_TYPE="arcblock",getWalletType=(a,j=!1)=>{let _e;return j?(_e=(a.configs||[]).find(et=>et.key==="BLOCKLET_APP_CHAIN_TYPE"),_e&&_e.value||(_e=(a.environments||[]).find(et=>["CHAIN_TYPE","BLOCKLET_APP_CHAIN_TYPE"].includes(et.key)),_e&&_e.value)?_e.value:DEFAULT_WALLET_TYPE):(_e=(a.environments||[]).find(et=>["CHAIN_TYPE","BLOCKLET_APP_CHAIN_TYPE"].includes(et.name)),_e&&_e.default?_e.default:DEFAULT_WALLET_TYPE)},isServerless=a=>!isEmpty$2(a==null?void 0:a.controller);let cache=null;const fetch$1=async()=>{const a=window.env.apiPrefix||"/",j=joinURL(a,"/api/dns-resolve?accessible=1");try{return(await axios$4.get(j)).data.address}catch{return null}},getIp=()=>(cache||(cache=fetch$1()),cache),BlockletsContext=reactExports.createContext({}),{Provider:Provider$2,Consumer:Consumer$2}=BlockletsContext,mergeBlocklets=(a,j,_e)=>_e?a.map(et=>{const nt={...et},tt=j.find(it=>it.meta.did===et.meta.did);return tt&&_e.forEach(it=>{nt[it]=tt[it]}),nt}):j;function BlockletsProvider({children:a}){const j=useNodeContext(),_e=createClient(),[et,nt]=reactExports.useState(null),[tt,it]=reactExports.useState(!1),[ut,ft]=reactExports.useState([]),[pt,dt]=reactExports.useState([]),[mt,Et]=reactExports.useState(!1),wt=(Lt,zt)=>{util.isExternalBlocklet(Lt)?dt(zt):ft(zt)},St=4,Ct=async({silent:Lt=!0,retries:zt=St,updates:Ft,useCache:Ht=!0}={})=>{Lt||it(!0);try{nt(null);const{blocklets:Qt}=await _e.getBlocklets({input:{useCache:Ht}});for(const $t of Qt)await fixBlocklet($t,{getIP:getIp});const tn=Qt.filter($t=>!util.isExternalBlocklet($t)),mn=Qt.filter(util.isExternalBlocklet);ft($t=>mergeBlocklets($t,tn,Ft)),dt($t=>mergeBlocklets($t,mn,Ft)),it(!1),Et(!0)}catch(Qt){zt>0?setTimeout(()=>Ct({silent:Lt,retries:zt-1,useCache:Ht}),1e3):(it(!1),nt(Qt))}},Dt=async Lt=>{try{const{blocklet:zt}=await j.api.getBlocklet({input:{did:Lt.meta.did,attachRuntimeInfo:!0}});await fixBlocklet(zt,{getIP:getIp}),wt(zt,Ft=>Ft.some(Ht=>Ht.meta.did===zt.meta.did)?Ft.map(Ht=>Ht.meta.did===zt.meta.did?zt:Ht):[...Ft,zt])}catch(zt){nt(zt)}},At=Lt=>{j.refresh(),Dt(Lt)};reactExports.useEffect(()=>{Ct({silent:!1})},[]);const Pt=Lt=>{const zt={};util.forEachBlockletSync(Lt,(Ft,{id:Ht})=>{zt[Ht]=constant.fromBlockletStatus(Ft.status)}),wt(Lt,Ft=>Ft.map(Ht=>(Ht.meta.did===Lt.meta.did&&util.forEachBlockletSync(Ht,(Qt,{id:tn})=>{zt[tn]&&(Qt.status=zt[tn])}),Ht)))};useSubscription(constant.BlockletEvents.added,Lt=>{Lt.status=constant.fromBlockletStatus(Lt.status),wt(Lt,zt=>[...zt,Lt])}),useSubscription(constant.BlockletEvents.removed,Lt=>{j.refresh(),wt(Lt,zt=>zt.filter(Ft=>Ft.meta.did!==Lt.meta.did))}),useSubscription(constant.BlockletEvents.statusChange,Pt),useSubscription(constant.BlockletEvents.installed,At),useSubscription(constant.BlockletEvents.upgraded,At),useSubscription(constant.BlockletEvents.updated,Dt),useSubscription(constant.BlockletEvents.startFailed,Dt);const It={loading:tt,error:et,data:ut,externalData:pt,refresh:Ct,initialized:mt,api:_e};return jsxRuntimeExports.jsx(Provider$2,{value:{blocklets:It},children:a})}function useBlockletsContext(){const{blocklets:a}=reactExports.useContext(BlockletsContext);return a}const authorize=({user:a,launchType:j,nftId:_e})=>{var et;if(!a)return!1;if(j==="serverless"){if(!_e)throw new Error("nftId is required");return((et=a==null?void 0:a.controller)==null?void 0:et.nftId)===_e}return(a.permissions||[]).includes("mutate_blocklets")},isServerlessBlockletInstalled=a=>{var j,_e;return a.isGetBlocklet&&((_e=(j=a.runtimeBlocklet)==null?void 0:j.controller)==null?void 0:_e.consumedAt)},getRestoredAccessUrl=async a=>{const j=getBlockletUrls({blocklet:a});let _e="";return _e=j.find(et=>{try{const{hostname:nt}=new URL(et);return urlEvaluation.isSlpDomain(nt)}catch(nt){return console.error(nt),!1}}),_e||(_e=await getAccessibleUrl(j)),_e},LaunchBlockletContext=reactExports.createContext({}),{Provider:Provider$1,Consumer:Consumer$1}=LaunchBlockletContext;function LaunchBlockletProvider({children:a}){const{session:j}=useSessionContext$1(),{t:_e}=useLocaleContext(),{api:et,info:nt}=useNodeContext(),[tt]=useSearchParams(),it=createClient(),ut=tt.get("launchType"),ft=tt.get("fromLauncher"),pt=tt.get("blocklet_meta_url")||"",dt=tt.get("nftId")||"",mt=tt.get("launcherSessionId")||"",Et=tt.get("launcherUrl")||"",wt=new URL(pt).origin,[St,Ct]=reactExports.useState({meta:null,appDid:tt.get("appDid")||null,sessionId:tt.get("sessionId")||null,isFree:!0,isExternal:!1,isInstalling:!1,isInstalled:!1,isRunning:!1,launcherSession:null,registryUrl:""}),Dt=(mn,$t)=>Ct(rt=>({...rt,appDid:mn,sessionId:$t})),At=authorize({user:j.user,launchType:ut,nftId:dt}),[Pt,It]=reactExports.useState(null),[Lt,zt]=reactExports.useState(!0),Ft=reactExports.useMemo(()=>nt?getServerUrl(nt):"",[nt]),Ht=async mn=>{if(!mn)throw new Error("appDid should not be empty");const{blocklet:$t}=await et.getBlocklet({input:{did:mn,attachConfig:!1}});if(!$t)return null;const rt=constant.BlockletStatus[$t.status],st=!!dt,ct=rt<constant.BlockletStatus.installed,ht=rt===constant.BlockletStatus.installed,vt=rt===constant.BlockletStatus.running;return Ct(xt=>({...xt,isInstalled:ht,isRunning:vt,isExternal:st,isInstalling:ct})),{isInstalled:ht,isRunning:vt,isExternal:st,isInstalling:ct}},Qt=async()=>{zt(!0);try{if(!pt)throw new Error(_e("common.invalidParam"));const[{meta:mn,isFree:$t,registryUrl:rt},{launcherSession:st,error:ct}]=await Promise.all([et.getBlockletMetaFromUrl({input:{url:pt,checkPrice:!0}}),mt?et.getLauncherSession({input:{launcherSessionId:mt,launcherUrl:Et}}):Promise.resolve({})]);if(mt&&!st)throw new Error(`Launch session invalid: ${ct}`);if(!mn)throw new Error(_e("LaunchBlockletBlocklet.error.loadMetaFailed"));let ht={};At&&St.appDid&&(ht=await Ht(St.appDid)),Ct(vt=>({...vt,...ht,meta:mn,isFree:$t,registryUrl:rt,launcherSession:st}))}catch(mn){console.error(mn),It(mn.message)}finally{zt(!1)}};reactExports.useEffect(()=>{var mn,$t,rt;((mn=j==null?void 0:j.user)==null?void 0:mn.role)===constant$3.SERVER_ROLES.EXTERNAL_BLOCKLET_CONTROLLER&&((rt=($t=j==null?void 0:j.user)==null?void 0:$t.controller)==null?void 0:rt.nftId)!==dt&&j.logout(),Qt()},[]),reactExports.useEffect(()=>{Lt||!St.meta||(At?St.appDid&&Ht(St.appDid).catch(mn=>{toast.error(mn.message)}):(Ct(mn=>({...mn,isInstalled:!1,isRunning:!1,isExternal:!1})),It(null)))},[At]);const tn={meta:St.meta,isFree:St.isFree,appDid:St.appDid,sessionId:St.sessionId,isInstalling:St.isInstalling,isInstalled:St.isInstalled,isExternal:St.isExternal,isRunning:St.isRunning,serverUrl:Ft,storeUrl:St.registryUrl||wt,blockletMetaUrl:pt,fromLauncher:ft,loading:Lt,error:Pt,api:it,getBlocklet:Ht,setAppDid:Dt,launcherUrl:Et,launcherSession:St.launcherSession,launcherSessionId:mt};return jsxRuntimeExports.jsx(Provider$1,{value:tn,children:a})}function useLaunchBlockletContext(){return reactExports.useContext(LaunchBlockletContext)}function useQuery(){return new URLSearchParams(useLocation().search)}const BlockletAppContext=reactExports.createContext(),{Provider,Consumer}=BlockletAppContext;function BlockletAppProvider({children:a}){const _e=useQuery().get("blocklet_meta_url"),et=_default$2(async()=>{const{data:tt}=await axios$1.get(_e);return tt});if(et.loading)return jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(CircularProgress,{})});const nt={meta:et.value,error:et.error};return jsxRuntimeExports.jsx(Provider,{value:nt,children:a})}BlockletAppProvider.propTypes={children:PropTypes.any.isRequired};function useBlockletAppContext(){return reactExports.useContext(BlockletAppContext)}const Dashboard=reactExports.lazy(()=>__vitePreload(()=>import("./index-Bmta40GX.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)),BlockletList=reactExports.lazy(()=>__vitePreload(()=>import("./index-B_Mci9Ef.js"),__vite__mapDeps([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,2,30,31,32,33,34]),import.meta.url)),BlockletRestore=reactExports.lazy(()=>__vitePreload(()=>import("./index-PdOAjq0M.js"),__vite__mapDeps([35,36,37,38,39,40,41,6,42,43,44,45,46,13,10,12,26,19,18]),import.meta.url)),BlockletStore=reactExports.lazy(()=>__vitePreload(()=>import("./index-D0sHKZuS.js"),__vite__mapDeps([47,6,48,49,50,18,17,51,10,52,53,32,13,12,42,54,43,44,55,3,56,57,19,23,24,58,59,60]),import.meta.url)),Settings=reactExports.lazy(()=>__vitePreload(()=>import("./index-C6PRgT9c.js"),__vite__mapDeps([61,62,11,59,63,64,51,65,13,10,12,7,8,9,14,15,16,17,18,19,66,55,3,56,2,67,6,68,69,32,21,20,70,34,71,72,73,4,74]),import.meta.url)),LogPage=reactExports.lazy(()=>__vitePreload(()=>import("./index-6-px9qAy.js"),__vite__mapDeps([75,76,23,24,10,77]),import.meta.url)),TeamPage=reactExports.lazy(()=>__vitePreload(()=>import("./index-Cyskc2Kt.js"),__vite__mapDeps([78,62,11,79,80,81,18,6,10,12,82,14,83,84,32,85,86,87,17,13,7,8,9,15,16,19,88,34,89,90,51,25,26,50,21,91,57,3,2,92,93,94,56,95,33,23,24,96,97,98,49,52,99,1,55,72]),import.meta.url)),BlockletDetail=reactExports.lazy(()=>__vitePreload(()=>import("./detail-CGNFghKt.js"),__vite__mapDeps([100,62,11,20,21,22,6,19,23,24,31,57,91,60]),import.meta.url)),EULAPage=reactExports.lazy(()=>__vitePreload(()=>import("./index-CEIupTjX.js"),[],import.meta.url)),Notifications=reactExports.lazy(()=>__vitePreload(()=>import("./index-DEogVXBk.js"),__vite__mapDeps([101,1,82,14]),import.meta.url)),IssuePassport=reactExports.lazy(()=>__vitePreload(()=>import("./index-CiBtNKkh.js"),__vite__mapDeps([102,103,90,104,92,70,105]),import.meta.url)),LostPassport=reactExports.lazy(()=>__vitePreload(()=>import("./index-B0m14nWb.js"),__vite__mapDeps([106,70,86,54,105,30]),import.meta.url)),ExchangePassport=reactExports.lazy(()=>__vitePreload(()=>import("./index-DqEMTm5N.js"),__vite__mapDeps([107,105]),import.meta.url)),BlockletLauncher=reactExports.lazy(()=>__vitePreload(()=>import("./index-BkZfZe7e.js"),__vite__mapDeps([108,36,37,38,39,40,41,109,80,81,46,26,6,28,25,29,67]),import.meta.url)),NotFoundPage=reactExports.lazy(()=>__vitePreload(()=>import("./index-DojNP9lM.js"),__vite__mapDeps([110,90]),import.meta.url)),Invite=reactExports.lazy(()=>__vitePreload(()=>import("./index-0Sgb5oPf.js"),__vite__mapDeps([111,103,90,104,92,70,105]),import.meta.url)),Console=reactExports.lazy(()=>__vitePreload(()=>import("./index-DwxAoeFn.js").then(a=>a.a2),__vite__mapDeps([112,113]),import.meta.url)),AnalyticsPage=reactExports.lazy(()=>__vitePreload(()=>import("./index-DVSDRPzS.js"),__vite__mapDeps([114,62,11,115,116,117,71,10,118,9,13,12,52,7,8,14,15,16,17,18,19,31,119,120,4,6,99,24]),import.meta.url));function useSharedContext(){const a=useNodeContext(),{session:j}=useSessionContext$1(),{wallet:_e}=useBrowser(),et=j.user&&j.user.did;return reactExports.useEffect(()=>{const nt=getWsClient();return et?nt.connect():nt.isConnected()&&nt.disconnect(),()=>{nt.isConnected()&&nt.disconnect()}},[et]),reactExports.useEffect(()=>{if(_e)return()=>{};const nt=()=>{document.visibilityState==="visible"&&j.refresh()};return document.addEventListener("visibilitychange",nt),()=>{document.removeEventListener("visibilitychange",nt)}},[]),{node:a,session:j}}function ProtectedApp(){var it;const{t:a}=useLocaleContext(),{node:j,session:_e}=useSharedContext(),et=useLocation();reactExports.useEffect(()=>{window.tracker&&typeof window.tracker.pageView=="function"&&window.tracker.pageView(`${et.pathname}${et.search}`)},[et]),reactExports.useEffect(()=>{var ut;((ut=_e==null?void 0:_e.user)==null?void 0:ut.role)===constant$3.SERVER_ROLES.EXTERNAL_BLOCKLET_CONTROLLER&&_e.logout()},[(it=_e==null?void 0:_e.user)==null?void 0:it.role]);const nt=jsxRuntimeExports.jsx(CircularProgress,{});if(j.loading||_e.loading)return jsxRuntimeExports.jsx(Center,{children:nt});if(!j.info.initialized)return getAuthMethod.getServerAuthMethod(j.info)==="nft"?jsxRuntimeExports.jsx(NodeVerifyOwner,{action:"verify-owner"}):jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(NodeConnectOwner,{})});if(j.info.upgradeSessionId)return jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(MaintainProgress,{})});if(!_e.user)return jsxRuntimeExports.jsx(NodeLogin,{loadingEle:nt});const tt=jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(CircularProgress,{})});return jsxRuntimeExports.jsx(NotificationProvider,{children:jsxRuntimeExports.jsxs(BlockletsProvider,{children:[jsxRuntimeExports.jsx(Health,{}),jsxRuntimeExports.jsx(CheckNodeStatus,{}),jsxRuntimeExports.jsx(GlobalSubscriber,{}),jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:tt,children:jsxRuntimeExports.jsxs(Routes,{children:[jsxRuntimeExports.jsx(Route,{path:"/dashboard",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:"Dashboard",children:jsxRuntimeExports.jsx(Dashboard,{})})}),jsxRuntimeExports.jsx(Route,{path:"/blocklets",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("common.blocklets"),children:jsxRuntimeExports.jsx(BlockletList,{})})}),jsxRuntimeExports.jsx(Route,{path:"/blocklets/:did/:tab",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:"Blocklets",children:jsxRuntimeExports.jsx(BlockletDetail,{})})}),jsxRuntimeExports.jsx(Route,{path:"/settings/:tab",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("common.setting"),children:jsxRuntimeExports.jsx(Settings,{})})}),jsxRuntimeExports.jsx(Route,{path:"/eula",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("setup.steps.eula"),children:jsxRuntimeExports.jsx(EULAPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/store",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("common.store"),children:jsxRuntimeExports.jsx(BlockletStore,{})})}),jsxRuntimeExports.jsx(Route,{path:"/console",element:jsxRuntimeExports.jsx(DashboardRoute,{title:`GraphQL ${a("common.console")}`,scrollable:!1,fullWidth:!0,children:jsxRuntimeExports.jsx(Console,{})})}),jsxRuntimeExports.jsx(Route,{path:"/notifications",element:jsxRuntimeExports.jsx(DashboardRoute,{children:jsxRuntimeExports.jsx(Notifications,{})})}),jsxRuntimeExports.jsx(Route,{path:"/team/:tab",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("common.team"),children:jsxRuntimeExports.jsx(TeamPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/logs/:name",element:jsxRuntimeExports.jsx(DashboardRoute,{scrollable:!1,fullWidth:!0,title:a("common.logs"),children:jsxRuntimeExports.jsx(LogPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/analytics/:tab",element:jsxRuntimeExports.jsx(DashboardRoute,{fullWidth:!0,title:a("common.analytics"),children:jsxRuntimeExports.jsx(AnalyticsPage,{})})}),jsxRuntimeExports.jsx(Route,{path:"/",element:jsxRuntimeExports.jsx(Navigate,{to:"/dashboard",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/team",element:jsxRuntimeExports.jsx(Navigate,{to:"/team/members",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/analytics",element:jsxRuntimeExports.jsx(Navigate,{to:"/analytics/traffic",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/logs",element:jsxRuntimeExports.jsx(Navigate,{to:"/logs/abtnode",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/router",element:jsxRuntimeExports.jsx(Navigate,{to:"/router/rules",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/settings",element:jsxRuntimeExports.jsx(Navigate,{to:"/settings/basic",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/marketplace",element:jsxRuntimeExports.jsx(Navigate,{to:"/store",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"/marketplace/:did",element:jsxRuntimeExports.jsx(Navigate,{to:"/store/:did",replace:!0})}),jsxRuntimeExports.jsx(Route,{path:"*",element:jsxRuntimeExports.jsx(NotFoundPage,{})})]})})]})})}function UnprotectedWrapper({children:a}){const{node:j,session:_e}=useSharedContext();return j.loading||!_e.initialized&&_e.loading?jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(CircularProgress,{})}):j.info.upgradeSessionId?jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(MaintainProgress,{})}):a}function App(){const{changeLocale:a}=useLocaleContext(),j=useQuery();reactExports.useEffect(()=>{const et=j.get("locale");et&&["zh","en"].includes(et)&&a(et)},[]);const _e=jsxRuntimeExports.jsx(Center,{children:jsxRuntimeExports.jsx(CircularProgress,{})});return jsxRuntimeExports.jsx(reactExports.Suspense,{fallback:_e,children:jsxRuntimeExports.jsxs(Routes,{children:[jsxRuntimeExports.jsx(Route,{path:`${constant$3.WELLKNOWN_SERVICE_PATH_PREFIX}/issue-passport`,element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(IssuePassport,{})})}),jsxRuntimeExports.jsx(Route,{path:`${constant$3.WELLKNOWN_SERVICE_PATH_PREFIX}/lost-passport`,element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(LostPassport,{})})}),jsxRuntimeExports.jsx(Route,{path:`${constant$3.WELLKNOWN_SERVICE_PATH_PREFIX}/exchange-passport`,element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(ExchangePassport,{})})}),jsxRuntimeExports.jsx(Route,{path:"/accept-server",element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(NodeVerifyOwner,{action:"accept-server"})})}),jsxRuntimeExports.jsx(Route,{path:"/launch-blocklet/*",element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(LaunchBlockletProvider,{children:jsxRuntimeExports.jsx(BlockletLauncher,{})})})}),jsxRuntimeExports.jsx(Route,{path:"/blocklets/restore/*",element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(BlockletAppProvider,{children:jsxRuntimeExports.jsx(BlockletRestore,{})})})}),jsxRuntimeExports.jsx(Route,{path:`${constant$3.WELLKNOWN_SERVICE_PATH_PREFIX}/invite`,element:jsxRuntimeExports.jsx(UnprotectedWrapper,{children:jsxRuntimeExports.jsx(Invite,{})})}),jsxRuntimeExports.jsx(Route,{path:"/*",element:jsxRuntimeExports.jsx(ProtectedApp,{})})]})})}function AppWrapper(){const a=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(CssBaseline,{}),jsxRuntimeExports.jsx(BrowserRouter,{history,basename:a,children:jsxRuntimeExports.jsx(Root$5,{children:jsxRuntimeExports.jsx(App,{})})})]})}const root=createRoot(document.getElementById("root"));root.render(jsxRuntimeExports.jsx(AppWrapper,{}));const prefix=window.env&&window.env.apiPrefix?window.env.apiPrefix:"/";register(`${prefix}/service-worker.js`.replace(/\/+/g,"/"),{registrationOptions:{scope:prefix},registered(){console.info("Service worker has been registered.")},ready(){console.info("Service worker is active.")},cached(){console.info("Content has been cached for offline use.")},updatefound(){console.info("New content is downloading.")},updated(){console.info("New content is available; please refresh.")},offline(){console.info("No internet connection found. App is running in offline mode.")},error(a){console.error("Error during service worker registration:",a)}});export{default_1$n as $,useNavigate as A,ButtonComponent as B,CircularProgress as C,Dialog as D,toast as E,useSearchParams as F,Grid as G,constant$3 as H,ImageIcon as I,useMediaQuery as J,Alert as K,LinearProgress as L,formatError$1 as M,util as N,Link$2 as O,PropTypes as P,Box as Q,isEmpty$2 as R,RelativeTime$1 as S,TagComponent as T,MenuItem$1 as U,Permission as V,WrappedDidAddress as W,Center as X,toString_1 as Y,propTypesExports as Z,_createCompounder as _,useSubscription as a,Menu$1 as a$,lodashExports as a0,api$1 as a1,IconButton as a2,Confirm as a3,makeStyles as a4,ListItemSecondaryAction as a5,List as a6,ListItem as a7,ListItemText as a8,getServerUrl as a9,ErrorFallback as aA,formatRegistryLogoPath as aB,engine as aC,ListItemIcon as aD,ensureDomainAliases as aE,normalizePathPrefix$1 as aF,sortBy$1 as aG,getIp as aH,stringSortHandlerAsc as aI,getAccessUrl as aJ,requireCreateSvgIcon as aK,interopRequireDefaultExports as aL,history as aM,semver$1 as aN,useReactive as aO,useAsyncEffect as aP,sleep as aQ,checkInputByType as aR,Stack$5 as aS,isChrome as aT,_default$2 as aU,axios$1 as aV,shouldCheckDomainStatus as aW,formatMountPoint as aX,_default$5 as aY,FormControlLabel as aZ,Checkbox as a_,useBlockletAppContext as aa,getAuthMethod as ab,ConfirmDialog as ac,setSessionToken as ad,getRestoredAccessUrl as ae,Debug as af,isServerlessBlockletInstalled as ag,getWsClient as ah,useTheme$2 as ai,useQuery as aj,getPathPrefix as ak,HeaderAddon as al,SessionContext as am,Global as an,Routes as ao,Route as ap,Navigate as aq,css$1 as ar,AvatarWithErrorBoundary as as,formatToDatetime as at,getLaunchAgreementUrl as au,axios$4 as av,useSessionContext$1 as aw,Tooltip as ax,getBlockletMetaUrl as ay,ErrorBoundary as az,constant as b,useForkRef as b$,checkIsWildcardDomain as b0,Popover as b1,Card as b2,CardContent as b3,formatToDate as b4,sortDomains as b5,Collapse as b6,isUrl$1 as b7,__awaiter as b8,__generator as b9,_baseRest as bA,_arrayFilter as bB,last_1 as bC,isArrayLikeObject_1 as bD,default_1$c as bE,isDownloading as bF,withPermission as bG,getBlockletUrl as bH,getBlockletUrlParams as bI,createSvgIcon$1 as bJ,styled$1 as bK,ButtonBase as bL,_extends$2 as bM,emphasize_1 as bN,_objectWithoutPropertiesLoose$1 as bO,generateUtilityClasses as bP,generateUtilityClass as bQ,useDefaultProps as bR,useSlotProps as bS,clsx$1 as bT,composeClasses as bU,rootShouldForwardProp as bV,SwitchBase as bW,capitalize$3 as bX,alpha_1 as bY,createChainedFunction$1 as bZ,useControlled as b_,__spread as ba,React$2 as bb,dayjs$1 as bc,Divider as bd,isCertificateMatch as be,NodeContext as bf,useParams as bg,__assign as bh,__spreadArrays as bi,DidAddressWrapper as bj,createPassportSvg as bk,useNodeContext$1 as bl,getWalletType as bm,__vitePreload as bn,isInstalling as bo,Badge as bp,NavLink$1 as bq,createAppPassportSvg as br,_SetCache as bs,_arrayMap as bt,_baseUnary as bu,_arrayIncludes as bv,_arrayIncludesWith as bw,_cacheHas as bx,_baseFlatten as by,_baseUniq as bz,createClient as c,ownerDocument as c$,useId as c0,merge$1 as c1,toSlotDomain as c2,omit$1 as c3,fixBlocklet as c4,memoize$5 as c5,defaultCheckAccessible as c6,getBlockletUrls as c7,urlEvaluation as c8,ButtonGroupContext as c9,API_DID_PREFIX as cA,AUTH_SERVICE_PREFIX as cB,formatDateTime as cC,getExplorerLink as cD,patchJsxToLocale as cE,flat$1 as cF,en$2 as cG,LocaleProvider as cH,getAugmentedNamespace as cI,Theme as cJ,ReactDOM as cK,global$2 as cL,punycodeExports as cM,commonjsGlobal as cN,copy$1 as cO,dist$4 as cP,Util as cQ,require$$3 as cR,getSessionToken as cS,SvgLogo as cT,hoistStatics as cU,getLogoHash as cV,useEnhancedEffect$1 as cW,debounce$5 as cX,ownerWindow as cY,useRtl as cZ,useEventCallback$1 as c_,ButtonGroupButtonContext as ca,BlockletAdminRoles as cb,ListItemAvatar as cc,Avatar$1 as cd,NotificationTag as ce,useNotificationContext as cf,useRequest as cg,useMemoizedFn as ch,isNumber$2 as ci,__read as cj,useLatest as ck,defaultDayjs as cl,useBrowser as cm,Container$3 as cn,isFunction$8 as co,usePassportId as cp,FullPage as cq,useLaunchBlockletContext as cr,useSecurity as cs,authorize as ct,isNewStoreUrl as cu,getAccessibleUrl as cv,getBlockletLogoUrl as cw,Img as cx,useLocation as cy,useMount as cz,useBlockletsContext as d,private_safeAlpha_1 as d$,colors$1 as d0,useFormControl as d1,formControlState as d2,util$6 as d3,upperFirst$2 as d4,camelCase$2 as d5,ClickToCopy as d6,getGridUtilityClass as d7,gridClasses as d8,Grow as d9,lib$1 as dA,urlExports as dB,cloneDeep_1 as dC,get_1 as dD,DID as dE,isHostComponent as dF,FormControlContext as dG,GlobalStyles as dH,formatMuiErrorMessage$1 as dI,deepmerge$1 as dJ,isMuiElement as dK,slotShouldForwardProp as dL,Button$1 as dM,Paper as dN,ClickAwayListener as dO,MenuList as dP,Popper as dQ,useTheme$3 as dR,GlobalStyles$2 as dS,ThemeProvider$2 as dT,toPropertyKey$3 as dU,createSpacing as dV,createBreakpoints as dW,createTheme$1 as dX,private_safeDarken_1 as dY,private_safeLighten_1 as dZ,private_safeEmphasize_1 as d_,PopoverPaper as da,PopoverRoot as db,getOffsetLeft as dc,getOffsetTop as dd,getPopoverUtilityClass as de,popoverClasses as df,emotionSerialize_esm as dg,emotionUtils_browser_esm as dh,emotionCache_browser_esm as di,emotionReact_browser_esm as dj,reactDomExports as dk,Close as dl,_baseIteratee as dm,isArrayLike_1 as dn,keys_1 as dp,_baseFindIndex as dq,toInteger_1 as dr,noop$7 as ds,isObject$p as dt,cloneDeep$1 as du,padStart_1 as dv,Buffer$3 as dw,lib$2 as dx,upperFirst_1 as dy,pick_1 as dz,_default$1 as e,Hidden as e$,private_safeColorChannel_1 as e0,defaultSxConfig as e1,styleFunctionSx$1 as e2,getOverlayAlpha as e3,hslToRgb_1 as e4,THEME_ID as e5,createTypography as e6,StyledEngineProvider as e7,ThemeProvider$1 as e8,alpha$1 as e9,getChipUtilityClass as eA,buttonClasses as eB,getButtonUtilityClass as eC,checkboxClasses as eD,getCheckboxUtilityClass as eE,formControlLabelClasses as eF,getFormControlLabelUtilityClasses as eG,getListItemTextUtilityClass as eH,listItemTextClasses as eI,getMenuItemUtilityClass as eJ,menuItemClasses as eK,getTooltipUtilityClass as eL,tooltipClasses as eM,lighten_1 as eN,darken_1 as eO,Toolbar as eP,getToolbarUtilityClass as eQ,toolbarClasses$1 as eR,_baseIsEqual as eS,SvgIcon as eT,process$1$1 as eU,urlPathFriendly$1 as eV,useThemeProps as eW,defaultTheme$2 as eX,commonjsRequire as eY,create$4 as eZ,ThemeProvider$4 as e_,createMuiTheme as ea,darken$1 as eb,decomposeColor$1 as ec,duration as ed,easing as ee,emphasize$1 as ef,getContrastRatio$1 as eg,getLuminance$1 as eh,hexToRgb$1 as ei,hslToRgb$1 as ej,keyframes as ek,lighten$1 as el,createMixins as em,recomposeColor$1 as en,responsiveFontSizes as eo,rgbToHex$1 as ep,getUnit as eq,toUnitless as er,getPaperUtilityClass as es,paperClasses$1 as et,getIconButtonUtilityClass as eu,iconButtonClasses as ev,getTypographyUtilityClass as ew,typographyClasses$1 as ex,chipClasses as ey,Chip as ez,LocaleContext as f,Fade as f$,Check$1 as f0,withQuery as f1,createTheme$3 as f2,styled$2 as f3,useTheme$4 as f4,extendSxProp as f5,getTargetElement as f6,useEventListener as f7,useUpdateEffect as f8,__spreadArray as f9,util$5 as fA,shams$1 as fB,hasPropertyDescriptors_1 as fC,defineDataProperty as fD,safeBufferExports as fE,requireBrowser$9 as fF,requireElliptic as fG,requireCryptoBrowserify as fH,ripemd160 as fI,getInviteLink$1 as fJ,SessionContext$1 as fK,getIssuePassportLink as fL,Icon as fM,getTextColor_1 as fN,isProtectedRole as fO,lib$3 as fP,createPassportSvg$2 as fQ,semver as fR,browserExports as fS,require$$0$1 as fT,isAbsoluteUrl as fU,dist$1 as fV,browser$4 as fW,requireObjectWithoutPropertiesLoose as fX,loadIcon as fY,createTheme as fZ,ThemeProvider as f_,_baseOrderBy as fa,isArray_1 as fb,default_1$p as fc,useCreation as fd,parseQuery as fe,useDebounceFn as ff,createRoot as fg,useSize as fh,colors$2 as fi,callBound$2 as fj,callBindExports as fk,normalizePathPrefix_1 as fl,clamp$1 as fm,useIsFocusVisible as fn,extractEventHandlers as fo,resolveProps as fp,debounce_1 as fq,noop_1 as fr,_default$3 as fs,formatTime as ft,RelativeTime as fu,useUpdate as fv,tmp as fw,getVisitorId$2 as fx,useConfirm as fy,translate as fz,getDefaultExportFromCjs$1 as g,jssGlobal as g$,ListItemButton as g0,AUTH_SERVICE_PREFIX$1 as g1,getTranslation as g2,SessionPermission as g3,NAVIGATION_URL as g4,LocaleSelector as g5,SessionUser as g6,default_1$l as g7,ResponsiveHeader as g8,withErrorBoundary as g9,_inheritsLoose$3 as gA,forceReflow as gB,Transition$1 as gC,_baseIndexOf as gD,_baseToString as gE,_baseTrim as gF,_castSlice as gG,_charsEndIndex as gH,_stringToArray as gI,validateDomain as gJ,axios_1 as gK,CopyButton as gL,isServerless as gM,getSystemDomains as gN,data$m as gO,isRunning as gP,getTransferAppLink as gQ,pick$1 as gR,data$g as gS,data$f as gT,data$h as gU,_copyArray as gV,usePreviousProps as gW,setRef as gX,ClearIcon as gY,hoistNonReactStatics_cjs as gZ,functionPlugin as g_,NavMenu as ga,DashboardWrapper as gb,BlockletSDK as gc,useUnmount as gd,identity_1 as ge,_baseForOwn as gf,_baseMap as gg,isString_1 as gh,isPlainObject_1 as gi,default_1$h as gj,browser as gk,uniq_1 as gl,pLimit_1 as gm,require$$6 as gn,_isIndex as go,_typeof$2 as gp,Dialog$1 as gq,dialogClasses as gr,DialogContent as gs,FocusTrap as gt,DialogActions as gu,TransitionGroup as gv,localizedFormatPlugin as gw,isExtracting as gx,APP_PREFIX as gy,objectAssign$1 as gz,useTheme as h,jssNested as h0,camelCase as h1,defaultUnit as h2,jssVendorPrefixer as h3,jssPropsSort as h4,createJss as h5,getDynamicStyles as h6,isNil_1 as h7,omit_1 as h8,withoutTrailingSlash as h9,require$$1$4 as hA,Check as hB,reactIsExports as hC,isValidClusterSize as hD,extractStatusUrlFromNextWorkflow as hE,pWaitFor$1 as hF,hasRequiredSteps as hG,getStoreList as hH,flatten$4 as hI,trimEnd$1 as hJ,useCheckUpdateByUrl as hK,DialogTitle as hL,_baseEach as hM,_baseAssignValue as hN,throttle$4 as hO,pTimeout$2 as hP,TimeoutError_1 as hQ,debounce$3 as hR,uniq$1 as hS,Backdrop as hT,isString$2 as ha,isAbsoluteUrl$1 as hb,nanoid as hc,omitBy$1 as hd,isNil$1 as he,isEqual$1 as hf,useEffectWithTarget$1 as hg,__values as hh,isString$3 as hi,isFunction$5 as hj,circularProgressClasses$1 as hk,getCircularProgressUtilityClass as hl,collapseClasses$1 as hm,getCollapseUtilityClass as hn,boxClasses as ho,Icon$2 as hp,getIconUtilityClass as hq,iconClasses$1 as hr,getLinearProgressUtilityClass as hs,linearProgressClasses$1 as ht,getMenuUtilityClass as hu,menuClasses$1 as hv,_unsupportedIterableToArray as hw,_setPrototypeOf as hx,_assertThisInitialized$1 as hy,_createClass as hz,Link$1 as i,jsxRuntimeExports as j,get$6 as k,filesize as l,Typography as m,newStyled as n,formatLocale as o,prettyMs as p,joinURL as q,reactExports as r,styled as s,useLocaleContext as t,useNodeContext as u,useSessionContext as v,_default as w,DialogContentText as x,DidConnect as y,getWebWalletUrl as z};
|