@connectycube/chat-widget 0.37.6 → 0.37.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.umd.js CHANGED
@@ -43,7 +43,7 @@ React keys must be passed directly to JSX without using spread:
43
43
  *
44
44
  * This source code is licensed under the MIT license found in the
45
45
  * LICENSE file in the root directory of this source tree.
46
- */return"production".NODE_ENV!=="production"&&(function(){function q(g,d){return g===d&&(g!==0||1/g===1/d)||g!==g&&d!==d}function e(g,d){l||r.startTransition===void 0||(l=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var f=d();if(!V){var p=d();n(f,p)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),V=!0)}p=o({inst:{value:f,getSnapshot:d}});var h=p[0].inst,m=p[1];return s(function(){h.value=f,h.getSnapshot=d,t(h)&&m({inst:h})},[g,f,d]),a(function(){return t(h)&&m({inst:h}),g(function(){t(h)&&m({inst:h})})},[g]),i(f),f}function t(g){var d=g.getSnapshot;g=g.value;try{var f=d();return!n(g,f)}catch{return!0}}function A(g,d){return d()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var r=w,n=typeof Object.is=="function"?Object.is:q,o=r.useState,a=r.useEffect,s=r.useLayoutEffect,i=r.useDebugValue,l=!1,V=!1,u=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?A:e;ii.useSyncExternalStore=r.useSyncExternalStore!==void 0?r.useSyncExternalStore:u,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})(),ii}var jc;function P0(){return jc||(jc=1,"production".NODE_ENV==="production"?bo.exports=z0():bo.exports=K0()),bo.exports}var Gc=P0();const J0={t:(q,e)=>HA(e)?e:D0(e)&&HA(e.defaultValue)?e.defaultValue:Array.isArray(q)?q[q.length-1]:q,ready:!1},Z0=()=>()=>{},Oq=(q,e={})=>{const{i18n:t}=e,{i18n:A,defaultNS:r}=w.useContext(L0)||{},n=t||A||G0();n&&!n.reportNamespaces&&(n.reportNamespaces=new Y0),n||Dc(n,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const o=w.useMemo(()=>({...O0(),...n?.options?.react,...e}),[n,e]),{useSuspense:a,keyPrefix:s}=o,i=w.useMemo(()=>{const E=r||n?.options?.defaultNS;return HA(E)?[E]:E||["translation"]},[q,r,n]);n?.reportNamespaces?.addUsedNamespaces?.(i);const l=w.useRef(0),V=w.useCallback(E=>{if(!n)return Z0;const{bindI18n:v,bindI18nStore:S}=o,k=()=>{l.current+=1,E()};return v&&n.on(v,k),S&&n.store.on(S,k),()=>{v&&v.split(" ").forEach(I=>n.off(I,k)),S&&S.split(" ").forEach(I=>n.store.off(I,k))}},[n,o]),u=w.useRef(),g=w.useCallback(()=>{if(!n)return J0;const E=!!(n.isInitialized||n.initializedStoreOnce)&&i.every(R=>T0(R,n,o)),v=e.lng||n.language,S=l.current,k=u.current;if(k&&k.ready===E&&k.lng===v&&k.keyPrefix===s&&k.revision===S)return k;const L={t:n.getFixedT(v,o.nsMode==="fallback"?i:i[0],s),ready:E,lng:v,keyPrefix:s,revision:S};return u.current=L,L},[n,i,s,o,e.lng]),[d,f]=w.useState(0),{t:p,ready:h}=Gc.useSyncExternalStore(V,g,g);w.useEffect(()=>{if(n&&!h&&!a){const E=()=>f(v=>v+1);e.lng?Uc(n,e.lng,i,E):oi(n,i,E)}},[n,e.lng,i,h,a,d]);const m=n||{},M=w.useMemo(()=>{const E=[p,m,h];return E.t=p,E.i18n=m,E.ready=h,E},[p,m,h]);if(n&&a&&!h)throw new Promise(E=>{const v=()=>E();e.lng?Uc(n,e.lng,i,v):oi(n,i,v)});return M},W0={AddMembers:"Add members",Admin:"Admin",areTyping:"are typing",Cancel:"Cancel",ChatName:"Chat name",ChatNameRequired:"Chat name is required",Chat:"Chat",Chats:"Chats",ChooseChat:"Choose a chat",Continue:"Continue",CreateGroupChat:"Create group chat",Delete:"Delete",Draft:"Draft",EnterMessage:"Enter message",EnterUserName:"Enter user name",ExitChat:"Exit chat",FileTypeNotSupported:"File format is not supported",isTyping:"is typing",me:"me",Members:"Members",members:"members",NewGroup:"New group",NewMessage:"New message",NoChats:"Begin your first chat and see what happens!",NoMessages:"No messages yet",NoOnlineUsers:"No online users",Profile:"Profile",RemoveMembers:"Remove members","RemoveMembers?":"Are you sure you want to remove members?",Reset:"Reset",Search:"Search",Select:"Select",Send:"Send",StartChat:"Start chat",NewUserChatDialogTitle:"Send message to user",NewGroupChatDialogTitle:"Start a new Group",typing:"typing",Users:"Users",you:"you",Block:"Block",UnBlock:"Unblock",Report:"Report",ReportUser:"Report user",WhatsWrongWithThisUser:"What's wrong with this user?",ProvideReason:"Reason for reporting",ReportCreatedSuccessfully:"Report has been created successfully",ReportSubmitFailed:"Failed to submit report",MyProfile:"My profile",YouBlocked:"You are blocked by this user",BlockList:"Block list",AddToBlockList:"Add to block list","AddToBlockList?":"Are you sure you want to add {{name}} to block list?",RemoveFromBlockList:"Remove from block list","RemoveFromBlockList?":"Are you sure you want to remove {{name}} from block list?",BlockListEmpty:"Block list is empty",NotificationSettings:"Notification settings",Notifications:"Notifications",NotificationSound:"Notification sound",PushNotifications:"Push notifications",PleaseWait:"Please wait",Available:"Available",Busy:"Busy",Away:"Away",Online:"Online",IncomingCall:"Incoming call",IncomingAudioCall:"Incoming audio call from {{name}}",IncomingVideoCall:"Incoming video call from {{name}}",Accept:"Accept",Reject:"Reject",RejectedCall:"{{name}} rejected the call",MissedCall:"Missed call from {{name}}",AuthForm:{Login:"Login",Password:"Password",Register:"Register",Registration:"Registration",LoginRequired:"Login is required",LoginMinLimit:"Login must be at least {{limit}} symbols",LoginMaxLimit:"Login must be at most {{limit}} symbols",PasswordRequired:"Login is required",PasswordMinLimit:"Password must be at least {{limit}} symbols",PasswordMaxLimit:"Password must be at most {{limit}} symbols",LoginDescription:"Enter your login and password to access your account",RegisterDescription:"Fill in the form below to sign up","ToRegister?":"Don't have an account?","ToLogin?":"Already have an account?"},SingleViewForm:{Title:"Submit your contact data to start a chat",Subtitle:"We will not share your email address. Your email address is used solely to contact you",NamePlaceholder:"Name",NameRequired:"Name is required",EmailPlaceholder:"Email",EmailRequired:"Email is required",EmailInvalid:"Invalid email format",AcceptTermsAndConditions:"Accept terms and conditions",AcceptTermsAndConditionsError:"You must accept the terms and conditions",TermsAndConditionsText:"By clicking this checkbox, you agree to the",TermsAndConditionsLink:"terms and conditions",RememberMe:"Remember me",RememberMeText:"This is my private device",Next:"Next"},SingleViewChatError:"Opponent(s) for the chat not found",Information:"Information",AI:{GetSummary:"Get summary",ChangeMessageTone:"Change message tone",SummaryMessageTitle:"Only you can see this message",forLast7Days:"for last 7 days",forLastDay:"for last day",forUnreads:"for unreads",MessageTone:"Change message tone",EmptyMessage:"Can't change tone of empty message",positive:"positive",negative:"negative",cringe:"cringe"},CallHistory:{RejectedIncoming:"Rejected incoming",RejectedOutgoing:"Rejected outgoing",Unanswered:"Unanswered",Missed:"Missed",Canceled:"Canceled",Ended:"Ended",videoCall:"video call",audioCall:"audio call",defaultCall:"call"}},H0={AddMembers:"Προσθήκη μελών",Admin:"Διαχειριστής",areTyping:"είναι",Cancel:"Ακύρωση",ChatName:"Όνομα συνομιλίας",ChatNameRequired:"Το όνομα συνομιλίας είναι υποχρεωτικό",Chat:"Συνομιλία",Chats:"Συνομιλίες",ChooseChat:"Επιλέξτε συνομιλία",Continue:"Συνέχεια",CreateGroupChat:"Δημιουργία ομαδικής συνομιλίας",Delete:"Διαγραφή",Draft:"Πρόχειρο",EnterMessage:"Εισάγετε μήνυμα",EnterUserName:"Εισάγετε όνομα χρήστη",ExitChat:"Έξοδος από τη συνομιλία",FileTypeNotSupported:"Η μορφή αρχείου δεν υποστηρίζεται",isTyping:"είναι",me:"εγώ",Members:"Μέλη",members:"μέλη",NewGroup:"Νέα ομάδα",NewMessage:"Νέο μήνυμα",NoChats:"Επιλέξτε κάποιο χρήστη από τη λίστα Χρήστες και ξεκινήστε την πρώτη σας συνομιλία!",NoMessages:"Δεν υπάρχουν μηνύματα",NoOnlineUsers:"Δεν υπάρχουν συνδεδεμένοι χρήστες",Profile:"Προφίλ",RemoveMembers:"Αφαίρεση μελών","RemoveMembers?":"Είστε σίγουροι ότι θέλετε να αφαιρέσετε τα μέλη;",Reset:"Επαναφορά",Search:"Αναζήτηση",Select:"Επιλογή",Send:"Αποστολή",StartChat:"Έναρξη συνομιλίας",NewUserChatDialogTitle:"Αποστολή μηνύματος σε μέλος",NewGroupChatDialogTitle:"Δημιουργία νέας ομάδας",typing:"πληκτρολογεί",Users:"Χρήστες",you:"εσύ",Block:"Block",UnBlock:"Unblock",Report:"Αναφορά",ReportUser:"Αναφορά χρήστη",WhatsWrongWithThisUser:"Τι θέλετε να αναφέρετε για αυτόν το χρήστη;",ProvideReason:"Λόγος αναφοράς",ReportCreatedSuccessfully:"Η αναφορά για το χρήστη έγινε",ReportSubmitFailed:"Σφάλμα στη δημιουργία αναφοράς",MyProfile:"Το προφίλ μου",YouBlocked:"Αυτός ο χρήστης σας έχει κάνει Block",BlockList:"Λίστα Blocked χρηστών",AddToBlockList:"Προσθήκη στη λίστα Blocked","AddToBlockList?":"Σίγουρα θέλετε να προσθέσετε το χρήστη {{name}} στη λίστα Blocked;",RemoveFromBlockList:"Αφαίρεση από τη λίστα Blocked","RemoveFromBlockList?":"Σίγουρα θέλετε να αφαιρέσετε το χρήστη {{name}} από τη λίστα Blocked;",BlockListEmpty:"Η Blocked λίστα είναι άδεια",NotificationSettings:"Ρυθμίσεις ειδοποιήσεων",Notifications:"Ειδοποιήσεις",NotificationSound:"Ήχος ειδοποίησης",PushNotifications:"Ειδοποιήσεις push",PleaseWait:"Παρακαλώ περιμένετε",Available:"Διαθέσιμος/η",Busy:"Απασχολημένος/η",Away:"Απουσιάζω",Online:"Συνδεδεμένος/η",IncomingCall:"Εισερχόμενη κλήση",IncomingAudioCall:"Εισερχόμενη κλήση ήχου από τον χρήστη {{name}}",IncomingVideoCall:"Εισερχόμενη κλήση βίντεο από τον χρήστη {{name}}",Accept:"Αποδοχή",Reject:"Απόρριψη",RejectedCall:"Ο χρήστης {{name}} απέρριψε την κλήση",MissedCall:"Αναπάντητη κλήση από τον χρήστη {{name}}",AuthForm:{Login:"Σύνδεση",Password:"Κωδικός πρόσβασης",Register:"Εγγραφή",Registration:"Εγγραφή",LoginRequired:"Το όνομα χρήστη είναι υποχρεωτικό",LoginMinLimit:"Το όνομα χρήστη πρέπει να έχει τουλάχιστον {{limit}} χαρακτήρες",LoginMaxLimit:"Το όνομα χρήστη πρέπει να έχει το πολύ {{limit}} χαρακτήρες",PasswordRequired:"Ο κωδικός πρόσβασης είναι υποχρεωτικός",PasswordMinLimit:"Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον {{limit}} χαρακτήρες",PasswordMaxLimit:"Ο κωδικός πρόσβασης πρέπει να έχει το πολύ {{limit}} χαρακτήρες",LoginDescription:"Εισάγετε το όνομα χρήστη και τον κωδικό πρόσβασης για να αποκτήσετε πρόσβαση στον λογαριασμό σας",RegisterDescription:"Συμπληρώστε την παρακάτω φόρμα για να εγγραφείτε","ToRegister?":"Δεν έχετε λογαριασμό;","ToLogin?":"Έχετε ήδη λογαριασμό;"},SingleViewForm:{Title:"Υποβάλετε τα στοιχεία επικοινωνίας σας για να ξεκινήσετε μια συνομιλία",Subtitle:"Δεν θα κοινοποιήσουμε τη διεύθυνση email σας. Η διεύθυνση email σας χρησιμοποιείται αποκλειστικά για να επικοινωνήσουμε μαζί σας.",NamePlaceholder:"Όνομα",NameRequired:"Το όνομα είναι υποχρεωτικό",EmailPlaceholder:"E-mail",EmailRequired:"Απαιτείται email",Emailnvalid:"Μη έγκυρη μορφή email",AcceptTermsAndConditions:"Αποδοχή όρων και προϋποθέσεων",AcceptTermsAndConditionsError:"Πρέπει να αποδεχτείτε τους όρους και τις προϋποθέσεις",TermsAndConditionsText:"Κάνοντας κλικ σε αυτό το πλαίσιο, συμφωνείτε με τους",TermsAndConditionsLink:"όρους και προϋποθέσεις",RememberMe:"Να με θυμάσαι",RememberMeText:"Αυτή είναι η προσωπική μου συσκευή",Next:"Επόμενο"},SingleViewChatError:"Δεν βρέθηκαν αντίπαλοι για τη συνομιλία",Information:"Πληροφορίες",AI:{GetSummary:"Λήψη σύνοψης",ChangeMessageTone:"Αλλαγή τόνου μηνύματος",SummaryMessageTitle:"Μόνο εσείς μπορείτε να δείτε αυτό το μήνυμα",forLast7Days:"για τις τελευταίες 7 ημέρες",forLastDay:"για την τελευταία ημέρα",forUnreads:"για μη αναγνωσμένα",MessageTone:"Αλλαγή τόνου μηνύματος",EmptyMessage:"Δεν είναι δυνατή η αλλαγή του τόνου ενός κενού μηνύματος",positive:"θετικός",negative:"αρνητικός",cringe:"κρίμα"},CallHistory:{RejectedIncoming:"Απορρίφθηκε εισερχόμενη κλήση",RejectedOutgoing:"Απορρίφθηκε εξερχόμενη κλήση",Unanswered:"Μη απαντημένη κλήση",Missed:"Αναπάντητη κλήση",Canceled:"Ακυρώθηκε",Ended:"Ολοκληρώθηκε",videoCall:"βιντεοκλήση",audioCall:"ηχητική κλήση",defaultCall:"κλήση"}},X0={AddMembers:"Додати учасників",Admin:"Адмін",areTyping:"пишуть",Cancel:"Скасувати",ChatName:"Назва чату",ChatNameRequired:"Назва чату є обов'язковою",Chat:"Чат",Chats:"Чати",ChooseChat:"Оберіть чат",Continue:"Продовжити",CreateGroupChat:"Створити груповий чат",Delete:"Видалити",Draft:"Чернетка",EnterMessage:"Введіть повідомлення",EnterUserName:"Введіть ім'я користувача",ExitChat:"Вийти з чату",FileTypeNotSupported:"Формат файлу не підтримується",isTyping:"пише",me:"я",Members:"Учасники",members:"учасники",NewGroup:"Нова група",NewMessage:"Нове повідомлення",NoChats:"Почніть свою першу розмову та подивіться, що станеться!",NoMessages:"Поки що немає повідомлень",NoOnlineUsers:"Немає онлайн-користувачів",Profile:"Профіль",RemoveMembers:"Видалити учасників","RemoveMembers?":"Ви впевнені, що хочете видалити учасників?",Reset:"Скинути",Search:"Пошук",Select:"Вибрати",Send:"Надіслати",StartChat:"Розпочати чат",NewUserChatDialogTitle:"Новий чат з користувачем",NewGroupChatDialogTitle:"Нова група",typing:"друкує",Users:"Користувачі",you:"ви",Block:"Заблокувати",UnBlock:"Розблокувати",Report:"Поскаржитися",ReportUser:"Поскаржитися на користувача",WhatsWrongWithThisUser:"Що не так з цим користувачем?",ProvideReason:"Підстава",ReportCreatedSuccessfully:"Звіт поданий успішно",ReportSubmitFailed:"Помилка при поданні звіту",MyProfile:"Мій профіль",YouBlocked:"Цей користувача вас заблокував",BlockList:"Список заблокованих",AddToBlockList:"Додати до списку заблокованих","AddToBlockList?":"Ви впевнені, що хочете додати {{name}} до списку заблокованих?",RemoveFromBlockList:"Видалити зі списку заблокованих","RemoveFromBlockList?":"Ви впевнені, що хочете видалити {{name}} зі списку заблокованих?",BlockListEmpty:"Список заблокованих порожній",NotificationSettings:"Налаштування сповіщень",Notifications:"Сповіщення",NotificationSound:"Звук сповіщення",PushNotifications:"Push-сповіщення",PleaseWait:"Будь ласка, зачекайте",Available:"Присутній",Busy:"Зайнятий",Away:"Відсутній",Online:"В мережі",IncomingCall:"Вхідний виклик",IncomingAudioCall:"Вхідний аудіо виклик від {{name}}",IncomingVideoCall:"Вхідний відео виклик від {{name}}",Accept:"Прийняти",Reject:"Відхилити",RejectedCall:"{{name}} відхилив виклик",MissedCall:"Пропущений виклик від {{name}}",AuthForm:{Login:"Логін",Password:"Пароль",Register:"Зареєструвати",Registration:"Реєстрація",LoginRequired:"Логін є обов'язковим",LoginMinLimit:"Логін має містити щонайменше {{limit}} символів",LoginMaxLimit:"Логін має містити не більше {{limit}} символів",PasswordRequired:"Пароль є обов'язковим",PasswordMinLimit:"Пароль має містити щонайменше {{limit}} символів",PasswordMaxLimit:"Пароль має містити не більше {{limit}} символів",LoginDescription:"Введіть ваш логін та пароль для доступу до акаунту",RegisterDescription:"Заповніть форму нижче для реєстрації","ToRegister?":"Ще не маєте акаунту?","ToLogin?":"Вже маєте акаунт?"},SingleViewForm:{Title:"Введіть свою електронну пошту, щоб почати чат",Subtitle:"Ми не будемо передавати вашу електронну пошту. Ваша електронна пошта використовується виключно для зв'язку з вами",NamePlaceholder:"Ім'я",NameRequired:"Ім'я є обов'язковим",EmailPlaceholder:"Електронна пошта",EmailRequired:"Електронна пошта є обов'язковою",EmailInvalid:"Невірний формат електронної пошти",AcceptTermsAndConditions:"Прийняти умови та положення",AcceptTermsAndConditionsError:"Ви повинні прийняти умови та положення",TermsAndConditionsText:"Натискаючи цю галочку, ви погоджуєтесь з",TermsAndConditionsLink:"умовами та положеннями",RememberMe:"Запам'ятати мене",RememberMeText:"Це мій приватний пристрій",Next:"Далі"},SingleViewChatError:"Опонента(ів) для чату не знайдено",Information:"Інформація",AI:{GetSummary:"Отримати резюме",ChangeMessageTone:"Змінити тон повідомлення",SummaryMessageTitle:"Тільки ти можеш бачити це повідомлення",forLast7Days:"за останні 7 днів",forLastDay:"за останній день",forUnreads:"для непрочитаних",MessageTone:"Змінити тон повідомлення",EmptyMessage:"Неможливо змінити тон пустого повідомлення",positive:"позитивний",negative:"негативний",cringe:"крінж"},CallHistory:{RejectedIncoming:"Відхилений вхідний",RejectedOutgoing:"Відхилений вихідний",Unanswered:"Неприйнятий",Missed:"Пропущений",Canceled:"Скасований",Ended:"Завершений",videoCall:"відео виклик",audioCall:"аудіо виклик",defaultCall:"виклик"}},Fc={en:"English",ua:"Ukrainian",el:"Greek"},_0=typeof window<"u"&&localStorage.getItem("translation")||"en";Qe.use(F0).init({resources:{en:{translation:W0},el:{translation:H0},ua:{translation:X0}},lng:_0,fallbackLng:"en",interpolation:{escapeValue:!1}});const Lc=q=>{let e;const t=new Set,A=(i,l)=>{const V=typeof i=="function"?i(e):i;if(!Object.is(V,e)){const u=e;e=l??(typeof V!="object"||V===null)?V:Object.assign({},e,V),t.forEach(g=>g(e,u))}},r=()=>e,a={setState:A,getState:r,getInitialState:()=>s,subscribe:i=>(t.add(i),()=>t.delete(i))},s=e=q(A,r,a);return a},$0=(q=>q?Lc(q):Lc),qE=q=>q;function eE(q,e=qE){const t=w.useSyncExternalStore(q.subscribe,w.useCallback(()=>e(q.getState()),[q,e]),w.useCallback(()=>e(q.getInitialState()),[q,e]));return w.useDebugValue(t),t}const Yc=q=>{const e=$0(q),t=A=>eE(e,A);return Object.assign(t,e),t},Ae=(q=>q?Yc(q):Yc);var aA=(q=>(q.CHATS="chats",q.USERS="users",q))(aA||{});const zc={activeTab:"chats"},ko=Ae(q=>({...zc,setActiveTab:e=>q({activeTab:e}),resetActiveTab:()=>q({activeTab:zc.activeTab})})),tE=()=>{ko.setState({activeTab:"chats"})},Vi={visible:!1,title:""},Io=Ae(q=>({...Vi,showAlertBusy:(e="")=>q({visible:!0,title:e}),hideAlertBusy:()=>q({visible:!1,title:Vi.title})})),AE=()=>{Io.setState({visible:!1,title:Vi.title})},rE={CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_EXTERNAL_ID:"EXTERNAL-id-012345",CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_NAME:"Test Store Name - PROD",CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_OPPONENTS_IDS:"4Ja3BiEWTo,bfoosyJijU,o8k9iLdYiI",CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_PHOTO:"/logo.png"},{CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_EXTERNAL_ID:nE,CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_NAME:oE,CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_PHOTO:aE,CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_OPPONENTS_IDS:sE}=rE||"production";var Bo=(q=>(q.SINGLE="1on1",q.GROUP="group",q))(Bo||{});const wr={defaultChat:null,singleViewChat:{externalId:nE,opponentUserIds:sE,name:oE,photo:aE}},li=Ae(q=>({...wr,setDefaultChat:e=>q({defaultChat:e}),setSingleViewChat:e=>q({singleViewChat:e}),resetDefaultChat:()=>q({defaultChat:wr.defaultChat}),resetSingleViewChat:()=>q({singleViewChat:wr.singleViewChat})})),iE=q=>{li.setState(q)},VE=()=>{li.setState(wr)},ye={opened:!1,splitView:!1,singleView:!1,showChatStatus:!1,showOnlineUsersTab:!1,hideNewChatButton:!1,hideNewUserChatOption:!1,hideNewGroupChatOption:!1,imgLogoSource:"/logo.png"},Be=Ae((q,e)=>({...ye,setOpened:t=>q({opened:t}),setSplitView:t=>q({splitView:t}),setSingleView:t=>q({singleView:t,splitView:!1}),setShowChatStatus:t=>q({showChatStatus:t}),setShowOnlineUsersTab:t=>q({showOnlineUsersTab:t}),setHideNewChatButton:t=>q({hideNewChatButton:t}),setHideNewUserChatOption:t=>q({hideNewUserChatOption:t}),setHideNewGroupChatOption:t=>q({hideNewGroupChatOption:t}),setImgLogoSource:t=>q({imgLogoSource:t}),toggleOpened:()=>q({opened:!e().opened}),resetOpened:()=>q({opened:ye.opened}),resetSplitView:()=>q({splitView:ye.splitView}),resetSingleView:()=>q({singleView:ye.singleView}),resetShowChatStatus:()=>q({showChatStatus:ye.showChatStatus}),resetShowOnlineUsersTab:()=>q({showOnlineUsersTab:ye.showOnlineUsersTab}),resetHideNewChatButton:()=>q({hideNewChatButton:ye.hideNewChatButton}),resetHideNewUserChatOption:()=>q({hideNewUserChatOption:ye.hideNewUserChatOption}),resetHideNewGroupChatOption:()=>q({hideNewGroupChatOption:ye.hideNewGroupChatOption}),resetImgLogoSource:()=>q({imgLogoSource:ye.imgLogoSource})})),lE=q=>{Be.setState(q)},cE=()=>{Be.setState(ye)},To=43200,Kc=1440,Pc=Symbol.for("constructDateFrom");function ci(q,e){return typeof q=="function"?q(e):q&&typeof q=="object"&&Pc in q?q[Pc](e):q instanceof Date?new q.constructor(e):new Date(e)}function MA(q,e){return ci(q,q)}let uE={};function dE(){return uE}function Jc(q){const e=MA(q),t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),+q-+t}function ui(q,...e){const t=ci.bind(null,q||e.find(A=>typeof A=="object"));return e.map(t)}function Do(q,e){const t=+MA(q)-+MA(e);return t<0?-1:t>0?1:t}function gE(q){return ci(q,Date.now())}function fE(q,e,t){const[A,r]=ui(t?.in,q,e),n=A.getFullYear()-r.getFullYear(),o=A.getMonth()-r.getMonth();return n*12+o}function pE(q){return e=>{const A=(q?Math[q]:Math.trunc)(e);return A===0?0:A}}function hE(q,e){return+MA(q)-+MA(e)}function mE(q,e){const t=MA(q);return t.setHours(23,59,59,999),t}function wE(q,e){const t=MA(q),A=t.getMonth();return t.setFullYear(t.getFullYear(),A+1,0),t.setHours(23,59,59,999),t}function yE(q,e){const t=MA(q);return+mE(t)==+wE(t)}function vE(q,e,t){const[A,r,n]=ui(t?.in,q,q,e),o=Do(r,n),a=Math.abs(fE(r,n));if(a<1)return 0;r.getMonth()===1&&r.getDate()>27&&r.setDate(30),r.setMonth(r.getMonth()-o*a);let s=Do(r,n)===-o;yE(A)&&a===1&&Do(A,n)===1&&(s=!1);const i=o*(a-+s);return i===0?0:i}function EE(q,e,t){const A=hE(q,e)/1e3;return pE(t?.roundingMethod)(A)}const ME={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},CE=(q,e,t)=>{let A;const r=ME[q];return typeof r=="string"?A=r:e===1?A=r.one:A=r.other.replace("{{count}}",e.toString()),t?.addSuffix?t.comparison&&t.comparison>0?"in "+A:A+" ago":A};function di(q){return(e={})=>{const t=e.width?String(e.width):q.defaultWidth;return q.formats[t]||q.formats[q.defaultWidth]}}const xE={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},SE={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},bE={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},kE={date:di({formats:xE,defaultWidth:"full"}),time:di({formats:SE,defaultWidth:"full"}),dateTime:di({formats:bE,defaultWidth:"full"})},IE={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},BE=(q,e,t,A)=>IE[q];function sn(q){return(e,t)=>{const A=t?.context?String(t.context):"standalone";let r;if(A==="formatting"&&q.formattingValues){const o=q.defaultFormattingWidth||q.defaultWidth,a=t?.width?String(t.width):o;r=q.formattingValues[a]||q.formattingValues[o]}else{const o=q.defaultWidth,a=t?.width?String(t.width):q.defaultWidth;r=q.values[a]||q.values[o]}const n=q.argumentCallback?q.argumentCallback(e):e;return r[n]}}const TE={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},DE={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},NE={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},UE={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},RE={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},QE={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},OE={ordinalNumber:(q,e)=>{const t=Number(q),A=t%100;if(A>20||A<10)switch(A%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},era:sn({values:TE,defaultWidth:"wide"}),quarter:sn({values:DE,defaultWidth:"wide",argumentCallback:q=>q-1}),month:sn({values:NE,defaultWidth:"wide"}),day:sn({values:UE,defaultWidth:"wide"}),dayPeriod:sn({values:RE,defaultWidth:"wide",formattingValues:QE,defaultFormattingWidth:"wide"})};function Vn(q){return(e,t={})=>{const A=t.width,r=A&&q.matchPatterns[A]||q.matchPatterns[q.defaultMatchWidth],n=e.match(r);if(!n)return null;const o=n[0],a=A&&q.parsePatterns[A]||q.parsePatterns[q.defaultParseWidth],s=Array.isArray(a)?GE(a,V=>V.test(o)):jE(a,V=>V.test(o));let i;i=q.valueCallback?q.valueCallback(s):s,i=t.valueCallback?t.valueCallback(i):i;const l=e.slice(o.length);return{value:i,rest:l}}}function jE(q,e){for(const t in q)if(Object.prototype.hasOwnProperty.call(q,t)&&e(q[t]))return t}function GE(q,e){for(let t=0;t<q.length;t++)if(e(q[t]))return t}function FE(q){return(e,t={})=>{const A=e.match(q.matchPattern);if(!A)return null;const r=A[0],n=e.match(q.parsePattern);if(!n)return null;let o=q.valueCallback?q.valueCallback(n[0]):n[0];o=t.valueCallback?t.valueCallback(o):o;const a=e.slice(r.length);return{value:o,rest:a}}}const LE=/^(\d+)(th|st|nd|rd)?/i,YE=/\d+/i,zE={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},KE={any:[/^b/i,/^(a|c)/i]},PE={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},JE={any:[/1/i,/2/i,/3/i,/4/i]},ZE={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},WE={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:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},HE={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},XE={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},_E={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},$E={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}},qM={ordinalNumber:FE({matchPattern:LE,parsePattern:YE,valueCallback:q=>parseInt(q,10)}),era:Vn({matchPatterns:zE,defaultMatchWidth:"wide",parsePatterns:KE,defaultParseWidth:"any"}),quarter:Vn({matchPatterns:PE,defaultMatchWidth:"wide",parsePatterns:JE,defaultParseWidth:"any",valueCallback:q=>q+1}),month:Vn({matchPatterns:ZE,defaultMatchWidth:"wide",parsePatterns:WE,defaultParseWidth:"any"}),day:Vn({matchPatterns:HE,defaultMatchWidth:"wide",parsePatterns:XE,defaultParseWidth:"any"}),dayPeriod:Vn({matchPatterns:_E,defaultMatchWidth:"any",parsePatterns:$E,defaultParseWidth:"any"})},eM={code:"en-US",formatDistance:CE,formatLong:kE,formatRelative:BE,localize:OE,match:qM,options:{weekStartsOn:0,firstWeekContainsDate:1}};function tM(q,e,t){const A=dE(),r=t?.locale??A.locale??eM,n=2520,o=Do(q,e);if(isNaN(o))throw new RangeError("Invalid time value");const a=Object.assign({},t,{addSuffix:t?.addSuffix,comparison:o}),[s,i]=ui(t?.in,...o>0?[e,q]:[q,e]),l=EE(i,s),V=(Jc(i)-Jc(s))/1e3,u=Math.round((l-V)/60);let g;if(u<2)return t?.includeSeconds?l<5?r.formatDistance("lessThanXSeconds",5,a):l<10?r.formatDistance("lessThanXSeconds",10,a):l<20?r.formatDistance("lessThanXSeconds",20,a):l<40?r.formatDistance("halfAMinute",0,a):l<60?r.formatDistance("lessThanXMinutes",1,a):r.formatDistance("xMinutes",1,a):u===0?r.formatDistance("lessThanXMinutes",1,a):r.formatDistance("xMinutes",u,a);if(u<45)return r.formatDistance("xMinutes",u,a);if(u<90)return r.formatDistance("aboutXHours",1,a);if(u<Kc){const d=Math.round(u/60);return r.formatDistance("aboutXHours",d,a)}else{if(u<n)return r.formatDistance("xDays",1,a);if(u<To){const d=Math.round(u/Kc);return r.formatDistance("xDays",d,a)}else if(u<To*2)return g=Math.round(u/To),r.formatDistance("aboutXMonths",g,a)}if(g=vE(i,s),g<12){const d=Math.round(u/To);return r.formatDistance("xMonths",d,a)}else{const d=g%12,f=Math.trunc(g/12);return d<3?r.formatDistance("aboutXYears",f,a):d<9?r.formatDistance("overXYears",f,a):r.formatDistance("almostXYears",f+1,a)}}function Zc(q,e){return tM(q,gE(q),e)}const Wc=q=>Symbol.iterator in q,Hc=q=>"entries"in q,Xc=(q,e)=>{const t=q instanceof Map?q:new Map(q.entries()),A=e instanceof Map?e:new Map(e.entries());if(t.size!==A.size)return!1;for(const[r,n]of t)if(!A.has(r)||!Object.is(n,A.get(r)))return!1;return!0};function AM(q,e){return!!Object.is(q,e)||typeof q=="object"&&q!==null&&typeof e=="object"&&e!==null&&Object.getPrototypeOf(q)===Object.getPrototypeOf(e)&&(Wc(q)&&Wc(e)?Hc(q)&&Hc(e)?Xc(q,e):((t,A)=>{const r=t[Symbol.iterator](),n=A[Symbol.iterator]();let o=r.next(),a=n.next();for(;!o.done&&!a.done;){if(!Object.is(o.value,a.value))return!1;o=r.next(),a=n.next()}return!!o.done&&!!a.done})(q,e):Xc({entries:()=>Object.entries(q)},{entries:()=>Object.entries(e)}))}function Ct(q){const e=w.useRef(void 0);return t=>{const A=q(t);return AM(e.current,A)?e.current:e.current=A}}const CA=q=>function(e){const t=w.useRef(q.getState()[e]);return w.useEffect(()=>{const A=q.subscribe(r=>r[e],r=>{t.current=r});return()=>A()},[e]),t},Yt=q=>(e,t,A)=>{const r=A.subscribe;return A.subscribe=(n,o,a)=>{let s=n;if(o){const i=a?.equalityFn||Object.is;let l=n(A.getState());s=V=>{const u=n(V);if(!i(l,u)){const g=l;o(l=u,g)}},a?.fireImmediately&&o(l,l)}return r(s)},q(e,t,A)},No=(q,e)=>`[@connectycube/react@4.7.16]${q?`[${q}]`:""}${e?`[${e}]`:""}`,rM=(q,e,...t)=>console.log(`${No(q,e)}[Log]:`,...t),nM=(q,e,...t)=>console.info(`${No(q,e)}[Info]:`,...t),oM=(q,e,...t)=>console.warn(`${No(q,e)}[Warn]:`,...t),aM=(q,e,...t)=>console.error(`${No(q,e)}[Error]:`,...t),ln=q=>({log:(e,...t)=>rM(q,e,...t),info:(e,...t)=>nM(q,e,...t),warn:(e,...t)=>oM(q,e,...t),error:(e,...t)=>aM(q,e,...t)}),cn=ln("useBlockList"),yr=ln("useChat"),sM=ln("useConnectyCube"),gi=ln("useUsers"),We=ln("useVideochat"),fi=q=>{let e;if(typeof q=="string"){const t=new Date(q).getTime();e=isNaN(t)?void 0:t}else typeof q=="number"&&(e=1e3*q);return e},_c=q=>{let e;if(q<=30)e="Online";else if(q<3600)e=`Last seen ${Math.ceil(q/60)} minutes ago`;else if(q<86400)e=`Last seen ${Math.ceil(q/3600)} hours ago`;else{const t=new Date(Date.now()-1e3*q);e=`Last seen ${t.getUTCDate()}/${(t.getMonth()+1).toString().padStart(2,"0")}/${t.getFullYear()}`}return e},$c=q=>fi(q.last_message_date_sent)||fi(q.updated_at)||fi(q.created_at)||0,un=(q,e)=>$c(e)-$c(q),XA=(q,e)=>{const t={total:0};return q.forEach(({_id:A,unread_messages_count:r=0})=>{const n=e===A?0:r;t[A]=n,t.total+=n}),t},Uo={dialogs:[],totalDialogsReached:!1,selectedDialog:void 0,activatedDialogs:new Set,privateDialogsIds:{},unreadMessagesCount:{total:0}},pi=Ae()(Yt((q,e)=>({...Uo,upsertDialog:t=>{const A=e().dialogs||[],r=[t,...A.filter(o=>o._id!==t._id)],n=XA(r);q({dialogs:r,unreadMessagesCount:n})},upsertDialogs:t=>{const A=[...e().dialogs||[],...t],r=Array.from(new Map(A.map(o=>[o._id,o])).values()).sort(un),n=XA(r);q({dialogs:r,unreadMessagesCount:n})},updateDialog:(t,A)=>{const r=(e().dialogs||[]).map(o=>o._id===t?{...o,...A}:o).sort(un),n=XA(r);q({dialogs:r,unreadMessagesCount:n})},updateDialogOnMessage:(t,A,r=!1)=>{const n=e().selectedDialog,o=(e().dialogs||[]).map(s=>s._id===t?{...s,unread_messages_count:r||n&&n._id===A.dialog_id?s.unread_messages_count:(s.unread_messages_count||0)+1,last_message:A.body,last_message_date_sent:r?s.last_message_date_sent:parseInt(A.extension.date_sent)}:s).sort(un),a=XA(o);q({dialogs:o,unreadMessagesCount:a})},updateDialogOnReadMessage:t=>{const A=(e().dialogs||[]).map(n=>n._id===t?{...n,unread_messages_count:Math.max(0,n.unread_messages_count-1)}:n),r=XA(A);q({dialogs:A,unreadMessagesCount:r})},addParticipantsToDialog:(t,A)=>{const r=(e().dialogs||[]).map(n=>(n._id===t&&(n.occupants_ids=Array.from(new Set([...n.occupants_ids,...A]))),n)).sort(un);q({dialogs:r})},removeParticipantsFromDialog:(t,A)=>{const r=(e().dialogs||[]).map(n=>(n._id===t&&(n.occupants_ids=n.occupants_ids.filter(o=>!A.includes(o))),n)).sort(un);q({dialogs:r})},removeDialog:t=>{const A=(e().dialogs||[]).filter(n=>n._id!==t),r=XA(A);q({dialogs:A,unreadMessagesCount:r})},setSelectedDialog:t=>{const A=e().dialogs||[],r=XA(A,t?._id);q({selectedDialog:t,unreadMessagesCount:r})},resetSelectedDialog:()=>{q({selectedDialog:Uo.selectedDialog})},activateDialog:t=>{q({activatedDialogs:e().activatedDialogs?.add(t)})},resetActivatedDialogs:()=>{q({activatedDialogs:new Set})},addPrivateDialogId:(t,A)=>{const r={...e().privateDialogsIds||{},[t]:A};q({privateDialogsIds:r})},removePrivateDialogId:t=>{const A={...e().privateDialogsIds};delete A[t],q({privateDialogsIds:A})},setTotalDialogsReached:t=>{q({totalDialogsReached:t})},resetTotalDialogsReached:()=>{q({totalDialogsReached:Uo.totalDialogsReached})},resetDialogsStore:()=>{q(Uo)}})));var pe;(function(q){q.WAIT="wait",q.LOST="lost",q.SENT="sent",q.READ="read"})(pe||(pe={}));const hi={messages:{},totalMessagesReached:[]},mi=Ae()(Yt((q,e)=>({...hi,addMessage:(t,A)=>{const r=e().messages||{},n=[...r[t]||[],A],o={...r,[t]:n};q({messages:o})},addMessages:(t,A,r=!0)=>{const n=e().messages||{},o=n[t]||[],a=r?[...A,...o]:[...o,...A],s={...n,[t]:a};q({messages:s})},updateMessage:(t,A,r)=>{const n=e().messages||{},o=(n[t]||[]).map(s=>s._id===A?{...s,...r}:s),a={...n,[t]:o};q({messages:a})},updateMessageStatus:(t,A,r,n)=>{const o=e().messages||{},a=(o[t]||[]).map(i=>i._id===A?{...i,read_ids:n?i.read_ids?[...new Set([...i.read_ids,n])]:[n]:i.read_ids,read:r===pe.READ?1:i.read,status:r===pe.SENT&&i.status===pe.LOST?i.status:r}:i),s={...o,[t]:a};q({messages:s})},markMessagesAsLost:()=>{const t=e().messages||{},A=Object.fromEntries(Object.entries(t).map(([r,n])=>[r,n.map(o=>o.status===pe.WAIT?{...o,status:pe.LOST}:o)]));q({messages:A})},removeMessages:(t,A)=>{const r=e().messages||{},n=(r[t]||[]).filter(a=>!A.includes(a._id)),o={...r,[t]:n};q({messages:o})},clearMessages:t=>{const A={...e().messages||{},[t]:[]};q({messages:A})},setTotalMessagesReached:(t,A)=>{const r=e().totalMessagesReached,n=new Set(r);A?n.add(t):n.delete(t),q({totalMessagesReached:Array.from(n)})},resetTotalMessagesReached:()=>{q({totalMessagesReached:hi.totalMessagesReached})},resetMessagesStore:()=>{q(hi)}})));var Hq;(function(q){q.DISCONNECTED="disconnected",q.CONNECTING="connecting",q.CONNECTED="connected",q.NOT_AUTHORIZED="not-authorized",q.ERROR="error"})(Hq||(Hq={}));const wi={attachedChatListeners:new Set,isOnline:navigator.onLine,isConnected:!1,chatStatus:Hq.DISCONNECTED,pingInterval:null,isNetworkStatusHandling:!1},yi=Ae()(Yt((q,e)=>({...wi,attachChatListeners:t=>{const A=e().attachedChatListeners??new Set;Object.entries(t).forEach(([r,n])=>{const o=r;A.has(o)||(G.chat.addListener(o,n),A.add(o))}),q({attachedChatListeners:A})},handleNetworkStatus:()=>{const{isNetworkStatusHandling:t,setIsOnline:A}=e();t||(window.addEventListener("online",async()=>{await A(!0),yr.info("Network is online","🟢")}),window.addEventListener("offline",async()=>{await A(!1),yr.info("Network is offline","🔴")}),q({isNetworkStatusHandling:!0}))},setIsOnline:async t=>{const{isOnline:A,chatStatus:r,setChatStatus:n}=e();if(t!==A)if(q({isOnline:t}),t&&r!==Hq.ERROR)r!==Hq.DISCONNECTED&&r!==Hq.NOT_AUTHORIZED||n(Hq.CONNECTING);else try{await G.chat.pingWithTimeout(1e3),n(Hq.CONNECTED)}catch{const{resetTotalDialogsReached:a,resetActivatedDialogs:s}=pi.getState(),{resetTotalMessagesReached:i,markMessagesAsLost:l}=mi.getState();G.chat.terminate(),n(Hq.DISCONNECTED),a(),i(),s(),l()}},setIsConnected:t=>{const{isConnected:A,pingInterval:r,setIsOnline:n}=e();if(t!==A&&(q({isConnected:t}),r&&(clearInterval(r),q({pingInterval:wi.pingInterval})),t)){yr.info("chat is connected",'start "pingWithTimeout"');const o=setInterval(async()=>{try{await G.chat.pingWithTimeout(1e3),await n(!0)}catch(a){yr.error("ping chat",a),await n(!1),setTimeout(async()=>{try{await G.chat.pingWithTimeout(1e3),await n(!0)}catch(s){yr.error("ping chat (reserved)",s),await n(!1)}},5e3)}},4e4);q({pingInterval:o})}},setChatStatus:t=>{q({chatStatus:t})},resetChatStore:()=>{q({...wi})}}))),dn="ConnectyCubeBlockList",qu={blockedUsers:new Set,isFetchInited:!1,isFetched:!1},eu=Ae()(Yt((q,e)=>({...qu,fetchBlockList:async()=>{e().isFetched||e().isFetchInited||(yi.subscribe(t=>t.isConnected,async(t,A)=>{if(t!==A){if(!t)return void cn.warn("fetchBlockList","chat is not connected");if((await G.chat.privacylist.getNames()).default===dn){const r=(await G.chat.privacylist.getList(dn)).items.reduce((n,o)=>(o.action===G.PrivacyListAction.DENY&&n.add(+o.user_id),n),new Set);q({isFetched:!0,blockedUsers:r})}}},{fireImmediately:!0}),q({isFetchInited:!0}))},setBlockedUsers:t=>{q({blockedUsers:t})},resetBlockListStore:()=>{q(qu)}}))),gn={currentSession:null,currentUserId:null,currentUser:null},Ro=Ae()(Yt((q,e)=>({...gn,setCurrentUserId:t=>{q({currentUserId:t})},resetCurrentUserId:()=>{q({currentUserId:gn.currentUserId})},setCurrentSession:t=>{q({currentSession:t,currentUserId:t.user_id,currentUser:t?.user})},updateCurrentSession:t=>{const A=e().currentSession;A?q({currentSession:{...A,...t}}):sM.error("updateCurrentSession","Has no session to update")},resetCurrentSession:()=>{q({currentSession:gn.currentSession,currentUserId:gn.currentUserId})},resetConnectyCubeStore:()=>{q(gn)}}))),tu={lastActivity:{}},iM=Ae()(Yt((q,e)=>({...tu,upsertLastActivity:(t,A)=>{q({lastActivity:{...e().lastActivity,[t]:A}})},resetLastActivityStore:()=>{q(tu)}}))),Au={messageEvent:void 0,messageSystemEvent:void 0,messageSentEvent:void 0,messageReadEvent:void 0,messageEditEvent:void 0,messageDeleteEvent:void 0,messageErrorEvent:void 0},VM=Ae()(Yt(q=>({...Au,setMessageEvent:e=>{q({messageEvent:e})},setMessageSystemEvent:e=>{q({messageSystemEvent:e})},setMessageSentEvent:e=>{q({messageSentEvent:e})},setMessageReadEvent:e=>{q({messageReadEvent:e})},setMessageEditEvent:e=>{q({messageEditEvent:e})},setMessageDeleteEvent:e=>{q({messageDeleteEvent:e})},setMessageErrorEvent:e=>{q({messageErrorEvent:e})},resetMessageEventStore:()=>{q(Au)}}))),ru={typingStatus:{},typingTimers:{}},nu=Ae()(Yt((q,e)=>({...ru,setTypingStatus:(t,A,r)=>{const n=e().typingStatus||{},o=n[t]?new Set(n[t]):new Set;r?o.add(A):o.delete(A),q({typingStatus:{...n,[t]:[...o]}})},addTypingTimer:(t,A,r)=>{const n=e().typingTimers||{},o=n[t]||{},a={...n,[t]:{...o,[A]:r}};q({typingTimers:a})},clearTypingTimer:(t,A)=>{const r=e().typingTimers||{},n=r[t]||{};clearTimeout(n[A]),delete n[A];const o={...r,[t]:{...n}};q({typingTimers:o})},resetTypingStatusStore:()=>{q(ru)}}))),ou={users:{},usersLastRequestAt:{},onlineUsers:{},onlineUsersLastRequestAt:0,onlineUsersCount:0},au=Ae()(Yt((q,e)=>({...ou,upsertUser:t=>{q({users:{...e().users,[t.id]:t}})},upsertUsers:t=>{q({users:t.reduce((A,r)=>({...A,[r.id]:r}),{...e().users})})},upsertUsersLastRequestAt:t=>{q({...e().usersLastRequestAt,...t})},setOnlineUsers:t=>{q({onlineUsers:t.reduce((A,r)=>({...A,[r.id]:r}),{})})},updateOnlineUser:t=>{e().onlineUsers[t.id]&&q({onlineUsers:{...e().onlineUsers,[t.id]:t}})},updateOnlineUsers:t=>{q({onlineUsers:t.reduce((A,r)=>A[r.id]?{...A,[r.id]:r}:A,{...e().onlineUsers})})},setOnlineUsersLastRequestAt:t=>{q({onlineUsersLastRequestAt:t})},setOnlineUsersCount:t=>{q({onlineUsersCount:t})},resetUsersStore:()=>{q(ou)}})));var sA,ee;(function(q){q[q.USER=0]="USER",q[q.DISPLAY=1]="DISPLAY"})(sA||(sA={})),(function(q){q.ON_CALL="onCall",q.ON_STOP_CALLING="onStopCalling",q.ON_ACCEPT="onAccept",q.ON_REJECT="onReject",q.ON_STOP="onStop",q.ON_NOT_ANSWER="onNotAnswer",q.ON_CONNECTION_STATE="onConnectionState"})(ee||(ee={}));const iA={incomingCallCallData:null,incomingCallStopData:null,activeCallAcceptData:null,activeCallRejectData:null,activeCallStopData:null,activeCallNotAnswerData:null,activeCallConnectionStateData:null,deviceChangeEvent:null},lM={localStream:null,remoteStreams:{},userMediaParams:{video:!0,audio:!0},displayMediaParams:{video:!0,audio:!1},activeMedia:sA.USER},xA={activeCall:null,incomingCall:null,...iA,...lM,participantsIDs:new Set,attachedVideochatListeners:new Set},su=Ae()(Yt((q,e)=>({...xA,setActiveCall:t=>{q({activeCall:t})},resetActiveCall:()=>{q({activeCall:xA.activeCall})},setIncomingCall:t=>{q({incomingCall:t})},resetIncomingCall:()=>{q({incomingCall:xA.incomingCall})},setDeviceChangeEvent:t=>{q({deviceChangeEvent:t})},upsertSessionData:(t,A)=>{switch(t){case ee.ON_CALL:q({incomingCallCallData:A});break;case ee.ON_STOP_CALLING:q({incomingCallStopData:A});break;case ee.ON_ACCEPT:q({activeCallAcceptData:A});break;case ee.ON_REJECT:q({activeCallRejectData:A});break;case ee.ON_STOP:q({activeCallStopData:A});break;case ee.ON_NOT_ANSWER:q({activeCallNotAnswerData:A});break;case ee.ON_CONNECTION_STATE:q({activeCallConnectionStateData:A})}},resetSessionData:t=>{switch(t){case ee.ON_CALL:q({incomingCallCallData:iA.incomingCallCallData});break;case ee.ON_STOP_CALLING:q({incomingCallStopData:iA.incomingCallStopData});break;case ee.ON_ACCEPT:q({activeCallAcceptData:iA.activeCallAcceptData});break;case ee.ON_REJECT:q({activeCallRejectData:iA.activeCallRejectData});break;case ee.ON_STOP:q({activeCallStopData:iA.activeCallStopData});break;case ee.ON_NOT_ANSWER:q({activeCallNotAnswerData:iA.activeCallNotAnswerData});break;case ee.ON_CONNECTION_STATE:q({activeCallConnectionStateData:iA.activeCallConnectionStateData});break;default:q(iA)}},setLocalStream:t=>{q({localStream:t})},resetLocalStream:()=>{q({localStream:xA.localStream})},addRemoteStream:(t,A)=>{q({remoteStreams:{...e().remoteStreams,[t]:A}})},removeRemoteStream:t=>{const A={...e().remoteStreams};delete A[t],q({remoteStreams:A})},resetRemoteStreams:()=>{q({remoteStreams:xA.remoteStreams})},saveUserMediaParams:t=>{q({userMediaParams:t})},resetUserMediaParams:()=>{q({userMediaParams:xA.userMediaParams})},saveDisplayMediaParams:t=>{q({displayMediaParams:t})},resetDisplayMediaParams:()=>{q({displayMediaParams:xA.displayMediaParams})},saveActiveMedia:t=>{q({activeMedia:t})},setParticipantsIDs:t=>{q({participantsIDs:new Set(t)})},participantDidEnter:t=>{const A=new Set([...e().participantsIDs]);A.add(t),q({participantsIDs:A})},participantDidLeave:t=>{const A=new Set([...e().participantsIDs]);A.delete(t),q({participantsIDs:A})},attachVideochatListeners:t=>{const A=e().attachedVideochatListeners??new Set;Object.entries(t).forEach(([r,n])=>{const o=r;A.has(o)||(G.videochat.addListener(o,n),A.add(o))}),q({attachedVideochatListeners:A})},resetVideochatStore:()=>{q({...xA})}}))),cM=CA(eu),iu=CA(yi),uM=CA(Ro),Qo=CA(pi),dM=CA(mi),gM=CA(nu),Vu=CA(au),vi=CA(su),fM=()=>{const[q,e,t]=eu(Ct(a=>[a.blockedUsers,a.setBlockedUsers,a.fetchBlockList])),A=iu("isConnected"),r=cM("isFetched"),n=async(a,s)=>{if(!A.current)return void cn.warn("upsert",`${s} user ${a} failed, chat is not connected`);const i=new Set(q),l={name:dn,items:[{user_id:a,action:s,mutualBlock:!0}]};try{s===G.PrivacyListAction.DENY?i.add(a):s===G.PrivacyListAction.ALLOW&&i.delete(a),r.current?(await G.chat.privacylist.setAsDefault(null),await G.chat.privacylist.update(l),i.size>0&&await G.chat.privacylist.setAsDefault(dn)):(await G.chat.privacylist.create(l),await G.chat.privacylist.setAsDefault(dn))}catch(V){return void cn.error("upsert",V)}finally{e(i)}},o=a=>q.has(a);return w.useEffect(()=>{t()},[]),{blockedUsers:Array.from(q),blockUser:async a=>{o(a)?cn.warn("block",`user ${a} is already blocked`):await n(a,G.PrivacyListAction.DENY)},unblockUser:async a=>{o(a)?await n(a,G.PrivacyListAction.ALLOW):cn.warn("unblock",`user ${a} is not blocked`)},isBlockedUser:o}},Oo=100,lu=()=>{const q=Ro(h=>h.currentUserId),[e,t,A,r,n,o,a,s,i,l,V]=au(Ct(h=>[h.users,h.upsertUser,h.upsertUsers,h.upsertUsersLastRequestAt,h.onlineUsers,h.setOnlineUsers,h.updateOnlineUser,h.updateOnlineUsers,h.setOnlineUsersLastRequestAt,h.onlineUsersCount,h.setOnlineUsersCount])),u=Vu("usersLastRequestAt"),g=Vu("onlineUsersLastRequestAt"),d=async h=>{const{items:m}=await G.users.getV2(h),M={};return A(m),s(m),m.forEach(E=>{M[E.id]=Date.now()}),r(M),m},f=w.useCallback(async h=>{const{items:m}=await G.users.getV2({full_name:{start_with:h},limit:Oo}),{items:M}=await G.users.getV2({login:{start_with:h},limit:Oo}),E=new Map;return[...m,...M].forEach(v=>{E.set(v.id,v)}),Array.from(E.values()).filter(v=>v.id!==q)},[q]),p=async()=>{let h=l;try{const{count:m}=await G.users.getOnlineCount();h=m,V(h)}catch(m){gi.error("getOnlineCount",m)}return h};return{users:e,fetchUsers:d,fetchUserById:async(h,m=!1)=>{const M=u.current[h]||0,E=Date.now()-M>3e4;let v=e[h];if(E||m){const S=await G.users.getV2({id:h,limit:1}),k=S?.items?.[0];k&&(t(k),a(k),r({[h]:Date.now()}),v=k)}return v},fetchUsersByIds:async h=>{let m=[];const M=h.filter(E=>!m[E]);return M.length>0&&(m=await d({limit:Oo,id:{in:M}})),m},searchUsers:f,onlineUsers:Object.values(n),fetchAllOnlineUsers:async(h=!1)=>{if(Date.now()-g.current>6e4||h){const m=await(async()=>{const M=await p(),E=[];try{let v=Oo,S=0;for(;S<M;)E.push(G.users.listOnline({limit:v,offset:S}).then(({users:I})=>I)),S+=v;const k=(await Promise.all(E)).flat();return A(k),o(k),k}catch(v){return gi.error("listOnline",v),[]}})();return i(Date.now()),m}return Object.values(n)},fetchOnlineUsers:async h=>{try{const{users:m}=await G.users.listOnline(h);return A(m),o(m),m}catch(m){return gi.error("listOnlineWithParams",m),[]}},onlineUsersCount:l,fetchOnlineUsersCount:p}};var Ne;(function(q){q.NEW_DIALOG="dialog/NEW_DIALOG",q.ADDED_TO_DIALOG="dialog/ADDED_TO_DIALOG",q.REMOVED_FROM_DIALOG="dialog/REMOVED_FROM_DIALOG",q.ADD_PARTICIPANTS="dialog/ADD_PARTICIPANTS",q.REMOVE_PARTICIPANTS="dialog/REMOVE_PARTICIPANTS",q.DELETE_DIALOG="dialog/DELETE_DIALOG"})(Ne||(Ne={}));const pM=()=>{const{fetchUsersByIds:q}=lu(),[e,t,A]=Ro(Ct(C=>[C.currentUserId,C.setCurrentUserId,C.resetCurrentUserId])),[r,n]=iM(Ct(C=>[C.lastActivity,C.upsertLastActivity])),[o,a,s,i,l,V,u,g,d,f,p,h,m,M,E,v,S,k,I,L]=pi(Ct(C=>[C.dialogs,C.upsertDialog,C.upsertDialogs,C.updateDialog,C.updateDialogOnMessage,C.updateDialogOnReadMessage,C.addParticipantsToDialog,C.removeParticipantsFromDialog,C.removeDialog,C.selectedDialog,C.setSelectedDialog,C.resetSelectedDialog,C.activateDialog,C.resetActivatedDialogs,C.addPrivateDialogId,C.removePrivateDialogId,C.unreadMessagesCount,C.totalDialogsReached,C.setTotalDialogsReached,C.resetTotalDialogsReached])),[R,P,Y,O,F,qq,T,j,N,K,Aq]=mi(Ct(C=>[C.messages,C.addMessage,C.addMessages,C.updateMessage,C.updateMessageStatus,C.markMessagesAsLost,C.removeMessages,C.clearMessages,C.totalMessagesReached,C.setTotalMessagesReached,C.resetTotalMessagesReached])),[dq,vq,U,rq,hq,fq,oq,H,lq,Mq,Qq,Bq,Wq,_q,zq]=VM(Ct(C=>[C.messageEvent,C.messageSystemEvent,C.messageSentEvent,C.messageReadEvent,C.messageEditEvent,C.messageDeleteEvent,C.messageErrorEvent,C.setMessageEvent,C.setMessageSystemEvent,C.setMessageSentEvent,C.setMessageReadEvent,C.setMessageEditEvent,C.setMessageDeleteEvent,C.setMessageErrorEvent,C.resetMessageEventStore])),[J,sq,Uq,Kq,x,D,Q]=yi(Ct(C=>[C.isOnline,C.isConnected,C.chatStatus,C.setIsConnected,C.setChatStatus,C.handleNetworkStatus,C.attachChatListeners])),[W,X,eq,iq,Nq]=nu(Ct(C=>[C.typingStatus,C.setTypingStatus,C.addTypingTimer,C.clearTypingTimer,C.resetTypingStatusStore])),Tq=uM("currentUserId"),ne=iu("chatStatus"),Ce=dM("messages"),xe=Qo("dialogs"),Je=Qo("selectedDialog"),ie=Qo("activatedDialogs"),Fe=Qo("privateDialogsIds"),Qt=gM("typingTimers"),nA=async(C=Hq.DISCONNECTED)=>{let B=!1;return G.chat.isConnected&&(B=await G.chat.disconnect(),Kq(!1),A(),zq(),Nq(),x(C),et()),B},JA=(C=Hq.DISCONNECTED)=>{G.chat.terminate(),x(C),et(),qq()},et=()=>{M(),L(),Aq()},tt=async C=>{const B={sort_desc:"date_sent",limit:100,skip:0,...C},{items:Z,skip:_,limit:yq,total_entries:Rq}=await G.chat.dialog.list(B);I(_+yq>=Rq),s(Z);const te=Z.flatMap(ut=>ut.occupants_ids),qe=Array.from(new Set(te));return q(qe),Z},Ot=async(C,B=0)=>{try{const Z=await(async(_,yq={})=>{const Rq={chat_dialog_id:_,sort_desc:"date_sent",limit:100,skip:0,...yq};try{const{items:te,skip:qe,limit:ut}=await G.chat.message.list(Rq),Re=Ce.current[_]??[],Ft=qe+ut>te.length+Re.length;return K(_,Ft),te.sort((hr,yo)=>hr._id.toString().localeCompare(yo._id.toString())).map(hr=>{const yo=hr.attachments?.map(ei=>({...ei,url:G.storage.privateUrl(ei.uid)}));return{...hr,attachments:yo,status:hr.read?pe.READ:pe.SENT}})}catch(te){if(te.code===404)return[];throw te}})(C,{skip:B});return Y(C,Z),Z}catch(Z){throw Z}},ZA=async C=>Ot(C),At=C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";if(C.type!==G.DialogType.PRIVATE)return;const B=C.occupants_ids.find(Z=>Z!==e);return B&&E(B,C._id),B},WA=C=>xe.current.find(B=>B.type===G.DialogType.PRIVATE&&B.occupants_ids.includes(C)),Sq=async C=>{const B={read:1,chat_dialog_id:C._id};await G.chat.message.update("",B),i(C._id,{unread_messages_count:0})},ge=G.chat.helpers.getBsonObjectId,we=(C,B,Z={})=>{if(B??=f,!B)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const _=At(B),yq=ke(C,null,B,_,Z);jt(yq,C,B._id,e,_,void 0,!1,Z)},ke=(C,B,Z,_,yq)=>{const Rq={type:Z.type===G.DialogType.PRIVATE?G.ChatType.CHAT:G.ChatType.GROUPCHAT,body:C,extension:{save_to_history:1,dialog_id:Z._id,...yq}};return B&&(Rq.extension.attachments=B),G.chat.send(Z.type===G.DialogType.PRIVATE?_:Z._id,Rq)},jt=(C,B,Z,_,yq,Rq,te,qe)=>{const ut=Math.round(new Date().getTime()/1e3),Re={...qe||{},_id:C,created_at:ut,updated_at:ut,chat_dialog_id:Z,message:B,sender_id:_,recipient_id:yq,date_sent:ut,read:0,read_ids:[_],delivered_ids:[_],views_count:0,attachments:Rq||[],reactions:{},isLoading:te,status:ne.current===Hq.CONNECTED?pe.WAIT:pe.LOST},Ft={last_message:Re.message,last_message_user_id:Re.sender_id,last_message_date_sent:Re.date_sent};i(Z,Ft),P(Z,Re)},oe=(C,B,Z,_={})=>{oA(Z,C,{dialogId:B,..._})},Ie=(C,B,Z=[],_={})=>{const yq=B._id,Rq=B.occupants_ids.filter(te=>!Z.includes(te)&&te!==e);oe(C,yq,Rq,_)},oA=(C,B,Z={})=>{const _=Array.isArray(C)?C:[C],yq={body:B,extension:Z};_.forEach(Rq=>{G.chat.sendSystemMessage(Rq,yq)})},Le=(C,B)=>{typeof C=="number"&&B>=0&&n(C,_c(B))},Ze=()=>{ne.current!==Hq.CONNECTING&&(x(Hq.DISCONNECTED),et()),qq()},qn=()=>{x(Hq.CONNECTED)},Gt=async(C={})=>{C?.condition==="not-authorized"||C?.text==="Password not verified"||C?.name==="SASLError"?await nA(Hq.NOT_AUTHORIZED)||JA(Hq.NOT_AUTHORIZED):x(Hq.ERROR)},qi=(C,B)=>{if(H({userId:C,message:B}),C===Tq.current||B.delay&&B.type===G.ChatType.CHAT)return;const Z=B.dialog_id,_=B.id,yq=B.body||"",Rq=B.type===G.ChatType.CHAT?Tq.current:void 0,te=B.extension.attachments?.length>0?B.extension.attachments.map(qe=>({...qe,url:G.storage.privateUrl(qe.uid)})):void 0;jt(_,yq,Z,C,Rq,te,!1,B.extension),X(Z,C,!1),iq(Z,C),l(Z,B)},b=(C,B)=>{_q({messageId:C,error:B})},$=(C,B)=>{Mq({lost:C,sent:B});const Z=B?pe.SENT:C?pe.LOST:void 0,_=B?B.id:C?C.id:void 0,yq=B?B.extension.dialog_id:C?C.extension.dialog_id:void 0;Z&&_&&yq&&F(yq,_,Z)},Vq=async C=>{const B=C.extension.dialogId,Z=C.userId;if(lq({message:C}),Z!==Tq.current)switch(C.body){case Ne.NEW_DIALOG:case Ne.ADDED_TO_DIALOG:{const _=(await G.chat.dialog.list({_id:B})).items[0];q(_.occupants_ids),a(_);break}case Ne.DELETE_DIALOG:await G.chat.dialog.delete(B),d(B),j(B);break;case Ne.ADD_PARTICIPANTS:{const _=C.extension.addedParticipantsIds.split(",").map(Number);q(_),u(B,_);break}case Ne.REMOVE_PARTICIPANTS:{const _=C.extension.removedParticipantsIds.split(",").map(Number);g(B,_);break}case Ne.REMOVED_FROM_DIALOG:g(B,[Z])}},Cq=(C,B,Z)=>{Qq({messageId:C,dialogId:B,userId:Z}),Z!==Tq.current&&F(B,C,pe.READ,Z)},Pq=(C,B,Z)=>{const _=Z||(yq=>{let Rq=Fe.current?.[yq];if(!Rq){const te=xe.current.find(qe=>qe.type===G.DialogType.PRIVATE&&At(qe)===yq);te&&(Rq=te._id,E(yq,Rq))}return Rq})(B);if(_&&B&&B!==Tq.current)if(X(_,B,C),C){Qt.current?.[_][B]&&iq(_,B);const yq=setTimeout(()=>{X(_,B,!1),iq(_,B)},6e3);eq(_,B,yq)}else X(_,B,!1),iq(_,B)},$q=(C,B,Z,_,yq)=>{Bq({messageId:C,dialogId:_,userId:yq,updatedBody:Z,isLast:B}),O(_,C,{body:Z}),B&&l(_,{id:C,body:Z},!0)},jq=(C,B,Z)=>{Wq({messageId:C,dialogId:B,userId:Z}),T(B,[C])};return w.useEffect(()=>{D(),Q({[G.ChatEvent.DISCONNECTED]:Ze,[G.ChatEvent.RECONNECTED]:qn,[G.ChatEvent.ERROR]:Gt,[G.ChatEvent.MESSAGE]:qi,[G.ChatEvent.ERROR_MESSAGE]:b,[G.ChatEvent.SENT_MESSAGE]:$,[G.ChatEvent.SYSTEM_MESSAGE]:Vq,[G.ChatEvent.READ_MESSAGE]:Cq,[G.ChatEvent.TYPING_MESSAGE]:Pq,[G.ChatEvent.UPDATE_MESSAGE]:$q,[G.ChatEvent.DELETE_MESSAGE]:jq})},[]),{isConnected:sq,chatStatus:Uq,connect:async C=>{x(Hq.CONNECTING);try{const B=await G.chat.connect(C);return B&&(x(Hq.CONNECTED),Kq(B),t(C.userId)),B}catch(B){return x(Hq.DISCONNECTED),console.error(`Failed to connect due to ${B}`),!1}},terminate:JA,disconnect:nA,dialogs:o,selectedDialog:f,totalDialogsReached:k,unreadMessagesCount:S,selectDialog:async C=>{if(!C)return h();C._id!==Je.current?._id&&(p(C),ie.current?.has(C._id)||(await ZA(C._id),m(C._id)),C.unread_messages_count>0&&await Sq(C).catch(B=>{}))},unselectDialog:h,createChat:async(C,B)=>{const Z={type:G.DialogType.PRIVATE,occupants_ids:[C],extensions:B},_=await G.chat.dialog.create(Z);return a(_),K(_._id,!0),E(C,_._id),oe(Ne.NEW_DIALOG,_._id,C),e&&q([C,e]),_},createGroupChat:async(C,B,Z,_)=>{const yq={name:B,photo:Z,type:G.DialogType.GROUP,occupants_ids:C,extensions:_},Rq=await G.chat.dialog.create(yq);return a(Rq),K(Rq._id,!0),oe(Ne.NEW_DIALOG,Rq._id,C),e&&q([...C,e]),Rq},markDialogAsRead:Sq,addUsersToGroupChat:async C=>{if(!f)throw new Error("No dialog selected");const B=f._id,Z={push_all:{occupants_ids:C}};await G.chat.dialog.update(B,Z),Ie(Ne.ADD_PARTICIPANTS,f,[],{addedParticipantsIds:C.join()}),oe(Ne.ADDED_TO_DIALOG,B,C),q(C);const _={occupants_ids:Array.from(new Set([...f.occupants_ids,...C]))};i(B,_),p({...f,..._})},removeUsersFromGroupChat:async C=>{if(!f)throw new Error("No dialog selected");const B=f._id,Z={pull_all:{occupants_ids:C}};await G.chat.dialog.update(B,Z),oe(Ne.REMOVE_PARTICIPANTS,B,C),Ie(Ne.REMOVE_PARTICIPANTS,f,C,{removedParticipantsIds:C.join()});const _={occupants_ids:f.occupants_ids.filter(yq=>!C.includes(yq))};i(B,_),p({...f,..._})},leaveGroupChat:async C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const B=C._id;Ie(Ne.REMOVED_FROM_DIALOG,C),await G.chat.dialog.delete(B),d(B),j(B),h()},deleteChat:async C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const B=C._id,Z=At(C);Z&&(v(Z),oe(Ne.DELETE_DIALOG,B,Z)),await G.chat.dialog.delete(B),d(B),j(B),h()},deleteGroupChat:async C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";if(C.user_id!==e)throw"Only the group chat owner can delete the group chat.";const B=C._id;Ie(Ne.DELETE_DIALOG,C),await G.chat.dialog.delete(B,{force:1}),d(B),j(B),h()},fetchDialogs:tt,fetchNextDialogs:async()=>{const C=xe.current.length;return tt({skip:C})},lastMessageSentTimeString:C=>Zc(C.last_message_date_sent?1e3*C.last_message_date_sent:C.created_at,{addSuffix:!0}),getDialogOpponentId:At,getPrivateDialogByUserId:WA,messages:R,totalMessagesReached:N,fetchMessages:ZA,fetchNextMessages:async C=>{const B=(Ce.current[C]??[]).length;return Ot(C,B)},sendMessage:we,sendMessageByUserId:(C,B,Z={})=>{const _=WA(B);if(!_)throw"Dialog not found.";we(C,_,Z)},sendAttachment:async(C,B)=>{if(B??=f,!B)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const Z=B._id,_=At(B),yq=Date.now()+"",Rq=C.map((Re,Ft)=>({uid:`local-${yq}-${Ft}`,type:Re.type,url:URL.createObjectURL(Re)}));jt(yq,"Attachment",Z,e,_,Rq,!0);const te=C.map(Re=>{const{name:Ft,type:hr,size:yo}=Re,ei={file:Re,name:Ft,type:hr,size:yo,public:!1};return G.storage.createAndUpload(ei)}),qe=(await Promise.all(te)).map(({uid:Re,content_type:Ft=""})=>({uid:Re,type:Ft,url:G.storage.privateUrl(Re)})),ut={_id:ke("Attachment",qe,B,_),attachments:Rq,isLoading:!1,status:ne.current===Hq.CONNECTED?pe.WAIT:pe.LOST};O(Z,yq,ut)},sendSignal:oA,readMessage:(C,B,Z)=>{G.chat.sendReadStatus({messageId:C,userId:B,dialogId:Z}),F(Z,C,pe.READ,B),V(Z)},editMessage:(C,B,Z)=>{if(Z??=f,!Z)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const _=Z._id,yq=Z.type===G.DialogType.PRIVATE?At(Z):_,Rq=Z.last_message_id===C;G.chat.editMessage({to:yq,body:B,dialogId:_,originMessageId:C,last:Rq}),O(_,C,{message:B})},deleteMessages:async(C,B=[],Z=!1)=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";if(!B||B.length===0)throw"No messages to delete. You need to provide a message id or messages ids via function argument.";await G.chat.message.delete(B,{force:Z?1:0}),T(C._id,B)},clearChatHistory:async C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";await G.chat.dialog.clearHistory(C._id),j(C._id)},messageSentTimeString:C=>Zc(1e3*C.date_sent,{addSuffix:!0}),generateTempMessageId:ge,addTempMessage:(C,B,Z={})=>{if(B??=f,!B)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const _=Math.round(new Date().getTime()/1e3),yq=C||G.chat.helpers.getBsonObjectId(),Rq={created_at:_,updated_at:_,date_sent:_,message:Z.body,sender_id:0,...Z,_id:C||yq,chat_dialog_id:B._id,custom:!0};return P(B._id,Rq),yq},updateTempMessage:(C,B,Z={})=>{if(B??=f,!B)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const _={...Z,updated_at:Math.round(new Date().getTime()/1e3),chat_dialog_id:B._id,message:Z.body||Z.message,custom:!0};typeof _.message!="string"&&delete _.message,O(B._id,C,_)},messageEvent:dq,messageErrorEvent:oq,messageSentEvent:U,messageReadEvent:rq,messageEditEvent:hq,messageDeleteEvent:fq,messageSystemEvent:vq,lastActivity:r,getLastActivity:async C=>{try{const{seconds:B}=await G.chat.getLastUserActivity(C),Z=_c(B);return n(C,Z),Z}catch(B){return yr.error("getLastActivity",B),"Last seen recently"}},subscribeToLastActivity:C=>{G.chat.subscribeToUserLastActivityStatus(C),G.chat.addListener(G.ChatEvent.USER_LAST_ACTIVITY,Le)},unsubscribeFromLastActivity:C=>{G.chat.unsubscribeFromUserLastActivityStatus(C),G.chat.removeListener(G.ChatEvent.USER_LAST_ACTIVITY)},isOnline:J,typingStatus:W,sendTypingStatus:C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";G.chat.sendIsTypingStatus(C.type===G.DialogType.PRIVATE?At(C):C._id)}}};var zt;(function(q){q.MUTE_AUDIO="audio-mute",q.UNMUTE_AUDIO="audio-unmute",q.MUTE_VIDEO="video-mute",q.UNMUTE_VIDEO="video-unmute"})(zt||(zt={}));const hM=()=>{const[q,e]=w.useState(0),[t,A,r,n,o,a,s,i,l,V,u,g,d,f,p,h,m,M,E,v,S,k,I,L,R,P,Y,O,F,qq,T,j,N]=su(Ct(J=>[J.activeCall,J.setActiveCall,J.incomingCall,J.setIncomingCall,J.resetIncomingCall,J.activeMedia,J.saveActiveMedia,J.userMediaParams,J.saveUserMediaParams,J.displayMediaParams,J.saveDisplayMediaParams,J.localStream,J.setLocalStream,J.remoteStreams,J.addRemoteStream,J.removeRemoteStream,J.deviceChangeEvent,J.setDeviceChangeEvent,J.incomingCallCallData,J.incomingCallStopData,J.activeCallAcceptData,J.activeCallRejectData,J.activeCallStopData,J.activeCallNotAnswerData,J.activeCallConnectionStateData,J.resetSessionData,J.participantsIDs,J.setParticipantsIDs,J.upsertSessionData,J.participantDidEnter,J.participantDidLeave,J.attachVideochatListeners,J.resetVideochatStore])),K=vi("activeCall"),Aq=vi("incomingCall");vi("attachedVideochatListeners");const dq=w.useCallback(async J=>{if(r){const{currentUserID:sq,initiatorID:Uq,opponentsIDs:Kq}=r,x=[...Kq,Uq].filter(D=>D!==sq);P(),O(x);try{await rq(r),r.accept(J),o()}catch(D){We.error("acceptCall",D),r.stop(J)}finally{o()}}},[r]),vq=w.useCallback(J=>{r?.reject(J),o()},[r]),U=w.useCallback(J=>{N(),t?.stop(J)},[t]),rq=w.useCallback(async J=>{const sq=a===sA.DISPLAY?await J.getDisplayMedia(V):await J.getUserMedia(i);J.callType===G.CallType.AUDIO&&sq.getVideoTracks().forEach(Uq=>Uq.enabled=!1),d(sq),A(J)},[a,i,V]),hq=(J,sq)=>{J.initiatorID!==J.currentUserID&&(n(J),F(ee.ON_CALL,{userInfo:sq}),We.log("onCall",{session:J,ext:sq}))},fq=(J,sq,Uq)=>{qq(sq),F(ee.ON_ACCEPT,{userID:sq,userInfo:Uq}),We.log("onAccept",{session:J,userID:sq,ext:Uq})},oq=(J,sq,Uq)=>{T(sq),F(ee.ON_REJECT,{userID:sq,userInfo:Uq}),We.log("onReject",{session:J,userID:sq,ext:Uq})},H=(J,sq,Uq)=>{K.current?.ID===J.ID&&(T(sq),h(sq),F(ee.ON_STOP,{userID:sq,userInfo:Uq})),Aq.current?.ID===J.ID&&(F(ee.ON_STOP_CALLING,{userID:sq,userInfo:Uq}),o()),We.log("onStop",{session:J,userID:sq,ext:Uq})},lq=(J,sq)=>{T(sq),F(ee.ON_NOT_ANSWER,{userID:sq}),We.log("onNotAnswer",{session:J,userID:sq})},Mq=(J,sq,Uq)=>{p(sq,Uq),We.log("onRemoteStream",{session:J,userID:sq,stream:Uq})},Qq=(J,sq,Uq)=>{F(ee.ON_CONNECTION_STATE,{userID:sq,connectionState:Uq}),We.log("onConnectionState",{session:J,userID:sq,connectionState:Uq})},Bq=J=>{M(J),We.log("onDevicesChange",{event:J})},Wq=w.useMemo(()=>{const J=g?.getAudioTracks();return!J||J.length===0||J.every(sq=>!sq.enabled)},[g,q]),_q=w.useMemo(()=>{const J=g?.getVideoTracks();return!J||J.length===0||J.every(sq=>!sq.enabled)},[g,q]),zq=w.useCallback(async J=>{if(t){switch(J){case zt.MUTE_AUDIO:t.mute(G.MediaType.AUDIO);break;case zt.MUTE_VIDEO:t.mute(G.MediaType.VIDEO);break;case zt.UNMUTE_AUDIO:t.unmute(G.MediaType.AUDIO);break;case zt.UNMUTE_VIDEO:t.unmute(G.MediaType.VIDEO)}e(sq=>sq+1)}},[t]);return w.useEffect(()=>{t&&Y.size===0&&U()},[t,Y]),w.useEffect(()=>{j({[G.CallEvent.CALL]:hq,[G.CallEvent.ACCEPT]:fq,[G.CallEvent.REJECT]:oq,[G.CallEvent.STOP]:H,[G.CallEvent.NOT_ANSWER]:lq,[G.CallEvent.REMOTE_STREAM]:Mq,[G.CallEvent.CONNECTION_STATE]:Qq,[G.CallEvent.DEVICES]:Bq})},[]),{startCall:async(J=[],sq=G.CallType.VIDEO,Uq)=>{const Kq=Array.isArray(J)?J:[J],x=G.videochat.createNewSession(Kq,sq);try{P(),O(Kq),await rq(x),x.call(Uq)}catch(D){We.error("startCall",D),O([])}},acceptCall:dq,rejectCall:vq,stopCall:U,activeCall:t,incomingCall:r,deviceChangeEvent:m,incomingCallCallData:E,incomingCallStopData:v,activeCallAcceptData:S,activeCallRejectData:k,activeCallStopData:I,activeCallNotAnswerData:L,activeCallConnectionStateData:R,resetSessionData:P,participantsIds:Array.from(Y),activeMedia:a,setActiveMedia:async J=>{J&&s(J)},localStream:g,remoteStreams:f,getUserMedia:async J=>{try{const sq=await t?.getUserMedia(J??i);return s(sA.USER),sq}catch(sq){We.error("getUserMedia",{error:sq})}},getDisplayMedia:async J=>{try{const sq=await t?.getDisplayMedia(J??V);return s(sA.DISPLAY),sq}catch(sq){We.error("getDisplayMedia",{error:sq})}},getMediaDevices:async J=>{try{return await G.videochat.getMediaDevices(J)}catch(sq){We.error("getMediaDevices",{error:sq})}},switchMediaTracks:async J=>{try{return await t?.switchMediaTracks(J)}catch(sq){We.error("switchMediaTracks",{error:sq})}},userMediaParams:i,setUserMediaParams:async J=>{J&&l(J)},displayMediaParams:V,setDisplayMediaParams:async J=>{J&&u(J)},isLocalAudioMuted:Wq,muteAudio:()=>{zq(zt.MUTE_AUDIO)},unmuteAudio:()=>{zq(zt.UNMUTE_AUDIO)},isLocalVideoMuted:_q,muteVideo:()=>{zq(zt.MUTE_VIDEO)},unmuteVideo:()=>{zq(zt.UNMUTE_VIDEO)}}},Jq=()=>{const q=fM(),e=pM(),t=lu(),A=hM(),[r,n,o,a,s,i]=Ro(Ct(g=>[g.currentSession,g.currentUserId,g.currentUser,g.setCurrentSession,g.updateCurrentSession,g.resetCurrentSession])),l=async g=>{const d=await G.createSession(g);return u(d),d},V=async(g,d=!0)=>{let f=null;const{email:p,login:h,password:m}=g;try{p?f=await l({email:p,password:m}):h&&(f=await l({login:h,password:m}))}catch(M){if(M?.code!==404||!d||!m||!p&&!h)throw M;{const E=(await G.users.signup(g)).user;E.email?f=await l({email:E.email,password:m}):E.login&&(f=await l({login:E.login,password:m}))}}return f},u=g=>{G.setSession(g),a(g)};return{currentSession:r,currentUserId:n,currentUser:o,init:(g,d)=>{G.init(g,d)},upsertConfig:(g={})=>G.service?.sdkInstance?.config?.set?.(g),createSession:l,createEmptySession:()=>l(),createGuestSession:g=>l({guest:"1",full_name:g}),createUserSession:V,setSession:u,getSession:async()=>{const g=await G.getSession();return a(g),g},destroySession:async()=>{await G.destroySession(),i()},loginUser:async g=>(await V(g,!1))?.user??null,signupUser:async g=>(await V(g,!0))?.user??null,updateUser:async g=>{const{user:d}=await G.users.update(g);return s({user:d,user_id:d.id}),d},deleteUser:async()=>{await G.users.delete(),s({user:null,user_id:void 0})},...q,...e,...t,...A}},cu=(q=[])=>q.slice().filter(Boolean).sort((e,t)=>e.id-t.id).reduce((e,{id:t})=>`${e}:${t}`,jo),mM=q=>new Promise(e=>setTimeout(e,q)),wM=q=>q.replace(/@supports\s*\(\(*\s*-webkit-hyphens\s*:\s*none\s*\)*\s*and\s*\(not\s*\(margin-trim\s*:\s*inline\)\)\s*\)\s*or\s*\(\(*\s*-moz-orient\s*:\s*inline\s*\)*\s*and\s*\(not\s*\(color\s*:\s*rgb\(from\s+red\s+r\s+g\s+b\)\)\)\s*\)\s*\{\s*([\s\S]*?)\s*\}/gm,(e,t)=>t.trim()),dt=typeof window=="object"&&typeof document=="object";var fn=(q=>(q.WRAPPER="data-connectycube-chat-widget-wrapper",q.FOCUSED="data-connectycube-chat-widget-focused",q))(fn||{});const uu="15px",du="400",jo="external_id",gu="::current_user";var VA=(q=>(q.GET_SUMMARY="ai:get-summary",q.CHANGE_TONE="ai:change-tone",q.DEFAULT="ai:default",q))(VA||{}),_A=(q=>(q.LAST_7_DAYS="last-7-days",q.LAST_DAY="last-day",q.UNREADS="unreads",q))(_A||{}),Go=(q=>(q.POSITIVE="positive",q.NEGATIVE="negative",q.CRINGE="cringe",q))(Go||{}),Ei=(q=>(q.AI_TEXT_SUMMARY="ai-text-summary",q))(Ei||{});const Fo="@connectycube/chat-widget:draftMessages",yM=()=>{try{const q=dt?localStorage?.getItem(Fo):null;return q?JSON.parse(q):{}}catch(q){return console.error("Could not load state from localStorage",q),{}}},Lo=q=>{if(dt)try{const e=JSON.stringify(q);localStorage?.setItem(Fo,e)}catch(e){console.error("Could not save state to localStorage",e)}},vM=()=>{if(dt)try{localStorage?.removeItem(Fo)}catch(q){console.error("Could not clear state from localStorage",q)}},Mi=yM(),Yo=Ae(q=>({draftMessages:Mi,setDraftMessages:e=>{q({draftMessages:e}),Lo(e)},upsertDraftMessage:e=>{q(t=>{const A={...t.draftMessages,...e};return Lo(A),{draftMessages:A}})},deleteDraftMessage:e=>{q(t=>{const A={...t.draftMessages};return delete A[e],Lo(A),{draftMessages:A}})},resetDraftMessages:()=>{q({draftMessages:Mi}),Lo(Mi)}})),EM=()=>{vM(),Yo.setState({draftMessages:{}})},fu=async({hardwareOnly:q=!0,debug:e=!1}={})=>{const{cookieEnabled:t,deviceMemory:A,doNotTrack:r,hardwareConcurrency:n,language:o,languages:a,maxTouchPoints:s,platform:i,userAgent:l,vendor:V}=window.navigator,u=/Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent),{width:g,height:d,colorDepth:f,pixelDepth:p}=u?window.screen:{},h=new Date().getTimezoneOffset(),m=Intl.DateTimeFormat().resolvedOptions().timeZone,M="ontouchstart"in window,E=window.devicePixelRatio,v=MM(e),S=await bM(e),k=SM(),I=CM(e),L=xM(),R=q?{audioInfo:k,audio:S,canvas:v,colorDepth:f,deviceMemory:A,devicePixelRatio:E,hardwareConcurrency:n,height:d,maxTouchPoints:s,pixelDepth:p,platform:i,touchSupport:M,webgl:I,webglInfo:L,width:g}:{audioInfo:k,audio:S,canvas:v,colorDepth:f,cookieEnabled:t,deviceMemory:A,devicePixelRatio:E,doNotTrack:r,hardwareConcurrency:n,height:d,language:o,languages:a,maxTouchPoints:s,pixelDepth:p,platform:i,timezone:m,timezoneOffset:h,touchSupport:M,userAgent:l,vendor:V,webgl:I,webglInfo:L,width:g};e&&console.log("Fingerprint data:",JSON.stringify(R,null,2));const P=JSON.stringify(R,null,2);return Ko(P)},MM=q=>{try{const e=document.createElement("canvas"),t=e.getContext("2d"),A="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~1!2@3#4$5%6^7&8*9(0)-_=+[{]}|;:',<.>/?";t.textBaseline="top",t.font="14px 'Arial'",t.textBaseline="alphabetic",t.fillStyle="#f60",t.fillRect(125,1,62,20),t.fillStyle="#069",t.fillText(A,2,15),t.fillStyle="rgba(102, 204, 0, 0.7)",t.fillText(A,4,17);const r=e.toDataURL();return q?document.body.appendChild(e):t.clearRect(0,0,e.width,e.height),Ko(r)}catch{return null}},CM=q=>{try{const e=document.createElement("canvas"),t=e.getContext("webgl");e.width=256,e.height=128;const A="attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}",r="precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}",n=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,n);const o=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.7321,0]);t.bufferData(t.ARRAY_BUFFER,o,t.STATIC_DRAW),n.itemSize=3,n.numItems=3;const a=t.createProgram(),s=t.createShader(t.VERTEX_SHADER);t.shaderSource(s,A),t.compileShader(s);const i=t.createShader(t.FRAGMENT_SHADER);t.shaderSource(i,r),t.compileShader(i),t.attachShader(a,s),t.attachShader(a,i),t.linkProgram(a),t.useProgram(a),a.vertexPosAttrib=t.getAttribLocation(a,"attrVertex"),a.offsetUniform=t.getUniformLocation(a,"uniformOffset"),t.enableVertexAttribArray(a.vertexPosArray),t.vertexAttribPointer(a.vertexPosAttrib,n.itemSize,t.FLOAT,!1,0,0),t.uniform2f(a.offsetUniform,1,1),t.drawArrays(t.TRIANGLE_STRIP,0,n.numItems);const l=new Uint8Array(e.width*e.height*4);t.readPixels(0,0,e.width,e.height,t.RGBA,t.UNSIGNED_BYTE,l);const V=JSON.stringify(l).replace(/,?"[0-9]+":/g,"");return q?document.body.appendChild(e):t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT|t.STENCIL_BUFFER_BIT),Ko(V)}catch{return null}},xM=()=>{try{const q=document.createElement("canvas").getContext("webgl");return{VERSION:String(q.getParameter(q.VERSION)),SHADING_LANGUAGE_VERSION:String(q.getParameter(q.SHADING_LANGUAGE_VERSION)),VENDOR:String(q.getParameter(q.VENDOR)),SUPPORTED_EXTENSIONS:String(q.getSupportedExtensions())}}catch{return null}},SM=()=>{try{const q=window.OfflineAudioContext||window.webkitOfflineAudioContext,e=44100,t=44100,A=new q(1,e,t);return{sampleRate:A.sampleRate,channelCount:A.destination.maxChannelCount,outputLatency:A.outputLatency,state:A.state,baseLatency:A.baseLatency}}catch{return null}},bM=async q=>{try{const e=window.OfflineAudioContext||window.webkitOfflineAudioContext,t=44100,A=44100,r=new e(1,A,t),n=r.createOscillator();n.type="sine",n.frequency.value=440,n.connect(r.destination),n.start();const o=await r.startRendering(),s=o.getChannelData(0).reduce((i,l)=>i+Math.abs(l),0).toString();if(q){const i=kM(o),l=URL.createObjectURL(i),V=document.createElement("audio");V.controls=!0,V.src=l,document.body.appendChild(V)}return Ko(s)}catch{return null}},kM=q=>{const e=q.numberOfChannels,t=q.length*e*2+44,A=new ArrayBuffer(t),r=new DataView(A);zo(r,0,"RIFF"),r.setUint32(4,t-8,!0),zo(r,8,"WAVE"),zo(r,12,"fmt "),r.setUint32(16,16,!0),r.setUint16(20,1,!0),r.setUint16(22,e,!0),r.setUint32(24,q.sampleRate,!0),r.setUint32(28,q.sampleRate*e*2,!0),r.setUint16(32,e*2,!0),r.setUint16(34,16,!0),zo(r,36,"data"),r.setUint32(40,t-44,!0);let n=44;for(let o=0;o<q.length;o++)for(let a=0;a<e;a++){const s=q.getChannelData(a)[o],i=Math.max(-1,Math.min(1,s))*32767;r.setInt16(n,i,!0),n+=2}return new Blob([r],{type:"audio/wav"})},zo=(q,e,t)=>{for(let A=0;A<t.length;A++)q.setUint8(e+A,t.charCodeAt(A))},Ko=q=>{const e=q.length&3,t=q.length-e,A=3432918353,r=461845907;let n,o,a;for(let i=0;i<t;i++)a=q.charCodeAt(i)&255|(q.charCodeAt(++i)&255)<<8|(q.charCodeAt(++i)&255)<<16|(q.charCodeAt(++i)&255)<<24,++i,a=(a&65535)*A+(((a>>>16)*A&65535)<<16)&4294967295,a=a<<15|a>>>17,a=(a&65535)*r+(((a>>>16)*r&65535)<<16)&4294967295,n^=a,n=n<<13|n>>>19,o=(n&65535)*5+(((n>>>16)*5&65535)<<16)&4294967295,n=(o&65535)+27492+(((o>>>16)+58964&65535)<<16);const s=t-1;switch(a=0,e){case 3:{a^=(q.charCodeAt(s+2)&255)<<16;break}case 2:{a^=(q.charCodeAt(s+1)&255)<<8;break}case 1:{a^=q.charCodeAt(s)&255;break}}return a=(a&65535)*A+(((a>>>16)*A&65535)<<16)&4294967295,a=a<<15|a>>>17,a=(a&65535)*r+(((a>>>16)*r&65535)<<16)&4294967295,n^=a,n^=q.length,n^=n>>>16,n=(n&65535)*2246822507+(((n>>>16)*2246822507&65535)<<16)&4294967295,n^=n>>>13,n=(n&65535)*3266489909+(((n>>>16)*3266489909&65535)<<16)&4294967295,n^=n>>>16,n>>>0};typeof window<"u"&&(window.getBrowserFingerprint=fu);var pu=(q=>(q.UPDATE_USER="user/UPDATE",q))(pu||{}),Ue=(q=>(q.AVAILABLE="Available",q.BUSY="Busy",q.AWAY="Away",q))(Ue||{});const Ci="@connectycube/chat-widget:session",xi="@connectycube/chat-widget:guest",Si="@connectycube/chat-widget:rememberMe",hu="widget_",IM=(q,e)=>{G.init(q,e)},BM=async(q,e,t,A)=>{const r=!bu();if(r){const n=SA();n&&(G.setSession(n),await Mu(n,q,e,t,A))}return r},mu=async()=>{const e=SA()?.user?.login,t=typeof e=="string"&&(await ku(e)).substring(0,32);return e&&t?await Po(e,t):null},Po=async(q,e)=>{const t=await G.createSession({login:q,password:e});return Jo(t,hn()),t},wu=async(q,e,t,A)=>{const r=UM(q),n=(await ku(r)).substring(0,32),o=q;let a;try{a=await Po(r,n),await Mu(a,e,o,t,A)}catch(s){if(s?.code===404)a=await Eu(r,n,e,o,t,A);else throw s}return a},yu=async()=>{try{await G.destroySession(),ki()}catch(q){console.error(q)}},vu=()=>{const q=G.service?.getSession();return q||null},Eu=async(q,e,t,A,r,n)=>{const o={login:q,password:e,full_name:t||q};return A&&(o.external_id=A+""),r&&(o.avatar=r),n&&(o.website=n),await G.users.signup(o),Po(q,e)},TM=(q={})=>G.service?.sdkInstance?.config?.set?.(q),bi=async(q,e)=>{const t=e?.user_id??Su(),A=e?.token??DM(),r=t&&A?{userId:t,password:A}:null;return r?q(r):Promise.reject(new Error("[useConnectyCube.connect] Missing userId and password"))},Mu=async(q,e,t,A,r)=>{const n={};if(e&&q?.user?.full_name!==e&&(n.full_name=e),t&&q?.user?.external_id!==t+""&&(n.external_id=t+""),A&&q?.user?.avatar!==A&&(n.avatar=A),r&&q?.user?.website!==r&&(n.website=r),Object.keys(n).length>0){const{user:o}=await G.users.update(n);o&&(q.user=o,Jo(q,hn()))}return q},Jo=(q,e=!1)=>{dt&&!e&&localStorage.setItem(Ci,JSON.stringify(q))},SA=()=>{const q=dt&&localStorage.getItem(Ci);return q?JSON.parse(q):hn()?vu():null},ki=()=>{dt&&(localStorage.removeItem(Ci),localStorage.removeItem(Fo))},bA=()=>{const q=SA();return q?q.user:null},Cu=q=>{if(typeof q?.custom_data=="string")try{return JSON.parse(q.custom_data)}catch(e){return console.error("Error parsing custom data:",e),null}return null},xu=()=>{const q=bA();return Cu(q)},pn=q=>Cu(q||bA())?.userStatus??"Available",Zo=async(q,e=!1)=>{const t=xu(),A=Object.assign({},t,q),r=JSON.stringify(A),n=SA();let o=bA();return o&&e?o={...o,custom_data:r}:o=(await G.users.update({custom_data:r})).user,n&&Jo({...n,user:o},hn()),o},DM=()=>{const q=SA();return q?q.token:null},Su=()=>{const q=SA();return q?q.user_id:null},bu=()=>{const e=(hn()?null:SA())?.updated_at??new Date(0).toISOString(),t=new Date(e).getTime(),r=Date.now()-t,n=6e4*119;return r>n},NM=q=>{const e=SA();return e?!!(q&&e.user?.external_id!==q):!1},ku=async q=>{const e=new TextEncoder().encode(q);let t;try{t=await crypto.subtle.digest("SHA-256",e)}catch{t=new Uint8Array(e.length).map(()=>Math.random()*256|0).buffer}return Array.from(new Uint8Array(t)).map(A=>A.toString(16).padStart(2,"0")).join("")},Ye=(q,e=!0)=>q?q.full_name||q.login||`Unknown:${q.id}`:e?"Unknown":"",Ii=q=>q?/^(https?:\/\/|\/|\.\/|\.\.\/)/.test(q)?q:G.storage.privateUrl(q):"",UM=q=>q?`${hu}${q}`:`${hu}${Math.random().toString(36).substring(2,14)}`,RM=async(q,e)=>G.data.create("UserReports",{reportedUserId:q,reason:e}),QM=async q=>{const e=await fu(),t=Su(),A=btoa(`${t}:${e}`),{endpoint:r,auth:n,p256dh:o}=q??{};if(r&&n&&o&&A)return G.pushnotifications.subscriptions.create({notification_channel:G.NotificationChannel.WEB,push_token:{environment:"production",web_endpoint:r,web_auth:n,web_p256dh:o},device:{platform:G.DevicePlatform.WEB,udid:btoa(`${t}:${e}`)}})},OM=async()=>{const e=(await G.pushnotifications.subscriptions.list()).map(({subscription:t})=>G.pushnotifications.subscriptions.delete(t.id));return Promise.all(e)},jM=!!G.videochat,GM=(q=!1)=>{dt&&(q?localStorage.setItem(Si,"1"):localStorage.removeItem(Si))},FM=(q=!1)=>{dt&&(q?localStorage.setItem(xi,"1"):localStorage.removeItem(xi))},LM=()=>dt?!!localStorage.getItem(Si):!1,YM=()=>dt?!!localStorage.getItem(xi):!1,hn=()=>YM()&&!LM(),zM={CHAT_WIDGET_CONNECTYCUBE_TERMS_AND_CONDITIONS:"https://connectycube.com/terms-of-use/"},{CHAT_WIDGET_CONNECTYCUBE_TERMS_AND_CONDITIONS:KM}=zM||"production",Ve={userAuthorized:!1,attachmentsAccept:"*/*",attachmentsAcceptList:["*/*"],enableUserLogin:!1,enableCalls:!1,enableUserStatuses:!1,enableLastSeen:!1,enableContentReporting:!1,enableBlockList:!1,enableUrlPreview:!1,limitUrlsPreviews:1,termsAndConditions:KM},he=Ae((q,e)=>({...Ve,setUserAuthorized:t=>q({userAuthorized:t}),setAttachmentsAccept:t=>q({attachmentsAccept:t,attachmentsAcceptList:Bu(t)}),setEnableUserLogin:t=>q({enableUserLogin:t}),setEnableCalls:t=>q({enableCalls:t&&jM}),setEnableUserStatuses:t=>q({enableUserStatuses:t}),setEnableLastSeen:t=>q({enableLastSeen:t}),setEnableContentReporting:t=>q({enableContentReporting:t}),setEnableBlockList:t=>q({enableBlockList:t}),setEnableUrlPreview:t=>q({enableUrlPreview:t}),setLimitUrlsPreviews:t=>q({limitUrlsPreviews:t>5?5:t}),setTermsAndConditions:t=>q({termsAndConditions:t}),resetUserAuthorized:()=>q({userAuthorized:Ve.userAuthorized}),resetAttachmentsAccept:()=>q({attachmentsAccept:Ve.attachmentsAccept,attachmentsAcceptList:Ve.attachmentsAcceptList}),resetEnableUserLogin:()=>q({enableUserLogin:Ve.enableUserLogin}),resetEnableCalls:()=>q({enableCalls:Ve.enableCalls}),resetEnableUserStatuses:()=>q({enableUserStatuses:Ve.enableUserStatuses}),resetEnableLastSeen:()=>q({enableLastSeen:Ve.enableLastSeen}),resetEnableContentReporting:()=>q({enableContentReporting:Ve.enableContentReporting}),resetEnableBlockList:()=>q({enableBlockList:Ve.enableBlockList}),resetEnableUrlPreview:()=>q({enableUrlPreview:Ve.enableUrlPreview}),resetLimitUrlsPreviews:()=>q({limitUrlsPreviews:Ve.limitUrlsPreviews}),resetTermsAndConditions:()=>q({termsAndConditions:Ve.termsAndConditions}),isSupportedFile:t=>JM(t,e().attachmentsAcceptList)})),Iu=q=>{q.attachmentsAccept&&(q.attachmentsAcceptList=Bu(q.attachmentsAccept)),q.limitUrlsPreviews&&(q.limitUrlsPreviews=q.limitUrlsPreviews>5?5:q.limitUrlsPreviews),he.setState(q)},PM=()=>{he.setState(Ve)},Bu=q=>typeof q=="string"?q.split(/\s*,\s*|\s+/).map(e=>e.toLowerCase().trim()):null,JM=(q,e)=>{const{type:t,size:A}=q;if(e===null||typeof t!="string"||typeof A!="number"||A<=0||t.length===0)return!1;const r=t.toLowerCase(),[n,o]=r.split("/");return e.some(a=>a.startsWith("*")||a===r||a.endsWith("/*")&&a.startsWith(n)||a.startsWith(".")&&a.slice(1)===o)},ZM={CHAT_WIDGET_CONNECTYCUBE_WEB_PUSH_SERVICE_WORKER_PATH:"/connectycube-chat-widget-sw.js",CHAT_WIDGET_CONNECTYCUBE_WEB_PUSH_VAPID_PUBLIC_KEY:"BGzym4pVV8NX8I186AY7nFufNJabnGndKRB8rm5-8S5UH8ME_WNGOprIt5vvFCocwYvLybC8cg2KhuQfploiP2Q"},{CHAT_WIDGET_CONNECTYCUBE_WEB_PUSH_VAPID_PUBLIC_KEY:WM,CHAT_WIDGET_CONNECTYCUBE_WEB_PUSH_SERVICE_WORKER_PATH:HM}=ZM||"production",He={muted:!1,showNotifications:!1,playSound:!0,webPushNotifications:!1,webPushVapidPublicKey:WM,serviceWorkerPath:HM},$A=Ae(q=>({...He,setMuted:e=>q({muted:e}),resetMuted:()=>q({muted:He.muted}),setShowNotifications:e=>q({showNotifications:e}),resetShowNotifications:()=>q({showNotifications:He.showNotifications}),setPlaySound:e=>q({playSound:e}),resetPlaySound:()=>q({playSound:He.playSound}),setWebPushNotifications:e=>q({webPushNotifications:e}),resetWebPushNotifications:()=>q({webPushNotifications:He.webPushNotifications}),setWebPushVapidPublicKey:e=>q({webPushVapidPublicKey:e}),resetWebPushVapidPublicKey:()=>q({webPushVapidPublicKey:He.webPushVapidPublicKey}),setServiceWorkerPath:e=>q({serviceWorkerPath:e}),resetServiceWorkerPath:()=>q({serviceWorkerPath:He.serviceWorkerPath})})),XM=q=>{$A.setState(q)},_M=()=>{$A.setState(He)},Wo={quickActions:{title:"",description:"",actions:[]}},Bi=Ae(q=>({...Wo,setQuickActions:e=>q({quickActions:e}),resetQuickActions:()=>q({quickActions:Wo.quickActions})})),$M=q=>{Bi.setState(q)},qC=()=>{Bi.setState(Wo)},lA={requestOnlineUsersInterval:300,enableOnlineUsersBadge:!1,onlineUsersCount:0},mn=Ae(q=>({requestOnlineUsersInterval:lA.requestOnlineUsersInterval,enableOnlineUsersBadge:lA.enableOnlineUsersBadge,onlineUsersCount:lA.onlineUsersCount,setRequestOnlineUsersInterval:e=>{q({requestOnlineUsersInterval:typeof e=="number"?e>30?e:30:lA.requestOnlineUsersInterval})},setEnableOnlineUsersBadge:e=>q({enableOnlineUsersBadge:e}),setOnlineUsersCount:e=>q({onlineUsersCount:e}),resetRequestOnlineUsersInterval:()=>q({requestOnlineUsersInterval:lA.requestOnlineUsersInterval}),resetEnableOnlineUsersBadge:()=>q({enableOnlineUsersBadge:lA.enableOnlineUsersBadge}),resetOnlineUsersCount:()=>q({onlineUsersCount:lA.onlineUsersCount})})),eC=()=>{mn.setState({onlineUsersCount:0})},Tu={fetchedCount:0,queue:[],urlPreviews:new Map,isProcessing:!1},Ti=Ae((q,e)=>({...Tu,addUrls:async t=>{const A=e(),r=t.filter(a=>!A.urlPreviews.has(a)&&!A.queue.includes(a));if(A.isProcessing||r.length===0)return;q({queue:[...A.queue,...r],isProcessing:!0});let n=A.fetchedCount;const o=new Map(A.urlPreviews);for(const a of r)try{const s=await G.linkpreview.get(a);o.set(a,s),n++}catch(s){console.warn(`Failed to fetch link preview for ${a}`,s)}q({urlPreviews:o,fetchedCount:n,isProcessing:!1,queue:[]})},matchUrlsFromMessage:(t="")=>{const A=he.getState().limitUrlsPreviews;return(t.match(/https?:\/\/[^\s]+/g)||[]).slice(0,A)}})),tC=()=>{Ti.setState(Tu)},wn=Ae(q=>({visible:!1,userId:void 0,showProfile:e=>q({visible:!0,userId:e}),hideProfile:()=>q({visible:!1,userId:void 0})})),Du=()=>{wn.setState({visible:!1,userId:void 0})},Ho=Ae(q=>({unreadCount:0,setUnreadCount:e=>q({unreadCount:e}),resetUnreadCount:()=>q({unreadCount:0})})),AC=()=>{Ho.setState({unreadCount:0})},rC=async()=>"Notification"in window?Notification.permission==="granted"?!0:await Notification.requestPermission()==="granted"?(console.log("Notifications are enabled"),!0):(console.warn("Notifications are disabled"),!1):(console.error("Notifications are not supported in this browser"),!1),nC=async q=>{let e=!1;try{q&&"serviceWorker"in navigator&&(e=!!await navigator.serviceWorker.register(q,{type:"module"}))}catch(t){throw new Error(`Registration failed: ${t}`)}return e},Nu=async q=>{try{if(q&&"serviceWorker"in navigator)return navigator.serviceWorker.getRegistration(q)}catch(e){throw new Error(`Get registration failed: ${e}`)}},oC=q=>{const{endpoint:e="",keys:t={}}=q?.toJSON()??{},{p256dh:A="",auth:r=""}=t;return{endpoint:e,p256dh:A,auth:r}},Uu=async(q,e)=>{const t=await Nu(q);let A=null;return t?.pushManager&&(A=await t.pushManager.getSubscription(),!A&&e&&(A=await t?.pushManager.subscribe({applicationServerKey:e,userVisibleOnly:!0})??null)),A},aC=async q=>(await Uu(q))?.unsubscribe()??!1,Ru=()=>{const q=xu(),{showNotifications:e,playSound:t,webPushNotifications:A}=$A.getState();return{userStatus:q?.userStatus??Ue.AVAILABLE,isNotifications:q?.notifications??e,isNotificationSound:q?.notificationSound??t,isPushNotifications:q?.pushNotifications??A}},sC=Ru(),vr=Ae(q=>({...sC,setUserStatus:async(e,t)=>{await Zo({userStatus:e},t),q({userStatus:e})},setIsNotifications:async(e,t)=>{await Zo({notifications:e},t),q({isNotifications:e})},setIsNotificationSound:async(e,t)=>{await Zo({notificationSound:e},t),q({isNotificationSound:e})},setIsPushNotifications:async(e,t)=>{const A=await Qu(e);await Zo({pushNotifications:A},t),q({isPushNotifications:A})}})),Qu=async q=>{const{serviceWorkerPath:e,webPushVapidPublicKey:t}=$A.getState();let A=!1;try{if(q){const r=await Uu(e,t),n=oC(r);await QM(n),A=!0}else await aC(e),await OM()}catch(r){console.error("Error managing push notifications subscription:",r)}return A},Ou=async()=>{const q=Ru(),e=await Qu(q.isPushNotifications);vr.setState({...q,isPushNotifications:e})},iC={CHAT_WIDGET_CONNECTYCUBE_GOOGLE_GENERATIVE_AI_API_KEY:"AIzaSyBVw8bUP84V-wIz6j3wMmlpGs-wHBRQv1M"},{CHAT_WIDGET_CONNECTYCUBE_GOOGLE_GENERATIVE_AI_API_KEY:VC}=iC||"production",yn={changeMessageTone:!1,textSummarization:!1,apiKey:VC},ju=Ae(q=>({...yn,setChangeMessageTone:e=>q({changeMessageTone:!!e}),setTextSummarization:e=>q({textSummarization:!!e}),setApiKey:e=>q({apiKey:e}),resetChangeMessageTone:()=>q({changeMessageTone:yn.changeMessageTone}),resetTextSummarization:()=>q({textSummarization:yn.textSummarization}),resetApiKey:()=>q({apiKey:yn.apiKey})})),vn=Ae(q=>({shadowRoot:dt?document:{},shadowPortal:dt?document.body:null,setShadowRoot:e=>q({shadowRoot:e??document,shadowPortal:e??document.body})})),lC={chat:{streamManagement:{enable:!0}}},cC=({creds:q,config:e={},user:t={},enableUserLogin:A})=>{const r=w.useRef(!1),{id:n,name:o,avatar:a,userProfileLink:s}=t,i=Object.assign(lC,e),l=Be(u=>u.singleView),V=he(u=>u.setUserAuthorized);FM(l),r.current||(r.current=!0,IM(q,i),Iu({userAuthorized:!bu()}),!A&&NM(n)?(console.info(`[useAppAuthorization] user changed to id: ${n}, name: ${o}`),ki(),V(!1)):BM(o,n,a,s))},Gu=q=>Symbol.iterator in q,Fu=q=>"entries"in q,Lu=(q,e)=>{const t=q instanceof Map?q:new Map(q.entries()),A=e instanceof Map?e:new Map(e.entries());if(t.size!==A.size)return!1;for(const[r,n]of t)if(!A.has(r)||!Object.is(n,A.get(r)))return!1;return!0},uC=(q,e)=>{const t=q[Symbol.iterator](),A=e[Symbol.iterator]();let r=t.next(),n=A.next();for(;!r.done&&!n.done;){if(!Object.is(r.value,n.value))return!1;r=t.next(),n=A.next()}return!!r.done&&!!n.done};function dC(q,e){return Object.is(q,e)?!0:typeof q!="object"||q===null||typeof e!="object"||e===null||Object.getPrototypeOf(q)!==Object.getPrototypeOf(e)?!1:Gu(q)&&Gu(e)?Fu(q)&&Fu(e)?Lu(q,e):uC(q,e):Lu({entries:()=>Object.entries(q)},{entries:()=>Object.entries(e)})}function Fq(q){const e=w.useRef(void 0);return t=>{const A=q(t);return dC(e.current,A)?e.current:e.current=A}}const gC=({open:q=ye.opened,embedView:e=!1,splitView:t=ye.splitView,singleView:A=ye.singleView,showChatStatus:r=ye.showChatStatus,showOnlineUsersTab:n=ye.showOnlineUsersTab,hideNewChatButton:o=ye.hideNewChatButton,hideNewUserChatOption:a=ye.hideNewUserChatOption,hideNewGroupChatOption:s=ye.hideNewGroupChatOption,imgLogoSource:i=ye.imgLogoSource,muted:l=He.muted,showNotifications:V=He.showNotifications,playSound:u=He.playSound,webPushNotifications:g=He.webPushNotifications,serviceWorkerPath:d=He.serviceWorkerPath,webPushVapidPublicKey:f=He.webPushVapidPublicKey,attachmentsAccept:p=Ve.attachmentsAccept,enableUserLogin:h=Ve.enableUserLogin,enableCalls:m=Ve.enableCalls,enableUserStatuses:M=Ve.enableUserStatuses,enableLastSeen:E=Ve.enableLastSeen,enableContentReporting:v=Ve.enableContentReporting,enableBlockList:S=Ve.enableBlockList,enableUrlPreview:k=Ve.enableUrlPreview,limitUrlsPreviews:I=Ve.limitUrlsPreviews,termsAndConditions:L=Ve.termsAndConditions,quickActions:R=Wo.quickActions,defaultChat:P=wr.defaultChat,singleViewChat:Y=wr.singleViewChat,enableOnlineUsersBadge:O=lA.enableOnlineUsersBadge,getOnlineUsersInterval:F=lA.requestOnlineUsersInterval,ai:qq=yn,onUnreadCountChange:T,onOnlineUsersCountChange:j,onOpenChange:N})=>{const[K,Aq,dq]=Be(Fq(lq=>[lq.opened,lq.setOpened,lq.toggleOpened])),vq=Ho(lq=>lq.unreadCount),[U,rq,hq]=mn(Fq(lq=>[lq.onlineUsersCount,lq.setRequestOnlineUsersInterval,lq.setEnableOnlineUsersBadge])),[fq,oq,H]=ju(Fq(lq=>[lq.setChangeMessageTone,lq.setTextSummarization,lq.setApiKey]));w.useEffect(()=>{lE({opened:e||q,splitView:t&&!A,singleView:A,showChatStatus:r,showOnlineUsersTab:n&&!A,hideNewChatButton:o,hideNewUserChatOption:a,hideNewGroupChatOption:s,imgLogoSource:i})},[q,e,t,A,r,n,o,a,s,i]),w.useEffect(()=>{XM({muted:l,showNotifications:V,playSound:u,webPushNotifications:g,webPushVapidPublicKey:f,serviceWorkerPath:d})},[l,V,u,g,f,d]),w.useEffect(()=>{Iu({attachmentsAccept:p,enableUserLogin:h,enableCalls:m,enableUserStatuses:M,enableLastSeen:E,enableContentReporting:v,enableBlockList:S,enableUrlPreview:k,limitUrlsPreviews:I,termsAndConditions:L})},[p,h,m,M,E,v,S,k,I,L]),w.useEffect(()=>{$M({quickActions:R})},[R]),w.useEffect(()=>{iE({defaultChat:P,singleViewChat:Y})},[P,Y]),w.useEffect(()=>{rq(F)},[F,rq]),w.useEffect(()=>{hq(O)},[O,hq]),w.useEffect(()=>{const{changeMessageTone:lq,textSummarization:Mq,apiKey:Qq}=qq;typeof lq=="boolean"&&fq(lq),typeof Mq=="boolean"&&oq(Mq),typeof Qq=="string"&&H(Qq)},[qq,fq,oq,H]),w.useEffect(()=>{j?.(U)},[U,j]),w.useEffect(()=>{T?.(vq)},[vq,T]),w.useEffect(()=>{N?.(K)},[K,N]),w.useEffect(()=>{typeof window?.ConnectyCubeChatWidget=="object"?(window.ConnectyCubeChatWidget.open=()=>Aq(!0),window.ConnectyCubeChatWidget.close=()=>Aq(!1),window.ConnectyCubeChatWidget.toggle=dq):window.ConnectyCubeChatWidget={open:()=>Aq(!0),close:()=>Aq(!1),toggle:dq},setTimeout(()=>{window.ConnectyCubeChatWidget?.initialNotification&&window?.ConnectyCubeChatWidget?.open?.()},1e3)},[Aq,dq])};function Xo(q){const e=w.useRef(null),[t,A]=$A(Fq(V=>[V.muted,V.playSound])),r=he(V=>V.enableUserStatuses),[n,o]=vr(Fq(V=>[V.userStatus,V.isNotificationSound])),a=r&&(n===Ue.BUSY||n===Ue.AWAY),s=t||a,i=(V=!1)=>{!s&&A&&o&&e.current&&(e.current.loop=V,e.current.currentTime=0,e.current.play().catch(u=>{console.error("Error playing audio:",u)}))},l=()=>{e.current&&(e.current.pause(),e.current.currentTime=0)};return w.useEffect(()=>(e.current=new Audio(q),()=>{e.current&&(e.current.pause(),e.current=null)}),[q]),{play:i,stop:l}}var cA=(q=>(q.ACCEPT="accept",q.REJECT="reject",q.NOT_ANSWER="notAnswer",q.HUNG_UP="hungUp",q.CANCEL="cancel",q))(cA||{});const fC=Ae(q=>({startCallDate:null,setStartCallDate:()=>q({startCallDate:Date.now()}),resetStartCallDate:()=>q({startCallDate:null})}));function Yu(){const{sendMessage:q,sendMessageByUserId:e,incomingCall:t,activeCall:A,activeCallAcceptData:r,activeCallStopData:n,activeCallNotAnswerData:o,resetSessionData:a}=Jq(),[s,i,l]=fC(Fq(p=>[p.startCallDate,p.setStartCallDate,p.resetStartCallDate])),V=(p,h,m)=>{const M=s?Math.floor((Date.now()-s)/1e3):0,E={callHistory:!0,callType:m,duration:M};h?e(p,h,E):q(p,void 0,E),l()},u=()=>{i()},g=p=>{V("reject",p,t?.callType)},d=p=>{V(s?"hungUp":"cancel",p,A?.callType)},f=p=>{V("notAnswer",p,A?.callType)};return w.useEffect(()=>{r&&(i(),a(ee.ON_ACCEPT))},[r]),w.useEffect(()=>{n&&(l(),a(ee.ON_STOP))},[n]),w.useEffect(()=>{o&&(f(o?.userID),a(ee.ON_NOT_ANSWER))},[o]),{sendAcceptCall:u,sendRejectCall:g,sendHungUpCall:d,sendNotAnswerCall:f}}const pC=()=>{const{isConnected:q,dialogs:e,selectedDialog:t,getDialogOpponentId:A,getLastActivity:r,subscribeToLastActivity:n,unsubscribeFromLastActivity:o}=Jq(),a=Be(f=>f.opened),s=he(f=>f.enableLastSeen),i=w.useRef(void 0),l=w.useRef({}),V=w.useRef(0),u=async()=>{if(Date.now()-V.current<3e4)return;const f=new Set,p=[...e].sort((m,M)=>new Date(M.updated_at).getTime()-new Date(m.updated_at).getTime());for(let m=0;m<p.length;m++){const M=A(p[m]);if(typeof M=="number"&&(f.add(M),f.size>=10))break}const h=async()=>{await Promise.all([...f].map(r)),V.current=Date.now()};q?await h():l.current.fetchLastActivities=h},g=()=>{const f=A();if(!f)return;const p=()=>{n(f),i.current=f};q?p():l.current.subscribeToUserLastActivity=p},d=()=>{const f=i.current;if(!f)return;const p=()=>{o(f),i.current=void 0};q?p():l.current.unsubscribeFromUserLastActivity=p};w.useEffect(()=>{s&&a&&u()},[s,a]),w.useEffect(()=>{s&&(d(),t&&g())},[s,t]),w.useEffect(()=>{s&&q&&(l.current.unsubscribeFromUserLastActivity?.(),l.current.subscribeToUserLastActivity?.(),l.current.fetchLastActivities?.(),l.current={})},[s,q])},hC="data:audio/mpeg;base64,SUQzAwAAAAAAPFRZRVIAAAAFAAAAMjAxOVRFTkMAAAAVAAAATEFNRSBpbiBGTCBTdHVkaW8gMTJUQlBNAAAABAAAADEzMP/6sGxzrAAABQxWOoUFgAId4RXcowgBJI4PX7mNAAD+hCK3JCAA/4JjZAAsmZmaUpecpSb3m/5Skz83+ZmZnaTdf+LFjkzM0pRgkA3VkgEBEWiGI6EBMfxwAgFC0EwPpgJj+PAEBEWgmFaYAMfxwAACg5AWAc+BMfyoDQdGRDEd4Sy2cCQTGSWT2gbm5UBoTGRDEdoQy2cCQTGRLJ7QlqyoIBMZEMR2hDNyoDQmMiGI8ZmrYMHNOzN+7Rkc8fAZD82gCOPHwPD01G423eAARzyesAAhyCB4DC6IEAAcW+HxAcL8o4MDr+/j9/j8fj8fj8Xicf9JV1z95KHYSitLDc5At3rks2AkI0Wyq9n8DKBhwA8taZvZ28ONYBABqLX/l2sv32VwUjAzYFADGJjYFv1W5WaY0ynwW/CDMqzfMzhmD1PjlSjEpb9+lX0mbLWvpnyBx1/0UPmqcGfLAVKFixjwRgT4yGs8uxnUdT2YvAq6172X7hdK/ZsJBib5oRRtSw9AEQA1IcxYkAEGtQ9du2flIYVyhd6Xz+MvkeMvo6URogsbBQYwIQUBigQRkiohEjRIMEJfVq7r9ZPDX/4vF8Psb//73+/5jlR7QxxjBixK+aSsJB4mwAv0rS97XmG3Zm9a/9X8vx/////////////////////7dP39b7n/////////////7qyCVAAAIBAYFAgFRqHJ5GIqJkXzF9mE+EyBcyGWNlvcSm0nrHuM6O/7tTrt5df+buk9XovT1aav6N2t/0f//7v//Qqso8cFdk6YAYAlyOqARN1TIuwudraYQCc3VYWIjjYfabLcSGEPKQyx//qybC35FAAF+GtTf2KAAEIrqS3sHAAbPek/7O2+gRe5JDQctFjC6ZFI+USiRVpFTEiotQvw5pdKqKKLWoENRbdNNls6ls54bCJi5kkM6CwsPlLUyLqKjYqllFEvLO1NWs1JkmwNIbAGCiCQYXJVZHEgRUgxVPF4gSDqMiLGQ5wnoTcASEAzIYjhzjY2RUpdT2RXqakkgpIvCbA9Yc4vPvRqKykE16lLWh+ock2eajyjUqv//8yKQtpq3/+QAwQR2xx23wHP3WQVBXy4CKjuw7q93mev+9beZ+e3d/5n/6/pt1//9fdr/9/1v///////88UAEAXRf9gjALLgP/8MNclshD1EcIEAF2hLxF60sTJEMBIeaAgwcymiMLvEbGg8MFAXneNnUPM7dNzYhADsRtkK0q25yXbZc77Qgwd8nBs1Z6bpL05I2kVofvW31i/6t3OYRqrXrF54G/tmfWgZVJEfTay1+NBGIlftY3cZ3Wt6xlTogkdO3Kgx6UPTHQ2LyrxgSHm7PjnLWlXp2d7+oZhmmd8yI7KAH6LdXLG9vX4/Uzq41Mc+2Uy8oagTYeTyT1VJKIo5DEmIOlQUYixI32JwF8g6yIF+PPV///xxgFqg3/0Vs3/8kTZCByTaijW2gSp1kHTJhGqZLTLSfylvtXV7foVf/X9//f3q+vs3V1fX//r/f+3q9a/////WTAMIOP/3GcFib////6jf/9RtWnDbBWhMWAKAMKzzvRBpAIQpSg3UwWWbwQtFLDlGVoQvZJqvDTiKkRQeVNMuXD8Ypbc/PUlEyRRWNIjRXDHv55XIxXX3LMKkojD/16938IxDkOW+//qybOsUKgAG0WpP+zpXoDzLqR9kLV4dba057W1ewOSupTwcKFAKAVLFfKVsoKhYlu1+Ryh2H4qQ2zh+JbG3/l+ohDkP6sQxZbgIn570jIwg2DkJM1WQwBrixFYm1lTUZBE5zeVBAj4wTfipgyUojE7L4xOY08vp7kYjEvylFJOfnn5UqaPAUg0uefnnqcQhwwwgsyHSQUW9QKJ9EBpZ1e6//+iiSIQV9ikfx5AoIAM8McNrsR+/28A6SKcs7axDlvazcHcvl7+X9/6v/2///V+/+pf/v/s1X/////+gJmKX/zEKkr/+r9L1h1IM6rUgBABDa2EY3sDjZrjhkxg9gAzcEiQQMEBphZmtqEY6CXuspfrC10vszJYaXO87LAngs0M3GZ1NuMhUEDiKVskl27D/T9NdwZ5L6KvzLeMOuy5MMxnOJP6/KIM1EpV19aMxTAFVo3EXZlkqZ0/U4+zXotFsYjLcZTLX9lV1TICF56x4HSIiAgUkmQBLBVwdfqCHpcKXOtLM61uZh6Gl22KIACcVqP9TVo0/2W5TGcaz+xmM8rU1/eOvxlKVbf2sd1qa1r+0jVrkF81/MNZKdCFocmcB7ZACx3Q5/1/fQ48hlPYXR+sGUJRcDh3c9f/8C7nG3Q1JrpIOAL1TXf9ur+v0/t//O/b/7bf/v//v/99+370f////g+Nv/wKP/+v9KhaNAm2GAAc4yZ2UdgYJTA6JCCCyoAAUGggCA8VDRmi5GHwMWxaVfh98pc90YfaG6sQ1GLFjluUM8ddmQJC3InAX7y/GJS4wKDX4mpNG4impHJ59oajVJLYw7SMoYfisEupYlamA//qybJRDMoMIG3pKY5yN8D7LqR1QLa4ahckqjfaeQO2upH2QtXgUFmCWYmA38OQzFZNu6zJ9pTIX5iM46EA3ILehw0vDAIRMVRA/hQTFQcMCAgrG4kJ4xNQZT3pL2tVsVv/8bceWm+Y4GBYDP9Ar/OTA16U6uZ9zo87uGGfKmXY1FXPMNDMoG8P0n4c1lqHWbp8tooJDFW3VxrRkssTpJoOpZYEtGXIKkeIGC9E+E+gg23//dimJgRAoq/umcM0j3/9jU4hBAPvVVd9gKqiGhi4BzAL3EVNi6t/an7tX/X+uX/1//X3f956lRdf7/8u09/////9aQWk2Z/90A9EN3/5b9IsEgLjraeJrbAAaHmFMYQdl3GqEAGjGgNPJWxqFSae2fidJBsIhuBLcPQ9Sv+8l3+aeelbkonUtXctY4S7CUFvIjS7xi8EV6CxXtTt6XTTRTHBid5Wj7GlNhJKHkiD5BbnKs/RP/EJHOVa87VyuWKOKu8hqYRl0csjmUDGKgCNAMgOjMuobduvauTdT94/bxpDMyCAcK8anC2ZJl139ndkbKW7qH4E3wLT3WzP3EtBQQkLjIRNVFJYQiziPqLI1F5wGoM+r///7ChyoXm/qPzRRa/LE0BAQBWFd463UD8P1DaaANmGiGXw3KNPz77n/LP39/+3dv9X//+3q9f////9/r////qCAX/9YdG//lfydNXGWBIh7+AAAINl2qdH0xCIDFhMElMHIQwMFiEZmEAUCQWa6iJjsAmEgIXTSsGgoNAddyAtwGMK+etR+ntt1mso1NhAEYw6IYOVDVyOup6Hnz2/Tgs4JiHJYMjED6R7h//qybND3MAEHdnJKe5yc8EjOSHhoM24Y1ckprnaeAOsuZHQcnFCqTKaxjUvu3WxCAU1Mrl6XNUMCE8OCM1nlj2fqym9lYvSqlrVMaCJugquCAkYlYJreaGEwuWnJiwNBxzpynlONLluU2f/8t2sljZBo8WSZl43MT7prpKZ1rrQMaTIFMRkBmkA3Y3V/IICkVh6KmUp1GYIDiofUXh/eozAqIl1f///MBnzUnW/nD82OI/kgZAAJteMuWrMPJinF+hv1j8TSWeqr/yvcvAH5uz/uv+b7/9u39vV/1t///+3////q/1qTJgB/A0tv61LKADqjY////45z/X8spLEg7C3veCqZPC1RYMgDQqiFDBUJkoRUoHASQhoCXoKgpMl6pW8y9ZP8edxu1LHXHg+GqsolTcgEA+LlAoUaBXs5zOen1lUOgYGxWM4TbdH1xtc5fosM+QGYXDkXpL8w8amqTJEB4O7ZrV6V/eZ2rM9fxvbxv2JG5hMAxiwNYaboB2wBAQgwlpKFEvF09yinVrmKpWHOM3c4nSq/Wyq7JIjiBqUBwZFL9xTAYCIoKEOLtpigBAr+jJTnAsNV///+kUHP/5xmQOMxRQLrX5v9SJzeglFINXjcCHC9t+ttdv6/NT9//2t9vtfn92Wno6fWrf/////b////gvD2/9QAv/931ieQhwSJfvhgICH6JryJpisBmaBMYvEQ8mDMIHAxnMQDAx2WjAAROAy0y8ATFICGgCxcwOBUtmAoyFqXkWTYibPBoCOo2eNVYbMHBJW0GgcCCt3dVb1Xub8ch4wSCoU/0ulDWV9W+9uXJnuXZYZCCb2P3Odm//qybC+EOgAHT3JJe5ykcD2rmR1gLV4eYcsh7nacQPIu5L2AqXDlYqMhoFTNHukqw9M2tx2pTc3zKtVkkBsIKoBMNyAznUwQFAwQCmoHJhgnzyR5ylLJ/qdnJ0zGqXBzS8kis1NVOtqmUvU60XMSqElAMCr/wiADCpaHeVD7c4DQoJ9Nm5xx09MDEgm////i1Sq/8yNVm5YN/2AszDQv/v9t7QP7/ZYy8zJI5qwOxN3S35zI5a0phEle5lByrf//7bff9ft/99X////6////+sP5S//C8//7/rFGB1Aml5MEAwKXFpTTQKFjBhvMMtkxgAzBIECBCYfAhhwNGDQad2iJo8Chg0L1qaGAAMqul4yNIZH9mS58ppXECXZZK18MRbMXcHA8GBdxJurb3y5Go6FgbA7x0tJF25a1zC7BFyvALEjK4CaA49i5gy9NdXck3X5Xq03MN67N8u8tTj9tMRzMGAQMaxLPTTAA3o0AUuCJYDcgdZYO2OTYihgv2UXCEFWKMMQZE1OrOlRSrrXW7mrLZ5Dg9EDJjAGCwwDd02omRLBwYChMXIIqf7G4swBccMYdfpHCUUpZPg5yIYbt///6I58rf51allIy/qMUBQFnl/t79gP1vUysEIvJnQ7Wq7fp9FRX+QL/T+u1Pt//f6ejczT0//13//7f////54UJ//2BMv//u+sVUIMCV2r4gBAgzNwAwAwIAhhCJJh0Y5jCAZkMJRhwAhccRheFBGMm7AMLAqMAQPRsU3Qlo0MndRYyXzSHmfh1nrhMUuZQACgum1DjBsCJdhKKexT2ocsxkqgk60s6/j/U3cbWcw+M3dza//qybHXiNQAHZHLH+72kcEnuSHhsNG4brccbrvaRwPOuZHwcKFDosdjFWhOTGH3ioiABEp4ZZ2vcbeI/ZinMO45WaWVRFuSRoBCgwkXU5wZQDaDw2YFPoCjET8REvF2q5kSL9bIqQGoSKjp1IxQ2rq/1LOFEEDEGCjyS7JVGQNBYFiRFRcBXbokcECwQeZL9ibRUssAYk6Sf///6xjSXJF/6BXY4cJb+gAA1DE/VeUPuX0MrzDRgJdb/q2SS3zofuD51/87KX//mv/b/6+ur+ver3/6vrrf73////6RRCFCJwLqv650DAEi1////ys3/zpLgwVgX1GAAAB67UpyLMmEYWGMRsAJLgMIhgSFRgUHpgaDBgcKJsTiJk0GICAJdNMlalcXJcpNWdjDT4m/qg0ZpccMhoAd0JgUAPOWtd7qtbxZnZpcZVTvvLMcc6V2rVWWp7GQoer2s0297j0ux7qrfl1a7jR9rb3r8I21hU4EAAwVB0xGYg+ecUD6NAMsiAZNABJxKBFzA6autlkJ9JbF0R2RC71Hm1fV+thywELQt5Kif1lgGpsZQvh0TFpVBMgABKIKIjX6zBdQ/gCJBpof///UPgkhxP/KBWrIxv6VFAUDV4b/a3YAlUua6CSk0WhxMXIvfZUbp9rIdZLf/o///9L2/r2/7f/T//2p/T////1CaKP/oE93/879dBAQAMZEAAADXIaeNJxHcRBoYZ0IY4CEYChCKgKhwJgoFinP4BLDszJh0EgTREWQzNwoDgB7nftSl/Wo1ct5XCsBY1aMCQQhz/5vPkteV91LI9Lqu36oLXJXelDEYFjT7DAKmOxdK//qybOqFMwEH1XLE676nIDfrmT9gJ04dqckTL3qTwNyupH2AqXiWJUuX5QzXy7hT3YXSdm3hoeUWVLGnKZysYu6YAoBBgUAgmEuPIa8pHphYgJBcDEeC/MEUBQuyxKGZVVtYW2ytmy5+P/yT4jAeHUpRgYqnP3ZH1MKaAInDnkgmpFdTGQQMQREBygQgS4WroGZaAxLEC04cJeRepjtI6KEAx0UZJaD+v+3fQqHEwtjVK8bhOMkNw97smpKDgMvD/77/ga/W44n+VNx9pD8OsQMH3s/nNyb/b//3//bS36P//9d6aejbd++/////8RBj/8IgAAJCBoUCRZ7FrhwDhhsgcA4rQHAPiMAMLAXAEAswKgnjKDVMMP4GowIQEyyCD6m7XI2/E/SWqfU9Vs9xx2mZlKQIAXFdZ4b5nvK9J72u4XZq/vHlO28jswSQAIGA4GG0ivUz3p/st8+em5PzVWAKszOfT3qF6FKy9gBAVMBQFAwbyOzQ7MwMHcGEwKwKygUEBBGIRt5A85bva20eE/3/7zbOK1LRsia0iv622S6mZTOMgDAZVf0kUgKIQJdCAifBmiddSZwZ8Er4W9E6bIpXmSB9ifA08QYp5+/qs3/rHSgPZpX8fRIpEyPxJ92gxQSA3Z4992uA/v9ljjmIZGeKUk3sGVlDngo+v+9O+w+/+lff//tf3///6f/+n////+DBv/4LrAVQYgJ4dXhgYB9aVhwwBIXBowUI0wxXsxOBswhDYGg0vcGhUYBC+Zu7mYpB6YAgwiC0QtYHAsDgFQHPsxWAFfOxOJrPBHe7yT71owFCSfyypZ785yrKnln9RqXR//qybBKeLgAG13JG+72kcDerqT8HBRIe/ckTrvaxwMquZLQcFFAX93/8whik7cUPMVRQae/lfu60CYa7VqR+RWvxp+Xfz1jSxaKuMpaYFgAYrFSfbEUD4gBhgGCAAhIrYipeRSXWP6/5kLUkNk4XWMimNI700jJaSnY6gl0gwYO5FVfZxGIOWmorxYboE2AsJDsP9a1XPABGR4f///vmE9/ptc4khMCAVRD/ff/kSlAKMwpJfwdMVX1uz6837e//TSv/r9f7b/tXS6uv/09af9d/kX/////AYf/+BnDQiAnznCAgCjUXbRHswCAgwfE8yqhM0pC8xoC4xAAgwxCswsC0xJDw+gm41/CAHDSTAcrAYAAEhxScUTZOqmnq7DppEiwGQl/LWWACBirdBgS1p6UX5utjnGaBj07GGtwzKZRrLe7a85XhbS8M4hRRIb+cl96ni93KzudfHCm1qHb8za3etSp618IhhYEjAETTCyYDdi7wMTFIDDgWBSXAiSYXEGGSx88vF2Se3pm41ycRMJBjEZAqPSWTJqmYpUDe+xQCANCiLez3ZMTYDj4TAiZDDdS82AMCwKBknjV+6SS2LwIikzdb7vV/2fLxUM9/Ya5oo1Mj8MFC3/3+t2AlKVrwENEzGvw2II+1W0v1/p/ZP63/6//2/+v/9///v21+3/////iY//8MBYhAe8eBAgDM5U6iPxgcApiCHxmcvRq+BwYWg4CRgMEZgmGJhwOR5r+hqMJRhiBYKAxB8GgKXgVOwyhdyAmovqXqT5X5K788KAAu9bi5BUCmn0+fyq5ZgV/PqymrFKkakP67uwrJW2tMRgUZ//qybFdJNgAH8XJE676fMDYrmQ1IJV4gxcsNr3Z3yMoq5L2QlTiyBBchtYvV3Uk+fd1NQby3+cWl/9wq1p6DmzqQJgAzAaAPML0Eg10wRhoTMwJwMTAIAEHQDmEwVM3LuH5QJELPefv/5Vr5y2ZxqwW3GXaqdtdnt02HO8+5YwF6A04LhyHFq6c6RguUBgYDrifiGjFLbZQICBjsBJBVPu+tb0xPYVQSxp2//btrH81Q/qIaVUzI47EDCt+211uAtYnhKIANg9R7KZSUfo+3VP+T/nbm1/6f3/1b+//9v/1+q1+nv6f///+Aov/9A0ABAAOFQAAgLNfB03IGQDxEDEYFqGRgeA7GA+BOCgRjAaAJGQQAuIyYJUZJIGGFANhUA1Exgi42Oxd/LMFVW4JCJ0wBFd2bQQAl+AQB2rV7Kiu6ltWhhqvuknZRYyy+7Toex+y9ZQABrgDQYGLXt17tyGO75Ys8e/LmboZR3PVNGXBaMqiWAIGQZEItGIWOnl3iGKQ9kwdBzIgozRYEmSwNO2ufxuTZse//dav4w5bsxjHCSyqvrHP8Ku/x/WX4ZclUFjAWot0Njuf6qzU8SgGUFe46h0dy5njlDQUDoP+Uk7O2xkWRXANkyeNUl0LLsz1aGpqdQ5h86766KhdFSbnDRt7A6nLILAoC6w/++2wH71t6CUUqRw2+ksdZHXvVHfK9r/9W9Pp/vX6ff///9P/0///////C/y0ABACRtwABAMOkL/rEV2YFAEZrnwavAkYVguSBCIwuAwImHI3Hgn/Gn4jGFADiQBNmL/IYoDmcwG+sMQfPzrZ6e1VvUgcDOptDW9vn//qybM/iJgAHLnFE676nIDWrmQ0HBRYc1ckTrvaRwNAupHwclEhxyyrTNHN8+7X1f5j+rDKoelr+iECjL8cUkoraq93M//67nJ+9+X8q391N2I21xOsDAAGA2AyYQgdhpvDLmEUBkYDQGBWCSYBoA7KInUr4Z95TQnWXd5/9Zso1N2QRHYhWkm1J9127gkJDxM6kbIKOAmNAYjG455BUKFMoAPLBQU/VrZ5NgZMM6v7L/27VDqmXVuw+jVR4Geq2CChb73fXWgXcsZeAAk31YHYm7qdpu+zW/bWmv0vt+v+31vt/9mV//9v///rt/////CI7/8ChoVgTafhAQBo9KvJG8LgYYIC2Y8xeZ4BqYghkIQFFRECCHMSAsPf4aNageBw3hgII/mAYEluFFWQOm+EPPM8KZ7CIu+97mQkF1uLgYEo1AlFZbLDlqeqxh0IclFWXyqRfzm6d1ZDLn2IATMPicZS+1DjbxgbPWHz8GwrPfy3Pl/WNNGnZcJVUQgEYBBWYitMesuaBzTgFA4PXABWg5UcROmyL2Oks/o1mpRScqmR8wFFNHSRSQOoJTQxM01NRcTyHjPPV1nAhMhQNICYlrueASBDCxVSv9TmgLMRvP//3/eX6P+keucYxQEAXhWo/FtAkZSlYIQQJBAUwir7dten9L/+yW9+/m///t/7///t/9/f67/////EG//DXEYjCe+/CAoDwV2ADIDgwADA0RTExazG8GTBYIDAAGjA0NQYFgFGc0M5sxZEEwQB4EgGiYjgvd7IvUisNqflS0m1kUvnqecKA4xnEfeT2qkcjk3Q9ynordqRWtKuf/1IvP3rq//qybAJtMYAGaHDGa72kcjirmN1oKl4aQcETr3aRwOAuY7QcFFh2GEguv5K6l3Lsg/f8wob+v+t9zv5/2khtrCPZgABxhqZ5zClgG1NgYUeFLIDRAcZcT1ISyet+bJ3KxOpFgd6J03mRxqkkDAxPrpZQGF/qCQcfCywx7qOhEeSyP/nAGB5p//r/9bpf509YYgYHllsrkgH6/B0xECAMYSKMTf+Uae3LIk1Jc/btf9SstN+d//ptbt///f7f/+n1/////gw//4UgMCADkmoACAf/KQrGCAJTBTAyMLQLgBErFALpMAoIQAzAAAlMCMJAyHk3jDhBeMBYBFCU+rvK9YM4svj9WmkDeKfzrW5+mFgf/3+pt0tDN16sQzoKLKZpL0GSjL/1TuBLM6RNMyVGxScsz538//+3qHn/uS/W1jWpYzDz+s6RNMCQSMVEjPtkWADagUGA6yAExEEhzS8aq1j7PP+ms1Rl1S1j1TZbrtspSauoXQ7lqt1qCAiDBjG6B7dAzAWBiBXbQ+ojQJDDFXb9H/+p0W/kqayKCECYlutssAqrTumM5O1i8Tklwvt+i7fS1Tsl2Xo3T9q9F6z+9v//em1vT7/+35P/////hIf/+DoAhkBTb8EBgODTQbKkCJYDAqvUYMhIAQHHgWDAlIgeCBpO+yBIptJhXIgEYOmOyB65JP3afcFtLZ5IqeijUZBw8zf9xITafW/EJbA8sl81TyWls0Vbv/zGw8eOVA3hpoOpcRvO7f1Lv/9bob2/+k7/M+drSuAGRogBcKmKJQfmvoG0WAYoYDIIIl4ohJmh9T3JXqtXUpKWFrLJYUboH2Nj//qybOPPUAAGMXBFa7ykcDZquP0HIhQZPb8VrvaRwMMC5DwcGFBa7saqR6h9Gn9BEJgQLGC0VFdOcDFgwTf9essCEZs////6f/WYm6EDA+l11ttAnODECJY3cGOWB7dmpI3bo3/t6P0MX2vvTppT/10av9f9av/unT319v////w7/qAQYAVm1AAQDRKleEILmCwIGR5kGagEGFoEgEASQAAQCxg6N5w17JmaJJgoBRcdMRTBdbqQ/EYxjAliVUl6kh2kFQCZCnlI3vmc5dfi9PSW6OvS7pcMavOfzVO0bWbpIhmRoEK2wij5f1Y5/61Vr4flq/zet5WrMiflkyPhiWER6iF4GxHgEkwyMFhQypeMUkbLLhqr9NeiZ0USygyCCTPU76HdIfZXb1JlgdYbyBQKLYSBLpq2IcLoQ0vP/rMQ35X7f/t9H/sUBnGmJioHCqu/1koE7pHfMESL61H0Fi05RW2yp0eReA2oCpdVLLN3OV+n/Z37/9n/63/K1QAEAI5JAACAw+GYtCFVgIA+YOY85hhASpBGAAAaYAYDwiAZMAMLIxIF7DB/B6MW0OTpr/KCoRMtoZTapNNBb2duSyYtmkExhB2GPe19Xd0tLYzsWqn8dWTAoUmTIng+UDaQcDMkkikmmYv50r0pSmTInzUmSOGuH8BqAwSFQEc2BjbtALi0AoFgstQcVRDiELaD6Y+jz++61OeW50knWpOnau6ns+Q0bdWgpsGoECgmdIsvfOBMAGZ9G+q1RiGgFXV2271fX0vV7GSBigIBQ6vd/9qAeUpZEIpJxBLGk9j6Nl7+9WjS9jC3DXu6OtiUJYn0f+z///qybOgSeoAGVXBEa9irYCzguR8HBhIXtcEXrvaRwLgC47QcsEj1/pCYZAt1/BAYEYvv4tMEAAYGiCYjJ2Y1guYFAkWAKJANCASMJgpOUXpM8ATEg2TxddF1N5OVpU1bd6Jvu09+3+iEoqS8HATUxYG/j9xyRy+dnZ6dry2zO4RuKU/9/68NU1mUp7GMohtOpe8v8tf/Ndr2tfuvvLn63jfnIHZIJAGYcAodLCmBuAQAgoMqHtkYdUu7zh5/0l0ptSMS4iitaKHRPPdvMCFqq+OoHF3OnbdRAhi//UI7f///+tv7zM8wxANbbtZHAJSiawAXsS4A+S1hG5G6xb3Ja5ilT97UbHM/f//VdZv1xX//63fKKg6JAZv/wgIDlqIO+JBplZAaw8BJETHgMBAKgmRAhg2FpvNBJl6DYCDQumrgu4pm+kveGo7kXfx1nahF3GjpAcFUqvu5TVYYtuRdvxm3O0U9EqTG5X9ROmpsTQbkDCxMICTRdUfUWk2d1FlLoVo2dIxKQ+RTgaAcAlhAbZb4BoEGADh0CgOHabHn+e/rp3MXoEsgykmWZc0Uq/lgrf8dYLAJ61fFrHdV/qMxTk2/b//6P/nWZgonu23+2wFVGQkNWDxF53AIa1PX06ZyrJ+1bnaejo0p9X/ci7jP/9X6wiIgFLvggGhBupWh4oqSg8KrUMAsSg6MgeAAGJQtJBsMXfaMChGJQHXg4asbeQuTU0ovT8akL238aXC0NA7SSSnmn7Z9KID78/8/ct3IlXnJP+v/sXt8mUnDCIWYYldTPK7K/y79iZvfr8vu/+9dpJfDjEy2hhWLZw6RQGxEgChQ//qybBYcrwAFmHBGa32q8CpAuR0F7BIXhcEXrvaRwOyuYeQ9nEhxUMSEXQTUts6eV15rQUiWFsWDqma71rSUyCkl8bhWrWgpd1A1BhRGbpGJ67zoYtNP/sLl+rb//6v/OuAAKTqqBLAckUTIaEuqFCAaluyql0/e/2Wrn9Ef9LUv1Ru//Np//VPb9f1en////9f//ip//SNvq/2eugqGgPNvggGg6Hvu5JgPgLmDQB4YVIXwCIUAwP40BuYDACRgPghGBkDyZY6FZiUAlmBKAIXpgYKgDmAaAUAABUA1qVwHLoBdNe7bwFuj2LB9GqTc/C30bM5r/UMIjELgKtfnn8qRzWP8suBLO0iIZk6NCk4cp6k/hEt475Zjt6zv7vd9/uNmVRFuSeoVBIwgQ84cTgDOBw6IFrIDSkUsTpsi6NZTPJ0LNdCmo6yaQ31nGRdFFFBaKkaDLZhTkk03SSMFHzgQnwFBTlMnTz0KyCEi/96KhSz/qt9/66Lt1t6JbG8rpAAC6vVUsA5Y184PRPt1Iw3ehJ663T6HsxKGQ33t1c5udUop5f1pt9r/36+akibq2qf13/3q9dd/X039ecf/8B/+37vU0AALXhlsAWADCoAxgDAdmFyY6YlwJKFRcUwHQFDAmAUMH8Ek12CyzJvA1MGIAoFAhgIAwvAre3CU7qZ/qF5UnbNSsnjL6KipM6O7W5lzGt3HPHHCtz8c5EjvZlCGYBB808FlSLB85ru4F/WOqd95y9vGVdyl+f37j/uAkOWoMHxHMOk2P8ntMdhAMIAoHjLAQjrUgekp7Gf3YBlljlv993WijMHQlJlKpop2ZS2R//qybFjD6wAHHnBEa92kcEQrqHkHIhYclcMIT3ZTyMKC5DQcGEjesra3WpFRcIwBbQOgDfCeNS6kpklibjWndaSN2SMRiLrah26mt662WdqStqZRMH00m94d2/eoWIH7b//taUblVdIRQVEE0aTkiG+tdbmvWZJkR7RCkVKyaLbPXZmqd1N/9Lf//6/01QmCwJN/QQGhFa6eiUQgAUMCEHEwfh/zDLAxMBIAJIADAXmAaD6YEAWhkDrsGF8D0YB4DIEACRPBIA4YAoPADsU1Ydx2W5Jqt0lzjumylfJgEAKw9JbTL7Lc6BnsjhmZt42onappbSy3//7Cj1jGGRwBTNMGgwDnGl0127V7j+UzMyetr6TWe/xytSmNNdWMYAAWYZk8eImOYogIWAJHgyCAKcmVUtrf55UHOf3vP3hjnndjWV+SRPK5TY451rFvGXXsNUuP3tx2Lam6uO9aoGHDIPGDACsVgqj338cuLwNY2qWPdKAterbf/+tuz+smWvGWLWqsBbMgB+s6kTS0MZqAEqNfjbWLlvnrqzp5q9qyJOKlfRE/KjjXVqpTkt+v/y/X/97v3T/+mnb+j//Dvc7lvm1qQm+1n1d4EEACk1oIBQdCefl6zAmATMGUEww7hLDGJAAMFgBwwCwXjAABBMAkCIwNg4TLVdHMTYJkwJQIgYADDTyoRJIsufmH2ltdgturyP1GaimawJhUPS6XwxTxWIxxhDqyd/M7kth+MPzVkFzXNY0air6xp/goATiRMHga80hpuahWeesqOO0e/7R7r38O3pmOOmqoIQGBBQYnwJ6PvAbFmBjxoI1IFpAjchDc0dBS//qybACd8oAHpnDD69098ETquFZsIm4etcMLr3KRyL4C5DQXpEwj8zrY/ak1JRimtMeqTqU6mNmUg6FmUiUCSSKJ+yJqkiE2gXLLxi5Lubol2IRH1V9qSVIcSVrto1rV9f6ktXQUkssmqnL/MbqNZemBia/3ayNAvUZCQj4PEfXSFaLLnMaK0MOh6CdqQ2pb0KWn6nb/yHv2+/rX//1/oQiJAHN/ggG1AcqbqrMh+WA2Kj+GA4YCEKRQEUEBioBJiKBB6YhQOrYiFUiA9aiWilbInplc9DVewrXHYBlc3KHeMEgJextIrL4OlqtT3WIeiMlt00Ov1K5bZuf39WXal1LGRkAjHMZ2DQ7c134puxhu1Hc9f93eHd5bq2pNCmojwBGGwhnSgXAMfAEBiIBiEhxipHzh7a3QoSw5oWSaUgmnPrbUiZGp5bKcfBbTNDZadSjUGqACx9RdNz6RqpNRTN02NFKekpkzpOst2ZdbKo0L62bb237zo7XMgAExVKiywHJFEyrQoTRhgXpz47bTbHKlEGUWHFGgKq6/F5DPvXUiUVne3/F6u/vmGhOpwEXU6lK/2UJ2OBgaAUm1CAaVJ7jrsMMg0yINjVMAOIAwxuDTBofMIEww2JTAuCIMtNLIxHgXDAhARAwAiKZaNIh/3ctTski9iQOVflroPO7YCAegGNv5GmbRF84Nn5iUW5iLxm1TzNmRWyuO0eTYhwSBYGDkkNUfiZKR1Em82NjUhp5WYTJ02SSLI+Baw1AEwqAiEAYIqIAAUC2ALGoGBMbxbPO1dI0qrvUYsYLKJ83RGgtzpXWZGKT0mKi3ZZ9Q+kE65ilS//qwbG+f6YAG0W/Ea72kcDyg2GkPaRIdPcMPrnqrwLiC5LwcJEwug1AwUJZXLxiXkklqWaqZGqpRopBnQPpPZJalLZFa1Oy0q116n1dHWbYCTvAyohqDPENv9K23aHYjYAWRbAggTFrr6ls1F+qdeUSjUA16/RJXP2fZ/o/+////oQTArlYIABb9mr7N3AoCRgSAzmHibCY1ALZg2gYGBCA0psYA4NRgTC5mN3aeYaQgJgFgjDgCYgAADgGBoA5JlGqlUHljtMuYa9lNKoOiC/AUA7Qw29K7HAkw0AF1mUUnYfgOdn5X8Slcze+/VhCdbbyZ6RABEYYQiJdhrdJ2dzjWOVLfpYjCKbe6e1QUlreU/BzfrMEgBwUBwYRoEpqQhMGEyA+YCYGY0BaMAFM/mMa1flTdLFO/rHWtfjrHGxauzUh+3n93Weerlnnfv7wvdgqc+thlhhj280ooBStzcl1Zsbr2byhc94ABCj0SNCDi9JFM5atMxmdghFEdjPnDCLEfR5skH1W0xqCIju0X+ytuHlVbkMCb5FgUncl7k690UaxrBR61/1VYjcxNLHft+rX07f6fRT3dnigRDQFl2wQDblGL8IzjgAGAIWmLjumRYSmEgCEwig4TzCgKzD0Uj1LGjWEMAUKo0BTNAIBA4AqHJAS9cH1ZFNtCiszBD3RSHg4HpmkZS+kPSlzolKHKfSehq/NvpDsdoZ/v/2+6Eo3eUzNOk5Z7yT9jtSK73XqX7sg5jrH+853Grckr4MZIQYCHKbajwIBLVygqjwZe6dv49w/7t7/w/D/5W1ztqZ5NS/XL83le3YypMebyuWs7laj/+rJsjKr4AAg3b8FT3h3yMgC5LwcGExzhvw+u8HfAugKkfBwkTCTWa1TDX/3aO5EbrdDQ2causK+QkgcGJwQkiFgqZissQ5pJtmVSGsK9//c+hK7lVqJgoG8s910bTcpV4AGUNoG0Zx8pUurpQwkinpQ4zv/bd/fr/s//29bdOLM9lLFqAYSATttBASWcuolkEQIBgpgJGHkFwTGJGBoAMSAHGA4CKYH4KZg1BHGnOl0ZAQMBgngImAwAEAgBzAJAFLYLnbhE38iM7DwoABDTcIhDkaQRkQBDkSh/LcRQwgKD4g4M5H5mYzbtKKWggH/58gVTm5pdwCBEzmFMmA5bk/Lr0fn9YcsVIDlNJ9zud6izqfyXv419WAHBGY1EgeUJKYaA0CAUFhPBQBv5K7G+Xd8pbP77r94ayvTHMO26CCqvc/7hc+Ywr7xkdakqbwjtX9UW+41MGtlqAICzM6tmdywu750t0PUFaH5zy207FXncrJp8j3ftpa5/tv71/iR1p+Xh9vWrgIbV+vVTVqHTRPJ0SOnExpqNlbXXUBkPBAVz6AXWPb7r+79ZiLZkhUt79r/xkN9Ws23v0oV/WxtHqBIiBlu/BASctplHWPFgAEdA6MAAiYwOwMDARARMBMBIwDgKxECsYAYY5h7M1mCOEOZFwJLLqAIAoXJiFd2WetBWY/yuXPtP1MRZWYGGt6+C2n3fSKsdUwYY57MXvgTluOwQ/ECuEq7G4phQloT8AVhguMO0/ZAkkqLJmZsvOMo9WkkXSaICK2AQAwMRsID+7fAOKQZODAuA0DhwlY1SZGssXXqbWm6JYLizhqqp7uxOrmb/+rJsKDn3AAgPb8Jr3TXyOeDIiQcsEh2xvw2vZq2AroLkdBwITH0jMzrU5PqOGCkTM+kwfwKEA0UZLWhdJNGX1MtE6zLUgeM03JsvueYqOmkzpGDVIpKpN1Vp9U6FtGl64qG399vs4mnOdA1UqrlIJhSK7lIRiximp1iTDJn+jy1P/6k+xt3u1f//29VMQU1FMy45OS4BAgCOX4EAovtZm0WTAJAHMDwDww8RsDFmAsMBkB0qgRhUD4wHAJTBnDgNIB0wx6wmDBCAjAQEShAhAKMAQAEHAJIoy9f1loMtTrdSQ1mHKrOsYAIBE3Xp3JXyj+gNLtsijDesgVtYO/rWcqN9JHU525RLAw7Gn+CwDmgQ0DQCtOkMqs1HklmVy/lBuVLhy//b2u/yUO2uQveYBA0Yeo+c8scYihKYFgiRESEBQ0+ctYV+Xuxzuv/Wfd4436+dP9W5Cv3b79WYqVMaW5W7qx2mtSy/auXrtP/c74wDQQJuspVPyjU/R3NMAjqAjuEC0YsSakAuL3VA2oRVFD5mDBrZFtDJPIgo5Kb3cdYY2wpoSgrQy36yNNzTsRsGFJjgQgTElakX26JBhINPFAiwl2Mfc2zZ6Puvt+z/dfWvZ+7/9K06AWIgJb/gwEnvF9o4X+MGKzQ/c3oJMRAEawsFERkYXAMdMnUaFAALB+hAutBGpQ3V6JSzCmfiAoKxim4IgGElmZZKIdrxVnLMYOgaK2KfOUcm+Td+5u7kWNmLoakBjUgkGIqbIsxPpG6p4my4/raqi5qXiChq4DCBLA7ESAcKQ9gPAHqk0irW9TK7VPWmgpVZb7NWi6079NSkEVr/+rJsCM7ugAhrcEHr3R3yNOC5HwcJExeZXxOt9qvIrYLktBeMTNfQZYRAAqKCKSa0FqecUmZ6UKyQ6E/TMIeNg+QIf//9v9rSCKb73fStOLKqmCEGMJgUnbIb2pvvrGxjbKK9Xrtt/XNfo/+zZ/7rbP/9SgCAmUgAAAJAAGXr5BICoAAQMBMG0w6keTEzCDMDIE4wFAQjAfBRMCAHAwcR1TWM4xMjEUswaAZDAlAvMBQAwwHgCDAbAFDADEi3de6VL3aS3sBQG/z/RigAQATbx93LsAIT1LUOysEDUkasPAtNQl/3QuQ7ljqu/qiDHY0z4qhuYHq4k/AEjlk7IYClnYv8gg2Ds8bEk98btLy1NOmyAvuDAOMAxDMPn+OcqhMPBKMGgaIkCDBzTgge9allNb7EqLKpTU9P+8fn6va9WxZiH3efjqc7W+5c7flWo3Tyi5Oap7WX2bHKpVCRL/K/frY2p69bsJdJo7au2qpSTcN6N0ZXC0Tm9nGllGadXuZ7VlFc1SKaYONW6TNzexFiqgzFFeJYAIgD16R90yDFawBJANzMEEJ8Nmx7zpIok4/uRQdLCc+ihxYuxzGEkUlZpB2+MQ42hw9sN3m5q0VqIOpmXuWocr1KXHMSi/nlDcc1c3LyJ3Kkc+KvBgrCtv/DBbnZ+luJ4AJMbxAR1iKyJFU6zCNTAMTDPa4jGELjAYD0eoNULYKxJ/ak3QW60N1e6vblqCr8SyP5SyCbMjvRGnjU7Gs88KailPpF83rFoAxEJyIEXKiZootHkELmZU6/7HzUrDRAwKDADwOCgnDoyJi5i6lQv2WnXe673SrLV9aTM93/+rJs7t3/gAkPej/T3U3wVCDYNQdsBBXlhxetdqvAuYLjtBwYTBTrdVkGrdNF1JOG6DSk0VuupmSMLGp3XdFrqTdr1qPOQaIjVFf1QlI2TSWxMoItdsgoZSEfYEK0VK4uKFdwu9lrJd7pZd3xvDz1VWf6rupP9f//VopMQU1FMy45OS4FCMGO/4MFtujBkhWMQAFiMEYwBh9jA1AmMAcAswKwAjBCAVMFcAowVAIzQ5HTMcAA8MDCIgOBIAMwBQByoAIjqsqlhyjn29WGiNmGXKae8pgQgCPK1KiSKaGrO4Tesud+fazIIq7MVf5fcBv73m+UroZal8DGnR8jm0+L3LFyT0mNi/LpTB1TuGsrl/ncatyhehbY6AhVkmGYMIQ608oOBEJXuk1vG3zDHdjXdY5b7jZzs01acpqDfbEnzv39X7v2OXaazVv3ftzuqS/VyrVaV4BQGAojr3led+5fx1ncFhFQUCcXTgQdg4UCg5BxZLSeHhWdn4X84XcnJhBNHydf78gACJaRVZwHQMZHYFAKIgdTli6d9NYs0BqLIFzSnheBnRaUQtLb4lvoUs4TpZ2uOE3DOUe56YHxvQ1rHFCR9UxzGw0iaULN9fRtrjgYIwZd/ggY5BliXRQumYMAwYkkUBjoMJQJSHQ7GBwaGDInm+F8mX4ZmEADFo0hCyCD7iO3Un432kbTb99aLZdVkDLKks+WtAidBNxW9rl+pS0kUtZ+kSqzIyDUgMmBEaA4j6zRSatJZRSb/s5oVyWFxgYGDAHMB2AcQAtADpxjygtS53Rdl16peTPrL5qovlCpJaE5RQUndSm0U00Ddem45Qn/+rJsNt33gAgOcMLr3B3ySwDIWQ9mEhfRoxOu1HtAxYKkfBeYTMwwgMkiaMky9AHNUKIvR52NfeZxb0w1VyIGn0rZDFAV4drtpEnFuj8KkZ4RDWTlbxcttuNFlOFiab6Fs7VqRd+n+K+6r/rddqh7/2f/XQ4Kwbd/xA5G/+bfl6QSBjERhMw2M1UERYJGIiKYXLxgI5g0MowsGpDBRCMEAzIQUjeX/GhgUBJejvKbwiBX/tMHh2JxNraG4oD2VtcYuyxwSQAQxCV3QDE0ZnNgqC2Rw60t8orr+9pWxSqrZZcBqWrUpxGndn8HMsxuvNT7t25m53WsO7xyuXaCIt2GAKYDWRwljmLRAkKTK4MLSsL/Us9nd5qOWt48+1ftSqF26SpKMJuWQ7Eu4XaSSV5Xb5jlP1dWJmkoKkippivYwvXM7g4DyYqTmMxFLVjC9Lp6WWKXPVbD7esssb1iOZXpjuWvlFm3hvuW+77d6AFtjI8g8Y0eftrraYdvstrJRUUlQWCnh41kQtVPsWkZfbHGmqZjB5ItGGvU9aun/+YocGFN6Cgt+3///SAgiBLdsEC0pNfjrviIBgCHJiMypjWEoMBgGggIAXMIQSMThtPq/PNiBDMNwGFgRWuSAKKgAia7UEK4a4mo/TEolBNOyV734LrSmLw/BKsbTm4TOMxD7y3pBDsFNlkMdlmt/nk6MppoaRlM+EResPVbedmh/CgzuTNJYz5vGp3P/7Up4Ya2X8MOl09GkjFoNAIHKBQhpDdi33l3DKky3h+Vz8LV/Ol+/LMKavc3Tz3K925P5U2FjG1z87Na12pv8+5/lFSgUWKtbt3/+rJsfkL/gAgaZ8LrnuKAMiCY7QU4ER2Vvwuu8HfAv4JkfBZgRMf/HcIYcnCD3tHJaEIrjAzSVVDU9EBbLz6ZqdIwQEVMORNrc1FARXWLtY025SbFA6Z5KcHE3oW5zF2xgoXbSgsbU003vb10/6f+z+zs5ez6///WTEFNRTMuOTkuNaqqqqqqqqqqqqoBBAByS0IEktKgBq0EqamBCAkYZgTAGKOHgTQMAoYA4E5gRABGD6Eia0idJkqgzmDQAsYEIA4CAQMAIBQwAQCU5Fjvq5KRDawlTVbsFUbmT9CIgBYKi79xuXIhQ5EHodSUvxAb/0TnylpLlOtuxytStOkUteEZCBldRsOg2UPTlRQFNXKWk7JXV5d3vlbK7lqzTSl9lyhUDGIGef+ahjQDofERZCBawadoLNBzlygt4dtbqYVO2uWsqStjfhW7eevu54dvdyrWM9/e+kyyrcwufvDa2B4O8ypL9X6l3uI9IISQOh4ZjKE4MOLUWsuSiRUgRKOHKG0NS9Ewze1Oan8Y6WgCtTzimpOkZk81OVS6ywKtmWCEUELFsMOUskaAzjYvcVymwdOl7QOwWuFhSxIMrLD76EIZyK2osYfOFDaFnxzXEmNSeoN1BB73OesJqQaGzz5FK10UPMlgEKwZdvhAm3JeagBhZKCQiMgwDAIUA0YA0GAMOhiIBWMk88MJA2BoGpUNbQrWo88VkKywjKq0yODy69aAp6IQmyENRwvTm75FYfo9Y8vF7mjKMhTwMAiYzIwos8nTp5LOlRv/WgXyYFJgGCwDRRDACCAZECgOD3zRNWvQvspFaFaFBSzqTbOtrrVVU63/+rJsjdjzAAgKcEFr3B3yWEDYIQdPEhXJRxWusrEAsIIjtBPgDG6VKgg7IMmJYHhPIsUqo6MNAoKnwikSHg2TCwqQkV/qdkIUEF7ZZYkiVVUEJVXGSD3KuZMUL1epxAWMYdH/p+T8ey5pMzff2J9n/3//1wWKgLLfxBGm1ijYWquBg8yIeOH4AHOG3gproQPHhmK0YIQWZmfrhmK8DmYxCwOALlAoAgEEF2UunEbk/zvRJj0egOXWKkqQkz10uvI3kTIGgQr13qrrJVtigN1lpMXUClEiv5fuy+9PhXS0M7FlejT4TTxKStTqVb9SYjTefl3H+6x32tVypX+UBMKlw8yVwU6gqHSInGHQQrC8UZmK+868/AmOEurw/XlOMx2pqW436sO97QUs9S6+3n9rmefL9zGzhj9zvanNbKgEabY3ct0OGrmdbPeF+5zWVW9jzHtfCkwx3S7r01LTzlm5M54cy7XyfGuhRZAYhr710ABJFQKsLljlm1uJzh4cA+h0aG4VcLrVzh8SB01Fyp1JJZeWHIkBZbJU028cZGgeOYfjhCYFQgObOmpK6taW+YMtXau4LkjHG+KK651et+QyTn4wGB0CS/4MNtuthJXkAQJGBwgmH6DmOQBotl3TE8RjG4HDEMBT2I1zWEARIZBoD0rDAoCBUAUyGMx6ES69YgmilcHurKlKwUHLDxWZcKVNbWFfuK2qeHJA9E1Xuww2js73n9+ALlS+joa+QM4W5CqWvGNTO7l7KV0vP/L+c/Pm61uYdNJQlUzc44ZCwcHkzgPDj3zl+ct4Ybn9WuUONJjard9Phi8CZ7nVJLW3Wr6Pf0j/+rJsDNX/gIffaEJrfuKAUuDYNgssEhw1mQ2u7fPBMgNgxM0kgPrPvFiyVxqT+6fEOAR0HDjWi1lgV3bVK2pSbOcxvHx9Ot01TUPcPFd43ucuI2q1OcLEBttstAsYrAHRjKQKp7S9EXTzGKKg0Dzjb7khRTiGfhI9ZWPIhZTCmaYhdz2MpRIC7U9SwI173ZhDtg2+4heKIbe5xtqkMSAsyZsT0AWKwJL/xA248OcASNEAChCYQGmYagKYOAckypkYEiGYGDMbD9QZHCEYDgOiou8smgMUm/ESge1ahu3dhqjhe1b05Ig/7qNyiKtrzQzD0OVLMMPzAOFWNROv++a5Je5bfQxMANmsai09FrktrYZ1q83lf1UrPuePlUewLAEBrmgWLgWAI0TaQ4upJqdaTpIrQTWZseNzBaB09oKPLNlI2dJlJotMTpw8ta2UZpmZssMdEEinNDxUS7iQZ0YzD8Y1Y4BqRkZIGUgjgifCAhAVtyoqp6dK3FIEEnbI3GkSTKWcQGWNoBuEI17maDFmqatff9m57bb+LdyvQi2K+xv65P/pr/V/WAQyBHLsCGiUQKzCVh0aQcAkYXwWwsTEYCwEBgMgiGAYCuYCYLBgcCamYHNKYqAa5gYgdAgA9bC1QUBkYCQA4YAU8rtLHU0jbAoQ9DImJrrWYOgA5tzghsDD0bSYDWgoyxRSlxFFXRdiPMuZutNaW+6ylTCq0RjKJx8peRATe0lytjP1Kafxp4JnKv8+1nRbw+tNx6DVsEgWM6ht/uOmwKDBraInJirOoErcl+o1OU192b9BDFm3DlFDcrtyCkypW8hNNcmpRapJXbz/+rJs6QvngAauaMRrtR+wLuC4zQcDEyGpyQOvbNfI9QNhpBwkSGxWiWU1h27Yps713PmOWPLxVBWzXJn7F38rX5Z7BCYw81AtoOEmbhkbHOrd1Jz1cSRa8R13YvGLq5blU1EWVe3xvi0AE+rSipavy0yjJ2m1xpLGpDtDbDFtK9JMDF+SRcqL/5uj9Pu3Jfj0+5LFdpt1dRErKc4oVqtlq/Z2eOUK1Q6JQbbvxBJJK+QCyAvuQjwkURaogA6cpcIx0EzDIIPrPQFXYeHKebiJGKyrBNjo6KvOWNZ1J+HqsebtKIDfmNN9Xc/OS17t21QSi1LYhSz/rLqLpDOgYcChESJE66SRSmijeXzVu66qrUDcigWRgaPAwAxHCwYaSISGZgzqSuk7JqZlmCmUjToNTTQSNVupa52tdmUpBVMyUerUIiKIt0tborUFRxQLQ5Ku1uybiW9j+YgafAn6q2EXvbrq4kmzqgWFHBY9y3sP13QXF37UFbggz4q//11Ld/Z3oR//dq6v/rf6wGIwLJthA2m1nTxu6gjMYEDleA+ACM7ETHScy5sNLYzBgC+NHtkIx0AhjRyUxQIAwWYWTmQCyA8BBi+l5v5Dsec1/JRKF3LYV6vt1GTs6fW5MIxNOhxrr/08PQNYYE11+8WcZ5aymnWntwCQhBj8bAUllT9z8We2cnpDBThzDNXow1hne1la5VuSmJN1Q5ASRPerDFhlOoaiQ5BWtDNNOS+1NRqXSzOvVub1N1M49LJHId35JKqedjcYlcvtWJTlO3sLUszxjmFe/K5u3T/buZ0yySYZmcKLGp3lSk3MW7tJbk1DWp6LGn7/+rJsSu3mAAWyZcVrlR7QLQCJDQSvAyGlqwWt+2oI2oMi9BeMTNmt3HtSkr2aSRX6GYluMrv9lctm8K9jW6vo8P70Dj6m25PWcs2QTBJVI0AQZrp+DBD2IQPXNusotoWKDigoA4RYUd2iZpurb+rb0ad77VID9y7fu1d+Qt36rhUAQCm4CAACoAYvEuYmCkEYBAGZhalNmJgCCYEoBBgDgNCoBoXCOMBQeMw7+izCIFVMA8GoZApBAAwYAYUADqRbZS1/WyMRgVy3kjMraS6rNkEUIfuBpUzJ0l1vC4TJ3GfVFVxn8Xa6zLbS0cbHcGxq4by06QjB0yPO5IeOReYtyyL09itL5LRQichVWmx+LSvO5Ul8OO2sIYAgGYaEocxGmYeAsYAAYPB8Xrjlfl2VXt1fimdJlnMb7nIbOdPSRznZdObqYy/DK9W7jLM5zX2pHVuaqWKtStOVLuM4UApSZ0E3+XZnLIpsJwWHWoLAYJQAGoocABgiJhEATQMwoKKMgBzAFEsopkAwcNYLtREFsIQBeh4mtAp+SyyNEpPU+RQGwxiwpOSFu+KEXuOij2yD2rqWgGbMabNf7vbR2TXX2c0h+tLuw3r9wte+sEkInICEAEv426TmiIAIAgSmDMOKYS4DocCoYDgAoQC0YHAHpg7hbGqUwQZH4OhguAJhgGSkFFkBKSzDblJST/Yfl16MxCZlLawrJ0YEe1pCvnohOEdeF+IcvQ9GoxBEq/lm3JHDkeFOjYauM6sDvxinoLsYnaPVWeuRXKxat0fcsbNi9jTSl2kMTBp4OkpMDEpKUoJQcGoFtVbXa+Gr0OW6tTDdNlX/+rJsOoj5AAimeb9T3R3wNsC43RniIR4ZvwNPcHfIxILjtBM8RDmssbfM6/8rUmWGsbn2Msv3zurO7Wr9Tn4Y8v24ISh+7qvUq7w1tkY+hgYsUrRRZaMHUTpTKW1Kqra1UgaYtBOagIMpPob0gRZBNEE69NLY2SVFA4gIUjL3gEWTRPAMey1Q5R0w68mgmxQ7pUpN1FuKfzv/6P9Ps2/q/eoFBwCSbcMRNwLcf1/4QHAUYfCUTHECgMTSMHAVMQwxMMg2O64+NLAgAwlhgCKDmBYBoJFzvpHHSjDrS6ZrUNu9JHLXU8cVsX4W3Zp8ZeGGmuVH6ch7ou6VM4kq/9fTxzDdJBAGtnveTtjO7GZ29Yyr/z//u9////9qRtwASYnBoBloqBQciRRoIg/HfLt+rjVosbG+7/3utp1CN53rcxeJc96jWUtLC5I8q7SbR95iBMCSZzwstdQtMUo5WzE66T2/i3uZxuvOuOr0puVY0w9mpCbopU1DfZEjXZaZ0k8Tdh5KwoNuKokXicniAiHS6QGwCc4lKSqFLDBPVPFnBxqrdU3x/yT1UqdiiOqLgFyvQp4cj+M0t0I6zm5zHFSz/iYAjAAllhCwtKFAPhCREYA4FwOADMAEAgAAXgQHAwJxUzJ2p3MOUO8wEAQjABAbMAAAYswEABtRaHRSi7IL9PUoLj/Ukw6FE6kAYwc1Vv5PlNPdHZbSzz/v/D9mll+reMoWz9NFnyNzBQSBPs0l1mrOz17ti9NUduzjS26ftJrteNbiz+rqMNGc8ociZYBQKDxAAwda1E5I+9NLI/XtxiMx+7P3J21a1qbyys8r1rmNHU3/+rJsc+3ogAaoaMNru1zwR8DYRQcJEh7p0QDPcNfJNQMhcByYSOP9xv6n87+N+tYyr6nNfy5Y3ubeFIKm3+fc79jO+yOxg6z14jOvG94h/sG3GZh/5qEy7IFW0zO9ts5H0Yhj0gn73qGAAAMFtKqMJHcg0qduiZAfuqI6DhAVYxJMCizRQOhhzzNz1kWjSwvgGbNZcXjuo6TpObWNWihCI7uJ622byJAfeYQp5BgExclHt6Oj46oEiIGWX4QRJNl4/zCnDVIYXiIEFAAQPAgMhcGDAoITBkXjcbdjLkOjBoCUHpC6CmrDmUwO4L/QxepbEzclNi1E5G7zgsOZKpW5zWWWOX2UQ1uXWp+D4IvfreO5VaxstyPtt+pDrCtYpprlyJ278jz/9c///eu6ryh4xFMfnZnDFyCbYaHk1Pd3W1nSVZZbvY5au2kJrUZlboSO7KZsqURGnmsaSNwzBU8mZJAEaIiLg6TIx4eAixYIPbaHN68sd67LmQgQYdYm71xpR7jCo+wEVTzrZiRfRsgQJn4G+zT/u/vsX+l232M/N3erT/+wOCUCzb40WOOhuJAQDQSARgMGZhGZZiYA5gOCA0C5hUCREbwYRB62MQRYAsLY0BidYXBUQAMh6uR9o9JIdcaIsvhqXSmLSxVaAYk7ilyq7OWXqyYSx7ZYySni96WZRpmmtfhYfmzaiSHUy5gd1lU/LpuMRCWVqWw/k1I6f9713//94dvT78gEGPDAQyfAoinmgGf2CpbTWKKtZtwDH5PFbk1Lbz543PcxmefDRGev7V8CAnc5at51jMOM9fx65lhx425BorVJIU1PSamX8XH/+rJs06zeAAYKUMPruVTwLICZHwQpAx3ZoQuu7fPAzYzj9QCM/ONbe4MdmbmzVYj7Tuk2PF3a0Rif67ZFo+jMNjuQtzvUndJi6STatoltRVMgShblPRZZc/l7k7GnqRaA4IodcbZ81/Z3HsU0ofV//3P/6nc4r2ML0wEGwbLdxBUk5/KrbKoAUOmNoWZTBJaQABQwmQTGBmMC0LcyymAzEXB/NsqMiNAwAzRYyo0HAFN2kRGaf9pLbOQ9sSeRtFYnhgmDnGZfbjTfQM8z1qLS6C1NF1LAtuymngTdzD7cXkd6qi4ZLLDDYXClVzKM08ZsyXKSy6MY71hfy13//dBBayB2iY/cYdSAhYutHpCz3NzuWpDEIlD05akUxQRmzDEquW8tXq9NhSztixdqZZ6xucs3+02qmWVvP/mP1rnbisruayxxyy+gn/tflWqXtWObt9zu46u0tv6e/et52+42O4ZdqZ3+TdMBT2Z34yNDZvJRllSyRyREErmlCBfyZjuEuSja53erQiwqectNg9Wnjt2vmP97Lvf+2z7Hx3R/ezdYEO8BAEACLDlwtCHgEDANAGMNgQoxVQCgEDiYDQCZgCgDGA4EKYKo7Rn/cuGOWKQYHgMJgCgTFQAMiAPFgAVXL9dtuq2HTdSUvu8c+4czNz0PO9BLcFN2AL+kN2GWzLSfmYeKUWW+lkN2e1rlhTCEZxgVA8zrMQSAN+JZTVKSFTd35NdvSOWyq7HI7Uv256tYnuxtvEDxoWDiYKwMSAAA5US2Yajr7SeNTM9Ov+/+4dk1HEN1pdNT1zt3C5NyPCxljjO8wwmpVIt2LGrl29anccb/+rJs1Sr8gAe7aMHrntKCMIC4zQ8DISJl6PrPdTfBSALiNCwMgKY3L1eduKJqtu1bvbnOU1Dm9Ew5FMSzJppQQMYmgM6glEwlZBRk36zzXcT4+O4a3wyK6ScU6j1dtn2QvmqzaSUkUWgQXC03I203JRxJasmSdBCqCJuKzyUEhiRQNFBCIVr2g+JCTw41k+UTljsIyi1XkgvXDiRZLrPYRJpQWZeYUIU2iQuDSCi6Q04CoLBW9iWrAJcFhMCO3YMNJOxcpoQlWIAUHSeW056SQKCUwjAowmBs5fXkz0AcaC5Ql50M2NPq0pXdstHxNQR6MlLiEOpyuHGMpCYOxNLDbWlIxLNzJ9cf90jqapFAN8DHgki0bsYFRTsapmZWPba/WkZmRGhCcAyakPSKgUDiHF1AzdOpy46akXSQQdJ0DqZ9JJObLTbXrSVVXd7HU2U2fJUbF2ZSKCB/syNJlLZZs1XTXeyrsmfOEk6P0WvQwhXL9Mqs6BZJDJWPamvGM7i9DW0vWR6r6k6HV+rs+9Xt/uf+/oqv/9y/9QKNglv/4oskb+Eyt8JEhAYnioDj0MGwHcUOBIw0FgwxGE6q3U0PD8yKEAw5CMwWBAwOBAwDAcvgnO/K+GIt0VcXzVemjYdl13vcJsrusQ1ijMhXImNvVDsfook0aZjEOsHptfrHck7u82ADVbU2mQfFZJT9eeAcY1jM0ku/WP7x5zWWs7FPLASBnIihn4OAQ0eGVMJLTWpZayxf7OXUdexLrmOdB29yrLZ/GfltXVLMz03QWs7n4V7F/t/HOYsVJ6kv3ZV8zQwGizrmOedSxSWcUQbPwg3QNJT/+rJsnQDcgAWnZUPrrKRAK0CIiQS5Ah4Zowuu7NfBGo2h8BeMSBXNvbp7zKd8KUzdKA0ki1GW3I1FinIpKQgAJpO/Vqq6RwjoT4jD3OmR9P53QymcI5D39yLvsoioEa48ixuxRWwkn1dVhjjxOWmrVJImLU3qEzjHlFm9EIJW8pR+x/6FBQaCru3FESbWaj1u/GhAAaYCoX4CBxdUAAGgECYUBJHQrhEt4YAoOxUA7GAEC54NABDgHEW1m2Z7LjiKYQfK5JHG/Xi6D+PxPOpDK5Uwou8VNANRjj9w+11hTkto/P95j2Ce5SqInWPOrDTuwbOyuGZVKYpUyp4pFLfe//61vet3Jl8BEvOg0BwWYKyQkNdbGGoBi/5wxuPSmi3eyp8YmHKUYay77/TKyKs/tbU2kMrvO3LRzaCYMZwM8pfOf36tNtu7abuXcXoblKQdR9Q+cq8l2k5D0LTjoAPmxV9DCEvo4xwlmTSSRokBFqCA6HkMOvYseJmvvUbIijwRjYZf8dursOsQ3atWn//9ur/21eYSpG6ukFhsGOb4NZFO9iWqaAJITKsU0MJCwUYOKGKGJoJ8YIgPJm0oemLcCaaGKA4ZaGIQUus3Fnj6zthyY1R08ufm6/iwCsqdTWi292WKLpZKOQQ8UKgpq8YhTWrMhaLHc8f3VlVrlVN4ztHfqDW+v7qxrGM0tWnsRTWvs85l+PMM7mcocsEChzRaZIDAgAJiZK+QPfdePdm3i80clEYn6avL5vvMatnve1dZc5fs0tzL7fKS/fz1+Vu9bz3njWtUVu9XVdTYX+1a2N6r9zm69LyRx+//b9+3bwt5d3//+rBsVzX3AQcSZ0Jr2mTwMkCIzQRPER59oQet+2oJOg1g2ZCJcEvbvbF2rrc/YsXatNkfmMtJ+OKIBmesr7Zs+HClAD9cw3EAbIhBbzlGmnJxg8rKpvO0c0T7CJQQiEKllnCz1GSzmbzLZaHIcZoN9iaRb17z2oMMaOeoo1c/YxzyVzFvtazVucx/Cm1SUA2Zgtd/zho65c0p0gihlIYwiEAOI5RBJgwnCUxqCAwhBs44YMzhA0BDgEA+XwAAMAUBVYGV0LkMup34bPSP7OQ1HJWxKmdZokXfifTzf+HYlukuuFUgCZl2V3Pme+0V7O4xkh2ksYr6jNx+KGKT1NuJSGH////ndd1v+ZSkZIP0sHVMZKzQ4p7X2jN6XYWash7DkenY3Myqhgq8rgYJQgMGFKIYx0fpR1tVqiS20xaE0IYJCuKmtVS7JMEUVYgyMRGNWHxiFiLEWeSgrpsooQcV7rKqaECpvpVSMihBt8HLwSN1RUd3v9eue6ndxWRGvFFvqFjKmcWHIIOdAKufu1dk9nPubG939F+fFnWXP99/pAIyAAAYBVKpTEVADCwA4gAoMBUkYYAyAgAZKAiYAQGAFCDMEwfg0HfJDGMFiMEUG8wEAMjAPATMAEAUFAMCQBa1YO9ymhzd+hgeVvJFX0uuVB0NuE7NhSVh6KKahqAcnHcSMQc7/a9Sg5GVA3zhxsoiCBrZloDI23lrm5+klFXCZqQJQ0lqmpbdWNymVRz+TDA0BBg86nKVAYNAaPZMIUzLdSd7lZ19eVVNQ7cwxxvW9YTESrXssZdZvVLHeY5YdoLdLN2pjPnL8snbtuzK+WKdfP/6smwSOPGABqJow+u5RPA8g3h5BgIgIcXm+M9w18jygmL0PASEsWpsp7GkwmqbKySJqlXSJImcaT0McbBAQLAkbKB3TmrnDyB6Ls6AmiREhcG1h+i62bSYDO6+qQEbhIwR4GSm5G40QQYUsBkm4+SaLHb2qGUHBFcJBILplKT5URXJLNWryqVtc5zq6PMUY6aOe299rKdViJ5O3Sq+qgTAuloYZJWCfjTJEfkSTA3AsIguCIDMwFQBkFTAHAgMCoJ0yf1PzEOBnMBsBAtbDygqgz+w03s8/ED15mf3Ozsulcji8Ii0jbZmCnLGZ2Zh+B5ZDtPKnn+fiHbmF/sQqZ4O2a2ON+7FHOy/GJXL+HKbLP+f+v/PWH6w7eiQUDTggwmHWYKebXOO1MJ/LPtjtuvOZUVn4HGjLaLoR+8yFTopyIW7EGaJFBW3mZhXA+jepo3J9KW2kxI7G8K7s1wo2rNpVVLEi1DX5VLdHAyPdbhT6pvDEd7a5a0iCt2LiIml2Qz3D037H3hkSVvC6GtUG1MbGp/t/bH+3/d//Z//+oFBwCy34UVuMzqwpsktGADMCSXDBFfUtaYVgETFaTD8enAAPVuTDANAetQwAAxDMuchNf93XZkkjkdl8p6kpIyzXHaE5vl7IMKMuI2OTyiVuG6Nuii7gzsMd/nO0O8sodGige2Nv3Tx2RwLL6R7spdDEn3rWePM9Yc/9bpIDHGDglMY5AIPbixcJfuEx6KOBPWoxE6d/JXTSibnldBYmx48co06rzHhZi3zGZ66iP4NmPMe7fAlruJ4OpqlC0fD5683fW7UpCZ/vucKsF9iHvM71zh5f//6smw0AuoABpZiwdPbRPIsgJjtBeEhHU2hCa7l/IExjeI1II04DpEkgvY/rGmWr9jJGOYQCLcgmoyYekCQ2pXIk020UrrOAlQsSMN0Ur5sKoUbwltyGI5DOHaJdKoJ2HNyKxdBBx2w+tYyMbupdLjqpZx4iFyITWMKiVNMuU4phhLTb5hSMcpMQU1FMy45OS41qqqqIACAAKIkIAIIATiwBAPMHoX8wsQHwMAoqUKAIGAeDaYSg0hs35dGUwJUYPYK5gWAVGAuAqYCIAYQAAg+sSefB/4EoIbuUMWoq8SymrV+iiEBOvD0TvunHopInctTU/Y3jSa+8tqL4tMKoSNxn0iCcAutX3b+ctaiMuqUdJEaezHJ3DOxfl30L+Q+ukwqDjtIFGg+pnCmHV9WZm1WvV5jVeLY0e6DCff6tAdqvat8wyuZ3ZyOXJXXtSp/7UpsSnclsxjc9azma1mtXl7xq8ppXTWsfk31bC0gzrJHbDcZFmrkV0lpYw0pJyjNL4i1WyZ8B9roWIXsIkBpk5eJA8lJNMVJxxWqiJ9GA2iH9pxtppPtQArCfE4JhOilPO0SAih+XckI0HQExYU2jjqnaWnGrKj8EUyvf+KJKPWfRaFUPs7lVbl6C2W6q0pjQkZQrdvzRY5Kr0skVWGjAwKiIRmFA0AjAINTAEVgQJZlPdZh8F4FBJPVuDqKua7A9eJTj1yy9DzsUlzsp5TbeOH4Dbi2eehytLJA70o1N43pc/yLqQWYs6RGgeLIkkTZPFw4mxuamJRzn6KvrLARGCaA9sZsKBEwNjRKamhfQKBYYuGNk0hRjhRgphaLSL0WJJnUS//6smz0rO8ACEl4PgvcTfJBI0iKQCNOFhWPEa7MesjBAmJ0F4SAlYfx6meeOSORNmdmaRCpUVvITHJJdr7izGwIOCroQCTUcjaRSslMIGKFqmmU7b6WA2RKjgGaSB42nWeayAdiO/o7i/dv/d+rd6u7KfVVBRlBtu+NEbbVa8oeKIjgDAUsgYAwUA0wOAkwnCYxyDcw7DA8CiA0/BYFD6TA0lYBAMFAJQOUfl6gkYd6088/Tydm3Xjaw9UAtIVvcBnrHnDdh+pTK5h/L0fft4XGjO896yv3+VVEjAx48+LOH1uz16s7eVG7Lww9bxz3+t953ufO3qdmgnFFkClDnSXVuvjlvLCkramtYVLV161EqxykvqnoEVKq0Ud39bfRQ1bq7ixLdcfwspTqAhBv6eYVFHM7Y0Uv5L7/utLKTnO5elmq1drZUtOIHa2WROM3wUdrwVQvm/D1/gpNrJLq0kWrTrBhTUw6zUXln/que2JuKaqM+FzwhVPpM+ntsRozlq7tlIrq/8W7IqinopS/sHUQAFBZL6PDQSWbDAk6laG/UoBzAQ8yI0NdVzDyGKOivDQ0OBHj02M04mMrHwKImBAQQBp8QMsPDazmCySWunL3mmX4VuatD8AyO3tvpQ49PHfiUpt2KGWW8oy+r9yuNrEhzFowqKnI8xduMNRpsbckl0Zs25Ljbl9HdhiHbWNuGccK2UddpQ8VjjkbFJ6EDxMoW6liTX6l2eqX4jjdj+qWXRWH56fqUu34lEifKls36vui6VmFQi/K5JTTE5nnVt2ZBMQ/uldqhj0FPUllDMO4y7upRL5bLrcul0qfXkNTWF6im//6smw61/+AByJoQmu6ZPI4I3jtNCNPI5Hq9C37agEQC6J0oIk8iMpuUtDUivLUbl9LLLsYxuwdZ58EyaW2aW5UllmU6jEquY53oRM6tx+m7ytlQ0NJbsWZVfnakjs1ttgERNtOIkACqcQodMQ7uWefsz03mTwNgxLeFmrtFjb0DjCKGoohxiG2XBiZKtF0BOexjE97HsU0dzahUf6zyTVXYjfYCZjDt1/GGjlNZdOnchNELiWJASg8hOJADFQqLAlmB1xkoXjAQDoBrQUgoWtyXSCJTdmX2ZK/EonpTbnc6eX8rUDrQTJ4nKoDpcL16UxGRSP//X1+87MGkDOQNTU3YtC5udm+QHy1S9/f///r//Wdhww0IMbVvVa5E/KruMlyu09iVc5K87tfLo3pGswx4JRxp46hmS0tI6lf4hUaVvDa1fcLTTkuiWYjjGou5xWXpH9I6GEzpY/7fVcJZLLZbUigzkKQIRHGhMpTRtdiwHm495thNqqQZ9L/92r76x+q/+7f/9zU6U160sL1BJXA23fmiRt0aRtVb5UhzMOCfFijCBBMKAVMVxAMkC3MNRsO2PMNLxAMPAPDgOaCBgKAgAsuL0q/a6+sOu/PyCESpTdlCsMAN+sxTRRmpEkNqWKrEsy2nbdk68YuoLE2f5Y8sz8eubsycIM5q7VlJPbNwQ71BBV+HOvLyMY//OVM8O/rnc4kOHnUomq6RQIxWVTMqzl2cU3amZmcpKDGRVC4fkQgIjro8ZWq3CbQ/dK9Yl95bXtvN1hgZYqvxlxtcnCJdaJa01jsLjrX2Vucpo/q2DT2ODHHnpxW+fQcct0o24Xrbv/6smy+7OeABcNkxGu5RPAxwJjtBeEhHmnBB67lnIk9LaL0sIl9TNpmm9M7+wZak2Baj6tpgpt3SSxoEu/rYBYhLeyNNDKTBPTzMIi4SxWZ9ICYrNDFRwT5yyoe6Oaqvy9LbotKv/VW/ZupKb7//nPusllXZpT1tbT6Cnv3kWoVN9P73Rrx/nwYiSkkiXknBRqSMMiUKDOTQQBBAemJYMmJQcH4smGxQTGKoDhAYFpzAkA0JDP5xpzpuzyP27NymhcJ+xPUa1oMX+IBAcDWmnSXzmsWtvpXf1TBeT8yLX3+cjtXKs4JyhzavPAk5Mzc7Uj0RnYrDM7n+952+43Ln95vsrEQQ5xEBHFhCYEyeWbo9U0IdmckNJSUt2Q1s38vltxNirftJJqRkQNR7HvFzyzpLk1Oskgp3h8f8oZF0EKBurdVOMqax3SQWhZhs7glKoJKtNQXVZpoHyV9or3ztLn7ZphsCFASKyk5GkkkCWY5zVemiHKm9NKJouyZyaNBGVmExy1FykqQMfYm4f8ezIS1XjuddK8X33d/eqcNKLbNF//QU1KHbt+sK3L96Xq/g1MgAjkkQq9IYqhWYDDUYAi6Z9baYoh+YKBYBQJLqAYAAwB34e59HKkz6wRCKkYiLo33hgZ+YGgprTYEylTwNBMsxgqYh2S5PTSwY43edxr1rfyxRo573vidFhGrj7WdyqjlMnkMOc//5/7///f4qHAb9S562hsWitHVqTl61Hcp6vTTM5UpM5JQd4i9MUnjKXGZPx8llNJyN+cQiJgXbHSWxxrzLmMtNUgfOIviuTeLhzcNiuQxjCRMsQElSP+lVq3gCP/6smzSpPeABwhnwVO6TPI94viNBeIgGdGbDa7k08FjgiBUEuAJAEkRAsYnD4hJIsFOa0ONv9//N3/s5lq0ZTfoND3P04C1b5LesmZm73hP2TDv/h9H/890wAmXu73ei1r8of4cry6Zdasq5Y03u/+lqvizen4h9fLet9rQlQnbQrbv3TZJGaWfhCz2oixbA5BBQCzA4HzBcODDocTBMYjYrhjKEPDCIGS0zkvokSX6Xq/FK5rS7M5HZ6jdSuxp0IJbPKpa09uJdps918u0LQ2tx11MI05L016ezjOy2gvzSjZlLz5yp/H7lURrVJydtw9N0VJjvLXeZb7+WdSvODIc0ZIu2w9Elisvlli7UlcdrR+Iz1eNzf1JQ/dAQ1Jn3dZ5A722tXQvNbidbRu0TS0xONt5qqcsdB7Ehalho+e1vTHjj9Zmq9rrrpliqvPdqnoqnnG4rMwQUxd6XVWpiRumEEBlsqOJpJU6n9jSF1OAfKeSSfnZ4C9Ic8szQm3zg5sVCIobLyLrwO+KsKNWFxy1tfZe/x7OTq0Pc8foRotTdfpOxYn//+sJpwCTb9YVtwFSqYJlMQIQFEJImBgCqDJDBgciRbBw+nnY2kVUkQviwEKXlt0OCnbPpe1PJv2EN4kQn+1FgDW3/f6ei8ua4+qRqJbAoiyZy3gaO4jr13XbV4VS0u7uNaN0eURTaM9Vhxu61Z2o0ao/sRgOFxVyoYcPu/3jnjhrfb3bNMlqHcBoqrMyRpMilkxqlp+Ps+uFWR5w9CIbs50Y2rrAoRLolCtzXepURnVmoWxS6KpbCRJIeM8YYyKhgYcjdqSCtXLW+Zsvjf/6smznA/qABxZowuu6ZPBHQ5h9LCM+HQGjB67pM8jTAeO0EJwEtkj2WD5FOK5Jt0zHZvmiX8YENHaz1/Hm/gZt8GvUi2a2y2NJFnPQQPHopvvInBlbiSHsNBZjCC9j1V2CtNWKVVHm/219w7r9f6nbz5Ff9MXZsVI5RNtv1C0Vuw7Sc7+LrMAgtIgfolKASC5gMHRgGGJo9FJjODphYERgSA4KAAuAHAGuSD6ruQbTPrDPyCw7V9u8AR2oyN0YChti09Pdu++0Wl7mWIYtRXPdzDGUXOWHjPVyB4469NKL8O1pf2tlGuVda1zv67h3dSvcj44MZx6xIQxZz71avG7mWFXDVeki1JuNyyTlOTueffpJFDenSJwImTCfpdY3t3qtzCUbh617GXU9k5TJvTaZR1dalll4zPj3clcIsFf9JahTmv+qZTciRJTZtVs5+R+UPnFnWbDagEBiQbqMB4THASJKeEwsTHFxOHQyWclIssUhiG5RTnQpFcgUjAswGeTn2tsbhlEmGDNZepVYogh36f+ZKctDsu/NFkkthtYdWli5cIwPArDB7AAMBQBEwHgNzAdBCMBgNswCQqDEoWeMH8HIwMAUwuAsmmpISAcRbLcxVpjpvU8jpN2eeid2ZaTAiwziqWrNfBBIRE3GWK/csTkZYy5S9mDYolHHow3lNU0lmbmcsPADbxa7Lo/HIjKnalUP1qOBoHnMLvO83rHWssc+zjOhL+PHl9xdpV2VQG/977sZdunjUaikHPx8sTFJIRni5x0fFJtBgOyQcOG619khGCAe3SK2h8OU3q7n5fMk50Qg+bRmkjslqV40eGRS1P/6smzwo/2ABkplxGu5NPhSwphpBeMgIM2bBa9pk8lgGmEk0YmwM/YJ6W8LsFFFROJcKVWbvtQXgPYB/eQEPhM6/3C0isuRZE4PLa8/qgAs3yoqtqIV422Vvc7e0ocmRbLfgW5Rj37GyLjchWdqVslKbtKz90Y5mfSx36jdoWA8X0piK5WAHZwyNCDnH1CNZJyHvMnnpPC6oXFTJCXjmdBcCpfcvQpSXcXb79VRJduQy/zy0ANRlwMGLXGMAZlpAYAAn63YRag52KBVX6j7YJl/qKRWYFo7k1PVbFiFZ8m6ktoI0xehnc52/E9Y17FFPwP/759bu+SoHhyKW2eQ/HL318JHO7o5R3W+Zf+/5nXuVciwGKmOnE2KvJVsY7r1rFbDli1Y1KMfv40ZfMQzrdv3amRhjUdjrLu9czev8OhW5hWEGfcrzBfwpBKSFBWfzVV0BbBoBFGs311xVKKbmH3Mebe6jiQBGR5ZKL0gE7qWjc1KFECk2Lm6dj0qHN44fYuPR7ikiXcF9yXz1q/Njn+9b9ISkoMk3xojbgyDk5FDYeU4MLQHBRYJDpIGFYRmOA0GHIwniW7mnYgmHgIAYIy0BgMBxZtei24fZbKHAcCBXVhXtegxYFIGFQ8ydATI0OiXZcByaKljdFBSu49Knogxt71Xn3IdwyyXye1kOtKcVyozHINi1FQY3JG16n/WeFbWP63rHv9gQP1IgGQPm+tncupY/aq0U+7UQuxD6lmZOPZJCKSeKzagvA+sKGXsmZGobCCS7YrQTohYakKj6oNqpG/BSZVVBGSkSfkDLVllTJougWQnESyBabkKXjq1LktpHv/6smwpXeaABXBZxet5NPo+4Ih8BCwCHamjBa7lM8k0kSJ0FIyEbNbyJU3UgdBUdv/rEjVSLjjckSBBVGpgXLvrLKxKntUPP2nJujkCszaxCR0I+g8UjSQEgMNiQOlpUHUl1hNLdpUTOPPWg4TUVfHUQqxNGOuA/Cvp7UrL7DjqqgQ0go5blC0U3N5kqlyyNtxAEODgFS+JgBADhcCYsAziIN4wmXLDAUCaAIKJgAARAEA0wHQBxIBgaAbThh5tV4Xrrnuij5Dspsp2MSb9h8NvbSigh+nDpGDobqyrnfhojtPIzpuSpKCtfp5x2rVWWqHGZ9sOfh3s4n81PxK3uHZ3K9R83docLGdy/jy9KGHijAKh3UZImyx/5+mjec3EbtS3S3bsXqXa6SowjTLIsRNEhBZOhtDuJLJUTU1i5/o00oQlkkXeLxXm1GmP4KRJ1byUFWaXKLTUQNI/rJ2SpA0ox+XsyZfLwalFN2iNn4JSsOd4+JmwC0gW9VW9KAodKV0c7y5JIPg0SWa5nzVpsZIHcLjwBacVPve1HoyaOxpo4mk6pUFqzLm6SPLeOsVqk1KecKoYlrewbq9tKFBKSByXbqiRt9OPi5rvw6CALDAHQyAoAGBQJmEoYGDAgm5tMmXQSmH4HBgItTXWuprMum31rUjwxeKwTLZZIWXz0mcKamX9gxkkN2qVy3gtZu85D+xyKtw/KpuvLL3cmjmBIXRuORfKzDFJclEawlN6VcTZFKrVV0CLA9wwh1k2gaWOmCzcyNThPHVmx4wNF4soGwggSCViWnlthPpq0UD+bOOLS21RZcrNVUUg5RcX7/w58OPrXv/6smxAd/kAB5tqQGvaTPJIQ9hsHCM+GamhC67M3kDhDaIoIIz4zdzmfl3LNlW6NSz4lbe0o5KxdsjGhlPZRxNxpFI1TcMzvLG9Gf6zP34q77EkWhTNsa5jXTRu9G+3Yct0a/HRug8mJGu6D03R2dT/Tt99FFVMQU1FMy45OS4JW0O27dRIlQ3S3U+pqHBwLgUBzXwwDQwMwUQhhCB5xYkJm6AoCJgHBeWgCgGF10GG6xhy1bqGITszHKvFYkwYbabOuPJHNkDNH2bPKGirljMLgKG24rxl0HSjHda5Q0+FOyA4ytzH7h6zuUwXHpU98aiDqRp969b6WWcx1V1u3UjcoKpsYPOHDbQIrP0s3OV7vL9akyxmKsU7kggRjWoi6fR1sGIQi5ZOETsGob0nr1NFJzVoy4fFCM/MhRruNnYyVtOD/JlAjO1OjrMByCUnyxx+2Y+9pc1Fpl36YqzHQAACIsYPmYIqZOf9VgW8OEdNdnaLKt3Lt8djs6PWZKze3NHX8sPxV5ez61+WJZJpmLrdvN74q76v9Tlvbu8mkM2/6Ofxdcr09icztJvRHyMnX/7bjmqojJgFIgrJv1TY3KY1EHklT4BcIlY1+F3RgBgSFZgINRpn5hjUIhgeEIEAJAGieXEV+zjBrTgS6GZXVwoM4aedrtllFPFIZZgkS7LcM4ZgKcibiujAjVFuvtu3+VeYwzzi4PNPPhFa1BWkWdy/D9+fp5dzPf9uc3n3lrf35APRU+JVEoJjUmp85XBN6ll0c78cs2JfSpF56Hzh+bUVn1oT0dVjCx5swbiVuur1VFMXnsT92pmsEJ4/KxnIthvj1f/6smxxgvoABvlowuu6TPhYoJgVBCkCW6GjCa7pk8CzgCN8EIksbs3LTFc5TV557X0Lo0OHIrLGbUu/i+2OWKzzqexlppZeFMHhFVjkkKRSUp7UoVYy9T+i7D4xLd26+3qq/7ZOsz6v/cKNb82sU0a/q+lSBLZDsktMTaKjlE9DTl4vkXqRVLjAEAwGAFmAaBgYEAT5kUqjmHMDOYJoIxgKAJptDwDJa4mAFIgAnPS9aYzqUPm5kvgR2YFguBJfLGUQHHJGow2Rl7LZPJX+gWfvx2ncq1lhS44RHdrCGTpCnlb5ktHFZfEKbK/bv5RKBaamuXM8qtPG6tr5mOQaSkDEmXqol/WqspfuXyOGKkVxnKS/Kb9eSxtehvXMOPHD08KUohQXz2xYUQFOjp4PierL2uFllMewHtXE75rPnii6HVh5dl8rz8KxpdN7w0O3YnmLr9xQ2+1Rlxqyuu8zMt16WsmZtL9d3/p05u1vtutvw+AgAG3hjHV3bbZEd2ZX3tWnmadFPAx1hia7lDo9maDEa6cRXLk2sMWrhNcWZEJBmvViIW0MJCYTN/sOsV9M0dS4mVLFM7KIRhVGDAu9L4POFi5tm1iF1AUnAa5d1TGm4d9srG30cuJukyFOESCoFDyDhSObCQEnyIhRIgLXoKAEX3LqLBxaX141DdqU2vlkBxJ+nbi1NclTJlQzcDw0xNWKGZTEoCkjxS+HrNbv5XLlmqzI6ZYtRRagpJ2FQTy7dxbWKyDDueOsPy3nj+M/OPuJbL3eOBKCmpaavK8YxGKGkpc6aM6u20SkV8wmZStzaFEOeSCnNJTuM1UMVKRt0+Wlv//6smygO/+AB+t6QOvaZPBWrSfFCCLO2pGvCa7lM8EHAF9wEIgAcz9zVo+o0jt/ylmIKwPaksoZOKO8duMIygu1Ny9wnv896RRzj8WZI06WCnGkz1NdIOoSiLiC97hRa1LoSgiS2HTx7SlS1K3AVCSi12sF9KEF1LyYcMm1LGF0vdpR2imhKFrVoMmqlD1L6EpqTEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgS0xG5NlFGlOYyFhHv+oY28XfcCAQYFheYKCkbg4sZVBoYnhqYOAsYFgOWvWI28hutakuMYh2juyixu/8ujUzAj5MbfipVdR1oHljqunOVWRvRF+1bWW6W7lWZ6FsI/Yv179+9Gat6Mz92hnt7xsX6D+XeyuznXlSHUzgCUNgwwG0nFV3oCz4kIrTnAjJE8JVTbB1Y7ErTSaFcudIYImWloygy030XWWel0mkDoxTqeyaYltUlVXS32/Lx+rJ7BpvDdSu0t2F9qD7cSXg4JeoPOCLHcfP8q4zKqqSLHhKIRh4qGiRYedWdBoqMOzwKiEYexKWHncRFRh3EohGHsSlh53ERUYdxKIRh7EpYedxEVGHcSiEYexKWHncRFRh3EohGHsSlh53IlVckvyRYNOQTW3dwNE0GEqV/S35JOucnMIgHBoVCIMzFOLzBgHQSDRAALSIouNljXrM/TyGVzVfVh6aGOz+NuVR+6o7DMZnZqGnJZXRxaE3Za3elq/nf1T42KVuBmWwJujmY5jJu5VZPb+V3a/fyy/Kz+s+8wtf/6smxTMc8A9qtoQmu5THJXoAd5BGMAF9mbEa7k0+AAABMAAIwEKChV7GxQqZppRZmcIxViEprUlm1LtSzTpoLIzjMg5itWQR40HJ2bvp08RSK1X7JL7Feb+pIIbWfZmo3M6Xj/62t/nd8srfhABm/2dWquTEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoJOYPXb91pFRveDDXxo3ZeB/S8JhsKGPhmYTDB6K1GpQMAjSPBJXhdRN1wlHZa/kCYO7Dzu5UcZlkCO1FlHWCtxaUzGTsjoYJWDbK37K2IPA/C821l3ZnGY7HrFLtrZkcTPOyx1ZqHmsSuITjeO+6MqrtSuTtNepaOkoO1qHlE9D4kLjfnsRal2rq7KKPOOwqTbsVO6wyzeTEsmOb1gmOIxG+GqKk7CNoNQaTkxNeCHPStU20s/M8F4zJXNQelVrk+LqEOMQikndXdtLNx8UEFUf1kwkZWoXoebDHqUsN14P33XAtMtuGpatNHghAF1XvMHgMMXRLMHgwOEYiMzgaMTwTMEgAMAwBMDQTMCgCMDwDS8lV5/XVR7XA3VcD2sAgx43ZXe/KdyQjxJ7oE4m01lT1ufDSi6PL607M24PPyM5z9mJxmxL4QfgG0BojFZO2R8JZAT+OXSPg1emsz9TtbH5dcr6l12bsQUys4oRKNu7svA8cxGYjH5nG05cSdOw9Wcchh2a0KqCjVn1y3ES8JYkNNGv/6smyI0MoC9upoQ2uYTygAAA0gAAABII2jCY7pk+gAADSAAAAEq3jgttF7iutueD0PxCNr8JJSXEkyGorqz0R2y/AYOXp7CEnKXMsHSRgsEMcnWGnSoS16Fr3Lk0CJY480XlrkT5A+3ztgFFbf+BBCsCTlTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVS25BNvf3W0lDVmDGn0EIn3yacrcQACSBMQhiYYQ6BQbBgNDIBqAJCJ9rNhqPOXYc10GOu9HaCMcnZdEtK/f2U4MGj8SnnUl8dfd8ZfLb9LAVjCzh81UvW5Ue4cWfli9eht5S6NwdDMYfq5Hav44y69dl+4nrs/TzyOoCsD1a4TWCW8zAzEmWrJqWl1Z3IJbvresqSqto6zFO4vrR/lzer4mPW0bo76yzt3tuTYOfYfjhu5+a9dpyuRTnsb/OZkFc6y960N7X9fceUXfyehaS5NhPd/7o209MsbonuwCGIS6AYDpggDZhKFRiELpgiHBr9KhkuDxiUDIOB5ioVAAGAGBQARdlFp2p6jj8sv1nSYCwdO+WNgfF7IogkFgTWJW2qljusPonzdaB0vGzOw6MfiUph9yaK66Q4HPlqXLJ1XRZdaYMAO85zH5fGZE8btOtD0thrGN1X8povSSaMzcmGBBzDquIahbnz1BBM/EGb4UcPxyW1q1eSSyrOtEhiEz9PcsRCDcX8hD7f/6smx6UMSA9nJoRGu5ZHgAAA0gAAABIQGjC67pNeAAADSAAAAEDUNxOIy175XGpqAaw0VC2iULj4ZEpKIRK4NkIpRVpUKBNgwAYRhEmzGUydAtIzcCywkNJpUYglzQnmnVtqz8WUBVOcFEGrXlCCTi20IVTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWnFgtbv5UkVKKWjjkPO61pbdyFiQxMdgMBCQ9KrgdRBIjl+F1lk14LHfyxDjXnvk92O0+cacN92twbAsAPe6vEamdQlqENr9p5pgkIXE3eLL/mp+NVqaRbvQlVICzZI/qmjlOa/jzwPCocl8TguH4HjM3qzTZWfs3eclXJesoObj5CQU3KRwUCoCE2WHaIOUXXwuRg9FMVFWWqQJIV0sMqpWhJlUz0pXJuLupBuckpt25Co5pmVZsFKTSVJVYzXxaEsz05M+9Dko0irblBD08eRa2mw9NPaSFwk3BNLb3GiS6UiZaDgDnJhxRUtAy8hAKBAD5gOBIGAyFOY/iv5hdg4mDUDoYF4G5gMAOGAIBAYEIBpECYBQAYYfJ3XeXJLbidEadZYimDD2ftTfsaBI2Iw5hEaXTkghYSYkBpKjQnFF+KtYYDgaSS6QQxD72Rme2gjNJlGNoBlepDuWnVD7zYOM6DXpphCyWXXGmZLgXUwJ7aZ4WERCGnVboSF5t4UFkztBHR4K7Qsfh7qd8Ssxk2dRAR0t7OgWZ+fiFquJHshwtyIP5ZU6zAV8ioX2TEyofnKfB0zK5HqxP/6sGz3ddyA9sZow2uaTHgAAA0gAAABJaXpAa9t8eAAADSAAAAEImhqYfF51hhOw6VyYGm1KF/Z5IzVKiDu7gwLDRNOzXgMyRYnbc8iqdtVzxQqB+xqBoeqxk81YN/jPxTdPue1r4re0THzBtutvBvjcKpMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAWHeSlpIhusSYQoCt5n0fVGzUuCYBoDhgPAtmBOF4ZIjDBh7g+GBIBWWqZaXiRVV08reOV8Hsudp5oZadNKywK4T9xpwaCBm4QdLoGZe/k7GoDUeYLeZ2q3t6rfjNDbt1qzdDgJXy06kOy3tPPzV6H4290rk1qpFZ2pflcrjFmjgqrRyocAmgAEk/ROTiaBYmVFWHFd4YjZxGwTy2hpU6liJ0ijErq20OE0UCoRrnMFFOY9SpKXtONZq5l2zqTzh1XWCrMw42+72dj7TUF3MbYml2GX+ihbrRfHzMV4mvvv12C9KvM1o3Dle9zWlvO7q78SmpQdNf3YkTWnnKTaiLA+u27xdYSE0xBAoweAE4TLUOakiEIeABx0jU0C4q5qet8Wa8/cYdKWw7OrmeWQOQtkuqmeIQC9FzP8o8nVRxRVBgziytuyZ6/5ibp5rT6fZlVOB4TT3cU5et+3Td16WJzDpRd+3erVo6+k1STbQoZp5RFHnmZBAA4IN8PA4YEYezTTnkJKfFwnqyWIJkaoJ0pOVKJAj//qybKP3yoD3jng/09pkcgAADSAAAAEeEaEJrumR6AAANIAAAAResH4liI8ucKxUwiFcZiUTywcunq5PNktitRI7SM5dOoHFsTOf25E85Vyrjh4ltSurfv77b712jTvhpL7dJZ20Gi89M6JHaOqLOga12apMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqakkF+2/ljSedeJvW/7cpfMO89CEsEBQChs3JezJ4NMZBYwWBS+AGBhZOu4cOs1euTwTWiV6LRu/AsWwmHXa04bOGgPQ+EA0c5DEQizkyGgeOGLc5S1c4jav4P6fgjqwO6VaXS6O6np2kxg6lgftWxSYdq1JVI6etIJmIrKDOw2ICcmPJCQnWWRoYPJyrJkpaqG3SLJuNwQ9onQTislKajTZVExA2kVaUVkmwSKxxAgQLlpoF4ZNpblW5amratHV40g/jS0JJIkNQroka2EKy8p61rO3WmNy3f22NOvB7cU6XZctWxqgUAMwAAswHCwEC6FxYMYtEMJQ4MChPGQUFQLDg7AQOkwJJEu4pklvYh9/JNBEnlc4gCjKuKEvOipVZEgAbhL25u+oayZdDitdX63zpqrRmigiRNmZ027iwKIQR7brNoEXhqjiTDXqhuBmsMZZ+mFJm7ySRPHGX2otxtp9uCpl+VHiAya08oU3dULWX+fV0XRdpWB/K0cbhT3qOENs1tl6cei0B6IcVRbGrFKk/QH1D//qybF34yoT2rGjEa5lMeAAADSAAAAEhmaMJrumT6AAANIAAAAT1HBYpEkcB/QR9HmJ4sRHLOMCS1WAulginTOxKUIlFx2TlPiQ7bFAkOnJrE0hlpx1d5ZXRI05gW7ByhtavR39W3cflbb3iZ8Py9tbCmapMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCKcBlk1bRIF23OphO9EXwcFpxcowQAkwxCAwgC04XgUzWBcIEIvzD6525L7kDiM7fdzL9SLyWUufFHZf6klyZcPu6qqlirAqkyFlc89stftxHhXk70QoZbc3I5ZcxmlFwZGgF/Gg2MuvRJ4xRUsAXIxVsY/VkONeUWJ77UorxNwQ6IvgWHqdMjcUOmmLXXViYqwISS5VE9eshMi8FTo9ncnhUS3Sk0yJ2ls5FlW/QotKrCUpO5WpVY6OBlip89ihprUPdYZnJgmbOKcbeyk25Y1t2KdNoY2d6jsW5Wb06SWtQsINnwTCtyKNkiTu2iAECryKVAURbkzNqxoIqdU1GE+GabfTQJlyhGm+DxlYaYoDAQWMHEQsGM7VKpqLBoYAvan3BbfNZXnedJVNjynDKRGEviYKLl9YcZGykeBGMRGHFTEQazVD2iWhKYConta46T9vNXTaNYnbL8QQgzTJJrydtTFY6ca2ECAwFq0MmZqxp3HIVwyNnb73WbS9x2kl3xQyMsF08E0JUn9HEJrDWIPsorJlzPC2zcXCWk3BYR5IHnnSlbeu5Um6S/A7uRKNzcThMtksAQzSX5h7a0Mx10LM7MTUfh+GpVflkifJo8ZiVDOy53Ik//qybAwb64D3JmhB67pkegAADSAAAAEn+ej1TftqAAAANIAAAATOZ515TF6sjitHKIlN5SWxUnpVKpVf+Ho9dqSR24xKI5G5RUma78zMQudylFi5lHLeUrp7EtgKjkE9Zld2tQTFFPUtLTRiYtVcJ60/8vpMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqIBHhFYCgJgIAdeDopIFYAJEAiYAQA4XA6EQRZgSD7GVX6EYdgsRgMg5mAYBkYB4AIhABCADF7K2SJaVE/Ldqajjj4Nhl7/rwp2XTDuUyicBfDMudaBqkBz7iw2+UYsXX94+GLoQBbkq5z9ylx5vdFaae4/MDSWtZZw+D8zsOw67HJNi7l+IQ46FPNtqjMAr5upOiUVCeJJcEt47LQ8oQViSTw4LQ6vk4sEYdB5IojlcrCGDYzVE0qC4DMJZKozORxZWG5eWA3L6EvNyYwT160RESUwLRqGR3AdlMvUTmJsOY6juHRMKkZAkhGX0HkgnZeOB9IBIZFBjkYTMAVOkMnIBoP5JTEaM9LaIQwYkdyElLi07L7JwN1AvMXI2WTMKEq9evLqq5GSrAM6tv5c23ATex+MUGSITwquAoCMYDsyWgDAgnOI9UzMEzMYsMNANCUmiBQAn+pt+pW/FJahqrMZ4wC9DdYNX39EX3aS2RyZFCmpXoafd6YLcWxflmu3YxN5U9uQgpKupF3DfGQUkIi8Ucqw+kIgxv3rgB4Lk7GpMwVyH8pbM5FVBgus/yXqDklHUZ6epHm2mFJiuilTnIR4Hhb49S//qybCul4oD5LXq8C9pkcAAADSAAAAEdraUN7mGcYAAANIAAAAS8XUA+VL7ZAP0Y/nDq99ts/QxYViUnIhw+0fHSEuKxdcLyyHjertDQ5Prtpoz5uKraiF1V53LS5etRrKS4qOXkJFVlx9vz/PbYMUuGnhZMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoNx0O23aOJExO2npBDtuymmptH1ciQTAYhAMH5xMVYObsFFAHBeDgAAgELTaU4MWftnVyM09PADyxWldKVNozt+5Y5KpU40U1/KmmGVX3fS8a1NRZxFj0UDw7FbThP9S7do+plk0MxCghiaj01CaWUxqzFKCIvFI34nsYDsvDGmiuK49drq5R7Y62JMIHCuyfmNSSPiEfg2HgrIY/la61hGbgcEtcjjQzkxEhwOcRHI/CUeHORn1ilDZGSG1zJcNCpxfotM3jn3PWFwe7/CrWUXn/9RhOwiXRO0gaW/eE4pEvfi4tokq47PUsVTr1j2vdXAhapV5o0AAKMKAL8cJTIAAKtNT+S3ZfJENQoAkYB4H5ghCRGdHIMYtAZRgagbmAIAoYAYAoFABBwAik0qIEd65ekUiZxEYxbwpIxudlGNqC5fELkpk89Xjrrx6jaa0yWUkbgi5hQymJZviYGAFT8opIuLE1LykP2ypcDrZppS5PlZGi6Yy3ok3VGyMaOBcAC1Iy8jDyoLkqcEawRPIGxSdKAOLF1ygLtjJMaOkj4iuZAicGYm1KQdEdeRrkz//qybCVo1wD3vmlB67pkegAADSAAAAEgieb2zz08SAAANIAAAARqrEZAwKzFI0iHGGmRWjmGCWQ0JCopeMonFBwYEC6qQyqZJfAyMrmR0cyS6axKhVFpLIqTONs0XUZIUZBCWChhgsWepAVkaRgYHQ6he+tMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgipA65brIiVKozD46BVBYkjNVaxCBAABcwXE4wGGU0t58x4D8wjCYsq0QeBgHAEuhU0cdmEQNA3v9Xn4g2ZVstaxK3XciIuOlfBstWGdKLsEbROty6R+FDX/gqXxdxoQzu6+UZIAIwmFu2Uo3H05cZXI4cgXxA7V4NkEXm1PuvFIPiLhwFLWVzDhYu++w89NDo82UyKbh96YOktI31JUcl+I9QOHL3XLzuGJlpjPldzMVxnri256747llElNUFYh2WlxwKUI0YWUKqNSmM0q1QQD1gc11zps2OSauPycST3o/YWPw3TGTSw6gYWmayCB48I5ZOY7M/YeDPXXwgtfLOtABi47hPtv9tG3L8oBUXbyBbkoLml+QSBDGAHAwWOrJYOgw8gSINpcAgFM/RsVRd6AW7000/FSUQ07fHQYg6T6YWJaqFXzTHyfx436fp4YKcyXSXKYlsFQDTt5IHIf5+0yzY1pDAa4pDIoxKmXPlcXY5dA7lMyx8GRvC7rtOVBDzvg2dnytD5r2EZEu8JYcGUZgW4wWJRONwgViUJY5l0R7BUXy4T//qybPc+0wD4FmlBa7tk+gAADSAAAAEeFaENrmmR6AAANIAAAARHlwtjuhITK5vSnZkonba33OcbOitYmvL2CsWIoVwnGC6hOVRnLfKm4yMiP1F3TjbI4V/TatGb2icZSdV2NqOK/Kce9Q+ev3/d5OXpP1VMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVOW8T/b+6xtt7B8gZw+zX2dPozhnZhwDGQy6YEExzvrGdAoY3DYGDBbMBDMwUBEV2AOIsOvuHrkPOA6s/RPa0eUtIaxHYdaesR6kjpK6EKVmfZ9nRfSkZ0+rbxWG70xGWHv/Eoq0Q5zFcDjqijznsGWyyODHXV8xqPwAmhKYu2CWv3aXe78ufSbpLzWXaSpCHggJhKcC0aCwJYKD4XwMA3A8vBwfQ5D8nlZAQB4VGR60+aFk/VqEY7E0SE5OiiJREk2HRAEgtuFIRDriqrRkszaPwMvFo6IZq0tOVZbOGXzNOvZurVr6CctNEI7+yOBSW2y8P0uYmltJqlDEiAktVohMH1UC1sDqObDe7/2u9LICYhP4wY3oYARgKBgWCEdFIYDEwfikwCB0CiQDQbLKF0EEyrEVo/N3bTtVIKisYbAzd5FiS6HGgOgzpSpyGVtSZO87V4HjbSIPSVVuhuDJPIJNSxFsk1Kog84CKpZ52mI+qtMz0/osUw0iqat8RGqBzRNWVuPXTm4Hmnx7BJTkfK5jQltQKFNzMVBzoacb8/zgYm07Wb//qybE4p0oH4N2jC65pkeAAADSAAAAEddaENrr08oAAANIAAAARGF2RMuStICkgvbBwPRIsONmgwZaE6jNmsaHEuMPEJMf5EK0QkBKKhtxoggclTmcYgKD/qVGDZeknGjqLSzJBCjDK8y7ahPZNquTj6EvVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ29xtvt5K2jAdWSq9pJyhf5QUwADTDocMjD8wKEjkk+M3gQzgFQMNkaEHFysOWzAK8Iy7C7YrUemA33lUeeqKQ/FGGzasjQbU5GbcrdRknI/LIHa2rmkqXZq7Ty+kzvHkFLYed25Yj9urczjcJrbiEfqTMm98Y9anKWrOuRB7aRgW6kI9WGxppGaOFyYCiJRAVRrJNAOdk2KtbA4TA2JEAFoxMDBIySg28GEKIXJnb0RS9DiCBOIkJxmGyEFIA8zFN0NksfWgn249tE2rNO0Kqm7N9etuSDNgtOpKXsbuWZGoUUCctEu1/siaTySJxIbiLJWgqqg0AAgEwUChh6EphAEhw63hmoCRjmDZg8AgCBMvuCAAWDZgx1sKSKmENRpTyXLow5i8zDHGkjd3GVVGAICAhSrWBpmwKKtWV4iYsIpavBI6Ozs3KV/wW4zDlhNjIBGL4tr2K8X6ytMRbVArSdv3SkTydTZzoSypdyVK0mVwq1aizkCfC0g7IL9CDlfKJ6a6KZ3rcqi+OcJkRZznycSQdOJGDfMg/Fa0F9MVQlCsnEmk7RVl8OlRplgMlN//qybG+l14D3GGjDa5lMeAAADSAAAAEjNd8Frrx9aAAANIAAAAQiUkcRkr6ijl7c3BMulHEQbkyMCSP9KoNPOabMZDEiqG+V43K5EH7a6xIwpyVXwlcwsi2vRGORzgQ4TUyQHLzVhyXql6+aZZ6WluQ+miJMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqhRGZweGjf/WNtwqScfShedQ9yE7gKBCAPihgGRKZM4pgsJmFCoYBEJaQICgGDaJLradd2mmIQ5Ns1Nl0WxszLFpE9EGQ4zpZkJtSR+HJeCihqHo86ELlc23G65TBZDDT/ZIgmErOLMJ1ReHpM7UblFHSNaqOg7FqavSqXVcIzFaV8s5fL8IOKCJ4echKWCdMI8nPLEY02w1IxqcFYm0LjhqZta1C2brTgwcfVtvMvKyVbWYYy6ujjH2OdXqlFolZwhIcDbKOu3Sw2X+YrNTna04PLQncBscRuOWyZUrXW3xAVMfduZ8aAWdblbiSJYAnhxAseBEXS76CFMYDAQGA8AOYG4KhguBUmDWIIaQUIRj6hYGGgDmYHoFwIABLtCwCLxPbHEkHiSxgdm6ejnsyir8MmTgWsosylXqeKHcOELNX60pAgPF0Jo6KS7VhQ4sqL9KJNPZg7qdFOxtGtji0xECOx9VpguEQ63J+IPeJqLoylcbRo5D7L2wF9VwNBYrgsR4HNZQgCQ6KvGixCWMOVhLQW3aC88SoopAsvbdyoxAMzEG1jlLLGHUksg53njcxzZK02+9K56r+wa+tRl7d3qjbwuLAVLuXO85F5nrgJlPyyyxYjcvf9y3CfpY//qybB2o7gD3NWZD+5pkeAAADSAAAAEoXeb1T2mXyAAANIAAAASRGQzNh+IrNRMikUyXjcbpCSS210RdM4HA9Mi7ABwSR9VNEtYaRkgcCUV1wnFckLG9HyOqGweJ4WX1pYjWniWThl0/PIbHUZEcPTodeypMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoJJsJuSVtEgMMb5jKAV9GxR+GW4KTEgJCBLBwoHOo5A59AUP4YDCFaY66Ibga0/sGXopqNw1Acb049mAnXm6Wjdlj8Jq7j9KvdyUwG0kC/3mT1jMOQK+MzKIMon1ds54584TK5Q/aj1+HJlj0WqSGSzcvis0+MQlucNTWcxOx5w4cjRELLonl04PoUhuoJaJOccXjNtpswKxVJjgcvKqWS1dLgljrJVPyyuUH5beTl06huj49VKDyNE8thoww8RV578KY3WajhVWWrZOF0n3LodZO4lvP9fL9nzduUUH61t561OvAWuzUUCQOOR8mCASks4v/3/1kbaVOwDAdifgFvbD1BcFmECUIQqaIqJicDmFgsWnRMRESDh3B+KN43bdxnUBy2NzEFNcjeHXMm3bkzzwDcijC5qFOXB75St9aF+pdGoefCHG4w3184ZEmA6s0yTcBQzEW0ktR+nYqvpZMS8S2SSfQrFSItkiKrA8hMWKQl5U6wZrCVx42epjur//qybIZGvwD3eWzA67pkegAADSAAAAEbkaERrjDe4AAANIAAAATmYxL4g2WEBWns6+ZHD52pM0JYsSl8cTErPxsr2ztLY5TMn/FB5akXUbo0llKzp2UsxMLRpkZY6zqwFAwKF6gXEy6BZ9JIxpIDJd9vf21MQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAUUlIkiQBCBDKXeEIBC6GkrlZUjiYAwBpgDgOGAkCqYEogRkxQLGIOFgYGAHoFAISXZeng2dSzbVIpPM2fPOihullcNxGCXgTEZaw1VQmNrcbgsMt1BGvhyXbR8YCXvdJP9oUohbaWn0kr0rqTaOuhc55Is5EahLKnideOuO3kSlbvv229M+0rjEep4rc47kA0FBCRoqFKI5E9SgVLIkVSGiReZcvTLRsYDm8T0I9E3BJKhFcWnWH4/HQ9RHlKXKihl3HltHIoTiH3Fay03O2IWmCtpfbgRN+2+WD20OtFjI4yf5khuIJknPS2d9Fj6YnOVcjccVvWhTrFy/nSk0hSbtHb5swwlhiYZbszEp2PTVJhNtd/a2kziTyIcBeVidgt3lzAoCmMQoBgScjT4c2RoxFAMUvWmlVKYPryR33cgqMSiPxyki0p5N22lz8DPRL480VsE4zV3FoQU0uHnhdeGHhh9g8BOu/FqAomnaYsKTIULGPKpzFWlStqtziHdY7WfD5gnPisjQrGYyUMV6OJUSvOlFcVCgZBInBhQqdUMpu//qybJbx0QD4gHo909pkcAAADSAAAAEb8aENrj08YAAANIAAAAQfbREBtSQ8GRKS2IUlCMoRYSCKS6ALESoQMUlduaGnKCGUUbJEWohk08mehVGGosZEZnmWsKnahYiyeOZtGy4plFVn60/oHt5WqrquWSVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVJHh7dvva2k06kUTfiA4BjUnpdA0CmEBECQabQkJkcBmWhcYnB5gwDLCOW8sfvyepGLUNXKHB/asPOREYGiU3GE/onK2nvzDEUlkViEzFIehVeWUjyXn+hukeZ+kljAxDfhdpc6eguzwYCJeH2lCwwo8CRrUZ1MSnWIbCh0igRAL4n3OiWWYEbC3XrNLo3fXRoeokhqyLLZxmVrPIS7F7T5afQ3Wki+bIzCBxvF8B9yS608ff1uV02jYbgnqVcgX0pntbV/Lvu5BkdaX1PWq3hKESV2hzvGAEukAAACmzswBgEzANAGAQDiHctKYB4AxgBAHmAAAmYCIIQ6EeYBpBhhHfgGDSLgYA4jBUIw0SNiIBAw2jLDTKswUGPhDKlF14sEFocT5lqmgCGkGQEDDI0VQAKhjuypkClLE164PK3J5nBbjCXUS3fctknpDT/rqGQc4d0CAdhUJGEPWDfSZkEvAtB0CxF4YCUIpzMpcHUcygVTQdB+MhRGUOURw3VW+XCIjuZnFhRbWZajwfbsm6NOQdJxpZXIlCznL/LMciPiHClyEJMvB0xWc6WYuC5HwyLsfokqgbWY4zjcEy7cy3Vbl5RqFbVZ1mUfiFP2I4GErn8y//qybMrY6YD2uWZD649nGAAADSAAAAEpNejsz23tyAAANIAAAATLSwn+SslSaT6ajrkvzKlTyWWBgOlsbl4xFASt0hhekUzRT+M8et0q1ySptOA9Ha7Y1QeMJ8kimbVy2F2IOzq9UF5YXaCMkhC5LiwQKCVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAIKb+lQKAKKBM8QsnXcfpOd5kVjAYATMC8DwwUAhzPNSFMZYFUwOwBgwAlixc1MZvXmjjXF0uIyqGYxJ43BnJO71Diz2XOmkpC1oy9lG2p4z2LbNKUD922tx7rotJh6JwuHl0GDYAavVWJFGwVynl2zyv7tSPOtHM54s07+E2MSLiuSJakafwFkwaEIscRBQVPRroChFz4qESjg2LkyIoTmCIuPjBsleeC3hra4pFR0mYUC5gHiohiYEaiqxVNtswIiNgVE9q4GcRi7pPZLWfH+mqoHlJaoG2UsD5RGkaF0pvxN1CC4dAcJUYfbxLGSSRVggUaJCTTjBsnYRrTqZGwJMbmEut+1jaTbwm8gvDWnrh5sLigoJmLgQYHApzZtgpzgLQJD06EJC02RMecVVWYlc3PS6OYRWhkzsxSlTvg9jqbrO0837fiKNmn4xCJRLoDh9+HGlsesQuHHAgV/XgOeNb8GoSA4KjESCYPJ+TRxO2VRgWTlWdmB8iN2i81VoG4XDydDdaJRgJa86OWMWFkyJTqGKj4yEA7YOkJDgM//qybIyJz4D4DHm+S89PEgAADSAAAAEdXaULrmmN4AAANIAAAAThJQlrS2IJ2+PR4XywsH4vGumzK5K2vdPj19apPlq1lfBe7tXH1CA2oQlvVT7ZGrfhdRwL8Z+5lLvLl0VV6511aztdSQbSiKR6NVpFsgpMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqoE6cbaJBlWgKdXqoEfXdeFf6jAWFEYHQ6ECYGAuBlw2fGIoIAaOiYAsBR5gwJEBDBbcF4tkKgFUaq7x+oU3tZeqDr6KqRtExKlvhAhURbhbLyltnwR5f9Q0QnC/6XRgQyi6JDG15rekztN42Fr4CCn49ORAqUaE2KMMUOlSpn/T6ViSJaAy6GG8LNOCmC4aSsJS8QbRLcp52KoGqvIoa51iQQ15FSmgJR9msSWXBsadNsjlwpz5SXfijDYbkEQdi++1mGY/Bb/NTeSXwFi7TdG7Z8fJv4KfFhkMwmB4BoYckrOYDkzc4XBEDuDLn6afKWISyMRiWymQu3nC9xyVU0ofWAOUNLR00pht2IYjMbppmdyid6hgSj3OdxlsOQNTTcPVH+l8fn8JyJNh1DVJB8Ik8qrwTzUNsqyuxCL0FJGKNy43tyPUfXX/2yNqpR7U7NQH2ZSqLJBQCmAREDAyavvJjwFnPdGKGrqfV7oQwK1KKjldkz+Ri/ujgK/clT9T7JFsvRhAFnOneJoTPXcYpF4zG4cbk26hDrQ3BkadtQwEx36Ox3JbjgGLi8kLRxUKQbLiamBqoEEewEoko0U9SH4OiBoKHzZ8Jcl8sjU4oElYZOJgXRkGOIbk49HRqxSTjwJ//qybAMs8ID6Gnq8Oz7SEAAADSAAAAEdXaMNrmmN4AAANIAAAARE8ho6oyMXTMXBuNBeVk3/TEVUHL8OMPqU8QkcfrFFRIjKYlGFXmyYpPHoE0L6ZCtK+1lKzR6O4HYGbp9PX4DlDo3VqOWaE6Hp3pUpF9VMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUMrcaRJCg5EoC4Q0pAtwgqMBXZT3AwE0YoJmgoYs4EAVxpsc5oGBTWYwBEIUhmAgJBuWUr0KfL2uG1pZMOIzt+l+y5oYOGWYrDq6gUIG1aUCBeUwAIQaXKglTdMCAFJoqLBKEF5IGUxdhJxHyJJSI7iIXNniFB0Oa7FiIUrJssEY01Z3mhtEr9ZkrUzd8WnN42i+UfW5L6dhmjkl3UgBIhstozd/ZS+b20sakTWGSsUh5/J1055yn/uQG7qXtdv5tmrt3YfjSwTqOo4bqQa3JsUciyw7724i/zruq+zsLRaY+LzzMCRtsL0wC1yNJ9Jnu5IF7Slxoo4jlR+LUkPxp9HxjMPQiGWvOzADtQbD0MQihaxLL8rgPVyUv7etx6Vy10n+i78zdppzYYC5Lof+ekDwwy1uljUw3eHou/speSMX3EbHfpcn0v0sZput3XDff//aRuAYH92YRKn8a3DkpHAQwcTEQMbT4AI0MZFSzBeNItji752Nz8LjFiBZRqUySGoLisB00QjUvh6LzUrgOLUke+rfkssoJBEcJZAcudt/IHhLgGWBPCyFBWYJHl8rNpw9KRg5VfQRkZ8bqUR5cSicjK4FiXY4eaTlZC//qybMMX5gD6X3q7u17agAAADSAAAAEZuZsTrbE8oAAANIAAAAQwXqK9cwqm5tWd4YMgMYLEqTAkQkAsUUCKCB+hm5ojJ56EaaYRIZzOykKvJNVC44j/JehM7BO9xpy9Tqer3rbTNrvQ0lGG4rWJiAD6/0JMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgAhVvqlEJgGAOTuMAgBBSwvih2bVAEYBoBRKCaYFIURgaCsmVrUmYmQdJx7gAOmADOijWrDA7PZU0JZret60l5mupjKCSCGnsbdPhFBcKDgkGa/PwEms/MblKQrbJcMNaU4jfpysOZdO9li5mny4P/J9g/C3w1UK8dJ3JRFjrKZNqUYKwLALinHFDFcZKnH8GkSUvK+T5HAe0NIsuEjMvHCEiLmgDoMQWsmBfTbRKiM44kcSUs1InFpEoI7VapFK1mieUJE3hGWtrR2m4byXLsS5F6Wm461NY6USS0/0/BNM+E4uVyOR8u4SNcXaHNkr1wULEi5VekakGYFCrJNoaTWEyI19ElPlHHc3OTl3ioTMBkR7YfK2pY0BLoYh0JrXChQlYRBzuR1MLIrlQ2KZgU6jgJ8324kqnZsL9vv9W255s1VYdImetNaS3LUgYGMgFQMBH6UAdZBz6NCSahbhTuLUtDJqsMymXxKQ0DkLUiDiOs5M7bnmwRKllt+8+DXa0DupONaaXDUFt7RwDLLjqPsv5yTShploRwwi2qQ7IqmVG24YIxlhXsCFMScUbXK6UOXppnrRxSZECM4BwjIw8W0+KyIrghtpAQkpEJyEhD6gqA6//qybGYU6YD5vXk8S9p7cgAADSAAAAEdIaMNrb08YAAANIAAAAQoE1YhQZGoFhCjJDJtxVsnJBKuRisBEyAY4lXIyRRo6TitwNMES4pJ8GUQ2dfo2WZlUEJVty/Q9CdD0SIiLI4vaOEyNOS8UnHzVbZDv01MQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTJbRfvt/a23FIm7Y8BYs0J2EH27JHmBAEYVD5ggOHS8wZ6Bx3UZlhRhQphxoOGMrFAC1I48UiVTgy+0Jlqk2SM0iDDVoJI2+rlY47rBYYhmcYa5nGgPE/caddrS6rMMqMS2HGywQlMZ+qwI0yHHKXtieOUrwzRI4JqG6zpBJqwuBbk+MN+ZJ3HSPBLMjkBKr5r0XFkcXoyFI2KAuJY2FvVqRLZlSplhjqww2M+3BhQiK4sbSr1WiDycVetm2rT9yZKXU49lGpla+VacbGMwHWzDcEKc2hXlxyb62rUepXPChewbIqeiHvmY/1ykr8sJfoEzdFcHN4wqdhc+f6WTzEwqm29br97+d/Pvq2t7gEgFYmvEGKOXDbbb/VtKXxZ8FHojB1+lZ8y4LA8ZFxUDIWs5UBIwIhUDoyKsb91ZFALWnKp4IkE92WUFHGPgCtMR6HM2WXr9Bedqhqxq02PUrpYalsWh6efqJvTA7dQCLJBDqtzwuHALzOvVfmclTcJx3sHoJh1WxGIlEUgGDwiG4FzeI8i/9ODl//qwbFIFy4D4n3LB65p7egAADSAAAAEaAaUPrjDeoAAANIAAAATcSOOLi3NomXjhm0OFlUjjhTtIjVS7A6ucZOlrxWVEmk7KkSfAzE6EJwDippiOubCieeYzrJ1iqZOMjUXpHRfS+6xs1CGMXVujyllq1ExBTUUzLjk5LjWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqhQ1WAVma/+1tOGHcTnKoBb2ywlCUq0LAEw6OjNiFMEhw5tnDO4MMpBcMFSzXoYjPoSXpZnQNPduXuawVd68nJZTTx+WrwlzWhAA1AIi4TwKLs7ZqxNwWWrUZW7zCWptZXbJZYpq1tDRFUYABlwlrmH4Xl4lSxqwuJcgYKKT7Er0QdKQSaJPtXnC2ptDz5DnH0jR6IIqkiW05kUsq186dIawTFwZD6bHGqqQTe0EpNFXHrEUko+z1RkhnPmJ6p1cWI/FTVMmM9q1YWihOn0+IS66s+KRWcWCaVFaUlpm0dWVDKocganRnEcJnDQuOLrwUWn7jhyJyxOfCU2fOHxmiSXKrnmQM9IH4+jcJz+KdOEk6HJZbm0ic3baTCZM96skfoGhCwQMbhcwgCDzb6NPAABGsIDCC6aa6HfqQFBM5A7guhfkcUh58fedyIClc0/yaMolLc5NI3sfZmD3yN+K7wtqsM/q32Eyvu4Za5QmZwM1c0ZCh5GB4a1ysfzAdx/NSU7RDVFMtidETjkqlAelqMako5WBoOJgLCajfSgaYeDIxQS6ckQcRLJZ4txaJxUHA4NoRGT/+rJs7hvaAPhzaUH7j2c6AAANIAAAAR51vQWuMF1oAAA0gAAABKWSOT6iUO1gaagE4mwnvXIhahXIKmC0B+Tj/hwgKKphWxQf7RsVjif06PekwuewsOo3bVWH7zR+v1y6t11eSGaZAZSXscbXALTZFiRF+0xBTUUzLjk5LjWqqqqqqqqqAY1KoCAAkiAuFQBF6sMbd3lBKQKgICMC0wCghjBVHXNDrj8xoRUTUogyU/MeLAEIIAxCALXex716uqqZ9aVZUaZND8Rdv4k0NeLdRGPx1W+Alo0K8HPUoXU4DnKxEAEPAiVqdS5kzUBCYqmZCAPM+5zQgYUCliN1+fp/uifhWEZD/L+LaX16FqXSNEaL+LCtiTmkXIv5ED+IQnD5XQpBoFarQ4SFFQeS5MkWwhQQdBkbXZaLk7ROjuEisXY7heAa5qK5kSgt45zeOAnw1ijLYAxHSaR/E7LmQska5PliP1ShWlxXSGtKRJMXhlfIU2KEug+1Gc6iX8EcZCiIKUkywb5eVWo2wwxSlQcB4Dxb0mjXx1jfglenjoHpem4fouhfj1EWJ8loxfkLXJroYnS5G6XgmxQGSima472BJjpTZ1Ehhn/EaGs2ijFeGHO/NJW3Lm2H2129jbUGRSVRFg9gtSjshQDACYJBRhQbhUNGoMAY3BRwmJlSScq/lMWVSl/3MVVfintsqem9cbZ9ZdGb8UjHWqsSkbqQTFqF+4U8UedlwaV53gfq61+63sCOxMtKNmle8zISs8IZePUEcwIFwqHhm62Tz1ZA8uQGUsbBVPnCiYxKvCWEG6Ef3XqViGsMWiocmLjJ+JxbOiwJWVH/+rJs8SX3APqAerqz23twAAANIAAAAR1towuuaY3gAAA0gAAABNTxEZGSdCMlBdHgiJG6HRObZKx/csqD27SwxCUXoZSQ3GF0Sg/VH5YWHt0OKXflb6l+z8L5S5vrsL7OS1FLLC9a2ts4PShiMaifFrZ91UxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUEpoONuSJEAI3vCtRER3nmQUW2ggAIBBwOkwpBA8nkY0jVKgY+wwYDBEAzBUCRQBEMS60Wh2kZxMQDEFbKzI1aIYnZYutK964OQcc1vvWLPsvcV+HKUFgW0t9mb1KDKFs0YC1Fz4QsIh3AAhTSfT5Bj1iHaW1eEVPRqin2P6hznSfRpO0MRB/KElBfDpQ0F65kmBzkjjtiQNgn5dD1cDyRpbi+FmXw4TsgmO0KFijs9WFRIfAPZcthYUaXFLj1ItxhHir0ikX68eSoOQxCfJ05UEfxxJ6KqX5+qGdfgyroy4kdXFZM2qdjfx0N6kc9sSylLLhsZS+t7HZYVixXcRjXMVAMC1Mw2eTMISg5qUIpAjlKMEaHmlIRraWYsakdKjjw22v/kjTgWHpUzutdgKOX8UBZgoNBcFmgoSAiWYkCgCA5cRWxra9HxoHalETyp45K5TQ4xrCQ001nC3SjrawA9Sx30flulK8rZmvO98XgqXRaQL7kbTYfUaMKB3p85EgSwm2zb9Uqjm6sv+wugWLanBwd6hJ1q104O0AkrCWZtIj/+rJstVrQgPjzej7rrzdYAAANIAAAARoJow+uMNzgAAA0gAAABFuWRiUdAsdmXvrY0yl8un75+Vyo6fkk+We+fP4VSWKKUSgu8Mqiao0mYXA+DtBmPLLFtB5LFlRDEijgtq+G9PsYCqNCBOJgMtepFXT8ukxBTUUzLjk5LjWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqEGOty1tpEdAAU8xFhlPSSppUOqAgkAgQAZgEHow1kMDBVBOMczHRilbM3UeeAoHf6W1HSfltrMItvPbiUvrxxwIyyhyG6SKXudBTQn0hh9XfR3bkni/NLKlD2BwtyJE1hrZzUCsbYUq0xNSrCqXgaHVXh6JBbJZiOAfDuZFVZgipCWmZNTAinPD6SDJEDikNzMKSNhaHsgtImIK1Mlg/orqnTU4PyQY3ZhOCTUlrT1aV1w/4dxFqBOVIjklRIi8JA66Y8462rEw9oiL+wqEKkba46T5A87VESjVbvwJWinWkSw9Vcw0rtBE9eLM1nGfqunrws9n07KWpdqkL492a8bb//2yNsPhbITAQJrsDRvaeyIxhgKZyNGAAJ9tuEVppYAPErE2QqKRdpXqhf9t3FdKA3ap1haddDW2IxmXOAteTsdYW7EDNSb6AmevDF4acGy77sq7eKkd9yLlB1pxNErUVOrl7P8+nxzqJDyaLBhWLmf8BWx0Zg6J1QhDOhp+1L6Sttoh5yOlsvKdVXMKOqC2kuW10hlUap2M3zmZFuGoEa/wp2lf/+rJsmNLTAPfqeb9T2mNyAAANIAAAAR7FowutvZzgAAA0gAAABASsdzZWOg0ebh2EqcTmOzpkSeSHw6NoQ4ljUFedry0ekkXjyICcuHqdcm/JOY3Wz27rqJltu6LCktYUe73EJ3WDtItdEhxFSNb07COpVUxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVSREVghlff/VxuBX+jCAt+IlVpHShtuIEHl4HmaJpoqZGMGHjZZRoEPx1rdaklUKZpBzj535ZIILo3rpH6e5+pqDoy0RrzhT/IVPRpdT90HIJnpiklliXP7GU7AMns+XeqemcqkemBKjbzLNYGay1IoGqGkSwlRWPRXKD6JUgksI5O2aJCslLRwWTkT1ZHdafNUCBEdpowfIvmLh9aImCHGhjzGTjoSWQZGB8meU3oveNEIg/xUFqovllphevk6JxrRYZjT4qqGkzLDgYBgcS1xumknyzbSMIvFohgtOXq0UsXumZJrxttd9bG5qGmVNejT/SOXLCqUgkYMQPTB1A5GgN5LjGR0EgCPJpJ1XEpXCqTzMrtq2FItTP1TuEX5JqwoUYbJ9PzBLCoS/N5/ExJaaLEWsMiUZlgfia0vREEwHMWD8aolUSGavmoNo4jIOSzAfcqJoSlw7iWiEjHI2SoiUJSo5ElANgFHaEXS4dqI0JSu+uPX/+rJsQce6gPcaZ8N7bDe4AAANIAAAARvpowmtvY9gAAA0gAAABEvHZswfg1PaXWlUyEpHAhnq1IfLYD6y662YBJU8uZgXuylcXFYtHJ64ZLXZgPrW6yZU6Sl6JdNrbzNSSsKZ4iPs+B5M+esxTxGun7CxVUxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAwAEAqqNia2BXsibLiPoqT/RjS0OaodnSN4T4c5YDWRqiTp/JFfYIciaSZYQg6CgrJDbmuhITiNzTKIqcOL1dKrEIiGhtAuxCmKpCIRXWP01pDQkJfTbLSsQSAkX02zMEJUPFTvxGQgkIcz9SubieZYjOk7jzq4xHIUikeDtYv/+rJsyyBAD/ZqcbLR6WUyAAANIAAAAQAAAaQAAAAgAAA0gAAABNy8CUupF7kffNTlCXolR6ZFUpJF8X97pkVSqUk7DcCUrEEpnC9y9P6dyZmZ21q2rap0SQ6FRDJB+ePuXgTN9/fW27m5WzLSHCwGVVViVUxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=";function zu(){const[q,e,t,A,r,n,o]=$A(Fq(E=>[E.muted,E.showNotifications,E.serviceWorkerPath,E.webPushVapidPublicKey,E.webPushNotifications,E.setShowNotifications,E.setWebPushNotifications])),a=he(E=>E.enableUserStatuses),[s,i]=vr(Fq(E=>[E.userStatus,E.isNotifications])),l=a&&(s===Ue.BUSY||s===Ue.AWAY),V=q||l,{users:u,dialogs:g,fetchDialogs:d}=Jq(),f=Xo(hC),p=async E=>g.find(({_id:v})=>v===E)??(await d({_id:E}))?.[0],h=async(E="",v="",S="/logo.png")=>{if(Notification.permission==="granted"){const k=t?await Nu(t):null;return k?k.showNotification(E,{body:v,icon:S}):new Notification(E,{body:v,icon:S})}else console.warn("Notifications are disabled")},m=async(E="",v="",S="/logo.png")=>{if(!V&&(f.play(),e&&i))return h(E,v,S)},M=async(E,{body:v,dialog_id:S})=>{if(typeof S=="string"&&typeof v=="string"){const k=await p(S),I=u[E],L=I?.full_name||I?.login||"Unknown",R=k?.type===3,P=R?k?.name||L:`${L} in ${k?.name}`,Y=R&&I?.avatar||k?.photo||void 0;return m(P,v,Y)}};return w.useEffect(()=>{const E=t&&A&&r;!V&&(e||E)&&rC().then(v=>{v&&E?nC(t).then(o):(n(!1),o(!1))})},[V,e,t,A,r,n,o]),{showNotification:h,notifyWithSound:m,notifyOnMessage:M,playAudio:f.play}}function mC(){const[q,e]=w.useState(document.hasFocus());return w.useEffect(()=>{const t=()=>e(!0),A=()=>e(!1);return window.addEventListener("focus",t),window.addEventListener("blur",A),()=>{window.removeEventListener("focus",t),window.removeEventListener("blur",A)}},[]),{isFocused:q,isBlurred:!q}}function wC(q,e){let t=null;const A=function(...r){t!==null&&clearTimeout(t),t=setTimeout(()=>{q.apply(this,r)},e)};return A.cancel=()=>{t!==null&&clearTimeout(t)},A}const yC=(q={})=>{const{width:e=640,timeout:t=200}=q,[A,r]=w.useState(window.innerWidth>=640);return w.useEffect(()=>{const n=wC(()=>{r(o=>{const a=window.innerWidth>=e;return a!==o?a:o})},t);return window.addEventListener("resize",n),n(),()=>{window.removeEventListener("resize",n),n.cancel()}},[A,e,t]),{isWideScreen:A,isNarrowScreen:!A}};function Ku(q,e=!1){const{t}=Oq(),{users:A,typingStatus:r,getDialogOpponentId:n}=Jq();return w.useMemo(()=>{if(q){const a=r[q._id]??[];if(q.type===G.DialogType.PRIVATE)return n(q)===a[0]?`${t("typing")}...`:void 0;if(a.length>0){const i=a.map(V=>Ye(A[V])).join(),l=a.length>1?t("areTyping"):t("isTyping");return e?`${l}: ${i}`:`${i} ${l}`}}},[q,r,A,t])}const Pu=(q=!1)=>{tE(),AE(),EM(),eC(),tC(),Du(),AC(),Ou(),q&&(VE(),cE(),PM(),_M(),qC())};function vC(q,e){const t=y.createContext(e),A=n=>{const{children:o,...a}=n,s=y.useMemo(()=>a,Object.values(a));return c.jsx(t.Provider,{value:s,children:o})};A.displayName=q+"Provider";function r(n){const o=y.useContext(t);if(o)return o;if(e!==void 0)return e;throw new Error(`\`${n}\` must be used within \`${q}\``)}return[A,r]}function gt(q,e=[]){let t=[];function A(n,o){const a=y.createContext(o),s=t.length;t=[...t,o];const i=V=>{const{scope:u,children:g,...d}=V,f=u?.[q]?.[s]||a,p=y.useMemo(()=>d,Object.values(d));return c.jsx(f.Provider,{value:p,children:g})};i.displayName=n+"Provider";function l(V,u){const g=u?.[q]?.[s]||a,d=y.useContext(g);if(d)return d;if(o!==void 0)return o;throw new Error(`\`${V}\` must be used within \`${n}\``)}return[i,l]}const r=()=>{const n=t.map(o=>y.createContext(o));return function(a){const s=a?.[q]||n;return y.useMemo(()=>({[`__scope${q}`]:{...a,[q]:s}}),[a,s])}};return r.scopeName=q,[A,EC(r,...e)]}function EC(...q){const e=q[0];if(q.length===1)return e;const t=()=>{const A=q.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(n){const o=A.reduce((a,{useScope:s,scopeName:i})=>{const V=s(n)[`__scope${i}`];return{...a,...V}},{});return y.useMemo(()=>({[`__scope${e.scopeName}`]:o}),[o])}};return t.scopeName=e.scopeName,t}function Ju(q,e){if(typeof q=="function")return q(e);q!=null&&(q.current=e)}function _o(...q){return e=>{let t=!1;const A=q.map(r=>{const n=Ju(r,e);return!t&&typeof n=="function"&&(t=!0),n});if(t)return()=>{for(let r=0;r<A.length;r++){const n=A[r];typeof n=="function"?n():Ju(q[r],null)}}}}function ae(...q){return y.useCallback(_o(...q),q)}function wq(q,e,{checkForDefaultPrevented:t=!0}={}){return function(r){if(q?.(r),t===!1||!r.defaultPrevented)return e?.(r)}}var xt=globalThis?.document?y.useLayoutEffect:()=>{},MC=y[" useId ".trim().toString()]||(()=>{}),CC=0;function Kt(q){const[e,t]=y.useState(MC());return xt(()=>{t(A=>A??String(CC++))},[q]),q||(e?`radix-${e}`:"")}var xC=y[" useInsertionEffect ".trim().toString()]||xt;function kA({prop:q,defaultProp:e,onChange:t=()=>{},caller:A}){const[r,n,o]=SC({defaultProp:e,onChange:t}),a=q!==void 0,s=a?q:r;{const l=y.useRef(q!==void 0);y.useEffect(()=>{const V=l.current;V!==a&&console.warn(`${A} is changing from ${V?"controlled":"uncontrolled"} to ${a?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),l.current=a},[a,A])}const i=y.useCallback(l=>{if(a){const V=bC(l)?l(q):l;V!==q&&o.current?.(V)}else n(l)},[a,q,n,o]);return[s,i]}function SC({defaultProp:q,onChange:e}){const[t,A]=y.useState(q),r=y.useRef(t),n=y.useRef(e);return xC(()=>{n.current=e},[e]),y.useEffect(()=>{r.current!==t&&(n.current?.(t),r.current=t)},[t,r]),[t,A,n]}function bC(q){return typeof q=="function"}function Er(q){const e=kC(q),t=y.forwardRef((A,r)=>{const{children:n,...o}=A,a=y.Children.toArray(n),s=a.find(IC);if(s){const i=s.props.children,l=a.map(V=>V===s?y.Children.count(i)>1?y.Children.only(null):y.isValidElement(i)?i.props.children:null:V);return c.jsx(e,{...o,ref:r,children:y.isValidElement(i)?y.cloneElement(i,void 0,l):null})}return c.jsx(e,{...o,ref:r,children:n})});return t.displayName=`${q}.Slot`,t}var Zu=Er("Slot");function kC(q){const e=y.forwardRef((t,A)=>{const{children:r,...n}=t;if(y.isValidElement(r)){const o=TC(r),a=BC(n,r.props);return r.type!==y.Fragment&&(a.ref=A?_o(A,o):o),y.cloneElement(r,a)}return y.Children.count(r)>1?y.Children.only(null):null});return e.displayName=`${q}.SlotClone`,e}var Wu=Symbol("radix.slottable");function Hu(q){const e=({children:t})=>c.jsx(c.Fragment,{children:t});return e.displayName=`${q}.Slottable`,e.__radixId=Wu,e}function IC(q){return y.isValidElement(q)&&typeof q.type=="function"&&"__radixId"in q.type&&q.type.__radixId===Wu}function BC(q,e){const t={...e};for(const A in e){const r=q[A],n=e[A];/^on[A-Z]/.test(A)?r&&n?t[A]=(...a)=>{const s=n(...a);return r(...a),s}:r&&(t[A]=r):A==="style"?t[A]={...r,...n}:A==="className"&&(t[A]=[r,n].filter(Boolean).join(" "))}return{...q,...t}}function TC(q){let e=Object.getOwnPropertyDescriptor(q.props,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?q.ref:(e=Object.getOwnPropertyDescriptor(q,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?q.props.ref:q.props.ref||q.ref)}var DC=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Gq=DC.reduce((q,e)=>{const t=Er(`Primitive.${e}`),A=y.forwardRef((r,n)=>{const{asChild:o,...a}=r,s=o?t:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),c.jsx(s,{...a,ref:n})});return A.displayName=`Primitive.${e}`,{...q,[e]:A}},{});function Xu(q,e){q&&cc.flushSync(()=>q.dispatchEvent(e))}function St(q){const e=y.useRef(q);return y.useEffect(()=>{e.current=q}),y.useMemo(()=>(...t)=>e.current?.(...t),[])}function NC(q,e=globalThis?.document){const t=St(q);y.useEffect(()=>{const A=r=>{r.key==="Escape"&&t(r)};return e.addEventListener("keydown",A,{capture:!0}),()=>e.removeEventListener("keydown",A,{capture:!0})},[t,e])}var UC="DismissableLayer",Di="dismissableLayer.update",RC="dismissableLayer.pointerDownOutside",QC="dismissableLayer.focusOutside",_u,$u=y.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),$o=y.forwardRef((q,e)=>{const{disableOutsidePointerEvents:t=!1,onEscapeKeyDown:A,onPointerDownOutside:r,onFocusOutside:n,onInteractOutside:o,onDismiss:a,...s}=q,i=y.useContext($u),[l,V]=y.useState(null),u=l?.ownerDocument??globalThis?.document,[,g]=y.useState({}),d=ae(e,k=>V(k)),f=Array.from(i.layers),[p]=[...i.layersWithOutsidePointerEventsDisabled].slice(-1),h=f.indexOf(p),m=l?f.indexOf(l):-1,M=i.layersWithOutsidePointerEventsDisabled.size>0,E=m>=h,v=GC(k=>{const I=k.target,L=[...i.branches].some(R=>R.contains(I));!E||L||(r?.(k),o?.(k),k.defaultPrevented||a?.())},u),S=FC(k=>{const I=k.target;[...i.branches].some(R=>R.contains(I))||(n?.(k),o?.(k),k.defaultPrevented||a?.())},u);return NC(k=>{m===i.layers.size-1&&(A?.(k),!k.defaultPrevented&&a&&(k.preventDefault(),a()))},u),y.useEffect(()=>{if(l)return t&&(i.layersWithOutsidePointerEventsDisabled.size===0&&(_u=u.body.style.pointerEvents,u.body.style.pointerEvents="none"),i.layersWithOutsidePointerEventsDisabled.add(l)),i.layers.add(l),qd(),()=>{t&&i.layersWithOutsidePointerEventsDisabled.size===1&&(u.body.style.pointerEvents=_u)}},[l,u,t,i]),y.useEffect(()=>()=>{l&&(i.layers.delete(l),i.layersWithOutsidePointerEventsDisabled.delete(l),qd())},[l,i]),y.useEffect(()=>{const k=()=>g({});return document.addEventListener(Di,k),()=>document.removeEventListener(Di,k)},[]),c.jsx(Gq.div,{...s,ref:d,style:{pointerEvents:M?E?"auto":"none":void 0,...q.style},onFocusCapture:wq(q.onFocusCapture,S.onFocusCapture),onBlurCapture:wq(q.onBlurCapture,S.onBlurCapture),onPointerDownCapture:wq(q.onPointerDownCapture,v.onPointerDownCapture)})});$o.displayName=UC;var OC="DismissableLayerBranch",jC=y.forwardRef((q,e)=>{const t=y.useContext($u),A=y.useRef(null),r=ae(e,A);return y.useEffect(()=>{const n=A.current;if(n)return t.branches.add(n),()=>{t.branches.delete(n)}},[t.branches]),c.jsx(Gq.div,{...q,ref:r})});jC.displayName=OC;function GC(q,e=globalThis?.document){const t=St(q),A=y.useRef(!1),r=y.useRef(()=>{});return y.useEffect(()=>{const n=a=>{if(a.target&&!A.current){let s=function(){ed(RC,t,i,{discrete:!0})};const i={originalEvent:a};a.pointerType==="touch"?(e.removeEventListener("click",r.current),r.current=s,e.addEventListener("click",r.current,{once:!0})):s()}else e.removeEventListener("click",r.current);A.current=!1},o=window.setTimeout(()=>{e.addEventListener("pointerdown",n)},0);return()=>{window.clearTimeout(o),e.removeEventListener("pointerdown",n),e.removeEventListener("click",r.current)}},[e,t]),{onPointerDownCapture:()=>A.current=!0}}function FC(q,e=globalThis?.document){const t=St(q),A=y.useRef(!1);return y.useEffect(()=>{const r=n=>{n.target&&!A.current&&ed(QC,t,{originalEvent:n},{discrete:!1})};return e.addEventListener("focusin",r),()=>e.removeEventListener("focusin",r)},[e,t]),{onFocusCapture:()=>A.current=!0,onBlurCapture:()=>A.current=!1}}function qd(){const q=new CustomEvent(Di);document.dispatchEvent(q)}function ed(q,e,t,{discrete:A}){const r=t.originalEvent.target,n=new CustomEvent(q,{bubbles:!1,cancelable:!0,detail:t});e&&r.addEventListener(q,e,{once:!0}),A?Xu(r,n):r.dispatchEvent(n)}var Ni="focusScope.autoFocusOnMount",Ui="focusScope.autoFocusOnUnmount",td={bubbles:!1,cancelable:!0},LC="FocusScope",Ri=y.forwardRef((q,e)=>{const{loop:t=!1,trapped:A=!1,onMountAutoFocus:r,onUnmountAutoFocus:n,...o}=q,[a,s]=y.useState(null),i=St(r),l=St(n),V=y.useRef(null),u=ae(e,f=>s(f)),g=y.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;y.useEffect(()=>{if(A){let f=function(M){if(g.paused||!a)return;const E=M.target;a.contains(E)?V.current=E:IA(V.current,{select:!0})},p=function(M){if(g.paused||!a)return;const E=M.relatedTarget;E!==null&&(a.contains(E)||IA(V.current,{select:!0}))},h=function(M){if(document.activeElement===document.body)for(const v of M)v.removedNodes.length>0&&IA(a)};document.addEventListener("focusin",f),document.addEventListener("focusout",p);const m=new MutationObserver(h);return a&&m.observe(a,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",f),document.removeEventListener("focusout",p),m.disconnect()}}},[A,a,g.paused]),y.useEffect(()=>{if(a){nd.add(g);const f=document.activeElement;if(!a.contains(f)){const h=new CustomEvent(Ni,td);a.addEventListener(Ni,i),a.dispatchEvent(h),h.defaultPrevented||(YC(ZC(Ad(a)),{select:!0}),document.activeElement===f&&IA(a))}return()=>{a.removeEventListener(Ni,i),setTimeout(()=>{const h=new CustomEvent(Ui,td);a.addEventListener(Ui,l),a.dispatchEvent(h),h.defaultPrevented||IA(f??document.body,{select:!0}),a.removeEventListener(Ui,l),nd.remove(g)},0)}}},[a,i,l,g]);const d=y.useCallback(f=>{if(!t&&!A||g.paused)return;const p=f.key==="Tab"&&!f.altKey&&!f.ctrlKey&&!f.metaKey,h=document.activeElement;if(p&&h){const m=f.currentTarget,[M,E]=zC(m);M&&E?!f.shiftKey&&h===E?(f.preventDefault(),t&&IA(M,{select:!0})):f.shiftKey&&h===M&&(f.preventDefault(),t&&IA(E,{select:!0})):h===m&&f.preventDefault()}},[t,A,g.paused]);return c.jsx(Gq.div,{tabIndex:-1,...o,ref:u,onKeyDown:d})});Ri.displayName=LC;function YC(q,{select:e=!1}={}){const t=document.activeElement;for(const A of q)if(IA(A,{select:e}),document.activeElement!==t)return}function zC(q){const e=Ad(q),t=rd(e,q),A=rd(e.reverse(),q);return[t,A]}function Ad(q){const e=[],t=document.createTreeWalker(q,NodeFilter.SHOW_ELEMENT,{acceptNode:A=>{const r=A.tagName==="INPUT"&&A.type==="hidden";return A.disabled||A.hidden||r?NodeFilter.FILTER_SKIP:A.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;t.nextNode();)e.push(t.currentNode);return e}function rd(q,e){for(const t of q)if(!KC(t,{upTo:e}))return t}function KC(q,{upTo:e}){if(getComputedStyle(q).visibility==="hidden")return!0;for(;q;){if(e!==void 0&&q===e)return!1;if(getComputedStyle(q).display==="none")return!0;q=q.parentElement}return!1}function PC(q){return q instanceof HTMLInputElement&&"select"in q}function IA(q,{select:e=!1}={}){if(q&&q.focus){const t=document.activeElement;q.focus({preventScroll:!0}),q!==t&&PC(q)&&e&&q.select()}}var nd=JC();function JC(){let q=[];return{add(e){const t=q[0];e!==t&&t?.pause(),q=od(q,e),q.unshift(e)},remove(e){q=od(q,e),q[0]?.resume()}}}function od(q,e){const t=[...q],A=t.indexOf(e);return A!==-1&&t.splice(A,1),t}function ZC(q){return q.filter(e=>e.tagName!=="A")}var WC="Portal",qa=y.forwardRef((q,e)=>{const{container:t,...A}=q,[r,n]=y.useState(!1);xt(()=>n(!0),[]);const o=t||r&&globalThis?.document?.body;return o?en.createPortal(c.jsx(Gq.div,{...A,ref:e}),o):null});qa.displayName=WC;function HC(q,e){return y.useReducer((t,A)=>e[t][A]??t,q)}var ft=q=>{const{present:e,children:t}=q,A=XC(e),r=typeof t=="function"?t({present:A.isPresent}):y.Children.only(t),n=ae(A.ref,_C(r));return typeof t=="function"||A.isPresent?y.cloneElement(r,{ref:n}):null};ft.displayName="Presence";function XC(q){const[e,t]=y.useState(),A=y.useRef(null),r=y.useRef(q),n=y.useRef("none"),o=q?"mounted":"unmounted",[a,s]=HC(o,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return y.useEffect(()=>{const i=ea(A.current);n.current=a==="mounted"?i:"none"},[a]),xt(()=>{const i=A.current,l=r.current;if(l!==q){const u=n.current,g=ea(i);q?s("MOUNT"):g==="none"||i?.display==="none"?s("UNMOUNT"):s(l&&u!==g?"ANIMATION_OUT":"UNMOUNT"),r.current=q}},[q,s]),xt(()=>{if(e){let i;const l=e.ownerDocument.defaultView??window,V=g=>{const f=ea(A.current).includes(CSS.escape(g.animationName));if(g.target===e&&f&&(s("ANIMATION_END"),!r.current)){const p=e.style.animationFillMode;e.style.animationFillMode="forwards",i=l.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=p)})}},u=g=>{g.target===e&&(n.current=ea(A.current))};return e.addEventListener("animationstart",u),e.addEventListener("animationcancel",V),e.addEventListener("animationend",V),()=>{l.clearTimeout(i),e.removeEventListener("animationstart",u),e.removeEventListener("animationcancel",V),e.removeEventListener("animationend",V)}}else s("ANIMATION_END")},[e,s]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:y.useCallback(i=>{A.current=i?getComputedStyle(i):null,t(i)},[])}}function ea(q){return q?.animationName||"none"}function _C(q){let e=Object.getOwnPropertyDescriptor(q.props,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?q.ref:(e=Object.getOwnPropertyDescriptor(q,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?q.props.ref:q.props.ref||q.ref)}var Qi=0;function ad(){y.useEffect(()=>{const q=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",q[0]??sd()),document.body.insertAdjacentElement("beforeend",q[1]??sd()),Qi++,()=>{Qi===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),Qi--}},[])}function sd(){const q=document.createElement("span");return q.setAttribute("data-radix-focus-guard",""),q.tabIndex=0,q.style.outline="none",q.style.opacity="0",q.style.position="fixed",q.style.pointerEvents="none",q}var Pt=function(){return Pt=Object.assign||function(e){for(var t,A=1,r=arguments.length;A<r;A++){t=arguments[A];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},Pt.apply(this,arguments)};function id(q,e){var t={};for(var A in q)Object.prototype.hasOwnProperty.call(q,A)&&e.indexOf(A)<0&&(t[A]=q[A]);if(q!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,A=Object.getOwnPropertySymbols(q);r<A.length;r++)e.indexOf(A[r])<0&&Object.prototype.propertyIsEnumerable.call(q,A[r])&&(t[A[r]]=q[A[r]]);return t}function $C(q,e,t){if(t||arguments.length===2)for(var A=0,r=e.length,n;A<r;A++)(n||!(A in e))&&(n||(n=Array.prototype.slice.call(e,0,A)),n[A]=e[A]);return q.concat(n||Array.prototype.slice.call(e))}typeof SuppressedError=="function"&&SuppressedError;var ta="right-scroll-bar-position",Aa="width-before-scroll-bar",qx="with-scroll-bars-hidden",ex="--removed-body-scroll-bar-size";function Oi(q,e){return typeof q=="function"?q(e):q&&(q.current=e),q}function tx(q,e){var t=w.useState(function(){return{value:q,callback:e,facade:{get current(){return t.value},set current(A){var r=t.value;r!==A&&(t.value=A,t.callback(A,r))}}}})[0];return t.callback=e,t.facade}var Ax=typeof window<"u"?y.useLayoutEffect:y.useEffect,Vd=new WeakMap;function rx(q,e){var t=tx(null,function(A){return q.forEach(function(r){return Oi(r,A)})});return Ax(function(){var A=Vd.get(t);if(A){var r=new Set(A),n=new Set(q),o=t.current;r.forEach(function(a){n.has(a)||Oi(a,null)}),n.forEach(function(a){r.has(a)||Oi(a,o)})}Vd.set(t,q)},[q]),t}function nx(q){return q}function ox(q,e){e===void 0&&(e=nx);var t=[],A=!1,r={read:function(){if(A)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return t.length?t[t.length-1]:q},useMedium:function(n){var o=e(n,A);return t.push(o),function(){t=t.filter(function(a){return a!==o})}},assignSyncMedium:function(n){for(A=!0;t.length;){var o=t;t=[],o.forEach(n)}t={push:function(a){return n(a)},filter:function(){return t}}},assignMedium:function(n){A=!0;var o=[];if(t.length){var a=t;t=[],a.forEach(n),o=t}var s=function(){var l=o;o=[],l.forEach(n)},i=function(){return Promise.resolve().then(s)};i(),t={push:function(l){o.push(l),i()},filter:function(l){return o=o.filter(l),t}}}};return r}function ax(q){q===void 0&&(q={});var e=ox(null);return e.options=Pt({async:!0,ssr:!1},q),e}var ld=function(q){var e=q.sideCar,t=id(q,["sideCar"]);if(!e)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var A=e.read();if(!A)throw new Error("Sidecar medium not found");return y.createElement(A,Pt({},t))};ld.isSideCarExport=!0;function sx(q,e){return q.useMedium(e),ld}var cd=ax(),ji=function(){},ra=y.forwardRef(function(q,e){var t=y.useRef(null),A=y.useState({onScrollCapture:ji,onWheelCapture:ji,onTouchMoveCapture:ji}),r=A[0],n=A[1],o=q.forwardProps,a=q.children,s=q.className,i=q.removeScrollBar,l=q.enabled,V=q.shards,u=q.sideCar,g=q.noRelative,d=q.noIsolation,f=q.inert,p=q.allowPinchZoom,h=q.as,m=h===void 0?"div":h,M=q.gapMode,E=id(q,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),v=u,S=rx([t,e]),k=Pt(Pt({},E),r);return y.createElement(y.Fragment,null,l&&y.createElement(v,{sideCar:cd,removeScrollBar:i,shards:V,noRelative:g,noIsolation:d,inert:f,setCallbacks:n,allowPinchZoom:!!p,lockRef:t,gapMode:M}),o?y.cloneElement(y.Children.only(a),Pt(Pt({},k),{ref:S})):y.createElement(m,Pt({},k,{className:s,ref:S}),a))});ra.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},ra.classNames={fullWidth:Aa,zeroRight:ta};var ix=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Vx(){if(!document)return null;var q=document.createElement("style");q.type="text/css";var e=ix();return e&&q.setAttribute("nonce",e),q}function lx(q,e){q.styleSheet?q.styleSheet.cssText=e:q.appendChild(document.createTextNode(e))}function cx(q){var e=document.head||document.getElementsByTagName("head")[0];e.appendChild(q)}var ux=function(){var q=0,e=null;return{add:function(t){q==0&&(e=Vx())&&(lx(e,t),cx(e)),q++},remove:function(){q--,!q&&e&&(e.parentNode&&e.parentNode.removeChild(e),e=null)}}},dx=function(){var q=ux();return function(e,t){y.useEffect(function(){return q.add(e),function(){q.remove()}},[e&&t])}},ud=function(){var q=dx(),e=function(t){var A=t.styles,r=t.dynamic;return q(A,r),null};return e},gx={left:0,top:0,right:0,gap:0},Gi=function(q){return parseInt(q||"",10)||0},fx=function(q){var e=window.getComputedStyle(document.body),t=e[q==="padding"?"paddingLeft":"marginLeft"],A=e[q==="padding"?"paddingTop":"marginTop"],r=e[q==="padding"?"paddingRight":"marginRight"];return[Gi(t),Gi(A),Gi(r)]},px=function(q){if(q===void 0&&(q="margin"),typeof window>"u")return gx;var e=fx(q),t=document.documentElement.clientWidth,A=window.innerWidth;return{left:e[0],top:e[1],right:e[2],gap:Math.max(0,A-t+e[2]-e[0])}},hx=ud(),Mr="data-scroll-locked",mx=function(q,e,t,A){var r=q.left,n=q.top,o=q.right,a=q.gap;return t===void 0&&(t="margin"),`
46
+ */return"production".NODE_ENV!=="production"&&(function(){function q(g,d){return g===d&&(g!==0||1/g===1/d)||g!==g&&d!==d}function e(g,d){l||r.startTransition===void 0||(l=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var f=d();if(!V){var p=d();n(f,p)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),V=!0)}p=o({inst:{value:f,getSnapshot:d}});var h=p[0].inst,m=p[1];return s(function(){h.value=f,h.getSnapshot=d,t(h)&&m({inst:h})},[g,f,d]),a(function(){return t(h)&&m({inst:h}),g(function(){t(h)&&m({inst:h})})},[g]),i(f),f}function t(g){var d=g.getSnapshot;g=g.value;try{var f=d();return!n(g,f)}catch{return!0}}function A(g,d){return d()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var r=w,n=typeof Object.is=="function"?Object.is:q,o=r.useState,a=r.useEffect,s=r.useLayoutEffect,i=r.useDebugValue,l=!1,V=!1,u=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?A:e;ii.useSyncExternalStore=r.useSyncExternalStore!==void 0?r.useSyncExternalStore:u,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})(),ii}var jc;function P0(){return jc||(jc=1,"production".NODE_ENV==="production"?bo.exports=z0():bo.exports=K0()),bo.exports}var Gc=P0();const J0={t:(q,e)=>HA(e)?e:D0(e)&&HA(e.defaultValue)?e.defaultValue:Array.isArray(q)?q[q.length-1]:q,ready:!1},Z0=()=>()=>{},Oq=(q,e={})=>{const{i18n:t}=e,{i18n:A,defaultNS:r}=w.useContext(L0)||{},n=t||A||G0();n&&!n.reportNamespaces&&(n.reportNamespaces=new Y0),n||Dc(n,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const o=w.useMemo(()=>({...O0(),...n?.options?.react,...e}),[n,e]),{useSuspense:a,keyPrefix:s}=o,i=w.useMemo(()=>{const E=r||n?.options?.defaultNS;return HA(E)?[E]:E||["translation"]},[q,r,n]);n?.reportNamespaces?.addUsedNamespaces?.(i);const l=w.useRef(0),V=w.useCallback(E=>{if(!n)return Z0;const{bindI18n:v,bindI18nStore:S}=o,k=()=>{l.current+=1,E()};return v&&n.on(v,k),S&&n.store.on(S,k),()=>{v&&v.split(" ").forEach(I=>n.off(I,k)),S&&S.split(" ").forEach(I=>n.store.off(I,k))}},[n,o]),u=w.useRef(),g=w.useCallback(()=>{if(!n)return J0;const E=!!(n.isInitialized||n.initializedStoreOnce)&&i.every(R=>T0(R,n,o)),v=e.lng||n.language,S=l.current,k=u.current;if(k&&k.ready===E&&k.lng===v&&k.keyPrefix===s&&k.revision===S)return k;const L={t:n.getFixedT(v,o.nsMode==="fallback"?i:i[0],s),ready:E,lng:v,keyPrefix:s,revision:S};return u.current=L,L},[n,i,s,o,e.lng]),[d,f]=w.useState(0),{t:p,ready:h}=Gc.useSyncExternalStore(V,g,g);w.useEffect(()=>{if(n&&!h&&!a){const E=()=>f(v=>v+1);e.lng?Uc(n,e.lng,i,E):oi(n,i,E)}},[n,e.lng,i,h,a,d]);const m=n||{},M=w.useMemo(()=>{const E=[p,m,h];return E.t=p,E.i18n=m,E.ready=h,E},[p,m,h]);if(n&&a&&!h)throw new Promise(E=>{const v=()=>E();e.lng?Uc(n,e.lng,i,v):oi(n,i,v)});return M},W0={AddMembers:"Add members",Admin:"Admin",areTyping:"are typing",Cancel:"Cancel",ChatName:"Chat name",ChatNameRequired:"Chat name is required",Chat:"Chat",Chats:"Chats",ChooseChat:"Choose a chat",Continue:"Continue",CreateGroupChat:"Create group chat",Delete:"Delete",Draft:"Draft",EnterMessage:"Enter message",EnterUserName:"Enter user name",ExitChat:"Exit chat",FileTypeNotSupported:"File format is not supported",isTyping:"is typing",me:"me",Members:"Members",members:"members",NewGroup:"New group",NewMessage:"New message",NoChats:"Begin your first chat and see what happens!",NoMessages:"No messages yet",NoOnlineUsers:"No online users",Profile:"Profile",RemoveMembers:"Remove members","RemoveMembers?":"Are you sure you want to remove members?",Reset:"Reset",Search:"Search",Select:"Select",Send:"Send",StartChat:"Start chat",NewUserChatDialogTitle:"Send message to user",NewGroupChatDialogTitle:"Start a new Group",typing:"typing",Users:"Users",you:"you",Block:"Block",UnBlock:"Unblock",Report:"Report",ReportUser:"Report user",WhatsWrongWithThisUser:"What's wrong with this user?",ProvideReason:"Reason for reporting",ReportCreatedSuccessfully:"Report has been created successfully",ReportSubmitFailed:"Failed to submit report",MyProfile:"My profile",YouBlocked:"You are blocked by this user",BlockList:"Block list",AddToBlockList:"Add to block list","AddToBlockList?":"Are you sure you want to add {{name}} to block list?",RemoveFromBlockList:"Remove from block list","RemoveFromBlockList?":"Are you sure you want to remove {{name}} from block list?",BlockListEmpty:"Block list is empty",NotificationSettings:"Notification settings",Notifications:"Notifications",NotificationSound:"Notification sound",PushNotifications:"Push notifications",PleaseWait:"Please wait",Available:"Available",Busy:"Busy",Away:"Away",Online:"Online",IncomingCall:"Incoming call",IncomingAudioCall:"Incoming audio call from {{name}}",IncomingVideoCall:"Incoming video call from {{name}}",Accept:"Accept",Reject:"Reject",RejectedCall:"{{name}} rejected the call",MissedCall:"Missed call from {{name}}",AuthForm:{Login:"Login",Password:"Password",Register:"Register",Registration:"Registration",LoginRequired:"Login is required",LoginMinLimit:"Login must be at least {{limit}} symbols",LoginMaxLimit:"Login must be at most {{limit}} symbols",PasswordRequired:"Login is required",PasswordMinLimit:"Password must be at least {{limit}} symbols",PasswordMaxLimit:"Password must be at most {{limit}} symbols",LoginDescription:"Enter your login and password to access your account",RegisterDescription:"Fill in the form below to sign up","ToRegister?":"Don't have an account?","ToLogin?":"Already have an account?"},SingleViewForm:{Title:"Submit your contact data to start a chat",Subtitle:"We will not share your email address. Your email address is used solely to contact you",NamePlaceholder:"Name",NameRequired:"Name is required",EmailPlaceholder:"Email",EmailRequired:"Email is required",EmailInvalid:"Invalid email format",AcceptTermsAndConditions:"Accept terms and conditions",AcceptTermsAndConditionsError:"You must accept the terms and conditions",TermsAndConditionsText:"By clicking this checkbox, you agree to the",TermsAndConditionsLink:"terms and conditions",RememberMe:"Remember me",RememberMeText:"This is my private device",Next:"Next"},SingleViewChatError:"Opponent(s) for the chat not found",Information:"Information",AI:{GetSummary:"Get summary",ChangeMessageTone:"Change message tone",SummaryMessageTitle:"Only you can see this message",forLast7Days:"for last 7 days",forLastDay:"for last day",forUnreads:"for unreads",MessageTone:"Change message tone",EmptyMessage:"Can't change tone of empty message",positive:"positive",negative:"negative",cringe:"cringe"},CallHistory:{RejectedIncoming:"Rejected incoming",RejectedOutgoing:"Rejected outgoing",Unanswered:"Unanswered",Missed:"Missed",Canceled:"Canceled",Ended:"Ended",videoCall:"video call",audioCall:"audio call",defaultCall:"call"}},H0={AddMembers:"Προσθήκη μελών",Admin:"Διαχειριστής",areTyping:"είναι",Cancel:"Ακύρωση",ChatName:"Όνομα συνομιλίας",ChatNameRequired:"Το όνομα συνομιλίας είναι υποχρεωτικό",Chat:"Συνομιλία",Chats:"Συνομιλίες",ChooseChat:"Επιλέξτε συνομιλία",Continue:"Συνέχεια",CreateGroupChat:"Δημιουργία ομαδικής συνομιλίας",Delete:"Διαγραφή",Draft:"Πρόχειρο",EnterMessage:"Εισάγετε μήνυμα",EnterUserName:"Εισάγετε όνομα χρήστη",ExitChat:"Έξοδος από τη συνομιλία",FileTypeNotSupported:"Η μορφή αρχείου δεν υποστηρίζεται",isTyping:"είναι",me:"εγώ",Members:"Μέλη",members:"μέλη",NewGroup:"Νέα ομάδα",NewMessage:"Νέο μήνυμα",NoChats:"Επιλέξτε κάποιο χρήστη από τη λίστα Χρήστες και ξεκινήστε την πρώτη σας συνομιλία!",NoMessages:"Δεν υπάρχουν μηνύματα",NoOnlineUsers:"Δεν υπάρχουν συνδεδεμένοι χρήστες",Profile:"Προφίλ",RemoveMembers:"Αφαίρεση μελών","RemoveMembers?":"Είστε σίγουροι ότι θέλετε να αφαιρέσετε τα μέλη;",Reset:"Επαναφορά",Search:"Αναζήτηση",Select:"Επιλογή",Send:"Αποστολή",StartChat:"Έναρξη συνομιλίας",NewUserChatDialogTitle:"Αποστολή μηνύματος σε μέλος",NewGroupChatDialogTitle:"Δημιουργία νέας ομάδας",typing:"πληκτρολογεί",Users:"Χρήστες",you:"εσύ",Block:"Block",UnBlock:"Unblock",Report:"Αναφορά",ReportUser:"Αναφορά χρήστη",WhatsWrongWithThisUser:"Τι θέλετε να αναφέρετε για αυτόν το χρήστη;",ProvideReason:"Λόγος αναφοράς",ReportCreatedSuccessfully:"Η αναφορά για το χρήστη έγινε",ReportSubmitFailed:"Σφάλμα στη δημιουργία αναφοράς",MyProfile:"Το προφίλ μου",YouBlocked:"Αυτός ο χρήστης σας έχει κάνει Block",BlockList:"Λίστα Blocked χρηστών",AddToBlockList:"Προσθήκη στη λίστα Blocked","AddToBlockList?":"Σίγουρα θέλετε να προσθέσετε το χρήστη {{name}} στη λίστα Blocked;",RemoveFromBlockList:"Αφαίρεση από τη λίστα Blocked","RemoveFromBlockList?":"Σίγουρα θέλετε να αφαιρέσετε το χρήστη {{name}} από τη λίστα Blocked;",BlockListEmpty:"Η Blocked λίστα είναι άδεια",NotificationSettings:"Ρυθμίσεις ειδοποιήσεων",Notifications:"Ειδοποιήσεις",NotificationSound:"Ήχος ειδοποίησης",PushNotifications:"Ειδοποιήσεις push",PleaseWait:"Παρακαλώ περιμένετε",Available:"Διαθέσιμος/η",Busy:"Απασχολημένος/η",Away:"Απουσιάζω",Online:"Συνδεδεμένος/η",IncomingCall:"Εισερχόμενη κλήση",IncomingAudioCall:"Εισερχόμενη κλήση ήχου από τον χρήστη {{name}}",IncomingVideoCall:"Εισερχόμενη κλήση βίντεο από τον χρήστη {{name}}",Accept:"Αποδοχή",Reject:"Απόρριψη",RejectedCall:"Ο χρήστης {{name}} απέρριψε την κλήση",MissedCall:"Αναπάντητη κλήση από τον χρήστη {{name}}",AuthForm:{Login:"Σύνδεση",Password:"Κωδικός πρόσβασης",Register:"Εγγραφή",Registration:"Εγγραφή",LoginRequired:"Το όνομα χρήστη είναι υποχρεωτικό",LoginMinLimit:"Το όνομα χρήστη πρέπει να έχει τουλάχιστον {{limit}} χαρακτήρες",LoginMaxLimit:"Το όνομα χρήστη πρέπει να έχει το πολύ {{limit}} χαρακτήρες",PasswordRequired:"Ο κωδικός πρόσβασης είναι υποχρεωτικός",PasswordMinLimit:"Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον {{limit}} χαρακτήρες",PasswordMaxLimit:"Ο κωδικός πρόσβασης πρέπει να έχει το πολύ {{limit}} χαρακτήρες",LoginDescription:"Εισάγετε το όνομα χρήστη και τον κωδικό πρόσβασης για να αποκτήσετε πρόσβαση στον λογαριασμό σας",RegisterDescription:"Συμπληρώστε την παρακάτω φόρμα για να εγγραφείτε","ToRegister?":"Δεν έχετε λογαριασμό;","ToLogin?":"Έχετε ήδη λογαριασμό;"},SingleViewForm:{Title:"Υποβάλετε τα στοιχεία επικοινωνίας σας για να ξεκινήσετε μια συνομιλία",Subtitle:"Δεν θα κοινοποιήσουμε τη διεύθυνση email σας. Η διεύθυνση email σας χρησιμοποιείται αποκλειστικά για να επικοινωνήσουμε μαζί σας.",NamePlaceholder:"Όνομα",NameRequired:"Το όνομα είναι υποχρεωτικό",EmailPlaceholder:"E-mail",EmailRequired:"Απαιτείται email",Emailnvalid:"Μη έγκυρη μορφή email",AcceptTermsAndConditions:"Αποδοχή όρων και προϋποθέσεων",AcceptTermsAndConditionsError:"Πρέπει να αποδεχτείτε τους όρους και τις προϋποθέσεις",TermsAndConditionsText:"Κάνοντας κλικ σε αυτό το πλαίσιο, συμφωνείτε με τους",TermsAndConditionsLink:"όρους και προϋποθέσεις",RememberMe:"Να με θυμάσαι",RememberMeText:"Αυτή είναι η προσωπική μου συσκευή",Next:"Επόμενο"},SingleViewChatError:"Δεν βρέθηκαν αντίπαλοι για τη συνομιλία",Information:"Πληροφορίες",AI:{GetSummary:"Λήψη σύνοψης",ChangeMessageTone:"Αλλαγή τόνου μηνύματος",SummaryMessageTitle:"Μόνο εσείς μπορείτε να δείτε αυτό το μήνυμα",forLast7Days:"για τις τελευταίες 7 ημέρες",forLastDay:"για την τελευταία ημέρα",forUnreads:"για μη αναγνωσμένα",MessageTone:"Αλλαγή τόνου μηνύματος",EmptyMessage:"Δεν είναι δυνατή η αλλαγή του τόνου ενός κενού μηνύματος",positive:"θετικός",negative:"αρνητικός",cringe:"κρίμα"},CallHistory:{RejectedIncoming:"Απορρίφθηκε εισερχόμενη κλήση",RejectedOutgoing:"Απορρίφθηκε εξερχόμενη κλήση",Unanswered:"Μη απαντημένη κλήση",Missed:"Αναπάντητη κλήση",Canceled:"Ακυρώθηκε",Ended:"Ολοκληρώθηκε",videoCall:"βιντεοκλήση",audioCall:"ηχητική κλήση",defaultCall:"κλήση"}},X0={AddMembers:"Додати учасників",Admin:"Адмін",areTyping:"пишуть",Cancel:"Скасувати",ChatName:"Назва чату",ChatNameRequired:"Назва чату є обов'язковою",Chat:"Чат",Chats:"Чати",ChooseChat:"Оберіть чат",Continue:"Продовжити",CreateGroupChat:"Створити груповий чат",Delete:"Видалити",Draft:"Чернетка",EnterMessage:"Введіть повідомлення",EnterUserName:"Введіть ім'я користувача",ExitChat:"Вийти з чату",FileTypeNotSupported:"Формат файлу не підтримується",isTyping:"пише",me:"я",Members:"Учасники",members:"учасники",NewGroup:"Нова група",NewMessage:"Нове повідомлення",NoChats:"Почніть свою першу розмову та подивіться, що станеться!",NoMessages:"Поки що немає повідомлень",NoOnlineUsers:"Немає онлайн-користувачів",Profile:"Профіль",RemoveMembers:"Видалити учасників","RemoveMembers?":"Ви впевнені, що хочете видалити учасників?",Reset:"Скинути",Search:"Пошук",Select:"Вибрати",Send:"Надіслати",StartChat:"Розпочати чат",NewUserChatDialogTitle:"Новий чат з користувачем",NewGroupChatDialogTitle:"Нова група",typing:"друкує",Users:"Користувачі",you:"ви",Block:"Заблокувати",UnBlock:"Розблокувати",Report:"Поскаржитися",ReportUser:"Поскаржитися на користувача",WhatsWrongWithThisUser:"Що не так з цим користувачем?",ProvideReason:"Підстава",ReportCreatedSuccessfully:"Звіт поданий успішно",ReportSubmitFailed:"Помилка при поданні звіту",MyProfile:"Мій профіль",YouBlocked:"Цей користувача вас заблокував",BlockList:"Список заблокованих",AddToBlockList:"Додати до списку заблокованих","AddToBlockList?":"Ви впевнені, що хочете додати {{name}} до списку заблокованих?",RemoveFromBlockList:"Видалити зі списку заблокованих","RemoveFromBlockList?":"Ви впевнені, що хочете видалити {{name}} зі списку заблокованих?",BlockListEmpty:"Список заблокованих порожній",NotificationSettings:"Налаштування сповіщень",Notifications:"Сповіщення",NotificationSound:"Звук сповіщення",PushNotifications:"Push-сповіщення",PleaseWait:"Будь ласка, зачекайте",Available:"Присутній",Busy:"Зайнятий",Away:"Відсутній",Online:"В мережі",IncomingCall:"Вхідний виклик",IncomingAudioCall:"Вхідний аудіо виклик від {{name}}",IncomingVideoCall:"Вхідний відео виклик від {{name}}",Accept:"Прийняти",Reject:"Відхилити",RejectedCall:"{{name}} відхилив виклик",MissedCall:"Пропущений виклик від {{name}}",AuthForm:{Login:"Логін",Password:"Пароль",Register:"Зареєструвати",Registration:"Реєстрація",LoginRequired:"Логін є обов'язковим",LoginMinLimit:"Логін має містити щонайменше {{limit}} символів",LoginMaxLimit:"Логін має містити не більше {{limit}} символів",PasswordRequired:"Пароль є обов'язковим",PasswordMinLimit:"Пароль має містити щонайменше {{limit}} символів",PasswordMaxLimit:"Пароль має містити не більше {{limit}} символів",LoginDescription:"Введіть ваш логін та пароль для доступу до акаунту",RegisterDescription:"Заповніть форму нижче для реєстрації","ToRegister?":"Ще не маєте акаунту?","ToLogin?":"Вже маєте акаунт?"},SingleViewForm:{Title:"Введіть свою електронну пошту, щоб почати чат",Subtitle:"Ми не будемо передавати вашу електронну пошту. Ваша електронна пошта використовується виключно для зв'язку з вами",NamePlaceholder:"Ім'я",NameRequired:"Ім'я є обов'язковим",EmailPlaceholder:"Електронна пошта",EmailRequired:"Електронна пошта є обов'язковою",EmailInvalid:"Невірний формат електронної пошти",AcceptTermsAndConditions:"Прийняти умови та положення",AcceptTermsAndConditionsError:"Ви повинні прийняти умови та положення",TermsAndConditionsText:"Натискаючи цю галочку, ви погоджуєтесь з",TermsAndConditionsLink:"умовами та положеннями",RememberMe:"Запам'ятати мене",RememberMeText:"Це мій приватний пристрій",Next:"Далі"},SingleViewChatError:"Опонента(ів) для чату не знайдено",Information:"Інформація",AI:{GetSummary:"Отримати резюме",ChangeMessageTone:"Змінити тон повідомлення",SummaryMessageTitle:"Тільки ти можеш бачити це повідомлення",forLast7Days:"за останні 7 днів",forLastDay:"за останній день",forUnreads:"для непрочитаних",MessageTone:"Змінити тон повідомлення",EmptyMessage:"Неможливо змінити тон пустого повідомлення",positive:"позитивний",negative:"негативний",cringe:"крінж"},CallHistory:{RejectedIncoming:"Відхилений вхідний",RejectedOutgoing:"Відхилений вихідний",Unanswered:"Неприйнятий",Missed:"Пропущений",Canceled:"Скасований",Ended:"Завершений",videoCall:"відео виклик",audioCall:"аудіо виклик",defaultCall:"виклик"}},Fc={en:"English",ua:"Ukrainian",el:"Greek"},_0=typeof window<"u"&&localStorage.getItem("translation")||"en";Qe.use(F0).init({resources:{en:{translation:W0},el:{translation:H0},ua:{translation:X0}},lng:_0,fallbackLng:"en",interpolation:{escapeValue:!1}});const Lc=q=>{let e;const t=new Set,A=(i,l)=>{const V=typeof i=="function"?i(e):i;if(!Object.is(V,e)){const u=e;e=l??(typeof V!="object"||V===null)?V:Object.assign({},e,V),t.forEach(g=>g(e,u))}},r=()=>e,a={setState:A,getState:r,getInitialState:()=>s,subscribe:i=>(t.add(i),()=>t.delete(i))},s=e=q(A,r,a);return a},$0=(q=>q?Lc(q):Lc),qE=q=>q;function eE(q,e=qE){const t=w.useSyncExternalStore(q.subscribe,w.useCallback(()=>e(q.getState()),[q,e]),w.useCallback(()=>e(q.getInitialState()),[q,e]));return w.useDebugValue(t),t}const Yc=q=>{const e=$0(q),t=A=>eE(e,A);return Object.assign(t,e),t},Ae=(q=>q?Yc(q):Yc);var aA=(q=>(q.CHATS="chats",q.USERS="users",q))(aA||{});const zc={activeTab:"chats"},ko=Ae(q=>({...zc,setActiveTab:e=>q({activeTab:e}),resetActiveTab:()=>q({activeTab:zc.activeTab})})),tE=()=>{ko.setState({activeTab:"chats"})},Vi={visible:!1,title:""},Io=Ae(q=>({...Vi,showAlertBusy:(e="")=>q({visible:!0,title:e}),hideAlertBusy:()=>q({visible:!1,title:Vi.title})})),AE=()=>{Io.setState({visible:!1,title:Vi.title})},rE={CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_EXTERNAL_ID:"EXTERNAL-id-012345",CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_NAME:"Test Store Name - PROD",CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_OPPONENTS_IDS:"4Ja3BiEWTo,bfoosyJijU,o8k9iLdYiI",CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_PHOTO:"/logo.png"},{CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_EXTERNAL_ID:nE,CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_NAME:oE,CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_PHOTO:aE,CHAT_WIDGET_CONNECTYCUBE_SINGLE_VIEW_CHAT_OPPONENTS_IDS:sE}=rE||"production";var Bo=(q=>(q.SINGLE="1on1",q.GROUP="group",q))(Bo||{});const wr={defaultChat:null,singleViewChat:{externalId:nE,opponentUserIds:sE,name:oE,photo:aE}},li=Ae(q=>({...wr,setDefaultChat:e=>q({defaultChat:e}),setSingleViewChat:e=>q({singleViewChat:e}),resetDefaultChat:()=>q({defaultChat:wr.defaultChat}),resetSingleViewChat:()=>q({singleViewChat:wr.singleViewChat})})),iE=q=>{li.setState(q)},VE=()=>{li.setState(wr)},ye={opened:!1,splitView:!1,singleView:!1,showChatStatus:!1,showOnlineUsersTab:!1,hideNewChatButton:!1,hideNewUserChatOption:!1,hideNewGroupChatOption:!1,imgLogoSource:"/logo.png"},Be=Ae((q,e)=>({...ye,setOpened:t=>q({opened:t}),setSplitView:t=>q({splitView:t}),setSingleView:t=>q({singleView:t,splitView:!1}),setShowChatStatus:t=>q({showChatStatus:t}),setShowOnlineUsersTab:t=>q({showOnlineUsersTab:t}),setHideNewChatButton:t=>q({hideNewChatButton:t}),setHideNewUserChatOption:t=>q({hideNewUserChatOption:t}),setHideNewGroupChatOption:t=>q({hideNewGroupChatOption:t}),setImgLogoSource:t=>q({imgLogoSource:t}),toggleOpened:()=>q({opened:!e().opened}),resetOpened:()=>q({opened:ye.opened}),resetSplitView:()=>q({splitView:ye.splitView}),resetSingleView:()=>q({singleView:ye.singleView}),resetShowChatStatus:()=>q({showChatStatus:ye.showChatStatus}),resetShowOnlineUsersTab:()=>q({showOnlineUsersTab:ye.showOnlineUsersTab}),resetHideNewChatButton:()=>q({hideNewChatButton:ye.hideNewChatButton}),resetHideNewUserChatOption:()=>q({hideNewUserChatOption:ye.hideNewUserChatOption}),resetHideNewGroupChatOption:()=>q({hideNewGroupChatOption:ye.hideNewGroupChatOption}),resetImgLogoSource:()=>q({imgLogoSource:ye.imgLogoSource})})),lE=q=>{Be.setState(q)},cE=()=>{Be.setState(ye)},To=43200,Kc=1440,Pc=Symbol.for("constructDateFrom");function ci(q,e){return typeof q=="function"?q(e):q&&typeof q=="object"&&Pc in q?q[Pc](e):q instanceof Date?new q.constructor(e):new Date(e)}function MA(q,e){return ci(q,q)}let uE={};function dE(){return uE}function Jc(q){const e=MA(q),t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),+q-+t}function ui(q,...e){const t=ci.bind(null,q||e.find(A=>typeof A=="object"));return e.map(t)}function Do(q,e){const t=+MA(q)-+MA(e);return t<0?-1:t>0?1:t}function gE(q){return ci(q,Date.now())}function fE(q,e,t){const[A,r]=ui(t?.in,q,e),n=A.getFullYear()-r.getFullYear(),o=A.getMonth()-r.getMonth();return n*12+o}function pE(q){return e=>{const A=(q?Math[q]:Math.trunc)(e);return A===0?0:A}}function hE(q,e){return+MA(q)-+MA(e)}function mE(q,e){const t=MA(q);return t.setHours(23,59,59,999),t}function wE(q,e){const t=MA(q),A=t.getMonth();return t.setFullYear(t.getFullYear(),A+1,0),t.setHours(23,59,59,999),t}function yE(q,e){const t=MA(q);return+mE(t)==+wE(t)}function vE(q,e,t){const[A,r,n]=ui(t?.in,q,q,e),o=Do(r,n),a=Math.abs(fE(r,n));if(a<1)return 0;r.getMonth()===1&&r.getDate()>27&&r.setDate(30),r.setMonth(r.getMonth()-o*a);let s=Do(r,n)===-o;yE(A)&&a===1&&Do(A,n)===1&&(s=!1);const i=o*(a-+s);return i===0?0:i}function EE(q,e,t){const A=hE(q,e)/1e3;return pE(t?.roundingMethod)(A)}const ME={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},CE=(q,e,t)=>{let A;const r=ME[q];return typeof r=="string"?A=r:e===1?A=r.one:A=r.other.replace("{{count}}",e.toString()),t?.addSuffix?t.comparison&&t.comparison>0?"in "+A:A+" ago":A};function di(q){return(e={})=>{const t=e.width?String(e.width):q.defaultWidth;return q.formats[t]||q.formats[q.defaultWidth]}}const xE={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},SE={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},bE={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},kE={date:di({formats:xE,defaultWidth:"full"}),time:di({formats:SE,defaultWidth:"full"}),dateTime:di({formats:bE,defaultWidth:"full"})},IE={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},BE=(q,e,t,A)=>IE[q];function sn(q){return(e,t)=>{const A=t?.context?String(t.context):"standalone";let r;if(A==="formatting"&&q.formattingValues){const o=q.defaultFormattingWidth||q.defaultWidth,a=t?.width?String(t.width):o;r=q.formattingValues[a]||q.formattingValues[o]}else{const o=q.defaultWidth,a=t?.width?String(t.width):q.defaultWidth;r=q.values[a]||q.values[o]}const n=q.argumentCallback?q.argumentCallback(e):e;return r[n]}}const TE={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},DE={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},NE={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},UE={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},RE={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},QE={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},OE={ordinalNumber:(q,e)=>{const t=Number(q),A=t%100;if(A>20||A<10)switch(A%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},era:sn({values:TE,defaultWidth:"wide"}),quarter:sn({values:DE,defaultWidth:"wide",argumentCallback:q=>q-1}),month:sn({values:NE,defaultWidth:"wide"}),day:sn({values:UE,defaultWidth:"wide"}),dayPeriod:sn({values:RE,defaultWidth:"wide",formattingValues:QE,defaultFormattingWidth:"wide"})};function Vn(q){return(e,t={})=>{const A=t.width,r=A&&q.matchPatterns[A]||q.matchPatterns[q.defaultMatchWidth],n=e.match(r);if(!n)return null;const o=n[0],a=A&&q.parsePatterns[A]||q.parsePatterns[q.defaultParseWidth],s=Array.isArray(a)?GE(a,V=>V.test(o)):jE(a,V=>V.test(o));let i;i=q.valueCallback?q.valueCallback(s):s,i=t.valueCallback?t.valueCallback(i):i;const l=e.slice(o.length);return{value:i,rest:l}}}function jE(q,e){for(const t in q)if(Object.prototype.hasOwnProperty.call(q,t)&&e(q[t]))return t}function GE(q,e){for(let t=0;t<q.length;t++)if(e(q[t]))return t}function FE(q){return(e,t={})=>{const A=e.match(q.matchPattern);if(!A)return null;const r=A[0],n=e.match(q.parsePattern);if(!n)return null;let o=q.valueCallback?q.valueCallback(n[0]):n[0];o=t.valueCallback?t.valueCallback(o):o;const a=e.slice(r.length);return{value:o,rest:a}}}const LE=/^(\d+)(th|st|nd|rd)?/i,YE=/\d+/i,zE={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},KE={any:[/^b/i,/^(a|c)/i]},PE={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},JE={any:[/1/i,/2/i,/3/i,/4/i]},ZE={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},WE={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:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},HE={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},XE={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},_E={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},$E={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}},qM={ordinalNumber:FE({matchPattern:LE,parsePattern:YE,valueCallback:q=>parseInt(q,10)}),era:Vn({matchPatterns:zE,defaultMatchWidth:"wide",parsePatterns:KE,defaultParseWidth:"any"}),quarter:Vn({matchPatterns:PE,defaultMatchWidth:"wide",parsePatterns:JE,defaultParseWidth:"any",valueCallback:q=>q+1}),month:Vn({matchPatterns:ZE,defaultMatchWidth:"wide",parsePatterns:WE,defaultParseWidth:"any"}),day:Vn({matchPatterns:HE,defaultMatchWidth:"wide",parsePatterns:XE,defaultParseWidth:"any"}),dayPeriod:Vn({matchPatterns:_E,defaultMatchWidth:"any",parsePatterns:$E,defaultParseWidth:"any"})},eM={code:"en-US",formatDistance:CE,formatLong:kE,formatRelative:BE,localize:OE,match:qM,options:{weekStartsOn:0,firstWeekContainsDate:1}};function tM(q,e,t){const A=dE(),r=t?.locale??A.locale??eM,n=2520,o=Do(q,e);if(isNaN(o))throw new RangeError("Invalid time value");const a=Object.assign({},t,{addSuffix:t?.addSuffix,comparison:o}),[s,i]=ui(t?.in,...o>0?[e,q]:[q,e]),l=EE(i,s),V=(Jc(i)-Jc(s))/1e3,u=Math.round((l-V)/60);let g;if(u<2)return t?.includeSeconds?l<5?r.formatDistance("lessThanXSeconds",5,a):l<10?r.formatDistance("lessThanXSeconds",10,a):l<20?r.formatDistance("lessThanXSeconds",20,a):l<40?r.formatDistance("halfAMinute",0,a):l<60?r.formatDistance("lessThanXMinutes",1,a):r.formatDistance("xMinutes",1,a):u===0?r.formatDistance("lessThanXMinutes",1,a):r.formatDistance("xMinutes",u,a);if(u<45)return r.formatDistance("xMinutes",u,a);if(u<90)return r.formatDistance("aboutXHours",1,a);if(u<Kc){const d=Math.round(u/60);return r.formatDistance("aboutXHours",d,a)}else{if(u<n)return r.formatDistance("xDays",1,a);if(u<To){const d=Math.round(u/Kc);return r.formatDistance("xDays",d,a)}else if(u<To*2)return g=Math.round(u/To),r.formatDistance("aboutXMonths",g,a)}if(g=vE(i,s),g<12){const d=Math.round(u/To);return r.formatDistance("xMonths",d,a)}else{const d=g%12,f=Math.trunc(g/12);return d<3?r.formatDistance("aboutXYears",f,a):d<9?r.formatDistance("overXYears",f,a):r.formatDistance("almostXYears",f+1,a)}}function Zc(q,e){return tM(q,gE(q),e)}const Wc=q=>Symbol.iterator in q,Hc=q=>"entries"in q,Xc=(q,e)=>{const t=q instanceof Map?q:new Map(q.entries()),A=e instanceof Map?e:new Map(e.entries());if(t.size!==A.size)return!1;for(const[r,n]of t)if(!A.has(r)||!Object.is(n,A.get(r)))return!1;return!0};function AM(q,e){return!!Object.is(q,e)||typeof q=="object"&&q!==null&&typeof e=="object"&&e!==null&&Object.getPrototypeOf(q)===Object.getPrototypeOf(e)&&(Wc(q)&&Wc(e)?Hc(q)&&Hc(e)?Xc(q,e):((t,A)=>{const r=t[Symbol.iterator](),n=A[Symbol.iterator]();let o=r.next(),a=n.next();for(;!o.done&&!a.done;){if(!Object.is(o.value,a.value))return!1;o=r.next(),a=n.next()}return!!o.done&&!!a.done})(q,e):Xc({entries:()=>Object.entries(q)},{entries:()=>Object.entries(e)}))}function Ct(q){const e=w.useRef(void 0);return t=>{const A=q(t);return AM(e.current,A)?e.current:e.current=A}}const CA=q=>function(e){const t=w.useRef(q.getState()[e]);return w.useEffect(()=>{const A=q.subscribe(r=>r[e],r=>{t.current=r});return()=>A()},[e]),t},Yt=q=>(e,t,A)=>{const r=A.subscribe;return A.subscribe=(n,o,a)=>{let s=n;if(o){const i=a?.equalityFn||Object.is;let l=n(A.getState());s=V=>{const u=n(V);if(!i(l,u)){const g=l;o(l=u,g)}},a?.fireImmediately&&o(l,l)}return r(s)},q(e,t,A)},No=(q,e)=>`[@connectycube/react@4.7.18]${q?`[${q}]`:""}${e?`[${e}]`:""}`,rM=(q,e,...t)=>console.log(`${No(q,e)}[Log]:`,...t),nM=(q,e,...t)=>console.info(`${No(q,e)}[Info]:`,...t),oM=(q,e,...t)=>console.warn(`${No(q,e)}[Warn]:`,...t),aM=(q,e,...t)=>console.error(`${No(q,e)}[Error]:`,...t),ln=q=>({log:(e,...t)=>rM(q,e,...t),info:(e,...t)=>nM(q,e,...t),warn:(e,...t)=>oM(q,e,...t),error:(e,...t)=>aM(q,e,...t)}),cn=ln("useBlockList"),yr=ln("useChat"),sM=ln("useConnectyCube"),gi=ln("useUsers"),We=ln("useVideochat"),fi=q=>{let e;if(typeof q=="string"){const t=new Date(q).getTime();e=isNaN(t)?void 0:t}else typeof q=="number"&&(e=1e3*q);return e},_c=q=>{let e;if(q<=30)e="Online";else if(q<3600)e=`Last seen ${Math.ceil(q/60)} minutes ago`;else if(q<86400)e=`Last seen ${Math.ceil(q/3600)} hours ago`;else{const t=new Date(Date.now()-1e3*q);e=`Last seen ${t.getUTCDate()}/${(t.getMonth()+1).toString().padStart(2,"0")}/${t.getFullYear()}`}return e},$c=q=>fi(q.last_message_date_sent)||fi(q.updated_at)||fi(q.created_at)||0,un=(q,e)=>$c(e)-$c(q),XA=(q,e)=>{const t={total:0};return q.forEach(({_id:A,unread_messages_count:r=0})=>{const n=e===A?0:r;t[A]=n,t.total+=n}),t},Uo={dialogs:[],totalDialogsReached:!1,selectedDialog:void 0,activatedDialogs:new Set,privateDialogsIds:{},unreadMessagesCount:{total:0}},pi=Ae()(Yt((q,e)=>({...Uo,upsertDialog:t=>{const A=e().dialogs||[],r=[t,...A.filter(o=>o._id!==t._id)],n=XA(r);q({dialogs:r,unreadMessagesCount:n})},upsertDialogs:t=>{const A=[...e().dialogs||[],...t],r=Array.from(new Map(A.map(o=>[o._id,o])).values()).sort(un),n=XA(r);q({dialogs:r,unreadMessagesCount:n})},updateDialog:(t,A)=>{const r=(e().dialogs||[]).map(o=>o._id===t?{...o,...A}:o).sort(un),n=XA(r);q({dialogs:r,unreadMessagesCount:n})},updateDialogOnMessage:(t,A,r=!1)=>{const n=e().selectedDialog,o=(e().dialogs||[]).map(s=>s._id===t?{...s,unread_messages_count:r||n&&n._id===A.dialog_id?s.unread_messages_count:(s.unread_messages_count||0)+1,last_message:A.body,last_message_date_sent:r?s.last_message_date_sent:parseInt(A.extension.date_sent)}:s).sort(un),a=XA(o);q({dialogs:o,unreadMessagesCount:a})},updateDialogOnReadMessage:t=>{const A=(e().dialogs||[]).map(n=>n._id===t?{...n,unread_messages_count:Math.max(0,n.unread_messages_count-1)}:n),r=XA(A);q({dialogs:A,unreadMessagesCount:r})},addParticipantsToDialog:(t,A)=>{const r=(e().dialogs||[]).map(n=>(n._id===t&&(n.occupants_ids=Array.from(new Set([...n.occupants_ids,...A]))),n)).sort(un);q({dialogs:r})},removeParticipantsFromDialog:(t,A)=>{const r=(e().dialogs||[]).map(n=>(n._id===t&&(n.occupants_ids=n.occupants_ids.filter(o=>!A.includes(o))),n)).sort(un);q({dialogs:r})},removeDialog:t=>{const A=(e().dialogs||[]).filter(n=>n._id!==t),r=XA(A);q({dialogs:A,unreadMessagesCount:r})},setSelectedDialog:t=>{const A=e().dialogs||[],r=XA(A,t?._id);q({selectedDialog:t,unreadMessagesCount:r})},resetSelectedDialog:()=>{q({selectedDialog:Uo.selectedDialog})},activateDialog:t=>{q({activatedDialogs:e().activatedDialogs?.add(t)})},resetActivatedDialogs:()=>{q({activatedDialogs:new Set})},addPrivateDialogId:(t,A)=>{const r={...e().privateDialogsIds||{},[t]:A};q({privateDialogsIds:r})},removePrivateDialogId:t=>{const A={...e().privateDialogsIds};delete A[t],q({privateDialogsIds:A})},setTotalDialogsReached:t=>{q({totalDialogsReached:t})},resetTotalDialogsReached:()=>{q({totalDialogsReached:Uo.totalDialogsReached})},resetDialogsStore:()=>{q(Uo)}})));var pe;(function(q){q.WAIT="wait",q.LOST="lost",q.SENT="sent",q.READ="read"})(pe||(pe={}));const hi={messages:{},totalMessagesReached:[]},mi=Ae()(Yt((q,e)=>({...hi,addMessage:(t,A)=>{const r=e().messages||{},n=[...r[t]||[],A],o={...r,[t]:n};q({messages:o})},addMessages:(t,A,r=!0)=>{const n=e().messages||{},o=n[t]||[],a=r?[...A,...o]:[...o,...A],s={...n,[t]:a};q({messages:s})},updateMessage:(t,A,r)=>{const n=e().messages||{},o=(n[t]||[]).map(s=>s._id===A?{...s,...r}:s),a={...n,[t]:o};q({messages:a})},updateMessageStatus:(t,A,r,n)=>{const o=e().messages||{},a=(o[t]||[]).map(i=>i._id===A?{...i,read_ids:n?i.read_ids?[...new Set([...i.read_ids,n])]:[n]:i.read_ids,read:r===pe.READ?1:i.read,status:r===pe.SENT&&i.status===pe.LOST?i.status:r}:i),s={...o,[t]:a};q({messages:s})},markMessagesAsLost:()=>{const t=e().messages||{},A=Object.fromEntries(Object.entries(t).map(([r,n])=>[r,n.map(o=>o.status===pe.WAIT?{...o,status:pe.LOST}:o)]));q({messages:A})},removeMessages:(t,A)=>{const r=e().messages||{},n=(r[t]||[]).filter(a=>!A.includes(a._id)),o={...r,[t]:n};q({messages:o})},clearMessages:t=>{const A={...e().messages||{},[t]:[]};q({messages:A})},setTotalMessagesReached:(t,A)=>{const r=e().totalMessagesReached,n=new Set(r);A?n.add(t):n.delete(t),q({totalMessagesReached:Array.from(n)})},resetTotalMessagesReached:()=>{q({totalMessagesReached:hi.totalMessagesReached})},resetMessagesStore:()=>{q(hi)}})));var Hq;(function(q){q.DISCONNECTED="disconnected",q.CONNECTING="connecting",q.CONNECTED="connected",q.NOT_AUTHORIZED="not-authorized",q.ERROR="error"})(Hq||(Hq={}));const wi={attachedChatListeners:new Set,isOnline:navigator.onLine,isConnected:!1,chatStatus:Hq.DISCONNECTED,pingInterval:null,isNetworkStatusHandling:!1},yi=Ae()(Yt((q,e)=>({...wi,attachChatListeners:t=>{const A=e().attachedChatListeners??new Set;Object.entries(t).forEach(([r,n])=>{const o=r;A.has(o)||(G.chat.addListener(o,n),A.add(o))}),q({attachedChatListeners:A})},handleNetworkStatus:()=>{const{isNetworkStatusHandling:t,setIsOnline:A}=e();t||(window.addEventListener("online",async()=>{await A(!0),yr.info("Network is online","🟢")}),window.addEventListener("offline",async()=>{await A(!1),yr.info("Network is offline","🔴")}),q({isNetworkStatusHandling:!0}))},setIsOnline:async t=>{const{isOnline:A,chatStatus:r,setChatStatus:n}=e();if(t!==A)if(q({isOnline:t}),t&&r!==Hq.ERROR)r!==Hq.DISCONNECTED&&r!==Hq.NOT_AUTHORIZED||n(Hq.CONNECTING);else try{await G.chat.pingWithTimeout(1e3),n(Hq.CONNECTED)}catch{const{resetTotalDialogsReached:a,resetActivatedDialogs:s}=pi.getState(),{resetTotalMessagesReached:i,markMessagesAsLost:l}=mi.getState();G.chat.terminate(),n(Hq.DISCONNECTED),a(),i(),s(),l()}},setIsConnected:t=>{const{isConnected:A,pingInterval:r,setIsOnline:n}=e();if(t!==A&&(q({isConnected:t}),r&&(clearInterval(r),q({pingInterval:wi.pingInterval})),t)){yr.info("chat is connected",'start "pingWithTimeout"');const o=setInterval(async()=>{try{await G.chat.pingWithTimeout(1e3),await n(!0)}catch(a){yr.error("ping chat",a),await n(!1),setTimeout(async()=>{try{await G.chat.pingWithTimeout(1e3),await n(!0)}catch(s){yr.error("ping chat (reserved)",s),await n(!1)}},5e3)}},4e4);q({pingInterval:o})}},setChatStatus:t=>{q({chatStatus:t})},resetChatStore:()=>{q({...wi})}}))),dn="ConnectyCubeBlockList",qu={blockedUsers:new Set,isFetchInited:!1,isFetched:!1},eu=Ae()(Yt((q,e)=>({...qu,fetchBlockList:async()=>{e().isFetched||e().isFetchInited||(yi.subscribe(t=>t.isConnected,async(t,A)=>{if(t!==A){if(!t)return void cn.warn("fetchBlockList","chat is not connected");if((await G.chat.privacylist.getNames()).default===dn){const r=(await G.chat.privacylist.getList(dn)).items.reduce((n,o)=>(o.action===G.PrivacyListAction.DENY&&n.add(+o.user_id),n),new Set);q({isFetched:!0,blockedUsers:r})}}},{fireImmediately:!0}),q({isFetchInited:!0}))},setBlockedUsers:t=>{q({blockedUsers:t})},resetBlockListStore:()=>{q(qu)}}))),gn={currentSession:null,currentUserId:null,currentUser:null},Ro=Ae()(Yt((q,e)=>({...gn,setCurrentUserId:t=>{q({currentUserId:t})},resetCurrentUserId:()=>{q({currentUserId:gn.currentUserId})},setCurrentSession:t=>{q({currentSession:t,currentUserId:t.user_id,currentUser:t?.user})},updateCurrentSession:t=>{const A=e().currentSession;A?q({currentSession:{...A,...t}}):sM.error("updateCurrentSession","Has no session to update")},resetCurrentSession:()=>{q({currentSession:gn.currentSession,currentUserId:gn.currentUserId})},resetConnectyCubeStore:()=>{q(gn)}}))),tu={lastActivity:{}},iM=Ae()(Yt((q,e)=>({...tu,upsertLastActivity:(t,A)=>{q({lastActivity:{...e().lastActivity,[t]:A}})},resetLastActivityStore:()=>{q(tu)}}))),Au={messageEvent:void 0,messageSystemEvent:void 0,messageSentEvent:void 0,messageReadEvent:void 0,messageEditEvent:void 0,messageDeleteEvent:void 0,messageErrorEvent:void 0},VM=Ae()(Yt(q=>({...Au,setMessageEvent:e=>{q({messageEvent:e})},setMessageSystemEvent:e=>{q({messageSystemEvent:e})},setMessageSentEvent:e=>{q({messageSentEvent:e})},setMessageReadEvent:e=>{q({messageReadEvent:e})},setMessageEditEvent:e=>{q({messageEditEvent:e})},setMessageDeleteEvent:e=>{q({messageDeleteEvent:e})},setMessageErrorEvent:e=>{q({messageErrorEvent:e})},resetMessageEventStore:()=>{q(Au)}}))),ru={typingStatus:{},typingTimers:{}},nu=Ae()(Yt((q,e)=>({...ru,setTypingStatus:(t,A,r)=>{const n=e().typingStatus||{},o=n[t]?new Set(n[t]):new Set;r?o.add(A):o.delete(A),q({typingStatus:{...n,[t]:[...o]}})},addTypingTimer:(t,A,r)=>{const n=e().typingTimers||{},o=n[t]||{},a={...n,[t]:{...o,[A]:r}};q({typingTimers:a})},clearTypingTimer:(t,A)=>{const r=e().typingTimers||{},n=r[t]||{};clearTimeout(n[A]),delete n[A];const o={...r,[t]:{...n}};q({typingTimers:o})},resetTypingStatusStore:()=>{q(ru)}}))),ou={users:{},usersLastRequestAt:{},onlineUsers:{},onlineUsersLastRequestAt:0,onlineUsersCount:0},au=Ae()(Yt((q,e)=>({...ou,upsertUser:t=>{q({users:{...e().users,[t.id]:t}})},upsertUsers:t=>{q({users:t.reduce((A,r)=>({...A,[r.id]:r}),{...e().users})})},upsertUsersLastRequestAt:t=>{q({...e().usersLastRequestAt,...t})},setOnlineUsers:t=>{q({onlineUsers:t.reduce((A,r)=>({...A,[r.id]:r}),{})})},updateOnlineUser:t=>{e().onlineUsers[t.id]&&q({onlineUsers:{...e().onlineUsers,[t.id]:t}})},updateOnlineUsers:t=>{q({onlineUsers:t.reduce((A,r)=>A[r.id]?{...A,[r.id]:r}:A,{...e().onlineUsers})})},setOnlineUsersLastRequestAt:t=>{q({onlineUsersLastRequestAt:t})},setOnlineUsersCount:t=>{q({onlineUsersCount:t})},resetUsersStore:()=>{q(ou)}})));var sA,ee;(function(q){q[q.USER=0]="USER",q[q.DISPLAY=1]="DISPLAY"})(sA||(sA={})),(function(q){q.ON_CALL="onCall",q.ON_STOP_CALLING="onStopCalling",q.ON_ACCEPT="onAccept",q.ON_REJECT="onReject",q.ON_STOP="onStop",q.ON_NOT_ANSWER="onNotAnswer",q.ON_CONNECTION_STATE="onConnectionState"})(ee||(ee={}));const iA={incomingCallCallData:null,incomingCallStopData:null,activeCallAcceptData:null,activeCallRejectData:null,activeCallStopData:null,activeCallNotAnswerData:null,activeCallConnectionStateData:null,deviceChangeEvent:null},lM={localStream:null,remoteStreams:{},userMediaParams:{video:!0,audio:!0},displayMediaParams:{video:!0,audio:!1},activeMedia:sA.USER},xA={activeCall:null,incomingCall:null,...iA,...lM,participantsIDs:new Set,attachedVideochatListeners:new Set},su=Ae()(Yt((q,e)=>({...xA,setActiveCall:t=>{q({activeCall:t})},resetActiveCall:()=>{q({activeCall:xA.activeCall})},setIncomingCall:t=>{q({incomingCall:t})},resetIncomingCall:()=>{q({incomingCall:xA.incomingCall})},setDeviceChangeEvent:t=>{q({deviceChangeEvent:t})},upsertSessionData:(t,A)=>{switch(t){case ee.ON_CALL:q({incomingCallCallData:A});break;case ee.ON_STOP_CALLING:q({incomingCallStopData:A});break;case ee.ON_ACCEPT:q({activeCallAcceptData:A});break;case ee.ON_REJECT:q({activeCallRejectData:A});break;case ee.ON_STOP:q({activeCallStopData:A});break;case ee.ON_NOT_ANSWER:q({activeCallNotAnswerData:A});break;case ee.ON_CONNECTION_STATE:q({activeCallConnectionStateData:A})}},resetSessionData:t=>{switch(t){case ee.ON_CALL:q({incomingCallCallData:iA.incomingCallCallData});break;case ee.ON_STOP_CALLING:q({incomingCallStopData:iA.incomingCallStopData});break;case ee.ON_ACCEPT:q({activeCallAcceptData:iA.activeCallAcceptData});break;case ee.ON_REJECT:q({activeCallRejectData:iA.activeCallRejectData});break;case ee.ON_STOP:q({activeCallStopData:iA.activeCallStopData});break;case ee.ON_NOT_ANSWER:q({activeCallNotAnswerData:iA.activeCallNotAnswerData});break;case ee.ON_CONNECTION_STATE:q({activeCallConnectionStateData:iA.activeCallConnectionStateData});break;default:q(iA)}},setLocalStream:t=>{q({localStream:t})},resetLocalStream:()=>{q({localStream:xA.localStream})},addRemoteStream:(t,A)=>{q({remoteStreams:{...e().remoteStreams,[t]:A}})},removeRemoteStream:t=>{const A={...e().remoteStreams};delete A[t],q({remoteStreams:A})},resetRemoteStreams:()=>{q({remoteStreams:xA.remoteStreams})},saveUserMediaParams:t=>{q({userMediaParams:t})},resetUserMediaParams:()=>{q({userMediaParams:xA.userMediaParams})},saveDisplayMediaParams:t=>{q({displayMediaParams:t})},resetDisplayMediaParams:()=>{q({displayMediaParams:xA.displayMediaParams})},saveActiveMedia:t=>{q({activeMedia:t})},setParticipantsIDs:t=>{q({participantsIDs:new Set(t)})},participantDidEnter:t=>{const A=new Set([...e().participantsIDs]);A.add(t),q({participantsIDs:A})},participantDidLeave:t=>{const A=new Set([...e().participantsIDs]);A.delete(t),q({participantsIDs:A})},attachVideochatListeners:t=>{const A=e().attachedVideochatListeners??new Set;Object.entries(t).forEach(([r,n])=>{const o=r;A.has(o)||(G.videochat.addListener(o,n),A.add(o))}),q({attachedVideochatListeners:A})},resetVideochatStore:()=>{q({...xA})}}))),cM=CA(eu),iu=CA(yi),uM=CA(Ro),Qo=CA(pi),dM=CA(mi),gM=CA(nu),Vu=CA(au),vi=CA(su),fM=()=>{const[q,e,t]=eu(Ct(a=>[a.blockedUsers,a.setBlockedUsers,a.fetchBlockList])),A=iu("isConnected"),r=cM("isFetched"),n=async(a,s)=>{if(!A.current)return void cn.warn("upsert",`${s} user ${a} failed, chat is not connected`);const i=new Set(q),l={name:dn,items:[{user_id:a,action:s,mutualBlock:!0}]};try{s===G.PrivacyListAction.DENY?i.add(a):s===G.PrivacyListAction.ALLOW&&i.delete(a),r.current?(await G.chat.privacylist.setAsDefault(null),await G.chat.privacylist.update(l),i.size>0&&await G.chat.privacylist.setAsDefault(dn)):(await G.chat.privacylist.create(l),await G.chat.privacylist.setAsDefault(dn))}catch(V){return void cn.error("upsert",V)}finally{e(i)}},o=a=>q.has(a);return w.useEffect(()=>{t()},[]),{blockedUsers:Array.from(q),blockUser:async a=>{o(a)?cn.warn("block",`user ${a} is already blocked`):await n(a,G.PrivacyListAction.DENY)},unblockUser:async a=>{o(a)?await n(a,G.PrivacyListAction.ALLOW):cn.warn("unblock",`user ${a} is not blocked`)},isBlockedUser:o}},Oo=100,lu=()=>{const q=Ro(h=>h.currentUserId),[e,t,A,r,n,o,a,s,i,l,V]=au(Ct(h=>[h.users,h.upsertUser,h.upsertUsers,h.upsertUsersLastRequestAt,h.onlineUsers,h.setOnlineUsers,h.updateOnlineUser,h.updateOnlineUsers,h.setOnlineUsersLastRequestAt,h.onlineUsersCount,h.setOnlineUsersCount])),u=Vu("usersLastRequestAt"),g=Vu("onlineUsersLastRequestAt"),d=async h=>{const{items:m}=await G.users.getV2(h),M={};return A(m),s(m),m.forEach(E=>{M[E.id]=Date.now()}),r(M),m},f=w.useCallback(async h=>{const{items:m}=await G.users.getV2({full_name:{start_with:h},limit:Oo}),{items:M}=await G.users.getV2({login:{start_with:h},limit:Oo}),E=new Map;return[...m,...M].forEach(v=>{E.set(v.id,v)}),Array.from(E.values()).filter(v=>v.id!==q)},[q]),p=async()=>{let h=l;try{const{count:m}=await G.users.getOnlineCount();h=m,V(h)}catch(m){gi.error("getOnlineCount",m)}return h};return{users:e,fetchUsers:d,fetchUserById:async(h,m=!1)=>{const M=u.current[h]||0,E=Date.now()-M>3e4;let v=e[h];if(E||m){const S=await G.users.getV2({id:h,limit:1}),k=S?.items?.[0];k&&(t(k),a(k),r({[h]:Date.now()}),v=k)}return v},fetchUsersByIds:async h=>{let m=[];const M=h.filter(E=>!m[E]);return M.length>0&&(m=await d({limit:Oo,id:{in:M}})),m},searchUsers:f,onlineUsers:Object.values(n),fetchAllOnlineUsers:async(h=!1)=>{if(Date.now()-g.current>6e4||h){const m=await(async()=>{const M=await p(),E=[];try{let v=Oo,S=0;for(;S<M;)E.push(G.users.listOnline({limit:v,offset:S}).then(({users:I})=>I)),S+=v;const k=(await Promise.all(E)).flat();return A(k),o(k),k}catch(v){return gi.error("listOnline",v),[]}})();return i(Date.now()),m}return Object.values(n)},fetchOnlineUsers:async h=>{try{const{users:m}=await G.users.listOnline(h);return A(m),o(m),m}catch(m){return gi.error("listOnlineWithParams",m),[]}},onlineUsersCount:l,fetchOnlineUsersCount:p}};var Ne;(function(q){q.NEW_DIALOG="dialog/NEW_DIALOG",q.ADDED_TO_DIALOG="dialog/ADDED_TO_DIALOG",q.REMOVED_FROM_DIALOG="dialog/REMOVED_FROM_DIALOG",q.ADD_PARTICIPANTS="dialog/ADD_PARTICIPANTS",q.REMOVE_PARTICIPANTS="dialog/REMOVE_PARTICIPANTS",q.DELETE_DIALOG="dialog/DELETE_DIALOG"})(Ne||(Ne={}));const pM=()=>{const{fetchUsersByIds:q}=lu(),[e,t,A]=Ro(Ct(C=>[C.currentUserId,C.setCurrentUserId,C.resetCurrentUserId])),[r,n]=iM(Ct(C=>[C.lastActivity,C.upsertLastActivity])),[o,a,s,i,l,V,u,g,d,f,p,h,m,M,E,v,S,k,I,L]=pi(Ct(C=>[C.dialogs,C.upsertDialog,C.upsertDialogs,C.updateDialog,C.updateDialogOnMessage,C.updateDialogOnReadMessage,C.addParticipantsToDialog,C.removeParticipantsFromDialog,C.removeDialog,C.selectedDialog,C.setSelectedDialog,C.resetSelectedDialog,C.activateDialog,C.resetActivatedDialogs,C.addPrivateDialogId,C.removePrivateDialogId,C.unreadMessagesCount,C.totalDialogsReached,C.setTotalDialogsReached,C.resetTotalDialogsReached])),[R,P,Y,O,F,qq,T,j,N,K,Aq]=mi(Ct(C=>[C.messages,C.addMessage,C.addMessages,C.updateMessage,C.updateMessageStatus,C.markMessagesAsLost,C.removeMessages,C.clearMessages,C.totalMessagesReached,C.setTotalMessagesReached,C.resetTotalMessagesReached])),[dq,vq,U,rq,hq,fq,oq,H,lq,Mq,Qq,Bq,Wq,_q,zq]=VM(Ct(C=>[C.messageEvent,C.messageSystemEvent,C.messageSentEvent,C.messageReadEvent,C.messageEditEvent,C.messageDeleteEvent,C.messageErrorEvent,C.setMessageEvent,C.setMessageSystemEvent,C.setMessageSentEvent,C.setMessageReadEvent,C.setMessageEditEvent,C.setMessageDeleteEvent,C.setMessageErrorEvent,C.resetMessageEventStore])),[J,sq,Uq,Kq,x,D,Q]=yi(Ct(C=>[C.isOnline,C.isConnected,C.chatStatus,C.setIsConnected,C.setChatStatus,C.handleNetworkStatus,C.attachChatListeners])),[W,X,eq,iq,Nq]=nu(Ct(C=>[C.typingStatus,C.setTypingStatus,C.addTypingTimer,C.clearTypingTimer,C.resetTypingStatusStore])),Tq=uM("currentUserId"),ne=iu("chatStatus"),Ce=dM("messages"),xe=Qo("dialogs"),Je=Qo("selectedDialog"),ie=Qo("activatedDialogs"),Fe=Qo("privateDialogsIds"),Qt=gM("typingTimers"),nA=async(C=Hq.DISCONNECTED)=>{let B=!1;return G.chat.isConnected&&(B=await G.chat.disconnect(),Kq(!1),A(),zq(),Nq(),x(C),et()),B},JA=(C=Hq.DISCONNECTED)=>{G.chat.terminate(),x(C),et(),qq()},et=()=>{M(),L(),Aq()},tt=async C=>{const B={sort_desc:"date_sent",limit:100,skip:0,...C},{items:Z,skip:_,limit:yq,total_entries:Rq}=await G.chat.dialog.list(B);I(_+yq>=Rq),s(Z);const te=Z.flatMap(ut=>ut.occupants_ids),qe=Array.from(new Set(te));return q(qe),Z},Ot=async(C,B=0)=>{try{const Z=await(async(_,yq={})=>{const Rq={chat_dialog_id:_,sort_desc:"date_sent",limit:100,skip:0,...yq};try{const{items:te,skip:qe,limit:ut}=await G.chat.message.list(Rq),Re=Ce.current[_]??[],Ft=qe+ut>te.length+Re.length;return K(_,Ft),te.sort((hr,yo)=>hr._id.toString().localeCompare(yo._id.toString())).map(hr=>{const yo=hr.attachments?.map(ei=>({...ei,url:G.storage.privateUrl(ei.uid)}));return{...hr,attachments:yo,status:hr.read?pe.READ:pe.SENT}})}catch(te){if(te.code===404)return[];throw te}})(C,{skip:B});return Y(C,Z),Z}catch(Z){throw Z}},ZA=async C=>Ot(C),At=C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";if(C.type!==G.DialogType.PRIVATE)return;const B=C.occupants_ids.find(Z=>Z!==e);return B&&E(B,C._id),B},WA=C=>xe.current.find(B=>B.type===G.DialogType.PRIVATE&&B.occupants_ids.includes(C)),Sq=async C=>{const B={read:1,chat_dialog_id:C._id};await G.chat.message.update("",B),i(C._id,{unread_messages_count:0})},ge=G.chat.helpers.getBsonObjectId,we=(C,B,Z={})=>{if(B??=f,!B)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const _=At(B),yq=ke(C,null,B,_,Z);jt(yq,C,B._id,e,_,void 0,!1,Z)},ke=(C,B,Z,_,yq)=>{const Rq={type:Z.type===G.DialogType.PRIVATE?G.ChatType.CHAT:G.ChatType.GROUPCHAT,body:C,extension:{save_to_history:1,dialog_id:Z._id,...yq}};return B&&(Rq.extension.attachments=B),G.chat.send(Z.type===G.DialogType.PRIVATE?_:Z._id,Rq)},jt=(C,B,Z,_,yq,Rq,te,qe)=>{const ut=Math.round(new Date().getTime()/1e3),Re={...qe||{},_id:C,created_at:ut,updated_at:ut,chat_dialog_id:Z,message:B,sender_id:_,recipient_id:yq,date_sent:ut,read:0,read_ids:[_],delivered_ids:[_],views_count:0,attachments:Rq||[],reactions:{},isLoading:te,status:ne.current===Hq.CONNECTED?pe.WAIT:pe.LOST},Ft={last_message:Re.message,last_message_user_id:Re.sender_id,last_message_date_sent:Re.date_sent};i(Z,Ft),P(Z,Re)},oe=(C,B,Z,_={})=>{oA(Z,C,{dialogId:B,..._})},Ie=(C,B,Z=[],_={})=>{const yq=B._id,Rq=B.occupants_ids.filter(te=>!Z.includes(te)&&te!==e);oe(C,yq,Rq,_)},oA=(C,B,Z={})=>{const _=Array.isArray(C)?C:[C],yq={body:B,extension:Z};_.forEach(Rq=>{G.chat.sendSystemMessage(Rq,yq)})},Le=(C,B)=>{typeof C=="number"&&B>=0&&n(C,_c(B))},Ze=()=>{ne.current!==Hq.CONNECTING&&(x(Hq.DISCONNECTED),et()),qq()},qn=()=>{x(Hq.CONNECTED)},Gt=async(C={})=>{C?.condition==="not-authorized"||C?.text==="Password not verified"||C?.name==="SASLError"?await nA(Hq.NOT_AUTHORIZED)||JA(Hq.NOT_AUTHORIZED):x(Hq.ERROR)},qi=(C,B)=>{if(H({userId:C,message:B}),C===Tq.current||B.delay&&B.type===G.ChatType.CHAT)return;const Z=B.dialog_id,_=B.id,yq=B.body||"",Rq=B.type===G.ChatType.CHAT?Tq.current:void 0,te=B.extension.attachments?.length>0?B.extension.attachments.map(qe=>({...qe,url:G.storage.privateUrl(qe.uid)})):void 0;jt(_,yq,Z,C,Rq,te,!1,B.extension),X(Z,C,!1),iq(Z,C),l(Z,B)},b=(C,B)=>{_q({messageId:C,error:B})},$=(C,B)=>{Mq({lost:C,sent:B});const Z=B?pe.SENT:C?pe.LOST:void 0,_=B?B.id:C?C.id:void 0,yq=B?B.extension.dialog_id:C?C.extension.dialog_id:void 0;Z&&_&&yq&&F(yq,_,Z)},Vq=async C=>{const B=C.extension.dialogId,Z=C.userId;if(lq({message:C}),Z!==Tq.current)switch(C.body){case Ne.NEW_DIALOG:case Ne.ADDED_TO_DIALOG:{const _=(await G.chat.dialog.list({_id:B})).items[0];q(_.occupants_ids),a(_);break}case Ne.DELETE_DIALOG:await G.chat.dialog.delete(B),d(B),j(B);break;case Ne.ADD_PARTICIPANTS:{const _=C.extension.addedParticipantsIds.split(",").map(Number);q(_),u(B,_);break}case Ne.REMOVE_PARTICIPANTS:{const _=C.extension.removedParticipantsIds.split(",").map(Number);g(B,_);break}case Ne.REMOVED_FROM_DIALOG:g(B,[Z])}},Cq=(C,B,Z)=>{Qq({messageId:C,dialogId:B,userId:Z}),Z!==Tq.current&&F(B,C,pe.READ,Z)},Pq=(C,B,Z)=>{const _=Z||(yq=>{let Rq=Fe.current?.[yq];if(!Rq){const te=xe.current.find(qe=>qe.type===G.DialogType.PRIVATE&&At(qe)===yq);te&&(Rq=te._id,E(yq,Rq))}return Rq})(B);if(_&&B&&B!==Tq.current)if(X(_,B,C),C){Qt.current?.[_][B]&&iq(_,B);const yq=setTimeout(()=>{X(_,B,!1),iq(_,B)},6e3);eq(_,B,yq)}else X(_,B,!1),iq(_,B)},$q=(C,B,Z,_,yq)=>{Bq({messageId:C,dialogId:_,userId:yq,updatedBody:Z,isLast:B}),O(_,C,{body:Z}),B&&l(_,{id:C,body:Z},!0)},jq=(C,B,Z)=>{Wq({messageId:C,dialogId:B,userId:Z}),T(B,[C])};return w.useEffect(()=>{D(),Q({[G.ChatEvent.DISCONNECTED]:Ze,[G.ChatEvent.RECONNECTED]:qn,[G.ChatEvent.ERROR]:Gt,[G.ChatEvent.MESSAGE]:qi,[G.ChatEvent.ERROR_MESSAGE]:b,[G.ChatEvent.SENT_MESSAGE]:$,[G.ChatEvent.SYSTEM_MESSAGE]:Vq,[G.ChatEvent.READ_MESSAGE]:Cq,[G.ChatEvent.TYPING_MESSAGE]:Pq,[G.ChatEvent.UPDATE_MESSAGE]:$q,[G.ChatEvent.DELETE_MESSAGE]:jq})},[]),{isConnected:sq,chatStatus:Uq,connect:async C=>{x(Hq.CONNECTING);try{const B=await G.chat.connect(C);return B&&(x(Hq.CONNECTED),Kq(B),t(C.userId)),B}catch(B){return x(Hq.DISCONNECTED),console.error(`Failed to connect due to ${B}`),!1}},terminate:JA,disconnect:nA,dialogs:o,selectedDialog:f,totalDialogsReached:k,unreadMessagesCount:S,selectDialog:async C=>{if(!C)return h();C._id!==Je.current?._id&&(p(C),ie.current?.has(C._id)||(await ZA(C._id),m(C._id)),C.unread_messages_count>0&&await Sq(C).catch(B=>{}))},unselectDialog:h,createChat:async(C,B)=>{const Z={type:G.DialogType.PRIVATE,occupants_ids:[C],extensions:B},_=await G.chat.dialog.create(Z);return a(_),K(_._id,!0),E(C,_._id),oe(Ne.NEW_DIALOG,_._id,C),e&&q([C,e]),_},createGroupChat:async(C,B,Z,_)=>{const yq={name:B,photo:Z,type:G.DialogType.GROUP,occupants_ids:C,extensions:_},Rq=await G.chat.dialog.create(yq);return a(Rq),K(Rq._id,!0),oe(Ne.NEW_DIALOG,Rq._id,C),e&&q([...C,e]),Rq},markDialogAsRead:Sq,addUsersToGroupChat:async C=>{if(!f)throw new Error("No dialog selected");const B=f._id,Z={push_all:{occupants_ids:C}};await G.chat.dialog.update(B,Z),Ie(Ne.ADD_PARTICIPANTS,f,[],{addedParticipantsIds:C.join()}),oe(Ne.ADDED_TO_DIALOG,B,C),q(C);const _={occupants_ids:Array.from(new Set([...f.occupants_ids,...C]))};i(B,_),p({...f,..._})},removeUsersFromGroupChat:async C=>{if(!f)throw new Error("No dialog selected");const B=f._id,Z={pull_all:{occupants_ids:C}};await G.chat.dialog.update(B,Z),oe(Ne.REMOVE_PARTICIPANTS,B,C),Ie(Ne.REMOVE_PARTICIPANTS,f,C,{removedParticipantsIds:C.join()});const _={occupants_ids:f.occupants_ids.filter(yq=>!C.includes(yq))};i(B,_),p({...f,..._})},leaveGroupChat:async C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const B=C._id;Ie(Ne.REMOVED_FROM_DIALOG,C),await G.chat.dialog.delete(B),d(B),j(B),h()},deleteChat:async C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const B=C._id,Z=At(C);Z&&(v(Z),oe(Ne.DELETE_DIALOG,B,Z)),await G.chat.dialog.delete(B),d(B),j(B),h()},deleteGroupChat:async C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";if(C.user_id!==e)throw"Only the group chat owner can delete the group chat.";const B=C._id;Ie(Ne.DELETE_DIALOG,C),await G.chat.dialog.delete(B,{force:1}),d(B),j(B),h()},fetchDialogs:tt,fetchNextDialogs:async()=>{const C=xe.current.length;return tt({skip:C})},lastMessageSentTimeString:C=>Zc(C.last_message_date_sent?1e3*C.last_message_date_sent:C.created_at,{addSuffix:!0}),getDialogOpponentId:At,getPrivateDialogByUserId:WA,messages:R,totalMessagesReached:N,fetchMessages:ZA,fetchNextMessages:async C=>{const B=(Ce.current[C]??[]).length;return Ot(C,B)},sendMessage:we,sendMessageByUserId:(C,B,Z={})=>{const _=WA(B);if(!_)throw"Dialog not found.";we(C,_,Z)},sendAttachment:async(C,B)=>{if(B??=f,!B)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const Z=B._id,_=At(B),yq=Date.now()+"",Rq=C.map((Re,Ft)=>({uid:`local-${yq}-${Ft}`,type:Re.type,url:URL.createObjectURL(Re)}));jt(yq,"Attachment",Z,e,_,Rq,!0);const te=C.map(Re=>{const{name:Ft,type:hr,size:yo}=Re,ei={file:Re,name:Ft,type:hr,size:yo,public:!1};return G.storage.createAndUpload(ei)}),qe=(await Promise.all(te)).map(({uid:Re,content_type:Ft=""})=>({uid:Re,type:Ft,url:G.storage.privateUrl(Re)})),ut={_id:ke("Attachment",qe,B,_),attachments:Rq,isLoading:!1,status:ne.current===Hq.CONNECTED?pe.WAIT:pe.LOST};O(Z,yq,ut)},sendSignal:oA,readMessage:(C,B,Z)=>{G.chat.sendReadStatus({messageId:C,userId:B,dialogId:Z}),F(Z,C,pe.READ,B),V(Z)},editMessage:(C,B,Z)=>{if(Z??=f,!Z)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const _=Z._id,yq=Z.type===G.DialogType.PRIVATE?At(Z):_,Rq=Z.last_message_id===C;G.chat.editMessage({to:yq,body:B,dialogId:_,originMessageId:C,last:Rq}),O(_,C,{message:B})},deleteMessages:async(C,B=[],Z=!1)=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";if(!B||B.length===0)throw"No messages to delete. You need to provide a message id or messages ids via function argument.";await G.chat.message.delete(B,{force:Z?1:0}),T(C._id,B)},clearChatHistory:async C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";await G.chat.dialog.clearHistory(C._id),j(C._id)},messageSentTimeString:C=>Zc(1e3*C.date_sent,{addSuffix:!0}),generateTempMessageId:ge,addTempMessage:(C,B,Z={})=>{if(B??=f,!B)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const _=Math.round(new Date().getTime()/1e3),yq=C||G.chat.helpers.getBsonObjectId(),Rq={created_at:_,updated_at:_,date_sent:_,message:Z.body,sender_id:0,...Z,_id:C||yq,chat_dialog_id:B._id,custom:!0};return P(B._id,Rq),yq},updateTempMessage:(C,B,Z={})=>{if(B??=f,!B)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";const _={...Z,updated_at:Math.round(new Date().getTime()/1e3),chat_dialog_id:B._id,message:Z.body||Z.message,custom:!0};typeof _.message!="string"&&delete _.message,O(B._id,C,_)},messageEvent:dq,messageErrorEvent:oq,messageSentEvent:U,messageReadEvent:rq,messageEditEvent:hq,messageDeleteEvent:fq,messageSystemEvent:vq,lastActivity:r,getLastActivity:async C=>{try{const{seconds:B}=await G.chat.getLastUserActivity(C),Z=_c(B);return n(C,Z),Z}catch(B){return yr.error("getLastActivity",B),"Last seen recently"}},subscribeToLastActivity:C=>{G.chat.subscribeToUserLastActivityStatus(C),G.chat.addListener(G.ChatEvent.USER_LAST_ACTIVITY,Le)},unsubscribeFromLastActivity:C=>{G.chat.unsubscribeFromUserLastActivityStatus(C),G.chat.removeListener(G.ChatEvent.USER_LAST_ACTIVITY)},isOnline:J,typingStatus:W,sendTypingStatus:C=>{if(C??=f,!C)throw"No dialog provided. You need to provide a dialog via function argument or select a dialog via 'selectDialog'.";G.chat.sendIsTypingStatus(C.type===G.DialogType.PRIVATE?At(C):C._id)}}};var zt;(function(q){q.MUTE_AUDIO="audio-mute",q.UNMUTE_AUDIO="audio-unmute",q.MUTE_VIDEO="video-mute",q.UNMUTE_VIDEO="video-unmute"})(zt||(zt={}));const hM=()=>{const[q,e]=w.useState(0),[t,A,r,n,o,a,s,i,l,V,u,g,d,f,p,h,m,M,E,v,S,k,I,L,R,P,Y,O,F,qq,T,j,N]=su(Ct(J=>[J.activeCall,J.setActiveCall,J.incomingCall,J.setIncomingCall,J.resetIncomingCall,J.activeMedia,J.saveActiveMedia,J.userMediaParams,J.saveUserMediaParams,J.displayMediaParams,J.saveDisplayMediaParams,J.localStream,J.setLocalStream,J.remoteStreams,J.addRemoteStream,J.removeRemoteStream,J.deviceChangeEvent,J.setDeviceChangeEvent,J.incomingCallCallData,J.incomingCallStopData,J.activeCallAcceptData,J.activeCallRejectData,J.activeCallStopData,J.activeCallNotAnswerData,J.activeCallConnectionStateData,J.resetSessionData,J.participantsIDs,J.setParticipantsIDs,J.upsertSessionData,J.participantDidEnter,J.participantDidLeave,J.attachVideochatListeners,J.resetVideochatStore])),K=vi("activeCall"),Aq=vi("incomingCall");vi("attachedVideochatListeners");const dq=w.useCallback(async J=>{if(r){const{currentUserID:sq,initiatorID:Uq,opponentsIDs:Kq}=r,x=[...Kq,Uq].filter(D=>D!==sq);P(),O(x);try{await rq(r),r.accept(J),o()}catch(D){We.error("acceptCall",D),r.stop(J)}finally{o()}}},[r]),vq=w.useCallback(J=>{r?.reject(J),o()},[r]),U=w.useCallback(J=>{N(),t?.stop(J)},[t]),rq=w.useCallback(async J=>{const sq=a===sA.DISPLAY?await J.getDisplayMedia(V):await J.getUserMedia(i);J.callType===G.CallType.AUDIO&&sq.getVideoTracks().forEach(Uq=>Uq.enabled=!1),d(sq),A(J)},[a,i,V]),hq=(J,sq)=>{J.initiatorID!==J.currentUserID&&(n(J),F(ee.ON_CALL,{userInfo:sq}),We.log("onCall",{session:J,ext:sq}))},fq=(J,sq,Uq)=>{qq(sq),F(ee.ON_ACCEPT,{userID:sq,userInfo:Uq}),We.log("onAccept",{session:J,userID:sq,ext:Uq})},oq=(J,sq,Uq)=>{T(sq),F(ee.ON_REJECT,{userID:sq,userInfo:Uq}),We.log("onReject",{session:J,userID:sq,ext:Uq})},H=(J,sq,Uq)=>{K.current?.ID===J.ID&&(T(sq),h(sq),F(ee.ON_STOP,{userID:sq,userInfo:Uq})),Aq.current?.ID===J.ID&&(F(ee.ON_STOP_CALLING,{userID:sq,userInfo:Uq}),o()),We.log("onStop",{session:J,userID:sq,ext:Uq})},lq=(J,sq)=>{T(sq),F(ee.ON_NOT_ANSWER,{userID:sq}),We.log("onNotAnswer",{session:J,userID:sq})},Mq=(J,sq,Uq)=>{p(sq,Uq),We.log("onRemoteStream",{session:J,userID:sq,stream:Uq})},Qq=(J,sq,Uq)=>{F(ee.ON_CONNECTION_STATE,{userID:sq,connectionState:Uq}),We.log("onConnectionState",{session:J,userID:sq,connectionState:Uq})},Bq=J=>{M(J),We.log("onDevicesChange",{event:J})},Wq=w.useMemo(()=>{const J=g?.getAudioTracks();return!J||J.length===0||J.every(sq=>!sq.enabled)},[g,q]),_q=w.useMemo(()=>{const J=g?.getVideoTracks();return!J||J.length===0||J.every(sq=>!sq.enabled)},[g,q]),zq=w.useCallback(async J=>{if(t){switch(J){case zt.MUTE_AUDIO:t.mute(G.MediaType.AUDIO);break;case zt.MUTE_VIDEO:t.mute(G.MediaType.VIDEO);break;case zt.UNMUTE_AUDIO:t.unmute(G.MediaType.AUDIO);break;case zt.UNMUTE_VIDEO:t.unmute(G.MediaType.VIDEO)}e(sq=>sq+1)}},[t]);return w.useEffect(()=>{t&&Y.size===0&&U()},[t,Y]),w.useEffect(()=>{j({[G.CallEvent.CALL]:hq,[G.CallEvent.ACCEPT]:fq,[G.CallEvent.REJECT]:oq,[G.CallEvent.STOP]:H,[G.CallEvent.NOT_ANSWER]:lq,[G.CallEvent.REMOTE_STREAM]:Mq,[G.CallEvent.CONNECTION_STATE]:Qq,[G.CallEvent.DEVICES]:Bq})},[]),{startCall:async(J=[],sq=G.CallType.VIDEO,Uq)=>{const Kq=Array.isArray(J)?J:[J],x=G.videochat.createNewSession(Kq,sq);try{P(),O(Kq),await rq(x),x.call(Uq)}catch(D){We.error("startCall",D),O([])}},acceptCall:dq,rejectCall:vq,stopCall:U,activeCall:t,incomingCall:r,deviceChangeEvent:m,incomingCallCallData:E,incomingCallStopData:v,activeCallAcceptData:S,activeCallRejectData:k,activeCallStopData:I,activeCallNotAnswerData:L,activeCallConnectionStateData:R,resetSessionData:P,participantsIds:Array.from(Y),activeMedia:a,setActiveMedia:async J=>{J&&s(J)},localStream:g,remoteStreams:f,getUserMedia:async J=>{try{const sq=await t?.getUserMedia(J??i);return s(sA.USER),sq}catch(sq){We.error("getUserMedia",{error:sq})}},getDisplayMedia:async J=>{try{const sq=await t?.getDisplayMedia(J??V);return s(sA.DISPLAY),sq}catch(sq){We.error("getDisplayMedia",{error:sq})}},getMediaDevices:async J=>{try{return await G.videochat.getMediaDevices(J)}catch(sq){We.error("getMediaDevices",{error:sq})}},switchMediaTracks:async J=>{try{return await t?.switchMediaTracks(J)}catch(sq){We.error("switchMediaTracks",{error:sq})}},userMediaParams:i,setUserMediaParams:async J=>{J&&l(J)},displayMediaParams:V,setDisplayMediaParams:async J=>{J&&u(J)},isLocalAudioMuted:Wq,muteAudio:()=>{zq(zt.MUTE_AUDIO)},unmuteAudio:()=>{zq(zt.UNMUTE_AUDIO)},isLocalVideoMuted:_q,muteVideo:()=>{zq(zt.MUTE_VIDEO)},unmuteVideo:()=>{zq(zt.UNMUTE_VIDEO)}}},Jq=()=>{const q=fM(),e=pM(),t=lu(),A=hM(),[r,n,o,a,s,i]=Ro(Ct(g=>[g.currentSession,g.currentUserId,g.currentUser,g.setCurrentSession,g.updateCurrentSession,g.resetCurrentSession])),l=async g=>{const d=await G.createSession(g);return u(d),d},V=async(g,d=!0)=>{let f=null;const{email:p,login:h,password:m}=g;try{p?f=await l({email:p,password:m}):h&&(f=await l({login:h,password:m}))}catch(M){if(M?.code!==404||!d||!m||!p&&!h)throw M;{const E=(await G.users.signup(g)).user;E.email?f=await l({email:E.email,password:m}):E.login&&(f=await l({login:E.login,password:m}))}}return f},u=g=>{G.setSession(g),a(g)};return{currentSession:r,currentUserId:n,currentUser:o,init:(g,d)=>{G.init(g,d)},upsertConfig:(g={})=>G.service?.sdkInstance?.config?.set?.(g),createSession:l,createEmptySession:()=>l(),createGuestSession:g=>l({guest:"1",full_name:g}),createUserSession:V,setSession:u,getSession:async()=>{const g=await G.getSession();return a(g),g},destroySession:async()=>{await G.destroySession(),i()},loginUser:async g=>(await V(g,!1))?.user??null,signupUser:async g=>(await V(g,!0))?.user??null,updateUser:async g=>{const{user:d}=await G.users.update(g);return s({user:d,user_id:d.id}),d},deleteUser:async()=>{await G.users.delete(),s({user:null,user_id:void 0})},...q,...e,...t,...A}},cu=(q=[])=>q.slice().filter(Boolean).sort((e,t)=>e.id-t.id).reduce((e,{id:t})=>`${e}:${t}`,jo),mM=q=>new Promise(e=>setTimeout(e,q)),wM=q=>q.replace(/@supports\s*\(\(*\s*-webkit-hyphens\s*:\s*none\s*\)*\s*and\s*\(not\s*\(margin-trim\s*:\s*inline\)\)\s*\)\s*or\s*\(\(*\s*-moz-orient\s*:\s*inline\s*\)*\s*and\s*\(not\s*\(color\s*:\s*rgb\(from\s+red\s+r\s+g\s+b\)\)\)\s*\)\s*\{\s*([\s\S]*?)\s*\}/gm,(e,t)=>t.trim()),dt=typeof window=="object"&&typeof document=="object";var fn=(q=>(q.WRAPPER="data-connectycube-chat-widget-wrapper",q.FOCUSED="data-connectycube-chat-widget-focused",q))(fn||{});const uu="15px",du="400",jo="external_id",gu="::current_user";var VA=(q=>(q.GET_SUMMARY="ai:get-summary",q.CHANGE_TONE="ai:change-tone",q.DEFAULT="ai:default",q))(VA||{}),_A=(q=>(q.LAST_7_DAYS="last-7-days",q.LAST_DAY="last-day",q.UNREADS="unreads",q))(_A||{}),Go=(q=>(q.POSITIVE="positive",q.NEGATIVE="negative",q.CRINGE="cringe",q))(Go||{}),Ei=(q=>(q.AI_TEXT_SUMMARY="ai-text-summary",q))(Ei||{});const Fo="@connectycube/chat-widget:draftMessages",yM=()=>{try{const q=dt?localStorage?.getItem(Fo):null;return q?JSON.parse(q):{}}catch(q){return console.error("Could not load state from localStorage",q),{}}},Lo=q=>{if(dt)try{const e=JSON.stringify(q);localStorage?.setItem(Fo,e)}catch(e){console.error("Could not save state to localStorage",e)}},vM=()=>{if(dt)try{localStorage?.removeItem(Fo)}catch(q){console.error("Could not clear state from localStorage",q)}},Mi=yM(),Yo=Ae(q=>({draftMessages:Mi,setDraftMessages:e=>{q({draftMessages:e}),Lo(e)},upsertDraftMessage:e=>{q(t=>{const A={...t.draftMessages,...e};return Lo(A),{draftMessages:A}})},deleteDraftMessage:e=>{q(t=>{const A={...t.draftMessages};return delete A[e],Lo(A),{draftMessages:A}})},resetDraftMessages:()=>{q({draftMessages:Mi}),Lo(Mi)}})),EM=()=>{vM(),Yo.setState({draftMessages:{}})},fu=async({hardwareOnly:q=!0,debug:e=!1}={})=>{const{cookieEnabled:t,deviceMemory:A,doNotTrack:r,hardwareConcurrency:n,language:o,languages:a,maxTouchPoints:s,platform:i,userAgent:l,vendor:V}=window.navigator,u=/Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent),{width:g,height:d,colorDepth:f,pixelDepth:p}=u?window.screen:{},h=new Date().getTimezoneOffset(),m=Intl.DateTimeFormat().resolvedOptions().timeZone,M="ontouchstart"in window,E=window.devicePixelRatio,v=MM(e),S=await bM(e),k=SM(),I=CM(e),L=xM(),R=q?{audioInfo:k,audio:S,canvas:v,colorDepth:f,deviceMemory:A,devicePixelRatio:E,hardwareConcurrency:n,height:d,maxTouchPoints:s,pixelDepth:p,platform:i,touchSupport:M,webgl:I,webglInfo:L,width:g}:{audioInfo:k,audio:S,canvas:v,colorDepth:f,cookieEnabled:t,deviceMemory:A,devicePixelRatio:E,doNotTrack:r,hardwareConcurrency:n,height:d,language:o,languages:a,maxTouchPoints:s,pixelDepth:p,platform:i,timezone:m,timezoneOffset:h,touchSupport:M,userAgent:l,vendor:V,webgl:I,webglInfo:L,width:g};e&&console.log("Fingerprint data:",JSON.stringify(R,null,2));const P=JSON.stringify(R,null,2);return Ko(P)},MM=q=>{try{const e=document.createElement("canvas"),t=e.getContext("2d"),A="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~1!2@3#4$5%6^7&8*9(0)-_=+[{]}|;:',<.>/?";t.textBaseline="top",t.font="14px 'Arial'",t.textBaseline="alphabetic",t.fillStyle="#f60",t.fillRect(125,1,62,20),t.fillStyle="#069",t.fillText(A,2,15),t.fillStyle="rgba(102, 204, 0, 0.7)",t.fillText(A,4,17);const r=e.toDataURL();return q?document.body.appendChild(e):t.clearRect(0,0,e.width,e.height),Ko(r)}catch{return null}},CM=q=>{try{const e=document.createElement("canvas"),t=e.getContext("webgl");e.width=256,e.height=128;const A="attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}",r="precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}",n=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,n);const o=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.7321,0]);t.bufferData(t.ARRAY_BUFFER,o,t.STATIC_DRAW),n.itemSize=3,n.numItems=3;const a=t.createProgram(),s=t.createShader(t.VERTEX_SHADER);t.shaderSource(s,A),t.compileShader(s);const i=t.createShader(t.FRAGMENT_SHADER);t.shaderSource(i,r),t.compileShader(i),t.attachShader(a,s),t.attachShader(a,i),t.linkProgram(a),t.useProgram(a),a.vertexPosAttrib=t.getAttribLocation(a,"attrVertex"),a.offsetUniform=t.getUniformLocation(a,"uniformOffset"),t.enableVertexAttribArray(a.vertexPosArray),t.vertexAttribPointer(a.vertexPosAttrib,n.itemSize,t.FLOAT,!1,0,0),t.uniform2f(a.offsetUniform,1,1),t.drawArrays(t.TRIANGLE_STRIP,0,n.numItems);const l=new Uint8Array(e.width*e.height*4);t.readPixels(0,0,e.width,e.height,t.RGBA,t.UNSIGNED_BYTE,l);const V=JSON.stringify(l).replace(/,?"[0-9]+":/g,"");return q?document.body.appendChild(e):t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT|t.STENCIL_BUFFER_BIT),Ko(V)}catch{return null}},xM=()=>{try{const q=document.createElement("canvas").getContext("webgl");return{VERSION:String(q.getParameter(q.VERSION)),SHADING_LANGUAGE_VERSION:String(q.getParameter(q.SHADING_LANGUAGE_VERSION)),VENDOR:String(q.getParameter(q.VENDOR)),SUPPORTED_EXTENSIONS:String(q.getSupportedExtensions())}}catch{return null}},SM=()=>{try{const q=window.OfflineAudioContext||window.webkitOfflineAudioContext,e=44100,t=44100,A=new q(1,e,t);return{sampleRate:A.sampleRate,channelCount:A.destination.maxChannelCount,outputLatency:A.outputLatency,state:A.state,baseLatency:A.baseLatency}}catch{return null}},bM=async q=>{try{const e=window.OfflineAudioContext||window.webkitOfflineAudioContext,t=44100,A=44100,r=new e(1,A,t),n=r.createOscillator();n.type="sine",n.frequency.value=440,n.connect(r.destination),n.start();const o=await r.startRendering(),s=o.getChannelData(0).reduce((i,l)=>i+Math.abs(l),0).toString();if(q){const i=kM(o),l=URL.createObjectURL(i),V=document.createElement("audio");V.controls=!0,V.src=l,document.body.appendChild(V)}return Ko(s)}catch{return null}},kM=q=>{const e=q.numberOfChannels,t=q.length*e*2+44,A=new ArrayBuffer(t),r=new DataView(A);zo(r,0,"RIFF"),r.setUint32(4,t-8,!0),zo(r,8,"WAVE"),zo(r,12,"fmt "),r.setUint32(16,16,!0),r.setUint16(20,1,!0),r.setUint16(22,e,!0),r.setUint32(24,q.sampleRate,!0),r.setUint32(28,q.sampleRate*e*2,!0),r.setUint16(32,e*2,!0),r.setUint16(34,16,!0),zo(r,36,"data"),r.setUint32(40,t-44,!0);let n=44;for(let o=0;o<q.length;o++)for(let a=0;a<e;a++){const s=q.getChannelData(a)[o],i=Math.max(-1,Math.min(1,s))*32767;r.setInt16(n,i,!0),n+=2}return new Blob([r],{type:"audio/wav"})},zo=(q,e,t)=>{for(let A=0;A<t.length;A++)q.setUint8(e+A,t.charCodeAt(A))},Ko=q=>{const e=q.length&3,t=q.length-e,A=3432918353,r=461845907;let n,o,a;for(let i=0;i<t;i++)a=q.charCodeAt(i)&255|(q.charCodeAt(++i)&255)<<8|(q.charCodeAt(++i)&255)<<16|(q.charCodeAt(++i)&255)<<24,++i,a=(a&65535)*A+(((a>>>16)*A&65535)<<16)&4294967295,a=a<<15|a>>>17,a=(a&65535)*r+(((a>>>16)*r&65535)<<16)&4294967295,n^=a,n=n<<13|n>>>19,o=(n&65535)*5+(((n>>>16)*5&65535)<<16)&4294967295,n=(o&65535)+27492+(((o>>>16)+58964&65535)<<16);const s=t-1;switch(a=0,e){case 3:{a^=(q.charCodeAt(s+2)&255)<<16;break}case 2:{a^=(q.charCodeAt(s+1)&255)<<8;break}case 1:{a^=q.charCodeAt(s)&255;break}}return a=(a&65535)*A+(((a>>>16)*A&65535)<<16)&4294967295,a=a<<15|a>>>17,a=(a&65535)*r+(((a>>>16)*r&65535)<<16)&4294967295,n^=a,n^=q.length,n^=n>>>16,n=(n&65535)*2246822507+(((n>>>16)*2246822507&65535)<<16)&4294967295,n^=n>>>13,n=(n&65535)*3266489909+(((n>>>16)*3266489909&65535)<<16)&4294967295,n^=n>>>16,n>>>0};typeof window<"u"&&(window.getBrowserFingerprint=fu);var pu=(q=>(q.UPDATE_USER="user/UPDATE",q))(pu||{}),Ue=(q=>(q.AVAILABLE="Available",q.BUSY="Busy",q.AWAY="Away",q))(Ue||{});const Ci="@connectycube/chat-widget:session",xi="@connectycube/chat-widget:guest",Si="@connectycube/chat-widget:rememberMe",hu="widget_",IM=(q,e)=>{G.init(q,e)},BM=async(q,e,t,A)=>{const r=!bu();if(r){const n=SA();n&&(G.setSession(n),await Mu(n,q,e,t,A))}return r},mu=async()=>{const e=SA()?.user?.login,t=typeof e=="string"&&(await ku(e)).substring(0,32);return e&&t?await Po(e,t):null},Po=async(q,e)=>{const t=await G.createSession({login:q,password:e});return Jo(t,hn()),t},wu=async(q,e,t,A)=>{const r=UM(q),n=(await ku(r)).substring(0,32),o=q;let a;try{a=await Po(r,n),await Mu(a,e,o,t,A)}catch(s){if(s?.code===404)a=await Eu(r,n,e,o,t,A);else throw s}return a},yu=async()=>{try{await G.destroySession(),ki()}catch(q){console.error(q)}},vu=()=>{const q=G.service?.getSession();return q||null},Eu=async(q,e,t,A,r,n)=>{const o={login:q,password:e,full_name:t||q};return A&&(o.external_id=A+""),r&&(o.avatar=r),n&&(o.website=n),await G.users.signup(o),Po(q,e)},TM=(q={})=>G.service?.sdkInstance?.config?.set?.(q),bi=async(q,e)=>{const t=e?.user_id??Su(),A=e?.token??DM(),r=t&&A?{userId:t,password:A}:null;return r?q(r):Promise.reject(new Error("[useConnectyCube.connect] Missing userId and password"))},Mu=async(q,e,t,A,r)=>{const n={};if(e&&q?.user?.full_name!==e&&(n.full_name=e),t&&q?.user?.external_id!==t+""&&(n.external_id=t+""),A&&q?.user?.avatar!==A&&(n.avatar=A),r&&q?.user?.website!==r&&(n.website=r),Object.keys(n).length>0){const{user:o}=await G.users.update(n);o&&(q.user=o,Jo(q,hn()))}return q},Jo=(q,e=!1)=>{dt&&!e&&localStorage.setItem(Ci,JSON.stringify(q))},SA=()=>{const q=dt&&localStorage.getItem(Ci);return q?JSON.parse(q):hn()?vu():null},ki=()=>{dt&&(localStorage.removeItem(Ci),localStorage.removeItem(Fo))},bA=()=>{const q=SA();return q?q.user:null},Cu=q=>{if(typeof q?.custom_data=="string")try{return JSON.parse(q.custom_data)}catch(e){return console.error("Error parsing custom data:",e),null}return null},xu=()=>{const q=bA();return Cu(q)},pn=q=>Cu(q||bA())?.userStatus??"Available",Zo=async(q,e=!1)=>{const t=xu(),A=Object.assign({},t,q),r=JSON.stringify(A),n=SA();let o=bA();return o&&e?o={...o,custom_data:r}:o=(await G.users.update({custom_data:r})).user,n&&Jo({...n,user:o},hn()),o},DM=()=>{const q=SA();return q?q.token:null},Su=()=>{const q=SA();return q?q.user_id:null},bu=()=>{const e=(hn()?null:SA())?.updated_at??new Date(0).toISOString(),t=new Date(e).getTime(),r=Date.now()-t,n=6e4*119;return r>n},NM=q=>{const e=SA();return e?!!(q&&e.user?.external_id!==q):!1},ku=async q=>{const e=new TextEncoder().encode(q);let t;try{t=await crypto.subtle.digest("SHA-256",e)}catch{t=new Uint8Array(e.length).map(()=>Math.random()*256|0).buffer}return Array.from(new Uint8Array(t)).map(A=>A.toString(16).padStart(2,"0")).join("")},Ye=(q,e=!0)=>q?q.full_name||q.login||`Unknown:${q.id}`:e?"Unknown":"",Ii=q=>q?/^(https?:\/\/|\/|\.\/|\.\.\/)/.test(q)?q:G.storage.privateUrl(q):"",UM=q=>q?`${hu}${q}`:`${hu}${Math.random().toString(36).substring(2,14)}`,RM=async(q,e)=>G.data.create("UserReports",{reportedUserId:q,reason:e}),QM=async q=>{const e=await fu(),t=Su(),A=btoa(`${t}:${e}`),{endpoint:r,auth:n,p256dh:o}=q??{};if(r&&n&&o&&A)return G.pushnotifications.subscriptions.create({notification_channel:G.NotificationChannel.WEB,push_token:{environment:"production",web_endpoint:r,web_auth:n,web_p256dh:o},device:{platform:G.DevicePlatform.WEB,udid:btoa(`${t}:${e}`)}})},OM=async()=>{const e=(await G.pushnotifications.subscriptions.list()).map(({subscription:t})=>G.pushnotifications.subscriptions.delete(t.id));return Promise.all(e)},jM=!!G.videochat,GM=(q=!1)=>{dt&&(q?localStorage.setItem(Si,"1"):localStorage.removeItem(Si))},FM=(q=!1)=>{dt&&(q?localStorage.setItem(xi,"1"):localStorage.removeItem(xi))},LM=()=>dt?!!localStorage.getItem(Si):!1,YM=()=>dt?!!localStorage.getItem(xi):!1,hn=()=>YM()&&!LM(),zM={CHAT_WIDGET_CONNECTYCUBE_TERMS_AND_CONDITIONS:"https://connectycube.com/terms-of-use/"},{CHAT_WIDGET_CONNECTYCUBE_TERMS_AND_CONDITIONS:KM}=zM||"production",Ve={userAuthorized:!1,attachmentsAccept:"*/*",attachmentsAcceptList:["*/*"],enableUserLogin:!1,enableCalls:!1,enableUserStatuses:!1,enableLastSeen:!1,enableContentReporting:!1,enableBlockList:!1,enableUrlPreview:!1,limitUrlsPreviews:1,termsAndConditions:KM},he=Ae((q,e)=>({...Ve,setUserAuthorized:t=>q({userAuthorized:t}),setAttachmentsAccept:t=>q({attachmentsAccept:t,attachmentsAcceptList:Bu(t)}),setEnableUserLogin:t=>q({enableUserLogin:t}),setEnableCalls:t=>q({enableCalls:t&&jM}),setEnableUserStatuses:t=>q({enableUserStatuses:t}),setEnableLastSeen:t=>q({enableLastSeen:t}),setEnableContentReporting:t=>q({enableContentReporting:t}),setEnableBlockList:t=>q({enableBlockList:t}),setEnableUrlPreview:t=>q({enableUrlPreview:t}),setLimitUrlsPreviews:t=>q({limitUrlsPreviews:t>5?5:t}),setTermsAndConditions:t=>q({termsAndConditions:t}),resetUserAuthorized:()=>q({userAuthorized:Ve.userAuthorized}),resetAttachmentsAccept:()=>q({attachmentsAccept:Ve.attachmentsAccept,attachmentsAcceptList:Ve.attachmentsAcceptList}),resetEnableUserLogin:()=>q({enableUserLogin:Ve.enableUserLogin}),resetEnableCalls:()=>q({enableCalls:Ve.enableCalls}),resetEnableUserStatuses:()=>q({enableUserStatuses:Ve.enableUserStatuses}),resetEnableLastSeen:()=>q({enableLastSeen:Ve.enableLastSeen}),resetEnableContentReporting:()=>q({enableContentReporting:Ve.enableContentReporting}),resetEnableBlockList:()=>q({enableBlockList:Ve.enableBlockList}),resetEnableUrlPreview:()=>q({enableUrlPreview:Ve.enableUrlPreview}),resetLimitUrlsPreviews:()=>q({limitUrlsPreviews:Ve.limitUrlsPreviews}),resetTermsAndConditions:()=>q({termsAndConditions:Ve.termsAndConditions}),isSupportedFile:t=>JM(t,e().attachmentsAcceptList)})),Iu=q=>{q.attachmentsAccept&&(q.attachmentsAcceptList=Bu(q.attachmentsAccept)),q.limitUrlsPreviews&&(q.limitUrlsPreviews=q.limitUrlsPreviews>5?5:q.limitUrlsPreviews),he.setState(q)},PM=()=>{he.setState(Ve)},Bu=q=>typeof q=="string"?q.split(/\s*,\s*|\s+/).map(e=>e.toLowerCase().trim()):null,JM=(q,e)=>{const{type:t,size:A}=q;if(e===null||typeof t!="string"||typeof A!="number"||A<=0||t.length===0)return!1;const r=t.toLowerCase(),[n,o]=r.split("/");return e.some(a=>a.startsWith("*")||a===r||a.endsWith("/*")&&a.startsWith(n)||a.startsWith(".")&&a.slice(1)===o)},ZM={CHAT_WIDGET_CONNECTYCUBE_WEB_PUSH_SERVICE_WORKER_PATH:"/connectycube-chat-widget-sw.js",CHAT_WIDGET_CONNECTYCUBE_WEB_PUSH_VAPID_PUBLIC_KEY:"BGzym4pVV8NX8I186AY7nFufNJabnGndKRB8rm5-8S5UH8ME_WNGOprIt5vvFCocwYvLybC8cg2KhuQfploiP2Q"},{CHAT_WIDGET_CONNECTYCUBE_WEB_PUSH_VAPID_PUBLIC_KEY:WM,CHAT_WIDGET_CONNECTYCUBE_WEB_PUSH_SERVICE_WORKER_PATH:HM}=ZM||"production",He={muted:!1,showNotifications:!1,playSound:!0,webPushNotifications:!1,webPushVapidPublicKey:WM,serviceWorkerPath:HM},$A=Ae(q=>({...He,setMuted:e=>q({muted:e}),resetMuted:()=>q({muted:He.muted}),setShowNotifications:e=>q({showNotifications:e}),resetShowNotifications:()=>q({showNotifications:He.showNotifications}),setPlaySound:e=>q({playSound:e}),resetPlaySound:()=>q({playSound:He.playSound}),setWebPushNotifications:e=>q({webPushNotifications:e}),resetWebPushNotifications:()=>q({webPushNotifications:He.webPushNotifications}),setWebPushVapidPublicKey:e=>q({webPushVapidPublicKey:e}),resetWebPushVapidPublicKey:()=>q({webPushVapidPublicKey:He.webPushVapidPublicKey}),setServiceWorkerPath:e=>q({serviceWorkerPath:e}),resetServiceWorkerPath:()=>q({serviceWorkerPath:He.serviceWorkerPath})})),XM=q=>{$A.setState(q)},_M=()=>{$A.setState(He)},Wo={quickActions:{title:"",description:"",actions:[]}},Bi=Ae(q=>({...Wo,setQuickActions:e=>q({quickActions:e}),resetQuickActions:()=>q({quickActions:Wo.quickActions})})),$M=q=>{Bi.setState(q)},qC=()=>{Bi.setState(Wo)},lA={requestOnlineUsersInterval:300,enableOnlineUsersBadge:!1,onlineUsersCount:0},mn=Ae(q=>({requestOnlineUsersInterval:lA.requestOnlineUsersInterval,enableOnlineUsersBadge:lA.enableOnlineUsersBadge,onlineUsersCount:lA.onlineUsersCount,setRequestOnlineUsersInterval:e=>{q({requestOnlineUsersInterval:typeof e=="number"?e>30?e:30:lA.requestOnlineUsersInterval})},setEnableOnlineUsersBadge:e=>q({enableOnlineUsersBadge:e}),setOnlineUsersCount:e=>q({onlineUsersCount:e}),resetRequestOnlineUsersInterval:()=>q({requestOnlineUsersInterval:lA.requestOnlineUsersInterval}),resetEnableOnlineUsersBadge:()=>q({enableOnlineUsersBadge:lA.enableOnlineUsersBadge}),resetOnlineUsersCount:()=>q({onlineUsersCount:lA.onlineUsersCount})})),eC=()=>{mn.setState({onlineUsersCount:0})},Tu={fetchedCount:0,queue:[],urlPreviews:new Map,isProcessing:!1},Ti=Ae((q,e)=>({...Tu,addUrls:async t=>{const A=e(),r=t.filter(a=>!A.urlPreviews.has(a)&&!A.queue.includes(a));if(A.isProcessing||r.length===0)return;q({queue:[...A.queue,...r],isProcessing:!0});let n=A.fetchedCount;const o=new Map(A.urlPreviews);for(const a of r)try{const s=await G.linkpreview.get(a);o.set(a,s),n++}catch(s){console.warn(`Failed to fetch link preview for ${a}`,s)}q({urlPreviews:o,fetchedCount:n,isProcessing:!1,queue:[]})},matchUrlsFromMessage:(t="")=>{const A=he.getState().limitUrlsPreviews;return(t.match(/https?:\/\/[^\s]+/g)||[]).slice(0,A)}})),tC=()=>{Ti.setState(Tu)},wn=Ae(q=>({visible:!1,userId:void 0,showProfile:e=>q({visible:!0,userId:e}),hideProfile:()=>q({visible:!1,userId:void 0})})),Du=()=>{wn.setState({visible:!1,userId:void 0})},Ho=Ae(q=>({unreadCount:0,setUnreadCount:e=>q({unreadCount:e}),resetUnreadCount:()=>q({unreadCount:0})})),AC=()=>{Ho.setState({unreadCount:0})},rC=async()=>"Notification"in window?Notification.permission==="granted"?!0:await Notification.requestPermission()==="granted"?(console.log("Notifications are enabled"),!0):(console.warn("Notifications are disabled"),!1):(console.error("Notifications are not supported in this browser"),!1),nC=async q=>{let e=!1;try{q&&"serviceWorker"in navigator&&(e=!!await navigator.serviceWorker.register(q,{type:"module"}))}catch(t){throw new Error(`Registration failed: ${t}`)}return e},Nu=async q=>{try{if(q&&"serviceWorker"in navigator)return navigator.serviceWorker.getRegistration(q)}catch(e){throw new Error(`Get registration failed: ${e}`)}},oC=q=>{const{endpoint:e="",keys:t={}}=q?.toJSON()??{},{p256dh:A="",auth:r=""}=t;return{endpoint:e,p256dh:A,auth:r}},Uu=async(q,e)=>{const t=await Nu(q);let A=null;return t?.pushManager&&(A=await t.pushManager.getSubscription(),!A&&e&&(A=await t?.pushManager.subscribe({applicationServerKey:e,userVisibleOnly:!0})??null)),A},aC=async q=>(await Uu(q))?.unsubscribe()??!1,Ru=()=>{const q=xu(),{showNotifications:e,playSound:t,webPushNotifications:A}=$A.getState();return{userStatus:q?.userStatus??Ue.AVAILABLE,isNotifications:q?.notifications??e,isNotificationSound:q?.notificationSound??t,isPushNotifications:q?.pushNotifications??A}},sC=Ru(),vr=Ae(q=>({...sC,setUserStatus:async(e,t)=>{await Zo({userStatus:e},t),q({userStatus:e})},setIsNotifications:async(e,t)=>{await Zo({notifications:e},t),q({isNotifications:e})},setIsNotificationSound:async(e,t)=>{await Zo({notificationSound:e},t),q({isNotificationSound:e})},setIsPushNotifications:async(e,t)=>{const A=await Qu(e);await Zo({pushNotifications:A},t),q({isPushNotifications:A})}})),Qu=async q=>{const{serviceWorkerPath:e,webPushVapidPublicKey:t}=$A.getState();let A=!1;try{if(q){const r=await Uu(e,t),n=oC(r);await QM(n),A=!0}else await aC(e),await OM()}catch(r){console.error("Error managing push notifications subscription:",r)}return A},Ou=async()=>{const q=Ru(),e=await Qu(q.isPushNotifications);vr.setState({...q,isPushNotifications:e})},iC={CHAT_WIDGET_CONNECTYCUBE_GOOGLE_GENERATIVE_AI_API_KEY:"AIzaSyBVw8bUP84V-wIz6j3wMmlpGs-wHBRQv1M"},{CHAT_WIDGET_CONNECTYCUBE_GOOGLE_GENERATIVE_AI_API_KEY:VC}=iC||"production",yn={changeMessageTone:!1,textSummarization:!1,apiKey:VC},ju=Ae(q=>({...yn,setChangeMessageTone:e=>q({changeMessageTone:!!e}),setTextSummarization:e=>q({textSummarization:!!e}),setApiKey:e=>q({apiKey:e}),resetChangeMessageTone:()=>q({changeMessageTone:yn.changeMessageTone}),resetTextSummarization:()=>q({textSummarization:yn.textSummarization}),resetApiKey:()=>q({apiKey:yn.apiKey})})),vn=Ae(q=>({shadowRoot:dt?document:{},shadowPortal:dt?document.body:null,setShadowRoot:e=>q({shadowRoot:e??document,shadowPortal:e??document.body})})),lC={chat:{streamManagement:{enable:!0}}},cC=({creds:q,config:e={},user:t={},enableUserLogin:A})=>{const r=w.useRef(!1),{id:n,name:o,avatar:a,userProfileLink:s}=t,i=Object.assign(lC,e),l=Be(u=>u.singleView),V=he(u=>u.setUserAuthorized);FM(l),r.current||(r.current=!0,IM(q,i),Iu({userAuthorized:!bu()}),!A&&NM(n)?(console.info(`[useAppAuthorization] user changed to id: ${n}, name: ${o}`),ki(),V(!1)):BM(o,n,a,s))},Gu=q=>Symbol.iterator in q,Fu=q=>"entries"in q,Lu=(q,e)=>{const t=q instanceof Map?q:new Map(q.entries()),A=e instanceof Map?e:new Map(e.entries());if(t.size!==A.size)return!1;for(const[r,n]of t)if(!A.has(r)||!Object.is(n,A.get(r)))return!1;return!0},uC=(q,e)=>{const t=q[Symbol.iterator](),A=e[Symbol.iterator]();let r=t.next(),n=A.next();for(;!r.done&&!n.done;){if(!Object.is(r.value,n.value))return!1;r=t.next(),n=A.next()}return!!r.done&&!!n.done};function dC(q,e){return Object.is(q,e)?!0:typeof q!="object"||q===null||typeof e!="object"||e===null||Object.getPrototypeOf(q)!==Object.getPrototypeOf(e)?!1:Gu(q)&&Gu(e)?Fu(q)&&Fu(e)?Lu(q,e):uC(q,e):Lu({entries:()=>Object.entries(q)},{entries:()=>Object.entries(e)})}function Fq(q){const e=w.useRef(void 0);return t=>{const A=q(t);return dC(e.current,A)?e.current:e.current=A}}const gC=({open:q=ye.opened,embedView:e=!1,splitView:t=ye.splitView,singleView:A=ye.singleView,showChatStatus:r=ye.showChatStatus,showOnlineUsersTab:n=ye.showOnlineUsersTab,hideNewChatButton:o=ye.hideNewChatButton,hideNewUserChatOption:a=ye.hideNewUserChatOption,hideNewGroupChatOption:s=ye.hideNewGroupChatOption,imgLogoSource:i=ye.imgLogoSource,muted:l=He.muted,showNotifications:V=He.showNotifications,playSound:u=He.playSound,webPushNotifications:g=He.webPushNotifications,serviceWorkerPath:d=He.serviceWorkerPath,webPushVapidPublicKey:f=He.webPushVapidPublicKey,attachmentsAccept:p=Ve.attachmentsAccept,enableUserLogin:h=Ve.enableUserLogin,enableCalls:m=Ve.enableCalls,enableUserStatuses:M=Ve.enableUserStatuses,enableLastSeen:E=Ve.enableLastSeen,enableContentReporting:v=Ve.enableContentReporting,enableBlockList:S=Ve.enableBlockList,enableUrlPreview:k=Ve.enableUrlPreview,limitUrlsPreviews:I=Ve.limitUrlsPreviews,termsAndConditions:L=Ve.termsAndConditions,quickActions:R=Wo.quickActions,defaultChat:P=wr.defaultChat,singleViewChat:Y=wr.singleViewChat,enableOnlineUsersBadge:O=lA.enableOnlineUsersBadge,getOnlineUsersInterval:F=lA.requestOnlineUsersInterval,ai:qq=yn,onUnreadCountChange:T,onOnlineUsersCountChange:j,onOpenChange:N})=>{const[K,Aq,dq]=Be(Fq(lq=>[lq.opened,lq.setOpened,lq.toggleOpened])),vq=Ho(lq=>lq.unreadCount),[U,rq,hq]=mn(Fq(lq=>[lq.onlineUsersCount,lq.setRequestOnlineUsersInterval,lq.setEnableOnlineUsersBadge])),[fq,oq,H]=ju(Fq(lq=>[lq.setChangeMessageTone,lq.setTextSummarization,lq.setApiKey]));w.useEffect(()=>{lE({opened:e||q,splitView:t&&!A,singleView:A,showChatStatus:r,showOnlineUsersTab:n&&!A,hideNewChatButton:o,hideNewUserChatOption:a,hideNewGroupChatOption:s,imgLogoSource:i})},[q,e,t,A,r,n,o,a,s,i]),w.useEffect(()=>{XM({muted:l,showNotifications:V,playSound:u,webPushNotifications:g,webPushVapidPublicKey:f,serviceWorkerPath:d})},[l,V,u,g,f,d]),w.useEffect(()=>{Iu({attachmentsAccept:p,enableUserLogin:h,enableCalls:m,enableUserStatuses:M,enableLastSeen:E,enableContentReporting:v,enableBlockList:S,enableUrlPreview:k,limitUrlsPreviews:I,termsAndConditions:L})},[p,h,m,M,E,v,S,k,I,L]),w.useEffect(()=>{$M({quickActions:R})},[R]),w.useEffect(()=>{iE({defaultChat:P,singleViewChat:Y})},[P,Y]),w.useEffect(()=>{rq(F)},[F,rq]),w.useEffect(()=>{hq(O)},[O,hq]),w.useEffect(()=>{const{changeMessageTone:lq,textSummarization:Mq,apiKey:Qq}=qq;typeof lq=="boolean"&&fq(lq),typeof Mq=="boolean"&&oq(Mq),typeof Qq=="string"&&H(Qq)},[qq,fq,oq,H]),w.useEffect(()=>{j?.(U)},[U,j]),w.useEffect(()=>{T?.(vq)},[vq,T]),w.useEffect(()=>{N?.(K)},[K,N]),w.useEffect(()=>{typeof window?.ConnectyCubeChatWidget=="object"?(window.ConnectyCubeChatWidget.open=()=>Aq(!0),window.ConnectyCubeChatWidget.close=()=>Aq(!1),window.ConnectyCubeChatWidget.toggle=dq):window.ConnectyCubeChatWidget={open:()=>Aq(!0),close:()=>Aq(!1),toggle:dq},setTimeout(()=>{window.ConnectyCubeChatWidget?.initialNotification&&window?.ConnectyCubeChatWidget?.open?.()},1e3)},[Aq,dq])};function Xo(q){const e=w.useRef(null),[t,A]=$A(Fq(V=>[V.muted,V.playSound])),r=he(V=>V.enableUserStatuses),[n,o]=vr(Fq(V=>[V.userStatus,V.isNotificationSound])),a=r&&(n===Ue.BUSY||n===Ue.AWAY),s=t||a,i=(V=!1)=>{!s&&A&&o&&e.current&&(e.current.loop=V,e.current.currentTime=0,e.current.play().catch(u=>{console.error("Error playing audio:",u)}))},l=()=>{e.current&&(e.current.pause(),e.current.currentTime=0)};return w.useEffect(()=>(e.current=new Audio(q),()=>{e.current&&(e.current.pause(),e.current=null)}),[q]),{play:i,stop:l}}var cA=(q=>(q.ACCEPT="accept",q.REJECT="reject",q.NOT_ANSWER="notAnswer",q.HUNG_UP="hungUp",q.CANCEL="cancel",q))(cA||{});const fC=Ae(q=>({startCallDate:null,setStartCallDate:()=>q({startCallDate:Date.now()}),resetStartCallDate:()=>q({startCallDate:null})}));function Yu(){const{sendMessage:q,sendMessageByUserId:e,incomingCall:t,activeCall:A,activeCallAcceptData:r,activeCallStopData:n,activeCallNotAnswerData:o,resetSessionData:a}=Jq(),[s,i,l]=fC(Fq(p=>[p.startCallDate,p.setStartCallDate,p.resetStartCallDate])),V=(p,h,m)=>{const M=s?Math.floor((Date.now()-s)/1e3):0,E={callHistory:!0,callType:m,duration:M};h?e(p,h,E):q(p,void 0,E),l()},u=()=>{i()},g=p=>{V("reject",p,t?.callType)},d=p=>{V(s?"hungUp":"cancel",p,A?.callType)},f=p=>{V("notAnswer",p,A?.callType)};return w.useEffect(()=>{r&&(i(),a(ee.ON_ACCEPT))},[r]),w.useEffect(()=>{n&&(l(),a(ee.ON_STOP))},[n]),w.useEffect(()=>{o&&(f(o?.userID),a(ee.ON_NOT_ANSWER))},[o]),{sendAcceptCall:u,sendRejectCall:g,sendHungUpCall:d,sendNotAnswerCall:f}}const pC=()=>{const{isConnected:q,dialogs:e,selectedDialog:t,getDialogOpponentId:A,getLastActivity:r,subscribeToLastActivity:n,unsubscribeFromLastActivity:o}=Jq(),a=Be(f=>f.opened),s=he(f=>f.enableLastSeen),i=w.useRef(void 0),l=w.useRef({}),V=w.useRef(0),u=async()=>{if(Date.now()-V.current<3e4)return;const f=new Set,p=[...e].sort((m,M)=>new Date(M.updated_at).getTime()-new Date(m.updated_at).getTime());for(let m=0;m<p.length;m++){const M=A(p[m]);if(typeof M=="number"&&(f.add(M),f.size>=10))break}const h=async()=>{await Promise.all([...f].map(r)),V.current=Date.now()};q?await h():l.current.fetchLastActivities=h},g=()=>{const f=A();if(!f)return;const p=()=>{n(f),i.current=f};q?p():l.current.subscribeToUserLastActivity=p},d=()=>{const f=i.current;if(!f)return;const p=()=>{o(f),i.current=void 0};q?p():l.current.unsubscribeFromUserLastActivity=p};w.useEffect(()=>{s&&a&&u()},[s,a]),w.useEffect(()=>{s&&(d(),t&&g())},[s,t]),w.useEffect(()=>{s&&q&&(l.current.unsubscribeFromUserLastActivity?.(),l.current.subscribeToUserLastActivity?.(),l.current.fetchLastActivities?.(),l.current={})},[s,q])},hC="data:audio/mpeg;base64,SUQzAwAAAAAAPFRZRVIAAAAFAAAAMjAxOVRFTkMAAAAVAAAATEFNRSBpbiBGTCBTdHVkaW8gMTJUQlBNAAAABAAAADEzMP/6sGxzrAAABQxWOoUFgAId4RXcowgBJI4PX7mNAAD+hCK3JCAA/4JjZAAsmZmaUpecpSb3m/5Skz83+ZmZnaTdf+LFjkzM0pRgkA3VkgEBEWiGI6EBMfxwAgFC0EwPpgJj+PAEBEWgmFaYAMfxwAACg5AWAc+BMfyoDQdGRDEd4Sy2cCQTGSWT2gbm5UBoTGRDEdoQy2cCQTGRLJ7QlqyoIBMZEMR2hDNyoDQmMiGI8ZmrYMHNOzN+7Rkc8fAZD82gCOPHwPD01G423eAARzyesAAhyCB4DC6IEAAcW+HxAcL8o4MDr+/j9/j8fj8fj8Xicf9JV1z95KHYSitLDc5At3rks2AkI0Wyq9n8DKBhwA8taZvZ28ONYBABqLX/l2sv32VwUjAzYFADGJjYFv1W5WaY0ynwW/CDMqzfMzhmD1PjlSjEpb9+lX0mbLWvpnyBx1/0UPmqcGfLAVKFixjwRgT4yGs8uxnUdT2YvAq6172X7hdK/ZsJBib5oRRtSw9AEQA1IcxYkAEGtQ9du2flIYVyhd6Xz+MvkeMvo6URogsbBQYwIQUBigQRkiohEjRIMEJfVq7r9ZPDX/4vF8Psb//73+/5jlR7QxxjBixK+aSsJB4mwAv0rS97XmG3Zm9a/9X8vx/////////////////////7dP39b7n/////////////7qyCVAAAIBAYFAgFRqHJ5GIqJkXzF9mE+EyBcyGWNlvcSm0nrHuM6O/7tTrt5df+buk9XovT1aav6N2t/0f//7v//Qqso8cFdk6YAYAlyOqARN1TIuwudraYQCc3VYWIjjYfabLcSGEPKQyx//qybC35FAAF+GtTf2KAAEIrqS3sHAAbPek/7O2+gRe5JDQctFjC6ZFI+USiRVpFTEiotQvw5pdKqKKLWoENRbdNNls6ls54bCJi5kkM6CwsPlLUyLqKjYqllFEvLO1NWs1JkmwNIbAGCiCQYXJVZHEgRUgxVPF4gSDqMiLGQ5wnoTcASEAzIYjhzjY2RUpdT2RXqakkgpIvCbA9Yc4vPvRqKykE16lLWh+ock2eajyjUqv//8yKQtpq3/+QAwQR2xx23wHP3WQVBXy4CKjuw7q93mev+9beZ+e3d/5n/6/pt1//9fdr/9/1v///////88UAEAXRf9gjALLgP/8MNclshD1EcIEAF2hLxF60sTJEMBIeaAgwcymiMLvEbGg8MFAXneNnUPM7dNzYhADsRtkK0q25yXbZc77Qgwd8nBs1Z6bpL05I2kVofvW31i/6t3OYRqrXrF54G/tmfWgZVJEfTay1+NBGIlftY3cZ3Wt6xlTogkdO3Kgx6UPTHQ2LyrxgSHm7PjnLWlXp2d7+oZhmmd8yI7KAH6LdXLG9vX4/Uzq41Mc+2Uy8oagTYeTyT1VJKIo5DEmIOlQUYixI32JwF8g6yIF+PPV///xxgFqg3/0Vs3/8kTZCByTaijW2gSp1kHTJhGqZLTLSfylvtXV7foVf/X9//f3q+vs3V1fX//r/f+3q9a/////WTAMIOP/3GcFib////6jf/9RtWnDbBWhMWAKAMKzzvRBpAIQpSg3UwWWbwQtFLDlGVoQvZJqvDTiKkRQeVNMuXD8Ypbc/PUlEyRRWNIjRXDHv55XIxXX3LMKkojD/16938IxDkOW+//qybOsUKgAG0WpP+zpXoDzLqR9kLV4dba057W1ewOSupTwcKFAKAVLFfKVsoKhYlu1+Ryh2H4qQ2zh+JbG3/l+ohDkP6sQxZbgIn570jIwg2DkJM1WQwBrixFYm1lTUZBE5zeVBAj4wTfipgyUojE7L4xOY08vp7kYjEvylFJOfnn5UqaPAUg0uefnnqcQhwwwgsyHSQUW9QKJ9EBpZ1e6//+iiSIQV9ikfx5AoIAM8McNrsR+/28A6SKcs7axDlvazcHcvl7+X9/6v/2///V+/+pf/v/s1X/////+gJmKX/zEKkr/+r9L1h1IM6rUgBABDa2EY3sDjZrjhkxg9gAzcEiQQMEBphZmtqEY6CXuspfrC10vszJYaXO87LAngs0M3GZ1NuMhUEDiKVskl27D/T9NdwZ5L6KvzLeMOuy5MMxnOJP6/KIM1EpV19aMxTAFVo3EXZlkqZ0/U4+zXotFsYjLcZTLX9lV1TICF56x4HSIiAgUkmQBLBVwdfqCHpcKXOtLM61uZh6Gl22KIACcVqP9TVo0/2W5TGcaz+xmM8rU1/eOvxlKVbf2sd1qa1r+0jVrkF81/MNZKdCFocmcB7ZACx3Q5/1/fQ48hlPYXR+sGUJRcDh3c9f/8C7nG3Q1JrpIOAL1TXf9ur+v0/t//O/b/7bf/v//v/99+370f////g+Nv/wKP/+v9KhaNAm2GAAc4yZ2UdgYJTA6JCCCyoAAUGggCA8VDRmi5GHwMWxaVfh98pc90YfaG6sQ1GLFjluUM8ddmQJC3InAX7y/GJS4wKDX4mpNG4impHJ59oajVJLYw7SMoYfisEupYlamA//qybJRDMoMIG3pKY5yN8D7LqR1QLa4ahckqjfaeQO2upH2QtXgUFmCWYmA38OQzFZNu6zJ9pTIX5iM46EA3ILehw0vDAIRMVRA/hQTFQcMCAgrG4kJ4xNQZT3pL2tVsVv/8bceWm+Y4GBYDP9Ar/OTA16U6uZ9zo87uGGfKmXY1FXPMNDMoG8P0n4c1lqHWbp8tooJDFW3VxrRkssTpJoOpZYEtGXIKkeIGC9E+E+gg23//dimJgRAoq/umcM0j3/9jU4hBAPvVVd9gKqiGhi4BzAL3EVNi6t/an7tX/X+uX/1//X3f956lRdf7/8u09/////9aQWk2Z/90A9EN3/5b9IsEgLjraeJrbAAaHmFMYQdl3GqEAGjGgNPJWxqFSae2fidJBsIhuBLcPQ9Sv+8l3+aeelbkonUtXctY4S7CUFvIjS7xi8EV6CxXtTt6XTTRTHBid5Wj7GlNhJKHkiD5BbnKs/RP/EJHOVa87VyuWKOKu8hqYRl0csjmUDGKgCNAMgOjMuobduvauTdT94/bxpDMyCAcK8anC2ZJl139ndkbKW7qH4E3wLT3WzP3EtBQQkLjIRNVFJYQiziPqLI1F5wGoM+r///7ChyoXm/qPzRRa/LE0BAQBWFd463UD8P1DaaANmGiGXw3KNPz77n/LP39/+3dv9X//+3q9f////9/r////qCAX/9YdG//lfydNXGWBIh7+AAAINl2qdH0xCIDFhMElMHIQwMFiEZmEAUCQWa6iJjsAmEgIXTSsGgoNAddyAtwGMK+etR+ntt1mso1NhAEYw6IYOVDVyOup6Hnz2/Tgs4JiHJYMjED6R7h//qybND3MAEHdnJKe5yc8EjOSHhoM24Y1ckprnaeAOsuZHQcnFCqTKaxjUvu3WxCAU1Mrl6XNUMCE8OCM1nlj2fqym9lYvSqlrVMaCJugquCAkYlYJreaGEwuWnJiwNBxzpynlONLluU2f/8t2sljZBo8WSZl43MT7prpKZ1rrQMaTIFMRkBmkA3Y3V/IICkVh6KmUp1GYIDiofUXh/eozAqIl1f///MBnzUnW/nD82OI/kgZAAJteMuWrMPJinF+hv1j8TSWeqr/yvcvAH5uz/uv+b7/9u39vV/1t///+3////q/1qTJgB/A0tv61LKADqjY////45z/X8spLEg7C3veCqZPC1RYMgDQqiFDBUJkoRUoHASQhoCXoKgpMl6pW8y9ZP8edxu1LHXHg+GqsolTcgEA+LlAoUaBXs5zOen1lUOgYGxWM4TbdH1xtc5fosM+QGYXDkXpL8w8amqTJEB4O7ZrV6V/eZ2rM9fxvbxv2JG5hMAxiwNYaboB2wBAQgwlpKFEvF09yinVrmKpWHOM3c4nSq/Wyq7JIjiBqUBwZFL9xTAYCIoKEOLtpigBAr+jJTnAsNV///+kUHP/5xmQOMxRQLrX5v9SJzeglFINXjcCHC9t+ttdv6/NT9//2t9vtfn92Wno6fWrf/////b////gvD2/9QAv/931ieQhwSJfvhgICH6JryJpisBmaBMYvEQ8mDMIHAxnMQDAx2WjAAROAy0y8ATFICGgCxcwOBUtmAoyFqXkWTYibPBoCOo2eNVYbMHBJW0GgcCCt3dVb1Xub8ch4wSCoU/0ulDWV9W+9uXJnuXZYZCCb2P3Odm//qybC+EOgAHT3JJe5ykcD2rmR1gLV4eYcsh7nacQPIu5L2AqXDlYqMhoFTNHukqw9M2tx2pTc3zKtVkkBsIKoBMNyAznUwQFAwQCmoHJhgnzyR5ylLJ/qdnJ0zGqXBzS8kis1NVOtqmUvU60XMSqElAMCr/wiADCpaHeVD7c4DQoJ9Nm5xx09MDEgm////i1Sq/8yNVm5YN/2AszDQv/v9t7QP7/ZYy8zJI5qwOxN3S35zI5a0phEle5lByrf//7bff9ft/99X////6////+sP5S//C8//7/rFGB1Aml5MEAwKXFpTTQKFjBhvMMtkxgAzBIECBCYfAhhwNGDQad2iJo8Chg0L1qaGAAMqul4yNIZH9mS58ppXECXZZK18MRbMXcHA8GBdxJurb3y5Go6FgbA7x0tJF25a1zC7BFyvALEjK4CaA49i5gy9NdXck3X5Xq03MN67N8u8tTj9tMRzMGAQMaxLPTTAA3o0AUuCJYDcgdZYO2OTYihgv2UXCEFWKMMQZE1OrOlRSrrXW7mrLZ5Dg9EDJjAGCwwDd02omRLBwYChMXIIqf7G4swBccMYdfpHCUUpZPg5yIYbt///6I58rf51allIy/qMUBQFnl/t79gP1vUysEIvJnQ7Wq7fp9FRX+QL/T+u1Pt//f6ejczT0//13//7f////54UJ//2BMv//u+sVUIMCV2r4gBAgzNwAwAwIAhhCJJh0Y5jCAZkMJRhwAhccRheFBGMm7AMLAqMAQPRsU3Qlo0MndRYyXzSHmfh1nrhMUuZQACgum1DjBsCJdhKKexT2ocsxkqgk60s6/j/U3cbWcw+M3dza//qybHXiNQAHZHLH+72kcEnuSHhsNG4brccbrvaRwPOuZHwcKFDosdjFWhOTGH3ioiABEp4ZZ2vcbeI/ZinMO45WaWVRFuSRoBCgwkXU5wZQDaDw2YFPoCjET8REvF2q5kSL9bIqQGoSKjp1IxQ2rq/1LOFEEDEGCjyS7JVGQNBYFiRFRcBXbokcECwQeZL9ibRUssAYk6Sf///6xjSXJF/6BXY4cJb+gAA1DE/VeUPuX0MrzDRgJdb/q2SS3zofuD51/87KX//mv/b/6+ur+ver3/6vrrf73////6RRCFCJwLqv650DAEi1////ys3/zpLgwVgX1GAAAB67UpyLMmEYWGMRsAJLgMIhgSFRgUHpgaDBgcKJsTiJk0GICAJdNMlalcXJcpNWdjDT4m/qg0ZpccMhoAd0JgUAPOWtd7qtbxZnZpcZVTvvLMcc6V2rVWWp7GQoer2s0297j0ux7qrfl1a7jR9rb3r8I21hU4EAAwVB0xGYg+ecUD6NAMsiAZNABJxKBFzA6autlkJ9JbF0R2RC71Hm1fV+thywELQt5Kif1lgGpsZQvh0TFpVBMgABKIKIjX6zBdQ/gCJBpof///UPgkhxP/KBWrIxv6VFAUDV4b/a3YAlUua6CSk0WhxMXIvfZUbp9rIdZLf/o///9L2/r2/7f/T//2p/T////1CaKP/oE93/879dBAQAMZEAAADXIaeNJxHcRBoYZ0IY4CEYChCKgKhwJgoFinP4BLDszJh0EgTREWQzNwoDgB7nftSl/Wo1ct5XCsBY1aMCQQhz/5vPkteV91LI9Lqu36oLXJXelDEYFjT7DAKmOxdK//qybOqFMwEH1XLE676nIDfrmT9gJ04dqckTL3qTwNyupH2AqXiWJUuX5QzXy7hT3YXSdm3hoeUWVLGnKZysYu6YAoBBgUAgmEuPIa8pHphYgJBcDEeC/MEUBQuyxKGZVVtYW2ytmy5+P/yT4jAeHUpRgYqnP3ZH1MKaAInDnkgmpFdTGQQMQREBygQgS4WroGZaAxLEC04cJeRepjtI6KEAx0UZJaD+v+3fQqHEwtjVK8bhOMkNw97smpKDgMvD/77/ga/W44n+VNx9pD8OsQMH3s/nNyb/b//3//bS36P//9d6aejbd++/////8RBj/8IgAAJCBoUCRZ7FrhwDhhsgcA4rQHAPiMAMLAXAEAswKgnjKDVMMP4GowIQEyyCD6m7XI2/E/SWqfU9Vs9xx2mZlKQIAXFdZ4b5nvK9J72u4XZq/vHlO28jswSQAIGA4GG0ivUz3p/st8+em5PzVWAKszOfT3qF6FKy9gBAVMBQFAwbyOzQ7MwMHcGEwKwKygUEBBGIRt5A85bva20eE/3/7zbOK1LRsia0iv622S6mZTOMgDAZVf0kUgKIQJdCAifBmiddSZwZ8Er4W9E6bIpXmSB9ifA08QYp5+/qs3/rHSgPZpX8fRIpEyPxJ92gxQSA3Z4992uA/v9ljjmIZGeKUk3sGVlDngo+v+9O+w+/+lff//tf3///6f/+n////+DBv/4LrAVQYgJ4dXhgYB9aVhwwBIXBowUI0wxXsxOBswhDYGg0vcGhUYBC+Zu7mYpB6YAgwiC0QtYHAsDgFQHPsxWAFfOxOJrPBHe7yT71owFCSfyypZ785yrKnln9RqXR//qybBKeLgAG13JG+72kcDerqT8HBRIe/ckTrvaxwMquZLQcFFAX93/8whik7cUPMVRQae/lfu60CYa7VqR+RWvxp+Xfz1jSxaKuMpaYFgAYrFSfbEUD4gBhgGCAAhIrYipeRSXWP6/5kLUkNk4XWMimNI700jJaSnY6gl0gwYO5FVfZxGIOWmorxYboE2AsJDsP9a1XPABGR4f///vmE9/ptc4khMCAVRD/ff/kSlAKMwpJfwdMVX1uz6837e//TSv/r9f7b/tXS6uv/09af9d/kX/////AYf/+BnDQiAnznCAgCjUXbRHswCAgwfE8yqhM0pC8xoC4xAAgwxCswsC0xJDw+gm41/CAHDSTAcrAYAAEhxScUTZOqmnq7DppEiwGQl/LWWACBirdBgS1p6UX5utjnGaBj07GGtwzKZRrLe7a85XhbS8M4hRRIb+cl96ni93KzudfHCm1qHb8za3etSp618IhhYEjAETTCyYDdi7wMTFIDDgWBSXAiSYXEGGSx88vF2Se3pm41ycRMJBjEZAqPSWTJqmYpUDe+xQCANCiLez3ZMTYDj4TAiZDDdS82AMCwKBknjV+6SS2LwIikzdb7vV/2fLxUM9/Ya5oo1Mj8MFC3/3+t2AlKVrwENEzGvw2II+1W0v1/p/ZP63/6//2/+v/9///v21+3/////iY//8MBYhAe8eBAgDM5U6iPxgcApiCHxmcvRq+BwYWg4CRgMEZgmGJhwOR5r+hqMJRhiBYKAxB8GgKXgVOwyhdyAmovqXqT5X5K788KAAu9bi5BUCmn0+fyq5ZgV/PqymrFKkakP67uwrJW2tMRgUZ//qybFdJNgAH8XJE676fMDYrmQ1IJV4gxcsNr3Z3yMoq5L2QlTiyBBchtYvV3Uk+fd1NQby3+cWl/9wq1p6DmzqQJgAzAaAPML0Eg10wRhoTMwJwMTAIAEHQDmEwVM3LuH5QJELPefv/5Vr5y2ZxqwW3GXaqdtdnt02HO8+5YwF6A04LhyHFq6c6RguUBgYDrifiGjFLbZQICBjsBJBVPu+tb0xPYVQSxp2//btrH81Q/qIaVUzI47EDCt+211uAtYnhKIANg9R7KZSUfo+3VP+T/nbm1/6f3/1b+//9v/1+q1+nv6f///+Aov/9A0ABAAOFQAAgLNfB03IGQDxEDEYFqGRgeA7GA+BOCgRjAaAJGQQAuIyYJUZJIGGFANhUA1Exgi42Oxd/LMFVW4JCJ0wBFd2bQQAl+AQB2rV7Kiu6ltWhhqvuknZRYyy+7Toex+y9ZQABrgDQYGLXt17tyGO75Ys8e/LmboZR3PVNGXBaMqiWAIGQZEItGIWOnl3iGKQ9kwdBzIgozRYEmSwNO2ufxuTZse//dav4w5bsxjHCSyqvrHP8Ku/x/WX4ZclUFjAWot0Njuf6qzU8SgGUFe46h0dy5njlDQUDoP+Uk7O2xkWRXANkyeNUl0LLsz1aGpqdQ5h86766KhdFSbnDRt7A6nLILAoC6w/++2wH71t6CUUqRw2+ksdZHXvVHfK9r/9W9Pp/vX6ff///9P/0///////C/y0ABACRtwABAMOkL/rEV2YFAEZrnwavAkYVguSBCIwuAwImHI3Hgn/Gn4jGFADiQBNmL/IYoDmcwG+sMQfPzrZ6e1VvUgcDOptDW9vn//qybM/iJgAHLnFE676nIDWrmQ0HBRYc1ckTrvaRwNAupHwclEhxyyrTNHN8+7X1f5j+rDKoelr+iECjL8cUkoraq93M//67nJ+9+X8q391N2I21xOsDAAGA2AyYQgdhpvDLmEUBkYDQGBWCSYBoA7KInUr4Z95TQnWXd5/9Zso1N2QRHYhWkm1J9127gkJDxM6kbIKOAmNAYjG455BUKFMoAPLBQU/VrZ5NgZMM6v7L/27VDqmXVuw+jVR4Geq2CChb73fXWgXcsZeAAk31YHYm7qdpu+zW/bWmv0vt+v+31vt/9mV//9v///rt/////CI7/8ChoVgTafhAQBo9KvJG8LgYYIC2Y8xeZ4BqYghkIQFFRECCHMSAsPf4aNageBw3hgII/mAYEluFFWQOm+EPPM8KZ7CIu+97mQkF1uLgYEo1AlFZbLDlqeqxh0IclFWXyqRfzm6d1ZDLn2IATMPicZS+1DjbxgbPWHz8GwrPfy3Pl/WNNGnZcJVUQgEYBBWYitMesuaBzTgFA4PXABWg5UcROmyL2Oks/o1mpRScqmR8wFFNHSRSQOoJTQxM01NRcTyHjPPV1nAhMhQNICYlrueASBDCxVSv9TmgLMRvP//3/eX6P+keucYxQEAXhWo/FtAkZSlYIQQJBAUwir7dten9L/+yW9+/m///t/7///t/9/f67/////EG//DXEYjCe+/CAoDwV2ADIDgwADA0RTExazG8GTBYIDAAGjA0NQYFgFGc0M5sxZEEwQB4EgGiYjgvd7IvUisNqflS0m1kUvnqecKA4xnEfeT2qkcjk3Q9ynordqRWtKuf/1IvP3rq//qybAJtMYAGaHDGa72kcjirmN1oKl4aQcETr3aRwOAuY7QcFFh2GEguv5K6l3Lsg/f8wob+v+t9zv5/2khtrCPZgABxhqZ5zClgG1NgYUeFLIDRAcZcT1ISyet+bJ3KxOpFgd6J03mRxqkkDAxPrpZQGF/qCQcfCywx7qOhEeSyP/nAGB5p//r/9bpf509YYgYHllsrkgH6/B0xECAMYSKMTf+Uae3LIk1Jc/btf9SstN+d//ptbt///f7f/+n1/////gw//4UgMCADkmoACAf/KQrGCAJTBTAyMLQLgBErFALpMAoIQAzAAAlMCMJAyHk3jDhBeMBYBFCU+rvK9YM4svj9WmkDeKfzrW5+mFgf/3+pt0tDN16sQzoKLKZpL0GSjL/1TuBLM6RNMyVGxScsz538//+3qHn/uS/W1jWpYzDz+s6RNMCQSMVEjPtkWADagUGA6yAExEEhzS8aq1j7PP+ms1Rl1S1j1TZbrtspSauoXQ7lqt1qCAiDBjG6B7dAzAWBiBXbQ+ojQJDDFXb9H/+p0W/kqayKCECYlutssAqrTumM5O1i8Tklwvt+i7fS1Tsl2Xo3T9q9F6z+9v//em1vT7/+35P/////hIf/+DoAhkBTb8EBgODTQbKkCJYDAqvUYMhIAQHHgWDAlIgeCBpO+yBIptJhXIgEYOmOyB65JP3afcFtLZ5IqeijUZBw8zf9xITafW/EJbA8sl81TyWls0Vbv/zGw8eOVA3hpoOpcRvO7f1Lv/9bob2/+k7/M+drSuAGRogBcKmKJQfmvoG0WAYoYDIIIl4ohJmh9T3JXqtXUpKWFrLJYUboH2Nj//qybOPPUAAGMXBFa7ykcDZquP0HIhQZPb8VrvaRwMMC5DwcGFBa7saqR6h9Gn9BEJgQLGC0VFdOcDFgwTf9essCEZs////6f/WYm6EDA+l11ttAnODECJY3cGOWB7dmpI3bo3/t6P0MX2vvTppT/10av9f9av/unT319v////w7/qAQYAVm1AAQDRKleEILmCwIGR5kGagEGFoEgEASQAAQCxg6N5w17JmaJJgoBRcdMRTBdbqQ/EYxjAliVUl6kh2kFQCZCnlI3vmc5dfi9PSW6OvS7pcMavOfzVO0bWbpIhmRoEK2wij5f1Y5/61Vr4flq/zet5WrMiflkyPhiWER6iF4GxHgEkwyMFhQypeMUkbLLhqr9NeiZ0USygyCCTPU76HdIfZXb1JlgdYbyBQKLYSBLpq2IcLoQ0vP/rMQ35X7f/t9H/sUBnGmJioHCqu/1koE7pHfMESL61H0Fi05RW2yp0eReA2oCpdVLLN3OV+n/Z37/9n/63/K1QAEAI5JAACAw+GYtCFVgIA+YOY85hhASpBGAAAaYAYDwiAZMAMLIxIF7DB/B6MW0OTpr/KCoRMtoZTapNNBb2duSyYtmkExhB2GPe19Xd0tLYzsWqn8dWTAoUmTIng+UDaQcDMkkikmmYv50r0pSmTInzUmSOGuH8BqAwSFQEc2BjbtALi0AoFgstQcVRDiELaD6Y+jz++61OeW50knWpOnau6ns+Q0bdWgpsGoECgmdIsvfOBMAGZ9G+q1RiGgFXV2271fX0vV7GSBigIBQ6vd/9qAeUpZEIpJxBLGk9j6Nl7+9WjS9jC3DXu6OtiUJYn0f+z///qybOgSeoAGVXBEa9irYCzguR8HBhIXtcEXrvaRwLgC47QcsEj1/pCYZAt1/BAYEYvv4tMEAAYGiCYjJ2Y1guYFAkWAKJANCASMJgpOUXpM8ATEg2TxddF1N5OVpU1bd6Jvu09+3+iEoqS8HATUxYG/j9xyRy+dnZ6dry2zO4RuKU/9/68NU1mUp7GMohtOpe8v8tf/Ndr2tfuvvLn63jfnIHZIJAGYcAodLCmBuAQAgoMqHtkYdUu7zh5/0l0ptSMS4iitaKHRPPdvMCFqq+OoHF3OnbdRAhi//UI7f///+tv7zM8wxANbbtZHAJSiawAXsS4A+S1hG5G6xb3Ja5ilT97UbHM/f//VdZv1xX//63fKKg6JAZv/wgIDlqIO+JBplZAaw8BJETHgMBAKgmRAhg2FpvNBJl6DYCDQumrgu4pm+kveGo7kXfx1nahF3GjpAcFUqvu5TVYYtuRdvxm3O0U9EqTG5X9ROmpsTQbkDCxMICTRdUfUWk2d1FlLoVo2dIxKQ+RTgaAcAlhAbZb4BoEGADh0CgOHabHn+e/rp3MXoEsgykmWZc0Uq/lgrf8dYLAJ61fFrHdV/qMxTk2/b//6P/nWZgonu23+2wFVGQkNWDxF53AIa1PX06ZyrJ+1bnaejo0p9X/ci7jP/9X6wiIgFLvggGhBupWh4oqSg8KrUMAsSg6MgeAAGJQtJBsMXfaMChGJQHXg4asbeQuTU0ovT8akL238aXC0NA7SSSnmn7Z9KID78/8/ct3IlXnJP+v/sXt8mUnDCIWYYldTPK7K/y79iZvfr8vu/+9dpJfDjEy2hhWLZw6RQGxEgChQ//qybBYcrwAFmHBGa32q8CpAuR0F7BIXhcEXrvaRwOyuYeQ9nEhxUMSEXQTUts6eV15rQUiWFsWDqma71rSUyCkl8bhWrWgpd1A1BhRGbpGJ67zoYtNP/sLl+rb//6v/OuAAKTqqBLAckUTIaEuqFCAaluyql0/e/2Wrn9Ef9LUv1Ru//Np//VPb9f1en////9f//ip//SNvq/2eugqGgPNvggGg6Hvu5JgPgLmDQB4YVIXwCIUAwP40BuYDACRgPghGBkDyZY6FZiUAlmBKAIXpgYKgDmAaAUAABUA1qVwHLoBdNe7bwFuj2LB9GqTc/C30bM5r/UMIjELgKtfnn8qRzWP8suBLO0iIZk6NCk4cp6k/hEt475Zjt6zv7vd9/uNmVRFuSeoVBIwgQ84cTgDOBw6IFrIDSkUsTpsi6NZTPJ0LNdCmo6yaQ31nGRdFFFBaKkaDLZhTkk03SSMFHzgQnwFBTlMnTz0KyCEi/96KhSz/qt9/66Lt1t6JbG8rpAAC6vVUsA5Y184PRPt1Iw3ehJ663T6HsxKGQ33t1c5udUop5f1pt9r/36+akibq2qf13/3q9dd/X039ecf/8B/+37vU0AALXhlsAWADCoAxgDAdmFyY6YlwJKFRcUwHQFDAmAUMH8Ek12CyzJvA1MGIAoFAhgIAwvAre3CU7qZ/qF5UnbNSsnjL6KipM6O7W5lzGt3HPHHCtz8c5EjvZlCGYBB808FlSLB85ru4F/WOqd95y9vGVdyl+f37j/uAkOWoMHxHMOk2P8ntMdhAMIAoHjLAQjrUgekp7Gf3YBlljlv993WijMHQlJlKpop2ZS2R//qybFjD6wAHHnBEa92kcEQrqHkHIhYclcMIT3ZTyMKC5DQcGEjesra3WpFRcIwBbQOgDfCeNS6kpklibjWndaSN2SMRiLrah26mt662WdqStqZRMH00m94d2/eoWIH7b//taUblVdIRQVEE0aTkiG+tdbmvWZJkR7RCkVKyaLbPXZmqd1N/9Lf//6/01QmCwJN/QQGhFa6eiUQgAUMCEHEwfh/zDLAxMBIAJIADAXmAaD6YEAWhkDrsGF8D0YB4DIEACRPBIA4YAoPADsU1Ydx2W5Jqt0lzjumylfJgEAKw9JbTL7Lc6BnsjhmZt42onappbSy3//7Cj1jGGRwBTNMGgwDnGl0127V7j+UzMyetr6TWe/xytSmNNdWMYAAWYZk8eImOYogIWAJHgyCAKcmVUtrf55UHOf3vP3hjnndjWV+SRPK5TY451rFvGXXsNUuP3tx2Lam6uO9aoGHDIPGDACsVgqj338cuLwNY2qWPdKAterbf/+tuz+smWvGWLWqsBbMgB+s6kTS0MZqAEqNfjbWLlvnrqzp5q9qyJOKlfRE/KjjXVqpTkt+v/y/X/97v3T/+mnb+j//Dvc7lvm1qQm+1n1d4EEACk1oIBQdCefl6zAmATMGUEww7hLDGJAAMFgBwwCwXjAABBMAkCIwNg4TLVdHMTYJkwJQIgYADDTyoRJIsufmH2ltdgturyP1GaimawJhUPS6XwxTxWIxxhDqyd/M7kth+MPzVkFzXNY0air6xp/goATiRMHga80hpuahWeesqOO0e/7R7r38O3pmOOmqoIQGBBQYnwJ6PvAbFmBjxoI1IFpAjchDc0dBS//qybACd8oAHpnDD69098ETquFZsIm4etcMLr3KRyL4C5DQXpEwj8zrY/ak1JRimtMeqTqU6mNmUg6FmUiUCSSKJ+yJqkiE2gXLLxi5Lubol2IRH1V9qSVIcSVrto1rV9f6ktXQUkssmqnL/MbqNZemBia/3ayNAvUZCQj4PEfXSFaLLnMaK0MOh6CdqQ2pb0KWn6nb/yHv2+/rX//1/oQiJAHN/ggG1AcqbqrMh+WA2Kj+GA4YCEKRQEUEBioBJiKBB6YhQOrYiFUiA9aiWilbInplc9DVewrXHYBlc3KHeMEgJextIrL4OlqtT3WIeiMlt00Ov1K5bZuf39WXal1LGRkAjHMZ2DQ7c134puxhu1Hc9f93eHd5bq2pNCmojwBGGwhnSgXAMfAEBiIBiEhxipHzh7a3QoSw5oWSaUgmnPrbUiZGp5bKcfBbTNDZadSjUGqACx9RdNz6RqpNRTN02NFKekpkzpOst2ZdbKo0L62bb237zo7XMgAExVKiywHJFEyrQoTRhgXpz47bTbHKlEGUWHFGgKq6/F5DPvXUiUVne3/F6u/vmGhOpwEXU6lK/2UJ2OBgaAUm1CAaVJ7jrsMMg0yINjVMAOIAwxuDTBofMIEww2JTAuCIMtNLIxHgXDAhARAwAiKZaNIh/3ctTski9iQOVflroPO7YCAegGNv5GmbRF84Nn5iUW5iLxm1TzNmRWyuO0eTYhwSBYGDkkNUfiZKR1Em82NjUhp5WYTJ02SSLI+Baw1AEwqAiEAYIqIAAUC2ALGoGBMbxbPO1dI0qrvUYsYLKJ83RGgtzpXWZGKT0mKi3ZZ9Q+kE65ilS//qwbG+f6YAG0W/Ea72kcDyg2GkPaRIdPcMPrnqrwLiC5LwcJEwug1AwUJZXLxiXkklqWaqZGqpRopBnQPpPZJalLZFa1Oy0q116n1dHWbYCTvAyohqDPENv9K23aHYjYAWRbAggTFrr6ls1F+qdeUSjUA16/RJXP2fZ/o/+////oQTArlYIABb9mr7N3AoCRgSAzmHibCY1ALZg2gYGBCA0psYA4NRgTC5mN3aeYaQgJgFgjDgCYgAADgGBoA5JlGqlUHljtMuYa9lNKoOiC/AUA7Qw29K7HAkw0AF1mUUnYfgOdn5X8Slcze+/VhCdbbyZ6RABEYYQiJdhrdJ2dzjWOVLfpYjCKbe6e1QUlreU/BzfrMEgBwUBwYRoEpqQhMGEyA+YCYGY0BaMAFM/mMa1flTdLFO/rHWtfjrHGxauzUh+3n93Weerlnnfv7wvdgqc+thlhhj280ooBStzcl1Zsbr2byhc94ABCj0SNCDi9JFM5atMxmdghFEdjPnDCLEfR5skH1W0xqCIju0X+ytuHlVbkMCb5FgUncl7k690UaxrBR61/1VYjcxNLHft+rX07f6fRT3dnigRDQFl2wQDblGL8IzjgAGAIWmLjumRYSmEgCEwig4TzCgKzD0Uj1LGjWEMAUKo0BTNAIBA4AqHJAS9cH1ZFNtCiszBD3RSHg4HpmkZS+kPSlzolKHKfSehq/NvpDsdoZ/v/2+6Eo3eUzNOk5Z7yT9jtSK73XqX7sg5jrH+853Grckr4MZIQYCHKbajwIBLVygqjwZe6dv49w/7t7/w/D/5W1ztqZ5NS/XL83le3YypMebyuWs7laj/+rJsjKr4AAg3b8FT3h3yMgC5LwcGExzhvw+u8HfAugKkfBwkTCTWa1TDX/3aO5EbrdDQ2causK+QkgcGJwQkiFgqZissQ5pJtmVSGsK9//c+hK7lVqJgoG8s910bTcpV4AGUNoG0Zx8pUurpQwkinpQ4zv/bd/fr/s//29bdOLM9lLFqAYSATttBASWcuolkEQIBgpgJGHkFwTGJGBoAMSAHGA4CKYH4KZg1BHGnOl0ZAQMBgngImAwAEAgBzAJAFLYLnbhE38iM7DwoABDTcIhDkaQRkQBDkSh/LcRQwgKD4g4M5H5mYzbtKKWggH/58gVTm5pdwCBEzmFMmA5bk/Lr0fn9YcsVIDlNJ9zud6izqfyXv419WAHBGY1EgeUJKYaA0CAUFhPBQBv5K7G+Xd8pbP77r94ayvTHMO26CCqvc/7hc+Ywr7xkdakqbwjtX9UW+41MGtlqAICzM6tmdywu750t0PUFaH5zy207FXncrJp8j3ftpa5/tv71/iR1p+Xh9vWrgIbV+vVTVqHTRPJ0SOnExpqNlbXXUBkPBAVz6AXWPb7r+79ZiLZkhUt79r/xkN9Ws23v0oV/WxtHqBIiBlu/BASctplHWPFgAEdA6MAAiYwOwMDARARMBMBIwDgKxECsYAYY5h7M1mCOEOZFwJLLqAIAoXJiFd2WetBWY/yuXPtP1MRZWYGGt6+C2n3fSKsdUwYY57MXvgTluOwQ/ECuEq7G4phQloT8AVhguMO0/ZAkkqLJmZsvOMo9WkkXSaICK2AQAwMRsID+7fAOKQZODAuA0DhwlY1SZGssXXqbWm6JYLizhqqp7uxOrmb/+rJsKDn3AAgPb8Jr3TXyOeDIiQcsEh2xvw2vZq2AroLkdBwITH0jMzrU5PqOGCkTM+kwfwKEA0UZLWhdJNGX1MtE6zLUgeM03JsvueYqOmkzpGDVIpKpN1Vp9U6FtGl64qG399vs4mnOdA1UqrlIJhSK7lIRiximp1iTDJn+jy1P/6k+xt3u1f//29VMQU1FMy45OS4BAgCOX4EAovtZm0WTAJAHMDwDww8RsDFmAsMBkB0qgRhUD4wHAJTBnDgNIB0wx6wmDBCAjAQEShAhAKMAQAEHAJIoy9f1loMtTrdSQ1mHKrOsYAIBE3Xp3JXyj+gNLtsijDesgVtYO/rWcqN9JHU525RLAw7Gn+CwDmgQ0DQCtOkMqs1HklmVy/lBuVLhy//b2u/yUO2uQveYBA0Yeo+c8scYihKYFgiRESEBQ0+ctYV+Xuxzuv/Wfd4436+dP9W5Cv3b79WYqVMaW5W7qx2mtSy/auXrtP/c74wDQQJuspVPyjU/R3NMAjqAjuEC0YsSakAuL3VA2oRVFD5mDBrZFtDJPIgo5Kb3cdYY2wpoSgrQy36yNNzTsRsGFJjgQgTElakX26JBhINPFAiwl2Mfc2zZ6Puvt+z/dfWvZ+7/9K06AWIgJb/gwEnvF9o4X+MGKzQ/c3oJMRAEawsFERkYXAMdMnUaFAALB+hAutBGpQ3V6JSzCmfiAoKxim4IgGElmZZKIdrxVnLMYOgaK2KfOUcm+Td+5u7kWNmLoakBjUgkGIqbIsxPpG6p4my4/raqi5qXiChq4DCBLA7ESAcKQ9gPAHqk0irW9TK7VPWmgpVZb7NWi6079NSkEVr/+rJsCM7ugAhrcEHr3R3yNOC5HwcJExeZXxOt9qvIrYLktBeMTNfQZYRAAqKCKSa0FqecUmZ6UKyQ6E/TMIeNg+QIf//9v9rSCKb73fStOLKqmCEGMJgUnbIb2pvvrGxjbKK9Xrtt/XNfo/+zZ/7rbP/9SgCAmUgAAAJAAGXr5BICoAAQMBMG0w6keTEzCDMDIE4wFAQjAfBRMCAHAwcR1TWM4xMjEUswaAZDAlAvMBQAwwHgCDAbAFDADEi3de6VL3aS3sBQG/z/RigAQATbx93LsAIT1LUOysEDUkasPAtNQl/3QuQ7ljqu/qiDHY0z4qhuYHq4k/AEjlk7IYClnYv8gg2Ds8bEk98btLy1NOmyAvuDAOMAxDMPn+OcqhMPBKMGgaIkCDBzTgge9allNb7EqLKpTU9P+8fn6va9WxZiH3efjqc7W+5c7flWo3Tyi5Oap7WX2bHKpVCRL/K/frY2p69bsJdJo7au2qpSTcN6N0ZXC0Tm9nGllGadXuZ7VlFc1SKaYONW6TNzexFiqgzFFeJYAIgD16R90yDFawBJANzMEEJ8Nmx7zpIok4/uRQdLCc+ihxYuxzGEkUlZpB2+MQ42hw9sN3m5q0VqIOpmXuWocr1KXHMSi/nlDcc1c3LyJ3Kkc+KvBgrCtv/DBbnZ+luJ4AJMbxAR1iKyJFU6zCNTAMTDPa4jGELjAYD0eoNULYKxJ/ak3QW60N1e6vblqCr8SyP5SyCbMjvRGnjU7Gs88KailPpF83rFoAxEJyIEXKiZootHkELmZU6/7HzUrDRAwKDADwOCgnDoyJi5i6lQv2WnXe673SrLV9aTM93/+rJs7t3/gAkPej/T3U3wVCDYNQdsBBXlhxetdqvAuYLjtBwYTBTrdVkGrdNF1JOG6DSk0VuupmSMLGp3XdFrqTdr1qPOQaIjVFf1QlI2TSWxMoItdsgoZSEfYEK0VK4uKFdwu9lrJd7pZd3xvDz1VWf6rupP9f//VopMQU1FMy45OS4FCMGO/4MFtujBkhWMQAFiMEYwBh9jA1AmMAcAswKwAjBCAVMFcAowVAIzQ5HTMcAA8MDCIgOBIAMwBQByoAIjqsqlhyjn29WGiNmGXKae8pgQgCPK1KiSKaGrO4Tesud+fazIIq7MVf5fcBv73m+UroZal8DGnR8jm0+L3LFyT0mNi/LpTB1TuGsrl/ncatyhehbY6AhVkmGYMIQ608oOBEJXuk1vG3zDHdjXdY5b7jZzs01acpqDfbEnzv39X7v2OXaazVv3ftzuqS/VyrVaV4BQGAojr3led+5fx1ncFhFQUCcXTgQdg4UCg5BxZLSeHhWdn4X84XcnJhBNHydf78gACJaRVZwHQMZHYFAKIgdTli6d9NYs0BqLIFzSnheBnRaUQtLb4lvoUs4TpZ2uOE3DOUe56YHxvQ1rHFCR9UxzGw0iaULN9fRtrjgYIwZd/ggY5BliXRQumYMAwYkkUBjoMJQJSHQ7GBwaGDInm+F8mX4ZmEADFo0hCyCD7iO3Un432kbTb99aLZdVkDLKks+WtAidBNxW9rl+pS0kUtZ+kSqzIyDUgMmBEaA4j6zRSatJZRSb/s5oVyWFxgYGDAHMB2AcQAtADpxjygtS53Rdl16peTPrL5qovlCpJaE5RQUndSm0U00Ddem45Qn/+rJsNt33gAgOcMLr3B3ySwDIWQ9mEhfRoxOu1HtAxYKkfBeYTMwwgMkiaMky9AHNUKIvR52NfeZxb0w1VyIGn0rZDFAV4drtpEnFuj8KkZ4RDWTlbxcttuNFlOFiab6Fs7VqRd+n+K+6r/rddqh7/2f/XQ4Kwbd/xA5G/+bfl6QSBjERhMw2M1UERYJGIiKYXLxgI5g0MowsGpDBRCMEAzIQUjeX/GhgUBJejvKbwiBX/tMHh2JxNraG4oD2VtcYuyxwSQAQxCV3QDE0ZnNgqC2Rw60t8orr+9pWxSqrZZcBqWrUpxGndn8HMsxuvNT7t25m53WsO7xyuXaCIt2GAKYDWRwljmLRAkKTK4MLSsL/Us9nd5qOWt48+1ftSqF26SpKMJuWQ7Eu4XaSSV5Xb5jlP1dWJmkoKkippivYwvXM7g4DyYqTmMxFLVjC9Lp6WWKXPVbD7esssb1iOZXpjuWvlFm3hvuW+77d6AFtjI8g8Y0eftrraYdvstrJRUUlQWCnh41kQtVPsWkZfbHGmqZjB5ItGGvU9aun/+YocGFN6Cgt+3///SAgiBLdsEC0pNfjrviIBgCHJiMypjWEoMBgGggIAXMIQSMThtPq/PNiBDMNwGFgRWuSAKKgAia7UEK4a4mo/TEolBNOyV734LrSmLw/BKsbTm4TOMxD7y3pBDsFNlkMdlmt/nk6MppoaRlM+EResPVbedmh/CgzuTNJYz5vGp3P/7Up4Ya2X8MOl09GkjFoNAIHKBQhpDdi33l3DKky3h+Vz8LV/Ol+/LMKavc3Tz3K925P5U2FjG1z87Na12pv8+5/lFSgUWKtbt3/+rJsfkL/gAgaZ8LrnuKAMiCY7QU4ER2Vvwuu8HfAv4JkfBZgRMf/HcIYcnCD3tHJaEIrjAzSVVDU9EBbLz6ZqdIwQEVMORNrc1FARXWLtY025SbFA6Z5KcHE3oW5zF2xgoXbSgsbU003vb10/6f+z+zs5ez6///WTEFNRTMuOTkuNaqqqqqqqqqqqqoBBAByS0IEktKgBq0EqamBCAkYZgTAGKOHgTQMAoYA4E5gRABGD6Eia0idJkqgzmDQAsYEIA4CAQMAIBQwAQCU5Fjvq5KRDawlTVbsFUbmT9CIgBYKi79xuXIhQ5EHodSUvxAb/0TnylpLlOtuxytStOkUteEZCBldRsOg2UPTlRQFNXKWk7JXV5d3vlbK7lqzTSl9lyhUDGIGef+ahjQDofERZCBawadoLNBzlygt4dtbqYVO2uWsqStjfhW7eevu54dvdyrWM9/e+kyyrcwufvDa2B4O8ypL9X6l3uI9IISQOh4ZjKE4MOLUWsuSiRUgRKOHKG0NS9Ewze1Oan8Y6WgCtTzimpOkZk81OVS6ywKtmWCEUELFsMOUskaAzjYvcVymwdOl7QOwWuFhSxIMrLD76EIZyK2osYfOFDaFnxzXEmNSeoN1BB73OesJqQaGzz5FK10UPMlgEKwZdvhAm3JeagBhZKCQiMgwDAIUA0YA0GAMOhiIBWMk88MJA2BoGpUNbQrWo88VkKywjKq0yODy69aAp6IQmyENRwvTm75FYfo9Y8vF7mjKMhTwMAiYzIwos8nTp5LOlRv/WgXyYFJgGCwDRRDACCAZECgOD3zRNWvQvspFaFaFBSzqTbOtrrVVU63/+rJsjdjzAAgKcEFr3B3yWEDYIQdPEhXJRxWusrEAsIIjtBPgDG6VKgg7IMmJYHhPIsUqo6MNAoKnwikSHg2TCwqQkV/qdkIUEF7ZZYkiVVUEJVXGSD3KuZMUL1epxAWMYdH/p+T8ey5pMzff2J9n/3//1wWKgLLfxBGm1ijYWquBg8yIeOH4AHOG3gproQPHhmK0YIQWZmfrhmK8DmYxCwOALlAoAgEEF2UunEbk/zvRJj0egOXWKkqQkz10uvI3kTIGgQr13qrrJVtigN1lpMXUClEiv5fuy+9PhXS0M7FlejT4TTxKStTqVb9SYjTefl3H+6x32tVypX+UBMKlw8yVwU6gqHSInGHQQrC8UZmK+868/AmOEurw/XlOMx2pqW436sO97QUs9S6+3n9rmefL9zGzhj9zvanNbKgEabY3ct0OGrmdbPeF+5zWVW9jzHtfCkwx3S7r01LTzlm5M54cy7XyfGuhRZAYhr710ABJFQKsLljlm1uJzh4cA+h0aG4VcLrVzh8SB01Fyp1JJZeWHIkBZbJU028cZGgeOYfjhCYFQgObOmpK6taW+YMtXau4LkjHG+KK651et+QyTn4wGB0CS/4MNtuthJXkAQJGBwgmH6DmOQBotl3TE8RjG4HDEMBT2I1zWEARIZBoD0rDAoCBUAUyGMx6ES69YgmilcHurKlKwUHLDxWZcKVNbWFfuK2qeHJA9E1Xuww2js73n9+ALlS+joa+QM4W5CqWvGNTO7l7KV0vP/L+c/Pm61uYdNJQlUzc44ZCwcHkzgPDj3zl+ct4Ybn9WuUONJjard9Phi8CZ7nVJLW3Wr6Pf0j/+rJsDNX/gIffaEJrfuKAUuDYNgssEhw1mQ2u7fPBMgNgxM0kgPrPvFiyVxqT+6fEOAR0HDjWi1lgV3bVK2pSbOcxvHx9Ot01TUPcPFd43ucuI2q1OcLEBttstAsYrAHRjKQKp7S9EXTzGKKg0Dzjb7khRTiGfhI9ZWPIhZTCmaYhdz2MpRIC7U9SwI173ZhDtg2+4heKIbe5xtqkMSAsyZsT0AWKwJL/xA248OcASNEAChCYQGmYagKYOAckypkYEiGYGDMbD9QZHCEYDgOiou8smgMUm/ESge1ahu3dhqjhe1b05Ig/7qNyiKtrzQzD0OVLMMPzAOFWNROv++a5Je5bfQxMANmsai09FrktrYZ1q83lf1UrPuePlUewLAEBrmgWLgWAI0TaQ4upJqdaTpIrQTWZseNzBaB09oKPLNlI2dJlJotMTpw8ta2UZpmZssMdEEinNDxUS7iQZ0YzD8Y1Y4BqRkZIGUgjgifCAhAVtyoqp6dK3FIEEnbI3GkSTKWcQGWNoBuEI17maDFmqatff9m57bb+LdyvQi2K+xv65P/pr/V/WAQyBHLsCGiUQKzCVh0aQcAkYXwWwsTEYCwEBgMgiGAYCuYCYLBgcCamYHNKYqAa5gYgdAgA9bC1QUBkYCQA4YAU8rtLHU0jbAoQ9DImJrrWYOgA5tzghsDD0bSYDWgoyxRSlxFFXRdiPMuZutNaW+6ylTCq0RjKJx8peRATe0lytjP1Kafxp4JnKv8+1nRbw+tNx6DVsEgWM6ht/uOmwKDBraInJirOoErcl+o1OU192b9BDFm3DlFDcrtyCkypW8hNNcmpRapJXbz/+rJs6QvngAauaMRrtR+wLuC4zQcDEyGpyQOvbNfI9QNhpBwkSGxWiWU1h27Yps713PmOWPLxVBWzXJn7F38rX5Z7BCYw81AtoOEmbhkbHOrd1Jz1cSRa8R13YvGLq5blU1EWVe3xvi0AE+rSipavy0yjJ2m1xpLGpDtDbDFtK9JMDF+SRcqL/5uj9Pu3Jfj0+5LFdpt1dRErKc4oVqtlq/Z2eOUK1Q6JQbbvxBJJK+QCyAvuQjwkURaogA6cpcIx0EzDIIPrPQFXYeHKebiJGKyrBNjo6KvOWNZ1J+HqsebtKIDfmNN9Xc/OS17t21QSi1LYhSz/rLqLpDOgYcChESJE66SRSmijeXzVu66qrUDcigWRgaPAwAxHCwYaSISGZgzqSuk7JqZlmCmUjToNTTQSNVupa52tdmUpBVMyUerUIiKIt0tborUFRxQLQ5Ku1uybiW9j+YgafAn6q2EXvbrq4kmzqgWFHBY9y3sP13QXF37UFbggz4q//11Ld/Z3oR//dq6v/rf6wGIwLJthA2m1nTxu6gjMYEDleA+ACM7ETHScy5sNLYzBgC+NHtkIx0AhjRyUxQIAwWYWTmQCyA8BBi+l5v5Dsec1/JRKF3LYV6vt1GTs6fW5MIxNOhxrr/08PQNYYE11+8WcZ5aymnWntwCQhBj8bAUllT9z8We2cnpDBThzDNXow1hne1la5VuSmJN1Q5ASRPerDFhlOoaiQ5BWtDNNOS+1NRqXSzOvVub1N1M49LJHId35JKqedjcYlcvtWJTlO3sLUszxjmFe/K5u3T/buZ0yySYZmcKLGp3lSk3MW7tJbk1DWp6LGn7/+rJsSu3mAAWyZcVrlR7QLQCJDQSvAyGlqwWt+2oI2oMi9BeMTNmt3HtSkr2aSRX6GYluMrv9lctm8K9jW6vo8P70Dj6m25PWcs2QTBJVI0AQZrp+DBD2IQPXNusotoWKDigoA4RYUd2iZpurb+rb0ad77VID9y7fu1d+Qt36rhUAQCm4CAACoAYvEuYmCkEYBAGZhalNmJgCCYEoBBgDgNCoBoXCOMBQeMw7+izCIFVMA8GoZApBAAwYAYUADqRbZS1/WyMRgVy3kjMraS6rNkEUIfuBpUzJ0l1vC4TJ3GfVFVxn8Xa6zLbS0cbHcGxq4by06QjB0yPO5IeOReYtyyL09itL5LRQichVWmx+LSvO5Ul8OO2sIYAgGYaEocxGmYeAsYAAYPB8Xrjlfl2VXt1fimdJlnMb7nIbOdPSRznZdObqYy/DK9W7jLM5zX2pHVuaqWKtStOVLuM4UApSZ0E3+XZnLIpsJwWHWoLAYJQAGoocABgiJhEATQMwoKKMgBzAFEsopkAwcNYLtREFsIQBeh4mtAp+SyyNEpPU+RQGwxiwpOSFu+KEXuOij2yD2rqWgGbMabNf7vbR2TXX2c0h+tLuw3r9wte+sEkInICEAEv426TmiIAIAgSmDMOKYS4DocCoYDgAoQC0YHAHpg7hbGqUwQZH4OhguAJhgGSkFFkBKSzDblJST/Yfl16MxCZlLawrJ0YEe1pCvnohOEdeF+IcvQ9GoxBEq/lm3JHDkeFOjYauM6sDvxinoLsYnaPVWeuRXKxat0fcsbNi9jTSl2kMTBp4OkpMDEpKUoJQcGoFtVbXa+Gr0OW6tTDdNlX/+rJsOoj5AAimeb9T3R3wNsC43RniIR4ZvwNPcHfIxILjtBM8RDmssbfM6/8rUmWGsbn2Msv3zurO7Wr9Tn4Y8v24ISh+7qvUq7w1tkY+hgYsUrRRZaMHUTpTKW1Kqra1UgaYtBOagIMpPob0gRZBNEE69NLY2SVFA4gIUjL3gEWTRPAMey1Q5R0w68mgmxQ7pUpN1FuKfzv/6P9Ps2/q/eoFBwCSbcMRNwLcf1/4QHAUYfCUTHECgMTSMHAVMQwxMMg2O64+NLAgAwlhgCKDmBYBoJFzvpHHSjDrS6ZrUNu9JHLXU8cVsX4W3Zp8ZeGGmuVH6ch7ou6VM4kq/9fTxzDdJBAGtnveTtjO7GZ29Yyr/z//u9////9qRtwASYnBoBloqBQciRRoIg/HfLt+rjVosbG+7/3utp1CN53rcxeJc96jWUtLC5I8q7SbR95iBMCSZzwstdQtMUo5WzE66T2/i3uZxuvOuOr0puVY0w9mpCbopU1DfZEjXZaZ0k8Tdh5KwoNuKokXicniAiHS6QGwCc4lKSqFLDBPVPFnBxqrdU3x/yT1UqdiiOqLgFyvQp4cj+M0t0I6zm5zHFSz/iYAjAAllhCwtKFAPhCREYA4FwOADMAEAgAAXgQHAwJxUzJ2p3MOUO8wEAQjABAbMAAAYswEABtRaHRSi7IL9PUoLj/Ukw6FE6kAYwc1Vv5PlNPdHZbSzz/v/D9mll+reMoWz9NFnyNzBQSBPs0l1mrOz17ti9NUduzjS26ftJrteNbiz+rqMNGc8ociZYBQKDxAAwda1E5I+9NLI/XtxiMx+7P3J21a1qbyys8r1rmNHU3/+rJsc+3ogAaoaMNru1zwR8DYRQcJEh7p0QDPcNfJNQMhcByYSOP9xv6n87+N+tYyr6nNfy5Y3ubeFIKm3+fc79jO+yOxg6z14jOvG94h/sG3GZh/5qEy7IFW0zO9ts5H0Yhj0gn73qGAAAMFtKqMJHcg0qduiZAfuqI6DhAVYxJMCizRQOhhzzNz1kWjSwvgGbNZcXjuo6TpObWNWihCI7uJ622byJAfeYQp5BgExclHt6Oj46oEiIGWX4QRJNl4/zCnDVIYXiIEFAAQPAgMhcGDAoITBkXjcbdjLkOjBoCUHpC6CmrDmUwO4L/QxepbEzclNi1E5G7zgsOZKpW5zWWWOX2UQ1uXWp+D4IvfreO5VaxstyPtt+pDrCtYpprlyJ278jz/9c///eu6ryh4xFMfnZnDFyCbYaHk1Pd3W1nSVZZbvY5au2kJrUZlboSO7KZsqURGnmsaSNwzBU8mZJAEaIiLg6TIx4eAixYIPbaHN68sd67LmQgQYdYm71xpR7jCo+wEVTzrZiRfRsgQJn4G+zT/u/vsX+l232M/N3erT/+wOCUCzb40WOOhuJAQDQSARgMGZhGZZiYA5gOCA0C5hUCREbwYRB62MQRYAsLY0BidYXBUQAMh6uR9o9JIdcaIsvhqXSmLSxVaAYk7ilyq7OWXqyYSx7ZYySni96WZRpmmtfhYfmzaiSHUy5gd1lU/LpuMRCWVqWw/k1I6f9713//94dvT78gEGPDAQyfAoinmgGf2CpbTWKKtZtwDH5PFbk1Lbz543PcxmefDRGev7V8CAnc5at51jMOM9fx65lhx425BorVJIU1PSamX8XH/+rJs06zeAAYKUMPruVTwLICZHwQpAx3ZoQuu7fPAzYzj9QCM/ONbe4MdmbmzVYj7Tuk2PF3a0Rif67ZFo+jMNjuQtzvUndJi6STatoltRVMgShblPRZZc/l7k7GnqRaA4IodcbZ81/Z3HsU0ofV//3P/6nc4r2ML0wEGwbLdxBUk5/KrbKoAUOmNoWZTBJaQABQwmQTGBmMC0LcyymAzEXB/NsqMiNAwAzRYyo0HAFN2kRGaf9pLbOQ9sSeRtFYnhgmDnGZfbjTfQM8z1qLS6C1NF1LAtuymngTdzD7cXkd6qi4ZLLDDYXClVzKM08ZsyXKSy6MY71hfy13//dBBayB2iY/cYdSAhYutHpCz3NzuWpDEIlD05akUxQRmzDEquW8tXq9NhSztixdqZZ6xucs3+02qmWVvP/mP1rnbisruayxxyy+gn/tflWqXtWObt9zu46u0tv6e/et52+42O4ZdqZ3+TdMBT2Z34yNDZvJRllSyRyREErmlCBfyZjuEuSja53erQiwqectNg9Wnjt2vmP97Lvf+2z7Hx3R/ezdYEO8BAEACLDlwtCHgEDANAGMNgQoxVQCgEDiYDQCZgCgDGA4EKYKo7Rn/cuGOWKQYHgMJgCgTFQAMiAPFgAVXL9dtuq2HTdSUvu8c+4czNz0PO9BLcFN2AL+kN2GWzLSfmYeKUWW+lkN2e1rlhTCEZxgVA8zrMQSAN+JZTVKSFTd35NdvSOWyq7HI7Uv256tYnuxtvEDxoWDiYKwMSAAA5US2Yajr7SeNTM9Ov+/+4dk1HEN1pdNT1zt3C5NyPCxljjO8wwmpVIt2LGrl29anccb/+rJs1Sr8gAe7aMHrntKCMIC4zQ8DISJl6PrPdTfBSALiNCwMgKY3L1eduKJqtu1bvbnOU1Dm9Ew5FMSzJppQQMYmgM6glEwlZBRk36zzXcT4+O4a3wyK6ScU6j1dtn2QvmqzaSUkUWgQXC03I203JRxJasmSdBCqCJuKzyUEhiRQNFBCIVr2g+JCTw41k+UTljsIyi1XkgvXDiRZLrPYRJpQWZeYUIU2iQuDSCi6Q04CoLBW9iWrAJcFhMCO3YMNJOxcpoQlWIAUHSeW056SQKCUwjAowmBs5fXkz0AcaC5Ql50M2NPq0pXdstHxNQR6MlLiEOpyuHGMpCYOxNLDbWlIxLNzJ9cf90jqapFAN8DHgki0bsYFRTsapmZWPba/WkZmRGhCcAyakPSKgUDiHF1AzdOpy46akXSQQdJ0DqZ9JJObLTbXrSVVXd7HU2U2fJUbF2ZSKCB/syNJlLZZs1XTXeyrsmfOEk6P0WvQwhXL9Mqs6BZJDJWPamvGM7i9DW0vWR6r6k6HV+rs+9Xt/uf+/oqv/9y/9QKNglv/4oskb+Eyt8JEhAYnioDj0MGwHcUOBIw0FgwxGE6q3U0PD8yKEAw5CMwWBAwOBAwDAcvgnO/K+GIt0VcXzVemjYdl13vcJsrusQ1ijMhXImNvVDsfook0aZjEOsHptfrHck7u82ADVbU2mQfFZJT9eeAcY1jM0ku/WP7x5zWWs7FPLASBnIihn4OAQ0eGVMJLTWpZayxf7OXUdexLrmOdB29yrLZ/GfltXVLMz03QWs7n4V7F/t/HOYsVJ6kv3ZV8zQwGizrmOedSxSWcUQbPwg3QNJT/+rJsnQDcgAWnZUPrrKRAK0CIiQS5Ah4Zowuu7NfBGo2h8BeMSBXNvbp7zKd8KUzdKA0ki1GW3I1FinIpKQgAJpO/Vqq6RwjoT4jD3OmR9P53QymcI5D39yLvsoioEa48ixuxRWwkn1dVhjjxOWmrVJImLU3qEzjHlFm9EIJW8pR+x/6FBQaCru3FESbWaj1u/GhAAaYCoX4CBxdUAAGgECYUBJHQrhEt4YAoOxUA7GAEC54NABDgHEW1m2Z7LjiKYQfK5JHG/Xi6D+PxPOpDK5Uwou8VNANRjj9w+11hTkto/P95j2Ce5SqInWPOrDTuwbOyuGZVKYpUyp4pFLfe//61vet3Jl8BEvOg0BwWYKyQkNdbGGoBi/5wxuPSmi3eyp8YmHKUYay77/TKyKs/tbU2kMrvO3LRzaCYMZwM8pfOf36tNtu7abuXcXoblKQdR9Q+cq8l2k5D0LTjoAPmxV9DCEvo4xwlmTSSRokBFqCA6HkMOvYseJmvvUbIijwRjYZf8dursOsQ3atWn//9ur/21eYSpG6ukFhsGOb4NZFO9iWqaAJITKsU0MJCwUYOKGKGJoJ8YIgPJm0oemLcCaaGKA4ZaGIQUus3Fnj6zthyY1R08ufm6/iwCsqdTWi292WKLpZKOQQ8UKgpq8YhTWrMhaLHc8f3VlVrlVN4ztHfqDW+v7qxrGM0tWnsRTWvs85l+PMM7mcocsEChzRaZIDAgAJiZK+QPfdePdm3i80clEYn6avL5vvMatnve1dZc5fs0tzL7fKS/fz1+Vu9bz3njWtUVu9XVdTYX+1a2N6r9zm69LyRx+//b9+3bwt5d3//+rBsVzX3AQcSZ0Jr2mTwMkCIzQRPER59oQet+2oJOg1g2ZCJcEvbvbF2rrc/YsXatNkfmMtJ+OKIBmesr7Zs+HClAD9cw3EAbIhBbzlGmnJxg8rKpvO0c0T7CJQQiEKllnCz1GSzmbzLZaHIcZoN9iaRb17z2oMMaOeoo1c/YxzyVzFvtazVucx/Cm1SUA2Zgtd/zho65c0p0gihlIYwiEAOI5RBJgwnCUxqCAwhBs44YMzhA0BDgEA+XwAAMAUBVYGV0LkMup34bPSP7OQ1HJWxKmdZokXfifTzf+HYlukuuFUgCZl2V3Pme+0V7O4xkh2ksYr6jNx+KGKT1NuJSGH////ndd1v+ZSkZIP0sHVMZKzQ4p7X2jN6XYWash7DkenY3Myqhgq8rgYJQgMGFKIYx0fpR1tVqiS20xaE0IYJCuKmtVS7JMEUVYgyMRGNWHxiFiLEWeSgrpsooQcV7rKqaECpvpVSMihBt8HLwSN1RUd3v9eue6ndxWRGvFFvqFjKmcWHIIOdAKufu1dk9nPubG939F+fFnWXP99/pAIyAAAYBVKpTEVADCwA4gAoMBUkYYAyAgAZKAiYAQGAFCDMEwfg0HfJDGMFiMEUG8wEAMjAPATMAEAUFAMCQBa1YO9ymhzd+hgeVvJFX0uuVB0NuE7NhSVh6KKahqAcnHcSMQc7/a9Sg5GVA3zhxsoiCBrZloDI23lrm5+klFXCZqQJQ0lqmpbdWNymVRz+TDA0BBg86nKVAYNAaPZMIUzLdSd7lZ19eVVNQ7cwxxvW9YTESrXssZdZvVLHeY5YdoLdLN2pjPnL8snbtuzK+WKdfP/6smwSOPGABqJow+u5RPA8g3h5BgIgIcXm+M9w18jygmL0PASEsWpsp7GkwmqbKySJqlXSJImcaT0McbBAQLAkbKB3TmrnDyB6Ls6AmiREhcG1h+i62bSYDO6+qQEbhIwR4GSm5G40QQYUsBkm4+SaLHb2qGUHBFcJBILplKT5URXJLNWryqVtc5zq6PMUY6aOe299rKdViJ5O3Sq+qgTAuloYZJWCfjTJEfkSTA3AsIguCIDMwFQBkFTAHAgMCoJ0yf1PzEOBnMBsBAtbDygqgz+w03s8/ED15mf3Ozsulcji8Ii0jbZmCnLGZ2Zh+B5ZDtPKnn+fiHbmF/sQqZ4O2a2ON+7FHOy/GJXL+HKbLP+f+v/PWH6w7eiQUDTggwmHWYKebXOO1MJ/LPtjtuvOZUVn4HGjLaLoR+8yFTopyIW7EGaJFBW3mZhXA+jepo3J9KW2kxI7G8K7s1wo2rNpVVLEi1DX5VLdHAyPdbhT6pvDEd7a5a0iCt2LiIml2Qz3D037H3hkSVvC6GtUG1MbGp/t/bH+3/d//Z//+oFBwCy34UVuMzqwpsktGADMCSXDBFfUtaYVgETFaTD8enAAPVuTDANAetQwAAxDMuchNf93XZkkjkdl8p6kpIyzXHaE5vl7IMKMuI2OTyiVuG6Nuii7gzsMd/nO0O8sodGige2Nv3Tx2RwLL6R7spdDEn3rWePM9Yc/9bpIDHGDglMY5AIPbixcJfuEx6KOBPWoxE6d/JXTSibnldBYmx48co06rzHhZi3zGZ66iP4NmPMe7fAlruJ4OpqlC0fD5683fW7UpCZ/vucKsF9iHvM71zh5f//6smw0AuoABpZiwdPbRPIsgJjtBeEhHU2hCa7l/IExjeI1II04DpEkgvY/rGmWr9jJGOYQCLcgmoyYekCQ2pXIk020UrrOAlQsSMN0Ur5sKoUbwltyGI5DOHaJdKoJ2HNyKxdBBx2w+tYyMbupdLjqpZx4iFyITWMKiVNMuU4phhLTb5hSMcpMQU1FMy45OS41qqqqIACAAKIkIAIIATiwBAPMHoX8wsQHwMAoqUKAIGAeDaYSg0hs35dGUwJUYPYK5gWAVGAuAqYCIAYQAAg+sSefB/4EoIbuUMWoq8SymrV+iiEBOvD0TvunHopInctTU/Y3jSa+8tqL4tMKoSNxn0iCcAutX3b+ctaiMuqUdJEaezHJ3DOxfl30L+Q+ukwqDjtIFGg+pnCmHV9WZm1WvV5jVeLY0e6DCff6tAdqvat8wyuZ3ZyOXJXXtSp/7UpsSnclsxjc9azma1mtXl7xq8ppXTWsfk31bC0gzrJHbDcZFmrkV0lpYw0pJyjNL4i1WyZ8B9roWIXsIkBpk5eJA8lJNMVJxxWqiJ9GA2iH9pxtppPtQArCfE4JhOilPO0SAih+XckI0HQExYU2jjqnaWnGrKj8EUyvf+KJKPWfRaFUPs7lVbl6C2W6q0pjQkZQrdvzRY5Kr0skVWGjAwKiIRmFA0AjAINTAEVgQJZlPdZh8F4FBJPVuDqKua7A9eJTj1yy9DzsUlzsp5TbeOH4Dbi2eehytLJA70o1N43pc/yLqQWYs6RGgeLIkkTZPFw4mxuamJRzn6KvrLARGCaA9sZsKBEwNjRKamhfQKBYYuGNk0hRjhRgphaLSL0WJJnUS//6smz0rO8ACEl4PgvcTfJBI0iKQCNOFhWPEa7MesjBAmJ0F4SAlYfx6meeOSORNmdmaRCpUVvITHJJdr7izGwIOCroQCTUcjaRSslMIGKFqmmU7b6WA2RKjgGaSB42nWeayAdiO/o7i/dv/d+rd6u7KfVVBRlBtu+NEbbVa8oeKIjgDAUsgYAwUA0wOAkwnCYxyDcw7DA8CiA0/BYFD6TA0lYBAMFAJQOUfl6gkYd6088/Tydm3Xjaw9UAtIVvcBnrHnDdh+pTK5h/L0fft4XGjO896yv3+VVEjAx48+LOH1uz16s7eVG7Lww9bxz3+t953ufO3qdmgnFFkClDnSXVuvjlvLCkramtYVLV161EqxykvqnoEVKq0Ud39bfRQ1bq7ixLdcfwspTqAhBv6eYVFHM7Y0Uv5L7/utLKTnO5elmq1drZUtOIHa2WROM3wUdrwVQvm/D1/gpNrJLq0kWrTrBhTUw6zUXln/que2JuKaqM+FzwhVPpM+ntsRozlq7tlIrq/8W7IqinopS/sHUQAFBZL6PDQSWbDAk6laG/UoBzAQ8yI0NdVzDyGKOivDQ0OBHj02M04mMrHwKImBAQQBp8QMsPDazmCySWunL3mmX4VuatD8AyO3tvpQ49PHfiUpt2KGWW8oy+r9yuNrEhzFowqKnI8xduMNRpsbckl0Zs25Ljbl9HdhiHbWNuGccK2UddpQ8VjjkbFJ6EDxMoW6liTX6l2eqX4jjdj+qWXRWH56fqUu34lEifKls36vui6VmFQi/K5JTTE5nnVt2ZBMQ/uldqhj0FPUllDMO4y7upRL5bLrcul0qfXkNTWF6im//6smw61/+AByJoQmu6ZPI4I3jtNCNPI5Hq9C37agEQC6J0oIk8iMpuUtDUivLUbl9LLLsYxuwdZ58EyaW2aW5UllmU6jEquY53oRM6tx+m7ytlQ0NJbsWZVfnakjs1ttgERNtOIkACqcQodMQ7uWefsz03mTwNgxLeFmrtFjb0DjCKGoohxiG2XBiZKtF0BOexjE97HsU0dzahUf6zyTVXYjfYCZjDt1/GGjlNZdOnchNELiWJASg8hOJADFQqLAlmB1xkoXjAQDoBrQUgoWtyXSCJTdmX2ZK/EonpTbnc6eX8rUDrQTJ4nKoDpcL16UxGRSP//X1+87MGkDOQNTU3YtC5udm+QHy1S9/f///r//Wdhww0IMbVvVa5E/KruMlyu09iVc5K87tfLo3pGswx4JRxp46hmS0tI6lf4hUaVvDa1fcLTTkuiWYjjGou5xWXpH9I6GEzpY/7fVcJZLLZbUigzkKQIRHGhMpTRtdiwHm495thNqqQZ9L/92r76x+q/+7f/9zU6U160sL1BJXA23fmiRt0aRtVb5UhzMOCfFijCBBMKAVMVxAMkC3MNRsO2PMNLxAMPAPDgOaCBgKAgAsuL0q/a6+sOu/PyCESpTdlCsMAN+sxTRRmpEkNqWKrEsy2nbdk68YuoLE2f5Y8sz8eubsycIM5q7VlJPbNwQ71BBV+HOvLyMY//OVM8O/rnc4kOHnUomq6RQIxWVTMqzl2cU3amZmcpKDGRVC4fkQgIjro8ZWq3CbQ/dK9Yl95bXtvN1hgZYqvxlxtcnCJdaJa01jsLjrX2Vucpo/q2DT2ODHHnpxW+fQcct0o24Xrbv/6smy+7OeABcNkxGu5RPAxwJjtBeEhHmnBB67lnIk9LaL0sIl9TNpmm9M7+wZak2Baj6tpgpt3SSxoEu/rYBYhLeyNNDKTBPTzMIi4SxWZ9ICYrNDFRwT5yyoe6Oaqvy9LbotKv/VW/ZupKb7//nPusllXZpT1tbT6Cnv3kWoVN9P73Rrx/nwYiSkkiXknBRqSMMiUKDOTQQBBAemJYMmJQcH4smGxQTGKoDhAYFpzAkA0JDP5xpzpuzyP27NymhcJ+xPUa1oMX+IBAcDWmnSXzmsWtvpXf1TBeT8yLX3+cjtXKs4JyhzavPAk5Mzc7Uj0RnYrDM7n+952+43Ln95vsrEQQ5xEBHFhCYEyeWbo9U0IdmckNJSUt2Q1s38vltxNirftJJqRkQNR7HvFzyzpLk1Oskgp3h8f8oZF0EKBurdVOMqax3SQWhZhs7glKoJKtNQXVZpoHyV9or3ztLn7ZphsCFASKyk5GkkkCWY5zVemiHKm9NKJouyZyaNBGVmExy1FykqQMfYm4f8ezIS1XjuddK8X33d/eqcNKLbNF//QU1KHbt+sK3L96Xq/g1MgAjkkQq9IYqhWYDDUYAi6Z9baYoh+YKBYBQJLqAYAAwB34e59HKkz6wRCKkYiLo33hgZ+YGgprTYEylTwNBMsxgqYh2S5PTSwY43edxr1rfyxRo573vidFhGrj7WdyqjlMnkMOc//5/7///f4qHAb9S562hsWitHVqTl61Hcp6vTTM5UpM5JQd4i9MUnjKXGZPx8llNJyN+cQiJgXbHSWxxrzLmMtNUgfOIviuTeLhzcNiuQxjCRMsQElSP+lVq3gCP/6smzSpPeABwhnwVO6TPI94viNBeIgGdGbDa7k08FjgiBUEuAJAEkRAsYnD4hJIsFOa0ONv9//N3/s5lq0ZTfoND3P04C1b5LesmZm73hP2TDv/h9H/890wAmXu73ei1r8of4cry6Zdasq5Y03u/+lqvizen4h9fLet9rQlQnbQrbv3TZJGaWfhCz2oixbA5BBQCzA4HzBcODDocTBMYjYrhjKEPDCIGS0zkvokSX6Xq/FK5rS7M5HZ6jdSuxp0IJbPKpa09uJdps918u0LQ2tx11MI05L016ezjOy2gvzSjZlLz5yp/H7lURrVJydtw9N0VJjvLXeZb7+WdSvODIc0ZIu2w9Elisvlli7UlcdrR+Iz1eNzf1JQ/dAQ1Jn3dZ5A722tXQvNbidbRu0TS0xONt5qqcsdB7Ehalho+e1vTHjj9Zmq9rrrpliqvPdqnoqnnG4rMwQUxd6XVWpiRumEEBlsqOJpJU6n9jSF1OAfKeSSfnZ4C9Ic8szQm3zg5sVCIobLyLrwO+KsKNWFxy1tfZe/x7OTq0Pc8foRotTdfpOxYn//+sJpwCTb9YVtwFSqYJlMQIQFEJImBgCqDJDBgciRbBw+nnY2kVUkQviwEKXlt0OCnbPpe1PJv2EN4kQn+1FgDW3/f6ei8ua4+qRqJbAoiyZy3gaO4jr13XbV4VS0u7uNaN0eURTaM9Vhxu61Z2o0ao/sRgOFxVyoYcPu/3jnjhrfb3bNMlqHcBoqrMyRpMilkxqlp+Ps+uFWR5w9CIbs50Y2rrAoRLolCtzXepURnVmoWxS6KpbCRJIeM8YYyKhgYcjdqSCtXLW+Zsvjf/6smznA/qABxZowuu6ZPBHQ5h9LCM+HQGjB67pM8jTAeO0EJwEtkj2WD5FOK5Jt0zHZvmiX8YENHaz1/Hm/gZt8GvUi2a2y2NJFnPQQPHopvvInBlbiSHsNBZjCC9j1V2CtNWKVVHm/219w7r9f6nbz5Ff9MXZsVI5RNtv1C0Vuw7Sc7+LrMAgtIgfolKASC5gMHRgGGJo9FJjODphYERgSA4KAAuAHAGuSD6ruQbTPrDPyCw7V9u8AR2oyN0YChti09Pdu++0Wl7mWIYtRXPdzDGUXOWHjPVyB4469NKL8O1pf2tlGuVda1zv67h3dSvcj44MZx6xIQxZz71avG7mWFXDVeki1JuNyyTlOTueffpJFDenSJwImTCfpdY3t3qtzCUbh617GXU9k5TJvTaZR1dalll4zPj3clcIsFf9JahTmv+qZTciRJTZtVs5+R+UPnFnWbDagEBiQbqMB4THASJKeEwsTHFxOHQyWclIssUhiG5RTnQpFcgUjAswGeTn2tsbhlEmGDNZepVYogh36f+ZKctDsu/NFkkthtYdWli5cIwPArDB7AAMBQBEwHgNzAdBCMBgNswCQqDEoWeMH8HIwMAUwuAsmmpISAcRbLcxVpjpvU8jpN2eeid2ZaTAiwziqWrNfBBIRE3GWK/csTkZYy5S9mDYolHHow3lNU0lmbmcsPADbxa7Lo/HIjKnalUP1qOBoHnMLvO83rHWssc+zjOhL+PHl9xdpV2VQG/977sZdunjUaikHPx8sTFJIRni5x0fFJtBgOyQcOG619khGCAe3SK2h8OU3q7n5fMk50Qg+bRmkjslqV40eGRS1P/6smzwo/2ABkplxGu5NPhSwphpBeMgIM2bBa9pk8lgGmEk0YmwM/YJ6W8LsFFFROJcKVWbvtQXgPYB/eQEPhM6/3C0isuRZE4PLa8/qgAs3yoqtqIV422Vvc7e0ocmRbLfgW5Rj37GyLjchWdqVslKbtKz90Y5mfSx36jdoWA8X0piK5WAHZwyNCDnH1CNZJyHvMnnpPC6oXFTJCXjmdBcCpfcvQpSXcXb79VRJduQy/zy0ANRlwMGLXGMAZlpAYAAn63YRag52KBVX6j7YJl/qKRWYFo7k1PVbFiFZ8m6ktoI0xehnc52/E9Y17FFPwP/759bu+SoHhyKW2eQ/HL318JHO7o5R3W+Zf+/5nXuVciwGKmOnE2KvJVsY7r1rFbDli1Y1KMfv40ZfMQzrdv3amRhjUdjrLu9czev8OhW5hWEGfcrzBfwpBKSFBWfzVV0BbBoBFGs311xVKKbmH3Mebe6jiQBGR5ZKL0gE7qWjc1KFECk2Lm6dj0qHN44fYuPR7ikiXcF9yXz1q/Njn+9b9ISkoMk3xojbgyDk5FDYeU4MLQHBRYJDpIGFYRmOA0GHIwniW7mnYgmHgIAYIy0BgMBxZtei24fZbKHAcCBXVhXtegxYFIGFQ8ydATI0OiXZcByaKljdFBSu49Knogxt71Xn3IdwyyXye1kOtKcVyozHINi1FQY3JG16n/WeFbWP63rHv9gQP1IgGQPm+tncupY/aq0U+7UQuxD6lmZOPZJCKSeKzagvA+sKGXsmZGobCCS7YrQTohYakKj6oNqpG/BSZVVBGSkSfkDLVllTJougWQnESyBabkKXjq1LktpHv/6smwpXeaABXBZxet5NPo+4Ih8BCwCHamjBa7lM8k0kSJ0FIyEbNbyJU3UgdBUdv/rEjVSLjjckSBBVGpgXLvrLKxKntUPP2nJujkCszaxCR0I+g8UjSQEgMNiQOlpUHUl1hNLdpUTOPPWg4TUVfHUQqxNGOuA/Cvp7UrL7DjqqgQ0go5blC0U3N5kqlyyNtxAEODgFS+JgBADhcCYsAziIN4wmXLDAUCaAIKJgAARAEA0wHQBxIBgaAbThh5tV4Xrrnuij5Dspsp2MSb9h8NvbSigh+nDpGDobqyrnfhojtPIzpuSpKCtfp5x2rVWWqHGZ9sOfh3s4n81PxK3uHZ3K9R83docLGdy/jy9KGHijAKh3UZImyx/5+mjec3EbtS3S3bsXqXa6SowjTLIsRNEhBZOhtDuJLJUTU1i5/o00oQlkkXeLxXm1GmP4KRJ1byUFWaXKLTUQNI/rJ2SpA0ox+XsyZfLwalFN2iNn4JSsOd4+JmwC0gW9VW9KAodKV0c7y5JIPg0SWa5nzVpsZIHcLjwBacVPve1HoyaOxpo4mk6pUFqzLm6SPLeOsVqk1KecKoYlrewbq9tKFBKSByXbqiRt9OPi5rvw6CALDAHQyAoAGBQJmEoYGDAgm5tMmXQSmH4HBgItTXWuprMum31rUjwxeKwTLZZIWXz0mcKamX9gxkkN2qVy3gtZu85D+xyKtw/KpuvLL3cmjmBIXRuORfKzDFJclEawlN6VcTZFKrVV0CLA9wwh1k2gaWOmCzcyNThPHVmx4wNF4soGwggSCViWnlthPpq0UD+bOOLS21RZcrNVUUg5RcX7/w58OPrXv/6smxAd/kAB5tqQGvaTPJIQ9hsHCM+GamhC67M3kDhDaIoIIz4zdzmfl3LNlW6NSz4lbe0o5KxdsjGhlPZRxNxpFI1TcMzvLG9Gf6zP34q77EkWhTNsa5jXTRu9G+3Yct0a/HRug8mJGu6D03R2dT/Tt99FFVMQU1FMy45OS4JW0O27dRIlQ3S3U+pqHBwLgUBzXwwDQwMwUQhhCB5xYkJm6AoCJgHBeWgCgGF10GG6xhy1bqGITszHKvFYkwYbabOuPJHNkDNH2bPKGirljMLgKG24rxl0HSjHda5Q0+FOyA4ytzH7h6zuUwXHpU98aiDqRp969b6WWcx1V1u3UjcoKpsYPOHDbQIrP0s3OV7vL9akyxmKsU7kggRjWoi6fR1sGIQi5ZOETsGob0nr1NFJzVoy4fFCM/MhRruNnYyVtOD/JlAjO1OjrMByCUnyxx+2Y+9pc1Fpl36YqzHQAACIsYPmYIqZOf9VgW8OEdNdnaLKt3Lt8djs6PWZKze3NHX8sPxV5ez61+WJZJpmLrdvN74q76v9Tlvbu8mkM2/6Ofxdcr09icztJvRHyMnX/7bjmqojJgFIgrJv1TY3KY1EHklT4BcIlY1+F3RgBgSFZgINRpn5hjUIhgeEIEAJAGieXEV+zjBrTgS6GZXVwoM4aedrtllFPFIZZgkS7LcM4ZgKcibiujAjVFuvtu3+VeYwzzi4PNPPhFa1BWkWdy/D9+fp5dzPf9uc3n3lrf35APRU+JVEoJjUmp85XBN6ll0c78cs2JfSpF56Hzh+bUVn1oT0dVjCx5swbiVuur1VFMXnsT92pmsEJ4/KxnIthvj1f/6smxxgvoABvlowuu6TPhYoJgVBCkCW6GjCa7pk8CzgCN8EIksbs3LTFc5TV557X0Lo0OHIrLGbUu/i+2OWKzzqexlppZeFMHhFVjkkKRSUp7UoVYy9T+i7D4xLd26+3qq/7ZOsz6v/cKNb82sU0a/q+lSBLZDsktMTaKjlE9DTl4vkXqRVLjAEAwGAFmAaBgYEAT5kUqjmHMDOYJoIxgKAJptDwDJa4mAFIgAnPS9aYzqUPm5kvgR2YFguBJfLGUQHHJGow2Rl7LZPJX+gWfvx2ncq1lhS44RHdrCGTpCnlb5ktHFZfEKbK/bv5RKBaamuXM8qtPG6tr5mOQaSkDEmXqol/WqspfuXyOGKkVxnKS/Kb9eSxtehvXMOPHD08KUohQXz2xYUQFOjp4PierL2uFllMewHtXE75rPnii6HVh5dl8rz8KxpdN7w0O3YnmLr9xQ2+1Rlxqyuu8zMt16WsmZtL9d3/p05u1vtutvw+AgAG3hjHV3bbZEd2ZX3tWnmadFPAx1hia7lDo9maDEa6cRXLk2sMWrhNcWZEJBmvViIW0MJCYTN/sOsV9M0dS4mVLFM7KIRhVGDAu9L4POFi5tm1iF1AUnAa5d1TGm4d9srG30cuJukyFOESCoFDyDhSObCQEnyIhRIgLXoKAEX3LqLBxaX141DdqU2vlkBxJ+nbi1NclTJlQzcDw0xNWKGZTEoCkjxS+HrNbv5XLlmqzI6ZYtRRagpJ2FQTy7dxbWKyDDueOsPy3nj+M/OPuJbL3eOBKCmpaavK8YxGKGkpc6aM6u20SkV8wmZStzaFEOeSCnNJTuM1UMVKRt0+Wlv//6smygO/+AB+t6QOvaZPBWrSfFCCLO2pGvCa7lM8EHAF9wEIgAcz9zVo+o0jt/ylmIKwPaksoZOKO8duMIygu1Ny9wnv896RRzj8WZI06WCnGkz1NdIOoSiLiC97hRa1LoSgiS2HTx7SlS1K3AVCSi12sF9KEF1LyYcMm1LGF0vdpR2imhKFrVoMmqlD1L6EpqTEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgS0xG5NlFGlOYyFhHv+oY28XfcCAQYFheYKCkbg4sZVBoYnhqYOAsYFgOWvWI28hutakuMYh2juyixu/8ujUzAj5MbfipVdR1oHljqunOVWRvRF+1bWW6W7lWZ6FsI/Yv179+9Gat6Mz92hnt7xsX6D+XeyuznXlSHUzgCUNgwwG0nFV3oCz4kIrTnAjJE8JVTbB1Y7ErTSaFcudIYImWloygy030XWWel0mkDoxTqeyaYltUlVXS32/Lx+rJ7BpvDdSu0t2F9qD7cSXg4JeoPOCLHcfP8q4zKqqSLHhKIRh4qGiRYedWdBoqMOzwKiEYexKWHncRFRh3EohGHsSlh53ERUYdxKIRh7EpYedxEVGHcSiEYexKWHncRFRh3EohGHsSlh53IlVckvyRYNOQTW3dwNE0GEqV/S35JOucnMIgHBoVCIMzFOLzBgHQSDRAALSIouNljXrM/TyGVzVfVh6aGOz+NuVR+6o7DMZnZqGnJZXRxaE3Za3elq/nf1T42KVuBmWwJujmY5jJu5VZPb+V3a/fyy/Kz+s+8wtf/6smxTMc8A9qtoQmu5THJXoAd5BGMAF9mbEa7k0+AAABMAAIwEKChV7GxQqZppRZmcIxViEprUlm1LtSzTpoLIzjMg5itWQR40HJ2bvp08RSK1X7JL7Feb+pIIbWfZmo3M6Xj/62t/nd8srfhABm/2dWquTEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoJOYPXb91pFRveDDXxo3ZeB/S8JhsKGPhmYTDB6K1GpQMAjSPBJXhdRN1wlHZa/kCYO7Dzu5UcZlkCO1FlHWCtxaUzGTsjoYJWDbK37K2IPA/C821l3ZnGY7HrFLtrZkcTPOyx1ZqHmsSuITjeO+6MqrtSuTtNepaOkoO1qHlE9D4kLjfnsRal2rq7KKPOOwqTbsVO6wyzeTEsmOb1gmOIxG+GqKk7CNoNQaTkxNeCHPStU20s/M8F4zJXNQelVrk+LqEOMQikndXdtLNx8UEFUf1kwkZWoXoebDHqUsN14P33XAtMtuGpatNHghAF1XvMHgMMXRLMHgwOEYiMzgaMTwTMEgAMAwBMDQTMCgCMDwDS8lV5/XVR7XA3VcD2sAgx43ZXe/KdyQjxJ7oE4m01lT1ufDSi6PL607M24PPyM5z9mJxmxL4QfgG0BojFZO2R8JZAT+OXSPg1emsz9TtbH5dcr6l12bsQUys4oRKNu7svA8cxGYjH5nG05cSdOw9Wcchh2a0KqCjVn1y3ES8JYkNNGv/6smyI0MoC9upoQ2uYTygAAA0gAAABII2jCY7pk+gAADSAAAAEq3jgttF7iutueD0PxCNr8JJSXEkyGorqz0R2y/AYOXp7CEnKXMsHSRgsEMcnWGnSoS16Fr3Lk0CJY480XlrkT5A+3ztgFFbf+BBCsCTlTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVS25BNvf3W0lDVmDGn0EIn3yacrcQACSBMQhiYYQ6BQbBgNDIBqAJCJ9rNhqPOXYc10GOu9HaCMcnZdEtK/f2U4MGj8SnnUl8dfd8ZfLb9LAVjCzh81UvW5Ue4cWfli9eht5S6NwdDMYfq5Hav44y69dl+4nrs/TzyOoCsD1a4TWCW8zAzEmWrJqWl1Z3IJbvresqSqto6zFO4vrR/lzer4mPW0bo76yzt3tuTYOfYfjhu5+a9dpyuRTnsb/OZkFc6y960N7X9fceUXfyehaS5NhPd/7o209MsbonuwCGIS6AYDpggDZhKFRiELpgiHBr9KhkuDxiUDIOB5ioVAAGAGBQARdlFp2p6jj8sv1nSYCwdO+WNgfF7IogkFgTWJW2qljusPonzdaB0vGzOw6MfiUph9yaK66Q4HPlqXLJ1XRZdaYMAO85zH5fGZE8btOtD0thrGN1X8povSSaMzcmGBBzDquIahbnz1BBM/EGb4UcPxyW1q1eSSyrOtEhiEz9PcsRCDcX8hD7f/6smx6UMSA9nJoRGu5ZHgAAA0gAAABIQGjC67pNeAAADSAAAAEDUNxOIy175XGpqAaw0VC2iULj4ZEpKIRK4NkIpRVpUKBNgwAYRhEmzGUydAtIzcCywkNJpUYglzQnmnVtqz8WUBVOcFEGrXlCCTi20IVTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWnFgtbv5UkVKKWjjkPO61pbdyFiQxMdgMBCQ9KrgdRBIjl+F1lk14LHfyxDjXnvk92O0+cacN92twbAsAPe6vEamdQlqENr9p5pgkIXE3eLL/mp+NVqaRbvQlVICzZI/qmjlOa/jzwPCocl8TguH4HjM3qzTZWfs3eclXJesoObj5CQU3KRwUCoCE2WHaIOUXXwuRg9FMVFWWqQJIV0sMqpWhJlUz0pXJuLupBuckpt25Co5pmVZsFKTSVJVYzXxaEsz05M+9Dko0irblBD08eRa2mw9NPaSFwk3BNLb3GiS6UiZaDgDnJhxRUtAy8hAKBAD5gOBIGAyFOY/iv5hdg4mDUDoYF4G5gMAOGAIBAYEIBpECYBQAYYfJ3XeXJLbidEadZYimDD2ftTfsaBI2Iw5hEaXTkghYSYkBpKjQnFF+KtYYDgaSS6QQxD72Rme2gjNJlGNoBlepDuWnVD7zYOM6DXpphCyWXXGmZLgXUwJ7aZ4WERCGnVboSF5t4UFkztBHR4K7Qsfh7qd8Ssxk2dRAR0t7OgWZ+fiFquJHshwtyIP5ZU6zAV8ioX2TEyofnKfB0zK5HqxP/6sGz3ddyA9sZow2uaTHgAAA0gAAABJaXpAa9t8eAAADSAAAAEImhqYfF51hhOw6VyYGm1KF/Z5IzVKiDu7gwLDRNOzXgMyRYnbc8iqdtVzxQqB+xqBoeqxk81YN/jPxTdPue1r4re0THzBtutvBvjcKpMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAWHeSlpIhusSYQoCt5n0fVGzUuCYBoDhgPAtmBOF4ZIjDBh7g+GBIBWWqZaXiRVV08reOV8Hsudp5oZadNKywK4T9xpwaCBm4QdLoGZe/k7GoDUeYLeZ2q3t6rfjNDbt1qzdDgJXy06kOy3tPPzV6H4290rk1qpFZ2pflcrjFmjgqrRyocAmgAEk/ROTiaBYmVFWHFd4YjZxGwTy2hpU6liJ0ijErq20OE0UCoRrnMFFOY9SpKXtONZq5l2zqTzh1XWCrMw42+72dj7TUF3MbYml2GX+ihbrRfHzMV4mvvv12C9KvM1o3Dle9zWlvO7q78SmpQdNf3YkTWnnKTaiLA+u27xdYSE0xBAoweAE4TLUOakiEIeABx0jU0C4q5qet8Wa8/cYdKWw7OrmeWQOQtkuqmeIQC9FzP8o8nVRxRVBgziytuyZ6/5ibp5rT6fZlVOB4TT3cU5et+3Td16WJzDpRd+3erVo6+k1STbQoZp5RFHnmZBAA4IN8PA4YEYezTTnkJKfFwnqyWIJkaoJ0pOVKJAj//qybKP3yoD3jng/09pkcgAADSAAAAEeEaEJrumR6AAANIAAAAResH4liI8ucKxUwiFcZiUTywcunq5PNktitRI7SM5dOoHFsTOf25E85Vyrjh4ltSurfv77b712jTvhpL7dJZ20Gi89M6JHaOqLOga12apMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqakkF+2/ljSedeJvW/7cpfMO89CEsEBQChs3JezJ4NMZBYwWBS+AGBhZOu4cOs1euTwTWiV6LRu/AsWwmHXa04bOGgPQ+EA0c5DEQizkyGgeOGLc5S1c4jav4P6fgjqwO6VaXS6O6np2kxg6lgftWxSYdq1JVI6etIJmIrKDOw2ICcmPJCQnWWRoYPJyrJkpaqG3SLJuNwQ9onQTislKajTZVExA2kVaUVkmwSKxxAgQLlpoF4ZNpblW5amratHV40g/jS0JJIkNQroka2EKy8p61rO3WmNy3f22NOvB7cU6XZctWxqgUAMwAAswHCwEC6FxYMYtEMJQ4MChPGQUFQLDg7AQOkwJJEu4pklvYh9/JNBEnlc4gCjKuKEvOipVZEgAbhL25u+oayZdDitdX63zpqrRmigiRNmZ027iwKIQR7brNoEXhqjiTDXqhuBmsMZZ+mFJm7ySRPHGX2otxtp9uCpl+VHiAya08oU3dULWX+fV0XRdpWB/K0cbhT3qOENs1tl6cei0B6IcVRbGrFKk/QH1D//qybF34yoT2rGjEa5lMeAAADSAAAAEhmaMJrumT6AAANIAAAAT1HBYpEkcB/QR9HmJ4sRHLOMCS1WAulginTOxKUIlFx2TlPiQ7bFAkOnJrE0hlpx1d5ZXRI05gW7ByhtavR39W3cflbb3iZ8Py9tbCmapMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqCKcBlk1bRIF23OphO9EXwcFpxcowQAkwxCAwgC04XgUzWBcIEIvzD6525L7kDiM7fdzL9SLyWUufFHZf6klyZcPu6qqlirAqkyFlc89stftxHhXk70QoZbc3I5ZcxmlFwZGgF/Gg2MuvRJ4xRUsAXIxVsY/VkONeUWJ77UorxNwQ6IvgWHqdMjcUOmmLXXViYqwISS5VE9eshMi8FTo9ncnhUS3Sk0yJ2ls5FlW/QotKrCUpO5WpVY6OBlip89ihprUPdYZnJgmbOKcbeyk25Y1t2KdNoY2d6jsW5Wb06SWtQsINnwTCtyKNkiTu2iAECryKVAURbkzNqxoIqdU1GE+GabfTQJlyhGm+DxlYaYoDAQWMHEQsGM7VKpqLBoYAvan3BbfNZXnedJVNjynDKRGEviYKLl9YcZGykeBGMRGHFTEQazVD2iWhKYConta46T9vNXTaNYnbL8QQgzTJJrydtTFY6ca2ECAwFq0MmZqxp3HIVwyNnb73WbS9x2kl3xQyMsF08E0JUn9HEJrDWIPsorJlzPC2zcXCWk3BYR5IHnnSlbeu5Um6S/A7uRKNzcThMtksAQzSX5h7a0Mx10LM7MTUfh+GpVflkifJo8ZiVDOy53Ik//qybAwb64D3JmhB67pkegAADSAAAAEn+ej1TftqAAAANIAAAATOZ515TF6sjitHKIlN5SWxUnpVKpVf+Ho9dqSR24xKI5G5RUma78zMQudylFi5lHLeUrp7EtgKjkE9Zld2tQTFFPUtLTRiYtVcJ60/8vpMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqIBHhFYCgJgIAdeDopIFYAJEAiYAQA4XA6EQRZgSD7GVX6EYdgsRgMg5mAYBkYB4AIhABCADF7K2SJaVE/Ldqajjj4Nhl7/rwp2XTDuUyicBfDMudaBqkBz7iw2+UYsXX94+GLoQBbkq5z9ylx5vdFaae4/MDSWtZZw+D8zsOw67HJNi7l+IQ46FPNtqjMAr5upOiUVCeJJcEt47LQ8oQViSTw4LQ6vk4sEYdB5IojlcrCGDYzVE0qC4DMJZKozORxZWG5eWA3L6EvNyYwT160RESUwLRqGR3AdlMvUTmJsOY6juHRMKkZAkhGX0HkgnZeOB9IBIZFBjkYTMAVOkMnIBoP5JTEaM9LaIQwYkdyElLi07L7JwN1AvMXI2WTMKEq9evLqq5GSrAM6tv5c23ATex+MUGSITwquAoCMYDsyWgDAgnOI9UzMEzMYsMNANCUmiBQAn+pt+pW/FJahqrMZ4wC9DdYNX39EX3aS2RyZFCmpXoafd6YLcWxflmu3YxN5U9uQgpKupF3DfGQUkIi8Ucqw+kIgxv3rgB4Lk7GpMwVyH8pbM5FVBgus/yXqDklHUZ6epHm2mFJiuilTnIR4Hhb49S//qybCul4oD5LXq8C9pkcAAADSAAAAEdraUN7mGcYAAANIAAAAS8XUA+VL7ZAP0Y/nDq99ts/QxYViUnIhw+0fHSEuKxdcLyyHjertDQ5Prtpoz5uKraiF1V53LS5etRrKS4qOXkJFVlx9vz/PbYMUuGnhZMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoNx0O23aOJExO2npBDtuymmptH1ciQTAYhAMH5xMVYObsFFAHBeDgAAgELTaU4MWftnVyM09PADyxWldKVNozt+5Y5KpU40U1/KmmGVX3fS8a1NRZxFj0UDw7FbThP9S7do+plk0MxCghiaj01CaWUxqzFKCIvFI34nsYDsvDGmiuK49drq5R7Y62JMIHCuyfmNSSPiEfg2HgrIY/la61hGbgcEtcjjQzkxEhwOcRHI/CUeHORn1ilDZGSG1zJcNCpxfotM3jn3PWFwe7/CrWUXn/9RhOwiXRO0gaW/eE4pEvfi4tokq47PUsVTr1j2vdXAhapV5o0AAKMKAL8cJTIAAKtNT+S3ZfJENQoAkYB4H5ghCRGdHIMYtAZRgagbmAIAoYAYAoFABBwAik0qIEd65ekUiZxEYxbwpIxudlGNqC5fELkpk89Xjrrx6jaa0yWUkbgi5hQymJZviYGAFT8opIuLE1LykP2ypcDrZppS5PlZGi6Yy3ok3VGyMaOBcAC1Iy8jDyoLkqcEawRPIGxSdKAOLF1ygLtjJMaOkj4iuZAicGYm1KQdEdeRrkz//qybCVo1wD3vmlB67pkegAADSAAAAEgieb2zz08SAAANIAAAARqrEZAwKzFI0iHGGmRWjmGCWQ0JCopeMonFBwYEC6qQyqZJfAyMrmR0cyS6axKhVFpLIqTONs0XUZIUZBCWChhgsWepAVkaRgYHQ6he+tMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgipA65brIiVKozD46BVBYkjNVaxCBAABcwXE4wGGU0t58x4D8wjCYsq0QeBgHAEuhU0cdmEQNA3v9Xn4g2ZVstaxK3XciIuOlfBstWGdKLsEbROty6R+FDX/gqXxdxoQzu6+UZIAIwmFu2Uo3H05cZXI4cgXxA7V4NkEXm1PuvFIPiLhwFLWVzDhYu++w89NDo82UyKbh96YOktI31JUcl+I9QOHL3XLzuGJlpjPldzMVxnri256747llElNUFYh2WlxwKUI0YWUKqNSmM0q1QQD1gc11zps2OSauPycST3o/YWPw3TGTSw6gYWmayCB48I5ZOY7M/YeDPXXwgtfLOtABi47hPtv9tG3L8oBUXbyBbkoLml+QSBDGAHAwWOrJYOgw8gSINpcAgFM/RsVRd6AW7000/FSUQ07fHQYg6T6YWJaqFXzTHyfx436fp4YKcyXSXKYlsFQDTt5IHIf5+0yzY1pDAa4pDIoxKmXPlcXY5dA7lMyx8GRvC7rtOVBDzvg2dnytD5r2EZEu8JYcGUZgW4wWJRONwgViUJY5l0R7BUXy4T//qybPc+0wD4FmlBa7tk+gAADSAAAAEeFaENrmmR6AAANIAAAARHlwtjuhITK5vSnZkonba33OcbOitYmvL2CsWIoVwnGC6hOVRnLfKm4yMiP1F3TjbI4V/TatGb2icZSdV2NqOK/Kce9Q+ev3/d5OXpP1VMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVOW8T/b+6xtt7B8gZw+zX2dPozhnZhwDGQy6YEExzvrGdAoY3DYGDBbMBDMwUBEV2AOIsOvuHrkPOA6s/RPa0eUtIaxHYdaesR6kjpK6EKVmfZ9nRfSkZ0+rbxWG70xGWHv/Eoq0Q5zFcDjqijznsGWyyODHXV8xqPwAmhKYu2CWv3aXe78ufSbpLzWXaSpCHggJhKcC0aCwJYKD4XwMA3A8vBwfQ5D8nlZAQB4VGR60+aFk/VqEY7E0SE5OiiJREk2HRAEgtuFIRDriqrRkszaPwMvFo6IZq0tOVZbOGXzNOvZurVr6CctNEI7+yOBSW2y8P0uYmltJqlDEiAktVohMH1UC1sDqObDe7/2u9LICYhP4wY3oYARgKBgWCEdFIYDEwfikwCB0CiQDQbLKF0EEyrEVo/N3bTtVIKisYbAzd5FiS6HGgOgzpSpyGVtSZO87V4HjbSIPSVVuhuDJPIJNSxFsk1Kog84CKpZ52mI+qtMz0/osUw0iqat8RGqBzRNWVuPXTm4Hmnx7BJTkfK5jQltQKFNzMVBzoacb8/zgYm07Wb//qybE4p0oH4N2jC65pkeAAADSAAAAEddaENrr08oAAANIAAAARGF2RMuStICkgvbBwPRIsONmgwZaE6jNmsaHEuMPEJMf5EK0QkBKKhtxoggclTmcYgKD/qVGDZeknGjqLSzJBCjDK8y7ahPZNquTj6EvVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ29xtvt5K2jAdWSq9pJyhf5QUwADTDocMjD8wKEjkk+M3gQzgFQMNkaEHFysOWzAK8Iy7C7YrUemA33lUeeqKQ/FGGzasjQbU5GbcrdRknI/LIHa2rmkqXZq7Ty+kzvHkFLYed25Yj9urczjcJrbiEfqTMm98Y9anKWrOuRB7aRgW6kI9WGxppGaOFyYCiJRAVRrJNAOdk2KtbA4TA2JEAFoxMDBIySg28GEKIXJnb0RS9DiCBOIkJxmGyEFIA8zFN0NksfWgn249tE2rNO0Kqm7N9etuSDNgtOpKXsbuWZGoUUCctEu1/siaTySJxIbiLJWgqqg0AAgEwUChh6EphAEhw63hmoCRjmDZg8AgCBMvuCAAWDZgx1sKSKmENRpTyXLow5i8zDHGkjd3GVVGAICAhSrWBpmwKKtWV4iYsIpavBI6Ozs3KV/wW4zDlhNjIBGL4tr2K8X6ytMRbVArSdv3SkTydTZzoSypdyVK0mVwq1aizkCfC0g7IL9CDlfKJ6a6KZ3rcqi+OcJkRZznycSQdOJGDfMg/Fa0F9MVQlCsnEmk7RVl8OlRplgMlN//qybG+l14D3GGjDa5lMeAAADSAAAAEjNd8Frrx9aAAANIAAAAQiUkcRkr6ijl7c3BMulHEQbkyMCSP9KoNPOabMZDEiqG+V43K5EH7a6xIwpyVXwlcwsi2vRGORzgQ4TUyQHLzVhyXql6+aZZ6WluQ+miJMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqhRGZweGjf/WNtwqScfShedQ9yE7gKBCAPihgGRKZM4pgsJmFCoYBEJaQICgGDaJLradd2mmIQ5Ns1Nl0WxszLFpE9EGQ4zpZkJtSR+HJeCihqHo86ELlc23G65TBZDDT/ZIgmErOLMJ1ReHpM7UblFHSNaqOg7FqavSqXVcIzFaV8s5fL8IOKCJ4echKWCdMI8nPLEY02w1IxqcFYm0LjhqZta1C2brTgwcfVtvMvKyVbWYYy6ujjH2OdXqlFolZwhIcDbKOu3Sw2X+YrNTna04PLQncBscRuOWyZUrXW3xAVMfduZ8aAWdblbiSJYAnhxAseBEXS76CFMYDAQGA8AOYG4KhguBUmDWIIaQUIRj6hYGGgDmYHoFwIABLtCwCLxPbHEkHiSxgdm6ejnsyir8MmTgWsosylXqeKHcOELNX60pAgPF0Jo6KS7VhQ4sqL9KJNPZg7qdFOxtGtji0xECOx9VpguEQ63J+IPeJqLoylcbRo5D7L2wF9VwNBYrgsR4HNZQgCQ6KvGixCWMOVhLQW3aC88SoopAsvbdyoxAMzEG1jlLLGHUksg53njcxzZK02+9K56r+wa+tRl7d3qjbwuLAVLuXO85F5nrgJlPyyyxYjcvf9y3CfpY//qybB2o7gD3NWZD+5pkeAAADSAAAAEoXeb1T2mXyAAANIAAAASRGQzNh+IrNRMikUyXjcbpCSS210RdM4HA9Mi7ABwSR9VNEtYaRkgcCUV1wnFckLG9HyOqGweJ4WX1pYjWniWThl0/PIbHUZEcPTodeypMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqoJJsJuSVtEgMMb5jKAV9GxR+GW4KTEgJCBLBwoHOo5A59AUP4YDCFaY66Ibga0/sGXopqNw1Acb049mAnXm6Wjdlj8Jq7j9KvdyUwG0kC/3mT1jMOQK+MzKIMon1ds54584TK5Q/aj1+HJlj0WqSGSzcvis0+MQlucNTWcxOx5w4cjRELLonl04PoUhuoJaJOccXjNtpswKxVJjgcvKqWS1dLgljrJVPyyuUH5beTl06huj49VKDyNE8thoww8RV578KY3WajhVWWrZOF0n3LodZO4lvP9fL9nzduUUH61t561OvAWuzUUCQOOR8mCASks4v/3/1kbaVOwDAdifgFvbD1BcFmECUIQqaIqJicDmFgsWnRMRESDh3B+KN43bdxnUBy2NzEFNcjeHXMm3bkzzwDcijC5qFOXB75St9aF+pdGoefCHG4w3184ZEmA6s0yTcBQzEW0ktR+nYqvpZMS8S2SSfQrFSItkiKrA8hMWKQl5U6wZrCVx42epjur//qybIZGvwD3eWzA67pkegAADSAAAAEbkaERrjDe4AAANIAAAATmYxL4g2WEBWns6+ZHD52pM0JYsSl8cTErPxsr2ztLY5TMn/FB5akXUbo0llKzp2UsxMLRpkZY6zqwFAwKF6gXEy6BZ9JIxpIDJd9vf21MQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAUUlIkiQBCBDKXeEIBC6GkrlZUjiYAwBpgDgOGAkCqYEogRkxQLGIOFgYGAHoFAISXZeng2dSzbVIpPM2fPOihullcNxGCXgTEZaw1VQmNrcbgsMt1BGvhyXbR8YCXvdJP9oUohbaWn0kr0rqTaOuhc55Is5EahLKnideOuO3kSlbvv229M+0rjEep4rc47kA0FBCRoqFKI5E9SgVLIkVSGiReZcvTLRsYDm8T0I9E3BJKhFcWnWH4/HQ9RHlKXKihl3HltHIoTiH3Fay03O2IWmCtpfbgRN+2+WD20OtFjI4yf5khuIJknPS2d9Fj6YnOVcjccVvWhTrFy/nSk0hSbtHb5swwlhiYZbszEp2PTVJhNtd/a2kziTyIcBeVidgt3lzAoCmMQoBgScjT4c2RoxFAMUvWmlVKYPryR33cgqMSiPxyki0p5N22lz8DPRL480VsE4zV3FoQU0uHnhdeGHhh9g8BOu/FqAomnaYsKTIULGPKpzFWlStqtziHdY7WfD5gnPisjQrGYyUMV6OJUSvOlFcVCgZBInBhQqdUMpu//qybJbx0QD4gHo909pkcAAADSAAAAEb8aENrj08YAAANIAAAAQfbREBtSQ8GRKS2IUlCMoRYSCKS6ALESoQMUlduaGnKCGUUbJEWohk08mehVGGosZEZnmWsKnahYiyeOZtGy4plFVn60/oHt5WqrquWSVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVJHh7dvva2k06kUTfiA4BjUnpdA0CmEBECQabQkJkcBmWhcYnB5gwDLCOW8sfvyepGLUNXKHB/asPOREYGiU3GE/onK2nvzDEUlkViEzFIehVeWUjyXn+hukeZ+kljAxDfhdpc6eguzwYCJeH2lCwwo8CRrUZ1MSnWIbCh0igRAL4n3OiWWYEbC3XrNLo3fXRoeokhqyLLZxmVrPIS7F7T5afQ3Wki+bIzCBxvF8B9yS608ff1uV02jYbgnqVcgX0pntbV/Lvu5BkdaX1PWq3hKESV2hzvGAEukAAACmzswBgEzANAGAQDiHctKYB4AxgBAHmAAAmYCIIQ6EeYBpBhhHfgGDSLgYA4jBUIw0SNiIBAw2jLDTKswUGPhDKlF14sEFocT5lqmgCGkGQEDDI0VQAKhjuypkClLE164PK3J5nBbjCXUS3fctknpDT/rqGQc4d0CAdhUJGEPWDfSZkEvAtB0CxF4YCUIpzMpcHUcygVTQdB+MhRGUOURw3VW+XCIjuZnFhRbWZajwfbsm6NOQdJxpZXIlCznL/LMciPiHClyEJMvB0xWc6WYuC5HwyLsfokqgbWY4zjcEy7cy3Vbl5RqFbVZ1mUfiFP2I4GErn8y//qybMrY6YD2uWZD649nGAAADSAAAAEpNejsz23tyAAANIAAAATLSwn+SslSaT6ajrkvzKlTyWWBgOlsbl4xFASt0hhekUzRT+M8et0q1ySptOA9Ha7Y1QeMJ8kimbVy2F2IOzq9UF5YXaCMkhC5LiwQKCVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAIKb+lQKAKKBM8QsnXcfpOd5kVjAYATMC8DwwUAhzPNSFMZYFUwOwBgwAlixc1MZvXmjjXF0uIyqGYxJ43BnJO71Diz2XOmkpC1oy9lG2p4z2LbNKUD922tx7rotJh6JwuHl0GDYAavVWJFGwVynl2zyv7tSPOtHM54s07+E2MSLiuSJakafwFkwaEIscRBQVPRroChFz4qESjg2LkyIoTmCIuPjBsleeC3hra4pFR0mYUC5gHiohiYEaiqxVNtswIiNgVE9q4GcRi7pPZLWfH+mqoHlJaoG2UsD5RGkaF0pvxN1CC4dAcJUYfbxLGSSRVggUaJCTTjBsnYRrTqZGwJMbmEut+1jaTbwm8gvDWnrh5sLigoJmLgQYHApzZtgpzgLQJD06EJC02RMecVVWYlc3PS6OYRWhkzsxSlTvg9jqbrO0837fiKNmn4xCJRLoDh9+HGlsesQuHHAgV/XgOeNb8GoSA4KjESCYPJ+TRxO2VRgWTlWdmB8iN2i81VoG4XDydDdaJRgJa86OWMWFkyJTqGKj4yEA7YOkJDgM//qybIyJz4D4DHm+S89PEgAADSAAAAEdXaULrmmN4AAANIAAAAThJQlrS2IJ2+PR4XywsH4vGumzK5K2vdPj19apPlq1lfBe7tXH1CA2oQlvVT7ZGrfhdRwL8Z+5lLvLl0VV6511aztdSQbSiKR6NVpFsgpMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqoE6cbaJBlWgKdXqoEfXdeFf6jAWFEYHQ6ECYGAuBlw2fGIoIAaOiYAsBR5gwJEBDBbcF4tkKgFUaq7x+oU3tZeqDr6KqRtExKlvhAhURbhbLyltnwR5f9Q0QnC/6XRgQyi6JDG15rekztN42Fr4CCn49ORAqUaE2KMMUOlSpn/T6ViSJaAy6GG8LNOCmC4aSsJS8QbRLcp52KoGqvIoa51iQQ15FSmgJR9msSWXBsadNsjlwpz5SXfijDYbkEQdi++1mGY/Bb/NTeSXwFi7TdG7Z8fJv4KfFhkMwmB4BoYckrOYDkzc4XBEDuDLn6afKWISyMRiWymQu3nC9xyVU0ofWAOUNLR00pht2IYjMbppmdyid6hgSj3OdxlsOQNTTcPVH+l8fn8JyJNh1DVJB8Ik8qrwTzUNsqyuxCL0FJGKNy43tyPUfXX/2yNqpR7U7NQH2ZSqLJBQCmAREDAyavvJjwFnPdGKGrqfV7oQwK1KKjldkz+Ri/ujgK/clT9T7JFsvRhAFnOneJoTPXcYpF4zG4cbk26hDrQ3BkadtQwEx36Ox3JbjgGLi8kLRxUKQbLiamBqoEEewEoko0U9SH4OiBoKHzZ8Jcl8sjU4oElYZOJgXRkGOIbk49HRqxSTjwJ//qybAMs8ID6Gnq8Oz7SEAAADSAAAAEdXaMNrmmN4AAANIAAAARE8ho6oyMXTMXBuNBeVk3/TEVUHL8OMPqU8QkcfrFFRIjKYlGFXmyYpPHoE0L6ZCtK+1lKzR6O4HYGbp9PX4DlDo3VqOWaE6Hp3pUpF9VMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUMrcaRJCg5EoC4Q0pAtwgqMBXZT3AwE0YoJmgoYs4EAVxpsc5oGBTWYwBEIUhmAgJBuWUr0KfL2uG1pZMOIzt+l+y5oYOGWYrDq6gUIG1aUCBeUwAIQaXKglTdMCAFJoqLBKEF5IGUxdhJxHyJJSI7iIXNniFB0Oa7FiIUrJssEY01Z3mhtEr9ZkrUzd8WnN42i+UfW5L6dhmjkl3UgBIhstozd/ZS+b20sakTWGSsUh5/J1055yn/uQG7qXtdv5tmrt3YfjSwTqOo4bqQa3JsUciyw7724i/zruq+zsLRaY+LzzMCRtsL0wC1yNJ9Jnu5IF7Slxoo4jlR+LUkPxp9HxjMPQiGWvOzADtQbD0MQihaxLL8rgPVyUv7etx6Vy10n+i78zdppzYYC5Lof+ekDwwy1uljUw3eHou/speSMX3EbHfpcn0v0sZput3XDff//aRuAYH92YRKn8a3DkpHAQwcTEQMbT4AI0MZFSzBeNItji752Nz8LjFiBZRqUySGoLisB00QjUvh6LzUrgOLUke+rfkssoJBEcJZAcudt/IHhLgGWBPCyFBWYJHl8rNpw9KRg5VfQRkZ8bqUR5cSicjK4FiXY4eaTlZC//qybMMX5gD6X3q7u17agAAADSAAAAEZuZsTrbE8oAAANIAAAAQwXqK9cwqm5tWd4YMgMYLEqTAkQkAsUUCKCB+hm5ojJ56EaaYRIZzOykKvJNVC44j/JehM7BO9xpy9Tqer3rbTNrvQ0lGG4rWJiAD6/0JMQU1FMy45OS41qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqgAhVvqlEJgGAOTuMAgBBSwvih2bVAEYBoBRKCaYFIURgaCsmVrUmYmQdJx7gAOmADOijWrDA7PZU0JZret60l5mupjKCSCGnsbdPhFBcKDgkGa/PwEms/MblKQrbJcMNaU4jfpysOZdO9li5mny4P/J9g/C3w1UK8dJ3JRFjrKZNqUYKwLALinHFDFcZKnH8GkSUvK+T5HAe0NIsuEjMvHCEiLmgDoMQWsmBfTbRKiM44kcSUs1InFpEoI7VapFK1mieUJE3hGWtrR2m4byXLsS5F6Wm461NY6USS0/0/BNM+E4uVyOR8u4SNcXaHNkr1wULEi5VekakGYFCrJNoaTWEyI19ElPlHHc3OTl3ioTMBkR7YfK2pY0BLoYh0JrXChQlYRBzuR1MLIrlQ2KZgU6jgJ8324kqnZsL9vv9W255s1VYdImetNaS3LUgYGMgFQMBH6UAdZBz6NCSahbhTuLUtDJqsMymXxKQ0DkLUiDiOs5M7bnmwRKllt+8+DXa0DupONaaXDUFt7RwDLLjqPsv5yTShploRwwi2qQ7IqmVG24YIxlhXsCFMScUbXK6UOXppnrRxSZECM4BwjIw8W0+KyIrghtpAQkpEJyEhD6gqA6//qybGYU6YD5vXk8S9p7cgAADSAAAAEdIaMNrb08YAAANIAAAAQoE1YhQZGoFhCjJDJtxVsnJBKuRisBEyAY4lXIyRRo6TitwNMES4pJ8GUQ2dfo2WZlUEJVty/Q9CdD0SIiLI4vaOEyNOS8UnHzVbZDv01MQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTJbRfvt/a23FIm7Y8BYs0J2EH27JHmBAEYVD5ggOHS8wZ6Bx3UZlhRhQphxoOGMrFAC1I48UiVTgy+0Jlqk2SM0iDDVoJI2+rlY47rBYYhmcYa5nGgPE/caddrS6rMMqMS2HGywQlMZ+qwI0yHHKXtieOUrwzRI4JqG6zpBJqwuBbk+MN+ZJ3HSPBLMjkBKr5r0XFkcXoyFI2KAuJY2FvVqRLZlSplhjqww2M+3BhQiK4sbSr1WiDycVetm2rT9yZKXU49lGpla+VacbGMwHWzDcEKc2hXlxyb62rUepXPChewbIqeiHvmY/1ykr8sJfoEzdFcHN4wqdhc+f6WTzEwqm29br97+d/Pvq2t7gEgFYmvEGKOXDbbb/VtKXxZ8FHojB1+lZ8y4LA8ZFxUDIWs5UBIwIhUDoyKsb91ZFALWnKp4IkE92WUFHGPgCtMR6HM2WXr9Bedqhqxq02PUrpYalsWh6efqJvTA7dQCLJBDqtzwuHALzOvVfmclTcJx3sHoJh1WxGIlEUgGDwiG4FzeI8i/9ODl//qwbFIFy4D4n3LB65p7egAADSAAAAEaAaUPrjDeoAAANIAAAATcSOOLi3NomXjhm0OFlUjjhTtIjVS7A6ucZOlrxWVEmk7KkSfAzE6EJwDippiOubCieeYzrJ1iqZOMjUXpHRfS+6xs1CGMXVujyllq1ExBTUUzLjk5LjWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqhQ1WAVma/+1tOGHcTnKoBb2ywlCUq0LAEw6OjNiFMEhw5tnDO4MMpBcMFSzXoYjPoSXpZnQNPduXuawVd68nJZTTx+WrwlzWhAA1AIi4TwKLs7ZqxNwWWrUZW7zCWptZXbJZYpq1tDRFUYABlwlrmH4Xl4lSxqwuJcgYKKT7Er0QdKQSaJPtXnC2ptDz5DnH0jR6IIqkiW05kUsq186dIawTFwZD6bHGqqQTe0EpNFXHrEUko+z1RkhnPmJ6p1cWI/FTVMmM9q1YWihOn0+IS66s+KRWcWCaVFaUlpm0dWVDKocganRnEcJnDQuOLrwUWn7jhyJyxOfCU2fOHxmiSXKrnmQM9IH4+jcJz+KdOEk6HJZbm0ic3baTCZM96skfoGhCwQMbhcwgCDzb6NPAABGsIDCC6aa6HfqQFBM5A7guhfkcUh58fedyIClc0/yaMolLc5NI3sfZmD3yN+K7wtqsM/q32Eyvu4Za5QmZwM1c0ZCh5GB4a1ysfzAdx/NSU7RDVFMtidETjkqlAelqMako5WBoOJgLCajfSgaYeDIxQS6ckQcRLJZ4txaJxUHA4NoRGT/+rJs7hvaAPhzaUH7j2c6AAANIAAAAR51vQWuMF1oAAA0gAAABKWSOT6iUO1gaagE4mwnvXIhahXIKmC0B+Tj/hwgKKphWxQf7RsVjif06PekwuewsOo3bVWH7zR+v1y6t11eSGaZAZSXscbXALTZFiRF+0xBTUUzLjk5LjWqqqqqqqqqAY1KoCAAkiAuFQBF6sMbd3lBKQKgICMC0wCghjBVHXNDrj8xoRUTUogyU/MeLAEIIAxCALXex716uqqZ9aVZUaZND8Rdv4k0NeLdRGPx1W+Alo0K8HPUoXU4DnKxEAEPAiVqdS5kzUBCYqmZCAPM+5zQgYUCliN1+fp/uifhWEZD/L+LaX16FqXSNEaL+LCtiTmkXIv5ED+IQnD5XQpBoFarQ4SFFQeS5MkWwhQQdBkbXZaLk7ROjuEisXY7heAa5qK5kSgt45zeOAnw1ijLYAxHSaR/E7LmQska5PliP1ShWlxXSGtKRJMXhlfIU2KEug+1Gc6iX8EcZCiIKUkywb5eVWo2wwxSlQcB4Dxb0mjXx1jfglenjoHpem4fouhfj1EWJ8loxfkLXJroYnS5G6XgmxQGSima472BJjpTZ1Ehhn/EaGs2ijFeGHO/NJW3Lm2H2129jbUGRSVRFg9gtSjshQDACYJBRhQbhUNGoMAY3BRwmJlSScq/lMWVSl/3MVVfintsqem9cbZ9ZdGb8UjHWqsSkbqQTFqF+4U8UedlwaV53gfq61+63sCOxMtKNmle8zISs8IZePUEcwIFwqHhm62Tz1ZA8uQGUsbBVPnCiYxKvCWEG6Ef3XqViGsMWiocmLjJ+JxbOiwJWVH/+rJs8SX3APqAerqz23twAAANIAAAAR1towuuaY3gAAA0gAAABNTxEZGSdCMlBdHgiJG6HRObZKx/csqD27SwxCUXoZSQ3GF0Sg/VH5YWHt0OKXflb6l+z8L5S5vrsL7OS1FLLC9a2ts4PShiMaifFrZ91UxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUEpoONuSJEAI3vCtRER3nmQUW2ggAIBBwOkwpBA8nkY0jVKgY+wwYDBEAzBUCRQBEMS60Wh2kZxMQDEFbKzI1aIYnZYutK964OQcc1vvWLPsvcV+HKUFgW0t9mb1KDKFs0YC1Fz4QsIh3AAhTSfT5Bj1iHaW1eEVPRqin2P6hznSfRpO0MRB/KElBfDpQ0F65kmBzkjjtiQNgn5dD1cDyRpbi+FmXw4TsgmO0KFijs9WFRIfAPZcthYUaXFLj1ItxhHir0ikX68eSoOQxCfJ05UEfxxJ6KqX5+qGdfgyroy4kdXFZM2qdjfx0N6kc9sSylLLhsZS+t7HZYVixXcRjXMVAMC1Mw2eTMISg5qUIpAjlKMEaHmlIRraWYsakdKjjw22v/kjTgWHpUzutdgKOX8UBZgoNBcFmgoSAiWYkCgCA5cRWxra9HxoHalETyp45K5TQ4xrCQ001nC3SjrawA9Sx30flulK8rZmvO98XgqXRaQL7kbTYfUaMKB3p85EgSwm2zb9Uqjm6sv+wugWLanBwd6hJ1q104O0AkrCWZtIj/+rJstVrQgPjzej7rrzdYAAANIAAAARoJow+uMNzgAAA0gAAABFuWRiUdAsdmXvrY0yl8un75+Vyo6fkk+We+fP4VSWKKUSgu8Mqiao0mYXA+DtBmPLLFtB5LFlRDEijgtq+G9PsYCqNCBOJgMtepFXT8ukxBTUUzLjk5LjWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqEGOty1tpEdAAU8xFhlPSSppUOqAgkAgQAZgEHow1kMDBVBOMczHRilbM3UeeAoHf6W1HSfltrMItvPbiUvrxxwIyyhyG6SKXudBTQn0hh9XfR3bkni/NLKlD2BwtyJE1hrZzUCsbYUq0xNSrCqXgaHVXh6JBbJZiOAfDuZFVZgipCWmZNTAinPD6SDJEDikNzMKSNhaHsgtImIK1Mlg/orqnTU4PyQY3ZhOCTUlrT1aV1w/4dxFqBOVIjklRIi8JA66Y8462rEw9oiL+wqEKkba46T5A87VESjVbvwJWinWkSw9Vcw0rtBE9eLM1nGfqunrws9n07KWpdqkL492a8bb//2yNsPhbITAQJrsDRvaeyIxhgKZyNGAAJ9tuEVppYAPErE2QqKRdpXqhf9t3FdKA3ap1haddDW2IxmXOAteTsdYW7EDNSb6AmevDF4acGy77sq7eKkd9yLlB1pxNErUVOrl7P8+nxzqJDyaLBhWLmf8BWx0Zg6J1QhDOhp+1L6Sttoh5yOlsvKdVXMKOqC2kuW10hlUap2M3zmZFuGoEa/wp2lf/+rJsmNLTAPfqeb9T2mNyAAANIAAAAR7FowutvZzgAAA0gAAABASsdzZWOg0ebh2EqcTmOzpkSeSHw6NoQ4ljUFedry0ekkXjyICcuHqdcm/JOY3Wz27rqJltu6LCktYUe73EJ3WDtItdEhxFSNb07COpVUxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVSREVghlff/VxuBX+jCAt+IlVpHShtuIEHl4HmaJpoqZGMGHjZZRoEPx1rdaklUKZpBzj535ZIILo3rpH6e5+pqDoy0RrzhT/IVPRpdT90HIJnpiklliXP7GU7AMns+XeqemcqkemBKjbzLNYGay1IoGqGkSwlRWPRXKD6JUgksI5O2aJCslLRwWTkT1ZHdafNUCBEdpowfIvmLh9aImCHGhjzGTjoSWQZGB8meU3oveNEIg/xUFqovllphevk6JxrRYZjT4qqGkzLDgYBgcS1xumknyzbSMIvFohgtOXq0UsXumZJrxttd9bG5qGmVNejT/SOXLCqUgkYMQPTB1A5GgN5LjGR0EgCPJpJ1XEpXCqTzMrtq2FItTP1TuEX5JqwoUYbJ9PzBLCoS/N5/ExJaaLEWsMiUZlgfia0vREEwHMWD8aolUSGavmoNo4jIOSzAfcqJoSlw7iWiEjHI2SoiUJSo5ElANgFHaEXS4dqI0JSu+uPX/+rJsQce6gPcaZ8N7bDe4AAANIAAAARvpowmtvY9gAAA0gAAABEvHZswfg1PaXWlUyEpHAhnq1IfLYD6y662YBJU8uZgXuylcXFYtHJ64ZLXZgPrW6yZU6Sl6JdNrbzNSSsKZ4iPs+B5M+esxTxGun7CxVUxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEAwAEAqqNia2BXsibLiPoqT/RjS0OaodnSN4T4c5YDWRqiTp/JFfYIciaSZYQg6CgrJDbmuhITiNzTKIqcOL1dKrEIiGhtAuxCmKpCIRXWP01pDQkJfTbLSsQSAkX02zMEJUPFTvxGQgkIcz9SubieZYjOk7jzq4xHIUikeDtYv/+rJsyyBAD/ZqcbLR6WUyAAANIAAAAQAAAaQAAAAgAAA0gAAABNy8CUupF7kffNTlCXolR6ZFUpJF8X97pkVSqUk7DcCUrEEpnC9y9P6dyZmZ21q2rap0SQ6FRDJB+ePuXgTN9/fW27m5WzLSHCwGVVViVUxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=";function zu(){const[q,e,t,A,r,n,o]=$A(Fq(E=>[E.muted,E.showNotifications,E.serviceWorkerPath,E.webPushVapidPublicKey,E.webPushNotifications,E.setShowNotifications,E.setWebPushNotifications])),a=he(E=>E.enableUserStatuses),[s,i]=vr(Fq(E=>[E.userStatus,E.isNotifications])),l=a&&(s===Ue.BUSY||s===Ue.AWAY),V=q||l,{users:u,dialogs:g,fetchDialogs:d}=Jq(),f=Xo(hC),p=async E=>g.find(({_id:v})=>v===E)??(await d({_id:E}))?.[0],h=async(E="",v="",S="/logo.png")=>{if(Notification.permission==="granted"){const k=t?await Nu(t):null;return k?k.showNotification(E,{body:v,icon:S}):new Notification(E,{body:v,icon:S})}else console.warn("Notifications are disabled")},m=async(E="",v="",S="/logo.png")=>{if(!V&&(f.play(),e&&i))return h(E,v,S)},M=async(E,{body:v,dialog_id:S})=>{if(typeof S=="string"&&typeof v=="string"){const k=await p(S),I=u[E],L=I?.full_name||I?.login||"Unknown",R=k?.type===3,P=R?k?.name||L:`${L} in ${k?.name}`,Y=R&&I?.avatar||k?.photo||void 0;return m(P,v,Y)}};return w.useEffect(()=>{const E=t&&A&&r;!V&&(e||E)&&rC().then(v=>{v&&E?nC(t).then(o):(n(!1),o(!1))})},[V,e,t,A,r,n,o]),{showNotification:h,notifyWithSound:m,notifyOnMessage:M,playAudio:f.play}}function mC(){const[q,e]=w.useState(document.hasFocus());return w.useEffect(()=>{const t=()=>e(!0),A=()=>e(!1);return window.addEventListener("focus",t),window.addEventListener("blur",A),()=>{window.removeEventListener("focus",t),window.removeEventListener("blur",A)}},[]),{isFocused:q,isBlurred:!q}}function wC(q,e){let t=null;const A=function(...r){t!==null&&clearTimeout(t),t=setTimeout(()=>{q.apply(this,r)},e)};return A.cancel=()=>{t!==null&&clearTimeout(t)},A}const yC=(q={})=>{const{width:e=640,timeout:t=200}=q,[A,r]=w.useState(window.innerWidth>=640);return w.useEffect(()=>{const n=wC(()=>{r(o=>{const a=window.innerWidth>=e;return a!==o?a:o})},t);return window.addEventListener("resize",n),n(),()=>{window.removeEventListener("resize",n),n.cancel()}},[A,e,t]),{isWideScreen:A,isNarrowScreen:!A}};function Ku(q,e=!1){const{t}=Oq(),{users:A,typingStatus:r,getDialogOpponentId:n}=Jq();return w.useMemo(()=>{if(q){const a=r[q._id]??[];if(q.type===G.DialogType.PRIVATE)return n(q)===a[0]?`${t("typing")}...`:void 0;if(a.length>0){const i=a.map(V=>Ye(A[V])).join(),l=a.length>1?t("areTyping"):t("isTyping");return e?`${l}: ${i}`:`${i} ${l}`}}},[q,r,A,t])}const Pu=(q=!1)=>{tE(),AE(),EM(),eC(),tC(),Du(),AC(),Ou(),q&&(VE(),cE(),PM(),_M(),qC())};function vC(q,e){const t=y.createContext(e),A=n=>{const{children:o,...a}=n,s=y.useMemo(()=>a,Object.values(a));return c.jsx(t.Provider,{value:s,children:o})};A.displayName=q+"Provider";function r(n){const o=y.useContext(t);if(o)return o;if(e!==void 0)return e;throw new Error(`\`${n}\` must be used within \`${q}\``)}return[A,r]}function gt(q,e=[]){let t=[];function A(n,o){const a=y.createContext(o),s=t.length;t=[...t,o];const i=V=>{const{scope:u,children:g,...d}=V,f=u?.[q]?.[s]||a,p=y.useMemo(()=>d,Object.values(d));return c.jsx(f.Provider,{value:p,children:g})};i.displayName=n+"Provider";function l(V,u){const g=u?.[q]?.[s]||a,d=y.useContext(g);if(d)return d;if(o!==void 0)return o;throw new Error(`\`${V}\` must be used within \`${n}\``)}return[i,l]}const r=()=>{const n=t.map(o=>y.createContext(o));return function(a){const s=a?.[q]||n;return y.useMemo(()=>({[`__scope${q}`]:{...a,[q]:s}}),[a,s])}};return r.scopeName=q,[A,EC(r,...e)]}function EC(...q){const e=q[0];if(q.length===1)return e;const t=()=>{const A=q.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(n){const o=A.reduce((a,{useScope:s,scopeName:i})=>{const V=s(n)[`__scope${i}`];return{...a,...V}},{});return y.useMemo(()=>({[`__scope${e.scopeName}`]:o}),[o])}};return t.scopeName=e.scopeName,t}function Ju(q,e){if(typeof q=="function")return q(e);q!=null&&(q.current=e)}function _o(...q){return e=>{let t=!1;const A=q.map(r=>{const n=Ju(r,e);return!t&&typeof n=="function"&&(t=!0),n});if(t)return()=>{for(let r=0;r<A.length;r++){const n=A[r];typeof n=="function"?n():Ju(q[r],null)}}}}function ae(...q){return y.useCallback(_o(...q),q)}function wq(q,e,{checkForDefaultPrevented:t=!0}={}){return function(r){if(q?.(r),t===!1||!r.defaultPrevented)return e?.(r)}}var xt=globalThis?.document?y.useLayoutEffect:()=>{},MC=y[" useId ".trim().toString()]||(()=>{}),CC=0;function Kt(q){const[e,t]=y.useState(MC());return xt(()=>{t(A=>A??String(CC++))},[q]),q||(e?`radix-${e}`:"")}var xC=y[" useInsertionEffect ".trim().toString()]||xt;function kA({prop:q,defaultProp:e,onChange:t=()=>{},caller:A}){const[r,n,o]=SC({defaultProp:e,onChange:t}),a=q!==void 0,s=a?q:r;{const l=y.useRef(q!==void 0);y.useEffect(()=>{const V=l.current;V!==a&&console.warn(`${A} is changing from ${V?"controlled":"uncontrolled"} to ${a?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),l.current=a},[a,A])}const i=y.useCallback(l=>{if(a){const V=bC(l)?l(q):l;V!==q&&o.current?.(V)}else n(l)},[a,q,n,o]);return[s,i]}function SC({defaultProp:q,onChange:e}){const[t,A]=y.useState(q),r=y.useRef(t),n=y.useRef(e);return xC(()=>{n.current=e},[e]),y.useEffect(()=>{r.current!==t&&(n.current?.(t),r.current=t)},[t,r]),[t,A,n]}function bC(q){return typeof q=="function"}function Er(q){const e=kC(q),t=y.forwardRef((A,r)=>{const{children:n,...o}=A,a=y.Children.toArray(n),s=a.find(IC);if(s){const i=s.props.children,l=a.map(V=>V===s?y.Children.count(i)>1?y.Children.only(null):y.isValidElement(i)?i.props.children:null:V);return c.jsx(e,{...o,ref:r,children:y.isValidElement(i)?y.cloneElement(i,void 0,l):null})}return c.jsx(e,{...o,ref:r,children:n})});return t.displayName=`${q}.Slot`,t}var Zu=Er("Slot");function kC(q){const e=y.forwardRef((t,A)=>{const{children:r,...n}=t;if(y.isValidElement(r)){const o=TC(r),a=BC(n,r.props);return r.type!==y.Fragment&&(a.ref=A?_o(A,o):o),y.cloneElement(r,a)}return y.Children.count(r)>1?y.Children.only(null):null});return e.displayName=`${q}.SlotClone`,e}var Wu=Symbol("radix.slottable");function Hu(q){const e=({children:t})=>c.jsx(c.Fragment,{children:t});return e.displayName=`${q}.Slottable`,e.__radixId=Wu,e}function IC(q){return y.isValidElement(q)&&typeof q.type=="function"&&"__radixId"in q.type&&q.type.__radixId===Wu}function BC(q,e){const t={...e};for(const A in e){const r=q[A],n=e[A];/^on[A-Z]/.test(A)?r&&n?t[A]=(...a)=>{const s=n(...a);return r(...a),s}:r&&(t[A]=r):A==="style"?t[A]={...r,...n}:A==="className"&&(t[A]=[r,n].filter(Boolean).join(" "))}return{...q,...t}}function TC(q){let e=Object.getOwnPropertyDescriptor(q.props,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?q.ref:(e=Object.getOwnPropertyDescriptor(q,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?q.props.ref:q.props.ref||q.ref)}var DC=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Gq=DC.reduce((q,e)=>{const t=Er(`Primitive.${e}`),A=y.forwardRef((r,n)=>{const{asChild:o,...a}=r,s=o?t:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),c.jsx(s,{...a,ref:n})});return A.displayName=`Primitive.${e}`,{...q,[e]:A}},{});function Xu(q,e){q&&cc.flushSync(()=>q.dispatchEvent(e))}function St(q){const e=y.useRef(q);return y.useEffect(()=>{e.current=q}),y.useMemo(()=>(...t)=>e.current?.(...t),[])}function NC(q,e=globalThis?.document){const t=St(q);y.useEffect(()=>{const A=r=>{r.key==="Escape"&&t(r)};return e.addEventListener("keydown",A,{capture:!0}),()=>e.removeEventListener("keydown",A,{capture:!0})},[t,e])}var UC="DismissableLayer",Di="dismissableLayer.update",RC="dismissableLayer.pointerDownOutside",QC="dismissableLayer.focusOutside",_u,$u=y.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),$o=y.forwardRef((q,e)=>{const{disableOutsidePointerEvents:t=!1,onEscapeKeyDown:A,onPointerDownOutside:r,onFocusOutside:n,onInteractOutside:o,onDismiss:a,...s}=q,i=y.useContext($u),[l,V]=y.useState(null),u=l?.ownerDocument??globalThis?.document,[,g]=y.useState({}),d=ae(e,k=>V(k)),f=Array.from(i.layers),[p]=[...i.layersWithOutsidePointerEventsDisabled].slice(-1),h=f.indexOf(p),m=l?f.indexOf(l):-1,M=i.layersWithOutsidePointerEventsDisabled.size>0,E=m>=h,v=GC(k=>{const I=k.target,L=[...i.branches].some(R=>R.contains(I));!E||L||(r?.(k),o?.(k),k.defaultPrevented||a?.())},u),S=FC(k=>{const I=k.target;[...i.branches].some(R=>R.contains(I))||(n?.(k),o?.(k),k.defaultPrevented||a?.())},u);return NC(k=>{m===i.layers.size-1&&(A?.(k),!k.defaultPrevented&&a&&(k.preventDefault(),a()))},u),y.useEffect(()=>{if(l)return t&&(i.layersWithOutsidePointerEventsDisabled.size===0&&(_u=u.body.style.pointerEvents,u.body.style.pointerEvents="none"),i.layersWithOutsidePointerEventsDisabled.add(l)),i.layers.add(l),qd(),()=>{t&&i.layersWithOutsidePointerEventsDisabled.size===1&&(u.body.style.pointerEvents=_u)}},[l,u,t,i]),y.useEffect(()=>()=>{l&&(i.layers.delete(l),i.layersWithOutsidePointerEventsDisabled.delete(l),qd())},[l,i]),y.useEffect(()=>{const k=()=>g({});return document.addEventListener(Di,k),()=>document.removeEventListener(Di,k)},[]),c.jsx(Gq.div,{...s,ref:d,style:{pointerEvents:M?E?"auto":"none":void 0,...q.style},onFocusCapture:wq(q.onFocusCapture,S.onFocusCapture),onBlurCapture:wq(q.onBlurCapture,S.onBlurCapture),onPointerDownCapture:wq(q.onPointerDownCapture,v.onPointerDownCapture)})});$o.displayName=UC;var OC="DismissableLayerBranch",jC=y.forwardRef((q,e)=>{const t=y.useContext($u),A=y.useRef(null),r=ae(e,A);return y.useEffect(()=>{const n=A.current;if(n)return t.branches.add(n),()=>{t.branches.delete(n)}},[t.branches]),c.jsx(Gq.div,{...q,ref:r})});jC.displayName=OC;function GC(q,e=globalThis?.document){const t=St(q),A=y.useRef(!1),r=y.useRef(()=>{});return y.useEffect(()=>{const n=a=>{if(a.target&&!A.current){let s=function(){ed(RC,t,i,{discrete:!0})};const i={originalEvent:a};a.pointerType==="touch"?(e.removeEventListener("click",r.current),r.current=s,e.addEventListener("click",r.current,{once:!0})):s()}else e.removeEventListener("click",r.current);A.current=!1},o=window.setTimeout(()=>{e.addEventListener("pointerdown",n)},0);return()=>{window.clearTimeout(o),e.removeEventListener("pointerdown",n),e.removeEventListener("click",r.current)}},[e,t]),{onPointerDownCapture:()=>A.current=!0}}function FC(q,e=globalThis?.document){const t=St(q),A=y.useRef(!1);return y.useEffect(()=>{const r=n=>{n.target&&!A.current&&ed(QC,t,{originalEvent:n},{discrete:!1})};return e.addEventListener("focusin",r),()=>e.removeEventListener("focusin",r)},[e,t]),{onFocusCapture:()=>A.current=!0,onBlurCapture:()=>A.current=!1}}function qd(){const q=new CustomEvent(Di);document.dispatchEvent(q)}function ed(q,e,t,{discrete:A}){const r=t.originalEvent.target,n=new CustomEvent(q,{bubbles:!1,cancelable:!0,detail:t});e&&r.addEventListener(q,e,{once:!0}),A?Xu(r,n):r.dispatchEvent(n)}var Ni="focusScope.autoFocusOnMount",Ui="focusScope.autoFocusOnUnmount",td={bubbles:!1,cancelable:!0},LC="FocusScope",Ri=y.forwardRef((q,e)=>{const{loop:t=!1,trapped:A=!1,onMountAutoFocus:r,onUnmountAutoFocus:n,...o}=q,[a,s]=y.useState(null),i=St(r),l=St(n),V=y.useRef(null),u=ae(e,f=>s(f)),g=y.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;y.useEffect(()=>{if(A){let f=function(M){if(g.paused||!a)return;const E=M.target;a.contains(E)?V.current=E:IA(V.current,{select:!0})},p=function(M){if(g.paused||!a)return;const E=M.relatedTarget;E!==null&&(a.contains(E)||IA(V.current,{select:!0}))},h=function(M){if(document.activeElement===document.body)for(const v of M)v.removedNodes.length>0&&IA(a)};document.addEventListener("focusin",f),document.addEventListener("focusout",p);const m=new MutationObserver(h);return a&&m.observe(a,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",f),document.removeEventListener("focusout",p),m.disconnect()}}},[A,a,g.paused]),y.useEffect(()=>{if(a){nd.add(g);const f=document.activeElement;if(!a.contains(f)){const h=new CustomEvent(Ni,td);a.addEventListener(Ni,i),a.dispatchEvent(h),h.defaultPrevented||(YC(ZC(Ad(a)),{select:!0}),document.activeElement===f&&IA(a))}return()=>{a.removeEventListener(Ni,i),setTimeout(()=>{const h=new CustomEvent(Ui,td);a.addEventListener(Ui,l),a.dispatchEvent(h),h.defaultPrevented||IA(f??document.body,{select:!0}),a.removeEventListener(Ui,l),nd.remove(g)},0)}}},[a,i,l,g]);const d=y.useCallback(f=>{if(!t&&!A||g.paused)return;const p=f.key==="Tab"&&!f.altKey&&!f.ctrlKey&&!f.metaKey,h=document.activeElement;if(p&&h){const m=f.currentTarget,[M,E]=zC(m);M&&E?!f.shiftKey&&h===E?(f.preventDefault(),t&&IA(M,{select:!0})):f.shiftKey&&h===M&&(f.preventDefault(),t&&IA(E,{select:!0})):h===m&&f.preventDefault()}},[t,A,g.paused]);return c.jsx(Gq.div,{tabIndex:-1,...o,ref:u,onKeyDown:d})});Ri.displayName=LC;function YC(q,{select:e=!1}={}){const t=document.activeElement;for(const A of q)if(IA(A,{select:e}),document.activeElement!==t)return}function zC(q){const e=Ad(q),t=rd(e,q),A=rd(e.reverse(),q);return[t,A]}function Ad(q){const e=[],t=document.createTreeWalker(q,NodeFilter.SHOW_ELEMENT,{acceptNode:A=>{const r=A.tagName==="INPUT"&&A.type==="hidden";return A.disabled||A.hidden||r?NodeFilter.FILTER_SKIP:A.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;t.nextNode();)e.push(t.currentNode);return e}function rd(q,e){for(const t of q)if(!KC(t,{upTo:e}))return t}function KC(q,{upTo:e}){if(getComputedStyle(q).visibility==="hidden")return!0;for(;q;){if(e!==void 0&&q===e)return!1;if(getComputedStyle(q).display==="none")return!0;q=q.parentElement}return!1}function PC(q){return q instanceof HTMLInputElement&&"select"in q}function IA(q,{select:e=!1}={}){if(q&&q.focus){const t=document.activeElement;q.focus({preventScroll:!0}),q!==t&&PC(q)&&e&&q.select()}}var nd=JC();function JC(){let q=[];return{add(e){const t=q[0];e!==t&&t?.pause(),q=od(q,e),q.unshift(e)},remove(e){q=od(q,e),q[0]?.resume()}}}function od(q,e){const t=[...q],A=t.indexOf(e);return A!==-1&&t.splice(A,1),t}function ZC(q){return q.filter(e=>e.tagName!=="A")}var WC="Portal",qa=y.forwardRef((q,e)=>{const{container:t,...A}=q,[r,n]=y.useState(!1);xt(()=>n(!0),[]);const o=t||r&&globalThis?.document?.body;return o?en.createPortal(c.jsx(Gq.div,{...A,ref:e}),o):null});qa.displayName=WC;function HC(q,e){return y.useReducer((t,A)=>e[t][A]??t,q)}var ft=q=>{const{present:e,children:t}=q,A=XC(e),r=typeof t=="function"?t({present:A.isPresent}):y.Children.only(t),n=ae(A.ref,_C(r));return typeof t=="function"||A.isPresent?y.cloneElement(r,{ref:n}):null};ft.displayName="Presence";function XC(q){const[e,t]=y.useState(),A=y.useRef(null),r=y.useRef(q),n=y.useRef("none"),o=q?"mounted":"unmounted",[a,s]=HC(o,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return y.useEffect(()=>{const i=ea(A.current);n.current=a==="mounted"?i:"none"},[a]),xt(()=>{const i=A.current,l=r.current;if(l!==q){const u=n.current,g=ea(i);q?s("MOUNT"):g==="none"||i?.display==="none"?s("UNMOUNT"):s(l&&u!==g?"ANIMATION_OUT":"UNMOUNT"),r.current=q}},[q,s]),xt(()=>{if(e){let i;const l=e.ownerDocument.defaultView??window,V=g=>{const f=ea(A.current).includes(CSS.escape(g.animationName));if(g.target===e&&f&&(s("ANIMATION_END"),!r.current)){const p=e.style.animationFillMode;e.style.animationFillMode="forwards",i=l.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=p)})}},u=g=>{g.target===e&&(n.current=ea(A.current))};return e.addEventListener("animationstart",u),e.addEventListener("animationcancel",V),e.addEventListener("animationend",V),()=>{l.clearTimeout(i),e.removeEventListener("animationstart",u),e.removeEventListener("animationcancel",V),e.removeEventListener("animationend",V)}}else s("ANIMATION_END")},[e,s]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:y.useCallback(i=>{A.current=i?getComputedStyle(i):null,t(i)},[])}}function ea(q){return q?.animationName||"none"}function _C(q){let e=Object.getOwnPropertyDescriptor(q.props,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?q.ref:(e=Object.getOwnPropertyDescriptor(q,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?q.props.ref:q.props.ref||q.ref)}var Qi=0;function ad(){y.useEffect(()=>{const q=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",q[0]??sd()),document.body.insertAdjacentElement("beforeend",q[1]??sd()),Qi++,()=>{Qi===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),Qi--}},[])}function sd(){const q=document.createElement("span");return q.setAttribute("data-radix-focus-guard",""),q.tabIndex=0,q.style.outline="none",q.style.opacity="0",q.style.position="fixed",q.style.pointerEvents="none",q}var Pt=function(){return Pt=Object.assign||function(e){for(var t,A=1,r=arguments.length;A<r;A++){t=arguments[A];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},Pt.apply(this,arguments)};function id(q,e){var t={};for(var A in q)Object.prototype.hasOwnProperty.call(q,A)&&e.indexOf(A)<0&&(t[A]=q[A]);if(q!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,A=Object.getOwnPropertySymbols(q);r<A.length;r++)e.indexOf(A[r])<0&&Object.prototype.propertyIsEnumerable.call(q,A[r])&&(t[A[r]]=q[A[r]]);return t}function $C(q,e,t){if(t||arguments.length===2)for(var A=0,r=e.length,n;A<r;A++)(n||!(A in e))&&(n||(n=Array.prototype.slice.call(e,0,A)),n[A]=e[A]);return q.concat(n||Array.prototype.slice.call(e))}typeof SuppressedError=="function"&&SuppressedError;var ta="right-scroll-bar-position",Aa="width-before-scroll-bar",qx="with-scroll-bars-hidden",ex="--removed-body-scroll-bar-size";function Oi(q,e){return typeof q=="function"?q(e):q&&(q.current=e),q}function tx(q,e){var t=w.useState(function(){return{value:q,callback:e,facade:{get current(){return t.value},set current(A){var r=t.value;r!==A&&(t.value=A,t.callback(A,r))}}}})[0];return t.callback=e,t.facade}var Ax=typeof window<"u"?y.useLayoutEffect:y.useEffect,Vd=new WeakMap;function rx(q,e){var t=tx(null,function(A){return q.forEach(function(r){return Oi(r,A)})});return Ax(function(){var A=Vd.get(t);if(A){var r=new Set(A),n=new Set(q),o=t.current;r.forEach(function(a){n.has(a)||Oi(a,null)}),n.forEach(function(a){r.has(a)||Oi(a,o)})}Vd.set(t,q)},[q]),t}function nx(q){return q}function ox(q,e){e===void 0&&(e=nx);var t=[],A=!1,r={read:function(){if(A)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return t.length?t[t.length-1]:q},useMedium:function(n){var o=e(n,A);return t.push(o),function(){t=t.filter(function(a){return a!==o})}},assignSyncMedium:function(n){for(A=!0;t.length;){var o=t;t=[],o.forEach(n)}t={push:function(a){return n(a)},filter:function(){return t}}},assignMedium:function(n){A=!0;var o=[];if(t.length){var a=t;t=[],a.forEach(n),o=t}var s=function(){var l=o;o=[],l.forEach(n)},i=function(){return Promise.resolve().then(s)};i(),t={push:function(l){o.push(l),i()},filter:function(l){return o=o.filter(l),t}}}};return r}function ax(q){q===void 0&&(q={});var e=ox(null);return e.options=Pt({async:!0,ssr:!1},q),e}var ld=function(q){var e=q.sideCar,t=id(q,["sideCar"]);if(!e)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var A=e.read();if(!A)throw new Error("Sidecar medium not found");return y.createElement(A,Pt({},t))};ld.isSideCarExport=!0;function sx(q,e){return q.useMedium(e),ld}var cd=ax(),ji=function(){},ra=y.forwardRef(function(q,e){var t=y.useRef(null),A=y.useState({onScrollCapture:ji,onWheelCapture:ji,onTouchMoveCapture:ji}),r=A[0],n=A[1],o=q.forwardProps,a=q.children,s=q.className,i=q.removeScrollBar,l=q.enabled,V=q.shards,u=q.sideCar,g=q.noRelative,d=q.noIsolation,f=q.inert,p=q.allowPinchZoom,h=q.as,m=h===void 0?"div":h,M=q.gapMode,E=id(q,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),v=u,S=rx([t,e]),k=Pt(Pt({},E),r);return y.createElement(y.Fragment,null,l&&y.createElement(v,{sideCar:cd,removeScrollBar:i,shards:V,noRelative:g,noIsolation:d,inert:f,setCallbacks:n,allowPinchZoom:!!p,lockRef:t,gapMode:M}),o?y.cloneElement(y.Children.only(a),Pt(Pt({},k),{ref:S})):y.createElement(m,Pt({},k,{className:s,ref:S}),a))});ra.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},ra.classNames={fullWidth:Aa,zeroRight:ta};var ix=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Vx(){if(!document)return null;var q=document.createElement("style");q.type="text/css";var e=ix();return e&&q.setAttribute("nonce",e),q}function lx(q,e){q.styleSheet?q.styleSheet.cssText=e:q.appendChild(document.createTextNode(e))}function cx(q){var e=document.head||document.getElementsByTagName("head")[0];e.appendChild(q)}var ux=function(){var q=0,e=null;return{add:function(t){q==0&&(e=Vx())&&(lx(e,t),cx(e)),q++},remove:function(){q--,!q&&e&&(e.parentNode&&e.parentNode.removeChild(e),e=null)}}},dx=function(){var q=ux();return function(e,t){y.useEffect(function(){return q.add(e),function(){q.remove()}},[e&&t])}},ud=function(){var q=dx(),e=function(t){var A=t.styles,r=t.dynamic;return q(A,r),null};return e},gx={left:0,top:0,right:0,gap:0},Gi=function(q){return parseInt(q||"",10)||0},fx=function(q){var e=window.getComputedStyle(document.body),t=e[q==="padding"?"paddingLeft":"marginLeft"],A=e[q==="padding"?"paddingTop":"marginTop"],r=e[q==="padding"?"paddingRight":"marginRight"];return[Gi(t),Gi(A),Gi(r)]},px=function(q){if(q===void 0&&(q="margin"),typeof window>"u")return gx;var e=fx(q),t=document.documentElement.clientWidth,A=window.innerWidth;return{left:e[0],top:e[1],right:e[2],gap:Math.max(0,A-t+e[2]-e[0])}},hx=ud(),Mr="data-scroll-locked",mx=function(q,e,t,A){var r=q.left,n=q.top,o=q.right,a=q.gap;return t===void 0&&(t="margin"),`
47
47
  .`.concat(qx,` {
48
48
  overflow: hidden `).concat(A,`;
49
49
  padding-right: `).concat(a,"px ").concat(A,`;