@element-hq/element-call-embedded 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/LICENSE-AGPL-3.0 +661 -0
  2. package/LICENSE-COMMERCIAL +6 -0
  3. package/README.md +14 -0
  4. package/dist/assets/IndexedDBWorker-Cs0-RLNE.js +2 -0
  5. package/dist/assets/IndexedDBWorker-Cs0-RLNE.js.map +1 -0
  6. package/dist/assets/cat-4r_NkDcK.ogg +0 -0
  7. package/dist/assets/cat-Dd8bv_2W.mp3 +0 -0
  8. package/dist/assets/clap-AxCMZLTd.ogg +0 -0
  9. package/dist/assets/clap-Dxm5qGyl.mp3 +0 -0
  10. package/dist/assets/crickets-CcwrRdbq.mp3 +0 -0
  11. package/dist/assets/crickets-DUJdcuUa.ogg +0 -0
  12. package/dist/assets/cs-app-BIDxiN50.json +222 -0
  13. package/dist/assets/de-app-Dn3BQmuZ.json +220 -0
  14. package/dist/assets/deer-91r1Gyrx.mp3 +0 -0
  15. package/dist/assets/deer-DPSlVch4.ogg +0 -0
  16. package/dist/assets/dog-BoQdnF-w.mp3 +0 -0
  17. package/dist/assets/dog-CxIWtkNX.ogg +0 -0
  18. package/dist/assets/el-app-Bgiig2Nz.json +81 -0
  19. package/dist/assets/en-app-LL1Igtxp.json +221 -0
  20. package/dist/assets/es-app-Q3c7lmEj.json +88 -0
  21. package/dist/assets/et-app-DPt7J6kw.json +220 -0
  22. package/dist/assets/fr-app-BxTYbDfK.json +111 -0
  23. package/dist/assets/generic-BBbS3Wph.ogg +0 -0
  24. package/dist/assets/generic-BFeSb6fL.mp3 +0 -0
  25. package/dist/assets/id-app-B-8jUQf1.json +111 -0
  26. package/dist/assets/inconsolata-latin-400-normal-Befkm-iY.woff +0 -0
  27. package/dist/assets/inconsolata-latin-400-normal-CjvQBeBR.woff2 +0 -0
  28. package/dist/assets/inconsolata-latin-700-normal-BUbZx5Dd.woff2 +0 -0
  29. package/dist/assets/inconsolata-latin-700-normal-OU_zouat.woff +0 -0
  30. package/dist/assets/inconsolata-latin-ext-400-normal-DeeBOK-I.woff +0 -0
  31. package/dist/assets/inconsolata-latin-ext-400-normal-e5nDaEKZ.woff2 +0 -0
  32. package/dist/assets/inconsolata-latin-ext-700-normal-BSLPqmaC.woff +0 -0
  33. package/dist/assets/inconsolata-latin-ext-700-normal-BhssidQ1.woff2 +0 -0
  34. package/dist/assets/inconsolata-vietnamese-400-normal-DfMo8OX4.woff2 +0 -0
  35. package/dist/assets/inconsolata-vietnamese-400-normal-hFXvniIJ.woff +0 -0
  36. package/dist/assets/inconsolata-vietnamese-700-normal-D1IfJGt6.woff +0 -0
  37. package/dist/assets/inconsolata-vietnamese-700-normal-DlaT3sch.woff2 +0 -0
  38. package/dist/assets/index-1aspBGSV.js +216 -0
  39. package/dist/assets/index-1aspBGSV.js.map +1 -0
  40. package/dist/assets/index-BQKK4Y6t.js +3 -0
  41. package/dist/assets/index-BQKK4Y6t.js.map +1 -0
  42. package/dist/assets/index-BtY3MdEn.css +1 -0
  43. package/dist/assets/index-D1wRfn5n.js +9 -0
  44. package/dist/assets/index-D1wRfn5n.js.map +1 -0
  45. package/dist/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2 +0 -0
  46. package/dist/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff +0 -0
  47. package/dist/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2 +0 -0
  48. package/dist/assets/inter-cyrillic-500-normal-DH2hs3aW.woff +0 -0
  49. package/dist/assets/inter-cyrillic-600-normal-BGBWG807.woff2 +0 -0
  50. package/dist/assets/inter-cyrillic-600-normal-BuzJQFbW.woff +0 -0
  51. package/dist/assets/inter-cyrillic-700-normal-Bc8_fv8J.woff +0 -0
  52. package/dist/assets/inter-cyrillic-700-normal-bGtGjVdZ.woff2 +0 -0
  53. package/dist/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff +0 -0
  54. package/dist/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2 +0 -0
  55. package/dist/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2 +0 -0
  56. package/dist/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff +0 -0
  57. package/dist/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff +0 -0
  58. package/dist/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2 +0 -0
  59. package/dist/assets/inter-cyrillic-ext-700-normal-Ced3hgUT.woff +0 -0
  60. package/dist/assets/inter-cyrillic-ext-700-normal-ClVoMEGq.woff2 +0 -0
  61. package/dist/assets/inter-greek-400-normal-BZzXV7-1.woff +0 -0
  62. package/dist/assets/inter-greek-400-normal-DxZsaF_h.woff2 +0 -0
  63. package/dist/assets/inter-greek-500-normal-CeQXL5ds.woff2 +0 -0
  64. package/dist/assets/inter-greek-500-normal-d_eO-yCQ.woff +0 -0
  65. package/dist/assets/inter-greek-600-normal-CwicyhtI.woff +0 -0
  66. package/dist/assets/inter-greek-600-normal-Dhlb-90d.woff2 +0 -0
  67. package/dist/assets/inter-greek-700-normal-BRYTaFLL.woff +0 -0
  68. package/dist/assets/inter-greek-700-normal-Cxpycf-U.woff2 +0 -0
  69. package/dist/assets/inter-greek-ext-400-normal-Bput3-QP.woff2 +0 -0
  70. package/dist/assets/inter-greek-ext-400-normal-DCpCPQOf.woff +0 -0
  71. package/dist/assets/inter-greek-ext-500-normal-B6guLgqG.woff2 +0 -0
  72. package/dist/assets/inter-greek-ext-500-normal-M2hEX8vc.woff +0 -0
  73. package/dist/assets/inter-greek-ext-600-normal-C9WLioJ8.woff +0 -0
  74. package/dist/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2 +0 -0
  75. package/dist/assets/inter-greek-ext-700-normal-DXvzx4Na.woff +0 -0
  76. package/dist/assets/inter-greek-ext-700-normal-SzCdnevJ.woff2 +0 -0
  77. package/dist/assets/inter-latin-400-normal-BOOGhInR.woff2 +0 -0
  78. package/dist/assets/inter-latin-400-normal-gitzw0hO.woff +0 -0
  79. package/dist/assets/inter-latin-500-normal-D2bGa7uu.woff2 +0 -0
  80. package/dist/assets/inter-latin-500-normal-deR1Tlfd.woff +0 -0
  81. package/dist/assets/inter-latin-600-normal-B5cFAncS.woff +0 -0
  82. package/dist/assets/inter-latin-600-normal-D273HNI0.woff2 +0 -0
  83. package/dist/assets/inter-latin-700-normal-B8MtJ_2k.woff +0 -0
  84. package/dist/assets/inter-latin-700-normal-Sckx8rpT.woff2 +0 -0
  85. package/dist/assets/inter-latin-ext-400-normal-C1t-h-pH.woff +0 -0
  86. package/dist/assets/inter-latin-ext-400-normal-hnt3BR84.woff2 +0 -0
  87. package/dist/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2 +0 -0
  88. package/dist/assets/inter-latin-ext-500-normal-UMdmhHu2.woff +0 -0
  89. package/dist/assets/inter-latin-ext-600-normal-BnYJhD27.woff2 +0 -0
  90. package/dist/assets/inter-latin-ext-600-normal-CAF0vJDd.woff +0 -0
  91. package/dist/assets/inter-latin-ext-700-normal-6V9MnIL5.woff +0 -0
  92. package/dist/assets/inter-latin-ext-700-normal-CzikT_rs.woff2 +0 -0
  93. package/dist/assets/inter-vietnamese-400-normal-BUNmGMP1.woff +0 -0
  94. package/dist/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  95. package/dist/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  96. package/dist/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff +0 -0
  97. package/dist/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  98. package/dist/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff +0 -0
  99. package/dist/assets/inter-vietnamese-700-normal-CGpBpxLq.woff2 +0 -0
  100. package/dist/assets/inter-vietnamese-700-normal-dAnkLlTo.woff +0 -0
  101. package/dist/assets/it-app-Cik25Qgd.json +215 -0
  102. package/dist/assets/ja-app-Cp_00ujI.json +123 -0
  103. package/dist/assets/join_call-DlMV9nHk.ogg +0 -0
  104. package/dist/assets/join_call-dEJCP2wD.mp3 +0 -0
  105. package/dist/assets/left_call-BbqmRgnC.mp3 +0 -0
  106. package/dist/assets/left_call-C7NMl6WI.ogg +0 -0
  107. package/dist/assets/lightbulb-BIeJtAR_.ogg +0 -0
  108. package/dist/assets/lightbulb-BrnY00qi.mp3 +0 -0
  109. package/dist/assets/livekit-client.e2ee.worker-uNa5aSsA.js +2 -0
  110. package/dist/assets/livekit-client.e2ee.worker-uNa5aSsA.js.map +1 -0
  111. package/dist/assets/lv-app-J9DGb4uv.json +86 -0
  112. package/dist/assets/matrix-sdk-crypto-wasm-D9e1T4vy.js +3 -0
  113. package/dist/assets/matrix-sdk-crypto-wasm-D9e1T4vy.js.map +1 -0
  114. package/dist/assets/matrix_sdk_crypto_wasm_bg-B6p0UpxL.wasm +0 -0
  115. package/dist/assets/pako.esm-Bt8vjcgE.js +2 -0
  116. package/dist/assets/pako.esm-Bt8vjcgE.js.map +1 -0
  117. package/dist/assets/party-BZPeTgC3.mp3 +0 -0
  118. package/dist/assets/party-D7rIOhAQ.ogg +0 -0
  119. package/dist/assets/pl-app-CUkXVSZk.json +221 -0
  120. package/dist/assets/polyfill-force-B7sOo8vW.js +2 -0
  121. package/dist/assets/polyfill-force-B7sOo8vW.js.map +1 -0
  122. package/dist/assets/polyfill-force-CIQILQh5.js +2 -0
  123. package/dist/assets/polyfill-force-CIQILQh5.js.map +1 -0
  124. package/dist/assets/raise_hand-Bzqn65WB.mp3 +0 -0
  125. package/dist/assets/raise_hand-CUbxEnt9.ogg +0 -0
  126. package/dist/assets/ro-app-KHxgbZz-.json +174 -0
  127. package/dist/assets/rock-BVCJXNC-.ogg +0 -0
  128. package/dist/assets/rock-CHdnB31m.mp3 +0 -0
  129. package/dist/assets/ru-app-eoBdfBL5.json +216 -0
  130. package/dist/assets/screen_share_started-DH3qxml5.mp3 +0 -0
  131. package/dist/assets/screen_share_started-IZDL-kAw.ogg +0 -0
  132. package/dist/assets/sk-app-oyZEXyo9.json +216 -0
  133. package/dist/assets/spa-aYYegoQe.js +2 -0
  134. package/dist/assets/spa-aYYegoQe.js.map +1 -0
  135. package/dist/assets/sv-app-D3UhBwmo.json +220 -0
  136. package/dist/assets/tr-app-Dk--6BpP.json +209 -0
  137. package/dist/assets/uk-app-8w2P6iQj.json +221 -0
  138. package/dist/assets/wave-Bzf1LSMH.mp3 +0 -0
  139. package/dist/assets/wave-FiiOzicp.ogg +0 -0
  140. package/dist/assets/zh-Hans-app-8pDbXAOO.json +107 -0
  141. package/dist/assets/zh-Hant-app-BV1LKS_j.json +114 -0
  142. package/dist/config.json +1 -0
  143. package/dist/index.html +1 -0
  144. package/package.json +14 -0
