From d5bf87e7a7ec6cdf5fe7f554f101772bfbe200ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Mon, 9 Nov 2026 12:01:18 +0100 Subject: [PATCH 1/2] chore: Remove frontend build from git MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- .github/workflows/command-compile.yml | 232 -- .gitignore | 13 +- REUSE.toml | 6 - css/be-tarask-fDfbCxDn.chunk.css | 4 - css/index-DBPTxogX.chunk.css | 1 - css/index-bfXBK-tQ.chunk.css | 1 - css/personalSettings-i1_v3FZk.chunk.css | 7 - css/user_migration-personalSettings.css | 2 - js/af-BXiFDzzM.chunk.mjs | 3 - js/af-BXiFDzzM.chunk.mjs.license | 7 - js/af-BXiFDzzM.chunk.mjs.map | 1 - js/af-BXiFDzzM.chunk.mjs.map.license | 7 - js/ar-3qmvQ7om.chunk.mjs | 3 - js/ar-3qmvQ7om.chunk.mjs.license | 7 - js/ar-3qmvQ7om.chunk.mjs.map | 1 - js/ar-3qmvQ7om.chunk.mjs.map.license | 7 - js/ar-DZ-XF744e4Z.chunk.mjs | 3 - js/ar-DZ-XF744e4Z.chunk.mjs.license | 7 - js/ar-DZ-XF744e4Z.chunk.mjs.map | 1 - js/ar-DZ-XF744e4Z.chunk.mjs.map.license | 7 - js/ar-EG-Bv1NkNUl.chunk.mjs | 3 - js/ar-EG-Bv1NkNUl.chunk.mjs.license | 7 - js/ar-EG-Bv1NkNUl.chunk.mjs.map | 1 - js/ar-EG-Bv1NkNUl.chunk.mjs.map.license | 7 - js/ar-MA-CisDbuvT.chunk.mjs | 3 - js/ar-MA-CisDbuvT.chunk.mjs.license | 7 - js/ar-MA-CisDbuvT.chunk.mjs.map | 1 - js/ar-MA-CisDbuvT.chunk.mjs.map.license | 7 - js/ar-SA-Cb6z3-HB.chunk.mjs | 3 - js/ar-SA-Cb6z3-HB.chunk.mjs.license | 7 - js/ar-SA-Cb6z3-HB.chunk.mjs.map | 1 - js/ar-SA-Cb6z3-HB.chunk.mjs.map.license | 7 - js/ar-TN-DkotlBtK.chunk.mjs | 3 - js/ar-TN-DkotlBtK.chunk.mjs.license | 7 - js/ar-TN-DkotlBtK.chunk.mjs.map | 1 - js/ar-TN-DkotlBtK.chunk.mjs.map.license | 7 - js/az-DinC2iyY.chunk.mjs | 3 - js/az-DinC2iyY.chunk.mjs.license | 7 - js/az-DinC2iyY.chunk.mjs.map | 1 - js/az-DinC2iyY.chunk.mjs.map.license | 7 - js/be-CW5fta_H.chunk.mjs | 3 - js/be-CW5fta_H.chunk.mjs.license | 7 - js/be-CW5fta_H.chunk.mjs.map | 1 - js/be-CW5fta_H.chunk.mjs.map.license | 7 - js/be-tarask-CzbVxLq7.chunk.mjs | 104 - js/be-tarask-CzbVxLq7.chunk.mjs.license | 39 - js/be-tarask-CzbVxLq7.chunk.mjs.map | 1 - js/be-tarask-CzbVxLq7.chunk.mjs.map.license | 39 - js/bg-BMcSgftd.chunk.mjs | 3 - js/bg-BMcSgftd.chunk.mjs.license | 7 - js/bg-BMcSgftd.chunk.mjs.map | 1 - js/bg-BMcSgftd.chunk.mjs.map.license | 7 - js/bn-B__RlEH-.chunk.mjs | 3 - js/bn-B__RlEH-.chunk.mjs.license | 7 - js/bn-B__RlEH-.chunk.mjs.map | 1 - js/bn-B__RlEH-.chunk.mjs.map.license | 7 - js/bs-BtOlcG89.chunk.mjs | 3 - js/bs-BtOlcG89.chunk.mjs.license | 7 - js/bs-BtOlcG89.chunk.mjs.map | 1 - js/bs-BtOlcG89.chunk.mjs.map.license | 7 - js/ca-CMk_3ddZ.chunk.mjs | 3 - js/ca-CMk_3ddZ.chunk.mjs.license | 7 - js/ca-CMk_3ddZ.chunk.mjs.map | 1 - js/ca-CMk_3ddZ.chunk.mjs.map.license | 7 - js/ckb-3sbE_hjo.chunk.mjs | 3 - js/ckb-3sbE_hjo.chunk.mjs.license | 7 - js/ckb-3sbE_hjo.chunk.mjs.map | 1 - js/ckb-3sbE_hjo.chunk.mjs.map.license | 7 - js/cs-HJVnkcur.chunk.mjs | 3 - js/cs-HJVnkcur.chunk.mjs.license | 7 - js/cs-HJVnkcur.chunk.mjs.map | 1 - js/cs-HJVnkcur.chunk.mjs.map.license | 7 - js/cy-pbPW3Jzz.chunk.mjs | 3 - js/cy-pbPW3Jzz.chunk.mjs.license | 7 - js/cy-pbPW3Jzz.chunk.mjs.map | 1 - js/cy-pbPW3Jzz.chunk.mjs.map.license | 7 - js/da-BaQRH72z.chunk.mjs | 3 - js/da-BaQRH72z.chunk.mjs.license | 7 - js/da-BaQRH72z.chunk.mjs.map | 1 - js/da-BaQRH72z.chunk.mjs.map.license | 7 - js/de-AT-CgbGkIa9.chunk.mjs | 3 - js/de-AT-CgbGkIa9.chunk.mjs.license | 7 - js/de-AT-CgbGkIa9.chunk.mjs.map | 1 - js/de-AT-CgbGkIa9.chunk.mjs.map.license | 7 - js/de-Bbv3ZnBC.chunk.mjs | 3 - js/de-Bbv3ZnBC.chunk.mjs.license | 7 - js/de-Bbv3ZnBC.chunk.mjs.map | 1 - js/de-Bbv3ZnBC.chunk.mjs.map.license | 7 - js/el-VFxCkLfI.chunk.mjs | 3 - js/el-VFxCkLfI.chunk.mjs.license | 7 - js/el-VFxCkLfI.chunk.mjs.map | 1 - js/el-VFxCkLfI.chunk.mjs.map.license | 7 - js/en-AU-Bh9dK71P.chunk.mjs | 3 - js/en-AU-Bh9dK71P.chunk.mjs.license | 7 - js/en-AU-Bh9dK71P.chunk.mjs.map | 1 - js/en-AU-Bh9dK71P.chunk.mjs.map.license | 7 - js/en-CA-Vdc8OGgM.chunk.mjs | 3 - js/en-CA-Vdc8OGgM.chunk.mjs.license | 7 - js/en-CA-Vdc8OGgM.chunk.mjs.map | 1 - js/en-CA-Vdc8OGgM.chunk.mjs.map.license | 7 - js/en-GB-CFOvOfEJ.chunk.mjs | 3 - js/en-GB-CFOvOfEJ.chunk.mjs.license | 7 - js/en-GB-CFOvOfEJ.chunk.mjs.map | 1 - js/en-GB-CFOvOfEJ.chunk.mjs.map.license | 7 - js/en-IE-CGQGZeMn.chunk.mjs | 3 - js/en-IE-CGQGZeMn.chunk.mjs.license | 7 - js/en-IE-CGQGZeMn.chunk.mjs.map | 1 - js/en-IE-CGQGZeMn.chunk.mjs.map.license | 7 - js/en-IN-BB0ncm-S.chunk.mjs | 3 - js/en-IN-BB0ncm-S.chunk.mjs.license | 7 - js/en-IN-BB0ncm-S.chunk.mjs.map | 1 - js/en-IN-BB0ncm-S.chunk.mjs.map.license | 7 - js/en-NZ-DvyQL9_y.chunk.mjs | 3 - js/en-NZ-DvyQL9_y.chunk.mjs.license | 7 - js/en-NZ-DvyQL9_y.chunk.mjs.map | 1 - js/en-NZ-DvyQL9_y.chunk.mjs.map.license | 7 - js/en-ZA-saLgTKwg.chunk.mjs | 3 - js/en-ZA-saLgTKwg.chunk.mjs.license | 7 - js/en-ZA-saLgTKwg.chunk.mjs.map | 1 - js/en-ZA-saLgTKwg.chunk.mjs.map.license | 7 - js/eo-BJNDFMDN.chunk.mjs | 3 - js/eo-BJNDFMDN.chunk.mjs.license | 7 - js/eo-BJNDFMDN.chunk.mjs.map | 1 - js/eo-BJNDFMDN.chunk.mjs.map.license | 7 - js/es-BMNOiSip.chunk.mjs | 3 - js/es-BMNOiSip.chunk.mjs.license | 7 - js/es-BMNOiSip.chunk.mjs.map | 1 - js/es-BMNOiSip.chunk.mjs.map.license | 7 - js/et-BYk_4iAi.chunk.mjs | 3 - js/et-BYk_4iAi.chunk.mjs.license | 7 - js/et-BYk_4iAi.chunk.mjs.map | 1 - js/et-BYk_4iAi.chunk.mjs.map.license | 7 - js/eu-DuwezkLf.chunk.mjs | 3 - js/eu-DuwezkLf.chunk.mjs.license | 7 - js/eu-DuwezkLf.chunk.mjs.map | 1 - js/eu-DuwezkLf.chunk.mjs.map.license | 7 - js/fa-IR-n1vPQtSL.chunk.mjs | 3 - js/fa-IR-n1vPQtSL.chunk.mjs.license | 7 - js/fa-IR-n1vPQtSL.chunk.mjs.map | 1 - js/fa-IR-n1vPQtSL.chunk.mjs.map.license | 7 - js/fi-D04BAa96.chunk.mjs | 3 - js/fi-D04BAa96.chunk.mjs.license | 7 - js/fi-D04BAa96.chunk.mjs.map | 1 - js/fi-D04BAa96.chunk.mjs.map.license | 7 - js/formatLong-BT8cOERt.chunk.mjs | 3 - js/formatLong-BT8cOERt.chunk.mjs.license | 7 - js/formatLong-BT8cOERt.chunk.mjs.map | 1 - js/formatLong-BT8cOERt.chunk.mjs.map.license | 7 - js/formatRelative-ljuPkisC.chunk.mjs | 3 - js/formatRelative-ljuPkisC.chunk.mjs.license | 7 - js/formatRelative-ljuPkisC.chunk.mjs.map | 1 - ...matRelative-ljuPkisC.chunk.mjs.map.license | 7 - js/fr-CA-CdW-nRr7.chunk.mjs | 3 - js/fr-CA-CdW-nRr7.chunk.mjs.license | 7 - js/fr-CA-CdW-nRr7.chunk.mjs.map | 1 - js/fr-CA-CdW-nRr7.chunk.mjs.map.license | 7 - js/fr-CF4d0eGC.chunk.mjs | 3 - js/fr-CF4d0eGC.chunk.mjs.license | 7 - js/fr-CF4d0eGC.chunk.mjs.map | 1 - js/fr-CF4d0eGC.chunk.mjs.map.license | 7 - js/fr-CH-GDQ6wdSz.chunk.mjs | 3 - js/fr-CH-GDQ6wdSz.chunk.mjs.license | 7 - js/fr-CH-GDQ6wdSz.chunk.mjs.map | 1 - js/fr-CH-GDQ6wdSz.chunk.mjs.map.license | 7 - js/fy-BORtLm6R.chunk.mjs | 3 - js/fy-BORtLm6R.chunk.mjs.license | 7 - js/fy-BORtLm6R.chunk.mjs.map | 1 - js/fy-BORtLm6R.chunk.mjs.map.license | 7 - js/gd-6oDUWHHk.chunk.mjs | 3 - js/gd-6oDUWHHk.chunk.mjs.license | 7 - js/gd-6oDUWHHk.chunk.mjs.map | 1 - js/gd-6oDUWHHk.chunk.mjs.map.license | 7 - js/gl-BD_mbyIb.chunk.mjs | 3 - js/gl-BD_mbyIb.chunk.mjs.license | 7 - js/gl-BD_mbyIb.chunk.mjs.map | 1 - js/gl-BD_mbyIb.chunk.mjs.map.license | 7 - js/gu-D1wZBUDH.chunk.mjs | 3 - js/gu-D1wZBUDH.chunk.mjs.license | 7 - js/gu-D1wZBUDH.chunk.mjs.map | 1 - js/gu-D1wZBUDH.chunk.mjs.map.license | 7 - js/he-CH969S6V.chunk.mjs | 3 - js/he-CH969S6V.chunk.mjs.license | 7 - js/he-CH969S6V.chunk.mjs.map | 1 - js/he-CH969S6V.chunk.mjs.map.license | 7 - js/hi-BfRt-B7_.chunk.mjs | 3 - js/hi-BfRt-B7_.chunk.mjs.license | 7 - js/hi-BfRt-B7_.chunk.mjs.map | 1 - js/hi-BfRt-B7_.chunk.mjs.map.license | 7 - js/hr-BJLmGCs4.chunk.mjs | 3 - js/hr-BJLmGCs4.chunk.mjs.license | 7 - js/hr-BJLmGCs4.chunk.mjs.map | 1 - js/hr-BJLmGCs4.chunk.mjs.map.license | 7 - js/ht-CoV6SUXM.chunk.mjs | 3 - js/ht-CoV6SUXM.chunk.mjs.license | 7 - js/ht-CoV6SUXM.chunk.mjs.map | 1 - js/ht-CoV6SUXM.chunk.mjs.map.license | 7 - js/hu-BfNr7Dqd.chunk.mjs | 3 - js/hu-BfNr7Dqd.chunk.mjs.license | 7 - js/hu-BfNr7Dqd.chunk.mjs.map | 1 - js/hu-BfNr7Dqd.chunk.mjs.map.license | 7 - js/hy-CFJ222Zq.chunk.mjs | 3 - js/hy-CFJ222Zq.chunk.mjs.license | 7 - js/hy-CFJ222Zq.chunk.mjs.map | 1 - js/hy-CFJ222Zq.chunk.mjs.map.license | 7 - js/id-Byrj38Rt.chunk.mjs | 3 - js/id-Byrj38Rt.chunk.mjs.license | 7 - js/id-Byrj38Rt.chunk.mjs.map | 1 - js/id-Byrj38Rt.chunk.mjs.map.license | 7 - js/index-Cr1DLTt7.chunk.mjs | 4 - js/index-Cr1DLTt7.chunk.mjs.license | 16 - js/index-Cr1DLTt7.chunk.mjs.map | 1 - js/index-Cr1DLTt7.chunk.mjs.map.license | 16 - js/index-EXeiCK0S.chunk.mjs | 9 - js/index-EXeiCK0S.chunk.mjs.license | 18 - js/index-EXeiCK0S.chunk.mjs.map | 1 - js/index-EXeiCK0S.chunk.mjs.map.license | 18 - js/index-lRX2_WBG.chunk.mjs | 3 - js/index-lRX2_WBG.chunk.mjs.license | 16 - js/index-lRX2_WBG.chunk.mjs.map | 1 - js/index-lRX2_WBG.chunk.mjs.map.license | 16 - js/is-xiXKWsCz.chunk.mjs | 3 - js/is-xiXKWsCz.chunk.mjs.license | 7 - js/is-xiXKWsCz.chunk.mjs.map | 1 - js/is-xiXKWsCz.chunk.mjs.map.license | 7 - js/isSameWeek-DEBA-plP.chunk.mjs | 3 - js/isSameWeek-DEBA-plP.chunk.mjs.license | 7 - js/isSameWeek-DEBA-plP.chunk.mjs.map | 1 - js/isSameWeek-DEBA-plP.chunk.mjs.map.license | 7 - js/it-1lDB860f.chunk.mjs | 3 - js/it-1lDB860f.chunk.mjs.license | 7 - js/it-1lDB860f.chunk.mjs.map | 1 - js/it-1lDB860f.chunk.mjs.map.license | 7 - js/it-CH-DMeSnLKK.chunk.mjs | 3 - js/it-CH-DMeSnLKK.chunk.mjs.license | 7 - js/it-CH-DMeSnLKK.chunk.mjs.map | 1 - js/it-CH-DMeSnLKK.chunk.mjs.map.license | 7 - js/ja-DDVadPGV.chunk.mjs | 3 - js/ja-DDVadPGV.chunk.mjs.license | 7 - js/ja-DDVadPGV.chunk.mjs.map | 1 - js/ja-DDVadPGV.chunk.mjs.map.license | 7 - js/ja-Hira-CBFYcIfb.chunk.mjs | 3 - js/ja-Hira-CBFYcIfb.chunk.mjs.license | 7 - js/ja-Hira-CBFYcIfb.chunk.mjs.map | 1 - js/ja-Hira-CBFYcIfb.chunk.mjs.map.license | 7 - js/ka-BsBNI3tM.chunk.mjs | 3 - js/ka-BsBNI3tM.chunk.mjs.license | 7 - js/ka-BsBNI3tM.chunk.mjs.map | 1 - js/ka-BsBNI3tM.chunk.mjs.map.license | 7 - js/kk-H4kPQUCw.chunk.mjs | 3 - js/kk-H4kPQUCw.chunk.mjs.license | 7 - js/kk-H4kPQUCw.chunk.mjs.map | 1 - js/kk-H4kPQUCw.chunk.mjs.map.license | 7 - js/km-BQNCgOZ7.chunk.mjs | 3 - js/km-BQNCgOZ7.chunk.mjs.license | 7 - js/km-BQNCgOZ7.chunk.mjs.map | 1 - js/km-BQNCgOZ7.chunk.mjs.map.license | 7 - js/kn-CGXBY6oC.chunk.mjs | 3 - js/kn-CGXBY6oC.chunk.mjs.license | 7 - js/kn-CGXBY6oC.chunk.mjs.map | 1 - js/kn-CGXBY6oC.chunk.mjs.map.license | 7 - js/ko-Cn4IS0S7.chunk.mjs | 3 - js/ko-Cn4IS0S7.chunk.mjs.license | 7 - js/ko-Cn4IS0S7.chunk.mjs.map | 1 - js/ko-Cn4IS0S7.chunk.mjs.map.license | 7 - js/lb-BXg4mBhi.chunk.mjs | 3 - js/lb-BXg4mBhi.chunk.mjs.license | 7 - js/lb-BXg4mBhi.chunk.mjs.map | 1 - js/lb-BXg4mBhi.chunk.mjs.map.license | 7 - js/lt-NrLxstB2.chunk.mjs | 3 - js/lt-NrLxstB2.chunk.mjs.license | 7 - js/lt-NrLxstB2.chunk.mjs.map | 1 - js/lt-NrLxstB2.chunk.mjs.map.license | 7 - js/lv-B6BjWv6z.chunk.mjs | 3 - js/lv-B6BjWv6z.chunk.mjs.license | 7 - js/lv-B6BjWv6z.chunk.mjs.map | 1 - js/lv-B6BjWv6z.chunk.mjs.map.license | 7 - js/match-B44lKaHG.chunk.mjs | 3 - js/match-B44lKaHG.chunk.mjs.license | 7 - js/match-B44lKaHG.chunk.mjs.map | 1 - js/match-B44lKaHG.chunk.mjs.map.license | 7 - js/match-CZb9Ltqz.chunk.mjs | 3 - js/match-CZb9Ltqz.chunk.mjs.license | 7 - js/match-CZb9Ltqz.chunk.mjs.map | 1 - js/match-CZb9Ltqz.chunk.mjs.map.license | 7 - js/match-K9yIY7KA.chunk.mjs | 3 - js/match-K9yIY7KA.chunk.mjs.license | 7 - js/match-K9yIY7KA.chunk.mjs.map | 1 - js/match-K9yIY7KA.chunk.mjs.map.license | 7 - js/mk-DaIPdRxE.chunk.mjs | 3 - js/mk-DaIPdRxE.chunk.mjs.license | 7 - js/mk-DaIPdRxE.chunk.mjs.map | 1 - js/mk-DaIPdRxE.chunk.mjs.map.license | 7 - js/mn-kd0DXDK4.chunk.mjs | 3 - js/mn-kd0DXDK4.chunk.mjs.license | 7 - js/mn-kd0DXDK4.chunk.mjs.map | 1 - js/mn-kd0DXDK4.chunk.mjs.map.license | 7 - js/ms-C6AG4XSR.chunk.mjs | 3 - js/ms-C6AG4XSR.chunk.mjs.license | 7 - js/ms-C6AG4XSR.chunk.mjs.map | 1 - js/ms-C6AG4XSR.chunk.mjs.map.license | 7 - js/mt-C_ohrf8N.chunk.mjs | 3 - js/mt-C_ohrf8N.chunk.mjs.license | 7 - js/mt-C_ohrf8N.chunk.mjs.map | 1 - js/mt-C_ohrf8N.chunk.mjs.map.license | 7 - js/nb-BSRw0cop.chunk.mjs | 3 - js/nb-BSRw0cop.chunk.mjs.license | 7 - js/nb-BSRw0cop.chunk.mjs.map | 1 - js/nb-BSRw0cop.chunk.mjs.map.license | 7 - js/nl-BE-DYijfpy0.chunk.mjs | 3 - js/nl-BE-DYijfpy0.chunk.mjs.license | 7 - js/nl-BE-DYijfpy0.chunk.mjs.map | 1 - js/nl-BE-DYijfpy0.chunk.mjs.map.license | 7 - js/nl-z8V_F-ed.chunk.mjs | 3 - js/nl-z8V_F-ed.chunk.mjs.license | 7 - js/nl-z8V_F-ed.chunk.mjs.map | 1 - js/nl-z8V_F-ed.chunk.mjs.map.license | 7 - js/nn-CF2CjTNY.chunk.mjs | 3 - js/nn-CF2CjTNY.chunk.mjs.license | 7 - js/nn-CF2CjTNY.chunk.mjs.map | 1 - js/nn-CF2CjTNY.chunk.mjs.map.license | 7 - js/oc-CuM7-fZ1.chunk.mjs | 3 - js/oc-CuM7-fZ1.chunk.mjs.license | 7 - js/oc-CuM7-fZ1.chunk.mjs.map | 1 - js/oc-CuM7-fZ1.chunk.mjs.map.license | 7 - js/pl-CQwABrHO.chunk.mjs | 3 - js/pl-CQwABrHO.chunk.mjs.license | 7 - js/pl-CQwABrHO.chunk.mjs.map | 1 - js/pl-CQwABrHO.chunk.mjs.map.license | 7 - js/pt-BR-CixOOzns.chunk.mjs | 3 - js/pt-BR-CixOOzns.chunk.mjs.license | 7 - js/pt-BR-CixOOzns.chunk.mjs.map | 1 - js/pt-BR-CixOOzns.chunk.mjs.map.license | 7 - js/pt-MwQTbL55.chunk.mjs | 3 - js/pt-MwQTbL55.chunk.mjs.license | 7 - js/pt-MwQTbL55.chunk.mjs.map | 1 - js/pt-MwQTbL55.chunk.mjs.map.license | 7 - js/ro-BSltOhDi.chunk.mjs | 3 - js/ro-BSltOhDi.chunk.mjs.license | 7 - js/ro-BSltOhDi.chunk.mjs.map | 1 - js/ro-BSltOhDi.chunk.mjs.map.license | 7 - js/ru-BjBf4KtU.chunk.mjs | 3 - js/ru-BjBf4KtU.chunk.mjs.license | 7 - js/ru-BjBf4KtU.chunk.mjs.map | 1 - js/ru-BjBf4KtU.chunk.mjs.map.license | 7 - js/se-CT3apg_B.chunk.mjs | 3 - js/se-CT3apg_B.chunk.mjs.license | 7 - js/se-CT3apg_B.chunk.mjs.map | 1 - js/se-CT3apg_B.chunk.mjs.map.license | 7 - js/sk-C_9JTQ9w.chunk.mjs | 3 - js/sk-C_9JTQ9w.chunk.mjs.license | 7 - js/sk-C_9JTQ9w.chunk.mjs.map | 1 - js/sk-C_9JTQ9w.chunk.mjs.map.license | 7 - js/sl-W4l0nN_A.chunk.mjs | 3 - js/sl-W4l0nN_A.chunk.mjs.license | 7 - js/sl-W4l0nN_A.chunk.mjs.map | 1 - js/sl-W4l0nN_A.chunk.mjs.map.license | 7 - js/sq-D5RxwT1j.chunk.mjs | 3 - js/sq-D5RxwT1j.chunk.mjs.license | 7 - js/sq-D5RxwT1j.chunk.mjs.map | 1 - js/sq-D5RxwT1j.chunk.mjs.map.license | 7 - js/sr-Czcs-frD.chunk.mjs | 3 - js/sr-Czcs-frD.chunk.mjs.license | 7 - js/sr-Czcs-frD.chunk.mjs.map | 1 - js/sr-Czcs-frD.chunk.mjs.map.license | 7 - js/sr-Latn-DTQLxI32.chunk.mjs | 3 - js/sr-Latn-DTQLxI32.chunk.mjs.license | 7 - js/sr-Latn-DTQLxI32.chunk.mjs.map | 1 - js/sr-Latn-DTQLxI32.chunk.mjs.map.license | 7 - js/sv-CxxyFTxX.chunk.mjs | 3 - js/sv-CxxyFTxX.chunk.mjs.license | 7 - js/sv-CxxyFTxX.chunk.mjs.map | 1 - js/sv-CxxyFTxX.chunk.mjs.map.license | 7 - js/ta-C_fkvbcE.chunk.mjs | 3 - js/ta-C_fkvbcE.chunk.mjs.license | 7 - js/ta-C_fkvbcE.chunk.mjs.map | 1 - js/ta-C_fkvbcE.chunk.mjs.map.license | 7 - js/te-C-5V_jdg.chunk.mjs | 3 - js/te-C-5V_jdg.chunk.mjs.license | 7 - js/te-C-5V_jdg.chunk.mjs.map | 1 - js/te-C-5V_jdg.chunk.mjs.map.license | 7 - js/th-CEsw-oEn.chunk.mjs | 3 - js/th-CEsw-oEn.chunk.mjs.license | 7 - js/th-CEsw-oEn.chunk.mjs.map | 1 - js/th-CEsw-oEn.chunk.mjs.map.license | 7 - js/tr-vD4HarN5.chunk.mjs | 3 - js/tr-vD4HarN5.chunk.mjs.license | 7 - js/tr-vD4HarN5.chunk.mjs.map | 1 - js/tr-vD4HarN5.chunk.mjs.map.license | 7 - js/ug-C8_7p_Py.chunk.mjs | 3 - js/ug-C8_7p_Py.chunk.mjs.license | 7 - js/ug-C8_7p_Py.chunk.mjs.map | 1 - js/ug-C8_7p_Py.chunk.mjs.map.license | 7 - js/uk-BbmSgi2Q.chunk.mjs | 3 - js/uk-BbmSgi2Q.chunk.mjs.license | 7 - js/uk-BbmSgi2Q.chunk.mjs.map | 1 - js/uk-BbmSgi2Q.chunk.mjs.map.license | 7 - js/user_migration-personalSettings.mjs | 1990 ----------------- ...ser_migration-personalSettings.mjs.license | 451 ---- js/user_migration-personalSettings.mjs.map | 1 - ...migration-personalSettings.mjs.map.license | 451 ---- js/uz-9Krk28hK.chunk.mjs | 3 - js/uz-9Krk28hK.chunk.mjs.license | 7 - js/uz-9Krk28hK.chunk.mjs.map | 1 - js/uz-9Krk28hK.chunk.mjs.map.license | 7 - js/uz-Cyrl-Gt64X26g.chunk.mjs | 3 - js/uz-Cyrl-Gt64X26g.chunk.mjs.license | 7 - js/uz-Cyrl-Gt64X26g.chunk.mjs.map | 1 - js/uz-Cyrl-Gt64X26g.chunk.mjs.map.license | 7 - js/vendor.LICENSE.txt | 505 ----- js/vi-88dHAH7e.chunk.mjs | 3 - js/vi-88dHAH7e.chunk.mjs.license | 7 - js/vi-88dHAH7e.chunk.mjs.map | 1 - js/vi-88dHAH7e.chunk.mjs.map.license | 7 - js/zh-CN-BteBGpaG.chunk.mjs | 3 - js/zh-CN-BteBGpaG.chunk.mjs.license | 7 - js/zh-CN-BteBGpaG.chunk.mjs.map | 1 - js/zh-CN-BteBGpaG.chunk.mjs.map.license | 7 - js/zh-HK-ByNE7PZw.chunk.mjs | 3 - js/zh-HK-ByNE7PZw.chunk.mjs.license | 7 - js/zh-HK-ByNE7PZw.chunk.mjs.map | 1 - js/zh-HK-ByNE7PZw.chunk.mjs.map.license | 7 - js/zh-TW-Cg6Yhtou.chunk.mjs | 3 - js/zh-TW-Cg6Yhtou.chunk.mjs.license | 7 - js/zh-TW-Cg6Yhtou.chunk.mjs.map | 1 - js/zh-TW-Cg6Yhtou.chunk.mjs.map.license | 7 - 425 files changed, 7 insertions(+), 5741 deletions(-) delete mode 100644 .github/workflows/command-compile.yml delete mode 100644 css/be-tarask-fDfbCxDn.chunk.css delete mode 100644 css/index-DBPTxogX.chunk.css delete mode 100644 css/index-bfXBK-tQ.chunk.css delete mode 100644 css/personalSettings-i1_v3FZk.chunk.css delete mode 100644 css/user_migration-personalSettings.css delete mode 100644 js/af-BXiFDzzM.chunk.mjs delete mode 100644 js/af-BXiFDzzM.chunk.mjs.license delete mode 100644 js/af-BXiFDzzM.chunk.mjs.map delete mode 100644 js/af-BXiFDzzM.chunk.mjs.map.license delete mode 100644 js/ar-3qmvQ7om.chunk.mjs delete mode 100644 js/ar-3qmvQ7om.chunk.mjs.license delete mode 100644 js/ar-3qmvQ7om.chunk.mjs.map delete mode 100644 js/ar-3qmvQ7om.chunk.mjs.map.license delete mode 100644 js/ar-DZ-XF744e4Z.chunk.mjs delete mode 100644 js/ar-DZ-XF744e4Z.chunk.mjs.license delete mode 100644 js/ar-DZ-XF744e4Z.chunk.mjs.map delete mode 100644 js/ar-DZ-XF744e4Z.chunk.mjs.map.license delete mode 100644 js/ar-EG-Bv1NkNUl.chunk.mjs delete mode 100644 js/ar-EG-Bv1NkNUl.chunk.mjs.license delete mode 100644 js/ar-EG-Bv1NkNUl.chunk.mjs.map delete mode 100644 js/ar-EG-Bv1NkNUl.chunk.mjs.map.license delete mode 100644 js/ar-MA-CisDbuvT.chunk.mjs delete mode 100644 js/ar-MA-CisDbuvT.chunk.mjs.license delete mode 100644 js/ar-MA-CisDbuvT.chunk.mjs.map delete mode 100644 js/ar-MA-CisDbuvT.chunk.mjs.map.license delete mode 100644 js/ar-SA-Cb6z3-HB.chunk.mjs delete mode 100644 js/ar-SA-Cb6z3-HB.chunk.mjs.license delete mode 100644 js/ar-SA-Cb6z3-HB.chunk.mjs.map delete mode 100644 js/ar-SA-Cb6z3-HB.chunk.mjs.map.license delete mode 100644 js/ar-TN-DkotlBtK.chunk.mjs delete mode 100644 js/ar-TN-DkotlBtK.chunk.mjs.license delete mode 100644 js/ar-TN-DkotlBtK.chunk.mjs.map delete mode 100644 js/ar-TN-DkotlBtK.chunk.mjs.map.license delete mode 100644 js/az-DinC2iyY.chunk.mjs delete mode 100644 js/az-DinC2iyY.chunk.mjs.license delete mode 100644 js/az-DinC2iyY.chunk.mjs.map delete mode 100644 js/az-DinC2iyY.chunk.mjs.map.license delete mode 100644 js/be-CW5fta_H.chunk.mjs delete mode 100644 js/be-CW5fta_H.chunk.mjs.license delete mode 100644 js/be-CW5fta_H.chunk.mjs.map delete mode 100644 js/be-CW5fta_H.chunk.mjs.map.license delete mode 100644 js/be-tarask-CzbVxLq7.chunk.mjs delete mode 100644 js/be-tarask-CzbVxLq7.chunk.mjs.license delete mode 100644 js/be-tarask-CzbVxLq7.chunk.mjs.map delete mode 100644 js/be-tarask-CzbVxLq7.chunk.mjs.map.license delete mode 100644 js/bg-BMcSgftd.chunk.mjs delete mode 100644 js/bg-BMcSgftd.chunk.mjs.license delete mode 100644 js/bg-BMcSgftd.chunk.mjs.map delete mode 100644 js/bg-BMcSgftd.chunk.mjs.map.license delete mode 100644 js/bn-B__RlEH-.chunk.mjs delete mode 100644 js/bn-B__RlEH-.chunk.mjs.license delete mode 100644 js/bn-B__RlEH-.chunk.mjs.map delete mode 100644 js/bn-B__RlEH-.chunk.mjs.map.license delete mode 100644 js/bs-BtOlcG89.chunk.mjs delete mode 100644 js/bs-BtOlcG89.chunk.mjs.license delete mode 100644 js/bs-BtOlcG89.chunk.mjs.map delete mode 100644 js/bs-BtOlcG89.chunk.mjs.map.license delete mode 100644 js/ca-CMk_3ddZ.chunk.mjs delete mode 100644 js/ca-CMk_3ddZ.chunk.mjs.license delete mode 100644 js/ca-CMk_3ddZ.chunk.mjs.map delete mode 100644 js/ca-CMk_3ddZ.chunk.mjs.map.license delete mode 100644 js/ckb-3sbE_hjo.chunk.mjs delete mode 100644 js/ckb-3sbE_hjo.chunk.mjs.license delete mode 100644 js/ckb-3sbE_hjo.chunk.mjs.map delete mode 100644 js/ckb-3sbE_hjo.chunk.mjs.map.license delete mode 100644 js/cs-HJVnkcur.chunk.mjs delete mode 100644 js/cs-HJVnkcur.chunk.mjs.license delete mode 100644 js/cs-HJVnkcur.chunk.mjs.map delete mode 100644 js/cs-HJVnkcur.chunk.mjs.map.license delete mode 100644 js/cy-pbPW3Jzz.chunk.mjs delete mode 100644 js/cy-pbPW3Jzz.chunk.mjs.license delete mode 100644 js/cy-pbPW3Jzz.chunk.mjs.map delete mode 100644 js/cy-pbPW3Jzz.chunk.mjs.map.license delete mode 100644 js/da-BaQRH72z.chunk.mjs delete mode 100644 js/da-BaQRH72z.chunk.mjs.license delete mode 100644 js/da-BaQRH72z.chunk.mjs.map delete mode 100644 js/da-BaQRH72z.chunk.mjs.map.license delete mode 100644 js/de-AT-CgbGkIa9.chunk.mjs delete mode 100644 js/de-AT-CgbGkIa9.chunk.mjs.license delete mode 100644 js/de-AT-CgbGkIa9.chunk.mjs.map delete mode 100644 js/de-AT-CgbGkIa9.chunk.mjs.map.license delete mode 100644 js/de-Bbv3ZnBC.chunk.mjs delete mode 100644 js/de-Bbv3ZnBC.chunk.mjs.license delete mode 100644 js/de-Bbv3ZnBC.chunk.mjs.map delete mode 100644 js/de-Bbv3ZnBC.chunk.mjs.map.license delete mode 100644 js/el-VFxCkLfI.chunk.mjs delete mode 100644 js/el-VFxCkLfI.chunk.mjs.license delete mode 100644 js/el-VFxCkLfI.chunk.mjs.map delete mode 100644 js/el-VFxCkLfI.chunk.mjs.map.license delete mode 100644 js/en-AU-Bh9dK71P.chunk.mjs delete mode 100644 js/en-AU-Bh9dK71P.chunk.mjs.license delete mode 100644 js/en-AU-Bh9dK71P.chunk.mjs.map delete mode 100644 js/en-AU-Bh9dK71P.chunk.mjs.map.license delete mode 100644 js/en-CA-Vdc8OGgM.chunk.mjs delete mode 100644 js/en-CA-Vdc8OGgM.chunk.mjs.license delete mode 100644 js/en-CA-Vdc8OGgM.chunk.mjs.map delete mode 100644 js/en-CA-Vdc8OGgM.chunk.mjs.map.license delete mode 100644 js/en-GB-CFOvOfEJ.chunk.mjs delete mode 100644 js/en-GB-CFOvOfEJ.chunk.mjs.license delete mode 100644 js/en-GB-CFOvOfEJ.chunk.mjs.map delete mode 100644 js/en-GB-CFOvOfEJ.chunk.mjs.map.license delete mode 100644 js/en-IE-CGQGZeMn.chunk.mjs delete mode 100644 js/en-IE-CGQGZeMn.chunk.mjs.license delete mode 100644 js/en-IE-CGQGZeMn.chunk.mjs.map delete mode 100644 js/en-IE-CGQGZeMn.chunk.mjs.map.license delete mode 100644 js/en-IN-BB0ncm-S.chunk.mjs delete mode 100644 js/en-IN-BB0ncm-S.chunk.mjs.license delete mode 100644 js/en-IN-BB0ncm-S.chunk.mjs.map delete mode 100644 js/en-IN-BB0ncm-S.chunk.mjs.map.license delete mode 100644 js/en-NZ-DvyQL9_y.chunk.mjs delete mode 100644 js/en-NZ-DvyQL9_y.chunk.mjs.license delete mode 100644 js/en-NZ-DvyQL9_y.chunk.mjs.map delete mode 100644 js/en-NZ-DvyQL9_y.chunk.mjs.map.license delete mode 100644 js/en-ZA-saLgTKwg.chunk.mjs delete mode 100644 js/en-ZA-saLgTKwg.chunk.mjs.license delete mode 100644 js/en-ZA-saLgTKwg.chunk.mjs.map delete mode 100644 js/en-ZA-saLgTKwg.chunk.mjs.map.license delete mode 100644 js/eo-BJNDFMDN.chunk.mjs delete mode 100644 js/eo-BJNDFMDN.chunk.mjs.license delete mode 100644 js/eo-BJNDFMDN.chunk.mjs.map delete mode 100644 js/eo-BJNDFMDN.chunk.mjs.map.license delete mode 100644 js/es-BMNOiSip.chunk.mjs delete mode 100644 js/es-BMNOiSip.chunk.mjs.license delete mode 100644 js/es-BMNOiSip.chunk.mjs.map delete mode 100644 js/es-BMNOiSip.chunk.mjs.map.license delete mode 100644 js/et-BYk_4iAi.chunk.mjs delete mode 100644 js/et-BYk_4iAi.chunk.mjs.license delete mode 100644 js/et-BYk_4iAi.chunk.mjs.map delete mode 100644 js/et-BYk_4iAi.chunk.mjs.map.license delete mode 100644 js/eu-DuwezkLf.chunk.mjs delete mode 100644 js/eu-DuwezkLf.chunk.mjs.license delete mode 100644 js/eu-DuwezkLf.chunk.mjs.map delete mode 100644 js/eu-DuwezkLf.chunk.mjs.map.license delete mode 100644 js/fa-IR-n1vPQtSL.chunk.mjs delete mode 100644 js/fa-IR-n1vPQtSL.chunk.mjs.license delete mode 100644 js/fa-IR-n1vPQtSL.chunk.mjs.map delete mode 100644 js/fa-IR-n1vPQtSL.chunk.mjs.map.license delete mode 100644 js/fi-D04BAa96.chunk.mjs delete mode 100644 js/fi-D04BAa96.chunk.mjs.license delete mode 100644 js/fi-D04BAa96.chunk.mjs.map delete mode 100644 js/fi-D04BAa96.chunk.mjs.map.license delete mode 100644 js/formatLong-BT8cOERt.chunk.mjs delete mode 100644 js/formatLong-BT8cOERt.chunk.mjs.license delete mode 100644 js/formatLong-BT8cOERt.chunk.mjs.map delete mode 100644 js/formatLong-BT8cOERt.chunk.mjs.map.license delete mode 100644 js/formatRelative-ljuPkisC.chunk.mjs delete mode 100644 js/formatRelative-ljuPkisC.chunk.mjs.license delete mode 100644 js/formatRelative-ljuPkisC.chunk.mjs.map delete mode 100644 js/formatRelative-ljuPkisC.chunk.mjs.map.license delete mode 100644 js/fr-CA-CdW-nRr7.chunk.mjs delete mode 100644 js/fr-CA-CdW-nRr7.chunk.mjs.license delete mode 100644 js/fr-CA-CdW-nRr7.chunk.mjs.map delete mode 100644 js/fr-CA-CdW-nRr7.chunk.mjs.map.license delete mode 100644 js/fr-CF4d0eGC.chunk.mjs delete mode 100644 js/fr-CF4d0eGC.chunk.mjs.license delete mode 100644 js/fr-CF4d0eGC.chunk.mjs.map delete mode 100644 js/fr-CF4d0eGC.chunk.mjs.map.license delete mode 100644 js/fr-CH-GDQ6wdSz.chunk.mjs delete mode 100644 js/fr-CH-GDQ6wdSz.chunk.mjs.license delete mode 100644 js/fr-CH-GDQ6wdSz.chunk.mjs.map delete mode 100644 js/fr-CH-GDQ6wdSz.chunk.mjs.map.license delete mode 100644 js/fy-BORtLm6R.chunk.mjs delete mode 100644 js/fy-BORtLm6R.chunk.mjs.license delete mode 100644 js/fy-BORtLm6R.chunk.mjs.map delete mode 100644 js/fy-BORtLm6R.chunk.mjs.map.license delete mode 100644 js/gd-6oDUWHHk.chunk.mjs delete mode 100644 js/gd-6oDUWHHk.chunk.mjs.license delete mode 100644 js/gd-6oDUWHHk.chunk.mjs.map delete mode 100644 js/gd-6oDUWHHk.chunk.mjs.map.license delete mode 100644 js/gl-BD_mbyIb.chunk.mjs delete mode 100644 js/gl-BD_mbyIb.chunk.mjs.license delete mode 100644 js/gl-BD_mbyIb.chunk.mjs.map delete mode 100644 js/gl-BD_mbyIb.chunk.mjs.map.license delete mode 100644 js/gu-D1wZBUDH.chunk.mjs delete mode 100644 js/gu-D1wZBUDH.chunk.mjs.license delete mode 100644 js/gu-D1wZBUDH.chunk.mjs.map delete mode 100644 js/gu-D1wZBUDH.chunk.mjs.map.license delete mode 100644 js/he-CH969S6V.chunk.mjs delete mode 100644 js/he-CH969S6V.chunk.mjs.license delete mode 100644 js/he-CH969S6V.chunk.mjs.map delete mode 100644 js/he-CH969S6V.chunk.mjs.map.license delete mode 100644 js/hi-BfRt-B7_.chunk.mjs delete mode 100644 js/hi-BfRt-B7_.chunk.mjs.license delete mode 100644 js/hi-BfRt-B7_.chunk.mjs.map delete mode 100644 js/hi-BfRt-B7_.chunk.mjs.map.license delete mode 100644 js/hr-BJLmGCs4.chunk.mjs delete mode 100644 js/hr-BJLmGCs4.chunk.mjs.license delete mode 100644 js/hr-BJLmGCs4.chunk.mjs.map delete mode 100644 js/hr-BJLmGCs4.chunk.mjs.map.license delete mode 100644 js/ht-CoV6SUXM.chunk.mjs delete mode 100644 js/ht-CoV6SUXM.chunk.mjs.license delete mode 100644 js/ht-CoV6SUXM.chunk.mjs.map delete mode 100644 js/ht-CoV6SUXM.chunk.mjs.map.license delete mode 100644 js/hu-BfNr7Dqd.chunk.mjs delete mode 100644 js/hu-BfNr7Dqd.chunk.mjs.license delete mode 100644 js/hu-BfNr7Dqd.chunk.mjs.map delete mode 100644 js/hu-BfNr7Dqd.chunk.mjs.map.license delete mode 100644 js/hy-CFJ222Zq.chunk.mjs delete mode 100644 js/hy-CFJ222Zq.chunk.mjs.license delete mode 100644 js/hy-CFJ222Zq.chunk.mjs.map delete mode 100644 js/hy-CFJ222Zq.chunk.mjs.map.license delete mode 100644 js/id-Byrj38Rt.chunk.mjs delete mode 100644 js/id-Byrj38Rt.chunk.mjs.license delete mode 100644 js/id-Byrj38Rt.chunk.mjs.map delete mode 100644 js/id-Byrj38Rt.chunk.mjs.map.license delete mode 100644 js/index-Cr1DLTt7.chunk.mjs delete mode 100644 js/index-Cr1DLTt7.chunk.mjs.license delete mode 100644 js/index-Cr1DLTt7.chunk.mjs.map delete mode 100644 js/index-Cr1DLTt7.chunk.mjs.map.license delete mode 100644 js/index-EXeiCK0S.chunk.mjs delete mode 100644 js/index-EXeiCK0S.chunk.mjs.license delete mode 100644 js/index-EXeiCK0S.chunk.mjs.map delete mode 100644 js/index-EXeiCK0S.chunk.mjs.map.license delete mode 100644 js/index-lRX2_WBG.chunk.mjs delete mode 100644 js/index-lRX2_WBG.chunk.mjs.license delete mode 100644 js/index-lRX2_WBG.chunk.mjs.map delete mode 100644 js/index-lRX2_WBG.chunk.mjs.map.license delete mode 100644 js/is-xiXKWsCz.chunk.mjs delete mode 100644 js/is-xiXKWsCz.chunk.mjs.license delete mode 100644 js/is-xiXKWsCz.chunk.mjs.map delete mode 100644 js/is-xiXKWsCz.chunk.mjs.map.license delete mode 100644 js/isSameWeek-DEBA-plP.chunk.mjs delete mode 100644 js/isSameWeek-DEBA-plP.chunk.mjs.license delete mode 100644 js/isSameWeek-DEBA-plP.chunk.mjs.map delete mode 100644 js/isSameWeek-DEBA-plP.chunk.mjs.map.license delete mode 100644 js/it-1lDB860f.chunk.mjs delete mode 100644 js/it-1lDB860f.chunk.mjs.license delete mode 100644 js/it-1lDB860f.chunk.mjs.map delete mode 100644 js/it-1lDB860f.chunk.mjs.map.license delete mode 100644 js/it-CH-DMeSnLKK.chunk.mjs delete mode 100644 js/it-CH-DMeSnLKK.chunk.mjs.license delete mode 100644 js/it-CH-DMeSnLKK.chunk.mjs.map delete mode 100644 js/it-CH-DMeSnLKK.chunk.mjs.map.license delete mode 100644 js/ja-DDVadPGV.chunk.mjs delete mode 100644 js/ja-DDVadPGV.chunk.mjs.license delete mode 100644 js/ja-DDVadPGV.chunk.mjs.map delete mode 100644 js/ja-DDVadPGV.chunk.mjs.map.license delete mode 100644 js/ja-Hira-CBFYcIfb.chunk.mjs delete mode 100644 js/ja-Hira-CBFYcIfb.chunk.mjs.license delete mode 100644 js/ja-Hira-CBFYcIfb.chunk.mjs.map delete mode 100644 js/ja-Hira-CBFYcIfb.chunk.mjs.map.license delete mode 100644 js/ka-BsBNI3tM.chunk.mjs delete mode 100644 js/ka-BsBNI3tM.chunk.mjs.license delete mode 100644 js/ka-BsBNI3tM.chunk.mjs.map delete mode 100644 js/ka-BsBNI3tM.chunk.mjs.map.license delete mode 100644 js/kk-H4kPQUCw.chunk.mjs delete mode 100644 js/kk-H4kPQUCw.chunk.mjs.license delete mode 100644 js/kk-H4kPQUCw.chunk.mjs.map delete mode 100644 js/kk-H4kPQUCw.chunk.mjs.map.license delete mode 100644 js/km-BQNCgOZ7.chunk.mjs delete mode 100644 js/km-BQNCgOZ7.chunk.mjs.license delete mode 100644 js/km-BQNCgOZ7.chunk.mjs.map delete mode 100644 js/km-BQNCgOZ7.chunk.mjs.map.license delete mode 100644 js/kn-CGXBY6oC.chunk.mjs delete mode 100644 js/kn-CGXBY6oC.chunk.mjs.license delete mode 100644 js/kn-CGXBY6oC.chunk.mjs.map delete mode 100644 js/kn-CGXBY6oC.chunk.mjs.map.license delete mode 100644 js/ko-Cn4IS0S7.chunk.mjs delete mode 100644 js/ko-Cn4IS0S7.chunk.mjs.license delete mode 100644 js/ko-Cn4IS0S7.chunk.mjs.map delete mode 100644 js/ko-Cn4IS0S7.chunk.mjs.map.license delete mode 100644 js/lb-BXg4mBhi.chunk.mjs delete mode 100644 js/lb-BXg4mBhi.chunk.mjs.license delete mode 100644 js/lb-BXg4mBhi.chunk.mjs.map delete mode 100644 js/lb-BXg4mBhi.chunk.mjs.map.license delete mode 100644 js/lt-NrLxstB2.chunk.mjs delete mode 100644 js/lt-NrLxstB2.chunk.mjs.license delete mode 100644 js/lt-NrLxstB2.chunk.mjs.map delete mode 100644 js/lt-NrLxstB2.chunk.mjs.map.license delete mode 100644 js/lv-B6BjWv6z.chunk.mjs delete mode 100644 js/lv-B6BjWv6z.chunk.mjs.license delete mode 100644 js/lv-B6BjWv6z.chunk.mjs.map delete mode 100644 js/lv-B6BjWv6z.chunk.mjs.map.license delete mode 100644 js/match-B44lKaHG.chunk.mjs delete mode 100644 js/match-B44lKaHG.chunk.mjs.license delete mode 100644 js/match-B44lKaHG.chunk.mjs.map delete mode 100644 js/match-B44lKaHG.chunk.mjs.map.license delete mode 100644 js/match-CZb9Ltqz.chunk.mjs delete mode 100644 js/match-CZb9Ltqz.chunk.mjs.license delete mode 100644 js/match-CZb9Ltqz.chunk.mjs.map delete mode 100644 js/match-CZb9Ltqz.chunk.mjs.map.license delete mode 100644 js/match-K9yIY7KA.chunk.mjs delete mode 100644 js/match-K9yIY7KA.chunk.mjs.license delete mode 100644 js/match-K9yIY7KA.chunk.mjs.map delete mode 100644 js/match-K9yIY7KA.chunk.mjs.map.license delete mode 100644 js/mk-DaIPdRxE.chunk.mjs delete mode 100644 js/mk-DaIPdRxE.chunk.mjs.license delete mode 100644 js/mk-DaIPdRxE.chunk.mjs.map delete mode 100644 js/mk-DaIPdRxE.chunk.mjs.map.license delete mode 100644 js/mn-kd0DXDK4.chunk.mjs delete mode 100644 js/mn-kd0DXDK4.chunk.mjs.license delete mode 100644 js/mn-kd0DXDK4.chunk.mjs.map delete mode 100644 js/mn-kd0DXDK4.chunk.mjs.map.license delete mode 100644 js/ms-C6AG4XSR.chunk.mjs delete mode 100644 js/ms-C6AG4XSR.chunk.mjs.license delete mode 100644 js/ms-C6AG4XSR.chunk.mjs.map delete mode 100644 js/ms-C6AG4XSR.chunk.mjs.map.license delete mode 100644 js/mt-C_ohrf8N.chunk.mjs delete mode 100644 js/mt-C_ohrf8N.chunk.mjs.license delete mode 100644 js/mt-C_ohrf8N.chunk.mjs.map delete mode 100644 js/mt-C_ohrf8N.chunk.mjs.map.license delete mode 100644 js/nb-BSRw0cop.chunk.mjs delete mode 100644 js/nb-BSRw0cop.chunk.mjs.license delete mode 100644 js/nb-BSRw0cop.chunk.mjs.map delete mode 100644 js/nb-BSRw0cop.chunk.mjs.map.license delete mode 100644 js/nl-BE-DYijfpy0.chunk.mjs delete mode 100644 js/nl-BE-DYijfpy0.chunk.mjs.license delete mode 100644 js/nl-BE-DYijfpy0.chunk.mjs.map delete mode 100644 js/nl-BE-DYijfpy0.chunk.mjs.map.license delete mode 100644 js/nl-z8V_F-ed.chunk.mjs delete mode 100644 js/nl-z8V_F-ed.chunk.mjs.license delete mode 100644 js/nl-z8V_F-ed.chunk.mjs.map delete mode 100644 js/nl-z8V_F-ed.chunk.mjs.map.license delete mode 100644 js/nn-CF2CjTNY.chunk.mjs delete mode 100644 js/nn-CF2CjTNY.chunk.mjs.license delete mode 100644 js/nn-CF2CjTNY.chunk.mjs.map delete mode 100644 js/nn-CF2CjTNY.chunk.mjs.map.license delete mode 100644 js/oc-CuM7-fZ1.chunk.mjs delete mode 100644 js/oc-CuM7-fZ1.chunk.mjs.license delete mode 100644 js/oc-CuM7-fZ1.chunk.mjs.map delete mode 100644 js/oc-CuM7-fZ1.chunk.mjs.map.license delete mode 100644 js/pl-CQwABrHO.chunk.mjs delete mode 100644 js/pl-CQwABrHO.chunk.mjs.license delete mode 100644 js/pl-CQwABrHO.chunk.mjs.map delete mode 100644 js/pl-CQwABrHO.chunk.mjs.map.license delete mode 100644 js/pt-BR-CixOOzns.chunk.mjs delete mode 100644 js/pt-BR-CixOOzns.chunk.mjs.license delete mode 100644 js/pt-BR-CixOOzns.chunk.mjs.map delete mode 100644 js/pt-BR-CixOOzns.chunk.mjs.map.license delete mode 100644 js/pt-MwQTbL55.chunk.mjs delete mode 100644 js/pt-MwQTbL55.chunk.mjs.license delete mode 100644 js/pt-MwQTbL55.chunk.mjs.map delete mode 100644 js/pt-MwQTbL55.chunk.mjs.map.license delete mode 100644 js/ro-BSltOhDi.chunk.mjs delete mode 100644 js/ro-BSltOhDi.chunk.mjs.license delete mode 100644 js/ro-BSltOhDi.chunk.mjs.map delete mode 100644 js/ro-BSltOhDi.chunk.mjs.map.license delete mode 100644 js/ru-BjBf4KtU.chunk.mjs delete mode 100644 js/ru-BjBf4KtU.chunk.mjs.license delete mode 100644 js/ru-BjBf4KtU.chunk.mjs.map delete mode 100644 js/ru-BjBf4KtU.chunk.mjs.map.license delete mode 100644 js/se-CT3apg_B.chunk.mjs delete mode 100644 js/se-CT3apg_B.chunk.mjs.license delete mode 100644 js/se-CT3apg_B.chunk.mjs.map delete mode 100644 js/se-CT3apg_B.chunk.mjs.map.license delete mode 100644 js/sk-C_9JTQ9w.chunk.mjs delete mode 100644 js/sk-C_9JTQ9w.chunk.mjs.license delete mode 100644 js/sk-C_9JTQ9w.chunk.mjs.map delete mode 100644 js/sk-C_9JTQ9w.chunk.mjs.map.license delete mode 100644 js/sl-W4l0nN_A.chunk.mjs delete mode 100644 js/sl-W4l0nN_A.chunk.mjs.license delete mode 100644 js/sl-W4l0nN_A.chunk.mjs.map delete mode 100644 js/sl-W4l0nN_A.chunk.mjs.map.license delete mode 100644 js/sq-D5RxwT1j.chunk.mjs delete mode 100644 js/sq-D5RxwT1j.chunk.mjs.license delete mode 100644 js/sq-D5RxwT1j.chunk.mjs.map delete mode 100644 js/sq-D5RxwT1j.chunk.mjs.map.license delete mode 100644 js/sr-Czcs-frD.chunk.mjs delete mode 100644 js/sr-Czcs-frD.chunk.mjs.license delete mode 100644 js/sr-Czcs-frD.chunk.mjs.map delete mode 100644 js/sr-Czcs-frD.chunk.mjs.map.license delete mode 100644 js/sr-Latn-DTQLxI32.chunk.mjs delete mode 100644 js/sr-Latn-DTQLxI32.chunk.mjs.license delete mode 100644 js/sr-Latn-DTQLxI32.chunk.mjs.map delete mode 100644 js/sr-Latn-DTQLxI32.chunk.mjs.map.license delete mode 100644 js/sv-CxxyFTxX.chunk.mjs delete mode 100644 js/sv-CxxyFTxX.chunk.mjs.license delete mode 100644 js/sv-CxxyFTxX.chunk.mjs.map delete mode 100644 js/sv-CxxyFTxX.chunk.mjs.map.license delete mode 100644 js/ta-C_fkvbcE.chunk.mjs delete mode 100644 js/ta-C_fkvbcE.chunk.mjs.license delete mode 100644 js/ta-C_fkvbcE.chunk.mjs.map delete mode 100644 js/ta-C_fkvbcE.chunk.mjs.map.license delete mode 100644 js/te-C-5V_jdg.chunk.mjs delete mode 100644 js/te-C-5V_jdg.chunk.mjs.license delete mode 100644 js/te-C-5V_jdg.chunk.mjs.map delete mode 100644 js/te-C-5V_jdg.chunk.mjs.map.license delete mode 100644 js/th-CEsw-oEn.chunk.mjs delete mode 100644 js/th-CEsw-oEn.chunk.mjs.license delete mode 100644 js/th-CEsw-oEn.chunk.mjs.map delete mode 100644 js/th-CEsw-oEn.chunk.mjs.map.license delete mode 100644 js/tr-vD4HarN5.chunk.mjs delete mode 100644 js/tr-vD4HarN5.chunk.mjs.license delete mode 100644 js/tr-vD4HarN5.chunk.mjs.map delete mode 100644 js/tr-vD4HarN5.chunk.mjs.map.license delete mode 100644 js/ug-C8_7p_Py.chunk.mjs delete mode 100644 js/ug-C8_7p_Py.chunk.mjs.license delete mode 100644 js/ug-C8_7p_Py.chunk.mjs.map delete mode 100644 js/ug-C8_7p_Py.chunk.mjs.map.license delete mode 100644 js/uk-BbmSgi2Q.chunk.mjs delete mode 100644 js/uk-BbmSgi2Q.chunk.mjs.license delete mode 100644 js/uk-BbmSgi2Q.chunk.mjs.map delete mode 100644 js/uk-BbmSgi2Q.chunk.mjs.map.license delete mode 100644 js/user_migration-personalSettings.mjs delete mode 100644 js/user_migration-personalSettings.mjs.license delete mode 100644 js/user_migration-personalSettings.mjs.map delete mode 100644 js/user_migration-personalSettings.mjs.map.license delete mode 100644 js/uz-9Krk28hK.chunk.mjs delete mode 100644 js/uz-9Krk28hK.chunk.mjs.license delete mode 100644 js/uz-9Krk28hK.chunk.mjs.map delete mode 100644 js/uz-9Krk28hK.chunk.mjs.map.license delete mode 100644 js/uz-Cyrl-Gt64X26g.chunk.mjs delete mode 100644 js/uz-Cyrl-Gt64X26g.chunk.mjs.license delete mode 100644 js/uz-Cyrl-Gt64X26g.chunk.mjs.map delete mode 100644 js/uz-Cyrl-Gt64X26g.chunk.mjs.map.license delete mode 100644 js/vendor.LICENSE.txt delete mode 100644 js/vi-88dHAH7e.chunk.mjs delete mode 100644 js/vi-88dHAH7e.chunk.mjs.license delete mode 100644 js/vi-88dHAH7e.chunk.mjs.map delete mode 100644 js/vi-88dHAH7e.chunk.mjs.map.license delete mode 100644 js/zh-CN-BteBGpaG.chunk.mjs delete mode 100644 js/zh-CN-BteBGpaG.chunk.mjs.license delete mode 100644 js/zh-CN-BteBGpaG.chunk.mjs.map delete mode 100644 js/zh-CN-BteBGpaG.chunk.mjs.map.license delete mode 100644 js/zh-HK-ByNE7PZw.chunk.mjs delete mode 100644 js/zh-HK-ByNE7PZw.chunk.mjs.license delete mode 100644 js/zh-HK-ByNE7PZw.chunk.mjs.map delete mode 100644 js/zh-HK-ByNE7PZw.chunk.mjs.map.license delete mode 100644 js/zh-TW-Cg6Yhtou.chunk.mjs delete mode 100644 js/zh-TW-Cg6Yhtou.chunk.mjs.license delete mode 100644 js/zh-TW-Cg6Yhtou.chunk.mjs.map delete mode 100644 js/zh-TW-Cg6Yhtou.chunk.mjs.map.license diff --git a/.github/workflows/command-compile.yml b/.github/workflows/command-compile.yml deleted file mode 100644 index 6ff8ec8c..00000000 --- a/.github/workflows/command-compile.yml +++ /dev/null @@ -1,232 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization -# -# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: MIT - -name: Compile Command -on: - issue_comment: # zizmor: ignore[dangerous-triggers] - types: [created] - -permissions: - contents: read - -jobs: - init: - runs-on: ubuntu-latest-low - - # On pull requests and if the comment starts with `/compile` - if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/compile') - - outputs: - git_path: ${{ steps.git-path.outputs.path }} - arg1: ${{ steps.command.outputs.arg1 }} - arg2: ${{ steps.command.outputs.arg2 }} - head_ref: ${{ steps.comment-branch.outputs.head_ref }} - base_ref: ${{ steps.comment-branch.outputs.base_ref }} - - steps: - - name: Get repository from pull request comment - uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 - id: get-repository - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - const pull = await github.rest.pulls.get({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: context.issue.number - }); - - const repositoryName = pull.data.head?.repo?.full_name - console.log(repositoryName) - return repositoryName - - - name: Disabled on forks - if: ${{ fromJSON(steps.get-repository.outputs.result) != github.repository }} - run: | - echo 'Can not execute /compile on forks' - exit 1 - - - name: Check actor permission - uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0 - with: - require: write - - - name: Add reaction on start - uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0 - with: - token: ${{ secrets.COMMAND_BOT_PAT }} - repository: ${{ github.event.repository.full_name }} - comment-id: ${{ github.event.comment.id }} - reactions: '+1' - - - name: Parse command - uses: skjnldsv/parse-command-comment@5c955203c52424151e6d0e58fb9de8a9f6a605a1 # v3.1 - id: command - - # Init path depending on which command is run - - name: Init path - id: git-path - run: | - if ${{ startsWith(steps.command.outputs.arg1, '/') }}; then - echo "path=${{steps.command.outputs.arg1}}" >> $GITHUB_OUTPUT - else - echo "path=${{steps.command.outputs.arg2}}" >> $GITHUB_OUTPUT - fi - - - name: Init branch - uses: xt0rted/pull-request-comment-branch@e8b8daa837e8ea7331c0003c9c316a64c6d8b0b1 # v3.0.0 - id: comment-branch - - - name: Add reaction on failure - uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0 - if: failure() - with: - token: ${{ secrets.COMMAND_BOT_PAT }} - repository: ${{ github.event.repository.full_name }} - comment-id: ${{ github.event.comment.id }} - reactions: '-1' - - process: - runs-on: ubuntu-latest - needs: init - - steps: - - name: Restore cached git repository - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: .git - key: git-repo - - - name: Checkout ${{ needs.init.outputs.head_ref }} - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - token: ${{ secrets.COMMAND_BOT_PAT }} - fetch-depth: 0 - ref: ${{ needs.init.outputs.head_ref }} - - - name: Setup git - run: | - git config --local user.email 'nextcloud-command@users.noreply.github.com' - git config --local user.name 'nextcloud-command' - - - name: Read package.json node and npm engines version - uses: nextcloud-libraries/parse-package-engines-action@39fcc545a815c353dd0a3fd8fd2ef6e59fd02b92 # v0.2.0 - id: package-engines-versions - - - name: Set up node ${{ steps.package-engines-versions.outputs.node-version }} - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0 - with: - node-version: ${{ steps.package-engines-versions.outputs.node-version }} - cache: npm - - - name: Set up npm ${{ steps.package-engines-versions.outputs.package-manager-version }} - run: npm i -g 'npm@${{ steps.package-engines-versions.outputs.package-manager-version }}' - - - name: Rebase to ${{ needs.init.outputs.base_ref }} - if: ${{ contains(needs.init.outputs.arg1, 'rebase') }} - env: - BASE_REF: ${{ needs.init.outputs.base_ref }} - run: | - git fetch origin "${BASE_REF}:${BASE_REF}" - - # Start the rebase - git rebase "origin/${BASE_REF}" || { - # Handle rebase conflicts in a loop - while [ -d .git/rebase-merge ] || [ -d .git/rebase-apply ]; do - echo "Handling rebase conflict..." - - # Remove and checkout /dist and /js folders from the base branch - if [ -d "dist" ]; then - rm -rf dist - git checkout "origin/${BASE_REF}" -- dist/ 2>/dev/null || echo "No dist folder in base branch" - fi - if [ -d "js" ]; then - rm -rf js - git checkout "origin/${BASE_REF}" -- js/ 2>/dev/null || echo "No js folder in base branch" - fi - - # Stage all changes - git add . - - # Check if there are any changes after resolving conflicts - if git diff --cached --quiet; then - echo "No changes after conflict resolution, skipping commit" - git rebase --skip - else - echo "Changes found, continuing rebase without editing commit message" - git -c core.editor=true rebase --continue - fi - - # Break if rebase is complete - if [ ! -d .git/rebase-merge ] && [ ! -d .git/rebase-apply ]; then - break - fi - done - } - - - name: Install dependencies & build - env: - CYPRESS_INSTALL_BINARY: 0 - PUPPETEER_SKIP_DOWNLOAD: true - run: | - npm ci - npm run build --if-present - - - name: Commit default - if: ${{ !contains(needs.init.outputs.arg1, 'fixup') && !contains(needs.init.outputs.arg1, 'amend') }} - env: - GIT_PATH: ${{ needs.init.outputs.git_path }} - run: | - git add "${GITHUB_WORKSPACE}${GIT_PATH}" - git commit --signoff -m 'chore(assets): Recompile assets' - - - name: Commit fixup - if: ${{ contains(needs.init.outputs.arg1, 'fixup') }} - env: - GIT_PATH: ${{ needs.init.outputs.git_path }} - run: | - git add "${GITHUB_WORKSPACE}${GIT_PATH}" - git commit --fixup=HEAD --signoff - - - name: Commit amend - if: ${{ contains(needs.init.outputs.arg1, 'amend') }} - env: - GIT_PATH: ${{ needs.init.outputs.git_path }} - run: | - git add "${GITHUB_WORKSPACE}${GIT_PATH}" - git commit --amend --no-edit --signoff - # Remove any [skip ci] from the amended commit - git commit --amend -m "$(git log -1 --format='%B' | sed '/\[skip ci\]/d')" - - - name: Push normally - if: ${{ !contains(needs.init.outputs.arg1, 'rebase') && !contains(needs.init.outputs.arg1, 'amend') }} - env: - HEAD_REF: ${{ needs.init.outputs.head_ref }} - BOT_TOKEN: ${{ secrets.COMMAND_BOT_PAT }} # zizmor: ignore[secrets-outside-env] - run: | - git remote set-url origin "https://x-access-token:${BOT_TOKEN}@github.com/${{ github.repository }}.git" - git push origin "$HEAD_REF" - - - name: Force push - if: ${{ contains(needs.init.outputs.arg1, 'rebase') || contains(needs.init.outputs.arg1, 'amend') }} - env: - HEAD_REF: ${{ needs.init.outputs.head_ref }} - BOT_TOKEN: ${{ secrets.COMMAND_BOT_PAT }} # zizmor: ignore[secrets-outside-env] - run: | - git remote set-url origin "https://x-access-token:${BOT_TOKEN}@github.com/${{ github.repository }}.git" - git push --force-with-lease origin "$HEAD_REF" - - - name: Add reaction on failure - uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0 - if: failure() - with: - token: ${{ secrets.COMMAND_BOT_PAT }} - repository: ${{ github.event.repository.full_name }} - comment-id: ${{ github.event.comment.id }} - reactions: '-1' diff --git a/.gitignore b/.gitignore index 82202540..7bd5a3c3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,12 @@ # SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors # SPDX-License-Identifier: AGPL-3.0-or-later -.idea *.iml -vendor/ +.idea +.phpunit.result.cache +/.php-cs-fixer.cache +/.php_cs.cache /build/ +/css/ +/js/ node_modules/ -/.php_cs.cache -js/*hot-update.* -/.php-cs-fixer.cache -.phpunit.result.cache +vendor/ diff --git a/REUSE.toml b/REUSE.toml index e0372263..f80dc4ab 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -5,12 +5,6 @@ SPDX-PackageName = "user_migration" SPDX-PackageSupplier = "Nextcloud " SPDX-PackageDownloadLocation = "https://github.com/nextcloud/user_migration" -[[annotations]] -path = ["js/**.LICENSE.txt"] -precedence = "aggregate" -SPDX-FileCopyrightText = "none" -SPDX-License-Identifier = "CC0-1.0" - [[annotations]] path = ["l10n/**.js", "l10n/**.json"] precedence = "aggregate" diff --git a/css/be-tarask-fDfbCxDn.chunk.css b/css/be-tarask-fDfbCxDn.chunk.css deleted file mode 100644 index 091b7476..00000000 --- a/css/be-tarask-fDfbCxDn.chunk.css +++ /dev/null @@ -1,4 +0,0 @@ -.material-design-icon[data-v-5ca1e30f]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.checkbox-content[data-v-5ca1e30f]{display:flex;align-items:center;flex-direction:row;gap:var(--default-grid-baseline);-webkit-user-select:none;user-select:none;min-height:var(--default-clickable-area);border-radius:var(--checkbox-radio-switch--border-radius);padding:var(--default-grid-baseline) calc((var(--default-clickable-area) - var(--icon-height)) / 2);width:100%;max-width:fit-content}.checkbox-content__wrapper[data-v-5ca1e30f]{flex:1 0 0;max-width:100%}.checkbox-content__text[data-v-5ca1e30f]:empty{display:none}.checkbox-content-checkbox:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-5ca1e30f],.checkbox-content-radio:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-5ca1e30f],.checkbox-content-switch:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-5ca1e30f]{margin-block:calc((var(--default-clickable-area) - 2 * var(--default-grid-baseline) - var(--icon-height)) / 2) auto;line-height:0}.checkbox-content-checkbox:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-5ca1e30f],.checkbox-content-radio:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-5ca1e30f],.checkbox-content-switch:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-5ca1e30f]{display:flex;align-items:center;margin-block-end:0;align-self:start}.checkbox-content__icon[data-v-5ca1e30f]>*{width:var(--icon-size);height:var(--icon-height);color:var(--color-primary-element)}.checkbox-content__description[data-v-5ca1e30f]{display:block;color:var(--color-text-maxcontrast);font-weight:var(--font-weight-default, normal)}.checkbox-content--button-variant .checkbox-content__icon[data-v-5ca1e30f]:not(.checkbox-content__icon--checked)>*{color:var(--color-primary-element)}.checkbox-content--button-variant .checkbox-content__icon--checked[data-v-5ca1e30f]>*{color:var(--color-primary-element-text)}.checkbox-content--has-text[data-v-5ca1e30f]{padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.checkbox-content[data-v-5ca1e30f],.checkbox-content[data-v-5ca1e30f] *{cursor:pointer;flex-shrink:0}.material-design-icon[data-v-81045d2a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.checkbox-radio-switch[data-v-81045d2a]{--icon-size: var(--f99d0228);--icon-height: var(--v69c82152);--checkbox-radio-switch--border-radius: var(--border-radius-element);--checkbox-radio-switch--border-radius-outer: calc(var(--checkbox-radio-switch--border-radius) + 2px);display:flex;align-items:center;color:var(--color-main-text);background-color:transparent;font-size:var(--default-font-size);font-weight:var(--font-weight-element, normal);line-height:var(--default-line-height);padding:0;position:relative}.checkbox-radio-switch__input[data-v-81045d2a]{position:absolute;z-index:-1;opacity:0!important;width:var(--icon-size);height:var(--icon-size)}.checkbox-radio-switch__input:focus-visible+.checkbox-radio-switch__content[data-v-81045d2a],.checkbox-radio-switch__input[data-v-81045d2a]:focus-visible{outline:2px solid var(--color-main-text);border-color:var(--color-main-background);outline-offset:-2px}.checkbox-radio-switch--disabled .checkbox-radio-switch__content[data-v-81045d2a]{opacity:.5}.checkbox-radio-switch--disabled .checkbox-radio-switch__content[data-v-81045d2a] .checkbox-radio-switch__icon>*{color:var(--color-main-text)}.checkbox-radio-switch--disabled .checkbox-radio-switch__content.checkbox-content[data-v-81045d2a],.checkbox-radio-switch--disabled .checkbox-radio-switch__content.checkbox-content[data-v-81045d2a] *:not(a){cursor:default!important}.checkbox-radio-switch:not(.checkbox-radio-switch--disabled,.checkbox-radio-switch--checked):focus-within .checkbox-radio-switch__content[data-v-81045d2a],.checkbox-radio-switch:not(.checkbox-radio-switch--disabled,.checkbox-radio-switch--checked) .checkbox-radio-switch__content[data-v-81045d2a]:hover{background-color:var(--color-background-hover)}.checkbox-radio-switch--checked:not(.checkbox-radio-switch--disabled):focus-within .checkbox-radio-switch__content[data-v-81045d2a],.checkbox-radio-switch--checked:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__content[data-v-81045d2a]:hover{background-color:var(--color-primary-element-hover)}.checkbox-radio-switch--checked:not(.checkbox-radio-switch--button-variant):not(.checkbox-radio-switch--disabled):focus-within .checkbox-radio-switch__content[data-v-81045d2a],.checkbox-radio-switch--checked:not(.checkbox-radio-switch--button-variant):not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__content[data-v-81045d2a]:hover{background-color:var(--color-primary-element-light-hover)}.checkbox-radio-switch-switch[data-v-81045d2a]:not(.checkbox-radio-switch--checked) .checkbox-radio-switch__icon>*{color:var(--color-text-maxcontrast)}.checkbox-radio-switch-switch.checkbox-radio-switch--disabled.checkbox-radio-switch--checked[data-v-81045d2a] .checkbox-radio-switch__icon>*{color:var(--color-primary-element-light)}.checkbox-radio-switch--button-variant.checkbox-radio-switch[data-v-81045d2a]{background-color:var(--color-main-background);border:2px solid var(--color-border-maxcontrast);overflow:hidden}.checkbox-radio-switch--button-variant.checkbox-radio-switch--checked[data-v-81045d2a]{font-weight:var(--font-weight-element, bold)}.checkbox-radio-switch--button-variant.checkbox-radio-switch--checked .checkbox-radio-switch__content[data-v-81045d2a]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.checkbox-radio-switch--button-variant[data-v-81045d2a] .checkbox-radio-switch__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.checkbox-radio-switch--button-variant[data-v-81045d2a]:not(.checkbox-radio-switch--checked) .checkbox-radio-switch__icon>*{color:var(--color-main-text)}.checkbox-radio-switch--button-variant[data-v-81045d2a] .checkbox-radio-switch__icon:empty{display:none}.checkbox-radio-switch--button-variant[data-v-81045d2a]:not(.checkbox-radio-switch--button-variant-v-grouped):not(.checkbox-radio-switch--button-variant-h-grouped),.checkbox-radio-switch--button-variant .checkbox-radio-switch__content[data-v-81045d2a]{border-radius:var(--checkbox-radio-switch--border-radius)}.checkbox-radio-switch--button-variant-v-grouped .checkbox-radio-switch__content[data-v-81045d2a]{flex-basis:100%;max-width:unset}.checkbox-radio-switch--button-variant-v-grouped[data-v-81045d2a]:first-of-type{border-start-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-start-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-v-grouped[data-v-81045d2a]:last-of-type{border-end-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-v-grouped[data-v-81045d2a]:not(:last-of-type){border-bottom:0!important}.checkbox-radio-switch--button-variant-v-grouped:not(:last-of-type) .checkbox-radio-switch__content[data-v-81045d2a]{margin-bottom:2px}.checkbox-radio-switch--button-variant-v-grouped[data-v-81045d2a]:not(:first-of-type){border-top:0!important}.checkbox-radio-switch--button-variant-h-grouped[data-v-81045d2a]:first-of-type{border-start-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-start-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-h-grouped[data-v-81045d2a]:last-of-type{border-start-end-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-h-grouped[data-v-81045d2a]:not(:last-of-type){border-inline-end:0!important}.checkbox-radio-switch--button-variant-h-grouped:not(:last-of-type) .checkbox-radio-switch__content[data-v-81045d2a]{margin-inline-end:2px}.checkbox-radio-switch--button-variant-h-grouped[data-v-81045d2a]:not(:first-of-type){border-inline-start:0!important}.checkbox-radio-switch--button-variant-h-grouped[data-v-81045d2a] .checkbox-radio-switch__text{text-align:center;display:flex;align-items:center}.checkbox-radio-switch--button-variant-h-grouped .checkbox-radio-switch__content[data-v-81045d2a]{flex-direction:column;justify-content:center;width:100%;margin:0;gap:0}._material-design-icon_GIyb6{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._iconToggleSwitch_2xTzi{color:var(--v6bd152af);transition:color var(--animation-quick) ease}._iconToggleSwitch_2xTzi svg{height:auto!important}._iconToggleSwitch_2xTzi circle{cx:var(--v16fd8ca9);transition:cx var(--animation-quick) ease}.material-design-icon[data-v-8609a4c1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.empty-content[data-v-8609a4c1]{display:flex;align-items:center;flex-direction:column;justify-content:center;flex-grow:1;padding:var(--default-grid-baseline)}.modal-wrapper .empty-content[data-v-8609a4c1]{margin-top:5vh;margin-bottom:5vh}.empty-content__icon[data-v-8609a4c1]{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto 15px;opacity:.4;background-repeat:no-repeat;background-position:center;background-size:64px}.empty-content__icon[data-v-8609a4c1] svg{width:64px!important;height:64px!important;max-width:64px!important;max-height:64px!important}.empty-content__name[data-v-8609a4c1]{margin-bottom:10px;text-align:center;font-weight:var(--font-weight-heading, bold);font-size:20px;line-height:30px}.empty-content__description[data-v-8609a4c1]{color:var(--color-text-maxcontrast);text-align:center;text-wrap-style:balance}.empty-content__action[data-v-8609a4c1]{margin-top:8px}.modal-wrapper .empty-content__action[data-v-8609a4c1]{margin-top:20px;display:flex}.material-design-icon[data-v-7720ab60]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}button[data-v-7720ab60]:not(.button-vue),input[data-v-7720ab60]:not([type=range]),textarea[data-v-7720ab60]{margin:0;padding:7px 6px;cursor:text;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius-element);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-7720ab60]:not(.button-vue):not(:disabled):not(.primary):hover,button[data-v-7720ab60]:not(.button-vue):not(:disabled):not(.primary):focus,button:not(.button-vue):not(:disabled):not(.primary).active[data-v-7720ab60],input[data-v-7720ab60]:not([type=range]):not(:disabled):not(.primary):hover,input[data-v-7720ab60]:not([type=range]):not(:disabled):not(.primary):focus,input:not([type=range]):not(:disabled):not(.primary).active[data-v-7720ab60],textarea[data-v-7720ab60]:not(:disabled):not(.primary):hover,textarea[data-v-7720ab60]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-7720ab60]{border-color:var(--color-primary-element);outline:none}button[data-v-7720ab60]:not(.button-vue):not(:disabled):not(.primary):active,input[data-v-7720ab60]:not([type=range]):not(:disabled):not(.primary):active,textarea[data-v-7720ab60]:not(:disabled):not(.primary):active{color:var(--color-main-text);outline:none;background-color:var(--color-main-background)}button[data-v-7720ab60]:not(.button-vue):disabled,input[data-v-7720ab60]:not([type=range]):disabled,textarea[data-v-7720ab60]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-7720ab60]:not(.button-vue):required,input[data-v-7720ab60]:not([type=range]):required,textarea[data-v-7720ab60]:required{box-shadow:none}button[data-v-7720ab60]:not(.button-vue):invalid,input[data-v-7720ab60]:not([type=range]):invalid,textarea[data-v-7720ab60]:invalid{border-color:var(--color-border-error, var(--color-error));box-shadow:none!important}button:not(.button-vue).primary[data-v-7720ab60],input:not([type=range]).primary[data-v-7720ab60],textarea.primary[data-v-7720ab60]{cursor:pointer;color:var(--color-primary-element-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button:not(.button-vue).primary[data-v-7720ab60]:not(:disabled):hover,button:not(.button-vue).primary[data-v-7720ab60]:not(:disabled):focus,button:not(.button-vue).primary[data-v-7720ab60]:not(:disabled):active,input:not([type=range]).primary[data-v-7720ab60]:not(:disabled):hover,input:not([type=range]).primary[data-v-7720ab60]:not(:disabled):focus,input:not([type=range]).primary[data-v-7720ab60]:not(:disabled):active,textarea.primary[data-v-7720ab60]:not(:disabled):hover,textarea.primary[data-v-7720ab60]:not(:disabled):focus,textarea.primary[data-v-7720ab60]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button:not(.button-vue).primary[data-v-7720ab60]:not(:disabled):active,input:not([type=range]).primary[data-v-7720ab60]:not(:disabled):active,textarea.primary[data-v-7720ab60]:not(:disabled):active{color:var(--color-primary-element-text-dark)}button:not(.button-vue).primary[data-v-7720ab60]:disabled,input:not([type=range]).primary[data-v-7720ab60]:disabled,textarea.primary[data-v-7720ab60]:disabled{cursor:default;color:var(--color-primary-element-text-dark);background-color:var(--color-primary-element)}li.action[data-v-7720ab60]:hover,li.action.active[data-v-7720ab60]{border-radius:6px;padding:0}li.action[data-v-7720ab60]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-7720ab60]{pointer-events:none;opacity:.5}.action--disabled[data-v-7720ab60]:hover,.action--disabled[data-v-7720ab60]:focus{cursor:default;opacity:.5}.action--disabled[data-v-7720ab60] *{opacity:1!important}.action-input[data-v-7720ab60]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-default, normal)}.action-input__icon-wrapper[data-v-7720ab60]{display:flex;align-self:flex-start;margin-top:var(--default-grid-baseline);align-items:center;justify-content:center}.action-input__icon-wrapper[data-v-7720ab60] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-input__icon-wrapper[data-v-7720ab60] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-input--tight-label .action-input__icon-wrapper[data-v-7720ab60]{margin-top:0}.action-input>span[data-v-7720ab60]{cursor:pointer;white-space:nowrap}.action-input__icon[data-v-7720ab60]{min-width:0;min-height:0;padding:calc(var(--default-clickable-area) / 2) 0 calc(var(--default-clickable-area) / 2) var(--default-clickable-area);background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px}.action-input__form[data-v-7720ab60]{display:flex;align-items:center;flex:1 1 auto;margin:4px 0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.action-input__container[data-v-7720ab60]{position:relative;width:100%}.action-input__input-container[data-v-7720ab60]{display:flex}.action-input__input-container .colorpicker__trigger[data-v-7720ab60],.action-input__input-container .colorpicker__preview[data-v-7720ab60]{width:100%}.action-input__input-container .colorpicker__preview[data-v-7720ab60]{width:100%;height:36px;border-radius:var(--border-radius-element);border:2px solid var(--color-border-maxcontrast);box-shadow:none!important}.action-input__text-label[data-v-7720ab60]{padding:4px 0;display:block}.action-input__text-label--hidden[data-v-7720ab60]{position:absolute;inset-inline-start:0;width:1px;height:1px;overflow:hidden;z-index:-1;opacity:0}.action-input__datetimepicker[data-v-7720ab60]{width:100%}.action-input__datetimepicker[data-v-7720ab60] .mx-input{margin:0}.action-input__multi[data-v-7720ab60]{width:100%}li:last-child>.action-input[data-v-7720ab60]{padding-bottom:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}li:first-child>.action-input[data-v-7720ab60]:not(.action-input--visible-label){padding-top:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}.material-design-icon[data-v-20945aed]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}[data-theme-light][data-v-20945aed] .native-datetime-picker,[data-themes*=light][data-v-20945aed] .native-datetime-picker{color-scheme:light}[data-theme-dark][data-v-20945aed] .native-datetime-picker,[data-themes*=dark][data-v-20945aed] .native-datetime-picker{color-scheme:dark}@media(prefers-color-scheme:light){[data-theme-default][data-v-20945aed] .native-datetime-picker,[data-themes*=default][data-v-20945aed] .native-datetime-picker{color-scheme:light}}@media(prefers-color-scheme:dark){[data-theme-default][data-v-20945aed] .native-datetime-picker,[data-themes*=default][data-v-20945aed] .native-datetime-picker{color-scheme:dark}}.material-design-icon[data-v-feb04bef]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.input-field[data-v-feb04bef]{--input-border-color: var(--color-border-maxcontrast);--input-border-radius: var(--border-radius-element);--input-padding-start: var(--border-radius-element);--input-padding-end: var(--border-radius-element);position:relative;width:100%;margin-block-start:6px}.input-field--disabled[data-v-feb04bef]{opacity:.4;filter:saturate(.4)}.input-field--label-outside[data-v-feb04bef]{margin-block-start:0}.input-field--leading-icon[data-v-feb04bef]{--input-padding-start: calc(var(--default-clickable-area) - var(--default-grid-baseline))}.input-field--trailing-icon[data-v-feb04bef]{--input-padding-end: calc(var(--default-clickable-area) - var(--default-grid-baseline))}.input-field--pill[data-v-feb04bef]{--input-border-radius: var(--border-radius-pill)}.input-field__main-wrapper[data-v-feb04bef]{height:var(--default-clickable-area);padding:var(--border-width-input-focused, 2px);position:relative}.input-field__input[data-v-feb04bef]{--input-border-box-shadow-light: 0 -1px var(--input-border-color), 0 0 0 1px color-mix(in srgb, var(--input-border-color), 65% transparent);--input-border-box-shadow-dark: 0 1px var(--input-border-color), 0 0 0 1px color-mix(in srgb, var(--input-border-color), 65% transparent);--input-border-box-shadow: var(--input-border-box-shadow-light);border:none;border-radius:var(--border-radius-element);box-shadow:var(--input-border-box-shadow)}.input-field__input[data-v-feb04bef]:hover:not([disabled]){box-shadow:0 0 0 1px var(--input-border-color)}@media(prefers-color-scheme:dark){.input-field__input .input-field__input[data-v-feb04bef]{--input-border-box-shadow: var(--input-border-box-shadow-dark)}}[data-theme-dark] .input-field__input[data-v-feb04bef]{--input-border-box-shadow: var(--input-border-box-shadow-dark)}[data-theme-light] .input-field__input[data-v-feb04bef]{--input-border-box-shadow: var(--input-border-box-shadow-light)}.input-field--legacy .input-field__input[data-v-feb04bef]{box-shadow:0 0 0 1px var(--input-border-color)}.input-field--legacy .input-field__input[data-v-feb04bef]:hover:not([disabled]){box-shadow:0 0 0 2px var(--input-border-color)}.input-field__input[data-v-feb04bef]:focus-within:not([disabled]),.input-field__input[data-v-feb04bef]:active:not([disabled]){box-shadow:0 0 0 2px var(--input-border-color),0 0 0 4px var(--color-main-background)!important}.input-field__input[data-v-feb04bef]{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--input-border-radius);cursor:pointer;-webkit-appearance:textfield!important;-moz-appearance:textfield!important;appearance:textfield!important;font-size:var(--default-font-size);text-overflow:ellipsis;padding-block:0;padding-inline:var(--input-padding-start) var(--input-padding-end);height:100%!important;min-height:unset;width:100%}.input-field__input[data-v-feb04bef]::placeholder{color:var(--color-text-maxcontrast)}.input-field__input[data-v-feb04bef]::-webkit-search-cancel-button{display:none}.input-field__input[data-v-feb04bef]::-webkit-search-decoration,.input-field__input[data-v-feb04bef]::-webkit-search-results-button,.input-field__input[data-v-feb04bef]::-webkit-search-results-decoration,.input-field__input[data-v-feb04bef]::-ms-clear{display:none}.input-field__input[data-v-feb04bef]:active:not([disabled]),.input-field__input[data-v-feb04bef]:focus:not([disabled]){--input-border-color: var(--color-main-text)}.input-field__input:focus+.input-field__label[data-v-feb04bef],.input-field__input:hover:not(:placeholder-shown)+.input-field__label[data-v-feb04bef]{color:var(--color-main-text)}.input-field__input[data-v-feb04bef]:focus{cursor:text}.input-field__input[data-v-feb04bef]:disabled{cursor:default}.input-field__input[data-v-feb04bef]:focus-visible{box-shadow:unset!important}.input-field:not(.input-field--label-outside) .input-field__input[data-v-feb04bef]:not(:focus)::placeholder{opacity:0}.input-field__label[data-v-feb04bef]{--input-label-font-size: var(--default-font-size);font-size:var(--input-label-font-size);position:absolute;margin-inline:var(--input-padding-start) var(--input-padding-end);max-width:fit-content;inset-block-start:calc((var(--default-clickable-area) - 1lh) / 2);inset-inline:var(--border-width-input-focused, 2px);color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.input-field__input:focus+.input-field__label[data-v-feb04bef],.input-field__input:not(:placeholder-shown)+.input-field__label[data-v-feb04bef]{--input-label-font-size: 13px;line-height:1.5;inset-block-start:calc(-1.5 * var(--input-label-font-size) / 2);font-weight:var(--font-weight-element, 500);border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:var(--default-grid-baseline);margin-inline:calc(var(--input-padding-start) - var(--default-grid-baseline)) calc(var(--input-padding-end) - var(--default-grid-baseline));transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.input-field__icon[data-v-feb04bef]{position:absolute;height:var(--default-clickable-area);width:var(--default-clickable-area);display:flex;align-items:center;justify-content:center;opacity:.7;inset-block-end:0}.input-field__icon--leading[data-v-feb04bef]{inset-inline-start:0px}.input-field__icon--trailing[data-v-feb04bef]{inset-inline-end:0px}.input-field__trailing-button[data-v-feb04bef]{--button-size: calc(var(--default-clickable-area) - 2 * var(--border-width-input-focused, 2px)) !important;--button-radius: calc(var(--input-border-radius) - var(--border-width-input-focused, 2px))}.input-field__trailing-button.button-vue[data-v-feb04bef]{position:absolute;top:var(--border-width-input-focused, 2px);inset-inline-end:var(--border-width-input-focused, 2px)}.input-field__trailing-button.button-vue[data-v-feb04bef]:focus-visible{box-shadow:none!important}.input-field__helper-text-message[data-v-feb04bef]{padding-block:4px;padding-inline:var(--border-radius-element);display:flex;align-items:center;color:var(--color-text-maxcontrast);overflow-wrap:anywhere}.input-field__helper-text-message__icon[data-v-feb04bef]{margin-inline-end:8px}.input-field--error .input-field__helper-text-message[data-v-feb04bef],.input-field--error .input-field__icon--trailing[data-v-feb04bef]{color:var(--color-text-error, var(--color-error))}.input-field--error .input-field__input[data-v-feb04bef],.input-field__input[data-v-feb04bef]:user-invalid{--input-border-color: var(--color-border-error, var(--color-error)) !important}.input-field--error .input-field__input[data-v-feb04bef]:focus-visible,.input-field__input[data-v-feb04bef]:user-invalid:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field--success .input-field__input[data-v-feb04bef]{--input-border-color: var(--color-border-success, var(--color-success)) !important}.input-field--success .input-field__input[data-v-feb04bef]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field--success .input-field__helper-text-message__icon[data-v-feb04bef]{color:var(--color-border-success, var(--color-success))}.material-design-icon[data-v-cb828737]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}[data-v-cb828737] .password-field__input--secure-text{-webkit-text-security:disc}.material-design-icon[data-v-7cec4a3e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-crumb[data-v-7cec4a3e]{background-image:none;display:inline-flex;height:var(--default-clickable-area);padding:0}.vue-crumb[data-v-7cec4a3e]:last-child{min-width:0}.vue-crumb:last-child .vue-crumb__separator[data-v-7cec4a3e]{display:none}.vue-crumb--hidden[data-v-7cec4a3e]{display:none}.vue-crumb__separator[data-v-7cec4a3e]{padding:0;color:var(--color-text-maxcontrast)}.vue-crumb.vue-crumb--hovered[data-v-7cec4a3e] .button-vue{background-color:var(--color-background-dark);color:var(--color-main-text)}.vue-crumb[data-v-7cec4a3e]:not(:last-child) .button-vue{color:var(--color-text-maxcontrast)}.vue-crumb[data-v-7cec4a3e]:not(:last-child) .button-vue:hover,.vue-crumb[data-v-7cec4a3e]:not(:last-child) .button-vue:focus{background-color:var(--color-background-dark);color:var(--color-main-text)}.vue-crumb[data-v-7cec4a3e]:not(:last-child) .button-vue__text{font-weight:var(--font-weight-element, normal)}.vue-crumb[data-v-7cec4a3e] .button-vue__text{margin:0}.vue-crumb[data-v-7cec4a3e]:not(.dropdown) .action-item{max-width:100%}.vue-crumb[data-v-7cec4a3e]:not(.dropdown) .action-item .button-vue{padding:0 4px 0 16px;max-width:100%}.vue-crumb[data-v-7cec4a3e]:not(.dropdown) .action-item .button-vue__wrapper{flex-direction:row-reverse}.vue-crumb[data-v-7cec4a3e]:not(.dropdown) .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-dark);color:var(--color-main-text)}.material-design-icon[data-v-5a4d73af]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.breadcrumb[data-v-5a4d73af]{width:100%;flex-grow:1;display:inline-flex;align-items:center}.breadcrumb--collapsed[data-v-5a4d73af] .vue-crumb:last-child{min-width:100px}.breadcrumb nav[data-v-5a4d73af]{flex-shrink:1;min-width:0}.breadcrumb .breadcrumb__crumbs[data-v-5a4d73af]{max-width:100%}.breadcrumb .breadcrumb__crumbs[data-v-5a4d73af],.breadcrumb .breadcrumb__actions[data-v-5a4d73af]{display:inline-flex}.material-design-icon[data-v-6c2daf4e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-6c2daf4e]:hover,li.action.active[data-v-6c2daf4e]{border-radius:6px;padding:0}li.action[data-v-6c2daf4e]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-6c2daf4e]{pointer-events:none;opacity:.5}.action--disabled[data-v-6c2daf4e]:hover,.action--disabled[data-v-6c2daf4e]:focus{cursor:default;opacity:.5}.action--disabled[data-v-6c2daf4e] *{opacity:1!important}.action-button[data-v-6c2daf4e]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-element, normal);font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-button>span[data-v-6c2daf4e]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-6c2daf4e]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-button[data-v-6c2daf4e] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;opacity:1}.action-button[data-v-6c2daf4e] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-button__longtext-wrapper[data-v-6c2daf4e],.action-button__longtext[data-v-6c2daf4e]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-button__longtext[data-v-6c2daf4e]{cursor:pointer;white-space:pre-wrap!important}.action-button__name[data-v-6c2daf4e]{font-weight:var(--font-weight-heading, bold);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-button__description[data-v-6c2daf4e]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);font-weight:var(--font-weight-default, normal);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-button__menu-icon[data-v-6c2daf4e],.action-button__pressed-icon[data-v-6c2daf4e]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action-button[data-v-6c2daf4e] *{cursor:pointer}.material-design-icon[data-v-32f01b7a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-32f01b7a]:hover,li.action.active[data-v-32f01b7a]{border-radius:6px;padding:0}li.action[data-v-32f01b7a]:hover{background-color:var(--color-background-hover)}.action-link[data-v-32f01b7a]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-element, normal);font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-link>span[data-v-32f01b7a]{cursor:pointer;white-space:nowrap}.action-link__icon[data-v-32f01b7a]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-link[data-v-32f01b7a] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;opacity:1}.action-link[data-v-32f01b7a] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-link__longtext-wrapper[data-v-32f01b7a],.action-link__longtext[data-v-32f01b7a]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-link__longtext[data-v-32f01b7a]{cursor:pointer;white-space:pre-wrap!important}.action-link__name[data-v-32f01b7a]{font-weight:var(--font-weight-heading, bold);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-link__description[data-v-32f01b7a]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);font-weight:var(--font-weight-default, normal);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-link__menu-icon[data-v-32f01b7a]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.material-design-icon[data-v-87267750]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-87267750]:hover,li.action.active[data-v-87267750]{border-radius:6px;padding:0}li.action[data-v-87267750]:hover{background-color:var(--color-background-hover)}.action-router[data-v-87267750]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-element, normal);font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-router>span[data-v-87267750]{cursor:pointer;white-space:nowrap}.action-router__icon[data-v-87267750]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-router[data-v-87267750] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;opacity:1}.action-router[data-v-87267750] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-router__longtext-wrapper[data-v-87267750],.action-router__longtext[data-v-87267750]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-router__longtext[data-v-87267750]{cursor:pointer;white-space:pre-wrap!important}.action-router__name[data-v-87267750]{font-weight:var(--font-weight-heading, bold);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-router__description[data-v-87267750]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);font-weight:var(--font-weight-default, normal);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-router__menu-icon[data-v-87267750]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action--disabled[data-v-87267750]{pointer-events:none;opacity:.5}.action--disabled[data-v-87267750]:hover,.action--disabled[data-v-87267750]:focus{cursor:default;opacity:.5}.action--disabled[data-v-87267750] *{opacity:1!important}.material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}/*! - * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */.nc-select.v-select.select .select__helper-text{display:flex;align-items:center;margin:0;padding-block:4px;padding-inline:var(--border-radius-element);color:var(--color-text-maxcontrast);font-size:var(--default-font-size);overflow-wrap:anywhere}.nc-select.v-select.select .select__helper-text--error{color:var(--color-text-error)}.nc-select.v-select.select .select__helper-text--success{color:var(--color-text-success)}.nc-select.v-select.select .select__helper-text .select__helper-text-icon{margin-inline-end:8px}.nc-select.v-select.select,.nc-select__dropdown.vs__dropdown-menu{--vs-search-input-color: var(--color-main-text);--vs-search-input-bg: var(--color-main-background);--vs-search-input-placeholder-color: var(--color-text-maxcontrast);--vs-font-size: var(--default-font-size);--vs-line-height: var(--default-line-height);--vs-state-disabled-bg: var(--color-background-hover);--vs-state-disabled-color: var(--color-text-maxcontrast);--vs-state-disabled-controls-color: var(--color-text-maxcontrast);--vs-state-disabled-cursor: not-allowed;--vs-disabled-bg: var(--color-background-hover);--vs-disabled-color: var(--color-text-maxcontrast);--vs-disabled-cursor: not-allowed;--vs-border-color: var(--color-border-maxcontrast);--vs-border-width: var(--border-width-input, 2px) !important;--vs-border-style: solid;--vs-border-radius: var(--border-radius-element);--vs-controls-color: var(--color-main-text);--vs-selected-bg: var(--color-background-hover);--vs-selected-color: var(--color-main-text);--vs-selected-border-color: var(--vs-border-color);--vs-selected-border-style: var(--vs-border-style);--vs-selected-border-width: var(--vs-border-width);--vs-dropdown-bg: var(--color-main-background);--vs-dropdown-color: var(--color-main-text);--vs-dropdown-z-index: 9999;--vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow);--vs-dropdown-option-padding: 8px 20px;--vs-dropdown-option--active-bg: var(--color-background-hover);--vs-dropdown-option--active-color: var(--color-main-text);--vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color);--vs-dropdown-option--deselect-bg: var(--color-error);--vs-dropdown-option--deselect-color: #fff;--vs-transition-duration: 0ms;--vs-actions-padding: 0 8px 0 8px}.nc-select.v-select.select{min-height:calc(var(--default-clickable-area) - 2 * var(--border-width-input, 2px));min-width:260px;margin:6px 0 var(--default-grid-baseline)}.nc-select.v-select.select.vs--open{--vs-border-width: var(--border-width-input-focused, 2px)}.nc-select.v-select.select .vs__selected{min-height:calc(var(--default-clickable-area) - 2 * var(--vs-border-width) - var(--default-grid-baseline));min-width:0;max-width:100%;margin:calc(var(--default-grid-baseline) / 2);padding-block:0;padding-inline:12px 8px;border-radius:16px!important;background:var(--color-primary-element-light);border:none}.nc-select.v-select.select .vs__search{width:100%;--input-padding-end: calc(var(--default-clickable-area) + var(--default-grid-baseline));border:none!important;margin:0!important;padding:0!important;height:auto!important}.nc-select.v-select.select .vs__selected-options:has(.vs__selected) .vs__search .input-field__input+.input-field__label{--input-label-font-size: var(--font-size-small, 13px);line-height:1.5;inset-block-start:calc(-1.5 * var(--input-label-font-size) / 2);font-weight:500;border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:var(--default-grid-baseline);margin-inline:calc(var(--input-padding-start) - var(--default-grid-baseline)) calc(var(--input-padding-end) - var(--default-grid-baseline));transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.nc-select.v-select.select:not(.vs--multiple) .vs__dropdown-toggle{padding:0;overflow:visible;border:none!important;box-shadow:none!important;background:transparent}.nc-select.v-select.select .vs__dropdown-toggle{position:relative}.nc-select.v-select.select .vs__actions{position:absolute;z-index:999;inset-inline-end:0;top:50%;transform:translateY(-50%);height:100%;margin-block-start:1px;display:flex;align-items:center}.nc-select.v-select.select .vs__clear{margin-inline-end:2px}.nc-select.v-select.select.vs--open .vs__search .input-field__input{border-end-start-radius:0!important;border-end-end-radius:0!important}.nc-select.v-select.select.vs--disabled .vs__clear,.nc-select.v-select.select.vs--disabled .vs__dropdown-toggle,.nc-select.v-select.select.vs--disabled .vs__open-indicator,.nc-select.v-select.select.vs--disabled .vs__open-indicator-button,.nc-select.v-select.select.vs--disabled .vs__search,.nc-select.v-select.select.vs--disabled .vs__selected{background-color:transparent;color:var(--color-text-maxcontrast)}.nc-select.v-select.select.vs--disabled .vs__dropdown-toggle{--input-border-box-shadow-light: 0 -1px var(--color-border-dark), 0 0 0 1px color-mix(in srgb, var(--color-border-dark), 65% transparent);--input-border-box-shadow-dark: 0 1px var(--color-border-dark), 0 0 0 1px color-mix(in srgb, var(--color-border-dark), 65% transparent)}.nc-select.v-select.select.vs--disabled .vs__clear,.nc-select.v-select.select.vs--disabled .vs__deselect{display:none}.nc-select.v-select.select--no-wrap .vs__dropdown-toggle{overflow:hidden}.nc-select.v-select.select--no-wrap .vs__selected-options{flex-wrap:nowrap;overflow:auto!important;min-width:unset}.nc-select.v-select.select--no-wrap .vs__selected-options .vs__selected{min-width:unset}.nc-select.v-select.select--drop-up.vs--open .vs__search .input-field__input{border-end-start-radius:var(--border-radius-element)!important;border-end-end-radius:var(--border-radius-element)!important}.nc-select.v-select.select--drop-up.vs--open.vs--multiple .vs__dropdown-toggle{border-end-start-radius:var(--border-radius-element)!important;border-end-end-radius:var(--border-radius-element)!important;border-block-end-color:var(--color-main-text)!important}.nc-select.v-select.select .vs__selected-options{min-height:unset}.nc-select.v-select.select .vs__selected-options .vs__selected~.vs__search:has(.input-field__input[readonly]){position:absolute}.nc-select.v-select.select .vs__selected-options{padding:0;border:none;overflow:visible}.nc-select.v-select.select.vs--multiple{margin-inline:1px}.nc-select.v-select.select.vs--multiple .vs__dropdown-toggle{border:var(--border-width-input-focused, 2px) solid transparent;box-shadow:var(--input-border-box-shadow);padding-block:calc(var(--default-grid-baseline) * 1.5) 0;padding-inline:var(--default-grid-baseline) calc(var(--default-clickable-area) + var(--default-grid-baseline));overflow:visible;background:var(--color-main-background)}.nc-select.v-select.select.vs--multiple:has(.vs__clear) .vs__dropdown-toggle{padding-inline-end:calc(2 * var(--default-clickable-area))}.nc-select.v-select.select.vs--multiple.vs--open .vs__dropdown-toggle{box-shadow:none!important;border-color:var(--color-main-text);border-block-end-color:var(--color-border-maxcontrast);border-end-start-radius:0;border-end-end-radius:0;outline:2px solid var(--color-main-background)}.nc-select.v-select.select.vs--multiple .vs__search .input-field__input{box-shadow:none!important;background:transparent}.nc-select.v-select.select.vs--multiple .vs__search{width:0;flex-grow:1;min-width:0}.nc-select.v-select.select.vs--multiple.select--no-wrap .vs__dropdown-toggle{overflow:hidden}.nc-select.v-select.select.vs--multiple.select--no-wrap .vs__actions{background:linear-gradient(90deg,transparent,var(--color-main-background) 10%,var(--color-main-background) 100%);margin-block:0px;margin-inline-end:2px;border-radius:var(--border-radius-element);height:calc(100% - 6px)}.nc-select.v-select.select.vs--multiple .vs__search .input-field{margin-block-start:0}.nc-select.v-select.select.vs--multiple .vs__search .input-field__main-wrapper{height:calc(var(--default-clickable-area) - 2 * var(--vs-border-width) - var(--default-grid-baseline));margin:calc(var(--default-grid-baseline) / 2) 0}.nc-select.v-select.select.vs--multiple .select__label{position:absolute;z-index:1;inset-inline-start:var(--border-width-input-focused, 2px);top:50%;transform:translateY(-50%);font-size:var(--default-font-size);margin-inline:var(--border-radius-element);color:var(--color-text-maxcontrast);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - var(--clickable-area-large));transition:top var(--animation-quick),transform var(--animation-quick),font-size var(--animation-quick),font-weight var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.nc-select.v-select.select.vs--multiple:has(.vs__selected) .select__label,.nc-select.v-select.select.vs--multiple.vs--open .select__label{--input-label-font-size: var(--font-size-small, 13px);font-size:var(--input-label-font-size);line-height:1.5;top:calc(-1.5 * var(--input-label-font-size) / 2);transform:none;font-weight:500;border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:var(--default-grid-baseline);margin-inline:calc(var(--border-radius-element) - var(--default-grid-baseline));transition:top var(--animation-quick),transform var(--animation-quick),font-size var(--animation-quick),font-weight var(--animation-quick),background-color var(--animation-quick)}.nc-select.v-select.select.vs--single .vs__selected-options{position:relative;flex-wrap:nowrap;min-height:var(--default-clickable-area)}.nc-select.v-select.select.vs--single .vs__selected{position:absolute;inset-block:6px 0;inset-inline-start:0;inset-inline-end:0;margin:0;z-index:2;pointer-events:none;display:flex;align-items:center;padding-block:0;padding-inline:calc(var(--border-radius-element) + var(--border-width-input-focused, 2px)) var(--input-padding-end, calc(var(--default-clickable-area) + var(--default-grid-baseline)));background:unset!important;border:none;border-radius:0;height:unset;min-height:unset;font-size:var(--default-font-size);color:var(--color-main-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nc-select.v-select.select.vs--single:has(.input-field--label-outside) .vs__selected{inset-block-start:0}.nc-select.v-select.select.vs--single:has(.vs__clear) .vs__selected{padding-inline-end:calc(2 * var(--default-clickable-area))}.nc-select.v-select.select.vs--single.vs--loading .vs__selected,.nc-select.v-select.select.vs--single.vs--open .vs__selected{color:var(--color-text-maxcontrast)}.nc-select.v-select.select.vs--single.vs--searching .vs__selected{display:none}.nc-select__dropdown.vs__dropdown-menu{border-width:var(--border-width-input-focused)!important;border-color:var(--color-main-text)!important;outline:none!important;box-shadow:-2px 0 0 var(--color-main-background),0 2px 0 var(--color-main-background),2px 0 0 var(--color-main-background),!important;padding:4px!important}.nc-select__dropdown.vs__dropdown-menu--floating{width:max-content;position:absolute;top:0;inset-inline-start:0}.nc-select__dropdown.vs__dropdown-menu--floating-placement-top{border-radius:var(--vs-border-radius)!important;border-top-style:var(--vs-border-style)!important;box-shadow:0 -2px 0 var(--color-main-background),-2px 0 0 var(--color-main-background),0 2px 0 var(--color-main-background),2px 0 0 var(--color-main-background),!important}.nc-select__dropdown.vs__dropdown-menu .vs__dropdown-option{border-radius:6px!important}.nc-select__dropdown.vs__dropdown-menu .vs__no-options{color:var(--color-text-maxcontrast)!important}.nc-select.v-select.select .vs__dropdown-toggle{--input-border-box-shadow-light: 0 -1px var(--vs-border-color), 0 0 0 1px color-mix(in srgb, var(--vs-border-color), 65% transparent);--input-border-box-shadow-dark: 0 -1px var(--vs-border-color), 0 0 0 1px color-mix(in srgb, var(--vs-border-color), 65% transparent);--input-border-box-shadow: var(--input-border-box-shadow-light);border:none;border-radius:var(--border-radius-element);box-shadow:var(--input-border-box-shadow)}.nc-select.v-select.select:not(.vs--disabled) .vs__dropdown-toggle:hover{box-shadow:0 0 0 1px var(--vs-border-color)}@media(prefers-color-scheme:dark){.nc-select.v-select.select .vs__dropdown-toggle{--input-border-box-shadow: var(--input-border-box-shadow-dark)}}[data-theme-dark] .nc-select.v-select.select .vs__dropdown-toggle{--input-border-box-shadow: var(--input-border-box-shadow-dark)}[data-theme-light] .nc-select.v-select.select .vs__dropdown-toggle{--input-border-box-shadow: var(--input-border-box-shadow-light)}.select--legacy.nc-select.v-select.select .vs__dropdown-toggle{box-shadow:0 0 0 1px var(--vs-border-color)}.select--legacy.nc-select.v-select.select .vs__dropdown-toggle:hover:not([disabled]){box-shadow:0 0 0 2px var(--vs-border-color)}:root{--vs-colors--lightest:rgba(60,60,60,.26);--vs-colors--light:rgba(60,60,60,.5);--vs-colors--dark:#333;--vs-colors--darkest:rgba(0,0,0,.15);--vs-search-input-color:inherit;--vs-search-input-bg:#fff;--vs-search-input-placeholder-color:inherit;--vs-font-size:1rem;--vs-line-height:1.4;--vs-state-disabled-bg:#f8f8f8;--vs-state-disabled-color:var(--vs-colors--light);--vs-state-disabled-controls-color:var(--vs-colors--light);--vs-state-disabled-cursor:not-allowed;--vs-border-color:var(--vs-colors--lightest);--vs-border-width:1px;--vs-border-style:solid;--vs-border-radius:4px;--vs-actions-padding:4px 6px 0 3px;--vs-controls-color:var(--vs-colors--light);--vs-controls-size:1;--vs-controls--deselect-text-shadow:0 1px 0 #fff;--vs-selected-bg:#f0f0f0;--vs-selected-color:var(--vs-colors--dark);--vs-selected-border-color:var(--vs-border-color);--vs-selected-border-style:var(--vs-border-style);--vs-selected-border-width:var(--vs-border-width);--vs-dropdown-bg:#fff;--vs-dropdown-color:inherit;--vs-dropdown-z-index:1000;--vs-dropdown-min-width:160px;--vs-dropdown-max-height:350px;--vs-dropdown-box-shadow:0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg:#000;--vs-dropdown-option-color:var(--vs-dropdown-color);--vs-dropdown-option-padding:3px 20px;--vs-dropdown-option--active-bg:#136cfb;--vs-dropdown-option--active-color:#fff;--vs-dropdown-option--kb-focus-box-shadow:inset 0px 0px 0px 2px #949494;--vs-dropdown-option--deselect-bg:#fb5858;--vs-dropdown-option--deselect-color:#fff;--vs-transition-timing-function:cubic-bezier(1,-.115,.975,.855);--vs-transition-duration:.15s}.v-select{font-family:inherit;position:relative}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function:cubic-bezier(1,.5,.8,1);--vs-transition-duration:.15s}@keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg:var(--vs-state-disabled-bg);--vs-disabled-color:var(--vs-state-disabled-color);--vs-disabled-cursor:var(--vs-state-disabled-cursor)}.vs--disabled{.vs__clear,.vs__dropdown-toggle,.vs__open-indicator,.vs__open-indicator-button,.vs__search,.vs__selected{background-color:var(--vs-disabled-bg);cursor:var(--vs-disabled-cursor)}}.v-select[dir=rtl]{.vs__actions{padding:0 3px 0 6px}.vs__clear{margin-left:6px;margin-right:0}.vs__deselect{margin-left:0;margin-right:2px}.vs__dropdown-menu{text-align:right}}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--vs-search-input-bg);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);display:flex;padding:0 0 4px;white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;min-width:0;padding:0 2px;position:relative}.vs__actions{align-items:center;display:flex;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator-button{background-color:transparent;border:0;cursor:pointer;padding:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{background-color:transparent;border:0;cursor:pointer;fill:var(--vs-controls-color);margin-right:8px;padding:0}.vs__dropdown-menu{background:var(--vs-dropdown-bg);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);border-top-style:none;box-shadow:var(--vs-dropdown-box-shadow);box-sizing:border-box;color:var(--vs-dropdown-color);display:block;left:0;list-style:none;margin:0;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;padding:5px 0;position:absolute;text-align:left;top:calc(100% - var(--vs-border-width));width:100%;z-index:var(--vs-dropdown-z-index)}.vs__no-options{text-align:center}.vs__dropdown-option{clear:both;color:var(--vs-dropdown-option-color);cursor:pointer;display:block;line-height:1.42857143;padding:var(--vs-dropdown-option-padding);white-space:nowrap}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--kb-focus{box-shadow:var(--vs-dropdown-option--kb-focus-box-shadow)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);display:flex;line-height:var(--vs-line-height);margin:4px 2px 0;min-width:0;padding:0 .25em;z-index:0}.vs__deselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;cursor:pointer;display:inline-flex;fill:var(--vs-controls-color);margin-left:4px;padding:0;text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single{.vs__selected{background-color:transparent;border-color:transparent}&.vs--loading .vs__selected,&.vs--open .vs__selected{max-width:100%;opacity:.4;position:absolute}&.vs--searching .vs__selected{display:none}}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-ms-clear,.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration{display:none}.vs__search,.vs__search:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:1px solid transparent;border-left:none;box-shadow:none;color:var(--vs-search-input-color);flex-grow:1;font-size:var(--vs-font-size);line-height:var(--vs-line-height);margin:4px 0 0;max-width:100%;outline:none;padding:0 7px;width:0;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable{.vs__search{opacity:1}&:not(.vs--disabled) .vs__search{cursor:pointer}}.vs--single.vs--searching:not(.vs--open):not(.vs--loading){.vs__search{opacity:.2}}.vs__spinner{align-self:center;animation:vSelectSpinner 1.1s linear infinite;border:.9em solid hsla(0,0%,39.2%,.1);border-left-color:#3c3c3c73;font-size:5px;opacity:0;overflow:hidden;text-indent:-9999em;transform:translateZ(0) scale(var(--vs-controls--spinner-size,var(--vs-controls-size)));transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;height:5em;transform:scale(var(--vs-controls--spinner-size,var(--vs-controls-size)));width:5em}.vs--loading .vs__spinner{opacity:1}.material-design-icon[data-v-c843f2cd]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.name-parts[data-v-c843f2cd]{display:flex;max-width:100%;min-width:0;cursor:inherit}.name-parts__first[data-v-c843f2cd]{overflow:hidden;text-overflow:ellipsis;white-space:pre}.name-parts__last[data-v-c843f2cd]{flex:0 0 auto;white-space:pre}.name-parts__first[data-v-c843f2cd],.name-parts__last[data-v-c843f2cd]{cursor:inherit}.name-parts__first strong[data-v-c843f2cd],.name-parts__last strong[data-v-c843f2cd]{font-weight:700} diff --git a/css/index-DBPTxogX.chunk.css b/css/index-DBPTxogX.chunk.css deleted file mode 100644 index 7ca338ac..00000000 --- a/css/index-DBPTxogX.chunk.css +++ /dev/null @@ -1 +0,0 @@ -.material-design-icon[data-v-23910d95]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-date-time-picker__wrapper[data-v-23910d95]{--dp-common-transition: all var(--animation-quick) ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: var(--animation-quick);--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transtion: all .2s ease-in;--dp-font-family: var(--font-face);--dp-border-radius: var(--border-radius-element);--dp-cell-border-radius: var(--border-radius-small);--dp-transition-length: 22px;--dp-transition-timing-general: var(--animation-quick);--dp-button-height: var(--default-clickable-area);--dp-month-year-row-height: var(--default-clickable-area);--dp-month-year-row-button-size: var(--clickable-area-small);--dp-button-icon-height: 20px;--dp-calendar-wrap-padding: 0 5px;--dp-cell-size: var(--default-clickable-area);--dp-cell-padding: 5px;--dp-common-padding: 10px;--dp-input-icon-padding: var(--default-clickable-area);--dp-input-padding: 6px 12px;--dp-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: .5rem;--dp-multi-calendars-spacing: 10px;--dp-overlay-col-padding: 3px;--dp-time-inc-dec-button-size: var(--default-clickable-area);--dp-font-size: 1rem;--dp-preview-font-size: var(--font-size-small);--dp-time-font-size: 2rem;--dp-action-button-height: var(--clickable-area-small);--dp-action-row-padding: 8px;--dp-direction: ltr}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_wrap{position:relative;width:100%;box-sizing:unset}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_wrap:focus{border-color:var(--dp-border-color-hover);outline:none}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_valid{box-shadow:0 0 var(--dp-border-radius) var(--dp-success-color);border-color:var(--dp-success-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_valid:hover{border-color:var(--dp-success-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_invalid{box-shadow:0 0 var(--dp-border-radius) var(--dp-danger-color);border-color:var(--dp-danger-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_invalid:hover{border-color:var(--dp-danger-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input{background-color:var(--dp-background-color);border-radius:var(--dp-border-radius);font-family:var(--dp-font-family);border:1px solid var(--dp-border-color);outline:none;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size) * 1.5);padding:var(--dp-input-padding);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input::placeholder{opacity:.7}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input:hover:not(.dp__input_focus){border-color:var(--dp-border-color-hover)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_not_clearable{padding-inline-end:var(--dp-input-not-clearable-padding)!important}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_reg{caret-color:#0000}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_focus{border-color:var(--dp-border-color-focus)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__disabled{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__disabled::placeholder{color:var(--dp-disabled-color-text)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_icons{display:inline-block;width:var(--dp-font-size);height:var(--dp-font-size);stroke-width:0;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size) * 1.5);padding:6px 12px;color:var(--dp-icon-color);box-sizing:content-box}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_icon{cursor:pointer;position:absolute;top:50%;inset-inline-start:0;transform:translateY(-50%);color:var(--dp-icon-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--clear-btn{position:absolute;top:50%;inset-inline-end:0;transform:translateY(-50%);cursor:pointer;color:var(--dp-icon-color);background:#0000;border:none;display:inline-flex;align-items:center;padding:0;margin:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__input_icon_pad{padding-inline-start:var(--dp-input-icon-padding)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu{background:var(--dp-background-color);border-radius:var(--dp-border-radius);min-width:var(--dp-menu-min-width);font-family:var(--dp-font-family);font-size:var(--dp-font-size);-webkit-user-select:none;user-select:none;border:1px solid var(--dp-menu-border-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu:after{box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu:before{box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu:focus{border:1px solid var(--dp-menu-border-color);outline:none}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--menu-wrapper{position:absolute;z-index:99999}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu_inner{padding:var(--dp-menu-padding)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--menu--inner-stretched{padding:6px 0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu_index{z-index:99999}.vue-date-time-picker__wrapper[data-v-23910d95] .dp-menu-loading,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu_readonly,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu_disabled{position:absolute;inset:0;z-index:999999}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu_disabled{background:#ffffff80;cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu_readonly{background:#0000;cursor:default}.vue-date-time-picker__wrapper[data-v-23910d95] .dp-menu-loading{background:#ffffff80;cursor:default}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--menu-load-container{display:flex;height:100%;width:100%;justify-content:center;align-items:center}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--menu-loader{width:48px;height:48px;border:var(--dp-loader);border-bottom-color:#0000;border-radius:50%;display:inline-block;box-sizing:border-box;animation:dp-load-rotation-23910d95 1s linear infinite;position:absolute}@keyframes dp-load-rotation-23910d95{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__arrow_top{left:var(--dp-arrow-left);top:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-top:1px solid var(--dp-menu-border-color);transform:translate(-50%,-50%) rotate(-45deg)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__arrow_bottom{left:var(--dp-arrow-left);bottom:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-bottom:1px solid var(--dp-menu-border-color);transform:translate(-50%,50%) rotate(45deg)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_extra{text-align:center;padding:2px 0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-dates{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-dates[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-dates-collapsed{display:flex;align-self:center;border:none;overflow-x:auto;max-width:calc(var(--dp-menu-width) - var(--dp-action-row-padding) * 2)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__sidebar_left{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__sidebar_right{padding:5px;margin-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-range{display:block;width:100%;padding:5px;text-align:left;white-space:nowrap;color:var(--dp-text-color);border-radius:var(--dp-border-radius);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-range:hover{background-color:var(--dp-hover-color);color:var(--dp-hover-text-color);cursor:pointer}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-range[data-dp-mobile]{border:1px solid var(--dp-border-color);margin:0 3px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-range[data-dp-mobile]:first-child{margin-left:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-range[data-dp-mobile]:last-child{margin-right:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-range-collapsed{border:1px solid var(--dp-border-color);margin:0 3px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-range-collapsed:first-child{margin-left:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--preset-range-collapsed:last-child{margin-right:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu_content_wrapper{display:flex}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__menu_content_wrapper[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-23910d95] .dp--menu-content-wrapper-collapsed{flex-direction:column-reverse}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__calendar_header{position:relative;display:flex;justify-content:center;align-items:center;color:var(--dp-text-color);white-space:nowrap;font-weight:700}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__calendar_header_item{text-align:center;flex-grow:1;height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__calendar_row{display:flex;justify-content:center;align-items:center;margin:var(--dp-row-margin)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__calendar_item{text-align:center;flex-grow:1;box-sizing:border-box;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__calendar{position:relative}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__calendar_header_cell{border-bottom:thin solid var(--dp-border-color);padding:var(--dp-calendar-header-cell-padding)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_inner{display:flex;align-items:center;text-align:center;justify-content:center;border-radius:var(--dp-cell-border-radius);height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);border:1px solid rgba(0,0,0,0);box-sizing:border-box;position:relative}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_inner:hover{transition:all .2s}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_auto_range_start,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__date_hover_start:hover,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__range_start{border-end-end-radius:0;border-start-end-radius:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_auto_range_end,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__date_hover_end:hover,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__range_end{border-end-start-radius:0;border-start-start-radius:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__range_end,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__range_start,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__active_date{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__date_hover_end:hover,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__date_hover_start:hover,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__date_hover:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_offset{color:var(--dp-secondary-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_disabled{color:var(--dp-secondary-color);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__range_between{background:var(--dp-range-between-dates-background-color);color:var(--dp-range-between-dates-text-color);border-radius:0;border:1px solid var(--dp-range-between-border-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__range_between_week{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border-radius:0;border-top:1px solid var(--dp-primary-color);border-bottom:1px solid var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__today{border:1px solid var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__week_num{color:var(--dp-secondary-color);text-align:center}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_auto_range{border-radius:0;border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_auto_range_start{border-start-start-radius:var(--dp-cell-border-radius);border-end-start-radius:var(--dp-cell-border-radius);border-inline-start:1px dashed var(--dp-primary-color);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_auto_range_end{border-start-end-radius:var(--dp-cell-border-radius);border-end-end-radius:var(--dp-cell-border-radius);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color);border-inline-end:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__calendar_header_separator{width:100%;height:1px;background:var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__calendar_next{margin-inline-start:var(--dp-multi-calendars-spacing)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__marker_line,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__marker_dot{height:5px;background-color:var(--dp-marker-color);position:absolute;bottom:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__marker_dot{width:5px;border-radius:50%;left:50%;transform:translate(-50%)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__marker_line{width:100%;left:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__marker_tooltip{position:absolute;border-radius:var(--dp-border-radius);background-color:var(--dp-tooltip-color);padding:5px;border:1px solid var(--dp-border-color);z-index:99999;box-sizing:border-box;cursor:default}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__tooltip_content{white-space:nowrap}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__tooltip_text{display:flex;align-items:center;flex-flow:row nowrap;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__tooltip_mark{height:5px;width:5px;border-radius:50%;background-color:var(--dp-text-color);color:var(--dp-text-color);margin-inline-end:5px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__arrow_bottom_tp{bottom:0;height:8px;width:8px;background-color:var(--dp-tooltip-color);position:absolute;border-inline-end:1px solid var(--dp-border-color);border-bottom:1px solid var(--dp-border-color);transform:translate(-50%,50%) rotate(45deg)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__instance_calendar{position:relative;width:100%}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__flex_display[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-23910d95] .dp--flex-display-collapsed{flex-direction:column}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_highlight{background-color:var(--dp-highlight-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__month_year_row{display:flex;align-items:center;height:var(--dp-month-year-row-height);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inner_nav{display:flex;align-items:center;justify-content:center;cursor:pointer;height:var(--dp-month-year-row-button-size);width:var(--dp-month-year-row-button-size);color:var(--dp-icon-color);text-align:center;border-radius:50%}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inner_nav svg{height:var(--dp-button-icon-height);width:var(--dp-button-icon-height)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inner_nav:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-23910d95] [dir=rtl] .dp__inner_nav{transform:rotate(180deg)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inner_nav_disabled:hover,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inner_nav_disabled{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--year-select,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__month_year_select{text-align:center;cursor:pointer;height:var(--dp-month-year-row-height);display:flex;align-items:center;justify-content:center;border-radius:var(--dp-border-radius);box-sizing:border-box;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--year-select:hover,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__month_year_select:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__month_year_select{width:50%}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--year-select{width:100%}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__month_year_wrap{display:flex;flex-direction:row;width:100%}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__year_disable_select{justify-content:space-around}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--header-wrap{display:flex;width:100%;flex-direction:column}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay{width:100%;background:var(--dp-background-color);transition:opacity 1s ease-out;z-index:99999;font-family:var(--dp-font-family);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--overlay-absolute{position:absolute;height:100%;top:0;left:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--overlay-relative{position:relative}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_container::-webkit-scrollbar-track{box-shadow:var(--dp-scroll-bar-background);background-color:var(--dp-scroll-bar-background)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_container::-webkit-scrollbar{width:5px;background-color:var(--dp-scroll-bar-background)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_container::-webkit-scrollbar-thumb{background-color:var(--dp-scroll-bar-color);border-radius:10px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay:focus{border:none;outline:none}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__container_flex{display:flex}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__container_block{display:block}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_container{flex-direction:column;overflow-y:auto;height:var(--dp-overlay-height)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_picker_overlay_container{height:100%}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_row{padding:0;box-sizing:border-box;display:flex;margin-inline:auto;flex-wrap:wrap;max-width:100%;width:100%;align-items:center}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__flex_row{flex:1}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_col{box-sizing:border-box;width:33%;padding:var(--dp-overlay-col-padding);white-space:nowrap}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_cell_pad{padding:var(--dp-common-padding) 0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_cell_active{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center;background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_cell{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_cell:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__cell_in_between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__over_action_scroll{right:5px;box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_cell_disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_cell_disabled:hover{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_cell_active_disabled{cursor:not-allowed;background:var(--dp-primary-disabled-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay_cell_active_disabled:hover{background:var(--dp-primary-disabled-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__btn,.vue-date-time-picker__wrapper[data-v-23910d95] .dp--qr-btn,.vue-date-time-picker__wrapper[data-v-23910d95] .dp--time-overlay-btn,.vue-date-time-picker__wrapper[data-v-23910d95] .dp--time-invalid{border:none;font:inherit;transition:var(--dp-common-transition);line-height:normal}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--year-mode-picker{display:flex;width:100%;align-items:center;justify-content:space-between;height:var(--dp-cell-size)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--tp-wrap{max-width:var(--dp-menu-min-width)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--tp-wrap[data-dp-mobile]{max-width:100%}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_input{width:100%;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;font-family:var(--dp-font-family);color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col_reg_block{padding:0 20px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col_reg_inline{padding:0 10px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col_reg_with_button{padding:0 15px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col_reg_with_button[data-compact~=true]{padding:0 5px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col_sec{padding:0 10px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col_sec_with_button{padding:0 5px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col_sec_with_button[data-collapsed~=true]{padding:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col_block{font-size:var(--dp-time-font-size)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_display_block{padding:0 3px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_display_inline{padding:5px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_picker_inline_container{display:flex;width:100%;justify-content:center}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inc_dec_button{padding:5px;margin:0;height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:50%;color:var(--dp-icon-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inc_dec_button svg{height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inc_dec_button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_display{cursor:pointer;color:var(--dp-text-color);border-radius:var(--dp-border-radius);display:flex;align-items:center;justify-content:center}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_display:hover:enabled{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inc_dec_button_inline{width:100%;padding:0;height:8px;cursor:pointer;display:flex;align-items:center}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inc_dec_button_disabled,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inc_dec_button_disabled:hover{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__pm_am_button{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border:none;padding:var(--dp-common-padding);border-radius:var(--dp-border-radius);cursor:pointer}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__pm_am_button[data-compact~=true]{padding:7px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__tp_inline_btn_bar{width:100%;height:4px;background-color:var(--dp-secondary-color);transition:var(--dp-common-transition);border-collapse:collapse}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__tp_inline_btn_top:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__tp_inline_btn_top:hover .dp__tp_btn_in_l,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(-12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_l{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--time-overlay-btn{background:none}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--time-invalid{background-color:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_row{display:flex;align-items:center;width:100%;padding:var(--dp-action-row-padding);box-sizing:border-box;color:var(--dp-text-color);flex-flow:row nowrap}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_row svg{height:var(--dp-button-icon-height);width:auto}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__selection_preview{display:block;color:var(--dp-text-color);font-size:var(--dp-preview-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_buttons{display:flex;flex:0;white-space:nowrap;align-items:center;justify-content:flex-end;margin-inline-start:auto}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_button{display:inline-flex;align-items:center;background:#0000;border:1px solid rgba(0,0,0,0);padding:var(--dp-action-buttons-padding);line-height:var(--dp-action-button-height);margin-inline-start:3px;height:var(--dp-action-button-height);cursor:pointer;border-radius:var(--dp-border-radius);font-size:var(--dp-preview-font-size);font-family:var(--dp-font-family)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_cancel{color:var(--dp-text-color);border:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_cancel:hover{border-color:var(--dp-primary-color);transition:var(--dp-action-row-transition)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_buttons .dp__action_select{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_buttons .dp__action_select:hover{background:var(--dp-primary-color);transition:var(--dp-action-row-transition)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_buttons .dp__action_select:disabled{background:var(--dp-primary-disabled-color);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-23910d95] .dp-quarter-picker-wrap{display:flex;flex-direction:column;height:100%;min-width:var(--dp-menu-min-width)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--qr-btn-disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--qr-btn-disabled:hover{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--qr-btn{width:100%;padding:var(--dp-common-padding)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--qr-btn:not(.dp--highlighted,.dp--qr-btn-active,.dp--qr-btn-disabled,.dp--qr-btn-between){background:none}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--qr-btn:hover:not(.dp--qr-btn-active,.dp--qr-btn-disabled){background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--quarter-items{display:flex;flex-direction:column;flex:1;width:100%;height:100%;justify-content:space-evenly}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--qr-btn-active{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--qr-btn-between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-23910d95] :root{--dp-common-transition: all .1s ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: .1s;--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transition: all .2s ease-in;--dp-font-family: -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen, ubuntu, cantarell, "Open Sans", "Helvetica Neue", sans-serif;--dp-border-radius: 4px;--dp-cell-border-radius: 4px;--dp-transition-length: 22px;--dp-transition-timing-general: .1s;--dp-button-height: 35px;--dp-month-year-row-height: 35px;--dp-month-year-row-button-size: 25px;--dp-button-icon-height: 20px;--dp-calendar-wrap-padding: 0 5px;--dp-cell-size: 35px;--dp-cell-padding: 5px;--dp-common-padding: 10px;--dp-input-icon-padding: 35px;--dp-input-padding: 6px 30px 6px 12px;--dp-input-not-clearable-padding: 12px;--dp-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: .5rem;--dp-multi-calendars-spacing: 10px;--dp-overlay-col-padding: 3px;--dp-time-inc-dec-button-size: 32px;--dp-font-size: 1rem;--dp-preview-font-size: .8rem;--dp-time-font-size: 2rem;--dp-action-button-height: 22px;--dp-action-row-padding: 8px;--dp-direction: ltr}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__theme_dark{--dp-background-color: #212121;--dp-text-color: #fff;--dp-hover-color: #484848;--dp-hover-text-color: #fff;--dp-hover-icon-color: #959595;--dp-primary-color: #005cb2;--dp-primary-disabled-color: #61a8ea;--dp-primary-text-color: #fff;--dp-secondary-color: #a9a9a9;--dp-border-color: #2d2d2d;--dp-menu-border-color: #2d2d2d;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #737373;--dp-disabled-color-text: #d0d0d0;--dp-scroll-bar-background: #212121;--dp-scroll-bar-color: #484848;--dp-success-color: #00701a;--dp-success-color-disabled: #428f59;--dp-icon-color: #959595;--dp-danger-color: #e53935;--dp-marker-color: #e53935;--dp-tooltip-color: #3e3e3e;--dp-highlight-color: rgb(0 92 178 / 20%);--dp-range-between-dates-background-color: var(--dp-hover-color, #484848);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #fff);--dp-range-between-border-color: var(--dp-hover-color, #fff);--dp-loader: 5px solid #005cb2}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__theme_light{--dp-background-color: #fff;--dp-text-color: #212121;--dp-hover-color: #f3f3f3;--dp-hover-text-color: #212121;--dp-hover-icon-color: #959595;--dp-primary-color: #1976d2;--dp-primary-disabled-color: #6bacea;--dp-primary-text-color: #fff;--dp-secondary-color: #c0c4cc;--dp-border-color: #ddd;--dp-menu-border-color: #ddd;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #f6f6f6;--dp-scroll-bar-background: #f3f3f3;--dp-scroll-bar-color: #959595;--dp-success-color: #76d275;--dp-success-color-disabled: #a3d9b1;--dp-icon-color: #959595;--dp-danger-color: #ff6f60;--dp-marker-color: #ff6f60;--dp-tooltip-color: #fafafa;--dp-disabled-color-text: #8e8e8e;--dp-highlight-color: rgb(25 118 210 / 10%);--dp-range-between-dates-background-color: var(--dp-hover-color, #f3f3f3);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #212121);--dp-range-between-border-color: var(--dp-hover-color, #f3f3f3);--dp-loader: 5px solid #1976d2}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__flex{display:flex;align-items:center}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__btn{background:none}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__main{font-family:var(--dp-font-family);-webkit-user-select:none;user-select:none;box-sizing:border-box;position:relative;width:100%}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__main *{direction:var(--dp-direction, ltr)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__pointer{cursor:pointer}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__icon{stroke:currentcolor;fill:currentcolor}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__button{width:100%;text-align:center;color:var(--dp-icon-color);cursor:pointer;display:flex;align-items:center;place-content:center center;padding:var(--dp-common-padding);box-sizing:border-box;height:var(--dp-button-height)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__button.dp__overlay_action{position:absolute;bottom:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__button svg{height:var(--dp-button-icon-height);width:auto}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__button_bottom{border-bottom-left-radius:var(--dp-border-radius);border-bottom-right-radius:var(--dp-border-radius)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__flex_display{display:flex}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__flex_display_with_input{flex-direction:column;align-items:flex-start}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__relative{position:relative}.vue-date-time-picker__wrapper[data-v-23910d95] .calendar-next-enter-active,.vue-date-time-picker__wrapper[data-v-23910d95] .calendar-next-leave-active,.vue-date-time-picker__wrapper[data-v-23910d95] .calendar-prev-enter-active,.vue-date-time-picker__wrapper[data-v-23910d95] .calendar-prev-leave-active{transition:all var(--dp-transition-timing-general) ease-out}.vue-date-time-picker__wrapper[data-v-23910d95] .calendar-next-enter-from{opacity:0;transform:translate(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-23910d95] .calendar-next-leave-to,.vue-date-time-picker__wrapper[data-v-23910d95] .calendar-prev-enter-from{opacity:0;transform:translate(calc(var(--dp-transition-length) * -1))}.vue-date-time-picker__wrapper[data-v-23910d95] .calendar-prev-leave-to{opacity:0;transform:translate(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-23910d95] .dp-menu-appear-bottom-enter-active,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-menu-appear-bottom-leave-active,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-menu-appear-top-enter-active,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-menu-appear-top-leave-active,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-slide-up-enter-active,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-slide-up-leave-active,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-slide-down-enter-active,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-slide-down-leave-active{transition:all var(--dp-animation-duration) var(--dp-transition-timing)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp-menu-appear-top-enter-from,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-menu-appear-top-leave-to,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-slide-down-leave-to,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-slide-up-enter-from{opacity:0;transform:translateY(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-23910d95] .dp-menu-appear-bottom-enter-from,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-menu-appear-bottom-leave-to,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-slide-down-enter-from,.vue-date-time-picker__wrapper[data-v-23910d95] .dp-slide-up-leave-to{opacity:0;transform:translateY(calc(var(--dp-transition-length) * -1))}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--arrow-btn-nav{transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--highlighted{background-color:var(--dp-highlight-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--hidden-el{visibility:hidden}.vue-date-time-picker__wrapper.vue-date-time-picker__wrapper--teleport[data-v-23910d95] .dp--menu-wrapper{z-index:100001}.vue-date-time-picker__wrapper .vue-date-time-picker--clearable[data-v-23910d95] .dp__input{padding-inline-end:var(--default-clickable-area)}.vue-date-time-picker__wrapper .vue-date-time-picker__timezone[data-v-23910d95]{min-width:unset;width:100%}.vue-date-time-picker__wrapper[data-v-23910d95] .icon-vue{opacity:1!important}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--tp-wrap,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__action_extra{padding:var(--dp-menu-padding);padding-top:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay.dp--overlay-absolute{padding:var(--dp-menu-padding)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__overlay.dp--overlay-absolute .dp__btn.dp__button.dp__button_bottom{inset-block-end:6px}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__btn.dp__button.dp__button_bottom,.vue-date-time-picker__wrapper[data-v-23910d95] .dp--tp-wrap .dp__button{width:100%}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__btn.dp__button.dp__overlay_action{width:calc(100% - 16px)}.vue-date-time-picker__wrapper[data-v-23910d95] input{padding-inline-start:var(--dp-input-icon-padding)!important}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__btn{margin:0}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__inner_nav{height:fit-content;width:fit-content}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__btn.dp__button.dp__button_bottom{color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--header-wrap .dp__btn:not(.dp__button_bottom),.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col .dp__btn{background-color:var(--color-main-background)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--header-wrap .dp__btn:not(.dp__button_bottom):hover,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_col .dp__btn:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__month_year_select{flex:1}.vue-date-time-picker__wrapper[data-v-23910d95] .dp--time-overlay-btn{font-size:calc(2 * var(--default-font-size))!important}.vue-date-time-picker__wrapper[data-v-23910d95] .dp__time_input .dp__time_col_reg_block{padding:0 calc(4 * var(--default-grid-baseline))}.vue-date-time-picker__wrapper .vue-date-time-picker.dp__theme_dark[data-v-23910d95],.vue-date-time-picker__wrapper .vue-date-time-picker.dp__theme_light[data-v-23910d95],.vue-date-time-picker__wrapper[data-v-23910d95] .dp__theme_dark,.vue-date-time-picker__wrapper[data-v-23910d95] .dp__theme_light{--dp-background-color: var(--color-main-background);--dp-text-color: var(--color-main-text);--dp-hover-color: var(--color-primary-element-light-hover);--dp-hover-text-color: var(--color-primary-element-light-text);--dp-hover-icon-color: var(--color-primary-element-light-text);--dp-primary-color: var(--color-primary-element);--dp-primary-disabled-color: var(--color-primary-element-hover);--dp-primary-text-color: var(--color-primary-element-text);--dp-secondary-color: var(--color-text-maxcontrast);--dp-border-color: var(--color-border);--dp-menu-border-color: var(--color-border-dark);--dp-border-color-hover: var(--color-border-maxcontrast);--dp-border-color-focus: var(--color-border-maxcontrast);--dp-disabled-color: var(--color-background-dark);--dp-disabled-color-text: var(--color-text-maxcontrast);--dp-scroll-bar-background: var(--color-scrollbar);--dp-scroll-bar-color: var(--color-scrollbar);--dp-success-color: var(--color-success);--dp-success-color-disabled: var(--color-success-hover);--dp-icon-color: var(--color-main-text);--dp-danger-color: var(--color-error);--dp-marker-color: var(--color-text-error, var(--color-error));--dp-tooltip-color: var(--color-main-text);--dp-highlight-color: var(--color-main-text)} diff --git a/css/index-bfXBK-tQ.chunk.css b/css/index-bfXBK-tQ.chunk.css deleted file mode 100644 index 4c50eab3..00000000 --- a/css/index-bfXBK-tQ.chunk.css +++ /dev/null @@ -1 +0,0 @@ -.material-design-icon[data-v-fab7cffe]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.color-picker[data-v-fab7cffe]{display:flex;overflow:hidden;align-content:flex-end;flex-direction:column;justify-content:space-between;padding:var(--border-radius-element);min-width:calc(4 * var(--default-clickable-area) + 2 * var(--border-radius-element))}.color-picker--clearable[data-v-fab7cffe]{min-width:calc(5 * var(--default-clickable-area) + 2 * var(--border-radius-element))}.color-picker--advanced-fields[data-v-fab7cffe]{min-width:264px}.color-picker__clear[data-v-fab7cffe]{color:var(--color-main-text)}.color-picker__clear[data-v-fab7cffe]:hover:not(:has(:checked)){color:var(--color-text-maxcontrast)}.color-picker__simple[data-v-fab7cffe]{display:grid;grid-template-columns:repeat(auto-fit,var(--default-clickable-area));grid-auto-rows:var(--default-clickable-area)}.color-picker__simple-color-circle[data-v-fab7cffe]{display:flex;align-items:center;justify-content:center;width:calc(var(--default-clickable-area) - 10px);height:calc(var(--default-clickable-area) - 10px);min-height:calc(var(--default-clickable-area) - 10px);margin:auto;padding:0;color:#fff;border:1px solid rgba(0,0,0,.25);border-radius:50%;font-size:16px}.color-picker__simple-color-circle[data-v-fab7cffe]:focus-within{outline:2px solid var(--color-main-text)}.color-picker__simple-color-circle[data-v-fab7cffe]:hover{opacity:.6}.color-picker__simple-color-circle--active[data-v-fab7cffe]{width:calc(var(--default-clickable-area) - 6px);height:calc(var(--default-clickable-area) - 6px);min-height:calc(var(--default-clickable-area) - 6px);transition:all .1s ease-in-out;opacity:1!important}.color-picker__advanced[data-v-fab7cffe]{box-shadow:none!important}.color-picker__navigation[data-v-fab7cffe]{display:flex;flex-direction:row;gap:var(--default-grid-baseline);justify-content:space-between;margin-top:calc(2 * var(--default-grid-baseline))}[data-v-fab7cffe] .vc-chrome{width:unset;background-color:var(--color-main-background)}[data-v-fab7cffe] .vc-chrome-color-wrap{width:30px;height:30px}[data-v-fab7cffe] .vc-chrome-active-color{border-radius:17px}[data-v-fab7cffe] .vc-chrome-body{padding:14px 0 0;background-color:var(--color-main-background)}[data-v-fab7cffe] .vc-chrome-body .vc-input__input{--input-border-radius: var(--border-radius-element);--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));width:100%;height:var(--default-clickable-area);margin:0;padding-inline:calc(var(--border-radius-element) + var(--input-border-width-offset));padding-block:var(--input-border-width-offset);border:var(--border-width-input, 2px) solid var(--color-border-maxcontrast);border-radius:var(--input-border-radius);font-size:var(--default-font-size);color:var(--color-main-text);box-shadow:none}[data-v-fab7cffe] .vc-chrome-body .vc-input__input:active:not([disabled]),[data-v-fab7cffe] .vc-chrome-body .vc-input__input:hover:not([disabled]),[data-v-fab7cffe] .vc-chrome-body .vc-input__input:focus:not([disabled]){--input-border-width-offset: 0px;border-color:var(--color-main-text);border-width:var(--border-width-input-focused, 2px);box-shadow:0 0 0 2px var(--color-main-background)!important}[data-v-fab7cffe] .vc-chrome-body .vc-input__input:active:not([disabled])+.vc-input__label,[data-v-fab7cffe] .vc-chrome-body .vc-input__input:hover:not([disabled])+.vc-input__label,[data-v-fab7cffe] .vc-chrome-body .vc-input__input:focus:not([disabled])+.vc-input__label{color:var(--color-main-text)}[data-v-fab7cffe] .vc-chrome-body .vc-input__label{position:absolute;inset-inline:var(--border-width-input-focused, 2px);inset-block-start:calc(-1.5 * var(--font-size-small, 13px) / 2);max-width:fit-content;margin-inline:calc(var(--border-radius-element) - var(--default-grid-baseline));margin-block:0;padding-inline:var(--default-grid-baseline);font-family:var(--font-face);font-size:var(--font-size-small, 13px);line-height:1.5;font-weight:var(--font-weight-element, 500);color:var(--color-text-maxcontrast);background-color:var(--color-main-background);pointer-events:none}[data-v-fab7cffe] .vc-chrome-toggle-btn{display:flex;justify-content:center;align-items:center;width:var(--default-clickable-area);height:var(--default-clickable-area);margin-inline-start:6px;filter:var(--background-invert-if-dark)}[data-v-fab7cffe] .vc-chrome-toggle-icon{width:24px;height:24px;margin:0}[data-v-fab7cffe] .vc-chrome-toggle-icon-highlight{width:var(--default-clickable-area);height:var(--default-clickable-area);inset:0}[data-v-fab7cffe] .vc-chrome-saturation-wrap{border-radius:3px}[data-v-fab7cffe] .vc-chrome-saturation-circle{width:20px;height:20px}.slide-enter-from[data-v-fab7cffe]{transform:translate(-50%);opacity:0}.slide-enter-to[data-v-fab7cffe],.slide-leave-from[data-v-fab7cffe]{transform:translate(0);opacity:1}.slide-leave-to[data-v-fab7cffe]{transform:translate(-50%);opacity:0}.slide-enter-active[data-v-fab7cffe],.slide-leave-active[data-v-fab7cffe]{transition:all 50ms ease-in-out} diff --git a/css/personalSettings-i1_v3FZk.chunk.css b/css/personalSettings-i1_v3FZk.chunk.css deleted file mode 100644 index 9239886e..00000000 --- a/css/personalSettings-i1_v3FZk.chunk.css +++ /dev/null @@ -1,7 +0,0 @@ -@charset "UTF-8";.material-design-icon[data-v-ab2ff78b]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-ab2ff78b]:hover,li.action.active[data-v-ab2ff78b]{border-radius:6px;padding:0}li.action[data-v-ab2ff78b]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-ab2ff78b]{pointer-events:none;opacity:.5}.action--disabled[data-v-ab2ff78b]:hover,.action--disabled[data-v-ab2ff78b]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-ab2ff78b]{opacity:1!important}.action-button[data-v-ab2ff78b]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-element, normal);font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-button>span[data-v-ab2ff78b]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-ab2ff78b]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-button[data-v-ab2ff78b] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;opacity:1}.action-button[data-v-ab2ff78b] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-button__longtext-wrapper[data-v-ab2ff78b],.action-button__longtext[data-v-ab2ff78b]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-button__longtext[data-v-ab2ff78b]{cursor:pointer;white-space:pre-wrap!important}.action-button__name[data-v-ab2ff78b]{font-weight:var(--font-weight-heading, bold);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-button__description[data-v-ab2ff78b]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);font-weight:var(--font-weight-default, normal);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-button__menu-icon[data-v-ab2ff78b],.action-button__pressed-icon[data-v-ab2ff78b]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action-button *[data-v-ab2ff78b]{cursor:pointer}.material-design-icon[data-v-4625d649]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.icon-vue[data-v-4625d649]{--icon-size: var(--dad67fa8);display:flex;justify-content:center;align-items:center;min-width:var(--default-clickable-area);min-height:var(--default-clickable-area);opacity:1}.icon-vue--inline[data-v-4625d649]{display:inline-flex;min-width:fit-content;min-height:fit-content;vertical-align:text-bottom}.icon-vue span[data-v-4625d649]{line-height:0}.icon-vue[data-v-4625d649] svg{fill:currentColor;width:var(--icon-size, 20px);height:var(--icon-size, 20px);max-width:var(--icon-size, 20px);max-height:var(--icon-size, 20px)}.icon-vue--directional[data-v-4625d649] svg:dir(rtl){transform:scaleX(-1)}.material-design-icon[data-v-d5482fd6]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.nc-button-group-base>div[data-v-d5482fd6]{text-align:center;color:var(--color-text-maxcontrast)}.nc-button-group-base ul.nc-button-group-content[data-v-d5482fd6]{display:flex;gap:4px;justify-content:space-between}.nc-button-group-base ul.nc-button-group-content[data-v-d5482fd6] li{flex:1 1}.nc-button-group-base ul.nc-button-group-content[data-v-d5482fd6] .action-button{padding:0!important;width:100%;display:flex;justify-content:center}.nc-button-group-base ul.nc-button-group-content[data-v-d5482fd6] .action-button.action-button--active{background-color:var(--color-primary-element);border-radius:var(--border-radius-large);color:var(--color-primary-element-text)}.nc-button-group-base ul.nc-button-group-content[data-v-d5482fd6] .action-button.action-button--active:hover,.nc-button-group-base ul.nc-button-group-content[data-v-d5482fd6] .action-button.action-button--active:focus,.nc-button-group-base ul.nc-button-group-content[data-v-d5482fd6] .action-button.action-button--active:focus-within{background-color:var(--color-primary-element-hover)}.nc-button-group-base ul.nc-button-group-content[data-v-d5482fd6] .action-button .action-button__pressed-icon{display:none}.material-design-icon[data-v-7bf21eca]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-caption[data-v-7bf21eca]{color:var(--color-text-maxcontrast);line-height:var(--default-clickable-area);white-space:nowrap;text-overflow:ellipsis;box-shadow:none!important;-webkit-user-select:none;user-select:none;pointer-events:none;margin-inline-start:12px;padding-inline-end:14px;height:var(--default-clickable-area);display:flex;align-items:center}.material-design-icon[data-v-7fbb3c95]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-7fbb3c95]:hover,li.action.active[data-v-7fbb3c95]{border-radius:6px;padding:0}li.action[data-v-7fbb3c95]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-7fbb3c95]{pointer-events:none;opacity:.5}.action--disabled[data-v-7fbb3c95]:hover,.action--disabled[data-v-7fbb3c95]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-7fbb3c95]{opacity:1!important}.action-checkbox[data-v-7fbb3c95]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-element, normal);font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-checkbox>span[data-v-7fbb3c95]{cursor:pointer;white-space:nowrap}.action-checkbox__icon[data-v-7fbb3c95]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-checkbox[data-v-7fbb3c95] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;opacity:1}.action-checkbox[data-v-7fbb3c95] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-checkbox__longtext-wrapper[data-v-7fbb3c95],.action-checkbox__longtext[data-v-7fbb3c95]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-checkbox__longtext[data-v-7fbb3c95]{cursor:pointer;white-space:pre-wrap!important}.action-checkbox__name[data-v-7fbb3c95]{font-weight:var(--font-weight-heading, bold);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-checkbox__description[data-v-7fbb3c95]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);font-weight:var(--font-weight-default, normal);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-checkbox__menu-icon[data-v-7fbb3c95]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action[data-v-7fbb3c95]:has(:focus-visible){outline:2px solid currentColor}.action-checkbox__icon[data-v-7fbb3c95]{color:var(--color-primary-element)}.action-checkbox__input[data-v-7fbb3c95]{width:20px;height:20px;margin:auto;position:absolute;z-index:-1;opacity:0!important}.material-design-icon[data-v-15d84b0d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}button[data-v-15d84b0d]:not(.button-vue),input[data-v-15d84b0d]:not([type=range]),textarea[data-v-15d84b0d]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-15d84b0d]:not(.button-vue):not(:disabled):not(.primary):hover,button[data-v-15d84b0d]:not(.button-vue):not(:disabled):not(.primary):focus,button:not(.button-vue):not(:disabled):not(.primary).active[data-v-15d84b0d],input[data-v-15d84b0d]:not([type=range]):not(:disabled):not(.primary):hover,input[data-v-15d84b0d]:not([type=range]):not(:disabled):not(.primary):focus,input:not([type=range]):not(:disabled):not(.primary).active[data-v-15d84b0d],textarea[data-v-15d84b0d]:not(:disabled):not(.primary):hover,textarea[data-v-15d84b0d]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-15d84b0d]{border-color:var(--color-primary-element);outline:none}button[data-v-15d84b0d]:not(.button-vue):not(:disabled):not(.primary):active,input[data-v-15d84b0d]:not([type=range]):not(:disabled):not(.primary):active,textarea[data-v-15d84b0d]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-15d84b0d]:not(.button-vue):disabled,input[data-v-15d84b0d]:not([type=range]):disabled,textarea[data-v-15d84b0d]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-15d84b0d]:not(.button-vue):required,input[data-v-15d84b0d]:not([type=range]):required,textarea[data-v-15d84b0d]:required{box-shadow:none}button[data-v-15d84b0d]:not(.button-vue):invalid,input[data-v-15d84b0d]:not([type=range]):invalid,textarea[data-v-15d84b0d]:invalid{border-color:var(--color-border-error, var(--color-error));box-shadow:none!important}button:not(.button-vue).primary[data-v-15d84b0d],input:not([type=range]).primary[data-v-15d84b0d],textarea.primary[data-v-15d84b0d]{cursor:pointer;color:var(--color-primary-element-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button:not(.button-vue).primary[data-v-15d84b0d]:not(:disabled):hover,button:not(.button-vue).primary[data-v-15d84b0d]:not(:disabled):focus,button:not(.button-vue).primary[data-v-15d84b0d]:not(:disabled):active,input:not([type=range]).primary[data-v-15d84b0d]:not(:disabled):hover,input:not([type=range]).primary[data-v-15d84b0d]:not(:disabled):focus,input:not([type=range]).primary[data-v-15d84b0d]:not(:disabled):active,textarea.primary[data-v-15d84b0d]:not(:disabled):hover,textarea.primary[data-v-15d84b0d]:not(:disabled):focus,textarea.primary[data-v-15d84b0d]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button:not(.button-vue).primary[data-v-15d84b0d]:not(:disabled):active,input:not([type=range]).primary[data-v-15d84b0d]:not(:disabled):active,textarea.primary[data-v-15d84b0d]:not(:disabled):active{color:var(--color-primary-element-text-dark)}button:not(.button-vue).primary[data-v-15d84b0d]:disabled,input:not([type=range]).primary[data-v-15d84b0d]:disabled,textarea.primary[data-v-15d84b0d]:disabled{cursor:default;color:var(--color-primary-element-text-dark);background-color:var(--color-primary-element)}li.action[data-v-15d84b0d]:hover,li.action.active[data-v-15d84b0d]{border-radius:6px;padding:0}li.action[data-v-15d84b0d]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-15d84b0d]{pointer-events:none;opacity:.5}.action--disabled[data-v-15d84b0d]:hover,.action--disabled[data-v-15d84b0d]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-15d84b0d]{opacity:1!important}.action-input[data-v-15d84b0d]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-default, normal)}.action-input__icon-wrapper[data-v-15d84b0d]{display:flex;align-self:flex-start;margin-top:var(--default-grid-baseline);align-items:center;justify-content:center}.action-input__icon-wrapper[data-v-15d84b0d] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-input__icon-wrapper[data-v-15d84b0d] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-input--tight-label .action-input__icon-wrapper[data-v-15d84b0d]{margin-top:0}.action-input>span[data-v-15d84b0d]{cursor:pointer;white-space:nowrap}.action-input__icon[data-v-15d84b0d]{min-width:0;min-height:0;padding:calc(var(--default-clickable-area) / 2) 0 calc(var(--default-clickable-area) / 2) var(--default-clickable-area);background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px}.action-input__form[data-v-15d84b0d]{display:flex;align-items:center;flex:1 1 auto;margin:4px 0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.action-input__container[data-v-15d84b0d]{position:relative;width:100%}.action-input__input-container[data-v-15d84b0d]{display:flex}.action-input__input-container .colorpicker__trigger[data-v-15d84b0d],.action-input__input-container .colorpicker__preview[data-v-15d84b0d]{width:100%}.action-input__input-container .colorpicker__preview[data-v-15d84b0d]{width:100%;height:36px;border-radius:var(--border-radius-large);border:2px solid var(--color-border-maxcontrast);box-shadow:none!important}.action-input__text-label[data-v-15d84b0d]{padding:4px 0;display:block}.action-input__text-label--hidden[data-v-15d84b0d]{position:absolute;inset-inline-start:0;width:1px;height:1px;overflow:hidden;z-index:-1;opacity:0}.action-input__datetimepicker[data-v-15d84b0d]{width:100%}.action-input__datetimepicker[data-v-15d84b0d] .mx-input{margin:0}.action-input__multi[data-v-15d84b0d]{width:100%}li:last-child>.action-input[data-v-15d84b0d]{padding-bottom:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}li:first-child>.action-input[data-v-15d84b0d]:not(.action-input--visible-label){padding-top:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}.material-design-icon[data-v-07e96236]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.native-datetime-picker[data-v-07e96236]{display:flex;flex-direction:column}.native-datetime-picker .native-datetime-picker--label[data-v-07e96236]{margin-block-end:2px}.native-datetime-picker .native-datetime-picker--input[data-v-07e96236]{--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));width:100%;flex:0 0 auto;margin:0;padding-inline-start:calc(var(--border-radius-large) + var(--input-border-width-offset));padding-inline-end:calc(var(--default-grid-baseline) + var(--input-border-width-offset));border:var(--border-width-input, 2px) solid var(--color-border-maxcontrast)}.native-datetime-picker .native-datetime-picker--input[data-v-07e96236]:active:not([disabled]),.native-datetime-picker .native-datetime-picker--input[data-v-07e96236]:hover:not([disabled]),.native-datetime-picker .native-datetime-picker--input[data-v-07e96236]:focus:not([disabled]),.native-datetime-picker .native-datetime-picker--input[data-v-07e96236]:focus-within:not([disabled]){border-color:var(--color-main-text);border-width:var(--border-width-input-focused, 2px);box-shadow:0 0 0 2px var(--color-main-background)!important;--input-border-width-offset: 0px}[data-theme-light] .native-datetime-picker--input[data-v-07e96236],[data-themes*=light] .native-datetime-picker--input[data-v-07e96236]{color-scheme:light}[data-theme-dark] .native-datetime-picker--input[data-v-07e96236],[data-themes*=dark] .native-datetime-picker--input[data-v-07e96236]{color-scheme:dark}@media(prefers-color-scheme:light){[data-theme-default] .native-datetime-picker--input[data-v-07e96236],[data-themes*=default] .native-datetime-picker--input[data-v-07e96236]{color-scheme:light}}@media(prefers-color-scheme:dark){[data-theme-default] .native-datetime-picker--input[data-v-07e96236],[data-themes*=default] .native-datetime-picker--input[data-v-07e96236]{color-scheme:dark}}.material-design-icon[data-v-0800cef1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}[data-v-0800cef1] .password-field__input--secure-text{-webkit-text-security:disc}.material-design-icon[data-v-17c3f609]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.input-field[data-v-17c3f609]{--input-border-color: var(--color-border-maxcontrast);--input-border-radius: var(--border-radius-element);--input-padding-start: var(--border-radius-large);--input-padding-end: var(--border-radius-large);position:relative;width:100%;margin-block-start:6px}.input-field--disabled[data-v-17c3f609]{opacity:.4;filter:saturate(.4)}.input-field--label-outside[data-v-17c3f609]{margin-block-start:0}.input-field--leading-icon[data-v-17c3f609]{--input-padding-start: calc(var(--default-clickable-area) - var(--default-grid-baseline))}.input-field--trailing-icon[data-v-17c3f609]{--input-padding-end: calc(var(--default-clickable-area) - var(--default-grid-baseline))}.input-field--pill[data-v-17c3f609]{--input-border-radius: var(--border-radius-pill)}.input-field__main-wrapper[data-v-17c3f609]{height:var(--default-clickable-area);padding:var(--border-width-input-focused, 2px);position:relative}.input-field__input[data-v-17c3f609]{--input-border-box-shadow-light: 0 -1px var(--input-border-color), 0 0 0 1px color-mix(in srgb, var(--input-border-color), 65% transparent);--input-border-box-shadow-dark: 0 1px var(--input-border-color), 0 0 0 1px color-mix(in srgb, var(--input-border-color), 65% transparent);--input-border-box-shadow: var(--input-border-box-shadow-light);border:none;border-radius:var(--border-radius-element);box-shadow:var(--input-border-box-shadow)}.input-field__input[data-v-17c3f609]:hover:not([disabled]){box-shadow:0 0 0 1px var(--input-border-color)}@media(prefers-color-scheme:dark){.input-field__input .input-field__input[data-v-17c3f609]{--input-border-box-shadow: var(--input-border-box-shadow-dark)}}[data-theme-dark] .input-field__input[data-v-17c3f609]{--input-border-box-shadow: var(--input-border-box-shadow-dark)}[data-theme-light] .input-field__input[data-v-17c3f609]{--input-border-box-shadow: var(--input-border-box-shadow-light)}.input-field--legacy .input-field__input[data-v-17c3f609]{box-shadow:0 0 0 1px var(--input-border-color)}.input-field--legacy .input-field__input[data-v-17c3f609]:hover:not([disabled]){box-shadow:0 0 0 2px var(--input-border-color)}.input-field__input[data-v-17c3f609]:focus-within:not([disabled]),.input-field__input[data-v-17c3f609]:active:not([disabled]){box-shadow:0 0 0 2px var(--input-border-color),0 0 0 4px var(--color-main-background)!important}.input-field__input[data-v-17c3f609]{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--input-border-radius);cursor:pointer;-webkit-appearance:textfield!important;-moz-appearance:textfield!important;appearance:textfield!important;font-size:var(--default-font-size);text-overflow:ellipsis;padding-block:0;padding-inline:var(--input-padding-start) var(--input-padding-end);height:100%!important;min-height:unset;width:100%}.input-field__input[data-v-17c3f609]::placeholder{color:var(--color-text-maxcontrast)}.input-field__input[data-v-17c3f609]::-webkit-search-cancel-button{display:none}.input-field__input[data-v-17c3f609]::-webkit-search-decoration,.input-field__input[data-v-17c3f609]::-webkit-search-results-button,.input-field__input[data-v-17c3f609]::-webkit-search-results-decoration,.input-field__input[data-v-17c3f609]::-ms-clear{display:none}.input-field__input[data-v-17c3f609]:active:not([disabled]),.input-field__input[data-v-17c3f609]:focus:not([disabled]){--input-border-color: var(--color-main-text)}.input-field__input:focus+.input-field__label[data-v-17c3f609],.input-field__input:hover:not(:placeholder-shown)+.input-field__label[data-v-17c3f609]{color:var(--color-main-text)}.input-field__input[data-v-17c3f609]:focus{cursor:text}.input-field__input[data-v-17c3f609]:disabled{cursor:default}.input-field__input[data-v-17c3f609]:focus-visible{box-shadow:unset!important}.input-field__input--success[data-v-17c3f609]{border-color:var(--color-border-success, var(--color-success))!important}.input-field__input--success[data-v-17c3f609]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field__input--error[data-v-17c3f609],.input-field__input[data-v-17c3f609]:user-invalid{border-color:var(--color-border-error, var(--color-error))!important}.input-field__input--error[data-v-17c3f609]:focus-visible,.input-field__input[data-v-17c3f609]:user-invalid:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field:not(.input-field--label-outside) .input-field__input[data-v-17c3f609]:not(:focus)::placeholder{opacity:0}.input-field__label[data-v-17c3f609]{--input-label-font-size: var(--default-font-size);position:absolute;margin-inline:var(--input-padding-start) var(--input-padding-end);max-width:fit-content;font-size:var(--input-label-font-size);inset-block-start:calc((var(--default-clickable-area) - 1lh) / 2);inset-inline:var(--border-width-input-focused, 2px);color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.input-field__input:focus+.input-field__label[data-v-17c3f609],.input-field__input:not(:placeholder-shown)+.input-field__label[data-v-17c3f609]{--input-label-font-size: 13px;line-height:1.5;inset-block-start:calc(-1.5 * var(--input-label-font-size) / 2);font-weight:var(--font-weight-element, 500);border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:var(--default-grid-baseline);margin-inline:calc(var(--input-padding-start) - var(--default-grid-baseline)) calc(var(--input-padding-end) - var(--default-grid-baseline));transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.input-field__icon[data-v-17c3f609]{position:absolute;height:var(--default-clickable-area);width:var(--default-clickable-area);display:flex;align-items:center;justify-content:center;opacity:.7;inset-block-end:0}.input-field__icon--leading[data-v-17c3f609]{inset-inline-start:0px}.input-field__icon--trailing[data-v-17c3f609]{inset-inline-end:0px}.input-field__trailing-button[data-v-17c3f609]{--button-size: calc(var(--default-clickable-area) - 2 * var(--border-width-input-focused, 2px)) !important;--button-radius: calc(var(--input-border-radius) - var(--border-width-input-focused, 2px))}.input-field__trailing-button.button-vue[data-v-17c3f609]{position:absolute;top:var(--border-width-input-focused, 2px);inset-inline-end:var(--border-width-input-focused, 2px)}.input-field__trailing-button.button-vue[data-v-17c3f609]:focus-visible{box-shadow:none!important}.input-field__helper-text-message[data-v-17c3f609]{padding-block:4px;padding-inline:var(--border-radius-large);display:flex;align-items:center;color:var(--color-text-maxcontrast);overflow-wrap:anywhere}.input-field__helper-text-message__icon[data-v-17c3f609]{margin-inline-end:8px}.input-field__helper-text-message--error[data-v-17c3f609]{color:var(--color-text-error, var(--color-error))}.input-field--error .input-field__input[data-v-17c3f609],.input-field__input[data-v-17c3f609]:user-invalid{--input-border-color: var(--color-border-error, var(--color-error)) !important}.input-field--error .input-field__input[data-v-17c3f609]:focus-visible,.input-field__input[data-v-17c3f609]:user-invalid:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field--success .input-field__input[data-v-17c3f609]{--input-border-color: var(--color-border-success, var(--color-success)) !important}.input-field--success .input-field__input[data-v-17c3f609]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.material-design-icon[data-v-29ac0caf]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-29ac0caf]{--button-size: var(--default-clickable-area);--button-inner-size: calc(var(--button-size) - 4px);--button-radius: var(--border-radius-element, calc(var(--button-size) / 2));--button-padding-default: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));--button-padding: var(--default-grid-baseline) var(--button-padding-default);color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light);border:1px solid var(--color-primary-element-light-hover);border-bottom-width:2px;border-radius:var(--button-radius);box-sizing:border-box;position:relative;width:fit-content;overflow:hidden;padding-block:1px 0;padding-inline:var(--button-padding);min-height:var(--button-size);min-width:var(--button-size);display:flex;align-items:center;justify-content:center;transition-property:color,border-color,background-color;transition-duration:.1s;transition-timing-function:linear;cursor:pointer;font-size:var(--default-font-size);font-weight:var(--font-weight-element, bold)}.button-vue--size-small[data-v-29ac0caf]{--button-size: var(--clickable-area-small, 24px);--button-radius: var(--border-radius)}.button-vue--size-large[data-v-29ac0caf]{--button-size: var(--clickable-area-large, 48px)}.button-vue[data-v-29ac0caf],.button-vue[data-v-29ac0caf] *{cursor:pointer}.button-vue[data-v-29ac0caf]:focus{outline:none}.button-vue[data-v-29ac0caf]:disabled{cursor:default;opacity:.5;filter:saturate(.7)}.button-vue[data-v-29ac0caf]:disabled *{cursor:default}.button-vue[data-v-29ac0caf]:hover:not(:disabled){background-color:var(--color-primary-element-light-hover)}.button-vue[data-v-29ac0caf]:active:not(:disabled){background-color:var(--color-primary-element-light)}.button-vue__wrapper[data-v-29ac0caf]{display:inline-flex;align-items:center;justify-content:center;width:100%}.button-vue--end .button-vue__wrapper[data-v-29ac0caf]{justify-content:end}.button-vue--start .button-vue__wrapper[data-v-29ac0caf]{justify-content:start}.button-vue--reverse .button-vue__wrapper[data-v-29ac0caf]{flex-direction:row-reverse}.button-vue--reverse.button-vue--icon-and-text[data-v-29ac0caf]{--button-padding: var(--button-padding-default) var(--default-grid-baseline)}.button-vue__icon[data-v-29ac0caf]{--default-clickable-area: var(--button-inner-size);height:var(--button-inner-size);width:var(--button-inner-size);min-height:var(--button-inner-size);min-width:var(--button-inner-size);display:flex;justify-content:center;align-items:center}.button-vue--size-small .button-vue__icon[data-v-29ac0caf]>*{max-height:16px;max-width:16px}.button-vue--size-small .button-vue__icon[data-v-29ac0caf] svg{height:16px;width:16px}.button-vue__text[data-v-29ac0caf]{font-weight:var(--font-weight-element, bold);margin-bottom:1px;padding:2px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.button-vue--icon-only[data-v-29ac0caf]{--button-padding: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));line-height:1;width:var(--button-size)!important}.button-vue--text-only[data-v-29ac0caf]{--button-padding: var(--button-padding-default)}.button-vue--text-only .button-vue__text[data-v-29ac0caf]{margin-inline:4px}.button-vue--wide[data-v-29ac0caf]{width:100%}.button-vue[data-v-29ac0caf]:focus-visible{outline:2px solid var(--color-main-text)!important;box-shadow:0 0 0 4px var(--color-main-background)!important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-29ac0caf]{outline:2px solid var(--color-primary-element-text);border-radius:var(--border-radius-element, var(--border-radius));background-color:transparent}.button-vue--vue-primary[data-v-29ac0caf]{background-color:var(--color-primary-element);border-color:var(--color-primary-element-hover);color:var(--color-primary-element-text)}.button-vue--vue-primary[data-v-29ac0caf]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-29ac0caf]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-29ac0caf]{background-color:var(--color-primary-element-light);border-color:var(--color-primary-element-light-hover);color:var(--color-primary-element-light-text)}.button-vue--vue-secondary[data-v-29ac0caf]:hover:not(:disabled){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light-hover)}.button-vue--tertiary[data-v-29ac0caf],.button-vue--vue-tertiary[data-v-29ac0caf]{background-color:transparent;border-color:transparent;color:var(--color-main-text)}.button-vue--tertiary[data-v-29ac0caf]:hover:not(:disabled),.button-vue--vue-tertiary[data-v-29ac0caf]:hover:not(:disabled){background-color:var(--color-background-hover)}.button-vue--tertiary[data-v-29ac0caf]:not(.button-vue--legacy34):hover:not(:disabled){background-color:color-mix(in srgb,var(--color-primary-element) 8%,transparent)}.button-vue--vue-tertiary-no-background[data-v-29ac0caf]:hover:not(:disabled){background-color:transparent}.button-vue--vue-tertiary-on-primary[data-v-29ac0caf]{color:var(--color-primary-element-text)}.button-vue--vue-tertiary-on-primary[data-v-29ac0caf]:hover:not(:disabled){background-color:transparent}.button-vue--vue-success[data-v-29ac0caf]{background-color:var(--color-success);border-color:var(--color-success-hover);color:var(--color-success-text)}.button-vue--vue-success[data-v-29ac0caf]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-29ac0caf]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-29ac0caf]{background-color:var(--color-warning);border-color:var(--color-warning-hover);color:var(--color-warning-text)}.button-vue--vue-warning[data-v-29ac0caf]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-29ac0caf]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-29ac0caf]{background-color:var(--color-error);border-color:var(--color-error-hover);color:var(--color-error-text)}.button-vue--vue-error[data-v-29ac0caf]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-29ac0caf]:active{background-color:var(--color-error)}.button-vue--legacy[data-v-29ac0caf]{--button-inner-size: var(--button-size);border:none;padding-block:0}.button-vue--legacy.button-vue--vue-error[data-v-29ac0caf],.button-vue--legacy.button-vue--vue-success[data-v-29ac0caf],.button-vue--legacy.button-vue--vue-warning[data-v-29ac0caf]{color:#fff}.material-design-icon[data-v-b7a160c7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-b7a160c7]:hover,li.action.active[data-v-b7a160c7]{border-radius:6px;padding:0}li.action[data-v-b7a160c7]:hover{background-color:var(--color-background-hover)}.action-link[data-v-b7a160c7]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-element, normal);font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-link>span[data-v-b7a160c7]{cursor:pointer;white-space:nowrap}.action-link__icon[data-v-b7a160c7]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-link[data-v-b7a160c7] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;opacity:1}.action-link[data-v-b7a160c7] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-link__longtext-wrapper[data-v-b7a160c7],.action-link__longtext[data-v-b7a160c7]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-link__longtext[data-v-b7a160c7]{cursor:pointer;white-space:pre-wrap!important}.action-link__name[data-v-b7a160c7]{font-weight:var(--font-weight-heading, bold);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-link__description[data-v-b7a160c7]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);font-weight:var(--font-weight-default, normal);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-link__menu-icon[data-v-b7a160c7]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.material-design-icon[data-v-a3f0f3fe]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-a3f0f3fe]:hover,li.action.active[data-v-a3f0f3fe]{border-radius:6px;padding:0}li.action[data-v-a3f0f3fe]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-a3f0f3fe]{pointer-events:none;opacity:.5}.action--disabled[data-v-a3f0f3fe]:hover,.action--disabled[data-v-a3f0f3fe]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-a3f0f3fe]{opacity:1!important}.action-radio[data-v-a3f0f3fe]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-element, normal);font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-radio>span[data-v-a3f0f3fe]{cursor:pointer;white-space:nowrap}.action-radio__icon[data-v-a3f0f3fe]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-radio[data-v-a3f0f3fe] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;opacity:1}.action-radio[data-v-a3f0f3fe] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-radio__longtext-wrapper[data-v-a3f0f3fe],.action-radio__longtext[data-v-a3f0f3fe]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-radio__longtext[data-v-a3f0f3fe]{cursor:pointer;white-space:pre-wrap!important}.action-radio__name[data-v-a3f0f3fe]{font-weight:var(--font-weight-heading, bold);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-radio__description[data-v-a3f0f3fe]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);font-weight:var(--font-weight-default, normal);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-radio__menu-icon[data-v-a3f0f3fe]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action[data-v-a3f0f3fe]:has(:focus-visible){outline:2px solid currentColor}.action-radio__icon[data-v-a3f0f3fe]{color:var(--color-primary-element)}.action-radio__input[data-v-a3f0f3fe]{width:20px;height:20px;margin:auto;position:absolute;z-index:-1;opacity:0!important}.material-design-icon[data-v-4dae1ff7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-4dae1ff7]:hover,li.action.active[data-v-4dae1ff7]{border-radius:6px;padding:0}li.action[data-v-4dae1ff7]:hover{background-color:var(--color-background-hover)}.action-router[data-v-4dae1ff7]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-element, normal);font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-router>span[data-v-4dae1ff7]{cursor:pointer;white-space:nowrap}.action-router__icon[data-v-4dae1ff7]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-router[data-v-4dae1ff7] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;opacity:1}.action-router[data-v-4dae1ff7] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-router__longtext-wrapper[data-v-4dae1ff7],.action-router__longtext[data-v-4dae1ff7]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-router__longtext[data-v-4dae1ff7]{cursor:pointer;white-space:pre-wrap!important}.action-router__name[data-v-4dae1ff7]{font-weight:var(--font-weight-heading, bold);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-router__description[data-v-4dae1ff7]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);font-weight:var(--font-weight-default, normal);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-router__menu-icon[data-v-4dae1ff7]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action--disabled[data-v-4dae1ff7]{pointer-events:none;opacity:.5}.action--disabled[data-v-4dae1ff7]:hover,.action--disabled[data-v-4dae1ff7]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-4dae1ff7]{opacity:1!important}.material-design-icon[data-v-38a26e61]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-items[data-v-38a26e61]{display:flex;align-items:center;gap:calc((var(--default-clickable-area) - 16px) / 2 / 2)}.action-item[data-v-38a26e61]{--open-background-color: var(--color-background-hover, $action-background-hover);position:relative;display:inline-block}.action-item.action-item--primary[data-v-38a26e61]{--open-background-color: var(--color-primary-element-hover)}.action-item.action-item--secondary[data-v-38a26e61]{--open-background-color: var(--color-primary-element-light-hover)}.action-item.action-item--error[data-v-38a26e61]{--open-background-color: var(--color-error-hover)}.action-item.action-item--warning[data-v-38a26e61]{--open-background-color: var(--color-warning-hover)}.action-item.action-item--success[data-v-38a26e61]{--open-background-color: var(--color-success-hover)}.action-item.action-item--tertiary-no-background[data-v-38a26e61]{--open-background-color: transparent}.action-item.action-item--open .action-item__menutoggle[data-v-38a26e61]{background-color:var(--open-background-color)}.action-item__menutoggle__icon[data-v-38a26e61]{width:20px;height:20px;object-fit:contain}.v-popper--theme-nc-popover-8.v-popper__popper.action-item__popper .v-popper__wrapper{border-radius:var(--border-radius-large)}.v-popper--theme-nc-popover-8.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner{border-radius:var(--border-radius-large);padding:4px;max-height:calc(100vh - var(--header-height));overflow:auto}._material-design-icon_AAwhR{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._ncPopover_6PjkA.v-popper--theme-nc-popover-8 .resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}._ncPopover_6PjkA.v-popper--theme-nc-popover-8 .resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}._ncPopover_6PjkA.v-popper--theme-nc-popover-8.v-popper__popper{z-index:100000;top:0;left:0;display:block!important}._ncPopover_6PjkA.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__wrapper{box-shadow:0 1px 10px var(--color-box-shadow);border-radius:var(--border-radius-large)}._ncPopover_6PjkA.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius-large);overflow:hidden;background:var(--color-main-background)}._ncPopover_6PjkA.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;border-style:solid;border-color:transparent;border-width:10px}._ncPopover_6PjkA.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-9px;border-bottom-width:0;border-top-color:var(--color-main-background)}._ncPopover_6PjkA.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-9px;border-top-width:0;border-bottom-color:var(--color-main-background)}._ncPopover_6PjkA.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{left:-9px;border-left-width:0;border-right-color:var(--color-main-background)}._ncPopover_6PjkA.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-9px;border-right-width:0;border-left-color:var(--color-main-background)}._ncPopover_6PjkA.v-popper--theme-nc-popover-8.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}._ncPopover_6PjkA.v-popper--theme-nc-popover-8.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity var(--animation-quick);opacity:1}.material-design-icon[data-v-3e2324b7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-separator[data-v-3e2324b7]{height:0;margin:5px 10px 5px 15px;border-bottom:1px solid var(--color-border-dark);cursor:default}.material-design-icon[data-v-2fe7eb92]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-2fe7eb92]:hover,li.action.active[data-v-2fe7eb92]{border-radius:6px;padding:0}li.action[data-v-2fe7eb92]:hover{background-color:var(--color-background-hover)}.action-text[data-v-2fe7eb92]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-element, normal);font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-text>span[data-v-2fe7eb92]{cursor:pointer;white-space:nowrap}.action-text__icon[data-v-2fe7eb92]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-text[data-v-2fe7eb92] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;opacity:1}.action-text[data-v-2fe7eb92] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-text__longtext-wrapper[data-v-2fe7eb92],.action-text__longtext[data-v-2fe7eb92]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-text__longtext[data-v-2fe7eb92]{cursor:pointer;white-space:pre-wrap!important}.action-text__name[data-v-2fe7eb92]{font-weight:var(--font-weight-heading, bold);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-text__description[data-v-2fe7eb92]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);font-weight:var(--font-weight-default, normal);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-text__menu-icon[data-v-2fe7eb92]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action--disabled[data-v-2fe7eb92]{pointer-events:none;opacity:.5}.action--disabled[data-v-2fe7eb92]:hover,.action--disabled[data-v-2fe7eb92]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-2fe7eb92]{opacity:1!important}.action-text[data-v-2fe7eb92],.action-text span[data-v-2fe7eb92]{cursor:default}.material-design-icon[data-v-cf6c5275]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}button[data-v-cf6c5275]:not(.button-vue),input[data-v-cf6c5275]:not([type=range]),textarea[data-v-cf6c5275]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-cf6c5275]:not(.button-vue):not(:disabled):not(.primary):hover,button[data-v-cf6c5275]:not(.button-vue):not(:disabled):not(.primary):focus,button:not(.button-vue):not(:disabled):not(.primary).active[data-v-cf6c5275],input[data-v-cf6c5275]:not([type=range]):not(:disabled):not(.primary):hover,input[data-v-cf6c5275]:not([type=range]):not(:disabled):not(.primary):focus,input:not([type=range]):not(:disabled):not(.primary).active[data-v-cf6c5275],textarea[data-v-cf6c5275]:not(:disabled):not(.primary):hover,textarea[data-v-cf6c5275]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-cf6c5275]{border-color:var(--color-primary-element);outline:none}button[data-v-cf6c5275]:not(.button-vue):not(:disabled):not(.primary):active,input[data-v-cf6c5275]:not([type=range]):not(:disabled):not(.primary):active,textarea[data-v-cf6c5275]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-cf6c5275]:not(.button-vue):disabled,input[data-v-cf6c5275]:not([type=range]):disabled,textarea[data-v-cf6c5275]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-cf6c5275]:not(.button-vue):required,input[data-v-cf6c5275]:not([type=range]):required,textarea[data-v-cf6c5275]:required{box-shadow:none}button[data-v-cf6c5275]:not(.button-vue):invalid,input[data-v-cf6c5275]:not([type=range]):invalid,textarea[data-v-cf6c5275]:invalid{border-color:var(--color-border-error, var(--color-error));box-shadow:none!important}button:not(.button-vue).primary[data-v-cf6c5275],input:not([type=range]).primary[data-v-cf6c5275],textarea.primary[data-v-cf6c5275]{cursor:pointer;color:var(--color-primary-element-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button:not(.button-vue).primary[data-v-cf6c5275]:not(:disabled):hover,button:not(.button-vue).primary[data-v-cf6c5275]:not(:disabled):focus,button:not(.button-vue).primary[data-v-cf6c5275]:not(:disabled):active,input:not([type=range]).primary[data-v-cf6c5275]:not(:disabled):hover,input:not([type=range]).primary[data-v-cf6c5275]:not(:disabled):focus,input:not([type=range]).primary[data-v-cf6c5275]:not(:disabled):active,textarea.primary[data-v-cf6c5275]:not(:disabled):hover,textarea.primary[data-v-cf6c5275]:not(:disabled):focus,textarea.primary[data-v-cf6c5275]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button:not(.button-vue).primary[data-v-cf6c5275]:not(:disabled):active,input:not([type=range]).primary[data-v-cf6c5275]:not(:disabled):active,textarea.primary[data-v-cf6c5275]:not(:disabled):active{color:var(--color-primary-element-text-dark)}button:not(.button-vue).primary[data-v-cf6c5275]:disabled,input:not([type=range]).primary[data-v-cf6c5275]:disabled,textarea.primary[data-v-cf6c5275]:disabled{cursor:default;color:var(--color-primary-element-text-dark);background-color:var(--color-primary-element)}li.action[data-v-cf6c5275]:hover,li.action.active[data-v-cf6c5275]{border-radius:6px;padding:0}li.action[data-v-cf6c5275]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-cf6c5275]{pointer-events:none;opacity:.5}.action--disabled[data-v-cf6c5275]:hover,.action--disabled[data-v-cf6c5275]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-cf6c5275]{opacity:1!important}.action-text-editable[data-v-cf6c5275]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:var(--font-weight-default, normal);line-height:var(--default-clickable-area)}.action-text-editable>span[data-v-cf6c5275]{cursor:pointer;white-space:nowrap}.action-text-editable__icon[data-v-cf6c5275]{min-width:0;min-height:0;padding:calc(var(--default-clickable-area) / 2) 0 calc(var(--default-clickable-area) / 2) var(--default-clickable-area);background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px}.action-text-editable[data-v-cf6c5275] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);align-self:flex-start;margin-top:var(--default-grid-baseline);opacity:1}.action-text-editable[data-v-cf6c5275] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-text-editable__form[data-v-cf6c5275]{display:flex;flex:1 1 auto;flex-direction:column;position:relative;margin:4px 0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.action-text-editable__submit[data-v-cf6c5275]{position:absolute;inset-inline-start:0;top:auto;width:1px;height:1px;overflow:hidden;z-index:-1;opacity:0}.action-text-editable__label[data-v-cf6c5275]{display:flex;align-items:center;justify-content:center;position:absolute;inset-inline-end:calc((var(--default-clickable-area) - 16px) / 2 + 1px);bottom:1px;width:calc(var(--default-clickable-area) - 8px);height:calc(var(--default-clickable-area) - 8px);box-sizing:border-box;margin:0;padding:7px 6px;border:0;border-radius:50%;background-color:var(--color-main-background);background-clip:padding-box}.action-text-editable__label[data-v-cf6c5275],.action-text-editable__label *[data-v-cf6c5275]{cursor:pointer}.action-text-editable__textarea[data-v-cf6c5275]{flex:1 1 auto;color:inherit;border-color:var(--color-border-maxcontrast);min-height:calc(var(--default-clickable-area) * 2 - 8px);max-height:calc(var(--default-clickable-area) * 3 - 8px);min-width:calc(var(--default-clickable-area) * 4);width:100%!important;margin:0}.action-text-editable__textarea[data-v-cf6c5275]:disabled{cursor:default}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid+.action-text-editable__label[data-v-cf6c5275]{background-color:var(--color-error)}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-cf6c5275]:active,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-cf6c5275]:hover,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-cf6c5275]:focus{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.action-text-editable__textarea:active:not(:disabled)+.action-text-editable__label[data-v-cf6c5275],.action-text-editable__textarea:hover:not(:disabled)+.action-text-editable__label[data-v-cf6c5275],.action-text-editable__textarea:focus:not(:disabled)+.action-text-editable__label[data-v-cf6c5275]{z-index:2;border-color:var(--color-primary-element);border-inline-start-color:transparent}li:last-child>.action-text-editable[data-v-cf6c5275]{margin-bottom:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}li:first-child>.action-text-editable[data-v-cf6c5275]{margin-top:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}.material-design-icon[data-v-d0b1a8bc]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-details-toggle[data-v-d0b1a8bc]{position:sticky;width:var(--default-clickable-area);height:var(--default-clickable-area);padding:calc((var(--default-clickable-area) - 16px) / 2);cursor:pointer;opacity:.6;transform:rotate(180deg);background-color:var(--color-main-background);z-index:2000;top:var(--app-navigation-padding);inset-inline-start:calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2)}.app-details-toggle--mobile[data-v-d0b1a8bc]{inset-inline-start:var(--app-navigation-padding)}.app-details-toggle[data-v-d0b1a8bc]:active,.app-details-toggle[data-v-d0b1a8bc]:hover,.app-details-toggle[data-v-d0b1a8bc]:focus{opacity:1}.material-design-icon[data-v-42ca73dd]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-content[data-v-42ca73dd]{position:initial;z-index:1000;flex-basis:100vw;height:100%;margin:0!important;background-color:var(--color-main-background);min-width:0}.app-content[data-v-42ca73dd]:not(.app-content--has-list){overflow:auto}.app-content-wrapper[data-v-42ca73dd]{position:relative;width:100%;height:100%}.app-content-wrapper--no-split.app-content-wrapper--show-list[data-v-42ca73dd] .app-content-list{display:flex}.app-content-wrapper--no-split.app-content-wrapper--show-list[data-v-42ca73dd] .app-content-details,.app-content-wrapper--no-split.app-content-wrapper--show-details[data-v-42ca73dd] .app-content-list{display:none}.app-content-wrapper--no-split.app-content-wrapper--show-details[data-v-42ca73dd] .app-content-details{display:block}[data-v-42ca73dd] .splitpanes.default-theme .app-content-list{max-width:none;scrollbar-width:auto}[data-v-42ca73dd] .splitpanes.default-theme .splitpanes__pane{background-color:transparent;transition:none}[data-v-42ca73dd] .splitpanes.default-theme .splitpanes__pane-list{min-width:300px;position:sticky}@media only screen and (width<1024px){[data-v-42ca73dd] .splitpanes.default-theme .splitpanes__pane-list{display:none}}[data-v-42ca73dd] .splitpanes.default-theme .splitpanes__pane-details{overflow-y:auto}@media only screen and (width<1024px){[data-v-42ca73dd] .splitpanes.default-theme .splitpanes__pane-details{min-width:100%}}[data-v-42ca73dd] .splitpanes.default-theme .splitpanes__splitter{background-color:var(--color-main-background)}[data-v-42ca73dd] .splitpanes.default-theme .splitpanes__splitter:before,[data-v-42ca73dd] .splitpanes.default-theme .splitpanes__splitter:after{background-color:var(--color-border)}[data-v-42ca73dd] .splitpanes.default-theme.splitpanes--vertical .splitpanes__splitter{border-left:1px solid var(--color-border)}[data-v-42ca73dd] .splitpanes.default-theme.splitpanes--horizontal .splitpanes__splitter{border-top:1px solid var(--color-border)}.app-content-wrapper--show-list[data-v-42ca73dd] .app-content-list{max-width:none}.app-content-wrapper__list[data-v-42ca73dd]{height:100%}.splitpanes{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%}.splitpanes--vertical{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.splitpanes--horizontal{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{-webkit-transition:width .2s ease-out;-o-transition:width .2s ease-out;transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{-webkit-transition:height .2s ease-out;-o-transition:height .2s ease-out;transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{-webkit-transition:none;-o-transition:none;transition:none}.splitpanes__splitter{-ms-touch-action:none;touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;-ms-flex-negative:0;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:before,.splitpanes.default-theme .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:before,.splitpanes.default-theme .splitpanes__splitter:hover:after{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}.app-navigation,.app-content{--app-navigation-padding: calc(var(--default-grid-baseline, 4px) * 2)}.material-design-icon[data-v-632c552d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation[data-v-632c552d]{--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-text-maxcontrast-default));transition:transform var(--animation-quick),margin var(--animation-quick);width:300px;--app-navigation-max-width: calc(100vw - (var(--app-navigation-padding) + var(--default-clickable-area) + var(--default-grid-baseline)));max-width:var(--app-navigation-max-width);position:relative;top:0;inset-inline-start:0;padding:0;z-index:1800;height:100%;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-grow:0;flex-shrink:0;background-color:transparent}.app-navigation--legacy[data-v-632c552d]{background-color:var(--color-main-background-blur, var(--color-main-background));-webkit-backdrop-filter:var(--filter-background-blur, none);backdrop-filter:var(--filter-background-blur, none)}.app-navigation--close[data-v-632c552d]{margin-inline-start:calc(-1*min(300px,var(--app-navigation-max-width)))}.app-navigation__search[data-v-632c552d]{width:100%}.app-navigation__body[data-v-632c552d]{overflow-y:scroll}.app-navigation__content>ul[data-v-632c552d]{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;display:flex;flex-direction:column;gap:var(--default-grid-baseline, 4px);padding:var(--app-navigation-padding)}.app-navigation .app-navigation__list[data-v-632c552d]{height:100%}.app-navigation__body--no-list[data-v-632c552d]{flex:1 1 auto;overflow:auto;height:100%}.app-navigation__content[data-v-632c552d]{height:100%;display:flex;flex-direction:column}[data-themes*=highcontrast] .app-navigation[data-v-632c552d]{border-inline-end:1px solid var(--color-border)}@media only screen and (width<1024px){.app-navigation[data-v-632c552d]{position:absolute;border-inline-end:1px solid var(--color-border);background-color:var(--color-main-background-blur, var(--color-main-background));-webkit-backdrop-filter:var(--filter-background-blur, none);backdrop-filter:var(--filter-background-blur, none)}}@media only screen and (max-width:512px){.app-navigation[data-v-632c552d]{z-index:1400}}.material-design-icon[data-v-058e6060]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-list[data-v-058e6060]{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;display:flex;flex-direction:column;gap:var(--default-grid-baseline, 4px);padding:var(--app-navigation-padding)}.material-design-icon[data-v-d28016dd]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-toggle-wrapper[data-v-d28016dd]{position:absolute;top:var(--app-navigation-padding);inset-inline-end:calc(0px - var(--app-navigation-padding));margin-inline-end:calc(-1 * var(--default-clickable-area))}button.app-navigation-toggle[data-v-d28016dd]{background-color:var(--color-main-background)}.material-design-icon[data-v-e6a6c621]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-caption[data-v-e6a6c621]{display:flex;justify-content:space-between}.app-navigation-caption--heading[data-v-e6a6c621]{padding:var(--app-navigation-padding)}.app-navigation-caption--heading[data-v-e6a6c621]:not(:first-child):not(:last-child){padding:0 var(--app-navigation-padding)}.app-navigation-caption__name[data-v-e6a6c621]{font-weight:var(--font-weight-heading, bold);color:var(--color-main-text);font-size:var(--default-font-size);line-height:var(--default-clickable-area);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:none!important;flex-shrink:1;padding-block:0;padding-inline:calc(var(--default-grid-baseline, 4px) * 2) 0;margin-top:0;margin-bottom:var(--default-grid-baseline)}.app-navigation-caption__actions[data-v-e6a6c621]{flex:0 0 var(--default-clickable-area)}.app-navigation-caption[data-v-e6a6c621]:not(:first-child){margin-top:calc(var(--default-clickable-area) / 2)}.material-design-icon[data-v-04a313f4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry__icon-bullet[data-v-04a313f4]{display:block;padding:calc((var(--default-clickable-area) - 16px) / 2 + 1px)}.app-navigation-entry__icon-bullet div[data-v-04a313f4]{width:14px;height:14px;cursor:pointer;transition:background .1s ease-in-out;border:none;border-radius:50%}.material-design-icon[data-v-3c547cb0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.icon-collapse[data-v-3c547cb0]{position:relative;inset-inline-end:0}.icon-collapse[data-v-3c547cb0]:hover{background-color:var(--color-background-dark)!important}.icon-collapse--active[data-v-3c547cb0]:hover{background-color:var(--color-primary-element)!important}.material-design-icon[data-v-cb63e0d5]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry[data-v-cb63e0d5]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;box-sizing:border-box;width:100%;min-height:var(--default-clickable-area);transition:background-color var(--animation-quick) ease-in-out;transition:background-color .2s ease-in-out;border-radius:var(--border-radius-element, var(--border-radius-pill))}.app-navigation-entry-wrapper[data-v-cb63e0d5]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;box-sizing:border-box;width:100%}.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened)>ul[data-v-cb63e0d5]{display:none}.app-navigation-entry:not(.app-navigation-entry--legacy).active[data-v-cb63e0d5]{background-color:color-mix(in srgb,var(--color-primary-element) 16%,transparent)!important}.app-navigation-entry:not(.app-navigation-entry--legacy).active[data-v-cb63e0d5]:hover{background-color:color-mix(in srgb,var(--color-primary-element) 22%,transparent)!important}.app-navigation-entry:not(.app-navigation-entry--legacy).active:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-cb63e0d5],.app-navigation-entry:not(.app-navigation-entry--legacy).active:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-cb63e0d5]{color:var(--color-main-text)!important}.app-navigation-entry:not(.app-navigation-entry--legacy).active[data-v-cb63e0d5]:not(.app-navigation-entry--editing):before{content:"";position:absolute;inset-block:calc(var(--default-grid-baseline, 4px) * 2);inset-inline-start:0;width:3px;background-color:var(--color-primary-element);border-radius:999px;animation:nc-nav-stripe-in-cb63e0d5 var(--animation-quick, .2s) ease-out}.app-navigation-entry.app-navigation-entry--legacy.active[data-v-cb63e0d5]{background-color:var(--color-primary-element)!important}.app-navigation-entry.app-navigation-entry--legacy.active[data-v-cb63e0d5]:hover{background-color:var(--color-primary-element-hover)!important}.app-navigation-entry.app-navigation-entry--legacy.active .app-navigation-entry-link[data-v-cb63e0d5],.app-navigation-entry.app-navigation-entry--legacy.active .app-navigation-entry-button[data-v-cb63e0d5]{color:var(--color-primary-element-text)!important}.app-navigation-entry[data-v-cb63e0d5]:focus-within,.app-navigation-entry[data-v-cb63e0d5]:hover{background-color:var(--color-background-hover)}.app-navigation-entry[data-v-cb63e0d5]:not(.app-navigation-entry--legacy):focus-within,.app-navigation-entry[data-v-cb63e0d5]:not(.app-navigation-entry--legacy):hover{background-color:color-mix(in srgb,var(--color-primary-element) 8%,transparent)}.app-navigation-entry.active .app-navigation-entry__children[data-v-cb63e0d5],.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-cb63e0d5],.app-navigation-entry:hover .app-navigation-entry__children[data-v-cb63e0d5]{background-color:var(--color-main-background)}.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-cb63e0d5],.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-cb63e0d5],.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-cb63e0d5],.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-cb63e0d5],.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-cb63e0d5]{position:relative;opacity:1;pointer-events:auto}.app-navigation-entry .app-navigation-entry__actions[data-v-cb63e0d5]:hover .button-vue{background-color:var(--color-background-dark)!important}.app-navigation-entry:not(.app-navigation-entry--legacy).active .app-navigation-entry__actions[data-v-cb63e0d5]:hover .button-vue{background-color:var(--color-background-dark)!important}.app-navigation-entry.app-navigation-entry--legacy.active .app-navigation-entry__actions[data-v-cb63e0d5]:hover .button-vue{background-color:var(--color-primary-element)!important}.app-navigation-entry.app-navigation-entry--deleted>ul[data-v-cb63e0d5]{display:none}.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-cb63e0d5],.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-cb63e0d5]{padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.app-navigation-entry .app-navigation-entry-link[data-v-cb63e0d5],.app-navigation-entry .app-navigation-entry-button[data-v-cb63e0d5]{z-index:100;display:flex;overflow:hidden;flex:1 1 0;box-sizing:border-box;min-height:var(--default-clickable-area);padding:0;white-space:nowrap;color:var(--color-main-text);font-weight:var(--font-weight-element, 500);background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px 16px;line-height:var(--default-clickable-area)}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-cb63e0d5],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-cb63e0d5]{display:flex;align-items:center;flex:0 0 var(--default-clickable-area);justify-content:center;width:var(--default-clickable-area);height:var(--default-clickable-area);background-size:16px 16px;background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-cb63e0d5],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-cb63e0d5]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis;font-weight:var(--font-weight-element, normal)}.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-cb63e0d5],.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-cb63e0d5]{width:calc(100% - var(--default-clickable-area));margin:auto}.app-navigation-entry .app-navigation-entry-link[data-v-cb63e0d5]:focus-visible,.app-navigation-entry .app-navigation-entry-button[data-v-cb63e0d5]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background);outline:2px solid var(--color-main-text);border-radius:var(--border-radius-element, var(--border-radius-pill))}.app-navigation-entry__children[data-v-cb63e0d5]{--app-navigation-item-child-offset: 10px;position:relative;display:flex;flex:0 1 auto;flex-direction:column;width:100%;gap:var(--default-grid-baseline, 4px);padding-inline-start:var(--app-navigation-item-child-offset)}.app-navigation-entry__children .app-navigation-entry[data-v-cb63e0d5]{display:inline-flex;flex-wrap:wrap}.app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children[data-v-cb63e0d5]{--app-navigation-item-child-offset: 0}.app-navigation-entry__deleted[data-v-cb63e0d5]{display:inline-flex;flex:1 1 0;padding-inline-start:calc(var(--default-clickable-area) - (var(--default-clickable-area) - 16px) / 2)!important}.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-cb63e0d5]{position:relative;overflow:hidden;flex:1 1 0;white-space:nowrap;text-overflow:ellipsis;line-height:var(--default-clickable-area)}.app-navigation-entry__utils[data-v-cb63e0d5]{display:flex;min-width:var(--default-clickable-area);align-items:center;flex:0 1 auto;justify-content:flex-end}.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-cb63e0d5]{position:relative;opacity:1;pointer-events:auto}.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-cb63e0d5]{margin-inline-end:calc(var(--default-grid-baseline) * 2);display:flex;align-items:center;flex:0 1 auto}.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-cb63e0d5]{position:absolute;opacity:0;pointer-events:none}.app-navigation-entry--editing .app-navigation-entry-edit[data-v-cb63e0d5]{z-index:250;opacity:1}.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-cb63e0d5]{z-index:250;transform:translate(0)}.app-navigation-entry--pinned[data-v-cb63e0d5]{order:2;margin-top:auto}.app-navigation-entry--pinned~.app-navigation-entry--pinned[data-v-cb63e0d5]{margin-top:0}[data-themes*=highcontrast] .app-navigation-entry[data-v-cb63e0d5]:active{background-color:var(--color-primary-element-light-hover)!important}@keyframes nc-nav-stripe-in-cb63e0d5{0%{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}.material-design-icon[data-v-f9a3bb35]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-input-confirm[data-v-f9a3bb35]{flex:1 0 100%;width:100%}.app-navigation-input-confirm form[data-v-f9a3bb35]{display:flex}.app-navigation-input-confirm__input[data-v-f9a3bb35]{height:34px;flex:1 1 100%;font-size:100%!important;margin:5px 5px 5px -8px!important;padding:7px!important}.app-navigation-input-confirm__input[data-v-f9a3bb35]:active,.app-navigation-input-confirm__input[data-v-f9a3bb35]:focus,.app-navigation-input-confirm__input[data-v-f9a3bb35]:hover{outline:none;background-color:var(--color-main-background);color:var(--color-main-text);border-color:var(--color-primary-element)}.app-navigation-input-confirm:not(.app-navigation-input-confirm--legacy) form[data-v-f9a3bb35]{align-items:center;gap:5px;padding-inline-end:5px}.app-navigation-input-confirm:not(.app-navigation-input-confirm--legacy) .app-navigation-input-confirm__input[data-v-f9a3bb35]{margin-inline-end:0!important}.app-navigation-input-confirm[data-v-f9a3bb35]:not(.app-navigation-input-confirm--legacy) .button-vue{width:34px!important;min-width:34px!important;height:34px!important;flex:0 0 34px}.material-design-icon[data-v-94ff8098]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.loading-icon[data-v-94ff8098]{overflow:hidden}.loading-icon svg[data-v-94ff8098]{animation:rotate var(--animation-duration, .8s) linear infinite}.material-design-icon[data-v-6f255eb3]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-new[data-v-6f255eb3]{display:block;padding:calc(var(--default-grid-baseline, 4px) * 2)}.app-navigation-new button[data-v-6f255eb3]{width:100%}.material-design-icon[data-v-258871fd]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry[data-v-258871fd]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;box-sizing:border-box;width:100%;min-height:var(--default-clickable-area);transition:background-color var(--animation-quick) ease-in-out;transition:background-color .2s ease-in-out;border-radius:var(--border-radius-element, var(--border-radius-pill))}.app-navigation-entry-wrapper[data-v-258871fd]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;box-sizing:border-box;width:100%}.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened)>ul[data-v-258871fd]{display:none}.app-navigation-entry:not(.app-navigation-entry--legacy).active[data-v-258871fd]{background-color:color-mix(in srgb,var(--color-primary-element) 16%,transparent)!important}.app-navigation-entry:not(.app-navigation-entry--legacy).active[data-v-258871fd]:hover{background-color:color-mix(in srgb,var(--color-primary-element) 22%,transparent)!important}.app-navigation-entry:not(.app-navigation-entry--legacy).active:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-258871fd],.app-navigation-entry:not(.app-navigation-entry--legacy).active:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-258871fd]{color:var(--color-main-text)!important}.app-navigation-entry:not(.app-navigation-entry--legacy).active[data-v-258871fd]:not(.app-navigation-entry--editing):before{content:"";position:absolute;inset-block:calc(var(--default-grid-baseline, 4px) * 2);inset-inline-start:0;width:3px;background-color:var(--color-primary-element);border-radius:999px;animation:nc-nav-stripe-in-258871fd var(--animation-quick, .2s) ease-out}.app-navigation-entry.app-navigation-entry--legacy.active[data-v-258871fd]{background-color:var(--color-primary-element)!important}.app-navigation-entry.app-navigation-entry--legacy.active[data-v-258871fd]:hover{background-color:var(--color-primary-element-hover)!important}.app-navigation-entry.app-navigation-entry--legacy.active .app-navigation-entry-link[data-v-258871fd],.app-navigation-entry.app-navigation-entry--legacy.active .app-navigation-entry-button[data-v-258871fd]{color:var(--color-primary-element-text)!important}.app-navigation-entry[data-v-258871fd]:focus-within,.app-navigation-entry[data-v-258871fd]:hover{background-color:var(--color-background-hover)}.app-navigation-entry[data-v-258871fd]:not(.app-navigation-entry--legacy):focus-within,.app-navigation-entry[data-v-258871fd]:not(.app-navigation-entry--legacy):hover{background-color:color-mix(in srgb,var(--color-primary-element) 8%,transparent)}.app-navigation-entry.active .app-navigation-entry__children[data-v-258871fd],.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-258871fd],.app-navigation-entry:hover .app-navigation-entry__children[data-v-258871fd]{background-color:var(--color-main-background)}.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-258871fd],.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-258871fd],.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-258871fd],.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-258871fd],.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-258871fd]{position:relative;opacity:1;pointer-events:auto}.app-navigation-entry .app-navigation-entry__actions[data-v-258871fd]:hover .button-vue{background-color:var(--color-background-dark)!important}.app-navigation-entry:not(.app-navigation-entry--legacy).active .app-navigation-entry__actions[data-v-258871fd]:hover .button-vue{background-color:var(--color-background-dark)!important}.app-navigation-entry.app-navigation-entry--legacy.active .app-navigation-entry__actions[data-v-258871fd]:hover .button-vue{background-color:var(--color-primary-element)!important}.app-navigation-entry.app-navigation-entry--deleted>ul[data-v-258871fd]{display:none}.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-258871fd],.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-258871fd]{padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.app-navigation-entry .app-navigation-entry-link[data-v-258871fd],.app-navigation-entry .app-navigation-entry-button[data-v-258871fd]{z-index:100;display:flex;overflow:hidden;flex:1 1 0;box-sizing:border-box;min-height:var(--default-clickable-area);padding:0;white-space:nowrap;color:var(--color-main-text);font-weight:var(--font-weight-element, 500);background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px 16px;line-height:var(--default-clickable-area)}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-258871fd],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-258871fd]{display:flex;align-items:center;flex:0 0 var(--default-clickable-area);justify-content:center;width:var(--default-clickable-area);height:var(--default-clickable-area);background-size:16px 16px;background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-258871fd],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-258871fd]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis;font-weight:var(--font-weight-element, normal)}.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-258871fd],.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-258871fd]{width:calc(100% - var(--default-clickable-area));margin:auto}.app-navigation-entry .app-navigation-entry-link[data-v-258871fd]:focus-visible,.app-navigation-entry .app-navigation-entry-button[data-v-258871fd]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background);outline:2px solid var(--color-main-text);border-radius:var(--border-radius-element, var(--border-radius-pill))}.app-navigation-entry__children[data-v-258871fd]{--app-navigation-item-child-offset: 10px;position:relative;display:flex;flex:0 1 auto;flex-direction:column;width:100%;gap:var(--default-grid-baseline, 4px);padding-inline-start:var(--app-navigation-item-child-offset)}.app-navigation-entry__children .app-navigation-entry[data-v-258871fd]{display:inline-flex;flex-wrap:wrap}.app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children[data-v-258871fd]{--app-navigation-item-child-offset: 0}.app-navigation-entry__deleted[data-v-258871fd]{display:inline-flex;flex:1 1 0;padding-inline-start:calc(var(--default-clickable-area) - (var(--default-clickable-area) - 16px) / 2)!important}.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-258871fd]{position:relative;overflow:hidden;flex:1 1 0;white-space:nowrap;text-overflow:ellipsis;line-height:var(--default-clickable-area)}.app-navigation-entry__utils[data-v-258871fd]{display:flex;min-width:var(--default-clickable-area);align-items:center;flex:0 1 auto;justify-content:flex-end}.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-258871fd]{position:relative;opacity:1;pointer-events:auto}.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-258871fd]{margin-inline-end:calc(var(--default-grid-baseline) * 2);display:flex;align-items:center;flex:0 1 auto}.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-258871fd]{position:absolute;opacity:0;pointer-events:none}.app-navigation-entry--editing .app-navigation-entry-edit[data-v-258871fd]{z-index:250;opacity:1}.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-258871fd]{z-index:250;transform:translate(0)}.app-navigation-entry--pinned[data-v-258871fd]{order:2;margin-top:auto}.app-navigation-entry--pinned~.app-navigation-entry--pinned[data-v-258871fd]{margin-top:0}[data-themes*=highcontrast] .app-navigation-entry[data-v-258871fd]:active{background-color:var(--color-primary-element-light-hover)!important}@keyframes nc-nav-stripe-in-258871fd{0%{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}.app-navigation-new-item__name[data-v-258871fd]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis;padding-inline-start:7px;font-size:14px}.newItemContainer[data-v-258871fd]{width:calc(100% - var(--default-clickable-area));margin:auto}.material-design-icon[data-v-df568544]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-search[data-v-df568544]{display:flex;gap:var(--app-navigation-padding);padding:var(--app-navigation-padding)}.app-navigation-search--has-actions .app-navigation-search__input[data-v-df568544]{flex-grow:1;z-index:3}.app-navigation-search__actions[data-v-df568544]{display:flex;gap:var(--default-grid-baseline);margin-inline-start:0;max-width:calc(2 * var(--default-clickable-area) + var(--default-grid-baseline));max-height:var(--default-clickable-area);transition:margin-inline-start var(--animation-quick)}.app-navigation-search__actions--hidden[data-v-df568544]{margin-inline-start:calc(-1 * var(--default-clickable-area))}.app-navigation-search__input[data-v-df568544]{--input-border-radius: var(--border-radius-element, var(--border-radius-pill)) !important}.material-design-icon[data-v-07bfaab0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mention-bubble--primary .mention-bubble__content[data-v-07bfaab0]{color:var(--color-primary-element-text);background-color:var(--color-primary-element)}.mention-bubble__wrapper[data-v-07bfaab0]{position:relative;max-width:150px;height:18px;vertical-align:text-bottom;display:inline-flex;align-items:center}.mention-bubble__content[data-v-07bfaab0]{display:inline-flex;overflow:hidden;align-items:center;max-width:100%;height:20px;-webkit-user-select:none;user-select:none;padding-inline:2px 6px;border-radius:10px;background-color:var(--color-background-dark)}.mention-bubble__icon[data-v-07bfaab0]{position:relative;width:16px;height:16px;border-radius:8px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:12px}.mention-bubble__icon--with-avatar[data-v-07bfaab0]{color:inherit;background-size:cover}.mention-bubble__title[data-v-07bfaab0]{overflow:hidden;margin-inline-start:2px;white-space:nowrap;text-overflow:ellipsis}.mention-bubble__title[data-v-07bfaab0]:before{content:attr(title)}.mention-bubble__select[data-v-07bfaab0]{position:absolute;z-index:-1;inset-inline-start:-100vw;width:1px;height:1px;overflow:hidden}.material-design-icon[data-v-ddd7d69d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}#app-settings[data-v-ddd7d69d]{margin-top:auto;padding:3px}#app-settings__header[data-v-ddd7d69d]{box-sizing:border-box;margin:0 3px 3px}#app-settings__header .settings-button[data-v-ddd7d69d]{padding-inline:0 calc((var(--default-clickable-area) - 16px) / 2)!important}#app-settings__header .settings-button[data-v-ddd7d69d] .button-vue__text{font-weight:var(--font-weight-default, normal)!important}#app-settings__content[data-v-ddd7d69d]{display:block;padding:10px;margin-bottom:-3px;max-height:300px;overflow-y:auto;box-sizing:border-box}.slide-up-leave-active[data-v-ddd7d69d],.slide-up-enter-active[data-v-ddd7d69d]{transition-duration:var(--animation-slow);transition-property:max-height,padding;overflow-y:hidden!important}.slide-up-enter[data-v-ddd7d69d],.slide-up-leave-to[data-v-ddd7d69d]{max-height:0!important;padding:0 10px!important}.app-navigation-spacer[data-v-b699c557]{flex-shrink:0;height:22px}._material-design-icon_m1Dx0{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._appSettingsDialogVersion_2lg6o{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));color:var(--color-text-maxcontrast);margin-block-end:calc(8 * var(--default-grid-baseline));margin-inline:var(--form-element-label-offset)}._appSettingsDialogVersion__legacy_cnkcL{margin-inline:0}.material-design-icon[data-v-d5ede33a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-settings[data-v-d5ede33a]:not(.app-settings--legacy){--nav-tint: hsl(from var(--color-primary-element-light) h s calc(l*1.045) );--nav-tint-strong: var(--color-primary-element-light)}.app-settings[data-v-d5ede33a]:not(.app-settings--legacy) .modal-wrapper .modal-container{padding-inline-start:0!important;padding-block-start:0!important;background-color:var(--nav-tint);overflow:hidden;max-width:900px}.app-settings[data-v-d5ede33a]:not(.app-settings--legacy) .dialog__name{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(100%);white-space:nowrap;border:0}.app-settings:not(.app-settings--legacy) .app-settings__title[data-v-d5ede33a]{box-sizing:border-box;padding:calc(3 * var(--default-grid-baseline));margin:0;font-size:20px;font-weight:var(--font-weight-heading, 700)}.app-settings[data-v-d5ede33a]:not(.app-settings--legacy) .app-settings__navigation{min-width:200px;max-width:200px;flex:0 0 200px;margin-right:0!important;overflow-x:hidden;overflow-y:auto;position:relative;background-color:var(--nav-tint)}.app-settings[data-v-d5ede33a]:not(.app-settings--legacy) .app-settings__content{box-sizing:border-box;padding:calc(3 * var(--default-grid-baseline));background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border-dark);border-start-start-radius:var(--border-radius-element);border-end-start-radius:var(--border-radius-element)}.app-settings:not(.app-settings--legacy) .navigation-list[data-v-d5ede33a]{height:100%;box-sizing:border-box;overflow-y:auto;padding:var(--default-grid-baseline)}.app-settings:not(.app-settings--legacy) .navigation-list__link[data-v-d5ede33a]{position:relative;display:flex;align-items:center;font-size:var(--default-font-size);font-weight:var(--font-weight-element, 500);height:var(--default-clickable-area);margin:2px 0;line-height:var(--default-clickable-area);border-radius:var(--border-radius-element, var(--border-radius-pill));padding-inline:calc(2 * var(--default-grid-baseline));cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;background-color:transparent;border:none;color:var(--color-main-text)}.app-settings:not(.app-settings--legacy) .navigation-list__link[data-v-d5ede33a]:hover,.app-settings:not(.app-settings--legacy) .navigation-list__link[data-v-d5ede33a]:focus-visible{background-color:color-mix(in srgb,var(--color-primary-element) 8%,transparent)}.app-settings:not(.app-settings--legacy) .navigation-list__link[data-v-d5ede33a]:focus-visible{outline:2px solid var(--color-main-text);outline-offset:-2px}.app-settings:not(.app-settings--legacy) .navigation-list__link--active[data-v-d5ede33a]{background-color:var(--nav-tint-strong)}.app-settings:not(.app-settings--legacy) .navigation-list__link--active[data-v-d5ede33a]:hover,.app-settings:not(.app-settings--legacy) .navigation-list__link--active[data-v-d5ede33a]:focus-visible{background-color:var(--color-primary-element-light-hover)}.app-settings:not(.app-settings--legacy) .navigation-list__link--active[data-v-d5ede33a]:before{content:"";position:absolute;inset-block:var(--default-grid-baseline);inset-inline-start:0;width:3px;background-color:var(--color-primary-element);border-radius:999px}.app-settings:not(.app-settings--legacy) .navigation-list__link--icon[data-v-d5ede33a]{gap:var(--default-grid-baseline)}.app-settings:not(.app-settings--legacy) .navigation-list__link-icon[data-v-d5ede33a]{display:flex;justify-content:center;align-content:center;width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));max-width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}[data-v-d5ede33a] .app-settings__content.app-settings__non-legacy *{box-sizing:border-box}@media only screen and (width<1024px){.app-settings[data-v-d5ede33a]:not(.app-settings--legacy) .modal-wrapper .modal-container{padding-inline-start:12px!important;padding-block-start:4px!important;background-color:var(--color-main-background)}.app-settings[data-v-d5ede33a]:not(.app-settings--legacy) .dialog__name{position:static;width:auto;height:auto;margin:0 0 12px;padding-inline-end:var(--default-clickable-area);overflow:visible;clip-path:none;white-space:normal;border:0}.app-settings[data-v-d5ede33a]:not(.app-settings--legacy) .app-settings__content{border:none;border-radius:0}}.app-settings.app-settings--legacy[data-v-d5ede33a] .app-settings__navigation{min-width:200px;margin-inline-end:calc(4 * var(--default-grid-baseline));overflow-x:hidden;overflow-y:auto;position:relative}.app-settings.app-settings--legacy[data-v-d5ede33a] .app-settings__content{padding-inline:calc(4 * var(--default-grid-baseline))}.app-settings.app-settings--legacy .navigation-list[data-v-d5ede33a]{height:100%;overflow-y:auto;padding:calc(3 * var(--default-grid-baseline))}.app-settings.app-settings--legacy .navigation-list__link[data-v-d5ede33a]{display:flex;align-content:center;font-size:16px;height:var(--default-clickable-area);margin:4px 0;line-height:var(--default-clickable-area);border-radius:var(--border-radius-element, var(--border-radius-pill));font-weight:var(--font-weight-element, bold);padding:0 calc(4 * var(--default-grid-baseline));cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;background-color:transparent;border:none}.app-settings.app-settings--legacy .navigation-list__link[data-v-d5ede33a]:hover,.app-settings.app-settings--legacy .navigation-list__link[data-v-d5ede33a]:focus{background-color:var(--color-background-hover)}.app-settings.app-settings--legacy .navigation-list__link--active[data-v-d5ede33a]{background-color:var(--color-primary-element-light)!important}.app-settings.app-settings--legacy .navigation-list__link--icon[data-v-d5ede33a]{padding-inline-start:calc(2 * var(--default-grid-baseline));gap:var(--default-grid-baseline)}.app-settings.app-settings--legacy .navigation-list__link-icon[data-v-d5ede33a]{display:flex;justify-content:center;align-content:center;width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));max-width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}@media only screen and (max-width:512px){.dialog__modal .modal-wrapper.modal-wrapper--small .modal-container{width:fit-content;height:unset;max-height:90%;position:relative;top:unset;border-radius:var(--border-radius-large)}}.material-design-icon[data-v-08c0eea7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.dialog[data-v-08c0eea7]{height:100%;width:100%;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.dialog__modal[data-v-08c0eea7] .modal-wrapper .modal-container{display:flex!important;padding-block:4px 0;padding-inline:12px 0}.dialog__modal[data-v-08c0eea7] .modal-wrapper .modal-container__content{display:flex;flex-direction:column;overflow:hidden}.dialog__wrapper[data-v-08c0eea7]{display:flex;flex-direction:row;flex:1;min-height:0;overflow:hidden}.dialog__wrapper--collapsed[data-v-08c0eea7]{flex-direction:column}.dialog__navigation[data-v-08c0eea7]{display:flex;flex-shrink:0}.dialog__wrapper:not(.dialog__wrapper--collapsed) .dialog__navigation[data-v-08c0eea7]{flex-direction:column;overflow:hidden auto;height:100%;min-width:200px;margin-inline-end:20px}.dialog__wrapper.dialog__wrapper--collapsed .dialog__navigation[data-v-08c0eea7]{flex-direction:row;justify-content:space-between;overflow:auto hidden;width:100%;min-width:100%}.dialog__name[data-v-08c0eea7]{font-size:21px;text-align:center;height:fit-content;min-height:var(--default-clickable-area);line-height:var(--default-clickable-area);overflow-wrap:break-word;margin-block:0 12px}.dialog__content[data-v-08c0eea7]{flex:1;min-height:0;overflow:auto;padding-inline-end:12px}.dialog__text[data-v-08c0eea7]{padding-block-end:6px}.dialog__actions[data-v-08c0eea7]{box-sizing:border-box;display:flex;gap:6px;align-content:center;justify-content:end;width:100%;max-width:100%;padding-inline:0 12px;margin-inline:0;margin-block:0}.dialog__actions[data-v-08c0eea7]:not(:empty){margin-block:6px 12px}@media only screen and (max-width:512px){.dialog__name[data-v-08c0eea7]{text-align:start;margin-inline-end:var(--default-clickable-area)}}.material-design-icon[data-v-4b0ca9a1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.modal-mask[data-v-4b0ca9a1]{--backdrop-color: 0, 0, 0;--icon-size: 20px;--slideshow-duration: var(--7724eff9);position:fixed;z-index:9998;top:0;inset-inline-start:0;display:block;width:100%;height:100%;background-color:rgba(var(--backdrop-color),.5)}.modal-mask--opaque[data-v-4b0ca9a1]{background-color:rgba(var(--backdrop-color),.92)}.modal-mask--light[data-v-4b0ca9a1]{--backdrop-color: 255, 255, 255}.modal-header[data-v-4b0ca9a1]{position:absolute;z-index:10001;top:0;inset-inline:0 0;display:flex!important;align-items:center;justify-content:space-between;width:100%;height:var(--header-height);overflow:hidden;transition:opacity .25s,visibility .25s}.modal-header__name[data-v-4b0ca9a1]{overflow-x:hidden;box-sizing:border-box;width:100%;padding-inline:12px 0;transition:padding ease .1s;white-space:nowrap;text-overflow:ellipsis;font-size:16px;margin-block:0}@media only screen and (min-width:1024px){.modal-header__name[data-v-4b0ca9a1]{padding-inline-start:calc(var(--header-height) * var(--125db689));text-align:center}}.modal-header .icons-menu[data-v-4b0ca9a1]{display:flex;align-items:center;justify-content:flex-end;align-self:flex-end}.modal-header .icons-menu .header-close[data-v-4b0ca9a1]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;margin:calc((var(--header-height) - var(--default-clickable-area)) / 2);padding:0}.modal-header .icons-menu .play-pause-icons[data-v-4b0ca9a1]{position:relative;width:var(--header-height);height:var(--header-height);margin:0;padding:0;cursor:pointer;border:none;background-color:transparent}.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__play[data-v-4b0ca9a1],.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__pause[data-v-4b0ca9a1],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__play[data-v-4b0ca9a1],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__pause[data-v-4b0ca9a1]{opacity:1;border-radius:calc(var(--default-clickable-area) / 2);background-color:#7f7f7f40}.modal-header .icons-menu .play-pause-icons__play[data-v-4b0ca9a1],.modal-header .icons-menu .play-pause-icons__pause[data-v-4b0ca9a1]{box-sizing:border-box;width:var(--default-clickable-area);height:var(--default-clickable-area);margin:calc((var(--header-height) - var(--default-clickable-area)) / 2);cursor:pointer;opacity:.7}.modal-header .icons-menu[data-v-4b0ca9a1] .action-item{margin:calc((var(--header-height) - var(--default-clickable-area)) / 2)}.modal-header .icons-menu[data-v-4b0ca9a1] .action-item--single{box-sizing:border-box;width:var(--default-clickable-area);height:var(--default-clickable-area);cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu .header-actions[data-v-4b0ca9a1] button:focus-visible{box-shadow:none!important;outline:2px solid #fff!important}.modal-header .icons-menu[data-v-4b0ca9a1] .action-item__menutoggle{padding:0}.modal-header .icons-menu[data-v-4b0ca9a1] .action-item__menutoggle span,.modal-header .icons-menu[data-v-4b0ca9a1] .action-item__menutoggle svg{width:var(--icon-size);height:var(--icon-size)}.modal-wrapper[data-v-4b0ca9a1]{--modal-header-offset: var(--header-height);display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper--no-header[data-v-4b0ca9a1]{--modal-header-offset: var(--body-container-margin)}.modal-wrapper .prev[data-v-4b0ca9a1],.modal-wrapper .next[data-v-4b0ca9a1]{z-index:10000;height:35vh;min-height:300px;position:absolute;transition:opacity .25s;color:#fff}.modal-wrapper .prev[data-v-4b0ca9a1]:focus-visible,.modal-wrapper .next[data-v-4b0ca9a1]:focus-visible{box-shadow:0 0 0 2px var(--color-primary-element-text);background-color:var(--color-box-shadow)}.modal-wrapper .prev[data-v-4b0ca9a1]{inset-inline-start:2px}.modal-wrapper .next[data-v-4b0ca9a1]{inset-inline-end:2px}.modal-wrapper .modal-container[data-v-4b0ca9a1]{position:relative;display:flex;padding:0;transition:transform .3s ease;border-radius:var(--border-radius-container, var(--border-radius-rounded));background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 40px #0003}.modal-wrapper .modal-container__close[data-v-4b0ca9a1]{z-index:1;position:absolute;top:4px;inset-inline-end:var(--default-grid-baseline)}.modal-wrapper .modal-container__content[data-v-4b0ca9a1]{width:100%;min-height:52px;overflow:auto}.modal-wrapper--small>.modal-container[data-v-4b0ca9a1]{width:400px;max-width:90%;max-height:min(90%,100% - 2 * var(--header-height) - 2 * var(--body-container-margin))}.modal-wrapper--normal>.modal-container[data-v-4b0ca9a1]{max-width:90%;width:600px;max-height:min(90%,100% - 2 * var(--header-height) - 2 * var(--body-container-margin))}.modal-wrapper--large>.modal-container[data-v-4b0ca9a1]{max-width:90%;width:900px;max-height:min(90%,100% - 2 * var(--header-height) - 2 * var(--body-container-margin))}.modal-wrapper--full>.modal-container[data-v-4b0ca9a1]{width:100%;height:calc(100% - var(--modal-header-offset));position:absolute;top:var(--modal-header-offset);border-radius:0}@media only screen and ((max-width:512px)or (max-height:400px)){.modal-wrapper .modal-container[data-v-4b0ca9a1]{max-width:initial;width:100%;max-height:initial;height:calc(100% - var(--modal-header-offset));position:absolute;top:var(--modal-header-offset);border-radius:0}}.fade-enter-active[data-v-4b0ca9a1],.fade-leave-active[data-v-4b0ca9a1]{transition:opacity .25s}.fade-enter[data-v-4b0ca9a1],.fade-leave-to[data-v-4b0ca9a1]{opacity:0}.fade-visibility-enter[data-v-4b0ca9a1],.fade-visibility-leave-to[data-v-4b0ca9a1]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-4b0ca9a1],.modal-in-leave-active[data-v-4b0ca9a1],.modal-out-enter-active[data-v-4b0ca9a1],.modal-out-leave-active[data-v-4b0ca9a1]{transition:opacity .25s}.modal-in-enter[data-v-4b0ca9a1],.modal-in-leave-to[data-v-4b0ca9a1],.modal-out-enter[data-v-4b0ca9a1],.modal-out-leave-to[data-v-4b0ca9a1]{opacity:0}.modal-in-enter .modal-container[data-v-4b0ca9a1],.modal-in-leave-to .modal-container[data-v-4b0ca9a1]{transform:scale(.9)}.modal-out-enter .modal-container[data-v-4b0ca9a1],.modal-out-leave-to .modal-container[data-v-4b0ca9a1]{transform:scale(1.1)}.modal-mask .play-pause-icons .progress-ring[data-v-4b0ca9a1]{position:absolute;top:0;inset-inline-start:0;transform:rotate(-90deg)}.modal-mask .play-pause-icons .progress-ring .progress-ring__circle[data-v-4b0ca9a1]{transition:.1s stroke-dashoffset;transform-origin:50% 50%;animation:progressring-4b0ca9a1 linear var(--slideshow-duration) infinite;stroke-linecap:round;stroke-dashoffset:94.2477796077;stroke-dasharray:94.2477796077}.modal-mask .play-pause-icons--paused .icon-pause[data-v-4b0ca9a1]{animation:breath-4b0ca9a1 2s cubic-bezier(.4,0,.2,1) infinite}.modal-mask .play-pause-icons--paused .progress-ring__circle[data-v-4b0ca9a1]{animation-play-state:paused!important}@keyframes progressring-4b0ca9a1{0%{stroke-dashoffset:94.2477796077}to{stroke-dashoffset:0}}@keyframes breath-4b0ca9a1{0%{opacity:1}50%{opacity:0}to{opacity:1}}.material-design-icon[data-v-63296cf9]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-settings-section[data-v-63296cf9]{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));--app-settings-section-text-offset: var(--form-element-label-offset);--app-settings-section-content-gap: calc(6 * var(--default-grid-baseline));margin-block-end:calc(8 * var(--default-grid-baseline))}.app-settings-section__name[data-v-63296cf9]{margin:0;padding-inline:var(--app-settings-section-text-offset);padding-block:0;font-size:20px;font-weight:var(--font-weight-heading, bold)}.app-settings-section__description[data-v-63296cf9]{padding-inline:var(--app-settings-section-text-offset);color:var(--color-text-maxcontrast)}.app-settings-section__content[data-v-63296cf9]{margin-block-start:calc(2 * var(--default-grid-baseline));display:flex;flex-direction:column;justify-content:stretch;gap:var(--app-settings-section-content-gap)}.app-settings-section__legacy[data-v-63296cf9]{--app-settings-section-text-offset: 0;--app-settings-section-content-gap: 0}._material-design-icon_aXC4Z{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._appSettingsSectionShortcuts_e3yxm{display:flex;flex-direction:column;gap:calc(4 * var(--default-grid-baseline));box-sizing:border-box}._appSettingsSectionShortcuts_e3yxm *{box-sizing:border-box}.material-design-icon[data-v-30dd628e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar-tabs[data-v-30dd628e]{display:flex;flex-direction:column;min-height:0;flex:1 1 100%}.app-sidebar-tabs__nav[data-v-30dd628e]{display:flex;justify-content:stretch;margin:10px 8px 0;border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy){gap:var(--default-grid-baseline);padding-block-end:var(--default-grid-baseline)}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant{position:relative;border:unset!important;border-radius:var(--border-radius-element)!important;background-color:var(--color-main-background);min-width:var(--default-clickable-area);transition:background-color var(--animation-quick)}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant .checkbox-content{padding:var(--default-grid-baseline);padding-block-end:calc(var(--default-grid-baseline) * 2);border-radius:var(--border-radius-element)!important;margin:0!important}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant .checkbox-content .checkbox-content__icon>*{color:var(--color-main-text)!important}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant .checkbox-content__text{font-weight:var(--font-weight-element, normal)}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant:after{content:"";position:absolute;bottom:0;left:50%;width:0;height:4px;border-radius:999px;background-color:var(--color-primary-element);opacity:0;transform:translate(-50%);transition:width var(--animation-quick),opacity var(--animation-quick)}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant:hover{background-color:var(--color-background-hover)}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant:focus-visible{outline:2px solid var(--color-main-text);outline-offset:2px}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant.checkbox-radio-switch--checked{background-color:var(--color-background-hover)!important}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant.checkbox-radio-switch--checked .checkbox-radio-switch__content{background:transparent!important;color:var(--color-main-text)!important}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant.checkbox-radio-switch--checked:after{width:80%;opacity:1}.app-sidebar-tabs__nav[data-v-30dd628e]:not(.app-sidebar-tabs__nav--legacy) .checkbox-radio-switch--button-variant.checkbox-radio-switch--checked:hover{background-color:var(--color-background-dark)!important}.app-sidebar-tabs__nav--legacy[data-v-30dd628e] .checkbox-radio-switch--button-variant{border:unset!important;border-radius:0!important}.app-sidebar-tabs__nav--legacy[data-v-30dd628e] .checkbox-radio-switch--button-variant .checkbox-content{padding:var(--default-grid-baseline);border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0!important;margin:0!important;border-bottom:var(--default-grid-baseline) solid transparent!important}.app-sidebar-tabs__nav--legacy[data-v-30dd628e] .checkbox-radio-switch--button-variant .checkbox-content .checkbox-content__icon>*{color:var(--color-main-text)!important}.app-sidebar-tabs__nav--legacy[data-v-30dd628e] .checkbox-radio-switch--button-variant.checkbox-radio-switch--checked .checkbox-radio-switch__content{background:transparent!important;color:var(--color-main-text)!important;border-bottom:var(--default-grid-baseline) solid var(--color-primary-element)!important}.app-sidebar-tabs__nav--legacy[data-v-30dd628e] .checkbox-radio-switch--button-variant.checkbox-radio-switch--checked .checkbox-content__text{font-weight:var(--font-weight-element, bold)}.app-sidebar-tabs__tab[data-v-30dd628e]{flex:1 1}.app-sidebar-tabs__tab.active[data-v-30dd628e]{color:var(--color-primary-element)}.app-sidebar-tabs__tab-caption[data-v-30dd628e]{flex:0 1 100%;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:center}.app-sidebar-tabs__tab-icon[data-v-30dd628e]{display:flex;align-items:center;justify-content:center;background-size:20px}.app-sidebar-tabs__tab[data-v-30dd628e] .checkbox-radio-switch__content{max-width:unset}.app-sidebar-tabs__content[data-v-30dd628e]{position:relative;min-height:256px;height:100%}.app-sidebar-tabs__content--multiple[data-v-30dd628e]>:not(section){display:none}@property --app-sidebar-offset{syntax: ""; initial-value: 0; inherits: true;}.content{--app-sidebar-padding: calc(var(--default-grid-baseline, 4px) * 2);--app-sidebar-offset: 0;transition:--app-sidebar-offset 0ms!important}.content:has(.app-sidebar.slide-right-enter-active),.content:has(.app-sidebar.slide-right-leave-active){transition:--app-sidebar-offset var(--animation-quick)}.content:has(.app-sidebar__toggle){--app-sidebar-offset: calc(var(--app-sidebar-padding) + var(--default-clickable-area))}.material-design-icon[data-v-82f4f9ef]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar[data-v-82f4f9ef]{--app-sidebar-width: clamp(300px, 27vw, 500px);width:var(--app-sidebar-width);z-index:1500;top:0;inset-inline-end:0;display:flex;overflow-x:hidden;overflow-y:auto;flex-direction:column;flex-shrink:0;height:100%;border-inline-start:1px solid var(--color-border);background:var(--color-main-background);position:relative}.app-sidebar__toggle[data-v-82f4f9ef]{position:absolute!important;inset-block-start:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-padding);z-index:1001}.app-sidebar .app-sidebar-header[data-v-82f4f9ef]{--app-sidebar-close-button-offset: calc(var(--default-clickable-area) + calc(var(--default-grid-baseline, 4px) * 2))}.app-sidebar .app-sidebar-header>.app-sidebar__close[data-v-82f4f9ef]{position:absolute;z-index:100;top:calc(var(--default-grid-baseline, 4px) * 2);inset-inline-end:calc(var(--default-grid-baseline, 4px) * 2);width:var(--default-clickable-area);height:var(--default-clickable-area)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info[data-v-82f4f9ef]{flex-direction:row}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__figure[data-v-82f4f9ef]{--figure-size: calc(52px + var(--app-sidebar-padding));z-index:2;width:var(--figure-size);height:var(--figure-size);margin:calc(var(--app-sidebar-padding) / 2);border-radius:3px;flex:0 0 auto}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc[data-v-82f4f9ef]{padding-inline-start:0;flex:1 1 auto;min-width:0;padding-inline-end:calc(var(--default-clickable-area) + var(--app-sidebar-close-button-offset));padding-top:var(--app-sidebar-padding)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc.app-sidebar-header__desc--without-actions[data-v-82f4f9ef]{padding-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc .app-sidebar-header__tertiary-actions[data-v-82f4f9ef]{z-index:3;position:absolute;top:calc(var(--app-sidebar-padding) / 2);inset-inline-start:calc(-1 * var(--default-clickable-area));gap:0}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc .app-sidebar-header__menu[data-v-82f4f9ef]{top:calc(var(--default-grid-baseline, 4px) * 2);inset-inline-end:var(--app-sidebar-close-button-offset);position:absolute}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__menu[data-v-82f4f9ef]{position:absolute;top:calc(var(--default-grid-baseline, 4px) * 2);inset-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__desc[data-v-82f4f9ef]{padding-inline-end:calc(var(--default-clickable-area) + var(--app-sidebar-close-button-offset))}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__desc.app-sidebar-header__desc--without-actions[data-v-82f4f9ef]{padding-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header .app-sidebar-header__info[data-v-82f4f9ef]{display:flex;flex-direction:column}.app-sidebar .app-sidebar-header__figure[data-v-82f4f9ef]{width:100%;height:250px;max-height:250px;background-repeat:no-repeat;background-position:center;background-size:contain}.app-sidebar .app-sidebar-header__figure--with-action[data-v-82f4f9ef]{cursor:pointer}.app-sidebar .app-sidebar-header__desc[data-v-82f4f9ef]{position:relative;display:flex;flex-direction:row;justify-content:center;align-items:center;padding-inline:var(--app-sidebar-padding);padding-block:calc(var(--default-grid-baseline, 4px) * 2) calc(var(--app-sidebar-padding) / 2);gap:0 4px}.app-sidebar .app-sidebar-header__desc--with-tertiary-action[data-v-82f4f9ef]{padding-inline-start:6px}.app-sidebar .app-sidebar-header__desc--editable .app-sidebar-header__mainname-form[data-v-82f4f9ef],.app-sidebar .app-sidebar-header__desc--with-subname--editable .app-sidebar-header__mainname-form[data-v-82f4f9ef]{margin-top:-2px;margin-bottom:-2px}.app-sidebar .app-sidebar-header__desc--with-subname--editable .app-sidebar-header__subname[data-v-82f4f9ef]{margin-top:-2px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions[data-v-82f4f9ef]{display:flex;height:var(--default-clickable-area);width:var(--default-clickable-area);justify-content:center;flex:0 0 auto}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions .app-sidebar-header__star[data-v-82f4f9ef]{box-shadow:none}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions .app-sidebar-header__star[data-v-82f4f9ef]:not([aria-pressed=true]):hover{box-shadow:none;background-color:var(--color-background-hover)}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container[data-v-82f4f9ef]{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;min-width:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container[data-v-82f4f9ef]{display:flex;align-items:center;min-height:var(--default-clickable-area)}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname[data-v-82f4f9ef]{padding:0;min-height:30px;font-size:20px;line-height:30px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname[data-v-82f4f9ef] .linkified{cursor:pointer;text-decoration:underline;margin:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname-form[data-v-82f4f9ef]{display:flex;flex:1 1 auto;align-items:center}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname-form input.app-sidebar-header__mainname-input[data-v-82f4f9ef]{flex:1 1 auto;margin:0;padding:7px;font-size:20px;font-weight:var(--font-weight-heading, bold)}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__menu[data-v-82f4f9ef]{margin-inline-start:5px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname[data-v-82f4f9ef],.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-82f4f9ef]{overflow:hidden;width:100%;margin:0;white-space:nowrap;text-overflow:ellipsis}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-82f4f9ef]{color:var(--color-text-maxcontrast);font-size:var(--default-font-size);padding:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname *[data-v-82f4f9ef]{vertical-align:text-bottom}.app-sidebar .app-sidebar-header .app-sidebar-header__mainname--hidden[data-v-82f4f9ef]{position:absolute;top:0;inset-inline-start:0;margin:0;width:1px;height:1px;overflow:hidden}.app-sidebar .app-sidebar-header__description[data-v-82f4f9ef]{display:flex;align-items:center;margin:0 10px}@media only screen and (max-width:512px){.app-sidebar[data-v-82f4f9ef]{position:absolute;--app-sidebar-width: 100vw}}.slide-right-leave-active[data-v-82f4f9ef],.slide-right-enter-active[data-v-82f4f9ef]{transition-duration:var(--animation-quick);transition-property:margin-inline-end}.slide-right-enter-to[data-v-82f4f9ef],.slide-right-leave[data-v-82f4f9ef]{margin-inline-end:0}.slide-right-enter[data-v-82f4f9ef],.slide-right-leave-to[data-v-82f4f9ef]{margin-inline-end:calc(-1 * var(--app-sidebar-width))}.material-design-icon[data-v-dc2e9d6a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.checkbox-content[data-v-dc2e9d6a]{display:flex;align-items:center;flex-direction:row;gap:var(--default-grid-baseline);-webkit-user-select:none;user-select:none;min-height:var(--default-clickable-area);border-radius:var(--checkbox-radio-switch--border-radius);padding:var(--default-grid-baseline) calc((var(--default-clickable-area) - var(--icon-height)) / 2);width:100%;max-width:fit-content}.checkbox-content__wrapper[data-v-dc2e9d6a]{flex:1 0}.checkbox-content__text[data-v-dc2e9d6a]:empty{display:none}.checkbox-content-checkbox:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-dc2e9d6a],.checkbox-content-radio:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-dc2e9d6a],.checkbox-content-switch:not(.checkbox-content--button-variant) .checkbox-content__icon[data-v-dc2e9d6a]{margin-block:calc((var(--default-clickable-area) - 2 * var(--default-grid-baseline) - var(--icon-height)) / 2) auto;line-height:0}.checkbox-content-checkbox:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-dc2e9d6a],.checkbox-content-radio:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-dc2e9d6a],.checkbox-content-switch:not(.checkbox-content--button-variant) .checkbox-content__icon--has-description[data-v-dc2e9d6a]{display:flex;align-items:center;margin-block-end:0;align-self:start}.checkbox-content__icon>*[data-v-dc2e9d6a]{width:var(--icon-size);height:var(--icon-height);color:var(--color-primary-element)}.checkbox-content__description[data-v-dc2e9d6a]{display:block;color:var(--color-text-maxcontrast);font-weight:var(--font-weight-default, normal)}.checkbox-content--button-variant .checkbox-content__icon:not(.checkbox-content__icon--checked)>*[data-v-dc2e9d6a]{color:var(--color-primary-element)}.checkbox-content--button-variant .checkbox-content__icon--checked>*[data-v-dc2e9d6a]{color:var(--color-primary-element-text)}.checkbox-content--has-text[data-v-dc2e9d6a]{padding-right:calc((var(--default-clickable-area) - 16px) / 2)}.checkbox-content[data-v-dc2e9d6a],.checkbox-content *[data-v-dc2e9d6a]{cursor:pointer;flex-shrink:0}.material-design-icon[data-v-8cf5299e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.checkbox-radio-switch[data-v-8cf5299e]{--icon-size: var(--739f019a);--icon-height: var(--16409f00);display:flex;align-items:center;color:var(--color-main-text);background-color:transparent;box-sizing:border-box;font-size:var(--default-font-size);font-weight:var(--font-weight-element, normal);line-height:var(--default-line-height);padding:0;position:relative}.checkbox-radio-switch *[data-v-8cf5299e]{box-sizing:border-box}.checkbox-radio-switch__input[data-v-8cf5299e]{position:absolute;z-index:-1;opacity:0!important;width:var(--icon-size);height:var(--icon-size);margin:4px calc((var(--default-clickable-area) - 16px) / 2)}.checkbox-radio-switch__input:focus-visible+.checkbox-radio-switch__content[data-v-8cf5299e],.checkbox-radio-switch__input[data-v-8cf5299e]:focus-visible{outline:2px solid var(--color-main-text);border-color:var(--color-main-background);outline-offset:-2px}.checkbox-radio-switch--disabled .checkbox-radio-switch__content[data-v-8cf5299e]{opacity:.5}.checkbox-radio-switch--disabled .checkbox-radio-switch__content[data-v-8cf5299e] .checkbox-radio-switch__icon>*{color:var(--color-main-text)}.checkbox-radio-switch--disabled .checkbox-radio-switch__content.checkbox-content[data-v-8cf5299e],.checkbox-radio-switch--disabled .checkbox-radio-switch__content.checkbox-content[data-v-8cf5299e] *:not(a){cursor:default!important}.checkbox-radio-switch:not(.checkbox-radio-switch--disabled,.checkbox-radio-switch--checked):focus-within .checkbox-radio-switch__content[data-v-8cf5299e],.checkbox-radio-switch:not(.checkbox-radio-switch--disabled,.checkbox-radio-switch--checked) .checkbox-radio-switch__content[data-v-8cf5299e]:hover{background-color:var(--color-background-hover)}.checkbox-radio-switch--checked:not(.checkbox-radio-switch--disabled):focus-within .checkbox-radio-switch__content[data-v-8cf5299e],.checkbox-radio-switch--checked:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__content[data-v-8cf5299e]:hover{background-color:var(--color-primary-element-hover)}.checkbox-radio-switch--checked:not(.checkbox-radio-switch--button-variant):not(.checkbox-radio-switch--disabled):focus-within .checkbox-radio-switch__content[data-v-8cf5299e],.checkbox-radio-switch--checked:not(.checkbox-radio-switch--button-variant):not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__content[data-v-8cf5299e]:hover{background-color:var(--color-primary-element-light-hover)}.checkbox-radio-switch-switch[data-v-8cf5299e]:not(.checkbox-radio-switch--checked) .checkbox-radio-switch__icon>*{color:var(--color-text-maxcontrast)}.checkbox-radio-switch-switch.checkbox-radio-switch--disabled.checkbox-radio-switch--checked[data-v-8cf5299e] .checkbox-radio-switch__icon>*{color:var(--color-primary-element-light)}.checkbox-radio-switch[data-v-8cf5299e]{--checkbox-radio-switch--border-radius: var(--border-radius-element, calc(var(--default-clickable-area) / 2));--checkbox-radio-switch--border-radius-outer: calc(var(--checkbox-radio-switch--border-radius) + 2px)}.checkbox-radio-switch--button-variant.checkbox-radio-switch[data-v-8cf5299e]{background-color:var(--color-main-background);border:2px solid var(--color-border-maxcontrast);overflow:hidden}.checkbox-radio-switch--button-variant.checkbox-radio-switch--checked[data-v-8cf5299e]{font-weight:var(--font-weight-element, bold)}.checkbox-radio-switch--button-variant.checkbox-radio-switch--checked .checkbox-radio-switch__content[data-v-8cf5299e]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.checkbox-radio-switch--button-variant[data-v-8cf5299e] .checkbox-radio-switch__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.checkbox-radio-switch--button-variant[data-v-8cf5299e]:not(.checkbox-radio-switch--checked) .checkbox-radio-switch__icon>*{color:var(--color-main-text)}.checkbox-radio-switch--button-variant[data-v-8cf5299e] .checkbox-radio-switch__icon:empty{display:none}.checkbox-radio-switch--button-variant[data-v-8cf5299e]:not(.checkbox-radio-switch--button-variant-v-grouped):not(.checkbox-radio-switch--button-variant-h-grouped),.checkbox-radio-switch--button-variant .checkbox-radio-switch__content[data-v-8cf5299e]{border-radius:var(--checkbox-radio-switch--border-radius)}.checkbox-radio-switch--button-variant-v-grouped .checkbox-radio-switch__content[data-v-8cf5299e]{flex-basis:100%;max-width:unset}.checkbox-radio-switch--button-variant-v-grouped[data-v-8cf5299e]:first-of-type{border-start-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-start-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-v-grouped[data-v-8cf5299e]:last-of-type{border-end-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-v-grouped[data-v-8cf5299e]:not(:last-of-type){border-bottom:0!important}.checkbox-radio-switch--button-variant-v-grouped:not(:last-of-type) .checkbox-radio-switch__content[data-v-8cf5299e]{margin-bottom:2px}.checkbox-radio-switch--button-variant-v-grouped[data-v-8cf5299e]:not(:first-of-type){border-top:0!important}.checkbox-radio-switch--button-variant-h-grouped[data-v-8cf5299e]:first-of-type{border-start-start-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-start-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-h-grouped[data-v-8cf5299e]:last-of-type{border-start-end-radius:var(--checkbox-radio-switch--border-radius-outer);border-end-end-radius:var(--checkbox-radio-switch--border-radius-outer)}.checkbox-radio-switch--button-variant-h-grouped[data-v-8cf5299e]:not(:last-of-type){border-inline-end:0!important}.checkbox-radio-switch--button-variant-h-grouped:not(:last-of-type) .checkbox-radio-switch__content[data-v-8cf5299e]{margin-inline-end:2px}.checkbox-radio-switch--button-variant-h-grouped[data-v-8cf5299e]:not(:first-of-type){border-inline-start:0!important}.checkbox-radio-switch--button-variant-h-grouped[data-v-8cf5299e] .checkbox-radio-switch__text{text-align:center;display:flex;align-items:center}.checkbox-radio-switch--button-variant-h-grouped .checkbox-radio-switch__content[data-v-8cf5299e]{flex-direction:column;justify-content:center;width:100%;margin:0;gap:0}._material-design-icon_Sb2uS{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._iconToggleSwitch_l-EPW{color:var(--2d1b8583);transition:color var(--animation-quick) ease}._iconToggleSwitch_l-EPW svg{height:auto!important}._iconToggleSwitch_l-EPW circle{cx:var(--78386a55);transition:cx var(--animation-quick) ease}.material-design-icon[data-v-53618902]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.empty-content[data-v-53618902]{display:flex;align-items:center;flex-direction:column;justify-content:center;flex-grow:1;padding:var(--default-grid-baseline)}.modal-wrapper .empty-content[data-v-53618902]{margin-top:5vh;margin-bottom:5vh}.empty-content__icon[data-v-53618902]{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto 15px;opacity:.4;background-repeat:no-repeat;background-position:center;background-size:64px}.empty-content__icon[data-v-53618902] svg{width:64px!important;height:64px!important;max-width:64px!important;max-height:64px!important}.empty-content__name[data-v-53618902]{margin-bottom:10px;text-align:center;font-weight:var(--font-weight-heading, bold);font-size:20px;line-height:30px}.empty-content__description[data-v-53618902]{color:var(--color-text-maxcontrast);text-align:center;text-wrap-style:balance}.empty-content__action[data-v-53618902]{margin-top:8px}.modal-wrapper .empty-content__action[data-v-53618902]{margin-top:20px;display:flex}.material-design-icon[data-v-bc553f62]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar__tab[data-v-bc553f62]{display:none;padding:10px;min-height:100%;max-height:100%;height:100%;overflow:auto}.app-sidebar__tab[data-v-bc553f62]:focus{border-color:var(--color-primary-element);box-shadow:0 0 .2em var(--color-primary-element);outline:0}.app-sidebar__tab--active[data-v-bc553f62]{display:block}._material-design-icon_tqInT{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantButton_bQdZv{--assistant-button-color: var(--color-element-assistant, linear-gradient(238deg, #A569D3 12%, #00679E 39%, #422083 86%));--assistant-button-background-color: var(--color-background-assistant, #F6F5FF);background-image:var(--color-border-assistant, linear-gradient(125deg, #7398FE 50%, #6104A4 125%));border-radius:var(--border-radius-element);height:var(--default-clickable-area);width:fit-content;padding-inline:1px;padding-block:1px 2px}._assistantButton_disabled_K3CBI{filter:saturate(.5);opacity:.5}._assistantButton_primary_4T7-a{--assistant-button-color: white;--assistant-button-background-color: var(--color-element-assistant,linear-gradient(238deg, #A569D3 12%, #00679E 39%, #422083 86%))}._assistantButton_primary_4T7-a ._assistantButton__icon_1c7PG,._assistantButton_primary_4T7-a ._assistantButton__text_Yy3y4{color:#fff!important}._assistantButton__button_OOIZd{--button-size: calc(var(--default-clickable-area) - 3px) !important;background-color:var(--assistant-button-background-color)!important;background-image:var(--assistant-button-background-color)!important;border:none!important}._assistantButton__button_OOIZd:hover{filter:brightness(120%)}._assistantButton__text_Yy3y4{background-image:var(--assistant-button-color);color:transparent!important;background-clip:text}._material-design-icon_LtxZt{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantIcon_ErmNZ{display:inline-flex;align-items:center;justify-content:center}._assistantIcon_ErmNZ:not(._assistantIcon_inline_-Xbfy){display:flex;min-height:var(--default-clickable-area);min-width:var(--default-clickable-area)}._assistantIcon__svg_hJtwe{display:inline-block;width:var(--a843d9d2);height:var(--a843d9d2);max-width:var(--a843d9d2);max-height:var(--a843d9d2)}._material-design-icon_7fn2y{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantContent_M9GKq{background-image:var(--color-border-assistant, linear-gradient(125deg, #7398FE 50%, #6104A4 125%));border-radius:var(--border-radius-container);padding:2px}._assistantContent__inner_TRg9q{background-color:var(--color-background-assistant, #F6F5FF);border-radius:calc(var(--border-radius-container) - 1px);color:var(--color-main-text);padding:calc(var(--border-radius-container) - 1px);height:100%;width:100%}.material-design-icon[data-v-9d57c0d3]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.avatardiv[data-v-9d57c0d3]{position:relative;display:inline-block;width:var(--avatar-size);height:var(--avatar-size)}.avatardiv--unknown[data-v-9d57c0d3]{position:relative;background-color:var(--color-main-background);white-space:normal}.avatardiv[data-v-9d57c0d3]:not(.avatardiv--unknown){background-color:var(--color-main-background)!important;box-shadow:0 0 5px #0000000d inset}.avatardiv--with-menu[data-v-9d57c0d3]{cursor:pointer;position:relative}.avatardiv--with-legacy-menu .action-item[data-v-9d57c0d3]{position:absolute;top:0;inset-inline-start:0}.avatardiv--with-legacy-menu[data-v-9d57c0d3] .action-item__menutoggle{cursor:pointer;opacity:0}.avatardiv--with-legacy-menu[data-v-9d57c0d3]:focus-within .action-item__menutoggle,.avatardiv--with-legacy-menu[data-v-9d57c0d3]:hover .action-item__menutoggle,.avatardiv--with-legacy-menu.avatardiv--with-menu-loading[data-v-9d57c0d3] .action-item__menutoggle{opacity:1}.avatardiv--with-legacy-menu:focus-within img[data-v-9d57c0d3],.avatardiv--with-legacy-menu:hover img[data-v-9d57c0d3],.avatardiv--with-legacy-menu.avatardiv--with-menu-loading img[data-v-9d57c0d3]{opacity:.3}.avatardiv--with-legacy-menu[data-v-9d57c0d3] .action-item__menutoggle,.avatardiv--with-legacy-menu img[data-v-9d57c0d3]{transition:opacity var(--animation-quick)}.avatardiv--with-legacy-menu[data-v-9d57c0d3] .button-vue,.avatardiv--with-legacy-menu[data-v-9d57c0d3] .button-vue__icon{height:var(--avatar-size);min-height:var(--avatar-size);width:var(--avatar-size)!important;min-width:var(--avatar-size)}.avatardiv--with-legacy-menu[data-v-9d57c0d3]>.button-vue,.avatardiv--with-legacy-menu[data-v-9d57c0d3]>.action-item .button-vue{--button-radius: calc(var(--avatar-size) / 2)}.avatardiv .avatar-profile-popover[data-v-9d57c0d3]{position:absolute;inset:0;width:100%;height:100%;z-index:1}.avatardiv .avatar-profile-popover__trigger[data-v-9d57c0d3]{display:block;width:100%;height:100%;border-radius:inherit;outline:none}.avatardiv .avatardiv__initials-wrapper[data-v-9d57c0d3]{display:block;height:var(--avatar-size);width:var(--avatar-size);background-color:var(--color-main-background);border-radius:calc(var(--avatar-size) / 2)}.avatardiv .avatardiv__initials-wrapper .avatardiv__initials[data-v-9d57c0d3]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;font-weight:var(--font-weight-default, normal)}.avatardiv img[data-v-9d57c0d3]{width:100%;height:100%;object-fit:cover}.avatardiv .material-design-icon[data-v-9d57c0d3]{width:var(--avatar-size);height:var(--avatar-size)}.avatardiv .avatardiv__user-status[data-v-9d57c0d3]{--avatar-status-size-orbital: calc(var(--avatar-size) * (1 - 1 / sqrt(2)));--avatar-status-size-min: var(--font-size-small);--avatar-status-size: max(var(--avatar-status-size-orbital), var(--avatar-status-size-min));box-sizing:border-box;position:absolute;inset-inline-end:0;inset-block-end:0;height:var(--avatar-status-size);width:var(--avatar-status-size);line-height:1;font-size:calc(var(--avatar-status-size) / 1.2);background-color:var(--color-main-background);background-repeat:no-repeat;background-size:var(--avatar-status-size);background-position:center;border-radius:50%;display:flex;align-items:center;justify-content:center}.acli:hover .avatardiv .avatardiv__user-status[data-v-9d57c0d3]{border-color:var(--color-background-hover);background-color:var(--color-background-hover)}.acli.active .avatardiv .avatardiv__user-status[data-v-9d57c0d3]{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}.avatardiv .avatardiv__user-status--icon[data-v-9d57c0d3]{border:none;background-color:transparent}.avatardiv .popovermenu-wrapper[data-v-9d57c0d3]{position:relative;display:inline-block}.avatar-class-icon[data-v-9d57c0d3]{display:block;border-radius:calc(var(--avatar-size) / 2);background-color:var(--color-background-darker);height:100%}._material-design-icon_GNzpp{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._externalLink_aFEAG{text-decoration:underline}._externalLink_decorated_D-MKg:after{content:" ↗"}.material-design-icon[data-v-86b73d39]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.user-status-icon[data-v-86b73d39]{--user-status-color-online: #2D7B41;--user-status-color-busy: #DB0606;--user-status-color-away: #C88800;--user-status-color-offline: #6B6B6B;display:flex;justify-content:center;align-items:center}.user-status-icon--invisible[data-v-86b73d39]{filter:var(--background-invert-if-dark)}.user-status-icon[data-v-86b73d39] svg{width:100%;height:100%}._fadeTransition_WCulI{transition:all var(--animation-quick) ease}._fadeTransitionActive_IUBx5{opacity:0;position:absolute}.material-design-icon[data-v-6e1e1ed2]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-crumb[data-v-6e1e1ed2]{background-image:none;display:inline-flex;height:var(--default-clickable-area);padding:0}.vue-crumb[data-v-6e1e1ed2]:last-child{min-width:0}.vue-crumb:last-child .vue-crumb__separator[data-v-6e1e1ed2]{display:none}.vue-crumb--hidden[data-v-6e1e1ed2]{display:none}.vue-crumb__separator[data-v-6e1e1ed2]{padding:0;color:var(--color-text-maxcontrast)}.vue-crumb.vue-crumb--hovered[data-v-6e1e1ed2] .button-vue{background-color:var(--color-background-dark);color:var(--color-main-text)}.vue-crumb[data-v-6e1e1ed2]:not(:last-child) .button-vue{color:var(--color-text-maxcontrast)}.vue-crumb[data-v-6e1e1ed2]:not(:last-child) .button-vue:hover,.vue-crumb[data-v-6e1e1ed2]:not(:last-child) .button-vue:focus{background-color:var(--color-background-dark);color:var(--color-main-text)}.vue-crumb[data-v-6e1e1ed2]:not(:last-child) .button-vue__text{font-weight:var(--font-weight-element, normal)}.vue-crumb[data-v-6e1e1ed2] .button-vue__text{margin:0}.vue-crumb[data-v-6e1e1ed2]:not(.dropdown) .action-item{max-width:100%}.vue-crumb[data-v-6e1e1ed2]:not(.dropdown) .action-item .button-vue{padding:0 4px 0 16px;max-width:100%}.vue-crumb[data-v-6e1e1ed2]:not(.dropdown) .action-item .button-vue__wrapper{flex-direction:row-reverse}.vue-crumb[data-v-6e1e1ed2]:not(.dropdown) .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-dark);color:var(--color-main-text)}.material-design-icon[data-v-8d4e090c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.breadcrumb[data-v-8d4e090c]{width:100%;flex-grow:1;display:inline-flex;align-items:center}.breadcrumb--collapsed[data-v-8d4e090c] .vue-crumb:last-child{min-width:100px}.breadcrumb nav[data-v-8d4e090c]{flex-shrink:1;min-width:0}.breadcrumb .breadcrumb__crumbs[data-v-8d4e090c]{max-width:100%}.breadcrumb .breadcrumb__crumbs[data-v-8d4e090c],.breadcrumb .breadcrumb__actions[data-v-8d4e090c]{display:inline-flex}.material-design-icon[data-v-88468fab]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.fade-enter-active[data-v-88468fab],.fade-leave-active[data-v-88468fab]{transition:opacity .3s ease}.fade-enter[data-v-88468fab],.fade-leave-to[data-v-88468fab]{opacity:0}.linked-icons[data-v-88468fab]{display:flex}.linked-icons img[data-v-88468fab]{padding:12px;height:44px;display:block;background-repeat:no-repeat;background-position:center;opacity:.7}.linked-icons img[data-v-88468fab]:hover{opacity:1}.popovermenu[data-v-88468fab]{display:none}.popovermenu.open[data-v-88468fab]{display:block}li.collection-list-item[data-v-88468fab]{flex-wrap:wrap;height:auto;cursor:pointer;margin-bottom:0!important}li.collection-list-item .collection-avatar[data-v-88468fab]{margin-top:0}li.collection-list-item form[data-v-88468fab],li.collection-list-item .collection-item-name[data-v-88468fab]{flex-basis:10%;flex-grow:1;display:flex}li.collection-list-item .collection-item-name[data-v-88468fab]{padding:12px 9px}li.collection-list-item input[data-v-88468fab]{margin-top:4px;border-color:var(--color-border-maxcontrast)}li.collection-list-item input[type=text][data-v-88468fab]{flex-grow:1}li.collection-list-item .error[data-v-88468fab],li.collection-list-item .resource-list-details[data-v-88468fab]{flex-basis:100%;width:100%}li.collection-list-item .resource-list-details li[data-v-88468fab]{display:flex;margin-left:44px;border-radius:3px;cursor:pointer}li.collection-list-item .resource-list-details li[data-v-88468fab]:hover{background-color:var(--color-background-dark)}li.collection-list-item .resource-list-details li a[data-v-88468fab]{flex-grow:1;padding:3px;max-width:calc(100% - 30px);display:flex}li.collection-list-item .resource-list-details span[data-v-88468fab]{display:inline-block;vertical-align:top;margin-right:10px}li.collection-list-item .resource-list-details span.resource-name[data-v-88468fab]{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top;white-space:nowrap;flex-grow:1;padding:4px}li.collection-list-item .resource-list-details img[data-v-88468fab]{width:24px;height:24px}li.collection-list-item .resource-list-details .icon-close[data-v-88468fab]{opacity:.7}li.collection-list-item .resource-list-details .icon-close[data-v-88468fab]:hover,li.collection-list-item .resource-list-details .icon-close[data-v-88468fab]:focus{opacity:1}.should-shake[data-v-88468fab]{animation:shake-88468fab .6s 1 linear}@keyframes shake-88468fab{0%{transform:translate(15px)}20%{transform:translate(-15px)}40%{transform:translate(7px)}60%{transform:translate(-7px)}80%{transform:translate(3px)}to{transform:translate(0)}}.material-design-icon[data-v-e1b88947]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.collection-list *[data-v-e1b88947]{box-sizing:border-box}.collection-list>li[data-v-e1b88947]{display:flex;align-items:center;gap:12px}.collection-list>li>.avatar[data-v-e1b88947]{margin-top:0}#collection-select-container[data-v-e1b88947]{display:flex;flex-direction:column}.v-select span.avatar[data-v-e1b88947]{display:block;padding:16px;opacity:.7;background-repeat:no-repeat;background-position:center}.v-select span.avatar[data-v-e1b88947]:hover{opacity:1}p.hint[data-v-e1b88947]{z-index:1;margin-top:-16px;padding:8px;color:var(--color-text-maxcontrast);line-height:normal}div.avatar[data-v-e1b88947]{width:32px;height:32px;margin:30px 0 0;padding:8px;background-color:var(--color-background-dark)}.icon-projects[data-v-e1b88947]{display:block;padding:8px;background-repeat:no-repeat;background-position:center}.option__wrapper[data-v-e1b88947]{display:flex}.option__wrapper .avatar[data-v-e1b88947]{display:block;width:32px;height:32px;background-color:var(--color-background-darker)!important}.option__wrapper .option__title[data-v-e1b88947]{padding:4px}.fade-enter-active[data-v-e1b88947],.fade-leave-active[data-v-e1b88947]{transition:opacity .5s}.fade-enter[data-v-e1b88947],.fade-leave-to[data-v-e1b88947]{opacity:0}.v-select.select .select__helper-text{display:flex;align-items:center;margin:0;padding-block:4px;padding-inline:var(--border-radius-element);color:var(--color-text-maxcontrast);font-size:var(--default-font-size);overflow-wrap:anywhere}.v-select.select .select__helper-text--error{color:var(--color-error)}.v-select.select .select__helper-text--success{color:var(--color-success)}.v-select.select .select__helper-text .select__helper-text-icon{margin-inline-end:8px}body{--vs-search-input-color: var(--color-main-text);--vs-search-input-bg: var(--color-main-background);--vs-search-input-placeholder-color: var(--color-text-maxcontrast);--vs-font-size: var(--default-font-size);--vs-line-height: var(--default-line-height);--vs-state-disabled-bg: var(--color-background-hover);--vs-state-disabled-color: var(--color-text-maxcontrast);--vs-state-disabled-controls-color: var(--color-text-maxcontrast);--vs-state-disabled-cursor: not-allowed;--vs-disabled-bg: var(--color-background-hover);--vs-disabled-color: var(--color-text-maxcontrast);--vs-disabled-cursor: not-allowed;--vs-border-color: var(--color-border-maxcontrast);--vs-border-width: var(--border-width-input, 2px) !important;--vs-border-style: solid;--vs-border-radius: var(--border-radius-large);--vs-controls-color: var(--color-main-text);--vs-selected-bg: var(--color-background-hover);--vs-selected-color: var(--color-main-text);--vs-selected-border-color: var(--vs-border-color);--vs-selected-border-style: var(--vs-border-style);--vs-selected-border-width: var(--vs-border-width);--vs-dropdown-bg: var(--color-main-background);--vs-dropdown-color: var(--color-main-text);--vs-dropdown-z-index: 9999;--vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow);--vs-dropdown-option-padding: 8px 20px;--vs-dropdown-option--active-bg: var(--color-background-hover);--vs-dropdown-option--active-color: var(--color-main-text);--vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color);--vs-dropdown-option--deselect-bg: var(--color-error);--vs-dropdown-option--deselect-color: #fff;--vs-transition-duration: 0ms;--vs-actions-padding: 0 8px 0 4px}.v-select.select{min-height:calc(var(--default-clickable-area) - 2 * var(--border-width-input));min-width:260px;margin:0 0 var(--default-grid-baseline)}.v-select.select.vs--open{--vs-border-width: var(--border-width-input-focused, 2px)}.v-select.select .select__label{display:block;margin-bottom:2px}.v-select.select .vs__selected{height:calc(var(--default-clickable-area) - 2 * var(--vs-border-width) - var(--default-grid-baseline));margin:calc(var(--default-grid-baseline) / 2);padding-block:0;padding-inline:12px 8px;border-radius:16px!important;background:var(--color-primary-element-light);border:none}.v-select.select.vs--open .vs__selected:first-of-type{margin-inline-start:calc(var(--default-grid-baseline) / 2 - (var(--border-width-input-focused, 2px) - var(--border-width-input, 2px)))!important}.v-select.select .vs__search{text-overflow:ellipsis;color:var(--color-main-text);min-height:unset!important;height:calc(var(--default-clickable-area) - 2 * var(--vs-border-width))!important}.v-select.select .vs__search::placeholder{color:var(--color-text-maxcontrast)}.v-select.select .vs__search,.v-select.select .vs__search:focus{margin:0}.v-select.select .vs__dropdown-toggle{position:relative;max-height:100px;padding:var(--border-width-input);overflow-y:auto}.v-select.select .vs__dropdown-toggle{position:relative}.v-select.select .vs__actions{position:sticky;top:0}.v-select.select .vs__clear{margin-right:2px}.v-select.select.vs--open .vs__dropdown-toggle{border-color:var(--color-main-text);border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0;border-style:solid;border-width:var(--border-width-input-focused);outline:2px solid var(--color-main-background);padding:0}.v-select.select:not(.vs--disabled,.vs--open) .vs__dropdown-toggle:active,.v-select.select:not(.vs--disabled,.vs--open) .vs__dropdown-toggle:focus-within{outline:2px solid var(--color-main-background);border-color:var(--color-main-text)}.v-select.select.vs--disabled .vs__search,.v-select.select.vs--disabled .vs__selected{color:var(--color-text-maxcontrast)}.v-select.select.vs--disabled .vs__clear,.v-select.select.vs--disabled .vs__deselect{display:none}.v-select.select--no-wrap .vs__selected-options{flex-wrap:nowrap;overflow:auto;min-width:unset}.v-select.select--no-wrap .vs__selected-options .vs__selected{min-width:unset}.v-select.select--drop-up.vs--open .vs__dropdown-toggle{border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);border-top-color:transparent;border-bottom-color:var(--color-main-text)}.v-select.select .vs__selected-options{min-height:calc(var(--default-clickable-area) - 2 * var(--vs-border-width))}.v-select.select .vs__selected-options .vs__selected~.vs__search[readonly]{position:absolute}.v-select.select .vs__selected-options{padding:0 5px}.v-select.select.vs--single.vs--loading .vs__selected,.v-select.select.vs--single.vs--open .vs__selected{max-width:100%;opacity:1;color:var(--color-text-maxcontrast)}.v-select.select.vs--single .vs__selected-options{flex-wrap:nowrap}.v-select.select.vs--single .vs__selected{background:unset!important}.vs__dropdown-toggle{--input-border-box-shadow-light: 0 -1px var(--vs-border-color), 0 0 0 1px color-mix(in srgb, var(--vs-border-color), 65% transparent);--input-border-box-shadow-dark: 0 1px var(--vs-border-color), 0 0 0 1px color-mix(in srgb, var(--vs-border-color), 65% transparent);--input-border-box-shadow: var(--input-border-box-shadow-light);border:none;border-radius:var(--border-radius-element);box-shadow:var(--input-border-box-shadow)}.vs__dropdown-toggle:hover:not([disabled]){box-shadow:0 0 0 1px var(--vs-border-color)}@media(prefers-color-scheme:dark){.vs__dropdown-toggle .vs__dropdown-toggle{--input-border-box-shadow: var(--input-border-box-shadow-dark)}}[data-theme-dark] .vs__dropdown-toggle{--input-border-box-shadow: var(--input-border-box-shadow-dark)}[data-theme-light] .vs__dropdown-toggle{--input-border-box-shadow: var(--input-border-box-shadow-light)}.select--legacy .vs__dropdown-toggle{box-shadow:0 0 0 1px var(--vs-border-color)}.select--legacy .vs__dropdown-toggle:hover:not([disabled]){box-shadow:0 0 0 2px var(--vs-border-color)}.vs__dropdown-menu{border-width:var(--border-width-input-focused)!important;border-color:var(--color-main-text)!important;outline:none!important;box-shadow:-2px 0 0 var(--color-main-background),0 2px 0 var(--color-main-background),2px 0 0 var(--color-main-background),!important;padding:4px!important}.vs__dropdown-menu--floating{width:max-content;position:absolute;top:0;left:0}.vs__dropdown-menu--floating-placement-top{border-radius:var(--vs-border-radius) var(--vs-border-radius) 0 0!important;border-top-style:var(--vs-border-style)!important;border-bottom-style:none!important;box-shadow:0 -2px 0 var(--color-main-background),-2px 0 0 var(--color-main-background),2px 0 0 var(--color-main-background),!important}.vs__dropdown-menu .vs__dropdown-option{border-radius:6px!important}.vs__dropdown-menu .vs__no-options{color:var(--color-text-lighter)!important}.user-select .vs__selected{padding-inline:0 5px!important}.material-design-icon[data-v-592b8444]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.name-parts[data-v-592b8444]{display:flex;max-width:100%;cursor:inherit}.name-parts__first[data-v-592b8444]{overflow:hidden;text-overflow:ellipsis}.name-parts__first[data-v-592b8444],.name-parts__last[data-v-592b8444]{white-space:pre;cursor:inherit}.name-parts__first strong[data-v-592b8444],.name-parts__last strong[data-v-592b8444]{font-weight:700}.material-design-icon[data-v-eff1d9a4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.option[data-v-eff1d9a4]{display:flex;align-items:center;width:100%;height:var(--height);cursor:inherit}.option__avatar[data-v-eff1d9a4]{margin-right:var(--margin)}.option__details[data-v-eff1d9a4]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__lineone[data-v-eff1d9a4]{color:var(--color-main-text)}.option__linetwo[data-v-eff1d9a4]{color:var(--color-text-maxcontrast)}.option__lineone[data-v-eff1d9a4],.option__linetwo[data-v-eff1d9a4]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2}.option__lineone strong[data-v-eff1d9a4],.option__linetwo strong[data-v-eff1d9a4]{font-weight:700}.option--compact .option__lineone[data-v-eff1d9a4]{font-size:14px}.option--compact .option__linetwo[data-v-eff1d9a4]{font-size:11px;line-height:1.5;margin-top:-4px}.option__icon[data-v-eff1d9a4]{width:var(--default-clickable-area);height:var(--default-clickable-area);color:var(--color-text-maxcontrast)}.option__icon.icon[data-v-eff1d9a4]{flex:0 0 var(--default-clickable-area);opacity:.7;background-position:center;background-size:16px}.option__details[data-v-eff1d9a4],.option__lineone[data-v-eff1d9a4],.option__linetwo[data-v-eff1d9a4],.option__icon[data-v-eff1d9a4]{cursor:inherit}:host,:root{--vs-colors--lightest:rgba(60,60,60,.26);--vs-colors--light:rgba(60,60,60,.5);--vs-colors--dark:#333;--vs-colors--darkest:rgba(0,0,0,.15);--vs-search-input-color:inherit;--vs-search-input-bg:#fff;--vs-search-input-placeholder-color:inherit;--vs-font-size:1rem;--vs-line-height:1.4;--vs-state-disabled-bg:#f8f8f8;--vs-state-disabled-color:var(--vs-colors--light);--vs-state-disabled-controls-color:var(--vs-colors--light);--vs-state-disabled-cursor:not-allowed;--vs-border-color:var(--vs-colors--lightest);--vs-border-width:1px;--vs-border-style:solid;--vs-border-radius:4px;--vs-actions-padding:4px 6px 0 3px;--vs-controls-color:var(--vs-colors--light);--vs-controls-size:1;--vs-controls--deselect-text-shadow:0 1px 0 #fff;--vs-selected-bg:#f0f0f0;--vs-selected-color:var(--vs-colors--dark);--vs-selected-border-color:var(--vs-border-color);--vs-selected-border-style:var(--vs-border-style);--vs-selected-border-width:var(--vs-border-width);--vs-dropdown-bg:#fff;--vs-dropdown-color:inherit;--vs-dropdown-z-index:1000;--vs-dropdown-min-width:160px;--vs-dropdown-max-height:350px;--vs-dropdown-box-shadow:0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg:#000;--vs-dropdown-option-color:var(--vs-dropdown-color);--vs-dropdown-option-padding:3px 20px;--vs-dropdown-option--active-bg:#136cfb;--vs-dropdown-option--active-color:#fff;--vs-dropdown-option--kb-focus-box-shadow:inset 0px 0px 0px 2px #949494;--vs-dropdown-option--deselect-bg:#fb5858;--vs-dropdown-option--deselect-color:#fff;--vs-transition-timing-function:cubic-bezier(1,-.115,.975,.855);--vs-transition-duration:.15s}.v-select{font-family:inherit;position:relative}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function:cubic-bezier(1,.5,.8,1);--vs-transition-duration:.15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg:var(--vs-state-disabled-bg);--vs-disabled-color:var(--vs-state-disabled-color);--vs-disabled-cursor:var(--vs-state-disabled-cursor)}.vs--disabled .vs__clear,.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__open-indicator,.vs--disabled .vs__open-indicator-button,.vs--disabled .vs__search,.vs--disabled .vs__selected{background-color:var(--vs-disabled-bg);cursor:var(--vs-disabled-cursor)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--vs-search-input-bg);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);display:flex;padding:0 0 4px;white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;min-width:0;padding:0 2px;position:relative}.vs__actions{align-items:center;display:flex;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator-button{background-color:transparent;border:0;cursor:pointer;padding:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);background-color:transparent;border:0;cursor:pointer;margin-right:8px;padding:0}.vs__dropdown-menu{background:var(--vs-dropdown-bg);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);border-top-style:none;box-shadow:var(--vs-dropdown-box-shadow);box-sizing:border-box;color:var(--vs-dropdown-color);display:block;left:0;list-style:none;margin:0;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;padding:5px 0;position:absolute;text-align:left;top:calc(100% - var(--vs-border-width));width:100%;z-index:var(--vs-dropdown-z-index)}.vs__no-options{text-align:center}.vs__dropdown-option{clear:both;color:var(--vs-dropdown-option-color);cursor:pointer;display:block;line-height:1.42857143;padding:var(--vs-dropdown-option-padding);white-space:nowrap}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--kb-focus{box-shadow:var(--vs-dropdown-option--kb-focus-box-shadow)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);display:flex;line-height:var(--vs-line-height);margin:4px 2px 0;min-width:0;padding:0 .25em;z-index:0}.vs__deselect{fill:var(--vs-controls-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;cursor:pointer;display:inline-flex;margin-left:4px;padding:0;text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--loading .vs__selected,.vs--single.vs--open .vs__selected{max-width:100%;opacity:.4;position:absolute}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-ms-clear,.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration{display:none}.vs__search,.vs__search:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:1px solid transparent;border-left:none;box-shadow:none;color:var(--vs-search-input-color);flex-grow:1;font-size:var(--vs-font-size);line-height:var(--vs-line-height);margin:4px 0 0;max-width:100%;outline:none;padding:0 7px;width:0;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search:-ms-input-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;-webkit-animation:vSelectSpinner 1.1s linear infinite;animation:vSelectSpinner 1.1s linear infinite;border:.9em solid hsla(0,0%,39%,.1);border-left-color:#3c3c3c73;font-size:5px;opacity:0;overflow:hidden;text-indent:-9999em;transform:translateZ(0) scale(var(--vs-controls--spinner-size,var(--vs-controls-size)));transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;height:5em;transform:scale(var(--vs-controls--spinner-size,var(--vs-controls-size)));width:5em}.vs--loading .vs__spinner{opacity:1}.material-design-icon[data-v-a8b9d9f6]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.color-picker[data-v-a8b9d9f6]{display:flex;overflow:hidden;align-content:flex-end;flex-direction:column;justify-content:space-between;padding:var(--border-radius-element);min-width:calc(4 * var(--default-clickable-area) + 2 * var(--border-radius-element))}.color-picker--clearable[data-v-a8b9d9f6]{min-width:calc(5 * var(--default-clickable-area) + 2 * var(--border-radius-element))}.color-picker--advanced-fields[data-v-a8b9d9f6]{min-width:264px}.color-picker__clear[data-v-a8b9d9f6]{color:var(--color-main-text)}.color-picker__clear[data-v-a8b9d9f6]:hover:not(:has(:checked)){color:var(--color-text-maxcontrast)}.color-picker__simple[data-v-a8b9d9f6]{display:grid;grid-template-columns:repeat(auto-fit,var(--default-clickable-area));grid-auto-rows:var(--default-clickable-area)}.color-picker__simple-color-circle[data-v-a8b9d9f6]{display:flex;align-items:center;justify-content:center;width:calc(var(--default-clickable-area) - 10px);height:calc(var(--default-clickable-area) - 10px);min-height:calc(var(--default-clickable-area) - 10px);margin:auto;padding:0;color:#fff;border:1px solid rgba(0,0,0,.25);border-radius:50%;font-size:16px}.color-picker__simple-color-circle[data-v-a8b9d9f6]:focus-within{outline:2px solid var(--color-main-text)}.color-picker__simple-color-circle[data-v-a8b9d9f6]:hover{opacity:.6}.color-picker__simple-color-circle--active[data-v-a8b9d9f6]{width:calc(var(--default-clickable-area) - 6px);height:calc(var(--default-clickable-area) - 6px);min-height:calc(var(--default-clickable-area) - 6px);transition:all .1s ease-in-out;opacity:1!important}.color-picker__advanced[data-v-a8b9d9f6]{box-shadow:none!important}.color-picker__navigation[data-v-a8b9d9f6]{display:flex;flex-direction:row;gap:var(--default-grid-baseline);justify-content:space-between;margin-top:calc(2 * var(--default-grid-baseline))}[data-v-a8b9d9f6] .vc-chrome{width:unset;background-color:var(--color-main-background)}[data-v-a8b9d9f6] .vc-chrome-color-wrap{width:30px;height:30px}[data-v-a8b9d9f6] .vc-chrome-active-color{border-radius:17px}[data-v-a8b9d9f6] .vc-chrome-body{padding:14px 0 0;background-color:var(--color-main-background)}[data-v-a8b9d9f6] .vc-chrome-body .vc-input__input{--input-border-radius: var(--border-radius-element, var(--border-radius-large));--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));width:100%;height:var(--default-clickable-area);margin:0;padding-inline:calc(var(--border-radius-large) + var(--input-border-width-offset));padding-block:var(--input-border-width-offset);border:var(--border-width-input, 2px) solid var(--color-border-maxcontrast);border-radius:var(--input-border-radius);font-size:var(--default-font-size);color:var(--color-main-text);box-shadow:none}[data-v-a8b9d9f6] .vc-chrome-body .vc-input__input:active:not([disabled]),[data-v-a8b9d9f6] .vc-chrome-body .vc-input__input:hover:not([disabled]),[data-v-a8b9d9f6] .vc-chrome-body .vc-input__input:focus:not([disabled]){--input-border-width-offset: 0px;border-color:var(--color-main-text);border-width:var(--border-width-input-focused, 2px);box-shadow:0 0 0 2px var(--color-main-background)!important}[data-v-a8b9d9f6] .vc-chrome-body .vc-input__input:active:not([disabled])+.vc-input__label,[data-v-a8b9d9f6] .vc-chrome-body .vc-input__input:hover:not([disabled])+.vc-input__label,[data-v-a8b9d9f6] .vc-chrome-body .vc-input__input:focus:not([disabled])+.vc-input__label{color:var(--color-main-text)}[data-v-a8b9d9f6] .vc-chrome-body .vc-input__label{position:absolute;inset-inline:var(--border-width-input-focused, 2px);inset-block-start:calc(-1.5 * var(--font-size-small, 13px) / 2);max-width:fit-content;margin-inline:calc(var(--border-radius-large) - var(--default-grid-baseline));margin-block:0;padding-inline:var(--default-grid-baseline);font-family:var(--font-face);font-size:var(--font-size-small, 13px);line-height:1.5;font-weight:var(--font-weight-element, 500);color:var(--color-text-maxcontrast);background-color:var(--color-main-background);pointer-events:none}[data-v-a8b9d9f6] .vc-chrome-toggle-btn{display:flex;justify-content:center;align-items:center;width:var(--default-clickable-area);height:var(--default-clickable-area);margin-inline-start:6px;filter:var(--background-invert-if-dark)}[data-v-a8b9d9f6] .vc-chrome-toggle-icon{width:24px;height:24px;margin:0}[data-v-a8b9d9f6] .vc-chrome-toggle-icon-highlight{width:var(--default-clickable-area);height:var(--default-clickable-area);inset:0}[data-v-a8b9d9f6] .vc-chrome-saturation-wrap{border-radius:3px}[data-v-a8b9d9f6] .vc-chrome-saturation-circle{width:20px;height:20px}.slide-enter[data-v-a8b9d9f6]{transform:translate(-50%);opacity:0}.slide-enter-to[data-v-a8b9d9f6],.slide-leave[data-v-a8b9d9f6]{transform:translate(0);opacity:1}.slide-leave-to[data-v-a8b9d9f6]{transform:translate(-50%);opacity:0}.slide-enter-active[data-v-a8b9d9f6],.slide-leave-active[data-v-a8b9d9f6]{transition:all 50ms ease-in-out}#skip-actions.vue-skip-actions:focus-within{top:0!important;left:0!important;width:100vw;height:100vh;padding:var(--body-container-margin)!important;-webkit-backdrop-filter:brightness(50%);backdrop-filter:brightness(50%)}@media only screen and (min-width:1024px){.content:not(.content--legacy) .app-navigation:not(.app-navigation--close)~.app-content{border-inline-start:1px solid var(--color-border);border-start-start-radius:var(--body-container-radius);border-end-start-radius:var(--body-container-radius)}}.material-design-icon[data-v-0549f131]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-skip-actions__container[data-v-0549f131]{background-color:var(--color-main-background);border-radius:var(--border-radius-large);padding:22px}.vue-skip-actions__headline[data-v-0549f131]{font-weight:var(--font-weight-heading, bold);font-size:20px;line-height:30px;margin-bottom:12px}.vue-skip-actions__buttons[data-v-0549f131]{display:flex;flex-wrap:wrap;gap:12px}.vue-skip-actions__buttons>*[data-v-0549f131]{flex:1 0 fit-content}.vue-skip-actions__image[data-v-0549f131]{margin-top:12px}.vue-skip-actions__image[data-v-0549f131]:dir(rtl){transform:rotateY(180deg)}.content[data-v-0549f131]{box-sizing:border-box;margin:var(--body-container-margin);margin-top:var(--header-height);display:flex;width:calc(100% - var(--body-container-margin) * 2);border-radius:var(--body-container-radius);height:var(--body-height);overflow:hidden;padding:0}.content[data-v-0549f131]:not(.content--legacy){background-color:var(--color-main-background-blur, var(--color-main-background));-webkit-backdrop-filter:var(--filter-background-blur, none);backdrop-filter:var(--filter-background-blur, none)}.content[data-v-0549f131]:not(.with-sidebar--full){position:fixed}.content[data-v-0549f131] *{box-sizing:border-box}.material-design-icon[data-v-7d9795d6]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.counter-bubble__counter[data-v-7d9795d6]{--counter-bubble-height: 22px;font-size:var(--font-size-small, 13px);overflow:hidden;width:fit-content;min-width:var(--counter-bubble-height);text-align:center;line-height:var(--counter-bubble-height);padding:0 calc(1.5 * var(--default-grid-baseline));border-radius:var(--border-radius-pill);background-color:var(--color-primary-element-light);font-weight:700;color:var(--color-primary-element-light-text)}.counter-bubble__counter .active[data-v-7d9795d6]{color:var(--color-main-background);background-color:var(--color-primary-element-light)}.counter-bubble__counter--highlighted[data-v-7d9795d6]{color:var(--color-primary-element-text);background-color:var(--color-primary-element)}.counter-bubble__counter--highlighted.active[data-v-7d9795d6]{color:var(--color-primary-element);background-color:var(--color-main-background)}.counter-bubble__counter--outlined[data-v-7d9795d6]{color:var(--color-primary-element);background:transparent;box-shadow:inset 0 0 0 2px}.counter-bubble__counter--outlined.active[data-v-7d9795d6]{color:var(--color-main-background);box-shadow:inset 0 0 0 2px}.material-design-icon[data-v-bde19bf3]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.dashboard-widget[data-v-bde19bf3] .empty-content{text-align:center;padding-top:5vh}.dashboard-widget[data-v-bde19bf3] .empty-content.half-screen{padding-top:0;margin-bottom:1vh}.more[data-v-bde19bf3]{display:block;text-align:center;color:var(--color-text-maxcontrast);line-height:60px;cursor:pointer}.more[data-v-bde19bf3]:hover,.more[data-v-bde19bf3]:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-large);color:var(--color-main-text)}.item-list__entry[data-v-bde19bf3]{display:flex;align-items:flex-start;padding:8px}.item-list__entry .item-avatar[data-v-bde19bf3]{position:relative;margin-top:auto;margin-bottom:auto;background-color:var(--color-background-dark)!important}.item-list__entry .item__details[data-v-bde19bf3]{padding-left:8px;max-height:var(--default-clickable-area);flex-grow:1;overflow:hidden;display:flex;flex-direction:column}.item-list__entry .item__details h3[data-v-bde19bf3],.item-list__entry .item__details .message[data-v-bde19bf3]{white-space:nowrap;background-color:var(--color-background-dark)}.item-list__entry .item__details h3[data-v-bde19bf3]{font-size:100%;margin:0}.item-list__entry .item__details .message[data-v-bde19bf3]{width:80%;height:15px;margin-top:5px}.material-design-icon[data-v-3c6f752d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.item-list__entry[data-v-3c6f752d]{display:flex;align-items:center;position:relative;padding:8px}.item-list__entry[data-v-3c6f752d]:hover,.item-list__entry[data-v-3c6f752d]:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.item-list__entry .item-avatar[data-v-3c6f752d]{position:relative;margin-top:auto;margin-bottom:auto}.item-list__entry .item__details[data-v-3c6f752d]{padding-inline-start:8px;max-height:fit-content;flex-grow:1;overflow:hidden;display:flex;flex-direction:column;justify-content:center;min-height:var(--default-clickable-area)}.item-list__entry .item__details h3[data-v-3c6f752d],.item-list__entry .item__details .message[data-v-3c6f752d]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-list__entry .item__details .message span[data-v-3c6f752d]{width:10px;display:inline-block;margin-bottom:-3px}.item-list__entry .item__details h3[data-v-3c6f752d]{font-size:100%;margin:0}.item-list__entry .item__details .message[data-v-3c6f752d]{width:100%;color:var(--color-text-maxcontrast)}.item-list__entry .item-icon[data-v-3c6f752d]{position:relative;width:14px;height:14px;margin-top:25px;margin-inline:-10px -2px}.item-list__entry button.primary[data-v-3c6f752d]{padding:21px;margin:0}.mx-icon-left:before,.mx-icon-right:before,.mx-icon-double-left:before,.mx-icon-double-right:before,.mx-icon-double-left:after,.mx-icon-double-right:after{content:"";position:relative;top:-1px;display:inline-block;width:10px;height:10px;vertical-align:middle;border-style:solid;border-color:currentColor;border-width:2px 0 0 2px;border-radius:1px;box-sizing:border-box;transform-origin:center;transform:rotate(-45deg) scale(.7)}.mx-icon-double-left:after{left:-4px}.mx-icon-double-right:before{left:4px}.mx-icon-right:before,.mx-icon-double-right:before,.mx-icon-double-right:after{transform:rotate(135deg) scale(.7)}.mx-btn{box-sizing:border-box;line-height:1;font-size:14px;font-weight:500;padding:7px 15px;margin:0;cursor:pointer;background-color:transparent;outline:none;border:1px solid rgba(0,0,0,.1);border-radius:4px;color:#73879c;white-space:nowrap}.mx-btn:hover{border-color:#1284e7;color:#1284e7}.mx-btn:disabled,.mx-btn.disabled{color:#ccc;cursor:not-allowed}.mx-btn-text{border:0;padding:0 4px;text-align:left;line-height:inherit}.mx-scrollbar{height:100%}.mx-scrollbar:hover .mx-scrollbar-track{opacity:1}.mx-scrollbar-wrap{height:100%;overflow-x:hidden;overflow-y:auto}.mx-scrollbar-track{position:absolute;top:2px;right:2px;bottom:2px;width:6px;z-index:1;border-radius:4px;opacity:0;transition:opacity .24s ease-out}.mx-scrollbar-track .mx-scrollbar-thumb{position:absolute;width:100%;height:0;cursor:pointer;border-radius:inherit;background-color:#9093994d;transition:background-color .3s}.mx-zoom-in-down-enter-active,.mx-zoom-in-down-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top}.mx-zoom-in-down-enter,.mx-zoom-in-down-enter-from,.mx-zoom-in-down-leave-to{opacity:0;transform:scaleY(0)}.mx-datepicker{position:relative;display:inline-block;width:210px}.mx-datepicker svg{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden}.mx-datepicker-range{width:320px}.mx-datepicker-inline{width:auto}.mx-input-wrapper{position:relative}.mx-input{display:inline-block;box-sizing:border-box;width:100%;height:34px;padding:6px 30px 6px 10px;font-size:14px;line-height:1.4;color:#555;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px #00000013}.mx-input:hover,.mx-input:focus{border-color:#409aff}.mx-input:disabled,.mx-input.disabled{color:#ccc;background-color:#f3f3f3;border-color:#ccc;cursor:not-allowed}.mx-input:focus{outline:none}.mx-input::-ms-clear{display:none}.mx-icon-calendar,.mx-icon-clear{position:absolute;top:50%;right:8px;transform:translateY(-50%);font-size:16px;line-height:1;color:#00000080;vertical-align:middle}.mx-icon-clear{cursor:pointer}.mx-icon-clear:hover{color:#000c}.mx-datepicker-main{font:14px/1.5 Helvetica Neue,Helvetica,Arial,Microsoft Yahei,sans-serif;color:#73879c;background-color:#fff;border:1px solid #e8e8e8}.mx-datepicker-popup{position:absolute;margin-top:1px;margin-bottom:1px;box-shadow:0 6px 12px #0000002d;z-index:2001}.mx-datepicker-sidebar{float:left;box-sizing:border-box;width:100px;padding:6px;overflow:auto}.mx-datepicker-sidebar+.mx-datepicker-content{margin-left:100px;border-left:1px solid #e8e8e8}.mx-datepicker-body{position:relative;-webkit-user-select:none;user-select:none}.mx-btn-shortcut{display:block;padding:0 6px;line-height:24px}.mx-range-wrapper{display:flex}@media(max-width:750px){.mx-range-wrapper{flex-direction:column}}.mx-datepicker-header{padding:6px 8px;border-bottom:1px solid #e8e8e8}.mx-datepicker-footer{padding:6px 8px;text-align:right;border-top:1px solid #e8e8e8}.mx-calendar{box-sizing:border-box;width:248px;padding:6px 12px}.mx-calendar+.mx-calendar{border-left:1px solid #e8e8e8}.mx-calendar-header,.mx-time-header{box-sizing:border-box;height:34px;line-height:34px;text-align:center;overflow:hidden}.mx-btn-icon-left,.mx-btn-icon-double-left{float:left}.mx-btn-icon-right,.mx-btn-icon-double-right{float:right}.mx-calendar-header-label{font-size:14px}.mx-calendar-decade-separator{margin:0 2px}.mx-calendar-decade-separator:after{content:"~"}.mx-calendar-content{position:relative;height:224px;box-sizing:border-box}.mx-calendar-content .cell{cursor:pointer}.mx-calendar-content .cell:hover{color:#73879c;background-color:#f3f9fe}.mx-calendar-content .cell.active{color:#fff;background-color:#1284e7}.mx-calendar-content .cell.in-range,.mx-calendar-content .cell.hover-in-range{color:#73879c;background-color:#dbedfb}.mx-calendar-content .cell.disabled{cursor:not-allowed;color:#ccc;background-color:#f3f3f3}.mx-calendar-week-mode .mx-date-row{cursor:pointer}.mx-calendar-week-mode .mx-date-row:hover{background-color:#f3f9fe}.mx-calendar-week-mode .mx-date-row.mx-active-week{background-color:#dbedfb}.mx-calendar-week-mode .mx-date-row .cell:hover,.mx-calendar-week-mode .mx-date-row .cell.active{color:inherit;background-color:transparent}.mx-week-number{opacity:.5}.mx-table{table-layout:fixed;border-collapse:separate;border-spacing:0;width:100%;height:100%;box-sizing:border-box;text-align:center}.mx-table th{padding:0;font-weight:500;vertical-align:middle}.mx-table td{padding:0;vertical-align:middle}.mx-table-date td,.mx-table-date th{height:32px;font-size:12px}.mx-table-date .today{color:#2a90e9}.mx-table-date .cell.not-current-month{color:#ccc;background:none}.mx-time{flex:1;width:224px;background:#fff}.mx-time+.mx-time{border-left:1px solid #e8e8e8}.mx-calendar-time{position:absolute;top:0;left:0;width:100%;height:100%}.mx-time-header{border-bottom:1px solid #e8e8e8}.mx-time-content{height:224px;box-sizing:border-box;overflow:hidden}.mx-time-columns{display:flex;width:100%;height:100%;overflow:hidden}.mx-time-column{flex:1;position:relative;border-left:1px solid #e8e8e8;text-align:center}.mx-time-column:first-child{border-left:0}.mx-time-column .mx-time-list{margin:0;padding:0;list-style:none}.mx-time-column .mx-time-list:after{content:"";display:block;height:192px}.mx-time-column .mx-time-item{cursor:pointer;font-size:12px;height:32px;line-height:32px}.mx-time-column .mx-time-item:hover{color:#73879c;background-color:#f3f9fe}.mx-time-column .mx-time-item.active{color:#1284e7;background-color:transparent;font-weight:700}.mx-time-column .mx-time-item.disabled{cursor:not-allowed;color:#ccc;background-color:#f3f3f3}.mx-time-option{cursor:pointer;padding:8px 10px;font-size:14px;line-height:20px}.mx-time-option:hover{color:#73879c;background-color:#f3f9fe}.mx-time-option.active{color:#1284e7;background-color:transparent;font-weight:700}.mx-time-option.disabled{cursor:not-allowed;color:#ccc;background-color:#f3f3f3}.mx-datepicker[data-v-219421f]{-webkit-user-select:none;user-select:none;color:var(--color-main-text)}.mx-datepicker[data-v-219421f] svg{fill:var(--color-main-text)}.mx-datepicker[data-v-219421f] .mx-input-wrapper .mx-input{width:100%;border:2px solid var(--color-border-maxcontrast);background-color:var(--color-main-background);background-clip:content-box}.mx-datepicker[data-v-219421f] .mx-input-wrapper .mx-input:active:not(.disabled),.mx-datepicker[data-v-219421f] .mx-input-wrapper .mx-input:hover:not(.disabled),.mx-datepicker[data-v-219421f] .mx-input-wrapper .mx-input:focus:not(.disabled){border-color:var(--color-primary-element)}.mx-datepicker[data-v-219421f] .mx-input-wrapper:disabled,.mx-datepicker[data-v-219421f] .mx-input-wrapper.disabled{cursor:not-allowed;opacity:.7}.mx-datepicker[data-v-219421f] .mx-input-wrapper .mx-icon-calendar,.mx-datepicker[data-v-219421f] .mx-input-wrapper .mx-icon-clear{color:var(--color-text-lighter)}.mx-datepicker-main{color:var(--color-main-text);border:1px solid var(--color-border);background-color:var(--color-main-background);font-family:var(--font-face)!important;line-height:1.5}.mx-datepicker-main svg{fill:var(--color-main-text)}.mx-datepicker-main.mx-datepicker-popup{z-index:2000;box-shadow:none}.mx-datepicker-main.mx-datepicker-popup .mx-datepicker-sidebar+.mx-datepicker-content{border-left:1px solid var(--color-border)}.mx-datepicker-main.show-week-number .mx-calendar{width:296px}.mx-datepicker-main .mx-datepicker-header{border-bottom:1px solid var(--color-border)}.mx-datepicker-main .mx-datepicker-footer{border-top:1px solid var(--color-border)}.mx-datepicker-main .mx-datepicker-btn-confirm{background-color:var(--color-primary-element);border-color:var(--color-primary-element);color:var(--color-primary-element-text)!important;opacity:1!important}.mx-datepicker-main .mx-datepicker-btn-confirm:hover{background-color:var(--color-primary-element-light)!important;border-color:var(--color-primary-element-light)!important}.mx-datepicker-main .mx-calendar{width:264px;padding:5px}.mx-datepicker-main .mx-calendar.mx-calendar-week-mode{width:296px}.mx-datepicker-main .mx-time+.mx-time,.mx-datepicker-main .mx-calendar+.mx-calendar{border-left:1px solid var(--color-border)}.mx-datepicker-main .mx-range-wrapper{display:flex;overflow:hidden}.mx-datepicker-main .mx-range-wrapper .mx-calendar-content .mx-table-date .cell{border-radius:var(--border-radius-small)}.mx-datepicker-main .mx-range-wrapper .mx-calendar-content .mx-table-date .cell.active{border-radius:var(--border-radius-small) 0 0 var(--border-radius-small)}.mx-datepicker-main .mx-range-wrapper .mx-calendar-content .mx-table-date .cell.in-range+.cell.active{border-radius:0 var(--border-radius-small) var(--border-radius-small) 0}.mx-datepicker-main .mx-table{text-align:center}.mx-datepicker-main .mx-table thead>tr>th{text-align:center;opacity:.5;color:var(--color-main-text)}.mx-datepicker-main .mx-table tr:focus,.mx-datepicker-main .mx-table tr:hover,.mx-datepicker-main .mx-table tr:active{background-color:transparent}.mx-datepicker-main .mx-table .cell{transition:all .1s ease-in-out;text-align:center;opacity:.7;border-radius:var(--border-radius-small);min-height:var(--clickable-area-small)!important}.mx-datepicker-main .mx-table .cell>*{cursor:pointer}.mx-datepicker-main .mx-table .cell.today{opacity:1;font-weight:700;background-color:transparent;color:var(--color-primary-element);border-radius:var(--border-radius-small)}.mx-datepicker-main .mx-table .cell.today:hover,.mx-datepicker-main .mx-table .cell.today:focus{color:var(--color-primary-element-text)}.mx-datepicker-main .mx-table .cell.in-range,.mx-datepicker-main .mx-table .cell.disabled{border-radius:var(--border-radius-small);color:var(--color-main-text);opacity:1}.mx-datepicker-main .mx-table .cell.in-range{opacity:.7}.mx-datepicker-main .mx-table .cell.not-current-month{opacity:.5;color:var(--color-text-maxcontrast)}.mx-datepicker-main .mx-table .cell.not-current-month:hover,.mx-datepicker-main .mx-table .cell.not-current-month:focus{opacity:1}.mx-datepicker-main .mx-table .cell:hover,.mx-datepicker-main .mx-table .cell:focus,.mx-datepicker-main .mx-table .cell.actived,.mx-datepicker-main .mx-table .cell.active,.mx-datepicker-main .mx-table .cell.in-range{opacity:1;color:var(--color-primary-element-text);background-color:var(--color-primary-element);font-weight:700}.mx-datepicker-main .mx-table .cell.disabled{opacity:1;color:var(--color-main-text);border-radius:var(--border-radius-small)}.mx-datepicker-main .mx-table .mx-week-number{text-align:center;opacity:.7;border-radius:50px}.mx-datepicker-main .mx-table span.mx-week-number,.mx-datepicker-main .mx-table li.mx-week-number,.mx-datepicker-main .mx-table span.cell,.mx-datepicker-main .mx-table li.cell{min-height:32px}.mx-datepicker-main .mx-table.mx-table-date thead,.mx-datepicker-main .mx-table.mx-table-date tbody,.mx-datepicker-main .mx-table.mx-table-year,.mx-datepicker-main .mx-table.mx-table-month{display:flex;flex-direction:column;justify-content:space-around}.mx-datepicker-main .mx-table.mx-table-date thead tr,.mx-datepicker-main .mx-table.mx-table-date tbody tr,.mx-datepicker-main .mx-table.mx-table-year tr,.mx-datepicker-main .mx-table.mx-table-month tr{display:inline-flex;align-items:center;flex:1 1 32px;justify-content:space-around;min-height:32px;color:var(--color-main-text)}.mx-datepicker-main .mx-table.mx-table-date thead th,.mx-datepicker-main .mx-table.mx-table-date thead td,.mx-datepicker-main .mx-table.mx-table-date tbody th,.mx-datepicker-main .mx-table.mx-table-date tbody td,.mx-datepicker-main .mx-table.mx-table-year th,.mx-datepicker-main .mx-table.mx-table-year td,.mx-datepicker-main .mx-table.mx-table-month th,.mx-datepicker-main .mx-table.mx-table-month td{display:flex;align-items:center;flex:0 1 32%;justify-content:center;min-width:32px;height:95%;min-height:32px;transition:background .1s ease-in-out;color:var(--color-main-text)}.mx-datepicker-main .mx-table.mx-table-year tr th,.mx-datepicker-main .mx-table.mx-table-year tr td{flex-basis:48%}.mx-datepicker-main .mx-table.mx-table-date tr th,.mx-datepicker-main .mx-table.mx-table-date tr td{flex-basis:32px}.mx-datepicker-main .mx-btn{min-width:32px;height:32px;margin:0 2px!important;padding:0;cursor:pointer;text-decoration:none;opacity:1;color:var(--color-main-text);border-radius:var(--border-radius-small);line-height:20px}.mx-datepicker-main .mx-btn:hover,.mx-datepicker-main .mx-btn:focus{opacity:1;color:var(--color-main-text);background-color:var(--color-background-darker)}.mx-datepicker-main .mx-calendar-header{display:inline-flex;align-items:center;justify-content:space-between;width:100%;height:var(--default-clickable-area);margin-bottom:4px}.mx-datepicker-main .mx-calendar-header button{min-width:32px;min-height:32px;margin:0;cursor:pointer;text-align:center;text-decoration:none;opacity:1;color:var(--color-main-text);border-radius:var(--border-radius-small);background-color:transparent;line-height:20px}.mx-datepicker-main .mx-calendar-header button:hover,.mx-datepicker-main .mx-calendar-header button:focus{opacity:1;color:var(--color-main-text);background-color:var(--color-background-darker)}.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-left,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-left,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right{align-items:center;justify-content:center;width:32px;padding:0}.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-left>i:after,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-left>i:before,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-left>i:after,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-left>i:before,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right>i:after,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right>i:before,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right>i:after,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right>i:before{content:none}.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-left>i,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-left>i,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right>i,.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right>i{background-repeat:no-repeat;background-size:16px;background-position:center;filter:var(--background-invert-if-dark);display:inline-block;width:32px;height:32px}.mx-datepicker-main .mx-calendar-header button.mx-btn-text{line-height:initial}.mx-datepicker-main .mx-calendar-header .mx-calendar-header-label{display:flex;color:var(--color-main-text)}.mx-datepicker-main .mx-calendar-header .mx-btn-icon-double-left>i{background-image:url("data:image/svg+xml,%3c!--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20fill='%23222'%3e%3cpath%20d='M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z'/%3e%3c/svg%3e")}.mx-datepicker-main .mx-calendar-header .mx-btn-icon-left>i{background-image:url("data:image/svg+xml,%3c!--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20fill='%23222'%3e%3cpath%20d='M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z'/%3e%3c/svg%3e")}.mx-datepicker-main .mx-calendar-header .mx-btn-icon-right>i{background-image:url("data:image/svg+xml,%3c!--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20fill='%23222'%3e%3cpath%20d='M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z'/%3e%3c/svg%3e")}.mx-datepicker-main .mx-calendar-header .mx-btn-icon-double-right>i{background-image:url("data:image/svg+xml,%3c!--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20fill='%23222'%3e%3cpath%20d='M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z'/%3e%3c/svg%3e")}.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right{order:2}.mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right{order:3}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row .mx-week-number{font-weight:700}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week{opacity:1;border-radius:var(--border-radius-small);background-color:var(--color-background-dark)}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td{background-color:transparent}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td:hover,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td:focus,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td:hover,.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td:focus{color:inherit}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week{color:var(--color-primary-element-text);background-color:var(--color-primary-element)}.mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td{opacity:.7;font-weight:400}.mx-datepicker-main .mx-time{background-color:var(--color-main-background)}.mx-datepicker-main .mx-time .mx-time-header{justify-content:center;border-bottom:1px solid var(--color-border);opacity:1!important;background-color:transparent}.mx-datepicker-main .mx-time .mx-time-column{border-left:1px solid var(--color-border)}.mx-datepicker-main .mx-time .mx-time-option.active,.mx-datepicker-main .mx-time .mx-time-item.active{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.mx-datepicker-main .mx-time .mx-time-option:hover,.mx-datepicker-main .mx-time .mx-time-item:hover{background-color:var(--color-background-hover);color:var(--color-main-text)}.mx-datepicker-main .mx-time .mx-time-option.disabled,.mx-datepicker-main .mx-time .mx-time-item.disabled{cursor:not-allowed;opacity:.5;color:var(--color-main-text)}.material-design-icon[data-v-ecb9b537]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mx-datepicker[data-v-ecb9b537] .mx-input-wrapper .mx-input{background-clip:border-box}.datetime-picker-inline-icon[data-v-ecb9b537]{opacity:.3;border:none;background-color:transparent;border-radius:0;padding:0!important;margin:0}.datetime-picker-inline-icon--highlighted[data-v-ecb9b537]{opacity:.7}.datetime-picker-inline-icon[data-v-ecb9b537]:focus,.datetime-picker-inline-icon[data-v-ecb9b537]:hover{opacity:1}.v-popper--theme-nc-popover-8.v-popper__popper.timezone-select__popper .v-popper__wrapper{border-radius:var(--border-radius-large)}.v-popper--theme-nc-popover-8.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner{padding:4px;border-radius:var(--border-radius-large)}.v-popper--theme-nc-popover-8.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__label{padding:4px 0 4px 14px}.v-popper--theme-nc-popover-8.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__timezone-select.v-select.select{min-width:246px;left:-8px!important}.v-popper--theme-nc-popover-8.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__timezone-select.v-select .vs__dropdown-toggle{border-radius:calc(var(--border-radius-large) - 4px)}.v-popper--theme-nc-popover-8.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__timezone-select.v-select.vs--open .vs__dropdown-toggle{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-popper--theme-nc-popover-8.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__timezone-select.v-select.vs--open.select--drop-up .vs__dropdown-toggle{border-radius:0 0 calc(var(--border-radius-large) - 4px) calc(var(--border-radius-large) - 4px)}.vs__dropdown-menu--floating{z-index:100001!important}.material-design-icon[data-v-a3ed576d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart *{box-sizing:border-box;line-height:1.15}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart{font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-size:16px;display:flex;flex-direction:column;height:420px;color:#222427;border:1px solid #d9d9d9;border-radius:5px;background:#fff}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-emoji{padding:6px;position:relative;display:inline-block;font-size:0;border:none;background:none;box-shadow:none}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-emoji span{display:inline-block}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-emoji .emoji-mart-emoji span{width:38px;height:38px;font-size:32px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-type-native{font-family:"Segoe UI Emoji",Segoe UI Symbol,Segoe UI,"Apple Color Emoji",Twemoji Mozilla,"Noto Color Emoji",EmojiOne Color,"Android Emoji";word-break:keep-all}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-type-image{background-size:6100%}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-type-image.emoji-set-apple{background-image:url(https://unpkg.com/emoji-datasource-apple@15.0.1/img/apple/sheets-256/64.png)}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-type-image.emoji-set-facebook{background-image:url(https://unpkg.com/emoji-datasource-facebook@15.0.1/img/facebook/sheets-256/64.png)}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-type-image.emoji-set-google{background-image:url(https://unpkg.com/emoji-datasource-google@15.0.1/img/google/sheets-256/64.png)}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-type-image.emoji-set-twitter{background-image:url(https://unpkg.com/emoji-datasource-twitter@15.0.1/img/twitter/sheets-256/64.png)}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-bar{border:0 solid #d9d9d9}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-bar:first-child{border-bottom-width:1px;border-top-left-radius:5px;border-top-right-radius:5px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-bar:last-child{border-top-width:1px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-scroll{position:relative;overflow-y:scroll;flex:1;padding:0 6px 6px;z-index:0;will-change:transform;-webkit-overflow-scrolling:touch}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-anchors{display:flex;flex-direction:row;justify-content:space-between;padding:0 6px;color:#858585;line-height:0}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-anchor{position:relative;display:block;flex:1 1 auto;text-align:center;padding:12px 4px;overflow:hidden;transition:color .1s ease-out;border:none;background:none;box-shadow:none}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-anchor:hover,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-anchor-selected{color:#464646}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-anchor-selected .emoji-mart-anchor-bar{bottom:0}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-anchor-bar{position:absolute;bottom:-3px;left:0;width:100%;height:3px;background-color:#464646}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-anchors i{display:inline-block;width:100%;max-width:22px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-anchors svg{fill:currentColor;max-height:18px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .scroller{height:250px;position:relative;flex:1;padding:0 6px 6px;z-index:0;will-change:transform;-webkit-overflow-scrolling:touch}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-search{margin-top:6px;padding:0 6px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-search input{font-size:16px;display:block;width:100%;padding:.2em .6em;border-radius:25px;border:1px solid #d9d9d9;outline:0}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-search-results{height:250px;overflow-y:scroll}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-category{position:relative}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-category .emoji-mart-emoji span{z-index:1;position:relative;text-align:center;cursor:default}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-category .emoji-mart-emoji:hover:before,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-emoji-selected:before{z-index:0;content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#f4f4f4;border-radius:100%;opacity:0}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-category .emoji-mart-emoji:hover:before,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-emoji-selected:before{opacity:1}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-category-label{position:sticky;top:0}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-static .emoji-mart-category-label{z-index:2;position:relative}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-category-label h3{display:block;font-size:16px;width:100%;font-weight:500;padding:5px 6px;background-color:#fff;background-color:#fffffff2}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-emoji{position:relative;display:inline-block;font-size:0}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-no-results{font-size:14px;text-align:center;padding-top:70px;color:#858585}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-no-results .emoji-mart-category-label{display:none}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-no-results .emoji-mart-no-results-label{margin-top:.2em}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-no-results .emoji-mart-emoji:hover:before{content:none}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview{position:relative;height:70px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-emoji,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-data,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-skins{position:absolute;top:50%;transform:translateY(-50%)}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-emoji{left:12px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-data{left:68px;right:12px;word-break:break-all}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-skins{right:30px;text-align:right}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-name{font-size:14px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-shortname{font-size:12px;color:#888}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-shortname+.emoji-mart-preview-shortname,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-shortname+.emoji-mart-preview-emoticon,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-emoticon+.emoji-mart-preview-emoticon{margin-left:.5em}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-preview-emoticon{font-size:11px;color:#bbb}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-title span{display:inline-block;vertical-align:middle}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-title .emoji-mart-emoji{padding:0}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-title-label{color:#999a9c;font-size:21px;font-weight:300}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatches{font-size:0;padding:2px 0;border:1px solid #d9d9d9;border-radius:12px;background-color:#fff}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatches-opened .emoji-mart-skin-swatch{width:16px;padding:0 2px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatches-opened .emoji-mart-skin-swatch-selected:after{opacity:.75}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatch{display:inline-block;width:0;vertical-align:middle;transition-property:width,padding;transition-duration:.125s;transition-timing-function:ease-out}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatch:nth-child(1){transition-delay:0s}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatch:nth-child(2){transition-delay:.03s}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatch:nth-child(3){transition-delay:.06s}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatch:nth-child(4){transition-delay:.09s}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatch:nth-child(5){transition-delay:.12s}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatch:nth-child(6){transition-delay:.15s}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatch-selected{position:relative;width:16px;padding:0 2px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-swatch-selected:after{content:"";position:absolute;top:50%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;background-color:#fff;border-radius:100%;pointer-events:none;opacity:0;transition:opacity .2s ease-out}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin{display:inline-block;width:100%;padding-top:100%;max-width:12px;border-radius:100%}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-tone-1{background-color:#ffc93a}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-tone-2{background-color:#fadcbc}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-tone-3{background-color:#e0bb95}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-tone-4{background-color:#bf8f68}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-tone-5{background-color:#9b643d}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-skin-tone-6{background-color:#594539}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller{position:relative}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller.direction-horizontal{display:flex}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller__slot{flex:auto 0 0}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart-search .hidden{display:none;visibility:hidden}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart{background-color:var(--color-main-background)!important;border:0;color:var(--color-main-text)!important}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart button{border:none;background:transparent;font-size:inherit}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-bar,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-anchors,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-search,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-search input,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-category,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-category-label,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-category-label span,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-skin-swatches{background-color:transparent!important;border-color:var(--color-border)!important;color:inherit!important}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-anchors{padding-block:0;padding-inline:calc(2 * var(--default-grid-baseline))}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-anchor{border-radius:0;margin:0!important;padding:0!important;height:var(--clickable-area-small);min-width:var(--clickable-area-small)}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-anchor:hover{background-color:var(--color-background-hover)}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-anchor:focus-visible{outline:2px solid var(--color-primary-element)!important;outline-offset:-2px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-anchor div{display:grid;place-content:center}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-scroll{padding-inline:calc(2 * var(--default-grid-baseline));padding-block:0 calc(2 * var(--default-grid-baseline))}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-category{display:grid;grid-template-columns:repeat(8,1fr);justify-items:stretch}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-category.emoji-mart-no-results{grid-template-columns:1fr;font-size:inherit;color:var(--color-text-maxcontrast)!important}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart div.emoji-mart-category-label{grid-column:span 8;justify-self:stretch}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart h3.emoji-mart-category-label{display:flex;align-items:center;height:var(--default-clickable-area);margin:0;padding-inline:calc(2 * var(--default-grid-baseline));padding-block:0;-webkit-user-select:none;user-select:none}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-emoji{aspect-ratio:1/1;text-align:center;margin:0!important;padding:0!important}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-emoji:hover,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-emoji:focus-visible,.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-emoji.emoji-mart-emoji-selected{background-color:var(--color-background-hover)!important;border:none;border-radius:var(--border-radius-element, var(--border-radius-pill));box-shadow:none!important;outline:2px solid var(--color-primary-element)!important;outline-offset:-2px}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-emoji:before{display:none}.nc-emoji-picker-container[data-v-a3ed576d] .emoji-mart .emoji-mart-emoji span{cursor:pointer}.search__wrapper[data-v-a3ed576d]{display:flex;flex-direction:row;gap:var(--default-grid-baseline);align-items:end;padding-block:var(--default-grid-baseline);padding-inline:calc(2 * var(--default-grid-baseline))}.row-selected button[data-v-a3ed576d],.row-selected span[data-v-a3ed576d]{vertical-align:middle}.emoji-delete[data-v-a3ed576d]{vertical-align:top;margin-left:-21px;margin-top:-3px}._filePicker_kpj0w{display:inline-flex;align-items:center;height:var(--default-clickable-area)}._material-design-icon_gWj5X{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._ncFormBox_8SXmc{display:flex;flex-direction:column;gap:calc(1 * var(--default-grid-baseline))}._ncFormBox_8SXmc._ncFormBox_row_kw9MX{flex-direction:row}._ncFormBox__item_vN1-9{border-radius:var(--border-radius-small)!important}._ncFormBox_col_FDWmD{flex-direction:column}._ncFormBox_col_FDWmD ._ncFormBox__item_vN1-9:first-child{border-start-start-radius:var(--border-radius-element)!important;border-start-end-radius:var(--border-radius-element)!important}._ncFormBox_col_FDWmD ._ncFormBox__item_vN1-9:last-child{border-end-start-radius:var(--border-radius-element)!important;border-end-end-radius:var(--border-radius-element)!important}._ncFormBox_row_kw9MX{flex-direction:row}._ncFormBox_row_kw9MX ._ncFormBox__item_vN1-9{flex:1 1}._ncFormBox_row_kw9MX ._ncFormBox__item_vN1-9:first-child{border-start-start-radius:var(--border-radius-element)!important;border-end-start-radius:var(--border-radius-element)!important}._ncFormBox_row_kw9MX ._ncFormBox__item_vN1-9:last-child{border-end-end-radius:var(--border-radius-element)!important;border-start-end-radius:var(--border-radius-element)!important}._material-design-icon_QWbl5{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._formBoxButton_Pa5j3{background:unset;border:none;color:inherit;font-size:inherit;font-weight:inherit;text-decoration:none;text-align:inherit;line-height:inherit;padding:0;margin:0;outline:none}._material-design-icon_xGIGM{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._formBoxItem_8k9RN{--nc-form-box-item-border-width: 1px;--nc-form-box-item-min-height: 40px;--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));--form-element-label-padding: calc(var(--form-element-label-offset) - var(--nc-form-box-item-border-width));--color-primary-element-extra-light: hsl(from var(--color-primary-element-light) h s calc(l*1.045) );--color-primary-element-extra-light-hover: hsl(from var(--color-primary-element-light-hover) h s calc(l*1.045) );position:relative;display:flex;align-items:center;gap:calc(2 * var(--default-grid-baseline));min-height:var(--nc-form-box-item-min-height);padding-inline:var(--form-element-label-padding);border:1px solid var(--color-primary-element-extra-light-hover);border-bottom-width:2px;border-radius:var(--border-radius-element);background-color:var(--color-primary-element-extra-light);color:var(--color-main-text);font-weight:var(--font-weight-element, normal);transition-property:color,border-color,background-color;transition-duration:var(--animation-quick);transition-timing-function:linear;-webkit-user-select:none;user-select:none;cursor:pointer}._formBoxItem_8k9RN *{cursor:inherit}._formBoxItem_8k9RN:has(:disabled){cursor:default;opacity:.5}._formBoxItem_8k9RN:hover:not(:has(:disabled)){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-extra-light-hover)}._formBoxItem_8k9RN:has(:focus-visible){outline:2px solid var(--color-main-text);box-shadow:0 0 0 4px var(--color-main-background)}._formBoxItem__description_4NvvC{font-weight:var(--font-weight-default, normal)}._formBoxItem_8k9RN._formBoxItem_legacy_t2lTH{--nc-form-box-item-border-width: 0px;border:none}._formBoxItem_8k9RN._formBoxItem_inverted_g6YRx ._formBoxItem__element_7ZHAo{color:var(--color-text-maxcontrast)}._formBoxItem_8k9RN._formBoxItem_inverted_g6YRx ._formBoxItem__description_4NvvC{color:inherit}._formBoxItem__content_IXcg2{flex:1;display:flex;flex-direction:column;padding-block:calc(2 * var(--default-grid-baseline));overflow-wrap:anywhere}._formBoxItem__element_7ZHAo:after{content:"";position:absolute;inset:0}._formBoxItem__description_4NvvC{color:var(--color-text-maxcontrast)}._formBoxItem__icon_g2r6e{display:flex;align-items:center;justify-content:flex-end}._material-design-icon_4zTZb{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}input._formBoxSwitch__input_jnu4g{margin:0;width:var(--default-clickable-area);position:absolute;inset-block:0;inset-inline-end:var(--form-element-label-offset);z-index:-1;opacity:0!important;height:auto;cursor:inherit}._material-design-icon_IErvu{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._formGroup_N8-xx{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));--form-group-content-gap: calc(2 * var(--default-grid-baseline))}._formGroup_N8-xx._formGroup_noGap_uPSBm{--form-group-content-gap: 0}._formGroup__label_jDgIk{padding-inline:var(--form-element-label-offset);font-size:var(--font-size);font-weight:var(--font-weight-heading, bold)}._formGroup__description_IvYWg{padding-inline:var(--form-element-label-offset);color:var(--color-text-maxcontrast)}._formGroup__content_W--Vi{display:flex;flex-direction:column;gap:var(--form-group-content-gap);margin-block-start:calc(2.5 * var(--default-grid-baseline))}._formGroup__content_W--Vi._formGroup__content_only_P20X4{margin-block-start:0}.material-design-icon[data-v-4979e1a8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}#guest-content-vue[data-v-4979e1a8]{color:var(--color-main-text);background-color:var(--color-main-background);min-width:0;border-radius:var(--border-radius-large);box-shadow:0 0 10px var(--color-box-shadow);height:fit-content;padding:15px;margin:20px auto}#content:has(#guest-content-vue){overflow:auto;margin-bottom:0;height:calc(var(--body-height) + var(--body-container-margin))}.material-design-icon[data-v-f1ee5a71]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.header-menu[data-v-f1ee5a71]{position:relative;width:var(--header-height);height:var(--header-height)}.header-menu .header-menu__trigger[data-v-f1ee5a71]{--button-size: var(--header-height) !important;height:var(--header-height);opacity:.85;filter:none!important;color:var(--color-background-plain-text, var(--color-primary-text))!important}.header-menu .header-menu__trigger[data-v-f1ee5a71]:focus-visible{outline:none!important;box-shadow:none!important}.header-menu .header-menu__trigger[data-v-f1ee5a71] .button-vue__icon svg,.header-menu .header-menu__trigger[data-v-f1ee5a71] .button-vue__icon:not(:has(svg)){mask:var(--header-menu-icon-mask, none)}.header-menu--opened .header-menu__trigger[data-v-f1ee5a71],.header-menu__trigger[data-v-f1ee5a71]:hover,.header-menu__trigger[data-v-f1ee5a71]:focus,.header-menu__trigger[data-v-f1ee5a71]:active{opacity:1}@media only screen and (max-width:512px){.header-menu[data-v-f1ee5a71]{width:var(--default-clickable-area)}.header-menu .header-menu__trigger[data-v-f1ee5a71]{--button-size: var(--default-clickable-area) !important}}.material-design-icon[data-v-f00deac7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}/*! - * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */.header-menu[data-v-f00deac7]{position:relative;width:var(--header-height);height:var(--header-height)}.header-menu .header-menu__trigger[data-v-f00deac7]{--button-size: var(--header-height) !important;height:var(--header-height);opacity:.85;filter:none!important;color:var(--color-background-plain-text, var(--color-primary-text))!important}.header-menu .header-menu__trigger[data-v-f00deac7]:focus-visible{outline:none!important;box-shadow:none!important}.header-menu .header-menu__trigger[data-v-f00deac7] .button-vue__icon svg,.header-menu .header-menu__trigger[data-v-f00deac7] .button-vue__icon:not(:has(svg)){mask:var(--header-menu-icon-mask, none)}.header-menu--opened .header-menu__trigger[data-v-f00deac7],.header-menu__trigger[data-v-f00deac7]:hover,.header-menu__trigger[data-v-f00deac7]:focus,.header-menu__trigger[data-v-f00deac7]:active{opacity:1}@media only screen and (max-width:512px){.header-menu[data-v-f00deac7]{width:var(--default-clickable-area)}.header-menu .header-menu__trigger[data-v-f00deac7]{--button-size: var(--default-clickable-area) !important}}.header-menu__wrapper[data-v-f00deac7]{position:fixed;z-index:2000;top:var(--header-height);inset-inline-end:0;box-sizing:border-box;margin:0 8px;border-radius:0 0 var(--border-radius) var(--border-radius);border-radius:var(--border-radius-large);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow))}.header-menu__carret[data-v-f00deac7]{position:absolute;z-index:2001;bottom:0;inset-inline-start:calc(50% - 10px);width:0;height:0;content:" ";pointer-events:none;border:10px solid transparent;border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-f00deac7]{overflow:auto;width:350px;max-width:calc(100vw - 16px);min-height:calc(var(--default-clickable-area) * 1.5);max-height:calc(100vh - var(--header-height) * 2)}.header-menu__content[data-v-f00deac7] .empty-content{margin:12vh 10px}._material-design-icon_CGDwu{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._hotkey_4tWyO{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));display:flex;flex-direction:row-reverse;align-items:stretch;padding-inline:var(--form-element-label-offset)}._hotkey_4tWyO:first-child ._hotkey__label_oRn0Q,._hotkey_4tWyO:first-child ._hotkey__keys_RJtae{border-block-start:none}._hotkey__label_oRn0Q,._hotkey__keys_RJtae{display:flex;align-items:center;padding-block:calc(2 * var(--default-grid-baseline));border-block-start:1px solid var(--color-border)}._hotkey__label_oRn0Q{flex:1 1 200px}._hotkey__keys_RJtae{flex:1 1 auto;flex-wrap:wrap;justify-content:end;row-gap:calc(1 * var(--default-grid-baseline))}._material-design-icon_ApuGY{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._kbd_d0mOk{display:inline-flex;align-items:center;justify-content:center;min-width:var(--default-clickable-area);height:var(--default-clickable-area);padding-inline:calc(2 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline));border:2px solid var(--color-primary-element-light);border-block-end-width:4px;border-radius:var(--border-radius-element);box-shadow:none;font-family:var(--font-family);line-height:1;white-space:nowrap}._kbd_d0mOk+._kbd_d0mOk{margin-inline-start:calc(1 * var(--default-grid-baseline))}._hotkeyList_oWjLv{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline))}._hotkeyList__heading_Mi65o{font-weight:var(--font-weight-heading, bold);margin-inline:var(--form-element-label-offset)}.material-design-icon[data-v-9ea2f116]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.list-item__wrapper[data-v-9ea2f116]{display:flex;position:relative;width:100%;padding:2px 4px}.list-item__wrapper[data-v-9ea2f116]:first-of-type{padding-block-start:4px}.list-item__wrapper[data-v-9ea2f116]:last-of-type{padding-block-end:4px}.list-item__wrapper--active .list-item[data-v-9ea2f116],.list-item__wrapper.active .list-item[data-v-9ea2f116]{background-color:var(--color-primary-element);color:var(--color-primary-element-text)!important}.list-item__wrapper--active .list-item[data-v-9ea2f116]:hover,.list-item__wrapper--active .list-item[data-v-9ea2f116]:focus-within,.list-item__wrapper--active .list-item[data-v-9ea2f116]:has(:focus-visible),.list-item__wrapper--active .list-item[data-v-9ea2f116]:has(:active),.list-item__wrapper.active .list-item[data-v-9ea2f116]:hover,.list-item__wrapper.active .list-item[data-v-9ea2f116]:focus-within,.list-item__wrapper.active .list-item[data-v-9ea2f116]:has(:focus-visible),.list-item__wrapper.active .list-item[data-v-9ea2f116]:has(:active){background-color:var(--color-primary-element-hover)}.list-item__wrapper--active .list-item-content__name[data-v-9ea2f116],.list-item__wrapper--active .list-item-content__subname[data-v-9ea2f116],.list-item__wrapper--active .list-item-content__details[data-v-9ea2f116],.list-item__wrapper--active .list-item-details__details[data-v-9ea2f116],.list-item__wrapper.active .list-item-content__name[data-v-9ea2f116],.list-item__wrapper.active .list-item-content__subname[data-v-9ea2f116],.list-item__wrapper.active .list-item-content__details[data-v-9ea2f116],.list-item__wrapper.active .list-item-details__details[data-v-9ea2f116]{color:var(--color-primary-element-text)!important}.list-item__wrapper .list-item-content__name[data-v-9ea2f116],.list-item__wrapper .list-item-content__subname[data-v-9ea2f116],.list-item__wrapper .list-item-content__details[data-v-9ea2f116],.list-item__wrapper .list-item-details__details[data-v-9ea2f116]{white-space:nowrap;margin-block:0;margin-inline:0 auto;overflow:hidden;text-overflow:ellipsis}.list-item-content__name[data-v-9ea2f116]{min-width:100px;flex:1 1 10%;font-weight:var(--font-weight-element, 500)}.list-item-content__subname[data-v-9ea2f116]{flex:1 0;min-width:0;color:var(--color-text-maxcontrast)}.list-item-content__subname--bold[data-v-9ea2f116]{font-weight:var(--font-weight-element, 500)}.list-item[data-v-9ea2f116]{--list-item-padding: var(--default-grid-baseline);--list-item-height: 2lh;--list-item-border-radius: var(--border-radius-element, 32px);box-sizing:border-box;display:flex;position:relative;flex:0 0 auto;justify-content:flex-start;padding:var(--list-item-padding);width:100%;border-radius:var(--border-radius-element, 32px);cursor:pointer;transition:background-color var(--animation-quick) ease-in-out;list-style:none}.list-item[data-v-9ea2f116]:hover,.list-item[data-v-9ea2f116]:focus-within,.list-item[data-v-9ea2f116]:has(:active),.list-item[data-v-9ea2f116]:has(:focus-visible){background-color:var(--color-background-hover)}.list-item[data-v-9ea2f116]:has(.list-item__anchor:focus-visible){outline:2px solid var(--color-main-text);box-shadow:0 0 0 4px var(--color-main-background)}.list-item--compact[data-v-9ea2f116]{--list-item-padding: calc(.5 * var(--default-grid-baseline)) var(--default-grid-baseline)}.list-item--compact[data-v-9ea2f116]:not(:has(.list-item-content__subname)){--list-item-height: var(--default-clickable-area)}.list-item--legacy[data-v-9ea2f116]{--list-item-padding: calc(2 * var(--default-grid-baseline))}.list-item--legacy.list-item--compact[data-v-9ea2f116]{--list-item-padding: var(--default-grid-baseline) calc(2 * var(--default-grid-baseline))}.list-item--one-line[data-v-9ea2f116]{--list-item-height: var(--default-clickable-area);--list-item-border-radius: var(--border-radius-element, calc(var(--default-clickable-area) / 2));--list-item-padding: var(--default-grid-baseline)}.list-item--one-line.list-item--one-line--legacy[data-v-9ea2f116]{--list-item-padding: 2px calc((var(--list-item-height) - var(--list-item-border-radius)) / 2)}.list-item--one-line .list-item-content__main[data-v-9ea2f116]{display:flex;justify-content:start;gap:12px;min-width:0}.list-item--one-line .list-item-content__details[data-v-9ea2f116]{flex-direction:row;align-items:center;justify-content:end}.list-item--one-line .list-item-content__name[data-v-9ea2f116]{align-self:center;max-width:300px}.list-item__anchor[data-v-9ea2f116]{color:inherit;display:flex;flex:1 0 auto;align-items:center;height:var(--list-item-height);min-width:0}.list-item__anchor[data-v-9ea2f116]:focus-visible{outline:none}.list-item-content[data-v-9ea2f116]{display:flex;flex:1 0;justify-content:space-between;padding-inline-start:calc(2 * var(--default-grid-baseline));min-width:0}.list-item-content__main[data-v-9ea2f116]{flex:1 0;width:0;margin:auto 0}.list-item-content__main--oneline[data-v-9ea2f116]{display:flex}.list-item-content__details[data-v-9ea2f116]{display:flex;flex-direction:column;justify-content:end;align-items:end}.list-item-content__actions[data-v-9ea2f116],.list-item-content__extra-actions[data-v-9ea2f116]{flex:0 0 auto;align-self:center;justify-content:center;margin-inline-start:var(--default-grid-baseline)}.list-item-content__extra-actions[data-v-9ea2f116]{display:flex;align-items:center;gap:var(--default-grid-baseline)}.list-item-details__details[data-v-9ea2f116]{color:var(--color-text-maxcontrast);margin:0 9px!important;font-weight:var(--font-weight-default, normal)}.list-item-details__extra[data-v-9ea2f116]{margin:2px 4px 0;display:flex;align-items:center}.list-item-details__indicator[data-v-9ea2f116]{margin:0 5px}.list-item__extra[data-v-9ea2f116]{margin-top:var(--default-grid-baseline)}.material-design-icon[data-v-4606150f]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.notecard[data-v-4606150f]{--note-card-icon-size: 20px;--note-card-padding: calc(2 * var(--default-grid-baseline));color:var(--color-main-text)!important;background-color:var(--note-background)!important;border-inline-start:var(--default-grid-baseline) solid var(--note-theme);border-radius:var(--border-radius);margin:1rem 0;padding:var(--note-card-padding);display:flex;flex-direction:row;gap:var(--note-card-padding)}.notecard__heading[data-v-4606150f]{font-size:var(--note-card-icon-size);font-weight:var(--font-weight-heading, 600)}.notecard__icon--heading[data-v-4606150f]{font-size:var(--note-card-icon-size);margin-block:calc((1lh - 1em)/2) auto}.notecard--success[data-v-4606150f]{--note-background: var(--color-success);--note-theme: var(--color-success-text, var(--color-success))}.notecard--info[data-v-4606150f]{--note-background: var(--color-info);--note-theme: var(--color-info-text, var(--color-info))}.notecard--error[data-v-4606150f]{--note-background: var(--color-error);--note-theme: var(--color-error-text, var(--color-error))}.notecard--warning[data-v-4606150f]{--note-background: var(--color-warning);--note-theme: var(--color-warning-text, var(--color-warning))}.notecard--legacy.notecard--error[data-v-4606150f]{--note-background: rgba(var(--color-error-rgb), .1)}.notecard--legacy.notecard--info[data-v-4606150f]{--note-background: rgba(var(--color-info-rgb), .1)}.notecard--legacy.notecard--success[data-v-4606150f]{--note-background: rgba(var(--color-success-rgb), .1)}.notecard--legacy.notecard--warning[data-v-4606150f]{--note-background: rgba(var(--color-warning-rgb), .1)}.material-design-icon[data-v-b8355b88]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.profile-hover-card[data-v-b8355b88]{box-sizing:border-box;position:relative;width:560px;max-width:min(560px,90vw);min-height:300px;overflow:hidden;color:var(--color-main-text);background-color:var(--color-main-background);border-radius:var(--border-radius-large);display:flex;flex-direction:column}.profile-hover-card__profile-link[data-v-b8355b88]{color:inherit;text-decoration:none;outline-offset:2px}.profile-hover-card__profile-link:hover h2[data-v-b8355b88],.profile-hover-card__profile-link:focus-visible h2[data-v-b8355b88]{text-decoration:underline}.profile-hover-card__header[data-v-b8355b88]{display:flex;flex-shrink:0;position:relative;height:127px;background-color:var(--color-primary-element-light)}.profile-hover-card__header__edit[data-v-b8355b88]{position:absolute;inset-block-start:8px;inset-inline-end:8px;z-index:1}.profile-hover-card__header__container[data-v-b8355b88]{align-self:flex-end;display:flex;align-items:flex-end;gap:12px;width:100%;margin:8px 0;padding-inline:16px;box-sizing:border-box}.profile-hover-card__header__container__placeholder[data-v-b8355b88]{flex:0 0 180px;width:180px}.profile-hover-card__header__container__avatar[data-v-b8355b88]{flex-shrink:0}.profile-hover-card__header__container__identity[data-v-b8355b88]{display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:4px;min-width:0;flex:1;padding-inline:0}.profile-hover-card__header__container__displayname[data-v-b8355b88]{display:flex;align-items:baseline;gap:8px;min-width:0}.profile-hover-card__header__container__displayname h2[data-v-b8355b88]{font-size:24px;margin:0;overflow-wrap:anywhere}.profile-hover-card__header__container__pronouns[data-v-b8355b88]{font-size:15px;color:var(--color-text-maxcontrast)}.profile-hover-card__header__container__status[data-v-b8355b88]{min-width:0}.profile-hover-card__header__container__status-content[data-v-b8355b88]{display:flex;align-items:center;gap:8px;font-size:14px;overflow-wrap:anywhere}.profile-hover-card__body[data-v-b8355b88]{flex:1;min-height:0;background-color:var(--color-main-background)}.profile-hover-card__content[data-v-b8355b88]{display:flex;width:100%;height:100%;padding-inline:16px 16px;box-sizing:border-box}.profile-hover-card__sidebar[data-v-b8355b88]{align-self:flex-start;padding-top:8px;width:180px;min-width:180px;margin-block:-100px 0;margin-inline:0 12px}.profile-hover-card__header[data-v-b8355b88] .avatar.avatardiv,.profile-hover-card__sidebar[data-v-b8355b88] .avatar.avatardiv{text-align:center;margin:auto;display:block;padding:8px}.profile-hover-card__header[data-v-b8355b88] .avatar.avatardiv .avatardiv__user-status,.profile-hover-card__sidebar[data-v-b8355b88] .avatar.avatardiv .avatardiv__user-status{inset-inline-end:10px;bottom:10px;width:26px;height:26px;background-size:22px;border:none;background-color:var(--color-main-background);line-height:26px;font-size:16px}.profile-hover-card__blocks[data-v-b8355b88]{margin:12px 0;display:grid;gap:8px 0;min-width:0;flex:1;overflow:hidden;align-content:start}.profile-hover-card__blocks p[data-v-b8355b88],.profile-hover-card__blocks h3[data-v-b8355b88]{overflow-wrap:anywhere}.profile-hover-card__blocks-details[data-v-b8355b88]{display:flex;flex-direction:column;gap:2px 0}.profile-hover-card__blocks-details .detail[data-v-b8355b88]{display:inline-block;color:var(--color-text-maxcontrast);font-size:14px}.profile-hover-card__blocks-details .detail p .detail-icon[data-v-b8355b88]{display:inline-block;vertical-align:middle}.profile-hover-card__blocks-headline[data-v-b8355b88]{margin-inline:0;margin-block:4px 0;font-weight:700;font-size:16px}.profile-hover-card__blocks-biography[data-v-b8355b88]{overflow:hidden;font-size:14px;line-height:1.4;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-clamp:4;text-overflow:ellipsis;overflow-wrap:anywhere}.profile-hover-card__blocks-biography[data-v-b8355b88] p{margin:0}.profile-hover-card__loading[data-v-b8355b88]{display:flex;align-items:center;justify-content:center;height:100%;min-height:300px;padding:16px;color:var(--color-text-maxcontrast)}.profile-hover-card--limited[data-v-b8355b88]{min-height:0}.profile-hover-card--limited .profile-hover-card__body[data-v-b8355b88]{flex:0 0 auto}.profile-hover-card--limited .profile-hover-card__content[data-v-b8355b88]{height:auto;padding-block-end:24px}.profile-hover-card--limited .profile-hover-card__sidebar[data-v-b8355b88]{margin-block-end:0}.profile-hover-card--limited .user-actions[data-v-b8355b88]{margin-top:8px}.user-actions[data-v-b8355b88]{display:flex;flex-direction:column;gap:8px 0;margin-top:12px;max-width:180px}.user-actions__loading[data-v-b8355b88]{display:flex;justify-content:center;padding:8px 0}.user-actions__primary[data-v-b8355b88]{margin:0 auto;width:180px!important}.user-actions__primary__icon[data-v-b8355b88]{height:20px;width:20px;object-fit:contain;filter:var(--primary-invert-if-dark)}.user-actions__primary__icon-class[data-v-b8355b88]{display:block;height:20px;width:20px;background-size:20px;background-repeat:no-repeat;background-position:center;filter:var(--primary-invert-if-dark)}.user-actions__other[data-v-b8355b88]{display:flex;justify-content:center;gap:0 4px}.user-actions__other__icon[data-v-b8355b88]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-dark);align-self:center;margin:8px}.user-actions__other__icon-class[data-v-b8355b88]{display:block;height:20px;width:20px;margin:8px;background-size:20px;background-repeat:no-repeat;background-position:center;filter:var(--background-invert-if-dark)}@media only screen and (max-width:512px){.profile-hover-card[data-v-b8355b88]{width:min(560px,100vw - 24px);max-width:calc(100vw - 24px);height:auto;min-height:0;max-height:min(80vh,520px);overflow:auto}.profile-hover-card__header[data-v-b8355b88]{height:auto;min-height:112px}.profile-hover-card__header__container[data-v-b8355b88]{align-self:flex-end;align-items:flex-end;gap:16px;margin:12px auto;padding-inline:12px}.profile-hover-card__header__container__avatar[data-v-b8355b88]{align-self:flex-end}.profile-hover-card__header__container__identity[data-v-b8355b88]{gap:6px;padding-inline:0;justify-content:flex-end}.profile-hover-card__header__container__displayname[data-v-b8355b88]{flex-direction:column;align-items:flex-start;gap:4px}.profile-hover-card__header__container__displayname h2[data-v-b8355b88]{font-size:20px}.profile-hover-card__header__container__pronouns[data-v-b8355b88]{font-size:16px}.profile-hover-card__header__container__pronoun-separator[data-v-b8355b88]{display:none}.profile-hover-card__header__container__status-content[data-v-b8355b88]{font-size:16px}.profile-hover-card__content[data-v-b8355b88]{display:block;height:auto;padding-inline:12px;padding-block-end:12px}.profile-hover-card__sidebar[data-v-b8355b88]{margin:unset;width:auto;min-width:0;padding-top:0}.profile-hover-card__blocks[data-v-b8355b88]{width:unset;margin:0;padding:8px 4px 12px}.profile-hover-card__header[data-v-b8355b88] .avatar.avatardiv .avatardiv__user-status,.profile-hover-card__sidebar[data-v-b8355b88] .avatar.avatardiv .avatardiv__user-status{inset-inline-end:0;bottom:0}.profile-hover-card__loading[data-v-b8355b88]{min-height:200px}.profile-hover-card--limited .profile-hover-card__body[data-v-b8355b88]{display:none}.user-actions[data-v-b8355b88]{width:unset;max-width:none;margin:8px auto 0;padding:0 4px}.user-actions__primary[data-v-b8355b88]{width:100%!important;max-width:220px}.user-actions__other[data-v-b8355b88]{flex-wrap:wrap}}@media only screen and (max-width:480px){.profile-hover-card[data-v-b8355b88]{width:calc(100vw - 16px);max-width:calc(100vw - 16px);border-radius:var(--border-radius)}.profile-hover-card__header__container[data-v-b8355b88]{gap:8px;padding-inline:8px}}.material-design-icon[data-v-a50e616b]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.widgets--list[data-v-a50e616b]{width:100%;min-height:var(--default-clickable-area)}.material-design-icon[data-v-e55203a2]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.rich-text--wrapper[data-v-e55203a2]{overflow-wrap:break-word;line-height:1.5}.rich-text--wrapper .rich-text--fallback[data-v-e55203a2],.rich-text--wrapper .rich-text-component[data-v-e55203a2]{display:inline}.rich-text--wrapper-markdown[data-v-e55203a2]{tab-size:4}.rich-text--wrapper-markdown div>*[data-v-e55203a2]:first-child,.rich-text--wrapper-markdown blockquote>*[data-v-e55203a2]:first-child{margin-top:0!important}.rich-text--wrapper-markdown div>*[data-v-e55203a2]:last-child,.rich-text--wrapper-markdown blockquote>*[data-v-e55203a2]:last-child{margin-block-end:0!important}.rich-text--wrapper-markdown blockquote[data-v-e55203a2]{padding-inline-start:13px;border-inline-start:2px solid var(--color-border-dark);color:var(--color-text-lighter)}.rich-text--wrapper-markdown h1[data-v-e55203a2],.rich-text--wrapper-markdown h2[data-v-e55203a2],.rich-text--wrapper-markdown h3[data-v-e55203a2],.rich-text--wrapper-markdown h4[data-v-e55203a2],.rich-text--wrapper-markdown h5[data-v-e55203a2],.rich-text--wrapper-markdown h6[data-v-e55203a2],.rich-text--wrapper-markdown p[data-v-e55203a2],.rich-text--wrapper-markdown ul[data-v-e55203a2],.rich-text--wrapper-markdown ol[data-v-e55203a2],.rich-text--wrapper-markdown blockquote[data-v-e55203a2],.rich-text--wrapper-markdown pre[data-v-e55203a2]{margin-top:0;margin-block-end:1em}.rich-text--wrapper-markdown h1[data-v-e55203a2],.rich-text--wrapper-markdown h2[data-v-e55203a2],.rich-text--wrapper-markdown h3[data-v-e55203a2],.rich-text--wrapper-markdown h4[data-v-e55203a2],.rich-text--wrapper-markdown h5[data-v-e55203a2],.rich-text--wrapper-markdown h6[data-v-e55203a2]{font-weight:var(--font-weight-heading, bold)}.rich-text--wrapper-markdown h4[data-v-e55203a2]{font-size:20px}.rich-text--wrapper-markdown h5[data-v-e55203a2]{font-size:18px}.rich-text--wrapper-markdown h6[data-v-e55203a2]{font-size:15px}.rich-text--wrapper-markdown ul[data-v-e55203a2],.rich-text--wrapper-markdown ol[data-v-e55203a2]{padding-inline-start:4ch}.rich-text--wrapper-markdown ul[data-v-e55203a2]{list-style-type:disc}.rich-text--wrapper-markdown ul.contains-task-list[data-v-e55203a2]{list-style-type:none;padding:0}.rich-text--wrapper-markdown li.task-list-item>ul[data-v-e55203a2],.rich-text--wrapper-markdown li.task-list-item>ol[data-v-e55203a2],.rich-text--wrapper-markdown li.task-list-item>li[data-v-e55203a2],.rich-text--wrapper-markdown li.task-list-item>blockquote[data-v-e55203a2],.rich-text--wrapper-markdown li.task-list-item>pre[data-v-e55203a2]{margin-inline-start:15px;margin-block-end:0}.rich-text--wrapper-markdown pre[data-v-e55203a2]{direction:ltr}.rich-text--wrapper-markdown table[data-v-e55203a2]{border-collapse:collapse;border:2px solid var(--color-border-maxcontrast)}.rich-text--wrapper-markdown table th[data-v-e55203a2],.rich-text--wrapper-markdown table td[data-v-e55203a2]{padding:var(--default-grid-baseline);border:1px solid var(--color-border-maxcontrast)}.rich-text--wrapper-markdown table th[data-v-e55203a2]:first-child,.rich-text--wrapper-markdown table td[data-v-e55203a2]:first-child{border-inline-start:0}.rich-text--wrapper-markdown table th[data-v-e55203a2]:last-child,.rich-text--wrapper-markdown table td[data-v-e55203a2]:last-child{border-inline-end:0}.rich-text--wrapper-markdown table tr:first-child th[data-v-e55203a2]{border-top:0}.rich-text--wrapper-markdown table tr:last-child td[data-v-e55203a2]{border-block-end:0}.rich-text--wrapper-markdown .rich-text__code-block[data-v-e55203a2]:has(.hljs){color:var(--hljs-color);background:var(--hljs-background-color)}.rich-text--wrapper-markdown .hljs-doctag[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-keyword[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-meta .hljs-keyword[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-template-tag[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-template-variable[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-type[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-variable.language_[data-v-e55203a2]{color:var(--hljs-syntax-keyword-color)}.rich-text--wrapper-markdown .hljs-title[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-title.class_[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-title.class_.inherited__[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-title.function_[data-v-e55203a2]{color:var(--hljs-syntax-entity-color)}.rich-text--wrapper-markdown .hljs-attr[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-attribute[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-literal[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-meta[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-number[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-operator[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-variable[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-selector-attr[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-selector-class[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-selector-id[data-v-e55203a2]{color:var(--hljs-syntax-constant-color)}.rich-text--wrapper-markdown .hljs-regexp[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-string[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-meta .hljs-string[data-v-e55203a2]{color:var(--hljs-syntax-string-color)}.rich-text--wrapper-markdown .hljs-built_in[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-symbol[data-v-e55203a2]{color:var(--hljs-syntax-variable-color)}.rich-text--wrapper-markdown .hljs-comment[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-code[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-formula[data-v-e55203a2]{color:var(--hljs-syntax-comment-color)}.rich-text--wrapper-markdown .hljs-name[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-quote[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-selector-tag[data-v-e55203a2],.rich-text--wrapper-markdown .hljs-selector-pseudo[data-v-e55203a2]{color:var(--hljs-syntax-entity-tag-color)}.rich-text--wrapper-markdown .hljs-subst[data-v-e55203a2]{color:var(--hljs-syntax-storage-modifier-import-color)}.rich-text--wrapper-markdown .hljs-section[data-v-e55203a2]{color:var(--hljs-syntax-markup-heading-color);font-weight:var(--font-weight-heading, bold)}.rich-text--wrapper-markdown .hljs-bullet[data-v-e55203a2]{color:var(--hljs-syntax-markup-list-color)}.rich-text--wrapper-markdown .hljs-emphasis[data-v-e55203a2]{color:var(--hljs-syntax-markup-italic-color);font-style:italic}.rich-text--wrapper-markdown .hljs-strong[data-v-e55203a2]{color:var(--hljs-syntax-markup-bold-color);font-weight:700}.rich-text--wrapper-markdown .hljs-addition[data-v-e55203a2]{color:var(--hljs-syntax-markup-inserted-color);background-color:var(--hljs-syntax-markup-inserted-background-color)}.rich-text--wrapper-markdown .hljs-deletion[data-v-e55203a2]{color:var(--hljs-syntax-markup-deleted-color);background-color:var(--hljs-syntax-markup-deleted-background-color)}@media(prefers-color-scheme:light){.rich-text--wrapper-markdown[data-v-e55203a2]{--hljs-color: var(--color-main-text, #24292e);--hljs-background-color: var(--color-background-dark, #ffffff);--hljs-syntax-keyword-color: #d73a49;--hljs-syntax-entity-color: #6f42c1;--hljs-syntax-constant-color: #005cc5;--hljs-syntax-string-color: #032f62;--hljs-syntax-variable-color: #e36209;--hljs-syntax-comment-color: #6a737d;--hljs-syntax-entity-tag-color: #22863a;--hljs-syntax-storage-modifier-import-color: #24292e;--hljs-syntax-markup-heading-color: #005cc5;--hljs-syntax-markup-list-color: #735c0f;--hljs-syntax-markup-italic-color: #24292e;--hljs-syntax-markup-bold-color: #24292e;--hljs-syntax-markup-inserted-color: #22863a;--hljs-syntax-markup-inserted-background-color: #f0fff4;--hljs-syntax-markup-deleted-color: #b31d28;--hljs-syntax-markup-deleted-background-color: #ffeef0}[data-theme-dark] .rich-text--wrapper-markdown[data-v-e55203a2]{--hljs-color: var(--color-main-text, #c9d1d9);--hljs-background-color: var(--color-background-dark, #0d1117);--hljs-syntax-keyword-color: #ff7b72;--hljs-syntax-entity-color: #d2a8ff;--hljs-syntax-constant-color: #79c0ff;--hljs-syntax-string-color: #a5d6ff;--hljs-syntax-variable-color: #ffa657;--hljs-syntax-comment-color: #8b949e;--hljs-syntax-entity-tag-color: #7ee787;--hljs-syntax-storage-modifier-import-color: #c9d1d9;--hljs-syntax-markup-heading-color: #1f6feb;--hljs-syntax-markup-list-color: #f2cc60;--hljs-syntax-markup-italic-color: #c9d1d9;--hljs-syntax-markup-bold-color: #c9d1d9;--hljs-syntax-markup-inserted-color: #aff5b4;--hljs-syntax-markup-inserted-background-color: #033a16;--hljs-syntax-markup-deleted-color: #ffdcd7;--hljs-syntax-markup-deleted-background-color: #67060c}}@media(prefers-color-scheme:dark){.rich-text--wrapper-markdown[data-v-e55203a2]{--hljs-color: var(--color-main-text, #c9d1d9);--hljs-background-color: var(--color-background-dark, #0d1117);--hljs-syntax-keyword-color: #ff7b72;--hljs-syntax-entity-color: #d2a8ff;--hljs-syntax-constant-color: #79c0ff;--hljs-syntax-string-color: #a5d6ff;--hljs-syntax-variable-color: #ffa657;--hljs-syntax-comment-color: #8b949e;--hljs-syntax-entity-tag-color: #7ee787;--hljs-syntax-storage-modifier-import-color: #c9d1d9;--hljs-syntax-markup-heading-color: #1f6feb;--hljs-syntax-markup-list-color: #f2cc60;--hljs-syntax-markup-italic-color: #c9d1d9;--hljs-syntax-markup-bold-color: #c9d1d9;--hljs-syntax-markup-inserted-color: #aff5b4;--hljs-syntax-markup-inserted-background-color: #033a16;--hljs-syntax-markup-deleted-color: #ffdcd7;--hljs-syntax-markup-deleted-background-color: #67060c}[data-theme-light] .rich-text--wrapper-markdown[data-v-e55203a2]{--hljs-color: var(--color-main-text, #24292e);--hljs-background-color: var(--color-background-dark, #ffffff);--hljs-syntax-keyword-color: #d73a49;--hljs-syntax-entity-color: #6f42c1;--hljs-syntax-constant-color: #005cc5;--hljs-syntax-string-color: #032f62;--hljs-syntax-variable-color: #e36209;--hljs-syntax-comment-color: #6a737d;--hljs-syntax-entity-tag-color: #22863a;--hljs-syntax-storage-modifier-import-color: #24292e;--hljs-syntax-markup-heading-color: #005cc5;--hljs-syntax-markup-list-color: #735c0f;--hljs-syntax-markup-italic-color: #24292e;--hljs-syntax-markup-bold-color: #24292e;--hljs-syntax-markup-inserted-color: #22863a;--hljs-syntax-markup-inserted-background-color: #f0fff4;--hljs-syntax-markup-deleted-color: #b31d28;--hljs-syntax-markup-deleted-background-color: #ffeef0}}a[data-v-e55203a2]:not(.rich-text--component){text-decoration:underline}.rich-text__code-block[data-v-e55203a2]{position:relative;padding-inline-end:calc(var(--clickable-area-small) + var(--default-grid-baseline))}.rich-text__code-block pre[data-v-e55203a2]{width:100%;overflow-x:auto}.rich-text__code-block .rich-text__code-block-button[data-v-e55203a2]{position:absolute;top:var(--default-grid-baseline);inset-inline-end:var(--default-grid-baseline);opacity:0}.rich-text__code-block:hover .rich-text__code-block-button[data-v-e55203a2],.rich-text__code-block:focus-within .rich-text__code-block-button[data-v-e55203a2],.rich-text__code-block .rich-text__code-block-button[data-v-e55203a2]:focus{opacity:1}.material-design-icon[data-v-dc80bc03]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.widget-custom[data-v-dc80bc03]{width:100%;margin:auto;margin-bottom:calc(var(--default-grid-baseline, 4px) * 3);margin-top:calc(var(--default-grid-baseline, 4px) * 3);overflow:hidden;border:2px solid var(--color-border);border-radius:var(--border-radius-container);background-color:transparent;display:flex;position:relative}.widget-custom.full-width[data-v-dc80bc03]{width:var(--widget-full-width, 100%)!important;inset-inline-start:calc((var(--widget-full-width, 100%) - 100%) / 2 * -1);position:relative}.widget-custom__content[data-v-dc80bc03]{width:100%;display:flex;flex-direction:column}.widget-custom__resize-handle[data-v-dc80bc03]{position:absolute;bottom:0;inset-inline-start:0;width:100%;height:calc(var(--default-grid-baseline) * 2);border-top:1px solid var(--color-border);margin-top:-1px;cursor:row-resize;touch-action:none}.widget-custom__resize-handle[data-v-dc80bc03]:before,.widget-custom__resize-handle[data-v-dc80bc03]:after{content:"";position:absolute;top:50%;left:50%;background-color:var(--color-border);margin-top:1px;transform:translate(-50%);width:30px;height:1px}.widget-custom__resize-handle[data-v-dc80bc03]:before{margin-top:-2px}.widget-custom__resize-handle[data-v-dc80bc03]:focus-visible{outline:2px solid var(--color-primary-element);outline-offset:-4px}.widget-access[data-v-dc80bc03]{width:100%;margin:auto;margin-bottom:calc(var(--default-grid-baseline, 4px) * 3);margin-top:calc(var(--default-grid-baseline, 4px) * 3);overflow:hidden;border:2px solid var(--color-border);border-radius:var(--border-radius-container);background-color:transparent;display:flex;padding:calc(var(--default-grid-baseline, 4px) * 3)}.widget-default[data-v-dc80bc03]{width:100%;margin:auto;margin-bottom:calc(var(--default-grid-baseline, 4px) * 3);margin-top:calc(var(--default-grid-baseline, 4px) * 3);overflow:hidden;border:2px solid var(--color-border);border-radius:var(--border-radius-container);background-color:transparent;display:flex}.widget-default--compact[data-v-dc80bc03]{flex-direction:column}.widget-default--compact .widget-default--image[data-v-dc80bc03]{width:100%;height:150px}.widget-default--compact .widget-default--details[data-v-dc80bc03]{width:100%;padding-top:calc(var(--default-grid-baseline, 4px) * 2);padding-bottom:calc(var(--default-grid-baseline, 4px) * 2)}.widget-default--compact .widget-default--description[data-v-dc80bc03]{display:none}.widget-default--image[data-v-dc80bc03]{width:40%;background-position:center;background-size:cover;background-repeat:no-repeat}.widget-default--name[data-v-dc80bc03]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--font-weight-heading, bold)}.widget-default--details[data-v-dc80bc03]{padding:calc(var(--default-grid-baseline, 4px) * 3);width:0;flex-grow:1}.widget-default--details p[data-v-dc80bc03]{margin:0;padding:0}.widget-default--description[data-v-dc80bc03]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical}.widget-default--link[data-v-dc80bc03]{color:var(--color-text-maxcontrast);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toggle-interactive[data-v-dc80bc03]{position:relative}.toggle-interactive .toggle-interactive--button[data-v-dc80bc03]{position:absolute;bottom:var(--default-grid-baseline);inset-inline-end:var(--default-grid-baseline);z-index:10000}.material-design-icon[data-v-06c9abdc]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.progress-bar[data-v-06c9abdc]{display:block;height:var(--progress-bar-height);--progress-bar-color: var(--15a054de)}.progress-bar--linear[data-v-06c9abdc]{width:100%;overflow:hidden;border:0;padding:0;background:var(--color-background-dark);border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--linear[data-v-06c9abdc]::-webkit-progress-bar{height:var(--progress-bar-height);background-color:transparent}.progress-bar--linear[data-v-06c9abdc]::-webkit-progress-value{background:var(--progress-bar-color, var(--gradient-primary-background));border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--linear[data-v-06c9abdc]::-moz-progress-bar{background:var(--progress-bar-color, var(--gradient-primary-background));border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--circular[data-v-06c9abdc]{width:var(--progress-bar-height);color:var(--progress-bar-color, var(--color-primary-element))}.progress-bar--error[data-v-06c9abdc]{color:var(--color-text-error, var(--color-error))!important}.progress-bar--error[data-v-06c9abdc]::-moz-progress-bar{background:var(--color-text-error, var(--color-error))!important}.progress-bar--error[data-v-06c9abdc]::-webkit-progress-value{background:var(--color-text-error, var(--color-error))!important}._material-design-icon_CzuIb{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._radioGroup_checkboxRadioContainer_b2yzm .checkbox-content{max-width:unset!important}._material-design-icon_jBfNc{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._radioGroupButton_9pCm8{--radio-group-button--border-radius: var(--border-radius-small);--radio-group-button--border-width: 1px;--radio-group-button--color: var(--color-primary-element-light-text);--radio-group-button--background-color: var(--color-primary-element-light);--radio-group-button--background-color-hover: var(--color-primary-element-light-hover);--radio-group-button--padding: 1px;position:relative;cursor:pointer;color:var(--radio-group-button--color);background-color:var(--radio-group-button--background-color);transition:var(--animation-quick) background-color;border:var(--radio-group-button--border-width) solid var(--radio-group-button--background-color-hover);border-bottom-width:2px;border-radius:var(--radio-group-button--border-radius);display:flex;flex-direction:row;align-items:center;justify-content:center;text-align:center;min-height:var(--default-clickable-area);padding-block:var(--radio-group-button--padding) 0;padding-inline:var(--radio-group-button--padding)}._radioGroupButton_9pCm8 *{cursor:pointer}._radioGroupButton__input_FfvzH{position:absolute;inset-block-start:0;inset-inline-start:0;width:1px;height:1px;opacity:0;pointer-events:none}._radioGroupButton_9pCm8:has(._radioGroupButton__label_kwGnK){padding-inline:calc(var(--radio-group-button--padding) + var(--border-radius-element))}._radioGroupButton_9pCm8:has(._radioGroupButton__icon_QZWbH){padding-inline-start:var(--radio-group-button--padding)}._radioGroupButton_9pCm8:hover:not(._radioGroupButton_disabled_fam5K){background-color:var(--radio-group-button--background-color-hover)}._radioGroupButton_9pCm8:focus-within{--radio-group-button--border-width: 2px;--radio-group-button--padding: 0px;border:var(--radio-group-button--border-width) solid var(--color-main-text)!important;outline:calc(var(--default-grid-baseline) / 2) var(--color-main-background)}._radioGroupButton_active_P6UzJ{--radio-group-button--color: var(--color-primary-element-text);--radio-group-button--background-color: var(--color-primary-element);--radio-group-button--background-color-hover: var(--color-primary-element-hover)}._radioGroupButton__label_kwGnK{font-weight:var(--font-weight-element, bold)}._radioGroupButton_disabled_fam5K{filter:saturate(.7);opacity:.5;cursor:default}._radioGroupButton_disabled_fam5K *{cursor:default}._radioGroupButton__icon_QZWbH{--radio-group-button--icon-size: calc(var(--default-clickable-area) - 4px);display:flex;align-items:center;justify-content:center;height:100%;width:var(--radio-group-button--icon-size)}._radioGroupButton__icon_QZWbH *{--default-clickable-area: var(--radio-group-button--icon-size)}.material-design-icon[data-v-2660b55a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.resource[data-v-2660b55a]{display:flex;align-items:center;height:var(--default-clickable-area)}.resource__button[data-v-2660b55a]{width:100%!important;justify-content:flex-start!important;padding:0!important}.resource__button[data-v-2660b55a] .button-vue__wrapper{justify-content:flex-start!important}.resource__button[data-v-2660b55a] .button-vue__wrapper .button-vue__text{font-weight:var(--font-weight-default, normal)!important;margin-left:2px!important}.resource__icon[data-v-2660b55a]{width:32px;height:32px;background-color:var(--color-text-maxcontrast);border-radius:50%;display:flex;align-items:center;justify-content:center}.resource__icon img[data-v-2660b55a]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.material-design-icon[data-v-82938a03]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.team-resources__header[data-v-82938a03]{font-weight:var(--font-weight-heading, bold);margin-bottom:6px}.related-team[data-v-82938a03]{border-radius:var(--border-radius-rounded);border:2px solid var(--color-border-dark);margin-bottom:6px}.related-team__open[data-v-82938a03]{border-color:var(--color-primary-element)}.related-team__header[data-v-82938a03]{padding:6px 24px 6px 6px;display:flex;gap:12px}.related-team__name[data-v-82938a03]{display:flex;flex-grow:1;align-items:center;gap:12px;padding:6px 12px;font-weight:var(--font-weight-heading, bold);margin:0}.related-team .related-team-provider[data-v-82938a03]{padding:6px 12px}.related-team .related-team-provider__name[data-v-82938a03]{font-weight:var(--font-weight-heading, bold);margin-bottom:3px}.related-team .related-team-provider__link[data-v-82938a03]{display:flex;gap:12px;padding:6px 12px;font-weight:var(--font-weight-heading, bold)}.related-team .related-team-resource__link[data-v-82938a03]{display:flex;gap:12px;height:var(--default-clickable-area);align-items:center;border-radius:var(--border-radius-large)}.related-team .related-team-resource__link[data-v-82938a03]:hover{background-color:var(--color-background-hover)}.related-team .related-team-resource__link[data-v-82938a03]:focus{background-color:var(--color-background-hover);outline:2px solid var(--color-primary-element)}.related-team .related-team-resource .resource__icon[data-v-82938a03]{width:var(--default-clickable-area);height:var(--default-clickable-area);display:flex;align-items:center;justify-content:center;text-align:center}.related-team .related-team-resource .resource__icon>img[data-v-82938a03]{border-radius:var(--border-radius-pill);overflow:hidden;width:32px;height:32px}.material-design-icon[data-v-3ca2fd14]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.related-resources__header h5[data-v-3ca2fd14]{font-weight:var(--font-weight-heading, bold);margin-bottom:6px}.related-resources__header p[data-v-3ca2fd14]{color:var(--color-text-maxcontrast)}.material-design-icon[data-v-ef14f1ec]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.autocomplete-result[data-v-ef14f1ec]{display:flex;align-items:center;gap:var(--default-grid-baseline);line-height:1.2;--auto-complete-result-avatar-size: var(--default-clickable-area)}.autocomplete-result__icon[data-v-ef14f1ec]{position:relative;flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);min-width:var(--default-clickable-area);height:var(--default-clickable-area);border-radius:var(--default-clickable-area);background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:contain}.autocomplete-result__icon--with-avatar[data-v-ef14f1ec]{color:inherit;background-size:cover}.autocomplete-result__status[data-v-ef14f1ec]{--auto-complete-result-status-icon-size: clamp(14px, var(--auto-complete-result-avatar-size) * .4, 18px);--auto-complete-result-status-icon-position: calc(var(--auto-complete-result-avatar-size) / 2 * (1 - 1 / sqrt(2)) - var(--auto-complete-result-status-icon-size) / 2);box-sizing:border-box;position:absolute;inset-inline-end:var(--auto-complete-result-status-icon-position);bottom:var(--auto-complete-result-status-icon-position);height:var(--auto-complete-result-status-icon-size);width:var(--auto-complete-result-status-icon-size);border:2px solid var(--color-main-background);border-radius:50%;background-color:var(--color-main-background);font-size:calc(var(--auto-complete-result-status-icon-size) / 1.2);line-height:1.2;background-repeat:no-repeat;background-size:var(--auto-complete-result-status-icon-size);background-position:center}.autocomplete-result__status--icon[data-v-ef14f1ec]{border:none;background-color:transparent}.autocomplete-result__content[data-v-ef14f1ec]{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;min-width:0}.autocomplete-result__title[data-v-ef14f1ec],.autocomplete-result__subline[data-v-ef14f1ec]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-result__subline[data-v-ef14f1ec]{color:var(--color-text-maxcontrast)}.material-design-icon[data-v-0f528b8a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.rich-contenteditable[data-v-0f528b8a]{--contenteditable-block-offset: calc(2 * var(--default-grid-baseline));--contenteditable-inline-start-offset: calc(2 * var(--default-grid-baseline));--contenteditable-inline-end-offset: calc(2 * var(--default-grid-baseline));position:relative;width:auto}.rich-contenteditable__label[data-v-0f528b8a]{position:absolute;margin-inline:14px;max-width:fit-content;inset-block-start:11px;inset-inline:0;color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.rich-contenteditable__input:focus+.rich-contenteditable__label[data-v-0f528b8a],.rich-contenteditable__input:not(.rich-contenteditable__input--empty)+.rich-contenteditable__label[data-v-0f528b8a]{inset-block-start:-10px;line-height:1.5;font-size:13px;font-weight:var(--font-weight-element, 500);border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:5px;margin-inline:9px;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.rich-contenteditable__input[data-v-0f528b8a]{overflow-y:auto;width:auto;margin:0;padding-block:var(--contenteditable-block-offset);padding-inline:var(--contenteditable-inline-start-offset) var(--contenteditable-inline-end-offset);cursor:text;white-space:pre-wrap;overflow-wrap:break-word;color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);border-radius:var(--border-radius-large);outline:none;background-color:var(--color-main-background);font-family:var(--font-face);font-size:inherit;tab-size:4;min-height:var(--default-clickable-area);max-height:calc(var(--default-clickable-area) * 5.5)}.rich-contenteditable__input--has-label[data-v-0f528b8a]{margin-top:10px}.rich-contenteditable__input--empty[data-v-0f528b8a]:focus:before,.rich-contenteditable__input--empty[data-v-0f528b8a]:not(.rich-contenteditable__input--has-label):before{content:attr(aria-placeholder);color:var(--color-text-maxcontrast);position:absolute;width:calc(100% - var(--contenteditable-inline-start-offset) - var(--contenteditable-inline-end-offset));height:calc(100% - 2 * var(--contenteditable-block-offset));overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.rich-contenteditable__input[contenteditable=false][data-v-0f528b8a]:not(.rich-contenteditable__input--disabled){cursor:default;background-color:transparent;color:var(--color-main-text);border-color:transparent;opacity:1;border-radius:0}.rich-contenteditable__input--multiline[data-v-0f528b8a]{min-height:calc(var(--default-clickable-area) * 3);max-height:none}.rich-contenteditable__input--disabled[data-v-0f528b8a]{opacity:.5;color:var(--color-text-maxcontrast);border:2px solid var(--color-background-darker);border-radius:var(--border-radius);background-color:var(--color-background-dark)}.rich-contenteditable__input--overflow[data-v-0f528b8a],.rich-contenteditable__input--overflow[data-v-0f528b8a]:hover{border-color:var(--color-border-error, var(--color-error))!important}._material-design-icon_h1KPS{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._tribute-container_y19wi{z-index:9000;overflow:auto;position:absolute;left:-100vw;margin:var(--default-grid-baseline) 0;padding:var(--default-grid-baseline);color:var(--color-text-maxcontrast);border-radius:var(--border-radius-element, var(--border-radius));background:var(--color-main-background);box-shadow:0 1px 5px var(--color-box-shadow)}._tribute-container_y19wi,._tribute-container_y19wi *{box-sizing:border-box}._tribute-container_y19wi ul{display:flex;flex-direction:column;gap:var(--default-grid-baseline)}._tribute-container_y19wi ._tribute-container__item_HPusZ{color:var(--color-text-maxcontrast);border-radius:var(--border-radius-small, var(--border-radius));padding:var(--default-grid-baseline);cursor:pointer;min-height:var(--clickable-area-small, auto)}._tribute-container_y19wi ._tribute-container__item_HPusZ.highlight{color:var(--color-main-text);background:var(--color-background-hover)}._tribute-container_y19wi ._tribute-container__item_HPusZ.highlight,._tribute-container_y19wi ._tribute-container__item_HPusZ.highlight *{cursor:pointer}._tribute-container_y19wi._tribute-container--focus-visible_AqpWt .highlight._tribute-container__item_HPusZ{outline:2px solid var(--color-main-text)!important}._tribute-container-autocomplete_cJgfd{min-width:250px;max-width:300px;max-height:calc((var(--default-clickable-area) + 3 * var(--default-grid-baseline)) * 4.5 - 1.5 * var(--default-grid-baseline))}._tribute-container-emoji_JxYiz,._tribute-container-link_59LXD{min-width:200px;max-width:200px;max-height:calc((24px + 3 * var(--default-grid-baseline)) * 5.5 - 1.5 * var(--default-grid-baseline))}._tribute-container-emoji_JxYiz ._tribute-item_HU0z9,._tribute-container-link_59LXD ._tribute-item_HU0z9{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._tribute-container-link_59LXD{min-width:200px;max-width:300px}._tribute-container-link_59LXD ._tribute-item_HU0z9{display:flex;align-items:center}._tribute-container-link_59LXD ._tribute-item__title_ta-s8{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._tribute-container-link_59LXD ._tribute-item__icon_cDA06{margin:auto 0;width:20px;height:20px;object-fit:contain;padding-inline-end:var(--default-grid-baseline);filter:var(--background-invert-if-dark)}.material-design-icon[data-v-0547d92f],.material-design-icon[data-v-f39d58d9]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.provider-list[data-v-f39d58d9]{width:100%;min-height:400px;padding:0 16px 16px;display:flex;flex-direction:column}.provider-list--select[data-v-f39d58d9]{width:100%}.provider-list--select .provider[data-v-f39d58d9]{display:flex;align-items:center;height:28px;overflow:hidden}.provider-list--select .provider .link-icon[data-v-f39d58d9]{margin-inline-end:8px}.provider-list--select .provider .provider-icon[data-v-f39d58d9]{width:20px;height:20px;object-fit:contain;margin-inline-end:8px;filter:var(--background-invert-if-dark)}.provider-list--select .provider .option-text[data-v-f39d58d9]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.material-design-icon[data-v-be630586]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.raw-link[data-v-be630586]{width:100%;min-height:350px;display:flex;flex-direction:column;overflow-y:auto;padding:0 16px 16px}.raw-link .input-wrapper[data-v-be630586]{width:100%}.raw-link .reference-widget[data-v-be630586]{display:flex}.raw-link--empty-content .provider-icon[data-v-be630586]{width:150px;height:150px;object-fit:contain;filter:var(--background-invert-if-dark)}.raw-link--input[data-v-be630586]{width:99%}.material-design-icon[data-v-995c2758]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.result[data-v-995c2758]{display:flex;align-items:center;height:var(--default-clickable-area);overflow:hidden}.result--icon-class[data-v-995c2758],.result--image[data-v-995c2758]{width:40px;min-width:40px;height:40px;object-fit:contain}.result--icon-class.rounded[data-v-995c2758],.result--image.rounded[data-v-995c2758]{border-radius:50%}.result--content[data-v-995c2758]{display:flex;flex-direction:column;padding-inline-start:10px;overflow:hidden}.result--content--name[data-v-995c2758],.result--content--subline[data-v-995c2758]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.material-design-icon[data-v-e61f71e3]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.smart-picker-search[data-v-e61f71e3]{width:100%;display:flex;flex-direction:column;padding:0 16px 16px}.smart-picker-search.with-empty-content[data-v-e61f71e3]{min-height:400px}.smart-picker-search .provider-icon[data-v-e61f71e3]{width:150px;height:150px;object-fit:contain;filter:var(--background-invert-if-dark)}.smart-picker-search--select[data-v-e61f71e3],.smart-picker-search--select .search-result[data-v-e61f71e3]{width:100%}.smart-picker-search--select .group-name-icon[data-v-e61f71e3],.smart-picker-search--select .option-simple-icon[data-v-e61f71e3]{width:20px;height:20px;margin:0 20px 0 10px}.smart-picker-search--select .custom-option[data-v-e61f71e3]{height:var(--default-clickable-area);display:flex;align-items:center;overflow:hidden}.smart-picker-search--select .option-text[data-v-e61f71e3]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.material-design-icon[data-v-646d5538]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.reference-picker[data-v-646d5538],.reference-picker .custom-element-wrapper[data-v-646d5538],.reference-picker .custom-element-wrapper .custom-element[data-v-646d5538]{display:flex;overflow-y:auto;width:100%}.material-design-icon[data-v-00990f2a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.reference-picker-modal[data-v-00990f2a] .modal-container{display:flex!important}.reference-picker-modal--content[data-v-00990f2a]{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow-y:auto}.reference-picker-modal--content .close-button[data-v-00990f2a],.reference-picker-modal--content .back-button[data-v-00990f2a]{position:absolute;top:4px}.reference-picker-modal--content .back-button[data-v-00990f2a]{inset-inline-start:4px}.reference-picker-modal--content .close-button[data-v-00990f2a]{inset-inline-end:4px}.reference-picker-modal--content>h2[data-v-00990f2a]{display:flex;margin:12px 0 20px}.reference-picker-modal--content>h2 .icon[data-v-00990f2a]{margin-inline-end:8px}.nc-select-users[data-v-7f7ecbfe] .vs__selected{padding-inline:0 5px!important}.material-design-icon[data-v-9938ac79]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.input-wrapper[data-v-9938ac79]{display:flex;align-items:center;flex-wrap:wrap;width:100%;max-width:400px}.input-wrapper .action-input__label[data-v-9938ac79]{margin-right:12px}.input-wrapper[data-v-9938ac79]:disabled{cursor:default}.input-wrapper .hint[data-v-9938ac79]{color:var(--color-text-maxcontrast);margin-left:8px}.material-design-icon[data-v-9fdd9dcb]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.settings-section[data-v-9fdd9dcb]{display:block;margin-bottom:auto;padding:30px}.settings-section[data-v-9fdd9dcb]:not(:last-child){border-bottom:1px solid var(--color-border)}.settings-section--limit-width>*[data-v-9fdd9dcb]{max-width:900px}.settings-section__name[data-v-9fdd9dcb]{display:inline-flex;align-items:center;justify-content:center;font-size:20px;font-weight:var(--font-weight-heading, bold);max-width:900px;margin-top:0}.settings-section__info[data-v-9fdd9dcb]{display:flex;align-items:center;justify-content:center;width:var(--default-clickable-area);height:var(--default-clickable-area);margin:calc((var(--default-clickable-area) - 16px) / 2 * -1);margin-inline-start:0;color:var(--color-text-maxcontrast)}.settings-section__info[data-v-9fdd9dcb]:hover,.settings-section__info[data-v-9fdd9dcb]:focus,.settings-section__info[data-v-9fdd9dcb]:active{color:var(--color-main-text)}.settings-section__desc[data-v-9fdd9dcb]{margin-top:-.2em;margin-bottom:1em;color:var(--color-text-maxcontrast);max-width:900px}.material-design-icon[data-v-9d59765b]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.select-group-error[data-v-9d59765b]{color:var(--color-text-error, var(--color-error));font-size:13px;padding-inline-start:var(--border-radius-large)}.material-design-icon[data-v-70810bb3]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}/*! - * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */.textarea[data-v-70810bb3]{--input-border-color: var(--color-border-maxcontrast);--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));position:relative;width:100%;border-radius:var(--border-radius-large);margin-block-start:6px;resize:vertical}.textarea--disabled[data-v-70810bb3]{opacity:.7;filter:saturate(.7)}.textarea__main-wrapper[data-v-70810bb3]{padding:var(--border-width-input-focused, 2px);position:relative}.textarea__input[data-v-70810bb3]{margin:0;padding-block:var(--border-radius-element);padding-inline:10px;width:100%;font-size:var(--default-font-size);text-overflow:ellipsis;cursor:pointer;min-height:calc(var(--default-clickable-area) * 2);min-width:calc(var(--default-clickable-area) * 2);max-width:100%;background-color:var(--color-main-background);color:var(--color-main-text);--input-border-box-shadow-light: 0 -1px var(--input-border-color), 0 0 0 1px color-mix(in srgb, var(--input-border-color), 65% transparent);--input-border-box-shadow-dark: 0 1px var(--input-border-color), 0 0 0 1px color-mix(in srgb, var(--input-border-color), 65% transparent);--input-border-box-shadow: var(--input-border-box-shadow-light);border:none;border-radius:var(--border-radius-element);box-shadow:var(--input-border-box-shadow)}.textarea__input[data-v-70810bb3]:hover:not([disabled]){box-shadow:0 0 0 1px var(--input-border-color)}@media(prefers-color-scheme:dark){.textarea__input .textarea__input[data-v-70810bb3]{--input-border-box-shadow: var(--input-border-box-shadow-dark)}}[data-theme-dark] .textarea__input[data-v-70810bb3]{--input-border-box-shadow: var(--input-border-box-shadow-dark)}[data-theme-light] .textarea__input[data-v-70810bb3]{--input-border-box-shadow: var(--input-border-box-shadow-light)}.textarea--legacy .textarea__input[data-v-70810bb3]{box-shadow:0 0 0 1px var(--input-border-color)}.textarea--legacy .textarea__input[data-v-70810bb3]:hover:not([disabled]){box-shadow:0 0 0 2px var(--input-border-color)}.textarea__input[data-v-70810bb3]:focus-within:not([disabled]),.textarea__input[data-v-70810bb3]:active:not([disabled]){box-shadow:0 0 0 2px var(--input-border-color),0 0 0 4px var(--color-main-background)!important}.textarea__input[data-v-70810bb3]:active:not([disabled]),.textarea__input[data-v-70810bb3]:focus:not([disabled]){--input-border-width-offset: 0px;--input-border-color: var(--color-main-text)}.textarea__input[data-v-70810bb3]:not(:focus,.textarea__input--label-outside)::placeholder{opacity:0}.textarea__input[data-v-70810bb3]:focus{cursor:text}.textarea__input[data-v-70810bb3]:disabled{cursor:default}.textarea__input[data-v-70810bb3]:focus-visible{box-shadow:unset!important}.textarea__input--success[data-v-70810bb3]{--input-border-color: var(--color-border-success, var(--color-success)) !important}.textarea__input--success[data-v-70810bb3]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.textarea__input--error[data-v-70810bb3]{--input-border-color: var(--color-border-error, var(--color-error)) !important}.textarea__input--error[data-v-70810bb3]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.textarea__label[data-v-70810bb3]{position:absolute;margin-inline:12px 0;max-width:fit-content;inset-block-start:11px;inset-inline:0;color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.textarea__input:focus+.textarea__label[data-v-70810bb3],.textarea__input:not(:placeholder-shown)+.textarea__label[data-v-70810bb3]{inset-block-start:-10px;line-height:1.5;font-size:13px;font-weight:var(--font-weight-element, 500);color:var(--color-main-text);background-color:var(--color-main-background);padding-inline:4px;margin-inline-start:8px;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.textarea__helper-text-message[data-v-70810bb3]{padding-block:4px;display:flex;align-items:center}.textarea__helper-text-message__icon[data-v-70810bb3]{margin-inline-end:8px}.textarea__helper-text-message--error[data-v-70810bb3]{color:var(--color-error-text)}.textarea__helper-text-message--success[data-v-70810bb3]{color:var(--color-success-text)}.material-design-icon[data-v-7942d6b6]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.user-bubble__wrapper[data-v-7942d6b6]{display:inline-block;vertical-align:middle;min-width:0;max-width:100%}.user-bubble__content[data-v-7942d6b6]{display:inline-flex;max-width:100%;background-color:var(--color-background-dark)}.user-bubble__content--primary[data-v-7942d6b6]{color:var(--color-primary-element-text);background-color:var(--color-primary-element)}.user-bubble__content[data-v-7942d6b6]>:last-child{padding-inline-end:8px}.user-bubble__avatar[data-v-7942d6b6]{align-self:center}.user-bubble__name[data-v-7942d6b6]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.user-bubble__name[data-v-7942d6b6],.user-bubble__secondary[data-v-7942d6b6]{padding-block:0;padding-inline:4px 0}.v-popper--theme-tooltip.v-popper__popper{position:absolute;z-index:100000;top:0;inset-inline:auto;display:block;margin:0;padding:0;text-align:start;opacity:0;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{inset-inline-end:100%;border-inline-start-width:0;border-inline-end-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{inset-inline-start:100%;border-inline-end-width:0;border-inline-start-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity .15s,visibility .15s;opacity:0}.v-popper--theme-tooltip.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity .15s;opacity:1}.v-popper--theme-tooltip .v-popper__inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.v-popper--theme-tooltip .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:transparent;border-width:10px}.material-design-icon[data-v-47ce59a3]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-47ce59a3]{--button-size: var(--default-clickable-area);--button-inner-size: calc(var(--button-size) - 4px);--button-radius: var(--border-radius-element);--button-padding-default: calc(var(--default-grid-baseline) + var(--button-radius));--button-padding: var(--default-grid-baseline) var(--button-padding-default);color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light);border:1px solid var(--color-primary-element-light-hover);border-bottom-width:2px;border-radius:var(--button-radius);box-sizing:border-box;position:relative;width:fit-content;overflow:hidden;padding-block:1px 0;padding-inline:var(--button-padding);min-height:var(--button-size);min-width:var(--button-size);display:flex;align-items:center;justify-content:center;will-change:transform;transition-property:color,border-color,background-color,transform;transition-duration:.1s;transition-timing-function:linear;cursor:pointer;font-size:var(--default-font-size);font-weight:var(--font-weight-element, bold)}.button-vue--size-small[data-v-47ce59a3]{--button-size: var(--clickable-area-small)}.button-vue--size-large[data-v-47ce59a3]{--button-size: var(--clickable-area-large)}.button-vue[data-v-47ce59a3] *{cursor:pointer}.button-vue[data-v-47ce59a3]:focus{outline:none}.button-vue[data-v-47ce59a3]:disabled{filter:saturate(.7);opacity:.5;cursor:default}.button-vue[data-v-47ce59a3]:disabled *{cursor:default}.button-vue[data-v-47ce59a3]:hover:not(:disabled){background-color:var(--color-primary-element-light-hover)}.button-vue[data-v-47ce59a3]:active:not(:disabled){background-color:var(--color-primary-element-light);transform:scale(.985)}.button-vue__wrapper[data-v-47ce59a3]{display:inline-flex;align-items:center;justify-content:center;width:100%}.button-vue--end .button-vue__wrapper[data-v-47ce59a3]{justify-content:end}.button-vue--start .button-vue__wrapper[data-v-47ce59a3]{justify-content:start}.button-vue--reverse .button-vue__wrapper[data-v-47ce59a3]{flex-direction:row-reverse}.button-vue--reverse[data-v-47ce59a3]{--button-padding: var(--button-padding-default) var(--default-grid-baseline)}.button-vue__icon[data-v-47ce59a3]{--default-clickable-area: var(--button-inner-size);height:var(--button-inner-size);width:var(--button-inner-size);min-height:var(--button-inner-size);min-width:var(--button-inner-size);display:flex;justify-content:center;align-items:center}.button-vue__icon[data-v-47ce59a3]:empty{display:none}.button-vue--size-small .button-vue__icon[data-v-47ce59a3]>*{max-height:16px;max-width:16px}.button-vue--size-small .button-vue__icon[data-v-47ce59a3] svg{height:16px;width:16px}.button-vue__text[data-v-47ce59a3]{font-weight:var(--font-weight-element, bold);margin-bottom:1px;padding:2px 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.button-vue__text[data-v-47ce59a3]:empty{display:none}.button-vue[data-v-47ce59a3]:has(.button-vue__text:empty):not(.button-vue--wide){--button-padding: var(--button-radius);line-height:1;width:var(--button-size)!important}.button-vue[data-v-47ce59a3]:has(.button-vue__icon:empty){--button-padding: var(--button-padding-default)}.button-vue:has(.button-vue__icon:empty) .button-vue__text[data-v-47ce59a3]{padding-inline:var(--default-grid-baseline)}.button-vue--wide[data-v-47ce59a3]{width:100%}.button-vue[data-v-47ce59a3]:focus-visible{outline:2px solid var(--color-main-text)!important;box-shadow:0 0 0 4px var(--color-main-background)!important}.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-47ce59a3]{outline:2px solid var(--color-primary-element-text);border-radius:var(--border-radius-element);background-color:transparent}.button-vue--primary[data-v-47ce59a3]{background-color:var(--color-primary-element);border-color:var(--color-primary-element-hover);color:var(--color-primary-element-text)}.button-vue--primary[data-v-47ce59a3]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--primary[data-v-47ce59a3]:active{background-color:var(--color-primary-element)}.button-vue--secondary[data-v-47ce59a3]{background-color:var(--color-primary-element-light);border-color:var(--color-primary-element-light-hover);color:var(--color-primary-element-light-text)}.button-vue--secondary[data-v-47ce59a3]:hover:not(:disabled){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light-hover)}.button-vue--tertiary[data-v-47ce59a3]{background-color:transparent;border-color:transparent;color:var(--color-main-text)}.button-vue--tertiary[data-v-47ce59a3]:hover:not(:disabled){background-color:var(--color-background-hover)}.button-vue--tertiary[data-v-47ce59a3]:not(.button-vue--legacy34):hover:not(:disabled){background-color:color-mix(in srgb,var(--color-primary-element) 8%,transparent)}.button-vue--tertiary-no-background[data-v-47ce59a3]:hover:not(:disabled){background-color:transparent}.button-vue--tertiary-on-primary[data-v-47ce59a3]{color:var(--color-primary-element-text)}.button-vue--tertiary-on-primary[data-v-47ce59a3]:hover:not(:disabled){background-color:transparent}.button-vue--success[data-v-47ce59a3]{border-color:var(--color-success-hover);background-color:var(--color-success);color:var(--color-success-text)}.button-vue--success[data-v-47ce59a3]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--success[data-v-47ce59a3]:active{background-color:var(--color-success)}.button-vue--warning[data-v-47ce59a3]{border-color:var(--color-warning-hover);background-color:var(--color-warning);color:var(--color-warning-text)}.button-vue--warning[data-v-47ce59a3]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--warning[data-v-47ce59a3]:active{background-color:var(--color-warning)}.button-vue--error[data-v-47ce59a3]{border-color:var(--color-error-hover);background-color:var(--color-error);color:var(--color-error-text)}.button-vue--error[data-v-47ce59a3]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--error[data-v-47ce59a3]:active{background-color:var(--color-error)}.button-vue--legacy[data-v-47ce59a3]{--button-inner-size: var(--button-size);border:none;padding-block:0}.button-vue--legacy.button-vue--error[data-v-47ce59a3],.button-vue--legacy.button-vue--success[data-v-47ce59a3],.button-vue--legacy.button-vue--warning[data-v-47ce59a3]{color:#fff}.material-design-icon[data-v-aaedb1c3]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.icon-vue[data-v-aaedb1c3]{display:flex;justify-content:center;align-items:center;min-width:var(--default-clickable-area);min-height:var(--default-clickable-area);opacity:1}.icon-vue.icon-vue--inline[data-v-aaedb1c3]{display:inline-flex!important;min-width:fit-content;min-height:fit-content;vertical-align:text-bottom}.icon-vue span[data-v-aaedb1c3]{line-height:0}.icon-vue[data-v-aaedb1c3] svg{fill:currentColor;width:var(--fb515064);height:var(--fb515064);max-width:var(--fb515064);max-height:var(--fb515064)}.icon-vue--directional[data-v-aaedb1c3] svg:dir(rtl){transform:scaleX(-1)}.material-design-icon[data-v-469673da]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.loading-icon[data-v-469673da]{overflow:hidden}.loading-icon svg[data-v-469673da]{animation:rotate var(--animation-duration, .8s) linear infinite}@media only screen and (max-width:512px){.dialog__modal .modal-wrapper.modal-wrapper--small .modal-container{width:fit-content;height:unset;max-height:90%;position:relative;top:unset;border-radius:var(--border-radius-element)}}.material-design-icon[data-v-adda232f]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.dialog[data-v-adda232f]{height:100%;width:100%;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.dialog__modal[data-v-adda232f] .modal-wrapper .modal-container{display:flex!important;padding-block:4px 0;padding-inline:12px 0}.dialog__modal[data-v-adda232f] .modal-wrapper .modal-container__content{display:flex;flex-direction:column;overflow:hidden}.dialog__wrapper[data-v-adda232f]{display:flex;flex-direction:row;flex:1;min-height:0;overflow:hidden}.dialog__wrapper--collapsed[data-v-adda232f]{flex-direction:column}.dialog__navigation[data-v-adda232f]{display:flex;flex-shrink:0}.dialog__wrapper:not(.dialog__wrapper--collapsed) .dialog__navigation[data-v-adda232f]{flex-direction:column;overflow:hidden auto;height:100%;min-width:200px;margin-inline-end:20px}.dialog__wrapper.dialog__wrapper--collapsed .dialog__navigation[data-v-adda232f]{flex-direction:row;justify-content:space-between;overflow:auto hidden;width:100%;min-width:100%}.dialog__name[data-v-adda232f]{font-size:21px;text-align:center;height:fit-content;min-height:var(--default-clickable-area);line-height:var(--default-clickable-area);overflow-wrap:break-word;margin-block:0 12px}.dialog__content[data-v-adda232f]{flex:1;min-height:0;overflow:auto;padding-inline-end:12px}.dialog__text[data-v-adda232f]{padding-block-end:6px}.dialog__actions[data-v-adda232f]{display:flex;gap:6px;align-content:center;justify-content:end;width:100%;max-width:100%;padding-inline:0 12px;margin-inline:0;margin-block:0}.dialog__actions[data-v-adda232f]:not(:empty){margin-block:6px 12px}@media only screen and (max-width:512px){.dialog__name[data-v-adda232f]{text-align:start;margin-inline-end:var(--default-clickable-area)}}.material-design-icon[data-v-8a979e50]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.modal-mask[data-v-8a979e50]{position:fixed;z-index:9998;top:0;inset-inline-start:0;display:block;width:100%;height:100%;--backdrop-color: 0, 0, 0;background-color:rgba(var(--backdrop-color),.5)}.modal-mask[data-v-8a979e50],.modal-mask[data-v-8a979e50] *{box-sizing:border-box}.modal-mask--opaque[data-v-8a979e50]{background-color:rgba(var(--backdrop-color),.92)}.modal-mask--light[data-v-8a979e50]{--backdrop-color: 255, 255, 255}.modal-header[data-v-8a979e50]{position:absolute;z-index:10001;top:0;inset-inline:0 0;display:flex!important;align-items:center;justify-content:space-between;width:100%;height:var(--header-height);overflow:hidden;transition:opacity .25s,visibility .25s}.modal-header__name[data-v-8a979e50]{overflow-x:hidden;width:100%;padding-inline:12px 0;transition:padding ease .1s;white-space:nowrap;text-overflow:ellipsis;font-size:16px;margin-block:0}@media only screen and (min-width:1024px){.modal-header:not(.modal-header--name-start) .modal-header__name[data-v-8a979e50]{padding-inline-start:calc(var(--header-height) * var(--v56de492e));text-align:center}}.modal-header--name-start .modal-header__name[data-v-8a979e50]{text-align:start}.modal-header .icons-menu[data-v-8a979e50]{display:flex;align-items:center;justify-content:flex-end;align-self:flex-end}.modal-header .icons-menu .header-close[data-v-8a979e50]{display:flex;align-items:center;justify-content:center;margin:calc((var(--header-height) - var(--default-clickable-area)) / 2);padding:0}.modal-header .icons-menu .play-pause-icons[data-v-8a979e50]{position:relative;width:var(--header-height);height:var(--header-height);margin:0;padding:0;cursor:pointer;border:none;background-color:transparent}.modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__icon[data-v-8a979e50],.modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__icon[data-v-8a979e50]{opacity:1;border-radius:calc(var(--default-clickable-area) / 2);background-color:#7f7f7f40}.modal-header .icons-menu .play-pause-icons__icon[data-v-8a979e50]{width:var(--default-clickable-area);height:var(--default-clickable-area);margin:calc((var(--header-height) - var(--default-clickable-area)) / 2);cursor:pointer;opacity:.7}.modal-header .icons-menu[data-v-8a979e50] .action-item{margin:calc((var(--header-height) - var(--default-clickable-area)) / 2)}.modal-header .icons-menu[data-v-8a979e50] .action-item--single{width:var(--default-clickable-area);height:var(--default-clickable-area);cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu .header-actions[data-v-8a979e50] button:focus-visible{box-shadow:none!important;outline:2px solid #fff!important}.modal-wrapper[data-v-8a979e50]{--modal-header-offset: var(--header-height);display:flex;align-items:center;justify-content:center;width:100%;height:100%}.modal-wrapper--no-header[data-v-8a979e50]{--modal-header-offset: var(--body-container-margin)}.modal-wrapper .prev[data-v-8a979e50],.modal-wrapper .next[data-v-8a979e50]{z-index:10000;height:35vh;min-height:300px;position:absolute;transition:opacity .25s;color:#fff}.modal-wrapper .prev[data-v-8a979e50]:focus-visible,.modal-wrapper .next[data-v-8a979e50]:focus-visible{box-shadow:0 0 0 2px var(--color-primary-element-text);background-color:var(--color-box-shadow)}.modal-wrapper .prev[data-v-8a979e50]{inset-inline-start:2px}.modal-wrapper .next[data-v-8a979e50]{inset-inline-end:2px}.modal-wrapper .modal-container[data-v-8a979e50]{position:relative;display:flex;padding:0;transition:transform .3s ease;border-radius:var(--border-radius-container);background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 40px #0003;overflow:auto}.modal-wrapper .modal-container__close[data-v-8a979e50]{z-index:1;position:absolute;top:4px;inset-inline-end:var(--default-grid-baseline)}.modal-wrapper .modal-container__content[data-v-8a979e50]{width:100%;min-height:52px;overflow:auto}.modal-wrapper--small>.modal-container[data-v-8a979e50]{width:400px;max-width:90%;max-height:min(90%,100% - 2 * var(--header-height) - 2 * var(--body-container-margin))}.modal-wrapper--normal>.modal-container[data-v-8a979e50]{max-width:90%;width:600px;max-height:min(90%,100% - 2 * var(--header-height) - 2 * var(--body-container-margin))}.modal-wrapper--large>.modal-container[data-v-8a979e50]{max-width:90%;width:900px;max-height:min(90%,100% - 2 * var(--header-height) - 2 * var(--body-container-margin))}.modal-wrapper--full>.modal-container[data-v-8a979e50]{width:100%;height:calc(100% - var(--modal-header-offset));position:absolute;top:var(--modal-header-offset);border-radius:0}@media only screen and ((max-width:512px)or (max-height:400px)){.modal-wrapper .modal-container[data-v-8a979e50]{max-width:initial;width:100%;max-height:initial;height:calc(100% - var(--modal-header-offset));position:absolute;top:var(--modal-header-offset);border-radius:0}}.fade-enter-active[data-v-8a979e50],.fade-leave-active[data-v-8a979e50]{transition:opacity .25s}.fade-enter-from[data-v-8a979e50],.fade-leave-to[data-v-8a979e50]{opacity:0}.fade-visibility-enter-from[data-v-8a979e50],.fade-visibility-leave-to[data-v-8a979e50]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-8a979e50],.modal-in-leave-active[data-v-8a979e50],.modal-out-enter-active[data-v-8a979e50],.modal-out-leave-active[data-v-8a979e50]{transition:opacity .25s}.modal-in-enter-from[data-v-8a979e50],.modal-in-leave-to[data-v-8a979e50],.modal-out-enter-from[data-v-8a979e50],.modal-out-leave-to[data-v-8a979e50]{opacity:0}.modal-in-enter .modal-container[data-v-8a979e50],.modal-in-leave-to .modal-container[data-v-8a979e50]{transform:scale(.9)}.modal-out-enter .modal-container[data-v-8a979e50],.modal-out-leave-to .modal-container[data-v-8a979e50]{transform:scale(1.1)}.modal-mask .play-pause-icons[data-v-8a979e50]{--progress-ring-radius: calc(var(--default-clickable-area) / 2 + 1px);--progress-ring-circumference: calc(2 * pi * var(--progress-ring-radius))}.modal-mask .play-pause-icons .progress-ring[data-v-8a979e50]{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;transform:rotate(-90deg)}.modal-mask .play-pause-icons .progress-ring .progress-ring__circle[data-v-8a979e50]{transition:.1s stroke-dashoffset;transform-origin:50% 50%;animation:progressring-8a979e50 linear var(--v7a929c18) infinite;r:var(--progress-ring-radius);stroke-linecap:round;stroke-dashoffset:var(--progress-ring-circumference);stroke-dasharray:var(--progress-ring-circumference)}.modal-mask .play-pause-icons--paused .play-pause-icons__icon[data-v-8a979e50]{animation:breath-8a979e50 2s cubic-bezier(.4,0,.2,1) infinite}.modal-mask .play-pause-icons--paused .progress-ring__circle[data-v-8a979e50]{animation-play-state:paused!important}@keyframes progressring-8a979e50{0%{stroke-dashoffset:var(--progress-ring-circumference)}to{stroke-dashoffset:0}}@keyframes breath-8a979e50{0%{opacity:1}50%{opacity:0}to{opacity:1}}.material-design-icon[data-v-7206c1f1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-items[data-v-7206c1f1]{display:flex;align-items:center;gap:calc((var(--default-clickable-area) - 16px) / 2 / 2)}.action-item[data-v-7206c1f1]{--open-background-color: var(--color-background-hover, $action-background-hover);position:relative;display:inline-block}.action-item.action-item--primary[data-v-7206c1f1]{--open-background-color: var(--color-primary-element-hover)}.action-item.action-item--secondary[data-v-7206c1f1]{--open-background-color: var(--color-primary-element-light-hover)}.action-item.action-item--error[data-v-7206c1f1]{--open-background-color: var(--color-error-hover)}.action-item.action-item--warning[data-v-7206c1f1]{--open-background-color: var(--color-warning-hover)}.action-item.action-item--success[data-v-7206c1f1]{--open-background-color: var(--color-success-hover)}.action-item.action-item--tertiary-no-background[data-v-7206c1f1]{--open-background-color: transparent}.action-item.action-item--open .action-item__menutoggle[data-v-7206c1f1]{background-color:var(--open-background-color)}.action-item.action-item--wide[data-v-7206c1f1]{width:100%}.action-item__menutoggle__icon[data-v-7206c1f1]{width:20px;height:20px;object-fit:contain}.material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.v-popper--theme-nc-popover-9.v-popper__popper.action-item__popper .v-popper__wrapper{border-radius:var(--border-radius-element)}.v-popper--theme-nc-popover-9.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner{border-radius:var(--border-radius-element);padding:4px;max-height:calc(100vh - var(--header-height));overflow:auto}._material-design-icon_YkiJ0{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._ncPopover_GqEo6.v-popper--theme-nc-popover-9,._ncPopover_GqEo6.v-popper--theme-nc-popover-9 *{box-sizing:border-box}._ncPopover_GqEo6.v-popper--theme-nc-popover-9 .resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}._ncPopover_GqEo6.v-popper--theme-nc-popover-9 .resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper{z-index:100000;top:0;left:0;display:block!important}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper .v-popper__wrapper{box-shadow:0 1px 10px var(--color-box-shadow);border-radius:var(--border-radius-element);transition:transform var(--animation-quick)}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius-element);overflow:hidden;background:var(--color-main-background)}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper .v-popper__arrow-container{display:none}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper[data-popper-placement^=top] .v-popper__wrapper{transform-origin:bottom center}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper[data-popper-placement^=bottom] .v-popper__wrapper{transform-origin:top center}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper[data-popper-placement^=right] .v-popper__wrapper{transform-origin:left center}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper[data-popper-placement^=left] .v-popper__wrapper{transform-origin:right center}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper.v-popper__popper--hidden{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper.v-popper__popper--hidden .v-popper__wrapper{transform:scale(.96)}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper.v-popper__popper--shown{visibility:visible;transition:opacity var(--animation-quick);opacity:1}._ncPopover_GqEo6.v-popper--theme-nc-popover-9.v-popper__popper.v-popper__popper--shown .v-popper__wrapper{transform:scale(1)}.material-design-icon[data-v-6be9fa31]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.notecard[data-v-6be9fa31]{--note-card-icon-size: 20px;--note-card-padding: calc(2 * var(--default-grid-baseline));color:var(--color-main-text)!important;background-color:var(--note-background)!important;border-inline-start:var(--default-grid-baseline) solid var(--note-theme);border-radius:var(--border-radius-small);margin:1rem 0;padding:var(--note-card-padding);display:flex;flex-direction:row;gap:var(--note-card-padding)}.notecard__heading[data-v-6be9fa31]{font-size:var(--note-card-icon-size);font-weight:var(--font-weight-heading, 600)}.notecard__icon[data-v-6be9fa31]{color:var(--note-theme)}.notecard__icon--heading[data-v-6be9fa31]{font-size:var(--note-card-icon-size);margin-block:calc((1lh - 1em)/2) auto}.notecard--success[data-v-6be9fa31]{--note-background: var(--color-success);--note-theme: var(--color-success-text)}.notecard--info[data-v-6be9fa31]{--note-background: var(--color-info);--note-theme: var(--color-info-text)}.notecard--error[data-v-6be9fa31]{--note-background: var(--color-error);--note-theme: var(--color-error-text)}.notecard--warning[data-v-6be9fa31]{--note-background: var(--color-warning);--note-theme: var(--color-warning-text)}.notecard--legacy[data-v-6be9fa31]{background-color:color-mix(in srgb,var(--note-background),var(--color-main-background) 80%)!important;color:var(--color-main-text)!important}.vue-password-confirmation{display:flex;flex-direction:column;margin-inline:6px;margin-block-end:6px;gap:10px 0}.vue-password-confirmation__form{display:flex;flex-direction:column;gap:8px 0;padding:2px}.vue-password-confirmation__submit{align-self:end}.section__grid[data-v-4a31423d]{display:grid;gap:40px;grid-auto-flow:row;grid-template-columns:repeat(auto-fit,minmax(320px,400px));margin-bottom:40px}.section__grid .section__description[data-v-4a31423d]{display:inline-block;min-height:44px;margin-left:26px}.section__status[data-v-4a31423d]{display:flex;gap:0 14px}.section__status .section__loading[data-v-4a31423d]{margin-left:6px}.section__status .settings-hint[data-v-4a31423d]{margin:auto 0}.section__modal .section__icon[data-v-4a31423d]{height:40px}.section__modal .section__modal-action[data-v-4a31423d]{display:flex;flex-direction:column}.section__modal .section__modal-button[data-v-4a31423d]{margin:20px auto 0}.section__status[data-v-54770675]{display:flex;gap:0 14px;margin-top:20px}.section__status .section__loading[data-v-54770675]{margin-left:6px}.section__status .settings-hint[data-v-54770675]{margin:auto 0}.section__picker-error[data-v-54770675]{display:inline-block;margin:20px 0}.section__modal .section__icon[data-v-54770675]{height:40px}.section__modal .section__modal-action[data-v-54770675]{display:flex;flex-direction:column}.section__modal .section__modal-button[data-v-54770675]{margin:20px auto 0} diff --git a/css/user_migration-personalSettings.css b/css/user_migration-personalSettings.css deleted file mode 100644 index e053b23d..00000000 --- a/css/user_migration-personalSettings.css +++ /dev/null @@ -1,2 +0,0 @@ -/* extracted by css-entry-points-plugin */ -@import './personalSettings-i1_v3FZk.chunk.css'; \ No newline at end of file diff --git a/js/af-BXiFDzzM.chunk.mjs b/js/af-BXiFDzzM.chunk.mjs deleted file mode 100644 index 7095221f..00000000 --- a/js/af-BXiFDzzM.chunk.mjs +++ /dev/null @@ -1,3 +0,0 @@ -/*! third party licenses: js/vendor.LICENSE.txt */ -import{b as o,c as t,d as r,e as u}from"./index-Cr1DLTt7.chunk.mjs";import"./user_migration-personalSettings.mjs";import"./be-tarask-CzbVxLq7.chunk.mjs";const m={lessThanXSeconds:{one:"minder as 'n sekonde",other:"minder as {{count}} sekondes"},xSeconds:{one:"1 sekonde",other:"{{count}} sekondes"},halfAMinute:"'n halwe minuut",lessThanXMinutes:{one:"minder as 'n minuut",other:"minder as {{count}} minute"},xMinutes:{one:"'n minuut",other:"{{count}} minute"},aboutXHours:{one:"ongeveer 1 uur",other:"ongeveer {{count}} ure"},xHours:{one:"1 uur",other:"{{count}} ure"},xDays:{one:"1 dag",other:"{{count}} dae"},aboutXWeeks:{one:"ongeveer 1 week",other:"ongeveer {{count}} weke"},xWeeks:{one:"1 week",other:"{{count}} weke"},aboutXMonths:{one:"ongeveer 1 maand",other:"ongeveer {{count}} maande"},xMonths:{one:"1 maand",other:"{{count}} maande"},aboutXYears:{one:"ongeveer 1 jaar",other:"ongeveer {{count}} jaar"},xYears:{one:"1 jaar",other:"{{count}} jaar"},overXYears:{one:"meer as 1 jaar",other:"meer as {{count}} jaar"},almostXYears:{one:"byna 1 jaar",other:"byna {{count}} jaar"}},s=(e,a,n)=>{let i;const d=m[e];return typeof d=="string"?i=d:a===1?i=d.one:i=d.other.replace("{{count}}",String(a)),n?.addSuffix?n.comparison&&n.comparison>0?"oor "+i:i+" gelede":i},g={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"yyyy/MM/dd"},l={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},h={full:"{{date}} 'om' {{time}}",long:"{{date}} 'om' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},v={date:o({formats:g,defaultWidth:"full"}),time:o({formats:l,defaultWidth:"full"}),dateTime:o({formats:h,defaultWidth:"full"})},f={lastWeek:"'verlede' eeee 'om' p",yesterday:"'gister om' p",today:"'vandag om' p",tomorrow:"'môre om' p",nextWeek:"eeee 'om' p",other:"P"},c=(e,a,n,i)=>f[e],b={narrow:["vC","nC"],abbreviated:["vC","nC"],wide:["voor Christus","na Christus"]},w={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1ste kwartaal","2de kwartaal","3de kwartaal","4de kwartaal"]},M={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],wide:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"]},y={narrow:["S","M","D","W","D","V","S"],short:["So","Ma","Di","Wo","Do","Vr","Sa"],abbreviated:["Son","Maa","Din","Woe","Don","Vry","Sat"],wide:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"]},p={narrow:{am:"vm",pm:"nm",midnight:"middernag",noon:"middaguur",morning:"oggend",afternoon:"middag",evening:"laat middag",night:"aand"},abbreviated:{am:"vm",pm:"nm",midnight:"middernag",noon:"middaguur",morning:"oggend",afternoon:"middag",evening:"laat middag",night:"aand"},wide:{am:"vm",pm:"nm",midnight:"middernag",noon:"middaguur",morning:"oggend",afternoon:"middag",evening:"laat middag",night:"aand"}},W={narrow:{am:"vm",pm:"nm",midnight:"middernag",noon:"uur die middag",morning:"uur die oggend",afternoon:"uur die middag",evening:"uur die aand",night:"uur die aand"},abbreviated:{am:"vm",pm:"nm",midnight:"middernag",noon:"uur die middag",morning:"uur die oggend",afternoon:"uur die middag",evening:"uur die aand",night:"uur die aand"},wide:{am:"vm",pm:"nm",midnight:"middernag",noon:"uur die middag",morning:"uur die oggend",afternoon:"uur die middag",evening:"uur die aand",night:"uur die aand"}},S=e=>{const a=Number(e),n=a%100;if(n<20)switch(n){case 1:case 8:return a+"ste";default:return a+"de"}return a+"ste"},D={ordinalNumber:S,era:t({values:b,defaultWidth:"wide"}),quarter:t({values:w,defaultWidth:"wide",argumentCallback:e=>e-1}),month:t({values:M,defaultWidth:"wide"}),day:t({values:y,defaultWidth:"wide"}),dayPeriod:t({values:p,defaultWidth:"wide",formattingValues:W,defaultFormattingWidth:"wide"})},k=/^(\d+)(ste|de)?/i,J=/\d+/i,P={narrow:/^([vn]\.? ?C\.?)/,abbreviated:/^([vn]\. ?C\.?)/,wide:/^((voor|na) Christus)/},A={any:[/^v/,/^n/]},C={narrow:/^[1234]/i,abbreviated:/^K[1234]/i,wide:/^[1234](st|d)e kwartaal/i},x={any:[/1/i,/2/i,/3/i,/4/i]},H={narrow:/^[jfmasond]/i,abbreviated:/^(Jan|Feb|Mrt|Apr|Mei|Jun|Jul|Aug|Sep|Okt|Nov|Dec)\.?/i,wide:/^(Januarie|Februarie|Maart|April|Mei|Junie|Julie|Augustus|September|Oktober|November|Desember)/i},N={narrow:[/^J/i,/^F/i,/^M/i,/^A/i,/^M/i,/^J/i,/^J/i,/^A/i,/^S/i,/^O/i,/^N/i,/^D/i],any:[/^Jan/i,/^Feb/i,/^Mrt/i,/^Apr/i,/^Mei/i,/^Jun/i,/^Jul/i,/^Aug/i,/^Sep/i,/^Okt/i,/^Nov/i,/^Dec/i]},V={narrow:/^[smdwv]/i,short:/^(So|Ma|Di|Wo|Do|Vr|Sa)/i,abbreviated:/^(Son|Maa|Din|Woe|Don|Vry|Sat)/i,wide:/^(Sondag|Maandag|Dinsdag|Woensdag|Donderdag|Vrydag|Saterdag)/i},j={narrow:[/^S/i,/^M/i,/^D/i,/^W/i,/^D/i,/^V/i,/^S/i],any:[/^So/i,/^Ma/i,/^Di/i,/^Wo/i,/^Do/i,/^Vr/i,/^Sa/i]},F={any:/^(vm|nm|middernag|(?:uur )?die (oggend|middag|aand))/i},O={any:{am:/^vm/i,pm:/^nm/i,midnight:/^middernag/i,noon:/^middaguur/i,morning:/oggend/i,afternoon:/middag/i,evening:/laat middag/i,night:/aand/i}},X={ordinalNumber:u({matchPattern:k,parsePattern:J,valueCallback:e=>parseInt(e,10)}),era:r({matchPatterns:P,defaultMatchWidth:"wide",parsePatterns:A,defaultParseWidth:"any"}),quarter:r({matchPatterns:C,defaultMatchWidth:"wide",parsePatterns:x,defaultParseWidth:"any",valueCallback:e=>e+1}),month:r({matchPatterns:H,defaultMatchWidth:"wide",parsePatterns:N,defaultParseWidth:"any"}),day:r({matchPatterns:V,defaultMatchWidth:"wide",parsePatterns:j,defaultParseWidth:"any"}),dayPeriod:r({matchPatterns:F,defaultMatchWidth:"any",parsePatterns:O,defaultParseWidth:"any"})},Y={code:"af",formatDistance:s,formatLong:v,formatRelative:c,localize:D,match:X,options:{weekStartsOn:0,firstWeekContainsDate:1}};export{Y as af}; -//# sourceMappingURL=af-BXiFDzzM.chunk.mjs.map diff --git a/js/af-BXiFDzzM.chunk.mjs.license b/js/af-BXiFDzzM.chunk.mjs.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/af-BXiFDzzM.chunk.mjs.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/af-BXiFDzzM.chunk.mjs.map b/js/af-BXiFDzzM.chunk.mjs.map deleted file mode 100644 index 386327a9..00000000 --- a/js/af-BXiFDzzM.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"af-BXiFDzzM.chunk.mjs","sources":["../node_modules/date-fns/locale/af/_lib/formatDistance.js","../node_modules/date-fns/locale/af/_lib/formatLong.js","../node_modules/date-fns/locale/af/_lib/formatRelative.js","../node_modules/date-fns/locale/af/_lib/localize.js","../node_modules/date-fns/locale/af/_lib/match.js","../node_modules/date-fns/locale/af.js"],"sourcesContent":["const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"minder as 'n sekonde\",\n other: \"minder as {{count}} sekondes\",\n },\n\n xSeconds: {\n one: \"1 sekonde\",\n other: \"{{count}} sekondes\",\n },\n\n halfAMinute: \"'n halwe minuut\",\n\n lessThanXMinutes: {\n one: \"minder as 'n minuut\",\n other: \"minder as {{count}} minute\",\n },\n\n xMinutes: {\n one: \"'n minuut\",\n other: \"{{count}} minute\",\n },\n\n aboutXHours: {\n one: \"ongeveer 1 uur\",\n other: \"ongeveer {{count}} ure\",\n },\n\n xHours: {\n one: \"1 uur\",\n other: \"{{count}} ure\",\n },\n\n xDays: {\n one: \"1 dag\",\n other: \"{{count}} dae\",\n },\n\n aboutXWeeks: {\n one: \"ongeveer 1 week\",\n other: \"ongeveer {{count}} weke\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weke\",\n },\n\n aboutXMonths: {\n one: \"ongeveer 1 maand\",\n other: \"ongeveer {{count}} maande\",\n },\n\n xMonths: {\n one: \"1 maand\",\n other: \"{{count}} maande\",\n },\n\n aboutXYears: {\n one: \"ongeveer 1 jaar\",\n other: \"ongeveer {{count}} jaar\",\n },\n\n xYears: {\n one: \"1 jaar\",\n other: \"{{count}} jaar\",\n },\n\n overXYears: {\n one: \"meer as 1 jaar\",\n other: \"meer as {{count}} jaar\",\n },\n\n almostXYears: {\n one: \"byna 1 jaar\",\n other: \"byna {{count}} jaar\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"oor \" + result;\n } else {\n return result + \" gelede\";\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, d MMMM yyyy\",\n long: \"d MMMM yyyy\",\n medium: \"d MMM yyyy\",\n short: \"yyyy/MM/dd\",\n};\n\nconst timeFormats = {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'om' {{time}}\",\n long: \"{{date}} 'om' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'verlede' eeee 'om' p\",\n yesterday: \"'gister om' p\",\n today: \"'vandag om' p\",\n tomorrow: \"'môre om' p\",\n nextWeek: \"eeee 'om' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"vC\", \"nC\"],\n abbreviated: [\"vC\", \"nC\"],\n wide: [\"voor Christus\", \"na Christus\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"K1\", \"K2\", \"K3\", \"K4\"],\n wide: [\"1ste kwartaal\", \"2de kwartaal\", \"3de kwartaal\", \"4de kwartaal\"],\n};\n\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mrt\",\n \"Apr\",\n \"Mei\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Des\",\n ],\n\n wide: [\n \"Januarie\",\n \"Februarie\",\n \"Maart\",\n \"April\",\n \"Mei\",\n \"Junie\",\n \"Julie\",\n \"Augustus\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Desember\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"D\", \"W\", \"D\", \"V\", \"S\"],\n short: [\"So\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Sa\"],\n abbreviated: [\"Son\", \"Maa\", \"Din\", \"Woe\", \"Don\", \"Vry\", \"Sat\"],\n wide: [\n \"Sondag\",\n \"Maandag\",\n \"Dinsdag\",\n \"Woensdag\",\n \"Donderdag\",\n \"Vrydag\",\n \"Saterdag\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"vm\",\n pm: \"nm\",\n midnight: \"middernag\",\n noon: \"middaguur\",\n morning: \"oggend\",\n afternoon: \"middag\",\n evening: \"laat middag\",\n night: \"aand\",\n },\n abbreviated: {\n am: \"vm\",\n pm: \"nm\",\n midnight: \"middernag\",\n noon: \"middaguur\",\n morning: \"oggend\",\n afternoon: \"middag\",\n evening: \"laat middag\",\n night: \"aand\",\n },\n wide: {\n am: \"vm\",\n pm: \"nm\",\n midnight: \"middernag\",\n noon: \"middaguur\",\n morning: \"oggend\",\n afternoon: \"middag\",\n evening: \"laat middag\",\n night: \"aand\",\n },\n};\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"vm\",\n pm: \"nm\",\n midnight: \"middernag\",\n noon: \"uur die middag\",\n morning: \"uur die oggend\",\n afternoon: \"uur die middag\",\n evening: \"uur die aand\",\n night: \"uur die aand\",\n },\n abbreviated: {\n am: \"vm\",\n pm: \"nm\",\n midnight: \"middernag\",\n noon: \"uur die middag\",\n morning: \"uur die oggend\",\n afternoon: \"uur die middag\",\n evening: \"uur die aand\",\n night: \"uur die aand\",\n },\n wide: {\n am: \"vm\",\n pm: \"nm\",\n midnight: \"middernag\",\n noon: \"uur die middag\",\n morning: \"uur die oggend\",\n afternoon: \"uur die middag\",\n evening: \"uur die aand\",\n night: \"uur die aand\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber) => {\n const number = Number(dirtyNumber);\n const rem100 = number % 100;\n if (rem100 < 20) {\n switch (rem100) {\n case 1:\n case 8:\n return number + \"ste\";\n default:\n return number + \"de\";\n }\n }\n return number + \"ste\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(ste|de)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^([vn]\\.? ?C\\.?)/,\n abbreviated: /^([vn]\\. ?C\\.?)/,\n wide: /^((voor|na) Christus)/,\n};\nconst parseEraPatterns = {\n any: [/^v/, /^n/],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^K[1234]/i,\n wide: /^[1234](st|d)e kwartaal/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(Jan|Feb|Mrt|Apr|Mei|Jun|Jul|Aug|Sep|Okt|Nov|Dec)\\.?/i,\n wide: /^(Januarie|Februarie|Maart|April|Mei|Junie|Julie|Augustus|September|Oktober|November|Desember)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^J/i,\n /^F/i,\n /^M/i,\n /^A/i,\n /^M/i,\n /^J/i,\n /^J/i,\n /^A/i,\n /^S/i,\n /^O/i,\n /^N/i,\n /^D/i,\n ],\n\n any: [\n /^Jan/i,\n /^Feb/i,\n /^Mrt/i,\n /^Apr/i,\n /^Mei/i,\n /^Jun/i,\n /^Jul/i,\n /^Aug/i,\n /^Sep/i,\n /^Okt/i,\n /^Nov/i,\n /^Dec/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smdwv]/i,\n short: /^(So|Ma|Di|Wo|Do|Vr|Sa)/i,\n abbreviated: /^(Son|Maa|Din|Woe|Don|Vry|Sat)/i,\n wide: /^(Sondag|Maandag|Dinsdag|Woensdag|Donderdag|Vrydag|Saterdag)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^S/i, /^M/i, /^D/i, /^W/i, /^D/i, /^V/i, /^S/i],\n any: [/^So/i, /^Ma/i, /^Di/i, /^Wo/i, /^Do/i, /^Vr/i, /^Sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n any: /^(vm|nm|middernag|(?:uur )?die (oggend|middag|aand))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^vm/i,\n pm: /^nm/i,\n midnight: /^middernag/i,\n noon: /^middaguur/i,\n morning: /oggend/i,\n afternoon: /middag/i,\n evening: /laat middag/i,\n night: /aand/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./af/_lib/formatDistance.js\";\nimport { formatLong } from \"./af/_lib/formatLong.js\";\nimport { formatRelative } from \"./af/_lib/formatRelative.js\";\nimport { localize } from \"./af/_lib/localize.js\";\nimport { match } from \"./af/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Afrikaans locale.\n * @language Afrikaans\n * @iso-639-2 afr\n * @author Marnus Weststrate [@marnusw](https://github.com/marnusw)\n */\nexport const af = {\n code: \"af\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default af;\n"],"names":["formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatRelativeLocale","formatRelative","_date","_baseDate","_options","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","af"],"mappings":";yJAAA,MAAMA,EAAuB,CAC3B,iBAAkB,CAChB,IAAK,uBACL,MAAO,8BACX,EAEE,SAAU,CACR,IAAK,YACL,MAAO,oBACX,EAEE,YAAa,kBAEb,iBAAkB,CAChB,IAAK,sBACL,MAAO,4BACX,EAEE,SAAU,CACR,IAAK,YACL,MAAO,kBACX,EAEE,YAAa,CACX,IAAK,iBACL,MAAO,wBACX,EAEE,OAAQ,CACN,IAAK,QACL,MAAO,eACX,EAEE,MAAO,CACL,IAAK,QACL,MAAO,eACX,EAEE,YAAa,CACX,IAAK,kBACL,MAAO,yBACX,EAEE,OAAQ,CACN,IAAK,SACL,MAAO,gBACX,EAEE,aAAc,CACZ,IAAK,mBACL,MAAO,2BACX,EAEE,QAAS,CACP,IAAK,UACL,MAAO,kBACX,EAEE,YAAa,CACX,IAAK,kBACL,MAAO,yBACX,EAEE,OAAQ,CACN,IAAK,SACL,MAAO,gBACX,EAEE,WAAY,CACV,IAAK,iBACL,MAAO,wBACX,EAEE,aAAc,CACZ,IAAK,cACL,MAAO,qBACX,CACA,EAEaC,EAAiB,CAACC,EAAOC,EAAOC,IAAY,CACvD,IAAIC,EAEJ,MAAMC,EAAaN,EAAqBE,CAAK,EAS7C,OARI,OAAOI,GAAe,SACxBD,EAASC,EACAH,IAAU,EACnBE,EAASC,EAAW,IAEpBD,EAASC,EAAW,MAAM,QAAQ,YAAa,OAAOH,CAAK,CAAC,EAG1DC,GAAS,UACPA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,OAASC,EAETA,EAAS,UAIbA,CACT,EClGME,EAAc,CAClB,KAAM,oBACN,KAAM,cACN,OAAQ,aACR,MAAO,YACT,EAEMC,EAAc,CAClB,KAAM,gBACN,KAAM,aACN,OAAQ,WACR,MAAO,OACT,EAEMC,EAAkB,CACtB,KAAM,yBACN,KAAM,yBACN,OAAQ,qBACR,MAAO,oBACT,EAEaC,EAAa,CACxB,KAAMC,EAAkB,CACtB,QAASJ,EACT,aAAc,MAClB,CAAG,EAED,KAAMI,EAAkB,CACtB,QAASH,EACT,aAAc,MAClB,CAAG,EAED,SAAUG,EAAkB,CAC1B,QAASF,EACT,aAAc,MAClB,CAAG,CACH,ECtCMG,EAAuB,CAC3B,SAAU,wBACV,UAAW,gBACX,MAAO,gBACP,SAAU,cACV,SAAU,cACV,MAAO,GACT,EAEaC,EAAiB,CAACX,EAAOY,EAAOC,EAAWC,IACtDJ,EAAqBV,CAAK,ECRtBe,EAAY,CAChB,OAAQ,CAAC,KAAM,IAAI,EACnB,YAAa,CAAC,KAAM,IAAI,EACxB,KAAM,CAAC,gBAAiB,aAAa,CACvC,EAEMC,EAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,gBAAiB,eAAgB,eAAgB,cAAc,CACxE,EAEMC,EAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACJ,EAEE,KAAM,CACJ,WACA,YACA,QACA,QACA,MACA,QACA,QACA,WACA,YACA,UACA,WACA,UACJ,CACA,EAEMC,EAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAChD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAC7D,KAAM,CACJ,SACA,UACA,UACA,WACA,YACA,SACA,UACJ,CACA,EAEMC,EAAkB,CACtB,OAAQ,CACN,GAAI,KACJ,GAAI,KACJ,SAAU,YACV,KAAM,YACN,QAAS,SACT,UAAW,SACX,QAAS,cACT,MAAO,MACX,EACE,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,YACV,KAAM,YACN,QAAS,SACT,UAAW,SACX,QAAS,cACT,MAAO,MACX,EACE,KAAM,CACJ,GAAI,KACJ,GAAI,KACJ,SAAU,YACV,KAAM,YACN,QAAS,SACT,UAAW,SACX,QAAS,cACT,MAAO,MACX,CACA,EACMC,EAA4B,CAChC,OAAQ,CACN,GAAI,KACJ,GAAI,KACJ,SAAU,YACV,KAAM,iBACN,QAAS,iBACT,UAAW,iBACX,QAAS,eACT,MAAO,cACX,EACE,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,YACV,KAAM,iBACN,QAAS,iBACT,UAAW,iBACX,QAAS,eACT,MAAO,cACX,EACE,KAAM,CACJ,GAAI,KACJ,GAAI,KACJ,SAAU,YACV,KAAM,iBACN,QAAS,iBACT,UAAW,iBACX,QAAS,eACT,MAAO,cACX,CACA,EAEMC,EAAiBC,GAAgB,CACrC,MAAMC,EAAS,OAAOD,CAAW,EAC3BE,EAASD,EAAS,IACxB,GAAIC,EAAS,GACX,OAAQA,EAAM,CACZ,IAAK,GACL,IAAK,GACH,OAAOD,EAAS,MAClB,QACE,OAAOA,EAAS,IACxB,CAEE,OAAOA,EAAS,KAClB,EAEaE,EAAW,CACtB,cAAAJ,EAEA,IAAKK,EAAgB,CACnB,OAAQX,EACR,aAAc,MAClB,CAAG,EAED,QAASW,EAAgB,CACvB,OAAQV,EACR,aAAc,OACd,iBAAmBW,GAAYA,EAAU,CAC7C,CAAG,EAED,MAAOD,EAAgB,CACrB,OAAQT,EACR,aAAc,MAClB,CAAG,EAED,IAAKS,EAAgB,CACnB,OAAQR,EACR,aAAc,MAClB,CAAG,EAED,UAAWQ,EAAgB,CACzB,OAAQP,EACR,aAAc,OACd,iBAAkBC,EAClB,uBAAwB,MAC5B,CAAG,CACH,ECzKMQ,EAA4B,mBAC5BC,EAA4B,OAE5BC,EAAmB,CACvB,OAAQ,mBACR,YAAa,kBACb,KAAM,uBACR,EACMC,EAAmB,CACvB,IAAK,CAAC,KAAM,IAAI,CAClB,EAEMC,EAAuB,CAC3B,OAAQ,WACR,YAAa,YACb,KAAM,0BACR,EACMC,EAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EAEMC,EAAqB,CACzB,OAAQ,eACR,YAAa,yDACb,KAAM,iGACR,EACMC,EAAqB,CACzB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACJ,EAEE,IAAK,CACH,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACJ,CACA,EAEMC,EAAmB,CACvB,OAAQ,YACR,MAAO,2BACP,YAAa,kCACb,KAAM,+DACR,EACMC,EAAmB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EACxD,IAAK,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAM,CAC9D,EAEMC,EAAyB,CAC7B,IAAK,uDACP,EACMC,EAAyB,CAC7B,IAAK,CACH,GAAI,OACJ,GAAI,OACJ,SAAU,cACV,KAAM,cACN,QAAS,UACT,UAAW,UACX,QAAS,eACT,MAAO,OACX,CACA,EAEaC,EAAQ,CACnB,cAAeC,EAAoB,CACjC,aAAcb,EACd,aAAcC,EACd,cAAgBa,GAAU,SAASA,EAAO,EAAE,CAChD,CAAG,EAED,IAAKC,EAAa,CAChB,cAAeb,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,QAASY,EAAa,CACpB,cAAeX,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,MACnB,cAAgBW,GAAUA,EAAQ,CACtC,CAAG,EAED,MAAOD,EAAa,CAClB,cAAeT,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,IAAKQ,EAAa,CAChB,cAAeP,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,UAAWM,EAAa,CACtB,cAAeL,EACf,kBAAmB,MACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,CACH,ECrHaM,EAAK,CAChB,KAAM,KACN,eAAgB9C,EAChB,WAAYS,EACZ,eAAgBG,EAChB,SAAUc,EACV,MAAOe,EACP,QAAS,CACP,aAAc,EACd,sBAAuB,CAC3B,CACA","x_google_ignoreList":[0,1,2,3,4,5]} \ No newline at end of file diff --git a/js/af-BXiFDzzM.chunk.mjs.map.license b/js/af-BXiFDzzM.chunk.mjs.map.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/af-BXiFDzzM.chunk.mjs.map.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-3qmvQ7om.chunk.mjs b/js/ar-3qmvQ7om.chunk.mjs deleted file mode 100644 index 71a8847d..00000000 --- a/js/ar-3qmvQ7om.chunk.mjs +++ /dev/null @@ -1,3 +0,0 @@ -/*! third party licenses: js/vendor.LICENSE.txt */ -import{b as r,c as o,d as a,e as A}from"./index-Cr1DLTt7.chunk.mjs";import"./user_migration-personalSettings.mjs";import"./be-tarask-CzbVxLq7.chunk.mjs";const d={lessThanXSeconds:{one:"أقل من ثانية",two:"أقل من ثانيتين",threeToTen:"أقل من {{count}} ثواني",other:"أقل من {{count}} ثانية"},xSeconds:{one:"ثانية واحدة",two:"ثانيتان",threeToTen:"{{count}} ثواني",other:"{{count}} ثانية"},halfAMinute:"نصف دقيقة",lessThanXMinutes:{one:"أقل من دقيقة",two:"أقل من دقيقتين",threeToTen:"أقل من {{count}} دقائق",other:"أقل من {{count}} دقيقة"},xMinutes:{one:"دقيقة واحدة",two:"دقيقتان",threeToTen:"{{count}} دقائق",other:"{{count}} دقيقة"},aboutXHours:{one:"ساعة واحدة تقريباً",two:"ساعتين تقريبا",threeToTen:"{{count}} ساعات تقريباً",other:"{{count}} ساعة تقريباً"},xHours:{one:"ساعة واحدة",two:"ساعتان",threeToTen:"{{count}} ساعات",other:"{{count}} ساعة"},xDays:{one:"يوم واحد",two:"يومان",threeToTen:"{{count}} أيام",other:"{{count}} يوم"},aboutXWeeks:{one:"أسبوع واحد تقريبا",two:"أسبوعين تقريبا",threeToTen:"{{count}} أسابيع تقريبا",other:"{{count}} أسبوعا تقريبا"},xWeeks:{one:"أسبوع واحد",two:"أسبوعان",threeToTen:"{{count}} أسابيع",other:"{{count}} أسبوعا"},aboutXMonths:{one:"شهر واحد تقريباً",two:"شهرين تقريبا",threeToTen:"{{count}} أشهر تقريبا",other:"{{count}} شهرا تقريباً"},xMonths:{one:"شهر واحد",two:"شهران",threeToTen:"{{count}} أشهر",other:"{{count}} شهرا"},aboutXYears:{one:"سنة واحدة تقريباً",two:"سنتين تقريبا",threeToTen:"{{count}} سنوات تقريباً",other:"{{count}} سنة تقريباً"},xYears:{one:"سنة واحد",two:"سنتان",threeToTen:"{{count}} سنوات",other:"{{count}} سنة"},overXYears:{one:"أكثر من سنة",two:"أكثر من سنتين",threeToTen:"أكثر من {{count}} سنوات",other:"أكثر من {{count}} سنة"},almostXYears:{one:"ما يقارب سنة واحدة",two:"ما يقارب سنتين",threeToTen:"ما يقارب {{count}} سنوات",other:"ما يقارب {{count}} سنة"}},h=(u,n,i)=>{const t=d[u];let e;return typeof t=="string"?e=t:n===1?e=t.one:n===2?e=t.two:n<=10?e=t.threeToTen.replace("{{count}}",String(n)):e=t.other.replace("{{count}}",String(n)),i?.addSuffix?i.comparison&&i.comparison>0?"خلال "+e:"منذ "+e:e},s={full:"EEEE، do MMMM y",long:"do MMMM y",medium:"d MMM y",short:"dd/MM/yyyy"},m={full:"HH:mm:ss",long:"HH:mm:ss",medium:"HH:mm:ss",short:"HH:mm"},l={full:"{{date}} 'عند الساعة' {{time}}",long:"{{date}} 'عند الساعة' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},c={date:r({formats:s,defaultWidth:"full"}),time:r({formats:m,defaultWidth:"full"}),dateTime:r({formats:l,defaultWidth:"full"})},w={lastWeek:"eeee 'الماضي عند الساعة' p",yesterday:"'الأمس عند الساعة' p",today:"'اليوم عند الساعة' p",tomorrow:"'غدا عند الساعة' p",nextWeek:"eeee 'القادم عند الساعة' p",other:"P"},F=u=>w[u],f={narrow:["ق","ب"],abbreviated:["ق.م.","ب.م."],wide:["قبل الميلاد","بعد الميلاد"]},g={narrow:["1","2","3","4"],abbreviated:["ر1","ر2","ر3","ر4"],wide:["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"]},T={narrow:["ي","ف","م","أ","م","ي","ي","أ","س","أ","ن","د"],abbreviated:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],wide:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"]},B={narrow:["ح","ن","ث","ر","خ","ج","س"],short:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],abbreviated:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],wide:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},b={narrow:{am:"ص",pm:"م",morning:"الصباح",noon:"الظهر",afternoon:"بعد الظهر",evening:"المساء",night:"الليل",midnight:"منتصف الليل"},abbreviated:{am:"ص",pm:"م",morning:"الصباح",noon:"الظهر",afternoon:"بعد الظهر",evening:"المساء",night:"الليل",midnight:"منتصف الليل"},wide:{am:"ص",pm:"م",morning:"الصباح",noon:"الظهر",afternoon:"بعد الظهر",evening:"المساء",night:"الليل",midnight:"منتصف الليل"}},p={narrow:{am:"ص",pm:"م",morning:"في الصباح",noon:"الظهر",afternoon:"بعد الظهر",evening:"في المساء",night:"في الليل",midnight:"منتصف الليل"},abbreviated:{am:"ص",pm:"م",morning:"في الصباح",noon:"الظهر",afternoon:"بعد الظهر",evening:"في المساء",night:"في الليل",midnight:"منتصف الليل"},wide:{am:"ص",pm:"م",morning:"في الصباح",noon:"الظهر",afternoon:"بعد الظهر",evening:"في المساء",night:"في الليل",midnight:"منتصف الليل"}},y=u=>String(u),v={ordinalNumber:y,era:o({values:f,defaultWidth:"wide"}),quarter:o({values:g,defaultWidth:"wide",argumentCallback:u=>u-1}),month:o({values:T,defaultWidth:"wide"}),day:o({values:B,defaultWidth:"wide"}),dayPeriod:o({values:b,defaultWidth:"wide",formattingValues:p,defaultFormattingWidth:"wide"})},D=/^(\d+)(th|st|nd|rd)?/i,W=/\d+/i,M={narrow:/[قب]/,abbreviated:/[قب]\.م\./,wide:/(قبل|بعد) الميلاد/},P={any:[/قبل/,/بعد/]},x={narrow:/^[1234]/i,abbreviated:/ر[1234]/,wide:/الربع (الأول|الثاني|الثالث|الرابع)/},H={any:[/1/i,/2/i,/3/i,/4/i]},k={narrow:/^[أيفمسند]/,abbreviated:/^(يناير|فبراير|مارس|أبريل|مايو|يونيو|يوليو|أغسطس|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/,wide:/^(يناير|فبراير|مارس|أبريل|مايو|يونيو|يوليو|أغسطس|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/},C={narrow:[/^ي/i,/^ف/i,/^م/i,/^أ/i,/^م/i,/^ي/i,/^ي/i,/^أ/i,/^س/i,/^أ/i,/^ن/i,/^د/i],any:[/^يناير/i,/^فبراير/i,/^مارس/i,/^أبريل/i,/^مايو/i,/^يونيو/i,/^يوليو/i,/^أغسطس/i,/^سبتمبر/i,/^أكتوبر/i,/^نوفمبر/i,/^ديسمبر/i]},E={narrow:/^[حنثرخجس]/i,short:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,abbreviated:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,wide:/^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i},X={narrow:[/^ح/i,/^ن/i,/^ث/i,/^ر/i,/^خ/i,/^ج/i,/^س/i],wide:[/^الأحد/i,/^الاثنين/i,/^الثلاثاء/i,/^الأربعاء/i,/^الخميس/i,/^الجمعة/i,/^السبت/i],any:[/^أح/i,/^اث/i,/^ث/i,/^أر/i,/^خ/i,/^ج/i,/^س/i]},S={narrow:/^(ص|م|منتصف الليل|الظهر|بعد الظهر|في الصباح|في المساء|في الليل)/,any:/^(ص|م|منتصف الليل|الظهر|بعد الظهر|في الصباح|في المساء|في الليل)/},Y={any:{am:/^ص/,pm:/^م/,midnight:/منتصف الليل/,noon:/الظهر/,afternoon:/بعد الظهر/,morning:/في الصباح/,evening:/في المساء/,night:/في الليل/}},q={ordinalNumber:A({matchPattern:D,parsePattern:W,valueCallback:u=>parseInt(u,10)}),era:a({matchPatterns:M,defaultMatchWidth:"wide",parsePatterns:P,defaultParseWidth:"any"}),quarter:a({matchPatterns:x,defaultMatchWidth:"wide",parsePatterns:H,defaultParseWidth:"any",valueCallback:u=>u+1}),month:a({matchPatterns:k,defaultMatchWidth:"wide",parsePatterns:C,defaultParseWidth:"any"}),day:a({matchPatterns:E,defaultMatchWidth:"wide",parsePatterns:X,defaultParseWidth:"any"}),dayPeriod:a({matchPatterns:S,defaultMatchWidth:"any",parsePatterns:Y,defaultParseWidth:"any"})},O={code:"ar",formatDistance:h,formatLong:c,formatRelative:F,localize:v,match:q,options:{weekStartsOn:6,firstWeekContainsDate:1}};export{O as ar}; -//# sourceMappingURL=ar-3qmvQ7om.chunk.mjs.map diff --git a/js/ar-3qmvQ7om.chunk.mjs.license b/js/ar-3qmvQ7om.chunk.mjs.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-3qmvQ7om.chunk.mjs.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-3qmvQ7om.chunk.mjs.map b/js/ar-3qmvQ7om.chunk.mjs.map deleted file mode 100644 index 601a079b..00000000 --- a/js/ar-3qmvQ7om.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ar-3qmvQ7om.chunk.mjs","sources":["../node_modules/date-fns/locale/ar/_lib/formatDistance.js","../node_modules/date-fns/locale/ar/_lib/formatLong.js","../node_modules/date-fns/locale/ar/_lib/formatRelative.js","../node_modules/date-fns/locale/ar/_lib/localize.js","../node_modules/date-fns/locale/ar/_lib/match.js","../node_modules/date-fns/locale/ar.js"],"sourcesContent":["const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"أقل من ثانية\",\n two: \"أقل من ثانيتين\",\n threeToTen: \"أقل من {{count}} ثواني\",\n other: \"أقل من {{count}} ثانية\",\n },\n\n xSeconds: {\n one: \"ثانية واحدة\",\n two: \"ثانيتان\",\n threeToTen: \"{{count}} ثواني\",\n other: \"{{count}} ثانية\",\n },\n\n halfAMinute: \"نصف دقيقة\",\n\n lessThanXMinutes: {\n one: \"أقل من دقيقة\",\n two: \"أقل من دقيقتين\",\n threeToTen: \"أقل من {{count}} دقائق\",\n other: \"أقل من {{count}} دقيقة\",\n },\n\n xMinutes: {\n one: \"دقيقة واحدة\",\n two: \"دقيقتان\",\n threeToTen: \"{{count}} دقائق\",\n other: \"{{count}} دقيقة\",\n },\n\n aboutXHours: {\n one: \"ساعة واحدة تقريباً\",\n two: \"ساعتين تقريبا\",\n threeToTen: \"{{count}} ساعات تقريباً\",\n other: \"{{count}} ساعة تقريباً\",\n },\n\n xHours: {\n one: \"ساعة واحدة\",\n two: \"ساعتان\",\n threeToTen: \"{{count}} ساعات\",\n other: \"{{count}} ساعة\",\n },\n\n xDays: {\n one: \"يوم واحد\",\n two: \"يومان\",\n threeToTen: \"{{count}} أيام\",\n other: \"{{count}} يوم\",\n },\n\n aboutXWeeks: {\n one: \"أسبوع واحد تقريبا\",\n two: \"أسبوعين تقريبا\",\n threeToTen: \"{{count}} أسابيع تقريبا\",\n other: \"{{count}} أسبوعا تقريبا\",\n },\n\n xWeeks: {\n one: \"أسبوع واحد\",\n two: \"أسبوعان\",\n threeToTen: \"{{count}} أسابيع\",\n other: \"{{count}} أسبوعا\",\n },\n\n aboutXMonths: {\n one: \"شهر واحد تقريباً\",\n two: \"شهرين تقريبا\",\n threeToTen: \"{{count}} أشهر تقريبا\",\n other: \"{{count}} شهرا تقريباً\",\n },\n\n xMonths: {\n one: \"شهر واحد\",\n two: \"شهران\",\n threeToTen: \"{{count}} أشهر\",\n other: \"{{count}} شهرا\",\n },\n\n aboutXYears: {\n one: \"سنة واحدة تقريباً\",\n two: \"سنتين تقريبا\",\n threeToTen: \"{{count}} سنوات تقريباً\",\n other: \"{{count}} سنة تقريباً\",\n },\n\n xYears: {\n one: \"سنة واحد\",\n two: \"سنتان\",\n threeToTen: \"{{count}} سنوات\",\n other: \"{{count}} سنة\",\n },\n\n overXYears: {\n one: \"أكثر من سنة\",\n two: \"أكثر من سنتين\",\n threeToTen: \"أكثر من {{count}} سنوات\",\n other: \"أكثر من {{count}} سنة\",\n },\n\n almostXYears: {\n one: \"ما يقارب سنة واحدة\",\n two: \"ما يقارب سنتين\",\n threeToTen: \"ما يقارب {{count}} سنوات\",\n other: \"ما يقارب {{count}} سنة\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n const usageGroup = formatDistanceLocale[token];\n let result;\n if (typeof usageGroup === \"string\") {\n result = usageGroup;\n } else if (count === 1) {\n result = usageGroup.one;\n } else if (count === 2) {\n result = usageGroup.two;\n } else if (count <= 10) {\n result = usageGroup.threeToTen.replace(\"{{count}}\", String(count));\n } else {\n result = usageGroup.other.replace(\"{{count}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"خلال \" + result;\n } else {\n return \"منذ \" + result;\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE، do MMMM y\",\n long: \"do MMMM y\",\n medium: \"d MMM y\",\n short: \"dd/MM/yyyy\",\n};\n\nconst timeFormats = {\n full: \"HH:mm:ss\",\n long: \"HH:mm:ss\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'عند الساعة' {{time}}\",\n long: \"{{date}} 'عند الساعة' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"eeee 'الماضي عند الساعة' p\",\n yesterday: \"'الأمس عند الساعة' p\",\n today: \"'اليوم عند الساعة' p\",\n tomorrow: \"'غدا عند الساعة' p\",\n nextWeek: \"eeee 'القادم عند الساعة' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token) => formatRelativeLocale[token];\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"ق\", \"ب\"],\n abbreviated: [\"ق.م.\", \"ب.م.\"],\n wide: [\"قبل الميلاد\", \"بعد الميلاد\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"ر1\", \"ر2\", \"ر3\", \"ر4\"],\n wide: [\"الربع الأول\", \"الربع الثاني\", \"الربع الثالث\", \"الربع الرابع\"],\n};\n\nconst monthValues = {\n narrow: [\"ي\", \"ف\", \"م\", \"أ\", \"م\", \"ي\", \"ي\", \"أ\", \"س\", \"أ\", \"ن\", \"د\"],\n abbreviated: [\n \"يناير\",\n \"فبراير\",\n \"مارس\",\n \"أبريل\",\n \"مايو\",\n \"يونيو\",\n \"يوليو\",\n \"أغسطس\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n ],\n\n wide: [\n \"يناير\",\n \"فبراير\",\n \"مارس\",\n \"أبريل\",\n \"مايو\",\n \"يونيو\",\n \"يوليو\",\n \"أغسطس\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"ح\", \"ن\", \"ث\", \"ر\", \"خ\", \"ج\", \"س\"],\n short: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n abbreviated: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n\n wide: [\n \"الأحد\",\n \"الاثنين\",\n \"الثلاثاء\",\n \"الأربعاء\",\n \"الخميس\",\n \"الجمعة\",\n \"السبت\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"م\",\n morning: \"الصباح\",\n noon: \"الظهر\",\n afternoon: \"بعد الظهر\",\n evening: \"المساء\",\n night: \"الليل\",\n midnight: \"منتصف الليل\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"م\",\n morning: \"الصباح\",\n noon: \"الظهر\",\n afternoon: \"بعد الظهر\",\n evening: \"المساء\",\n night: \"الليل\",\n midnight: \"منتصف الليل\",\n },\n wide: {\n am: \"ص\",\n pm: \"م\",\n morning: \"الصباح\",\n noon: \"الظهر\",\n afternoon: \"بعد الظهر\",\n evening: \"المساء\",\n night: \"الليل\",\n midnight: \"منتصف الليل\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"م\",\n morning: \"في الصباح\",\n noon: \"الظهر\",\n afternoon: \"بعد الظهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n midnight: \"منتصف الليل\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"م\",\n morning: \"في الصباح\",\n noon: \"الظهر\",\n afternoon: \"بعد الظهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n midnight: \"منتصف الليل\",\n },\n wide: {\n am: \"ص\",\n pm: \"م\",\n morning: \"في الصباح\",\n noon: \"الظهر\",\n afternoon: \"بعد الظهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n midnight: \"منتصف الليل\",\n },\n};\n\nconst ordinalNumber = (num) => String(num);\n\nexport const localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\nimport { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /[قب]/,\n abbreviated: /[قب]\\.م\\./,\n wide: /(قبل|بعد) الميلاد/,\n};\nconst parseEraPatterns = {\n any: [/قبل/, /بعد/],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /ر[1234]/,\n wide: /الربع (الأول|الثاني|الثالث|الرابع)/,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[أيفمسند]/,\n abbreviated:\n /^(يناير|فبراير|مارس|أبريل|مايو|يونيو|يوليو|أغسطس|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/,\n wide: /^(يناير|فبراير|مارس|أبريل|مايو|يونيو|يوليو|أغسطس|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^ي/i,\n /^ف/i,\n /^م/i,\n /^أ/i,\n /^م/i,\n /^ي/i,\n /^ي/i,\n /^أ/i,\n /^س/i,\n /^أ/i,\n /^ن/i,\n /^د/i,\n ],\n\n any: [\n /^يناير/i,\n /^فبراير/i,\n /^مارس/i,\n /^أبريل/i,\n /^مايو/i,\n /^يونيو/i,\n /^يوليو/i,\n /^أغسطس/i,\n /^سبتمبر/i,\n /^أكتوبر/i,\n /^نوفمبر/i,\n /^ديسمبر/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[حنثرخجس]/i,\n short: /^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,\n abbreviated: /^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,\n wide: /^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^ح/i, /^ن/i, /^ث/i, /^ر/i, /^خ/i, /^ج/i, /^س/i],\n wide: [\n /^الأحد/i,\n /^الاثنين/i,\n /^الثلاثاء/i,\n /^الأربعاء/i,\n /^الخميس/i,\n /^الجمعة/i,\n /^السبت/i,\n ],\n\n any: [/^أح/i, /^اث/i, /^ث/i, /^أر/i, /^خ/i, /^ج/i, /^س/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(ص|م|منتصف الليل|الظهر|بعد الظهر|في الصباح|في المساء|في الليل)/,\n any: /^(ص|م|منتصف الليل|الظهر|بعد الظهر|في الصباح|في المساء|في الليل)/,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^ص/,\n pm: /^م/,\n midnight: /منتصف الليل/,\n noon: /الظهر/,\n afternoon: /بعد الظهر/,\n morning: /في الصباح/,\n evening: /في المساء/,\n night: /في الليل/,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./ar/_lib/formatDistance.js\";\nimport { formatLong } from \"./ar/_lib/formatLong.js\";\nimport { formatRelative } from \"./ar/_lib/formatRelative.js\";\nimport { localize } from \"./ar/_lib/localize.js\";\nimport { match } from \"./ar/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Arabic locale (Modern Standard Arabic - Al-fussha).\n * @language Modern Standard Arabic\n * @iso-639-2 ara\n * @author Abdallah Hassan [@AbdallahAHO](https://github.com/AbdallahAHO)\n * @author Koussay Haj Kacem [@essana3](https://github.com/essana3)\n */\nexport const ar = {\n code: \"ar\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 6 /* Saturday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default ar;\n"],"names":["formatDistanceLocale","formatDistance","token","count","options","usageGroup","result","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatRelativeLocale","formatRelative","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","num","localize","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","ar"],"mappings":";yJAAA,MAAMA,EAAuB,CAC3B,iBAAkB,CAChB,IAAK,eACL,IAAK,iBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,cACL,IAAK,UACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,YAEb,iBAAkB,CAChB,IAAK,eACL,IAAK,iBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,cACL,IAAK,UACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,CACX,IAAK,qBACL,IAAK,gBACL,WAAY,0BACZ,MAAO,wBACX,EAEE,OAAQ,CACN,IAAK,aACL,IAAK,SACL,WAAY,kBACZ,MAAO,gBACX,EAEE,MAAO,CACL,IAAK,WACL,IAAK,QACL,WAAY,iBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,oBACL,IAAK,iBACL,WAAY,0BACZ,MAAO,yBACX,EAEE,OAAQ,CACN,IAAK,aACL,IAAK,UACL,WAAY,mBACZ,MAAO,kBACX,EAEE,aAAc,CACZ,IAAK,mBACL,IAAK,eACL,WAAY,wBACZ,MAAO,wBACX,EAEE,QAAS,CACP,IAAK,WACL,IAAK,QACL,WAAY,iBACZ,MAAO,gBACX,EAEE,YAAa,CACX,IAAK,oBACL,IAAK,eACL,WAAY,0BACZ,MAAO,uBACX,EAEE,OAAQ,CACN,IAAK,WACL,IAAK,QACL,WAAY,kBACZ,MAAO,eACX,EAEE,WAAY,CACV,IAAK,cACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,EAEE,aAAc,CACZ,IAAK,qBACL,IAAK,iBACL,WAAY,2BACZ,MAAO,wBACX,CACA,EAEaC,EAAiB,CAACC,EAAOC,EAAOC,IAAY,CACvD,MAAMC,EAAaL,EAAqBE,CAAK,EAC7C,IAAII,EAaJ,OAZI,OAAOD,GAAe,SACxBC,EAASD,EACAF,IAAU,EACnBG,EAASD,EAAW,IACXF,IAAU,EACnBG,EAASD,EAAW,IACXF,GAAS,GAClBG,EAASD,EAAW,WAAW,QAAQ,YAAa,OAAOF,CAAK,CAAC,EAEjEG,EAASD,EAAW,MAAM,QAAQ,YAAa,OAAOF,CAAK,CAAC,EAG1DC,GAAS,UACPA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,QAAUE,EAEV,OAASA,EAIbA,CACT,ECnIMC,EAAc,CAClB,KAAM,kBACN,KAAM,YACN,OAAQ,UACR,MAAO,YACT,EAEMC,EAAc,CAClB,KAAM,WACN,KAAM,WACN,OAAQ,WACR,MAAO,OACT,EAEMC,EAAkB,CACtB,KAAM,iCACN,KAAM,iCACN,OAAQ,qBACR,MAAO,oBACT,EAEaC,EAAa,CACxB,KAAMC,EAAkB,CACtB,QAASJ,EACT,aAAc,MAClB,CAAG,EAED,KAAMI,EAAkB,CACtB,QAASH,EACT,aAAc,MAClB,CAAG,EAED,SAAUG,EAAkB,CAC1B,QAASF,EACT,aAAc,MAClB,CAAG,CACH,ECtCMG,EAAuB,CAC3B,SAAU,6BACV,UAAW,uBACX,MAAO,uBACP,SAAU,qBACV,SAAU,6BACV,MAAO,GACT,EAEaC,EAAkBX,GAAUU,EAAqBV,CAAK,ECP7DY,EAAY,CAChB,OAAQ,CAAC,IAAK,GAAG,EACjB,YAAa,CAAC,OAAQ,MAAM,EAC5B,KAAM,CAAC,cAAe,aAAa,CACrC,EAEMC,EAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,cAAe,eAAgB,eAAgB,cAAc,CACtE,EAEMC,EAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,QACJ,EAEE,KAAM,CACJ,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,QACJ,CACA,EAEMC,EAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAAK,EACjE,YAAa,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAAK,EAEvE,KAAM,CACJ,QACA,UACA,WACA,WACA,SACA,SACA,OACJ,CACA,EAEMC,EAAkB,CACtB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,QAAS,SACT,KAAM,QACN,UAAW,YACX,QAAS,SACT,MAAO,QACP,SAAU,aACd,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,QAAS,SACT,KAAM,QACN,UAAW,YACX,QAAS,SACT,MAAO,QACP,SAAU,aACd,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,QAAS,SACT,KAAM,QACN,UAAW,YACX,QAAS,SACT,MAAO,QACP,SAAU,aACd,CACA,EAEMC,EAA4B,CAChC,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,QAAS,YACT,KAAM,QACN,UAAW,YACX,QAAS,YACT,MAAO,WACP,SAAU,aACd,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,QAAS,YACT,KAAM,QACN,UAAW,YACX,QAAS,YACT,MAAO,WACP,SAAU,aACd,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,QAAS,YACT,KAAM,QACN,UAAW,YACX,QAAS,YACT,MAAO,WACP,SAAU,aACd,CACA,EAEMC,EAAiBC,GAAQ,OAAOA,CAAG,EAE5BC,EAAW,CACtB,cAAeF,EAEf,IAAKG,EAAgB,CACnB,OAAQT,EACR,aAAc,MAClB,CAAG,EAED,QAASS,EAAgB,CACvB,OAAQR,EACR,aAAc,OACd,iBAAmBS,GAAYA,EAAU,CAC7C,CAAG,EAED,MAAOD,EAAgB,CACrB,OAAQP,EACR,aAAc,MAClB,CAAG,EAED,IAAKO,EAAgB,CACnB,OAAQN,EACR,aAAc,MAClB,CAAG,EAED,UAAWM,EAAgB,CACzB,OAAQL,EACR,aAAc,OACd,iBAAkBC,EAClB,uBAAwB,MAC5B,CAAG,CACH,EC9JMM,EAA4B,wBAC5BC,EAA4B,OAE5BC,EAAmB,CACvB,OAAQ,OACR,YAAa,YACb,KAAM,mBACR,EACMC,EAAmB,CACvB,IAAK,CAAC,MAAO,KAAK,CACpB,EAEMC,EAAuB,CAC3B,OAAQ,WACR,YAAa,UACb,KAAM,oCACR,EACMC,EAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EAEMC,EAAqB,CACzB,OAAQ,aACR,YACE,gFACF,KAAM,+EACR,EACMC,EAAqB,CACzB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACJ,EAEE,IAAK,CACH,UACA,WACA,SACA,UACA,SACA,UACA,UACA,UACA,WACA,WACA,WACA,UACJ,CACA,EAEMC,EAAmB,CACvB,OAAQ,cACR,MAAO,4CACP,YAAa,4CACb,KAAM,yDACR,EACMC,EAAmB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EACxD,KAAM,CACJ,UACA,YACA,aACA,aACA,WACA,WACA,SACJ,EAEE,IAAK,CAAC,OAAQ,OAAQ,MAAO,OAAQ,MAAO,MAAO,KAAK,CAC1D,EAEMC,EAAyB,CAC7B,OAAQ,kEACR,IAAK,iEACP,EACMC,EAAyB,CAC7B,IAAK,CACH,GAAI,KACJ,GAAI,KACJ,SAAU,cACV,KAAM,QACN,UAAW,YACX,QAAS,YACT,QAAS,YACT,MAAO,UACX,CACA,EAEaC,EAAQ,CACnB,cAAeC,EAAoB,CACjC,aAAcb,EACd,aAAcC,EACd,cAAgBa,GAAU,SAASA,EAAO,EAAE,CAChD,CAAG,EAED,IAAKC,EAAa,CAChB,cAAeb,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,QAASY,EAAa,CACpB,cAAeX,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,MACnB,cAAgBW,GAAUA,EAAQ,CACtC,CAAG,EAED,MAAOD,EAAa,CAClB,cAAeT,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,IAAKQ,EAAa,CAChB,cAAeP,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,UAAWM,EAAa,CACtB,cAAeL,EACf,kBAAmB,MACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,CACH,EChIaM,EAAK,CAChB,KAAM,KACN,eAAgBzC,EAChB,WAAYS,EACZ,eAAgBG,EAChB,SAAUS,EACV,MAAOe,EACP,QAAS,CACP,aAAc,EACd,sBAAuB,CAC3B,CACA","x_google_ignoreList":[0,1,2,3,4,5]} \ No newline at end of file diff --git a/js/ar-3qmvQ7om.chunk.mjs.map.license b/js/ar-3qmvQ7om.chunk.mjs.map.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-3qmvQ7om.chunk.mjs.map.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-DZ-XF744e4Z.chunk.mjs b/js/ar-DZ-XF744e4Z.chunk.mjs deleted file mode 100644 index 4246e3a0..00000000 --- a/js/ar-DZ-XF744e4Z.chunk.mjs +++ /dev/null @@ -1,3 +0,0 @@ -/*! third party licenses: js/vendor.LICENSE.txt */ -import{b as r,c as i,d as a,e as A}from"./index-Cr1DLTt7.chunk.mjs";import"./user_migration-personalSettings.mjs";import"./be-tarask-CzbVxLq7.chunk.mjs";const d={lessThanXSeconds:{one:"أقل من ثانية واحدة",two:"أقل من ثانتين",threeToTen:"أقل من {{count}} ثواني",other:"أقل من {{count}} ثانية"},xSeconds:{one:"ثانية واحدة",two:"ثانتين",threeToTen:"{{count}} ثواني",other:"{{count}} ثانية"},halfAMinute:"نصف دقيقة",lessThanXMinutes:{one:"أقل من دقيقة",two:"أقل من دقيقتين",threeToTen:"أقل من {{count}} دقائق",other:"أقل من {{count}} دقيقة"},xMinutes:{one:"دقيقة واحدة",two:"دقيقتين",threeToTen:"{{count}} دقائق",other:"{{count}} دقيقة"},aboutXHours:{one:"ساعة واحدة تقريباً",two:"ساعتين تقريباً",threeToTen:"{{count}} ساعات تقريباً",other:"{{count}} ساعة تقريباً"},xHours:{one:"ساعة واحدة",two:"ساعتين",threeToTen:"{{count}} ساعات",other:"{{count}} ساعة"},xDays:{one:"يوم واحد",two:"يومين",threeToTen:"{{count}} أيام",other:"{{count}} يوم"},aboutXWeeks:{one:"أسبوع واحد تقريباً",two:"أسبوعين تقريباً",threeToTen:"{{count}} أسابيع تقريباً",other:"{{count}} أسبوع تقريباً"},xWeeks:{one:"أسبوع واحد",two:"أسبوعين",threeToTen:"{{count}} أسابيع",other:"{{count}} أسبوع"},aboutXMonths:{one:"شهر واحد تقريباً",two:"شهرين تقريباً",threeToTen:"{{count}} أشهر تقريباً",other:"{{count}} شهر تقريباً"},xMonths:{one:"شهر واحد",two:"شهرين",threeToTen:"{{count}} أشهر",other:"{{count}} شهر"},aboutXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"},xYears:{one:"عام واحد",two:"عامين",threeToTen:"{{count}} أعوام",other:"{{count}} عام"},overXYears:{one:"أكثر من عام",two:"أكثر من عامين",threeToTen:"أكثر من {{count}} أعوام",other:"أكثر من {{count}} عام"},almostXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"}},h=(u,n,o)=>{o=o||{};const t=d[u];let e;return typeof t=="string"?e=t:n===1?e=t.one:n===2?e=t.two:n<=10?e=t.threeToTen.replace("{{count}}",String(n)):e=t.other.replace("{{count}}",String(n)),o.addSuffix?o.comparison&&o.comparison>0?"في خلال "+e:"منذ "+e:e},s={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},m={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},c={full:"{{date}} 'عند' {{time}}",long:"{{date}} 'عند' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},l={date:r({formats:s,defaultWidth:"full"}),time:r({formats:m,defaultWidth:"full"}),dateTime:r({formats:c,defaultWidth:"full"})},B={lastWeek:"'أخر' eeee 'عند' p",yesterday:"'أمس عند' p",today:"'اليوم عند' p",tomorrow:"'غداً عند' p",nextWeek:"eeee 'عند' p",other:"P"},w=(u,n,o,t)=>B[u],g={narrow:["ق","ب"],abbreviated:["ق.م.","ب.م."],wide:["قبل الميلاد","بعد الميلاد"]},f={narrow:["1","2","3","4"],abbreviated:["ر1","ر2","ر3","ر4"],wide:["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"]},F={narrow:["ج","ف","م","أ","م","ج","ج","أ","س","أ","ن","د"],abbreviated:["جانـ","فيفـ","مارس","أفريل","مايـ","جوانـ","جويـ","أوت","سبتـ","أكتـ","نوفـ","ديسـ"],wide:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"]},T={narrow:["ح","ن","ث","ر","خ","ج","س"],short:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],abbreviated:["أحد","اثنـ","ثلا","أربـ","خميـ","جمعة","سبت"],wide:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},b={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"}},p={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"في الصباح",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"في الصباح",afternoon:"بعد الظهر",evening:"في المساء",night:"في الليل"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"}},v=u=>String(u),y={ordinalNumber:v,era:i({values:g,defaultWidth:"wide"}),quarter:i({values:f,defaultWidth:"wide",argumentCallback:u=>Number(u)-1}),month:i({values:F,defaultWidth:"wide"}),day:i({values:T,defaultWidth:"wide"}),dayPeriod:i({values:b,defaultWidth:"wide",formattingValues:p,defaultFormattingWidth:"wide"})},D=/^(\d+)(th|st|nd|rd)?/i,W=/\d+/i,M={narrow:/^(ق|ب)/i,abbreviated:/^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\s?)/i,wide:/^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i},P={any:[/^قبل/i,/^بعد/i]},C={narrow:/^[1234]/i,abbreviated:/^ر[1234]/i,wide:/^الربع [1234]/i},x={any:[/1/i,/2/i,/3/i,/4/i]},E={narrow:/^[جفمأسند]/i,abbreviated:/^(جان|فيف|مار|أفر|ماي|جوا|جوي|أوت|سبت|أكت|نوف|ديس)/i,wide:/^(جانفي|فيفري|مارس|أفريل|ماي|جوان|جويلية|أوت|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/i},k={narrow:[/^ج/i,/^ف/i,/^م/i,/^أ/i,/^م/i,/^ج/i,/^ج/i,/^أ/i,/^س/i,/^أ/i,/^ن/i,/^د/i],any:[/^جان/i,/^فيف/i,/^مار/i,/^أفر/i,/^ماي/i,/^جوا/i,/^جوي/i,/^أوت/i,/^سبت/i,/^أكت/i,/^نوف/i,/^ديس/i]},X={narrow:/^[حنثرخجس]/i,short:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,abbreviated:/^(أحد|اثن|ثلا|أرب|خمي|جمعة|سبت)/i,wide:/^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i},S={narrow:[/^ح/i,/^ن/i,/^ث/i,/^ر/i,/^خ/i,/^ج/i,/^س/i],wide:[/^الأحد/i,/^الاثنين/i,/^الثلاثاء/i,/^الأربعاء/i,/^الخميس/i,/^الجمعة/i,/^السبت/i],any:[/^أح/i,/^اث/i,/^ث/i,/^أر/i,/^خ/i,/^ج/i,/^س/i]},z={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},N={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Y={ordinalNumber:A({matchPattern:D,parsePattern:W,valueCallback:u=>parseInt(u,10)}),era:a({matchPatterns:M,defaultMatchWidth:"wide",parsePatterns:P,defaultParseWidth:"any"}),quarter:a({matchPatterns:C,defaultMatchWidth:"wide",parsePatterns:x,defaultParseWidth:"any",valueCallback:u=>Number(u)+1}),month:a({matchPatterns:E,defaultMatchWidth:"wide",parsePatterns:k,defaultParseWidth:"any"}),day:a({matchPatterns:X,defaultMatchWidth:"wide",parsePatterns:S,defaultParseWidth:"any"}),dayPeriod:a({matchPatterns:z,defaultMatchWidth:"any",parsePatterns:N,defaultParseWidth:"any"})},O={code:"ar-DZ",formatDistance:h,formatLong:l,formatRelative:w,localize:y,match:Y,options:{weekStartsOn:0,firstWeekContainsDate:1}};export{O as arDZ}; -//# sourceMappingURL=ar-DZ-XF744e4Z.chunk.mjs.map diff --git a/js/ar-DZ-XF744e4Z.chunk.mjs.license b/js/ar-DZ-XF744e4Z.chunk.mjs.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-DZ-XF744e4Z.chunk.mjs.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-DZ-XF744e4Z.chunk.mjs.map b/js/ar-DZ-XF744e4Z.chunk.mjs.map deleted file mode 100644 index 9dfa69f0..00000000 --- a/js/ar-DZ-XF744e4Z.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ar-DZ-XF744e4Z.chunk.mjs","sources":["../node_modules/date-fns/locale/ar-DZ/_lib/formatDistance.js","../node_modules/date-fns/locale/ar-DZ/_lib/formatLong.js","../node_modules/date-fns/locale/ar-DZ/_lib/formatRelative.js","../node_modules/date-fns/locale/ar-DZ/_lib/localize.js","../node_modules/date-fns/locale/ar-DZ/_lib/match.js","../node_modules/date-fns/locale/ar-DZ.js"],"sourcesContent":["const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"أقل من ثانية واحدة\",\n two: \"أقل من ثانتين\",\n threeToTen: \"أقل من {{count}} ثواني\",\n other: \"أقل من {{count}} ثانية\",\n },\n\n xSeconds: {\n one: \"ثانية واحدة\",\n two: \"ثانتين\",\n threeToTen: \"{{count}} ثواني\",\n other: \"{{count}} ثانية\",\n },\n\n halfAMinute: \"نصف دقيقة\",\n\n lessThanXMinutes: {\n one: \"أقل من دقيقة\",\n two: \"أقل من دقيقتين\",\n threeToTen: \"أقل من {{count}} دقائق\",\n other: \"أقل من {{count}} دقيقة\",\n },\n\n xMinutes: {\n one: \"دقيقة واحدة\",\n two: \"دقيقتين\",\n threeToTen: \"{{count}} دقائق\",\n other: \"{{count}} دقيقة\",\n },\n\n aboutXHours: {\n one: \"ساعة واحدة تقريباً\",\n two: \"ساعتين تقريباً\",\n threeToTen: \"{{count}} ساعات تقريباً\",\n other: \"{{count}} ساعة تقريباً\",\n },\n\n xHours: {\n one: \"ساعة واحدة\",\n two: \"ساعتين\",\n threeToTen: \"{{count}} ساعات\",\n other: \"{{count}} ساعة\",\n },\n\n xDays: {\n one: \"يوم واحد\",\n two: \"يومين\",\n threeToTen: \"{{count}} أيام\",\n other: \"{{count}} يوم\",\n },\n\n aboutXWeeks: {\n one: \"أسبوع واحد تقريباً\",\n two: \"أسبوعين تقريباً\",\n threeToTen: \"{{count}} أسابيع تقريباً\",\n other: \"{{count}} أسبوع تقريباً\",\n },\n\n xWeeks: {\n one: \"أسبوع واحد\",\n two: \"أسبوعين\",\n threeToTen: \"{{count}} أسابيع\",\n other: \"{{count}} أسبوع\",\n },\n\n aboutXMonths: {\n one: \"شهر واحد تقريباً\",\n two: \"شهرين تقريباً\",\n threeToTen: \"{{count}} أشهر تقريباً\",\n other: \"{{count}} شهر تقريباً\",\n },\n\n xMonths: {\n one: \"شهر واحد\",\n two: \"شهرين\",\n threeToTen: \"{{count}} أشهر\",\n other: \"{{count}} شهر\",\n },\n\n aboutXYears: {\n one: \"عام واحد تقريباً\",\n two: \"عامين تقريباً\",\n threeToTen: \"{{count}} أعوام تقريباً\",\n other: \"{{count}} عام تقريباً\",\n },\n\n xYears: {\n one: \"عام واحد\",\n two: \"عامين\",\n threeToTen: \"{{count}} أعوام\",\n other: \"{{count}} عام\",\n },\n\n overXYears: {\n one: \"أكثر من عام\",\n two: \"أكثر من عامين\",\n threeToTen: \"أكثر من {{count}} أعوام\",\n other: \"أكثر من {{count}} عام\",\n },\n\n almostXYears: {\n one: \"عام واحد تقريباً\",\n two: \"عامين تقريباً\",\n threeToTen: \"{{count}} أعوام تقريباً\",\n other: \"{{count}} عام تقريباً\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n options = options || {};\n\n const usageGroup = formatDistanceLocale[token];\n let result;\n if (typeof usageGroup === \"string\") {\n result = usageGroup;\n } else if (count === 1) {\n result = usageGroup.one;\n } else if (count === 2) {\n result = usageGroup.two;\n } else if (count <= 10) {\n result = usageGroup.threeToTen.replace(\"{{count}}\", String(count));\n } else {\n result = usageGroup.other.replace(\"{{count}}\", String(count));\n }\n\n if (options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"في خلال \" + result;\n } else {\n return \"منذ \" + result;\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'عند' {{time}}\",\n long: \"{{date}} 'عند' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'أخر' eeee 'عند' p\",\n yesterday: \"'أمس عند' p\",\n today: \"'اليوم عند' p\",\n tomorrow: \"'غداً عند' p\",\n nextWeek: \"eeee 'عند' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) => {\n return formatRelativeLocale[token];\n};\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"ق\", \"ب\"],\n abbreviated: [\"ق.م.\", \"ب.م.\"],\n wide: [\"قبل الميلاد\", \"بعد الميلاد\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"ر1\", \"ر2\", \"ر3\", \"ر4\"],\n wide: [\"الربع الأول\", \"الربع الثاني\", \"الربع الثالث\", \"الربع الرابع\"],\n};\n\nconst monthValues = {\n narrow: [\"ج\", \"ف\", \"م\", \"أ\", \"م\", \"ج\", \"ج\", \"أ\", \"س\", \"أ\", \"ن\", \"د\"],\n abbreviated: [\n \"جانـ\",\n \"فيفـ\",\n \"مارس\",\n \"أفريل\",\n \"مايـ\",\n \"جوانـ\",\n \"جويـ\",\n \"أوت\",\n \"سبتـ\",\n \"أكتـ\",\n \"نوفـ\",\n \"ديسـ\",\n ],\n\n wide: [\n \"جانفي\",\n \"فيفري\",\n \"مارس\",\n \"أفريل\",\n \"ماي\",\n \"جوان\",\n \"جويلية\",\n \"أوت\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"ح\", \"ن\", \"ث\", \"ر\", \"خ\", \"ج\", \"س\"],\n short: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n abbreviated: [\"أحد\", \"اثنـ\", \"ثلا\", \"أربـ\", \"خميـ\", \"جمعة\", \"سبت\"],\n wide: [\n \"الأحد\",\n \"الاثنين\",\n \"الثلاثاء\",\n \"الأربعاء\",\n \"الخميس\",\n \"الجمعة\",\n \"السبت\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"ن\",\n noon: \"ظ\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءاً\",\n night: \"ليلاً\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءاً\",\n night: \"ليلاً\",\n },\n wide: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءاً\",\n night: \"ليلاً\",\n },\n};\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"ن\",\n noon: \"ظ\",\n morning: \"في الصباح\",\n afternoon: \"بعد الظـهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"في الصباح\",\n afternoon: \"بعد الظهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n wide: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظـهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber) => {\n return String(dirtyNumber);\n};\n\nexport const localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => Number(quarter) - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\nimport { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(ق|ب)/i,\n abbreviated: /^(ق\\.?\\s?م\\.?|ق\\.?\\s?م\\.?\\s?|a\\.?\\s?d\\.?|c\\.?\\s?)/i,\n wide: /^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i,\n};\nconst parseEraPatterns = {\n any: [/^قبل/i, /^بعد/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^ر[1234]/i,\n wide: /^الربع [1234]/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[جفمأسند]/i,\n abbreviated: /^(جان|فيف|مار|أفر|ماي|جوا|جوي|أوت|سبت|أكت|نوف|ديس)/i,\n wide: /^(جانفي|فيفري|مارس|أفريل|ماي|جوان|جويلية|أوت|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/i,\n};\n\nconst parseMonthPatterns = {\n narrow: [\n /^ج/i,\n /^ف/i,\n /^م/i,\n /^أ/i,\n /^م/i,\n /^ج/i,\n /^ج/i,\n /^أ/i,\n /^س/i,\n /^أ/i,\n /^ن/i,\n /^د/i,\n ],\n\n any: [\n /^جان/i,\n /^فيف/i,\n /^مار/i,\n /^أفر/i,\n /^ماي/i,\n /^جوا/i,\n /^جوي/i,\n /^أوت/i,\n /^سبت/i,\n /^أكت/i,\n /^نوف/i,\n /^ديس/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[حنثرخجس]/i,\n short: /^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,\n abbreviated: /^(أحد|اثن|ثلا|أرب|خمي|جمعة|سبت)/i,\n wide: /^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^ح/i, /^ن/i, /^ث/i, /^ر/i, /^خ/i, /^ج/i, /^س/i],\n wide: [\n /^الأحد/i,\n /^الاثنين/i,\n /^الثلاثاء/i,\n /^الأربعاء/i,\n /^الخميس/i,\n /^الجمعة/i,\n /^السبت/i,\n ],\n\n any: [/^أح/i, /^اث/i, /^ث/i, /^أر/i, /^خ/i, /^ج/i, /^س/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => Number(index) + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./ar-DZ/_lib/formatDistance.js\";\nimport { formatLong } from \"./ar-DZ/_lib/formatLong.js\";\nimport { formatRelative } from \"./ar-DZ/_lib/formatRelative.js\";\nimport { localize } from \"./ar-DZ/_lib/localize.js\";\nimport { match } from \"./ar-DZ/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Arabic locale (Algerian Arabic).\n * @language Algerian Arabic\n * @iso-639-2 ara\n * @author Badreddine Boumaza [@badre429](https://github.com/badre429)\n * @author Ahmed ElShahat [@elshahat](https://github.com/elshahat)\n */\nexport const arDZ = {\n code: \"ar-DZ\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default arDZ;\n"],"names":["formatDistanceLocale","formatDistance","token","count","options","usageGroup","result","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatRelativeLocale","formatRelative","_date","_baseDate","_options","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","localize","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","arDZ"],"mappings":";yJAAA,MAAMA,EAAuB,CAC3B,iBAAkB,CAChB,IAAK,qBACL,IAAK,gBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,cACL,IAAK,SACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,YAEb,iBAAkB,CAChB,IAAK,eACL,IAAK,iBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,cACL,IAAK,UACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,CACX,IAAK,qBACL,IAAK,iBACL,WAAY,0BACZ,MAAO,wBACX,EAEE,OAAQ,CACN,IAAK,aACL,IAAK,SACL,WAAY,kBACZ,MAAO,gBACX,EAEE,MAAO,CACL,IAAK,WACL,IAAK,QACL,WAAY,iBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,qBACL,IAAK,kBACL,WAAY,2BACZ,MAAO,yBACX,EAEE,OAAQ,CACN,IAAK,aACL,IAAK,UACL,WAAY,mBACZ,MAAO,iBACX,EAEE,aAAc,CACZ,IAAK,mBACL,IAAK,gBACL,WAAY,yBACZ,MAAO,uBACX,EAEE,QAAS,CACP,IAAK,WACL,IAAK,QACL,WAAY,iBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,mBACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,EAEE,OAAQ,CACN,IAAK,WACL,IAAK,QACL,WAAY,kBACZ,MAAO,eACX,EAEE,WAAY,CACV,IAAK,cACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,EAEE,aAAc,CACZ,IAAK,mBACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,CACA,EAEaC,EAAiB,CAACC,EAAOC,EAAOC,IAAY,CACvDA,EAAUA,GAAW,CAAA,EAErB,MAAMC,EAAaL,EAAqBE,CAAK,EAC7C,IAAII,EAaJ,OAZI,OAAOD,GAAe,SACxBC,EAASD,EACAF,IAAU,EACnBG,EAASD,EAAW,IACXF,IAAU,EACnBG,EAASD,EAAW,IACXF,GAAS,GAClBG,EAASD,EAAW,WAAW,QAAQ,YAAa,OAAOF,CAAK,CAAC,EAEjEG,EAASD,EAAW,MAAM,QAAQ,YAAa,OAAOF,CAAK,CAAC,EAG1DC,EAAQ,UACNA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,WAAaE,EAEb,OAASA,EAIbA,CACT,ECrIMC,EAAc,CAClB,KAAM,mBACN,KAAM,aACN,OAAQ,WACR,MAAO,YACT,EAEMC,EAAc,CAClB,KAAM,iBACN,KAAM,cACN,OAAQ,YACR,MAAO,QACT,EAEMC,EAAkB,CACtB,KAAM,0BACN,KAAM,0BACN,OAAQ,qBACR,MAAO,oBACT,EAEaC,EAAa,CACxB,KAAMC,EAAkB,CACtB,QAASJ,EACT,aAAc,MAClB,CAAG,EAED,KAAMI,EAAkB,CACtB,QAASH,EACT,aAAc,MAClB,CAAG,EAED,SAAUG,EAAkB,CAC1B,QAASF,EACT,aAAc,MAClB,CAAG,CACH,ECtCMG,EAAuB,CAC3B,SAAU,qBACV,UAAW,cACX,MAAO,gBACP,SAAU,eACV,SAAU,eACV,MAAO,GACT,EAEaC,EAAiB,CAACX,EAAOY,EAAOC,EAAWC,IAC/CJ,EAAqBV,CAAK,ECR7Be,EAAY,CAChB,OAAQ,CAAC,IAAK,GAAG,EACjB,YAAa,CAAC,OAAQ,MAAM,EAC5B,KAAM,CAAC,cAAe,aAAa,CACrC,EAEMC,EAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,cAAe,eAAgB,eAAgB,cAAc,CACtE,EAEMC,EAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,OACA,OACA,OACA,QACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,MACJ,EAEE,KAAM,CACJ,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,QACJ,CACA,EAEMC,EAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAAK,EACjE,YAAa,CAAC,MAAO,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,KAAK,EACjE,KAAM,CACJ,QACA,UACA,WACA,WACA,SACA,SACA,OACJ,CACA,EAEMC,EAAkB,CACtB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,IACV,KAAM,IACN,QAAS,SACT,UAAW,YACX,QAAS,SACT,MAAO,OACX,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,SACT,UAAW,YACX,QAAS,SACT,MAAO,OACX,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,SACT,UAAW,YACX,QAAS,SACT,MAAO,OACX,CACA,EACMC,EAA4B,CAChC,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,IACV,KAAM,IACN,QAAS,YACT,UAAW,aACX,QAAS,YACT,MAAO,UACX,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,YACT,UAAW,YACX,QAAS,YACT,MAAO,UACX,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,SACT,UAAW,aACX,QAAS,YACT,MAAO,UACX,CACA,EAEMC,EAAiBC,GACd,OAAOA,CAAW,EAGdC,EAAW,CACtB,cAAeF,EAEf,IAAKG,EAAgB,CACnB,OAAQT,EACR,aAAc,MAClB,CAAG,EAED,QAASS,EAAgB,CACvB,OAAQR,EACR,aAAc,OACd,iBAAmBS,GAAY,OAAOA,CAAO,EAAI,CACrD,CAAG,EAED,MAAOD,EAAgB,CACrB,OAAQP,EACR,aAAc,MAClB,CAAG,EAED,IAAKO,EAAgB,CACnB,OAAQN,EACR,aAAc,MAClB,CAAG,EAED,UAAWM,EAAgB,CACzB,OAAQL,EACR,aAAc,OACd,iBAAkBC,EAClB,uBAAwB,MAC5B,CAAG,CACH,EC9JMM,EAA4B,wBAC5BC,EAA4B,OAE5BC,EAAmB,CACvB,OAAQ,UACR,YAAa,qDACb,KAAM,qDACR,EACMC,EAAmB,CACvB,IAAK,CAAC,QAAS,OAAO,CACxB,EAEMC,EAAuB,CAC3B,OAAQ,WACR,YAAa,YACb,KAAM,gBACR,EACMC,EAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EAEMC,EAAqB,CACzB,OAAQ,cACR,YAAa,sDACb,KAAM,4EACR,EAEMC,EAAqB,CACzB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACJ,EAEE,IAAK,CACH,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACJ,CACA,EAEMC,EAAmB,CACvB,OAAQ,cACR,MAAO,4CACP,YAAa,mCACb,KAAM,yDACR,EACMC,EAAmB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EACxD,KAAM,CACJ,UACA,YACA,aACA,aACA,WACA,WACA,SACJ,EAEE,IAAK,CAAC,OAAQ,OAAQ,MAAO,OAAQ,MAAO,MAAO,KAAK,CAC1D,EAEMC,EAAyB,CAC7B,OAAQ,6DACR,IAAK,gFACP,EACMC,EAAyB,CAC7B,IAAK,CACH,GAAI,MACJ,GAAI,MACJ,SAAU,OACV,KAAM,OACN,QAAS,WACT,UAAW,aACX,QAAS,WACT,MAAO,QACX,CACA,EAEaC,EAAQ,CACnB,cAAeC,EAAoB,CACjC,aAAcb,EACd,aAAcC,EACd,cAAgBa,GAAU,SAASA,EAAO,EAAE,CAChD,CAAG,EAED,IAAKC,EAAa,CAChB,cAAeb,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,QAASY,EAAa,CACpB,cAAeX,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,MACnB,cAAgBW,GAAU,OAAOA,CAAK,EAAI,CAC9C,CAAG,EAED,MAAOD,EAAa,CAClB,cAAeT,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,IAAKQ,EAAa,CAChB,cAAeP,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,UAAWM,EAAa,CACtB,cAAeL,EACf,kBAAmB,MACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,CACH,EChIaM,EAAO,CAClB,KAAM,QACN,eAAgB5C,EAChB,WAAYS,EACZ,eAAgBG,EAChB,SAAUY,EACV,MAAOe,EACP,QAAS,CACP,aAAc,EACd,sBAAuB,CAC3B,CACA","x_google_ignoreList":[0,1,2,3,4,5]} \ No newline at end of file diff --git a/js/ar-DZ-XF744e4Z.chunk.mjs.map.license b/js/ar-DZ-XF744e4Z.chunk.mjs.map.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-DZ-XF744e4Z.chunk.mjs.map.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-EG-Bv1NkNUl.chunk.mjs b/js/ar-EG-Bv1NkNUl.chunk.mjs deleted file mode 100644 index cc61c456..00000000 --- a/js/ar-EG-Bv1NkNUl.chunk.mjs +++ /dev/null @@ -1,3 +0,0 @@ -/*! third party licenses: js/vendor.LICENSE.txt */ -import{b as A,c as o,d as a,e as i}from"./index-Cr1DLTt7.chunk.mjs";import"./user_migration-personalSettings.mjs";import"./be-tarask-CzbVxLq7.chunk.mjs";const d={lessThanXSeconds:{one:"أقل من ثانية",two:"أقل من ثانيتين",threeToTen:"أقل من {{count}} ثواني",other:"أقل من {{count}} ثانية"},xSeconds:{one:"ثانية",two:"ثانيتين",threeToTen:"{{count}} ثواني",other:"{{count}} ثانية"},halfAMinute:"نص دقيقة",lessThanXMinutes:{one:"أقل من دقيقة",two:"أقل من دقيقتين",threeToTen:"أقل من {{count}} دقايق",other:"أقل من {{count}} دقيقة"},xMinutes:{one:"دقيقة",two:"دقيقتين",threeToTen:"{{count}} دقايق",other:"{{count}} دقيقة"},aboutXHours:{one:"حوالي ساعة",two:"حوالي ساعتين",threeToTen:"حوالي {{count}} ساعات",other:"حوالي {{count}} ساعة"},xHours:{one:"ساعة",two:"ساعتين",threeToTen:"{{count}} ساعات",other:"{{count}} ساعة"},xDays:{one:"يوم",two:"يومين",threeToTen:"{{count}} أيام",other:"{{count}} يوم"},aboutXWeeks:{one:"حوالي أسبوع",two:"حوالي أسبوعين",threeToTen:"حوالي {{count}} أسابيع",other:"حوالي {{count}} أسبوع"},xWeeks:{one:"أسبوع",two:"أسبوعين",threeToTen:"{{count}} أسابيع",other:"{{count}} أسبوع"},aboutXMonths:{one:"حوالي شهر",two:"حوالي شهرين",threeToTen:"حوالي {{count}} أشهر",other:"حوالي {{count}} شهر"},xMonths:{one:"شهر",two:"شهرين",threeToTen:"{{count}} أشهر",other:"{{count}} شهر"},aboutXYears:{one:"حوالي سنة",two:"حوالي سنتين",threeToTen:"حوالي {{count}} سنين",other:"حوالي {{count}} سنة"},xYears:{one:"عام",two:"عامين",threeToTen:"{{count}} أعوام",other:"{{count}} عام"},overXYears:{one:"أكثر من سنة",two:"أكثر من سنتين",threeToTen:"أكثر من {{count}} سنين",other:"أكثر من {{count}} سنة"},almostXYears:{one:"عام تقريبًا",two:"عامين تقريبًا",threeToTen:"{{count}} أعوام تقريبًا",other:"{{count}} عام تقريبًا"}},h=(u,t,r)=>{let e;const n=d[u];return typeof n=="string"?e=n:t===1?e=n.one:t===2?e=n.two:t<=10?e=n.threeToTen.replace("{{count}}",String(t)):e=n.other.replace("{{count}}",String(t)),r?.addSuffix?r.comparison&&r.comparison>0?`في خلال ${e}`:`منذ ${e}`:e},s={full:"EEEE، do MMMM y",long:"do MMMM y",medium:"dd/MMM/y",short:"d/MM/y"},m={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},c={full:"{{date}} 'الساعة' {{time}}",long:"{{date}} 'الساعة' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},l={date:A({formats:s,defaultWidth:"full"}),time:A({formats:m,defaultWidth:"full"}),dateTime:A({formats:c,defaultWidth:"full"})},w={lastWeek:"eeee 'اللي جاي الساعة' p",yesterday:"'إمبارح الساعة' p",today:"'النهاردة الساعة' p",tomorrow:"'بكرة الساعة' p",nextWeek:"eeee 'الساعة' p",other:"P"},f=(u,t,r,e)=>w[u],g={narrow:["ق","ب"],abbreviated:["ق.م","ب.م"],wide:["قبل الميلاد","بعد الميلاد"]},B={narrow:["1","2","3","4"],abbreviated:["ر1","ر2","ر3","ر4"],wide:["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"]},T={narrow:["ي","ف","م","أ","م","ي","ي","أ","س","أ","ن","د"],abbreviated:["ينا","فبر","مارس","أبريل","مايو","يونـ","يولـ","أغسـ","سبتـ","أكتـ","نوفـ","ديسـ"],wide:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"]},b={narrow:["ح","ن","ث","ر","خ","ج","س"],short:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],abbreviated:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],wide:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},D={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءً",night:"ليلاً"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهراً",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءً",night:"ليلاً"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهراً",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءً",night:"ليلاً"}},p={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"في الصباح",afternoon:"بعد الظهر",evening:"في المساء",night:"في الليل"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهراً",morning:"في الصباح",afternoon:"بعد الظهر",evening:"في المساء",night:"في الليل"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",morning:"في الصباح",noon:"ظهراً",afternoon:"بعد الظهر",evening:"في المساء",night:"في الليل"}},v=(u,t)=>String(u),F={ordinalNumber:v,era:o({values:g,defaultWidth:"wide"}),quarter:o({values:B,defaultWidth:"wide",argumentCallback:u=>u-1}),month:o({values:T,defaultWidth:"wide"}),day:o({values:b,defaultWidth:"wide"}),dayPeriod:o({values:D,defaultWidth:"wide",formattingValues:p,defaultFormattingWidth:"wide"})},y=/^(\d+)/,W=/\d+/i,M={narrow:/^(ق|ب)/g,abbreviated:/^(ق.م|ب.م)/g,wide:/^(قبل الميلاد|بعد الميلاد)/g},P={any:[/^ق/g,/^ب/g]},E={narrow:/^[1234]/,abbreviated:/^ر[1234]/,wide:/^الربع (الأول|الثاني|الثالث|الرابع)/},x={wide:[/الربع الأول/,/الربع الثاني/,/الربع الثالث/,/الربع الرابع/],any:[/1/,/2/,/3/,/4/]},C={narrow:/^(ي|ف|م|أ|س|ن|د)/,abbreviated:/^(ينا|فبر|مارس|أبريل|مايو|يونـ|يولـ|أغسـ|سبتـ|أكتـ|نوفـ|ديسـ)/,wide:/^(يناير|فبراير|مارس|أبريل|مايو|يونيو|يوليو|أغسطس|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/},k={narrow:[/^ي/,/^ف/,/^م/,/^أ/,/^م/,/^ي/,/^ي/,/^أ/,/^س/,/^أ/,/^ن/,/^د/],any:[/^ينا/,/^فبر/,/^مارس/,/^أبريل/,/^مايو/,/^يون/,/^يول/,/^أغس/,/^سبت/,/^أكت/,/^نوف/,/^ديس/]},X={narrow:/^(ح|ن|ث|ر|خ|ج|س)/,short:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/,abbreviated:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/,wide:/^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/},S={narrow:[/^ح/,/^ن/,/^ث/,/^ر/,/^خ/,/^ج/,/^س/],any:[/أحد/,/اثنين/,/ثلاثاء/,/أربعاء/,/خميس/,/جمعة/,/سبت/]},z={narrow:/^(ص|م|ن|ظ|في الصباح|بعد الظهر|في المساء|في الليل)/,abbreviated:/^(ص|م|نصف الليل|ظهراً|في الصباح|بعد الظهر|في المساء|في الليل)/,wide:/^(ص|م|نصف الليل|في الصباح|ظهراً|بعد الظهر|في المساء|في الليل)/,any:/^(ص|م|صباح|ظهر|مساء|ليل)/},Y={any:{am:/^ص/,pm:/^م/,midnight:/^ن/,noon:/^ظ/,morning:/^ص/,afternoon:/^بعد/,evening:/^م/,night:/^ل/}},q={ordinalNumber:i({matchPattern:y,parsePattern:W,valueCallback:function(u){return parseInt(u,10)}}),era:a({matchPatterns:M,defaultMatchWidth:"wide",parsePatterns:P,defaultParseWidth:"any"}),quarter:a({matchPatterns:E,defaultMatchWidth:"wide",parsePatterns:x,defaultParseWidth:"any",valueCallback:u=>u+1}),month:a({matchPatterns:C,defaultMatchWidth:"wide",parsePatterns:k,defaultParseWidth:"any"}),day:a({matchPatterns:X,defaultMatchWidth:"wide",parsePatterns:S,defaultParseWidth:"any"}),dayPeriod:a({matchPatterns:z,defaultMatchWidth:"any",parsePatterns:Y,defaultParseWidth:"any"})},L={code:"ar-EG",formatDistance:h,formatLong:l,formatRelative:f,localize:F,match:q,options:{weekStartsOn:0,firstWeekContainsDate:1}};export{L as arEG}; -//# sourceMappingURL=ar-EG-Bv1NkNUl.chunk.mjs.map diff --git a/js/ar-EG-Bv1NkNUl.chunk.mjs.license b/js/ar-EG-Bv1NkNUl.chunk.mjs.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-EG-Bv1NkNUl.chunk.mjs.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-EG-Bv1NkNUl.chunk.mjs.map b/js/ar-EG-Bv1NkNUl.chunk.mjs.map deleted file mode 100644 index c68da7fe..00000000 --- a/js/ar-EG-Bv1NkNUl.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ar-EG-Bv1NkNUl.chunk.mjs","sources":["../node_modules/date-fns/locale/ar-EG/_lib/formatDistance.js","../node_modules/date-fns/locale/ar-EG/_lib/formatLong.js","../node_modules/date-fns/locale/ar-EG/_lib/formatRelative.js","../node_modules/date-fns/locale/ar-EG/_lib/localize.js","../node_modules/date-fns/locale/ar-EG/_lib/match.js","../node_modules/date-fns/locale/ar-EG.js"],"sourcesContent":["const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"أقل من ثانية\",\n two: \"أقل من ثانيتين\",\n threeToTen: \"أقل من {{count}} ثواني\",\n other: \"أقل من {{count}} ثانية\",\n },\n\n xSeconds: {\n one: \"ثانية\",\n two: \"ثانيتين\",\n threeToTen: \"{{count}} ثواني\",\n other: \"{{count}} ثانية\",\n },\n\n halfAMinute: \"نص دقيقة\",\n\n lessThanXMinutes: {\n one: \"أقل من دقيقة\",\n two: \"أقل من دقيقتين\",\n threeToTen: \"أقل من {{count}} دقايق\",\n other: \"أقل من {{count}} دقيقة\",\n },\n\n xMinutes: {\n one: \"دقيقة\",\n two: \"دقيقتين\",\n threeToTen: \"{{count}} دقايق\",\n other: \"{{count}} دقيقة\",\n },\n\n aboutXHours: {\n one: \"حوالي ساعة\",\n two: \"حوالي ساعتين\",\n threeToTen: \"حوالي {{count}} ساعات\",\n other: \"حوالي {{count}} ساعة\",\n },\n\n xHours: {\n one: \"ساعة\",\n two: \"ساعتين\",\n threeToTen: \"{{count}} ساعات\",\n other: \"{{count}} ساعة\",\n },\n\n xDays: {\n one: \"يوم\",\n two: \"يومين\",\n threeToTen: \"{{count}} أيام\",\n other: \"{{count}} يوم\",\n },\n\n aboutXWeeks: {\n one: \"حوالي أسبوع\",\n two: \"حوالي أسبوعين\",\n threeToTen: \"حوالي {{count}} أسابيع\",\n other: \"حوالي {{count}} أسبوع\",\n },\n\n xWeeks: {\n one: \"أسبوع\",\n two: \"أسبوعين\",\n threeToTen: \"{{count}} أسابيع\",\n other: \"{{count}} أسبوع\",\n },\n\n aboutXMonths: {\n one: \"حوالي شهر\",\n two: \"حوالي شهرين\",\n threeToTen: \"حوالي {{count}} أشهر\",\n other: \"حوالي {{count}} شهر\",\n },\n\n xMonths: {\n one: \"شهر\",\n two: \"شهرين\",\n threeToTen: \"{{count}} أشهر\",\n other: \"{{count}} شهر\",\n },\n\n aboutXYears: {\n one: \"حوالي سنة\",\n two: \"حوالي سنتين\",\n threeToTen: \"حوالي {{count}} سنين\",\n other: \"حوالي {{count}} سنة\",\n },\n\n xYears: {\n one: \"عام\",\n two: \"عامين\",\n threeToTen: \"{{count}} أعوام\",\n other: \"{{count}} عام\",\n },\n\n overXYears: {\n one: \"أكثر من سنة\",\n two: \"أكثر من سنتين\",\n threeToTen: \"أكثر من {{count}} سنين\",\n other: \"أكثر من {{count}} سنة\",\n },\n\n almostXYears: {\n one: \"عام تقريبًا\",\n two: \"عامين تقريبًا\",\n threeToTen: \"{{count}} أعوام تقريبًا\",\n other: \"{{count}} عام تقريبًا\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else if (count === 2) {\n result = tokenValue.two;\n } else if (count <= 10) {\n result = tokenValue.threeToTen.replace(\"{{count}}\", String(count));\n } else {\n result = tokenValue.other.replace(\"{{count}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return `في خلال ${result}`;\n } else {\n return `منذ ${result}`;\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE، do MMMM y\",\n long: \"do MMMM y\",\n medium: \"dd/MMM/y\",\n short: \"d/MM/y\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'الساعة' {{time}}\",\n long: \"{{date}} 'الساعة' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"eeee 'اللي جاي الساعة' p\",\n yesterday: \"'إمبارح الساعة' p\",\n today: \"'النهاردة الساعة' p\",\n tomorrow: \"'بكرة الساعة' p\",\n nextWeek: \"eeee 'الساعة' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"ق\", \"ب\"],\n abbreviated: [\"ق.م\", \"ب.م\"],\n wide: [\"قبل الميلاد\", \"بعد الميلاد\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"ر1\", \"ر2\", \"ر3\", \"ر4\"],\n wide: [\"الربع الأول\", \"الربع الثاني\", \"الربع الثالث\", \"الربع الرابع\"],\n};\n\nconst monthValues = {\n narrow: [\"ي\", \"ف\", \"م\", \"أ\", \"م\", \"ي\", \"ي\", \"أ\", \"س\", \"أ\", \"ن\", \"د\"],\n abbreviated: [\n \"ينا\",\n \"فبر\",\n \"مارس\",\n \"أبريل\",\n \"مايو\",\n \"يونـ\",\n \"يولـ\",\n \"أغسـ\",\n \"سبتـ\",\n \"أكتـ\",\n \"نوفـ\",\n \"ديسـ\",\n ],\n\n wide: [\n \"يناير\",\n \"فبراير\",\n \"مارس\",\n \"أبريل\",\n \"مايو\",\n \"يونيو\",\n \"يوليو\",\n \"أغسطس\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"ح\", \"ن\", \"ث\", \"ر\", \"خ\", \"ج\", \"س\"],\n short: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n abbreviated: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n\n wide: [\n \"الأحد\",\n \"الاثنين\",\n \"الثلاثاء\",\n \"الأربعاء\",\n \"الخميس\",\n \"الجمعة\",\n \"السبت\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"ن\",\n noon: \"ظ\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءً\",\n night: \"ليلاً\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهراً\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءً\",\n night: \"ليلاً\",\n },\n wide: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهراً\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءً\",\n night: \"ليلاً\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"ن\",\n noon: \"ظ\",\n morning: \"في الصباح\",\n afternoon: \"بعد الظهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهراً\",\n morning: \"في الصباح\",\n afternoon: \"بعد الظهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n wide: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n morning: \"في الصباح\",\n noon: \"ظهراً\",\n afternoon: \"بعد الظهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n return String(dirtyNumber);\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)/;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(ق|ب)/g,\n abbreviated: /^(ق.م|ب.م)/g,\n wide: /^(قبل الميلاد|بعد الميلاد)/g,\n};\nconst parseEraPatterns = {\n any: [/^ق/g, /^ب/g],\n};\nconst matchQuarterPatterns = {\n narrow: /^[1234]/,\n abbreviated: /^ر[1234]/,\n wide: /^الربع (الأول|الثاني|الثالث|الرابع)/,\n};\nconst parseQuarterPatterns = {\n wide: [/الربع الأول/, /الربع الثاني/, /الربع الثالث/, /الربع الرابع/],\n any: [/1/, /2/, /3/, /4/],\n};\n\nconst matchMonthPatterns = {\n narrow: /^(ي|ف|م|أ|س|ن|د)/,\n abbreviated: /^(ينا|فبر|مارس|أبريل|مايو|يونـ|يولـ|أغسـ|سبتـ|أكتـ|نوفـ|ديسـ)/,\n wide: /^(يناير|فبراير|مارس|أبريل|مايو|يونيو|يوليو|أغسطس|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^ي/,\n /^ف/,\n /^م/,\n /^أ/,\n /^م/,\n /^ي/,\n /^ي/,\n /^أ/,\n /^س/,\n /^أ/,\n /^ن/,\n /^د/,\n ],\n\n any: [\n /^ينا/,\n /^فبر/,\n /^مارس/,\n /^أبريل/,\n /^مايو/,\n /^يون/,\n /^يول/,\n /^أغس/,\n /^سبت/,\n /^أكت/,\n /^نوف/,\n /^ديس/,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^(ح|ن|ث|ر|خ|ج|س)/,\n short: /^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/,\n abbreviated: /^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/,\n wide: /^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/,\n};\nconst parseDayPatterns = {\n narrow: [/^ح/, /^ن/, /^ث/, /^ر/, /^خ/, /^ج/, /^س/],\n any: [/أحد/, /اثنين/, /ثلاثاء/, /أربعاء/, /خميس/, /جمعة/, /سبت/],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(ص|م|ن|ظ|في الصباح|بعد الظهر|في المساء|في الليل)/,\n abbreviated: /^(ص|م|نصف الليل|ظهراً|في الصباح|بعد الظهر|في المساء|في الليل)/,\n wide: /^(ص|م|نصف الليل|في الصباح|ظهراً|بعد الظهر|في المساء|في الليل)/,\n any: /^(ص|م|صباح|ظهر|مساء|ليل)/,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^ص/,\n pm: /^م/,\n midnight: /^ن/,\n noon: /^ظ/,\n morning: /^ص/,\n afternoon: /^بعد/,\n evening: /^م/,\n night: /^ل/,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n },\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./ar-EG/_lib/formatDistance.js\";\nimport { formatLong } from \"./ar-EG/_lib/formatLong.js\";\nimport { formatRelative } from \"./ar-EG/_lib/formatRelative.js\";\nimport { localize } from \"./ar-EG/_lib/localize.js\";\nimport { match } from \"./ar-EG/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Arabic locale (Egypt).\n * @language Arabic\n * @iso-639-2 ara\n * @author AbdAllah AbdElFattah [@AbdAllahAbdElFattah13](https://github.com/AbdAllahAbdElFattah13)\n */\nexport const arEG = {\n code: \"ar-EG\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default arEG;\n"],"names":["formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatRelativeLocale","formatRelative","_date","_baseDate","_options","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","localize","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","arEG"],"mappings":";yJAAA,MAAMA,EAAuB,CAC3B,iBAAkB,CAChB,IAAK,eACL,IAAK,iBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,QACL,IAAK,UACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,WAEb,iBAAkB,CAChB,IAAK,eACL,IAAK,iBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,QACL,IAAK,UACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,CACX,IAAK,aACL,IAAK,eACL,WAAY,wBACZ,MAAO,sBACX,EAEE,OAAQ,CACN,IAAK,OACL,IAAK,SACL,WAAY,kBACZ,MAAO,gBACX,EAEE,MAAO,CACL,IAAK,MACL,IAAK,QACL,WAAY,iBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,cACL,IAAK,gBACL,WAAY,yBACZ,MAAO,uBACX,EAEE,OAAQ,CACN,IAAK,QACL,IAAK,UACL,WAAY,mBACZ,MAAO,iBACX,EAEE,aAAc,CACZ,IAAK,YACL,IAAK,cACL,WAAY,uBACZ,MAAO,qBACX,EAEE,QAAS,CACP,IAAK,MACL,IAAK,QACL,WAAY,iBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,YACL,IAAK,cACL,WAAY,uBACZ,MAAO,qBACX,EAEE,OAAQ,CACN,IAAK,MACL,IAAK,QACL,WAAY,kBACZ,MAAO,eACX,EAEE,WAAY,CACV,IAAK,cACL,IAAK,gBACL,WAAY,yBACZ,MAAO,uBACX,EAEE,aAAc,CACZ,IAAK,cACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,CACA,EAEaC,EAAiB,CAACC,EAAOC,EAAOC,IAAY,CACvD,IAAIC,EAEJ,MAAMC,EAAaN,EAAqBE,CAAK,EAa7C,OAZI,OAAOI,GAAe,SACxBD,EAASC,EACAH,IAAU,EACnBE,EAASC,EAAW,IACXH,IAAU,EACnBE,EAASC,EAAW,IACXH,GAAS,GAClBE,EAASC,EAAW,WAAW,QAAQ,YAAa,OAAOH,CAAK,CAAC,EAEjEE,EAASC,EAAW,MAAM,QAAQ,YAAa,OAAOH,CAAK,CAAC,EAG1DC,GAAS,UACPA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,WAAWC,CAAM,GAEjB,OAAOA,CAAM,GAIjBA,CACT,ECpIME,EAAc,CAClB,KAAM,kBACN,KAAM,YACN,OAAQ,WACR,MAAO,QACT,EAEMC,EAAc,CAClB,KAAM,iBACN,KAAM,cACN,OAAQ,YACR,MAAO,QACT,EAEMC,EAAkB,CACtB,KAAM,6BACN,KAAM,6BACN,OAAQ,qBACR,MAAO,oBACT,EAEaC,EAAa,CACxB,KAAMC,EAAkB,CACtB,QAASJ,EACT,aAAc,MAClB,CAAG,EAED,KAAMI,EAAkB,CACtB,QAASH,EACT,aAAc,MAClB,CAAG,EAED,SAAUG,EAAkB,CAC1B,QAASF,EACT,aAAc,MAClB,CAAG,CACH,ECtCMG,EAAuB,CAC3B,SAAU,2BACV,UAAW,oBACX,MAAO,sBACP,SAAU,kBACV,SAAU,kBACV,MAAO,GACT,EAEaC,EAAiB,CAACX,EAAOY,EAAOC,EAAWC,IACtDJ,EAAqBV,CAAK,ECRtBe,EAAY,CAChB,OAAQ,CAAC,IAAK,GAAG,EACjB,YAAa,CAAC,MAAO,KAAK,EAC1B,KAAM,CAAC,cAAe,aAAa,CACrC,EAEMC,EAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,cAAe,eAAgB,eAAgB,cAAc,CACtE,EAEMC,EAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,MACA,MACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACJ,EAEE,KAAM,CACJ,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,QACJ,CACA,EAEMC,EAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAAK,EACjE,YAAa,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAAK,EAEvE,KAAM,CACJ,QACA,UACA,WACA,WACA,SACA,SACA,OACJ,CACA,EAEMC,EAAkB,CACtB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,IACV,KAAM,IACN,QAAS,SACT,UAAW,YACX,QAAS,QACT,MAAO,OACX,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,QACN,QAAS,SACT,UAAW,YACX,QAAS,QACT,MAAO,OACX,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,QACN,QAAS,SACT,UAAW,YACX,QAAS,QACT,MAAO,OACX,CACA,EAEMC,EAA4B,CAChC,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,IACV,KAAM,IACN,QAAS,YACT,UAAW,YACX,QAAS,YACT,MAAO,UACX,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,QACN,QAAS,YACT,UAAW,YACX,QAAS,YACT,MAAO,UACX,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,QAAS,YACT,KAAM,QACN,UAAW,YACX,QAAS,YACT,MAAO,UACX,CACA,EAEMC,EAAgB,CAACC,EAAaR,IAC3B,OAAOQ,CAAW,EAGdC,EAAW,CACtB,cAAAF,EAEA,IAAKG,EAAgB,CACnB,OAAQT,EACR,aAAc,MAClB,CAAG,EAED,QAASS,EAAgB,CACvB,OAAQR,EACR,aAAc,OACd,iBAAmBS,GAAYA,EAAU,CAC7C,CAAG,EAED,MAAOD,EAAgB,CACrB,OAAQP,EACR,aAAc,MAClB,CAAG,EAED,IAAKO,EAAgB,CACnB,OAAQN,EACR,aAAc,MAClB,CAAG,EAED,UAAWM,EAAgB,CACzB,OAAQL,EACR,aAAc,OACd,iBAAkBC,EAClB,uBAAwB,MAC5B,CAAG,CACH,EChKMM,EAA4B,SAC5BC,EAA4B,OAE5BC,EAAmB,CACvB,OAAQ,UACR,YAAa,cACb,KAAM,6BACR,EACMC,EAAmB,CACvB,IAAK,CAAC,MAAO,KAAK,CACpB,EACMC,EAAuB,CAC3B,OAAQ,UACR,YAAa,WACb,KAAM,qCACR,EACMC,EAAuB,CAC3B,KAAM,CAAC,cAAe,eAAgB,eAAgB,cAAc,EACpE,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,CAC1B,EAEMC,EAAqB,CACzB,OAAQ,mBACR,YAAa,gEACb,KAAM,+EACR,EACMC,EAAqB,CACzB,OAAQ,CACN,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACJ,EAEE,IAAK,CACH,OACA,OACA,QACA,SACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,MACJ,CACA,EAEMC,EAAmB,CACvB,OAAQ,mBACR,MAAO,2CACP,YAAa,2CACb,KAAM,wDACR,EACMC,EAAmB,CACvB,OAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACjD,IAAK,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAAK,CACjE,EAEMC,EAAyB,CAC7B,OAAQ,oDACR,YAAa,gEACb,KAAM,gEACN,IAAK,0BACP,EACMC,EAAyB,CAC7B,IAAK,CACH,GAAI,KACJ,GAAI,KACJ,SAAU,KACV,KAAM,KACN,QAAS,KACT,UAAW,OACX,QAAS,KACT,MAAO,IACX,CACA,EAEaC,EAAQ,CACnB,cAAeC,EAAoB,CACjC,aAAcb,EACd,aAAcC,EACd,cAAe,SAAUa,EAAO,CAC9B,OAAO,SAASA,EAAO,EAAE,CAC3B,CACJ,CAAG,EAED,IAAKC,EAAa,CAChB,cAAeb,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,QAASY,EAAa,CACpB,cAAeX,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,MACnB,cAAgBW,GAAUA,EAAQ,CACtC,CAAG,EAED,MAAOD,EAAa,CAClB,cAAeT,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,IAAKQ,EAAa,CAChB,cAAeP,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,UAAWM,EAAa,CACtB,cAAeL,EACf,kBAAmB,MACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,CACH,EC1HaM,EAAO,CAClB,KAAM,QACN,eAAgB5C,EAChB,WAAYS,EACZ,eAAgBG,EAChB,SAAUY,EACV,MAAOe,EACP,QAAS,CACP,aAAc,EACd,sBAAuB,CAC3B,CACA","x_google_ignoreList":[0,1,2,3,4,5]} \ No newline at end of file diff --git a/js/ar-EG-Bv1NkNUl.chunk.mjs.map.license b/js/ar-EG-Bv1NkNUl.chunk.mjs.map.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-EG-Bv1NkNUl.chunk.mjs.map.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-MA-CisDbuvT.chunk.mjs b/js/ar-MA-CisDbuvT.chunk.mjs deleted file mode 100644 index bc131406..00000000 --- a/js/ar-MA-CisDbuvT.chunk.mjs +++ /dev/null @@ -1,3 +0,0 @@ -/*! third party licenses: js/vendor.LICENSE.txt */ -import{b as r,c as i,d as a,e as A}from"./index-Cr1DLTt7.chunk.mjs";import"./user_migration-personalSettings.mjs";import"./be-tarask-CzbVxLq7.chunk.mjs";const d={lessThanXSeconds:{one:"أقل من ثانية واحدة",two:"أقل من ثانتين",threeToTen:"أقل من {{count}} ثواني",other:"أقل من {{count}} ثانية"},xSeconds:{one:"ثانية واحدة",two:"ثانتين",threeToTen:"{{count}} ثواني",other:"{{count}} ثانية"},halfAMinute:"نصف دقيقة",lessThanXMinutes:{one:"أقل من دقيقة",two:"أقل من دقيقتين",threeToTen:"أقل من {{count}} دقائق",other:"أقل من {{count}} دقيقة"},xMinutes:{one:"دقيقة واحدة",two:"دقيقتين",threeToTen:"{{count}} دقائق",other:"{{count}} دقيقة"},aboutXHours:{one:"ساعة واحدة تقريباً",two:"ساعتين تقريباً",threeToTen:"{{count}} ساعات تقريباً",other:"{{count}} ساعة تقريباً"},xHours:{one:"ساعة واحدة",two:"ساعتين",threeToTen:"{{count}} ساعات",other:"{{count}} ساعة"},xDays:{one:"يوم واحد",two:"يومين",threeToTen:"{{count}} أيام",other:"{{count}} يوم"},aboutXWeeks:{one:"أسبوع واحد تقريباً",two:"أسبوعين تقريباً",threeToTen:"{{count}} أسابيع تقريباً",other:"{{count}} أسبوع تقريباً"},xWeeks:{one:"أسبوع واحد",two:"أسبوعين",threeToTen:"{{count}} أسابيع",other:"{{count}} أسبوع"},aboutXMonths:{one:"شهر واحد تقريباً",two:"شهرين تقريباً",threeToTen:"{{count}} أشهر تقريباً",other:"{{count}} شهر تقريباً"},xMonths:{one:"شهر واحد",two:"شهرين",threeToTen:"{{count}} أشهر",other:"{{count}} شهر"},aboutXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"},xYears:{one:"عام واحد",two:"عامين",threeToTen:"{{count}} أعوام",other:"{{count}} عام"},overXYears:{one:"أكثر من عام",two:"أكثر من عامين",threeToTen:"أكثر من {{count}} أعوام",other:"أكثر من {{count}} عام"},almostXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"}},h=(u,n,o)=>{o=o||{};const t=d[u];let e;return typeof t=="string"?e=t:n===1?e=t.one:n===2?e=t.two:n<=10?e=t.threeToTen.replace("{{count}}",String(n)):e=t.other.replace("{{count}}",String(n)),o.addSuffix?o.comparison&&o.comparison>0?"في خلال "+e:"منذ "+e:e},s={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},m={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},c={full:"{{date}} 'عند' {{time}}",long:"{{date}} 'عند' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},l={date:r({formats:s,defaultWidth:"full"}),time:r({formats:m,defaultWidth:"full"}),dateTime:r({formats:c,defaultWidth:"full"})},B={lastWeek:"'أخر' eeee 'عند' p",yesterday:"'أمس عند' p",today:"'اليوم عند' p",tomorrow:"'غداً عند' p",nextWeek:"eeee 'عند' p",other:"P"},w=(u,n,o,t)=>B[u],g={narrow:["ق","ب"],abbreviated:["ق.م.","ب.م."],wide:["قبل الميلاد","بعد الميلاد"]},f={narrow:["1","2","3","4"],abbreviated:["ر1","ر2","ر3","ر4"],wide:["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"]},F={narrow:["ي","ف","م","أ","م","ي","ي","غ","ش","أ","ن","د"],abbreviated:["ينا","فبر","مارس","أبريل","ماي","يونـ","يولـ","غشت","شتنـ","أكتـ","نونـ","دجنـ"],wide:["يناير","فبراير","مارس","أبريل","ماي","يونيو","يوليوز","غشت","شتنبر","أكتوبر","نونبر","دجنبر"]},T={narrow:["ح","ن","ث","ر","خ","ج","س"],short:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],abbreviated:["أحد","اثنـ","ثلا","أربـ","خميـ","جمعة","سبت"],wide:["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},b={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"}},p={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"في الصباح",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"في الصباح",afternoon:"بعد الظهر",evening:"في المساء",night:"في الليل"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"}},v=u=>String(u),y={ordinalNumber:v,era:i({values:g,defaultWidth:"wide"}),quarter:i({values:f,defaultWidth:"wide",argumentCallback:u=>Number(u)-1}),month:i({values:F,defaultWidth:"wide"}),day:i({values:T,defaultWidth:"wide"}),dayPeriod:i({values:b,defaultWidth:"wide",formattingValues:p,defaultFormattingWidth:"wide"})},D=/^(\d+)(th|st|nd|rd)?/i,M=/\d+/i,W={narrow:/^(ق|ب)/i,abbreviated:/^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\s?)/i,wide:/^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i},P={any:[/^قبل/i,/^بعد/i]},x={narrow:/^[1234]/i,abbreviated:/^ر[1234]/i,wide:/^الربع [1234]/i},C={any:[/1/i,/2/i,/3/i,/4/i]},E={narrow:/^[يفمأمسند]/i,abbreviated:/^(ين|ف|مار|أب|ماي|يون|يول|غش|شت|أك|ن|د)/i,wide:/^(ين|ف|مار|أب|ماي|يون|يول|غش|شت|أك|ن|د)/i},k={narrow:[/^ي/i,/^ف/i,/^م/i,/^أ/i,/^م/i,/^ي/i,/^ي/i,/^غ/i,/^ش/i,/^أ/i,/^ن/i,/^د/i],any:[/^ين/i,/^فب/i,/^مار/i,/^أب/i,/^ماي/i,/^يون/i,/^يول/i,/^غشت/i,/^ش/i,/^أك/i,/^ن/i,/^د/i]},X={narrow:/^[حنثرخجس]/i,short:/^(أحد|إثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,abbreviated:/^(أحد|إثن|ثلا|أرب|خمي|جمعة|سبت)/i,wide:/^(الأحد|الإثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i},S={narrow:[/^ح/i,/^ن/i,/^ث/i,/^ر/i,/^خ/i,/^ج/i,/^س/i],wide:[/^الأحد/i,/^الإثنين/i,/^الثلاثاء/i,/^الأربعاء/i,/^الخميس/i,/^الجمعة/i,/^السبت/i],any:[/^أح/i,/^إث/i,/^ث/i,/^أر/i,/^خ/i,/^ج/i,/^س/i]},z={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},N={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Y={ordinalNumber:A({matchPattern:D,parsePattern:M,valueCallback:u=>parseInt(u,10)}),era:a({matchPatterns:W,defaultMatchWidth:"wide",parsePatterns:P,defaultParseWidth:"any"}),quarter:a({matchPatterns:x,defaultMatchWidth:"wide",parsePatterns:C,defaultParseWidth:"any",valueCallback:u=>Number(u)+1}),month:a({matchPatterns:E,defaultMatchWidth:"wide",parsePatterns:k,defaultParseWidth:"any"}),day:a({matchPatterns:X,defaultMatchWidth:"wide",parsePatterns:S,defaultParseWidth:"any"}),dayPeriod:a({matchPatterns:z,defaultMatchWidth:"any",parsePatterns:N,defaultParseWidth:"any"})},V={code:"ar-MA",formatDistance:h,formatLong:l,formatRelative:w,localize:y,match:Y,options:{weekStartsOn:1,firstWeekContainsDate:1}};export{V as arMA}; -//# sourceMappingURL=ar-MA-CisDbuvT.chunk.mjs.map diff --git a/js/ar-MA-CisDbuvT.chunk.mjs.license b/js/ar-MA-CisDbuvT.chunk.mjs.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-MA-CisDbuvT.chunk.mjs.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-MA-CisDbuvT.chunk.mjs.map b/js/ar-MA-CisDbuvT.chunk.mjs.map deleted file mode 100644 index 76d1c28d..00000000 --- a/js/ar-MA-CisDbuvT.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ar-MA-CisDbuvT.chunk.mjs","sources":["../node_modules/date-fns/locale/ar-MA/_lib/formatDistance.js","../node_modules/date-fns/locale/ar-MA/_lib/formatLong.js","../node_modules/date-fns/locale/ar-MA/_lib/formatRelative.js","../node_modules/date-fns/locale/ar-MA/_lib/localize.js","../node_modules/date-fns/locale/ar-MA/_lib/match.js","../node_modules/date-fns/locale/ar-MA.js"],"sourcesContent":["const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"أقل من ثانية واحدة\",\n two: \"أقل من ثانتين\",\n threeToTen: \"أقل من {{count}} ثواني\",\n other: \"أقل من {{count}} ثانية\",\n },\n\n xSeconds: {\n one: \"ثانية واحدة\",\n two: \"ثانتين\",\n threeToTen: \"{{count}} ثواني\",\n other: \"{{count}} ثانية\",\n },\n\n halfAMinute: \"نصف دقيقة\",\n\n lessThanXMinutes: {\n one: \"أقل من دقيقة\",\n two: \"أقل من دقيقتين\",\n threeToTen: \"أقل من {{count}} دقائق\",\n other: \"أقل من {{count}} دقيقة\",\n },\n\n xMinutes: {\n one: \"دقيقة واحدة\",\n two: \"دقيقتين\",\n threeToTen: \"{{count}} دقائق\",\n other: \"{{count}} دقيقة\",\n },\n\n aboutXHours: {\n one: \"ساعة واحدة تقريباً\",\n two: \"ساعتين تقريباً\",\n threeToTen: \"{{count}} ساعات تقريباً\",\n other: \"{{count}} ساعة تقريباً\",\n },\n\n xHours: {\n one: \"ساعة واحدة\",\n two: \"ساعتين\",\n threeToTen: \"{{count}} ساعات\",\n other: \"{{count}} ساعة\",\n },\n\n xDays: {\n one: \"يوم واحد\",\n two: \"يومين\",\n threeToTen: \"{{count}} أيام\",\n other: \"{{count}} يوم\",\n },\n\n aboutXWeeks: {\n one: \"أسبوع واحد تقريباً\",\n two: \"أسبوعين تقريباً\",\n threeToTen: \"{{count}} أسابيع تقريباً\",\n other: \"{{count}} أسبوع تقريباً\",\n },\n\n xWeeks: {\n one: \"أسبوع واحد\",\n two: \"أسبوعين\",\n threeToTen: \"{{count}} أسابيع\",\n other: \"{{count}} أسبوع\",\n },\n\n aboutXMonths: {\n one: \"شهر واحد تقريباً\",\n two: \"شهرين تقريباً\",\n threeToTen: \"{{count}} أشهر تقريباً\",\n other: \"{{count}} شهر تقريباً\",\n },\n\n xMonths: {\n one: \"شهر واحد\",\n two: \"شهرين\",\n threeToTen: \"{{count}} أشهر\",\n other: \"{{count}} شهر\",\n },\n\n aboutXYears: {\n one: \"عام واحد تقريباً\",\n two: \"عامين تقريباً\",\n threeToTen: \"{{count}} أعوام تقريباً\",\n other: \"{{count}} عام تقريباً\",\n },\n\n xYears: {\n one: \"عام واحد\",\n two: \"عامين\",\n threeToTen: \"{{count}} أعوام\",\n other: \"{{count}} عام\",\n },\n\n overXYears: {\n one: \"أكثر من عام\",\n two: \"أكثر من عامين\",\n threeToTen: \"أكثر من {{count}} أعوام\",\n other: \"أكثر من {{count}} عام\",\n },\n\n almostXYears: {\n one: \"عام واحد تقريباً\",\n two: \"عامين تقريباً\",\n threeToTen: \"{{count}} أعوام تقريباً\",\n other: \"{{count}} عام تقريباً\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n options = options || {};\n\n const usageGroup = formatDistanceLocale[token];\n let result;\n if (typeof usageGroup === \"string\") {\n result = usageGroup;\n } else if (count === 1) {\n result = usageGroup.one;\n } else if (count === 2) {\n result = usageGroup.two;\n } else if (count <= 10) {\n result = usageGroup.threeToTen.replace(\"{{count}}\", String(count));\n } else {\n result = usageGroup.other.replace(\"{{count}}\", String(count));\n }\n\n if (options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"في خلال \" + result;\n } else {\n return \"منذ \" + result;\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'عند' {{time}}\",\n long: \"{{date}} 'عند' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'أخر' eeee 'عند' p\",\n yesterday: \"'أمس عند' p\",\n today: \"'اليوم عند' p\",\n tomorrow: \"'غداً عند' p\",\n nextWeek: \"eeee 'عند' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) => {\n return formatRelativeLocale[token];\n};\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"ق\", \"ب\"],\n abbreviated: [\"ق.م.\", \"ب.م.\"],\n wide: [\"قبل الميلاد\", \"بعد الميلاد\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"ر1\", \"ر2\", \"ر3\", \"ر4\"],\n wide: [\"الربع الأول\", \"الربع الثاني\", \"الربع الثالث\", \"الربع الرابع\"],\n};\n\nconst monthValues = {\n narrow: [\"ي\", \"ف\", \"م\", \"أ\", \"م\", \"ي\", \"ي\", \"غ\", \"ش\", \"أ\", \"ن\", \"د\"],\n abbreviated: [\n \"ينا\",\n \"فبر\",\n \"مارس\",\n \"أبريل\",\n \"ماي\",\n \"يونـ\",\n \"يولـ\",\n \"غشت\",\n \"شتنـ\",\n \"أكتـ\",\n \"نونـ\",\n \"دجنـ\",\n ],\n\n wide: [\n \"يناير\",\n \"فبراير\",\n \"مارس\",\n \"أبريل\",\n \"ماي\",\n \"يونيو\",\n \"يوليوز\",\n \"غشت\",\n \"شتنبر\",\n \"أكتوبر\",\n \"نونبر\",\n \"دجنبر\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"ح\", \"ن\", \"ث\", \"ر\", \"خ\", \"ج\", \"س\"],\n short: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n abbreviated: [\"أحد\", \"اثنـ\", \"ثلا\", \"أربـ\", \"خميـ\", \"جمعة\", \"سبت\"],\n wide: [\n \"الأحد\",\n \"الإثنين\",\n \"الثلاثاء\",\n \"الأربعاء\",\n \"الخميس\",\n \"الجمعة\",\n \"السبت\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"ن\",\n noon: \"ظ\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءاً\",\n night: \"ليلاً\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءاً\",\n night: \"ليلاً\",\n },\n wide: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءاً\",\n night: \"ليلاً\",\n },\n};\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"ن\",\n noon: \"ظ\",\n morning: \"في الصباح\",\n afternoon: \"بعد الظـهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"في الصباح\",\n afternoon: \"بعد الظهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n wide: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظـهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber) => {\n return String(dirtyNumber);\n};\n\nexport const localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => Number(quarter) - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\nimport { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(ق|ب)/i,\n abbreviated: /^(ق\\.?\\s?م\\.?|ق\\.?\\s?م\\.?\\s?|a\\.?\\s?d\\.?|c\\.?\\s?)/i,\n wide: /^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i,\n};\nconst parseEraPatterns = {\n any: [/^قبل/i, /^بعد/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^ر[1234]/i,\n wide: /^الربع [1234]/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[يفمأمسند]/i,\n abbreviated: /^(ين|ف|مار|أب|ماي|يون|يول|غش|شت|أك|ن|د)/i,\n wide: /^(ين|ف|مار|أب|ماي|يون|يول|غش|شت|أك|ن|د)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^ي/i,\n /^ف/i,\n /^م/i,\n /^أ/i,\n /^م/i,\n /^ي/i,\n /^ي/i,\n /^غ/i,\n /^ش/i,\n /^أ/i,\n /^ن/i,\n /^د/i,\n ],\n\n any: [\n /^ين/i,\n /^فب/i,\n /^مار/i,\n /^أب/i,\n /^ماي/i,\n /^يون/i,\n /^يول/i,\n /^غشت/i,\n /^ش/i,\n /^أك/i,\n /^ن/i,\n /^د/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[حنثرخجس]/i,\n short: /^(أحد|إثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,\n abbreviated: /^(أحد|إثن|ثلا|أرب|خمي|جمعة|سبت)/i,\n wide: /^(الأحد|الإثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^ح/i, /^ن/i, /^ث/i, /^ر/i, /^خ/i, /^ج/i, /^س/i],\n wide: [\n /^الأحد/i,\n /^الإثنين/i,\n /^الثلاثاء/i,\n /^الأربعاء/i,\n /^الخميس/i,\n /^الجمعة/i,\n /^السبت/i,\n ],\n\n any: [/^أح/i, /^إث/i, /^ث/i, /^أر/i, /^خ/i, /^ج/i, /^س/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => Number(index) + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./ar-MA/_lib/formatDistance.js\";\nimport { formatLong } from \"./ar-MA/_lib/formatLong.js\";\nimport { formatRelative } from \"./ar-MA/_lib/formatRelative.js\";\nimport { localize } from \"./ar-MA/_lib/localize.js\";\nimport { match } from \"./ar-MA/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Arabic locale (Moroccan Arabic).\n * @language Moroccan Arabic\n * @iso-639-2 ara\n * @author Achraf Rrami [@rramiachraf](https://github.com/rramiachraf)\n */\nexport const arMA = {\n code: \"ar-MA\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n // Monday is 1\n weekStartsOn: 1,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default arMA;\n"],"names":["formatDistanceLocale","formatDistance","token","count","options","usageGroup","result","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatRelativeLocale","formatRelative","_date","_baseDate","_options","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","localize","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","arMA"],"mappings":";yJAAA,MAAMA,EAAuB,CAC3B,iBAAkB,CAChB,IAAK,qBACL,IAAK,gBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,cACL,IAAK,SACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,YAEb,iBAAkB,CAChB,IAAK,eACL,IAAK,iBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,cACL,IAAK,UACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,CACX,IAAK,qBACL,IAAK,iBACL,WAAY,0BACZ,MAAO,wBACX,EAEE,OAAQ,CACN,IAAK,aACL,IAAK,SACL,WAAY,kBACZ,MAAO,gBACX,EAEE,MAAO,CACL,IAAK,WACL,IAAK,QACL,WAAY,iBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,qBACL,IAAK,kBACL,WAAY,2BACZ,MAAO,yBACX,EAEE,OAAQ,CACN,IAAK,aACL,IAAK,UACL,WAAY,mBACZ,MAAO,iBACX,EAEE,aAAc,CACZ,IAAK,mBACL,IAAK,gBACL,WAAY,yBACZ,MAAO,uBACX,EAEE,QAAS,CACP,IAAK,WACL,IAAK,QACL,WAAY,iBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,mBACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,EAEE,OAAQ,CACN,IAAK,WACL,IAAK,QACL,WAAY,kBACZ,MAAO,eACX,EAEE,WAAY,CACV,IAAK,cACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,EAEE,aAAc,CACZ,IAAK,mBACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,CACA,EAEaC,EAAiB,CAACC,EAAOC,EAAOC,IAAY,CACvDA,EAAUA,GAAW,CAAA,EAErB,MAAMC,EAAaL,EAAqBE,CAAK,EAC7C,IAAII,EAaJ,OAZI,OAAOD,GAAe,SACxBC,EAASD,EACAF,IAAU,EACnBG,EAASD,EAAW,IACXF,IAAU,EACnBG,EAASD,EAAW,IACXF,GAAS,GAClBG,EAASD,EAAW,WAAW,QAAQ,YAAa,OAAOF,CAAK,CAAC,EAEjEG,EAASD,EAAW,MAAM,QAAQ,YAAa,OAAOF,CAAK,CAAC,EAG1DC,EAAQ,UACNA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,WAAaE,EAEb,OAASA,EAIbA,CACT,ECrIMC,EAAc,CAClB,KAAM,mBACN,KAAM,aACN,OAAQ,WACR,MAAO,YACT,EAEMC,EAAc,CAClB,KAAM,iBACN,KAAM,cACN,OAAQ,YACR,MAAO,QACT,EAEMC,EAAkB,CACtB,KAAM,0BACN,KAAM,0BACN,OAAQ,qBACR,MAAO,oBACT,EAEaC,EAAa,CACxB,KAAMC,EAAkB,CACtB,QAASJ,EACT,aAAc,MAClB,CAAG,EAED,KAAMI,EAAkB,CACtB,QAASH,EACT,aAAc,MAClB,CAAG,EAED,SAAUG,EAAkB,CAC1B,QAASF,EACT,aAAc,MAClB,CAAG,CACH,ECtCMG,EAAuB,CAC3B,SAAU,qBACV,UAAW,cACX,MAAO,gBACP,SAAU,eACV,SAAU,eACV,MAAO,GACT,EAEaC,EAAiB,CAACX,EAAOY,EAAOC,EAAWC,IAC/CJ,EAAqBV,CAAK,ECR7Be,EAAY,CAChB,OAAQ,CAAC,IAAK,GAAG,EACjB,YAAa,CAAC,OAAQ,MAAM,EAC5B,KAAM,CAAC,cAAe,aAAa,CACrC,EAEMC,EAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,cAAe,eAAgB,eAAgB,cAAc,CACtE,EAEMC,EAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,MACA,MACA,OACA,QACA,MACA,OACA,OACA,MACA,OACA,OACA,OACA,MACJ,EAEE,KAAM,CACJ,QACA,SACA,OACA,QACA,MACA,QACA,SACA,MACA,QACA,SACA,QACA,OACJ,CACA,EAEMC,EAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAAK,EACjE,YAAa,CAAC,MAAO,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,KAAK,EACjE,KAAM,CACJ,QACA,UACA,WACA,WACA,SACA,SACA,OACJ,CACA,EAEMC,EAAkB,CACtB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,IACV,KAAM,IACN,QAAS,SACT,UAAW,YACX,QAAS,SACT,MAAO,OACX,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,SACT,UAAW,YACX,QAAS,SACT,MAAO,OACX,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,SACT,UAAW,YACX,QAAS,SACT,MAAO,OACX,CACA,EACMC,EAA4B,CAChC,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,IACV,KAAM,IACN,QAAS,YACT,UAAW,aACX,QAAS,YACT,MAAO,UACX,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,YACT,UAAW,YACX,QAAS,YACT,MAAO,UACX,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,SACT,UAAW,aACX,QAAS,YACT,MAAO,UACX,CACA,EAEMC,EAAiBC,GACd,OAAOA,CAAW,EAGdC,EAAW,CACtB,cAAeF,EAEf,IAAKG,EAAgB,CACnB,OAAQT,EACR,aAAc,MAClB,CAAG,EAED,QAASS,EAAgB,CACvB,OAAQR,EACR,aAAc,OACd,iBAAmBS,GAAY,OAAOA,CAAO,EAAI,CACrD,CAAG,EAED,MAAOD,EAAgB,CACrB,OAAQP,EACR,aAAc,MAClB,CAAG,EAED,IAAKO,EAAgB,CACnB,OAAQN,EACR,aAAc,MAClB,CAAG,EAED,UAAWM,EAAgB,CACzB,OAAQL,EACR,aAAc,OACd,iBAAkBC,EAClB,uBAAwB,MAC5B,CAAG,CACH,EC9JMM,EAA4B,wBAC5BC,EAA4B,OAE5BC,EAAmB,CACvB,OAAQ,UACR,YAAa,qDACb,KAAM,qDACR,EACMC,EAAmB,CACvB,IAAK,CAAC,QAAS,OAAO,CACxB,EAEMC,EAAuB,CAC3B,OAAQ,WACR,YAAa,YACb,KAAM,gBACR,EACMC,EAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EAEMC,EAAqB,CACzB,OAAQ,eACR,YAAa,2CACb,KAAM,0CACR,EACMC,EAAqB,CACzB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACJ,EAEE,IAAK,CACH,OACA,OACA,QACA,OACA,QACA,QACA,QACA,QACA,MACA,OACA,MACA,KACJ,CACA,EAEMC,EAAmB,CACvB,OAAQ,cACR,MAAO,4CACP,YAAa,mCACb,KAAM,yDACR,EACMC,EAAmB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EACxD,KAAM,CACJ,UACA,YACA,aACA,aACA,WACA,WACA,SACJ,EAEE,IAAK,CAAC,OAAQ,OAAQ,MAAO,OAAQ,MAAO,MAAO,KAAK,CAC1D,EAEMC,EAAyB,CAC7B,OAAQ,6DACR,IAAK,gFACP,EACMC,EAAyB,CAC7B,IAAK,CACH,GAAI,MACJ,GAAI,MACJ,SAAU,OACV,KAAM,OACN,QAAS,WACT,UAAW,aACX,QAAS,WACT,MAAO,QACX,CACA,EAEaC,EAAQ,CACnB,cAAeC,EAAoB,CACjC,aAAcb,EACd,aAAcC,EACd,cAAgBa,GAAU,SAASA,EAAO,EAAE,CAChD,CAAG,EAED,IAAKC,EAAa,CAChB,cAAeb,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,QAASY,EAAa,CACpB,cAAeX,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,MACnB,cAAgBW,GAAU,OAAOA,CAAK,EAAI,CAC9C,CAAG,EAED,MAAOD,EAAa,CAClB,cAAeT,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,IAAKQ,EAAa,CAChB,cAAeP,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,UAAWM,EAAa,CACtB,cAAeL,EACf,kBAAmB,MACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,CACH,EChIaM,EAAO,CAClB,KAAM,QACN,eAAgB5C,EAChB,WAAYS,EACZ,eAAgBG,EAChB,SAAUY,EACV,MAAOe,EACP,QAAS,CAEP,aAAc,EACd,sBAAuB,CAC3B,CACA","x_google_ignoreList":[0,1,2,3,4,5]} \ No newline at end of file diff --git a/js/ar-MA-CisDbuvT.chunk.mjs.map.license b/js/ar-MA-CisDbuvT.chunk.mjs.map.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-MA-CisDbuvT.chunk.mjs.map.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-SA-Cb6z3-HB.chunk.mjs b/js/ar-SA-Cb6z3-HB.chunk.mjs deleted file mode 100644 index 0bb3f486..00000000 --- a/js/ar-SA-Cb6z3-HB.chunk.mjs +++ /dev/null @@ -1,3 +0,0 @@ -/*! third party licenses: js/vendor.LICENSE.txt */ -import{b as r,c as o,d as i,e as A}from"./index-Cr1DLTt7.chunk.mjs";import"./user_migration-personalSettings.mjs";import"./be-tarask-CzbVxLq7.chunk.mjs";const d={lessThanXSeconds:{one:"أقل من ثانية واحدة",two:"أقل من ثانتين",threeToTen:"أقل من {{count}} ثواني",other:"أقل من {{count}} ثانية"},xSeconds:{one:"ثانية واحدة",two:"ثانتين",threeToTen:"{{count}} ثواني",other:"{{count}} ثانية"},halfAMinute:"نصف دقيقة",lessThanXMinutes:{one:"أقل من دقيقة",two:"أقل من دقيقتين",threeToTen:"أقل من {{count}} دقائق",other:"أقل من {{count}} دقيقة"},xMinutes:{one:"دقيقة واحدة",two:"دقيقتين",threeToTen:"{{count}} دقائق",other:"{{count}} دقيقة"},aboutXHours:{one:"ساعة واحدة تقريباً",two:"ساعتين تقريباً",threeToTen:"{{count}} ساعات تقريباً",other:"{{count}} ساعة تقريباً"},xHours:{one:"ساعة واحدة",two:"ساعتين",threeToTen:"{{count}} ساعات",other:"{{count}} ساعة"},xDays:{one:"يوم واحد",two:"يومين",threeToTen:"{{count}} أيام",other:"{{count}} يوم"},aboutXWeeks:{one:"أسبوع واحد تقريباً",two:"أسبوعين تقريباً",threeToTen:"{{count}} أسابيع تقريباً",other:"{{count}} أسبوع تقريباً"},xWeeks:{one:"أسبوع واحد",two:"أسبوعين",threeToTen:"{{count}} أسابيع",other:"{{count}} أسبوع"},aboutXMonths:{one:"شهر واحد تقريباً",two:"شهرين تقريباً",threeToTen:"{{count}} أشهر تقريباً",other:"{{count}} شهر تقريباً"},xMonths:{one:"شهر واحد",two:"شهرين",threeToTen:"{{count}} أشهر",other:"{{count}} شهر"},aboutXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"},xYears:{one:"عام واحد",two:"عامين",threeToTen:"{{count}} أعوام",other:"{{count}} عام"},overXYears:{one:"أكثر من عام",two:"أكثر من عامين",threeToTen:"أكثر من {{count}} أعوام",other:"أكثر من {{count}} عام"},almostXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"}},h=(u,t,a)=>{let e;const n=d[u];return typeof n=="string"?e=n:t===1?e=n.one:t===2?e=n.two:t<=10?e=n.threeToTen.replace("{{count}}",String(t)):e=n.other.replace("{{count}}",String(t)),a?.addSuffix?a.comparison&&a.comparison>0?"في خلال "+e:"منذ "+e:e},s={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},m={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},c={full:"{{date}} 'عند' {{time}}",long:"{{date}} 'عند' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},l={date:r({formats:s,defaultWidth:"full"}),time:r({formats:m,defaultWidth:"full"}),dateTime:r({formats:c,defaultWidth:"full"})},B={lastWeek:"'أخر' eeee 'عند' p",yesterday:"'أمس عند' p",today:"'اليوم عند' p",tomorrow:"'غداً عند' p",nextWeek:"eeee 'عند' p",other:"P"},w=(u,t,a,e)=>B[u],g={narrow:["ق","ب"],abbreviated:["ق.م.","ب.م."],wide:["قبل الميلاد","بعد الميلاد"]},f={narrow:["1","2","3","4"],abbreviated:["ر1","ر2","ر3","ر4"],wide:["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"]},F={narrow:["ي","ف","م","أ","م","ي","ي","أ","س","أ","ن","د"],abbreviated:["ينا","فبر","مارس","أبريل","مايو","يونـ","يولـ","أغسـ","سبتـ","أكتـ","نوفـ","ديسـ"],wide:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"]},T={narrow:["ح","ن","ث","ر","خ","ج","س"],short:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],abbreviated:["أحد","اثنـ","ثلا","أربـ","خميـ","جمعة","سبت"],wide:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},p={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"}},b={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"في الصباح",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"في الصباح",afternoon:"بعد الظهر",evening:"في المساء",night:"في الليل"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"}},v=u=>String(u),y={ordinalNumber:v,era:o({values:g,defaultWidth:"wide"}),quarter:o({values:f,defaultWidth:"wide",argumentCallback:u=>u-1}),month:o({values:F,defaultWidth:"wide"}),day:o({values:T,defaultWidth:"wide"}),dayPeriod:o({values:p,defaultWidth:"wide",formattingValues:b,defaultFormattingWidth:"wide"})},D=/^(\d+)(th|st|nd|rd)?/i,W=/\d+/i,M={narrow:/^(ق|ب)/i,abbreviated:/^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\s?)/i,wide:/^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i},P={any:[/^قبل/i,/^بعد/i]},x={narrow:/^[1234]/i,abbreviated:/^ر[1234]/i,wide:/^الربع [1234]/i},E={any:[/1/i,/2/i,/3/i,/4/i]},k={narrow:/^[يفمأمسند]/i,abbreviated:/^(ين|ف|مار|أب|ماي|يون|يول|أغ|س|أك|ن|د)/i,wide:/^(ين|ف|مار|أب|ماي|يون|يول|أغ|س|أك|ن|د)/i},S={narrow:[/^ي/i,/^ف/i,/^م/i,/^أ/i,/^م/i,/^ي/i,/^ي/i,/^أ/i,/^س/i,/^أ/i,/^ن/i,/^د/i],any:[/^ين/i,/^ف/i,/^مار/i,/^أب/i,/^ماي/i,/^يون/i,/^يول/i,/^أغ/i,/^س/i,/^أك/i,/^ن/i,/^د/i]},C={narrow:/^[حنثرخجس]/i,short:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,abbreviated:/^(أحد|اثن|ثلا|أرب|خمي|جمعة|سبت)/i,wide:/^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i},X={narrow:[/^ح/i,/^ن/i,/^ث/i,/^ر/i,/^خ/i,/^ج/i,/^س/i],wide:[/^الأحد/i,/^الاثنين/i,/^الثلاثاء/i,/^الأربعاء/i,/^الخميس/i,/^الجمعة/i,/^السبت/i],any:[/^أح/i,/^اث/i,/^ث/i,/^أر/i,/^خ/i,/^ج/i,/^س/i]},z={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Y={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},q={ordinalNumber:A({matchPattern:D,parsePattern:W,valueCallback:u=>parseInt(u,10)}),era:i({matchPatterns:M,defaultMatchWidth:"wide",parsePatterns:P,defaultParseWidth:"any"}),quarter:i({matchPatterns:x,defaultMatchWidth:"wide",parsePatterns:E,defaultParseWidth:"any",valueCallback:u=>u+1}),month:i({matchPatterns:k,defaultMatchWidth:"wide",parsePatterns:S,defaultParseWidth:"any"}),day:i({matchPatterns:C,defaultMatchWidth:"wide",parsePatterns:X,defaultParseWidth:"any"}),dayPeriod:i({matchPatterns:z,defaultMatchWidth:"any",parsePatterns:Y,defaultParseWidth:"any"})},V={code:"ar-SA",formatDistance:h,formatLong:l,formatRelative:w,localize:y,match:q,options:{weekStartsOn:0,firstWeekContainsDate:1}};export{V as arSA}; -//# sourceMappingURL=ar-SA-Cb6z3-HB.chunk.mjs.map diff --git a/js/ar-SA-Cb6z3-HB.chunk.mjs.license b/js/ar-SA-Cb6z3-HB.chunk.mjs.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-SA-Cb6z3-HB.chunk.mjs.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-SA-Cb6z3-HB.chunk.mjs.map b/js/ar-SA-Cb6z3-HB.chunk.mjs.map deleted file mode 100644 index 192fc810..00000000 --- a/js/ar-SA-Cb6z3-HB.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ar-SA-Cb6z3-HB.chunk.mjs","sources":["../node_modules/date-fns/locale/ar-SA/_lib/formatDistance.js","../node_modules/date-fns/locale/ar-SA/_lib/formatLong.js","../node_modules/date-fns/locale/ar-SA/_lib/formatRelative.js","../node_modules/date-fns/locale/ar-SA/_lib/localize.js","../node_modules/date-fns/locale/ar-SA/_lib/match.js","../node_modules/date-fns/locale/ar-SA.js"],"sourcesContent":["const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"أقل من ثانية واحدة\",\n two: \"أقل من ثانتين\",\n threeToTen: \"أقل من {{count}} ثواني\",\n other: \"أقل من {{count}} ثانية\",\n },\n\n xSeconds: {\n one: \"ثانية واحدة\",\n two: \"ثانتين\",\n threeToTen: \"{{count}} ثواني\",\n other: \"{{count}} ثانية\",\n },\n\n halfAMinute: \"نصف دقيقة\",\n\n lessThanXMinutes: {\n one: \"أقل من دقيقة\",\n two: \"أقل من دقيقتين\",\n threeToTen: \"أقل من {{count}} دقائق\",\n other: \"أقل من {{count}} دقيقة\",\n },\n\n xMinutes: {\n one: \"دقيقة واحدة\",\n two: \"دقيقتين\",\n threeToTen: \"{{count}} دقائق\",\n other: \"{{count}} دقيقة\",\n },\n\n aboutXHours: {\n one: \"ساعة واحدة تقريباً\",\n two: \"ساعتين تقريباً\",\n threeToTen: \"{{count}} ساعات تقريباً\",\n other: \"{{count}} ساعة تقريباً\",\n },\n\n xHours: {\n one: \"ساعة واحدة\",\n two: \"ساعتين\",\n threeToTen: \"{{count}} ساعات\",\n other: \"{{count}} ساعة\",\n },\n\n xDays: {\n one: \"يوم واحد\",\n two: \"يومين\",\n threeToTen: \"{{count}} أيام\",\n other: \"{{count}} يوم\",\n },\n\n aboutXWeeks: {\n one: \"أسبوع واحد تقريباً\",\n two: \"أسبوعين تقريباً\",\n threeToTen: \"{{count}} أسابيع تقريباً\",\n other: \"{{count}} أسبوع تقريباً\",\n },\n\n xWeeks: {\n one: \"أسبوع واحد\",\n two: \"أسبوعين\",\n threeToTen: \"{{count}} أسابيع\",\n other: \"{{count}} أسبوع\",\n },\n\n aboutXMonths: {\n one: \"شهر واحد تقريباً\",\n two: \"شهرين تقريباً\",\n threeToTen: \"{{count}} أشهر تقريباً\",\n other: \"{{count}} شهر تقريباً\",\n },\n\n xMonths: {\n one: \"شهر واحد\",\n two: \"شهرين\",\n threeToTen: \"{{count}} أشهر\",\n other: \"{{count}} شهر\",\n },\n\n aboutXYears: {\n one: \"عام واحد تقريباً\",\n two: \"عامين تقريباً\",\n threeToTen: \"{{count}} أعوام تقريباً\",\n other: \"{{count}} عام تقريباً\",\n },\n\n xYears: {\n one: \"عام واحد\",\n two: \"عامين\",\n threeToTen: \"{{count}} أعوام\",\n other: \"{{count}} عام\",\n },\n\n overXYears: {\n one: \"أكثر من عام\",\n two: \"أكثر من عامين\",\n threeToTen: \"أكثر من {{count}} أعوام\",\n other: \"أكثر من {{count}} عام\",\n },\n\n almostXYears: {\n one: \"عام واحد تقريباً\",\n two: \"عامين تقريباً\",\n threeToTen: \"{{count}} أعوام تقريباً\",\n other: \"{{count}} عام تقريباً\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else if (count === 2) {\n result = tokenValue.two;\n } else if (count <= 10) {\n result = tokenValue.threeToTen.replace(\"{{count}}\", String(count));\n } else {\n result = tokenValue.other.replace(\"{{count}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"في خلال \" + result;\n } else {\n return \"منذ \" + result;\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'عند' {{time}}\",\n long: \"{{date}} 'عند' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'أخر' eeee 'عند' p\",\n yesterday: \"'أمس عند' p\",\n today: \"'اليوم عند' p\",\n tomorrow: \"'غداً عند' p\",\n nextWeek: \"eeee 'عند' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"ق\", \"ب\"],\n abbreviated: [\"ق.م.\", \"ب.م.\"],\n wide: [\"قبل الميلاد\", \"بعد الميلاد\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"ر1\", \"ر2\", \"ر3\", \"ر4\"],\n wide: [\"الربع الأول\", \"الربع الثاني\", \"الربع الثالث\", \"الربع الرابع\"],\n};\n\nconst monthValues = {\n narrow: [\"ي\", \"ف\", \"م\", \"أ\", \"م\", \"ي\", \"ي\", \"أ\", \"س\", \"أ\", \"ن\", \"د\"],\n abbreviated: [\n \"ينا\",\n \"فبر\",\n \"مارس\",\n \"أبريل\",\n \"مايو\",\n \"يونـ\",\n \"يولـ\",\n \"أغسـ\",\n \"سبتـ\",\n \"أكتـ\",\n \"نوفـ\",\n \"ديسـ\",\n ],\n\n wide: [\n \"يناير\",\n \"فبراير\",\n \"مارس\",\n \"أبريل\",\n \"مايو\",\n \"يونيو\",\n \"يوليو\",\n \"أغسطس\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"ح\", \"ن\", \"ث\", \"ر\", \"خ\", \"ج\", \"س\"],\n short: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n abbreviated: [\"أحد\", \"اثنـ\", \"ثلا\", \"أربـ\", \"خميـ\", \"جمعة\", \"سبت\"],\n wide: [\n \"الأحد\",\n \"الاثنين\",\n \"الثلاثاء\",\n \"الأربعاء\",\n \"الخميس\",\n \"الجمعة\",\n \"السبت\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"ن\",\n noon: \"ظ\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءاً\",\n night: \"ليلاً\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءاً\",\n night: \"ليلاً\",\n },\n wide: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظهر\",\n evening: \"مساءاً\",\n night: \"ليلاً\",\n },\n};\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"ن\",\n noon: \"ظ\",\n morning: \"في الصباح\",\n afternoon: \"بعد الظـهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"في الصباح\",\n afternoon: \"بعد الظهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n wide: {\n am: \"ص\",\n pm: \"م\",\n midnight: \"نصف الليل\",\n noon: \"ظهر\",\n morning: \"صباحاً\",\n afternoon: \"بعد الظـهر\",\n evening: \"في المساء\",\n night: \"في الليل\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber) => {\n return String(dirtyNumber);\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(ق|ب)/i,\n abbreviated: /^(ق\\.?\\s?م\\.?|ق\\.?\\s?م\\.?\\s?|a\\.?\\s?d\\.?|c\\.?\\s?)/i,\n wide: /^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i,\n};\nconst parseEraPatterns = {\n any: [/^قبل/i, /^بعد/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^ر[1234]/i,\n wide: /^الربع [1234]/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[يفمأمسند]/i,\n abbreviated: /^(ين|ف|مار|أب|ماي|يون|يول|أغ|س|أك|ن|د)/i,\n wide: /^(ين|ف|مار|أب|ماي|يون|يول|أغ|س|أك|ن|د)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^ي/i,\n /^ف/i,\n /^م/i,\n /^أ/i,\n /^م/i,\n /^ي/i,\n /^ي/i,\n /^أ/i,\n /^س/i,\n /^أ/i,\n /^ن/i,\n /^د/i,\n ],\n\n any: [\n /^ين/i,\n /^ف/i,\n /^مار/i,\n /^أب/i,\n /^ماي/i,\n /^يون/i,\n /^يول/i,\n /^أغ/i,\n /^س/i,\n /^أك/i,\n /^ن/i,\n /^د/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[حنثرخجس]/i,\n short: /^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,\n abbreviated: /^(أحد|اثن|ثلا|أرب|خمي|جمعة|سبت)/i,\n wide: /^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^ح/i, /^ن/i, /^ث/i, /^ر/i, /^خ/i, /^ج/i, /^س/i],\n wide: [\n /^الأحد/i,\n /^الاثنين/i,\n /^الثلاثاء/i,\n /^الأربعاء/i,\n /^الخميس/i,\n /^الجمعة/i,\n /^السبت/i,\n ],\n\n any: [/^أح/i, /^اث/i, /^ث/i, /^أر/i, /^خ/i, /^ج/i, /^س/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./ar-SA/_lib/formatDistance.js\";\nimport { formatLong } from \"./ar-SA/_lib/formatLong.js\";\nimport { formatRelative } from \"./ar-SA/_lib/formatRelative.js\";\nimport { localize } from \"./ar-SA/_lib/localize.js\";\nimport { match } from \"./ar-SA/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Arabic locale (Sauid Arabic).\n * @language Arabic\n * @iso-639-2 ara\n * @author Dhaifallah Alwadani [@dalwadani](https://github.com/dalwadani)\n */\nexport const arSA = {\n code: \"ar-SA\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default arSA;\n"],"names":["formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatRelativeLocale","formatRelative","_date","_baseDate","_options","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","localize","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","arSA"],"mappings":";yJAAA,MAAMA,EAAuB,CAC3B,iBAAkB,CAChB,IAAK,qBACL,IAAK,gBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,cACL,IAAK,SACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,YAEb,iBAAkB,CAChB,IAAK,eACL,IAAK,iBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,cACL,IAAK,UACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,CACX,IAAK,qBACL,IAAK,iBACL,WAAY,0BACZ,MAAO,wBACX,EAEE,OAAQ,CACN,IAAK,aACL,IAAK,SACL,WAAY,kBACZ,MAAO,gBACX,EAEE,MAAO,CACL,IAAK,WACL,IAAK,QACL,WAAY,iBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,qBACL,IAAK,kBACL,WAAY,2BACZ,MAAO,yBACX,EAEE,OAAQ,CACN,IAAK,aACL,IAAK,UACL,WAAY,mBACZ,MAAO,iBACX,EAEE,aAAc,CACZ,IAAK,mBACL,IAAK,gBACL,WAAY,yBACZ,MAAO,uBACX,EAEE,QAAS,CACP,IAAK,WACL,IAAK,QACL,WAAY,iBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,mBACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,EAEE,OAAQ,CACN,IAAK,WACL,IAAK,QACL,WAAY,kBACZ,MAAO,eACX,EAEE,WAAY,CACV,IAAK,cACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,EAEE,aAAc,CACZ,IAAK,mBACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,CACA,EAEaC,EAAiB,CAACC,EAAOC,EAAOC,IAAY,CACvD,IAAIC,EAEJ,MAAMC,EAAaN,EAAqBE,CAAK,EAa7C,OAZI,OAAOI,GAAe,SACxBD,EAASC,EACAH,IAAU,EACnBE,EAASC,EAAW,IACXH,IAAU,EACnBE,EAASC,EAAW,IACXH,GAAS,GAClBE,EAASC,EAAW,WAAW,QAAQ,YAAa,OAAOH,CAAK,CAAC,EAEjEE,EAASC,EAAW,MAAM,QAAQ,YAAa,OAAOH,CAAK,CAAC,EAG1DC,GAAS,UACPA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,WAAaC,EAEb,OAASA,EAIbA,CACT,ECpIME,EAAc,CAClB,KAAM,mBACN,KAAM,aACN,OAAQ,WACR,MAAO,YACT,EAEMC,EAAc,CAClB,KAAM,iBACN,KAAM,cACN,OAAQ,YACR,MAAO,QACT,EAEMC,EAAkB,CACtB,KAAM,0BACN,KAAM,0BACN,OAAQ,qBACR,MAAO,oBACT,EAEaC,EAAa,CACxB,KAAMC,EAAkB,CACtB,QAASJ,EACT,aAAc,MAClB,CAAG,EAED,KAAMI,EAAkB,CACtB,QAASH,EACT,aAAc,MAClB,CAAG,EAED,SAAUG,EAAkB,CAC1B,QAASF,EACT,aAAc,MAClB,CAAG,CACH,ECtCMG,EAAuB,CAC3B,SAAU,qBACV,UAAW,cACX,MAAO,gBACP,SAAU,eACV,SAAU,eACV,MAAO,GACT,EAEaC,EAAiB,CAACX,EAAOY,EAAOC,EAAWC,IACtDJ,EAAqBV,CAAK,ECRtBe,EAAY,CAChB,OAAQ,CAAC,IAAK,GAAG,EACjB,YAAa,CAAC,OAAQ,MAAM,EAC5B,KAAM,CAAC,cAAe,aAAa,CACrC,EAEMC,EAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,cAAe,eAAgB,eAAgB,cAAc,CACtE,EAEMC,EAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,MACA,MACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACJ,EAEE,KAAM,CACJ,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,QACJ,CACA,EAEMC,EAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAAK,EACjE,YAAa,CAAC,MAAO,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,KAAK,EACjE,KAAM,CACJ,QACA,UACA,WACA,WACA,SACA,SACA,OACJ,CACA,EAEMC,EAAkB,CACtB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,IACV,KAAM,IACN,QAAS,SACT,UAAW,YACX,QAAS,SACT,MAAO,OACX,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,SACT,UAAW,YACX,QAAS,SACT,MAAO,OACX,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,SACT,UAAW,YACX,QAAS,SACT,MAAO,OACX,CACA,EACMC,EAA4B,CAChC,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,IACV,KAAM,IACN,QAAS,YACT,UAAW,aACX,QAAS,YACT,MAAO,UACX,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,YACT,UAAW,YACX,QAAS,YACT,MAAO,UACX,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,SAAU,YACV,KAAM,MACN,QAAS,SACT,UAAW,aACX,QAAS,YACT,MAAO,UACX,CACA,EAEMC,EAAiBC,GACd,OAAOA,CAAW,EAGdC,EAAW,CACtB,cAAAF,EAEA,IAAKG,EAAgB,CACnB,OAAQT,EACR,aAAc,MAClB,CAAG,EAED,QAASS,EAAgB,CACvB,OAAQR,EACR,aAAc,OACd,iBAAmBS,GAAYA,EAAU,CAC7C,CAAG,EAED,MAAOD,EAAgB,CACrB,OAAQP,EACR,aAAc,MAClB,CAAG,EAED,IAAKO,EAAgB,CACnB,OAAQN,EACR,aAAc,MAClB,CAAG,EAED,UAAWM,EAAgB,CACzB,OAAQL,EACR,aAAc,OACd,iBAAkBC,EAClB,uBAAwB,MAC5B,CAAG,CACH,EC9JMM,EAA4B,wBAC5BC,EAA4B,OAE5BC,EAAmB,CACvB,OAAQ,UACR,YAAa,qDACb,KAAM,qDACR,EACMC,EAAmB,CACvB,IAAK,CAAC,QAAS,OAAO,CACxB,EAEMC,EAAuB,CAC3B,OAAQ,WACR,YAAa,YACb,KAAM,gBACR,EACMC,EAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EAEMC,EAAqB,CACzB,OAAQ,eACR,YAAa,0CACb,KAAM,yCACR,EACMC,EAAqB,CACzB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACJ,EAEE,IAAK,CACH,OACA,MACA,QACA,OACA,QACA,QACA,QACA,OACA,MACA,OACA,MACA,KACJ,CACA,EAEMC,EAAmB,CACvB,OAAQ,cACR,MAAO,4CACP,YAAa,mCACb,KAAM,yDACR,EACMC,EAAmB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EACxD,KAAM,CACJ,UACA,YACA,aACA,aACA,WACA,WACA,SACJ,EAEE,IAAK,CAAC,OAAQ,OAAQ,MAAO,OAAQ,MAAO,MAAO,KAAK,CAC1D,EAEMC,EAAyB,CAC7B,OAAQ,6DACR,IAAK,gFACP,EACMC,EAAyB,CAC7B,IAAK,CACH,GAAI,MACJ,GAAI,MACJ,SAAU,OACV,KAAM,OACN,QAAS,WACT,UAAW,aACX,QAAS,WACT,MAAO,QACX,CACA,EAEaC,EAAQ,CACnB,cAAeC,EAAoB,CACjC,aAAcb,EACd,aAAcC,EACd,cAAgBa,GAAU,SAASA,EAAO,EAAE,CAChD,CAAG,EAED,IAAKC,EAAa,CAChB,cAAeb,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,QAASY,EAAa,CACpB,cAAeX,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,MACnB,cAAgBW,GAAUA,EAAQ,CACtC,CAAG,EAED,MAAOD,EAAa,CAClB,cAAeT,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,IAAKQ,EAAa,CAChB,cAAeP,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,UAAWM,EAAa,CACtB,cAAeL,EACf,kBAAmB,MACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,CACH,EChIaM,EAAO,CAClB,KAAM,QACN,eAAgB5C,EAChB,WAAYS,EACZ,eAAgBG,EAChB,SAAUY,EACV,MAAOe,EACP,QAAS,CACP,aAAc,EACd,sBAAuB,CAC3B,CACA","x_google_ignoreList":[0,1,2,3,4,5]} \ No newline at end of file diff --git a/js/ar-SA-Cb6z3-HB.chunk.mjs.map.license b/js/ar-SA-Cb6z3-HB.chunk.mjs.map.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-SA-Cb6z3-HB.chunk.mjs.map.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-TN-DkotlBtK.chunk.mjs b/js/ar-TN-DkotlBtK.chunk.mjs deleted file mode 100644 index e253962b..00000000 --- a/js/ar-TN-DkotlBtK.chunk.mjs +++ /dev/null @@ -1,3 +0,0 @@ -/*! third party licenses: js/vendor.LICENSE.txt */ -import{b as r,c as o,d as a,e as A}from"./index-Cr1DLTt7.chunk.mjs";import"./user_migration-personalSettings.mjs";import"./be-tarask-CzbVxLq7.chunk.mjs";const d={lessThanXSeconds:{one:"أقل من ثانية",two:"أقل من زوز ثواني",threeToTen:"أقل من {{count}} ثواني",other:"أقل من {{count}} ثانية"},xSeconds:{one:"ثانية",two:"زوز ثواني",threeToTen:"{{count}} ثواني",other:"{{count}} ثانية"},halfAMinute:"نص دقيقة",lessThanXMinutes:{one:"أقل من دقيقة",two:"أقل من دقيقتين",threeToTen:"أقل من {{count}} دقايق",other:"أقل من {{count}} دقيقة"},xMinutes:{one:"دقيقة",two:"دقيقتين",threeToTen:"{{count}} دقايق",other:"{{count}} دقيقة"},aboutXHours:{one:"ساعة تقريب",two:"ساعتين تقريب",threeToTen:"{{count}} سوايع تقريب",other:"{{count}} ساعة تقريب"},xHours:{one:"ساعة",two:"ساعتين",threeToTen:"{{count}} سوايع",other:"{{count}} ساعة"},xDays:{one:"نهار",two:"نهارين",threeToTen:"{{count}} أيام",other:"{{count}} يوم"},aboutXWeeks:{one:"جمعة تقريب",two:"جمعتين تقريب",threeToTen:"{{count}} جماع تقريب",other:"{{count}} جمعة تقريب"},xWeeks:{one:"جمعة",two:"جمعتين",threeToTen:"{{count}} جماع",other:"{{count}} جمعة"},aboutXMonths:{one:"شهر تقريب",two:"شهرين تقريب",threeToTen:"{{count}} أشهرة تقريب",other:"{{count}} شهر تقريب"},xMonths:{one:"شهر",two:"شهرين",threeToTen:"{{count}} أشهرة",other:"{{count}} شهر"},aboutXYears:{one:"عام تقريب",two:"عامين تقريب",threeToTen:"{{count}} أعوام تقريب",other:"{{count}} عام تقريب"},xYears:{one:"عام",two:"عامين",threeToTen:"{{count}} أعوام",other:"{{count}} عام"},overXYears:{one:"أكثر من عام",two:"أكثر من عامين",threeToTen:"أكثر من {{count}} أعوام",other:"أكثر من {{count}} عام"},almostXYears:{one:"عام تقريب",two:"عامين تقريب",threeToTen:"{{count}} أعوام تقريب",other:"{{count}} عام تقريب"}},h=(u,n,i)=>{const t=d[u];let e;return typeof t=="string"?e=t:n===1?e=t.one:n===2?e=t.two:n<=10?e=t.threeToTen.replace("{{count}}",String(n)):e=t.other.replace("{{count}}",String(n)),i?.addSuffix?i.comparison&&i.comparison>0?"في "+e:"عندو "+e:e},s={full:"EEEE، do MMMM y",long:"do MMMM y",medium:"d MMM y",short:"dd/MM/yyyy"},m={full:"HH:mm:ss",long:"HH:mm:ss",medium:"HH:mm:ss",short:"HH:mm"},l={full:"{{date}} 'مع' {{time}}",long:"{{date}} 'مع' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},c={date:r({formats:s,defaultWidth:"full"}),time:r({formats:m,defaultWidth:"full"}),dateTime:r({formats:l,defaultWidth:"full"})},w={lastWeek:"eeee 'إلي فات مع' p",yesterday:"'البارح مع' p",today:"'اليوم مع' p",tomorrow:"'غدوة مع' p",nextWeek:"eeee 'الجمعة الجاية مع' p 'نهار'",other:"P"},f=u=>w[u],g={narrow:["ق","ب"],abbreviated:["ق.م.","ب.م."],wide:["قبل الميلاد","بعد الميلاد"]},T={narrow:["1","2","3","4"],abbreviated:["ر1","ر2","ر3","ر4"],wide:["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"]},b={narrow:["د","ن","أ","س","أ","ج","ج","م","أ","م","ف","ج"],abbreviated:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],wide:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"]},p={narrow:["ح","ن","ث","ر","خ","ج","س"],short:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],abbreviated:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],wide:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},y={narrow:{am:"ص",pm:"ع",morning:"الصباح",noon:"القايلة",afternoon:"بعد القايلة",evening:"العشية",night:"الليل",midnight:"نص الليل"},abbreviated:{am:"ص",pm:"ع",morning:"الصباح",noon:"القايلة",afternoon:"بعد القايلة",evening:"العشية",night:"الليل",midnight:"نص الليل"},wide:{am:"ص",pm:"ع",morning:"الصباح",noon:"القايلة",afternoon:"بعد القايلة",evening:"العشية",night:"الليل",midnight:"نص الليل"}},C={narrow:{am:"ص",pm:"ع",morning:"في الصباح",noon:"في القايلة",afternoon:"بعد القايلة",evening:"في العشية",night:"في الليل",midnight:"نص الليل"},abbreviated:{am:"ص",pm:"ع",morning:"في الصباح",noon:"في القايلة",afternoon:"بعد القايلة",evening:"في العشية",night:"في الليل",midnight:"نص الليل"},wide:{am:"ص",pm:"ع",morning:"في الصباح",noon:"في القايلة",afternoon:"بعد القايلة",evening:"في العشية",night:"في الليل",midnight:"نص الليل"}},v=u=>String(u),F={ordinalNumber:v,era:o({values:g,defaultWidth:"wide"}),quarter:o({values:T,defaultWidth:"wide",argumentCallback:u=>u-1}),month:o({values:b,defaultWidth:"wide"}),day:o({values:p,defaultWidth:"wide"}),dayPeriod:o({values:y,defaultWidth:"wide",formattingValues:C,defaultFormattingWidth:"wide"})},B=/^(\d+)(th|st|nd|rd)?/i,W=/\d+/i,M={narrow:/[قب]/,abbreviated:/[قب]\.م\./,wide:/(قبل|بعد) الميلاد/},P={any:[/قبل/,/بعد/]},D={narrow:/^[1234]/i,abbreviated:/ر[1234]/,wide:/الربع (الأول|الثاني|الثالث|الرابع)/},x={any:[/1/i,/2/i,/3/i,/4/i]},H={narrow:/^[جفمأسند]/,abbreviated:/^(جانفي|فيفري|مارس|أفريل|ماي|جوان|جويلية|أوت|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/,wide:/^(جانفي|فيفري|مارس|أفريل|ماي|جوان|جويلية|أوت|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/},k={narrow:[/^ج/i,/^ف/i,/^م/i,/^أ/i,/^م/i,/^ج/i,/^ج/i,/^أ/i,/^س/i,/^أ/i,/^ن/i,/^د/i],any:[/^جانفي/i,/^فيفري/i,/^مارس/i,/^أفريل/i,/^ماي/i,/^جوان/i,/^جويلية/i,/^أوت/i,/^سبتمبر/i,/^أكتوبر/i,/^نوفمبر/i,/^ديسمبر/i]},E={narrow:/^[حنثرخجس]/i,short:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,abbreviated:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,wide:/^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i},X={narrow:[/^ح/i,/^ن/i,/^ث/i,/^ر/i,/^خ/i,/^ج/i,/^س/i],wide:[/^الأحد/i,/^الاثنين/i,/^الثلاثاء/i,/^الأربعاء/i,/^الخميس/i,/^الجمعة/i,/^السبت/i],any:[/^أح/i,/^اث/i,/^ث/i,/^أر/i,/^خ/i,/^ج/i,/^س/i]},S={narrow:/^(ص|ع|ن ل|ل|(في|مع) (صباح|قايلة|عشية|ليل))/,any:/^([صع]|نص الليل|قايلة|(في|مع) (صباح|قايلة|عشية|ليل))/},N={any:{am:/^ص/,pm:/^ع/,midnight:/نص الليل/,noon:/قايلة/,afternoon:/بعد القايلة/,morning:/صباح/,evening:/عشية/,night:/ليل/}},Y={ordinalNumber:A({matchPattern:B,parsePattern:W,valueCallback:u=>parseInt(u,10)}),era:a({matchPatterns:M,defaultMatchWidth:"wide",parsePatterns:P,defaultParseWidth:"any"}),quarter:a({matchPatterns:D,defaultMatchWidth:"wide",parsePatterns:x,defaultParseWidth:"any",valueCallback:u=>u+1}),month:a({matchPatterns:H,defaultMatchWidth:"wide",parsePatterns:k,defaultParseWidth:"any"}),day:a({matchPatterns:E,defaultMatchWidth:"wide",parsePatterns:X,defaultParseWidth:"any"}),dayPeriod:a({matchPatterns:S,defaultMatchWidth:"any",parsePatterns:N,defaultParseWidth:"any"})},O={code:"ar-TN",formatDistance:h,formatLong:c,formatRelative:f,localize:F,match:Y,options:{weekStartsOn:1,firstWeekContainsDate:1}};export{O as arTN}; -//# sourceMappingURL=ar-TN-DkotlBtK.chunk.mjs.map diff --git a/js/ar-TN-DkotlBtK.chunk.mjs.license b/js/ar-TN-DkotlBtK.chunk.mjs.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-TN-DkotlBtK.chunk.mjs.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/ar-TN-DkotlBtK.chunk.mjs.map b/js/ar-TN-DkotlBtK.chunk.mjs.map deleted file mode 100644 index dbc47a8d..00000000 --- a/js/ar-TN-DkotlBtK.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ar-TN-DkotlBtK.chunk.mjs","sources":["../node_modules/date-fns/locale/ar-TN/_lib/formatDistance.js","../node_modules/date-fns/locale/ar-TN/_lib/formatLong.js","../node_modules/date-fns/locale/ar-TN/_lib/formatRelative.js","../node_modules/date-fns/locale/ar-TN/_lib/localize.js","../node_modules/date-fns/locale/ar-TN/_lib/match.js","../node_modules/date-fns/locale/ar-TN.js"],"sourcesContent":["const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"أقل من ثانية\",\n two: \"أقل من زوز ثواني\",\n threeToTen: \"أقل من {{count}} ثواني\",\n other: \"أقل من {{count}} ثانية\",\n },\n\n xSeconds: {\n one: \"ثانية\",\n two: \"زوز ثواني\",\n threeToTen: \"{{count}} ثواني\",\n other: \"{{count}} ثانية\",\n },\n\n halfAMinute: \"نص دقيقة\",\n\n lessThanXMinutes: {\n one: \"أقل من دقيقة\",\n two: \"أقل من دقيقتين\",\n threeToTen: \"أقل من {{count}} دقايق\",\n other: \"أقل من {{count}} دقيقة\",\n },\n\n xMinutes: {\n one: \"دقيقة\",\n two: \"دقيقتين\",\n threeToTen: \"{{count}} دقايق\",\n other: \"{{count}} دقيقة\",\n },\n\n aboutXHours: {\n one: \"ساعة تقريب\",\n two: \"ساعتين تقريب\",\n threeToTen: \"{{count}} سوايع تقريب\",\n other: \"{{count}} ساعة تقريب\",\n },\n\n xHours: {\n one: \"ساعة\",\n two: \"ساعتين\",\n threeToTen: \"{{count}} سوايع\",\n other: \"{{count}} ساعة\",\n },\n\n xDays: {\n one: \"نهار\",\n two: \"نهارين\",\n threeToTen: \"{{count}} أيام\",\n other: \"{{count}} يوم\",\n },\n\n aboutXWeeks: {\n one: \"جمعة تقريب\",\n two: \"جمعتين تقريب\",\n threeToTen: \"{{count}} جماع تقريب\",\n other: \"{{count}} جمعة تقريب\",\n },\n\n xWeeks: {\n one: \"جمعة\",\n two: \"جمعتين\",\n threeToTen: \"{{count}} جماع\",\n other: \"{{count}} جمعة\",\n },\n\n aboutXMonths: {\n one: \"شهر تقريب\",\n two: \"شهرين تقريب\",\n threeToTen: \"{{count}} أشهرة تقريب\",\n other: \"{{count}} شهر تقريب\",\n },\n\n xMonths: {\n one: \"شهر\",\n two: \"شهرين\",\n threeToTen: \"{{count}} أشهرة\",\n other: \"{{count}} شهر\",\n },\n\n aboutXYears: {\n one: \"عام تقريب\",\n two: \"عامين تقريب\",\n threeToTen: \"{{count}} أعوام تقريب\",\n other: \"{{count}} عام تقريب\",\n },\n\n xYears: {\n one: \"عام\",\n two: \"عامين\",\n threeToTen: \"{{count}} أعوام\",\n other: \"{{count}} عام\",\n },\n\n overXYears: {\n one: \"أكثر من عام\",\n two: \"أكثر من عامين\",\n threeToTen: \"أكثر من {{count}} أعوام\",\n other: \"أكثر من {{count}} عام\",\n },\n\n almostXYears: {\n one: \"عام تقريب\",\n two: \"عامين تقريب\",\n threeToTen: \"{{count}} أعوام تقريب\",\n other: \"{{count}} عام تقريب\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n const usageGroup = formatDistanceLocale[token];\n let result;\n if (typeof usageGroup === \"string\") {\n result = usageGroup;\n } else if (count === 1) {\n result = usageGroup.one;\n } else if (count === 2) {\n result = usageGroup.two;\n } else if (count <= 10) {\n result = usageGroup.threeToTen.replace(\"{{count}}\", String(count));\n } else {\n result = usageGroup.other.replace(\"{{count}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"في \" + result;\n } else {\n return \"عندو \" + result;\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE، do MMMM y\",\n long: \"do MMMM y\",\n medium: \"d MMM y\",\n short: \"dd/MM/yyyy\",\n};\n\nconst timeFormats = {\n full: \"HH:mm:ss\",\n long: \"HH:mm:ss\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'مع' {{time}}\",\n long: \"{{date}} 'مع' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"eeee 'إلي فات مع' p\",\n yesterday: \"'البارح مع' p\",\n today: \"'اليوم مع' p\",\n tomorrow: \"'غدوة مع' p\",\n nextWeek: \"eeee 'الجمعة الجاية مع' p 'نهار'\",\n other: \"P\",\n};\n\nexport const formatRelative = (token) => formatRelativeLocale[token];\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"ق\", \"ب\"],\n abbreviated: [\"ق.م.\", \"ب.م.\"],\n wide: [\"قبل الميلاد\", \"بعد الميلاد\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"ر1\", \"ر2\", \"ر3\", \"ر4\"],\n wide: [\"الربع الأول\", \"الربع الثاني\", \"الربع الثالث\", \"الربع الرابع\"],\n};\n\nconst monthValues = {\n narrow: [\"د\", \"ن\", \"أ\", \"س\", \"أ\", \"ج\", \"ج\", \"م\", \"أ\", \"م\", \"ف\", \"ج\"],\n abbreviated: [\n \"جانفي\",\n \"فيفري\",\n \"مارس\",\n \"أفريل\",\n \"ماي\",\n \"جوان\",\n \"جويلية\",\n \"أوت\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n ],\n\n wide: [\n \"جانفي\",\n \"فيفري\",\n \"مارس\",\n \"أفريل\",\n \"ماي\",\n \"جوان\",\n \"جويلية\",\n \"أوت\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"ح\", \"ن\", \"ث\", \"ر\", \"خ\", \"ج\", \"س\"],\n short: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n abbreviated: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n\n wide: [\n \"الأحد\",\n \"الاثنين\",\n \"الثلاثاء\",\n \"الأربعاء\",\n \"الخميس\",\n \"الجمعة\",\n \"السبت\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"ع\",\n morning: \"الصباح\",\n noon: \"القايلة\",\n afternoon: \"بعد القايلة\",\n evening: \"العشية\",\n night: \"الليل\",\n midnight: \"نص الليل\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"ع\",\n morning: \"الصباح\",\n noon: \"القايلة\",\n afternoon: \"بعد القايلة\",\n evening: \"العشية\",\n night: \"الليل\",\n midnight: \"نص الليل\",\n },\n wide: {\n am: \"ص\",\n pm: \"ع\",\n morning: \"الصباح\",\n noon: \"القايلة\",\n afternoon: \"بعد القايلة\",\n evening: \"العشية\",\n night: \"الليل\",\n midnight: \"نص الليل\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"ص\",\n pm: \"ع\",\n morning: \"في الصباح\",\n noon: \"في القايلة\",\n afternoon: \"بعد القايلة\",\n evening: \"في العشية\",\n night: \"في الليل\",\n midnight: \"نص الليل\",\n },\n abbreviated: {\n am: \"ص\",\n pm: \"ع\",\n morning: \"في الصباح\",\n noon: \"في القايلة\",\n afternoon: \"بعد القايلة\",\n evening: \"في العشية\",\n night: \"في الليل\",\n midnight: \"نص الليل\",\n },\n wide: {\n am: \"ص\",\n pm: \"ع\",\n morning: \"في الصباح\",\n noon: \"في القايلة\",\n afternoon: \"بعد القايلة\",\n evening: \"في العشية\",\n night: \"في الليل\",\n midnight: \"نص الليل\",\n },\n};\n\nconst ordinalNumber = (num) => String(num);\n\nexport const localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\nimport { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /[قب]/,\n abbreviated: /[قب]\\.م\\./,\n wide: /(قبل|بعد) الميلاد/,\n};\nconst parseEraPatterns = {\n any: [/قبل/, /بعد/],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /ر[1234]/,\n wide: /الربع (الأول|الثاني|الثالث|الرابع)/,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[جفمأسند]/,\n abbreviated:\n /^(جانفي|فيفري|مارس|أفريل|ماي|جوان|جويلية|أوت|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/,\n wide: /^(جانفي|فيفري|مارس|أفريل|ماي|جوان|جويلية|أوت|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^ج/i,\n /^ف/i,\n /^م/i,\n /^أ/i,\n /^م/i,\n /^ج/i,\n /^ج/i,\n /^أ/i,\n /^س/i,\n /^أ/i,\n /^ن/i,\n /^د/i,\n ],\n\n any: [\n /^جانفي/i,\n /^فيفري/i,\n /^مارس/i,\n /^أفريل/i,\n /^ماي/i,\n /^جوان/i,\n /^جويلية/i,\n /^أوت/i,\n /^سبتمبر/i,\n /^أكتوبر/i,\n /^نوفمبر/i,\n /^ديسمبر/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[حنثرخجس]/i,\n short: /^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,\n abbreviated: /^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,\n wide: /^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^ح/i, /^ن/i, /^ث/i, /^ر/i, /^خ/i, /^ج/i, /^س/i],\n wide: [\n /^الأحد/i,\n /^الاثنين/i,\n /^الثلاثاء/i,\n /^الأربعاء/i,\n /^الخميس/i,\n /^الجمعة/i,\n /^السبت/i,\n ],\n\n any: [/^أح/i, /^اث/i, /^ث/i, /^أر/i, /^خ/i, /^ج/i, /^س/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(ص|ع|ن ل|ل|(في|مع) (صباح|قايلة|عشية|ليل))/,\n any: /^([صع]|نص الليل|قايلة|(في|مع) (صباح|قايلة|عشية|ليل))/,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^ص/,\n pm: /^ع/,\n midnight: /نص الليل/,\n noon: /قايلة/,\n afternoon: /بعد القايلة/,\n morning: /صباح/,\n evening: /عشية/,\n night: /ليل/,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./ar-TN/_lib/formatDistance.js\";\nimport { formatLong } from \"./ar-TN/_lib/formatLong.js\";\nimport { formatRelative } from \"./ar-TN/_lib/formatRelative.js\";\nimport { localize } from \"./ar-TN/_lib/localize.js\";\nimport { match } from \"./ar-TN/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Arabic locale (Tunisian Arabic).\n * @language Arabic\n * @iso-639-2 ara\n * @author Koussay Haj Kacem [@essana3](https://github.com/essana3)\n */\nexport const arTN = {\n code: \"ar-TN\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default arTN;\n"],"names":["formatDistanceLocale","formatDistance","token","count","options","usageGroup","result","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatRelativeLocale","formatRelative","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","num","localize","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","arTN"],"mappings":";yJAAA,MAAMA,EAAuB,CAC3B,iBAAkB,CAChB,IAAK,eACL,IAAK,mBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,QACL,IAAK,YACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,WAEb,iBAAkB,CAChB,IAAK,eACL,IAAK,iBACL,WAAY,yBACZ,MAAO,wBACX,EAEE,SAAU,CACR,IAAK,QACL,IAAK,UACL,WAAY,kBACZ,MAAO,iBACX,EAEE,YAAa,CACX,IAAK,aACL,IAAK,eACL,WAAY,wBACZ,MAAO,sBACX,EAEE,OAAQ,CACN,IAAK,OACL,IAAK,SACL,WAAY,kBACZ,MAAO,gBACX,EAEE,MAAO,CACL,IAAK,OACL,IAAK,SACL,WAAY,iBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,aACL,IAAK,eACL,WAAY,uBACZ,MAAO,sBACX,EAEE,OAAQ,CACN,IAAK,OACL,IAAK,SACL,WAAY,iBACZ,MAAO,gBACX,EAEE,aAAc,CACZ,IAAK,YACL,IAAK,cACL,WAAY,wBACZ,MAAO,qBACX,EAEE,QAAS,CACP,IAAK,MACL,IAAK,QACL,WAAY,kBACZ,MAAO,eACX,EAEE,YAAa,CACX,IAAK,YACL,IAAK,cACL,WAAY,wBACZ,MAAO,qBACX,EAEE,OAAQ,CACN,IAAK,MACL,IAAK,QACL,WAAY,kBACZ,MAAO,eACX,EAEE,WAAY,CACV,IAAK,cACL,IAAK,gBACL,WAAY,0BACZ,MAAO,uBACX,EAEE,aAAc,CACZ,IAAK,YACL,IAAK,cACL,WAAY,wBACZ,MAAO,qBACX,CACA,EAEaC,EAAiB,CAACC,EAAOC,EAAOC,IAAY,CACvD,MAAMC,EAAaL,EAAqBE,CAAK,EAC7C,IAAII,EAaJ,OAZI,OAAOD,GAAe,SACxBC,EAASD,EACAF,IAAU,EACnBG,EAASD,EAAW,IACXF,IAAU,EACnBG,EAASD,EAAW,IACXF,GAAS,GAClBG,EAASD,EAAW,WAAW,QAAQ,YAAa,OAAOF,CAAK,CAAC,EAEjEG,EAASD,EAAW,MAAM,QAAQ,YAAa,OAAOF,CAAK,CAAC,EAG1DC,GAAS,UACPA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,MAAQE,EAER,QAAUA,EAIdA,CACT,ECnIMC,EAAc,CAClB,KAAM,kBACN,KAAM,YACN,OAAQ,UACR,MAAO,YACT,EAEMC,EAAc,CAClB,KAAM,WACN,KAAM,WACN,OAAQ,WACR,MAAO,OACT,EAEMC,EAAkB,CACtB,KAAM,yBACN,KAAM,yBACN,OAAQ,qBACR,MAAO,oBACT,EAEaC,EAAa,CACxB,KAAMC,EAAkB,CACtB,QAASJ,EACT,aAAc,MAClB,CAAG,EAED,KAAMI,EAAkB,CACtB,QAASH,EACT,aAAc,MAClB,CAAG,EAED,SAAUG,EAAkB,CAC1B,QAASF,EACT,aAAc,MAClB,CAAG,CACH,ECtCMG,EAAuB,CAC3B,SAAU,sBACV,UAAW,gBACX,MAAO,eACP,SAAU,cACV,SAAU,mCACV,MAAO,GACT,EAEaC,EAAkBX,GAAUU,EAAqBV,CAAK,ECP7DY,EAAY,CAChB,OAAQ,CAAC,IAAK,GAAG,EACjB,YAAa,CAAC,OAAQ,MAAM,EAC5B,KAAM,CAAC,cAAe,aAAa,CACrC,EAEMC,EAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,cAAe,eAAgB,eAAgB,cAAc,CACtE,EAEMC,EAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,QACJ,EAEE,KAAM,CACJ,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,QACJ,CACA,EAEMC,EAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAAK,EACjE,YAAa,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAAK,EAEvE,KAAM,CACJ,QACA,UACA,WACA,WACA,SACA,SACA,OACJ,CACA,EAEMC,EAAkB,CACtB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,QAAS,SACT,KAAM,UACN,UAAW,cACX,QAAS,SACT,MAAO,QACP,SAAU,UACd,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,QAAS,SACT,KAAM,UACN,UAAW,cACX,QAAS,SACT,MAAO,QACP,SAAU,UACd,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,QAAS,SACT,KAAM,UACN,UAAW,cACX,QAAS,SACT,MAAO,QACP,SAAU,UACd,CACA,EAEMC,EAA4B,CAChC,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,QAAS,YACT,KAAM,aACN,UAAW,cACX,QAAS,YACT,MAAO,WACP,SAAU,UACd,EACE,YAAa,CACX,GAAI,IACJ,GAAI,IACJ,QAAS,YACT,KAAM,aACN,UAAW,cACX,QAAS,YACT,MAAO,WACP,SAAU,UACd,EACE,KAAM,CACJ,GAAI,IACJ,GAAI,IACJ,QAAS,YACT,KAAM,aACN,UAAW,cACX,QAAS,YACT,MAAO,WACP,SAAU,UACd,CACA,EAEMC,EAAiBC,GAAQ,OAAOA,CAAG,EAE5BC,EAAW,CACtB,cAAeF,EAEf,IAAKG,EAAgB,CACnB,OAAQT,EACR,aAAc,MAClB,CAAG,EAED,QAASS,EAAgB,CACvB,OAAQR,EACR,aAAc,OACd,iBAAmBS,GAAYA,EAAU,CAC7C,CAAG,EAED,MAAOD,EAAgB,CACrB,OAAQP,EACR,aAAc,MAClB,CAAG,EAED,IAAKO,EAAgB,CACnB,OAAQN,EACR,aAAc,MAClB,CAAG,EAED,UAAWM,EAAgB,CACzB,OAAQL,EACR,aAAc,OACd,iBAAkBC,EAClB,uBAAwB,MAC5B,CAAG,CACH,EC9JMM,EAA4B,wBAC5BC,EAA4B,OAE5BC,EAAmB,CACvB,OAAQ,OACR,YAAa,YACb,KAAM,mBACR,EACMC,EAAmB,CACvB,IAAK,CAAC,MAAO,KAAK,CACpB,EAEMC,EAAuB,CAC3B,OAAQ,WACR,YAAa,UACb,KAAM,oCACR,EACMC,EAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EAEMC,EAAqB,CACzB,OAAQ,aACR,YACE,4EACF,KAAM,2EACR,EACMC,EAAqB,CACzB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACJ,EAEE,IAAK,CACH,UACA,UACA,SACA,UACA,QACA,SACA,WACA,QACA,WACA,WACA,WACA,UACJ,CACA,EAEMC,EAAmB,CACvB,OAAQ,cACR,MAAO,4CACP,YAAa,4CACb,KAAM,yDACR,EACMC,EAAmB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EACxD,KAAM,CACJ,UACA,YACA,aACA,aACA,WACA,WACA,SACJ,EAEE,IAAK,CAAC,OAAQ,OAAQ,MAAO,OAAQ,MAAO,MAAO,KAAK,CAC1D,EAEMC,EAAyB,CAC7B,OAAQ,6CACR,IAAK,sDACP,EACMC,EAAyB,CAC7B,IAAK,CACH,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,QACN,UAAW,cACX,QAAS,OACT,QAAS,OACT,MAAO,KACX,CACA,EAEaC,EAAQ,CACnB,cAAeC,EAAoB,CACjC,aAAcb,EACd,aAAcC,EACd,cAAgBa,GAAU,SAASA,EAAO,EAAE,CAChD,CAAG,EAED,IAAKC,EAAa,CAChB,cAAeb,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,QAASY,EAAa,CACpB,cAAeX,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,MACnB,cAAgBW,GAAUA,EAAQ,CACtC,CAAG,EAED,MAAOD,EAAa,CAClB,cAAeT,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,IAAKQ,EAAa,CAChB,cAAeP,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,UAAWM,EAAa,CACtB,cAAeL,EACf,kBAAmB,MACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,CACH,ECjIaM,EAAO,CAClB,KAAM,QACN,eAAgBzC,EAChB,WAAYS,EACZ,eAAgBG,EAChB,SAAUS,EACV,MAAOe,EACP,QAAS,CACP,aAAc,EACd,sBAAuB,CAC3B,CACA","x_google_ignoreList":[0,1,2,3,4,5]} \ No newline at end of file diff --git a/js/ar-TN-DkotlBtK.chunk.mjs.map.license b/js/ar-TN-DkotlBtK.chunk.mjs.map.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/ar-TN-DkotlBtK.chunk.mjs.map.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/az-DinC2iyY.chunk.mjs b/js/az-DinC2iyY.chunk.mjs deleted file mode 100644 index c3b7da21..00000000 --- a/js/az-DinC2iyY.chunk.mjs +++ /dev/null @@ -1,3 +0,0 @@ -/*! third party licenses: js/vendor.LICENSE.txt */ -import{b as d,c as t,d as r,e as m}from"./index-Cr1DLTt7.chunk.mjs";import"./user_migration-personalSettings.mjs";import"./be-tarask-CzbVxLq7.chunk.mjs";const s={lessThanXSeconds:{one:"bir saniyədən az",other:"{{count}} bir saniyədən az"},xSeconds:{one:"1 saniyə",other:"{{count}} saniyə"},halfAMinute:"yarım dəqiqə",lessThanXMinutes:{one:"bir dəqiqədən az",other:"{{count}} bir dəqiqədən az"},xMinutes:{one:"bir dəqiqə",other:"{{count}} dəqiqə"},aboutXHours:{one:"təxminən 1 saat",other:"təxminən {{count}} saat"},xHours:{one:"1 saat",other:"{{count}} saat"},xDays:{one:"1 gün",other:"{{count}} gün"},aboutXWeeks:{one:"təxminən 1 həftə",other:"təxminən {{count}} həftə"},xWeeks:{one:"1 həftə",other:"{{count}} həftə"},aboutXMonths:{one:"təxminən 1 ay",other:"təxminən {{count}} ay"},xMonths:{one:"1 ay",other:"{{count}} ay"},aboutXYears:{one:"təxminən 1 il",other:"təxminən {{count}} il"},xYears:{one:"1 il",other:"{{count}} il"},overXYears:{one:"1 ildən çox",other:"{{count}} ildən çox"},almostXYears:{one:"demək olar ki 1 il",other:"demək olar ki {{count}} il"}},c=(a,n,e)=>{let i;const o=s[a];return typeof o=="string"?i=o:n===1?i=o.one:i=o.other.replace("{{count}}",String(n)),e?.addSuffix?e.comparison&&e.comparison>0?i+" sonra":i+" əvvəl":i},l={full:"EEEE, do MMMM y 'il'",long:"do MMMM y 'il'",medium:"d MMM y 'il'",short:"dd.MM.yyyy"},$={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},h={full:"{{date}} {{time}} - 'də'",long:"{{date}} {{time}} - 'də'",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},g={date:d({formats:l,defaultWidth:"full"}),time:d({formats:$,defaultWidth:"full"}),dateTime:d({formats:h,defaultWidth:"full"})},x={lastWeek:"'sonuncu' eeee p -'də'",yesterday:"'dünən' p -'də'",today:"'bugün' p -'də'",tomorrow:"'sabah' p -'də'",nextWeek:"eeee p -'də'",other:"P"},y=(a,n,e,i)=>x[a],b={narrow:["e.ə","b.e"],abbreviated:["e.ə","b.e"],wide:["eramızdan əvvəl","bizim era"]},C={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1ci kvartal","2ci kvartal","3cü kvartal","4cü kvartal"]},v={narrow:["Y","F","M","A","M","İ","İ","A","S","O","N","D"],abbreviated:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],wide:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"]},f={narrow:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],short:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],abbreviated:["Baz","Baz.e","Çər.a","Çər","Cüm.a","Cüm","Şə"],wide:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},F={narrow:{am:"am",pm:"pm",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"},abbreviated:{am:"AM",pm:"PM",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"},wide:{am:"a.m.",pm:"p.m.",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"}},M={narrow:{am:"a",pm:"p",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"},abbreviated:{am:"AM",pm:"PM",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"},wide:{am:"a.m.",pm:"p.m.",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"}},u={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"},p=a=>{if(a===0)return a+"-ıncı";const n=a%10,e=a%100-n,i=a>=100?100:null;return u[n]?u[n]:u[e]?u[e]:i!==null?u[i]:""},w=(a,n)=>{const e=Number(a),i=p(e);return e+i},z={ordinalNumber:w,era:t({values:b,defaultWidth:"wide"}),quarter:t({values:C,defaultWidth:"wide",argumentCallback:a=>a-1}),month:t({values:v,defaultWidth:"wide"}),day:t({values:f,defaultWidth:"wide"}),dayPeriod:t({values:F,defaultWidth:"wide",formattingValues:M,defaultFormattingWidth:"wide"})},k=/^(\d+)(-?(ci|inci|nci|uncu|üncü|ncı))?/i,W=/\d+/i,B={narrow:/^(b|a)$/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)$/i,wide:/^(bizim eradan əvvəl|bizim era)$/i},P={any:[/^b$/i,/^(a|c)$/i]},A={narrow:/^[1234]$/i,abbreviated:/^K[1234]$/i,wide:/^[1234](ci)? kvartal$/i},q={any:[/1/i,/2/i,/3/i,/4/i]},S={narrow:/^[(?-i)yfmaisond]$/i,abbreviated:/^(Yan|Fev|Mar|Apr|May|İyun|İyul|Avq|Sen|Okt|Noy|Dek)$/i,wide:/^(Yanvar|Fevral|Mart|Aprel|May|İyun|İyul|Avgust|Sentyabr|Oktyabr|Noyabr|Dekabr)$/i},Y={narrow:[/^[(?-i)y]$/i,/^[(?-i)f]$/i,/^[(?-i)m]$/i,/^[(?-i)a]$/i,/^[(?-i)m]$/i,/^[(?-i)i]$/i,/^[(?-i)i]$/i,/^[(?-i)a]$/i,/^[(?-i)s]$/i,/^[(?-i)o]$/i,/^[(?-i)n]$/i,/^[(?-i)d]$/i],abbreviated:[/^Yan$/i,/^Fev$/i,/^Mar$/i,/^Apr$/i,/^May$/i,/^İyun$/i,/^İyul$/i,/^Avg$/i,/^Sen$/i,/^Okt$/i,/^Noy$/i,/^Dek$/i],wide:[/^Yanvar$/i,/^Fevral$/i,/^Mart$/i,/^Aprel$/i,/^May$/i,/^İyun$/i,/^İyul$/i,/^Avgust$/i,/^Sentyabr$/i,/^Oktyabr$/i,/^Noyabr$/i,/^Dekabr$/i]},D={narrow:/^(B\.|B\.e|Ç\.a|Ç\.|C\.a|C\.|Ş\.)$/i,short:/^(B\.|B\.e|Ç\.a|Ç\.|C\.a|C\.|Ş\.)$/i,abbreviated:/^(Baz\.e|Çər|Çər\.a|Cüm|Cüm\.a|Şə)$/i,wide:/^(Bazar|Bazar ertəsi|Çərşənbə axşamı|Çərşənbə|Cümə axşamı|Cümə|Şənbə)$/i},E={narrow:[/^B\.$/i,/^B\.e$/i,/^Ç\.a$/i,/^Ç\.$/i,/^C\.a$/i,/^C\.$/i,/^Ş\.$/i],abbreviated:[/^Baz$/i,/^Baz\.e$/i,/^Çər\.a$/i,/^Çər$/i,/^Cüm\.a$/i,/^Cüm$/i,/^Şə$/i],wide:[/^Bazar$/i,/^Bazar ertəsi$/i,/^Çərşənbə axşamı$/i,/^Çərşənbə$/i,/^Cümə axşamı$/i,/^Cümə$/i,/^Şənbə$/i],any:[/^B\.$/i,/^B\.e$/i,/^Ç\.a$/i,/^Ç\.$/i,/^C\.a$/i,/^C\.$/i,/^Ş\.$/i]},N={narrow:/^(a|p|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i,any:/^(am|pm|a\.m\.|p\.m\.|AM|PM|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i},O={any:{am:/^a$/i,pm:/^p$/i,midnight:/^gecəyarı$/i,noon:/^gün$/i,morning:/səhər$/i,afternoon:/gündüz$/i,evening:/axşam$/i,night:/gecə$/i}},X={ordinalNumber:m({matchPattern:k,parsePattern:W,valueCallback:a=>parseInt(a,10)}),era:r({matchPatterns:B,defaultMatchWidth:"wide",parsePatterns:P,defaultParseWidth:"any"}),quarter:r({matchPatterns:A,defaultMatchWidth:"wide",parsePatterns:q,defaultParseWidth:"any",valueCallback:a=>a+1}),month:r({matchPatterns:S,defaultMatchWidth:"wide",parsePatterns:Y,defaultParseWidth:"narrow"}),day:r({matchPatterns:D,defaultMatchWidth:"wide",parsePatterns:E,defaultParseWidth:"any"}),dayPeriod:r({matchPatterns:N,defaultMatchWidth:"any",parsePatterns:O,defaultParseWidth:"any"})},L={code:"az",formatDistance:c,formatLong:g,formatRelative:y,localize:z,match:X,options:{weekStartsOn:1,firstWeekContainsDate:1}};export{L as az}; -//# sourceMappingURL=az-DinC2iyY.chunk.mjs.map diff --git a/js/az-DinC2iyY.chunk.mjs.license b/js/az-DinC2iyY.chunk.mjs.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/az-DinC2iyY.chunk.mjs.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/az-DinC2iyY.chunk.mjs.map b/js/az-DinC2iyY.chunk.mjs.map deleted file mode 100644 index 1118eab2..00000000 --- a/js/az-DinC2iyY.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"az-DinC2iyY.chunk.mjs","sources":["../node_modules/date-fns/locale/az/_lib/formatDistance.js","../node_modules/date-fns/locale/az/_lib/formatLong.js","../node_modules/date-fns/locale/az/_lib/formatRelative.js","../node_modules/date-fns/locale/az/_lib/localize.js","../node_modules/date-fns/locale/az/_lib/match.js","../node_modules/date-fns/locale/az.js"],"sourcesContent":["const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"bir saniyədən az\",\n other: \"{{count}} bir saniyədən az\",\n },\n\n xSeconds: {\n one: \"1 saniyə\",\n other: \"{{count}} saniyə\",\n },\n\n halfAMinute: \"yarım dəqiqə\",\n\n lessThanXMinutes: {\n one: \"bir dəqiqədən az\",\n other: \"{{count}} bir dəqiqədən az\",\n },\n\n xMinutes: {\n one: \"bir dəqiqə\",\n other: \"{{count}} dəqiqə\",\n },\n\n aboutXHours: {\n one: \"təxminən 1 saat\",\n other: \"təxminən {{count}} saat\",\n },\n\n xHours: {\n one: \"1 saat\",\n other: \"{{count}} saat\",\n },\n\n xDays: {\n one: \"1 gün\",\n other: \"{{count}} gün\",\n },\n\n aboutXWeeks: {\n one: \"təxminən 1 həftə\",\n other: \"təxminən {{count}} həftə\",\n },\n\n xWeeks: {\n one: \"1 həftə\",\n other: \"{{count}} həftə\",\n },\n\n aboutXMonths: {\n one: \"təxminən 1 ay\",\n other: \"təxminən {{count}} ay\",\n },\n\n xMonths: {\n one: \"1 ay\",\n other: \"{{count}} ay\",\n },\n\n aboutXYears: {\n one: \"təxminən 1 il\",\n other: \"təxminən {{count}} il\",\n },\n\n xYears: {\n one: \"1 il\",\n other: \"{{count}} il\",\n },\n\n overXYears: {\n one: \"1 ildən çox\",\n other: \"{{count}} ildən çox\",\n },\n\n almostXYears: {\n one: \"demək olar ki 1 il\",\n other: \"demək olar ki {{count}} il\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return result + \" sonra\";\n } else {\n return result + \" əvvəl\";\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, do MMMM y 'il'\",\n long: \"do MMMM y 'il'\",\n medium: \"d MMM y 'il'\",\n short: \"dd.MM.yyyy\",\n};\n\nconst timeFormats = {\n full: \"H:mm:ss zzzz\",\n long: \"H:mm:ss z\",\n medium: \"H:mm:ss\",\n short: \"H:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} {{time}} - 'də'\",\n long: \"{{date}} {{time}} - 'də'\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'sonuncu' eeee p -'də'\",\n yesterday: \"'dünən' p -'də'\",\n today: \"'bugün' p -'də'\",\n tomorrow: \"'sabah' p -'də'\",\n nextWeek: \"eeee p -'də'\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"e.ə\", \"b.e\"],\n abbreviated: [\"e.ə\", \"b.e\"],\n wide: [\"eramızdan əvvəl\", \"bizim era\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"K1\", \"K2\", \"K3\", \"K4\"],\n wide: [\"1ci kvartal\", \"2ci kvartal\", \"3cü kvartal\", \"4cü kvartal\"],\n};\nconst monthValues = {\n narrow: [\"Y\", \"F\", \"M\", \"A\", \"M\", \"İ\", \"İ\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Yan\",\n \"Fev\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"İyun\",\n \"İyul\",\n \"Avq\",\n \"Sen\",\n \"Okt\",\n \"Noy\",\n \"Dek\",\n ],\n\n wide: [\n \"Yanvar\",\n \"Fevral\",\n \"Mart\",\n \"Aprel\",\n \"May\",\n \"İyun\",\n \"İyul\",\n \"Avqust\",\n \"Sentyabr\",\n \"Oktyabr\",\n \"Noyabr\",\n \"Dekabr\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"B.\", \"B.e\", \"Ç.a\", \"Ç.\", \"C.a\", \"C.\", \"Ş.\"],\n short: [\"B.\", \"B.e\", \"Ç.a\", \"Ç.\", \"C.a\", \"C.\", \"Ş.\"],\n abbreviated: [\"Baz\", \"Baz.e\", \"Çər.a\", \"Çər\", \"Cüm.a\", \"Cüm\", \"Şə\"],\n wide: [\n \"Bazar\",\n \"Bazar ertəsi\",\n \"Çərşənbə axşamı\",\n \"Çərşənbə\",\n \"Cümə axşamı\",\n \"Cümə\",\n \"Şənbə\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"am\",\n pm: \"pm\",\n midnight: \"gecəyarı\",\n noon: \"gün\",\n morning: \"səhər\",\n afternoon: \"gündüz\",\n evening: \"axşam\",\n night: \"gecə\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"gecəyarı\",\n noon: \"gün\",\n morning: \"səhər\",\n afternoon: \"gündüz\",\n evening: \"axşam\",\n night: \"gecə\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"gecəyarı\",\n noon: \"gün\",\n morning: \"səhər\",\n afternoon: \"gündüz\",\n evening: \"axşam\",\n night: \"gecə\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"gecəyarı\",\n noon: \"gün\",\n morning: \"səhər\",\n afternoon: \"gündüz\",\n evening: \"axşam\",\n night: \"gecə\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"gecəyarı\",\n noon: \"gün\",\n morning: \"səhər\",\n afternoon: \"gündüz\",\n evening: \"axşam\",\n night: \"gecə\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"gecəyarı\",\n noon: \"gün\",\n morning: \"səhər\",\n afternoon: \"gündüz\",\n evening: \"axşam\",\n night: \"gecə\",\n },\n};\n\nconst suffixes = {\n 1: \"-inci\",\n 5: \"-inci\",\n 8: \"-inci\",\n 70: \"-inci\",\n 80: \"-inci\",\n 2: \"-nci\",\n 7: \"-nci\",\n 20: \"-nci\",\n 50: \"-nci\",\n 3: \"-üncü\",\n 4: \"-üncü\",\n 100: \"-üncü\",\n 6: \"-ncı\",\n 9: \"-uncu\",\n 10: \"-uncu\",\n 30: \"-uncu\",\n 60: \"-ıncı\",\n 90: \"-ıncı\",\n};\n\nconst getSuffix = (number) => {\n if (number === 0) {\n // special case for zero\n return number + \"-ıncı\";\n }\n\n const a = number % 10;\n const b = (number % 100) - a;\n const c = number >= 100 ? 100 : null;\n\n if (suffixes[a]) {\n return suffixes[a];\n } else if (suffixes[b]) {\n return suffixes[b];\n } else if (c !== null) {\n return suffixes[c];\n }\n return \"\";\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n const suffix = getSuffix(number);\n\n return number + suffix;\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(-?(ci|inci|nci|uncu|üncü|ncı))?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)$/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)$/i,\n wide: /^(bizim eradan əvvəl|bizim era)$/i,\n};\nconst parseEraPatterns = {\n any: [/^b$/i, /^(a|c)$/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]$/i,\n abbreviated: /^K[1234]$/i,\n wide: /^[1234](ci)? kvartal$/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[(?-i)yfmaisond]$/i,\n abbreviated: /^(Yan|Fev|Mar|Apr|May|İyun|İyul|Avq|Sen|Okt|Noy|Dek)$/i,\n wide: /^(Yanvar|Fevral|Mart|Aprel|May|İyun|İyul|Avgust|Sentyabr|Oktyabr|Noyabr|Dekabr)$/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^[(?-i)y]$/i,\n /^[(?-i)f]$/i,\n /^[(?-i)m]$/i,\n /^[(?-i)a]$/i,\n /^[(?-i)m]$/i,\n /^[(?-i)i]$/i,\n /^[(?-i)i]$/i,\n /^[(?-i)a]$/i,\n /^[(?-i)s]$/i,\n /^[(?-i)o]$/i,\n /^[(?-i)n]$/i,\n /^[(?-i)d]$/i,\n ],\n\n abbreviated: [\n /^Yan$/i,\n /^Fev$/i,\n /^Mar$/i,\n /^Apr$/i,\n /^May$/i,\n /^İyun$/i,\n /^İyul$/i,\n /^Avg$/i,\n /^Sen$/i,\n /^Okt$/i,\n /^Noy$/i,\n /^Dek$/i,\n ],\n\n wide: [\n /^Yanvar$/i,\n /^Fevral$/i,\n /^Mart$/i,\n /^Aprel$/i,\n /^May$/i,\n /^İyun$/i,\n /^İyul$/i,\n /^Avgust$/i,\n /^Sentyabr$/i,\n /^Oktyabr$/i,\n /^Noyabr$/i,\n /^Dekabr$/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^(B\\.|B\\.e|Ç\\.a|Ç\\.|C\\.a|C\\.|Ş\\.)$/i,\n short: /^(B\\.|B\\.e|Ç\\.a|Ç\\.|C\\.a|C\\.|Ş\\.)$/i,\n abbreviated: /^(Baz\\.e|Çər|Çər\\.a|Cüm|Cüm\\.a|Şə)$/i,\n wide: /^(Bazar|Bazar ertəsi|Çərşənbə axşamı|Çərşənbə|Cümə axşamı|Cümə|Şənbə)$/i,\n};\nconst parseDayPatterns = {\n narrow: [\n /^B\\.$/i,\n /^B\\.e$/i,\n /^Ç\\.a$/i,\n /^Ç\\.$/i,\n /^C\\.a$/i,\n /^C\\.$/i,\n /^Ş\\.$/i,\n ],\n\n abbreviated: [\n /^Baz$/i,\n /^Baz\\.e$/i,\n /^Çər\\.a$/i,\n /^Çər$/i,\n /^Cüm\\.a$/i,\n /^Cüm$/i,\n /^Şə$/i,\n ],\n\n wide: [\n /^Bazar$/i,\n /^Bazar ertəsi$/i,\n /^Çərşənbə axşamı$/i,\n /^Çərşənbə$/i,\n /^Cümə axşamı$/i,\n /^Cümə$/i,\n /^Şənbə$/i,\n ],\n\n any: [\n /^B\\.$/i,\n /^B\\.e$/i,\n /^Ç\\.a$/i,\n /^Ç\\.$/i,\n /^C\\.a$/i,\n /^C\\.$/i,\n /^Ş\\.$/i,\n ],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i,\n any: /^(am|pm|a\\.m\\.|p\\.m\\.|AM|PM|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a$/i,\n pm: /^p$/i,\n midnight: /^gecəyarı$/i,\n noon: /^gün$/i,\n morning: /səhər$/i,\n afternoon: /gündüz$/i,\n evening: /axşam$/i,\n night: /gecə$/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"narrow\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./az/_lib/formatDistance.js\";\nimport { formatLong } from \"./az/_lib/formatLong.js\";\nimport { formatRelative } from \"./az/_lib/formatRelative.js\";\nimport { localize } from \"./az/_lib/localize.js\";\nimport { match } from \"./az/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Azerbaijani locale.\n * @language Azerbaijani\n * @iso-639-2 aze\n */\n\nexport const az = {\n code: \"az\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default az;\n"],"names":["formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatRelativeLocale","formatRelative","_date","_baseDate","_options","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","suffixes","getSuffix","number","a","b","c","ordinalNumber","dirtyNumber","suffix","localize","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","az"],"mappings":";yJAAA,MAAMA,EAAuB,CAC3B,iBAAkB,CAChB,IAAK,mBACL,MAAO,4BACX,EAEE,SAAU,CACR,IAAK,WACL,MAAO,kBACX,EAEE,YAAa,eAEb,iBAAkB,CAChB,IAAK,mBACL,MAAO,4BACX,EAEE,SAAU,CACR,IAAK,aACL,MAAO,kBACX,EAEE,YAAa,CACX,IAAK,kBACL,MAAO,yBACX,EAEE,OAAQ,CACN,IAAK,SACL,MAAO,gBACX,EAEE,MAAO,CACL,IAAK,QACL,MAAO,eACX,EAEE,YAAa,CACX,IAAK,mBACL,MAAO,0BACX,EAEE,OAAQ,CACN,IAAK,UACL,MAAO,iBACX,EAEE,aAAc,CACZ,IAAK,gBACL,MAAO,uBACX,EAEE,QAAS,CACP,IAAK,OACL,MAAO,cACX,EAEE,YAAa,CACX,IAAK,gBACL,MAAO,uBACX,EAEE,OAAQ,CACN,IAAK,OACL,MAAO,cACX,EAEE,WAAY,CACV,IAAK,cACL,MAAO,qBACX,EAEE,aAAc,CACZ,IAAK,qBACL,MAAO,4BACX,CACA,EAEaC,EAAiB,CAACC,EAAOC,EAAOC,IAAY,CACvD,IAAIC,EAEJ,MAAMC,EAAaN,EAAqBE,CAAK,EAS7C,OARI,OAAOI,GAAe,SACxBD,EAASC,EACAH,IAAU,EACnBE,EAASC,EAAW,IAEpBD,EAASC,EAAW,MAAM,QAAQ,YAAa,OAAOH,CAAK,CAAC,EAG1DC,GAAS,UACPA,EAAQ,YAAcA,EAAQ,WAAa,EACtCC,EAAS,SAETA,EAAS,SAIbA,CACT,EClGME,EAAc,CAClB,KAAM,uBACN,KAAM,iBACN,OAAQ,eACR,MAAO,YACT,EAEMC,EAAc,CAClB,KAAM,eACN,KAAM,YACN,OAAQ,UACR,MAAO,MACT,EAEMC,EAAkB,CACtB,KAAM,2BACN,KAAM,2BACN,OAAQ,qBACR,MAAO,oBACT,EAEaC,EAAa,CACxB,KAAMC,EAAkB,CACtB,QAASJ,EACT,aAAc,MAClB,CAAG,EAED,KAAMI,EAAkB,CACtB,QAASH,EACT,aAAc,MAClB,CAAG,EAED,SAAUG,EAAkB,CAC1B,QAASF,EACT,aAAc,MAClB,CAAG,CACH,ECtCMG,EAAuB,CAC3B,SAAU,yBACV,UAAW,kBACX,MAAO,kBACP,SAAU,kBACV,SAAU,eACV,MAAO,GACT,EAEaC,EAAiB,CAACX,EAAOY,EAAOC,EAAWC,IACtDJ,EAAqBV,CAAK,ECRtBe,EAAY,CAChB,OAAQ,CAAC,MAAO,KAAK,EACrB,YAAa,CAAC,MAAO,KAAK,EAC1B,KAAM,CAAC,kBAAmB,WAAW,CACvC,EAEMC,EAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,cAAe,cAAe,cAAe,aAAa,CACnE,EACMC,EAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,KACJ,EAEE,KAAM,CACJ,SACA,SACA,OACA,QACA,MACA,OACA,OACA,SACA,WACA,UACA,SACA,QACJ,CACA,EAEMC,EAAY,CAChB,OAAQ,CAAC,KAAM,MAAO,MAAO,KAAM,MAAO,KAAM,IAAI,EACpD,MAAO,CAAC,KAAM,MAAO,MAAO,KAAM,MAAO,KAAM,IAAI,EACnD,YAAa,CAAC,MAAO,QAAS,QAAS,MAAO,QAAS,MAAO,IAAI,EAClE,KAAM,CACJ,QACA,eACA,kBACA,WACA,cACA,OACA,OACJ,CACA,EAEMC,EAAkB,CACtB,OAAQ,CACN,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,MACN,QAAS,QACT,UAAW,SACX,QAAS,QACT,MAAO,MACX,EACE,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,MACN,QAAS,QACT,UAAW,SACX,QAAS,QACT,MAAO,MACX,EACE,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,WACV,KAAM,MACN,QAAS,QACT,UAAW,SACX,QAAS,QACT,MAAO,MACX,CACA,EAEMC,EAA4B,CAChC,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,WACV,KAAM,MACN,QAAS,QACT,UAAW,SACX,QAAS,QACT,MAAO,MACX,EACE,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,MACN,QAAS,QACT,UAAW,SACX,QAAS,QACT,MAAO,MACX,EACE,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,WACV,KAAM,MACN,QAAS,QACT,UAAW,SACX,QAAS,QACT,MAAO,MACX,CACA,EAEMC,EAAW,CACf,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,OACN,EAEMC,EAAaC,GAAW,CAC5B,GAAIA,IAAW,EAEb,OAAOA,EAAS,QAGlB,MAAMC,EAAID,EAAS,GACbE,EAAKF,EAAS,IAAOC,EACrBE,EAAIH,GAAU,IAAM,IAAM,KAEhC,OAAIF,EAASG,CAAC,EACLH,EAASG,CAAC,EACRH,EAASI,CAAC,EACZJ,EAASI,CAAC,EACRC,IAAM,KACRL,EAASK,CAAC,EAEZ,EACT,EAEMC,EAAgB,CAACC,EAAad,IAAa,CAC/C,MAAMS,EAAS,OAAOK,CAAW,EAC3BC,EAASP,EAAUC,CAAM,EAE/B,OAAOA,EAASM,CAClB,EAEaC,EAAW,CACtB,cAAAH,EAEA,IAAKI,EAAgB,CACnB,OAAQhB,EACR,aAAc,MAClB,CAAG,EAED,QAASgB,EAAgB,CACvB,OAAQf,EACR,aAAc,OACd,iBAAmBgB,GAAYA,EAAU,CAC7C,CAAG,EAED,MAAOD,EAAgB,CACrB,OAAQd,EACR,aAAc,MAClB,CAAG,EAED,IAAKc,EAAgB,CACnB,OAAQb,EACR,aAAc,MAClB,CAAG,EAED,UAAWa,EAAgB,CACzB,OAAQZ,EACR,aAAc,OACd,iBAAkBC,EAClB,uBAAwB,MAC5B,CAAG,CACH,EC1MMa,EAA4B,0CAC5BC,EAA4B,OAE5BC,EAAmB,CACvB,OAAQ,WACR,YAAa,8DACb,KAAM,mCACR,EACMC,EAAmB,CACvB,IAAK,CAAC,OAAQ,UAAU,CAC1B,EAEMC,EAAuB,CAC3B,OAAQ,YACR,YAAa,aACb,KAAM,wBACR,EACMC,EAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EAEMC,EAAqB,CACzB,OAAQ,sBACR,YAAa,yDACb,KAAM,mFACR,EACMC,EAAqB,CACzB,OAAQ,CACN,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,aACJ,EAEE,YAAa,CACX,SACA,SACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,SACA,QACJ,EAEE,KAAM,CACJ,YACA,YACA,UACA,WACA,SACA,UACA,UACA,YACA,cACA,aACA,YACA,WACJ,CACA,EAEMC,EAAmB,CACvB,OAAQ,sCACR,MAAO,sCACP,YAAa,uCACb,KAAM,yEACR,EACMC,EAAmB,CACvB,OAAQ,CACN,SACA,UACA,UACA,SACA,UACA,SACA,QACJ,EAEE,YAAa,CACX,SACA,YACA,YACA,SACA,YACA,SACA,OACJ,EAEE,KAAM,CACJ,WACA,kBACA,qBACA,cACA,iBACA,UACA,UACJ,EAEE,IAAK,CACH,SACA,UACA,UACA,SACA,UACA,SACA,QACJ,CACA,EAEMC,EAAyB,CAC7B,OAAQ,gDACR,IAAK,qEACP,EACMC,EAAyB,CAC7B,IAAK,CACH,GAAI,OACJ,GAAI,OACJ,SAAU,cACV,KAAM,SACN,QAAS,UACT,UAAW,WACX,QAAS,UACT,MAAO,QACX,CACA,EAEaC,EAAQ,CACnB,cAAeC,EAAoB,CACjC,aAAcb,EACd,aAAcC,EACd,cAAgBa,GAAU,SAASA,EAAO,EAAE,CAChD,CAAG,EAED,IAAKC,EAAa,CAChB,cAAeb,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,QAASY,EAAa,CACpB,cAAeX,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,MACnB,cAAgBW,GAAUA,EAAQ,CACtC,CAAG,EAED,MAAOD,EAAa,CAClB,cAAeT,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,QACvB,CAAG,EAED,IAAKQ,EAAa,CAChB,cAAeP,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,UAAWM,EAAa,CACtB,cAAeL,EACf,kBAAmB,MACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,CACH,EC1KaM,EAAK,CAChB,KAAM,KACN,eAAgBnD,EAChB,WAAYS,EACZ,eAAgBG,EAChB,SAAUmB,EACV,MAAOe,EACP,QAAS,CACP,aAAc,EACd,sBAAuB,CAC3B,CACA","x_google_ignoreList":[0,1,2,3,4,5]} \ No newline at end of file diff --git a/js/az-DinC2iyY.chunk.mjs.map.license b/js/az-DinC2iyY.chunk.mjs.map.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/az-DinC2iyY.chunk.mjs.map.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/be-CW5fta_H.chunk.mjs b/js/be-CW5fta_H.chunk.mjs deleted file mode 100644 index ff694fdc..00000000 --- a/js/be-CW5fta_H.chunk.mjs +++ /dev/null @@ -1,3 +0,0 @@ -/*! third party licenses: js/vendor.LICENSE.txt */ -import{b as D,t as B,c as r,d as o,e as g}from"./index-Cr1DLTt7.chunk.mjs";import{i as c}from"./isSameWeek-DEBA-plP.chunk.mjs";import"./user_migration-personalSettings.mjs";import"./be-tarask-CzbVxLq7.chunk.mjs";function l(u,i){if(u.one!==void 0&&i===1)return u.one;const n=i%10,t=i%100;return n===1&&t!==11?u.singularNominative.replace("{{count}}",String(i)):n>=2&&n<=4&&(t<10||t>20)?u.singularGenitive.replace("{{count}}",String(i)):u.pluralGenitive.replace("{{count}}",String(i))}function e(u){return(i,n)=>n&&n.addSuffix?n.comparison&&n.comparison>0?u.future?l(u.future,i):"праз "+l(u.regular,i):u.past?l(u.past,i):l(u.regular,i)+" таму":l(u.regular,i)}const v=(u,i)=>i&&i.addSuffix?i.comparison&&i.comparison>0?"праз паўхвіліны":"паўхвіліны таму":"паўхвіліны",d={lessThanXSeconds:e({regular:{one:"менш за секунду",singularNominative:"менш за {{count}} секунду",singularGenitive:"менш за {{count}} секунды",pluralGenitive:"менш за {{count}} секунд"},future:{one:"менш, чым праз секунду",singularNominative:"менш, чым праз {{count}} секунду",singularGenitive:"менш, чым праз {{count}} секунды",pluralGenitive:"менш, чым праз {{count}} секунд"}}),xSeconds:e({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунды",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду таму",singularGenitive:"{{count}} секунды таму",pluralGenitive:"{{count}} секунд таму"},future:{singularNominative:"праз {{count}} секунду",singularGenitive:"праз {{count}} секунды",pluralGenitive:"праз {{count}} секунд"}}),halfAMinute:v,lessThanXMinutes:e({regular:{one:"менш за хвіліну",singularNominative:"менш за {{count}} хвіліну",singularGenitive:"менш за {{count}} хвіліны",pluralGenitive:"менш за {{count}} хвілін"},future:{one:"менш, чым праз хвіліну",singularNominative:"менш, чым праз {{count}} хвіліну",singularGenitive:"менш, чым праз {{count}} хвіліны",pluralGenitive:"менш, чым праз {{count}} хвілін"}}),xMinutes:e({regular:{singularNominative:"{{count}} хвіліна",singularGenitive:"{{count}} хвіліны",pluralGenitive:"{{count}} хвілін"},past:{singularNominative:"{{count}} хвіліну таму",singularGenitive:"{{count}} хвіліны таму",pluralGenitive:"{{count}} хвілін таму"},future:{singularNominative:"праз {{count}} хвіліну",singularGenitive:"праз {{count}} хвіліны",pluralGenitive:"праз {{count}} хвілін"}}),aboutXHours:e({regular:{singularNominative:"каля {{count}} гадзіны",singularGenitive:"каля {{count}} гадзін",pluralGenitive:"каля {{count}} гадзін"},future:{singularNominative:"прыблізна праз {{count}} гадзіну",singularGenitive:"прыблізна праз {{count}} гадзіны",pluralGenitive:"прыблізна праз {{count}} гадзін"}}),xHours:e({regular:{singularNominative:"{{count}} гадзіна",singularGenitive:"{{count}} гадзіны",pluralGenitive:"{{count}} гадзін"},past:{singularNominative:"{{count}} гадзіну таму",singularGenitive:"{{count}} гадзіны таму",pluralGenitive:"{{count}} гадзін таму"},future:{singularNominative:"праз {{count}} гадзіну",singularGenitive:"праз {{count}} гадзіны",pluralGenitive:"праз {{count}} гадзін"}}),xDays:e({regular:{singularNominative:"{{count}} дзень",singularGenitive:"{{count}} дні",pluralGenitive:"{{count}} дзён"}}),aboutXWeeks:e({regular:{singularNominative:"каля {{count}} тыдні",singularGenitive:"каля {{count}} тыдняў",pluralGenitive:"каля {{count}} тыдняў"},future:{singularNominative:"прыблізна праз {{count}} тыдзень",singularGenitive:"прыблізна праз {{count}} тыдні",pluralGenitive:"прыблізна праз {{count}} тыдняў"}}),xWeeks:e({regular:{singularNominative:"{{count}} тыдзень",singularGenitive:"{{count}} тыдні",pluralGenitive:"{{count}} тыдняў"}}),aboutXMonths:e({regular:{singularNominative:"каля {{count}} месяца",singularGenitive:"каля {{count}} месяцаў",pluralGenitive:"каля {{count}} месяцаў"},future:{singularNominative:"прыблізна праз {{count}} месяц",singularGenitive:"прыблізна праз {{count}} месяцы",pluralGenitive:"прыблізна праз {{count}} месяцаў"}}),xMonths:e({regular:{singularNominative:"{{count}} месяц",singularGenitive:"{{count}} месяцы",pluralGenitive:"{{count}} месяцаў"}}),aboutXYears:e({regular:{singularNominative:"каля {{count}} года",singularGenitive:"каля {{count}} гадоў",pluralGenitive:"каля {{count}} гадоў"},future:{singularNominative:"прыблізна праз {{count}} год",singularGenitive:"прыблізна праз {{count}} гады",pluralGenitive:"прыблізна праз {{count}} гадоў"}}),xYears:e({regular:{singularNominative:"{{count}} год",singularGenitive:"{{count}} гады",pluralGenitive:"{{count}} гадоў"}}),overXYears:e({regular:{singularNominative:"больш за {{count}} год",singularGenitive:"больш за {{count}} гады",pluralGenitive:"больш за {{count}} гадоў"},future:{singularNominative:"больш, чым праз {{count}} год",singularGenitive:"больш, чым праз {{count}} гады",pluralGenitive:"больш, чым праз {{count}} гадоў"}}),almostXYears:e({regular:{singularNominative:"амаль {{count}} год",singularGenitive:"амаль {{count}} гады",pluralGenitive:"амаль {{count}} гадоў"},future:{singularNominative:"амаль праз {{count}} год",singularGenitive:"амаль праз {{count}} гады",pluralGenitive:"амаль праз {{count}} гадоў"}})},m=(u,i,n)=>(n=n||{},d[u](i,n)),E={full:"EEEE, d MMMM y 'г.'",long:"d MMMM y 'г.'",medium:"d MMM y 'г.'",short:"dd.MM.y"},C={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},p={any:"{{date}}, {{time}}"},f={date:D({formats:E,defaultWidth:"full"}),time:D({formats:C,defaultWidth:"full"}),dateTime:D({formats:p,defaultWidth:"any"})},s=["нядзелю","панядзелак","аўторак","сераду","чацвер","пятніцу","суботу"];function A(u){const i=s[u];switch(u){case 0:case 3:case 5:case 6:return"'у мінулую "+i+" а' p";case 1:case 2:case 4:return"'у мінулы "+i+" а' p"}}function F(u){return"'у "+s[u]+" а' p"}function h(u){const i=s[u];switch(u){case 0:case 3:case 5:case 6:return"'у наступную "+i+" а' p";case 1:case 2:case 4:return"'у наступны "+i+" а' p"}}const G=(u,i,n)=>{const t=B(u),a=t.getDay();return c(t,i,n)?F(a):A(a)},w=(u,i,n)=>{const t=B(u),a=t.getDay();return c(t,i,n)?F(a):h(a)},b={lastWeek:G,yesterday:"'учора а' p",today:"'сёння а' p",tomorrow:"'заўтра а' p",nextWeek:w,other:"P"},N=(u,i,n,t)=>{const a=b[u];return typeof a=="function"?a(i,n,t):a},y={narrow:["да н.э.","н.э."],abbreviated:["да н. э.","н. э."],wide:["да нашай эры","нашай эры"]},W={narrow:["1","2","3","4"],abbreviated:["1-ы кв.","2-і кв.","3-і кв.","4-ы кв."],wide:["1-ы квартал","2-і квартал","3-і квартал","4-ы квартал"]},M={narrow:["С","Л","С","К","М","Ч","Л","Ж","В","К","Л","С"],abbreviated:["студз.","лют.","сак.","крас.","май","чэрв.","ліп.","жн.","вер.","кастр.","ліст.","снеж."],wide:["студзень","люты","сакавік","красавік","май","чэрвень","ліпень","жнівень","верасень","кастрычнік","лістапад","снежань"]},P={narrow:["С","Л","С","К","М","Ч","Л","Ж","В","К","Л","С"],abbreviated:["студз.","лют.","сак.","крас.","мая","чэрв.","ліп.","жн.","вер.","кастр.","ліст.","снеж."],wide:["студзеня","лютага","сакавіка","красавіка","мая","чэрвеня","ліпеня","жніўня","верасня","кастрычніка","лістапада","снежня"]},x={narrow:["Н","П","А","С","Ч","П","С"],short:["нд","пн","аў","ср","чц","пт","сб"],abbreviated:["нядз","пан","аўт","сер","чац","пят","суб"],wide:["нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"]},k={narrow:{am:"ДП",pm:"ПП",midnight:"поўн.",noon:"поўд.",morning:"ран.",afternoon:"дзень",evening:"веч.",night:"ноч"},abbreviated:{am:"ДП",pm:"ПП",midnight:"поўн.",noon:"поўд.",morning:"ран.",afternoon:"дзень",evening:"веч.",night:"ноч"},wide:{am:"ДП",pm:"ПП",midnight:"поўнач",noon:"поўдзень",morning:"раніца",afternoon:"дзень",evening:"вечар",night:"ноч"}},S={narrow:{am:"ДП",pm:"ПП",midnight:"поўн.",noon:"поўд.",morning:"ран.",afternoon:"дня",evening:"веч.",night:"ночы"},abbreviated:{am:"ДП",pm:"ПП",midnight:"поўн.",noon:"поўд.",morning:"ран.",afternoon:"дня",evening:"веч.",night:"ночы"},wide:{am:"ДП",pm:"ПП",midnight:"поўнач",noon:"поўдзень",morning:"раніцы",afternoon:"дня",evening:"вечара",night:"ночы"}},X=(u,i)=>{const n=String(i?.unit),t=Number(u);let a;return n==="date"?a="-га":n==="hour"||n==="minute"||n==="second"?a="-я":a=(t%10===2||t%10===3)&&t%100!==12&&t%100!==13?"-і":"-ы",t+a},z={ordinalNumber:X,era:r({values:y,defaultWidth:"wide"}),quarter:r({values:W,defaultWidth:"wide",argumentCallback:u=>u-1}),month:r({values:M,defaultWidth:"wide",formattingValues:P,defaultFormattingWidth:"wide"}),day:r({values:x,defaultWidth:"wide"}),dayPeriod:r({values:k,defaultWidth:"any",formattingValues:S,defaultFormattingWidth:"wide"})},H=/^(\d+)(-?(е|я|га|і|ы|ае|ая|яя|шы|гі|ці|ты|мы))?/i,Y=/\d+/i,T={narrow:/^((да )?н\.?\s?э\.?)/i,abbreviated:/^((да )?н\.?\s?э\.?)/i,wide:/^(да нашай эры|нашай эры|наша эра)/i},q={any:[/^д/i,/^н/i]},V={narrow:/^[1234]/i,abbreviated:/^[1234](-?[ыі]?)? кв.?/i,wide:/^[1234](-?[ыі]?)? квартал/i},I={any:[/1/i,/2/i,/3/i,/4/i]},L={narrow:/^[слкмчжв]/i,abbreviated:/^(студз|лют|сак|крас|ма[йя]|чэрв|ліп|жн|вер|кастр|ліст|снеж)\.?/i,wide:/^(студзен[ья]|лют(ы|ага)|сакавіка?|красавіка?|ма[йя]|чэрвен[ья]|ліпен[ья]|жні(вень|ўня)|верас(ень|ня)|кастрычніка?|лістапада?|снеж(ань|ня))/i},O={narrow:[/^с/i,/^л/i,/^с/i,/^к/i,/^м/i,/^ч/i,/^л/i,/^ж/i,/^в/i,/^к/i,/^л/i,/^с/i],any:[/^ст/i,/^лю/i,/^са/i,/^кр/i,/^ма/i,/^ч/i,/^ліп/i,/^ж/i,/^в/i,/^ка/i,/^ліс/i,/^сн/i]},R={narrow:/^[нпасч]/i,short:/^(нд|ня|пн|па|аў|ат|ср|се|чц|ча|пт|пя|сб|су)\.?/i,abbreviated:/^(нядз?|ндз|пнд|пан|аўт|срд|сер|чцв|чац|птн|пят|суб).?/i,wide:/^(нядзел[яі]|панядзел(ак|ка)|аўтор(ак|ка)|серад[аы]|чацв(ер|ярга)|пятніц[аы]|субот[аы])/i},_={narrow:[/^н/i,/^п/i,/^а/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н/i,/^п[ан]/i,/^а/i,/^с[ер]/i,/^ч/i,/^п[ят]/i,/^с[уб]/i]},j={narrow:/^([дп]п|поўн\.?|поўд\.?|ран\.?|дзень|дня|веч\.?|ночы?)/i,abbreviated:/^([дп]п|поўн\.?|поўд\.?|ран\.?|дзень|дня|веч\.?|ночы?)/i,wide:/^([дп]п|поўнач|поўдзень|раніц[аы]|дзень|дня|вечара?|ночы?)/i},J={any:{am:/^дп/i,pm:/^пп/i,midnight:/^поўн/i,noon:/^поўд/i,morning:/^р/i,afternoon:/^д[зн]/i,evening:/^в/i,night:/^н/i}},K={ordinalNumber:g({matchPattern:H,parsePattern:Y,valueCallback:u=>parseInt(u,10)}),era:o({matchPatterns:T,defaultMatchWidth:"wide",parsePatterns:q,defaultParseWidth:"any"}),quarter:o({matchPatterns:V,defaultMatchWidth:"wide",parsePatterns:I,defaultParseWidth:"any",valueCallback:u=>u+1}),month:o({matchPatterns:L,defaultMatchWidth:"wide",parsePatterns:O,defaultParseWidth:"any"}),day:o({matchPatterns:R,defaultMatchWidth:"wide",parsePatterns:_,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:j,defaultMatchWidth:"wide",parsePatterns:J,defaultParseWidth:"any"})},u4={code:"be",formatDistance:m,formatLong:f,formatRelative:N,localize:z,match:K,options:{weekStartsOn:1,firstWeekContainsDate:1}};export{u4 as be}; -//# sourceMappingURL=be-CW5fta_H.chunk.mjs.map diff --git a/js/be-CW5fta_H.chunk.mjs.license b/js/be-CW5fta_H.chunk.mjs.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/be-CW5fta_H.chunk.mjs.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/be-CW5fta_H.chunk.mjs.map b/js/be-CW5fta_H.chunk.mjs.map deleted file mode 100644 index e7b396db..00000000 --- a/js/be-CW5fta_H.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"be-CW5fta_H.chunk.mjs","sources":["../node_modules/date-fns/locale/be/_lib/formatDistance.js","../node_modules/date-fns/locale/be/_lib/formatLong.js","../node_modules/date-fns/locale/be/_lib/formatRelative.js","../node_modules/date-fns/locale/be/_lib/localize.js","../node_modules/date-fns/locale/be/_lib/match.js","../node_modules/date-fns/locale/be.js"],"sourcesContent":["function declension(scheme, count) {\n // scheme for count=1 exists\n if (scheme.one !== undefined && count === 1) {\n return scheme.one;\n }\n\n const rem10 = count % 10;\n const rem100 = count % 100;\n\n // 1, 21, 31, ...\n if (rem10 === 1 && rem100 !== 11) {\n return scheme.singularNominative.replace(\"{{count}}\", String(count));\n\n // 2, 3, 4, 22, 23, 24, 32 ...\n } else if (rem10 >= 2 && rem10 <= 4 && (rem100 < 10 || rem100 > 20)) {\n return scheme.singularGenitive.replace(\"{{count}}\", String(count));\n\n // 5, 6, 7, 8, 9, 10, 11, ...\n } else {\n return scheme.pluralGenitive.replace(\"{{count}}\", String(count));\n }\n}\n\nfunction buildLocalizeTokenFn(scheme) {\n return (count, options) => {\n if (options && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n if (scheme.future) {\n return declension(scheme.future, count);\n } else {\n return \"праз \" + declension(scheme.regular, count);\n }\n } else {\n if (scheme.past) {\n return declension(scheme.past, count);\n } else {\n return declension(scheme.regular, count) + \" таму\";\n }\n }\n } else {\n return declension(scheme.regular, count);\n }\n };\n}\n\nconst halfAMinute = (_, options) => {\n if (options && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"праз паўхвіліны\";\n } else {\n return \"паўхвіліны таму\";\n }\n }\n\n return \"паўхвіліны\";\n};\n\nconst formatDistanceLocale = {\n lessThanXSeconds: buildLocalizeTokenFn({\n regular: {\n one: \"менш за секунду\",\n singularNominative: \"менш за {{count}} секунду\",\n singularGenitive: \"менш за {{count}} секунды\",\n pluralGenitive: \"менш за {{count}} секунд\",\n },\n future: {\n one: \"менш, чым праз секунду\",\n singularNominative: \"менш, чым праз {{count}} секунду\",\n singularGenitive: \"менш, чым праз {{count}} секунды\",\n pluralGenitive: \"менш, чым праз {{count}} секунд\",\n },\n }),\n\n xSeconds: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} секунда\",\n singularGenitive: \"{{count}} секунды\",\n pluralGenitive: \"{{count}} секунд\",\n },\n past: {\n singularNominative: \"{{count}} секунду таму\",\n singularGenitive: \"{{count}} секунды таму\",\n pluralGenitive: \"{{count}} секунд таму\",\n },\n future: {\n singularNominative: \"праз {{count}} секунду\",\n singularGenitive: \"праз {{count}} секунды\",\n pluralGenitive: \"праз {{count}} секунд\",\n },\n }),\n\n halfAMinute: halfAMinute,\n\n lessThanXMinutes: buildLocalizeTokenFn({\n regular: {\n one: \"менш за хвіліну\",\n singularNominative: \"менш за {{count}} хвіліну\",\n singularGenitive: \"менш за {{count}} хвіліны\",\n pluralGenitive: \"менш за {{count}} хвілін\",\n },\n future: {\n one: \"менш, чым праз хвіліну\",\n singularNominative: \"менш, чым праз {{count}} хвіліну\",\n singularGenitive: \"менш, чым праз {{count}} хвіліны\",\n pluralGenitive: \"менш, чым праз {{count}} хвілін\",\n },\n }),\n\n xMinutes: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} хвіліна\",\n singularGenitive: \"{{count}} хвіліны\",\n pluralGenitive: \"{{count}} хвілін\",\n },\n past: {\n singularNominative: \"{{count}} хвіліну таму\",\n singularGenitive: \"{{count}} хвіліны таму\",\n pluralGenitive: \"{{count}} хвілін таму\",\n },\n future: {\n singularNominative: \"праз {{count}} хвіліну\",\n singularGenitive: \"праз {{count}} хвіліны\",\n pluralGenitive: \"праз {{count}} хвілін\",\n },\n }),\n\n aboutXHours: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"каля {{count}} гадзіны\",\n singularGenitive: \"каля {{count}} гадзін\",\n pluralGenitive: \"каля {{count}} гадзін\",\n },\n future: {\n singularNominative: \"прыблізна праз {{count}} гадзіну\",\n singularGenitive: \"прыблізна праз {{count}} гадзіны\",\n pluralGenitive: \"прыблізна праз {{count}} гадзін\",\n },\n }),\n\n xHours: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} гадзіна\",\n singularGenitive: \"{{count}} гадзіны\",\n pluralGenitive: \"{{count}} гадзін\",\n },\n past: {\n singularNominative: \"{{count}} гадзіну таму\",\n singularGenitive: \"{{count}} гадзіны таму\",\n pluralGenitive: \"{{count}} гадзін таму\",\n },\n future: {\n singularNominative: \"праз {{count}} гадзіну\",\n singularGenitive: \"праз {{count}} гадзіны\",\n pluralGenitive: \"праз {{count}} гадзін\",\n },\n }),\n\n xDays: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} дзень\",\n singularGenitive: \"{{count}} дні\",\n pluralGenitive: \"{{count}} дзён\",\n },\n }),\n\n aboutXWeeks: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"каля {{count}} тыдні\",\n singularGenitive: \"каля {{count}} тыдняў\",\n pluralGenitive: \"каля {{count}} тыдняў\",\n },\n future: {\n singularNominative: \"прыблізна праз {{count}} тыдзень\",\n singularGenitive: \"прыблізна праз {{count}} тыдні\",\n pluralGenitive: \"прыблізна праз {{count}} тыдняў\",\n },\n }),\n\n xWeeks: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} тыдзень\",\n singularGenitive: \"{{count}} тыдні\",\n pluralGenitive: \"{{count}} тыдняў\",\n },\n }),\n\n aboutXMonths: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"каля {{count}} месяца\",\n singularGenitive: \"каля {{count}} месяцаў\",\n pluralGenitive: \"каля {{count}} месяцаў\",\n },\n future: {\n singularNominative: \"прыблізна праз {{count}} месяц\",\n singularGenitive: \"прыблізна праз {{count}} месяцы\",\n pluralGenitive: \"прыблізна праз {{count}} месяцаў\",\n },\n }),\n\n xMonths: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} месяц\",\n singularGenitive: \"{{count}} месяцы\",\n pluralGenitive: \"{{count}} месяцаў\",\n },\n }),\n\n aboutXYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"каля {{count}} года\",\n singularGenitive: \"каля {{count}} гадоў\",\n pluralGenitive: \"каля {{count}} гадоў\",\n },\n future: {\n singularNominative: \"прыблізна праз {{count}} год\",\n singularGenitive: \"прыблізна праз {{count}} гады\",\n pluralGenitive: \"прыблізна праз {{count}} гадоў\",\n },\n }),\n\n xYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} год\",\n singularGenitive: \"{{count}} гады\",\n pluralGenitive: \"{{count}} гадоў\",\n },\n }),\n\n overXYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"больш за {{count}} год\",\n singularGenitive: \"больш за {{count}} гады\",\n pluralGenitive: \"больш за {{count}} гадоў\",\n },\n future: {\n singularNominative: \"больш, чым праз {{count}} год\",\n singularGenitive: \"больш, чым праз {{count}} гады\",\n pluralGenitive: \"больш, чым праз {{count}} гадоў\",\n },\n }),\n\n almostXYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"амаль {{count}} год\",\n singularGenitive: \"амаль {{count}} гады\",\n pluralGenitive: \"амаль {{count}} гадоў\",\n },\n future: {\n singularNominative: \"амаль праз {{count}} год\",\n singularGenitive: \"амаль праз {{count}} гады\",\n pluralGenitive: \"амаль праз {{count}} гадоў\",\n },\n }),\n};\n\nexport const formatDistance = (token, count, options) => {\n options = options || {};\n return formatDistanceLocale[token](count, options);\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, d MMMM y 'г.'\",\n long: \"d MMMM y 'г.'\",\n medium: \"d MMM y 'г.'\",\n short: \"dd.MM.y\",\n};\n\nconst timeFormats = {\n full: \"H:mm:ss zzzz\",\n long: \"H:mm:ss z\",\n medium: \"H:mm:ss\",\n short: \"H:mm\",\n};\n\nconst dateTimeFormats = {\n any: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"any\",\n }),\n};\n","import { isSameWeek } from \"../../../isSameWeek.js\";\nimport { toDate } from \"../../../toDate.js\";\n\nconst accusativeWeekdays = [\n \"нядзелю\",\n \"панядзелак\",\n \"аўторак\",\n \"сераду\",\n \"чацвер\",\n \"пятніцу\",\n \"суботу\",\n];\n\nfunction lastWeek(day) {\n const weekday = accusativeWeekdays[day];\n\n switch (day) {\n case 0:\n case 3:\n case 5:\n case 6:\n return \"'у мінулую \" + weekday + \" а' p\";\n case 1:\n case 2:\n case 4:\n return \"'у мінулы \" + weekday + \" а' p\";\n }\n}\n\nfunction thisWeek(day) {\n const weekday = accusativeWeekdays[day];\n\n return \"'у \" + weekday + \" а' p\";\n}\n\nfunction nextWeek(day) {\n const weekday = accusativeWeekdays[day];\n\n switch (day) {\n case 0:\n case 3:\n case 5:\n case 6:\n return \"'у наступную \" + weekday + \" а' p\";\n case 1:\n case 2:\n case 4:\n return \"'у наступны \" + weekday + \" а' p\";\n }\n}\n\nconst lastWeekFormat = (dirtyDate, baseDate, options) => {\n const date = toDate(dirtyDate);\n const day = date.getDay();\n if (isSameWeek(date, baseDate, options)) {\n return thisWeek(day);\n } else {\n return lastWeek(day);\n }\n};\n\nconst nextWeekFormat = (dirtyDate, baseDate, options) => {\n const date = toDate(dirtyDate);\n const day = date.getDay();\n if (isSameWeek(date, baseDate, options)) {\n return thisWeek(day);\n } else {\n return nextWeek(day);\n }\n};\n\nconst formatRelativeLocale = {\n lastWeek: lastWeekFormat,\n yesterday: \"'учора а' p\",\n today: \"'сёння а' p\",\n tomorrow: \"'заўтра а' p\",\n nextWeek: nextWeekFormat,\n other: \"P\",\n};\n\nexport const formatRelative = (token, date, baseDate, options) => {\n const format = formatRelativeLocale[token];\n\n if (typeof format === \"function\") {\n return format(date, baseDate, options);\n }\n\n return format;\n};\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"да н.э.\", \"н.э.\"],\n abbreviated: [\"да н. э.\", \"н. э.\"],\n wide: [\"да нашай эры\", \"нашай эры\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"1-ы кв.\", \"2-і кв.\", \"3-і кв.\", \"4-ы кв.\"],\n wide: [\"1-ы квартал\", \"2-і квартал\", \"3-і квартал\", \"4-ы квартал\"],\n};\n\nconst monthValues = {\n narrow: [\"С\", \"Л\", \"С\", \"К\", \"М\", \"Ч\", \"Л\", \"Ж\", \"В\", \"К\", \"Л\", \"С\"],\n abbreviated: [\n \"студз.\",\n \"лют.\",\n \"сак.\",\n \"крас.\",\n \"май\",\n \"чэрв.\",\n \"ліп.\",\n \"жн.\",\n \"вер.\",\n \"кастр.\",\n \"ліст.\",\n \"снеж.\",\n ],\n\n wide: [\n \"студзень\",\n \"люты\",\n \"сакавік\",\n \"красавік\",\n \"май\",\n \"чэрвень\",\n \"ліпень\",\n \"жнівень\",\n \"верасень\",\n \"кастрычнік\",\n \"лістапад\",\n \"снежань\",\n ],\n};\nconst formattingMonthValues = {\n narrow: [\"С\", \"Л\", \"С\", \"К\", \"М\", \"Ч\", \"Л\", \"Ж\", \"В\", \"К\", \"Л\", \"С\"],\n abbreviated: [\n \"студз.\",\n \"лют.\",\n \"сак.\",\n \"крас.\",\n \"мая\",\n \"чэрв.\",\n \"ліп.\",\n \"жн.\",\n \"вер.\",\n \"кастр.\",\n \"ліст.\",\n \"снеж.\",\n ],\n\n wide: [\n \"студзеня\",\n \"лютага\",\n \"сакавіка\",\n \"красавіка\",\n \"мая\",\n \"чэрвеня\",\n \"ліпеня\",\n \"жніўня\",\n \"верасня\",\n \"кастрычніка\",\n \"лістапада\",\n \"снежня\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"Н\", \"П\", \"А\", \"С\", \"Ч\", \"П\", \"С\"],\n short: [\"нд\", \"пн\", \"аў\", \"ср\", \"чц\", \"пт\", \"сб\"],\n abbreviated: [\"нядз\", \"пан\", \"аўт\", \"сер\", \"чац\", \"пят\", \"суб\"],\n wide: [\n \"нядзеля\",\n \"панядзелак\",\n \"аўторак\",\n \"серада\",\n \"чацвер\",\n \"пятніца\",\n \"субота\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"поўн.\",\n noon: \"поўд.\",\n morning: \"ран.\",\n afternoon: \"дзень\",\n evening: \"веч.\",\n night: \"ноч\",\n },\n abbreviated: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"поўн.\",\n noon: \"поўд.\",\n morning: \"ран.\",\n afternoon: \"дзень\",\n evening: \"веч.\",\n night: \"ноч\",\n },\n wide: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"поўнач\",\n noon: \"поўдзень\",\n morning: \"раніца\",\n afternoon: \"дзень\",\n evening: \"вечар\",\n night: \"ноч\",\n },\n};\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"поўн.\",\n noon: \"поўд.\",\n morning: \"ран.\",\n afternoon: \"дня\",\n evening: \"веч.\",\n night: \"ночы\",\n },\n abbreviated: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"поўн.\",\n noon: \"поўд.\",\n morning: \"ран.\",\n afternoon: \"дня\",\n evening: \"веч.\",\n night: \"ночы\",\n },\n wide: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"поўнач\",\n noon: \"поўдзень\",\n morning: \"раніцы\",\n afternoon: \"дня\",\n evening: \"вечара\",\n night: \"ночы\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, options) => {\n const unit = String(options?.unit);\n const number = Number(dirtyNumber);\n let suffix;\n\n /** Though it's an incorrect ordinal form of a date we use it here for consistency with other similar locales (ru, uk)\n * For date-month combinations should be used `d` formatter.\n * Correct: `d MMMM` (4 верасня)\n * Incorrect: `do MMMM` (4-га верасня)\n *\n * But following the consistency leads to mistakes for literal uses of `do` formatter (ordinal day of month).\n * So for phrase \"5th day of month\" (`do дзень месяца`)\n * library will produce: `5-га дзень месяца`\n * but correct spelling should be: `5-ы дзень месяца`\n *\n * So I guess there should be a stand-alone and a formatting version of \"day of month\" formatters\n */\n if (unit === \"date\") {\n suffix = \"-га\";\n } else if (unit === \"hour\" || unit === \"minute\" || unit === \"second\") {\n suffix = \"-я\";\n } else {\n suffix =\n (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? \"-і\"\n : \"-ы\";\n }\n\n return number + suffix;\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"any\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern =\n /^(\\d+)(-?(е|я|га|і|ы|ае|ая|яя|шы|гі|ці|ты|мы))?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^((да )?н\\.?\\s?э\\.?)/i,\n abbreviated: /^((да )?н\\.?\\s?э\\.?)/i,\n wide: /^(да нашай эры|нашай эры|наша эра)/i,\n};\nconst parseEraPatterns = {\n any: [/^д/i, /^н/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234](-?[ыі]?)? кв.?/i,\n wide: /^[1234](-?[ыі]?)? квартал/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[слкмчжв]/i,\n abbreviated:\n /^(студз|лют|сак|крас|ма[йя]|чэрв|ліп|жн|вер|кастр|ліст|снеж)\\.?/i,\n wide: /^(студзен[ья]|лют(ы|ага)|сакавіка?|красавіка?|ма[йя]|чэрвен[ья]|ліпен[ья]|жні(вень|ўня)|верас(ень|ня)|кастрычніка?|лістапада?|снеж(ань|ня))/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^с/i,\n /^л/i,\n /^с/i,\n /^к/i,\n /^м/i,\n /^ч/i,\n /^л/i,\n /^ж/i,\n /^в/i,\n /^к/i,\n /^л/i,\n /^с/i,\n ],\n\n any: [\n /^ст/i,\n /^лю/i,\n /^са/i,\n /^кр/i,\n /^ма/i,\n /^ч/i,\n /^ліп/i,\n /^ж/i,\n /^в/i,\n /^ка/i,\n /^ліс/i,\n /^сн/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[нпасч]/i,\n short: /^(нд|ня|пн|па|аў|ат|ср|се|чц|ча|пт|пя|сб|су)\\.?/i,\n abbreviated: /^(нядз?|ндз|пнд|пан|аўт|срд|сер|чцв|чац|птн|пят|суб).?/i,\n wide: /^(нядзел[яі]|панядзел(ак|ка)|аўтор(ак|ка)|серад[аы]|чацв(ер|ярга)|пятніц[аы]|субот[аы])/i,\n};\nconst parseDayPatterns = {\n narrow: [/^н/i, /^п/i, /^а/i, /^с/i, /^ч/i, /^п/i, /^с/i],\n any: [/^н/i, /^п[ан]/i, /^а/i, /^с[ер]/i, /^ч/i, /^п[ят]/i, /^с[уб]/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^([дп]п|поўн\\.?|поўд\\.?|ран\\.?|дзень|дня|веч\\.?|ночы?)/i,\n abbreviated: /^([дп]п|поўн\\.?|поўд\\.?|ран\\.?|дзень|дня|веч\\.?|ночы?)/i,\n wide: /^([дп]п|поўнач|поўдзень|раніц[аы]|дзень|дня|вечара?|ночы?)/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^дп/i,\n pm: /^пп/i,\n midnight: /^поўн/i,\n noon: /^поўд/i,\n morning: /^р/i,\n afternoon: /^д[зн]/i,\n evening: /^в/i,\n night: /^н/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./be/_lib/formatDistance.js\";\nimport { formatLong } from \"./be/_lib/formatLong.js\";\nimport { formatRelative } from \"./be/_lib/formatRelative.js\";\nimport { localize } from \"./be/_lib/localize.js\";\nimport { match } from \"./be/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Belarusian locale.\n * @language Belarusian\n * @iso-639-2 bel\n * @author Kiryl Anokhin [@alyrik](https://github.com/alyrik)\n * @author Martin Wind [@arvigeus](https://github.com/mawi12345)\n */\nexport const be = {\n code: \"be\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default be;\n"],"names":["declension","scheme","count","rem10","rem100","buildLocalizeTokenFn","options","halfAMinute","_","formatDistanceLocale","formatDistance","token","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","accusativeWeekdays","lastWeek","day","weekday","thisWeek","nextWeek","lastWeekFormat","dirtyDate","baseDate","date","toDate","isSameWeek","nextWeekFormat","formatRelativeLocale","formatRelative","format","eraValues","quarterValues","monthValues","formattingMonthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","unit","number","suffix","localize","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","value","buildMatchFn","index","be"],"mappings":";oNAAA,SAASA,EAAWC,EAAQC,EAAO,CAEjC,GAAID,EAAO,MAAQ,QAAaC,IAAU,EACxC,OAAOD,EAAO,IAGhB,MAAME,EAAQD,EAAQ,GAChBE,EAASF,EAAQ,IAGvB,OAAIC,IAAU,GAAKC,IAAW,GACrBH,EAAO,mBAAmB,QAAQ,YAAa,OAAOC,CAAK,CAAC,EAG1DC,GAAS,GAAKA,GAAS,IAAMC,EAAS,IAAMA,EAAS,IACvDH,EAAO,iBAAiB,QAAQ,YAAa,OAAOC,CAAK,CAAC,EAI1DD,EAAO,eAAe,QAAQ,YAAa,OAAOC,CAAK,CAAC,CAEnE,CAEA,SAASG,EAAqBJ,EAAQ,CACpC,MAAO,CAACC,EAAOI,IACTA,GAAWA,EAAQ,UACjBA,EAAQ,YAAcA,EAAQ,WAAa,EACzCL,EAAO,OACFD,EAAWC,EAAO,OAAQC,CAAK,EAE/B,QAAUF,EAAWC,EAAO,QAASC,CAAK,EAG/CD,EAAO,KACFD,EAAWC,EAAO,KAAMC,CAAK,EAE7BF,EAAWC,EAAO,QAASC,CAAK,EAAI,QAIxCF,EAAWC,EAAO,QAASC,CAAK,CAG7C,CAEA,MAAMK,EAAc,CAACC,EAAGF,IAClBA,GAAWA,EAAQ,UACjBA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,kBAEA,kBAIJ,aAGHG,EAAuB,CAC3B,iBAAkBJ,EAAqB,CACrC,QAAS,CACP,IAAK,kBACL,mBAAoB,4BACpB,iBAAkB,4BAClB,eAAgB,0BACtB,EACI,OAAQ,CACN,IAAK,yBACL,mBAAoB,mCACpB,iBAAkB,mCAClB,eAAgB,iCACtB,CACA,CAAG,EAED,SAAUA,EAAqB,CAC7B,QAAS,CACP,mBAAoB,oBACpB,iBAAkB,oBAClB,eAAgB,kBACtB,EACI,KAAM,CACJ,mBAAoB,yBACpB,iBAAkB,yBAClB,eAAgB,uBACtB,EACI,OAAQ,CACN,mBAAoB,yBACpB,iBAAkB,yBAClB,eAAgB,uBACtB,CACA,CAAG,EAED,YAAaE,EAEb,iBAAkBF,EAAqB,CACrC,QAAS,CACP,IAAK,kBACL,mBAAoB,4BACpB,iBAAkB,4BAClB,eAAgB,0BACtB,EACI,OAAQ,CACN,IAAK,yBACL,mBAAoB,mCACpB,iBAAkB,mCAClB,eAAgB,iCACtB,CACA,CAAG,EAED,SAAUA,EAAqB,CAC7B,QAAS,CACP,mBAAoB,oBACpB,iBAAkB,oBAClB,eAAgB,kBACtB,EACI,KAAM,CACJ,mBAAoB,yBACpB,iBAAkB,yBAClB,eAAgB,uBACtB,EACI,OAAQ,CACN,mBAAoB,yBACpB,iBAAkB,yBAClB,eAAgB,uBACtB,CACA,CAAG,EAED,YAAaA,EAAqB,CAChC,QAAS,CACP,mBAAoB,yBACpB,iBAAkB,wBAClB,eAAgB,uBACtB,EACI,OAAQ,CACN,mBAAoB,mCACpB,iBAAkB,mCAClB,eAAgB,iCACtB,CACA,CAAG,EAED,OAAQA,EAAqB,CAC3B,QAAS,CACP,mBAAoB,oBACpB,iBAAkB,oBAClB,eAAgB,kBACtB,EACI,KAAM,CACJ,mBAAoB,yBACpB,iBAAkB,yBAClB,eAAgB,uBACtB,EACI,OAAQ,CACN,mBAAoB,yBACpB,iBAAkB,yBAClB,eAAgB,uBACtB,CACA,CAAG,EAED,MAAOA,EAAqB,CAC1B,QAAS,CACP,mBAAoB,kBACpB,iBAAkB,gBAClB,eAAgB,gBACtB,CACA,CAAG,EAED,YAAaA,EAAqB,CAChC,QAAS,CACP,mBAAoB,uBACpB,iBAAkB,wBAClB,eAAgB,uBACtB,EACI,OAAQ,CACN,mBAAoB,mCACpB,iBAAkB,iCAClB,eAAgB,iCACtB,CACA,CAAG,EAED,OAAQA,EAAqB,CAC3B,QAAS,CACP,mBAAoB,oBACpB,iBAAkB,kBAClB,eAAgB,kBACtB,CACA,CAAG,EAED,aAAcA,EAAqB,CACjC,QAAS,CACP,mBAAoB,wBACpB,iBAAkB,yBAClB,eAAgB,wBACtB,EACI,OAAQ,CACN,mBAAoB,iCACpB,iBAAkB,kCAClB,eAAgB,kCACtB,CACA,CAAG,EAED,QAASA,EAAqB,CAC5B,QAAS,CACP,mBAAoB,kBACpB,iBAAkB,mBAClB,eAAgB,mBACtB,CACA,CAAG,EAED,YAAaA,EAAqB,CAChC,QAAS,CACP,mBAAoB,sBACpB,iBAAkB,uBAClB,eAAgB,sBACtB,EACI,OAAQ,CACN,mBAAoB,+BACpB,iBAAkB,gCAClB,eAAgB,gCACtB,CACA,CAAG,EAED,OAAQA,EAAqB,CAC3B,QAAS,CACP,mBAAoB,gBACpB,iBAAkB,iBAClB,eAAgB,iBACtB,CACA,CAAG,EAED,WAAYA,EAAqB,CAC/B,QAAS,CACP,mBAAoB,yBACpB,iBAAkB,0BAClB,eAAgB,0BACtB,EACI,OAAQ,CACN,mBAAoB,gCACpB,iBAAkB,iCAClB,eAAgB,iCACtB,CACA,CAAG,EAED,aAAcA,EAAqB,CACjC,QAAS,CACP,mBAAoB,sBACpB,iBAAkB,uBAClB,eAAgB,uBACtB,EACI,OAAQ,CACN,mBAAoB,2BACpB,iBAAkB,4BAClB,eAAgB,4BACtB,CACA,CAAG,CACH,EAEaK,EAAiB,CAACC,EAAOT,EAAOI,KAC3CA,EAAUA,GAAW,CAAA,EACdG,EAAqBE,CAAK,EAAET,EAAOI,CAAO,GC/P7CM,EAAc,CAClB,KAAM,sBACN,KAAM,gBACN,OAAQ,eACR,MAAO,SACT,EAEMC,EAAc,CAClB,KAAM,eACN,KAAM,YACN,OAAQ,UACR,MAAO,MACT,EAEMC,EAAkB,CACtB,IAAK,oBACP,EAEaC,EAAa,CACxB,KAAMC,EAAkB,CACtB,QAASJ,EACT,aAAc,MAClB,CAAG,EAED,KAAMI,EAAkB,CACtB,QAASH,EACT,aAAc,MAClB,CAAG,EAED,SAAUG,EAAkB,CAC1B,QAASF,EACT,aAAc,KAClB,CAAG,CACH,EChCMG,EAAqB,CACzB,UACA,aACA,UACA,SACA,SACA,UACA,QACF,EAEA,SAASC,EAASC,EAAK,CACrB,MAAMC,EAAUH,EAAmBE,CAAG,EAEtC,OAAQA,EAAG,CACT,IAAK,GACL,OACA,IAAK,GACL,IAAK,GACH,MAAO,cAAgBC,EAAU,QACnC,IAAK,GACL,IAAK,GACL,OACE,MAAO,aAAeA,EAAU,OACtC,CACA,CAEA,SAASC,EAASF,EAAK,CAGrB,MAAO,MAFSF,EAAmBE,CAAG,EAEb,OAC3B,CAEA,SAASG,EAASH,EAAK,CACrB,MAAMC,EAAUH,EAAmBE,CAAG,EAEtC,OAAQA,EAAG,CACT,OACA,IAAK,GACL,IAAK,GACL,IAAK,GACH,MAAO,gBAAkBC,EAAU,QACrC,IAAK,GACL,OACA,IAAK,GACH,MAAO,eAAiBA,EAAU,OACxC,CACA,CAEA,MAAMG,EAAiB,CAACC,EAAWC,EAAUnB,IAAY,CACvD,MAAMoB,EAAOC,EAAOH,CAAS,EACvBL,EAAMO,EAAK,OAAM,EACvB,OAAIE,EAAWF,EAAMD,EAAUnB,CAAO,EAC7Be,EAASF,CAAG,EAEZD,EAASC,CAAG,CAEvB,EAEMU,EAAiB,CAACL,EAAWC,EAAUnB,IAAY,CACvD,MAAMoB,EAAOC,EAAOH,CAAS,EACvBL,EAAMO,EAAK,OAAM,EACvB,OAAIE,EAAWF,EAAMD,EAAUnB,CAAO,EAC7Be,EAASF,CAAG,EAEZG,EAASH,CAAG,CAEvB,EAEMW,EAAuB,CAC3B,SAAUP,EACV,UAAW,cACX,MAAO,cACP,SAAU,eACV,SAAUM,EACV,MAAO,GACT,EAEaE,EAAiB,CAACpB,EAAOe,EAAMD,EAAUnB,IAAY,CAChE,MAAM0B,EAASF,EAAqBnB,CAAK,EAEzC,OAAI,OAAOqB,GAAW,WACbA,EAAON,EAAMD,EAAUnB,CAAO,EAGhC0B,CACT,ECtFMC,EAAY,CAChB,OAAQ,CAAC,UAAW,MAAM,EAC1B,YAAa,CAAC,WAAY,OAAO,EACjC,KAAM,CAAC,eAAgB,WAAW,CACpC,EAEMC,EAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,UAAW,UAAW,UAAW,SAAS,EACxD,KAAM,CAAC,cAAe,cAAe,cAAe,aAAa,CACnE,EAEMC,EAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,SACA,OACA,OACA,QACA,MACA,QACA,OACA,MACA,OACA,SACA,QACA,OACJ,EAEE,KAAM,CACJ,WACA,OACA,UACA,WACA,MACA,UACA,SACA,UACA,WACA,aACA,WACA,SACJ,CACA,EACMC,EAAwB,CAC5B,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,SACA,OACA,OACA,QACA,MACA,QACA,OACA,MACA,OACA,SACA,QACA,OACJ,EAEE,KAAM,CACJ,WACA,SACA,WACA,YACA,MACA,UACA,SACA,SACA,UACA,cACA,YACA,QACJ,CACA,EAEMC,EAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAChD,YAAa,CAAC,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAC9D,KAAM,CACJ,UACA,aACA,UACA,SACA,SACA,UACA,QACJ,CACA,EAEMC,EAAkB,CACtB,OAAQ,CACN,GAAI,KACJ,GAAI,KACJ,SAAU,QACV,KAAM,QACN,QAAS,OACT,UAAW,QACX,QAAS,OACT,MAAO,KACX,EACE,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,QACV,KAAM,QACN,QAAS,OACT,UAAW,QACX,QAAS,OACT,MAAO,KACX,EACE,KAAM,CACJ,GAAI,KACJ,GAAI,KACJ,SAAU,SACV,KAAM,WACN,QAAS,SACT,UAAW,QACX,QAAS,QACT,MAAO,KACX,CACA,EACMC,EAA4B,CAChC,OAAQ,CACN,GAAI,KACJ,GAAI,KACJ,SAAU,QACV,KAAM,QACN,QAAS,OACT,UAAW,MACX,QAAS,OACT,MAAO,MACX,EACE,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,QACV,KAAM,QACN,QAAS,OACT,UAAW,MACX,QAAS,OACT,MAAO,MACX,EACE,KAAM,CACJ,GAAI,KACJ,GAAI,KACJ,SAAU,SACV,KAAM,WACN,QAAS,SACT,UAAW,MACX,QAAS,SACT,MAAO,MACX,CACA,EAEMC,EAAgB,CAACC,EAAanC,IAAY,CAC9C,MAAMoC,EAAO,OAAOpC,GAAS,IAAI,EAC3BqC,EAAS,OAAOF,CAAW,EACjC,IAAIG,EAcJ,OAAIF,IAAS,OACXE,EAAS,MACAF,IAAS,QAAUA,IAAS,UAAYA,IAAS,SAC1DE,EAAS,KAETA,GACGD,EAAS,KAAO,GAAKA,EAAS,KAAO,IACtCA,EAAS,MAAQ,IACjBA,EAAS,MAAQ,GACb,KACA,KAGDA,EAASC,CAClB,EAEaC,EAAW,CACtB,cAAAL,EAEA,IAAKM,EAAgB,CACnB,OAAQb,EACR,aAAc,MAClB,CAAG,EAED,QAASa,EAAgB,CACvB,OAAQZ,EACR,aAAc,OACd,iBAAmBa,GAAYA,EAAU,CAC7C,CAAG,EAED,MAAOD,EAAgB,CACrB,OAAQX,EACR,aAAc,OACd,iBAAkBC,EAClB,uBAAwB,MAC5B,CAAG,EAED,IAAKU,EAAgB,CACnB,OAAQT,EACR,aAAc,MAClB,CAAG,EAED,UAAWS,EAAgB,CACzB,OAAQR,EACR,aAAc,MACd,iBAAkBC,EAClB,uBAAwB,MAC5B,CAAG,CACH,EC7NMS,EACJ,mDACIC,EAA4B,OAE5BC,EAAmB,CACvB,OAAQ,wBACR,YAAa,wBACb,KAAM,qCACR,EACMC,EAAmB,CACvB,IAAK,CAAC,MAAO,KAAK,CACpB,EAEMC,EAAuB,CAC3B,OAAQ,WACR,YAAa,0BACb,KAAM,4BACR,EACMC,EAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EAEMC,EAAqB,CACzB,OAAQ,cACR,YACE,mEACF,KAAM,8IACR,EACMC,EAAqB,CACzB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACJ,EAEE,IAAK,CACH,OACA,OACA,OACA,OACA,OACA,MACA,QACA,MACA,MACA,OACA,QACA,MACJ,CACA,EAEMC,EAAmB,CACvB,OAAQ,YACR,MAAO,mDACP,YAAa,0DACb,KAAM,0FACR,EACMC,EAAmB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EACxD,IAAK,CAAC,MAAO,UAAW,MAAO,UAAW,MAAO,UAAW,SAAS,CACvE,EAEMC,EAAyB,CAC7B,OAAQ,0DACR,YAAa,0DACb,KAAM,6DACR,EACMC,EAAyB,CAC7B,IAAK,CACH,GAAI,OACJ,GAAI,OACJ,SAAU,SACV,KAAM,SACN,QAAS,MACT,UAAW,UACX,QAAS,MACT,MAAO,KACX,CACA,EAEaC,EAAQ,CACnB,cAAeC,EAAoB,CACjC,aAAcb,EACd,aAAcC,EACd,cAAgBa,GAAU,SAASA,EAAO,EAAE,CAChD,CAAG,EAED,IAAKC,EAAa,CAChB,cAAeb,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,QAASY,EAAa,CACpB,cAAeX,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,MACnB,cAAgBW,GAAUA,EAAQ,CACtC,CAAG,EAED,MAAOD,EAAa,CAClB,cAAeT,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,IAAKQ,EAAa,CAChB,cAAeP,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,EAED,UAAWM,EAAa,CACtB,cAAeL,EACf,kBAAmB,OACnB,cAAeC,EACf,kBAAmB,KACvB,CAAG,CACH,ECxHaM,GAAK,CAChB,KAAM,KACN,eAAgBvD,EAChB,WAAYK,EACZ,eAAgBgB,EAChB,SAAUc,EACV,MAAOe,EACP,QAAS,CACP,aAAc,EACd,sBAAuB,CAC3B,CACA","x_google_ignoreList":[0,1,2,3,4,5]} \ No newline at end of file diff --git a/js/be-CW5fta_H.chunk.mjs.map.license b/js/be-CW5fta_H.chunk.mjs.map.license deleted file mode 100644 index 9ba6cea6..00000000 --- a/js/be-CW5fta_H.chunk.mjs.map.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-License-Identifier: MIT -SPDX-FileCopyrightText: date-fns developers - -This file is generated from multiple sources. Included packages: -- date-fns - - version: 4.4.0 - - license: MIT diff --git a/js/be-tarask-CzbVxLq7.chunk.mjs b/js/be-tarask-CzbVxLq7.chunk.mjs deleted file mode 100644 index 0f4196cc..00000000 --- a/js/be-tarask-CzbVxLq7.chunk.mjs +++ /dev/null @@ -1,104 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('user_migration', '', 'js/index-lRX2_WBG.chunk.mjs'),window.OC.filePath('user_migration', '', 'js/user_migration-personalSettings.mjs'),window.OC.filePath('user_migration', '', 'css/personalSettings-i1_v3FZk.chunk.css'),window.OC.filePath('user_migration', '', 'css/index-bfXBK-tQ.chunk.css'),window.OC.filePath('user_migration', '', 'js/index-Cr1DLTt7.chunk.mjs'),window.OC.filePath('user_migration', '', 'css/index-DBPTxogX.chunk.css')])))=>i.map(i=>d[i]); -/*! third party licenses: js/vendor.LICENSE.txt */ -import{_ as H,k as st,u as It,P as ls,ae as ie,as as cs,l as Nt,o as x,e as P,m as D,a as E,t as L,p as N,Y as ee,W as V,at as Ee,d as z,c as k,C as M,f as O,F as $t,q as Mt,au as us,av as ds,H as Tt,J as B,I as K,aw as Ve,ax as Ie,ay as ii,N as kt,az as hs,i as ae,aA as ps,h as ft,r as J,b as R,V as le,B as mt,Q as ce,aB as si,aC as Ne,aD as ur,aE as fs,aF as oi,aG as dr,aH as ms,ac as ai,aI as Mn,aJ as gs,aK as ys,$ as Re,aL as bs,ad as vs,a3 as _e,aM as Rn,a5 as ws,w as Me,g as kn,y as ne,s as Fe,aN as Sn,aO as Cn,aP as xs,ap as _s,an as li,aQ as ks,U as ze,aR as Fn,aS as Ss,K as Cs,aT as Es,aU as Ns,aV as $s,aW as As,aX as Ts,aY as Os,aZ as Ps,n as se,a2 as Vt,a_ as nn,ar as rn,a$ as zn,b0 as Ls,b1 as Un,aj as Is,b2 as hr,a0 as At,b3 as js,b4 as Bs,b5 as Ds,b6 as Vs,D as wt,E as xt,aa as Ms,T as Rs,b7 as pr,b8 as Fs,b9 as zs,ba as Us,bb as Ws,bc as qs,bd as Hs,be as Gs,bf as Je,bg as Ks,bh as Zs,bi as Xs,bj as Oe,bk as Ys,bl as gt,bm as F,bn as En,bo as Js,bp as $e,bq as Wn,br as ci,S as Qs,bs as to,bt as eo,bu as no,R as ro,bv as io,bw as so,bx as oo,by as fr,bz as ao,bA as lo}from"./user_migration-personalSettings.mjs";const co=["id","textContent"],uo=["aria-label","aria-labelledby"],ho={class:"dialog__text"},po={class:"dialog__actions"},fo=st({__name:"NcDialog",props:Tt({name:{},message:{default:""},additionalTrapElements:{default:()=>[]},container:{default:"body"},size:{default:"small"},buttons:{default:()=>[]},isForm:{type:Boolean},noClose:{type:Boolean},closeOnClickOutside:{type:Boolean},outTransition:{type:Boolean},navigationAriaLabel:{default:""},navigationAriaLabelledby:{default:""},contentClasses:{default:""},dialogClasses:{default:""},navigationClasses:{default:""}},{open:{type:Boolean,default:!0},openModifiers:{}}),emits:Tt(["closing","reset","submit"],["update:open"]),setup(n,{emit:t}){const e=It(n,"open"),r=n,i=t,s=ls(),o=ie("wrapper"),{width:a}=cs(o,{width:900,height:0}),u=B(()=>a.value<876),l=B(()=>s?.navigation!==void 0),c=Nt(),h=B(()=>r.navigationAriaLabel||void 0),d=B(()=>{if(!r.navigationAriaLabel)return r.navigationAriaLabelledby||c}),m=ie("dialogElement"),g=B(()=>r.isForm&&!l.value?"form":"div"),p=B(()=>g.value!=="form"?{}:{submit(w){w.preventDefault(),i("submit",w)},reset(w){w.preventDefault(),i("reset",w)}}),f=K(!0);function y(w,S){w.type==="submit"&&g.value==="form"&&"reportValidity"in m.value&&!m.value.reportValidity()||(b(S),window.setTimeout(()=>v(),300))}function b(w){f.value=!1,i("closing",w)}function v(){f.value=!0,e.value=!1}const _=B(()=>({noClose:r.noClose,container:r.container===void 0?"body":r.container,labelId:c,size:r.size,show:e.value&&f.value,outTransition:r.outTransition,closeOnClickOutside:r.closeOnClickOutside,additionalTrapElements:r.additionalTrapElements}));return(w,S)=>e.value?(x(),P(N(ds),V({key:0,class:"dialog__modal",disableSwipe:""},_.value,{onClose:v,"onUpdate:show":S[0]||(S[0]=C=>b())}),{default:D(()=>[E("h2",{id:N(c),class:"dialog__name",textContent:L(n.name)},null,8,co),(x(),P(ee(g.value),V({ref:"dialogElement",class:["dialog",n.dialogClasses]},Ee(p.value)),{default:D(()=>[E("div",{ref:"wrapper",class:z(["dialog__wrapper",[{"dialog__wrapper--collapsed":u.value}]])},[l.value?(x(),k("nav",{key:0,class:z(["dialog__navigation",n.navigationClasses]),"aria-label":h.value,"aria-labelledby":d.value},[M(w.$slots,"navigation",{isCollapsed:u.value},void 0,!0)],10,uo)):O("",!0),E("div",{class:z(["dialog__content",n.contentClasses])},[M(w.$slots,"default",{},()=>[E("p",ho,L(n.message),1)],!0)],2)],2),E("div",po,[M(w.$slots,"actions",{},()=>[(x(!0),k($t,null,Mt(n.buttons,(C,T)=>(x(),P(N(us),V({key:T},{ref_for:!0},C,{onClick:(I,A)=>y(C,A)}),null,16,["onClick"]))),128))],!0)])]),_:3},16,["class"]))]),_:3},16)):O("",!0)}}),mo=H(fo,[["__scopeId","data-v-adda232f"]]);var sn={},go={2(n){function t(i,s,o){i instanceof RegExp&&(i=e(i,o)),s instanceof RegExp&&(s=e(s,o));var a=r(i,s,o);return a&&{start:a[0],end:a[1],pre:o.slice(0,a[0]),body:o.slice(a[0]+i.length,a[1]),post:o.slice(a[1]+s.length)}}function e(i,s){var o=s.match(i);return o?o[0]:null}function r(i,s,o){var a,u,l,c,h,d=o.indexOf(i),m=o.indexOf(s,d+1),g=d;if(d>=0&&m>0){for(a=[],l=o.length;g>=0&&!h;)g==d?(a.push(g),d=o.indexOf(i,g+1)):a.length==1?h=[a.pop(),m]:((u=a.pop())=0?d:m;a.length&&(h=[l,c])}return h}n.exports=t,t.range=r},101(n,t,e){var r;n=e.nmd(n),(function(){var i=(n&&n.exports,typeof Ie=="object"&&Ie);i.global!==i&&i.window;var s=function(c){this.message=c};(s.prototype=new Error).name="InvalidCharacterError";var o=function(c){throw new s(c)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=/[\t\n\f\r ]/g,l={encode:function(c){c=String(c),/[^\0-\xFF]/.test(c)&&o("The string to be encoded contains characters outside of the Latin1 range.");for(var h,d,m,g,p=c.length%3,f="",y=-1,b=c.length-p;++y>18&63)+a.charAt(g>>12&63)+a.charAt(g>>6&63)+a.charAt(63&g);return p==2?(h=c.charCodeAt(y)<<8,d=c.charCodeAt(++y),f+=a.charAt((g=h+d)>>10)+a.charAt(g>>4&63)+a.charAt(g<<2&63)+"="):p==1&&(g=c.charCodeAt(y),f+=a.charAt(g>>2)+a.charAt(g<<4&63)+"=="),f},decode:function(c){var h=(c=String(c).replace(u,"")).length;h%4==0&&(h=(c=c.replace(/==?$/,"")).length),(h%4==1||/[^+a-zA-Z0-9/]/.test(c))&&o("Invalid character: the string to be decoded is not correctly encoded.");for(var d,m,g=0,p="",f=-1;++f>(-2*g&6)));return p},version:"1.0.0"};(r=function(){return l}.call(t,e,t,n))===void 0||(n.exports=r)})()},172(n,t){t.d=function(e){if(!e)return 0;for(var r=(e=e.toString()).length,i=e.length;i--;){var s=e.charCodeAt(i);56320<=s&&s<=57343&&i--,127>>32-i},rotr:function(r,i){return r<<32-i|r>>>i},endian:function(r){if(r.constructor==Number)return 16711935&e.rotl(r,8)|4278255360&e.rotl(r,24);for(var i=0;i0;r--)i.push(Math.floor(256*Math.random()));return i},bytesToWords:function(r){for(var i=[],s=0,o=0;s>>5]|=r[s]<<24-o%32;return i},wordsToBytes:function(r){for(var i=[],s=0;s<32*r.length;s+=8)i.push(r[s>>>5]>>>24-s%32&255);return i},bytesToHex:function(r){for(var i=[],s=0;s>>4).toString(16)),i.push((15&r[s]).toString(16));return i.join("")},hexToBytes:function(r){for(var i=[],s=0;s>>6*(3-a)&63)):i.push("=");return i.join("")},base64ToBytes:function(r){r=r.replace(/[^A-Z0-9+\/]/gi,"");for(var i=[],s=0,o=0;s>>6-2*o);return i}},n.exports=e},135(n){function t(e){return!!e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}n.exports=function(e){return e!=null&&(t(e)||(function(r){return typeof r.readFloatLE=="function"&&typeof r.slice=="function"&&t(r.slice(0,0))})(e)||!!e._isBuffer)}},542(n,t,e){(function(){var r=e(298),i=e(526).utf8,s=e(135),o=e(526).bin,a=function(u,l){u.constructor==String?u=l&&l.encoding==="binary"?o.stringToBytes(u):i.stringToBytes(u):s(u)?u=Array.prototype.slice.call(u,0):Array.isArray(u)||u.constructor===Uint8Array||(u=u.toString());for(var c=r.bytesToWords(u),h=8*u.length,d=1732584193,m=-271733879,g=-1732584194,p=271733878,f=0;f>>24)|4278255360&(c[f]<<24|c[f]>>>8);c[h>>>5]|=128<>>9<<4)]=h;var y=a._ff,b=a._gg,v=a._hh,_=a._ii;for(f=0;f>>0,m=m+S>>>0,g=g+C>>>0,p=p+T>>>0}return r.endian([d,m,g,p])};a._ff=function(u,l,c,h,d,m,g){var p=u+(l&c|~l&h)+(d>>>0)+g;return(p<>>32-m)+l},a._gg=function(u,l,c,h,d,m,g){var p=u+(l&h|c&~h)+(d>>>0)+g;return(p<>>32-m)+l},a._hh=function(u,l,c,h,d,m,g){var p=u+(l^c^h)+(d>>>0)+g;return(p<>>32-m)+l},a._ii=function(u,l,c,h,d,m,g){var p=u+(c^(l|~h))+(d>>>0)+g;return(p<>>32-m)+l},a._blocksize=16,a._digestsize=16,n.exports=function(u,l){if(u==null)throw new Error("Illegal argument "+u);var c=r.wordsToBytes(a(u,l));return l&&l.asBytes?c:l&&l.asString?o.bytesToString(c):r.bytesToHex(c)}})()},285(n,t,e){var r=e(2);n.exports=function(v,_){if(!v)return[];var w=(_=_||{}).max==null?1e5:_.max,S=_.maxLength==null?4e6:_.maxLength;return v.substr(0,2)==="{}"&&(v="\\{\\}"+v.substr(2)),b((function(C){return C.split("\\\\").join(i).split("\\{").join(s).split("\\}").join(o).split("\\,").join(a).split("\\.").join(u)})(v),w,S,!0).map(c)};var i="\0SLASH"+Math.random()+"\0",s="\0OPEN"+Math.random()+"\0",o="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",u="\0PERIOD"+Math.random()+"\0";function l(v){return parseInt(v,10)==v?parseInt(v,10):v.charCodeAt(0)}function c(v){return v.split(i).join("\\").split(s).join("{").split(o).join("}").split(a).join(",").split(u).join(".")}function h(v){if(!v)return[""];var _=[],w=r("{","}",v);if(!w)return v.split(",");var S=w.pre,C=w.body,T=w.post,I=S.split(",");I[I.length-1]+="{"+C+"}";var A=h(T);return T.length&&(I[I.length-1]+=A.shift(),I.push.apply(I,A)),_.push.apply(_,I),_}function d(v){return"{"+v+"}"}function m(v){return/^-?0\d/.test(v)}function g(v,_){return v<=_}function p(v,_){return v>=_}function f(v,_,w,S,C,T){for(var I=[],A=0,j=0;j=S)return I;var $=v[j]+_+w[U];if(!T||$){if(A+$.length>C)return I;I.push($),A+=$.length}}return I}function y(v,_,w,S){var C=v.split(/\.\./),T=[];if(C[0]===void 0||C[1]===void 0)return T;var I=l(C[0]),A=l(C[1]),j=Math.max(C[0].length,C[1].length),U=C.length===3&&C[2]!==void 0?Math.max(Math.abs(l(C[2])),1):1,$=g;A0){var Ot=new Array(ut+1).join("0");W=St<0?"-"+Ot+W.slice(1):Ot+W}}if(yt+W.length>S)break;T.push(W),yt+=W.length}return T}function b(v,_,w,S){for(var C=[""],T=!1,I=!0;;){const G=r("{","}",v);if(!G)return f(C,v,[""],_,w,T);const Zt=G.pre;if(/\$$/.test(Zt)){if(C=f(C,Zt+"{"+G.body+"}",[""],_,w,T&&!G.post.length),I=!1,!G.post.length)break;v=G.post}else{var A,j=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(G.body),U=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(G.body),$=j||U,zt=G.body.indexOf(",")>=0;if(!$&&!zt){if(G.post.match(/,(?!,).*\}/)){v=G.pre+"{"+G.body+o+G.post,S=!0;continue}return f(C,Zt+"{"+G.body+"}"+G.post,[""],_,w,T)}if(I&&(T=S&&!$,I=!1),$)A=y(G.body,U,_,w);else{var yt=h(G.body);if(yt.length===1&&yt[0]!==void 0&&(yt=b(yt[0],_,w,!1).map(d)).length===1){if(C=f(C,Zt+yt[0],[""],_,w,T&&!G.post.length),!G.post.length)break;v=G.post;continue}for(var St=T&&!G.post.length&&!Zt,W=0;St&&W=_||ut+Le.length>w)break t;A.push(Le),ut+=Le.length}}}if(C=f(C,Zt,A,_,w,T&&!G.post.length),!G.post.length)break;v=G.post}}return C}},829(n){function t(l){return t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(c){return typeof c}:function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},t(l)}function e(l){var c=typeof Map=="function"?new Map:void 0;return e=function(h){if(h===null||(d=h,Function.toString.call(d).indexOf("[native code]")===-1))return h;var d;if(typeof h!="function")throw new TypeError("Super expression must either be null or a function");if(c!==void 0){if(c.has(h))return c.get(h);c.set(h,m)}function m(){return r(h,arguments,s(this).constructor)}return m.prototype=Object.create(h.prototype,{constructor:{value:m,enumerable:!1,writable:!0,configurable:!0}}),i(m,h)},e(l)}function r(l,c,h){return r=(function(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch{return!1}})()?Reflect.construct:function(d,m,g){var p=[null];p.push.apply(p,m);var f=new(Function.bind.apply(d,p));return g&&i(f,g.prototype),f},r.apply(null,arguments)}function i(l,c){return i=Object.setPrototypeOf||function(h,d){return h.__proto__=d,h},i(l,c)}function s(l){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},s(l)}var o=(function(l){function c(h){var d;return(function(m,g){if(!(m instanceof g))throw new TypeError("Cannot call a class as a function")})(this,c),(d=(function(m,g){return!g||t(g)!=="object"&&typeof g!="function"?(function(p){if(p===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return p})(m):g})(this,s(c).call(this,h))).name="ObjectPrototypeMutationError",d}return(function(h,d){if(typeof d!="function"&&d!==null)throw new TypeError("Super expression must either be null or a function");h.prototype=Object.create(d&&d.prototype,{constructor:{value:h,writable:!0,configurable:!0}}),d&&i(h,d)})(c,l),c})(e(Error));function a(l,c){for(var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},d=c.split("."),m=d.length,g=function(y){var b=d[y];if(!l)return{v:void 0};if(b==="+"){if(Array.isArray(l))return{v:l.map((function(_,w){var S=d.slice(y+1);return S.length>0?a(_,S.join("."),h):h(l,w,d,y)}))};var v=d.slice(0,y).join(".");throw new Error("Object at wildcard (".concat(v,") is not an array"))}l=h(l,b,d,y)},p=0;p2&&arguments[2]!==void 0?arguments[2]:{};if(t(l)!="object"||l===null||c===void 0)return!1;if(typeof c=="number")return c in l;try{var d=!1;return a(l,c,(function(m,g,p,f){if(!u(p,f))return m&&m[g];d=h.own?m.hasOwnProperty(g):g in m})),d}catch{return!1}},hasOwn:function(l,c,h){return this.has(l,c,h||{own:!0})},isIn:function(l,c,h){var d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};if(t(l)!="object"||l===null||c===void 0)return!1;try{var m=!1,g=!1;return a(l,c,(function(p,f,y,b){return m=m||p===h||!!p&&p[f]===h,g=u(y,b)&&t(p)==="object"&&f in p,p&&p[f]})),d.validPath?m&&g:m}catch{return!1}},ObjectPrototypeMutationError:o}},47(n,t,e){var r=e(410),i=function(l){return typeof l=="string"};function s(l,c){for(var h=[],d=0;d=-1&&!c;h--){var d=h>=0?arguments[h]:Ve.cwd();if(!i(d))throw new TypeError("Arguments to path.resolve must be strings");d&&(l=d+"/"+l,c=d.charAt(0)==="/")}return(c?"/":"")+(l=s(l.split("/"),!c).join("/"))||"."},a.normalize=function(l){var c=a.isAbsolute(l),h=l.substr(-1)==="/";return(l=s(l.split("/"),!c).join("/"))||c||(l="."),l&&h&&(l+="/"),(c?"/":"")+l},a.isAbsolute=function(l){return l.charAt(0)==="/"},a.join=function(){for(var l="",c=0;c=0&&b[_]==="";_--);return v>_?[]:b.slice(v,_+1)}l=a.resolve(l).substr(1),c=a.resolve(c).substr(1);for(var d=h(l.split("/")),m=h(c.split("/")),g=Math.min(d.length,m.length),p=g,f=0;f=2&&(_=_.slice(2)):p(S)?_=w[4]:S?C&&(_=_.slice(2)):I>=2&&p(v.protocol)&&(_=w[4]),{protocol:S,slashes:C||p(S),slashesCount:I,rest:_}}function y(b,v,_){if(b=(b=h(b)).replace(o,""),!(this instanceof y))return new y(b,v,_);var w,S,C,T,I,A,j=d.slice(),U=typeof v,$=this,zt=0;for(U!=="object"&&U!=="string"&&(_=v,v=null),_&&typeof _!="function"&&(_=i.parse),w=!(S=f(b||"",v=g(v))).protocol&&!S.slashes,$.slashes=S.slashes||w&&v.slashes,$.protocol=S.protocol||v.protocol||"",b=S.rest,(S.protocol==="file:"&&(S.slashesCount!==2||c.test(b))||!S.slashes&&(S.protocol||S.slashesCount<2||!p($.protocol)))&&(j[3]=[/(.*)/,"pathname"]);zt{var t=n&&n.__esModule?()=>n.default:()=>n;return q.d(t,{a:t}),t},q.d=(n,t)=>{for(var e in t)q.o(t,e)&&!q.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},q.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),q.nmd=n=>(n.paths=[],n.children||(n.children=[]),n);var yo=q(737),bo=q.n(yo);function on(n){if(!Nn(n))throw new Error("Parameter was not an error")}function Nn(n){return!!n&&typeof n=="object"&&(t=n,Object.prototype.toString.call(t)==="[object Error]")||n instanceof Error;var t}class ct extends Error{constructor(t,e){const r=[...arguments],{options:i,shortMessage:s}=(function(a){let u,l="";if(a.length===0)u={};else if(Nn(a[0]))u={cause:a[0]},l=a.slice(1).join(" ")||"";else if(a[0]&&typeof a[0]=="object")u=Object.assign({},a[0]),l=a.slice(1).join(" ")||"";else{if(typeof a[0]!="string")throw new Error("Invalid arguments passed to Layerr");u={},l=l=a.join(" ")||""}return{options:u,shortMessage:l}})(r);let o=s;if(i.cause&&(o=`${o}: ${i.cause.message}`),super(o),this.message=o,i.name&&typeof i.name=="string"?this.name=i.name:this.name="Layerr",i.cause&&Object.defineProperty(this,"_cause",{value:i.cause}),Object.defineProperty(this,"_info",{value:{}}),i.info&&typeof i.info=="object"&&Object.assign(this._info,i.info),Error.captureStackTrace){const a=i.constructorOpt||this.constructor;Error.captureStackTrace(this,a)}}static cause(t){return on(t),t._cause&&Nn(t._cause)?t._cause:null}static fullStack(t){on(t);const e=ct.cause(t);return e?`${t.stack} -caused by: ${ct.fullStack(e)}`:t.stack??""}static info(t){on(t);const e={},r=ct.cause(t);return r&&Object.assign(e,ct.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}var vo=q(47),Ue=q.n(vo);const gr="__PATH_SEPARATOR_POSIX__",yr="__PATH_SEPARATOR_WINDOWS__";function Z(n){try{const t=n.replace(/\//g,gr).replace(/\\\\/g,yr);return encodeURIComponent(t).split(yr).join("\\\\").split(gr).join("/")}catch(t){throw new ct(t,"Failed encoding path")}}function br(n){return n.startsWith("/")?n:"/"+n}function Ae(n){let t=n;return t[0]!=="/"&&(t="/"+t),/^.+\/$/.test(t)&&(t=t.substr(0,t.length-1)),t}function wo(n){let t=new(bo())(n).pathname;return t.length<=0&&(t="/"),Ae(t)}function X(...n){return(function(){return(function(t){var e=[];if(t.length===0)return"";if(typeof t[0]!="string")throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(s=s.replace(/^[\/]+/,"")),s=i0?"?":"")+a.join("&")})(typeof arguments[0]=="object"?arguments[0]:[].slice.call(arguments))})(n.reduce(((t,e,r)=>((r===0||e!=="/"||e==="/"&&t[t.length-1]!=="/")&&t.push(e),t)),[]))}var xo=q(542),he=q.n(xo);function vr(n,t){const e=n.url.replace("//",""),r=e.indexOf("/")==-1?"/":e.slice(e.indexOf("/")),i=n.method?n.method.toUpperCase():"GET",s=!!/(^|,)\s*auth\s*($|,)/.test(t.qop)&&"auth",o=`00000000${t.nc}`.slice(-8),a=(function(d,m,g,p,f,y,b){const v=b||he()(`${m}:${g}:${p}`);return d&&d.toLowerCase()==="md5-sess"?he()(`${v}:${f}:${y}`):v})(t.algorithm,t.username,t.realm,t.password,t.nonce,t.cnonce,t.ha1),u=he()(`${i}:${r}`),l=s?he()(`${a}:${t.nonce}:${o}:${t.cnonce}:${s}:${u}`):he()(`${a}:${t.nonce}:${u}`),c={username:t.username,realm:t.realm,nonce:t.nonce,uri:r,qop:s,response:l,nc:o,cnonce:t.cnonce,algorithm:t.algorithm,opaque:t.opaque},h=[];for(const d in c)c[d]&&(d==="qop"||d==="nc"||d==="algorithm"?h.push(`${d}=${c[d]}`):h.push(`${d}="${c[d]}"`));return`Digest ${h.join(", ")}`}function ui(n){return(n.headers&&n.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()==="digest"}var _o=q(101),di=q.n(_o);function wr(n){return di().decode(n)}function xr(n,t){var e;return`Basic ${e=`${n}:${t}`,di().encode(e)}`}let pt=(function(n){return n.Auto="auto",n.Digest="digest",n.None="none",n.Password="password",n.Token="token",n})({}),Rt=(function(n){return n.DataTypeNoLength="data-type-no-length",n.InvalidAuthType="invalid-auth-type",n.InvalidOutputFormat="invalid-output-format",n.LinkUnsupportedAuthType="link-unsupported-auth",n.InvalidUpdateRange="invalid-update-range",n.NotSupported="not-supported",n})({});function hi(n,t,e,r,i){switch(n.authType){case pt.Auto:t&&e&&(n.headers.Authorization=xr(t,e));break;case pt.Digest:n.digest=(function(o,a,u){return{username:o,password:a,ha1:u,nc:0,algorithm:"md5",hasDigestAuth:!1}})(t,e,i);break;case pt.None:break;case pt.Password:n.headers.Authorization=xr(t,e);break;case pt.Token:n.headers.Authorization=`${(s=r).token_type} ${s.access_token}`;break;default:throw new ct({info:{code:Rt.InvalidAuthType}},`Invalid auth type: ${n.authType}`)}var s}q(345),q(800);const _r=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:typeof window<"u"?window:globalThis,ko=_r.fetch.bind(_r),kr="@@HOTPATCHER",So=()=>{};function an(n){return{original:n,methods:[n],final:!1}}class Co{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=kr}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==kr)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach((r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])})),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||So)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return(function(...r){if(r.length===0)throw new Error("Failed creating sequence: No functions provided");return function(...i){let s=i;const o=this;for(;r.length>0;)s=[r.shift().apply(o,s)];return s[0]}})(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:i=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if(typeof e!="function")throw new Error(`Failed patching '${t}': Provided method is not a function`);if(i)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=an(e);else if(this.isPatched(t)){const{original:s}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(an(e),{original:s})}else this.configuration.registry[t]=an(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach((r=>{this.patch(t,r,{chain:!0})})),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if(typeof this.configuration.registry[t].original!="function")throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}let ln=null;function pi(){return ln||(ln=new Co),ln}function We(n){return(function(t){if(typeof t!="object"||t===null||Object.prototype.toString.call(t)!="[object Object]")return!1;if(Object.getPrototypeOf(t)===null)return!0;let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e})(n)?Object.assign({},n):Object.setPrototypeOf(Object.assign({},n),Object.getPrototypeOf(n))}function Sr(...n){let t=null,e=[...n];for(;e.length>0;){const r=e.shift();t=t?fi(t,r):We(r)}return t}function fi(n,t){const e=We(n);return Object.keys(t).forEach((r=>{e.hasOwnProperty(r)?Array.isArray(t[r])?e[r]=Array.isArray(e[r])?[...e[r],...t[r]]:[...t[r]]:typeof t[r]=="object"&&t[r]?e[r]=typeof e[r]=="object"&&e[r]?fi(e[r],t[r]):We(t[r]):e[r]=t[r]:e[r]=t[r]})),e}function Eo(n){const t={};return n.forEach(((e,r)=>{t[r]=e})),t}function $n(...n){if(n.length===0)return{};const t={};return n.reduce(((e,r)=>(Object.keys(r).forEach((i=>{const s=i.toLowerCase();t.hasOwnProperty(s)?e[t[s]]=r[i]:(t[s]=i,e[i]=r[i])})),e)),{})}q(805);const No=typeof ArrayBuffer=="function",{toString:$o}=Object.prototype;function mi(n){return No&&(n instanceof ArrayBuffer||$o.call(n)==="[object ArrayBuffer]")}function gi(n){return n!=null&&n.constructor!=null&&typeof n.constructor.isBuffer=="function"&&n.constructor.isBuffer(n)}function qn(n){return function(){for(var t=[],e=0;et.patchInline("fetch",ko,e.url,(function(r){let i={};const s={method:r.method};if(r.headers&&(i=$n(i,r.headers)),r.data!==void 0){const[o,a]=(function(u){if(typeof u=="string")return[u,{}];if(gi(u))return[u,{}];if(mi(u))return[u,{}];if(u&&typeof u=="object")return[JSON.stringify(u),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof u)})(r.data);s.body=o,i=$n(i,a)}return r.signal&&(s.signal=r.signal),r.withCredentials&&(s.credentials="include"),s.headers=i,s})(e))),n)}var To=q(285);const He=n=>{if(typeof n!="string")throw new TypeError("invalid pattern");if(n.length>65536)throw new TypeError("pattern is too long")},Oo={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},pe=n=>n.replace(/[[\]\\-]/g,"\\$&"),Cr=n=>n.join(""),Po=(n,t)=>{const e=t;if(n.charAt(e)!=="[")throw new Error("not in a brace expression");const r=[],i=[];let s=e+1,o=!1,a=!1,u=!1,l=!1,c=e,h="";t:for(;sh?r.push(pe(h)+"-"+pe(p)):p===h&&r.push(pe(p)),h="",s++):n.startsWith("-]",s+1)?(r.push(pe(p+"-")),s+=2):n.startsWith("-",s+1)?(h=p,s+=2):(r.push(pe(p)),s++)}else u=!0,s++}else l=!0,s++}if(ct?n.replace(/\[([^\/\\])\]/g,"$1"):n.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");var ht;const Lo=new Set(["!","?","+","*","@"]),Tn=n=>Lo.has(n),Er=n=>Tn(n.type),Io=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),jo=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),Bo=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),Nr=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),cn="(?!\\.)",Do=new Set(["[","."]),Vo=new Set(["..","."]),Mo=new Set("().*{}+?[]^$\\!"),Hn="[^/]",$r=Hn+"*?",Ar=Hn+"+?";class Gn{type;#n;#e;#r=!1;#t=[];#i;#p;#h;#f=!1;#l;#c;#u=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#i=e,this.#n=this.#i?this.#i.#n:this,this.#l=this.#n===this?r:this.#n.#l,this.#h=this.#n===this?[]:this.#n.#h,t!=="!"||this.#n.#f||this.#h.push(this),this.#p=this.#i?this.#i.#t.length:0}get hasMagic(){if(this.#e!==void 0)return this.#e;for(const t of this.#t)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return this.#c!==void 0?this.#c:this.type?this.#c=this.type+"("+this.#t.map((t=>String(t))).join("|")+")":this.#c=this.#t.map((t=>String(t))).join("")}#d(){if(this!==this.#n)throw new Error("should only call on root");if(this.#f)return this;let t;for(this.toString(),this.#f=!0;t=this.#h.pop();){if(t.type!=="!")continue;let e=t,r=e.#i;for(;r;){for(let i=e.#p+1;!r.type&&itypeof e=="string"?e:e.toJSON())):[this.type,...this.#t.map((e=>e.toJSON()))];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#n||this.#n.#f&&this.#i?.type==="!")&&t.push({}),t}isStart(){if(this.#n===this)return!0;if(!this.#i?.isStart())return!1;if(this.#p===0)return!0;const t=this.#i;for(let e=0;e{const[m,g,p,f]=typeof d=="string"?ht.#E(d,this.#e,u):d.toRegExpSource(t);return this.#e=this.#e||p,this.#r=this.#r||f,m})).join("");let c="";if(this.isStart()&&typeof this.#t[0]=="string"&&(this.#t.length!==1||!Vo.has(this.#t[0]))){const d=Do,m=e&&d.has(l.charAt(0))||l.startsWith("\\.")&&d.has(l.charAt(2))||l.startsWith("\\.\\.")&&d.has(l.charAt(4)),g=!e&&!t&&d.has(l.charAt(0));c=m?"(?!(?:^|/)\\.\\.?(?:$|/))":g?cn:""}let h="";return this.isEnd()&&this.#n.#f&&this.#i?.type==="!"&&(h="(?:$|\\/)"),[c+l+h,ve(l),this.#e=!!this.#e,this.#r]}const r=this.type==="*"||this.type==="+",i=this.type==="!"?"(?:(?!(?:":"(?:";let s=this.#k(e);if(this.isStart()&&this.isEnd()&&!s&&this.type!=="!"){const u=this.toString(),l=this;return l.#t=[u],l.type=null,l.#e=void 0,[u,ve(this.toString()),!1,!1]}let o=!r||t||e?"":this.#k(!0);o===s&&(o=""),o&&(s=`(?:${s})(?:${o})*?`);let a="";return a=this.type==="!"&&this.#u?(this.isStart()&&!e?cn:"")+Ar:i+s+(this.type==="!"?"))"+(!this.isStart()||e||t?"":cn)+$r+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&o?")":this.type==="*"&&o?")?":`)${this.type}`),[a,ve(s),this.#e=!!this.#e,this.#r]}#k(t){return this.#t.map((e=>{if(typeof e=="string")throw new Error("string type in extglob ast??");const[r,i,s,o]=e.toRegExpSource(t);return this.#r=this.#r||o,r})).filter((e=>!(this.isStart()&&this.isEnd()&&!e))).join("|")}static#E(t,e,r=!1){let i=!1,s="",o=!1,a=!1;for(let u=0;u(He(t),!(!e.nocomment&&t.charAt(0)==="#")&&new Ge(t,e).match(n)),Ro=/^\*+([^+@!?\*\[\(]*)$/,Fo=n=>t=>!t.startsWith(".")&&t.endsWith(n),zo=n=>t=>t.endsWith(n),Uo=n=>(n=n.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(n)),Wo=n=>(n=n.toLowerCase(),t=>t.toLowerCase().endsWith(n)),qo=/^\*+\.\*+$/,Ho=n=>!n.startsWith(".")&&n.includes("."),Go=n=>n!=="."&&n!==".."&&n.includes("."),Ko=/^\.\*+$/,Zo=n=>n!=="."&&n!==".."&&n.startsWith("."),Xo=/^\*+$/,Yo=n=>n.length!==0&&!n.startsWith("."),Jo=n=>n.length!==0&&n!=="."&&n!=="..",Qo=/^\?+([^+@!?\*\[\(]*)?$/,ta=([n,t=""])=>{const e=bi([n]);return t?(t=t.toLowerCase(),r=>e(r)&&r.toLowerCase().endsWith(t)):e},ea=([n,t=""])=>{const e=vi([n]);return t?(t=t.toLowerCase(),r=>e(r)&&r.toLowerCase().endsWith(t)):e},na=([n,t=""])=>{const e=vi([n]);return t?r=>e(r)&&r.endsWith(t):e},ra=([n,t=""])=>{const e=bi([n]);return t?r=>e(r)&&r.endsWith(t):e},bi=([n])=>{const t=n.length;return e=>e.length===t&&!e.startsWith(".")},vi=([n])=>{const t=n.length;return e=>e.length===t&&e!=="."&&e!==".."},wi=typeof Ve=="object"&&Ve?typeof sn=="object"&&sn&&sn.__MINIMATCH_TESTING_PLATFORM__||Ve.platform:"posix";it.sep=wi==="win32"?"\\":"/";const rt=Symbol("globstar **");it.GLOBSTAR=rt,it.filter=(n,t={})=>e=>it(e,n,t);const Ct=(n,t={})=>Object.assign({},n,t);it.defaults=n=>{if(!n||typeof n!="object"||!Object.keys(n).length)return it;const t=it;return Object.assign(((e,r,i={})=>t(e,r,Ct(n,i))),{Minimatch:class extends t.Minimatch{constructor(e,r={}){super(e,Ct(n,r))}static defaults(e){return t.defaults(Ct(n,e)).Minimatch}},AST:class extends t.AST{constructor(e,r,i={}){super(e,r,Ct(n,i))}static fromGlob(e,r={}){return t.AST.fromGlob(e,Ct(n,r))}},unescape:(e,r={})=>t.unescape(e,Ct(n,r)),escape:(e,r={})=>t.escape(e,Ct(n,r)),filter:(e,r={})=>t.filter(e,Ct(n,r)),defaults:e=>t.defaults(Ct(n,e)),makeRe:(e,r={})=>t.makeRe(e,Ct(n,r)),braceExpand:(e,r={})=>t.braceExpand(e,Ct(n,r)),match:(e,r,i={})=>t.match(e,r,Ct(n,i)),sep:t.sep,GLOBSTAR:rt})};const xi=(n,t={})=>(He(n),t.nobrace||!/\{(?:(?!\{).)*\}/.test(n)?[n]:To(n));it.braceExpand=xi,it.makeRe=(n,t={})=>new Ge(n,t).makeRe(),it.match=(n,t,e={})=>{const r=new Ge(t,e);return n=n.filter((i=>r.match(i))),r.options.nonull&&!n.length&&n.push(t),n};const Tr=/[?*]|[+@!]\(.*?\)|\[|\]/;class Ge{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,e={}){He(t),e=e||{},this.options=e,this.maxGlobstarRecursion=e.maxGlobstarRecursion??200,this.pattern=t,this.platform=e.platform||wi,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=e.windowsNoMagicRoot!==void 0?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if(typeof e!="string")return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#")return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...s)=>console.error(...s)),this.debug(this.pattern,this.globSet);const r=this.globSet.map((s=>this.slashSplit(s)));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let i=this.globParts.map(((s,o,a)=>{if(this.isWindows&&this.windowsNoMagicRoot){const u=!(s[0]!==""||s[1]!==""||s[2]!=="?"&&Tr.test(s[2])||Tr.test(s[3])),l=/^[a-z]:/i.test(s[0]);if(u)return[...s.slice(0,4),...s.slice(4).map((c=>this.parse(c)))];if(l)return[s[0],...s.slice(1).map((c=>this.parse(c)))]}return s.map((u=>this.parse(u)))}));if(this.debug(this.pattern,i),this.set=i.filter((s=>s.indexOf(!1)===-1)),this.isWindows)for(let s=0;s=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map((e=>{let r=-1;for(;(r=e.indexOf("**",r+1))!==-1;){let i=r;for(;e[i+1]==="**";)i++;i!==r&&e.splice(r,i-r)}return e}))}levelOneOptimize(t){return t.map((e=>(e=e.reduce(((r,i)=>{const s=r[r.length-1];return i==="**"&&s==="**"?r:i===".."&&s&&s!==".."&&s!=="."&&s!=="**"?(r.pop(),r):(r.push(i),r)}),[])).length===0?[""]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let i=1;ii&&r.splice(i+1,o-i);let a=r[i+1];const u=r[i+2],l=r[i+3];if(a!==".."||!u||u==="."||u===".."||!l||l==="."||l==="..")continue;e=!0,r.splice(i,1);const c=r.slice(0);c[i]="**",t.push(c),i--}if(!this.preserveMultipleSlashes){for(let o=1;oe.length))}partsMatch(t,e,r=!1){let i=0,s=0,o=[],a="";for(;i=2&&(t=this.levelTwoFileOptimize(t)),e.includes(rt)?this.#n(t,e,r,i,s):this.#r(t,e,r,i,s)}#n(t,e,r,i,s){const o=e.indexOf(rt,s),a=e.lastIndexOf(rt),[u,l,c]=r?[e.slice(s,o),e.slice(o+1),[]]:[e.slice(s,o),e.slice(o+1,a),e.slice(a+1)];if(u.length){const b=t.slice(i,i+u.length);if(!this.#r(b,u,r,0,0))return!1;i+=u.length}let h=0;if(c.length){if(c.length+i>t.length)return!1;let b=t.length-c.length;if(this.#r(t,c,r,b,0))h=c.length;else{if(t[t.length-1]!==""||i+c.length===t.length||(b--,!this.#r(t,c,r,b,0)))return!1;h=c.length+1}}if(!l.length){let b=!!h;for(let v=i;v{const l=u.map((c=>{if(c instanceof RegExp)for(const h of c.flags.split(""))i.add(h);return typeof c=="string"?c.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):c===rt?rt:c._src}));return l.forEach(((c,h)=>{const d=l[h+1],m=l[h-1];c===rt&&m!==rt&&(m===void 0?d!==void 0&&d!==rt?l[h+1]="(?:\\/|"+r+"\\/)?"+d:l[h]=r:d===void 0?l[h-1]=m+"(?:\\/|"+r+")?":d!==rt&&(l[h-1]=m+"(?:\\/|\\/"+r+"\\/)"+d,l[h+1]=rt))})),l.filter((c=>c!==rt)).join("/")})).join("|");const[o,a]=t.length>1?["(?:",")"]:["",""];s="^"+o+s+a+"$",this.negate&&(s="^(?!"+s+").+$");try{this.regexp=new RegExp(s,[...i].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const i=this.slashSplit(t);this.debug(this.pattern,"split",i);const s=this.set;this.debug(this.pattern,"set",s);let o=i[i.length-1];if(!o)for(let a=i.length-2;!o&&a>=0;a--)o=i[a];for(let a=0;a=400)throw Kn(t);return t}function ue(n,t,e=!1){return e?{data:t,headers:n.headers?Eo(n.headers):{},status:n.status,statusText:n.statusText}:t}it.AST=Gn,it.Minimatch=Ge,it.escape=(n,{windowsPathsNoEscape:t=!1}={})=>t?n.replace(/[?*()[\]]/g,"[$&]"):n.replace(/[?*()[\]\\]/g,"\\$&"),it.unescape=ve;const ia=(Or=function(n,t,e,r={}){const i=tt({url:X(n.remoteURL,Z(t)),method:"COPY",headers:{Destination:X(n.remoteURL,Z(e)),Overwrite:r.overwrite===!1?"F":"T",Depth:r.shallow?"0":"infinity"}},n,r);return o=function(a){et(n,a)},(s=Q(i,n))&&s.then||(s=Promise.resolve(s)),o?s.then(o):s;var s,o},function(){for(var n=[],t=0;tZn.includes(n)?"__"+n:n,oa={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0,unicode:!1},tagValueProcessor:function(n,t){return t},attributeValueProcessor:function(n,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,entityDecoder:null,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(n,t,e){return n},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:Si};function aa(n,t){if(typeof n!="string")return;const e=n.toLowerCase();if(Zn.some((r=>e===r.toLowerCase())))throw new Error(`[SECURITY] Invalid ${t}: "${n}" is a reserved JavaScript keyword that could cause prototype pollution`);if(ki.some((r=>e===r.toLowerCase())))throw new Error(`[SECURITY] Invalid ${t}: "${n}" is a reserved JavaScript keyword that could cause prototype pollution`)}function Ci(n,t){return typeof n=="boolean"?{enabled:n,maxEntitySize:1e4,maxExpansionDepth:1e4,maxTotalExpansions:1/0,maxExpandedLength:1e5,maxEntityCount:1e3,allowedTags:null,tagFilter:null,appliesTo:"all"}:typeof n=="object"&&n!==null?{enabled:n.enabled!==!1,maxEntitySize:Math.max(1,n.maxEntitySize??1e4),maxExpansionDepth:Math.max(1,n.maxExpansionDepth??1e4),maxTotalExpansions:Math.max(1,n.maxTotalExpansions??1/0),maxExpandedLength:Math.max(1,n.maxExpandedLength??1e5),maxEntityCount:Math.max(1,n.maxEntityCount??1e3),allowedTags:n.allowedTags??null,tagFilter:n.tagFilter??null,appliesTo:n.appliesTo??"all"}:Ci(!0)}const la=function(n){const t=Object.assign({},oa,n),e=[{value:t.attributeNamePrefix,name:"attributeNamePrefix"},{value:t.attributesGroupName,name:"attributesGroupName"},{value:t.textNodeName,name:"textNodeName"},{value:t.cdataPropName,name:"cdataPropName"},{value:t.commentPropName,name:"commentPropName"}];for(const{value:r,name:i}of e)r&&aa(r,i);return t.onDangerousProperty===null&&(t.onDangerousProperty=Si),t.processEntities=Ci(t.processEntities,t.htmlEntities),t.unpairedTagsSet=new Set(t.unpairedTags),t.stopNodes&&Array.isArray(t.stopNodes)&&(t.stopNodes=t.stopNodes.map((r=>typeof r=="string"&&r.startsWith("*.")?".."+r.substring(2):r))),t};let Xt;Xt=typeof Symbol!="function"?"@@xmlMetadata":Symbol("XML Node Metadata");class Bt{constructor(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}add(t,e){t==="__proto__"&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){t.tagname==="__proto__"&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),this.addStartIndex(e)}addStartIndex(t){t!==void 0&&(this.child[this.child.length-1][Xt]={startIndex:t})}addEndIndex(t){const e=this.child[this.child.length-1];e!==void 0&&e[Xt]!==void 0&&e[Xt].endIndex===void 0&&(e[Xt].endIndex=t)}static getMetaDataSymbol(){return Xt}}const Lr=":A-Za-z_À-ÖØ-öø-˿Ͱ-ͽͿ-҆҈-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�",Ei=":A-Za-z_À-˿Ͱ-ͽͿ-҆҈-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",ca=Ei+"\\-\\.\\d·̀-ͯ҇‿-⁀",Xn=(n,t,e="")=>{const r=`[${n.replace(":","")}][${t.replace(":","")}]*`;return{name:new RegExp(`^[${n}][${t}]*$`,e),ncName:new RegExp(`^${r}$`,e),qName:new RegExp(`^${r}(?::${r})?$`,e),nmToken:new RegExp(`^[${t}]+$`,e),nmTokens:new RegExp(`^[${t}]+(?:\\s+[${t}]+)*$`,e)}},ua=Xn(Lr,Lr+"\\-\\.\\d·̀-ͯ‿-⁀"),da=Xn(Ei,ca,"u"),Ir=":A-Za-z_",ha=Xn(Ir,Ir+"\\-\\.\\d"),Ni=(n="1.0",t=!1)=>t?ha:n==="1.1"?da:ua,$i=(n,{xmlVersion:t="1.0",asciiOnly:e=!1}={})=>Ni(t,e).qName.test(n),jr=["name","ncName","qName","nmToken","nmTokens"],Ai=(n,{xmlVersion:t="1.0",asciiOnly:e=!1,maxCacheSize:r=2048}={})=>{if(!jr.includes(n))throw new TypeError(`Unknown production "${n}". Must be one of: ${jr.join(", ")}`);const i=Ni(t,e)[n];let s=new Map;const o=a=>{const u=s.get(a);if(u!==void 0)return u;const l=i.test(a);return s.size{s=new Map},o};class pa{constructor(t,e){this.suppressValidationErr=!t,this.options=t,this.xmlVersion=e||1}setXmlVersion(t=1){this.xmlVersion=t}readDocType(t,e){const r=Object.create(null);let i=0;if(t[e+3]!=="O"||t[e+4]!=="C"||t[e+5]!=="T"||t[e+6]!=="Y"||t[e+7]!=="P"||t[e+8]!=="E")throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let s=1,o=!1,a=!1,u=null,l="";for(;e"){if(a?t[e-1]==="-"&&t[e-2]==="-"&&(a=!1,s--):s--,s===0)break}else t[e]==="["?o=!0:l+=t[e];else{if(o&&Wt(t,"!ENTITY",e)){let c,h;if(e+=7,[c,h,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),h.indexOf("&")===-1){if(this.options.enabled!==!1&&this.options.maxEntityCount!=null&&i>=this.options.maxEntityCount)throw new Error(`Entity count (${i+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);r[c]=h,i++}}else if(o&&Wt(t,"!ELEMENT",e)){e+=8;const{index:c}=this.readElementExp(t,e+1);e=c}else if(o&&Wt(t,"!ATTLIST",e))e+=8;else if(o&&Wt(t,"!NOTATION",e)){e+=9;const{index:c}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=c}else{if(!Wt(t,"!--",e))throw new Error("Invalid DOCTYPE");a=!0}s++,l=""}else u=t[e],l+=t[e];else t[e]===u&&(u=null),l+=t[e];if(u!==null||s!==0)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){const r=e=dt(t,e);for(;ethis.options.maxEntitySize)throw new Error(`Entity "${i}" size (${s.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return[i,s,--e]}readNotationExp(t,e){const r=e=dt(t,e);for(;e{for(;t=48&&u<=57||u===45)){if(u=55296&&u<=56319){if(a+1=56320&&l<=57343){const c=65536+(u-55296<<10)+(l-56320);if(On.has(c)){s=a;break}}}}else if(Pn[u-we]!==255||je.has(u)){s=a;break}}}if(s===-1)return r;const o=[];s>0&&o.push(r.slice(0,s));for(let a=s;a=48&&u<=57||u===45){o.push(r[a]);continue}if(u=55296&&u<=56319){if(a+1=56320&&c<=57343){const h=65536+(u-55296<<10)+(c-56320),d=On.get(h);if(d!==void 0){o.push(String.fromCharCode(d+48)),a++;continue}}}o.push(r[a]);continue}if(je.has(u)){o.push("-");continue}const l=Pn[u-we];o.push(l!==255?String.fromCharCode(l+48):r[a])}return o.join("")})(e),e==="0"))return 0;if(t.hex&&ma.test(e))return un(e,16);if(t.binary&&ga.test(e))return un(e,2);if(t.octal&&ya.test(e))return un(e,8);if(isFinite(e)){if(e.includes("e")||e.includes("E"))return(function(r,i,s){if(!s.eNotation)return r;const o=i.match(xa);if(o){let a=o[1]||"";const u=o[3].indexOf("e")===-1?"E":"e",l=o[2],c=a?r[l.length+1]===u:r[l.length]===u;return l.length>1&&c?r:(l.length!==1||!o[3].startsWith(`.${u}`)&&o[3][0]!==u)&&l.length>0?s.leadingZeros&&!c?(i=(o[1]||"")+o[3],Number(i)):r:Number(i)}return r})(n,e,t);{const r=ba.exec(e);if(r){const i=r[1]||"",s=r[2];let o=(function(u){if(u&&u.indexOf(".")!==-1){let l=u.length;for(;l>0&&u.charCodeAt(l-1)===48;)l--;return(u=u.slice(0,l))==="."?u="0":u[0]==="."?u="0"+u:u[u.length-1]==="."&&(u=u.substring(0,u.length-1)),u}return u})(r[3]);const a=i?n[s.length+1]===".":n[s.length]===".";if(!t.leadingZeros&&(s.length>1||s.length===1&&!a))return n;{const u=Number(e),l=String(u);if(u===0)return u;if(l.search(/[eE]/)!==-1)return t.eNotation?u:n;if(e.indexOf(".")!==-1)return l==="0"||l===o||l===`${i}${o}`?u:n;let c=s?o:e;return s?c===l||i+c===l?u:n:c===l||c===i+l?u:n}}return n}}return(function(r,i,s){const o=i===1/0;switch(s.infinity.toLowerCase()){case"null":return null;case"infinity":return i;case"string":return o?"Infinity":"-Infinity";default:return r}})(n,Number(e),t)}const xa=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function un(n,t){const e=n.trim();if(t!==2&&t!==8||(n=e.substring(2)),parseInt)return parseInt(n,t);if(Number.parseInt)return Number.parseInt(n,t);if(window&&window.parseInt)return window.parseInt(n,t);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}class _a{constructor(t){this._matcher=t}get separator(){return this._matcher.separator}getCurrentTag(){const t=this._matcher.path;return t.length>0?t[t.length-1].tag:void 0}getCurrentNamespace(){const t=this._matcher.path;return t.length>0?t[t.length-1].namespace:void 0}getAttrValue(t){const e=this._matcher.path;if(e.length!==0)return e[e.length-1].values?.[t]}hasAttr(t){const e=this._matcher.path;if(e.length===0)return!1;const r=e[e.length-1];return r.values!==void 0&&t in r.values}getAnyParentAttr(t){return this._matcher.getAnyParentAttr(t)}hasAnyParentAttr(t){return this._matcher.hasAnyParentAttr(t)}getPosition(){const t=this._matcher.path;return t.length===0?-1:t[t.length-1].position??0}getCounter(){const t=this._matcher.path;return t.length===0?-1:t[t.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this._matcher.path.length}toString(t,e=!0){return this._matcher.toString(t,e)}toArray(){return this._matcher.path.map((t=>t.tag))}matches(t){return this._matcher.matches(t)}matchesAny(t){return t.matchesAny(this._matcher)}}class Yn{constructor(t={}){this.separator=t.separator||".",this.path=[],this.siblingStacks=[],this._pathStringCache=null,this._view=new _a(this),this._keptAttrs=[]}push(t,e=null,r=null,i=null){this._pathStringCache=null,this.path.length>0&&(this.path[this.path.length-1].values=void 0);const s=this.path.length;let o=this.siblingStacks[s];o||(o={counts:new Map,total:0},this.siblingStacks[s]=o);const a=r?`${r}:${t}`:t,u=o.counts.get(a)||0,l=o.total;o.counts.set(a,u+1),o.total++;const c={tag:t,position:l,counter:u};r!=null&&(c.namespace=r),e!=null&&(c.values=e),this.path.push(c);const h=this.path.length,d=i!==null?i.keep:null;if(d!=null&&d.length>0&&e)for(let m=0;mthis.path.length+1&&(this.siblingStacks.length=this.path.length+1);const e=this.path.length+1;for(;this._keptAttrs.length>0&&this._keptAttrs[this._keptAttrs.length-1].depth>=e;)this._keptAttrs.pop();return t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];t!=null&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(this.path.length!==0)return this.path[this.path.length-1].values?.[t]}hasAttr(t){if(this.path.length===0)return!1;const e=this.path[this.path.length-1];return e.values!==void 0&&t in e.values}getAnyParentAttr(t){const e=this._keptAttrs;for(let r=e.length-1;r>=0;r--)if(e[r].name===t)return e[r].value}hasAnyParentAttr(t){const e=this._keptAttrs;for(let r=e.length-1;r>=0;r--)if(e[r].name===t)return!0;return!1}getPosition(){return this.path.length===0?-1:this.path[this.path.length-1].position??0}getCounter(){return this.path.length===0?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const r=t||this.separator;if(r===this.separator&&e===!0){if(this._pathStringCache!==null)return this._pathStringCache;const i=this.path.map((s=>s.namespace?`${s.namespace}:${s.tag}`:s.tag)).join(r);return this._pathStringCache=i,i}return this.path.map((i=>e&&i.namespace?`${i.namespace}:${i.tag}`:i.tag)).join(r)}toArray(){return this.path.map((t=>t.tag))}reset(){this._pathStringCache=null,this.path=[],this.siblingStacks=[],this._keptAttrs=[]}matches(t){const e=t.segments;return e.length!==0&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const i=t[r];if(i.type==="deep-wildcard"){if(r--,r<0)return!0;const s=t[r];let o=!1;for(let a=e;a>=0;a--)if(this._matchSegment(s,this.path[a],a===this.path.length-1)){e=a-1,r--,o=!0;break}if(!o)return!1}else{if(!this._matchSegment(i,this.path[e],e===this.path.length-1))return!1;e--,r--}}return r<0}_matchSegment(t,e,r){if(t.tag!=="*"&&t.tag!==e.tag||t.namespace!==void 0&&t.namespace!=="*"&&t.namespace!==e.namespace||t.attrName!==void 0&&(!r||!e.values||!(t.attrName in e.values)||t.attrValue!==void 0&&String(e.values[t.attrName])!==String(t.attrValue)))return!1;if(t.position!==void 0){if(!r)return!1;const i=e.counter??0;if(t.position==="first"&&i!==0||t.position==="odd"&&i%2!=1||t.position==="even"&&i%2!=0||t.position==="nth"&&i!==t.positionValue)return!1}return!0}matchesAny(t){return t.matchesAny(this)}snapshot(){return{path:this.path.map((t=>({...t}))),siblingStacks:this.siblingStacks.map((t=>t&&{counts:new Map(t.counts),total:t.total})),keptAttrs:this._keptAttrs.map((t=>({...t})))}}restore(t){this._pathStringCache=null,this.path=t.path.map((e=>({...e}))),this.siblingStacks=t.siblingStacks.map((e=>e&&{counts:new Map(e.counts),total:e.total})),this._keptAttrs=(t.keptAttrs||[]).map((e=>({...e})))}readOnly(){return this._view}}class oe{constructor(t,e={},r){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this.data=r,this._hasDeepWildcard=this.segments.some((i=>i.type==="deep-wildcard")),this._hasAttributeCondition=this.segments.some((i=>i.attrName!==void 0)),this._hasPositionSelector=this.segments.some((i=>i.position!==void 0))}_parse(t){const e=[];let r=0,i="";for(;r",lt:"<",quot:'"'},Ca={nbsp:" ",copy:"©",reg:"®",trade:"™",mdash:"—",ndash:"–",hellip:"…",laquo:"«",raquo:"»",lsquo:"‘",rsquo:"’",ldquo:"“",rdquo:"”",bull:"•",para:"¶",sect:"§",deg:"°",frac12:"½",frac14:"¼",frac34:"¾"},Ke=Object.freeze({ALLOW:"allow",BLOCK:"block",THROW:"throw"}),Ea=new Set("!?\\\\/[]$%{}^&*()<>|+");function Br(n){if(n[0]==="#")throw new Error(`[EntityReplacer] Invalid character '#' in entity name: "${n}"`);for(const t of n)if(Ea.has(t))throw new Error(`[EntityReplacer] Invalid character '${t}' in entity name: "${n}"`);return n}function me(...n){const t=Object.create(null);for(const e of n)if(e)for(const r of Object.keys(e)){const i=e[r];if(typeof i=="string")t[r]=i;else if(i&&typeof i=="object"&&i.val!==void 0){const s=i.val;typeof s=="string"&&(t[r]=s)}}return t}const qt="external",Be="base",dn="all",bt=Object.freeze({allow:0,leave:1,remove:2,throw:3}),Na=new Set([9,10,13]);class Oi{constructor(t={}){var e;this._limit=t.limit||{},this._maxTotalExpansions=this._limit.maxTotalExpansions||0,this._maxExpandedLength=this._limit.maxExpandedLength||0,this._postCheck=typeof t.postCheck=="function"?t.postCheck:i=>i,this._limitTiers=(e=this._limit.applyLimitsTo??qt)&&e!==qt?e===dn?new Set([dn]):e===Be?new Set([Be]):Array.isArray(e)?new Set(e):new Set([qt]):new Set([qt]),this._numericAllowed=t.numericAllowed??!0,this._baseMap=me(Ti,t.namedEntities||null),this._externalMap=Object.create(null),this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this._removeSet=new Set(t.remove&&Array.isArray(t.remove)?t.remove:[]),this._leaveSet=new Set(t.leave&&Array.isArray(t.leave)?t.leave:[]);const r=(function(i){if(!i)return{xmlVersion:1,onLevel:bt.allow,nullLevel:bt.remove};const s=i.xmlVersion===1.1?1.1:1,o=bt[i.onNCR]??bt.allow,a=bt[i.nullNCR]??bt.remove;return{xmlVersion:s,onLevel:o,nullLevel:Math.max(a,bt.remove)}})(t.ncr);this._ncrXmlVersion=r.xmlVersion,this._ncrOnLevel=r.onLevel,this._ncrNullLevel=r.nullLevel,this._onExternalEntity=typeof t.onExternalEntity=="function"?t.onExternalEntity:null,this._onInputEntity=typeof t.onInputEntity=="function"?t.onInputEntity:null}_applyRegistrationHook(t,e,r,i){if(!t)return!0;const s=t(e,r);if(s===Ke.BLOCK)return!1;if(s===Ke.THROW)throw new Error(`[EntityDecoder] Registration of ${i} entity "&${e};" was rejected by hook`);return!0}setExternalEntities(t){if(t)for(const i of Object.keys(t))Br(i);if(!this._onExternalEntity)return void(this._externalMap=me(t));const e=me(t),r=Object.create(null);for(const[i,s]of Object.entries(e))this._applyRegistrationHook(this._onExternalEntity,i,s,"external")&&(r[i]=s);this._externalMap=r}addExternalEntity(t,e){Br(t),typeof e=="string"&&e.indexOf("&")===-1&&this._applyRegistrationHook(this._onExternalEntity,t,e,"external")&&(this._externalMap[t]=e)}addInputEntities(t){if(this._totalExpansions=0,this._expandedLength=0,!this._onInputEntity)return void(this._inputMap=me(t));const e=me(t),r=Object.create(null);for(const[i,s]of Object.entries(e))this._applyRegistrationHook(this._onInputEntity,i,s,"input")&&(r[i]=s);this._inputMap=r}reset(){return this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this}setXmlVersion(t){this._ncrXmlVersion=t===1.1?1.1:1}decode(t){if(typeof t!="string"||t.length===0||t.indexOf("&")===-1)return t;const e=t,r=[],i=t.length;let s=0,o=0;const a=this._maxTotalExpansions>0,u=this._maxExpandedLength>0,l=a||u;for(;o=i||t.charCodeAt(h)!==59){o++;continue}const d=t.slice(o+1,h);if(d.length===0){o++;continue}let m,g;if(this._removeSet.has(d))m="",g===void 0&&(g=qt);else{if(this._leaveSet.has(d)){o++;continue}if(d.charCodeAt(0)===35){const p=this._resolveNCR(d);if(p===void 0){o++;continue}m=p,g=Be}else{const p=this._resolveName(d);m=p?.value,g=p?.tier}}if(m!==void 0){if(o>s&&r.push(t.slice(s,o)),r.push(m),s=h+1,o=s,l&&this._tierCounts(g)){if(a&&(this._totalExpansions++,this._totalExpansions>this._maxTotalExpansions))throw new Error(`[EntityReplacer] Entity expansion count limit exceeded: ${this._totalExpansions} > ${this._maxTotalExpansions}`);if(u){const p=m.length-(d.length+2);if(p>0&&(this._expandedLength+=p,this._expandedLength>this._maxExpandedLength))throw new Error(`[EntityReplacer] Expanded content length limit exceeded: ${this._expandedLength} > ${this._maxExpandedLength}`)}}}else o++}s=55296&&t<=57343||this._ncrXmlVersion===1&&t>=1&&t<=31&&!Na.has(t)?bt.remove:-1}_applyNCRAction(t,e,r){switch(t){case bt.allow:return String.fromCodePoint(r);case bt.remove:return"";case bt.leave:return;case bt.throw:throw new Error(`[EntityDecoder] Prohibited numeric character reference &${e}; (U+${r.toString(16).toUpperCase().padStart(4,"0")})`);default:return String.fromCodePoint(r)}}_resolveNCR(t){const e=t.charCodeAt(1);let r;if(r=e===120||e===88?parseInt(t.slice(2),16):parseInt(t.slice(1),10),Number.isNaN(r)||r<0||r>1114111)return;const i=this._classifyNCR(r);if(!this._numericAllowed&&i/]/i},{id:"html-script-close",description:"<\/script closing tag",pattern:/<\/script[\s>]/i},{id:"html-javascript-protocol",description:"javascript: URI scheme (with optional whitespace/encoding)",pattern:/j[\t\n\r ]*a[\t\n\r ]*v[\t\n\r ]*a[\t\n\r ]*s[\t\n\r ]*c[\t\n\r ]*r[\t\n\r ]*i[\t\n\r ]*p[\t\n\r ]*t[\t\n\r ]*:/i},{id:"html-vbscript-protocol",description:"vbscript: URI scheme",pattern:/vbscript[\t\n\r ]*:/i},{id:"html-data-html",description:"data:text/html URI — can execute scripts in browsers",pattern:/data[\t\n\r ]*:[\t\n\r ]*text\/html/i},{id:"html-data-xhtml",description:"data:application/xhtml+xml URI",pattern:/data[\t\n\r ]*:[\t\n\r ]*application\/xhtml/i},{id:"html-data-svg",description:"data:image/svg+xml URI — can execute scripts",pattern:/data[\t\n\r ]*:[\t\n\r ]*image\/svg\+xml/i},{id:"html-inline-event-handler",description:"Inline event handler attributes: onclick=, onerror=, onload=, etc.",pattern:/\bon\w{1,30}\s*=/i},{id:"html-entity-obfuscated-script",description:"HTML-entity-encoded \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n // Always the case.\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @import {\n * Construct,\n * Event,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n resolveAll: resolveAllLabelEnd,\n resolveTo: resolveToLabelEnd,\n tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n /** @type {Array} */\n const newEvents = [];\n while (++index < events.length) {\n const token = events[index][1];\n newEvents.push(events[index]);\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n const offset = token.type === \"labelImage\" ? 4 : 2;\n token.type = \"data\";\n index += offset;\n }\n }\n\n // If the events are equal, we don't have to copy newEvents to events\n if (events.length !== newEvents.length) {\n splice(events, 0, events.length, newEvents);\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array} */\n let media;\n\n // Find an opening.\n while (index--) {\n const token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n const label = {\n type: \"label\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[close][1].end\n }\n };\n const text = {\n type: \"labelText\",\n start: {\n ...events[open + offset + 2][1].end\n },\n end: {\n ...events[close - 2][1].start\n }\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n const labelStarts = self._labelStarts;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n if (labelStarts) {\n // Discard ones that failed to close,\n // they’re not needed anymore.\n while (labelStarts.length > 0 && labelStarts[labelStarts.length - 1]._balanced) {\n labelStarts.pop();\n }\n labelStart = labelStarts[labelStarts.length - 1];\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n // This label start is now used up: discard it so it’s never found again.\n\n labelStarts.pop();\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * Token,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n /** @type {Token} */\n let labelImage;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n labelImage = effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 6 */\n if (code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs) {\n return nok(code);\n }\n self._labelStarts = self._labelStarts || [];\n self._labelStarts.push(labelImage);\n return ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * Token,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n /** @type {Token} */\n let labelLink;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n labelLink = effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 6 */\n if (code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs) {\n return nok(code);\n }\n self._labelStarts = self._labelStarts || [];\n self._labelStarts.push(labelLink);\n return ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"thematicBreak\");\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code;\n return atBreak(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter(\"thematicBreakSequence\");\n return sequence(code);\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit(\"thematicBreak\");\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return sequence;\n }\n effects.exit(\"thematicBreakSequence\");\n return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd,\n name: 'list',\n tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n partial: true,\n tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n partial: true,\n tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n if (!self.containerState.type) {\n self.containerState.type = kind;\n effects.enter(kind, {\n _container: true\n });\n }\n if (kind === \"listUnordered\") {\n effects.enter(\"listItemPrefix\");\n return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n }\n if (!self.interrupt || code === 49) {\n effects.enter(\"listItemPrefix\");\n effects.enter(\"listItemValue\");\n return inside(code);\n }\n }\n return nok(code);\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code);\n return inside;\n }\n if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n effects.exit(\"listItemValue\");\n return atMarker(code);\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter(\"listItemMarker\");\n effects.consume(code);\n effects.exit(\"listItemMarker\");\n self.containerState.marker = self.containerState.marker || code;\n return effects.check(blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true;\n initialSize++;\n return endOfPrefix(code);\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter(\"listItemPrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"listItemPrefixWhitespace\");\n return endOfPrefix;\n }\n return nok(code);\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this;\n self.containerState._closeFlow = undefined;\n return effects.check(blankLine, onBlank, notBlank);\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return notInCurrentItem(code);\n }\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true;\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined;\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this;\n\n // Always populated by defaults.\n\n return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { EditMap } from 'micromark-util-edit-map';\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n resolveTo: resolveToSetextUnderline,\n tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n const editMap = new EditMap();\n let index = events.length;\n /** @type {number | undefined} */\n let content;\n /** @type {number | undefined} */\n let text;\n /** @type {number | undefined} */\n let definition;\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === \"content\") {\n content = index;\n break;\n }\n if (events[index][1].type === \"paragraph\") {\n text = index;\n }\n }\n // Exit\n else {\n if (events[index][1].type === \"content\") {\n // Remove the content end (if needed we’ll add it later)\n editMap.add(index, 1, []);\n }\n if (!definition && events[index][1].type === \"definition\") {\n definition = index;\n }\n }\n }\n const heading = {\n type: \"setextHeading\",\n start: {\n ...events[content][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n\n // Change the paragraph to setext heading text.\n events[text][1].type = \"setextHeadingText\";\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n editMap.add(text, 0, [['enter', heading, context]]);\n editMap.add(definition + 1, 0, [['exit', events[content][1], context]]);\n events[content][1].end = {\n ...events[definition][1].end\n };\n } else {\n events[content][1] = heading;\n }\n\n // Add the heading exit at the end.\n editMap.add(events.length, 0, [['exit', heading, context]]);\n editMap.consume(events);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length;\n /** @type {boolean | undefined} */\n let paragraph;\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n paragraph = self.events[index][1].type === \"paragraph\";\n break;\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter(\"setextHeadingLine\");\n marker = code;\n return before(code);\n }\n return nok(code);\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"setextHeadingLineSequence\");\n return inside(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n effects.exit(\"setextHeadingLineSequence\");\n return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"setextHeadingLine\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeFlow(effects) {\n const self = this;\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine, atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n return initial;\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEndingBlank\");\n effects.consume(code);\n effects.exit(\"lineEndingBlank\");\n self.currentConstruct = undefined;\n return initial;\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n self.currentConstruct = undefined;\n return initial;\n }\n}","/**\n * @import {\n * Code,\n * InitialConstruct,\n * Initializer,\n * Resolver,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { EditMap } from 'micromark-util-edit-map';\nexport const resolver = {\n resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n * Field.\n * @returns {InitialConstruct}\n * Construct.\n */\nfunction initializeFactory(field) {\n return {\n resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n tokenize: initializeText\n };\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this;\n const constructs = this.parser.constructs[field];\n const text = effects.attempt(constructs, start, notText);\n return start;\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code);\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"data\");\n effects.consume(code);\n return data;\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit(\"data\");\n return text(code);\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n\n /**\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether the code is a break.\n */\n function atBreak(code) {\n if (code === null) {\n return true;\n }\n const list = constructs[code];\n let index = -1;\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index];\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true;\n }\n }\n }\n return false;\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * Resolver.\n * @returns {Resolver}\n * Resolver.\n */\nfunction createResolver(extraResolver) {\n return resolveAllText;\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1;\n /** @type {number | undefined} */\n let enter;\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === \"data\") {\n enter = index;\n index++;\n }\n } else if (!events[index] || events[index][1].type !== \"data\") {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return extraResolver ? extraResolver(events, context) : events;\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n const editMap = new EditMap();\n let eventIndex = 0; // Skip first.\n\n while (++eventIndex <= events.length) {\n if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n const data = events[eventIndex - 1][1];\n const chunks = context.sliceStream(data);\n let index = chunks.length;\n let bufferIndex = -1;\n let size = 0;\n /** @type {boolean | undefined} */\n let tabs;\n while (index--) {\n const chunk = chunks[index];\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length;\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++;\n bufferIndex--;\n }\n if (bufferIndex) {\n break;\n }\n bufferIndex = -1;\n }\n // Number\n else if (chunk === -2) {\n tabs = true;\n size++;\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++;\n break;\n }\n }\n\n // Allow final trailing whitespace.\n if (context._contentTypeTextTrailing && eventIndex === events.length) {\n size = 0;\n }\n if (size) {\n const token = {\n type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n start: {\n _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n _index: data.start._index + index,\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size\n },\n end: {\n ...data.end\n }\n };\n data.end = {\n ...token.start\n };\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token);\n } else {\n editMap.add(eventIndex, 0, [['enter', token, context], ['exit', token, context]]);\n }\n }\n eventIndex++;\n }\n }\n editMap.consume(events);\n return events;\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};","/**\n * @import {\n * Chunk,\n * Code,\n * ConstructRecord,\n * Construct,\n * Effects,\n * InitialConstruct,\n * ParseContext,\n * Point,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n * Restore the state.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef Info\n * Info.\n * @property {Restore} restore\n * Restore.\n * @property {number} from\n * From.\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * Construct.\n * @param {Info} info\n * Info.\n * @returns {undefined}\n * Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * Parser.\n * @param {InitialConstruct} initialize\n * Construct.\n * @param {Omit | undefined} [from]\n * Point (optional).\n * @returns {TokenizeContext}\n * Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = {\n _bufferIndex: -1,\n _index: 0,\n line: from && from.line || 1,\n column: from && from.column || 1,\n offset: from && from.offset || 0\n };\n /** @type {Record} */\n const columnStart = {};\n /** @type {Array} */\n const resolveAllConstructs = [];\n /** @type {Array} */\n let chunks = [];\n /** @type {Array} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n consume,\n enter,\n exit,\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n code: null,\n containerState: {},\n defineSkip,\n events: [],\n now,\n parser,\n previous: null,\n sliceSerialize,\n sliceStream,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | undefined}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n } = point;\n return {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {undefined}\n * Nothing.\n */\n function main() {\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n const chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * Code.\n * @returns {undefined}\n * Nothing.\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n if (point._bufferIndex ===\n // Points w/ non-negative `_bufferIndex` reference\n // strings.\n /** @type {string} */\n chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * Callback.\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n * Fields.\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | ConstructRecord | Construct} constructs\n * Constructs.\n * @param {State} returnState\n * State.\n * @param {State | undefined} [bogusState]\n * State.\n * @returns {State}\n * State.\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {ReadonlyArray} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // Looks like a construct.\n handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const left = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {ReadonlyArray} list\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * Construct.\n * @returns {State}\n * State.\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * Construct.\n * @param {number} from\n * From.\n * @returns {undefined}\n * Nothing.\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n * Info.\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n from: startEventsIndex,\n restore\n };\n\n /**\n * Restore state.\n *\n * @returns {undefined}\n * Nothing.\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {undefined}\n * Nothing.\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray} chunks\n * Chunks.\n * @param {Pick} token\n * Token.\n * @returns {Array}\n * Chunks.\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n /* c8 ignore next 4 -- used to be used, no longer */\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray} chunks\n * Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n * Whether to expand tabs (default: `false`).\n * @returns {string}\n * Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else {\n switch (chunk) {\n case -5:\n {\n value = \"\\r\";\n break;\n }\n case -4:\n {\n value = \"\\n\";\n break;\n }\n case -3:\n {\n value = \"\\r\" + \"\\n\";\n break;\n }\n case -2:\n {\n value = expandTabs ? \" \" : \"\\t\";\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) {\n continue;\n }\n value = \" \";\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}","/**\n * @import {\n * Create,\n * FullNormalizedExtension,\n * InitialConstruct,\n * ParseContext,\n * ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ParseContext}\n * Parser.\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n constructs,\n content: create(content),\n defined: [],\n document: create(document),\n flow: create(flow),\n lazy: {},\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n * Construct to start with.\n * @returns {Create}\n * Create a tokenizer.\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array} events\n * Events.\n * @returns {Array}\n * Events.\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n * Preprocess a value.\n * @param {Value} value\n * Value.\n * @param {Encoding | null | undefined} [encoding]\n * Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n * Whether this is the last chunk (default: `false`).\n * @returns {Array}\n * Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n * Preprocess a value.\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n\n /** @type {Array} */\n const chunks = [];\n let startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n const match = search.exec(value);\n const endPosition = match && match.index !== undefined ? match.index : value.length;\n const code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n const next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) {\n chunks.push(-1);\n }\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) {\n chunks.push(-5);\n }\n if (buffer) {\n chunks.push(buffer);\n }\n chunks.push(null);\n }\n return chunks;\n }\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * Match.\n * @param {string} $1\n * Character escape.\n * @param {string} $2\n * Character reference.\n * @returns {string}\n * Decoded value\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @import {\n * Break,\n * Blockquote,\n * Code,\n * Definition,\n * Emphasis,\n * Heading,\n * Html,\n * Image,\n * InlineCode,\n * Link,\n * ListItem,\n * List,\n * Nodes,\n * Paragraph,\n * PhrasingContent,\n * ReferenceType,\n * Root,\n * Strong,\n * Text,\n * ThematicBreak\n * } from 'mdast'\n * @import {\n * Encoding,\n * Event,\n * Token,\n * Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n * CompileContext,\n * CompileData,\n * Config,\n * Extension,\n * Handle,\n * OnEnterError,\n * Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (encoding && typeof encoding === 'object') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n afterExit: [],\n beforeEnter: [],\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: [],\n position: undefined\n };\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array} */\n const listStack = [];\n /** @type {Array} */\n const prepared = [];\n let index = -1;\n\n // Add `listItem` tokens and infer spread.\n // Each list is prepared while it is last in `prepared`, so nothing shifts.\n while (++index < events.length) {\n prepared.push(events[index]);\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(prepared.length - 1);\n } else {\n const tail = listStack.pop();\n prepareList(prepared, tail);\n }\n }\n }\n events = prepared;\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (events[index][0] === 'enter' && config.beforeEnter.length > 0) {\n callListeners(config.beforeEnter, {\n ...context,\n sliceSerialize: events[index][2].sliceSerialize\n }, events[index][1]);\n }\n if (own.call(handler, events[index][1].type)) {\n // Note: spread first, V8 has optimizations for object shape cloning.\n handler[events[index][1].type].call({\n ...context,\n sliceSerialize: events[index][2].sliceSerialize\n }, events[index][1]);\n }\n if (events[index][0] === 'exit' && config.afterExit.length > 0) {\n callListeners(config.afterExit, {\n ...context,\n sliceSerialize: events[index][2].sliceSerialize\n }, events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array} listeners\n * Listeners.\n * @param {CompileContext} context\n * Context.\n * @param {Token} token\n * Token.\n * @returns {undefined}\n * Nothing.\n */\n function callListeners(listeners, context, token) {\n let index = -1;\n while (++index < listeners.length) {\n listeners[index].call(context, token);\n }\n }\n\n /**\n * @param {Array} events\n * Events, ending with the list to prepare.\n * @param {number} start\n * Index of the list enter.\n * @returns {undefined}\n */\n function prepareList(events, start) {\n const end = events.length - 1;\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n /**\n * `listItem` events to insert before the event at `at`, in walk order.\n * Merged in after the walk, as inserting while walking would shift the\n * rest of the list once per item.\n * @type {Array<{at: number, event: Event}>}\n */\n const insertions = [];\n while (++index <= end) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n insertions.push({\n at: lineIndex || index,\n event: ['exit', listItem, event[2]]\n });\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n insertions.push({\n at: index,\n event: ['enter', item, event[2]]\n });\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n\n // The list is at the end of `events`: take it off, then push it back with\n // the insertions merged in.\n // Nothing follows the list, so nothing shifts.\n const listEvents = events.splice(start);\n let insertion = 0;\n index = -1;\n while (++index < listEvents.length) {\n while (insertion < insertions.length && insertions[insertion].at === start + index) {\n events.push(insertions[insertion++].event);\n }\n events.push(listEvents[index]);\n }\n events[start][1]._spread = listSpread;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['buffer']}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @type {CompileContext['enter']}\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler || undefined]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['exit']}\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n }\n if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @type {CompileContext['resume']}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n // Each node factory pre-declares `position` as undefined as the trailing\n // property. enter() patches it to a real value, but the property already\n // exists, so V8 sees a single hidden class for each node type from\n // construction through the rest of the pipeline. Without the pre-declare,\n // each node took a hidden-class transition when enter() added position.\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: [],\n position: undefined\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: '',\n position: undefined\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: '',\n position: undefined\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: '',\n position: undefined\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: [],\n position: undefined\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: [],\n position: undefined\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break',\n position: undefined\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: '',\n position: undefined\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null,\n position: undefined\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: [],\n position: undefined\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: [],\n position: undefined\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: [],\n position: undefined\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: [],\n position: undefined\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: [],\n position: undefined\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: '',\n position: undefined\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak',\n position: undefined\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'afterExit':\n case 'beforeEnter':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n }\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Blockquote} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {Break} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Code} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n // Someone can write `js python ruby`.\n const language = node.lang ? node.lang.split(/\\s+/) : []\n\n // GH/CM still drop the non-first languages.\n if (language.length > 0) {\n properties.className = ['language-' + language[0]]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Delete} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Emphasis} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {FootnoteReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Heading} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Html} from 'mdast'\n * @import {State} from '../state.js'\n * @import {Raw} from '../../index.js'\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @import {ElementContent} from 'hast'\n * @import {Reference, Nodes} from 'mdast'\n * @import {State} from './state.js'\n */\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Extract} node\n *   Reference node (image, link).\n * @returns {Array}\n *   hast content.\n */\nexport function revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return [{type: 'text', value: '![' + node.alt + suffix}]\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ImageReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Image} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {InlineCode} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {LinkReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(definition.url || '')}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Link} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ListItem, Parents} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: .\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === null || spread === undefined\n    ? node.children.length > 1\n    : spread\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {List} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Paragraph} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Parents as HastParents, Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Strong} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n *   Side.\n * @returns\n *   Getter.\n */\nfunction point(type) {\n  return point\n\n  /**\n   * Get the point info of `node` at a bound side.\n   *\n   * @param {Node | NodeLike | null | undefined} [node]\n   * @returns {Point | undefined}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    if (\n      typeof point.line === 'number' &&\n      point.line > 0 &&\n      typeof point.column === 'number' &&\n      point.column > 0\n    ) {\n      return {\n        line: point.line,\n        column: point.column,\n        offset:\n          typeof point.offset === 'number' && point.offset > -1\n            ? point.offset\n            : undefined\n      }\n    }\n  }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n *   Node.\n * @returns {Position | undefined}\n *   Position.\n */\nexport function position(node) {\n  const start = pointStart(node)\n  const end = pointEnd(node)\n\n  if (start && end) {\n    return {start, end}\n  }\n}\n","/**\n * @import {Table} from 'mdast'\n * @import {Element} from 'hast'\n * @import {State} from '../state.js'\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element, ElementContent, Properties} from 'hast'\n * @import {Parents, TableRow} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {TableCell} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nexport function trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","/**\n * @import {Element as HastElement, Text as HastText} from 'hast'\n * @import {Text as MdastText} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {ThematicBreak} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Handlers} from '../state.js'\n */\n\nimport {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {Handlers}\n */\nexport const handlers = {\n  blockquote,\n  break: hardBreak,\n  code,\n  delete: strikethrough,\n  emphasis,\n  footnoteReference,\n  heading,\n  html,\n  imageReference,\n  image,\n  inlineCode,\n  linkReference,\n  link,\n  listItem,\n  list,\n  paragraph,\n  // @ts-expect-error: root is different, but hard to type.\n  root,\n  strong,\n  table,\n  tableCell,\n  tableRow,\n  text,\n  thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  return undefined\n}\n","/**\n * @import {ElementContent, Element} from 'hast'\n * @import {State} from './state.js'\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n *   Generate content for the backreference dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n *   Content for the backreference when linking back from definitions to their\n *   reference.\n *\n * @callback FootnoteBackLabelTemplate\n *   Generate a back label dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n *   Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n  /** @type {Array} */\n  const result = [{type: 'text', value: '↩'}]\n\n  if (rereferenceIndex > 1) {\n    result.push({\n      type: 'element',\n      tagName: 'sup',\n      properties: {},\n      children: [{type: 'text', value: String(rereferenceIndex)}]\n    })\n  }\n\n  return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n  return (\n    'Back to reference ' +\n    (referenceIndex + 1) +\n    (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n  )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const footnoteBackContent =\n    state.options.footnoteBackContent || defaultFootnoteBackContent\n  const footnoteBackLabel =\n    state.options.footnoteBackLabel || defaultFootnoteBackLabel\n  const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n  const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n  const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  /** @type {Array} */\n  const listItems = []\n  let referenceIndex = -1\n\n  while (++referenceIndex < state.footnoteOrder.length) {\n    const definition = state.footnoteById.get(\n      state.footnoteOrder[referenceIndex]\n    )\n\n    if (!definition) {\n      continue\n    }\n\n    const content = state.all(definition)\n    const id = String(definition.identifier).toUpperCase()\n    const safeId = normalizeUri(id.toLowerCase())\n    let rereferenceIndex = 0\n    /** @type {Array} */\n    const backReferences = []\n    const counts = state.footnoteCounts.get(id)\n\n    // eslint-disable-next-line no-unmodified-loop-condition\n    while (counts !== undefined && ++rereferenceIndex <= counts) {\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      let children =\n        typeof footnoteBackContent === 'string'\n          ? footnoteBackContent\n          : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n      if (typeof children === 'string') {\n        children = {type: 'text', value: children}\n      }\n\n      backReferences.push({\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            clobberPrefix +\n            'fnref-' +\n            safeId +\n            (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n          dataFootnoteBackref: '',\n          ariaLabel:\n            typeof footnoteBackLabel === 'string'\n              ? footnoteBackLabel\n              : footnoteBackLabel(referenceIndex, rereferenceIndex),\n          className: ['data-footnote-backref']\n        },\n        children: Array.isArray(children) ? children : [children]\n      })\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(definition, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: footnoteLabelTagName,\n        properties: {\n          ...structuredClone(footnoteLabelProperties),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n","/**\n * @import {\n *   ElementContent as HastElementContent,\n *   Element as HastElement,\n *   Nodes as HastNodes,\n *   Properties as HastProperties,\n *   RootContent as HastRootContent,\n *   Text as HastText\n * } from 'hast'\n * @import {\n *   Definition as MdastDefinition,\n *   FootnoteDefinition as MdastFootnoteDefinition,\n *   Nodes as MdastNodes,\n *   Parents as MdastParents\n * } from 'mdast'\n * @import {VFile} from 'vfile'\n * @import {\n *   FootnoteBackContentTemplate,\n *   FootnoteBackLabelTemplate\n * } from './footer.js'\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @import {Nodes as HastNodes} from 'hast'\n * @import {Nodes as MdastNodes} from 'mdast'\n * @import {Options} from './state.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given,\n * runs the (rehype) plugins used on it with a hast tree,\n * then discards the result (*bridge mode*)\n * * otherwise,\n * returns a hast tree,\n * the plugins used after `remarkRehype` are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**:\n * > It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc);\n * this is a heavy task as it needs a full HTML parser,\n * but it is the only way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark,\n * which we follow by default.\n * They are supported by GitHub,\n * so footnotes can be enabled in markdown with `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes,\n * which is hidden for sighted users but shown to assistive technology.\n * When your page is not in English,\n * you must define translated values.\n *\n * Back references use ARIA attributes,\n * but the section label itself uses a heading that is hidden with an\n * `sr-only` class.\n * To show it to sighted users,\n * define different attributes in `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem,\n * as it links footnote calls to footnote definitions on the page through `id`\n * attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value`\n * (and doesn’t have `data.hName`, `data.hProperties`, or `data.hChildren`,\n * see later),\n * create a hast `text` node\n * * otherwise,\n * create a `
` element (which could be changed with `data.hName`),\n * with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @overload\n * @param {Readonly | Processor | null | undefined} [destination]\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge | TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given,\n * configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n // To do: in the future, disallow ` || options` fallback.\n // With `unified-engine`, `destination` can be `undefined` but\n // `options` will be the file set.\n // We should not pass that as `options`.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(destination || options)})\n )\n }\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n */\n\nimport {visit} from 'unist-util-visit'\n\n/**\n * Remove empty paragraphs in `tree`.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @returns {undefined}\n * Nothing.\n */\nexport function squeezeParagraphs(tree) {\n visit(tree, function (node, index, parent) {\n if (\n index !== undefined &&\n parent &&\n node.type === 'paragraph' &&\n node.children.every(function (child) {\n return child.type === 'text' && /^\\s*$/.test(child.value)\n })\n ) {\n parent.children.splice(index, 1)\n return index\n }\n })\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: MIT\n */\n\n/**\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Root} Root\n */\n\nimport {squeezeParagraphs} from 'mdast-squeeze-paragraphs'\nimport {visit} from 'unist-util-visit'\n\n/**\n * Only keep links with the given protocols.\n *\n * @param {object} options Options\n * @param {string[]} options.except - Protocols to exclude. Defauls to `['http', 'https']`.\n * @returns\n * Transform.\n */\nexport default function remarkUnlinkProtocols(\n options = {except: ['http', 'https']}\n) {\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n /** @type {Map} */\n const definitions = new Map()\n\n // Find definitions to look up linkReferences.\n visit(tree, 'definition', function (node, index, parent) {\n definitions.set(node.identifier, node.url)\n if (parent && typeof index === 'number') {\n const url = node.url\n if (\n url &&\n url.includes(':') &&\n !options.except.some((proto) => url.startsWith(`${proto}:`))\n ) {\n parent.children.splice(index, 1)\n return index\n }\n }\n })\n\n visit(tree, function (node, index, parent) {\n if (\n parent &&\n typeof index === 'number' &&\n (node.type === 'link' || node.type === 'linkReference')\n ) {\n const url =\n node.type === 'link' ? node.url : definitions.get(node.identifier)\n if (\n url &&\n url.includes(':') &&\n !options.except.some((proto) => url.startsWith(`${proto}:`))\n ) {\n parent.children.splice(index, 1, ...node.children)\n return index\n }\n }\n })\n\n squeezeParagraphs(tree)\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file = ''\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual = undefined\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array | undefined}\n */\n this.expected = undefined\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note = undefined\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url = undefined\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [extname]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, extname) {\n if (extname !== undefined && typeof extname !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (\n extname === undefined ||\n extname.length === 0 ||\n extname.length > path.length\n ) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (extname === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extnameIndex = extname.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extnameIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n if (extnameIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extnameIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const minproc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const value = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return value.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n // Not needed for us in `unified`: we only call this on the `copy`\n // function,\n // and we don't need to add its fields (`length`, `name`)\n // over.\n // See also: GH-246.\n // const names = Object.getOwnPropertyNames(value)\n //\n // for (const p of names) {\n // const descriptor = Object.getOwnPropertyDescriptor(value, p)\n // if (descriptor) Object.defineProperty(apply, p, descriptor)\n // }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@linkcode Node}\n * and {@linkcode VFile} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@linkcode VFile} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@linkcode Node}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@linkcode Processor}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > **Note**: to register custom data in TypeScript, augment the\n * > {@linkcode Data} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n/**\n * @module public\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check if the current page is on a public share\n */\nexport function isPublicShare() {\n // check both the new initial state version and fallback to legacy input\n return (loadState('files_sharing', 'isPublic', null)\n ?? document.querySelector('input#isPublic[type=\"hidden\"][name=\"isPublic\"][value=\"1\"]') !== null);\n}\n/**\n * Get the sharing token for the current public share\n */\nexport function getSharingToken() {\n return (loadState('files_sharing', 'sharingToken', null)\n ?? document.querySelector('input#sharingToken[type=\"hidden\"]')?.value\n ?? null);\n}\n","import { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nwindow._vue_richtext_widgets ??= {};\nwindow._registerWidget ??= (id, callback, onDestroy, props) => {\n registerWidget(id, callback, onDestroy, props);\n};\nfunction registerWidget(id, callback, onDestroy = () => {\n}, props) {\n const propsWithDefaults = {\n hasInteractiveView: true,\n fullWidth: false,\n isResizable: false,\n ...props\n };\n if (window._vue_richtext_widgets[id]) {\n logger.error(`[ReferencePicker]: Widget for id ${id} already registered`);\n return;\n }\n window._vue_richtext_widgets[id] = {\n id,\n callback,\n onDestroy,\n ...propsWithDefaults\n };\n}\nfunction renderWidget(el, options) {\n const { richObjectType, richObject, accessible, interactive } = options;\n if (richObjectType === \"open-graph\") {\n return;\n }\n if (!window._vue_richtext_widgets[richObjectType]) {\n logger.error(\"Widget for rich object type \" + richObjectType + \" not registered\");\n return;\n }\n window._vue_richtext_widgets[richObjectType].callback(el, { richObjectType, richObject, accessible, interactive });\n}\nfunction destroyWidget(richObjectType, el) {\n if (richObjectType === \"open-graph\") {\n return;\n }\n if (!window._vue_richtext_widgets[richObjectType]) {\n return;\n }\n window._vue_richtext_widgets[richObjectType].onDestroy(el);\n}\nfunction isWidgetRegistered(id) {\n return !!window._vue_richtext_widgets[id];\n}\nfunction hasInteractiveView(id) {\n return !!window._vue_richtext_widgets[id]?.hasInteractiveView;\n}\nfunction hasFullWidth(id) {\n return !!window._vue_richtext_widgets[id]?.fullWidth;\n}\nfunction isResizable(id) {\n return !!window._vue_richtext_widgets[id]?.isResizable;\n}\nexport {\n renderWidget as a,\n isResizable as b,\n hasFullWidth as c,\n destroyWidget as d,\n hasInteractiveView as h,\n isWidgetRegistered as i,\n registerWidget as r\n};\n//# sourceMappingURL=widgets-XxirL-2f.mjs.map\n","import '../assets/NcReferenceWidget-ZOKRsrMS.css';\nimport { useElementSize, useIntersectionObserver } from \"@vueuse/core\";\nimport { ref, nextTick } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { r as register, l as t24, a as t } from \"./_l10n-Dv1YKfKS.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { d as destroyWidget, a as renderWidget, i as isWidgetRegistered, h as hasInteractiveView, b as isResizable, c as hasFullWidth } from \"./widgets-XxirL-2f.mjs\";\nimport { g as getRoute } from \"./autolink-BoBR7PZC.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t24);\nconst IDLE_TIMEOUT = 3 * 60 * 1e3;\nconst RESIZE_KEYBOARD_STEP = 10;\nconst _sfc_main = {\n name: \"NcReferenceWidget\",\n components: {\n NcButton\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n reference: {\n type: Object,\n required: true\n },\n interactive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n interactiveOptIn: {\n type: Boolean,\n default: false\n }\n },\n setup() {\n const widgetId = `nc-reference-widget-${createElementId()}`;\n const isVisible = ref(false);\n const widgetRoot = ref();\n const customWidget = ref();\n const { width } = useElementSize(widgetRoot);\n const { height: customWidgetHeight } = useElementSize(customWidget);\n useIntersectionObserver(widgetRoot, ([entry]) => {\n nextTick(() => {\n isVisible.value = entry.isIntersecting;\n });\n });\n return {\n width,\n isVisible,\n widgetRoot,\n customWidget,\n customWidgetHeight,\n widgetId,\n RESIZE_KEYBOARD_STEP\n };\n },\n data() {\n return {\n showInteractive: false,\n rendered: false,\n idleTimeout: null,\n isResizing: false,\n resizedHeight: null,\n resizeStartY: 0,\n resizeStartHeight: 0,\n resizeMinHeight: 100,\n resizeMaxHeight: window.innerHeight - 120\n };\n },\n computed: {\n isInteractive() {\n return !this.interactiveOptIn && this.interactive || this.showInteractive;\n },\n hasFullWidth() {\n return hasFullWidth(this.reference.richObjectType);\n },\n isResizable() {\n return isResizable(this.reference.richObjectType);\n },\n hasCustomWidget() {\n return isWidgetRegistered(this.reference.richObjectType);\n },\n customWidgetStyle() {\n if (!this.resizedHeight) {\n return null;\n }\n return { height: `${this.resizedHeight}px !important` };\n },\n ariaValueNow() {\n return Math.round(this.resizedHeight ?? this.customWidgetHeight);\n },\n hasInteractiveView() {\n return isWidgetRegistered(this.reference.richObjectType) && hasInteractiveView(this.reference.richObjectType);\n },\n noAccess() {\n return this.reference && !this.reference.accessible;\n },\n descriptionStyle() {\n if (this.numberOfLines === 0) {\n return {\n display: \"none\"\n };\n }\n const lineClamp = this.numberOfLines;\n return {\n lineClamp,\n webkitLineClamp: lineClamp\n };\n },\n numberOfLines() {\n const lineCountOffsets = [250, 550, 650, Infinity];\n return lineCountOffsets.findIndex((max) => this.width < max);\n },\n compactLink() {\n const link = this.reference.openGraphObject.link;\n if (!link) {\n return \"\";\n }\n if (link.startsWith(\"https://\")) {\n return link.substring(8);\n }\n if (link.startsWith(\"http://\")) {\n return link.substring(7);\n }\n return link;\n },\n route() {\n return getRoute(this.$router, this.reference.openGraphObject.link);\n },\n referenceWidgetLinkComponent() {\n return this.route ? RouterLink : \"a\";\n },\n referenceWidgetLinkProps() {\n return this.route ? { to: this.route } : { href: this.reference.openGraphObject.link, target: \"_blank\" };\n }\n },\n watch: {\n isVisible: {\n handler(val) {\n if (!val) {\n this.idleTimeout = setTimeout(() => {\n if (!this.isVisible) {\n this.destroyWidget();\n }\n }, IDLE_TIMEOUT);\n return;\n }\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = null;\n }\n if (!this.rendered) {\n this.renderWidget();\n }\n },\n immediate: true\n }\n },\n beforeDestroy() {\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimout = null;\n }\n this.stopResize();\n this.destroyWidget();\n },\n methods: {\n t,\n enableInteractive() {\n this.showInteractive = true;\n this.renderWidget();\n },\n renderWidget() {\n if (!this.$refs.customWidgetContent) {\n return;\n }\n if (this?.reference?.richObjectType === \"open-graph\") {\n return;\n }\n this.$refs.customWidgetContent.innerHTML = \"\";\n const widget = document.createElement(\"div\");\n widget.style = \"width: 100%;\";\n this.$refs.customWidgetContent.appendChild(widget);\n this.$nextTick(() => {\n renderWidget(widget, {\n ...this.reference,\n interactive: this.isInteractive\n });\n this.rendered = true;\n });\n },\n destroyWidget() {\n if (this.rendered) {\n destroyWidget(this.reference.richObjectType, this.$el);\n this.rendered = false;\n }\n },\n initResizeLimits() {\n const widgetEl = this.$refs.customWidgetContent?.firstElementChild;\n if (widgetEl) {\n const computedStyle = window.getComputedStyle(widgetEl);\n const parsedMin = parseFloat(computedStyle.minHeight);\n const parsedMax = parseFloat(computedStyle.maxHeight);\n this.resizeMinHeight = parsedMin > 0 ? parsedMin : 100;\n this.resizeMaxHeight = Number.isFinite(parsedMax) && parsedMax > 0 ? parsedMax : window.innerHeight - 120;\n } else {\n this.resizeMinHeight = 100;\n this.resizeMaxHeight = window.innerHeight - 120;\n }\n },\n startResize(event) {\n if (!this.isResizable || !this.$refs.customWidget) {\n return;\n }\n this.initResizeLimits();\n this.isResizing = true;\n this.resizeStartY = event.clientY;\n this.resizeStartHeight = this.$refs.customWidget.getBoundingClientRect().height;\n window.addEventListener(\"pointermove\", this.onResize);\n window.addEventListener(\"pointerup\", this.stopResize);\n },\n onResizeKeydown(delta) {\n if (!this.isResizable || !this.$refs.customWidget) {\n return;\n }\n this.initResizeLimits();\n const currentHeight = this.resizedHeight ?? this.resizeStartHeight;\n const next = currentHeight + delta;\n this.resizedHeight = Math.min(this.resizeMaxHeight, Math.max(this.resizeMinHeight, next));\n },\n onResize(event) {\n if (!this.isResizing || !this.$refs.customWidget) {\n return;\n }\n const deltaY = event.clientY - this.resizeStartY;\n this.resizedHeight = Math.min(this.resizeMaxHeight, Math.max(this.resizeMinHeight, this.resizeStartHeight + deltaY));\n },\n stopResize() {\n if (!this.isResizing) {\n return;\n }\n this.isResizing = false;\n window.removeEventListener(\"pointermove\", this.onResize);\n window.removeEventListener(\"pointerup\", this.stopResize);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { ref: \"widgetRoot\", class: { \"toggle-interactive\": _vm.hasInteractiveView && !_vm.isInteractive } }, [_vm.reference && _vm.hasCustomWidget ? _c(\"div\", { ref: \"customWidget\", staticClass: \"widget-custom\", class: {\n \"full-width\": _vm.hasFullWidth\n }, style: _vm.customWidgetStyle, attrs: { \"id\": _vm.widgetId } }, [_c(\"div\", { ref: \"customWidgetContent\", staticClass: \"widget-custom__content\" }), _vm.isResizable ? _c(\"div\", { staticClass: \"widget-custom__resize-handle\", attrs: { \"role\": \"slider\", \"tabindex\": \"0\", \"aria-orientation\": \"vertical\", \"aria-label\": _vm.t(\"Widget height\"), \"aria-valuenow\": _vm.ariaValueNow, \"aria-valuemin\": _vm.resizeMinHeight, \"aria-valuemax\": _vm.resizeMaxHeight, \"aria-controls\": _vm.widgetId }, on: { \"pointerdown\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.startResize.apply(null, arguments);\n }, \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onResizeKeydown(-_vm.RESIZE_KEYBOARD_STEP);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"down\", 40, $event.key, [\"Down\", \"ArrowDown\"])) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onResizeKeydown(_vm.RESIZE_KEYBOARD_STEP);\n }] } }) : _vm._e()]) : !_vm.noAccess && _vm.reference && _vm.reference.openGraphObject && !_vm.hasCustomWidget ? _c(_vm.referenceWidgetLinkComponent, _vm._b({ tag: \"component\", staticClass: \"widget-default\", attrs: { \"rel\": \"noopener noreferrer\" } }, \"component\", _vm.referenceWidgetLinkProps, false), [_vm.reference.openGraphObject.thumb ? _c(\"img\", { staticClass: \"widget-default--image\", attrs: { \"src\": _vm.reference.openGraphObject.thumb } }) : _vm._e(), _c(\"div\", { staticClass: \"widget-default--details\" }, [_c(\"p\", { staticClass: \"widget-default--name\" }, [_vm._v(\" \" + _vm._s(_vm.reference.openGraphObject.name) + \" \")]), _c(\"p\", { staticClass: \"widget-default--description\", style: _vm.descriptionStyle }, [_vm._v(\" \" + _vm._s(_vm.reference.openGraphObject.description) + \" \")]), _c(\"p\", { staticClass: \"widget-default--link\" }, [_vm._v(\" \" + _vm._s(_vm.compactLink) + \" \")])])]) : _vm._e(), _vm.interactiveOptIn && _vm.hasInteractiveView && !_vm.isInteractive ? _c(\"NcButton\", { staticClass: \"toggle-interactive--button\", on: { \"click\": _vm.enableInteractive } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Enable interactive view\")) + \" \")]) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"dc80bc03\"\n);\nconst NcReferenceWidget = __component__.exports;\nexport {\n NcReferenceWidget as N\n};\n//# sourceMappingURL=NcReferenceWidget-C0US5iQ0.mjs.map\n","import '../assets/NcRichText-D0xtzoWq.css';\nimport { toString } from \"mdast-util-to-string\";\nimport rehypeExternalLinks from \"rehype-external-links\";\nimport rehype2react from \"rehype-react\";\nimport breaks from \"remark-breaks\";\nimport remarkParse from \"remark-parse\";\nimport remark2rehype from \"remark-rehype\";\nimport remarkUnlinkProtocols from \"remark-unlink-protocols\";\nimport { unified } from \"unified\";\nimport { defineComponent, ref } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { N as NcCheckboxRadioSwitch } from \"./NcCheckboxRadioSwitch-flYu6ojL.mjs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { getSharingToken } from \"@nextcloud/sharing/public\";\nimport { N as NcReferenceWidget } from \"./NcReferenceWidget-C0US5iQ0.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { U as URL_PATTERN, p as parseUrl, r as remarkAutolink, g as getRoute, N as NcRichTextExternalLink } from \"./autolink-BoBR7PZC.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { u as useCopy } from \"./useCopy-B3ugZOgV.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { u } from \"unist-builder\";\nimport { visitParents, EXIT, SKIP } from \"unist-util-visit-parents\";\nconst _sfc_main$2 = {\n name: \"NcReferenceList\",\n components: {\n NcReferenceWidget\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n text: {\n type: String,\n default: \"\"\n },\n referenceData: {\n type: Array,\n default: null\n },\n limit: {\n type: Number,\n default: 1\n },\n displayFallback: {\n type: Boolean,\n default: false\n },\n interactive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n interactiveOptIn: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n references: null,\n loading: true\n };\n },\n computed: {\n isVisible() {\n return this.loading || this.displayedReferences.length !== 0;\n },\n values() {\n if (this.referenceData) {\n return this.referenceData;\n }\n if (this.displayFallback && !this.loading && !this.references) {\n return [this.fallbackReference];\n }\n return this.references ? Object.values(this.references) : [];\n },\n firstReference() {\n return this.values[0] ?? null;\n },\n displayedReferences() {\n return this.values.filter(Boolean).slice(0, this.limit);\n },\n fallbackReference() {\n return {\n accessible: true,\n openGraphObject: {\n id: this.text,\n link: this.text,\n name: this.text\n },\n richObjectType: \"open-graph\"\n };\n }\n },\n watch: {\n text: \"fetch\"\n },\n mounted() {\n this.fetch();\n },\n methods: {\n fetch() {\n this.loading = true;\n if (this.referenceData) {\n this.references = null;\n this.loading = false;\n return;\n }\n if (!new RegExp(URL_PATTERN).exec(this.text)) {\n this.references = null;\n this.loading = false;\n return;\n }\n this.resolve().then((response) => {\n this.references = response.data.ocs.data.references;\n this.loading = false;\n this.$emit(\"loaded\");\n }).catch((error) => {\n logger.error(\"Failed to extract references\", { error });\n this.loading = false;\n this.$emit(\"loaded\");\n });\n },\n resolve() {\n const match = new RegExp(URL_PATTERN).exec(this.text.trim());\n const isPublic = getCurrentUser() === null;\n if (this.limit === 1 && match) {\n return isPublic ? axios.get(generateOcsUrl(\"references/resolvePublic\") + `?reference=${encodeURIComponent(match[0])}&sharingToken=${getSharingToken()}`) : axios.get(generateOcsUrl(\"references/resolve\") + `?reference=${encodeURIComponent(match[0])}`);\n }\n return isPublic ? axios.post(generateOcsUrl(\"references/extractPublic\"), {\n text: this.text,\n resolve: true,\n limit: this.limit,\n sharingToken: getSharingToken()\n }) : axios.post(generateOcsUrl(\"references/extract\"), {\n text: this.text,\n resolve: true,\n limit: this.limit\n });\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _vm.isVisible ? _c(\"div\", { staticClass: \"widgets--list\", class: { \"icon-loading\": _vm.loading } }, _vm._l(_vm.displayedReferences, function(reference) {\n return _c(\"NcReferenceWidget\", { key: reference.openGraphObject?.id, attrs: { \"reference\": reference, \"interactive\": _vm.interactive, \"interactive-opt-in\": _vm.interactiveOptIn } });\n }), 1) : _vm._e();\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n \"a50e616b\"\n);\nconst NcReferenceList = __component__$2.exports;\nfunction ccount(value, character) {\n const source = String(value);\n if (typeof character !== \"string\") {\n throw new TypeError(\"Expected character\");\n }\n let count = 0;\n let index = source.indexOf(character);\n while (index !== -1) {\n count++;\n index = source.indexOf(character, index + character.length);\n }\n return count;\n}\nfunction ok$1() {\n}\nconst asciiAlpha = regexCheck(/[A-Za-z]/);\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\nfunction asciiControl(code2) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code2 !== null && (code2 < 32 || code2 === 127)\n );\n}\nfunction markdownLineEnding(code2) {\n return code2 !== null && code2 < -2;\n}\nfunction markdownLineEndingOrSpace(code2) {\n return code2 !== null && (code2 < 0 || code2 === 32);\n}\nfunction markdownSpace(code2) {\n return code2 === -2 || code2 === -1 || code2 === 32;\n}\nconst unicodePunctuation = regexCheck(new RegExp(\"\\\\p{P}|\\\\p{S}\", \"u\"));\nconst unicodeWhitespace = regexCheck(/\\s/);\nfunction regexCheck(regex) {\n return check;\n function check(code2) {\n return code2 !== null && code2 > -1 && regex.test(String.fromCharCode(code2));\n }\n}\nfunction escapeStringRegexp(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(\"Expected a string\");\n }\n return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\n}\nconst convert = (\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n (function(test) {\n if (test === null || test === void 0) {\n return ok;\n }\n if (typeof test === \"function\") {\n return castFactory(test);\n }\n if (typeof test === \"object\") {\n return Array.isArray(test) ? anyFactory(test) : (\n // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(\n /** @type {Props} */\n test\n )\n );\n }\n if (typeof test === \"string\") {\n return typeFactory(test);\n }\n throw new Error(\"Expected function, string, or object as test\");\n })\n);\nfunction anyFactory(tests) {\n const checks = [];\n let index = -1;\n while (++index < tests.length) {\n checks[index] = convert(tests[index]);\n }\n return castFactory(any);\n function any(...parameters) {\n let index2 = -1;\n while (++index2 < checks.length) {\n if (checks[index2].apply(this, parameters)) return true;\n }\n return false;\n }\n}\nfunction propertiesFactory(check) {\n const checkAsRecord = (\n /** @type {Record} */\n check\n );\n return castFactory(all);\n function all(node) {\n const nodeAsRecord = (\n /** @type {Record} */\n /** @type {unknown} */\n node\n );\n let key;\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false;\n }\n return true;\n }\n}\nfunction typeFactory(check) {\n return castFactory(type);\n function type(node) {\n return node && node.type === check;\n }\n}\nfunction castFactory(testFunction) {\n return check;\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) && testFunction.call(\n this,\n value,\n typeof index === \"number\" ? index : void 0,\n parent || void 0\n )\n );\n }\n}\nfunction ok() {\n return true;\n}\nfunction looksLikeANode(value) {\n return value !== null && typeof value === \"object\" && \"type\" in value;\n}\nfunction findAndReplace(tree, list2, options) {\n const settings = options || {};\n const ignored = convert(settings.ignore || []);\n const pairs = toPairs(list2);\n let pairIndex = -1;\n while (++pairIndex < pairs.length) {\n visitParents(tree, \"text\", visitor);\n }\n function visitor(node, parents) {\n let index = -1;\n let grandparent;\n while (++index < parents.length) {\n const parent = parents[index];\n const siblings = grandparent ? grandparent.children : void 0;\n if (ignored(\n parent,\n siblings ? siblings.indexOf(parent) : void 0,\n grandparent\n )) {\n return;\n }\n grandparent = parent;\n }\n if (grandparent) {\n return handler(node, parents);\n }\n }\n function handler(node, parents) {\n const parent = parents[parents.length - 1];\n const find = pairs[pairIndex][0];\n const replace2 = pairs[pairIndex][1];\n let start = 0;\n const siblings = parent.children;\n const index = siblings.indexOf(node);\n let change = false;\n let nodes = [];\n find.lastIndex = 0;\n let match = find.exec(node.value);\n while (match) {\n const position = match.index;\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n };\n let value = replace2(...match, matchObject);\n if (typeof value === \"string\") {\n value = value.length > 0 ? { type: \"text\", value } : void 0;\n }\n if (value === false) {\n find.lastIndex = position + 1;\n } else {\n if (start !== position) {\n nodes.push({\n type: \"text\",\n value: node.value.slice(start, position)\n });\n }\n if (Array.isArray(value)) {\n nodes.push(...value);\n } else if (value) {\n nodes.push(value);\n }\n start = position + match[0].length;\n change = true;\n }\n if (!find.global) {\n break;\n }\n match = find.exec(node.value);\n }\n if (change) {\n if (start < node.value.length) {\n nodes.push({ type: \"text\", value: node.value.slice(start) });\n }\n parent.children.splice(index, 1, ...nodes);\n } else {\n nodes = [node];\n }\n return index + nodes.length;\n }\n}\nfunction toPairs(tupleOrList) {\n const result = [];\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError(\"Expected find and replace tuple or list of tuples\");\n }\n const list2 = !tupleOrList[0] || Array.isArray(tupleOrList[0]) ? tupleOrList : [tupleOrList];\n let index = -1;\n while (++index < list2.length) {\n const tuple = list2[index];\n result.push([toExpression(tuple[0]), toFunction(tuple[1])]);\n }\n return result;\n}\nfunction toExpression(find) {\n return typeof find === \"string\" ? new RegExp(escapeStringRegexp(find), \"g\") : find;\n}\nfunction toFunction(replace2) {\n return typeof replace2 === \"function\" ? replace2 : function() {\n return replace2;\n };\n}\nconst inConstruct = \"phrasing\";\nconst notInConstruct = [\"autolink\", \"link\", \"image\", \"label\"];\nfunction gfmAutolinkLiteralFromMarkdown() {\n return {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n };\n}\nfunction gfmAutolinkLiteralToMarkdown() {\n return {\n unsafe: [\n {\n character: \"@\",\n before: \"[+\\\\-.\\\\w]\",\n after: \"[\\\\-.\\\\w]\",\n inConstruct,\n notInConstruct\n },\n {\n character: \".\",\n before: \"[Ww]\",\n after: \"[\\\\-.\\\\w]\",\n inConstruct,\n notInConstruct\n },\n {\n character: \":\",\n before: \"[ps]\",\n after: \"\\\\/\",\n inConstruct,\n notInConstruct\n }\n ]\n };\n}\nfunction enterLiteralAutolink(token) {\n this.enter({ type: \"link\", title: null, url: \"\", children: [] }, token);\n}\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token);\n}\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token);\n}\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token);\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"link\");\n node.url = \"http://\" + this.sliceSerialize(token);\n}\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token);\n}\nfunction exitLiteralAutolink(token) {\n this.exit(token);\n}\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n { ignore: [\"link\", \"linkReference\"] }\n );\n}\nfunction findUrl(_, protocol, domain2, path2, match) {\n let prefix = \"\";\n if (!previous(match)) {\n return false;\n }\n if (/^w/i.test(protocol)) {\n domain2 = protocol + domain2;\n protocol = \"\";\n prefix = \"http://\";\n }\n if (!isCorrectDomain(domain2)) {\n return false;\n }\n const parts = splitUrl(domain2 + path2);\n if (!parts[0]) return false;\n const result = {\n type: \"link\",\n title: null,\n url: prefix + protocol + parts[0],\n children: [{ type: \"text\", value: protocol + parts[0] }]\n };\n if (parts[1]) {\n return [result, { type: \"text\", value: parts[1] }];\n }\n return result;\n}\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) || // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false;\n }\n return {\n type: \"link\",\n title: null,\n url: \"mailto:\" + atext + \"@\" + label,\n children: [{ type: \"text\", value: atext + \"@\" + label }]\n };\n}\nfunction isCorrectDomain(domain2) {\n const parts = domain2.split(\".\");\n if (parts.length < 2 || parts[parts.length - 1] && (/_/.test(parts[parts.length - 1]) || !/[a-zA-Z\\d]/.test(parts[parts.length - 1])) || parts[parts.length - 2] && (/_/.test(parts[parts.length - 2]) || !/[a-zA-Z\\d]/.test(parts[parts.length - 2]))) {\n return false;\n }\n return true;\n}\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url);\n if (!trailExec) {\n return [url, void 0];\n }\n url = url.slice(0, trailExec.index);\n let trail2 = trailExec[0];\n let closingParenIndex = trail2.indexOf(\")\");\n const openingParens = ccount(url, \"(\");\n let closingParens = ccount(url, \")\");\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail2.slice(0, closingParenIndex + 1);\n trail2 = trail2.slice(closingParenIndex + 1);\n closingParenIndex = trail2.indexOf(\")\");\n closingParens++;\n }\n return [url, trail2];\n}\nfunction previous(match, email) {\n const code2 = match.input.charCodeAt(match.index - 1);\n return (match.index === 0 || unicodeWhitespace(code2) || unicodePunctuation(code2)) && (!email || code2 !== 47);\n}\nfunction normalizeIdentifier(value) {\n return value.replace(/[\\t\\n\\r ]+/g, \" \").replace(/^ | $/g, \"\").toLowerCase().toUpperCase();\n}\nfootnoteReference.peek = footnoteReferencePeek;\nfunction gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n };\n}\nfunction gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{ character: \"[\", inConstruct: [\"phrasing\", \"label\", \"reference\"] }],\n handlers: { footnoteDefinition, footnoteReference }\n };\n}\nfunction enterFootnoteDefinition(token) {\n this.enter(\n { type: \"footnoteDefinition\", identifier: \"\", label: \"\", children: [] },\n token\n );\n}\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer();\n}\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"footnoteDefinition\");\n node.label = label;\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase();\n}\nfunction exitFootnoteDefinition(token) {\n this.exit(token);\n}\nfunction enterFootnoteCall(token) {\n this.enter({ type: \"footnoteReference\", identifier: \"\", label: \"\" }, token);\n}\nfunction enterFootnoteCallString() {\n this.buffer();\n}\nfunction exitFootnoteCallString(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"footnoteReference\");\n node.label = label;\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase();\n}\nfunction exitFootnoteCall(token) {\n this.exit(token);\n}\nfunction footnoteReference(node, _, state, info) {\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[^\");\n const exit2 = state.enter(\"footnoteReference\");\n const subexit = state.enter(\"reference\");\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: \"]\"\n })\n );\n subexit();\n exit2();\n value += tracker.move(\"]\");\n return value;\n}\nfunction footnoteReferencePeek() {\n return \"[\";\n}\nfunction footnoteDefinition(node, _, state, info) {\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[^\");\n const exit2 = state.enter(\"footnoteDefinition\");\n const subexit = state.enter(\"label\");\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: \"]\"\n })\n );\n subexit();\n value += tracker.move(\n \"]:\" + (node.children && node.children.length > 0 ? \" \" : \"\")\n );\n tracker.shift(4);\n value += tracker.move(\n state.indentLines(state.containerFlow(node, tracker.current()), map$2)\n );\n exit2();\n return value;\n}\nfunction map$2(line, index, blank) {\n if (index === 0) {\n return line;\n }\n return (blank ? \"\" : \" \") + line;\n}\nconst constructsWithoutStrikethrough = [\n \"autolink\",\n \"destinationLiteral\",\n \"destinationRaw\",\n \"reference\",\n \"titleQuote\",\n \"titleApostrophe\"\n];\nhandleDelete.peek = peekDelete;\nfunction gfmStrikethroughFromMarkdown() {\n return {\n canContainEols: [\"delete\"],\n enter: { strikethrough: enterStrikethrough },\n exit: { strikethrough: exitStrikethrough }\n };\n}\nfunction gfmStrikethroughToMarkdown() {\n return {\n unsafe: [\n {\n character: \"~\",\n inConstruct: \"phrasing\",\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: { delete: handleDelete }\n };\n}\nfunction enterStrikethrough(token) {\n this.enter({ type: \"delete\", children: [] }, token);\n}\nfunction exitStrikethrough(token) {\n this.exit(token);\n}\nfunction handleDelete(node, _, state, info) {\n const tracker = state.createTracker(info);\n const exit2 = state.enter(\"strikethrough\");\n let value = tracker.move(\"~~\");\n value += state.containerPhrasing(node, {\n ...tracker.current(),\n before: value,\n after: \"~\"\n });\n value += tracker.move(\"~~\");\n exit2();\n return value;\n}\nfunction peekDelete() {\n return \"~\";\n}\nfunction markdownTable(table, options = {}) {\n const align = (options.align || []).concat();\n const stringLength = options.stringLength || defaultStringLength;\n const alignments = [];\n const cellMatrix = [];\n const sizeMatrix = [];\n const longestCellByColumn = [];\n let mostCellsPerRow = 0;\n let rowIndex = -1;\n while (++rowIndex < table.length) {\n const row2 = [];\n const sizes2 = [];\n let columnIndex2 = -1;\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length;\n }\n while (++columnIndex2 < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex2]);\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell);\n sizes2[columnIndex2] = size;\n if (longestCellByColumn[columnIndex2] === void 0 || size > longestCellByColumn[columnIndex2]) {\n longestCellByColumn[columnIndex2] = size;\n }\n }\n row2.push(cell);\n }\n cellMatrix[rowIndex] = row2;\n sizeMatrix[rowIndex] = sizes2;\n }\n let columnIndex = -1;\n if (typeof align === \"object\" && \"length\" in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex]);\n }\n } else {\n const code2 = toAlignment(align);\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code2;\n }\n }\n columnIndex = -1;\n const row = [];\n const sizes = [];\n while (++columnIndex < mostCellsPerRow) {\n const code2 = alignments[columnIndex];\n let before = \"\";\n let after = \"\";\n if (code2 === 99) {\n before = \":\";\n after = \":\";\n } else if (code2 === 108) {\n before = \":\";\n } else if (code2 === 114) {\n after = \":\";\n }\n let size = options.alignDelimiters === false ? 1 : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n );\n const cell = before + \"-\".repeat(size) + after;\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length;\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size;\n }\n sizes[columnIndex] = size;\n }\n row[columnIndex] = cell;\n }\n cellMatrix.splice(1, 0, row);\n sizeMatrix.splice(1, 0, sizes);\n rowIndex = -1;\n const lines = [];\n while (++rowIndex < cellMatrix.length) {\n const row2 = cellMatrix[rowIndex];\n const sizes2 = sizeMatrix[rowIndex];\n columnIndex = -1;\n const line = [];\n while (++columnIndex < mostCellsPerRow) {\n const cell = row2[columnIndex] || \"\";\n let before = \"\";\n let after = \"\";\n if (options.alignDelimiters !== false) {\n const size = longestCellByColumn[columnIndex] - (sizes2[columnIndex] || 0);\n const code2 = alignments[columnIndex];\n if (code2 === 114) {\n before = \" \".repeat(size);\n } else if (code2 === 99) {\n if (size % 2) {\n before = \" \".repeat(size / 2 + 0.5);\n after = \" \".repeat(size / 2 - 0.5);\n } else {\n before = \" \".repeat(size / 2);\n after = before;\n }\n } else {\n after = \" \".repeat(size);\n }\n }\n if (options.delimiterStart !== false && !columnIndex) {\n line.push(\"|\");\n }\n if (options.padding !== false && // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === \"\") && (options.delimiterStart !== false || columnIndex)) {\n line.push(\" \");\n }\n if (options.alignDelimiters !== false) {\n line.push(before);\n }\n line.push(cell);\n if (options.alignDelimiters !== false) {\n line.push(after);\n }\n if (options.padding !== false) {\n line.push(\" \");\n }\n if (options.delimiterEnd !== false || columnIndex !== mostCellsPerRow - 1) {\n line.push(\"|\");\n }\n }\n lines.push(\n options.delimiterEnd === false ? line.join(\"\").replace(/ +$/, \"\") : line.join(\"\")\n );\n }\n return lines.join(\"\\n\");\n}\nfunction serialize(value) {\n return value === null || value === void 0 ? \"\" : String(value);\n}\nfunction defaultStringLength(value) {\n return value.length;\n}\nfunction toAlignment(value) {\n const code2 = typeof value === \"string\" ? value.codePointAt(0) : 0;\n return code2 === 67 || code2 === 99 ? 99 : code2 === 76 || code2 === 108 ? 108 : code2 === 82 || code2 === 114 ? 114 : 0;\n}\nfunction blockquote(node, _, state, info) {\n const exit2 = state.enter(\"blockquote\");\n const tracker = state.createTracker(info);\n tracker.move(\"> \");\n tracker.shift(2);\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map$1\n );\n exit2();\n return value;\n}\nfunction map$1(line, _, blank) {\n return \">\" + (blank ? \"\" : \" \") + line;\n}\nfunction patternInScope(stack, pattern) {\n return listInScope(stack, pattern.inConstruct, true) && !listInScope(stack, pattern.notInConstruct, false);\n}\nfunction listInScope(stack, list2, none) {\n if (typeof list2 === \"string\") {\n list2 = [list2];\n }\n if (!list2 || list2.length === 0) {\n return none;\n }\n let index = -1;\n while (++index < list2.length) {\n if (stack.includes(list2[index])) {\n return true;\n }\n }\n return false;\n}\nfunction hardBreak(_, _1, state, info) {\n let index = -1;\n while (++index < state.unsafe.length) {\n if (state.unsafe[index].character === \"\\n\" && patternInScope(state.stack, state.unsafe[index])) {\n return /[ \\t]/.test(info.before) ? \"\" : \" \";\n }\n }\n return \"\\\\\\n\";\n}\nfunction longestStreak(value, substring) {\n const source = String(value);\n let index = source.indexOf(substring);\n let expected = index;\n let count = 0;\n let max = 0;\n if (typeof substring !== \"string\") {\n throw new TypeError(\"Expected substring\");\n }\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count;\n }\n } else {\n count = 1;\n }\n expected = index + substring.length;\n index = source.indexOf(substring, expected);\n }\n return max;\n}\nfunction formatCodeAsIndented(node, state) {\n return Boolean(\n state.options.fences === false && node.value && // If there’s no info…\n !node.lang && // And there’s a non-whitespace character…\n /[^ \\r\\n]/.test(node.value) && // And the value doesn’t start or end in a blank…\n !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n );\n}\nfunction checkFence(state) {\n const marker = state.options.fence || \"`\";\n if (marker !== \"`\" && marker !== \"~\") {\n throw new Error(\n \"Cannot serialize code with `\" + marker + \"` for `options.fence`, expected `` ` `` or `~`\"\n );\n }\n return marker;\n}\nfunction code$1(node, _, state, info) {\n const marker = checkFence(state);\n const raw = node.value || \"\";\n const suffix = marker === \"`\" ? \"GraveAccent\" : \"Tilde\";\n if (formatCodeAsIndented(node, state)) {\n const exit3 = state.enter(\"codeIndented\");\n const value2 = state.indentLines(raw, map);\n exit3();\n return value2;\n }\n const tracker = state.createTracker(info);\n const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3));\n const exit2 = state.enter(\"codeFenced\");\n let value = tracker.move(sequence);\n if (node.lang) {\n const subexit = state.enter(`codeFencedLang${suffix}`);\n value += tracker.move(\n state.safe(node.lang, {\n before: value,\n after: \" \",\n encode: [\"`\"],\n ...tracker.current()\n })\n );\n subexit();\n }\n if (node.lang && node.meta) {\n const subexit = state.enter(`codeFencedMeta${suffix}`);\n value += tracker.move(\" \");\n value += tracker.move(\n state.safe(node.meta, {\n before: value,\n after: \"\\n\",\n encode: [\"`\"],\n ...tracker.current()\n })\n );\n subexit();\n }\n value += tracker.move(\"\\n\");\n if (raw) {\n value += tracker.move(raw + \"\\n\");\n }\n value += tracker.move(sequence);\n exit2();\n return value;\n}\nfunction map(line, _, blank) {\n return (blank ? \"\" : \" \") + line;\n}\nfunction checkQuote(state) {\n const marker = state.options.quote || '\"';\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n \"Cannot serialize title with `\" + marker + \"` for `options.quote`, expected `\\\"`, or `'`\"\n );\n }\n return marker;\n}\nfunction definition(node, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const exit2 = state.enter(\"definition\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[\");\n value += tracker.move(\n state.safe(state.associationId(node), {\n before: value,\n after: \"]\",\n ...tracker.current()\n })\n );\n value += tracker.move(\"]: \");\n subexit();\n if (\n // If there’s no url, or…\n !node.url || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? \" \" : \"\\n\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n exit2();\n return value;\n}\nfunction checkEmphasis(state) {\n const marker = state.options.emphasis || \"*\";\n if (marker !== \"*\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize emphasis with `\" + marker + \"` for `options.emphasis`, expected `*`, or `_`\"\n );\n }\n return marker;\n}\nfunction encodeCharacterReference(code2) {\n return \"&#x\" + code2.toString(16).toUpperCase() + \";\";\n}\nfunction classifyCharacter(code2) {\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return 1;\n }\n if (unicodePunctuation(code2)) {\n return 2;\n }\n}\nfunction encodeInfo(outside, inside, marker) {\n const outsideKind = classifyCharacter(outside);\n const insideKind = classifyCharacter(inside);\n if (outsideKind === void 0) {\n return insideKind === void 0 ? (\n // Letter inside:\n // we have to encode *both* letters for `_` as it is looser.\n // it already forms for `*` (and GFMs `~`).\n marker === \"_\" ? { inside: true, outside: true } : { inside: false, outside: false }\n ) : insideKind === 1 ? (\n // Whitespace inside: encode both (letter, whitespace).\n { inside: true, outside: true }\n ) : (\n // Punctuation inside: encode outer (letter)\n { inside: false, outside: true }\n );\n }\n if (outsideKind === 1) {\n return insideKind === void 0 ? (\n // Letter inside: already forms.\n { inside: false, outside: false }\n ) : insideKind === 1 ? (\n // Whitespace inside: encode both (whitespace).\n { inside: true, outside: true }\n ) : (\n // Punctuation inside: already forms.\n { inside: false, outside: false }\n );\n }\n return insideKind === void 0 ? (\n // Letter inside: already forms.\n { inside: false, outside: false }\n ) : insideKind === 1 ? (\n // Whitespace inside: encode inner (whitespace).\n { inside: true, outside: false }\n ) : (\n // Punctuation inside: already forms.\n { inside: false, outside: false }\n );\n}\nemphasis.peek = emphasisPeek;\nfunction emphasis(node, _, state, info) {\n const marker = checkEmphasis(state);\n const exit2 = state.enter(\"emphasis\");\n const tracker = state.createTracker(info);\n const before = tracker.move(marker);\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n );\n const betweenHead = between.charCodeAt(0);\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n );\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1);\n }\n const betweenTail = between.charCodeAt(between.length - 1);\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker);\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail);\n }\n const after = tracker.move(marker);\n exit2();\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n };\n return before + between + after;\n}\nfunction emphasisPeek(_, _1, state) {\n return state.options.emphasis || \"*\";\n}\nfunction visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n let reverse;\n let test;\n let visitor;\n if (typeof testOrVisitor === \"function\" && typeof visitorOrReverse !== \"function\") {\n test = void 0;\n visitor = testOrVisitor;\n reverse = visitorOrReverse;\n } else {\n test = testOrVisitor;\n visitor = visitorOrReverse;\n reverse = maybeReverse;\n }\n visitParents(tree, test, overload, reverse);\n function overload(node, parents) {\n const parent = parents[parents.length - 1];\n const index = parent ? parent.children.indexOf(node) : void 0;\n return visitor(node, index, parent);\n }\n}\nfunction formatHeadingAsSetext(node, state) {\n let literalWithBreak = false;\n visit(node, function(node2) {\n if (\"value\" in node2 && /\\r?\\n|\\r/.test(node2.value) || node2.type === \"break\") {\n literalWithBreak = true;\n return EXIT;\n }\n });\n return Boolean(\n (!node.depth || node.depth < 3) && toString(node) && (state.options.setext || literalWithBreak)\n );\n}\nfunction heading(node, _, state, info) {\n const rank = Math.max(Math.min(6, node.depth || 1), 1);\n const tracker = state.createTracker(info);\n if (formatHeadingAsSetext(node, state)) {\n const exit3 = state.enter(\"headingSetext\");\n const subexit2 = state.enter(\"phrasing\");\n const value2 = state.containerPhrasing(node, {\n ...tracker.current(),\n before: \"\\n\",\n after: \"\\n\"\n });\n subexit2();\n exit3();\n return value2 + \"\\n\" + (rank === 1 ? \"=\" : \"-\").repeat(\n // The whole size…\n value2.length - // Minus the position of the character after the last EOL (or\n // 0 if there is none)…\n (Math.max(value2.lastIndexOf(\"\\r\"), value2.lastIndexOf(\"\\n\")) + 1)\n );\n }\n const sequence = \"#\".repeat(rank);\n const exit2 = state.enter(\"headingAtx\");\n const subexit = state.enter(\"phrasing\");\n tracker.move(sequence + \" \");\n let value = state.containerPhrasing(node, {\n before: \"# \",\n after: \"\\n\",\n ...tracker.current()\n });\n if (/^[\\t ]/.test(value)) {\n value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1);\n }\n value = value ? sequence + \" \" + value : sequence;\n if (state.options.closeAtx) {\n value += \" \" + sequence;\n }\n subexit();\n exit2();\n return value;\n}\nhtml.peek = htmlPeek;\nfunction html(node) {\n return node.value || \"\";\n}\nfunction htmlPeek() {\n return \"<\";\n}\nimage.peek = imagePeek;\nfunction image(node, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const exit2 = state.enter(\"image\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"![\");\n value += tracker.move(\n state.safe(node.alt, { before: value, after: \"]\", ...tracker.current() })\n );\n value += tracker.move(\"](\");\n subexit();\n if (\n // If there’s no url but there is a title…\n !node.url && node.title || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? \" \" : \")\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n value += tracker.move(\")\");\n exit2();\n return value;\n}\nfunction imagePeek() {\n return \"!\";\n}\nimageReference.peek = imageReferencePeek;\nfunction imageReference(node, _, state, info) {\n const type = node.referenceType;\n const exit2 = state.enter(\"imageReference\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"![\");\n const alt = state.safe(node.alt, {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n value += tracker.move(alt + \"][\");\n subexit();\n const stack = state.stack;\n state.stack = [];\n subexit = state.enter(\"reference\");\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n subexit();\n state.stack = stack;\n exit2();\n if (type === \"full\" || !alt || alt !== reference) {\n value += tracker.move(reference + \"]\");\n } else if (type === \"shortcut\") {\n value = value.slice(0, -1);\n } else {\n value += tracker.move(\"]\");\n }\n return value;\n}\nfunction imageReferencePeek() {\n return \"!\";\n}\ninlineCode.peek = inlineCodePeek;\nfunction inlineCode(node, _, state) {\n let value = node.value || \"\";\n let sequence = \"`\";\n let index = -1;\n while (new RegExp(\"(^|[^`])\" + sequence + \"([^`]|$)\").test(value)) {\n sequence += \"`\";\n }\n if (/[^ \\r\\n]/.test(value) && (/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value) || /^`|`$/.test(value))) {\n value = \" \" + value + \" \";\n }\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index];\n const expression = state.compilePattern(pattern);\n let match;\n if (!pattern.atBreak) continue;\n while (match = expression.exec(value)) {\n let position = match.index;\n if (value.charCodeAt(position) === 10 && value.charCodeAt(position - 1) === 13) {\n position--;\n }\n value = value.slice(0, position) + \" \" + value.slice(match.index + 1);\n }\n }\n return sequence + value + sequence;\n}\nfunction inlineCodePeek() {\n return \"`\";\n}\nfunction formatLinkAsAutolink(node, state) {\n const raw = toString(node);\n return Boolean(\n !state.options.resourceLink && // If there’s a url…\n node.url && // And there’s a no title…\n !node.title && // And the content of `node` is a single text node…\n node.children && node.children.length === 1 && node.children[0].type === \"text\" && // And if the url is the same as the content…\n (raw === node.url || \"mailto:\" + raw === node.url) && // And that starts w/ a protocol…\n /^[a-z][a-z+.-]+:/i.test(node.url) && // And that doesn’t contain ASCII control codes (character escapes and\n // references don’t work), space, or angle brackets…\n !/[\\0- <>\\u007F]/.test(node.url)\n );\n}\nlink.peek = linkPeek;\nfunction link(node, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const tracker = state.createTracker(info);\n let exit2;\n let subexit;\n if (formatLinkAsAutolink(node, state)) {\n const stack = state.stack;\n state.stack = [];\n exit2 = state.enter(\"autolink\");\n let value2 = tracker.move(\"<\");\n value2 += tracker.move(\n state.containerPhrasing(node, {\n before: value2,\n after: \">\",\n ...tracker.current()\n })\n );\n value2 += tracker.move(\">\");\n exit2();\n state.stack = stack;\n return value2;\n }\n exit2 = state.enter(\"link\");\n subexit = state.enter(\"label\");\n let value = tracker.move(\"[\");\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: \"](\",\n ...tracker.current()\n })\n );\n value += tracker.move(\"](\");\n subexit();\n if (\n // If there’s no url but there is a title…\n !node.url && node.title || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? \" \" : \")\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n value += tracker.move(\")\");\n exit2();\n return value;\n}\nfunction linkPeek(node, _, state) {\n return formatLinkAsAutolink(node, state) ? \"<\" : \"[\";\n}\nlinkReference.peek = linkReferencePeek;\nfunction linkReference(node, _, state, info) {\n const type = node.referenceType;\n const exit2 = state.enter(\"linkReference\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[\");\n const text2 = state.containerPhrasing(node, {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n value += tracker.move(text2 + \"][\");\n subexit();\n const stack = state.stack;\n state.stack = [];\n subexit = state.enter(\"reference\");\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n subexit();\n state.stack = stack;\n exit2();\n if (type === \"full\" || !text2 || text2 !== reference) {\n value += tracker.move(reference + \"]\");\n } else if (type === \"shortcut\") {\n value = value.slice(0, -1);\n } else {\n value += tracker.move(\"]\");\n }\n return value;\n}\nfunction linkReferencePeek() {\n return \"[\";\n}\nfunction checkBullet(state) {\n const marker = state.options.bullet || \"*\";\n if (marker !== \"*\" && marker !== \"+\" && marker !== \"-\") {\n throw new Error(\n \"Cannot serialize items with `\" + marker + \"` for `options.bullet`, expected `*`, `+`, or `-`\"\n );\n }\n return marker;\n}\nfunction checkBulletOther(state) {\n const bullet = checkBullet(state);\n const bulletOther = state.options.bulletOther;\n if (!bulletOther) {\n return bullet === \"*\" ? \"-\" : \"*\";\n }\n if (bulletOther !== \"*\" && bulletOther !== \"+\" && bulletOther !== \"-\") {\n throw new Error(\n \"Cannot serialize items with `\" + bulletOther + \"` for `options.bulletOther`, expected `*`, `+`, or `-`\"\n );\n }\n if (bulletOther === bullet) {\n throw new Error(\n \"Expected `bullet` (`\" + bullet + \"`) and `bulletOther` (`\" + bulletOther + \"`) to be different\"\n );\n }\n return bulletOther;\n}\nfunction checkBulletOrdered(state) {\n const marker = state.options.bulletOrdered || \".\";\n if (marker !== \".\" && marker !== \")\") {\n throw new Error(\n \"Cannot serialize items with `\" + marker + \"` for `options.bulletOrdered`, expected `.` or `)`\"\n );\n }\n return marker;\n}\nfunction checkRule(state) {\n const marker = state.options.rule || \"*\";\n if (marker !== \"*\" && marker !== \"-\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize rules with `\" + marker + \"` for `options.rule`, expected `*`, `-`, or `_`\"\n );\n }\n return marker;\n}\nfunction list(node, parent, state, info) {\n const exit2 = state.enter(\"list\");\n const bulletCurrent = state.bulletCurrent;\n let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state);\n const bulletOther = node.ordered ? bullet === \".\" ? \")\" : \".\" : checkBulletOther(state);\n let useDifferentMarker = parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false;\n if (!node.ordered) {\n const firstListItem = node.children ? node.children[0] : void 0;\n if (\n // Bullet could be used as a thematic break marker:\n (bullet === \"*\" || bullet === \"-\") && // Empty first list item:\n firstListItem && (!firstListItem.children || !firstListItem.children[0]) && // Directly in two other list items:\n state.stack[state.stack.length - 1] === \"list\" && state.stack[state.stack.length - 2] === \"listItem\" && state.stack[state.stack.length - 3] === \"list\" && state.stack[state.stack.length - 4] === \"listItem\" && // That are each the first child.\n state.indexStack[state.indexStack.length - 1] === 0 && state.indexStack[state.indexStack.length - 2] === 0 && state.indexStack[state.indexStack.length - 3] === 0\n ) {\n useDifferentMarker = true;\n }\n if (checkRule(state) === bullet && firstListItem) {\n let index = -1;\n while (++index < node.children.length) {\n const item = node.children[index];\n if (item && item.type === \"listItem\" && item.children && item.children[0] && item.children[0].type === \"thematicBreak\") {\n useDifferentMarker = true;\n break;\n }\n }\n }\n }\n if (useDifferentMarker) {\n bullet = bulletOther;\n }\n state.bulletCurrent = bullet;\n const value = state.containerFlow(node, info);\n state.bulletLastUsed = bullet;\n state.bulletCurrent = bulletCurrent;\n exit2();\n return value;\n}\nfunction checkListItemIndent(state) {\n const style = state.options.listItemIndent || \"one\";\n if (style !== \"tab\" && style !== \"one\" && style !== \"mixed\") {\n throw new Error(\n \"Cannot serialize items with `\" + style + \"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`\"\n );\n }\n return style;\n}\nfunction listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state);\n let bullet = state.bulletCurrent || checkBullet(state);\n if (parent && parent.type === \"list\" && parent.ordered) {\n bullet = (typeof parent.start === \"number\" && parent.start > -1 ? parent.start : 1) + (state.options.incrementListMarker === false ? 0 : parent.children.indexOf(node)) + bullet;\n }\n let size = bullet.length + 1;\n if (listItemIndent === \"tab\" || listItemIndent === \"mixed\" && (parent && parent.type === \"list\" && parent.spread || node.spread)) {\n size = Math.ceil(size / 4) * 4;\n }\n const tracker = state.createTracker(info);\n tracker.move(bullet + \" \".repeat(size - bullet.length));\n tracker.shift(size);\n const exit2 = state.enter(\"listItem\");\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map2\n );\n exit2();\n return value;\n function map2(line, index, blank) {\n if (index) {\n return (blank ? \"\" : \" \".repeat(size)) + line;\n }\n return (blank ? bullet : bullet + \" \".repeat(size - bullet.length)) + line;\n }\n}\nfunction paragraph(node, _, state, info) {\n const exit2 = state.enter(\"paragraph\");\n const subexit = state.enter(\"phrasing\");\n const value = state.containerPhrasing(node, info);\n subexit();\n exit2();\n return value;\n}\nconst phrasing = (\n /** @type {(node?: unknown) => node is Exclude} */\n convert([\n \"break\",\n \"delete\",\n \"emphasis\",\n // To do: next major: removed since footnotes were added to GFM.\n \"footnote\",\n \"footnoteReference\",\n \"image\",\n \"imageReference\",\n \"inlineCode\",\n // Enabled by `mdast-util-math`:\n \"inlineMath\",\n \"link\",\n \"linkReference\",\n // Enabled by `mdast-util-mdx`:\n \"mdxJsxTextElement\",\n // Enabled by `mdast-util-mdx`:\n \"mdxTextExpression\",\n \"strong\",\n \"text\",\n // Enabled by `mdast-util-directive`:\n \"textDirective\"\n ])\n);\nfunction root(node, _, state, info) {\n const hasPhrasing = node.children.some(function(d) {\n return phrasing(d);\n });\n const container = hasPhrasing ? state.containerPhrasing : state.containerFlow;\n return container.call(state, node, info);\n}\nfunction checkStrong(state) {\n const marker = state.options.strong || \"*\";\n if (marker !== \"*\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize strong with `\" + marker + \"` for `options.strong`, expected `*`, or `_`\"\n );\n }\n return marker;\n}\nstrong.peek = strongPeek;\nfunction strong(node, _, state, info) {\n const marker = checkStrong(state);\n const exit2 = state.enter(\"strong\");\n const tracker = state.createTracker(info);\n const before = tracker.move(marker + marker);\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n );\n const betweenHead = between.charCodeAt(0);\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n );\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1);\n }\n const betweenTail = between.charCodeAt(between.length - 1);\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker);\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail);\n }\n const after = tracker.move(marker + marker);\n exit2();\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n };\n return before + between + after;\n}\nfunction strongPeek(_, _1, state) {\n return state.options.strong || \"*\";\n}\nfunction text$1(node, _, state, info) {\n return state.safe(node.value, info);\n}\nfunction checkRuleRepetition(state) {\n const repetition = state.options.ruleRepetition || 3;\n if (repetition < 3) {\n throw new Error(\n \"Cannot serialize rules with repetition `\" + repetition + \"` for `options.ruleRepetition`, expected `3` or more\"\n );\n }\n return repetition;\n}\nfunction thematicBreak(_, _1, state) {\n const value = (checkRule(state) + (state.options.ruleSpaces ? \" \" : \"\")).repeat(checkRuleRepetition(state));\n return state.options.ruleSpaces ? value.slice(0, -1) : value;\n}\nconst handle = {\n blockquote,\n break: hardBreak,\n code: code$1,\n definition,\n emphasis,\n hardBreak,\n heading,\n html,\n image,\n imageReference,\n inlineCode,\n link,\n linkReference,\n list,\n listItem,\n paragraph,\n root,\n strong,\n text: text$1,\n thematicBreak\n};\nfunction gfmTableFromMarkdown() {\n return {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n };\n}\nfunction enterTable(token) {\n const align = token._align;\n this.enter(\n {\n type: \"table\",\n align: align.map(function(d) {\n return d === \"none\" ? null : d;\n }),\n children: []\n },\n token\n );\n this.data.inTable = true;\n}\nfunction exitTable(token) {\n this.exit(token);\n this.data.inTable = void 0;\n}\nfunction enterRow(token) {\n this.enter({ type: \"tableRow\", children: [] }, token);\n}\nfunction exit(token) {\n this.exit(token);\n}\nfunction enterCell(token) {\n this.enter({ type: \"tableCell\", children: [] }, token);\n}\nfunction exitCodeText(token) {\n let value = this.resume();\n if (this.data.inTable) {\n value = value.replace(/\\\\([\\\\|])/g, replace);\n }\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"inlineCode\");\n node.value = value;\n this.exit(token);\n}\nfunction replace($0, $1) {\n return $1 === \"|\" ? $1 : $0;\n}\nfunction gfmTableToMarkdown(options) {\n const settings = options || {};\n const padding = settings.tableCellPadding;\n const alignDelimiters = settings.tablePipeAlign;\n const stringLength = settings.stringLength;\n const around = padding ? \" \" : \"|\";\n return {\n unsafe: [\n { character: \"\\r\", inConstruct: \"tableCell\" },\n { character: \"\\n\", inConstruct: \"tableCell\" },\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n { atBreak: true, character: \"|\", after: \"[\t :-]\" },\n // A pipe in a cell must be encoded.\n { character: \"|\", inConstruct: \"tableCell\" },\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n { atBreak: true, character: \":\", after: \"-\" },\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // \n { atBreak: true, character: \"-\", after: \"[:|-]\" }\n ],\n handlers: {\n inlineCode: inlineCodeWithTable,\n table: handleTable,\n tableCell: handleTableCell,\n tableRow: handleTableRow\n }\n };\n function handleTable(node, _, state, info) {\n return serializeData(handleTableAsData(node, state, info), node.align);\n }\n function handleTableRow(node, _, state, info) {\n const row = handleTableRowAsData(node, state, info);\n const value = serializeData([row]);\n return value.slice(0, value.indexOf(\"\\n\"));\n }\n function handleTableCell(node, _, state, info) {\n const exit2 = state.enter(\"tableCell\");\n const subexit = state.enter(\"phrasing\");\n const value = state.containerPhrasing(node, {\n ...info,\n before: around,\n after: around\n });\n subexit();\n exit2();\n return value;\n }\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n });\n }\n function handleTableAsData(node, state, info) {\n const children = node.children;\n let index = -1;\n const result = [];\n const subexit = state.enter(\"table\");\n while (++index < children.length) {\n result[index] = handleTableRowAsData(children[index], state, info);\n }\n subexit();\n return result;\n }\n function handleTableRowAsData(node, state, info) {\n const children = node.children;\n let index = -1;\n const result = [];\n const subexit = state.enter(\"tableRow\");\n while (++index < children.length) {\n result[index] = handleTableCell(children[index], node, state, info);\n }\n subexit();\n return result;\n }\n function inlineCodeWithTable(node, parent, state) {\n let value = handle.inlineCode(node, parent, state);\n if (state.stack.includes(\"tableCell\")) {\n value = value.replace(/\\|/g, \"\\\\$&\");\n }\n return value;\n }\n}\nfunction gfmTaskListItemFromMarkdown() {\n return {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n };\n}\nfunction gfmTaskListItemToMarkdown() {\n return {\n unsafe: [{ atBreak: true, character: \"-\", after: \"[:|-]\" }],\n handlers: { listItem: listItemWithTaskListItem }\n };\n}\nfunction exitCheck(token) {\n const node = this.stack[this.stack.length - 2];\n ok$1(node.type === \"listItem\");\n node.checked = token.type === \"taskListCheckValueChecked\";\n}\nfunction exitParagraphWithTaskListItem(token) {\n const parent = this.stack[this.stack.length - 2];\n if (parent && parent.type === \"listItem\" && typeof parent.checked === \"boolean\") {\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"paragraph\");\n const head = node.children[0];\n if (head && head.type === \"text\") {\n const siblings = parent.children;\n let index = -1;\n let firstParaghraph;\n while (++index < siblings.length) {\n const sibling = siblings[index];\n if (sibling.type === \"paragraph\") {\n firstParaghraph = sibling;\n break;\n }\n }\n if (firstParaghraph === node) {\n head.value = head.value.slice(1);\n if (head.value.length === 0) {\n node.children.shift();\n } else if (node.position && head.position && typeof head.position.start.offset === \"number\") {\n head.position.start.column++;\n head.position.start.offset++;\n node.position.start = Object.assign({}, head.position.start);\n }\n }\n }\n }\n this.exit(token);\n}\nfunction listItemWithTaskListItem(node, parent, state, info) {\n const head = node.children[0];\n const checkable = typeof node.checked === \"boolean\" && head && head.type === \"paragraph\";\n const checkbox = \"[\" + (node.checked ? \"x\" : \" \") + \"] \";\n const tracker = state.createTracker(info);\n if (checkable) {\n tracker.move(checkbox);\n }\n let value = handle.listItem(node, parent, state, {\n ...info,\n ...tracker.current()\n });\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check);\n }\n return value;\n function check($0) {\n return $0 + checkbox;\n }\n}\nfunction gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown(),\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown(),\n gfmTableFromMarkdown(),\n gfmTaskListItemFromMarkdown()\n ];\n}\nfunction gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown(),\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown(),\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown()\n ]\n };\n}\nfunction splice(list2, start, remove, items) {\n const end = list2.length;\n let chunkStart = 0;\n let parameters;\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n if (items.length < 1e4) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n list2.splice(...parameters);\n } else {\n if (remove) list2.splice(start, remove);\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 1e4);\n parameters.unshift(start, 0);\n list2.splice(...parameters);\n chunkStart += 1e4;\n start += 1e4;\n }\n }\n}\nconst hasOwnProperty = {}.hasOwnProperty;\nfunction combineExtensions(extensions) {\n const all = {};\n let index = -1;\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index]);\n }\n return all;\n}\nfunction syntaxExtension(all, extension) {\n let hook;\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : void 0;\n const left = maybe || (all[hook] = {});\n const right = extension[hook];\n let code2;\n if (right) {\n for (code2 in right) {\n if (!hasOwnProperty.call(left, code2)) left[code2] = [];\n const value = right[code2];\n constructs(\n // @ts-expect-error Looks like a list.\n left[code2],\n Array.isArray(value) ? value : value ? [value] : []\n );\n }\n }\n }\n}\nfunction constructs(existing, list2) {\n let index = -1;\n const before = [];\n while (++index < list2.length) {\n (list2[index].add === \"after\" ? existing : before).push(list2[index]);\n }\n splice(existing, 0, 0, before);\n}\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n};\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n};\nconst path = {\n tokenize: tokenizePath,\n partial: true\n};\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n};\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n};\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n};\nconst protocolAutolink = {\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n};\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n};\nconst text = {};\nfunction gfmAutolinkLiteral() {\n return {\n text\n };\n}\nlet code = 48;\nwhile (code < 123) {\n text[code] = emailAutolink;\n code++;\n if (code === 58) code = 65;\n else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\nfunction tokenizeEmailAutolink(effects, ok2, nok) {\n const self = this;\n let dot;\n let data;\n return start;\n function start(code2) {\n if (!gfmAtext(code2) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code2);\n }\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkEmail\");\n return atext(code2);\n }\n function atext(code2) {\n if (gfmAtext(code2)) {\n effects.consume(code2);\n return atext;\n }\n if (code2 === 64) {\n effects.consume(code2);\n return emailDomain;\n }\n return nok(code2);\n }\n function emailDomain(code2) {\n if (code2 === 46) {\n return effects.check(\n emailDomainDotTrail,\n emailDomainAfter,\n emailDomainDot\n )(code2);\n }\n if (code2 === 45 || code2 === 95 || asciiAlphanumeric(code2)) {\n data = true;\n effects.consume(code2);\n return emailDomain;\n }\n return emailDomainAfter(code2);\n }\n function emailDomainDot(code2) {\n effects.consume(code2);\n dot = true;\n return emailDomain;\n }\n function emailDomainAfter(code2) {\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit(\"literalAutolinkEmail\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n return nok(code2);\n }\n}\nfunction tokenizeWwwAutolink(effects, ok2, nok) {\n const self = this;\n return wwwStart;\n function wwwStart(code2) {\n if (code2 !== 87 && code2 !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code2);\n }\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkWww\");\n return effects.check(\n wwwPrefix,\n effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n nok\n )(code2);\n }\n function wwwAfter(code2) {\n effects.exit(\"literalAutolinkWww\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n}\nfunction tokenizeProtocolAutolink(effects, ok2, nok) {\n const self = this;\n let buffer = \"\";\n let seen = false;\n return protocolStart;\n function protocolStart(code2) {\n if ((code2 === 72 || code2 === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkHttp\");\n buffer += String.fromCodePoint(code2);\n effects.consume(code2);\n return protocolPrefixInside;\n }\n return nok(code2);\n }\n function protocolPrefixInside(code2) {\n if (asciiAlpha(code2) && buffer.length < 5) {\n buffer += String.fromCodePoint(code2);\n effects.consume(code2);\n return protocolPrefixInside;\n }\n if (code2 === 58) {\n const protocol = buffer.toLowerCase();\n if (protocol === \"http\" || protocol === \"https\") {\n effects.consume(code2);\n return protocolSlashesInside;\n }\n }\n return nok(code2);\n }\n function protocolSlashesInside(code2) {\n if (code2 === 47) {\n effects.consume(code2);\n if (seen) {\n return afterProtocol;\n }\n seen = true;\n return protocolSlashesInside;\n }\n return nok(code2);\n }\n function afterProtocol(code2) {\n return code2 === null || asciiControl(code2) || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || unicodePunctuation(code2) ? nok(code2) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code2);\n }\n function protocolAfter(code2) {\n effects.exit(\"literalAutolinkHttp\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n}\nfunction tokenizeWwwPrefix(effects, ok2, nok) {\n let size = 0;\n return wwwPrefixInside;\n function wwwPrefixInside(code2) {\n if ((code2 === 87 || code2 === 119) && size < 3) {\n size++;\n effects.consume(code2);\n return wwwPrefixInside;\n }\n if (code2 === 46 && size === 3) {\n effects.consume(code2);\n return wwwPrefixAfter;\n }\n return nok(code2);\n }\n function wwwPrefixAfter(code2) {\n return code2 === null ? nok(code2) : ok2(code2);\n }\n}\nfunction tokenizeDomain(effects, ok2, nok) {\n let underscoreInLastSegment;\n let underscoreInLastLastSegment;\n let seen;\n return domainInside;\n function domainInside(code2) {\n if (code2 === 46 || code2 === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code2);\n }\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || code2 !== 45 && unicodePunctuation(code2)) {\n return domainAfter(code2);\n }\n seen = true;\n effects.consume(code2);\n return domainInside;\n }\n function domainAtPunctuation(code2) {\n if (code2 === 95) {\n underscoreInLastSegment = true;\n } else {\n underscoreInLastLastSegment = underscoreInLastSegment;\n underscoreInLastSegment = void 0;\n }\n effects.consume(code2);\n return domainInside;\n }\n function domainAfter(code2) {\n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code2);\n }\n return ok2(code2);\n }\n}\nfunction tokenizePath(effects, ok2) {\n let sizeOpen = 0;\n let sizeClose = 0;\n return pathInside;\n function pathInside(code2) {\n if (code2 === 40) {\n sizeOpen++;\n effects.consume(code2);\n return pathInside;\n }\n if (code2 === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code2);\n }\n if (code2 === 33 || code2 === 34 || code2 === 38 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 60 || code2 === 63 || code2 === 93 || code2 === 95 || code2 === 126) {\n return effects.check(trail, ok2, pathAtPunctuation)(code2);\n }\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return ok2(code2);\n }\n effects.consume(code2);\n return pathInside;\n }\n function pathAtPunctuation(code2) {\n if (code2 === 41) {\n sizeClose++;\n }\n effects.consume(code2);\n return pathInside;\n }\n}\nfunction tokenizeTrail(effects, ok2, nok) {\n return trail2;\n function trail2(code2) {\n if (code2 === 33 || code2 === 34 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 63 || code2 === 95 || code2 === 126) {\n effects.consume(code2);\n return trail2;\n }\n if (code2 === 38) {\n effects.consume(code2);\n return trailCharRefStart;\n }\n if (code2 === 93) {\n effects.consume(code2);\n return trailBracketAfter;\n }\n if (\n // `<` is an end.\n code2 === 60 || // So is whitespace.\n code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)\n ) {\n return ok2(code2);\n }\n return nok(code2);\n }\n function trailBracketAfter(code2) {\n if (code2 === null || code2 === 40 || code2 === 91 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return ok2(code2);\n }\n return trail2(code2);\n }\n function trailCharRefStart(code2) {\n return asciiAlpha(code2) ? trailCharRefInside(code2) : nok(code2);\n }\n function trailCharRefInside(code2) {\n if (code2 === 59) {\n effects.consume(code2);\n return trail2;\n }\n if (asciiAlpha(code2)) {\n effects.consume(code2);\n return trailCharRefInside;\n }\n return nok(code2);\n }\n}\nfunction tokenizeEmailDomainDotTrail(effects, ok2, nok) {\n return start;\n function start(code2) {\n effects.consume(code2);\n return after;\n }\n function after(code2) {\n return asciiAlphanumeric(code2) ? nok(code2) : ok2(code2);\n }\n}\nfunction previousWww(code2) {\n return code2 === null || code2 === 40 || code2 === 42 || code2 === 95 || code2 === 91 || code2 === 93 || code2 === 126 || markdownLineEndingOrSpace(code2);\n}\nfunction previousProtocol(code2) {\n return !asciiAlpha(code2);\n}\nfunction previousEmail(code2) {\n return !(code2 === 47 || gfmAtext(code2));\n}\nfunction gfmAtext(code2) {\n return code2 === 43 || code2 === 45 || code2 === 46 || code2 === 95 || asciiAlphanumeric(code2);\n}\nfunction previousUnbalanced(events) {\n let index = events.length;\n let result = false;\n while (index--) {\n const token = events[index][1];\n if ((token.type === \"labelLink\" || token.type === \"labelImage\") && !token._balanced) {\n result = true;\n break;\n }\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false;\n break;\n }\n }\n if (events.length > 0 && !result) {\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n }\n return result;\n}\nfunction resolveAll(constructs2, events, context) {\n const called = [];\n let index = -1;\n while (++index < constructs2.length) {\n const resolve = constructs2[index].resolveAll;\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context);\n called.push(resolve);\n }\n }\n return events;\n}\nfunction factorySpace(effects, ok2, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n function start(code2) {\n if (markdownSpace(code2)) {\n effects.enter(type);\n return prefix(code2);\n }\n return ok2(code2);\n }\n function prefix(code2) {\n if (markdownSpace(code2) && size++ < limit) {\n effects.consume(code2);\n return prefix;\n }\n effects.exit(type);\n return ok2(code2);\n }\n}\nconst blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n};\nfunction tokenizeBlankLine(effects, ok2, nok) {\n return start;\n function start(code2) {\n return markdownSpace(code2) ? factorySpace(effects, after, \"linePrefix\")(code2) : after(code2);\n }\n function after(code2) {\n return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);\n }\n}\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n};\nfunction gfmFootnote() {\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: \"after\",\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n };\n}\nfunction tokenizePotentialGfmFootnoteCall(effects, ok2, nok) {\n const self = this;\n let index = self.events.length;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let labelStart;\n while (index--) {\n const token = self.events[index][1];\n if (token.type === \"labelImage\") {\n labelStart = token;\n break;\n }\n if (token.type === \"gfmFootnoteCall\" || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n break;\n }\n }\n return start;\n function start(code2) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code2);\n }\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n );\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code2);\n }\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n return ok2(code2);\n }\n}\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length;\n while (index--) {\n if (events[index][1].type === \"labelImage\" && events[index][0] === \"enter\") {\n events[index][1];\n break;\n }\n }\n events[index + 1][1].type = \"data\";\n events[index + 3][1].type = \"gfmFootnoteCallLabelMarker\";\n const call = {\n type: \"gfmFootnoteCall\",\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n const marker = {\n type: \"gfmFootnoteCallMarker\",\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n };\n marker.end.column++;\n marker.end.offset++;\n marker.end._bufferIndex++;\n const string = {\n type: \"gfmFootnoteCallString\",\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n };\n const chunk = {\n type: \"chunkString\",\n contentType: \"string\",\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n };\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n [\"enter\", call, context],\n // The `[`\n events[index + 3],\n events[index + 4],\n // The `^`.\n [\"enter\", marker, context],\n [\"exit\", marker, context],\n // Everything in between.\n [\"enter\", string, context],\n [\"enter\", chunk, context],\n [\"exit\", chunk, context],\n [\"exit\", string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n [\"exit\", call, context]\n ];\n events.splice(index, events.length - index + 1, ...replacement);\n return events;\n}\nfunction tokenizeGfmFootnoteCall(effects, ok2, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let size = 0;\n let data;\n return start;\n function start(code2) {\n effects.enter(\"gfmFootnoteCall\");\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n return callStart;\n }\n function callStart(code2) {\n if (code2 !== 94) return nok(code2);\n effects.enter(\"gfmFootnoteCallMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallMarker\");\n effects.enter(\"gfmFootnoteCallString\");\n effects.enter(\"chunkString\").contentType = \"string\";\n return callData;\n }\n function callData(code2) {\n if (\n // Too long.\n size > 999 || // Closing brace with nothing.\n code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)\n ) {\n return nok(code2);\n }\n if (code2 === 93) {\n effects.exit(\"chunkString\");\n const token = effects.exit(\"gfmFootnoteCallString\");\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code2);\n }\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n effects.exit(\"gfmFootnoteCall\");\n return ok2;\n }\n if (!markdownLineEndingOrSpace(code2)) {\n data = true;\n }\n size++;\n effects.consume(code2);\n return code2 === 92 ? callEscape : callData;\n }\n function callEscape(code2) {\n if (code2 === 91 || code2 === 92 || code2 === 93) {\n effects.consume(code2);\n size++;\n return callData;\n }\n return callData(code2);\n }\n}\nfunction tokenizeDefinitionStart(effects, ok2, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let identifier;\n let size = 0;\n let data;\n return start;\n function start(code2) {\n effects.enter(\"gfmFootnoteDefinition\")._container = true;\n effects.enter(\"gfmFootnoteDefinitionLabel\");\n effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n return labelAtMarker;\n }\n function labelAtMarker(code2) {\n if (code2 === 94) {\n effects.enter(\"gfmFootnoteDefinitionMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionMarker\");\n effects.enter(\"gfmFootnoteDefinitionLabelString\");\n effects.enter(\"chunkString\").contentType = \"string\";\n return labelInside;\n }\n return nok(code2);\n }\n function labelInside(code2) {\n if (\n // Too long.\n size > 999 || // Closing brace with nothing.\n code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)\n ) {\n return nok(code2);\n }\n if (code2 === 93) {\n effects.exit(\"chunkString\");\n const token = effects.exit(\"gfmFootnoteDefinitionLabelString\");\n identifier = normalizeIdentifier(self.sliceSerialize(token));\n effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n effects.exit(\"gfmFootnoteDefinitionLabel\");\n return labelAfter;\n }\n if (!markdownLineEndingOrSpace(code2)) {\n data = true;\n }\n size++;\n effects.consume(code2);\n return code2 === 92 ? labelEscape : labelInside;\n }\n function labelEscape(code2) {\n if (code2 === 91 || code2 === 92 || code2 === 93) {\n effects.consume(code2);\n size++;\n return labelInside;\n }\n return labelInside(code2);\n }\n function labelAfter(code2) {\n if (code2 === 58) {\n effects.enter(\"definitionMarker\");\n effects.consume(code2);\n effects.exit(\"definitionMarker\");\n if (!defined.includes(identifier)) {\n defined.push(identifier);\n }\n return factorySpace(\n effects,\n whitespaceAfter,\n \"gfmFootnoteDefinitionWhitespace\"\n );\n }\n return nok(code2);\n }\n function whitespaceAfter(code2) {\n return ok2(code2);\n }\n}\nfunction tokenizeDefinitionContinuation(effects, ok2, nok) {\n return effects.check(blankLine, ok2, effects.attempt(indent, ok2, nok));\n}\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit(\"gfmFootnoteDefinition\");\n}\nfunction tokenizeIndent(effects, ok2, nok) {\n const self = this;\n return factorySpace(\n effects,\n afterPrefix,\n \"gfmFootnoteDefinitionIndent\",\n 4 + 1\n );\n function afterPrefix(code2) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"gfmFootnoteDefinitionIndent\" && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok2(code2) : nok(code2);\n }\n}\nfunction gfmStrikethrough(options) {\n const options_ = options || {};\n let single = options_.singleTilde;\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n };\n if (single === null || single === void 0) {\n single = true;\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n };\n function resolveAllStrikethrough(events, context) {\n let index = -1;\n while (++index < events.length) {\n if (events[index][0] === \"enter\" && events[index][1].type === \"strikethroughSequenceTemporary\" && events[index][1]._close) {\n let open = index;\n while (open--) {\n if (events[open][0] === \"exit\" && events[open][1].type === \"strikethroughSequenceTemporary\" && events[open][1]._open && // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n events[index][1].type = \"strikethroughSequence\";\n events[open][1].type = \"strikethroughSequence\";\n const strikethrough = {\n type: \"strikethrough\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n };\n const text2 = {\n type: \"strikethroughText\",\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n const nextEvents = [\n [\"enter\", strikethrough, context],\n [\"enter\", events[open][1], context],\n [\"exit\", events[open][1], context],\n [\"enter\", text2, context]\n ];\n const insideSpan = context.parser.constructs.insideSpan.null;\n if (insideSpan) {\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(insideSpan, events.slice(open + 1, index), context)\n );\n }\n splice(nextEvents, nextEvents.length, 0, [\n [\"exit\", text2, context],\n [\"enter\", events[index][1], context],\n [\"exit\", events[index][1], context],\n [\"exit\", strikethrough, context]\n ]);\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - 2;\n break;\n }\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === \"strikethroughSequenceTemporary\") {\n events[index][1].type = \"data\";\n }\n }\n return events;\n }\n function tokenizeStrikethrough(effects, ok2, nok) {\n const previous2 = this.previous;\n const events = this.events;\n let size = 0;\n return start;\n function start(code2) {\n if (previous2 === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n return nok(code2);\n }\n effects.enter(\"strikethroughSequenceTemporary\");\n return more(code2);\n }\n function more(code2) {\n const before = classifyCharacter(previous2);\n if (code2 === 126) {\n if (size > 1) return nok(code2);\n effects.consume(code2);\n size++;\n return more;\n }\n if (size < 2 && !single) return nok(code2);\n const token = effects.exit(\"strikethroughSequenceTemporary\");\n const after = classifyCharacter(code2);\n token._open = !after || after === 2 && Boolean(before);\n token._close = !before || before === 2 && Boolean(after);\n return ok2(code2);\n }\n }\n}\nclass EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n this.map = [];\n }\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array} add\n * @returns {undefined}\n */\n add(index, remove, add) {\n addImpl(this, index, remove, add);\n }\n // To do: add this when moving to `micromark`.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array} add\n // * @returns {undefined}\n // */\n // addBefore(index, remove, add) {\n // addImpl(this, index, remove, add, true)\n // }\n /**\n * Done, change the events.\n *\n * @param {Array} events\n * @returns {undefined}\n */\n consume(events) {\n this.map.sort(function(a, b) {\n return a[0] - b[0];\n });\n if (this.map.length === 0) {\n return;\n }\n let index = this.map.length;\n const vecs = [];\n while (index > 0) {\n index -= 1;\n vecs.push(\n events.slice(this.map[index][0] + this.map[index][1]),\n this.map[index][2]\n );\n events.length = this.map[index][0];\n }\n vecs.push([...events]);\n events.length = 0;\n let slice = vecs.pop();\n while (slice) {\n events.push(...slice);\n slice = vecs.pop();\n }\n this.map.length = 0;\n }\n}\nfunction addImpl(editMap, at, remove, add) {\n let index = 0;\n if (remove === 0 && add.length === 0) {\n return;\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove;\n editMap.map[index][2].push(...add);\n return;\n }\n index += 1;\n }\n editMap.map.push([at, remove, add]);\n}\nfunction gfmTableAlign(events, index) {\n let inDelimiterRow = false;\n const align = [];\n while (index < events.length) {\n const event = events[index];\n if (inDelimiterRow) {\n if (event[0] === \"enter\") {\n if (event[1].type === \"tableContent\") {\n align.push(\n events[index + 1][1].type === \"tableDelimiterMarker\" ? \"left\" : \"none\"\n );\n }\n } else if (event[1].type === \"tableContent\") {\n if (events[index - 1][1].type === \"tableDelimiterMarker\") {\n const alignIndex = align.length - 1;\n align[alignIndex] = align[alignIndex] === \"left\" ? \"center\" : \"right\";\n }\n } else if (event[1].type === \"tableDelimiterRow\") {\n break;\n }\n } else if (event[0] === \"enter\" && event[1].type === \"tableDelimiterRow\") {\n inDelimiterRow = true;\n }\n index += 1;\n }\n return align;\n}\nfunction gfmTable() {\n return {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n };\n}\nfunction tokenizeTable(effects, ok2, nok) {\n const self = this;\n let size = 0;\n let sizeB = 0;\n let seen;\n return start;\n function start(code2) {\n let index = self.events.length - 1;\n while (index > -1) {\n const type = self.events[index][1].type;\n if (type === \"lineEnding\" || // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === \"linePrefix\")\n index--;\n else break;\n }\n const tail = index > -1 ? self.events[index][1].type : null;\n const next = tail === \"tableHead\" || tail === \"tableRow\" ? bodyRowStart : headRowBefore;\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code2);\n }\n return next(code2);\n }\n function headRowBefore(code2) {\n effects.enter(\"tableHead\");\n effects.enter(\"tableRow\");\n return headRowStart(code2);\n }\n function headRowStart(code2) {\n if (code2 === 124) {\n return headRowBreak(code2);\n }\n seen = true;\n sizeB += 1;\n return headRowBreak(code2);\n }\n function headRowBreak(code2) {\n if (code2 === null) {\n return nok(code2);\n }\n if (markdownLineEnding(code2)) {\n if (sizeB > 1) {\n sizeB = 0;\n self.interrupt = true;\n effects.exit(\"tableRow\");\n effects.enter(\"lineEnding\");\n effects.consume(code2);\n effects.exit(\"lineEnding\");\n return headDelimiterStart;\n }\n return nok(code2);\n }\n if (markdownSpace(code2)) {\n return factorySpace(effects, headRowBreak, \"whitespace\")(code2);\n }\n sizeB += 1;\n if (seen) {\n seen = false;\n size += 1;\n }\n if (code2 === 124) {\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n seen = true;\n return headRowBreak;\n }\n effects.enter(\"data\");\n return headRowData(code2);\n }\n function headRowData(code2) {\n if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n effects.exit(\"data\");\n return headRowBreak(code2);\n }\n effects.consume(code2);\n return code2 === 92 ? headRowEscape : headRowData;\n }\n function headRowEscape(code2) {\n if (code2 === 92 || code2 === 124) {\n effects.consume(code2);\n return headRowData;\n }\n return headRowData(code2);\n }\n function headDelimiterStart(code2) {\n self.interrupt = false;\n if (self.parser.lazy[self.now().line]) {\n return nok(code2);\n }\n effects.enter(\"tableDelimiterRow\");\n seen = false;\n if (markdownSpace(code2)) {\n return factorySpace(\n effects,\n headDelimiterBefore,\n \"linePrefix\",\n self.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n )(code2);\n }\n return headDelimiterBefore(code2);\n }\n function headDelimiterBefore(code2) {\n if (code2 === 45 || code2 === 58) {\n return headDelimiterValueBefore(code2);\n }\n if (code2 === 124) {\n seen = true;\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n return headDelimiterCellBefore;\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterCellBefore(code2) {\n if (markdownSpace(code2)) {\n return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code2);\n }\n return headDelimiterValueBefore(code2);\n }\n function headDelimiterValueBefore(code2) {\n if (code2 === 58) {\n sizeB += 1;\n seen = true;\n effects.enter(\"tableDelimiterMarker\");\n effects.consume(code2);\n effects.exit(\"tableDelimiterMarker\");\n return headDelimiterLeftAlignmentAfter;\n }\n if (code2 === 45) {\n sizeB += 1;\n return headDelimiterLeftAlignmentAfter(code2);\n }\n if (code2 === null || markdownLineEnding(code2)) {\n return headDelimiterCellAfter(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterLeftAlignmentAfter(code2) {\n if (code2 === 45) {\n effects.enter(\"tableDelimiterFiller\");\n return headDelimiterFiller(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterFiller(code2) {\n if (code2 === 45) {\n effects.consume(code2);\n return headDelimiterFiller;\n }\n if (code2 === 58) {\n seen = true;\n effects.exit(\"tableDelimiterFiller\");\n effects.enter(\"tableDelimiterMarker\");\n effects.consume(code2);\n effects.exit(\"tableDelimiterMarker\");\n return headDelimiterRightAlignmentAfter;\n }\n effects.exit(\"tableDelimiterFiller\");\n return headDelimiterRightAlignmentAfter(code2);\n }\n function headDelimiterRightAlignmentAfter(code2) {\n if (markdownSpace(code2)) {\n return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code2);\n }\n return headDelimiterCellAfter(code2);\n }\n function headDelimiterCellAfter(code2) {\n if (code2 === 124) {\n return headDelimiterBefore(code2);\n }\n if (code2 === null || markdownLineEnding(code2)) {\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code2);\n }\n effects.exit(\"tableDelimiterRow\");\n effects.exit(\"tableHead\");\n return ok2(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterNok(code2) {\n return nok(code2);\n }\n function bodyRowStart(code2) {\n effects.enter(\"tableRow\");\n return bodyRowBreak(code2);\n }\n function bodyRowBreak(code2) {\n if (code2 === 124) {\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n return bodyRowBreak;\n }\n if (code2 === null || markdownLineEnding(code2)) {\n effects.exit(\"tableRow\");\n return ok2(code2);\n }\n if (markdownSpace(code2)) {\n return factorySpace(effects, bodyRowBreak, \"whitespace\")(code2);\n }\n effects.enter(\"data\");\n return bodyRowData(code2);\n }\n function bodyRowData(code2) {\n if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n effects.exit(\"data\");\n return bodyRowBreak(code2);\n }\n effects.consume(code2);\n return code2 === 92 ? bodyRowEscape : bodyRowData;\n }\n function bodyRowEscape(code2) {\n if (code2 === 92 || code2 === 124) {\n effects.consume(code2);\n return bodyRowData;\n }\n return bodyRowData(code2);\n }\n}\nfunction resolveTable(events, context) {\n let index = -1;\n let inFirstCellAwaitingPipe = true;\n let rowKind = 0;\n let lastCell = [0, 0, 0, 0];\n let cell = [0, 0, 0, 0];\n let afterHeadAwaitingFirstBodyRow = false;\n let lastTableEnd = 0;\n let currentTable;\n let currentBody;\n let currentCell;\n const map2 = new EditMap();\n while (++index < events.length) {\n const event = events[index];\n const token = event[1];\n if (event[0] === \"enter\") {\n if (token.type === \"tableHead\") {\n afterHeadAwaitingFirstBodyRow = false;\n if (lastTableEnd !== 0) {\n flushTableEnd(map2, context, lastTableEnd, currentTable, currentBody);\n currentBody = void 0;\n lastTableEnd = 0;\n }\n currentTable = {\n type: \"table\",\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map2.add(index, 0, [[\"enter\", currentTable, context]]);\n } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n inFirstCellAwaitingPipe = true;\n currentCell = void 0;\n lastCell = [0, 0, 0, 0];\n cell = [0, index + 1, 0, 0];\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false;\n currentBody = {\n type: \"tableBody\",\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map2.add(index, 0, [[\"enter\", currentBody, context]]);\n }\n rowKind = token.type === \"tableDelimiterRow\" ? 2 : currentBody ? 3 : 1;\n } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n inFirstCellAwaitingPipe = false;\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n void 0,\n currentCell\n );\n lastCell = [0, 0, 0, 0];\n }\n cell[2] = index;\n }\n } else if (token.type === \"tableCellDivider\") {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false;\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n void 0,\n currentCell\n );\n }\n lastCell = cell;\n cell = [lastCell[1], index, 0, 0];\n }\n }\n } else if (token.type === \"tableHead\") {\n afterHeadAwaitingFirstBodyRow = true;\n lastTableEnd = index;\n } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n lastTableEnd = index;\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n index,\n currentCell\n );\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map2, context, cell, rowKind, index, currentCell);\n }\n rowKind = 0;\n } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n cell[3] = index;\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map2, context, lastTableEnd, currentTable, currentBody);\n }\n map2.consume(context.events);\n index = -1;\n while (++index < context.events.length) {\n const event = context.events[index];\n if (event[0] === \"enter\" && event[1].type === \"table\") {\n event[1]._align = gfmTableAlign(context.events, index);\n }\n }\n return events;\n}\nfunction flushCell(map2, context, range, rowKind, rowEnd, previousCell) {\n const groupName = rowKind === 1 ? \"tableHeader\" : rowKind === 2 ? \"tableDelimiter\" : \"tableData\";\n const valueName = \"tableContent\";\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n map2.add(range[0], 0, [[\"exit\", previousCell, context]]);\n }\n const now = getPoint(context.events, range[1]);\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n };\n map2.add(range[1], 0, [[\"enter\", previousCell, context]]);\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2]);\n const relatedEnd = getPoint(context.events, range[3]);\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n };\n map2.add(range[2], 0, [[\"enter\", valueToken, context]]);\n if (rowKind !== 2) {\n const start = context.events[range[2]];\n const end = context.events[range[3]];\n start[1].end = Object.assign({}, end[1].end);\n start[1].type = \"chunkText\";\n start[1].contentType = \"text\";\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1;\n const b = range[3] - range[2] - 1;\n map2.add(a, b, []);\n }\n }\n map2.add(range[3] + 1, 0, [[\"exit\", valueToken, context]]);\n }\n if (rowEnd !== void 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n map2.add(rowEnd, 0, [[\"exit\", previousCell, context]]);\n previousCell = void 0;\n }\n return previousCell;\n}\nfunction flushTableEnd(map2, context, index, table, tableBody) {\n const exits = [];\n const related = getPoint(context.events, index);\n if (tableBody) {\n tableBody.end = Object.assign({}, related);\n exits.push([\"exit\", tableBody, context]);\n }\n table.end = Object.assign({}, related);\n exits.push([\"exit\", table, context]);\n map2.add(index + 1, 0, exits);\n}\nfunction getPoint(events, index) {\n const event = events[index];\n const side = event[0] === \"enter\" ? \"start\" : \"end\";\n return event[1][side];\n}\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n};\nfunction gfmTaskListItem() {\n return {\n text: {\n [91]: tasklistCheck\n }\n };\n}\nfunction tokenizeTasklistCheck(effects, ok2, nok) {\n const self = this;\n return open;\n function open(code2) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null || // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code2);\n }\n effects.enter(\"taskListCheck\");\n effects.enter(\"taskListCheckMarker\");\n effects.consume(code2);\n effects.exit(\"taskListCheckMarker\");\n return inside;\n }\n function inside(code2) {\n if (markdownLineEndingOrSpace(code2)) {\n effects.enter(\"taskListCheckValueUnchecked\");\n effects.consume(code2);\n effects.exit(\"taskListCheckValueUnchecked\");\n return close;\n }\n if (code2 === 88 || code2 === 120) {\n effects.enter(\"taskListCheckValueChecked\");\n effects.consume(code2);\n effects.exit(\"taskListCheckValueChecked\");\n return close;\n }\n return nok(code2);\n }\n function close(code2) {\n if (code2 === 93) {\n effects.enter(\"taskListCheckMarker\");\n effects.consume(code2);\n effects.exit(\"taskListCheckMarker\");\n effects.exit(\"taskListCheck\");\n return after;\n }\n return nok(code2);\n }\n function after(code2) {\n if (markdownLineEnding(code2)) {\n return ok2(code2);\n }\n if (markdownSpace(code2)) {\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok2,\n nok\n )(code2);\n }\n return nok(code2);\n }\n}\nfunction spaceThenNonSpace(effects, ok2, nok) {\n return factorySpace(effects, after, \"whitespace\");\n function after(code2) {\n return code2 === null ? nok(code2) : ok2(code2);\n }\n}\nfunction gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral(),\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable(),\n gfmTaskListItem()\n ]);\n}\nconst emptyOptions = {};\nfunction remarkGfm(options) {\n const self = (\n /** @type {Processor} */\n this\n );\n const settings = options || emptyOptions;\n const data = self.data();\n const micromarkExtensions = data.micromarkExtensions || (data.micromarkExtensions = []);\n const fromMarkdownExtensions = data.fromMarkdownExtensions || (data.fromMarkdownExtensions = []);\n const toMarkdownExtensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);\n micromarkExtensions.push(gfm(settings));\n fromMarkdownExtensions.push(gfmFromMarkdown());\n toMarkdownExtensions.push(gfmToMarkdown(settings));\n}\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcRichTextCopyButton\",\n props: {\n contentId: null\n },\n setup(__props) {\n const props = __props;\n const { copy, icon, altText } = useCopy(() => document.getElementById(props.contentId).textContent);\n return { __sfc: true, props, copy, icon, altText, NcButton, NcIconSvgWrapper };\n }\n});\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcButton, { attrs: { \"variant\": \"tertiary\", \"size\": \"small\", \"aria-label\": _setup.altText, \"title\": _setup.altText }, on: { \"click\": _setup.copy }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.icon, \"inline\": \"\" } })];\n }, proxy: true }]) });\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst NcRichTextCopyButton = __component__$1.exports;\nfunction remarkPlaceholder() {\n return function(ast) {\n visitParents(ast, (node) => node.type === \"text\", visitor);\n function visitor(node, ancestors) {\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node);\n const placeholders = node.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry) => {\n const matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n if (!matches) {\n return u(\"text\", entry);\n }\n const [, component] = matches;\n return u(\"element\", {\n tagName: `#${component}`\n });\n });\n parent.children.splice(index, 1, ...placeholders);\n }\n };\n}\nfunction prepareTextNode({ h, context }, text2) {\n if (context.autolink) {\n text2 = parseUrl(text2);\n }\n if (Array.isArray(text2)) {\n return text2.map((entry) => {\n if (typeof entry === \"string\") {\n return entry;\n }\n const { component, props } = entry;\n return h(component, {\n props,\n class: \"rich-text--component\"\n });\n });\n }\n return text2;\n}\n/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction isCodeNode(node) {\n return [\"code\", \"inlineCode\"].includes(node.type);\n}\nconst remarkStripCode = function() {\n return function(tree) {\n visitParents(tree, isCodeNode, (node, ancestors) => {\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node);\n parent.children.splice(index, 1, {\n ...node,\n value: \"\"\n });\n return [SKIP, index + 1];\n });\n };\n};\nfunction remarkUnescape() {\n return function(tree) {\n visitParents(tree, (node) => [\"text\", \"code\", \"inlineCode\"].includes(node.type), (node, ancestors) => {\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node);\n parent.children.splice(index, 1, {\n ...node,\n value: node.value.replace(/</gmi, \"<\").replace(/>/gmi, \">\")\n });\n return [SKIP, index + 1];\n });\n };\n}\nconst LINK_PROTOCOLS = [\"http\", \"https\", \"mailto\", \"tel\"];\nconst rehypeHighlight = ref(null);\nasync function importRehypeHighlightLibrary() {\n const module = await import(\"rehype-highlight\");\n rehypeHighlight.value = module.default;\n}\nconst _sfc_main = {\n name: \"NcRichText\",\n components: {\n NcReferenceList\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n text: {\n type: String,\n default: \"\"\n },\n arguments: {\n type: Object,\n default: () => {\n return {};\n }\n },\n referenceLimit: {\n type: Number,\n default: 0\n },\n referenceInteractive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n referenceInteractiveOptIn: {\n type: Boolean,\n default: false\n },\n /** Provide data upfront to avoid extra http request */\n references: {\n type: Array,\n default: null\n },\n /** Provide basic Markdown syntax */\n useMarkdown: {\n type: Boolean,\n default: false\n },\n /** Provide GitHub Flavored Markdown syntax */\n useExtendedMarkdown: {\n type: Boolean,\n default: false\n },\n /** Provide event from rendered markdown inputs */\n interactive: {\n type: Boolean,\n default: false\n },\n autolink: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"interact-todo\",\n \"interact:todo\"\n ],\n data() {\n return {\n parentId: GenRandomId(5)\n };\n },\n methods: {\n renderPlaintext(h) {\n const placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry) => {\n const matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n if (!matches) {\n return prepareTextNode({ h, context: this }, entry);\n }\n const argumentId = matches[1];\n const argument = this.arguments[argumentId];\n if (typeof argument === \"object\") {\n const { component, props } = argument;\n return h(component, {\n props,\n class: \"rich-text--component\"\n });\n }\n if (argument) {\n return h(\"span\", { class: \"rich-text--fallback\" }, argument);\n }\n return entry;\n });\n return h(\"div\", { class: \"rich-text--wrapper\" }, [\n h(\"div\", {}, placeholders.flat()),\n this.referenceLimit > 0 ? h(\"div\", { class: \"rich-text--reference-widget\" }, [\n h(NcReferenceList, {\n props: {\n text: this.text,\n referenceData: this.references,\n interactive: this.referenceInteractive,\n interactiveOptIn: this.referenceInteractiveOptIn\n }\n })\n ]) : null\n ]);\n },\n renderMarkdown(h) {\n const renderedMarkdown = unified().use(remarkParse).use(remarkAutolink, {\n autolink: this.autolink,\n useMarkdown: this.useMarkdown,\n useExtendedMarkdown: this.useExtendedMarkdown\n }).use(remarkUnescape).use(this.useExtendedMarkdown ? remarkGfm : void 0).use(breaks).use(remarkUnlinkProtocols, { except: LINK_PROTOCOLS }).use(remark2rehype, {\n handlers: {\n component(toHast, node) {\n return toHast(node, node.component, { value: node.value });\n }\n }\n }).use(this.useExtendedMarkdown ? rehypeHighlight.value : void 0).use(remarkPlaceholder).use(rehypeExternalLinks, {\n target: \"_blank\",\n rel: [\"noopener noreferrer\"]\n }).use(rehype2react, {\n createElement: (tag, attrs, children) => {\n if (!tag.startsWith(\"#\")) {\n if ([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(tag)) {\n tag = `h${Math.min(+String(tag)[1] + 3, 6)}`;\n }\n if (this.useExtendedMarkdown) {\n if (tag === \"code\" && !rehypeHighlight.value && attrs?.attrs?.class?.includes(\"language\")) {\n importRehypeHighlightLibrary();\n }\n if (tag === \"pre\" && Array.isArray(children) && children[0].tag === \"code\") {\n const id = this.parentId + \"-code-block-\" + GenRandomId(5);\n return h(\"p\", { class: \"rich-text__code-block\" }, [\n h(tag, { attrs: { ...attrs, id } }, children),\n h(NcRichTextCopyButton, {\n props: { contentId: id },\n class: \"rich-text__code-block-button\"\n })\n ]);\n }\n let nestedNode = null;\n if (tag === \"li\" && Array.isArray(children) && children[0].tag === \"input\" && children[0].data.attrs.type === \"checkbox\") {\n const [inputNode, ...labelParts] = children;\n const nestedNodeIndex = labelParts.findIndex((child) => [\"ul\", \"ol\", \"li\", \"blockquote\", \"pre\"].includes(child.tag));\n if (nestedNodeIndex !== -1) {\n nestedNode = labelParts[nestedNodeIndex];\n labelParts.splice(nestedNodeIndex);\n }\n const id = this.parentId + \"-markdown-input-\" + GenRandomId(5);\n const inputComponent = h(NcCheckboxRadioSwitch, {\n attrs: {\n ...inputNode.data.attrs,\n id,\n disabled: !this.interactive\n },\n on: {\n \"update:checked\": () => {\n this.$emit(\"interact-todo\", id);\n this.$emit(\"interact:todo\", id);\n }\n }\n }, labelParts);\n return h(tag, attrs, [inputComponent, nestedNode]);\n }\n }\n if (tag === \"a\") {\n const route = getRoute(this.$router, attrs.attrs.href);\n if (route) {\n delete attrs.attrs.href;\n delete attrs.attrs.target;\n return h(RouterLink, {\n ...attrs,\n props: {\n to: route\n }\n }, children);\n }\n const isAllowedScheme = /^(https?:\\/\\/|tel:|mailto:)/.test(attrs.attrs.href);\n if (isAllowedScheme) {\n attrs.attrs.href = attrs.attrs.href.trim();\n return h(NcRichTextExternalLink, attrs, children);\n } else {\n delete attrs.attrs.href;\n delete attrs.attrs.target;\n return h(\"span\", attrs, children);\n }\n }\n return h(tag, attrs, children);\n }\n const placeholder = this.arguments[tag.slice(1)];\n if (!placeholder) {\n return h(\"span\", { ...{ attrs }, ...{ class: \"rich-text--fallback\" } }, [`{${tag.slice(1)}}`]);\n }\n if (!placeholder.component) {\n return h(\"span\", attrs, [placeholder]);\n }\n return h(\n placeholder.component,\n {\n attrs,\n props: placeholder.props,\n class: \"rich-text--component\"\n },\n children\n );\n },\n prefix: false\n }).processSync(this.text.replace(/<[^>]+>/g, (match) => match.replace(/\")).result;\n return h(\"div\", { class: \"rich-text--wrapper rich-text--wrapper-markdown\" }, [\n renderedMarkdown,\n this.referenceLimit > 0 ? h(\"div\", { class: \"rich-text--reference-widget\" }, [\n h(NcReferenceList, {\n props: {\n text: this.prepareReferenceSource(this.text),\n referenceData: this.references,\n interactive: this.referenceInteractive,\n interactiveOptIn: this.referenceInteractiveOptIn\n }\n })\n ]) : null\n ]);\n },\n /**\n * Strip content of inline code and code blocks for reference widgets\n * (e.g. ignore fenced links from being added as reference)\n *\n * @param {string} text - Content of the node\n */\n prepareReferenceSource(text2) {\n if (!this.useMarkdown && !this.useExtendedMarkdown) {\n return text2;\n }\n const processor = unified();\n processor.compiler = (tree) => toString(tree);\n return processor.use(remarkParse).use(remarkStripCode).processSync(text2.replace(/\\s/g, \" \")).value;\n }\n },\n render(h) {\n return this.useMarkdown || this.useExtendedMarkdown ? this.renderMarkdown(h) : this.renderPlaintext(h);\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"e55203a2\"\n);\nconst NcRichText = __component__.exports;\nexport {\n NcRichText as N,\n NcReferenceList as a\n};\n//# sourceMappingURL=NcRichText-DBkCEk0k.mjs.map\n","import '../assets/NcProfileHoverCard-DRXYrr0i.css';\nimport { defineComponent, ref, computed, watch, onMounted } from \"vue\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { generateUrl, generateOcsUrl } from \"@nextcloud/router\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-DJ-fERS3.mjs\";\nimport NcActionLink from \"../Components/NcActionLink.mjs\";\nimport NcActionRouter from \"../Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./NcActions-C4f9MXug.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-BbHwxwyd.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { N as NcRichText } from \"./NcRichText-DBkCEk0k.mjs\";\nimport { useIsSmallMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, U as t23, a as t } from \"./_l10n-Dv1YKfKS.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nconst _sfc_main$4 = {\n name: \"BriefcaseOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon briefcase-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e(), _c(\"path\", { attrs: { \"d\": \"M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z\" } })])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst BriefcaseIcon = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"ClockOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon clock-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e(), _c(\"path\", { attrs: { \"d\": \"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\" } })])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst ClockIcon = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"MapMarkerOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon map-marker-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e(), _c(\"path\", { attrs: { \"d\": \"M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z\" } })])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst MapMarkerIcon = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"PencilOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon pencil-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e(), _c(\"path\", { attrs: { \"d\": \"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z\" } })])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst PencilIcon = __component__$1.exports;\nregister(t23);\n/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst PROFILE_CACHE_TTL_MS = 30 * 60 * 1e3;\nconst cache = /* @__PURE__ */ new Map();\nconst inflight = /* @__PURE__ */ new Map();\nfunction getCachedProfile(userId) {\n const entry = cache.get(userId);\n if (!entry) {\n return null;\n }\n if (Date.now() >= entry.expiresAt) {\n cache.delete(userId);\n return null;\n }\n return entry.data;\n}\nfunction setCachedProfile(userId, data, ttlMs = PROFILE_CACHE_TTL_MS) {\n cache.set(userId, {\n data,\n expiresAt: Date.now() + ttlMs\n });\n}\nasync function fetchProfileCached(userId, fetcher, ttlMs = PROFILE_CACHE_TTL_MS) {\n const cached = getCachedProfile(userId);\n if (cached) {\n return cached;\n }\n const pending = inflight.get(userId);\n if (pending) {\n return pending;\n }\n const promise = (async () => {\n try {\n const data = await fetcher();\n if (data) {\n setCachedProfile(userId, data, ttlMs);\n }\n return data;\n } finally {\n inflight.delete(userId);\n }\n })();\n inflight.set(userId, promise);\n return promise;\n}\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcProfileHoverCard\",\n props: {\n user: { default: null },\n displayName: { default: null },\n profile: { default: null },\n preloadedUserStatus: { default: null },\n open: { type: Boolean, default: false },\n actions: { default: null },\n actionsLoading: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = __props;\n const loading = ref(false);\n const error = ref(false);\n const profileData = ref(props.profile);\n const userStatus = ref(props.preloadedUserStatus ?? {});\n const profileEnabled = ref(!!props.profile);\n const userStatusReady = ref(props.preloadedUserStatus !== null);\n const isMobile = useIsSmallMobile();\n const showLoading = computed(() => loading.value || !!profileData.value && !error.value && !userStatusReady.value);\n if (props.user && props.profile) {\n setCachedProfile(props.user, props.profile);\n }\n const isCurrentUser = computed(() => !!props.user && getCurrentUser()?.uid === props.user);\n const settingsUrl = generateUrl(\"/settings/user\");\n const profileUrl = computed(() => {\n if (!profileEnabled.value) {\n return null;\n }\n const userId = profileData.value?.userId || props.user;\n if (!userId) {\n return null;\n }\n return generateUrl(\"/u/{userId}\", { userId });\n });\n const resolvedDisplayName = computed(() => profileData.value?.displayname || props.displayName || profileData.value?.userId || props.user || \"\");\n const profileLinkProps = computed(() => {\n if (!profileUrl.value) {\n return {};\n }\n return {\n href: profileUrl.value,\n \"aria-label\": t(\"View profile\")\n };\n });\n function isSidebarAction(action) {\n return action.appId !== \"timezone\" && action.appId !== \"profile\" && action.id !== \"profile\";\n }\n function actionDisplayText(action) {\n if (isCurrentUser.value) {\n return action.text;\n }\n if (action.id === \"talk-call\" || isSpreedDirectCallAction(action)) {\n return t(\"Start call\");\n }\n if (action.id === \"talk\" || action.appId === \"spreed\") {\n return t(\"Send message\");\n }\n return action.text;\n }\n function isSpreedDirectCallAction(action) {\n if (action.appId !== \"spreed\") {\n return false;\n }\n const href = action.href ?? (typeof action.to === \"string\" ? action.to : \"\");\n return typeof href === \"string\" && href.includes(\"#direct-call\");\n }\n const resolvedActions = computed(() => {\n if (props.actions && props.actions.length > 0) {\n return props.actions.filter(isSidebarAction);\n }\n return (profileData.value?.actions ?? []).filter(isSidebarAction).map((action) => ({\n id: action.id,\n appId: action.appId,\n text: action.title,\n href: action.target || void 0,\n icon: action.icon,\n target: action.id === \"phone\" ? \"_self\" : \"_blank\",\n rel: action.id === \"fediverse\" ? \"me\" : void 0\n }));\n });\n const localTimeLabel = computed(() => {\n const time = formatProfileLocalTime(/* @__PURE__ */ new Date());\n if (!time) {\n return null;\n }\n return t(\"Local time: {time}\", { time });\n });\n const primaryAction = computed(() => resolvedActions.value[0]);\n const otherActions = computed(() => resolvedActions.value.slice(1));\n const primaryActionButtonProps = computed(() => {\n const action = primaryAction.value;\n if (!action) {\n return {};\n }\n if (action.to) {\n return { to: action.to };\n }\n if (action.href) {\n return {\n href: action.href,\n target: action.target ?? (action.href.startsWith(\"tel:\") ? \"_self\" : \"_blank\"),\n rel: action.rel\n };\n }\n return {};\n });\n const avatarUserStatus = computed(() => ({\n status: userStatus.value.status ?? null,\n icon: userStatus.value.icon ?? null,\n message: userStatus.value.message ?? null\n }));\n function formatProfileLocalTime(date) {\n const timeZone = profileData.value?.timezone;\n if (timeZone) {\n try {\n return new Intl.DateTimeFormat(getCanonicalLocale(), {\n timeZone,\n hour: \"2-digit\",\n minute: \"2-digit\"\n }).format(date);\n } catch {\n }\n }\n if (typeof profileData.value?.timezoneOffset === \"number\") {\n const shifted = new Date(date.getTime() + profileData.value.timezoneOffset * 1e3);\n return new Intl.DateTimeFormat(getCanonicalLocale(), {\n timeZone: \"UTC\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n }).format(shifted);\n }\n return null;\n }\n function isIconUrl(icon) {\n return !!icon && (/^(https?:)?\\/\\//.test(icon) || icon.startsWith(\"/\") || icon.startsWith(\"data:\"));\n }\n function otherActionComponent(action) {\n if (action.to) {\n return NcActionRouter;\n }\n if (action.onClick && !action.href) {\n return NcActionButton;\n }\n return NcActionLink;\n }\n function otherActionProps(action) {\n if (action.to) {\n return { to: action.to, closeAfterClick: true };\n }\n if (action.onClick && !action.href) {\n return { closeAfterClick: true };\n }\n return {\n href: action.href,\n target: action.target ?? (action.href?.startsWith(\"tel:\") ? \"_self\" : \"_blank\"),\n rel: action.rel,\n closeAfterClick: true\n };\n }\n watch(() => props.profile, (value) => {\n if (value) {\n profileData.value = value;\n profileEnabled.value = true;\n if (props.user) {\n setCachedProfile(props.user, value);\n }\n error.value = false;\n }\n });\n watch(() => props.preloadedUserStatus, (value) => {\n if (value) {\n userStatus.value = value;\n userStatusReady.value = true;\n }\n });\n watch(() => props.displayName, (value) => {\n if (value && profileData.value && !profileEnabled.value) {\n profileData.value = { ...profileData.value, displayname: value };\n }\n });\n watch(() => props.user, () => {\n profileData.value = props.profile;\n userStatus.value = props.preloadedUserStatus ?? {};\n userStatusReady.value = props.preloadedUserStatus !== null;\n profileEnabled.value = !!props.profile;\n error.value = false;\n if (props.user && props.profile) {\n setCachedProfile(props.user, props.profile);\n }\n if (props.open) {\n loadProfile();\n }\n });\n watch(() => props.open, (isOpen) => {\n if (isOpen) {\n loadProfile();\n }\n });\n onMounted(() => {\n if (props.open) {\n loadProfile();\n }\n });\n async function resolveDisplayName(userId) {\n if (props.displayName) {\n return props.displayName;\n }\n try {\n const { data } = await axios.post(generateUrl(\"/displaynames\"), { users: [userId] });\n return data?.users?.[userId] || userId;\n } catch (e) {\n logger.debug(\"Failed to load display name for hovercard\", { error: e, userId });\n return userId;\n }\n }\n async function createLimitedProfile(userId) {\n return {\n userId,\n displayname: await resolveDisplayName(userId),\n actions: [],\n isUserAvatarVisible: true\n };\n }\n async function ensureUserStatus(userId) {\n if (!userStatusReady.value) {\n userStatus.value = await fetchUserStatus(userId);\n userStatusReady.value = true;\n }\n }\n async function loadProfile() {\n if (!props.user || loading.value) {\n return;\n }\n const userId = props.user;\n if (!profileData.value) {\n const cached = getCachedProfile(userId);\n if (cached) {\n profileData.value = cached;\n profileEnabled.value = true;\n }\n }\n if (profileData.value && profileEnabled.value) {\n if (!userStatusReady.value) {\n loading.value = true;\n try {\n await ensureUserStatus(userId);\n } finally {\n loading.value = false;\n }\n }\n return;\n }\n loading.value = true;\n error.value = false;\n const statusPromise = userStatusReady.value ? Promise.resolve(userStatus.value) : fetchUserStatus(userId);\n try {\n const profile = await fetchProfileCached(userId, async () => {\n const { data } = await axios.get(generateOcsUrl(\"/profile/{userId}\", { userId }));\n return data.ocs?.data ?? null;\n });\n if (profile) {\n profileData.value = profile;\n profileEnabled.value = true;\n } else {\n profileData.value = await createLimitedProfile(userId);\n profileEnabled.value = false;\n }\n } catch (e) {\n logger.debug(\"Failed to load profile for hovercard, showing limited info\", { error: e, user: userId });\n profileData.value = await createLimitedProfile(userId);\n profileEnabled.value = false;\n }\n try {\n userStatus.value = await statusPromise;\n userStatusReady.value = true;\n } finally {\n loading.value = false;\n }\n }\n async function fetchUserStatus(userId) {\n try {\n if (!getCapabilities()?.user_status?.enabled || !getCurrentUser()) {\n return {};\n }\n const { data } = await axios.get(generateOcsUrl(\"/apps/user_status/api/v1/statuses/{userId}\", { userId }));\n return data.ocs?.data ?? {};\n } catch (e) {\n logger.debug(\"Failed to load user status for hovercard\", { error: e, userId });\n return {};\n }\n }\n return { __sfc: true, props, loading, error, profileData, userStatus, profileEnabled, userStatusReady, isMobile, showLoading, isCurrentUser, settingsUrl, profileUrl, resolvedDisplayName, profileLinkProps, isSidebarAction, actionDisplayText, isSpreedDirectCallAction, resolvedActions, localTimeLabel, primaryAction, otherActions, primaryActionButtonProps, avatarUserStatus, formatProfileLocalTime, isIconUrl, otherActionComponent, otherActionProps, resolveDisplayName, createLimitedProfile, ensureUserStatus, loadProfile, fetchUserStatus, BriefcaseIcon, ClockIcon, MapMarkerIcon, PencilIcon, NcActions, NcAvatar, NcButton, NcLoadingIcon, NcRichText, t, NcIconSvgWrapper };\n }\n});\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { staticClass: \"profile-hover-card\", class: { \"profile-hover-card--limited\": !_setup.showLoading && !!_setup.profileData && !_setup.error && !_setup.profileEnabled }, attrs: { \"role\": \"dialog\", \"aria-label\": _setup.t(\"Profile of {user}\", { user: _setup.resolvedDisplayName }) } }, [_setup.showLoading ? _c(\"div\", { staticClass: \"profile-hover-card__loading\" }, [_c(_setup.NcLoadingIcon, { attrs: { \"size\": 32, \"name\": _setup.t(\"Loading profile\") } })], 1) : _setup.profileData && !_setup.error ? [_c(\"div\", { staticClass: \"profile-hover-card__header\" }, [_setup.isCurrentUser ? _c(_setup.NcButton, { staticClass: \"profile-hover-card__header__edit\", attrs: { \"variant\": \"tertiary\", \"aria-label\": _setup.t(\"Edit profile\"), \"title\": _setup.t(\"Edit profile\"), \"href\": _setup.settingsUrl, \"target\": \"_blank\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.PencilIcon, { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3660207582) }) : _vm._e(), _c(\"div\", { staticClass: \"profile-hover-card__header__container\" }, [_setup.isMobile ? _c(_setup.profileUrl ? \"a\" : \"div\", _vm._b({ tag: \"component\", staticClass: \"profile-hover-card__header__container__avatar\", class: { \"profile-hover-card__profile-link\": !!_setup.profileUrl } }, \"component\", _setup.profileLinkProps, false), [_c(_setup.NcAvatar, { staticClass: \"avatar\", attrs: { \"user\": _setup.profileData.userId, \"displayName\": _setup.resolvedDisplayName, \"size\": 96, \"disableMenu\": \"\", \"disableTooltip\": \"\", \"preloadedUserStatus\": _setup.avatarUserStatus, \"isNoUser\": !_setup.profileData.isUserAvatarVisible } })], 1) : _c(\"div\", { staticClass: \"profile-hover-card__header__container__placeholder\" }), _c(\"div\", { staticClass: \"profile-hover-card__header__container__identity\" }, [_c(\"div\", { staticClass: \"profile-hover-card__header__container__displayname\" }, [_setup.profileUrl ? _c(\"a\", { staticClass: \"profile-hover-card__profile-link\", attrs: { \"href\": _setup.profileUrl } }, [_c(\"h2\", [_vm._v(_vm._s(_setup.resolvedDisplayName))])]) : _c(\"h2\", [_vm._v(_vm._s(_setup.resolvedDisplayName))]), _setup.profileData.pronouns ? _c(\"span\", { staticClass: \"profile-hover-card__header__container__pronoun-separator\" }, [_vm._v(\"·\")]) : _vm._e(), _setup.profileData.pronouns ? _c(\"span\", { staticClass: \"profile-hover-card__header__container__pronouns\" }, [_vm._v(_vm._s(_setup.profileData.pronouns))]) : _vm._e()]), _setup.userStatus.icon || _setup.userStatus.message ? _c(\"div\", { staticClass: \"profile-hover-card__header__container__status\" }, [_c(\"span\", { staticClass: \"profile-hover-card__header__container__status-content\" }, [_c(\"span\", [_vm._v(_vm._s(_setup.userStatus.icon) + \" \" + _vm._s(_setup.userStatus.message))])])]) : _vm._e()])], 1)], 1), _c(\"div\", { staticClass: \"profile-hover-card__body\" }, [_c(\"div\", { staticClass: \"profile-hover-card__content\" }, [_c(\"div\", { staticClass: \"profile-hover-card__sidebar\" }, [!_setup.isMobile ? _c(_setup.profileUrl ? \"a\" : \"div\", _vm._b({ tag: \"component\", class: { \"profile-hover-card__profile-link\": !!_setup.profileUrl } }, \"component\", _setup.profileLinkProps, false), [_c(_setup.NcAvatar, { staticClass: \"avatar\", attrs: { \"user\": _setup.profileData.userId, \"displayName\": _setup.resolvedDisplayName, \"size\": 135, \"disableMenu\": \"\", \"disableTooltip\": \"\", \"preloadedUserStatus\": _setup.avatarUserStatus, \"isNoUser\": !_setup.profileData.isUserAvatarVisible } })], 1) : _vm._e(), _c(\"div\", { staticClass: \"user-actions\" }, [_vm.actionsLoading && _setup.resolvedActions.length === 0 ? _c(\"div\", { staticClass: \"user-actions__loading\" }, [_c(_setup.NcLoadingIcon, { attrs: { \"size\": 20, \"name\": _setup.t(\"Loading actions\") } })], 1) : [_setup.primaryAction ? _c(_setup.NcButton, _vm._b({ staticClass: \"user-actions__primary\", attrs: { \"variant\": \"primary\" }, on: { \"click\": _setup.primaryAction.onClick }, scopedSlots: _vm._u([_setup.primaryAction.iconSvg || _setup.primaryAction.icon ? { key: \"icon\", fn: function() {\n return [_setup.primaryAction.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": _setup.primaryAction.iconSvg } }) : _setup.isIconUrl(_setup.primaryAction.icon) ? _c(\"img\", { staticClass: \"user-actions__primary__icon\", attrs: { \"src\": _setup.primaryAction.icon, \"alt\": \"\" } }) : _c(\"span\", { staticClass: \"user-actions__primary__icon-class\", class: _setup.primaryAction.icon, attrs: { \"aria-hidden\": \"true\" } })];\n }, proxy: true } : null], null, true) }, \"NcButton\", _setup.primaryActionButtonProps, false), [_vm._v(\" \" + _vm._s(_setup.actionDisplayText(_setup.primaryAction)) + \" \")]) : _vm._e(), _setup.otherActions.length > 0 ? _c(_setup.NcActions, { staticClass: \"user-actions__other\", attrs: { \"inline\": _setup.isMobile ? 5 : 4 } }, _vm._l(_setup.otherActions, function(action, index) {\n return _c(_setup.otherActionComponent(action), _vm._b({ key: action.id || action.href || index, tag: \"component\", on: { \"click\": action.onClick }, scopedSlots: _vm._u([action.iconSvg || action.icon ? { key: \"icon\", fn: function() {\n return [action.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": action.iconSvg } }) : _setup.isIconUrl(action.icon) ? _c(\"img\", { staticClass: \"user-actions__other__icon\", attrs: { \"src\": action.icon, \"alt\": \"\" } }) : _c(\"span\", { staticClass: \"user-actions__other__icon-class\", class: action.icon, attrs: { \"aria-hidden\": \"true\" } })];\n }, proxy: true } : null], null, true) }, \"component\", _setup.otherActionProps(action), false), [_vm._v(\" \" + _vm._s(_setup.actionDisplayText(action)) + \" \")]);\n }), 1) : _vm._e()]], 2)], 1), _setup.profileEnabled ? _c(\"div\", { staticClass: \"profile-hover-card__blocks\" }, [_setup.profileData.organisation || _setup.profileData.role || _setup.profileData.address || _setup.localTimeLabel ? _c(\"div\", { staticClass: \"profile-hover-card__blocks-details\" }, [_setup.profileData.organisation || _setup.profileData.role ? _c(\"div\", { staticClass: \"detail\" }, [_c(\"p\", [_c(_setup.BriefcaseIcon, { staticClass: \"detail-icon\", attrs: { \"size\": 16, \"title\": \"\" } }), _vm._v(\" \" + _vm._s(_setup.profileData.organisation) + \" \"), _setup.profileData.organisation && _setup.profileData.role ? _c(\"span\", [_vm._v(\"•\")]) : _vm._e(), _vm._v(\" \" + _vm._s(_setup.profileData.role) + \" \")], 1)]) : _vm._e(), _setup.profileData.address ? _c(\"div\", { staticClass: \"detail\" }, [_c(\"p\", [_c(_setup.MapMarkerIcon, { staticClass: \"detail-icon\", attrs: { \"size\": 16, \"title\": \"\" } }), _vm._v(\" \" + _vm._s(_setup.profileData.address) + \" \")], 1)]) : _vm._e(), _setup.localTimeLabel ? _c(\"div\", { staticClass: \"detail\" }, [_c(\"p\", [_c(_setup.ClockIcon, { staticClass: \"detail-icon\", attrs: { \"size\": 16, \"title\": \"\" } }), _vm._v(\" \" + _vm._s(_setup.localTimeLabel) + \" \")], 1)]) : _vm._e()]) : _vm._e(), _setup.profileData.headline || _setup.profileData.biography ? [_setup.profileData.headline ? _c(\"h3\", { staticClass: \"profile-hover-card__blocks-headline\" }, [_vm._v(\" \" + _vm._s(_setup.profileData.headline) + \" \")]) : _vm._e(), _setup.profileData.biography ? _c(\"div\", { staticClass: \"profile-hover-card__blocks-biography\" }, [_c(_setup.NcRichText, { attrs: { \"text\": _setup.profileData.biography, \"useExtendedMarkdown\": \"\" } })], 1) : _vm._e()] : _vm._e()], 2) : _vm._e()])])] : _vm._e()], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"b8355b88\"\n);\nconst NcProfileHoverCard = __component__.exports;\nexport {\n NcProfileHoverCard as default\n};\n//# sourceMappingURL=NcProfileHoverCard-nmkKoCB1.mjs.map\n","import '../assets/NcProgressBar-CU_ib_HL.css';\nimport { useCssVars } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst __default__ = {\n name: \"NcProgressBar\",\n props: {\n /**\n * An integer between 1 and 100\n */\n value: {\n type: Number,\n default: 0,\n validator(value) {\n return value >= 0 && value <= 100;\n }\n },\n /**\n * Determines the height of the progressbar.\n * Possible values:\n * - 'small' (default)\n * - 'medium'\n * - Number\n *\n * @type {'small'|'medium'|number}\n */\n size: {\n type: [String, Number],\n default: \"small\",\n validator(value) {\n return [\"small\", \"medium\"].includes(value) || typeof value === \"number\";\n }\n },\n /**\n * Applies an error color to the progressbar if true.\n */\n error: {\n type: Boolean,\n default: false\n },\n /**\n * ProgressBar type\n */\n type: {\n type: String,\n default: \"linear\",\n validator(value) {\n return [\"linear\", \"circular\"].includes(value);\n }\n },\n /**\n * The color of the progress bar\n */\n color: {\n type: String,\n default: null\n }\n },\n data() {\n return {\n stroke: 4\n };\n },\n computed: {\n height() {\n if (this.type === \"circular\") {\n if (Number.isInteger(this.size)) {\n return this.size;\n }\n return 44;\n }\n if (this.size === \"small\") {\n return 4;\n } else if (this.size === \"medium\") {\n return 6;\n }\n return this.size;\n },\n progress() {\n return this.value / 100;\n },\n radius() {\n return this.height / 2;\n },\n radiusNormalized() {\n return this.radius - 3 * this.stroke;\n },\n circumference() {\n return this.radiusNormalized * 2 * Math.PI;\n }\n }\n};\nconst __injectCSSVars__ = () => {\n useCssVars((_vm, _setup) => ({\n \"15a054de\": _vm.color\n }));\n};\nconst __setup__ = __default__.setup;\n__default__.setup = __setup__ ? (props, ctx) => {\n __injectCSSVars__();\n return __setup__(props, ctx);\n} : __injectCSSVars__;\nconst _sfc_main = __default__;\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _vm.type === \"circular\" ? _c(\"span\", { staticClass: \"progress-bar progress-bar--circular\", class: { \"progress-bar--error\": _vm.error }, style: { \"--progress-bar-height\": _vm.height + \"px\" }, attrs: { \"role\": \"progressbar\", \"aria-valuenow\": _vm.value } }, [_c(\"svg\", { attrs: { \"height\": _vm.height, \"width\": _vm.height } }, [_c(\"circle\", { attrs: { \"stroke\": \"currentColor\", \"fill\": \"transparent\", \"stroke-dasharray\": `${_vm.progress * _vm.circumference} ${(1 - _vm.progress) * _vm.circumference}`, \"stroke-dashoffset\": 0.25 * _vm.circumference, \"stroke-width\": _vm.stroke, \"r\": _vm.radiusNormalized, \"cx\": _vm.radius, \"cy\": _vm.radius } }), _c(\"circle\", { attrs: { \"stroke\": \"var(--color-background-darker)\", \"fill\": \"transparent\", \"stroke-dasharray\": `${(1 - _vm.progress) * _vm.circumference} ${_vm.progress * _vm.circumference}`, \"stroke-dashoffset\": (0.25 - _vm.progress) * _vm.circumference, \"stroke-width\": _vm.stroke, \"r\": _vm.radiusNormalized, \"cx\": _vm.radius, \"cy\": _vm.radius } })])]) : _c(\"progress\", { staticClass: \"progress-bar progress-bar--linear vue\", class: { \"progress-bar--error\": _vm.error }, style: { \"--progress-bar-height\": _vm.height + \"px\" }, attrs: { \"max\": \"100\" }, domProps: { \"value\": _vm.value } });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"06c9abdc\"\n);\nconst NcProgressBar = __component__.exports;\nexport {\n NcProgressBar as N\n};\n//# sourceMappingURL=NcProgressBar-D7zYeXBH.mjs.map\n","if (!Array.prototype.find) {\n Array.prototype.find = function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined')\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function')\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value\n }\n }\n return undefined\n };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n function CustomEvent$1(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt\n }\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent$1.prototype = window.Event.prototype;\n }\n\n window.CustomEvent = CustomEvent$1;\n}\n\nclass TributeEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n static keys() {\n return [\n {\n key: 9,\n value: \"TAB\"\n },\n {\n key: 8,\n value: \"DELETE\"\n },\n {\n key: 13,\n value: \"ENTER\"\n },\n {\n key: 27,\n value: \"ESCAPE\"\n },\n {\n key: 32,\n value: \"SPACE\"\n },\n {\n key: 38,\n value: \"UP\"\n },\n {\n key: 40,\n value: \"DOWN\"\n }\n ];\n }\n\n bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n\n element.addEventListener(\"keydown\", element.boundKeydown, false);\n element.addEventListener(\"keyup\", element.boundKeyup, false);\n element.addEventListener(\"input\", element.boundInput, false);\n }\n\n unbind(element) {\n element.removeEventListener(\"keydown\", element.boundKeydown, false);\n element.removeEventListener(\"keyup\", element.boundKeyup, false);\n element.removeEventListener(\"input\", element.boundInput, false);\n\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n\n keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n let element = this;\n instance.commandEvent = false;\n\n TributeEvents.keys().forEach(o => {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n\n input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n\n click(instance, event) {\n let tribute = instance.tribute;\n if (tribute.menu && tribute.menu.contains(event.target)) {\n let li = event.target;\n event.preventDefault();\n event.stopPropagation();\n while (li.nodeName.toLowerCase() !== \"li\") {\n li = li.parentNode;\n if (!li || li === tribute.menu) {\n throw new Error(\"cannot find the
  • container for the click\");\n }\n }\n tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n tribute.hideMenu();\n\n // TODO: should fire with externalTrigger and target is outside of menu\n } else if (tribute.current.element && !tribute.current.externalTrigger) {\n tribute.current.externalTrigger = false;\n setTimeout(() => tribute.hideMenu());\n }\n }\n\n keyup(instance, event) {\n if (instance.inputEvent) {\n instance.inputEvent = false;\n }\n instance.updateSelection(this);\n\n if (event.keyCode === 27) return;\n\n if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n instance.tribute.hasTrailingSpace = false;\n instance.commandEvent = true;\n instance.callbacks()[\"space\"](event, this);\n return;\n }\n\n if (!instance.tribute.isActive) {\n if (instance.tribute.autocompleteMode) {\n instance.callbacks().triggerChar(event, this, \"\");\n } else {\n let keyCode = instance.getKeyCode(instance, this, event);\n\n if (isNaN(keyCode) || !keyCode) return;\n\n let trigger = instance.tribute.triggers().find(trigger => {\n return trigger.charCodeAt(0) === keyCode;\n });\n\n if (typeof trigger !== \"undefined\") {\n instance.callbacks().triggerChar(event, this, trigger);\n }\n }\n }\n\n if (\n instance.tribute.current.mentionText.length <\n instance.tribute.current.collection.menuShowMinLength\n ) {\n return;\n }\n\n if (\n ((instance.tribute.current.trigger ||\n instance.tribute.autocompleteMode) &&\n instance.commandEvent === false) ||\n (instance.tribute.isActive && event.keyCode === 8)\n ) {\n instance.tribute.showMenuFor(this, true);\n }\n }\n\n shouldDeactivate(event) {\n if (!this.tribute.isActive) return false;\n\n if (this.tribute.current.mentionText.length === 0) {\n let eventKeyPressed = false;\n TributeEvents.keys().forEach(o => {\n if (event.keyCode === o.key) eventKeyPressed = true;\n });\n\n return !eventKeyPressed;\n }\n\n return false;\n }\n\n getKeyCode(instance, el, event) {\n let tribute = instance.tribute;\n let info = tribute.range.getTriggerInfo(\n false,\n tribute.hasTrailingSpace,\n true,\n tribute.allowSpaces,\n tribute.autocompleteMode\n );\n\n if (info) {\n return info.mentionTriggerChar.charCodeAt(0);\n } else {\n return false;\n }\n }\n\n updateSelection(el) {\n this.tribute.current.element = el;\n let info = this.tribute.range.getTriggerInfo(\n false,\n this.tribute.hasTrailingSpace,\n true,\n this.tribute.allowSpaces,\n this.tribute.autocompleteMode\n );\n\n if (info) {\n this.tribute.current.selectedPath = info.mentionSelectedPath;\n this.tribute.current.mentionText = info.mentionText;\n this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n }\n }\n\n callbacks() {\n return {\n triggerChar: (e, el, trigger) => {\n let tribute = this.tribute;\n tribute.current.trigger = trigger;\n\n let collectionItem = tribute.collection.find(item => {\n return item.trigger === trigger;\n });\n\n tribute.current.collection = collectionItem;\n\n if (\n tribute.current.mentionText.length >=\n tribute.current.collection.menuShowMinLength &&\n tribute.inputEvent\n ) {\n tribute.showMenuFor(el, true);\n }\n },\n enter: (e, el) => {\n // choose selection\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n this.tribute.hideMenu();\n }, 0);\n }\n },\n escape: (e, el) => {\n if (this.tribute.isActive) {\n e.preventDefault();\n e.stopPropagation();\n this.tribute.isActive = false;\n this.tribute.hideMenu();\n }\n },\n tab: (e, el) => {\n // choose first match\n this.callbacks().enter(e, el);\n },\n space: (e, el) => {\n if (this.tribute.isActive) {\n if (this.tribute.spaceSelectsMatch) {\n this.callbacks().enter(e, el);\n } else if (!this.tribute.allowSpaces) {\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.hideMenu();\n this.tribute.isActive = false;\n }, 0);\n }\n }\n },\n up: (e, el) => {\n // navigate up ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length,\n selected = this.tribute.menuSelected;\n\n if (count > selected && selected > 0) {\n this.tribute.menuSelected--;\n this.setActiveLi();\n } else if (selected === 0) {\n this.tribute.menuSelected = count - 1;\n this.setActiveLi();\n this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n }\n }\n },\n down: (e, el) => {\n // navigate down ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length - 1,\n selected = this.tribute.menuSelected;\n\n if (count > selected) {\n this.tribute.menuSelected++;\n this.setActiveLi();\n } else if (count === selected) {\n this.tribute.menuSelected = 0;\n this.setActiveLi();\n this.tribute.menu.scrollTop = 0;\n }\n }\n },\n delete: (e, el) => {\n if (\n this.tribute.isActive &&\n this.tribute.current.mentionText.length < 1\n ) {\n this.tribute.hideMenu();\n } else if (this.tribute.isActive) {\n this.tribute.showMenuFor(el);\n }\n }\n };\n }\n\n setActiveLi(index) {\n let lis = this.tribute.menu.querySelectorAll(\"li\"),\n length = lis.length >>> 0;\n\n if (index) this.tribute.menuSelected = parseInt(index);\n\n for (let i = 0; i < length; i++) {\n let li = lis[i];\n if (i === this.tribute.menuSelected) {\n li.classList.add(this.tribute.current.collection.selectClass);\n\n let liClientRect = li.getBoundingClientRect();\n let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n if (liClientRect.bottom > menuClientRect.bottom) {\n let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n this.tribute.menu.scrollTop += scrollDistance;\n } else if (liClientRect.top < menuClientRect.top) {\n let scrollDistance = menuClientRect.top - liClientRect.top;\n this.tribute.menu.scrollTop -= scrollDistance;\n }\n } else {\n li.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }\n\n getFullHeight(elem, includeMargin) {\n let height = elem.getBoundingClientRect().height;\n\n if (includeMargin) {\n let style = elem.currentStyle || window.getComputedStyle(elem);\n return (\n height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n );\n }\n\n return height;\n }\n}\n\nclass TributeMenuEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.menuEvents = this;\n this.menu = this.tribute.menu;\n }\n\n bind(menu) {\n this.menuClickEvent = this.tribute.events.click.bind(null, this);\n this.menuContainerScrollEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.showMenuFor(this.tribute.current.element, false);\n }\n },\n 300,\n false\n );\n this.windowResizeEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.range.positionMenuAtCaret(true);\n }\n },\n 300,\n false\n );\n\n // fixes IE11 issues with mousedown\n this.tribute.range\n .getDocument()\n .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .addEventListener(\"mousedown\", this.menuClickEvent, false);\n window.addEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.addEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n unbind(menu) {\n this.tribute.range\n .getDocument()\n .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.removeEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n debounce(func, wait, immediate) {\n var timeout;\n return () => {\n var context = this,\n args = arguments;\n var later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n}\n\n// Thanks to https://github.com/jeff-collins/ment.io\n\nclass TributeRange {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.range = this;\n }\n\n getDocument() {\n let iframe;\n if (this.tribute.current.collection) {\n iframe = this.tribute.current.collection.iframe;\n }\n\n if (!iframe) {\n return document\n }\n\n return iframe.contentWindow.document\n }\n\n positionMenuAtCaret(scrollTo) {\n let context = this.tribute.current,\n coordinates;\n\n let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (typeof info !== 'undefined') {\n\n if(!this.tribute.positionMenu){\n this.tribute.menu.style.cssText = `display: block;`;\n return\n }\n\n if (!this.isContentEditable(context.element)) {\n coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n info.mentionPosition);\n }\n else {\n coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n }\n\n this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n left: ${coordinates.left}px;\n right: ${coordinates.right}px;\n bottom: ${coordinates.bottom}px;\n position: absolute;\n display: block;`;\n\n if (coordinates.left === 'auto') {\n this.tribute.menu.style.left = 'auto';\n }\n\n if (coordinates.top === 'auto') {\n this.tribute.menu.style.top = 'auto';\n }\n\n if (scrollTo) this.scrollIntoView();\n\n window.setTimeout(() => {\n let menuDimensions = {\n width: this.tribute.menu.offsetWidth,\n height: this.tribute.menu.offsetHeight\n };\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n this.tribute.menu.style.cssText = 'display: none';\n this.positionMenuAtCaret(scrollTo);\n }\n }, 0);\n\n } else {\n this.tribute.menu.style.cssText = 'display: none';\n }\n }\n\n get menuContainerIsBody() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n\n\n selectElement(targetElement, path, offset) {\n let range;\n let elem = targetElement;\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n elem = elem.childNodes[path[i]];\n if (elem === undefined) {\n return\n }\n while (elem.length < offset) {\n offset -= elem.length;\n elem = elem.nextSibling;\n }\n if (elem.childNodes.length === 0 && !elem.length) {\n elem = elem.previousSibling;\n }\n }\n }\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(elem, offset);\n range.setEnd(elem, offset);\n range.collapse(true);\n\n try {\n sel.removeAllRanges();\n } catch (error) {}\n\n sel.addRange(range);\n targetElement.focus();\n }\n\n replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info !== undefined) {\n let context = this.tribute.current;\n let replaceEvent = new CustomEvent('tribute-replaced', {\n detail: {\n item: item,\n instance: context,\n context: info,\n event: originalEvent,\n }\n });\n\n if (!this.isContentEditable(context.element)) {\n let myField = this.tribute.current.element;\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : ' ';\n text += textSuffix;\n let startPos = info.mentionPosition;\n let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length - 1;\n }\n myField.value = myField.value.substring(0, startPos) + text +\n myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + text.length;\n myField.selectionEnd = startPos + text.length;\n } else {\n // add a space to the end of the pasted text\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : '\\xA0';\n text += textSuffix;\n let endPos = info.mentionPosition + info.mentionText.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length;\n }\n this.pasteHtml(text, info.mentionPosition, endPos);\n }\n\n context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n context.element.dispatchEvent(replaceEvent);\n }\n }\n\n pasteHtml(html, startPos, endPos) {\n let range, sel;\n sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, startPos);\n range.setEnd(sel.anchorNode, endPos);\n range.deleteContents();\n\n let el = this.getDocument().createElement('div');\n el.innerHTML = html;\n let frag = this.getDocument().createDocumentFragment(),\n node, lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n\n getWindowSelection() {\n if (this.tribute.collection.iframe) {\n return this.tribute.collection.iframe.contentWindow.getSelection()\n }\n\n return window.getSelection()\n }\n\n getNodePositionInParent(element) {\n if (element.parentNode === null) {\n return 0\n }\n\n for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n let node = element.parentNode.childNodes[i];\n\n if (node === element) {\n return i\n }\n }\n }\n\n getContentEditableSelectedPath(ctx) {\n let sel = this.getWindowSelection();\n let selected = sel.anchorNode;\n let path = [];\n let offset;\n\n if (selected != null) {\n let i;\n let ce = selected.contentEditable;\n while (selected !== null && ce !== 'true') {\n i = this.getNodePositionInParent(selected);\n path.push(i);\n selected = selected.parentNode;\n if (selected !== null) {\n ce = selected.contentEditable;\n }\n }\n path.reverse();\n\n // getRangeAt may not exist, need alternative\n offset = sel.getRangeAt(0).startOffset;\n\n return {\n selected: selected,\n path: path,\n offset: offset\n }\n }\n }\n\n getTextPrecedingCurrentSelection() {\n let context = this.tribute.current,\n text = '';\n\n if (!this.isContentEditable(context.element)) {\n let textComponent = this.tribute.current.element;\n if (textComponent) {\n let startPos = textComponent.selectionStart;\n if (textComponent.value && startPos >= 0) {\n text = textComponent.value.substring(0, startPos);\n }\n }\n\n } else {\n let selectedElem = this.getWindowSelection().anchorNode;\n\n if (selectedElem != null) {\n let workingNodeContent = selectedElem.textContent;\n let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n\n return text\n }\n\n getLastWordInText(text) {\n text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n let wordsArray = text.split(/\\s+/);\n let worldsCount = wordsArray.length - 1;\n return wordsArray[worldsCount].trim()\n }\n\n getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n let ctx = this.tribute.current;\n let selected, path, offset;\n\n if (!this.isContentEditable(ctx.element)) {\n selected = this.tribute.current.element;\n } else {\n let selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n if (selectionInfo) {\n selected = selectionInfo.selected;\n path = selectionInfo.path;\n offset = selectionInfo.offset;\n }\n }\n\n let effectiveRange = this.getTextPrecedingCurrentSelection();\n let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n if (isAutocomplete) {\n return {\n mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n mentionText: lastWordOfEffectiveRange,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset\n }\n }\n\n if (effectiveRange !== undefined && effectiveRange !== null) {\n let mostRecentTriggerCharPos = -1;\n let triggerChar;\n\n this.tribute.collection.forEach(config => {\n let c = config.trigger;\n let idx = config.requireLeadingSpace ?\n this.lastIndexWithLeadingSpace(effectiveRange, c) :\n effectiveRange.lastIndexOf(c);\n\n if (idx > mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n triggerChar = c;\n requireLeadingSpace = config.requireLeadingSpace;\n }\n });\n\n if (mostRecentTriggerCharPos >= 0 &&\n (\n mostRecentTriggerCharPos === 0 ||\n !requireLeadingSpace ||\n /[\\xA0\\s]/g.test(\n effectiveRange.substring(\n mostRecentTriggerCharPos - 1,\n mostRecentTriggerCharPos)\n )\n )\n ) {\n let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n effectiveRange.length);\n\n triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length);\n let firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n let leadingSpace = currentTriggerSnippet.length > 0 &&\n (\n firstSnippetChar === ' ' ||\n firstSnippetChar === '\\xA0'\n );\n if (hasTrailingSpace) {\n currentTriggerSnippet = currentTriggerSnippet.trim();\n }\n\n let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n return {\n mentionPosition: mostRecentTriggerCharPos,\n mentionText: currentTriggerSnippet,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset,\n mentionTriggerChar: triggerChar\n }\n }\n }\n }\n }\n\n lastIndexWithLeadingSpace (str, trigger) {\n let reversedStr = str.split('').reverse().join('');\n let index = -1;\n\n for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n let firstChar = cidx === str.length - 1;\n let leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n\n let match = true;\n for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n match = false;\n break\n }\n }\n\n if (match && (firstChar || leadingSpace)) {\n index = str.length - 1 - cidx;\n break\n }\n }\n\n return index\n }\n\n isContentEditable(element) {\n return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n }\n\n isMenuOffScreen(coordinates, menuDimensions) {\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n\n return {\n top: menuTop < Math.floor(windowTop),\n right: menuRight > Math.ceil(windowLeft + windowWidth),\n bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n left: menuLeft < Math.floor(windowLeft)\n }\n }\n\n getMenuDimensions() {\n // Width of the menu depends of its contents and position\n // We must check what its width would be without any obstruction\n // This way, we can achieve good positioning for flipping the menu\n let dimensions = {\n width: null,\n height: null\n };\n\n this.tribute.menu.style.cssText = `top: 0px;\n left: 0px;\n position: fixed;\n display: block;\n visibility; hidden;`;\n dimensions.width = this.tribute.menu.offsetWidth;\n dimensions.height = this.tribute.menu.offsetHeight;\n\n this.tribute.menu.style.cssText = `display: none;`;\n\n return dimensions\n }\n\n getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n 'overflowY', 'borderTopWidth', 'borderRightWidth',\n 'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n 'paddingRight', 'paddingBottom', 'paddingLeft',\n 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n 'textAlign', 'textTransform', 'textIndent',\n 'textDecoration', 'letterSpacing', 'wordSpacing'\n ];\n\n let isFirefox = (window.mozInnerScreenX !== null);\n\n let div = this.getDocument().createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n this.getDocument().body.appendChild(div);\n\n let style = div.style;\n let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n\n style.whiteSpace = 'pre-wrap';\n if (element.nodeName !== 'INPUT') {\n style.wordWrap = 'break-word';\n }\n\n // position off-screen\n style.position = 'absolute';\n style.visibility = 'hidden';\n\n // transfer the element's properties to the div\n properties.forEach(prop => {\n style[prop] = computed[prop];\n });\n\n if (isFirefox) {\n style.width = `${(parseInt(computed.width) - 2)}px`;\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden';\n }\n\n div.textContent = element.value.substring(0, position);\n\n if (element.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, ' ');\n }\n\n let span = this.getDocument().createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n\n let rect = element.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let top = 0;\n let left = 0;\n if (this.menuContainerIsBody) {\n top = rect.top;\n left = rect.left;\n }\n\n let coordinates = {\n top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n };\n\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.right = windowWidth - coordinates.left;\n coordinates.left = 'auto';\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n coordinates.top = 'auto';\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n this.getDocument().body.removeChild(div);\n return coordinates\n }\n\n getContentEditableCaretPosition(selectedNodePosition) {\n let range;\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, selectedNodePosition);\n range.setEnd(sel.anchorNode, selectedNodePosition);\n\n range.collapse(false);\n\n let rect = range.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let left = rect.left;\n let top = rect.top;\n\n let coordinates = {\n left: left + windowLeft,\n top: top + rect.height + windowTop\n };\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.left = 'auto';\n coordinates.right = windowWidth - rect.left - windowLeft;\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.top = 'auto';\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n if (!this.menuContainerIsBody) {\n coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left;\n coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top;\n }\n\n return coordinates\n }\n\n scrollIntoView(elem) {\n let reasonableBuffer = 20,\n clientRect;\n let maxScrollDisplacement = 100;\n let e = this.menu;\n\n if (typeof e === 'undefined') return;\n\n while (clientRect === undefined || clientRect.height === 0) {\n clientRect = e.getBoundingClientRect();\n\n if (clientRect.height === 0) {\n e = e.childNodes[0];\n if (e === undefined || !e.getBoundingClientRect) {\n return\n }\n }\n }\n\n let elemTop = clientRect.top;\n let elemBottom = elemTop + clientRect.height;\n\n if (elemTop < 0) {\n window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n } else if (elemBottom > window.innerHeight) {\n let maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n if (maxY - window.pageYOffset > maxScrollDisplacement) {\n maxY = window.pageYOffset + maxScrollDisplacement;\n }\n\n let targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n if (targetY > maxY) {\n targetY = maxY;\n }\n\n window.scrollTo(0, targetY);\n }\n }\n}\n\n// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.search = this;\n }\n\n simpleFilter(pattern, array) {\n return array.filter(string => {\n return this.test(pattern, string)\n })\n }\n\n test(pattern, string) {\n return this.match(pattern, string) !== null\n }\n\n match(pattern, string, opts) {\n opts = opts || {};\n let len = string.length,\n pre = opts.pre || '',\n post = opts.post || '',\n compareString = opts.caseSensitive && string || string.toLowerCase();\n\n if (opts.skip) {\n return {rendered: string, score: 0}\n }\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n let patternCache = this.traverse(compareString, pattern, 0, 0, []);\n if (!patternCache) {\n return null\n }\n return {\n rendered: this.render(string, patternCache.cache, pre, post),\n score: patternCache.score\n }\n }\n\n traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n // if the pattern search at end\n if (pattern.length === patternIndex) {\n\n // calculate score and copy the cache containing the indices where it's found\n return {\n score: this.calculateScore(patternCache),\n cache: patternCache.slice()\n }\n }\n\n // if string at end or remaining pattern > remaining string\n if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n return undefined\n }\n\n let c = pattern[patternIndex];\n let index = string.indexOf(c, stringIndex);\n let best, temp;\n\n while (index > -1) {\n patternCache.push(index);\n temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n patternCache.pop();\n\n // if downstream traversal failed, return best answer so far\n if (!temp) {\n return best\n }\n\n if (!best || best.score < temp.score) {\n best = temp;\n }\n\n index = string.indexOf(c, index + 1);\n }\n\n return best\n }\n\n calculateScore(patternCache) {\n let score = 0;\n let temp = 1;\n\n patternCache.forEach((index, i) => {\n if (i > 0) {\n if (patternCache[i - 1] + 1 === index) {\n temp += temp + 1;\n }\n else {\n temp = 1;\n }\n }\n\n score += temp;\n });\n\n return score\n }\n\n render(string, indices, pre, post) {\n var rendered = string.substring(0, indices[0]);\n\n indices.forEach((index, i) => {\n rendered += pre + string[index] + post +\n string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length);\n });\n\n return rendered\n }\n\n filter(pattern, arr, opts) {\n opts = opts || {};\n return arr\n .reduce((prev, element, idx, arr) => {\n let str = element;\n\n if (opts.extract) {\n str = opts.extract(element);\n\n if (!str) { // take care of undefineds / nulls / etc.\n str = '';\n }\n }\n\n let rendered = this.match(pattern, str, opts);\n\n if (rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered,\n score: rendered.score,\n index: idx,\n original: element\n };\n }\n\n return prev\n }, [])\n\n .sort((a, b) => {\n let compare = b.score - a.score;\n if (compare) return compare\n return a.index - b.index\n })\n }\n}\n\nclass Tribute {\n constructor({\n values = null,\n iframe = null,\n selectClass = \"highlight\",\n containerClass = \"tribute-container\",\n itemClass = \"\",\n trigger = \"@\",\n autocompleteMode = false,\n selectTemplate = null,\n menuItemTemplate = null,\n lookup = \"key\",\n fillAttr = \"value\",\n collection = null,\n menuContainer = null,\n noMatchTemplate = null,\n requireLeadingSpace = true,\n allowSpaces = false,\n replaceTextSuffix = null,\n positionMenu = true,\n spaceSelectsMatch = false,\n searchOpts = {},\n menuItemLimit = null,\n menuShowMinLength = 0\n }) {\n this.autocompleteMode = autocompleteMode;\n this.menuSelected = 0;\n this.current = {};\n this.inputEvent = false;\n this.isActive = false;\n this.menuContainer = menuContainer;\n this.allowSpaces = allowSpaces;\n this.replaceTextSuffix = replaceTextSuffix;\n this.positionMenu = positionMenu;\n this.hasTrailingSpace = false;\n this.spaceSelectsMatch = spaceSelectsMatch;\n\n if (this.autocompleteMode) {\n trigger = \"\";\n allowSpaces = false;\n }\n\n if (values) {\n this.collection = [\n {\n // symbol that starts the lookup\n trigger: trigger,\n\n // is it wrapped in an iframe\n iframe: iframe,\n\n // class applied to selected item\n selectClass: selectClass,\n\n // class applied to the Container\n containerClass: containerClass,\n\n // class applied to each item\n itemClass: itemClass,\n\n // function called on select that retuns the content to insert\n selectTemplate: (\n selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n\n // function called that returns content for an item\n menuItemTemplate: (\n menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"
  • No Match Found!
  • \";\n }.bind(this)\n );\n })(noMatchTemplate),\n\n // column to search against in the object\n lookup: lookup,\n\n // column that contains the content to insert by default\n fillAttr: fillAttr,\n\n // array of objects or a function returning an array of objects\n values: values,\n\n requireLeadingSpace: requireLeadingSpace,\n\n searchOpts: searchOpts,\n\n menuItemLimit: menuItemLimit,\n\n menuShowMinLength: menuShowMinLength\n }\n ];\n } else if (collection) {\n if (this.autocompleteMode)\n console.warn(\n \"Tribute in autocomplete mode does not work for collections\"\n );\n this.collection = collection.map(item => {\n return {\n trigger: item.trigger || trigger,\n iframe: item.iframe || iframe,\n selectClass: item.selectClass || selectClass,\n containerClass: item.containerClass || containerClass,\n itemClass: item.itemClass || itemClass,\n selectTemplate: (\n item.selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n menuItemTemplate: (\n item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"
  • No Match Found!
  • \";\n }.bind(this)\n );\n })(noMatchTemplate),\n lookup: item.lookup || lookup,\n fillAttr: item.fillAttr || fillAttr,\n values: item.values,\n requireLeadingSpace: item.requireLeadingSpace,\n searchOpts: item.searchOpts || searchOpts,\n menuItemLimit: item.menuItemLimit || menuItemLimit,\n menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n };\n });\n } else {\n throw new Error(\"[Tribute] No collection specified.\");\n }\n\n new TributeRange(this);\n new TributeEvents(this);\n new TributeMenuEvents(this);\n new TributeSearch(this);\n }\n\n get isActive() {\n return this._isActive;\n }\n\n set isActive(val) {\n if (this._isActive != val) {\n this._isActive = val;\n if (this.current.element) {\n let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n this.current.element.dispatchEvent(noMatchEvent);\n }\n }\n }\n\n static defaultSelectTemplate(item) {\n if (typeof item === \"undefined\")\n return `${this.current.collection.trigger}${this.current.mentionText}`;\n if (this.range.isContentEditable(this.current.element)) {\n return (\n '' +\n (this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]) +\n \"\"\n );\n }\n\n return (\n this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]\n );\n }\n\n static defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n\n static inputTypes() {\n return [\"TEXTAREA\", \"INPUT\"];\n }\n\n triggers() {\n return this.collection.map(config => {\n return config.trigger;\n });\n }\n\n attach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._attach(el[i]);\n }\n } else {\n this._attach(el);\n }\n }\n\n _attach(el) {\n if (el.hasAttribute(\"data-tribute\")) {\n console.warn(\"Tribute was already bound to \" + el.nodeName);\n }\n\n this.ensureEditable(el);\n this.events.bind(el);\n el.setAttribute(\"data-tribute\", true);\n }\n\n ensureEditable(element) {\n if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n if (element.contentEditable) {\n element.contentEditable = true;\n } else {\n throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n }\n }\n }\n\n createMenu(containerClass) {\n let wrapper = this.range.getDocument().createElement(\"div\"),\n ul = this.range.getDocument().createElement(\"ul\");\n wrapper.className = containerClass;\n wrapper.appendChild(ul);\n\n if (this.menuContainer) {\n return this.menuContainer.appendChild(wrapper);\n }\n\n return this.range.getDocument().body.appendChild(wrapper);\n }\n\n showMenuFor(element, scrollTo) {\n // Only proceed if menu isn't already shown for the current element & mentionText\n if (\n this.isActive &&\n this.current.element === element &&\n this.current.mentionText === this.currentMentionTextSnapshot\n ) {\n return;\n }\n this.currentMentionTextSnapshot = this.current.mentionText;\n\n // create the menu if it doesn't exist.\n if (!this.menu) {\n this.menu = this.createMenu(this.current.collection.containerClass);\n element.tributeMenu = this.menu;\n this.menuEvents.bind(this.menu);\n }\n\n this.isActive = true;\n this.menuSelected = 0;\n\n if (!this.current.mentionText) {\n this.current.mentionText = \"\";\n }\n\n const processValues = values => {\n // Tribute may not be active any more by the time the value callback returns\n if (!this.isActive) {\n return;\n }\n\n let items = this.search.filter(this.current.mentionText, values, {\n pre: this.current.collection.searchOpts.pre || \"\",\n post: this.current.collection.searchOpts.post || \"\",\n skip: this.current.collection.searchOpts.skip,\n extract: el => {\n if (typeof this.current.collection.lookup === \"string\") {\n return el[this.current.collection.lookup];\n } else if (typeof this.current.collection.lookup === \"function\") {\n return this.current.collection.lookup(el, this.current.mentionText);\n } else {\n throw new Error(\n \"Invalid lookup attribute, lookup must be string or function.\"\n );\n }\n }\n });\n\n if (this.current.collection.menuItemLimit) {\n items = items.slice(0, this.current.collection.menuItemLimit);\n }\n\n this.current.filteredItems = items;\n\n let ul = this.menu.querySelector(\"ul\");\n\n this.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n detail: this.menu\n });\n this.current.element.dispatchEvent(noMatchEvent);\n if (\n (typeof this.current.collection.noMatchTemplate === \"function\" &&\n !this.current.collection.noMatchTemplate()) ||\n !this.current.collection.noMatchTemplate\n ) {\n this.hideMenu();\n } else {\n typeof this.current.collection.noMatchTemplate === \"function\"\n ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n : (ul.innerHTML = this.current.collection.noMatchTemplate);\n }\n\n return;\n }\n\n ul.innerHTML = \"\";\n let fragment = this.range.getDocument().createDocumentFragment();\n\n items.forEach((item, index) => {\n let li = this.range.getDocument().createElement(\"li\");\n li.setAttribute(\"data-index\", index);\n li.className = this.current.collection.itemClass;\n li.addEventListener(\"mousemove\", e => {\n let [li, index] = this._findLiTarget(e.target);\n if (e.movementY !== 0) {\n this.events.setActiveLi(index);\n }\n });\n if (this.menuSelected === index) {\n li.classList.add(this.current.collection.selectClass);\n }\n li.innerHTML = this.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === \"function\") {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n\n _findLiTarget(el) {\n if (!el) return [];\n const index = el.getAttribute(\"data-index\");\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n\n showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n\n if (element.isContentEditable)\n this.insertTextAtCursor(this.current.collection.trigger);\n else this.insertAtCaret(element, this.current.collection.trigger);\n\n this.showMenuFor(element);\n }\n\n // TODO: make sure this works for inputs/textareas\n placeCaretAtEnd(el) {\n el.focus();\n if (\n typeof window.getSelection != \"undefined\" &&\n typeof document.createRange != \"undefined\"\n ) {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n }\n\n // for contenteditable\n insertTextAtCursor(text) {\n var sel, range;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n // for regular inputs\n insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(\n textarea.selectionEnd,\n textarea.value.length\n );\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n\n hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = \"display: none;\";\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n\n selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== \"number\" || isNaN(index)) return;\n let item = this.current.filteredItems[index];\n let content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n\n replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n\n _append(collection, newValues, replace) {\n if (typeof collection.values === \"function\") {\n throw new Error(\"Unable to append to values, as it is a function.\");\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n\n append(collectionIndex, newValues, replace) {\n let index = parseInt(collectionIndex);\n if (typeof index !== \"number\")\n throw new Error(\"please provide an index for the collection to update.\");\n\n let collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n\n appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error(\n \"No active state. Please use append instead and pass an index.\"\n );\n }\n }\n\n detach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n\n _detach(el) {\n this.events.unbind(el);\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(() => {\n el.removeAttribute(\"data-tribute\");\n this.isActive = false;\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n}\n\n/**\n * Tribute.js\n * Native ES6 JavaScript @mention Plugin\n **/\n\nexport default Tribute;\n","import '../assets/NcRelatedResourcesPanel-D5DxWJPc.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, V as t39, a as t, W as t43, X as t9 } from \"./_l10n-Dv1YKfKS.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { g as getRoute } from \"./autolink-BoBR7PZC.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { C as ChevronDown } from \"./ChevronDown-Dc_aK7Xg.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-Dw4mVwZP.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nregister(t39);\nconst _sfc_main$4 = {\n name: \"NcResource\",\n components: {\n NcButton\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n icon: {\n type: String,\n required: true\n },\n name: {\n type: String,\n required: true\n },\n url: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n labelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name })\n };\n },\n computed: {\n route() {\n return getRoute(this.$router, this.url);\n }\n },\n methods: {\n t\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"resource\" }, [_c(\"NcButton\", { staticClass: \"resource__button\", attrs: { \"aria-label\": _vm.labelTranslated, \"to\": _vm.route, \"href\": _vm.route ? null : _vm.url, \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"div\", { staticClass: \"resource__icon\" }, [_c(\"img\", { attrs: { \"src\": _vm.icon } })])];\n }, proxy: true }]) }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")])], 1);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n \"2660b55a\"\n);\nconst NcResource = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"AccountGroupIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon account-group-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e(), _c(\"path\", { attrs: { \"d\": \"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\" } })])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst AccountGroup = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"OpenInNewIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon open-in-new-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e(), _c(\"path\", { attrs: { \"d\": \"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\" } })])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst OpenInNew = __component__$2.exports;\nregister(t43);\nconst teamResourceProviders = getCapabilities()?.circles?.teamResourceProviders ?? [];\nconst _sfc_main$1 = {\n name: \"NcTeamResources\",\n components: {\n AccountGroup,\n ChevronDown,\n ChevronUp,\n OpenInNew,\n NcButton,\n NcIconSvgWrapper\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n providerId: {\n type: String,\n default: null\n },\n itemId: {\n type: [String, Number],\n default: null\n }\n },\n data() {\n return {\n appEnabled: OC?.appswebroots?.circles !== void 0 && (OC.config.version.split(\".\")[0] ?? 0) >= 29,\n loading: false,\n teamResources: null,\n teamOpen: []\n };\n },\n computed: {\n isVisible() {\n return !this.loading && this.teamResources?.length > 0;\n },\n teamProviders() {\n return (teamId) => {\n const team = this.teamResources.find((t2) => t2.teamId === teamId);\n return team.resources?.reduce((acc, resource) => {\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n if (!acc[resource.provider.id]) {\n acc[resource.provider.id] = resource.provider;\n acc[resource.provider.id].resources = [];\n }\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n acc[resource.provider.id].resources.push(resource);\n return acc;\n }, {});\n };\n },\n open() {\n return (teamId) => {\n return this.teamOpen.indexOf(teamId) !== -1;\n };\n }\n },\n watch: {\n providerId() {\n this.fetchTeamResources();\n },\n itemId() {\n this.fetchTeamResources();\n }\n },\n created() {\n this.fetchTeamResources();\n },\n methods: {\n t,\n async fetchTeamResources() {\n if (!teamResourceProviders.includes(this.providerId)) {\n return;\n }\n try {\n this.loading = true;\n const response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`));\n this.teamResources = response.data.ocs.data.teams;\n this.teamOpen = [this.teamResources[0]?.teamId];\n } catch (error) {\n this.teamResources = null;\n logger.error(\"Could not fetch Teams resources\", { error });\n } finally {\n this.loading = false;\n }\n },\n toggleOpen(teamId, open) {\n if (open) {\n this.teamOpen.push(teamId);\n } else {\n this.teamOpen.splice(this.teamOpen.indexOf(teamId), 1);\n }\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _vm.appEnabled && _vm.isVisible ? _c(\"div\", { staticClass: \"team-resources\" }, [_c(\"h5\", { staticClass: \"team-resources__header\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Related team resources\")) + \" \")]), _vm._l(_vm.teamResources, function(team) {\n return _c(\"details\", { key: team.teamId, staticClass: \"related-team\", attrs: { \"name\": \"Team resources\", \"open\": _vm.open(team.teamId) }, on: { \"toggle\": (event) => _vm.toggleOpen(team.teamId, event.target.open) } }, [_c(\"summary\", { staticClass: \"related-team__header\" }, [_c(\"h5\", { staticClass: \"related-team__name\" }, [_c(\"AccountGroup\", { attrs: { \"size\": 20 } }), _vm._v(\" \" + _vm._s(team.displayName) + \" \")], 1), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.t(\"View team\"), \"href\": team.link, \"title\": _vm.t(\"View team\"), \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"OpenInNew\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) }), _vm.open(team.teamId) ? _c(\"ChevronUp\", { attrs: { \"size\": 20 } }) : _c(\"ChevronDown\", { attrs: { \"size\": 20 } })], 1), _c(\"div\", _vm._l(_vm.teamProviders(team.teamId), function(provider) {\n return _c(\"div\", { key: provider.id, staticClass: \"related-team-provider\" }, [provider.resources.length > 0 ? _c(\"h6\", [_vm._v(\" \" + _vm._s(provider.name) + \" \")]) : _vm._e(), _c(\"ul\", _vm._l(provider.resources, function(resource) {\n return _c(\"li\", { key: resource.url, staticClass: \"related-team-resource\" }, [_c(\"a\", { staticClass: \"related-team-resource__link\", attrs: { \"href\": resource.url } }, [resource.iconEmoji ? _c(\"span\", { staticClass: \"resource__icon\" }, [_vm._v(\" \" + _vm._s(resource.iconEmoji) + \" \")]) : resource.iconSvg ? _c(\"NcIconSvgWrapper\", { staticClass: \"resource__icon\", attrs: { \"svg\": resource.iconSvg, \"size\": 20 } }) : resource.iconURL ? _c(\"span\", { staticClass: \"resource__icon\" }, [_c(\"img\", { attrs: { \"src\": resource.iconURL, \"alt\": \"\" } })]) : _vm._e(), _c(\"span\", { staticClass: \"resource__name\" }, [_vm._v(\" \" + _vm._s(resource.label) + \" \")])], 1)]);\n }), 0)]);\n }), 0)]);\n })], 2) : _vm._e();\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"82938a03\"\n);\nconst NcTeamResources = __component__$1.exports;\nregister(t9);\nconst _sfc_main = {\n name: \"NcRelatedResourcesPanel\",\n components: {\n NcResource,\n NcTeamResources\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n providerId: {\n type: String,\n default: null\n },\n /**\n * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n */\n itemId: {\n type: [String, Number],\n default: null\n },\n /**\n * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n resourceType: {\n type: String,\n default: \"\"\n },\n /**\n * Set the maximum number of resources to load\n */\n limit: {\n type: Number,\n default: 0\n },\n /**\n * Only used by the files sidebar\n *\n * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n */\n fileInfo: {\n type: Object,\n default: null\n },\n /**\n * Make the header name dynamic\n */\n header: {\n type: String,\n default: t(\"Related resources\")\n },\n description: {\n type: String,\n default: t(\"Anything shared with the same group of people will show up here\")\n },\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"has-error\",\n \"has-resources\"\n ],\n data() {\n return {\n appEnabled: OC?.appswebroots?.related_resources !== void 0,\n loading: false,\n error: null,\n resources: []\n };\n },\n computed: {\n isVisible() {\n if (this.loading) {\n return false;\n }\n return this.error ?? this.resources.length > 0;\n },\n subline() {\n if (this.error) {\n return t(\"Error getting related resources. Please contact your system administrator if you have any questions.\");\n }\n return this.description;\n },\n hasResourceInfo() {\n if (this.providerId !== null && this.itemId !== null) {\n return true;\n }\n if (this.fileInfo !== null) {\n return true;\n }\n return false;\n },\n isFiles() {\n return this.fileInfo?.id !== void 0;\n },\n url() {\n let providerId;\n let itemId;\n if (this.isFiles) {\n providerId = \"files\";\n itemId = this.fileInfo.id;\n } else {\n providerId = this.providerId;\n itemId = this.itemId;\n }\n return generateOcsUrl(\"/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json\", {\n providerId,\n itemId,\n resourceType: this.resourceType,\n limit: this.limit\n });\n }\n },\n watch: {\n providerId() {\n this.fetchRelatedResources();\n },\n itemId() {\n this.fetchRelatedResources();\n },\n fileInfo() {\n this.fetchRelatedResources();\n },\n error(error) {\n this.$emit(\"has-error\", Boolean(error));\n },\n resources(resources) {\n this.$emit(\"has-resources\", resources.length > 0);\n }\n },\n created() {\n this.fetchRelatedResources();\n },\n methods: {\n t,\n async fetchRelatedResources() {\n if (!this.appEnabled || !this.hasResourceInfo) {\n return;\n }\n this.loading = true;\n this.error = null;\n this.resources = [];\n try {\n const response = await axios.get(this.url);\n this.resources = response.data.ocs?.data;\n } catch (error) {\n this.error = e;\n logger.error(\"Could not fetch related resources\", { error });\n } finally {\n this.loading = false;\n }\n }\n }\n};\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", [_c(\"NcTeamResources\", { attrs: { \"provider-id\": _vm.providerId, \"item-id\": _vm.itemId } }), _vm.appEnabled && _vm.isVisible ? _c(\"div\", { staticClass: \"related-resources\" }, [_c(\"div\", { staticClass: \"related-resources__header\" }, [_c(\"h5\", [_vm._v(_vm._s(_vm.header))]), _c(\"p\", [_vm._v(_vm._s(_vm.subline))])]), _vm._l(_vm.resources, function(resource) {\n return _c(\"NcResource\", { key: resource.itemId, staticClass: \"related-resources__entry\", attrs: { \"icon\": resource.icon, \"name\": resource.title, \"url\": resource.url } });\n })], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"3ca2fd14\"\n);\nconst NcRelatedResourcesPanel = __component__.exports;\nexport {\n NcRelatedResourcesPanel as N\n};\n//# sourceMappingURL=NcRelatedResourcesPanel-CVzxu1PZ.mjs.map\n","import { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nwindow._vue_richtext_custom_picker_elements ??= {};\nwindow._registerCustomPickerElement ??= registerCustomPickerElement;\nclass NcCustomPickerRenderResult {\n element;\n object;\n /**\n * @param element - The HTML element\n * @param object - The object\n */\n constructor(element, object) {\n this.element = element;\n this.object = object;\n }\n}\nfunction isCustomPickerElementRegistered(id) {\n return !!window._vue_richtext_custom_picker_elements[id];\n}\nfunction getCustomPickerElementSize(id) {\n const size = window._vue_richtext_custom_picker_elements[id]?.size;\n if ([\"small\", \"normal\", \"large\", \"full\"].includes(size)) {\n return size;\n }\n return null;\n}\nfunction registerCustomPickerElement(id, callback, onDestroy = () => {\n}, size = \"large\") {\n if (window._vue_richtext_custom_picker_elements[id]) {\n logger.error(`Custom reference picker element for id ${id} already registered`);\n return;\n }\n window._vue_richtext_custom_picker_elements[id] = {\n id,\n callback,\n onDestroy,\n size\n };\n}\nfunction renderCustomPickerElement(el, options) {\n const { providerId, accessible } = options;\n if (!window._vue_richtext_custom_picker_elements[providerId]) {\n logger.error(`Custom reference picker element for reference provider ID ${providerId} not registered`);\n return;\n }\n return window._vue_richtext_custom_picker_elements[providerId].callback(el, { providerId, accessible });\n}\nfunction destroyCustomPickerElement(providerId, el, renderResult) {\n if (!window._vue_richtext_custom_picker_elements[providerId]) {\n return;\n }\n window._vue_richtext_custom_picker_elements[providerId].onDestroy(el, renderResult);\n}\nexport {\n NcCustomPickerRenderResult as N,\n renderCustomPickerElement as a,\n destroyCustomPickerElement as d,\n getCustomPickerElementSize as g,\n isCustomPickerElementRegistered as i,\n registerCustomPickerElement as r\n};\n//# sourceMappingURL=customPickerElements-CYpmyl0b.mjs.map\n","import '../assets/referencePickerModal-0oYth4rX.css';\nimport Vue from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { A as ArrowLeft } from \"./ArrowLeft-B3_kXXWz.mjs\";\nimport { C as Close } from \"./Close-COCw8OO8.mjs\";\nimport { a as renderCustomPickerElement, d as destroyCustomPickerElement, i as isCustomPickerElementRegistered, g as getCustomPickerElementSize } from \"./customPickerElements-CYpmyl0b.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { imagePath, generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, _ as t8, a as t, $ as t48, a0 as t42, a1 as t25, A as t44, a2 as t32, n as t18, a3 as t12 } from \"./_l10n-Dv1YKfKS.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport { N as NcHighlight } from \"./index-CxTT94_h.mjs\";\nimport { N as NcSelect } from \"./NcSelect-COY5TV2U.mjs\";\nimport { N as NcReferenceWidget } from \"./NcReferenceWidget-C0US5iQ0.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { N as NcTextField } from \"./NcTextField-Doo3Q45d.mjs\";\nimport { D as DotsHorizontalIcon } from \"./NcActions-C4f9MXug.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport NcModal from \"../Components/NcModal.mjs\";\nconst _sfc_main$7 = {\n name: \"NcCustomPickerElement\",\n props: {\n /**\n * The reference provider\n */\n provider: {\n type: Object,\n required: true\n }\n },\n emits: [\n \"cancel\",\n \"submit\"\n ],\n data() {\n return {\n isRegistered: isCustomPickerElementRegistered(this.provider.id),\n renderResult: null\n };\n },\n mounted() {\n if (this.isRegistered) {\n this.renderElement();\n }\n },\n beforeDestroy() {\n if (this.isRegistered) {\n destroyCustomPickerElement(this.provider.id, this.$el, this.renderResult);\n }\n },\n methods: {\n renderElement() {\n if (this.$refs.domElement) {\n this.$refs.domElement.innerHTML = \"\";\n }\n const renderFunctionResult = renderCustomPickerElement(this.$refs.domElement, { providerId: this.provider.id, accessible: false });\n Promise.resolve(renderFunctionResult).then((result) => {\n this.renderResult = result;\n if (this.renderResult.object?._isVue && this.renderResult.object?.$on) {\n this.renderResult.object.$on(\"submit\", this.onSubmit);\n this.renderResult.object.$on(\"cancel\", this.onCancel);\n }\n this.renderResult.element.addEventListener(\"submit\", (e) => {\n this.onSubmit(e.detail);\n });\n this.renderResult.element.addEventListener(\"cancel\", this.onCancel);\n });\n },\n onSubmit(value) {\n this.$emit(\"submit\", value);\n },\n onCancel() {\n this.$emit(\"cancel\");\n }\n }\n};\nvar _sfc_render$7 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { ref: \"domElement\" });\n};\nvar _sfc_staticRenderFns$7 = [];\nvar __component__$7 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$7,\n _sfc_render$7,\n _sfc_staticRenderFns$7,\n false,\n null,\n \"0547d92f\"\n);\nconst NcCustomPickerElement = __component__$7.exports;\nconst _sfc_main$6 = {\n name: \"LinkVariantIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$6 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon link-variant-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e(), _c(\"path\", { attrs: { \"d\": \"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\" } })])]);\n};\nvar _sfc_staticRenderFns$6 = [];\nvar __component__$6 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$6,\n _sfc_render$6,\n _sfc_staticRenderFns$6,\n false,\n null,\n null\n);\nconst LinkVariantIcon = __component__$6.exports;\nregister(t8);\nconst anyLinkProviderId = \"any-link\";\nconst anyLinkProvider = {\n id: anyLinkProviderId,\n title: t(\"Any link\"),\n order: 0,\n icon_url: imagePath(\"core\", \"filetypes/link.svg\")\n};\nwindow._vue_richtext_reference_providers ??= loadState(\"core\", \"reference-provider-list\", []);\nwindow._vue_richtext_reference_provider_timestamps ??= loadState(\"core\", \"reference-provider-timestamps\", {});\nfunction getProvider(providerId) {\n if (providerId === anyLinkProviderId) {\n return anyLinkProvider;\n }\n return getProviders().find((p) => p.id === providerId);\n}\nfunction getProviders() {\n return window._vue_richtext_reference_providers.filter((p) => {\n const keep = !!p.search_providers_ids && p.search_providers_ids.length > 0 || isCustomPickerElementRegistered(p.id);\n if (!keep) {\n logger.debug(`[smart picker] ${p.id} reference provider is discoverable but does not have any related search provider or custom picker component registered`);\n }\n return keep;\n });\n}\nfunction sortProviders(providerList) {\n const timestamps = window._vue_richtext_reference_provider_timestamps;\n return providerList.sort((a, b) => {\n return a.order === b.order ? 0 : a.order > b.order ? 1 : -1;\n }).sort((a, b) => {\n const ta = timestamps[a.id];\n const tb = timestamps[b.id];\n return ta === tb ? 0 : tb === void 0 ? -1 : ta === void 0 ? 1 : ta > tb ? -1 : 1;\n });\n}\nfunction searchProvider(query, limit) {\n const providers = getProviders();\n const escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n const regexp = new RegExp(escapedQuery, \"i\");\n const sortedProviders = sortProviders(providers);\n const filteredSortedProviders = sortedProviders.filter((p) => {\n return p.title.match(regexp);\n });\n const searchResult = limit ? filteredSortedProviders.slice(0, limit) : filteredSortedProviders;\n if (query === \"\" || searchResult.length === 0) {\n searchResult.push(anyLinkProvider);\n }\n return searchResult;\n}\nasync function touchProvider(providerId) {\n const timestamp = Math.floor(Date.now() / 1e3);\n const url = generateOcsUrl(\"references/provider/{providerId}\", { providerId });\n await axios.put(url, { timestamp });\n window._vue_richtext_reference_provider_timestamps[providerId] = timestamp;\n}\nregister(t42, t48);\nlet mytimer = 0;\nfunction delay(callback, ms) {\n return function() {\n const context = this;\n const args = arguments;\n clearTimeout(mytimer);\n mytimer = setTimeout(function() {\n callback.apply(context, args);\n }, ms);\n };\n}\nfunction isUrl(str) {\n try {\n return Boolean(new URL(str));\n } catch {\n return false;\n }\n}\nconst _sfc_main$5 = {\n name: \"NcProviderList\",\n components: {\n NcSelect,\n NcHighlight,\n NcEmptyContent,\n LinkVariantIcon\n },\n emits: [\n \"select-provider\",\n \"submit\"\n ],\n data() {\n return {\n selectedProvider: null,\n query: \"\",\n multiselectPlaceholder: t(\"Select provider\"),\n providerIconAlt: t(\"Provider icon\")\n };\n },\n computed: {\n options() {\n const result = [];\n if (this.query !== \"\" && isUrl(this.query)) {\n result.push({\n id: this.query,\n title: this.query,\n isLink: true\n });\n }\n result.push(...searchProvider(this.query));\n return result;\n }\n },\n methods: {\n focus() {\n setTimeout(() => {\n this.$refs[\"provider-select\"]?.$el?.querySelector(\"#provider-select-input\")?.focus();\n }, 300);\n },\n onProviderSelected(p) {\n if (p !== null) {\n if (p.isLink) {\n this.$emit(\"submit\", p.title);\n } else {\n this.$emit(\"select-provider\", p);\n }\n this.selectedProvider = null;\n }\n },\n onSearch(query) {\n this.query = query;\n }\n }\n};\nvar _sfc_render$5 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"provider-list\" }, [_c(\"NcSelect\", { ref: \"provider-select\", staticClass: \"provider-list--select\", attrs: { \"input-id\": \"provider-select-input\", \"label\": \"title\", \"placeholder\": _vm.multiselectPlaceholder, \"options\": _vm.options, \"append-to-body\": false, \"clear-search-on-select\": true, \"clear-search-on-blur\": () => false, \"filterable\": false }, on: { \"search\": _vm.onSearch, \"input\": _vm.onProviderSelected }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [option.isLink ? _c(\"div\", { staticClass: \"provider\" }, [_c(\"LinkVariantIcon\", { staticClass: \"link-icon\", attrs: { \"size\": 20 } }), _c(\"span\", [_vm._v(_vm._s(option.title))])], 1) : _c(\"div\", { staticClass: \"provider\" }, [_c(\"img\", { staticClass: \"provider-icon\", attrs: { \"src\": option.icon_url, \"alt\": _vm.providerIconAlt } }), _c(\"NcHighlight\", { staticClass: \"option-text\", attrs: { \"search\": _vm.query, \"text\": option.title } })], 1)];\n } }]), model: { value: _vm.selectedProvider, callback: function($$v) {\n _vm.selectedProvider = $$v;\n }, expression: \"selectedProvider\" } }), _c(\"NcEmptyContent\", { staticClass: \"provider-list--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"LinkVariantIcon\")];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns$5 = [];\nvar __component__$5 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$5,\n _sfc_render$5,\n _sfc_staticRenderFns$5,\n false,\n null,\n \"f39d58d9\"\n);\nconst NcProviderList = __component__$5.exports;\nregister(t25);\nconst _sfc_main$4 = {\n name: \"NcRawLinkInput\",\n components: {\n LinkVariantIcon,\n NcEmptyContent,\n NcLoadingIcon,\n NcReferenceWidget,\n NcTextField\n },\n props: {\n /**\n * The reference provider\n */\n provider: {\n type: Object,\n required: true\n }\n },\n emits: [\n \"submit\"\n ],\n data() {\n return {\n inputValue: \"\",\n loading: false,\n reference: null,\n abortController: null,\n inputPlaceholder: t(\"Enter link\")\n };\n },\n computed: {\n isLinkValid() {\n return isUrl(this.inputValue);\n }\n },\n methods: {\n focus() {\n this.$refs[\"url-input\"].$el.getElementsByTagName(\"input\")[0]?.focus();\n },\n onSubmit(e) {\n const value = e.target.value;\n if (this.isLinkValid) {\n this.$emit(\"submit\", value);\n }\n },\n onClear() {\n this.inputValue = \"\";\n this.reference = null;\n },\n onInput() {\n this.reference = null;\n if (this.abortController) {\n this.abortController.abort();\n }\n if (this.isLinkValid) {\n delay(() => {\n this.updateReference();\n }, 500)();\n }\n },\n updateReference() {\n this.loading = true;\n this.abortController = new AbortController();\n axios.get(generateOcsUrl(\"references/resolve\", 2) + \"?reference=\" + encodeURIComponent(this.inputValue), {\n signal: this.abortController.signal\n }).then((response) => {\n this.reference = response.data.ocs.data.references[this.inputValue];\n }).catch((error) => {\n logger.error(\"Could not update reference\", { error });\n }).then(() => {\n this.loading = false;\n });\n }\n }\n};\nvar _sfc_render$4 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"raw-link\" }, [_c(\"div\", { staticClass: \"input-wrapper\" }, [_c(\"NcTextField\", { ref: \"url-input\", attrs: { \"value\": _vm.inputValue, \"show-trailing-button\": _vm.inputValue !== \"\", \"label\": _vm.inputPlaceholder }, on: { \"update:value\": [function($event) {\n _vm.inputValue = $event;\n }, _vm.onInput], \"trailing-button-click\": _vm.onClear }, nativeOn: { \"keyup\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_vm.loading ? _c(\"NcLoadingIcon\", { attrs: { \"size\": 16 } }) : _c(\"LinkVariantIcon\", { attrs: { \"size\": 16 } })], 1)], 1), _vm.reference !== null ? _c(\"NcReferenceWidget\", { staticClass: \"reference-widget\", attrs: { \"reference\": _vm.reference } }) : _c(\"NcEmptyContent\", { staticClass: \"raw-link--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon\", attrs: { \"src\": _vm.provider.icon_url } }) : _c(\"LinkVariantIcon\")];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n \"be630586\"\n);\nconst NcRawLinkInput = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"NcSearchResult\",\n components: {\n NcHighlight\n },\n props: {\n /**\n * Unified search result entry\n */\n entry: {\n type: Object,\n required: true\n },\n /**\n * The query that led to getting this result\n * Used to highlight the entry text\n */\n query: {\n type: String,\n required: true\n }\n }\n};\nvar _sfc_render$3 = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"result\" }, [_vm.entry.icon ? _c(\"div\", { staticClass: \"result--icon-class\", class: { [_vm.entry.icon]: true, rounded: _vm.entry.rounded } }) : _c(\"img\", { staticClass: \"result--image\", class: { rounded: _vm.entry.rounded }, attrs: { \"src\": _vm.entry.thumbnailUrl } }), _c(\"div\", { staticClass: \"result--content\" }, [_c(\"span\", { staticClass: \"result--content--name\" }, [_c(\"NcHighlight\", { attrs: { \"search\": _vm.query, \"text\": _vm.entry.title } })], 1), _c(\"span\", { staticClass: \"result--content--subline\" }, [_c(\"NcHighlight\", { attrs: { \"search\": _vm.query, \"text\": _vm.entry.subline } })], 1)])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n \"995c2758\"\n);\nconst NcSearchResult = __component__$3.exports;\nregister(t32, t42, t44);\nconst LIMIT = 5;\nconst _sfc_main$2 = {\n name: \"NcSearch\",\n components: {\n LinkVariantIcon,\n DotsHorizontalIcon,\n NcEmptyContent,\n NcSelect,\n NcSearchResult\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The selected reference provider\n */\n provider: {\n type: Object,\n required: true\n },\n showEmptyContent: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Placeholder of the search\n */\n searchPlaceholder: {\n type: String,\n default: null\n }\n },\n emits: [\n \"submit\"\n ],\n data() {\n return {\n searchQuery: \"\",\n selectedResult: null,\n resultsBySearchProvider: {},\n searching: false,\n searchingMoreOf: null,\n abortController: null,\n noOptionsText: t(\"Start typing to search\"),\n providerIconAlt: t(\"Provider icon\")\n };\n },\n computed: {\n mySearchPlaceholder() {\n return this.searchPlaceholder || t(\"Search\");\n },\n searchProviderIds() {\n return this.provider.search_providers_ids;\n },\n options() {\n if (this.searchQuery === \"\") {\n return [];\n }\n const options = [];\n if (isUrl(this.searchQuery)) {\n options.push(this.rawLinkEntry);\n }\n options.push(...this.formattedSearchResults);\n return options;\n },\n rawLinkEntry() {\n return {\n id: \"rawLinkEntry\",\n resourceUrl: this.searchQuery,\n isRawLink: true\n };\n },\n formattedSearchResults() {\n const results = [];\n this.searchProviderIds.forEach((pid) => {\n if (this.resultsBySearchProvider[pid].entries.length > 0) {\n if (this.searchProviderIds.length > 1 || this.resultsBySearchProvider[pid].entries.length > 1) {\n results.push({\n id: \"groupTitle-\" + pid,\n name: this.resultsBySearchProvider[pid].name,\n isCustomGroupTitle: true,\n providerId: pid\n });\n }\n const providerEntriesWithId = this.resultsBySearchProvider[pid].entries.map((entry, index) => {\n return {\n id: \"provider-\" + pid + \"-entry-\" + index,\n ...entry\n };\n });\n results.push(...providerEntriesWithId);\n if (this.resultsBySearchProvider[pid].isPaginated) {\n results.push({\n id: \"moreOf-\" + pid,\n name: this.resultsBySearchProvider[pid].name,\n isMore: true,\n providerId: pid,\n isLoading: this.searchingMoreOf === pid\n });\n }\n }\n });\n return results;\n }\n },\n mounted() {\n this.resetResults();\n },\n beforeDestroy() {\n this.cancelSearchRequests();\n },\n methods: {\n t,\n resetResults() {\n const resultsBySearchProvider = {};\n this.searchProviderIds.forEach((pid) => {\n resultsBySearchProvider[pid] = {\n entries: []\n };\n });\n this.resultsBySearchProvider = resultsBySearchProvider;\n },\n focus() {\n setTimeout(() => {\n this.$refs[\"search-select\"]?.$el?.querySelector(\"#search-select-input\")?.focus();\n }, 300);\n },\n cancelSearchRequests() {\n if (this.abortController) {\n this.abortController.abort();\n }\n },\n onSearchInput(query) {\n this.searchQuery = query;\n delay(() => {\n this.updateSearch();\n }, 500)();\n },\n onSelectResultSelected(item) {\n if (item !== null) {\n if (item.resourceUrl) {\n this.cancelSearchRequests();\n this.$emit(\"submit\", item.resourceUrl);\n } else if (item.isMore) {\n this.searchMoreOf(item.providerId).then(() => {\n this.selectedResult = null;\n });\n }\n }\n },\n searchMoreOf(searchProviderId) {\n this.searchingMoreOf = searchProviderId;\n this.cancelSearchRequests();\n return this.searchProviders(searchProviderId);\n },\n updateSearch() {\n this.cancelSearchRequests();\n this.resetResults();\n if (this.searchQuery === \"\") {\n this.searching = false;\n return;\n }\n return this.searchProviders();\n },\n searchProviders(searchProviderId = null) {\n this.abortController = new AbortController();\n this.searching = true;\n const searchPromises = searchProviderId === null ? [...this.searchProviderIds].map((pid) => {\n return this.searchOneProvider(pid);\n }) : [this.searchOneProvider(searchProviderId, this.resultsBySearchProvider[searchProviderId]?.cursor ?? null)];\n return Promise.allSettled(searchPromises).then((promises) => {\n const isOneCanceled = !!promises.find((p) => {\n return p.status === \"rejected\" && (p.reason.name === \"CanceledError\" || p.reason.code === \"ERR_CANCELED\");\n });\n if (!isOneCanceled) {\n this.searching = false;\n this.searchingMoreOf = null;\n }\n });\n },\n searchOneProvider(providerId, cursor = null) {\n const url = cursor === null ? generateOcsUrl(\"search/providers/{providerId}/search?term={term}&limit={limit}\", { providerId, term: this.searchQuery, limit: LIMIT }) : generateOcsUrl(\"search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}\", { providerId, term: this.searchQuery, limit: LIMIT, cursor });\n return axios.get(url, {\n signal: this.abortController.signal\n }).then((response) => {\n const data = response.data.ocs.data;\n this.resultsBySearchProvider[providerId].name = data.name;\n this.resultsBySearchProvider[providerId].cursor = data.cursor;\n this.resultsBySearchProvider[providerId].isPaginated = data.isPaginated;\n this.resultsBySearchProvider[providerId].entries.push(...data.entries);\n });\n }\n }\n};\nvar _sfc_render$2 = function render6() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"smart-picker-search\", class: { \"with-empty-content\": _vm.showEmptyContent } }, [_c(\"NcSelect\", { ref: \"search-select\", staticClass: \"smart-picker-search--select\", attrs: { \"input-id\": \"search-select-input\", \"label\": \"name\", \"placeholder\": _vm.mySearchPlaceholder, \"options\": _vm.options, \"append-to-body\": false, \"close-on-select\": false, \"clear-search-on-select\": false, \"clear-search-on-blur\": () => false, \"reset-focus-on-options-change\": false, \"filterable\": false, \"autoscroll\": true, \"reset-on-options-change\": false, \"loading\": _vm.searching }, on: { \"search\": _vm.onSearchInput, \"input\": _vm.onSelectResultSelected }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [option.isRawLink ? _c(\"div\", { staticClass: \"custom-option\" }, [_c(\"LinkVariantIcon\", { staticClass: \"option-simple-icon\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"option-text\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Raw link {options}\", { options: option.resourceUrl })) + \" \")])], 1) : option.resourceUrl ? _c(\"NcSearchResult\", { staticClass: \"search-result\", attrs: { \"entry\": option, \"query\": _vm.searchQuery } }) : option.isCustomGroupTitle ? _c(\"span\", { staticClass: \"custom-option group-name\" }, [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon group-name-icon\", attrs: { \"src\": _vm.provider.icon_url } }) : _vm._e(), _c(\"span\", { staticClass: \"option-text\" }, [_c(\"strong\", [_vm._v(_vm._s(option.name))])])]) : option.isMore ? _c(\"span\", { staticClass: \"custom-option\" }, [option.isLoading ? _c(\"span\", { staticClass: \"option-simple-icon icon-loading-small\" }) : _c(\"DotsHorizontalIcon\", { staticClass: \"option-simple-icon\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"option-text\" }, [_vm._v(\" \" + _vm._s(_vm.t('Load more \"{options}\"', { options: option.name })) + \" \")])], 1) : _vm._e()];\n } }, { key: \"no-options\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.noOptionsText) + \" \")];\n }, proxy: true }]), model: { value: _vm.selectedResult, callback: function($$v) {\n _vm.selectedResult = $$v;\n }, expression: \"selectedResult\" } }), _vm.showEmptyContent ? _c(\"NcEmptyContent\", { staticClass: \"smart-picker-search--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon\", attrs: { \"alt\": _vm.providerIconAlt, \"src\": _vm.provider.icon_url } }) : _c(\"LinkVariantIcon\")];\n }, proxy: true }], null, false, 2922132592) }) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n \"e61f71e3\"\n);\nconst NcSearch = __component__$2.exports;\nconst MODES = {\n providerList: 1,\n standardLinkInput: 2,\n searchInput: 3,\n customElement: 4\n};\nconst _sfc_main$1 = {\n name: \"NcReferencePicker\",\n components: {\n NcCustomPickerElement,\n NcProviderList,\n NcRawLinkInput,\n NcSearch\n },\n props: {\n /**\n * Provider to select on creation\n * Default: null. Show the provider list\n */\n initialProvider: {\n type: Object,\n default: () => null\n },\n /**\n * Optional width in pixels\n * Default: 100%\n */\n width: {\n type: Number,\n default: null\n },\n /**\n * Focus on the provider list select input on creation\n * Default: true\n */\n focusOnCreate: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"cancel\",\n \"cancel-raw-link\",\n \"cancel-search\",\n \"provider-selected\",\n \"submit\"\n ],\n data() {\n return {\n MODES,\n selectedProvider: this.initialProvider\n };\n },\n computed: {\n mode() {\n return this.selectedProvider === null ? MODES.providerList : isCustomPickerElementRegistered(this.selectedProvider.id) ? MODES.customElement : this.selectedProvider.search_providers_ids ? MODES.searchInput : MODES.standardLinkInput;\n },\n pickerWrapperStyle() {\n return {\n width: this.width ? this.width + \"px\" : void 0\n };\n }\n },\n mounted() {\n if (this.focusOnCreate) {\n if (this.initialProvider) {\n setTimeout(() => {\n this.$refs[\"url-input\"]?.focus();\n }, 300);\n } else {\n this.$nextTick(() => {\n this.$refs[\"provider-list\"]?.focus();\n });\n }\n }\n },\n methods: {\n onEscapePressed() {\n if (this.selectedProvider !== null) {\n this.deselectProvider();\n } else {\n this.cancelProviderSelection();\n }\n },\n onProviderSelected(provider) {\n this.selectedProvider = provider;\n this.$emit(\"provider-selected\", provider);\n this.$nextTick(() => {\n this.$refs[\"url-input\"]?.focus();\n });\n },\n cancelCustomElement() {\n this.deselectProvider();\n },\n cancelSearch() {\n this.$emit(\"cancel-search\", this.selectedProvider?.title);\n this.deselectProvider();\n },\n cancelRawLinkInput() {\n this.$emit(\"cancel-raw-link\", this.selectedProvider?.title);\n this.deselectProvider();\n },\n cancelProviderSelection() {\n this.$emit(\"cancel\");\n },\n submitLink(link) {\n if (this.selectedProvider !== null) {\n touchProvider(this.selectedProvider.id);\n }\n this.$emit(\"submit\", link);\n this.deselectProvider();\n },\n deselectProvider() {\n this.selectedProvider = null;\n this.$emit(\"provider-selected\", null);\n setTimeout(() => {\n this.$refs[\"provider-list\"]?.focus();\n }, 300);\n }\n }\n};\nvar _sfc_render$1 = function render7() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"reference-picker\", style: _vm.pickerWrapperStyle, attrs: { \"tabindex\": \"-1\" }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onEscapePressed.apply(null, arguments);\n } } }, [_vm.mode === _vm.MODES.providerList ? _c(\"NcProviderList\", { ref: \"provider-list\", on: { \"select-provider\": _vm.onProviderSelected, \"submit\": _vm.submitLink, \"cancel\": _vm.cancelProviderSelection } }) : _vm.mode === _vm.MODES.standardLinkInput ? _c(\"NcRawLinkInput\", { ref: \"url-input\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"submit\": _vm.submitLink, \"cancel\": _vm.cancelRawLinkInput } }) : _vm.mode === _vm.MODES.searchInput ? _c(\"NcSearch\", { ref: \"url-input\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"cancel\": _vm.cancelSearch, \"submit\": _vm.submitLink } }) : _vm.mode === _vm.MODES.customElement ? _c(\"div\", { staticClass: \"custom-element-wrapper\" }, [_c(\"NcCustomPickerElement\", { staticClass: \"custom-element\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"submit\": _vm.submitLink, \"cancel\": _vm.cancelCustomElement } })], 1) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"646d5538\"\n);\nconst NcReferencePicker = __component__$1.exports;\nregister(t12, t18);\nconst _sfc_main = {\n name: \"NcReferencePickerModal\",\n components: {\n NcReferencePicker,\n NcModal,\n NcButton,\n ArrowLeftIcon: ArrowLeft,\n CloseIcon: Close\n },\n props: {\n /**\n * Provider to select on creation\n * Show the provider list if no initial one is provided\n */\n initialProvider: {\n type: Object,\n default: () => null\n },\n /**\n * Focus on the input item on create\n */\n focusOnCreate: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * If true, add the modal content to the Viewer trap elements via the event-bus\n */\n isInsideViewer: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"cancel\",\n \"submit\"\n ],\n data() {\n return {\n show: true,\n selectedProvider: this.initialProvider,\n backButtonTitle: t(\"Back to provider selection\"),\n closeButtonTitle: t(\"Close\"),\n closeButtonLabel: t(\"Close Smart Picker\")\n };\n },\n computed: {\n isProviderSelected() {\n return this.selectedProvider !== null;\n },\n showBackButton() {\n return this.initialProvider === null && this.isProviderSelected;\n },\n modalSize() {\n return this.isProviderSelected && isCustomPickerElementRegistered(this.selectedProvider.id) ? getCustomPickerElementSize(this.selectedProvider.id) ?? \"large\" : \"normal\";\n },\n showModalName() {\n return !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id);\n },\n modalName() {\n return this.isProviderSelected ? this.selectedProvider.title : t(\"Smart Picker\");\n }\n },\n mounted() {\n if (this.isInsideViewer) {\n const elem = this.$refs.modal_content;\n emit(\"viewer:trapElements:changed\", elem);\n }\n },\n methods: {\n onCancel() {\n this.show = false;\n this.$emit(\"cancel\");\n },\n onSubmit(value) {\n this.show = false;\n this.$emit(\"submit\", value);\n },\n onProviderSelect(provider) {\n this.selectedProvider = provider;\n if (provider === null && this.initialProvider !== null) {\n this.onCancel();\n }\n },\n onBackClicked() {\n this.$refs.referencePicker.deselectProvider();\n }\n }\n};\nvar _sfc_render = function render8() {\n var _vm = this, _c = _vm._self._c;\n return _vm.show ? _c(\"NcModal\", { staticClass: \"reference-picker-modal\", attrs: { \"size\": _vm.modalSize, \"can-close\": true }, on: { \"close\": _vm.onCancel } }, [_c(\"div\", { ref: \"modal_content\", staticClass: \"reference-picker-modal--content\" }, [_vm.showBackButton ? _c(\"NcButton\", { staticClass: \"back-button\", attrs: { \"aria-label\": _vm.backButtonTitle, \"title\": _vm.backButtonTitle }, on: { \"click\": _vm.onBackClicked }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"ArrowLeftIcon\")];\n }, proxy: true }], null, false, 3001860362) }) : _vm._e(), _c(\"NcButton\", { staticClass: \"close-button\", attrs: { \"aria-label\": _vm.closeButtonLabel, \"title\": _vm.closeButtonTitle, \"variant\": \"tertiary\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"CloseIcon\")];\n }, proxy: true }], null, false, 2491825086) }), _vm.showModalName ? _c(\"h2\", [_vm._v(\" \" + _vm._s(_vm.modalName) + \" \")]) : _vm._e(), _c(\"NcReferencePicker\", { ref: \"referencePicker\", attrs: { \"initial-provider\": _vm.initialProvider, \"focus-on-create\": _vm.focusOnCreate }, on: { \"provider-selected\": _vm.onProviderSelect, \"submit\": _vm.onSubmit, \"cancel\": _vm.onCancel } })], 1)]) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"00990f2a\"\n);\nconst NcReferencePickerModal = __component__.exports;\nasync function getLinkWithPicker(providerId, isInsideViewer) {\n const modalId = \"referencePickerModal\";\n const modalElement = document.createElement(\"div\");\n modalElement.id = modalId;\n document.body.append(modalElement);\n const { promise, reject, resolve } = Promise.withResolvers();\n const initialProvider = providerId && getProvider(providerId) || null;\n const View = Vue.extend(NcReferencePickerModal);\n const view = new View({\n propsData: {\n initialProvider,\n isInsideViewer\n }\n }).$mount(modalElement);\n view.$on(\"cancel\", () => {\n view.$destroy();\n reject(new Error(\"User cancellation\"));\n });\n view.$on(\"submit\", (link) => {\n view.$destroy();\n resolve(link);\n });\n return promise;\n}\nexport {\n NcReferencePicker as N,\n anyLinkProviderId as a,\n getProvider as b,\n getProviders as c,\n sortProviders as d,\n NcReferencePickerModal as e,\n NcSearch as f,\n getLinkWithPicker as g,\n searchProvider as s\n};\n//# sourceMappingURL=referencePickerModal-DxQEGT82.mjs.map\n","import '../assets/NcRichContenteditable-DqkzIGAp.css';\nimport debounce from \"debounce\";\nimport stringLength from \"string-length\";\nimport Tribute from \"tributejs/dist/tribute.esm.js\";\nimport { useIsDarkTheme } from \"../Composables/useIsDarkTheme.mjs\";\nimport { g as getAvatarUrl } from \"./getAvatarUrl-BGOeDmNO.mjs\";\nimport { N as NcUserStatusIcon } from \"./NcUserStatusIcon-BfRlUhT_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { e as emojiSearch, a as emojiAddRecent } from \"./emoji-Dtn2mDf7.mjs\";\nimport { r as register, B as t37, I as t34, a as t, J as n } from \"./_l10n-Dv1YKfKS.mjs\";\nimport { r as richEditor } from \"./index-BCqXu_og.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"./NcRichText-DBkCEk0k.mjs\";\nimport \"./customPickerElements-CYpmyl0b.mjs\";\nimport { g as getLinkWithPicker, s as searchProvider } from \"./referencePickerModal-DxQEGT82.mjs\";\nimport \"./createElementId-DhjFt1I9.mjs\";\nimport \"../Components/NcEmptyContent.mjs\";\nimport \"./NcSelect-COY5TV2U.mjs\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"./NcReferenceWidget-C0US5iQ0.mjs\";\nimport \"../Components/NcLoadingIcon.mjs\";\nimport \"./NcTextField-Doo3Q45d.mjs\";\nimport \"@nextcloud/event-bus\";\nimport \"./legacy-Cy3dCXuB.mjs\";\nimport \"vue\";\nimport \"./NcButton-DAGirW_B.mjs\";\nimport \"../Components/NcModal.mjs\";\nimport \"./widgets-XxirL-2f.mjs\";\nconst _sfc_main$1 = {\n name: \"NcAutoCompleteResult\",\n components: {\n NcUserStatusIcon\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * @deprecated Use `label` instead\n */\n title: {\n type: String,\n required: false,\n default: null\n },\n label: {\n type: String,\n required: false,\n default: null\n },\n subline: {\n type: String,\n default: null\n },\n id: {\n type: String,\n default: null\n },\n icon: {\n type: String,\n required: true\n },\n iconUrl: {\n type: String,\n default: null\n },\n source: {\n type: String,\n required: true\n },\n status: {\n type: [Object, Array],\n default: () => ({})\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n },\n // For backwards compatibility\n labelWithFallback() {\n return this.label || this.title;\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"autocomplete-result\" }, [_c(\"div\", { staticClass: \"autocomplete-result__icon\", class: [_vm.icon, `autocomplete-result__icon--${_vm.avatarUrl ? \"with-avatar\" : \"\"}`], style: _vm.avatarUrl ? { backgroundImage: `url(${_vm.avatarUrl})` } : null }, [_vm.status.icon ? _c(\"span\", { staticClass: \"autocomplete-result__status autocomplete-result__status--icon\" }, [_vm._v(\" \" + _vm._s(_vm.status && _vm.status.icon || \"\") + \" \")]) : _vm.status.status && _vm.status.status !== \"offline\" ? _c(\"NcUserStatusIcon\", { staticClass: \"autocomplete-result__status\", attrs: { \"status\": _vm.status.status } }) : _vm._e()], 1), _c(\"span\", { staticClass: \"autocomplete-result__content\" }, [_c(\"span\", { staticClass: \"autocomplete-result__title\", attrs: { \"title\": _vm.labelWithFallback } }, [_vm._v(\" \" + _vm._s(_vm.labelWithFallback) + \" \")]), _vm.subline ? _c(\"span\", { staticClass: \"autocomplete-result__subline\" }, [_vm._v(\" \" + _vm._s(_vm.subline) + \" \")]) : _vm._e()])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"ef14f1ec\"\n);\nconst NcAutoCompleteResult = __component__$1.exports;\nregister(t34, t37);\nconst style1 = {\n \"material-design-icon\": \"_material-design-icon_h1KPS\",\n \"tribute-container\": \"_tribute-container_y19wi\",\n \"tribute-container__item\": \"_tribute-container__item_HPusZ\",\n \"tribute-container--focus-visible\": \"_tribute-container--focus-visible_AqpWt\",\n \"tribute-container-autocomplete\": \"_tribute-container-autocomplete_cJgfd\",\n \"tribute-container-emoji\": \"_tribute-container-emoji_JxYiz\",\n \"tribute-container-link\": \"_tribute-container-link_59LXD\",\n \"tribute-item\": \"_tribute-item_HU0z9\",\n \"tribute-item__title\": \"_tribute-item__title_ta-s8\",\n \"tribute-item__icon\": \"_tribute-item__icon_cDA06\"\n};\nconst smilesCharacters = [\"d\", \"D\", \"p\", \"P\", \"s\", \"S\", \"x\", \"X\", \")\", \"(\", \"|\", \"/\"];\nconst textSmiles = [];\nsmilesCharacters.forEach((char) => {\n textSmiles.push(\":\" + char);\n textSmiles.push(\":-\" + char);\n});\nconst IME_KEY_CODE = 229;\nlet isPlaintextOnlySupported = null;\nconst _sfc_main = {\n name: \"NcRichContenteditable\",\n mixins: [richEditor],\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * The ID attribute of the content editable\n */\n id: {\n type: String,\n default: () => GenRandomId(7)\n },\n /**\n * Visual label of the contenteditable\n */\n label: {\n type: String,\n default: \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * The text content\n */\n modelValue: {\n type: String,\n default: \"\"\n },\n /**\n * Placeholder to be shown if empty\n */\n placeholder: {\n type: String,\n default: t(\"Write a message …\")\n },\n /**\n * Auto complete function\n */\n autoComplete: {\n type: Function,\n default: () => []\n },\n /**\n * The containing element or selector for the tribute (menu popover)\n * Defaults to `body` element\n */\n menuContainer: {\n type: [String, Element, null],\n default: null\n },\n /**\n * Make the contenteditable looks like a textarea or not.\n * Default looks like a single-line input.\n * This also handle the default enter/shift+enter behaviour.\n * if multiline, enter = newline; otherwise enter = submit\n * shift+enter always add a new line. ctrl+enter always submits\n */\n multiline: {\n type: Boolean,\n default: false\n },\n /**\n * Is the content editable ?\n */\n contenteditable: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Disable the editing and show specific disabled design\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Max allowed length\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Enable or disable emoji autocompletion\n */\n emojiAutocomplete: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Enable or disable link autocompletion\n */\n linkAutocomplete: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"submit\",\n \"paste\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"smart-picker-submit\"\n ],\n setup() {\n const uid = GenRandomId(5);\n const model = useModelMigration(\"value\", \"update:value\", true);\n if (isPlaintextOnlySupported === null) {\n try {\n document.createElement(\"div\").contentEditable = \"plaintext-only\";\n isPlaintextOnlySupported = true;\n } catch (error) {\n logger.debug(\"[NcRichContenteditable] Unsupported attribute value:\", { error });\n isPlaintextOnlySupported = false;\n }\n }\n return {\n model,\n // Constants\n labelId: `nc-rich-contenteditable-${uid}-label`,\n tributeId: `nc-rich-contenteditable-${uid}-tribute`,\n /**\n * Non-reactive property to store Tribute instance\n *\n * @type {import('tributejs').default | null}\n */\n tribute: null,\n tributeStyleMutationObserver: null\n };\n },\n data() {\n return {\n // Represent the raw untrimmed text of the contenteditable\n // serves no other purpose than to check whether the\n // content is empty or not\n localValue: this.model,\n // Tribute autocomplete\n isAutocompleteOpen: false,\n autocompleteActiveId: void 0,\n isTributeIntegrationDone: false\n };\n },\n computed: {\n /**\n * Is the current trimmed value empty?\n *\n * @return {boolean}\n */\n isEmptyValue() {\n return !this.localValue || this.localValue.trim() === \"\";\n },\n /**\n * Is the current value over maxlength?\n *\n * @return {boolean}\n */\n isOverMaxlength() {\n if (this.isEmptyValue || !this.maxlength) {\n return false;\n }\n return stringLength(this.localValue) > this.maxlength;\n },\n /**\n * Tooltip to show if characters count is over limit\n *\n * @return {string}\n */\n tooltipString() {\n if (!this.isOverMaxlength) {\n return null;\n }\n return n(\"Message limit of %n character reached\", \"Message limit of %n characters reached\", this.maxlength);\n },\n /**\n * Edit is only allowed when contenteditable is:\n * 'true' (all browsers since 2015)\n * 'plaintext-only' (most browsers since 2015, Firefox since 136+)\n *\n * @return {string}\n */\n contenteditableAttributeValue() {\n if (this.contenteditable && !this.disabled) {\n return isPlaintextOnlySupported ? \"plaintext-only\" : \"true\";\n }\n return \"false\";\n },\n /**\n * Proxied native event handlers without custom event handlers\n *\n * @return {Record}\n */\n listeners() {\n const listeners = { ...this.$listeners };\n delete listeners.paste;\n return listeners;\n },\n /**\n * Compute debounce function for the autocomplete function\n */\n debouncedAutoComplete() {\n return debounce(async (search, callback) => {\n this.autoComplete(search, callback);\n }, 100);\n }\n },\n watch: {\n /**\n * If the parent value change, we compare the plain text rendering\n * If it's different, we render everything and update the main content\n */\n model() {\n const html = this.$refs.contenteditable.innerHTML;\n if (this.model.trim() !== this.parseContent(html).trim()) {\n this.updateContent(this.model);\n }\n }\n },\n mounted() {\n this.initializeTribute();\n this.updateContent(this.model);\n },\n beforeDestroy() {\n if (this.tribute) {\n this.tribute.detach(this.$refs.contenteditable);\n }\n if (this.tributeStyleMutationObserver) {\n this.tributeStyleMutationObserver.disconnect();\n }\n },\n methods: {\n /**\n * Focus the richContenteditable\n *\n * @public\n */\n focus() {\n this.$refs.contenteditable.focus();\n },\n initializeTribute() {\n const renderMenuItem = (content) => `
    ${content}
    `;\n const tributesCollection = [];\n tributesCollection.push({\n fillAttr: \"id\",\n // Search against id and label (display name) (fallback to title for v8.0.0..8.6.1 compatibility)\n lookup: (result) => `${result.id} ${result.label ?? result.title}`,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(this.renderComponentHtml(item.original, NcAutoCompleteResult)),\n // Hide if no results\n noMatchTemplate: () => '',\n // Inner display of mentions\n selectTemplate: (item) => this.genSelectTemplate(item?.original?.id),\n // Autocompletion results\n values: this.debouncedAutoComplete,\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-autocomplete\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n if (this.emojiAutocomplete) {\n tributesCollection.push({\n trigger: \":\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n return renderMenuItem(`${item.original.native} :${item.original.short_name}`);\n },\n // Hide if no results\n noMatchTemplate: () => t(\"No emoji found\"),\n // Display raw emoji along with its name\n selectTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n emojiAddRecent(item.original);\n return item.original.native;\n },\n // Pass the search results as values\n values: (text, cb) => {\n const emojiResults = emojiSearch(text);\n if (textSmiles.includes(\":\" + text)) {\n emojiResults.unshift(\":\" + text);\n }\n cb(emojiResults);\n },\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-emoji\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n if (this.linkAutocomplete) {\n tributesCollection.push({\n trigger: \"/\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(` ${item.original.title}`),\n // Hide if no results\n noMatchTemplate: () => t(\"No link provider found\"),\n selectTemplate: this.getLink,\n // Pass the search results as values\n values: (text, cb) => cb(searchProvider(text)),\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-link\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n const menuContainer = typeof this.menuContainer === \"string\" ? document.querySelector(this.menuContainer) : this.menuContainer;\n this.tribute = new Tribute({\n collection: tributesCollection,\n // FIXME: tributejs doesn't support allowSpaces as a collection option, only as a global one\n // Requires to fork a library to allow spaces only in the middle of mentions ('@' trigger)\n allowSpaces: false,\n // Where to inject the menu popup\n menuContainer\n });\n this.tribute.attach(this.$refs.contenteditable);\n this.$refs.contenteditable.contentEditable = this.contenteditableAttributeValue;\n },\n getLink(item) {\n getLinkWithPicker(item.original.id).then((result) => {\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n const eventData = {\n result,\n insertText: true\n };\n this.$emit(\"smart-picker-submit\", eventData);\n if (eventData.insertText) {\n const newElem = document.createTextNode(result);\n tmpElem.replaceWith(newElem);\n this.setCursorAfter(newElem);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n } else {\n tmpElem.remove();\n }\n }).catch((error) => {\n logger.debug(\"Smart picker promise rejected\", { error });\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n this.setCursorAfter(tmpElem);\n tmpElem.remove();\n });\n return '';\n },\n setCursorAfter(element) {\n const range = document.createRange();\n range.setEndAfter(element);\n range.collapse();\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n moveCursorToEnd() {\n if (!document.createRange) {\n return;\n }\n if (window.getSelection().rangeCount > 0 && this.$refs.contenteditable.contains(window.getSelection().getRangeAt(0).commonAncestorContainer)) {\n return;\n }\n const range = document.createRange();\n range.selectNodeContents(this.$refs.contenteditable);\n range.collapse(false);\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n /**\n * Re-emit the input event to the parent\n *\n * @param {Event} event the input event\n */\n onInput(event) {\n this.updateValue(event.target.innerHTML);\n },\n /**\n * When pasting, sanitize the content, extract text\n * and render it again\n *\n * @param {Event} event the paste event\n * @fires Event paste the original paste event\n */\n onPaste(event) {\n if (!this.contenteditable || this.disabled) {\n return;\n }\n if (isPlaintextOnlySupported) {\n this.$emit(\"paste\", event);\n } else {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n this.$emit(\"paste\", event);\n if (clipboardData.files.length !== 0 || !Object.values(clipboardData.items).find((item) => item?.type.startsWith(\"text\"))) {\n return;\n }\n const text = clipboardData.getData(\"text\");\n const selection = window.getSelection();\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(document.createTextNode(text));\n range.collapse(false);\n }\n this.updateValue(this.$refs.contenteditable.innerHTML);\n },\n /**\n * Update the value text from the provided html\n *\n * @param {string} htmlOrText the html content (or raw text with @mentions)\n */\n updateValue(htmlOrText) {\n const text = this.parseContent(htmlOrText).replace(/^\\n$/, \"\");\n this.localValue = text;\n this.model = text;\n },\n /**\n * Update content and local value\n *\n * @param {string} value the message value\n */\n updateContent(value) {\n const renderedContent = this.renderContent(value);\n this.$refs.contenteditable.innerHTML = renderedContent;\n this.localValue = value;\n },\n /**\n * Enter key pressed. Submits if not multiline\n *\n * @param {Event} event the keydown event\n */\n onEnter(event) {\n if (event.key !== \"Enter\" && event.code !== \"Enter\") {\n return;\n }\n if (this.multiline || this.isOverMaxlength || this.tribute.isActive || event.isComposing || event.keyCode === IME_KEY_CODE) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.$emit(\"submit\", event);\n },\n /**\n * Ctrl + Enter key pressed is used to submit\n *\n * @param {Event} event the keydown event\n */\n onCtrlEnter(event) {\n if (this.isOverMaxlength) {\n return;\n }\n this.$emit(\"submit\", event);\n },\n onKeyUp(event) {\n event.stopImmediatePropagation();\n },\n onKeyEsc(event) {\n if (this.tribute && this.isAutocompleteOpen) {\n event.stopImmediatePropagation();\n this.tribute.hideMenu();\n }\n },\n /**\n * Get HTML element with Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeContainer() {\n return this.tribute.menu;\n },\n /**\n * Get the currently selected item element id in Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeSelectedItem() {\n return this.getTributeContainer().querySelector('.highlight [id^=\"nc-rich-contenteditable-tribute-item-\"]');\n },\n /**\n * Handle Tribute activation\n *\n * @param {boolean} isActive - is active\n */\n onTributeActive(isActive) {\n this.isAutocompleteOpen = isActive;\n if (isActive) {\n this.getTributeContainer().setAttribute(\"class\", this.tribute.current.collection.containerClass || this.$style[\"tribute-container\"]);\n this.setupTributeIntegration();\n document.removeEventListener(\"click\", this.hideTribute, true);\n } else {\n this.debouncedAutoComplete.clear();\n this.autocompleteActiveId = void 0;\n this.setTributeFocusVisible(false);\n }\n },\n onTributeArrowKeyDown() {\n if (!this.isAutocompleteOpen) {\n return;\n }\n this.setTributeFocusVisible(true);\n this.onTributeSelectedItemWillChange();\n },\n onTributeSelectedItemWillChange() {\n requestAnimationFrame(() => {\n this.autocompleteActiveId = this.getTributeSelectedItem()?.id;\n });\n },\n setupTributeIntegration() {\n if (this.isTributeIntegrationDone) {\n return;\n }\n this.isTributeIntegrationDone = true;\n const tributeContainer = this.getTributeContainer();\n tributeContainer.id = this.tributeId;\n tributeContainer.setAttribute(\"role\", \"listbox\");\n const ul = tributeContainer.children[0];\n ul.setAttribute(\"role\", \"presentation\");\n this.tributeStyleMutationObserver = new MutationObserver(([{ target }]) => {\n if (target.style.display !== \"none\") {\n this.onTributeSelectedItemWillChange();\n }\n }).observe(tributeContainer, {\n attributes: true,\n attributeFilter: [\"style\"]\n });\n tributeContainer.addEventListener(\"mousemove\", () => {\n this.setTributeFocusVisible(false);\n this.onTributeSelectedItemWillChange();\n }, { passive: true });\n },\n /**\n * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.\n *\n * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class\n * to style selected options in the autocomplete listbox.\n *\n * @param {boolean} withFocusVisible - should the focus-visible class be added\n */\n setTributeFocusVisible(withFocusVisible) {\n if (withFocusVisible) {\n this.getTributeContainer().classList.add(this.$style[\"tribute-container--focus-visible\"]);\n } else {\n this.getTributeContainer().classList.remove(this.$style[\"tribute-container--focus-visible\"]);\n }\n },\n /**\n * Show tribute menu programmatically.\n *\n * @param {string} trigger - trigger character, can be '/', '@', or ':'\n *\n * @public\n */\n showTribute(trigger) {\n this.focus();\n const index = this.tribute.collection.findIndex((collection) => collection.trigger === trigger);\n this.tribute.showMenuForCollection(this.$refs.contenteditable, index);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n document.addEventListener(\"click\", this.hideTribute, true);\n },\n /**\n * Hide tribute menu programmatically\n *\n */\n hideTribute() {\n this.tribute.hideMenu();\n document.removeEventListener(\"click\", this.hideTribute, true);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"rich-contenteditable\" }, [_c(\"div\", _vm._g(_vm._b({ ref: \"contenteditable\", staticClass: \"rich-contenteditable__input\", class: {\n \"rich-contenteditable__input--empty\": _vm.isEmptyValue,\n \"rich-contenteditable__input--multiline\": _vm.multiline,\n \"rich-contenteditable__input--has-label\": _vm.label,\n \"rich-contenteditable__input--overflow\": _vm.isOverMaxlength,\n \"rich-contenteditable__input--disabled\": _vm.disabled\n }, attrs: { \"id\": _vm.id, \"contenteditable\": _vm.contenteditableAttributeValue, \"aria-labelledby\": _vm.label ? _vm.labelId : void 0, \"aria-placeholder\": _vm.placeholder, \"aria-multiline\": \"true\", \"role\": \"textbox\", \"aria-haspopup\": \"listbox\", \"aria-autocomplete\": \"inline\", \"aria-controls\": _vm.tributeId, \"aria-expanded\": _vm.isAutocompleteOpen ? \"true\" : \"false\", \"aria-activedescendant\": _vm.autocompleteActiveId, \"title\": _vm.tooltipString }, on: { \"focus\": _vm.moveCursorToEnd, \"input\": _vm.onInput, \"!keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.onKeyEsc.apply(null, arguments);\n }, \"keydown\": [function($event) {\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n return _vm.onEnter.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n if (!$event.ctrlKey) return null;\n if ($event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onCtrlEnter.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n return _vm.onTributeArrowKeyDown.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"down\", 40, $event.key, [\"Down\", \"ArrowDown\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n return _vm.onTributeArrowKeyDown.apply(null, arguments);\n }], \"paste\": _vm.onPaste, \"!keyup\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onKeyUp.apply(null, arguments);\n }, \"tribute-active-true\": function($event) {\n return _vm.onTributeActive(true);\n }, \"tribute-active-false\": function($event) {\n return _vm.onTributeActive(false);\n } } }, \"div\", _vm.$attrs, false), _vm.listeners)), _vm.label ? _c(\"div\", { staticClass: \"rich-contenteditable__label\", attrs: { \"id\": _vm.labelId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style1\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n \"0f528b8a\"\n);\nconst NcRichContenteditable = __component__.exports;\nexport {\n NcAutoCompleteResult as N,\n NcRichContenteditable as a\n};\n//# sourceMappingURL=NcRichContenteditable-DTh228N5.mjs.map\n","import { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, k as t0, a as t } from \"./_l10n-Dv1YKfKS.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport NcEllipsisedOption from \"../Components/NcEllipsisedOption.mjs\";\nimport { N as NcSelect } from \"./NcSelect-COY5TV2U.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t0);\nfunction xmlToJson(xml) {\n let obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj[\"@attributes\"] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n const attribute = xml.attributes.item(j);\n obj[\"@attributes\"][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const nodeName = item.nodeName;\n if (typeof obj[nodeName] === \"undefined\") {\n obj[nodeName] = xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === \"undefined\") {\n const old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(xmlToJson(item));\n }\n }\n }\n return obj;\n}\nfunction parseXml(xml) {\n let dom = null;\n try {\n dom = new DOMParser().parseFromString(xml, \"text/xml\");\n } catch (error) {\n logger.error(\"Failed to parse xml document\", { error });\n }\n return dom;\n}\nfunction xmlToTagList(xml) {\n const json = xmlToJson(parseXml(xml));\n const list = json[\"d:multistatus\"][\"d:response\"];\n const result = [];\n for (const index in list) {\n const tag = list[index][\"d:propstat\"];\n if (tag[\"d:status\"][\"#text\"] !== \"HTTP/1.1 200 OK\") {\n continue;\n }\n result.push({\n id: parseInt(tag[\"d:prop\"][\"oc:id\"][\"#text\"]),\n displayName: tag[\"d:prop\"][\"oc:display-name\"][\"#text\"],\n canAssign: tag[\"d:prop\"][\"oc:can-assign\"][\"#text\"] === \"true\",\n userAssignable: tag[\"d:prop\"][\"oc:user-assignable\"][\"#text\"] === \"true\",\n userVisible: tag[\"d:prop\"][\"oc:user-visible\"][\"#text\"] === \"true\"\n });\n }\n return result;\n}\nasync function searchTags() {\n if (window.NextcloudVueDocs) {\n return Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags));\n }\n const result = await axios({\n method: \"PROPFIND\",\n url: generateRemoteUrl(\"dav\") + \"/systemtags/\",\n data: `\n\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t`\n });\n return xmlToTagList(result.data);\n}\nconst _sfc_main = {\n name: \"NcSelectTags\",\n components: {\n NcEllipsisedOption,\n NcSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n // Add NcSelect prop defaults and populate $props\n ...NcSelect.props,\n /**\n * Enable automatic fetching of tags\n *\n * If `false`, available tags must be passed using the `options` prop\n */\n fetchTags: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Callback to generate the label text\n *\n * @see https://vue-select.org/api/props.html#getoptionlabel\n */\n getOptionLabel: {\n type: Function,\n default: (option) => {\n const { displayName, userVisible, userAssignable } = option;\n if (userVisible === false) {\n return t(\"{tag} (invisible)\", { tag: displayName });\n }\n if (userAssignable === false) {\n return t(\"{tag} (restricted)\", { tag: displayName });\n }\n return displayName;\n }\n },\n /**\n * Sets the maximum number of tags to display in the dropdown list\n *\n * Because of compatibility reasons only 5 tag entries are shown by\n * default\n */\n limit: {\n type: Number,\n default: 5\n },\n /**\n * Allow selection of multiple options\n *\n * This prop automatically sets the internal `closeOnSelect` prop to\n * its boolean opposite\n *\n * @see https://vue-select.org/api/props.html#multiple\n */\n multiple: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Callback to filter available options\n */\n optionsFilter: {\n type: Function,\n default: null\n },\n /**\n * Enable passing of `value` prop and emitted `input` events as-is\n * i.e. for usage with `v-model`\n *\n * If `true`, custom internal `value` and `input` handling is disabled\n */\n passthru: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder text\n *\n * @see https://vue-select.org/api/props.html#placeholder\n */\n placeholder: {\n type: String,\n default: t(\"Select a tag\")\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [Number, Array, Object],\n default: void 0\n },\n /**\n * Currently selected value\n */\n modelValue: {\n type: [Number, Array, Object],\n default: null\n },\n /**\n * Any available prop\n *\n * @see https://vue-select.org/api/props.html\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {}\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n */\n \"input\",\n /**\n * Emitted on input events of the multiselect field\n *\n * @type {number|number[]}\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n /**\n * All events from https://vue-select.org/api/events.html\n */\n // Not an actual event but needed to show in vue-styleguidist docs\n \" \"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n const noop = () => {\n };\n return {\n model,\n noop\n };\n },\n data() {\n return {\n search: \"\",\n availableTags: []\n };\n },\n computed: {\n availableOptions() {\n if (this.optionsFilter) {\n return this.tags.filter(this.optionsFilter);\n }\n return this.tags;\n },\n localValue() {\n if (this.tags.length === 0) {\n return [];\n }\n if (this.multiple) {\n return this.model.filter((tag) => tag !== \"\").map((id) => this.tags.find((tag2) => tag2.id === id));\n } else {\n return this.tags.find((tag) => tag.id === this.model);\n }\n },\n propsToForward() {\n const {\n // Props handled by this component\n fetchTags,\n optionsFilter,\n passthru,\n // Props to forward\n ...propsToForward\n } = this.$props;\n return propsToForward;\n },\n tags() {\n if (!this.fetchTags) {\n return this.options;\n }\n return this.availableTags;\n }\n },\n async created() {\n if (!this.fetchTags) {\n return;\n }\n try {\n const result = await searchTags();\n this.availableTags = result;\n } catch (error) {\n logger.error(\"Loading systemtags failed\", { error });\n }\n },\n methods: {\n handleInput(value) {\n if (this.multiple) {\n this.model = value.map((element) => element.id);\n } else {\n if (value === null) {\n this.model = null;\n } else {\n this.model = value.id;\n }\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcSelect\", _vm._g(_vm._b({ attrs: { \"options\": _vm.availableOptions, \"close-on-select\": !_vm.multiple, \"value\": _vm.passthru ? _vm.model : _vm.localValue }, on: { \"search\": (searchString) => _vm.search = searchString }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [_c(\"NcEllipsisedOption\", { attrs: { \"name\": _vm.getOptionLabel(option), \"search\": _vm.search } })];\n } }, { key: \"selected-option\", fn: function(selectedOption) {\n return [_c(\"NcEllipsisedOption\", { attrs: { \"name\": _vm.getOptionLabel(selectedOption), \"search\": _vm.search } })];\n } }, _vm._l(_vm.$scopedSlots, function(_, name) {\n return { key: name, fn: function(data) {\n return [_vm._t(name, null, null, data)];\n } };\n })], null, true) }, \"NcSelect\", _vm.propsToForward, false), {\n ..._vm.$listeners,\n input: _vm.passthru ? _vm.$listeners.input : _vm.noop,\n \"update:modelValue\": _vm.passthru ? _vm.$listeners[\"update:modelValue\"] : _vm.handleInput,\n \"update:model-value\": _vm.passthru ? _vm.$listeners[\"update:model-value\"] : _vm.noop\n }));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcSelectTags = __component__.exports;\nexport {\n NcSelectTags as N\n};\n//# sourceMappingURL=NcSelectTags-Dc3zDEKf.mjs.map\n","import '../assets/NcSelectUsers-BDh2CSCJ.css';\nimport { defineComponent, ref, watch } from \"vue\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-6OlDNank.mjs\";\nimport { N as NcSelect } from \"./NcSelect-COY5TV2U.mjs\";\nimport { r as register, x as t47, h as t16, a as t } from \"./_l10n-Dv1YKfKS.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t16, t47);\nconst __default__ = {\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n __name: \"NcSelectUsers\",\n props: {\n /**\n * `aria-label` for the clear input button\n */\n ariaLabelClearSelected: {\n type: String,\n default: t(\"Clear selected\")\n },\n /**\n * `aria-label` for the listbox element\n */\n ariaLabelListbox: {\n type: String,\n default: t(\"Options\")\n },\n /**\n * Allows to customize the `aria-label` for the deselect-option button\n * The default is \"Deselect \" + optionLabel\n */\n ariaLabelDeselectOption: {\n type: Function,\n default: (optionLabel) => t(\"Deselect {option}\", { option: optionLabel })\n },\n /**\n * Keep the dropdown open after selecting an entry.\n */\n keepOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Disable the component\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Callback to determine if the provided option should match the current search text.\n * Used to determine if the option should be displayed.\n *\n * By default it filters by the `displayName` and `subname` properties of the user\n * option object unless this prop is set explicitly\n */\n filterBy: {\n type: Function,\n default: null\n },\n /**\n * Input element id\n */\n inputId: {\n type: String,\n default: () => GenRandomId()\n },\n /**\n * Visible label for the input element\n *\n * @default 'Select account'\n */\n inputLabel: {\n type: String,\n default: t(\"Select account\")\n },\n /**\n * Pass true if you are using an external label.\n * In this case make sure you set the `for` attribute of your `