@@ -0,0 +1,215 @@
1
+ {
2
+ "a11y": {
3
+ "user_menu": "Menu utente"
4
+ },
5
+ "action": {
6
+ "close": "Chiudi",
7
+ "copy_link": "Copia collegamento",
8
+ "edit": "Modifica",
9
+ "go": "Vai",
10
+ "invite": "Invita",
11
+ "lower_hand": "Abbassa la mano",
12
+ "no": "No",
13
+ "pick_reaction": "Scegli una reazione",
14
+ "raise_hand": "Alza la mano",
15
+ "register": "Registra",
16
+ "remove": "Rimuovi",
17
+ "show_less": "Mostra meno",
18
+ "show_more": "Mostra altro",
19
+ "sign_in": "Accedi",
20
+ "sign_out": "Disconnetti",
21
+ "submit": "Invia",
22
+ "upload_file": "Carica file"
23
+ },
24
+ "analytics_notice": "Partecipando a questa beta, acconsenti alla raccolta di dati anonimi che usiamo per migliorare il prodotto. Puoi trovare più informazioni su quali dati monitoriamo nella nostra <2>informativa sulla privacy</2> e nell'<5>informativa sui cookie</5>.",
25
+ "app_selection_modal": {
26
+ "continue_in_browser": "Continua nel browser",
27
+ "open_in_app": "Apri nell'app",
28
+ "text": "Tutto pronto per entrare?",
29
+ "title": "Seleziona app"
30
+ },
31
+ "call_ended_view": {
32
+ "create_account_button": "Crea profilo",
33
+ "create_account_prompt": "<0>Ti va di terminare impostando una password per mantenere il profilo?</0><1>Potrai mantenere il tuo nome e impostare un avatar da usare in chiamate future</1>",
34
+ "feedback_done": "<0>Grazie per la tua opinione!</0>",
35
+ "feedback_prompt": "<0>Vorremmo sapere la tua opinione in modo da migliorare l'esperienza.</0>",
36
+ "headline": "{{displayName}}, la chiamata è terminata.",
37
+ "not_now_button": "Non ora, torna alla schermata principale",
38
+ "reconnect_button": "Riconnetti",
39
+ "survey_prompt": "Com'è andata?"
40
+ },
41
+ "call_name": "Nome della chiamata",
42
+ "common": {
43
+ "analytics": "Statistiche",
44
+ "audio": "Audio",
45
+ "avatar": "Avatar",
46
+ "back": "Indietro",
47
+ "display_name": "Il tuo nome",
48
+ "encrypted": "Cifrata",
49
+ "home": "Pagina iniziale",
50
+ "loading": "Caricamento…",
51
+ "next": "Avanti",
52
+ "options": "Opzioni",
53
+ "password": "Password",
54
+ "preferences": "Preferenze",
55
+ "profile": "Profilo",
56
+ "reaction": "Reazione",
57
+ "reactions": "Reazioni",
58
+ "settings": "Impostazioni",
59
+ "unencrypted": "Non cifrata",
60
+ "username": "Nome utente",
61
+ "video": "Video"
62
+ },
63
+ "developer_mode": {
64
+ "crypto_version": "Versione crittografica: {{version}}",
65
+ "debug_tile_layout_label": "Debug della disposizione dei riquadri",
66
+ "device_id": "ID dispositivo: {{id}}",
67
+ "duplicate_tiles_label": "Numero di copie di riquadri aggiuntivi per partecipante",
68
+ "hostname": "Nome host: {{hostname}}",
69
+ "livekit_server_info": "Informazioni sul server LiveKit",
70
+ "livekit_sfu": "SFU LiveKit: {{url}}",
71
+ "matrix_id": "ID Matrix: {{id}}",
72
+ "show_connection_stats": "Mostra le statistiche di connessione",
73
+ "show_non_member_tiles": "Mostra i riquadri per i file multimediali non-membri",
74
+ "use_new_membership_manager": "Usa la nuova implementazione della chiamata MembershipManager"
75
+ },
76
+ "disconnected_banner": "La connessione al server è stata persa.",
77
+ "error": {
78
+ "call_is_not_supported": "La chiamata non è supportata",
79
+ "call_not_found": "Chiamata non trovata",
80
+ "call_not_found_description": "<0>Quel link non sembra appartenere a nessuna chiamata esistente. Controlla di avere il link giusto, oppure <1> creane uno nuovo</1> .</0>",
81
+ "connection_lost": "Connessione persa",
82
+ "connection_lost_description": "Sei stato disconnesso dalla chiamata.",
83
+ "e2ee_unsupported": "Browser incompatibile",
84
+ "e2ee_unsupported_description": "Il tuo browser non supporta le chiamate crittografate. I browser supportati sono Chrome, Safari e Firefox 117+.",
85
+ "generic": "Qualcosa è andato storto",
86
+ "generic_description": "L'invio dei registri di debug ci aiuterà a rintracciare il problema.",
87
+ "insufficient_capacity": "Capacità insufficiente",
88
+ "insufficient_capacity_description": "Il server ha raggiunto la capacità massima e non è possibile partecipare alla chiamata in questo momento. Riprova più tardi o contatta l'amministratore del server se il problema persiste.",
89
+ "matrix_rtc_focus_missing": "Il server non è configurato per funzionare con {{brand}}. Contatta l'amministratore del tuo server (Dominio: {{domain}}, codice di errore: {{ errorCode }}).",
90
+ "open_elsewhere": "Aperto in un'altra scheda",
91
+ "open_elsewhere_description": "{{brand}} è stato aperto in un'altra scheda. Se non ti sembra corretto, prova a ricaricare la pagina.",
92
+ "unexpected_ec_error": "Si è verificato un errore imprevisto (<0>Codice errore:</0> <1>{{ errorCode }}</1>). Contatta l'amministratore del tuo server."
93
+ },
94
+ "group_call_loader": {
95
+ "banned_body": "Sei stato bandito dalla stanza.",
96
+ "banned_heading": "Bandito",
97
+ "call_ended_body": "Sei stato rimosso dalla chiamata.",
98
+ "call_ended_heading": "Chiamata terminata",
99
+ "knock_reject_body": "I membri della stanza hanno rifiutato la tua richiesta di partecipazione.",
100
+ "knock_reject_heading": "Partecipazione non consentita",
101
+ "reason": "Motivo"
102
+ },
103
+ "hangup_button_label": "Termina chiamata",
104
+ "header_label": "Inizio di Element Call",
105
+ "header_participants_label": "Partecipanti",
106
+ "invite_modal": {
107
+ "link_copied_toast": "Collegamento copiato negli appunti",
108
+ "title": "Invita a questa chiamata"
109
+ },
110
+ "join_existing_call_modal": {
111
+ "join_button": "Sì, entra in chiamata",
112
+ "text": "Questa chiamata esiste già, vuoi entrare?",
113
+ "title": "Entrare in una chiamata esistente?"
114
+ },
115
+ "layout_grid_label": "Griglia",
116
+ "layout_spotlight_label": "In primo piano",
117
+ "lobby": {
118
+ "ask_to_join": "Chiedi di partecipare alla chiamata",
119
+ "join_as_guest": "Partecipa come ospite",
120
+ "join_button": "Entra in chiamata",
121
+ "leave_button": "Torna ai recenti",
122
+ "waiting_for_invite": "Richiesta inviata"
123
+ },
124
+ "log_in": "Accedi",
125
+ "logging_in": "Accesso…",
126
+ "login_auth_links": "<0>Crea un profilo</0> o <2>Accedi come ospite</2>",
127
+ "login_auth_links_prompt": "Non sei ancora registrato?",
128
+ "login_subheading": "Per continuare su Element",
129
+ "login_title": "Accedi",
130
+ "microphone_off": "Microfono spento",
131
+ "microphone_on": "Microfono acceso",
132
+ "mute_microphone_button_label": "Spegni il microfono",
133
+ "participant_count_one": "{{count, number}}",
134
+ "participant_count_other": "{{count, number}}",
135
+ "qr_code": "Codice QR",
136
+ "rageshake_button_error_caption": "Riprova l'invio dei registri",
137
+ "rageshake_request_modal": {
138
+ "body": "Un altro utente in questa chiamata sta avendo problemi. Per diagnosticare meglio questi problemi, vorremmo raccogliere un registro di debug.",
139
+ "title": "Richiesta registro di debug"
140
+ },
141
+ "rageshake_send_logs": "Invia registri di debug",
142
+ "rageshake_sending": "Invio…",
143
+ "rageshake_sending_logs": "Invio dei registri di debug…",
144
+ "rageshake_sent": "Grazie!",
145
+ "recaptcha_dismissed": "Recaptcha annullato",
146
+ "recaptcha_not_loaded": "Recaptcha non caricato",
147
+ "register": {
148
+ "passwords_must_match": "Le password devono coincidere",
149
+ "registering": "Registrazione…"
150
+ },
151
+ "register_auth_links": "<0>Hai già un profilo?</0><1><0>Accedi</0> o <2>Accedi come ospite</2></1>",
152
+ "register_confirm_password_label": "Conferma password",
153
+ "register_heading": "Crea il tuo account",
154
+ "return_home_button": "Torna alla schermata di iniziale",
155
+ "room_auth_view_continue_button": "Continua",
156
+ "screenshare_button_label": "Condividi schermo",
157
+ "settings": {
158
+ "audio_tab": {
159
+ "effect_volume_description": "Regola il volume delle reazioni e degli effetti di alzata di mani.",
160
+ "effect_volume_label": "Volume degli effetti sonori"
161
+ },
162
+ "developer_tab_title": "Sviluppatore",
163
+ "devices": {
164
+ "camera": "Fotocamera",
165
+ "camera_numbered": "Fotocamera {{n}}",
166
+ "default": "Predefinito",
167
+ "default_named": "Predefinito <2>({{name}})</2>",
168
+ "microphone": "Microfono",
169
+ "microphone_numbered": "Microfono {{n}}",
170
+ "speaker": "Altoparlante",
171
+ "speaker_numbered": "Altoparlante {{n}}"
172
+ },
173
+ "feedback_tab_body": "Se stai riscontrando problemi o semplicemente vuoi dare un'opinione, inviaci una breve descrizione qua sotto.",
174
+ "feedback_tab_description_label": "Il tuo commento",
175
+ "feedback_tab_h4": "Invia commento",
176
+ "feedback_tab_send_logs_label": "Includi registri di debug",
177
+ "feedback_tab_thank_you": "Grazie, abbiamo ricevuto il tuo commento!",
178
+ "feedback_tab_title": "Commenti",
179
+ "opt_in_description": "<0></0><1></1>Puoi revocare il consenso deselezionando questa casella. Se attualmente sei in una chiamata, avrà effetto al termine di essa.",
180
+ "preferences_tab": {
181
+ "developer_mode_label": "Modalità sviluppatore",
182
+ "developer_mode_label_description": "Attiva la modalità sviluppatore e mostra la scheda di impostazioni sviluppatore.",
183
+ "introduction": "Qui puoi configurare opzioni extra per un'esperienza migliore.",
184
+ "reactions_play_sound_description": "Riprodurre un effetto sonoro quando qualcuno invia una reazione in una chiamata.",
185
+ "reactions_play_sound_label": "Riproduci suoni di reazione",
186
+ "reactions_show_description": "Mostra un'animazione quando qualcuno invia una reazione.",
187
+ "reactions_show_label": "Mostra reazioni",
188
+ "show_hand_raised_timer_description": "Mostra un contatore quando un partecipante alza la mano",
189
+ "show_hand_raised_timer_label": "Mostra la durata dell'alzata di mano"
190
+ }
191
+ },
192
+ "star_rating_input_label_one": "{{count}} stelle",
193
+ "star_rating_input_label_other": "{{count}} stelle",
194
+ "start_new_call": "Inizia una nuova chiamata",
195
+ "start_video_button_label": "Avvia video",
196
+ "stop_screenshare_button_label": "Condivisione schermo",
197
+ "stop_video_button_label": "Ferma video",
198
+ "submitting": "Invio…",
199
+ "switch_camera": "Cambia fotocamera",
200
+ "unauthenticated_view_body": "Non hai ancora un profilo? <2>Creane uno</2>",
201
+ "unauthenticated_view_login_button": "Accedi al tuo profilo",
202
+ "unmute_microphone_button_label": "Riaccendi il microfono",
203
+ "version": "Versione: {{version}}",
204
+ "video_tile": {
205
+ "always_show": "Mostra sempre",
206
+ "camera_starting": "Caricamento del video...",
207
+ "change_fit_contain": "Adatta al frame",
208
+ "collapse": "Riduci",
209
+ "expand": "Espandi",
210
+ "mute_for_me": "Disattiva l'audio per me",
211
+ "muted_for_me": "Muto per me",
212
+ "volume": "Volume",
213
+ "waiting_for_media": "In attesa dei media..."
214
+ }
215
+ }
@@ -0,0 +1,123 @@
1
+ {
2
+ "a11y": {
3
+ "user_menu": "ユーザーメニュー"
4
+ },
5
+ "action": {
6
+ "close": "閉じる",
7
+ "copy_link": "リンクをコピー",
8
+ "go": "続行",
9
+ "invite": "招待",
10
+ "no": "いいえ",
11
+ "register": "登録",
12
+ "remove": "削除",
13
+ "sign_in": "サインイン",
14
+ "sign_out": "サインアウト",
15
+ "submit": "送信"
16
+ },
17
+ "analytics_notice": "ベータ版への参加と同時に、製品の改善のために匿名データを収集することに同意したことになります。追跡するデータの詳細については、<2>プライバシーポリシー</2>と<6>クッキーポリシー</6>をご確認下さい。",
18
+ "app_selection_modal": {
19
+ "continue_in_browser": "ブラウザで続行",
20
+ "open_in_app": "アプリで開く",
21
+ "text": "準備完了?",
22
+ "title": "アプリを選択"
23
+ },
24
+ "call_ended_view": {
25
+ "create_account_button": "アカウントを作成",
26
+ "create_account_prompt": "<0>パスワードを設定してアカウント設定を保持してみませんか?</0><1>名前とアバターの設定を次の通話に利用する事ができます。</1>",
27
+ "feedback_done": "<0>フィードバックありがとうございます!</0>",
28
+ "feedback_prompt": "<0>品質向上のため、皆様のフィードバックをお待ちしております。</0>",
29
+ "headline": "{{displayName}} さんの通話は終了しました。",
30
+ "not_now_button": "終了せずホーム画面に戻る",
31
+ "reconnect_button": "再接続",
32
+ "survey_prompt": "通話はどうでしたか?"
33
+ },
34
+ "call_name": "通話名",
35
+ "common": {
36
+ "analytics": "分析",
37
+ "audio": "音声",
38
+ "avatar": "アバター",
39
+ "display_name": "表示名",
40
+ "encrypted": "暗号化済み",
41
+ "home": "ホーム",
42
+ "loading": "読み込んでいます…",
43
+ "options": "オプション",
44
+ "password": "パスワード",
45
+ "profile": "プロフィール",
46
+ "settings": "設定",
47
+ "unencrypted": "暗号化されていません",
48
+ "username": "ユーザー名",
49
+ "video": "ビデオ"
50
+ },
51
+ "disconnected_banner": "サーバーへの接続が失われました。",
52
+ "hangup_button_label": "通話終了",
53
+ "header_label": "Element Call ホーム",
54
+ "header_participants_label": "参加者",
55
+ "invite_modal": {
56
+ "link_copied_toast": "リンクがクリップボードにコピーされました",
57
+ "title": "この通話に招待する"
58
+ },
59
+ "join_existing_call_modal": {
60
+ "join_button": "はい、通話に参加",
61
+ "text": "この通話は既に存在します。参加しますか?",
62
+ "title": "既存の通話に参加しますか?"
63
+ },
64
+ "layout_grid_label": "グリッド",
65
+ "layout_spotlight_label": "スポットライト",
66
+ "lobby": {
67
+ "join_button": "通話に参加",
68
+ "leave_button": "最近に戻る"
69
+ },
70
+ "log_in": "ログイン",
71
+ "logging_in": "ログインしています…",
72
+ "login_auth_links": "<0>アカウントを作成</0>または<2>ゲストとしてアクセス</2>",
73
+ "login_auth_links_prompt": "登録はまだですか?",
74
+ "login_subheading": "Element を続けるには",
75
+ "login_title": "ログイン",
76
+ "microphone_off": "マイクオフ",
77
+ "microphone_on": "マイクオン",
78
+ "mute_microphone_button_label": "ミュート",
79
+ "rageshake_button_error_caption": "ログ送信の再試行",
80
+ "rageshake_request_modal": {
81
+ "body": "この通話に参加している別のユーザーに問題が発生しています。この問題のより良い診断のため、デバッグ ログを収集したいと考えています。",
82
+ "title": "デバッグログを要求"
83
+ },
84
+ "rageshake_send_logs": "デバッグログを送信",
85
+ "rageshake_sending": "送信しています…",
86
+ "rageshake_sending_logs": "デバッグログを送信しています…",
87
+ "rageshake_sent": "ありがとうございます!",
88
+ "recaptcha_dismissed": "Recaptcha は却下されました",
89
+ "recaptcha_not_loaded": "Recaptcha が読み込まれませんでした",
90
+ "register": {
91
+ "passwords_must_match": "パスワードが一致する必要があります",
92
+ "registering": "登録しています…"
93
+ },
94
+ "register_auth_links": "<0>既にアカウントをお持ちですか?</0><1><0>ログイン</0>または<2>ゲストとしてアクセス</2></1>",
95
+ "register_confirm_password_label": "パスワードを確認",
96
+ "register_heading": "アカウントを作成",
97
+ "return_home_button": "ホーム画面に戻る",
98
+ "screenshare_button_label": "画面共有",
99
+ "settings": {
100
+ "developer_tab_title": "開発者",
101
+ "feedback_tab_body": "問題が発生している場合、もしくはフィードバックを提供したい場合は、以下に簡単な説明を入力してお送りください。",
102
+ "feedback_tab_description_label": "フィードバック",
103
+ "feedback_tab_h4": "フィードバックを送信",
104
+ "feedback_tab_send_logs_label": "デバッグログを含める",
105
+ "feedback_tab_thank_you": "ありがとうございます。フィードバックを受け取りました!",
106
+ "feedback_tab_title": "フィードバック",
107
+ "opt_in_description": "<0></0><1></1>このボックスのチェックを外すと同意を取り消すことができます。現在通話中の場合、この変更は通話終了後に有効になります。"
108
+ },
109
+ "start_new_call": "新しい通話を開始",
110
+ "start_video_button_label": "ビデオを開始",
111
+ "stop_screenshare_button_label": "共有画面",
112
+ "stop_video_button_label": "ビデオを停止",
113
+ "submitting": "送信中…",
114
+ "unauthenticated_view_body": "アカウントがありませんか? <2>アカウントを作成</2>",
115
+ "unauthenticated_view_login_button": "アカウントにログイン",
116
+ "unmute_microphone_button_label": "マイクのミュート解除",
117
+ "version": "バージョン:{{version}}",
118
+ "video_tile": {
119
+ "change_fit_contain": "フレームに合わせる",
120
+ "mute_for_me": "ミュートする",
121
+ "volume": "ボリューム"
122
+ }
123
+ }
@@ -0,0 +1,2 @@
1
+ (function(){"use strict";function C(e,t,n,r){function a(i){return i instanceof n?i:new n(function(l){l(i)})}return new(n||(n=Promise))(function(i,l){function w(I){try{k(r.next(I))}catch(L){l(L)}}function m(I){try{k(r.throw(I))}catch(L){l(L)}}function k(I){I.done?i(I.value):a(I.value).then(w,m)}k((r=r.apply(e,t||[])).next())})}typeof SuppressedError=="function"&&SuppressedError;var N={exports:{}},we=N.exports,ee;function me(){return ee||(ee=1,function(e){(function(t,n){e.exports?e.exports=n():t.log=n()})(we,function(){var t=function(){},n="undefined",r=typeof window!==n&&typeof window.navigator!==n&&/Trident\/|MSIE /.test(window.navigator.userAgent),a=["trace","debug","info","warn","error"],i={},l=null;function w(v,_){var f=v[_];if(typeof f.bind=="function")return f.bind(v);try{return Function.prototype.bind.call(f,v)}catch{return function(){return Function.prototype.apply.apply(f,[v,arguments])}}}function m(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function k(v){return v==="debug"&&(v="log"),typeof console===n?!1:v==="trace"&&r?m:console[v]!==void 0?w(console,v):console.log!==void 0?w(console,"log"):t}function I(){for(var v=this.getLevel(),_=0;_<a.length;_++){var f=a[_];this[f]=_<v?t:this.methodFactory(f,v,this.name)}if(this.log=this.debug,typeof console===n&&v<this.levels.SILENT)return"No console available for logging"}function L(v){return function(){typeof console!==n&&(I.call(this),this[v].apply(this,arguments))}}function b(v,_,f){return k(v)||L.apply(this,arguments)}function E(v,_){var f=this,R,P,o,s="loglevel";typeof v=="string"?s+=":"+v:typeof v=="symbol"&&(s=void 0);function c(y){var S=(a[y]||"silent").toUpperCase();if(!(typeof window===n||!s)){try{window.localStorage[s]=S;return}catch{}try{window.document.cookie=encodeURIComponent(s)+"="+S+";"}catch{}}}function u(){var y;if(!(typeof window===n||!s)){try{y=window.localStorage[s]}catch{}if(typeof y===n)try{var S=window.document.cookie,A=encodeURIComponent(s),X=S.indexOf(A+"=");X!==-1&&(y=/^([^;]+)/.exec(S.slice(X+A.length+1))[1])}catch{}return f.levels[y]===void 0&&(y=void 0),y}}function d(){if(!(typeof window===n||!s)){try{window.localStorage.removeItem(s)}catch{}try{window.document.cookie=encodeURIComponent(s)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function g(y){var S=y;if(typeof S=="string"&&f.levels[S.toUpperCase()]!==void 0&&(S=f.levels[S.toUpperCase()]),typeof S=="number"&&S>=0&&S<=f.levels.SILENT)return S;throw new TypeError("log.setLevel() called with invalid level: "+y)}f.name=v,f.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},f.methodFactory=_||b,f.getLevel=function(){return o??P??R},f.setLevel=function(y,S){return o=g(y),S!==!1&&c(o),I.call(f)},f.setDefaultLevel=function(y){P=g(y),u()||f.setLevel(y,!1)},f.resetLevel=function(){o=null,d(),I.call(f)},f.enableAll=function(y){f.setLevel(f.levels.TRACE,y)},f.disableAll=function(y){f.setLevel(f.levels.SILENT,y)},f.rebuild=function(){if(l!==f&&(R=g(l.getLevel())),I.call(f),l===f)for(var y in i)i[y].rebuild()},R=g(l?l.getLevel():"WARN");var h=u();h!=null&&(o=g(h)),I.call(f)}l=new E,l.getLogger=function(_){if(typeof _!="symbol"&&typeof _!="string"||_==="")throw new TypeError("You must supply a name when creating a logger.");var f=i[_];return f||(f=i[_]=new E(_,l.methodFactory)),f};var K=typeof window!==n?window.log:void 0;return l.noConflict=function(){return typeof window!==n&&window.log===l&&(window.log=K),l},l.getLoggers=function(){return i},l.default=l,l})}(N)),N.exports}var z=me(),Y;(function(e){e[e.trace=0]="trace",e[e.debug=1]="debug",e[e.info=2]="info",e[e.warn=3]="warn",e[e.error=4]="error",e[e.silent=5]="silent"})(Y||(Y={}));var Z;(function(e){e.Default="livekit",e.Room="livekit-room",e.Participant="livekit-participant",e.Track="livekit-track",e.Publication="livekit-track-publication",e.Engine="livekit-engine",e.Signal="livekit-signal",e.PCManager="livekit-pc-manager",e.PCTransport="livekit-pc-transport",e.E2EE="lk-e2ee"})(Z||(Z={}));let Ie=z.getLogger("livekit");Object.values(Z).map(e=>z.getLogger(e)),Ie.setDefaultLevel(Y.info);const p=z.getLogger("lk-e2ee");var be=Object.defineProperty,Ee=(e,t,n)=>t in e?be(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,te=(e,t,n)=>Ee(e,typeof t!="symbol"?t+"":t,n);class Se{constructor(){te(this,"_locking"),te(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){this._locks+=1;let t;const n=new Promise(a=>t=()=>{this._locks-=1,a()}),r=this._locking.then(()=>t);return this._locking=this._locking.then(()=>n),r}}var D;(function(e){e[e.WAITING=0]="WAITING",e[e.RUNNING=1]="RUNNING",e[e.COMPLETED=2]="COMPLETED"})(D||(D={}));class ke{constructor(){this.pendingTasks=new Map,this.taskMutex=new Se,this.nextTaskIndex=0}run(t){return C(this,void 0,void 0,function*(){const n={id:this.nextTaskIndex++,enqueuedAt:Date.now(),status:D.WAITING};this.pendingTasks.set(n.id,n);const r=yield this.taskMutex.lock();try{return n.executedAt=Date.now(),n.status=D.RUNNING,yield t()}finally{n.status=D.COMPLETED,this.pendingTasks.delete(n.id),r()}})}flush(){return C(this,void 0,void 0,function*(){return this.run(()=>C(this,void 0,void 0,function*(){}))})}snapshot(){return Array.from(this.pendingTasks.values())}}const q="AES-GCM",_e=10,J={key:10,delta:3,audio:1,empty:0},ne=12,Le={sharedKey:!1,ratchetSalt:"LKFrameEncryptionKey",ratchetWindowSize:8,failureTolerance:_e,keyringSize:16},Ce=100,re=2e3;class Ke extends Error{constructor(t,n){super(n||"an error has occured"),this.name="LiveKitError",this.code=t}}var ie;(function(e){e[e.NotAllowed=0]="NotAllowed",e[e.ServerUnreachable=1]="ServerUnreachable",e[e.InternalError=2]="InternalError",e[e.Cancelled=3]="Cancelled",e[e.LeaveRequest=4]="LeaveRequest"})(ie||(ie={}));var j;(function(e){e.PermissionDenied="PermissionDenied",e.NotFound="NotFound",e.DeviceInUse="DeviceInUse",e.Other="Other"})(j||(j={})),function(e){function t(n){if(n&&"name"in n)return n.name==="NotFoundError"||n.name==="DevicesNotFoundError"?e.NotFound:n.name==="NotAllowedError"||n.name==="PermissionDeniedError"?e.PermissionDenied:n.name==="NotReadableError"||n.name==="TrackStartError"?e.DeviceInUse:e.Other}e.getFailure=t}(j||(j={}));var x;(function(e){e[e.InvalidKey=0]="InvalidKey",e[e.MissingKey=1]="MissingKey",e[e.InternalError=2]="InternalError"})(x||(x={}));class T extends Ke{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:x.InternalError,r=arguments.length>2?arguments[2]:void 0;super(40,t),this.reason=n,this.participantIdentity=r}}var se;(function(e){e.SetKey="setKey",e.RatchetRequest="ratchetRequest",e.KeyRatcheted="keyRatcheted"})(se||(se={}));var F;(function(e){e.KeyRatcheted="keyRatcheted"})(F||(F={}));var oe;(function(e){e.ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",e.EncryptionError="encryptionError"})(oe||(oe={}));var O;(function(e){e.Error="cryptorError"})(O||(O={}));var H={exports:{}},ae;function xe(){if(ae)return H.exports;ae=1;var e=typeof Reflect=="object"?Reflect:null,t=e&&typeof e.apply=="function"?e.apply:function(s,c,u){return Function.prototype.apply.call(s,c,u)},n;e&&typeof e.ownKeys=="function"?n=e.ownKeys:Object.getOwnPropertySymbols?n=function(s){return Object.getOwnPropertyNames(s).concat(Object.getOwnPropertySymbols(s))}:n=function(s){return Object.getOwnPropertyNames(s)};function r(o){console&&console.warn&&console.warn(o)}var a=Number.isNaN||function(s){return s!==s};function i(){i.init.call(this)}H.exports=i,H.exports.once=f,i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var l=10;function w(o){if(typeof o!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof o)}Object.defineProperty(i,"defaultMaxListeners",{enumerable:!0,get:function(){return l},set:function(o){if(typeof o!="number"||o<0||a(o))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+o+".");l=o}}),i.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},i.prototype.setMaxListeners=function(s){if(typeof s!="number"||s<0||a(s))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+s+".");return this._maxListeners=s,this};function m(o){return o._maxListeners===void 0?i.defaultMaxListeners:o._maxListeners}i.prototype.getMaxListeners=function(){return m(this)},i.prototype.emit=function(s){for(var c=[],u=1;u<arguments.length;u++)c.push(arguments[u]);var d=s==="error",g=this._events;if(g!==void 0)d=d&&g.error===void 0;else if(!d)return!1;if(d){var h;if(c.length>0&&(h=c[0]),h instanceof Error)throw h;var y=new Error("Unhandled error."+(h?" ("+h.message+")":""));throw y.context=h,y}var S=g[s];if(S===void 0)return!1;if(typeof S=="function")t(S,this,c);else for(var A=S.length,X=K(S,A),u=0;u<A;++u)t(X[u],this,c);return!0};function k(o,s,c,u){var d,g,h;if(w(c),g=o._events,g===void 0?(g=o._events=Object.create(null),o._eventsCount=0):(g.newListener!==void 0&&(o.emit("newListener",s,c.listener?c.listener:c),g=o._events),h=g[s]),h===void 0)h=g[s]=c,++o._eventsCount;else if(typeof h=="function"?h=g[s]=u?[c,h]:[h,c]:u?h.unshift(c):h.push(c),d=m(o),d>0&&h.length>d&&!h.warned){h.warned=!0;var y=new Error("Possible EventEmitter memory leak detected. "+h.length+" "+String(s)+" listeners added. Use emitter.setMaxListeners() to increase limit");y.name="MaxListenersExceededWarning",y.emitter=o,y.type=s,y.count=h.length,r(y)}return o}i.prototype.addListener=function(s,c){return k(this,s,c,!1)},i.prototype.on=i.prototype.addListener,i.prototype.prependListener=function(s,c){return k(this,s,c,!0)};function I(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function L(o,s,c){var u={fired:!1,wrapFn:void 0,target:o,type:s,listener:c},d=I.bind(u);return d.listener=c,u.wrapFn=d,d}i.prototype.once=function(s,c){return w(c),this.on(s,L(this,s,c)),this},i.prototype.prependOnceListener=function(s,c){return w(c),this.prependListener(s,L(this,s,c)),this},i.prototype.removeListener=function(s,c){var u,d,g,h,y;if(w(c),d=this._events,d===void 0)return this;if(u=d[s],u===void 0)return this;if(u===c||u.listener===c)--this._eventsCount===0?this._events=Object.create(null):(delete d[s],d.removeListener&&this.emit("removeListener",s,u.listener||c));else if(typeof u!="function"){for(g=-1,h=u.length-1;h>=0;h--)if(u[h]===c||u[h].listener===c){y=u[h].listener,g=h;break}if(g<0)return this;g===0?u.shift():v(u,g),u.length===1&&(d[s]=u[0]),d.removeListener!==void 0&&this.emit("removeListener",s,y||c)}return this},i.prototype.off=i.prototype.removeListener,i.prototype.removeAllListeners=function(s){var c,u,d;if(u=this._events,u===void 0)return this;if(u.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):u[s]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete u[s]),this;if(arguments.length===0){var g=Object.keys(u),h;for(d=0;d<g.length;++d)h=g[d],h!=="removeListener"&&this.removeAllListeners(h);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(c=u[s],typeof c=="function")this.removeListener(s,c);else if(c!==void 0)for(d=c.length-1;d>=0;d--)this.removeListener(s,c[d]);return this};function b(o,s,c){var u=o._events;if(u===void 0)return[];var d=u[s];return d===void 0?[]:typeof d=="function"?c?[d.listener||d]:[d]:c?_(d):K(d,d.length)}i.prototype.listeners=function(s){return b(this,s,!0)},i.prototype.rawListeners=function(s){return b(this,s,!1)},i.listenerCount=function(o,s){return typeof o.listenerCount=="function"?o.listenerCount(s):E.call(o,s)},i.prototype.listenerCount=E;function E(o){var s=this._events;if(s!==void 0){var c=s[o];if(typeof c=="function")return 1;if(c!==void 0)return c.length}return 0}i.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]};function K(o,s){for(var c=new Array(s),u=0;u<s;++u)c[u]=o[u];return c}function v(o,s){for(;s+1<o.length;s++)o[s]=o[s+1];o.pop()}function _(o){for(var s=new Array(o.length),c=0;c<s.length;++c)s[c]=o[c].listener||o[c];return s}function f(o,s){return new Promise(function(c,u){function d(h){o.removeListener(s,g),u(h)}function g(){typeof o.removeListener=="function"&&o.removeListener("error",d),c([].slice.call(arguments))}P(o,s,g,{once:!0}),s!=="error"&&R(o,d,{once:!0})})}function R(o,s,c){typeof o.on=="function"&&P(o,"error",s,c)}function P(o,s,c,u){if(typeof o.on=="function")u.once?o.once(s,c):o.on(s,c);else if(typeof o.addEventListener=="function")o.addEventListener(s,function d(g){u.once&&o.removeEventListener(s,d),c(g)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof o)}return H.exports}var ce=xe();function Re(e){return"type"in e}function Pe(e){return C(this,arguments,void 0,function(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{name:q},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"encrypt";return function*(){return crypto.subtle.importKey("raw",t,n,!1,r==="derive"?["deriveBits","deriveKey"]:["encrypt","decrypt"])}()})}function ue(e,t){const r=new TextEncoder().encode(t);switch(e){case"HKDF":return{name:"HKDF",salt:r,hash:"SHA-256",info:new ArrayBuffer(128)};case"PBKDF2":return{name:"PBKDF2",salt:r,hash:"SHA-256",iterations:1e5};default:throw new Error("algorithm ".concat(e," is currently unsupported"))}}function le(e,t){return C(this,void 0,void 0,function*(){const n=ue(e.algorithm.name,t),r=yield crypto.subtle.deriveKey(n,e,{name:q,length:128},!1,["encrypt","decrypt"]);return{material:e,encryptionKey:r}})}function Te(e,t){return C(this,void 0,void 0,function*(){const n=ue(e.algorithm.name,t);return crypto.subtle.deriveBits(n,e,256)})}function Oe(e){for(var t=0;t<e.length-3;t++)if(e[t]==0&&e[t+1]==0&&e[t+2]==3)return!0;return!1}function Ae(e){const t=[];for(var n=e.length,r=0;r<e.length;)n-r>=3&&!e[r]&&!e[r+1]&&e[r+2]==3?(t.push(e[r++]),t.push(e[r++]),r++):t.push(e[r++]);return new Uint8Array(t)}const Me=2,de=3;function De(e){const t=[];for(var n=0,r=0;r<e.length;++r){var a=e[r];a<=de&&n>=Me&&(t.push(de),n=0),t.push(a),a==0?++n:n=0}return new Uint8Array(t)}class Fe{constructor(){this.consecutiveSifCount=0,this.lastSifReceivedAt=0,this.userFramesSinceSif=0}recordSif(){var t;this.consecutiveSifCount+=1,(t=this.sifSequenceStartedAt)!==null&&t!==void 0||(this.sifSequenceStartedAt=Date.now()),this.lastSifReceivedAt=Date.now()}recordUserFrame(){this.sifSequenceStartedAt!==void 0&&(this.userFramesSinceSif+=1,(this.userFramesSinceSif>this.consecutiveSifCount||Date.now()-this.lastSifReceivedAt>re)&&this.reset())}isSifAllowed(){return this.consecutiveSifCount<Ce&&(this.sifSequenceStartedAt===void 0||Date.now()-this.sifSequenceStartedAt<re)}reset(){this.userFramesSinceSif=0,this.consecutiveSifCount=0,this.sifSequenceStartedAt=void 0}}const fe=new Map;class Ue extends ce.EventEmitter{encodeFunction(t,n){throw Error("not implemented for subclass")}decodeFunction(t,n){throw Error("not implemented for subclass")}}class Be extends Ue{constructor(t){var n;super(),this.sendCounts=new Map,this.keys=t.keys,this.participantIdentity=t.participantIdentity,this.rtpMap=new Map,this.keyProviderOptions=t.keyProviderOptions,this.sifTrailer=(n=t.sifTrailer)!==null&&n!==void 0?n:Uint8Array.from([]),this.sifGuard=new Fe}get logContext(){return{participant:this.participantIdentity,mediaTrackId:this.trackId,fallbackCodec:this.videoCodec}}setParticipant(t,n){p.debug("setting new participant on cryptor",Object.assign(Object.assign({},this.logContext),{participant:t})),this.participantIdentity&&p.error("cryptor has already a participant set, participant should have been unset before",Object.assign({},this.logContext)),this.participantIdentity=t,this.keys=n,this.sifGuard.reset()}unsetParticipant(){p.debug("unsetting participant",this.logContext),this.participantIdentity=void 0}isEnabled(){if(this.participantIdentity)return fe.get(this.participantIdentity)}getParticipantIdentity(){return this.participantIdentity}getTrackId(){return this.trackId}setVideoCodec(t){this.videoCodec=t}setRtpMap(t){this.rtpMap=t}setupTransform(t,n,r,a,i){i&&(p.info("setting codec on cryptor to",{codec:i}),this.videoCodec=i),p.debug("Setting up frame cryptor transform",Object.assign({operation:t,passedTrackId:a,codec:i},this.logContext));const l=t==="encode"?this.encodeFunction:this.decodeFunction,w=new TransformStream({transform:l.bind(this)});n.pipeThrough(w).pipeTo(r).catch(m=>{p.warn(m),this.emit(O.Error,m instanceof T?m:new T(m.message,void 0,this.participantIdentity))}),this.trackId=a}setSifTrailer(t){p.debug("setting SIF trailer",Object.assign(Object.assign({},this.logContext),{trailer:t})),this.sifTrailer=t}encodeFunction(t,n){return C(this,void 0,void 0,function*(){var r;if(!this.isEnabled()||t.data.byteLength===0)return n.enqueue(t);const a=this.keys.getKeySet();if(!a){this.emit(O.Error,new T("key set not found for ".concat(this.participantIdentity," at index ").concat(this.keys.getCurrentKeyIndex()),x.MissingKey,this.participantIdentity));return}const{encryptionKey:i}=a,l=this.keys.getCurrentKeyIndex();if(i){const m=this.makeIV((r=t.getMetadata().synchronizationSource)!==null&&r!==void 0?r:-1,t.timestamp);let k=this.getUnencryptedBytes(t);const I=new Uint8Array(t.data,0,k.unencryptedBytes),L=new Uint8Array(2);L[0]=ne,L[1]=l;try{const b=yield crypto.subtle.encrypt({name:q,iv:m,additionalData:new Uint8Array(t.data,0,I.byteLength)},i,new Uint8Array(t.data,k.unencryptedBytes));let E=new Uint8Array(b.byteLength+m.byteLength+L.byteLength);E.set(new Uint8Array(b)),E.set(new Uint8Array(m),b.byteLength),E.set(L,b.byteLength+m.byteLength),k.isH264&&(E=De(E));var w=new Uint8Array(I.byteLength+E.byteLength);return w.set(I),w.set(E,I.byteLength),t.data=w.buffer,n.enqueue(t)}catch(b){p.error(b)}}else p.debug("failed to encrypt, emitting error",this.logContext),this.emit(O.Error,new T("encryption key missing for encoding",x.MissingKey,this.participantIdentity))})}decodeFunction(t,n){return C(this,void 0,void 0,function*(){if(!this.isEnabled()||t.data.byteLength===0)return p.debug("skipping empty frame",this.logContext),this.sifGuard.recordUserFrame(),n.enqueue(t);if(je(t.data,this.sifTrailer)){if(p.debug("enqueue SIF",this.logContext),this.sifGuard.recordSif(),this.sifGuard.isSifAllowed())return t.data=t.data.slice(0,t.data.byteLength-this.sifTrailer.byteLength),n.enqueue(t);p.warn("SIF limit reached, dropping frame");return}else this.sifGuard.recordUserFrame();const a=new Uint8Array(t.data)[t.data.byteLength-1];if(!this.keys.hasInvalidKeyAtIndex(a))if(this.keys.getKeySet(a))try{const i=yield this.decryptFrame(t,a);if(this.keys.decryptionSuccess(a),i)return n.enqueue(i)}catch(i){i instanceof T&&i.reason===x.InvalidKey?this.keys.hasValidKey&&(this.emit(O.Error,i),this.keys.decryptionFailure(a)):p.warn("decoding frame failed",{error:i})}else p.warn("skipping decryption due to missing key at index ".concat(a)),this.emit(O.Error,new T("missing key at index ".concat(a," for participant ").concat(this.participantIdentity),x.MissingKey,this.participantIdentity)),this.keys.decryptionFailure(a)})}decryptFrame(t,n){return C(this,arguments,void 0,function(r,a){var i=this;let l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,w=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{ratchetCount:0};return function*(){var m;const k=i.keys.getKeySet(a);if(!w.encryptionKey&&!k)throw new TypeError("no encryption key found for decryption of ".concat(i.participantIdentity));let I=i.getUnencryptedBytes(r);try{const b=new Uint8Array(r.data,0,I.unencryptedBytes);var L=new Uint8Array(r.data,b.length,r.data.byteLength-b.length);if(I.isH264&&Oe(L)){L=Ae(L);const s=new Uint8Array(b.byteLength+L.byteLength);s.set(b),s.set(L,b.byteLength),r.data=s.buffer}const E=new Uint8Array(r.data,r.data.byteLength-2,2),K=E[0],v=new Uint8Array(r.data,r.data.byteLength-K-E.byteLength,K),_=b.byteLength,f=r.data.byteLength-(b.byteLength+K+E.byteLength),R=yield crypto.subtle.decrypt({name:q,iv:v,additionalData:new Uint8Array(r.data,0,b.byteLength)},(m=w.encryptionKey)!==null&&m!==void 0?m:k.encryptionKey,new Uint8Array(r.data,_,f)),P=new ArrayBuffer(b.byteLength+R.byteLength),o=new Uint8Array(P);return o.set(new Uint8Array(r.data,0,b.byteLength)),o.set(new Uint8Array(R),b.byteLength),r.data=P,r}catch(b){if(i.keyProviderOptions.ratchetWindowSize>0)if(w.ratchetCount<i.keyProviderOptions.ratchetWindowSize){p.debug("ratcheting key attempt ".concat(w.ratchetCount," of ").concat(i.keyProviderOptions.ratchetWindowSize,", for kind ").concat(r instanceof RTCEncodedAudioFrame?"audio":"video"));let E;if((l??k)===i.keys.getKeySet(a)){const v=yield i.keys.ratchetKey(a,!1);E=yield le(v,i.keyProviderOptions.ratchetSalt)}const K=yield i.decryptFrame(r,a,l||k,{ratchetCount:w.ratchetCount+1,encryptionKey:E==null?void 0:E.encryptionKey});return K&&E&&(l??k)===i.keys.getKeySet(a)&&(i.keys.setKeySet(E,a,!0),i.keys.setCurrentKeyIndex(a)),K}else throw p.warn("maximum ratchet attempts exceeded"),new T("valid key missing for participant ".concat(i.participantIdentity),x.InvalidKey,i.participantIdentity);else throw new T("Decryption failed: ".concat(b.message),x.InvalidKey,i.participantIdentity)}}()})}makeIV(t,n){var r;const a=new ArrayBuffer(ne),i=new DataView(a);this.sendCounts.has(t)||this.sendCounts.set(t,Math.floor(Math.random()*65535));const l=(r=this.sendCounts.get(t))!==null&&r!==void 0?r:0;return i.setUint32(0,t),i.setUint32(4,n),i.setUint32(8,n-l%65535),this.sendCounts.set(t,l+1),a}getUnencryptedBytes(t){var n,r={unencryptedBytes:0,isH264:!1};if(Re(t)){let a=(n=this.getVideoCodec(t))!==null&&n!==void 0?n:this.videoCodec;if(a!==this.detectedCodec&&(p.debug("detected different codec",Object.assign({detectedCodec:a,oldCodec:this.detectedCodec},this.logContext)),this.detectedCodec=a),a==="av1")throw new Error("".concat(a," is not yet supported for end to end encryption"));if(a==="vp8")r.unencryptedBytes=J[t.type];else if(a==="vp9")return r.unencryptedBytes=0,r;const i=new Uint8Array(t.data);try{const l=Ne(i);if(r.isH264=a==="h264"||l.some(w=>[M.SLICE_IDR,M.SLICE_NON_IDR].includes(he(i[w]))),r.isH264){for(const w of l)switch(he(i[w])){case M.SLICE_IDR:case M.SLICE_NON_IDR:return r.unencryptedBytes=w+2,r;default:break}throw new TypeError("Could not find NALU")}}catch{}return r.unencryptedBytes=J[t.type],r}else return r.unencryptedBytes=J.audio,r}getVideoCodec(t){if(this.rtpMap.size===0)return;const n=t.getMetadata().payloadType;return n?this.rtpMap.get(n):void 0}}function Ne(e){const t=[];let n=0,r=0,a=e.length-2;for(;r<a;){for(;r<a&&!(e[r]===0&&e[r+1]===0&&e[r+2]===1);)r++;r>=a&&(r=e.length);let i=r;for(;i>n&&e[i-1]===0;)i--;if(n===0){if(i!==n)throw TypeError("byte stream contains leading data")}else t.push(n);n=r=r+3}return t}function he(e){return e&qe}const qe=31;var M;(function(e){e[e.SLICE_NON_IDR=1]="SLICE_NON_IDR",e[e.SLICE_PARTITION_A=2]="SLICE_PARTITION_A",e[e.SLICE_PARTITION_B=3]="SLICE_PARTITION_B",e[e.SLICE_PARTITION_C=4]="SLICE_PARTITION_C",e[e.SLICE_IDR=5]="SLICE_IDR",e[e.SEI=6]="SEI",e[e.SPS=7]="SPS",e[e.PPS=8]="PPS",e[e.AUD=9]="AUD",e[e.END_SEQ=10]="END_SEQ",e[e.END_STREAM=11]="END_STREAM",e[e.FILLER_DATA=12]="FILLER_DATA",e[e.SPS_EXT=13]="SPS_EXT",e[e.PREFIX_NALU=14]="PREFIX_NALU",e[e.SUBSET_SPS=15]="SUBSET_SPS",e[e.DPS=16]="DPS",e[e.SLICE_AUX=19]="SLICE_AUX",e[e.SLICE_EXT=20]="SLICE_EXT",e[e.SLICE_LAYER_EXT=21]="SLICE_LAYER_EXT"})(M||(M={}));function je(e,t){if(t.byteLength===0)return!1;const n=new Uint8Array(e.slice(e.byteLength-t.byteLength));return t.every((r,a)=>r===n[a])}class pe extends ce.EventEmitter{get hasValidKey(){return!this.hasInvalidKeyAtIndex(this.currentKeyIndex)}constructor(t,n){if(super(),this.currentKeyIndex=0,n.keyringSize<1||n.keyringSize>256)throw new TypeError("Keyring size needs to be between 1 and 256");this.cryptoKeyRing=new Array(n.keyringSize).fill(void 0),this.decryptionFailureCounts=new Array(n.keyringSize).fill(0),this.keyProviderOptions=n,this.ratchetPromiseMap=new Map,this.participantIdentity=t}hasInvalidKeyAtIndex(t){return this.keyProviderOptions.failureTolerance>=0&&this.decryptionFailureCounts[t]>this.keyProviderOptions.failureTolerance}decryptionFailure(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.currentKeyIndex;this.keyProviderOptions.failureTolerance<0||(this.decryptionFailureCounts[t]+=1,this.decryptionFailureCounts[t]>this.keyProviderOptions.failureTolerance&&p.warn("key for ".concat(this.participantIdentity," at index ").concat(t," is being marked as invalid")))}decryptionSuccess(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.currentKeyIndex;this.resetKeyStatus(t)}resetKeyStatus(t){t===void 0?this.decryptionFailureCounts.fill(0):this.decryptionFailureCounts[t]=0}ratchetKey(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const r=t??this.getCurrentKeyIndex(),a=this.ratchetPromiseMap.get(r);if(typeof a<"u")return a;const i=new Promise((l,w)=>C(this,void 0,void 0,function*(){try{const m=this.getKeySet(r);if(!m)throw new TypeError("Cannot ratchet key without a valid keyset of participant ".concat(this.participantIdentity));const k=m.material,I=yield Pe(yield Te(k,this.keyProviderOptions.ratchetSalt),k.algorithm.name,"derive");n&&(yield this.setKeyFromMaterial(I,r,!0),this.emit(F.KeyRatcheted,I,this.participantIdentity,r)),l(I)}catch(m){w(m)}finally{this.ratchetPromiseMap.delete(r)}}));return this.ratchetPromiseMap.set(r,i),i}setKey(t){return C(this,arguments,void 0,function(n){var r=this;let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return function*(){yield r.setKeyFromMaterial(n,a),r.resetKeyStatus(a)}()})}setKeyFromMaterial(t,n){return C(this,arguments,void 0,function(r,a){var i=this;let l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return function*(){const w=yield le(r,i.keyProviderOptions.ratchetSalt),m=a>=0?a%i.cryptoKeyRing.length:i.currentKeyIndex;p.debug("setting new key with index ".concat(a),{usage:r.usages,algorithm:r.algorithm,ratchetSalt:i.keyProviderOptions.ratchetSalt}),i.setKeySet(w,m,l),m>=0&&(i.currentKeyIndex=m)}()})}setKeySet(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;this.cryptoKeyRing[n%this.cryptoKeyRing.length]=t,r&&this.emit(F.KeyRatcheted,t.material,this.participantIdentity,n)}setCurrentKeyIndex(t){return C(this,void 0,void 0,function*(){this.currentKeyIndex=t%this.cryptoKeyRing.length,this.resetKeyStatus(t)})}getCurrentKeyIndex(){return this.currentKeyIndex}getKeySet(t){return this.cryptoKeyRing[t??this.currentKeyIndex]}}const U=[],ye=new Map;let $,He=new ke,Ge=!1,G=!1,ge,B=Le,ve=new Map;p.setDefaultLevel("info"),onmessage=e=>{He.run(()=>C(void 0,void 0,void 0,function*(){const{kind:t,data:n}=e.data;switch(t){case"init":p.setLevel(n.loglevel),p.info("worker initialized"),B=n.keyProviderOptions,G=!!n.keyProviderOptions.sharedKey,postMessage({kind:"initAck",data:{enabled:Ge}});break;case"enable":Xe(n.enabled,n.participantIdentity),p.info("updated e2ee enabled status for ".concat(n.participantIdentity," to ").concat(n.enabled)),postMessage(e.data);break;case"decode":W(n.participantIdentity,n.trackId).setupTransform(t,n.readableStream,n.writableStream,n.trackId,n.codec);break;case"encode":W(n.participantIdentity,n.trackId).setupTransform(t,n.readableStream,n.writableStream,n.trackId,n.codec);break;case"setKey":G?yield ze(n.key,n.keyIndex):n.participantIdentity?(p.info("set participant sender key ".concat(n.participantIdentity," index ").concat(n.keyIndex)),yield V(n.participantIdentity).setKey(n.key,n.keyIndex)):p.error("no participant Id was provided and shared key usage is disabled");break;case"removeTransform":Ve(n.trackId,n.participantIdentity);break;case"updateCodec":W(n.participantIdentity,n.trackId).setVideoCodec(n.codec);break;case"setRTPMap":ve=n.map,U.forEach(l=>{l.getParticipantIdentity()===n.participantIdentity&&l.setRtpMap(n.map)});break;case"ratchetRequest":We(n);break;case"setSifTrailer":Je(n.trailer);break}}))};function We(e){return C(this,void 0,void 0,function*(){if(G){const t=Q();yield t.ratchetKey(e.keyIndex),t.resetKeyStatus()}else if(e.participantIdentity){const t=V(e.participantIdentity);yield t.ratchetKey(e.keyIndex),t.resetKeyStatus()}else p.error("no participant Id was provided for ratchet request and shared key usage is disabled")})}function W(e,t){let n=U.filter(a=>a.getTrackId()===t);if(n.length>1){const a=n.map(i=>({participant:i.getParticipantIdentity()})).join(",");p.error("Found multiple cryptors for the same trackID ".concat(t,". target participant: ").concat(e," "),{participants:a})}let r=n[0];if(r)e!==r.getParticipantIdentity()&&r.setParticipant(e,V(e));else{if(p.info("creating new cryptor for",{participantIdentity:e}),!B)throw Error("Missing keyProvider options");r=new Be({participantIdentity:e,keys:V(e),keyProviderOptions:B,sifTrailer:ge}),r.setRtpMap(ve),Ye(r),U.push(r)}return r}function V(e){if(G)return Q();let t=ye.get(e);return t||(t=new pe(e,B),t.on(F.KeyRatcheted,Ze),ye.set(e,t)),t}function Q(){return $||(p.debug("creating new shared key handler"),$=new pe("shared-key",B)),$}function Ve(e,t){const n=U.filter(a=>a.getParticipantIdentity()===t&&a.getTrackId()===e);n.length>1&&p.error("Found multiple cryptors for the same participant and trackID combination",{trackId:e,participantIdentity:t});const r=n[0];r?r.unsetParticipant():p.warn("Could not unset participant on cryptor",{trackId:e,participantIdentity:t})}function Xe(e,t){p.debug("setting encryption enabled for all tracks of ".concat(t),{enable:e}),fe.set(t,e)}function ze(e,t){return C(this,void 0,void 0,function*(){p.info("set shared key",{index:t}),yield Q().setKey(e,t)})}function Ye(e){e.on(O.Error,t=>{const n={kind:"error",data:{error:new Error("".concat(x[t.reason],": ").concat(t.message))}};postMessage(n)})}function Ze(e,t,n){postMessage({kind:"ratchetKey",data:{participantIdentity:t,keyIndex:n,material:e}})}function Je(e){ge=e,U.forEach(t=>{t.setSifTrailer(e)})}self.RTCTransformEvent&&(p.debug("setup transform event"),self.onrtctransform=e=>{const t=e.transformer;p.debug("transformer",t),t.handled=!0;const{kind:n,participantIdentity:r,trackId:a,codec:i}=t.options,l=W(r,a);p.debug("transform",{codec:i}),l.setupTransform(n,t.readable,t.writable,a,i)})})();
2
+ //# sourceMappingURL=livekit-client.e2ee.worker-uNa5aSsA.js.map