@developer.notchatbot/webchat 1.2.0 → 1.2.1

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.
@@ -1,4 +1,4 @@
1
- (function(Ce,pe){typeof exports=="object"&&typeof module!="undefined"?pe(exports):typeof define=="function"&&define.amd?define(["exports"],pe):(Ce=typeof globalThis!="undefined"?globalThis:Ce||self,pe(Ce.WebChat={}))})(this,function(Ce){"use strict";var nm=Object.defineProperty,rm=Object.defineProperties;var om=Object.getOwnPropertyDescriptors;var yd=Object.getOwnPropertySymbols;var im=Object.prototype.hasOwnProperty,am=Object.prototype.propertyIsEnumerable;var ol=(Ce,pe,Ee)=>pe in Ce?nm(Ce,pe,{enumerable:!0,configurable:!0,writable:!0,value:Ee}):Ce[pe]=Ee,fe=(Ce,pe)=>{for(var Ee in pe||(pe={}))im.call(pe,Ee)&&ol(Ce,Ee,pe[Ee]);if(yd)for(var Ee of yd(pe))am.call(pe,Ee)&&ol(Ce,Ee,pe[Ee]);return Ce},Ke=(Ce,pe)=>rm(Ce,om(pe));var de=(Ce,pe,Ee)=>ol(Ce,typeof pe!="symbol"?pe+"":pe,Ee);var Me=(Ce,pe,Ee)=>new Promise((oe,Ht)=>{var Ri=Ot=>{try{er(Ee.next(Ot))}catch(tr){Ht(tr)}},Oi=Ot=>{try{er(Ee.throw(Ot))}catch(tr){Ht(tr)}},er=Ot=>Ot.done?oe(Ot.value):Promise.resolve(Ot.value).then(Ri,Oi);er((Ee=Ee.apply(Ce,pe)).next())});var tl;function pe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ee={exports:{}},oe={};/**
1
+ (function(Ce,pe){typeof exports=="object"&&typeof module!="undefined"?pe(exports):typeof define=="function"&&define.amd?define(["exports"],pe):(Ce=typeof globalThis!="undefined"?globalThis:Ce||self,pe(Ce.WebChat={}))})(this,function(Ce){"use strict";var rm=Object.defineProperty,om=Object.defineProperties;var im=Object.getOwnPropertyDescriptors;var yd=Object.getOwnPropertySymbols;var am=Object.prototype.hasOwnProperty,sm=Object.prototype.propertyIsEnumerable;var ol=(Ce,pe,Ee)=>pe in Ce?rm(Ce,pe,{enumerable:!0,configurable:!0,writable:!0,value:Ee}):Ce[pe]=Ee,fe=(Ce,pe)=>{for(var Ee in pe||(pe={}))am.call(pe,Ee)&&ol(Ce,Ee,pe[Ee]);if(yd)for(var Ee of yd(pe))sm.call(pe,Ee)&&ol(Ce,Ee,pe[Ee]);return Ce},Ke=(Ce,pe)=>om(Ce,im(pe));var de=(Ce,pe,Ee)=>ol(Ce,typeof pe!="symbol"?pe+"":pe,Ee);var Me=(Ce,pe,Ee)=>new Promise((oe,Ht)=>{var Ri=Ot=>{try{er(Ee.next(Ot))}catch(tr){Ht(tr)}},Oi=Ot=>{try{er(Ee.throw(Ot))}catch(tr){Ht(tr)}},er=Ot=>Ot.done?oe(Ot.value):Promise.resolve(Ot.value).then(Ri,Oi);er((Ee=Ee.apply(Ce,pe)).next())});var tl;function pe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ee={exports:{}},oe={};/**
2
2
  * @license React
3
3
  * react.production.min.js
4
4
  *
@@ -114,7 +114,7 @@ Please report this to https://github.com/markedjs/marked.`,e){const r="<p>An err
114
114
  .nbc-flex-1::-webkit-scrollbar-button:vertical:end:increment {
115
115
  display: none;
116
116
  }
117
- `}),e.map(g=>G.jsx(Eg,{message:g,avatar:n,textColor:r,bubbleUserColor:o},g.id)),t&&i&&G.jsx(Rg,{avatar:n}),G.jsx("div",{ref:a})]})};function Og(){return typeof window=="undefined"?!1:window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"||window.location.hostname.includes("localhost")}function wi(){return Og()?{baseUrl:"http://localhost:3001",chatEndpoint:"http://localhost:3001/api/webchat",conversationEndpoint:"http://localhost:3001/api/webchat/conversation",uploadEndpoint:"http://localhost:3001/api/webchat/upload",rateEndpoint:"http://localhost:3001/api/webchat/conversation/rate"}:{baseUrl:"https://next.notchatbot.com",chatEndpoint:"https://next.notchatbot.com/api/webchat",conversationEndpoint:"https://next.notchatbot.com/api/webchat/conversation",uploadEndpoint:"https://next.notchatbot.com/api/webchat/upload",rateEndpoint:"https://next.notchatbot.com/api/webchat/conversation/rate"}}function Tg(){return wi().chatEndpoint}function Vf(){return wi().conversationEndpoint}function Ag(){return wi().uploadEndpoint}function Ig(){return wi().rateEndpoint}const Kf="nbc_secret_key_2025";function Pg(e){try{const t=btoa(e.split("").map((r,o)=>String.fromCharCode(r.charCodeAt(0)^Kf.charCodeAt(o%Kf.length))).join(""));return`${Date.now().toString(36)}.${t}`}catch(t){return console.error("Error encrypting API key:",t),e}}const Qf=({onSendMessage:e,placeholder:t="Escribe un mensaje...",disabled:n=!1,input:r,apiKey:o})=>{const[i,a]=Z.useState(""),[l,d]=Z.useState([]),[g,S]=Z.useState(!1),[R,y]=Z.useState(!1),E=Z.useRef(null),u=P=>{P.preventDefault(),(i.trim()||l.length>0)&&!n&&!g&&(e(i.trim(),l.length>0?l:void 0),a(""),d([]))},C=P=>{P.key==="Enter"&&!P.shiftKey&&(P.preventDefault(),(i.trim()||l.length>0)&&!n&&!g&&(e(i.trim(),l.length>0?l:void 0),a(""),d([])))},M=P=>{const T=P.type==="application/pdf",I=T?50*1024*1024:10*1024*1024;return P.size>I?(alert(`Archivo demasiado grande. El tamaño máximo para ${T?"PDFs":"imágenes"} es ${T?"50MB":"10MB"}.`),!1):!0},x=P=>`${P.name}_${P.size}_${P.type}`,p=P=>{const T=x(P);return l.some(I=>`${I.name}_${I.size}_${I.type}`===T)},m=P=>M(P)?p(P)?{isValid:!1,reason:"duplicate"}:{isValid:!0}:{isValid:!1,reason:"size"},b=P=>Me(this,null,function*(){const T=P.target.files;!T||T.length===0||(yield N(Array.from(T)),E.current&&(E.current.value=""))}),h=()=>{var P;(P=E.current)==null||P.click()},f=P=>{d(T=>T.filter((I,A)=>A!==P))},c=P=>P==="application/pdf"?"📄":"📎",s=(P,T)=>P.type.startsWith("image/")?G.jsx("img",{src:P.url,alt:P.name,className:"nbc-w-6 nbc-h-6 nbc-rounded nbc-object-cover nbc-mr-1"}):G.jsx("span",{className:"nbc-mr-1",children:c(P.type)}),w=P=>{P.preventDefault(),P.stopPropagation(),P.dataTransfer.types.includes("Files")&&y(!0)},v=P=>{P.preventDefault(),P.stopPropagation(),P.dataTransfer.types.includes("Files")&&y(!0)},k=P=>{P.preventDefault(),P.stopPropagation(),P.currentTarget.contains(P.relatedTarget)||y(!1)},j=P=>Me(this,null,function*(){P.preventDefault(),P.stopPropagation(),y(!1);const T=P.dataTransfer.files;if(!T||T.length===0)return;const I=["image/jpeg","image/jpg","image/png","image/gif","image/webp","application/pdf"],A=Array.from(T).filter(D=>I.includes(D.type));if(A.length===0){alert("Solo se permiten imágenes (JPEG, PNG, GIF, WebP) y archivos PDF.");return}yield N(A)}),N=P=>Me(this,null,function*(){const T=[],I=[],A=[];if(P.forEach(D=>{const B=m(D);B.isValid?T.push(D):B.reason==="duplicate"?I.push(D.name):B.reason==="size"&&A.push(D.name)}),I.length>0){const D=I.length>3?`${I.slice(0,3).join(", ")} y ${I.length-3} más`:I.join(", ");alert(`Los siguientes archivos ya están seleccionados: ${D}`)}if(A.length>0){const D=A.length>3?`${A.slice(0,3).join(", ")} y ${A.length-3} más`:A.join(", ");alert(`Los siguientes archivos exceden el tamaño máximo: ${D}`)}if(T.length!==0){S(!0);try{const D=T.map(z=>Me(this,null,function*(){const $=new FormData;$.append("file",z);const V=Ag(),F=o?Pg(o):"",O=yield fetch(V,{method:"POST",headers:{"X-API-Key":F},body:$});if(!O.ok){const U=yield O.json();throw new Error(U.error||"Failed to upload file")}const L=yield O.json();return{url:L.url,name:L.name,type:L.type,size:L.size}})),B=yield Promise.all(D);d(z=>[...z,...B])}catch(D){console.error("Error uploading files:",D),alert("Error uploading files. Please try again.")}finally{S(!1)}}});return G.jsxs("div",{className:"nbc-relative",onDragOver:w,onDragEnter:v,onDragLeave:k,onDrop:j,children:[l.length>0&&G.jsxs("div",{className:"nbc-p-2 nbc-border-b nbc-border-gray-100 nbc-bg-gray-50",style:{backgroundColor:r==null?void 0:r.backgroundColor},children:[G.jsxs("div",{className:"nbc-text-xs nbc-text-gray-600 nbc-mb-2",children:[l.length," archivo",l.length>1?"s":""," seleccionado",l.length>1?"s":""]}),G.jsx("div",{className:"nbc-flex nbc-flex-wrap nbc-gap-2",children:l.map((P,T)=>G.jsxs("div",{className:"nbc-flex nbc-items-center nbc-bg-white nbc-rounded nbc-px-2 nbc-py-1 nbc-border nbc-text-xs",children:[s(P),G.jsx("span",{className:"nbc-truncate nbc-max-w-20",title:P.name,children:P.name}),G.jsx("button",{type:"button",onClick:()=>f(T),className:"nbc-ml-1 nbc-text-gray-400 hover:nbc-text-gray-600 nbc-text-xs",disabled:g,children:"✕"})]},T))}),R&&G.jsx("div",{className:"nbc-flex nbc-items-center nbc-justify-center nbc-py-1",children:G.jsxs("div",{className:"nbc-flex nbc-flex-col nbc-items-center nbc-text-center nbc-py-2 nbc-text-blue-400",children:[G.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"nbc-w-8 nbc-h-8 nbc-mx-auto nbc-mb-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:G.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})}),G.jsx("p",{className:"nbc-text-sm nbc-font-medium",children:"Suelta los archivos aquí"}),G.jsx("p",{className:"nbc-text-xs nbc-text-gray-700",children:"Solo imágenes y PDFs"})]})})]}),R&&l.length===0&&G.jsx("div",{className:"nbc-flex nbc-items-center nbc-justify-center nbc-py-1",children:G.jsxs("div",{className:"nbc-flex nbc-flex-col nbc-items-center nbc-text-center nbc-py-2 nbc-text-blue-400",children:[G.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"nbc-w-8 nbc-h-8 nbc-mx-auto nbc-mb-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:G.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})}),G.jsx("p",{className:"nbc-text-sm nbc-font-medium",children:"Suelta los archivos aquí"}),G.jsx("p",{className:"nbc-text-xs nbc-text-gray-700",children:"Solo imágenes y PDFs"})]})}),G.jsx("form",{id:"notchatbot-embed-chat-body-input-form",onSubmit:u,className:"nbc-bg-white nbc-border-t nbc-border-gray-100",style:{backgroundColor:r==null?void 0:r.backgroundColor,borderTop:r!=null&&r.backgroundColor?"none":""},children:G.jsxs("div",{className:"nbc-relative nbc-flex nbc-items-center",children:[G.jsx("input",{ref:E,type:"file",className:"nbc-hidden",accept:"image/*,application/pdf",multiple:!0,onChange:b}),G.jsx("button",{type:"button",onClick:h,disabled:g||n,className:"nbc-absolute nbc-left-2 nbc-top-1/2 nbc-transform nbc--translate-y-1/2 nbc-w-8 nbc-h-8 nbc-text-gray-500 hover:nbc-text-gray-700 nbc-rounded-full nbc-text-sm nbc-font-medium nbc-transition-all nbc-duration-200 disabled:nbc-opacity-50 disabled:nbc-cursor-not-allowed nbc-border-0 nbc-cursor-pointer nbc-flex nbc-items-center nbc-justify-center hover:nbc-bg-gray-100",title:"Adjuntar archivo (o arrastra y suelta)",children:g?G.jsx("div",{className:"nbc-w-4 nbc-h-4 nbc-border-2 nbc-border-gray-300 nbc-border-t-gray-600 nbc-rounded-full nbc-animate-spin"}):G.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:G.jsx("path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66L9.64 16.2a2 2 0 0 1-2.83-2.83l8.49-8.49"})})}),G.jsx("input",{id:"notchatbot-embed-chat-body-input-form-input",type:"text",value:i,onChange:P=>a(P.target.value),onKeyUp:C,placeholder:t,className:"nbc-w-full nbc-pl-12 nbc-pr-12 nbc-text-sm nbc-outline-none nbc-text-gray-900 nbc-bg-white nbc-transition-all nbc-duration-200",style:{height:"48px",border:r==null?void 0:r.inputBorder,borderRadius:r==null?void 0:r.inputBorderRadius},disabled:n||g}),G.jsx("button",{type:"submit",disabled:!i.trim()&&l.length===0||n||g,className:"nbc-absolute nbc-right-2 nbc-top-1/2 nbc-transform nbc--translate-y-1/2 nbc-w-8 nbc-h-8 nbc-text-gray-500 hover:nbc-text-gray-700 nbc-rounded-full nbc-text-sm nbc-font-medium nbc-transition-all nbc-duration-200 disabled:nbc-opacity-50 disabled:nbc-cursor-not-allowed nbc-border-0 nbc-cursor-pointer nbc-flex nbc-items-center nbc-justify-center hover:nbc-bg-gray-100",style:{color:r==null?void 0:r.iconColor},children:G.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:"nbc-w-5 nbc-h-5",children:[G.jsx("path",{d:"m22 2-7 20-4-9-9-4Z"}),G.jsx("path",{d:"M22 2 11 13"})]})})]})})]})},Yf=({avatar:e})=>{const t=[{type:"bot",lines:3,widths:["w-full","w-3/4","w-1/2"]},{type:"user",lines:1,widths:["w-2/3"]},{type:"bot",lines:2,widths:["w-full","w-5/6"]},{type:"user",lines:2,widths:["w-3/4","w-1/2"]}];return G.jsxs("div",{className:"nbc-flex-1 nbc-flex nbc-flex-col nbc-space-y-4 nbc-p-4",children:[t.map((n,r)=>G.jsx("div",{className:`nbc-flex ${n.type==="user"?"nbc-justify-end":"nbc-justify-start"} nbc-mb-4`,children:n.type==="user"?G.jsx("div",{className:"nbc-w-full nbc-max-w-xs nbc-py-3 nbc-space-y-2",children:n.widths.map((o,i)=>G.jsx("div",{className:`nbc-h-4 nbc-bg-gray-100 nbc-rounded nbc-animate-pulse ${o}`},i))}):G.jsxs("div",{className:"nbc-w-full nbc-flex nbc-items-start nbc-space-x-3",children:[G.jsxs("div",{className:"nbc-flex nbc-flex-col nbc-items-center nbc-py-3",children:[e?G.jsx("img",{src:e,alt:"AI Assistant",className:"nbc-w-7 nbc-h-7 nbc-rounded-full nbc-object-cover nbc-flex-shrink-0 nbc-opacity-50"}):G.jsx("div",{className:"nbc-w-7 nbc-h-7 nbc-rounded-full nbc-bg-gray-300 nbc-animate-pulse"}),G.jsx("div",{className:"nbc-w-10 nbc-h-3 nbc-bg-gray-200 nbc-rounded nbc-animate-pulse nbc-mt-1"})]}),G.jsx("div",{className:"nbc-w-full nbc-max-w-xs nbc-py-3 nbc-space-y-2",children:n.widths.map((o,i)=>G.jsx("div",{className:`nbc-h-4 nbc-bg-gray-200 nbc-rounded nbc-animate-pulse ${o}`},i))})]})},r)),G.jsx("div",{className:"nbc-text-center nbc-text-sm nbc-text-gray-500 nbc-animate-pulse",children:"Cargando conversación..."})]})},Mg=({onRate:e,conversationId:t})=>{const[n,r]=Z.useState(0),[o,i]=Z.useState(0),[a,l]=Z.useState(!1),[d,g]=Z.useState(!1);Z.useEffect(()=>{setTimeout(()=>l(!0),50)},[]);const S=M=>Me(this,null,function*(){if(!t){console.error("ConversationId is required for rating");return}try{const x=yield fetch(Ig(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({conversationId:t,rate:M})});if(!x.ok)throw new Error(`HTTP error! status: ${x.status}`);const p=yield x.json();console.log("Rating submitted successfully:",p),e&&e(M)}catch(x){console.error("Error submitting rating:",x),e&&e(M)}}),R=M=>{i(M),g(!0),setTimeout(()=>{S(M)},300)},y=M=>{r(M)},E=()=>{r(0)},u=M=>{const x=n>=M,p=o>=M,m=x||p,b=x;return G.jsx("button",{className:`nbc-p-1 nbc-transition-transform nbc-duration-300 nbc-ease-out nbc-cursor-pointer ${b?"nbc-scale-[1.13]":"nbc-scale-100"}`,onClick:()=>R(M),onMouseEnter:()=>y(M),onMouseLeave:E,type:"button",children:G.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",className:"nbc-transition-colors nbc-duration-200",children:G.jsx("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",fill:m?"#fbbf24":"none",stroke:"#fbbf24",strokeWidth:"2",strokeLinejoin:"round"})})},M)},C=()=>d?"nbc-opacity-0 nbc-translate-y-4 nbc-scale-95":a?"nbc-opacity-100 nbc-translate-y-0 nbc-scale-100":"nbc-opacity-0 -nbc-translate-y-4 nbc-scale-95";return G.jsx("div",{className:`nbc-flex nbc-flex-col nbc-items-center nbc-py-2 nbc-px-4 nbc-transition-all nbc-duration-300 nbc-ease-out ${C()}`,children:G.jsx("div",{className:"nbc-flex nbc-items-center",children:[1,2,3,4,5].map(u)})})},Ng=({isOpen:e,onClose:t,config:n,messages:r,onSendMessage:o,isLoading:i=!1,isAiTyping:a=!1,position:l,marginBottom:d,marginSide:g,isMobile:S=!1,apiKeyMissing:R=!1,chatbotActivated:y=!0,isRated:E=!1,onRatingChange:u,conversationId:C})=>{const[M,x]=Z.useState(!1),[p,m]=Z.useState(!1),[b,h]=Z.useState(580),[f,c]=Z.useState(!1),s=(I,A)=>{o(I,A)},w=()=>{c(!1),u&&u(!0)},v=()=>r.filter(A=>A.sender==="user").length>=2&&f&&!E;if(Z.useEffect(()=>{r.filter(A=>A.sender==="user").length>=2&&!f&&!E&&c(!0)},[r,f,E]),Z.useEffect(()=>{e?(m(!0),setTimeout(()=>x(!0),10)):(x(!1),setTimeout(()=>m(!1),300))},[e]),Z.useEffect(()=>{const I=()=>{const D=d||n.marginBottom||16,B=64,z=10,$=typeof window!="undefined"?window.innerHeight:665,V=D+B+z,F=$-V,O=Math.min(580,Math.max(300,F-20));h(O)};I();const A=()=>{I()};if(typeof window!="undefined")return window.addEventListener("resize",A),()=>window.removeEventListener("resize",A)},[d,n.marginBottom]),!p)return null;const k=()=>{const I=l||n.position||"bottom-right",A=d||n.marginBottom||16,D=g||n.marginSide||16,$={width:"400px",height:`${b}px`,zIndex:2147483647,bottom:`${A+64+10}px`};return I==="bottom-left"?Ke(fe({},$),{left:`${D}px`}):Ke(fe({},$),{right:`${D}px`})},j=()=>`nbc-fixed nbc-bg-white nbc-rounded-lg nbc-shadow-2xl nbc-flex nbc-flex-col nbc-overflow-hidden nbc-font-sans nbc-transition-all nbc-duration-300 nbc-ease-out ${S?"nbc-inset-0 nbc-w-full nbc-h-full nbc-rounded-none":"nbc-w-auto nbc-h-auto nbc-rounded-lg nbc-inset-auto"} ${M?"nbc-opacity-100 nbc-scale-100 nbc-translate-y-0":"nbc-opacity-0 nbc-scale-95 nbc-translate-y-2"}`,N=()=>S?{zIndex:2147483647}:k(),T=`https://notchatbot.com?utm_source=${typeof window!="undefined"?encodeURIComponent(window.location.hostname):"unknown"}&utm_medium=widget&utm_campaign=WebChat`;return G.jsxs("div",{className:j(),style:N(),children:[G.jsx(Hp,{title:n.title||"Chat",onClose:t,primaryColor:n.primaryColor,avatar:n.avatar,closeButtonIcon:n.closeButtonIcon,closeButtonText:n.closeButtonText,closeButtonCustomIcon:n.closeButtonCustomIcon}),R?G.jsx("div",{className:"nbc-flex-1 nbc-flex nbc-items-center nbc-justify-center nbc-min-h-[220px]",children:G.jsxs("div",{className:"nbc-flex nbc-flex-col nbc-items-center nbc-gap-2 nbc-text-black nbc-font-medium nbc-text-[15px] nbc-bg-none nbc-shadow-none nbc-p-0 nbc-rounded-none nbc-text-center",children:[G.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",fill:"none",viewBox:"0 0 24 24",stroke:"#ef4444",strokeWidth:"2",style:{marginBottom:4},children:[G.jsx("circle",{cx:"12",cy:"12",r:"10",stroke:"#ef4444",strokeWidth:"2",fill:"none"}),G.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 8v4m0 4h.01"})]}),"Falta la API Key"]})}):i?G.jsx(Yf,{avatar:n.avatar}):G.jsx($f,{messages:r,isTyping:a,avatar:n.avatar,chatbotActivated:y}),v()&&G.jsx(Mg,{onRate:w,conversationId:C}),G.jsxs("div",{className:"nbc-mb-1 nbc-flex nbc-items-end nbc-justify-center nbc-text-xs nbc-text-black",children:[G.jsx("span",{children:"Powered by"})," ",G.jsx("a",{href:T,target:"_blank",rel:"noopener noreferrer",className:"nbc-font-bold nbc-text-black",children:"NotChatbot"})]}),G.jsx(Qf,{onSendMessage:s,placeholder:n.placeholder||"Escribe un mensaje...",disabled:a||R,apiKey:n.apiKey})]})},Lg=({initialMessage:e,avatar:t,position:n,marginBottom:r,marginSide:o,primaryColor:i,isMobile:a,isOpen:l,onPopoverClick:d})=>{const[g,S]=Z.useState(!1),[R,y]=Z.useState(!1),[E,u]=Z.useState(!1),[C,M]=Z.useState(!1),[x,p]=Z.useState(!1);Z.useEffect(()=>{(()=>{const w="nbc-popover-shown",v="nbc-popover-interacted",k=(()=>{if(typeof window!="undefined"&&window.performance)try{const T=window.performance.getEntriesByType("navigation")[0];if(T&&T.type)return T.type==="navigate"||T.type==="reload"}catch(T){console.warn("WebChat: Navigation API not available, defaulting to show popover")}return!0})(),j=(()=>{if(typeof window!="undefined"&&window.performance)try{const T=window.performance.getEntriesByType("navigation")[0];return T&&T.type==="reload"}catch(T){return!1}return!1})();j&&(sessionStorage.removeItem(w),sessionStorage.removeItem(v));const N=sessionStorage.getItem(w);if(sessionStorage.getItem(v)&&!j){p(!1);return}if(N&&!j){p(!1);return}k&&e?(p(!0),sessionStorage.setItem(w,"true")):p(!1)})()},[e]),Z.useEffect(()=>{l&&(sessionStorage.setItem("nbc-popover-interacted","true"),M(!0),y(!0),setTimeout(()=>{S(!1),y(!1),u(!1)},500))},[l]),Z.useEffect(()=>{if(!l&&e&&!C&&x){const s=setTimeout(()=>{S(!0),setTimeout(()=>{u(!0)},50)},3e3),w=setTimeout(()=>{y(!0),setTimeout(()=>{S(!1),y(!1),u(!1)},500)},11e3);return()=>{clearTimeout(s),clearTimeout(w)}}},[l,e,C,x]);const m=()=>{sessionStorage.setItem("nbc-popover-interacted","true"),M(!0),y(!0),setTimeout(()=>{S(!1),y(!1),u(!1)},500)},b=()=>{sessionStorage.setItem("nbc-popover-interacted","true"),M(!0),y(!0),setTimeout(()=>{S(!1),y(!1),u(!1)},500),d()};if(!g||l||!e||C||!x)return null;const h=()=>{const v={zIndex:2147483646,bottom:`${r+64+16}px`,maxWidth:a?"220px":"250px",width:"auto"};return n==="bottom-left"?Ke(fe({},v),{left:`${o}px`}):Ke(fe({},v),{right:`${o}px`})},f=()=>{const s="nbc-transition-all nbc-duration-500 nbc-ease-out";return R?`${s} nbc-opacity-0 nbc-translate-y-3 nbc-scale-90`:E?`${s} nbc-opacity-100 nbc-translate-y-0 nbc-scale-100`:`${s} nbc-opacity-0 nbc-translate-y-[-10px] nbc-scale-95`},c=(s,w=100)=>s.length>w?s.substring(0,w)+"...":s;return G.jsx("div",{className:`nbc-fixed nbc-pointer-events-none ${f()}`,style:h(),children:G.jsxs("div",{className:"nbc-relative",children:[G.jsx("div",{className:"nbc-absolute",style:{left:"50%",top:"-24px",transform:"translateX(-50%)",zIndex:2147483647},children:G.jsx("div",{className:"nbc-w-12 nbc-h-12 nbc-rounded-full nbc-border-3 nbc-border-white nbc-shadow-lg nbc-flex nbc-items-center nbc-justify-center nbc-overflow-hidden nbc-text-black",style:{backgroundColor:i},children:t?G.jsx("img",{src:t,alt:"Assistant",className:"nbc-w-full nbc-h-full nbc-object-cover"}):G.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"nbc-w-8 nbc-h-8 nbc-bg-white nbc-rounded-full nbc-p-1",children:[G.jsx("path",{d:"M12 6V2H8"}),G.jsx("path",{d:"m8 18-4 4V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2Z"}),G.jsx("path",{d:"M2 12h2"}),G.jsx("path",{d:"M9 11v2"}),G.jsx("path",{d:"M15 11v2"}),G.jsx("path",{d:"M20 12h2"})]})})}),G.jsxs("div",{className:"nbc-relative",children:[G.jsxs("div",{className:"nbc-bg-white nbc-h-24 nbc-rounded-2xl nbc-shadow-xl nbc-p-5 nbc-flex nbc-items-center nbc-pointer-events-auto nbc-cursor-pointer nbc-transition-transform nbc-duration-200 hover:nbc-scale-[1.02]",onClick:b,role:"button",tabIndex:0,onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),b())},children:[G.jsx("button",{onClick:s=>{s.stopPropagation(),m()},className:"nbc-absolute nbc-top-2 nbc-right-2 nbc-w-6 nbc-h-6 nbc-rounded-full nbc-flex nbc-items-center nbc-justify-center nbc-transition-colors nbc-duration-200 nbc-pointer-events-auto nbc-cursor-pointer nbc-border-0 hover:nbc-bg-gray-100","aria-label":"Close message",children:G.jsx("svg",{className:"nbc-w-3 nbc-h-3 nbc-text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:G.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),G.jsx("div",{className:"nbc-text-gray-800 nbc-text-sm nbc-leading-relaxed nbc-line-clamp-2",children:c(e||"")})]}),G.jsx("div",{className:"nbc-absolute nbc-top-full nbc-w-0 nbc-h-0",style:{left:n==="bottom-left"?"30px":"auto",right:n==="bottom-right"?"30px":"auto",borderLeft:"12px solid transparent",borderRight:"12px solid transparent",borderTop:"12px solid white"}})]})]})})};function at(){const t=Date.now().toString(16).padStart(12,"0"),n=new Uint8Array(10);crypto.getRandomValues(n);const r=Array.from(n).map(i=>i.toString(16).padStart(2,"0")).join("");return[t.slice(0,8),t.slice(8,12),"7"+r.slice(0,3),(parseInt(r.slice(3,4),16)&3|8).toString(16)+r.slice(4,7),r.slice(7,19)].join("-")}function Jf(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}function Zs(e,t,n={}){const{expires:r,maxAge:o,domain:i,path:a="/",secure:l=window.location.protocol==="https:",sameSite:d="lax"}=n;let g=`${encodeURIComponent(e)}=${encodeURIComponent(t)}`;r&&(g+=`; expires=${r.toUTCString()}`),o!==void 0&&(g+=`; max-age=${o}`),i&&(g+=`; domain=${i}`),g+=`; path=${a}`,l&&(g+="; secure"),g+=`; samesite=${d}`,document.cookie=g}function Xf(e){const t=encodeURIComponent(e),n=document.cookie.split(";");for(let r of n)if(r=r.trim(),r.startsWith(t+"="))return decodeURIComponent(r.substring(t.length+1));return null}function jg(e,t={}){Zs(e,"",Ke(fe({},t),{expires:new Date(0)}))}function Zf(){try{const e="__webchat_test__";Zs(e,"test");const t=Xf(e)==="test";return jg(e),t}catch(e){return!1}}const qf="notchatbot",Dg=24;function qs(){if(!Zf())return console.warn("WebChat: Cookies not supported, using session-only data"),{conversationId:at(),conversationStarted:!1};const e=Xf(qf);if(e)try{const n=JSON.parse(e);if(n&&typeof n=="object"&&typeof n.conversationId=="string"&&typeof n.conversationStarted=="boolean"&&Jf(n.conversationId))return n}catch(n){console.warn("WebChat: Invalid notchatbot cookie format, creating new one")}const t={conversationId:at(),conversationStarted:!1};return ed(t),t}function ed(e){if(!Zf()){console.warn("WebChat: Cookies not supported, cannot save data");return}if(!e||!Jf(e.conversationId))throw new Error("Invalid cookie data: conversationId must be a valid UUIDv7");if(typeof e.conversationStarted!="boolean")throw new Error("Invalid cookie data: conversationStarted must be a boolean");const t=Dg*60*60;Zs(qf,JSON.stringify(e),{maxAge:t,secure:window.location.protocol==="https:",sameSite:"lax",path:"/"})}function Ug(e){const t=qs(),n=Ke(fe({},t),{conversationStarted:e});return ed(n),n}function td(){return qs().conversationId}function nd(){return qs().conversationStarted}const Bg=()=>{if(typeof window=="undefined")return!1;const t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),n=window.innerWidth<=768,r="ontouchstart"in window||navigator.maxTouchPoints>0;return t||n&&r},el=()=>Bg()?"mobile":"desktop",_g=e=>{if(typeof window=="undefined")return()=>{};let t=el();const n=()=>{const r=el();r!==t&&(t=r,e(r))};return window.addEventListener("resize",n),()=>{window.removeEventListener("resize",n)}},xi=e=>{const t=el(),n=Ke(fe({},e),{position:e.position||"bottom-right",marginBottom:e.marginBottom||16,marginSide:e.marginSide||16,showPopup:e.showPopup!==void 0?e.showPopup:!0}),r=t==="mobile"?e.mobile:e.desktop;return r&&(r.position!==void 0&&(n.position=r.position),r.marginBottom!==void 0&&(n.marginBottom=r.marginBottom),r.marginSide!==void 0&&(n.marginSide=r.marginSide),r.showPopup!==void 0&&(n.showPopup=r.showPopup)),n},zg=e=>{const t=xi(e);return{position:t.position,marginBottom:t.marginBottom,marginSide:t.marginSide,showPopup:t.showPopup}},rd=()=>Me(this,null,function*(){const e=typeof window!="undefined"?sessionStorage.getItem("webchat-session-id"):null;if(e)return e;const t=`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;return typeof window!="undefined"&&sessionStorage.setItem("webchat-session-id",t),t}),Hg=(e,t)=>Me(this,null,function*(){try{const n=Vf(),r=yield fetch(`${n}?conversationId=${e}&chatbotUid=${t}`);return r.ok?yield r.json():(console.warn("WebChat: Failed to fetch conversation history:",r.status,r.statusText),null)}catch(n){return console.error("WebChat: Error fetching conversation history:",n),null}}),Fg=e=>e.map((t,n)=>{let r;return t.createdAt?r=t.createdAt.endsWith("Z")?t.createdAt:`${t.createdAt}Z`:r=new Date().toISOString(),{id:t.id||(Date.now()+n).toString(),text:t.content||t.text||"",sender:t.role==="user"?"user":"bot",timestamp:r,type:t.type}}),od=(e,t)=>e.map(n=>fe({id:n.id,content:n.text,role:n.sender==="user"?"user":"assistant",type:n.type,createdAt:n.timestamp instanceof Date?n.timestamp.toISOString():n.timestamp,conversationId:t},n.metaContent&&{metaContent:n.metaContent}));var id={exports:{}};/*!
117
+ `}),e.map(g=>G.jsx(Eg,{message:g,avatar:n,textColor:r,bubbleUserColor:o},g.id)),t&&i&&G.jsx(Rg,{avatar:n}),G.jsx("div",{ref:a})]})};function Og(){return typeof window=="undefined"?!1:window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"||window.location.hostname.includes("localhost")}function wi(){return Og()?{baseUrl:"http://localhost:3001",chatEndpoint:"http://localhost:3001/api/webchat",conversationEndpoint:"http://localhost:3001/api/webchat/conversation",uploadEndpoint:"http://localhost:3001/api/webchat/upload",rateEndpoint:"http://localhost:3001/api/webchat/conversation/rate"}:{baseUrl:"https://next.notchatbot.com",chatEndpoint:"https://next.notchatbot.com/api/webchat",conversationEndpoint:"https://next.notchatbot.com/api/webchat/conversation",uploadEndpoint:"https://next.notchatbot.com/api/webchat/upload",rateEndpoint:"https://next.notchatbot.com/api/webchat/conversation/rate"}}function Tg(){return wi().chatEndpoint}function Vf(){return wi().conversationEndpoint}function Ag(){return wi().uploadEndpoint}function Ig(){return wi().rateEndpoint}const Kf="nbc_secret_key_2025";function Pg(e){try{const t=btoa(e.split("").map((r,o)=>String.fromCharCode(r.charCodeAt(0)^Kf.charCodeAt(o%Kf.length))).join(""));return`${Date.now().toString(36)}.${t}`}catch(t){return console.error("Error encrypting API key:",t),e}}const Qf=({onSendMessage:e,placeholder:t="Escribe un mensaje...",disabled:n=!1,input:r,apiKey:o})=>{const[i,a]=Z.useState(""),[l,d]=Z.useState([]),[g,S]=Z.useState(!1),[R,y]=Z.useState(!1),E=Z.useRef(null),u=P=>{P.preventDefault(),(i.trim()||l.length>0)&&!n&&!g&&(e(i.trim(),l.length>0?l:void 0),a(""),d([]))},C=P=>{P.key==="Enter"&&!P.shiftKey&&(P.preventDefault(),(i.trim()||l.length>0)&&!n&&!g&&(e(i.trim(),l.length>0?l:void 0),a(""),d([])))},M=P=>{const T=P.type==="application/pdf",I=T?50*1024*1024:10*1024*1024;return P.size>I?(alert(`Archivo demasiado grande. El tamaño máximo para ${T?"PDFs":"imágenes"} es ${T?"50MB":"10MB"}.`),!1):!0},x=P=>`${P.name}_${P.size}_${P.type}`,p=P=>{const T=x(P);return l.some(I=>`${I.name}_${I.size}_${I.type}`===T)},m=P=>M(P)?p(P)?{isValid:!1,reason:"duplicate"}:{isValid:!0}:{isValid:!1,reason:"size"},b=P=>Me(this,null,function*(){const T=P.target.files;!T||T.length===0||(yield N(Array.from(T)),E.current&&(E.current.value=""))}),h=()=>{var P;(P=E.current)==null||P.click()},f=P=>{d(T=>T.filter((I,A)=>A!==P))},c=P=>P==="application/pdf"?"📄":"📎",s=(P,T)=>P.type.startsWith("image/")?G.jsx("img",{src:P.url,alt:P.name,className:"nbc-w-6 nbc-h-6 nbc-rounded nbc-object-cover nbc-mr-1"}):G.jsx("span",{className:"nbc-mr-1",children:c(P.type)}),w=P=>{P.preventDefault(),P.stopPropagation(),P.dataTransfer.types.includes("Files")&&y(!0)},v=P=>{P.preventDefault(),P.stopPropagation(),P.dataTransfer.types.includes("Files")&&y(!0)},k=P=>{P.preventDefault(),P.stopPropagation(),P.currentTarget.contains(P.relatedTarget)||y(!1)},j=P=>Me(this,null,function*(){P.preventDefault(),P.stopPropagation(),y(!1);const T=P.dataTransfer.files;if(!T||T.length===0)return;const I=["image/jpeg","image/jpg","image/png","image/gif","image/webp","application/pdf"],A=Array.from(T).filter(D=>I.includes(D.type));if(A.length===0){alert("Solo se permiten imágenes (JPEG, PNG, GIF, WebP) y archivos PDF.");return}yield N(A)}),N=P=>Me(this,null,function*(){const T=[],I=[],A=[];if(P.forEach(D=>{const B=m(D);B.isValid?T.push(D):B.reason==="duplicate"?I.push(D.name):B.reason==="size"&&A.push(D.name)}),I.length>0){const D=I.length>3?`${I.slice(0,3).join(", ")} y ${I.length-3} más`:I.join(", ");alert(`Los siguientes archivos ya están seleccionados: ${D}`)}if(A.length>0){const D=A.length>3?`${A.slice(0,3).join(", ")} y ${A.length-3} más`:A.join(", ");alert(`Los siguientes archivos exceden el tamaño máximo: ${D}`)}if(T.length!==0){S(!0);try{const D=T.map(z=>Me(this,null,function*(){const $=new FormData;$.append("file",z);const V=Ag(),F=o?Pg(o):"",O=yield fetch(V,{method:"POST",headers:{"X-API-Key":F},body:$});if(!O.ok){const U=yield O.json();throw new Error(U.error||"Failed to upload file")}const L=yield O.json();return{url:L.url,name:L.name,type:L.type,size:L.size}})),B=yield Promise.all(D);d(z=>[...z,...B])}catch(D){console.error("Error uploading files:",D),alert("Error uploading files. Please try again.")}finally{S(!1)}}});return G.jsxs("div",{className:"nbc-relative",onDragOver:w,onDragEnter:v,onDragLeave:k,onDrop:j,children:[l.length>0&&G.jsxs("div",{className:"nbc-p-2 nbc-border-b nbc-border-gray-100 nbc-bg-gray-50",style:{backgroundColor:r==null?void 0:r.backgroundColor},children:[G.jsxs("div",{className:"nbc-text-xs nbc-text-gray-600 nbc-mb-2",children:[l.length," archivo",l.length>1?"s":""," seleccionado",l.length>1?"s":""]}),G.jsx("div",{className:"nbc-flex nbc-flex-wrap nbc-gap-2",children:l.map((P,T)=>G.jsxs("div",{className:"nbc-flex nbc-items-center nbc-bg-white nbc-rounded nbc-px-2 nbc-py-1 nbc-border nbc-text-xs",children:[s(P),G.jsx("span",{className:"nbc-truncate nbc-max-w-20",title:P.name,children:P.name}),G.jsx("button",{type:"button",onClick:()=>f(T),className:"nbc-ml-1 nbc-text-gray-400 hover:nbc-text-gray-600 nbc-text-xs",disabled:g,children:"✕"})]},T))}),R&&G.jsx("div",{className:"nbc-flex nbc-items-center nbc-justify-center nbc-py-1",children:G.jsxs("div",{className:"nbc-flex nbc-flex-col nbc-items-center nbc-text-center nbc-py-2 nbc-text-blue-400",children:[G.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"nbc-w-8 nbc-h-8 nbc-mx-auto nbc-mb-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:G.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})}),G.jsx("p",{className:"nbc-text-sm nbc-font-medium",children:"Suelta los archivos aquí"}),G.jsx("p",{className:"nbc-text-xs nbc-text-gray-700",children:"Solo imágenes y PDFs"})]})})]}),R&&l.length===0&&G.jsx("div",{className:"nbc-flex nbc-items-center nbc-justify-center nbc-py-1",children:G.jsxs("div",{className:"nbc-flex nbc-flex-col nbc-items-center nbc-text-center nbc-py-2 nbc-text-blue-400",children:[G.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"nbc-w-8 nbc-h-8 nbc-mx-auto nbc-mb-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:G.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})}),G.jsx("p",{className:"nbc-text-sm nbc-font-medium",children:"Suelta los archivos aquí"}),G.jsx("p",{className:"nbc-text-xs nbc-text-gray-700",children:"Solo imágenes y PDFs"})]})}),G.jsx("form",{id:"notchatbot-embed-chat-body-input-form",onSubmit:u,className:"nbc-bg-white nbc-border-t nbc-border-gray-100",style:{backgroundColor:r==null?void 0:r.backgroundColor,borderTop:r!=null&&r.backgroundColor?"none":""},children:G.jsxs("div",{className:"nbc-relative nbc-flex nbc-items-center",children:[G.jsx("input",{ref:E,type:"file",className:"nbc-hidden",accept:"image/*,application/pdf",multiple:!0,onChange:b}),G.jsx("button",{type:"button",onClick:h,disabled:g||n,className:"nbc-absolute nbc-left-2 nbc-top-1/2 nbc-transform nbc--translate-y-1/2 nbc-w-8 nbc-h-8 nbc-text-gray-500 hover:nbc-text-gray-700 nbc-rounded-full nbc-text-sm nbc-font-medium nbc-transition-all nbc-duration-200 disabled:nbc-opacity-50 disabled:nbc-cursor-not-allowed nbc-border-0 nbc-cursor-pointer nbc-flex nbc-items-center nbc-justify-center hover:nbc-bg-gray-100",title:"Adjuntar archivo (o arrastra y suelta)",children:g?G.jsx("div",{className:"nbc-w-4 nbc-h-4 nbc-border-2 nbc-border-gray-300 nbc-border-t-gray-600 nbc-rounded-full nbc-animate-spin"}):G.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:G.jsx("path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66L9.64 16.2a2 2 0 0 1-2.83-2.83l8.49-8.49"})})}),G.jsx("input",{id:"notchatbot-embed-chat-body-input-form-input",type:"text",value:i,onChange:P=>a(P.target.value),onKeyUp:C,placeholder:t,className:"nbc-w-full nbc-pl-12 nbc-pr-12 nbc-text-sm nbc-outline-none nbc-text-gray-900 nbc-bg-white nbc-transition-all nbc-duration-200",style:{height:"48px",border:r==null?void 0:r.inputBorder,borderRadius:r==null?void 0:r.inputBorderRadius}}),G.jsx("button",{type:"submit",disabled:!i.trim()&&l.length===0||n||g,className:"nbc-absolute nbc-right-2 nbc-top-1/2 nbc-transform nbc--translate-y-1/2 nbc-w-8 nbc-h-8 nbc-text-gray-500 hover:nbc-text-gray-700 nbc-rounded-full nbc-text-sm nbc-font-medium nbc-transition-all nbc-duration-200 disabled:nbc-opacity-50 disabled:nbc-cursor-not-allowed nbc-border-0 nbc-cursor-pointer nbc-flex nbc-items-center nbc-justify-center hover:nbc-bg-gray-100",style:{color:r==null?void 0:r.iconColor},children:G.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:"nbc-w-5 nbc-h-5",children:[G.jsx("path",{d:"m22 2-7 20-4-9-9-4Z"}),G.jsx("path",{d:"M22 2 11 13"})]})})]})})]})},Yf=({avatar:e})=>{const t=[{type:"bot",lines:3,widths:["w-full","w-3/4","w-1/2"]},{type:"user",lines:1,widths:["w-2/3"]},{type:"bot",lines:2,widths:["w-full","w-5/6"]},{type:"user",lines:2,widths:["w-3/4","w-1/2"]}];return G.jsxs("div",{className:"nbc-flex-1 nbc-flex nbc-flex-col nbc-space-y-4 nbc-p-4",children:[t.map((n,r)=>G.jsx("div",{className:`nbc-flex ${n.type==="user"?"nbc-justify-end":"nbc-justify-start"} nbc-mb-4`,children:n.type==="user"?G.jsx("div",{className:"nbc-w-full nbc-max-w-xs nbc-py-3 nbc-space-y-2",children:n.widths.map((o,i)=>G.jsx("div",{className:`nbc-h-4 nbc-bg-gray-100 nbc-rounded nbc-animate-pulse ${o}`},i))}):G.jsxs("div",{className:"nbc-w-full nbc-flex nbc-items-start nbc-space-x-3",children:[G.jsxs("div",{className:"nbc-flex nbc-flex-col nbc-items-center nbc-py-3",children:[e?G.jsx("img",{src:e,alt:"AI Assistant",className:"nbc-w-7 nbc-h-7 nbc-rounded-full nbc-object-cover nbc-flex-shrink-0 nbc-opacity-50"}):G.jsx("div",{className:"nbc-w-7 nbc-h-7 nbc-rounded-full nbc-bg-gray-300 nbc-animate-pulse"}),G.jsx("div",{className:"nbc-w-10 nbc-h-3 nbc-bg-gray-200 nbc-rounded nbc-animate-pulse nbc-mt-1"})]}),G.jsx("div",{className:"nbc-w-full nbc-max-w-xs nbc-py-3 nbc-space-y-2",children:n.widths.map((o,i)=>G.jsx("div",{className:`nbc-h-4 nbc-bg-gray-200 nbc-rounded nbc-animate-pulse ${o}`},i))})]})},r)),G.jsx("div",{className:"nbc-text-center nbc-text-sm nbc-text-gray-500 nbc-animate-pulse",children:"Cargando conversación..."})]})},Mg=({onRate:e,conversationId:t})=>{const[n,r]=Z.useState(0),[o,i]=Z.useState(0),[a,l]=Z.useState(!1),[d,g]=Z.useState(!1);Z.useEffect(()=>{setTimeout(()=>l(!0),50)},[]);const S=M=>Me(this,null,function*(){if(!t){console.error("ConversationId is required for rating");return}try{const x=yield fetch(Ig(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({conversationId:t,rate:M})});if(!x.ok)throw new Error(`HTTP error! status: ${x.status}`);const p=yield x.json();console.log("Rating submitted successfully:",p),e&&e(M)}catch(x){console.error("Error submitting rating:",x),e&&e(M)}}),R=M=>{i(M),g(!0),setTimeout(()=>{S(M)},300)},y=M=>{r(M)},E=()=>{r(0)},u=M=>{const x=n>=M,p=o>=M,m=x||p,b=x;return G.jsx("button",{className:`nbc-p-1 nbc-transition-transform nbc-duration-300 nbc-ease-out nbc-cursor-pointer ${b?"nbc-scale-[1.13]":"nbc-scale-100"}`,onClick:()=>R(M),onMouseEnter:()=>y(M),onMouseLeave:E,type:"button",children:G.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",className:"nbc-transition-colors nbc-duration-200",children:G.jsx("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",fill:m?"#fbbf24":"none",stroke:"#fbbf24",strokeWidth:"2",strokeLinejoin:"round"})})},M)},C=()=>d?"nbc-opacity-0 nbc-translate-y-4 nbc-scale-95":a?"nbc-opacity-100 nbc-translate-y-0 nbc-scale-100":"nbc-opacity-0 -nbc-translate-y-4 nbc-scale-95";return G.jsx("div",{className:`nbc-flex nbc-flex-col nbc-items-center nbc-py-2 nbc-px-4 nbc-transition-all nbc-duration-300 nbc-ease-out ${C()}`,children:G.jsx("div",{className:"nbc-flex nbc-items-center",children:[1,2,3,4,5].map(u)})})},Ng=({isOpen:e,onClose:t,config:n,messages:r,onSendMessage:o,isLoading:i=!1,isAiTyping:a=!1,position:l,marginBottom:d,marginSide:g,isMobile:S=!1,apiKeyMissing:R=!1,chatbotActivated:y=!0,isRated:E=!1,onRatingChange:u,conversationId:C})=>{const[M,x]=Z.useState(!1),[p,m]=Z.useState(!1),[b,h]=Z.useState(580),[f,c]=Z.useState(!1),s=(I,A)=>{o(I,A)},w=()=>{c(!1),u&&u(!0)},v=()=>r.filter(A=>A.sender==="user").length>=2&&f&&!E;if(Z.useEffect(()=>{r.filter(A=>A.sender==="user").length>=2&&!f&&!E&&c(!0)},[r,f,E]),Z.useEffect(()=>{e?(m(!0),setTimeout(()=>x(!0),10)):(x(!1),setTimeout(()=>m(!1),300))},[e]),Z.useEffect(()=>{const I=()=>{const D=d||n.marginBottom||16,B=64,z=10,$=typeof window!="undefined"?window.innerHeight:665,V=D+B+z,F=$-V,O=Math.min(580,Math.max(300,F-20));h(O)};I();const A=()=>{I()};if(typeof window!="undefined")return window.addEventListener("resize",A),()=>window.removeEventListener("resize",A)},[d,n.marginBottom]),!p)return null;const k=()=>{const I=l||n.position||"bottom-right",A=d||n.marginBottom||16,D=g||n.marginSide||16,$={width:"400px",height:`${b}px`,zIndex:2147483647,bottom:`${A+64+10}px`};return I==="bottom-left"?Ke(fe({},$),{left:`${D}px`}):Ke(fe({},$),{right:`${D}px`})},j=()=>`nbc-fixed nbc-bg-white nbc-rounded-lg nbc-shadow-2xl nbc-flex nbc-flex-col nbc-overflow-hidden nbc-font-sans nbc-transition-all nbc-duration-300 nbc-ease-out ${S?"nbc-inset-0 nbc-w-full nbc-h-full nbc-rounded-none":"nbc-w-auto nbc-h-auto nbc-rounded-lg nbc-inset-auto"} ${M?"nbc-opacity-100 nbc-scale-100 nbc-translate-y-0":"nbc-opacity-0 nbc-scale-95 nbc-translate-y-2"}`,N=()=>S?{zIndex:2147483647}:k(),T=`https://notchatbot.com?utm_source=${typeof window!="undefined"?encodeURIComponent(window.location.hostname):"unknown"}&utm_medium=widget&utm_campaign=WebChat`;return G.jsxs("div",{className:j(),style:N(),children:[G.jsx(Hp,{title:n.title||"Chat",onClose:t,primaryColor:n.primaryColor,avatar:n.avatar,closeButtonIcon:n.closeButtonIcon,closeButtonText:n.closeButtonText,closeButtonCustomIcon:n.closeButtonCustomIcon}),R?G.jsx("div",{className:"nbc-flex-1 nbc-flex nbc-items-center nbc-justify-center nbc-min-h-[220px]",children:G.jsxs("div",{className:"nbc-flex nbc-flex-col nbc-items-center nbc-gap-2 nbc-text-black nbc-font-medium nbc-text-[15px] nbc-bg-none nbc-shadow-none nbc-p-0 nbc-rounded-none nbc-text-center",children:[G.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",fill:"none",viewBox:"0 0 24 24",stroke:"#ef4444",strokeWidth:"2",style:{marginBottom:4},children:[G.jsx("circle",{cx:"12",cy:"12",r:"10",stroke:"#ef4444",strokeWidth:"2",fill:"none"}),G.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 8v4m0 4h.01"})]}),"Falta la API Key"]})}):i?G.jsx(Yf,{avatar:n.avatar}):G.jsx($f,{messages:r,isTyping:a,avatar:n.avatar,chatbotActivated:y}),v()&&G.jsx(Mg,{onRate:w,conversationId:C}),G.jsxs("div",{className:"nbc-mb-1 nbc-flex nbc-items-end nbc-justify-center nbc-text-xs nbc-text-black",children:[G.jsx("span",{children:"Powered by"})," ",G.jsx("a",{href:T,target:"_blank",rel:"noopener noreferrer",className:"nbc-font-bold nbc-text-black",children:"NotChatbot"})]}),G.jsx(Qf,{onSendMessage:s,placeholder:n.placeholder||"Escribe un mensaje...",disabled:a||R,apiKey:n.apiKey})]})},Lg=({initialMessage:e,avatar:t,position:n,marginBottom:r,marginSide:o,primaryColor:i,isMobile:a,isOpen:l,onPopoverClick:d})=>{const[g,S]=Z.useState(!1),[R,y]=Z.useState(!1),[E,u]=Z.useState(!1),[C,M]=Z.useState(!1),[x,p]=Z.useState(!1);Z.useEffect(()=>{(()=>{const w="nbc-popover-shown",v="nbc-popover-interacted",k=(()=>{if(typeof window!="undefined"&&window.performance)try{const T=window.performance.getEntriesByType("navigation")[0];if(T&&T.type)return T.type==="navigate"||T.type==="reload"}catch(T){console.warn("WebChat: Navigation API not available, defaulting to show popover")}return!0})(),j=(()=>{if(typeof window!="undefined"&&window.performance)try{const T=window.performance.getEntriesByType("navigation")[0];return T&&T.type==="reload"}catch(T){return!1}return!1})();j&&(sessionStorage.removeItem(w),sessionStorage.removeItem(v));const N=sessionStorage.getItem(w);if(sessionStorage.getItem(v)&&!j){p(!1);return}if(N&&!j){p(!1);return}k&&e?(p(!0),sessionStorage.setItem(w,"true")):p(!1)})()},[e]),Z.useEffect(()=>{l&&(sessionStorage.setItem("nbc-popover-interacted","true"),M(!0),y(!0),setTimeout(()=>{S(!1),y(!1),u(!1)},500))},[l]),Z.useEffect(()=>{if(!l&&e&&!C&&x){const s=setTimeout(()=>{S(!0),setTimeout(()=>{u(!0)},50)},3e3),w=setTimeout(()=>{y(!0),setTimeout(()=>{S(!1),y(!1),u(!1)},500)},11e3);return()=>{clearTimeout(s),clearTimeout(w)}}},[l,e,C,x]);const m=()=>{sessionStorage.setItem("nbc-popover-interacted","true"),M(!0),y(!0),setTimeout(()=>{S(!1),y(!1),u(!1)},500)},b=()=>{sessionStorage.setItem("nbc-popover-interacted","true"),M(!0),y(!0),setTimeout(()=>{S(!1),y(!1),u(!1)},500),d()};if(!g||l||!e||C||!x)return null;const h=()=>{const v={zIndex:2147483646,bottom:`${r+64+16}px`,maxWidth:a?"220px":"250px",width:"auto"};return n==="bottom-left"?Ke(fe({},v),{left:`${o}px`}):Ke(fe({},v),{right:`${o}px`})},f=()=>{const s="nbc-transition-all nbc-duration-500 nbc-ease-out";return R?`${s} nbc-opacity-0 nbc-translate-y-3 nbc-scale-90`:E?`${s} nbc-opacity-100 nbc-translate-y-0 nbc-scale-100`:`${s} nbc-opacity-0 nbc-translate-y-[-10px] nbc-scale-95`},c=(s,w=100)=>s.length>w?s.substring(0,w)+"...":s;return G.jsx("div",{className:`nbc-fixed nbc-pointer-events-none ${f()}`,style:h(),children:G.jsxs("div",{className:"nbc-relative",children:[G.jsx("div",{className:"nbc-absolute",style:{left:"50%",top:"-24px",transform:"translateX(-50%)",zIndex:2147483647},children:G.jsx("div",{className:"nbc-w-12 nbc-h-12 nbc-rounded-full nbc-border-3 nbc-border-white nbc-shadow-lg nbc-flex nbc-items-center nbc-justify-center nbc-overflow-hidden nbc-text-black",style:{backgroundColor:i},children:t?G.jsx("img",{src:t,alt:"Assistant",className:"nbc-w-full nbc-h-full nbc-object-cover"}):G.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"nbc-w-8 nbc-h-8 nbc-bg-white nbc-rounded-full nbc-p-1",children:[G.jsx("path",{d:"M12 6V2H8"}),G.jsx("path",{d:"m8 18-4 4V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2Z"}),G.jsx("path",{d:"M2 12h2"}),G.jsx("path",{d:"M9 11v2"}),G.jsx("path",{d:"M15 11v2"}),G.jsx("path",{d:"M20 12h2"})]})})}),G.jsxs("div",{className:"nbc-relative",children:[G.jsxs("div",{className:"nbc-bg-white nbc-h-24 nbc-rounded-2xl nbc-shadow-xl nbc-p-5 nbc-flex nbc-items-center nbc-pointer-events-auto nbc-cursor-pointer nbc-transition-transform nbc-duration-200 hover:nbc-scale-[1.02]",onClick:b,role:"button",tabIndex:0,onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),b())},children:[G.jsx("button",{onClick:s=>{s.stopPropagation(),m()},className:"nbc-absolute nbc-top-2 nbc-right-2 nbc-w-6 nbc-h-6 nbc-rounded-full nbc-flex nbc-items-center nbc-justify-center nbc-transition-colors nbc-duration-200 nbc-pointer-events-auto nbc-cursor-pointer nbc-border-0 hover:nbc-bg-gray-100","aria-label":"Close message",children:G.jsx("svg",{className:"nbc-w-3 nbc-h-3 nbc-text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:G.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),G.jsx("div",{className:"nbc-text-gray-800 nbc-text-sm nbc-leading-relaxed nbc-line-clamp-2",children:c(e||"")})]}),G.jsx("div",{className:"nbc-absolute nbc-top-full nbc-w-0 nbc-h-0",style:{left:n==="bottom-left"?"30px":"auto",right:n==="bottom-right"?"30px":"auto",borderLeft:"12px solid transparent",borderRight:"12px solid transparent",borderTop:"12px solid white"}})]})]})})};function at(){const t=Date.now().toString(16).padStart(12,"0"),n=new Uint8Array(10);crypto.getRandomValues(n);const r=Array.from(n).map(i=>i.toString(16).padStart(2,"0")).join("");return[t.slice(0,8),t.slice(8,12),"7"+r.slice(0,3),(parseInt(r.slice(3,4),16)&3|8).toString(16)+r.slice(4,7),r.slice(7,19)].join("-")}function Jf(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}function Zs(e,t,n={}){const{expires:r,maxAge:o,domain:i,path:a="/",secure:l=window.location.protocol==="https:",sameSite:d="lax"}=n;let g=`${encodeURIComponent(e)}=${encodeURIComponent(t)}`;r&&(g+=`; expires=${r.toUTCString()}`),o!==void 0&&(g+=`; max-age=${o}`),i&&(g+=`; domain=${i}`),g+=`; path=${a}`,l&&(g+="; secure"),g+=`; samesite=${d}`,document.cookie=g}function Xf(e){const t=encodeURIComponent(e),n=document.cookie.split(";");for(let r of n)if(r=r.trim(),r.startsWith(t+"="))return decodeURIComponent(r.substring(t.length+1));return null}function jg(e,t={}){Zs(e,"",Ke(fe({},t),{expires:new Date(0)}))}function Zf(){try{const e="__webchat_test__";Zs(e,"test");const t=Xf(e)==="test";return jg(e),t}catch(e){return!1}}const qf="notchatbot",Dg=24;function qs(){if(!Zf())return console.warn("WebChat: Cookies not supported, using session-only data"),{conversationId:at(),conversationStarted:!1};const e=Xf(qf);if(e)try{const n=JSON.parse(e);if(n&&typeof n=="object"&&typeof n.conversationId=="string"&&typeof n.conversationStarted=="boolean"&&Jf(n.conversationId))return n}catch(n){console.warn("WebChat: Invalid notchatbot cookie format, creating new one")}const t={conversationId:at(),conversationStarted:!1};return ed(t),t}function ed(e){if(!Zf()){console.warn("WebChat: Cookies not supported, cannot save data");return}if(!e||!Jf(e.conversationId))throw new Error("Invalid cookie data: conversationId must be a valid UUIDv7");if(typeof e.conversationStarted!="boolean")throw new Error("Invalid cookie data: conversationStarted must be a boolean");const t=Dg*60*60;Zs(qf,JSON.stringify(e),{maxAge:t,secure:window.location.protocol==="https:",sameSite:"lax",path:"/"})}function Ug(e){const t=qs(),n=Ke(fe({},t),{conversationStarted:e});return ed(n),n}function td(){return qs().conversationId}function nd(){return qs().conversationStarted}const Bg=()=>{if(typeof window=="undefined")return!1;const t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),n=window.innerWidth<=768,r="ontouchstart"in window||navigator.maxTouchPoints>0;return t||n&&r},el=()=>Bg()?"mobile":"desktop",_g=e=>{if(typeof window=="undefined")return()=>{};let t=el();const n=()=>{const r=el();r!==t&&(t=r,e(r))};return window.addEventListener("resize",n),()=>{window.removeEventListener("resize",n)}},xi=e=>{const t=el(),n=Ke(fe({},e),{position:e.position||"bottom-right",marginBottom:e.marginBottom||16,marginSide:e.marginSide||16,showPopup:e.showPopup!==void 0?e.showPopup:!0}),r=t==="mobile"?e.mobile:e.desktop;return r&&(r.position!==void 0&&(n.position=r.position),r.marginBottom!==void 0&&(n.marginBottom=r.marginBottom),r.marginSide!==void 0&&(n.marginSide=r.marginSide),r.showPopup!==void 0&&(n.showPopup=r.showPopup)),n},zg=e=>{const t=xi(e);return{position:t.position,marginBottom:t.marginBottom,marginSide:t.marginSide,showPopup:t.showPopup}},rd=()=>Me(this,null,function*(){const e=typeof window!="undefined"?sessionStorage.getItem("webchat-session-id"):null;if(e)return e;const t=`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;return typeof window!="undefined"&&sessionStorage.setItem("webchat-session-id",t),t}),Hg=(e,t)=>Me(this,null,function*(){try{const n=Vf(),r=yield fetch(`${n}?conversationId=${e}&chatbotUid=${t}`);return r.ok?yield r.json():(console.warn("WebChat: Failed to fetch conversation history:",r.status,r.statusText),null)}catch(n){return console.error("WebChat: Error fetching conversation history:",n),null}}),Fg=e=>e.map((t,n)=>{let r;return t.createdAt?r=t.createdAt.endsWith("Z")?t.createdAt:`${t.createdAt}Z`:r=new Date().toISOString(),{id:t.id||(Date.now()+n).toString(),text:t.content||t.text||"",sender:t.role==="user"?"user":"bot",timestamp:r,type:t.type,metaContent:t.metaContent}}),Gg=e=>{var t;if(!e.metaContent)return e.text;switch(e.type){case"image":return`![image](${e.metaContent})`;case"file":const n=e.text.match(/\[([^\]]+)\]\([^)]+\)/),r=n?n[1]:"document",o=(t=r.split(".").pop())==null?void 0:t.toLowerCase();return o==="pdf"?`![file](${e.metaContent})`:`User has shared a ${o?o.toUpperCase():"file"}: ${r}. The file cannot be directly processed by the AI.`;case"audio":return`![audio](${e.metaContent})`;case"video":return`![video](${e.metaContent})`;default:return e.text}},od=(e,t)=>e.map(n=>{const r=Gg(n);return fe({id:n.id,content:r,role:n.sender==="user"?"user":"assistant",type:n.type,createdAt:n.timestamp instanceof Date?n.timestamp.toISOString():n.timestamp,conversationId:t},n.metaContent&&{metaContent:n.metaContent})});var id={exports:{}};/*!
118
118
  * @license Copyright 2015-2022 Ably Real-time Ltd (ably.com)
119
119
  *
120
120
  * Ably JavaScript Library v1.2.50
@@ -134,7 +134,7 @@ Please report this to https://github.com/markedjs/marked.`,e){const r="<p>An err
134
134
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
135
135
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
136
136
  PERFORMANCE OF THIS SOFTWARE.
137
- ***************************************************************************** */var i=function(T,I){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(A,D){A.__proto__=D}||function(A,D){for(var B in D)Object.prototype.hasOwnProperty.call(D,B)&&(A[B]=D[B])},i(T,I)};function a(T,I){if(typeof I!="function"&&I!==null)throw new TypeError("Class extends value "+String(I)+" is not a constructor or null");i(T,I);function A(){this.constructor=T}T.prototype=I===null?Object.create(I):(A.prototype=I.prototype,new A)}var l=function(){return l=Object.assign||function(I){for(var A,D=1,B=arguments.length;D<B;D++){A=arguments[D];for(var z in A)Object.prototype.hasOwnProperty.call(A,z)&&(I[z]=A[z])}return I},l.apply(this,arguments)};function d(T,I){var A={};for(var D in T)Object.prototype.hasOwnProperty.call(T,D)&&I.indexOf(D)<0&&(A[D]=T[D]);if(T!=null&&typeof Object.getOwnPropertySymbols=="function")for(var B=0,D=Object.getOwnPropertySymbols(T);B<D.length;B++)I.indexOf(D[B])<0&&Object.prototype.propertyIsEnumerable.call(T,D[B])&&(A[D[B]]=T[D[B]]);return A}function g(T,I,A,D){var B=arguments.length,z=B<3?I:D===null?D=Object.getOwnPropertyDescriptor(I,A):D,$;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")z=Reflect.decorate(T,I,A,D);else for(var V=T.length-1;V>=0;V--)($=T[V])&&(z=(B<3?$(z):B>3?$(I,A,z):$(I,A))||z);return B>3&&z&&Object.defineProperty(I,A,z),z}function S(T,I){return function(A,D){I(A,D,T)}}function R(T,I){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(T,I)}function y(T,I,A,D){function B(z){return z instanceof A?z:new A(function($){$(z)})}return new(A||(A=Promise))(function(z,$){function V(L){try{O(D.next(L))}catch(U){$(U)}}function F(L){try{O(D.throw(L))}catch(U){$(U)}}function O(L){L.done?z(L.value):B(L.value).then(V,F)}O((D=D.apply(T,I||[])).next())})}function E(T,I){var A={label:0,sent:function(){if(z[0]&1)throw z[1];return z[1]},trys:[],ops:[]},D,B,z,$;return $={next:V(0),throw:V(1),return:V(2)},typeof Symbol=="function"&&($[Symbol.iterator]=function(){return this}),$;function V(O){return function(L){return F([O,L])}}function F(O){if(D)throw new TypeError("Generator is already executing.");for(;A;)try{if(D=1,B&&(z=O[0]&2?B.return:O[0]?B.throw||((z=B.return)&&z.call(B),0):B.next)&&!(z=z.call(B,O[1])).done)return z;switch(B=0,z&&(O=[O[0]&2,z.value]),O[0]){case 0:case 1:z=O;break;case 4:return A.label++,{value:O[1],done:!1};case 5:A.label++,B=O[1],O=[0];continue;case 7:O=A.ops.pop(),A.trys.pop();continue;default:if(z=A.trys,!(z=z.length>0&&z[z.length-1])&&(O[0]===6||O[0]===2)){A=0;continue}if(O[0]===3&&(!z||O[1]>z[0]&&O[1]<z[3])){A.label=O[1];break}if(O[0]===6&&A.label<z[1]){A.label=z[1],z=O;break}if(z&&A.label<z[2]){A.label=z[2],A.ops.push(O);break}z[2]&&A.ops.pop(),A.trys.pop();continue}O=I.call(T,A)}catch(L){O=[6,L],B=0}finally{D=z=0}if(O[0]&5)throw O[1];return{value:O[0]?O[1]:void 0,done:!0}}}var u=Object.create?function(T,I,A,D){D===void 0&&(D=A),Object.defineProperty(T,D,{enumerable:!0,get:function(){return I[A]}})}:function(T,I,A,D){D===void 0&&(D=A),T[D]=I[A]};function C(T,I){for(var A in T)A!=="default"&&!Object.prototype.hasOwnProperty.call(I,A)&&u(I,T,A)}function M(T){var I=typeof Symbol=="function"&&Symbol.iterator,A=I&&T[I],D=0;if(A)return A.call(T);if(T&&typeof T.length=="number")return{next:function(){return T&&D>=T.length&&(T=void 0),{value:T&&T[D++],done:!T}}};throw new TypeError(I?"Object is not iterable.":"Symbol.iterator is not defined.")}function x(T,I){var A=typeof Symbol=="function"&&T[Symbol.iterator];if(!A)return T;var D=A.call(T),B,z=[],$;try{for(;(I===void 0||I-- >0)&&!(B=D.next()).done;)z.push(B.value)}catch(V){$={error:V}}finally{try{B&&!B.done&&(A=D.return)&&A.call(D)}finally{if($)throw $.error}}return z}function p(){for(var T=[],I=0;I<arguments.length;I++)T=T.concat(x(arguments[I]));return T}function m(){for(var T=0,I=0,A=arguments.length;I<A;I++)T+=arguments[I].length;for(var D=Array(T),B=0,I=0;I<A;I++)for(var z=arguments[I],$=0,V=z.length;$<V;$++,B++)D[B]=z[$];return D}function b(T,I,A){if(A||arguments.length===2)for(var D=0,B=I.length,z;D<B;D++)(z||!(D in I))&&(z||(z=Array.prototype.slice.call(I,0,D)),z[D]=I[D]);return T.concat(z||Array.prototype.slice.call(I))}function h(T){return this instanceof h?(this.v=T,this):new h(T)}function f(T,I,A){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var D=A.apply(T,I||[]),B,z=[];return B={},$("next"),$("throw"),$("return"),B[Symbol.asyncIterator]=function(){return this},B;function $(_){D[_]&&(B[_]=function(W){return new Promise(function(Q,X){z.push([_,W,Q,X])>1||V(_,W)})})}function V(_,W){try{F(D[_](W))}catch(Q){U(z[0][3],Q)}}function F(_){_.value instanceof h?Promise.resolve(_.value.v).then(O,L):U(z[0][2],_)}function O(_){V("next",_)}function L(_){V("throw",_)}function U(_,W){_(W),z.shift(),z.length&&V(z[0][0],z[0][1])}}function c(T){var I,A;return I={},D("next"),D("throw",function(B){throw B}),D("return"),I[Symbol.iterator]=function(){return this},I;function D(B,z){I[B]=T[B]?function($){return(A=!A)?{value:h(T[B]($)),done:B==="return"}:z?z($):$}:z}}function s(T){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var I=T[Symbol.asyncIterator],A;return I?I.call(T):(T=typeof M=="function"?M(T):T[Symbol.iterator](),A={},D("next"),D("throw"),D("return"),A[Symbol.asyncIterator]=function(){return this},A);function D(z){A[z]=T[z]&&function($){return new Promise(function(V,F){$=T[z]($),B(V,F,$.done,$.value)})}}function B(z,$,V,F){Promise.resolve(F).then(function(O){z({value:O,done:V})},$)}}function w(T,I){return Object.defineProperty?Object.defineProperty(T,"raw",{value:I}):T.raw=I,T}var v=Object.create?function(T,I){Object.defineProperty(T,"default",{enumerable:!0,value:I})}:function(T,I){T.default=I};function k(T){if(T&&T.__esModule)return T;var I={};if(T!=null)for(var A in T)A!=="default"&&Object.prototype.hasOwnProperty.call(T,A)&&u(I,T,A);return v(I,T),I}function j(T){return T&&T.__esModule?T:{default:T}}function N(T,I,A,D){if(A==="a"&&!D)throw new TypeError("Private accessor was defined without a getter");if(typeof I=="function"?T!==I||!D:!I.has(T))throw new TypeError("Cannot read private member from an object whose class did not declare it");return A==="m"?D:A==="a"?D.call(T):D?D.value:I.get(T)}function P(T,I,A,D,B){if(D==="m")throw new TypeError("Private method is not writable");if(D==="a"&&!B)throw new TypeError("Private accessor was defined without a setter");if(typeof I=="function"?T!==I||!B:!I.has(T))throw new TypeError("Cannot write private member to an object whose class did not declare it");return D==="a"?B.call(T,A):B?B.value=A:I.set(T,A),A}},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0}),r.allToUpperCase=r.allToLowerCase=r.encodeBody=r.decodeBody=r.Format=r.promisify=r.trim=r.arrChooseN=r.randomHexString=r.randomString=r.cheapRandStr=r.dataSizeBytes=r.inspectBody=r.inspectError=r.isErrorInfoOrPartialErrorInfo=r.now=r.parseQueryString=r.toQueryString=r.arrPopRandomElement=r.defaultPostHeaders=r.defaultGetHeaders=r.allSame=r.arrEvery=r.arrFilter=r.arrMap=r.safeArrForEach=r.arrForEach=r.forInOwnNonNullProperties=r.valuesArray=r.keysArray=r.arrWithoutValue=r.arrDeleteValue=r.arrIn=r.arrIndexOf=r.arrSubtract=r.arrIntersectOb=r.arrIntersect=r.intersect=r.containsValue=r.inherits=r.prototypicalClone=r.shallowClone=r.isEmptyArg=r.isOnlyPropIn=r.isEmpty=r.isObject=r.ensureArray=r.isArray=r.copy=r.mixin=void 0,r.arrEquals=r.toBase64=r.matchDerivedChannel=r.shallowEquals=r.getGlobalObject=r.getRetryTime=r.getJitterCoefficient=r.getBackoffCoefficient=void 0;var a=o(0),l=a.__importDefault(o(3)),d=a.__importStar(o(8)),g=a.__importDefault(o(4)),S=o(11),R=o(31);function y(H){return Math.floor(Math.random()*H.length)}function E(H){for(var K=[],Y=1;Y<arguments.length;Y++)K[Y-1]=arguments[Y];for(var te=0;te<K.length;te++){var ie=K[te];if(!ie)break;var qe=Object.prototype.hasOwnProperty;for(var Qr in ie)(!qe||qe.call(ie,Qr))&&(H[Qr]=ie[Qr])}return H}r.mixin=E;function u(H){return E({},H)}r.copy=u,r.isArray=Array.isArray||function(H){return Object.prototype.toString.call(H)=="[object Array]"};function C(H){return m(H)?[]:(0,r.isArray)(H)?H:[H]}r.ensureArray=C;function M(H){return Object.prototype.toString.call(H)=="[object Object]"}r.isObject=M;function x(H){for(var K in H)return!1;return!0}r.isEmpty=x;function p(H,K){for(var Y in H)if(Y!==K)return!1;return!0}r.isOnlyPropIn=p;function m(H){return H==null}r.isEmptyArg=m;function b(H){var K=new Object;for(var Y in H)K[Y]=H[Y];return K}r.shallowClone=b;function h(H,K){var Y=function(){function ie(){}return ie}();Y.prototype=H;var te=new Y;return K&&E(te,K),te}r.prototypicalClone=h;var f=function(H,K){if(l.default.Config.inherits){l.default.Config.inherits(H,K);return}H.super_=K,H.prototype=h(K.prototype,{constructor:H})};r.inherits=f;function c(H,K){for(var Y in H)if(H[Y]==K)return!0;return!1}r.containsValue=c;function s(H,K){return(0,r.isArray)(K)?w(H,K):v(H,K)}r.intersect=s;function w(H,K){for(var Y=[],te=0;te<H.length;te++){var ie=H[te];(0,r.arrIndexOf)(K,ie)!=-1&&Y.push(ie)}return Y}r.arrIntersect=w;function v(H,K){for(var Y=[],te=0;te<H.length;te++){var ie=H[te];ie in K&&Y.push(ie)}return Y}r.arrIntersectOb=v;function k(H,K){for(var Y=[],te=0;te<H.length;te++){var ie=H[te];(0,r.arrIndexOf)(K,ie)==-1&&Y.push(ie)}return Y}r.arrSubtract=k,r.arrIndexOf=Array.prototype.indexOf?function(H,K,Y){return H.indexOf(K,Y)}:function(H,K,Y){Y=Y||0;for(var te=H.length;Y<te;Y++)if(H[Y]===K)return Y;return-1};function j(H,K){return(0,r.arrIndexOf)(H,K)!==-1}r.arrIn=j;function N(H,K){var Y=(0,r.arrIndexOf)(H,K),te=Y!=-1;return te&&H.splice(Y,1),te}r.arrDeleteValue=N;function P(H,K){var Y=H.slice();return N(Y,K),Y}r.arrWithoutValue=P;function T(H,K){var Y=[];for(var te in H)K&&!Object.prototype.hasOwnProperty.call(H,te)||Y.push(te);return Y}r.keysArray=T;function I(H,K){var Y=[];for(var te in H)K&&!Object.prototype.hasOwnProperty.call(H,te)||Y.push(H[te]);return Y}r.valuesArray=I;function A(H,K){for(var Y in H)Object.prototype.hasOwnProperty.call(H,Y)&&H[Y]&&K(Y)}r.forInOwnNonNullProperties=A,r.arrForEach=Array.prototype.forEach?function(H,K){H.forEach(K)}:function(H,K){for(var Y=H.length,te=0;te<Y;te++)K(H[te],te,H)};function D(H,K){return(0,r.arrForEach)(H.slice(),K)}r.safeArrForEach=D,r.arrMap=Array.prototype.map?function(H,K){return H.map(K)}:function(H,K){for(var Y=[],te=H.length,ie=0;ie<te;ie++)Y.push(K(H[ie],ie,H));return Y},r.arrFilter=Array.prototype.filter?function(H,K){return H.filter(K)}:function(H,K){for(var Y=[],te=H.length,ie=0;ie<te;ie++)K(H[ie])&&Y.push(H[ie]);return Y},r.arrEvery=Array.prototype.every?function(H,K){return H.every(K)}:function(H,K){for(var Y=H.length,te=0;te<Y;te++)if(!K(H[te],te,H))return!1;return!0};function B(H,K){if(H.length===0)return!0;var Y=H[0][K];return(0,r.arrEvery)(H,function(te){return te[K]===Y})}r.allSame=B;var z={json:"application/json",jsonp:"application/javascript",xml:"application/xml",html:"text/html",msgpack:"application/x-msgpack"};function $(H,K){var Y=z[K||ye.json];return{accept:Y,"X-Ably-Version":d.default.protocolVersion.toString(),"Ably-Agent":(0,d.getAgentString)(H)}}r.defaultGetHeaders=$;function V(H,K){var Y,te=Y=z[K||ye.json];return{accept:te,"content-type":Y,"X-Ably-Version":d.default.protocolVersion.toString(),"Ably-Agent":(0,d.getAgentString)(H)}}r.defaultPostHeaders=V;function F(H){return H.splice(y(H),1)[0]}r.arrPopRandomElement=F;function O(H){var K=[];if(H)for(var Y in H)K.push(encodeURIComponent(Y)+"="+encodeURIComponent(H[Y]));return K.length?"?"+K.join("&"):""}r.toQueryString=O;function L(H){for(var K,Y=/([^?&=]+)=?([^&]*)/g,te={};K=Y.exec(H);)te[decodeURIComponent(K[1])]=decodeURIComponent(K[2]);return te}r.parseQueryString=L,r.now=Date.now||function(){return new Date().getTime()};function U(H){return typeof H=="object"&&H!==null&&(H.constructor.name=="ErrorInfo"||H.constructor.name=="PartialErrorInfo")}r.isErrorInfoOrPartialErrorInfo=U;function _(H){var K,Y;return H instanceof Error||((K=H==null?void 0:H.constructor)===null||K===void 0?void 0:K.name)==="ErrorInfo"||((Y=H==null?void 0:H.constructor)===null||Y===void 0?void 0:Y.name)==="PartialErrorInfo"?H.toString():l.default.Config.inspect(H)}r.inspectError=_;function W(H){return l.default.BufferUtils.isBuffer(H)?H.toString():typeof H=="string"?H:l.default.Config.inspect(H)}r.inspectBody=W;function Q(H){if(l.default.BufferUtils.isBuffer(H))return l.default.BufferUtils.byteLength(H);if(typeof H=="string")return l.default.Config.stringByteSize(H);throw new Error("Expected input of Utils.dataSizeBytes to be a buffer or string, but was: "+typeof H)}r.dataSizeBytes=Q;function X(){return String(Math.random()).substr(2)}r.cheapRandStr=X;var ne=function(H){if(l.default.Config.getRandomValues&&typeof Uint8Array!="undefined"){var K=new Uint8Array(H);return l.default.Config.getRandomValues(K),l.default.BufferUtils.base64Encode(K)}for(var Y=l.default.BufferUtils.base64CharSet,te=Math.round(H*4/3),ie="",qe=0;qe<te;qe++)ie+=Y[y(Y)];return ie};r.randomString=ne;var re=function(H){if(l.default.Config.getRandomValues&&typeof Uint8Array!="undefined"){var K=new Uint8Array(H);return l.default.Config.getRandomValues(K),l.default.BufferUtils.hexEncode(K)}for(var Y=l.default.BufferUtils.hexCharSet,te=H*2,ie="",qe=0;qe<te;qe++)ie+=Y[y(Y)];return ie};r.randomHexString=re;function ce(H,K){for(var Y=Math.min(K,H.length),te=H.slice(),ie=[],qe=0;qe<Y;qe++)ie.push(F(te));return ie}r.arrChooseN=ce,r.trim=String.prototype.trim?function(H){return H.trim()}:function(H){return H.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};function q(H,K,Y){return new Promise(function(te,ie){H[K].apply(H,a.__spreadArray(a.__spreadArray([],Y,!1),[function(qe,Qr){qe?ie(qe):te(Qr)}],!1))})}r.promisify=q;var ye;(function(H){H.msgpack="msgpack",H.json="json"})(ye=r.Format||(r.Format={}));function De(H,K){return K=="msgpack"?l.default.Config.msgpack.decode(H):JSON.parse(String(H))}r.decodeBody=De;function Ve(H,K){return K=="msgpack"?l.default.Config.msgpack.encode(H,!0):JSON.stringify(H)}r.encodeBody=Ve;function Ae(H){return H.map(function(K){return K&&K.toLowerCase()})}r.allToLowerCase=Ae;function zt(H){return H.map(function(K){return K&&K.toUpperCase()})}r.allToUpperCase=zt;function ki(H){return Math.min((H+2)/3,2)}r.getBackoffCoefficient=ki;function xt(){return 1-Math.random()*.2}r.getJitterCoefficient=xt;function Ei(H,K){return H*ki(K)*xt()}r.getRetryTime=Ei;function nl(){return i||(typeof window!="undefined"?window:self)}r.getGlobalObject=nl;function rl(H,K){return Object.keys(H).every(function(Y){return H[Y]===K[Y]})&&Object.keys(K).every(function(Y){return K[Y]===H[Y]})}r.shallowEquals=rl;function qg(H){var K=/^(\[([^?]*)(?:(.*))\])?(.+)$/,Y=H.match(K);if(!Y||!Y.length||Y.length<5)throw new g.default("regex match failed",400,40010);if(Y[2])throw new g.default("cannot use a derived option with a ".concat(Y[2]," channel"),400,40010);return{qualifierParam:Y[3]||"",channelName:Y[4]}}r.matchDerivedChannel=qg;function em(H){return l.default.Config.createHmac?Buffer.from(H,"ascii").toString("base64"):(0,S.stringify)((0,R.parse)(H))}r.toBase64=em;function tm(H,K){return H.length===K.length&&(0,r.arrEvery)(H,function(Y,te){return Y===K[te]})}r.arrEquals=tm}).call(this,o(13))},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importDefault(o(3)),d=i||(typeof window!="undefined"?window:self),g;(function(u){u[u.None=0]="None",u[u.Error=1]="Error",u[u.Major=2]="Major",u[u.Minor=3]="Minor",u[u.Micro=4]="Micro"})(g||(g={}));function S(u,C){return"".concat(u).padStart(C?3:2,"0")}function R(u){return l.default.Config.logTimestamps?function(C){var M=new Date;u(S(M.getHours())+":"+S(M.getMinutes())+":"+S(M.getSeconds())+"."+S(M.getMilliseconds(),1)+" "+C)}:u}var y=function(){var u,C,M,x;return typeof Window=="undefined"&&typeof WorkerGlobalScope=="undefined"||typeof((C=(u=d==null?void 0:d.console)===null||u===void 0?void 0:u.log)===null||C===void 0?void 0:C.apply)=="function"?(M=function(){for(var p=[],m=0;m<arguments.length;m++)p[m]=arguments[m];console.log.apply(console,p)},x=console.warn?function(){for(var p=[],m=0;m<arguments.length;m++)p[m]=arguments[m];console.warn.apply(console,p)}:M):d!=null&&d.console.log?M=x=function(){Function.prototype.apply.call(console.log,console,arguments)}:M=x=function(){},[M,x].map(R)},E=function(){function u(){u.logLevel=u.LOG_DEFAULT}return u.initLogHandlers=function(){var C=y(),M=C[0],x=C[1];this.logHandler=M,this.logErrorHandler=x},u.renamedClientOption=function(C,M){u.deprecationWarning("The `".concat(C,"` client option has been renamed to `").concat(M,"`. Please update your code to use `").concat(M,"` instead. `").concat(C,"` will be removed in a future version."))},u.renamedMethod=function(C,M,x){u.deprecationWarning("`".concat(C,"`’s `").concat(M,"` method has been renamed to `").concat(x,"`. Please update your code to use `").concat(x,"` instead. `").concat(M,"` will be removed in a future version."))},u.deprecationWarning=function(C){u.shouldLog(g.Error)&&u.logErrorHandler("Ably: Deprecation warning - ".concat(C))},u.logLevel=g.Error,u.LOG_NONE=g.None,u.LOG_ERROR=g.Error,u.LOG_MAJOR=g.Major,u.LOG_MINOR=g.Minor,u.LOG_MICRO=g.Micro,u.LOG_DEFAULT=g.Error,u.LOG_DEBUG=g.Micro,u.logAction=function(C,M,x){u.shouldLog(C)&&(C===g.Error?u.logErrorHandler:u.logHandler)("Ably: "+M+": "+x)},u.deprecated=function(C,M){u.deprecationWarning("".concat(C," is deprecated and will be removed in a future version. ").concat(M))},u.shouldLog=function(C){return C<=u.logLevel},u.setLog=function(C,M){C!==void 0&&(u.logLevel=C),M!==void 0&&(u.logHandler=u.logErrorHandler=M)},u}();r.default=E}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function a(){}return a}();r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.PartialErrorInfo=void 0;var i=o(0),a=i.__importDefault(o(3)),l=i.__importStar(o(1));function d(R){var y="["+R.constructor.name;return R.message&&(y+=": "+R.message),R.statusCode&&(y+="; statusCode="+R.statusCode),R.code&&(y+="; code="+R.code),R.cause&&(y+="; cause="+l.inspectError(R.cause)),R.href&&!(R.message&&R.message.indexOf("help.ably.io")>-1)&&(y+="; see "+R.href+" "),y+="]",y}var g=function(R){i.__extends(y,R);function y(E,u,C,M){var x=R.call(this,E)||this;return typeof Object.setPrototypeOf!="undefined"&&Object.setPrototypeOf(x,y.prototype),x.code=u,x.statusCode=C,x.cause=M,x}return y.prototype.toString=function(){return d(this)},y.fromValues=function(E){var u=E,C=u.message,M=u.code,x=u.statusCode;if(typeof C!="string"||typeof M!="number"||typeof x!="number")throw new Error("ErrorInfo.fromValues(): invalid values: "+a.default.Config.inspect(E));var p=Object.assign(new y(C,M,x),E);return p.code&&!p.href&&(p.href="https://help.ably.io/error/"+p.code),p},y}(Error);r.default=g;var S=function(R){i.__extends(y,R);function y(E,u,C,M){var x=R.call(this,E)||this;return typeof Object.setPrototypeOf!="undefined"&&Object.setPrototypeOf(x,y.prototype),x.code=u,x.statusCode=C,x.cause=M,x}return y.prototype.toString=function(){return d(this)},y}(Error);r.PartialErrorInfo=S},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){if(typeof ArrayBuffer=="function"){var a=i,l=a.lib,d=l.WordArray,g=d.init,S=d.init=function(R){if(R instanceof ArrayBuffer&&(R=new Uint8Array(R)),(R instanceof Int8Array||typeof Uint8ClampedArray!="undefined"&&R instanceof Uint8ClampedArray||R instanceof Int16Array||R instanceof Uint16Array||R instanceof Int32Array||R instanceof Uint32Array||R instanceof Float32Array||R instanceof Float64Array)&&(R=new Uint8Array(R.buffer,R.byteOffset,R.byteLength)),R instanceof Uint8Array){for(var y=R.byteLength,E=[],u=0;u<y;u++)E[u>>>2]|=R[u]<<24-u%4*8;g.call(this,E,y)}else g.apply(this,arguments)};S.prototype=d}}(),i.lib.WordArray})},function(n,r,o){(function(i){(function(a,l){n.exports=l()})(this,function(){var a=a||function(l,d){var g;if(typeof window!="undefined"&&window.crypto&&(g=window.crypto),!g&&typeof window!="undefined"&&window.msCrypto&&(g=window.msCrypto),!g&&typeof i!="undefined"&&i.crypto&&(g=i.crypto),!g)try{g=o(44)}catch(f){}var S=function(){if(g){if(typeof g.getRandomValues=="function")try{return g.getRandomValues(new Uint32Array(1))[0]}catch(f){}if(typeof g.randomBytes=="function")try{return g.randomBytes(4).readInt32LE()}catch(f){}}throw new Error("Native crypto module could not be used to get secure random number.")},R=Object.create||function(){function f(){}return function(c){var s;return f.prototype=c,s=new f,f.prototype=null,s}}(),y={},E=y.lib={},u=E.Base=function(){return{extend:function(f){var c=R(this);return f&&c.mixIn(f),(!c.hasOwnProperty("init")||this.init===c.init)&&(c.init=function(){c.$super.init.apply(this,arguments)}),c.init.prototype=c,c.$super=this,c},create:function(){var f=this.extend();return f.init.apply(f,arguments),f},init:function(){},mixIn:function(f){for(var c in f)f.hasOwnProperty(c)&&(this[c]=f[c]);f.hasOwnProperty("toString")&&(this.toString=f.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),C=E.WordArray=u.extend({init:function(f,c){f=this.words=f||[],c!=d?this.sigBytes=c:this.sigBytes=f.length*4},toString:function(f){return(f||x).stringify(this)},concat:function(f){var c=this.words,s=f.words,w=this.sigBytes,v=f.sigBytes;if(this.clamp(),w%4)for(var k=0;k<v;k++){var j=s[k>>>2]>>>24-k%4*8&255;c[w+k>>>2]|=j<<24-(w+k)%4*8}else for(var k=0;k<v;k+=4)c[w+k>>>2]=s[k>>>2];return this.sigBytes+=v,this},clamp:function(){var f=this.words,c=this.sigBytes;f[c>>>2]&=4294967295<<32-c%4*8,f.length=l.ceil(c/4)},clone:function(){var f=u.clone.call(this);return f.words=this.words.slice(0),f},random:function(f){for(var c=[],s=0;s<f;s+=4)c.push(S());return new C.init(c,f)}}),M=y.enc={},x=M.Hex={stringify:function(f){for(var c=f.words,s=f.sigBytes,w=[],v=0;v<s;v++){var k=c[v>>>2]>>>24-v%4*8&255;w.push((k>>>4).toString(16)),w.push((k&15).toString(16))}return w.join("")},parse:function(f){for(var c=f.length,s=[],w=0;w<c;w+=2)s[w>>>3]|=parseInt(f.substr(w,2),16)<<24-w%8*4;return new C.init(s,c/2)}},p=M.Latin1={stringify:function(f){for(var c=f.words,s=f.sigBytes,w=[],v=0;v<s;v++){var k=c[v>>>2]>>>24-v%4*8&255;w.push(String.fromCharCode(k))}return w.join("")},parse:function(f){for(var c=f.length,s=[],w=0;w<c;w++)s[w>>>2]|=(f.charCodeAt(w)&255)<<24-w%4*8;return new C.init(s,c)}},m=M.Utf8={stringify:function(f){try{return decodeURIComponent(escape(p.stringify(f)))}catch(c){throw new Error("Malformed UTF-8 data")}},parse:function(f){return p.parse(unescape(encodeURIComponent(f)))}},b=E.BufferedBlockAlgorithm=u.extend({reset:function(){this._data=new C.init,this._nDataBytes=0},_append:function(f){typeof f=="string"&&(f=m.parse(f)),this._data.concat(f),this._nDataBytes+=f.sigBytes},_process:function(f){var c,s=this._data,w=s.words,v=s.sigBytes,k=this.blockSize,j=k*4,N=v/j;f?N=l.ceil(N):N=l.max((N|0)-this._minBufferSize,0);var P=N*k,T=l.min(P*4,v);if(P){for(var I=0;I<P;I+=k)this._doProcessBlock(w,I);c=w.splice(0,P),s.sigBytes-=T}return new C.init(c,T)},clone:function(){var f=u.clone.call(this);return f._data=this._data.clone(),f},_minBufferSize:0});E.Hasher=b.extend({cfg:u.extend(),init:function(f){this.cfg=this.cfg.extend(f),this.reset()},reset:function(){b.reset.call(this),this._doReset()},update:function(f){return this._append(f),this._process(),this},finalize:function(f){f&&this._append(f);var c=this._doFinalize();return c},blockSize:16,_createHelper:function(f){return function(c,s){return new f.init(s).finalize(c)}},_createHmacHelper:function(f){return function(c,s){return new h.HMAC.init(f,s).finalize(c)}}});var h=y.algo={};return y}(Math);return a})}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(2)),d=i.__importDefault(o(3));function g(y,E,u){try{E.apply(y,u)}catch(C){l.default.logAction(l.default.LOG_ERROR,"EventEmitter.emit()","Unexpected listener exception: "+C+"; stack = "+(C&&C.stack))}}function S(y,E,u){for(var C,M,x,p=0;p<y.length;p++)if(C=y[p],u&&(C=C[u]),a.isArray(C)){for(;(M=a.arrIndexOf(C,E))!==-1;)C.splice(M,1);u&&C.length===0&&delete y[p][u]}else if(a.isObject(C))for(x in C)Object.prototype.hasOwnProperty.call(C,x)&&a.isArray(C[x])&&S([C],E,x)}var R=function(){function y(){this.any=[],this.events=Object.create(null),this.anyOnce=[],this.eventsOnce=Object.create(null)}return y.prototype.on=function(){for(var E=this,u=[],C=0;C<arguments.length;C++)u[C]=arguments[C];if(u.length===1){var M=u[0];if(typeof M=="function")this.any.push(M);else throw new Error("EventListener.on(): Invalid arguments: "+d.default.Config.inspect(u))}if(u.length===2){var x=u[0],p=u[1];if(typeof p!="function")throw new Error("EventListener.on(): Invalid arguments: "+d.default.Config.inspect(u));if(a.isEmptyArg(x))this.any.push(p);else if(a.isArray(x))x.forEach(function(b){E.on(b,p)});else{if(typeof x!="string")throw new Error("EventListener.on(): Invalid arguments: "+d.default.Config.inspect(u));var m=this.events[x]||(this.events[x]=[]);m.push(p)}}},y.prototype.off=function(){for(var E,u=this,C=[],M=0;M<arguments.length;M++)C[M]=arguments[M];if(C.length==0||a.isEmptyArg(C[0])&&a.isEmptyArg(C[1])){this.any=[],this.events=Object.create(null),this.anyOnce=[],this.eventsOnce=Object.create(null);return}var x=C[0],p=C[1],m=null,b=null;if(C.length===1||!p)typeof x=="function"?m=x:b=x;else{if(typeof p!="function")throw new Error("EventEmitter.off(): invalid arguments:"+d.default.Config.inspect(C));E=[x,p],b=E[0],m=E[1]}if(m&&a.isEmptyArg(b)){S([this.any,this.events,this.anyOnce,this.eventsOnce],m);return}if(a.isArray(b)){b.forEach(function(h){u.off(h,m)});return}if(typeof b!="string")throw new Error("EventEmitter.off(): invalid arguments:"+d.default.Config.inspect(C));m?S([this.events,this.eventsOnce],m,b):(delete this.events[b],delete this.eventsOnce[b])},y.prototype.listeners=function(E){if(E){var u=this.events[E]||[];return this.eventsOnce[E]&&Array.prototype.push.apply(u,this.eventsOnce[E]),u.length?u:null}return this.any.length?this.any:null},y.prototype.emit=function(E){for(var u=[],C=1;C<arguments.length;C++)u[C-1]=arguments[C];var M={event:E},x=[];this.anyOnce.length&&(Array.prototype.push.apply(x,this.anyOnce),this.anyOnce=[]),this.any.length&&Array.prototype.push.apply(x,this.any);var p=this.eventsOnce[E];p&&(Array.prototype.push.apply(x,p),delete this.eventsOnce[E]);var m=this.events[E];m&&Array.prototype.push.apply(x,m),a.arrForEach(x,function(b){g(M,b,u)})},y.prototype.once=function(){for(var E=this,u=[],C=0;C<arguments.length;C++)u[C]=arguments[C];var M=u.length;if((M===0||M===1&&typeof u[0]!="function")&&d.default.Config.Promise){var x=u[0];return new d.default.Config.Promise(function(c){E.once(x,c)})}var p=u[0],m=u[1];if(u.length===1&&typeof p=="function")this.anyOnce.push(p);else if(a.isEmptyArg(p)){if(typeof m!="function")throw new Error("EventEmitter.once(): Invalid arguments:"+d.default.Config.inspect(u));this.anyOnce.push(m)}else if(a.isArray(p)){var b=this,h=function(){var c=Array.prototype.slice.call(arguments);if(a.arrForEach(p,function(s){b.off(s,h)}),typeof m!="function")throw new Error("EventEmitter.once(): Invalid arguments:"+d.default.Config.inspect(u));m.apply(this,c)};a.arrForEach(p,function(c){b.on(c,h)})}else{if(typeof p!="string")throw new Error("EventEmitter.once(): Invalid arguments:"+d.default.Config.inspect(u));var f=this.eventsOnce[p]||(this.eventsOnce[p]=[]);if(m){if(typeof m!="function")throw new Error("EventEmitter.once(): Invalid arguments:"+d.default.Config.inspect(u));f.push(m)}}},y.prototype.whenState=function(E,u,C){for(var M=this,x=[],p=3;p<arguments.length;p++)x[p-3]=arguments[p];var m={event:E};if(typeof E!="string"||typeof u!="string")throw"whenState requires a valid event String argument";if(typeof C!="function"&&d.default.Config.Promise)return new d.default.Config.Promise(function(b){y.prototype.whenState.apply(M,[E,u,b].concat(x))});E===u?g(m,C,x):this.once(E,C)},y}();r.default=R},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.getDefaults=r.normaliseOptions=r.objectifyOptions=r.getAgentString=r.getHosts=r.getFallbackHosts=r.environmentFallbackHosts=r.getHttpScheme=r.getPort=r.getHost=void 0;var i=o(0),a=i.__importDefault(o(3)),l=i.__importStar(o(1)),d=i.__importDefault(o(2)),g=i.__importDefault(o(4)),S=o(43),R="ably-js/"+S.version,y={ENVIRONMENT:"",REST_HOST:"rest.ably.io",REALTIME_HOST:"realtime.ably.io",FALLBACK_HOSTS:["A.ably-realtime.com","B.ably-realtime.com","C.ably-realtime.com","D.ably-realtime.com","E.ably-realtime.com"],PORT:80,TLS_PORT:443,TIMEOUTS:{disconnectedRetryTimeout:15e3,suspendedRetryTimeout:3e4,httpRequestTimeout:15e3,channelRetryTimeout:15e3,fallbackRetryTimeout:6e5,connectionStateTtl:12e4,realtimeRequestTimeout:1e4,recvTimeout:9e4,preferenceConnectTimeout:6e3,parallelUpgradeDelay:6e3},httpMaxRetryCount:3,maxMessageSize:65536,version:S.version,protocolVersion:2,agent:R,getHost:E,getPort:u,getHttpScheme:C,environmentFallbackHosts:M,getFallbackHosts:x,getHosts:p,checkHost:m,objectifyOptions:c,normaliseOptions:s};function E(v,k,j){return j?k=k==v.restHost&&v.realtimeHost||k||v.realtimeHost:k=k||v.restHost,k}r.getHost=E;function u(v,k){return k||v.tls?v.tlsPort:v.port}r.getPort=u;function C(v){return v.tls?"https://":"http://"}r.getHttpScheme=C;function M(v){return[v+"-a-fallback.ably-realtime.com",v+"-b-fallback.ably-realtime.com",v+"-c-fallback.ably-realtime.com",v+"-d-fallback.ably-realtime.com",v+"-e-fallback.ably-realtime.com"]}r.environmentFallbackHosts=M;function x(v){var k=v.fallbackHosts,j=typeof v.httpMaxRetryCount!="undefined"?v.httpMaxRetryCount:y.httpMaxRetryCount;return k?l.arrChooseN(k,j):[]}r.getFallbackHosts=x;function p(v){return[v.restHost].concat(x(v))}r.getHosts=p;function m(v){if(typeof v!="string")throw new g.default("host must be a string; was a "+typeof v,4e4,400);if(!v.length)throw new g.default("host must not be zero-length",4e4,400)}function b(v,k,j){return v.realtimeHost?v.realtimeHost:v.restHost?(d.default.logAction(d.default.LOG_MINOR,"Defaults.normaliseOptions",'restHost is set to "'+v.restHost+'" but realtimeHost is not set, so setting realtimeHost to "'+v.restHost+'" too. If this is not what you want, please set realtimeHost explicitly.'),v.restHost):k?y.REALTIME_HOST:j+"-"+y.REALTIME_HOST}function h(v){var k={};for(var j in y.TIMEOUTS)k[j]=v[j]||y.TIMEOUTS[j];return k}function f(v){var k=y.agent;if(v.agents)for(var j in v.agents)k+=" "+j+"/"+v.agents[j];return k}r.getAgentString=f;function c(v){return typeof v=="string"?v.indexOf(":")==-1?{token:v}:{key:v}:v}r.objectifyOptions=c;function s(v){if(v.host&&(d.default.renamedClientOption("host","restHost"),v.restHost=v.host),v.wsHost&&(d.default.renamedClientOption("wsHost","realtimeHost"),v.realtimeHost=v.wsHost),v.queueEvents&&(d.default.renamedClientOption("queueEvents","queueMessages"),v.queueMessages=v.queueEvents),v.headers&&d.default.deprecated("the `headers` client option",""),v.fallbackHostsUseDefault){if(v.fallbackHosts){var k="fallbackHosts and fallbackHostsUseDefault cannot both be set";throw d.default.logAction(d.default.LOG_ERROR,"Defaults.normaliseOptions",k),new g.default(k,4e4,400)}if(v.port||v.tlsPort){var k="fallbackHostsUseDefault cannot be set when port or tlsPort are set";throw d.default.logAction(d.default.LOG_ERROR,"Defaults.normaliseOptions",k),new g.default(k,4e4,400)}v.environment?d.default.deprecated("The `fallbackHostsUseDefault` client option","If you’re using this client option to force the library to make use of fallback hosts even though you’ve set the `environment` client option, then this is no longer necessary: remove your usage of the `fallbackHostsUseDefault` client option and the library will then automatically choose the correct fallback hosts to use for the specified environment."):d.default.deprecated("The `fallbackHostsUseDefault` client option","If you’re using this client option to force the library to make use of fallback hosts even though you’re not using the primary Ably environment, then stop using `fallbackHostsUseDefault`, and update your code to either pass the `environment` client option (in which case the library will automatically choose the correct fallback hosts to use for the specified environment), or to pass the `fallbackHosts` client option to specify a custom list of fallback hosts to use (for example, if you’re using a custom CNAME, in which case Ably will have provided you with an explicit list of fallback hosts)."),v.fallbackHosts=y.FALLBACK_HOSTS}v.recover===!0&&(d.default.deprecated("The ability to use a boolean value for the `recover` client option","If you wish for the connection to always be recovered, replace `{ recover: true }` with a function that always passes `true` to its callback: `{ recover: function(lastConnectionDetails, cb) { cb(true); } }`"),v.recover=function(F,O){O(!0)}),typeof v.recover=="function"&&v.closeOnUnload===!0&&(d.default.logAction(d.default.LOG_ERROR,"Defaults.normaliseOptions","closeOnUnload was true and a session recovery function was set - these are mutually exclusive, so unsetting the latter"),v.recover=void 0),"closeOnUnload"in v||(v.closeOnUnload=!v.recover),v.transports&&l.arrIn(v.transports,"xhr")&&(d.default.deprecationWarning('The "xhr" transport has been renamed to "xhr_streaming". Please update your client options code to use `transports: ["xhr_streaming"]` instead. The ability to use `transports: ["xhr"]` will be removed in a future version.'),l.arrDeleteValue(v.transports,"xhr"),v.transports.push("xhr_streaming")),"queueMessages"in v||(v.queueMessages=!0);var j=v.environment&&String(v.environment).toLowerCase()||y.ENVIRONMENT,N=!j||j==="production";!v.fallbackHosts&&!v.restHost&&!v.realtimeHost&&!v.port&&!v.tlsPort&&(v.fallbackHosts=N?y.FALLBACK_HOSTS:M(j));var P=v.restHost||(N?y.REST_HOST:j+"-"+y.REST_HOST),T=b(v,N,j);l.arrForEach((v.fallbackHosts||[]).concat(P,T),m),v.port=v.port||y.PORT,v.tlsPort=v.tlsPort||y.TLS_PORT,"tls"in v||(v.tls=!0);var I=h(v);if("useBinaryProtocol"in v?v.useBinaryProtocol=a.default.Config.supportsBinary&&v.useBinaryProtocol:v.useBinaryProtocol=a.default.Config.preferBinary,v.clientId){var A=v.headers=v.headers||{};A["X-Ably-ClientId"]=a.default.BufferUtils.base64Encode(a.default.BufferUtils.utf8Encode(v.clientId))}"idempotentRestPublishing"in v||(v.idempotentRestPublishing=!0),v.promises&&!a.default.Config.Promise&&(d.default.logAction(d.default.LOG_ERROR,"Defaults.normaliseOptions","{promises: true} was specified, but no Promise constructor found; disabling promises"),v.promises=!1);var D=null,B=v.connectivityCheckUrl;if(v.connectivityCheckUrl){var z=v.connectivityCheckUrl.split("?"),$=z[0],V=z[1];D=V?l.parseQueryString(V):{},$.indexOf("://")===-1&&($="https://"+$),B=$}return i.__assign(i.__assign({},v),{useBinaryProtocol:"useBinaryProtocol"in v?a.default.Config.supportsBinary&&v.useBinaryProtocol:a.default.Config.preferBinary,realtimeHost:T,restHost:P,maxMessageSize:v.maxMessageSize||y.maxMessageSize,timeouts:I,connectivityCheckParams:D,connectivityCheckUrl:B})}r.normaliseOptions=s,r.default=y;function w(v){return Object.assign(y,v)}r.getDefaults=w},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(3)),l=i.__importDefault(o(2)),d=i.__importDefault(o(4)),g=i.__importStar(o(1));function S(u){return!u||!u.channelOptions?{channelOptions:u,plugins:{},baseEncodedPreviousPayload:void 0}:u}function R(u){if(u&&u.cipher){if(!a.default.Crypto)throw new Error("Encryption not enabled; use ably.encryption.js instead");var C=a.default.Crypto.getCipher(u.cipher);return{cipher:C.cipherParams,channelCipher:C.cipher}}return u!=null?u:{}}function y(u){var C=0;return u.name&&(C+=u.name.length),u.clientId&&(C+=u.clientId.length),u.extras&&(C+=JSON.stringify(u.extras).length),u.data&&(C+=g.dataSizeBytes(u.data)),C}var E=function(){function u(){}return u.prototype.toJSON=function(){var C=this.encoding,M=this.data;return M&&a.default.BufferUtils.isBuffer(M)&&(arguments.length>0?(C=C?C+"/base64":"base64",M=a.default.BufferUtils.base64Encode(M)):M=a.default.BufferUtils.toBuffer(M)),{name:this.name,id:this.id,clientId:this.clientId,connectionId:this.connectionId,connectionKey:this.connectionKey,extras:this.extras,encoding:C,data:M}},u.prototype.toString=function(){var C="[Message";return this.name&&(C+="; name="+this.name),this.id&&(C+="; id="+this.id),this.timestamp&&(C+="; timestamp="+this.timestamp),this.clientId&&(C+="; clientId="+this.clientId),this.connectionId&&(C+="; connectionId="+this.connectionId),this.encoding&&(C+="; encoding="+this.encoding),this.extras&&(C+="; extras ="+JSON.stringify(this.extras)),this.data&&(typeof this.data=="string"?C+="; data="+this.data:a.default.BufferUtils.isBuffer(this.data)?C+="; data (buffer)="+a.default.BufferUtils.base64Encode(this.data):C+="; data (json)="+JSON.stringify(this.data)),this.extras&&(C+="; extras="+JSON.stringify(this.extras)),C+="]",C},u.encrypt=function(C,M,x){var p=C.data,m=C.encoding,b=M.channelCipher;m=m?m+"/":"",a.default.BufferUtils.isBuffer(p)||(p=a.default.BufferUtils.utf8Encode(String(p)),m=m+"utf-8/"),b.encrypt(p,function(h,f){if(h){x(h);return}C.data=f,C.encoding=m+"cipher+"+b.algorithm,x(null,C)})},u.encode=function(C,M,x){var p=C.data,m=typeof p=="string"||a.default.BufferUtils.isBuffer(p)||p===null||p===void 0;if(!m)if(g.isObject(p)||g.isArray(p))C.data=JSON.stringify(p),C.encoding=C.encoding?C.encoding+"/json":"json";else throw new d.default("Data type is unsupported",40013,400);M!=null&&M.cipher?u.encrypt(C,M,x):x(null,C)},u.encodeArray=function(C,M,x){for(var p=0,m=0;m<C.length;m++)u.encode(C[m],M,function(b){if(b){x(b);return}p++,p==C.length&&x(null,C)})},u.decode=function(C,M){var x=S(M),p=C.data,m=C.encoding;if(m){var b=m.split("/"),h=void 0,f=b.length,c=C.data,s="";try{for(;(h=f)>0;){var w=b[--f].match(/([-\w]+)(\+([\w-]+))?/);if(!w)break;switch(s=w[1],s){case"base64":c=a.default.BufferUtils.base64Decode(String(c)),h==b.length&&(p=c);continue;case"utf-8":c=a.default.BufferUtils.utf8Decode(c);continue;case"json":c=JSON.parse(c);continue;case"cipher":if(x.channelOptions!=null&&x.channelOptions.cipher&&x.channelOptions.channelCipher){var v=w[3],k=x.channelOptions.channelCipher;if(v!=k.algorithm)throw new Error("Unable to decrypt message with given cipher; incompatible cipher params");c=k.decrypt(c);continue}else throw new Error("Unable to decrypt message; not an encrypted channel");case"vcdiff":if(!x.plugins||!x.plugins.vcdiff)throw new d.default("Missing Vcdiff decoder (https://github.com/ably-forks/vcdiff-decoder)",40019,400);if(typeof Uint8Array=="undefined")throw new d.default("Delta decoding not supported on this browser (need ArrayBuffer & Uint8Array)",40020,400);try{var j=x.baseEncodedPreviousPayload;typeof j=="string"&&(j=a.default.BufferUtils.utf8Encode(j)),j=a.default.BufferUtils.toBuffer(j),c=a.default.BufferUtils.toBuffer(c),c=a.default.BufferUtils.typedArrayToBuffer(x.plugins.vcdiff.decode(c,j)),p=c}catch(P){throw new d.default("Vcdiff delta decode failed with "+P,40018,400)}continue;default:throw new Error("Unknown encoding")}}}catch(P){var N=P;throw new d.default("Error processing the "+s+" encoding, decoder returned ‘"+N.message+"’",N.code||40013,400)}finally{C.encoding=h<=0?null:b.slice(0,h).join("/"),C.data=c}}x.baseEncodedPreviousPayload=p},u.fromResponseBody=function(C,M,x){x&&(C=g.decodeBody(C,x));for(var p=0;p<C.length;p++){var m=C[p]=u.fromValues(C[p]);try{u.decode(m,M)}catch(b){l.default.logAction(l.default.LOG_ERROR,"Message.fromResponseBody()",b.toString())}}return C},u.fromValues=function(C){return Object.assign(new u,C)},u.fromValuesArray=function(C){for(var M=C.length,x=new Array(M),p=0;p<M;p++)x[p]=u.fromValues(C[p]);return x},u.fromEncoded=function(C,M){var x=u.fromValues(C),p=R(M!=null?M:null);try{u.decode(x,p)}catch(m){l.default.logAction(l.default.LOG_ERROR,"Message.fromEncoded()",m.toString())}return x},u.fromEncodedArray=function(C,M){return C.map(function(x){return u.fromEncoded(x,M)})},u.getMessagesSize=function(C){for(var M,x=0,p=0;p<C.length;p++)M=C[p],x+=M.size||(M.size=y(M));return x},u.serialize=g.encodeBody,u}();r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(4)),d=i.__importDefault(o(9)),g=i.__importDefault(o(16)),S={HEARTBEAT:0,ACK:1,NACK:2,CONNECT:3,CONNECTED:4,DISCONNECT:5,DISCONNECTED:6,CLOSE:7,CLOSED:8,ERROR:9,ATTACH:10,ATTACHED:11,DETACH:12,DETACHED:13,PRESENCE:14,MESSAGE:15,SYNC:16,AUTH:17,ACTIVATE:18},R=[];Object.keys(S).forEach(function(x){R[S[x]]=x});var y={HAS_PRESENCE:1,HAS_BACKLOG:2,RESUMED:4,TRANSIENT:16,ATTACH_RESUME:32,PRESENCE:65536,PUBLISH:1<<17,SUBSCRIBE:1<<18,PRESENCE_SUBSCRIBE:1<<19},E=Object.keys(y);y.MODE_ALL=y.PRESENCE|y.PUBLISH|y.SUBSCRIBE|y.PRESENCE_SUBSCRIBE;function u(x){var p=[];if(x)for(var m=0;m<x.length;m++)p.push(x[m].toString());return"[ "+p.join(", ")+" ]"}var C="id channel channelSerial connectionId count msgSerial timestamp".split(" "),M=function(){function x(){var p=this;this.hasFlag=function(m){return(p.flags&y[m])>0}}return x.prototype.setFlag=function(p){return this.flags=this.flags|y[p]},x.prototype.getMode=function(){return this.flags&&this.flags&y.MODE_ALL},x.prototype.encodeModesToFlags=function(p){var m=this;p.forEach(function(b){return m.setFlag(b)})},x.prototype.decodeModesFromFlags=function(){var p=this,m=[];return x.channelModes.forEach(function(b){p.hasFlag(b)&&m.push(b)}),m.length>0?m:void 0},x.fromValues=function(p){return Object.assign(new x,p)},x.Action=S,x.channelModes=["PRESENCE","PUBLISH","SUBSCRIBE","PRESENCE_SUBSCRIBE"],x.ActionName=R,x.serialize=a.encodeBody,x.deserialize=function(p,m){var b=a.decodeBody(p,m);return x.fromDeserialized(b)},x.fromDeserialized=function(p){var m=p.error;m&&(p.error=l.default.fromValues(m));var b=p.messages;if(b)for(var h=0;h<b.length;h++)b[h]=d.default.fromValues(b[h]);var f=p.presence;if(f)for(var h=0;h<f.length;h++)f[h]=g.default.fromValues(f[h],!0);return Object.assign(new x,p)},x.stringify=function(p){var m="[ProtocolMessage";p.action!==void 0&&(m+="; action="+x.ActionName[p.action]||!1);for(var b,h=0;h<C.length;h++)b=C[h],p[b]!==void 0&&(m+="; "+b+"="+p[b]);if(p.messages&&(m+="; messages="+u(d.default.fromValuesArray(p.messages))),p.presence&&(m+="; presence="+u(g.default.fromValuesArray(p.presence))),p.error&&(m+="; error="+l.default.fromValues(p.error).toString()),p.auth&&p.auth.accessToken&&(m+="; token="+p.auth.accessToken),p.flags&&(m+="; flags="+E.filter(p.hasFlag).join(",")),p.params){var f="";a.forInOwnNonNullProperties(p.params,function(c){f.length>0&&(f+="; "),f+=c+"="+p.params[c]}),f.length>0&&(m+="; params=["+f+"]")}return m+="]",m},x}();r.default=M},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){var a=i,l=a.lib,d=l.WordArray,g=a.enc;g.Base64={stringify:function(R){var y=R.words,E=R.sigBytes,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";R.clamp();for(var C=[],M=0;M<E;M+=3)for(var x=y[M>>>2]>>>24-M%4*8&255,p=y[M+1>>>2]>>>24-(M+1)%4*8&255,m=y[M+2>>>2]>>>24-(M+2)%4*8&255,b=x<<16|p<<8|m,h=0;h<4&&M+h*.75<E;h++)C.push(u.charAt(b>>>6*(3-h)&63));var f=u.charAt(64);if(f)for(;C.length%4;)C.push(f);return C.join("")},parse:function(R){var y=R.length,E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var C=0;C<E.length;C++)u[E.charCodeAt(C)]=C}var M=E.charAt(64);if(M){var x=R.indexOf(M);x!==-1&&(y=x)}return S(R,y,u)}};function S(R,y,E){for(var u=[],C=0,M=0;M<y;M++)if(M%4){var x=E[R.charCodeAt(M-1)]<<M%4*2,p=E[R.charCodeAt(M)]>>>6-M%4*2,m=x|p;u[C>>>2]|=m<<24-C%4*8,C++}return d.create(u,C)}}(),i.enc.Base64})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(10)),d=i.__importDefault(o(26)),g=i.__importDefault(o(2)),S=i.__importDefault(o(8)),R=i.__importDefault(o(21)),y=i.__importDefault(o(18)),E=i.__importDefault(o(4)),u=i.__importDefault(o(22)),C=i.__importDefault(o(3));function M(m){var b=[80015,80017,80030];return m.code?y.default.isTokenErr(m)?!1:a.arrIn(b,m.code)?!0:m.code>=4e4&&m.code<5e4:!1}function x(m){return M(m)?[l.default.fromValues({action:l.default.Action.ERROR,error:m})]:[l.default.fromValues({action:l.default.Action.DISCONNECTED,error:m})]}var p=function(m){i.__extends(b,m);function b(h,f,c){var s=m.call(this,h,f,c,!0)||this;return s.onAuthUpdated=function(w){s.authParams={access_token:w.token}},s.stream="stream"in c?c.stream:!0,s.sendRequest=null,s.recvRequest=null,s.pendingCallback=null,s.pendingItems=null,s}return b.prototype.connect=function(){var h=this;g.default.logAction(g.default.LOG_MINOR,"CometTransport.connect()","starting"),d.default.prototype.connect.call(this);var f=this.params,c=f.options,s=S.default.getHost(c,f.host),w=S.default.getPort(c),v=c.tls?"https://":"http://";this.baseUri=v+s+":"+w+"/comet/";var k=this.baseUri+"connect";g.default.logAction(g.default.LOG_MINOR,"CometTransport.connect()","uri: "+k),this.auth.getAuthParams(function(j,N){if(j){h.disconnect(j);return}if(!h.isDisposed){h.authParams=N;var P=h.params.getConnectParams(N);"stream"in P&&(h.stream=P.stream),g.default.logAction(g.default.LOG_MINOR,"CometTransport.connect()","connectParams:"+a.toQueryString(P));var T=!1,I=h.recvRequest=h.createRequest(k,null,P,null,h.stream?u.default.REQ_RECV_STREAM:u.default.REQ_RECV);I.on("data",function(A){h.recvRequest&&(T||(T=!0,h.emit("preconnect")),h.onData(A))}),I.on("complete",function(A){if(h.recvRequest||(A=A||new E.default("Request cancelled",80003,400)),h.recvRequest=null,!T&&!A&&(T=!0,h.emit("preconnect")),h.onActivity(),A){A.code?h.onData(x(A)):h.disconnect(A);return}C.default.Config.nextTick(function(){h.recv()})}),I.exec()}})},b.prototype.requestClose=function(){g.default.logAction(g.default.LOG_MINOR,"CometTransport.requestClose()"),this._requestCloseOrDisconnect(!0)},b.prototype.requestDisconnect=function(){g.default.logAction(g.default.LOG_MINOR,"CometTransport.requestDisconnect()"),this._requestCloseOrDisconnect(!1)},b.prototype._requestCloseOrDisconnect=function(h){var f=this,c=h?this.closeUri:this.disconnectUri;if(c){var s=this.createRequest(c,null,this.authParams,null,u.default.REQ_SEND);s.on("complete",function(w){w&&(g.default.logAction(g.default.LOG_ERROR,"CometTransport.request"+(h?"Close()":"Disconnect()"),"request returned err = "+a.inspectError(w)),f.finish("disconnected",w))}),s.exec()}},b.prototype.dispose=function(){var h=this;g.default.logAction(g.default.LOG_MINOR,"CometTransport.dispose()",""),this.isDisposed||(this.isDisposed=!0,this.recvRequest&&(g.default.logAction(g.default.LOG_MINOR,"CometTransport.dispose()","aborting recv request"),this.recvRequest.abort(),this.recvRequest=null),this.finish("disconnected",R.default.disconnected()),C.default.Config.nextTick(function(){h.emit("disposed")}))},b.prototype.onConnect=function(h){var f;if(!this.isDisposed){var c=(f=h.connectionDetails)===null||f===void 0?void 0:f.connectionKey;d.default.prototype.onConnect.call(this,h);var s=this.baseUri+c;g.default.logAction(g.default.LOG_MICRO,"CometTransport.onConnect()","baseUri = "+s),this.sendUri=s+"/send",this.recvUri=s+"/recv",this.closeUri=s+"/close",this.disconnectUri=s+"/disconnect"}},b.prototype.send=function(h){if(this.sendRequest){this.pendingItems=this.pendingItems||[],this.pendingItems.push(h);return}var f=this.pendingItems||[];f.push(h),this.pendingItems=null,this.sendItems(f)},b.prototype.sendAnyPending=function(){var h=this.pendingItems;h&&(this.pendingItems=null,this.sendItems(h))},b.prototype.sendItems=function(h){var f=this,c=this.sendRequest=this.createRequest(this.sendUri,null,this.authParams,this.encodeRequest(h),u.default.REQ_SEND);c.on("complete",function(s,w){if(s&&g.default.logAction(g.default.LOG_ERROR,"CometTransport.sendItems()","on complete: err = "+a.inspectError(s)),f.sendRequest=null,s){s.code?f.onData(x(s)):f.disconnect(s);return}w&&f.onData(w),f.pendingItems&&C.default.Config.nextTick(function(){f.sendRequest||f.sendAnyPending()})}),c.exec()},b.prototype.recv=function(){var h=this;if(!this.recvRequest&&this.isConnected){var f=this.recvRequest=this.createRequest(this.recvUri,null,this.authParams,null,this.stream?u.default.REQ_RECV_STREAM:u.default.REQ_RECV_POLL);f.on("data",function(c){h.onData(c)}),f.on("complete",function(c){if(h.recvRequest=null,h.onActivity(),c){c.code?h.onData(x(c)):h.disconnect(c);return}C.default.Config.nextTick(function(){h.recv()})}),f.exec()}},b.prototype.onData=function(h){try{var f=this.decodeResponse(h);if(f&&f.length)for(var c=0;c<f.length;c++)this.onProtocolMessage(l.default.fromDeserialized(f[c]))}catch(s){g.default.logAction(g.default.LOG_ERROR,"CometTransport.onData()","Unexpected exception handing channel event: "+s.stack)}},b.prototype.encodeRequest=function(h){return JSON.stringify(h)},b.prototype.decodeResponse=function(h){return typeof h=="string"?JSON.parse(h):h},b}(d.default);r.default=p},function(n,r){var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(i){typeof window=="object"&&(o=window)}n.exports=o},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.isSuccessCode=void 0;var i;(function(l){l[l.Success=200]="Success",l[l.NoContent=204]="NoContent",l[l.BadRequest=400]="BadRequest",l[l.Unauthorized=401]="Unauthorized",l[l.Forbidden=403]="Forbidden",l[l.RequestTimeout=408]="RequestTimeout",l[l.InternalServerError=500]="InternalServerError"})(i||(i={}));function a(l){return l>=i.Success&&l<i.BadRequest}r.isSuccessCode=a,r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(3)),l=i.__importStar(o(1)),d=i.__importDefault(o(2)),g=i.__importDefault(o(18)),S=i.__importDefault(o(19)),R=o(4),y=i.__importDefault(o(14));function E(m,b,h,f,c){m.http.supportsAuthHeaders?m.auth.getAuthHeaders(function(s,w){s?f(s):c(l.mixin(w,b),h)}):m.auth.getAuthParams(function(s,w){s?f(s):c(b,l.mixin(w,h))})}function u(m,b){return function(h,f,c,s,w){if(h&&!f){m(h);return}if(w===y.default.NoContent){m(h,[],c,!0,w);return}if(!s)try{f=l.decodeBody(f,b)}catch(T){l.isErrorInfoOrPartialErrorInfo(T)?m(T):m(new R.PartialErrorInfo(l.inspectError(T),null));return}if(!f){m(new R.PartialErrorInfo("unenvelope(): Response body is missing",null));return}var v=f,k=v.statusCode,j=v.response,N=v.headers;if(k===void 0){m(h,f,c,!0,w);return}if(k<200||k>=300){var P=j&&j.error||h;P||(P=new Error("Error in unenveloping "+f),P.statusCode=k),m(P,j,N,!0,k);return}m(h,j,N,!0,k)}}function C(m){var b=[];if(m)for(var h in m)b.push(h+"="+m[h]);return b.join("&")}function M(m,b){return m+(b?"?":"")+C(b)}function x(m,b,h,f){return function(c,s,w,v,k){c?d.default.logAction(d.default.LOG_MICRO,"Resource."+b+"()","Received Error; "+M(h,f)+"; Error: "+l.inspectError(c)):d.default.logAction(d.default.LOG_MICRO,"Resource."+b+"()","Received; "+M(h,f)+"; Headers: "+C(w)+"; StatusCode: "+k+"; Body: "+(a.default.BufferUtils.isBuffer(s)?s.toString():s)),m&&m(c,s,w,v,k)}}var p=function(){function m(){}return m.get=function(b,h,f,c,s,w){m.do(S.default.Get,b,h,null,f,c,s,w)},m.delete=function(b,h,f,c,s,w){m.do(S.default.Delete,b,h,null,f,c,s,w)},m.post=function(b,h,f,c,s,w,v){m.do(S.default.Post,b,h,f,c,s,w,v)},m.patch=function(b,h,f,c,s,w,v){m.do(S.default.Patch,b,h,f,c,s,w,v)},m.put=function(b,h,f,c,s,w,v){m.do(S.default.Put,b,h,f,c,s,w,v)},m.do=function(b,h,f,c,s,w,v,k){d.default.shouldLog(d.default.LOG_MICRO)&&(k=x(k,b,f,w)),v&&(k=k&&u(k,v),(w=w||{}).envelope=v);function j(N,P){var T;if(d.default.shouldLog(d.default.LOG_MICRO)&&d.default.logAction(d.default.LOG_MICRO,"Resource."+b+"()","Sending; "+M(f,P)),d.default.shouldLog(d.default.LOG_MICRO)){var I=c;if(((T=N["content-type"])===null||T===void 0?void 0:T.indexOf("msgpack"))>0)try{I=a.default.Config.msgpack.decode(c)}catch(A){d.default.logAction(d.default.LOG_MICRO,"Resource."+b+"()","Sending MsgPack Decoding Error: "+l.inspectError(A))}d.default.logAction(d.default.LOG_MICRO,"Resource."+b+"()","Sending; "+M(f,P)+"; Body: "+I)}h.http.do(b,h,f,N,c,P,function(A,D,B,z,$){if(A&&g.default.isTokenErr(A)){h.auth.authorize(null,null,function(V){if(V){k(V);return}E(h,N,P,k,j)});return}k(A,D,B,z,$)})}E(h,s,w,k,j)},m}();r.default=p},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(2)),l=i.__importDefault(o(3)),d=i.__importDefault(o(9)),g=i.__importStar(o(1));function S(y){return R.Actions.indexOf(y)}var R=function(){function y(){}return y.prototype.isSynthesized=function(){return!this.id||!this.connectionId?!0:this.id.substring(this.connectionId.length,0)!==this.connectionId},y.prototype.parseId=function(){if(!this.id)throw new Error("parseId(): Presence message does not contain an id");var E=this.id.split(":");return{connectionId:E[0],msgSerial:parseInt(E[1],10),index:parseInt(E[2],10)}},y.prototype.toJSON=function(){var E=this.data,u=this.encoding;return E&&l.default.BufferUtils.isBuffer(E)&&(arguments.length>0?(u=u?u+"/base64":"base64",E=l.default.BufferUtils.base64Encode(E)):E=l.default.BufferUtils.toBuffer(E)),{id:this.id,clientId:this.clientId,action:S(this.action),data:E,encoding:u,extras:this.extras}},y.prototype.toString=function(){var E="[PresenceMessage";return E+="; action="+this.action,this.id&&(E+="; id="+this.id),this.timestamp&&(E+="; timestamp="+this.timestamp),this.clientId&&(E+="; clientId="+this.clientId),this.connectionId&&(E+="; connectionId="+this.connectionId),this.encoding&&(E+="; encoding="+this.encoding),this.data&&(typeof this.data=="string"?E+="; data="+this.data:l.default.BufferUtils.isBuffer(this.data)?E+="; data (buffer)="+l.default.BufferUtils.base64Encode(this.data):E+="; data (json)="+JSON.stringify(this.data)),this.extras&&(E+="; extras="+JSON.stringify(this.extras)),E+="]",E},y.fromResponseBody=function(E,u,C){var M=[];C&&(E=g.decodeBody(E,C));for(var x=0;x<E.length;x++){var p=M[x]=y.fromValues(E[x],!0);try{y.decode(p,u)}catch(m){a.default.logAction(a.default.LOG_ERROR,"PresenceMessage.fromResponseBody()",m.toString())}}return M},y.fromValues=function(E,u){return u&&(E.action=y.Actions[E.action]),Object.assign(new y,E)},y.fromValuesArray=function(E){for(var u=E.length,C=new Array(u),M=0;M<u;M++)C[M]=y.fromValues(E[M]);return C},y.fromEncoded=function(E,u){var C=y.fromValues(E,!0);try{y.decode(C,u!=null?u:{})}catch(M){a.default.logAction(a.default.LOG_ERROR,"PresenceMessage.fromEncoded()",M.toString())}return C},y.fromEncodedArray=function(E,u){return E.map(function(C){return y.fromEncoded(C,u)})},y.fromData=function(E){return E instanceof y?E:y.fromValues({data:E})},y.Actions=["absent","present","enter","leave","update"],y.encode=d.default.encode,y.decode=d.default.decode,y.getMessagesSize=d.default.getMessagesSize,y}();r.default=R},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importStar(o(1)),d=a.__importDefault(o(7)),g=a.__importStar(o(4)),S=a.__importDefault(o(2)),R=a.__importDefault(o(8)),y=a.__importDefault(o(22)),E=a.__importDefault(o(3));function u(v,k){return l.arrIn(l.allToLowerCase(l.keysArray(k)),"x-ably-errorcode")}function C(v,k){if(u(v,k))return v.error&&g.default.fromValues(v.error)}var M=function(){},x=0,p={},m=typeof i!="undefined"&&i.XDomainRequest;function b(){var v=navigator.userAgent.toString().match(/MSIE\s([\d.]+)/);return v&&Number(v[1])}function h(){var v;return m&&(v=b())&&v===10}function f(v,k){return v.getResponseHeader&&v.getResponseHeader(k)}function c(v){return v.getResponseHeader&&(v.getResponseHeader("transfer-encoding")||!v.getResponseHeader("content-length"))}function s(v){for(var k=l.trim(v.getAllResponseHeaders()).split(`\r
137
+ ***************************************************************************** */var i=function(T,I){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(A,D){A.__proto__=D}||function(A,D){for(var B in D)Object.prototype.hasOwnProperty.call(D,B)&&(A[B]=D[B])},i(T,I)};function a(T,I){if(typeof I!="function"&&I!==null)throw new TypeError("Class extends value "+String(I)+" is not a constructor or null");i(T,I);function A(){this.constructor=T}T.prototype=I===null?Object.create(I):(A.prototype=I.prototype,new A)}var l=function(){return l=Object.assign||function(I){for(var A,D=1,B=arguments.length;D<B;D++){A=arguments[D];for(var z in A)Object.prototype.hasOwnProperty.call(A,z)&&(I[z]=A[z])}return I},l.apply(this,arguments)};function d(T,I){var A={};for(var D in T)Object.prototype.hasOwnProperty.call(T,D)&&I.indexOf(D)<0&&(A[D]=T[D]);if(T!=null&&typeof Object.getOwnPropertySymbols=="function")for(var B=0,D=Object.getOwnPropertySymbols(T);B<D.length;B++)I.indexOf(D[B])<0&&Object.prototype.propertyIsEnumerable.call(T,D[B])&&(A[D[B]]=T[D[B]]);return A}function g(T,I,A,D){var B=arguments.length,z=B<3?I:D===null?D=Object.getOwnPropertyDescriptor(I,A):D,$;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")z=Reflect.decorate(T,I,A,D);else for(var V=T.length-1;V>=0;V--)($=T[V])&&(z=(B<3?$(z):B>3?$(I,A,z):$(I,A))||z);return B>3&&z&&Object.defineProperty(I,A,z),z}function S(T,I){return function(A,D){I(A,D,T)}}function R(T,I){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(T,I)}function y(T,I,A,D){function B(z){return z instanceof A?z:new A(function($){$(z)})}return new(A||(A=Promise))(function(z,$){function V(L){try{O(D.next(L))}catch(U){$(U)}}function F(L){try{O(D.throw(L))}catch(U){$(U)}}function O(L){L.done?z(L.value):B(L.value).then(V,F)}O((D=D.apply(T,I||[])).next())})}function E(T,I){var A={label:0,sent:function(){if(z[0]&1)throw z[1];return z[1]},trys:[],ops:[]},D,B,z,$;return $={next:V(0),throw:V(1),return:V(2)},typeof Symbol=="function"&&($[Symbol.iterator]=function(){return this}),$;function V(O){return function(L){return F([O,L])}}function F(O){if(D)throw new TypeError("Generator is already executing.");for(;A;)try{if(D=1,B&&(z=O[0]&2?B.return:O[0]?B.throw||((z=B.return)&&z.call(B),0):B.next)&&!(z=z.call(B,O[1])).done)return z;switch(B=0,z&&(O=[O[0]&2,z.value]),O[0]){case 0:case 1:z=O;break;case 4:return A.label++,{value:O[1],done:!1};case 5:A.label++,B=O[1],O=[0];continue;case 7:O=A.ops.pop(),A.trys.pop();continue;default:if(z=A.trys,!(z=z.length>0&&z[z.length-1])&&(O[0]===6||O[0]===2)){A=0;continue}if(O[0]===3&&(!z||O[1]>z[0]&&O[1]<z[3])){A.label=O[1];break}if(O[0]===6&&A.label<z[1]){A.label=z[1],z=O;break}if(z&&A.label<z[2]){A.label=z[2],A.ops.push(O);break}z[2]&&A.ops.pop(),A.trys.pop();continue}O=I.call(T,A)}catch(L){O=[6,L],B=0}finally{D=z=0}if(O[0]&5)throw O[1];return{value:O[0]?O[1]:void 0,done:!0}}}var u=Object.create?function(T,I,A,D){D===void 0&&(D=A),Object.defineProperty(T,D,{enumerable:!0,get:function(){return I[A]}})}:function(T,I,A,D){D===void 0&&(D=A),T[D]=I[A]};function C(T,I){for(var A in T)A!=="default"&&!Object.prototype.hasOwnProperty.call(I,A)&&u(I,T,A)}function M(T){var I=typeof Symbol=="function"&&Symbol.iterator,A=I&&T[I],D=0;if(A)return A.call(T);if(T&&typeof T.length=="number")return{next:function(){return T&&D>=T.length&&(T=void 0),{value:T&&T[D++],done:!T}}};throw new TypeError(I?"Object is not iterable.":"Symbol.iterator is not defined.")}function x(T,I){var A=typeof Symbol=="function"&&T[Symbol.iterator];if(!A)return T;var D=A.call(T),B,z=[],$;try{for(;(I===void 0||I-- >0)&&!(B=D.next()).done;)z.push(B.value)}catch(V){$={error:V}}finally{try{B&&!B.done&&(A=D.return)&&A.call(D)}finally{if($)throw $.error}}return z}function p(){for(var T=[],I=0;I<arguments.length;I++)T=T.concat(x(arguments[I]));return T}function m(){for(var T=0,I=0,A=arguments.length;I<A;I++)T+=arguments[I].length;for(var D=Array(T),B=0,I=0;I<A;I++)for(var z=arguments[I],$=0,V=z.length;$<V;$++,B++)D[B]=z[$];return D}function b(T,I,A){if(A||arguments.length===2)for(var D=0,B=I.length,z;D<B;D++)(z||!(D in I))&&(z||(z=Array.prototype.slice.call(I,0,D)),z[D]=I[D]);return T.concat(z||Array.prototype.slice.call(I))}function h(T){return this instanceof h?(this.v=T,this):new h(T)}function f(T,I,A){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var D=A.apply(T,I||[]),B,z=[];return B={},$("next"),$("throw"),$("return"),B[Symbol.asyncIterator]=function(){return this},B;function $(_){D[_]&&(B[_]=function(W){return new Promise(function(Q,X){z.push([_,W,Q,X])>1||V(_,W)})})}function V(_,W){try{F(D[_](W))}catch(Q){U(z[0][3],Q)}}function F(_){_.value instanceof h?Promise.resolve(_.value.v).then(O,L):U(z[0][2],_)}function O(_){V("next",_)}function L(_){V("throw",_)}function U(_,W){_(W),z.shift(),z.length&&V(z[0][0],z[0][1])}}function c(T){var I,A;return I={},D("next"),D("throw",function(B){throw B}),D("return"),I[Symbol.iterator]=function(){return this},I;function D(B,z){I[B]=T[B]?function($){return(A=!A)?{value:h(T[B]($)),done:B==="return"}:z?z($):$}:z}}function s(T){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var I=T[Symbol.asyncIterator],A;return I?I.call(T):(T=typeof M=="function"?M(T):T[Symbol.iterator](),A={},D("next"),D("throw"),D("return"),A[Symbol.asyncIterator]=function(){return this},A);function D(z){A[z]=T[z]&&function($){return new Promise(function(V,F){$=T[z]($),B(V,F,$.done,$.value)})}}function B(z,$,V,F){Promise.resolve(F).then(function(O){z({value:O,done:V})},$)}}function w(T,I){return Object.defineProperty?Object.defineProperty(T,"raw",{value:I}):T.raw=I,T}var v=Object.create?function(T,I){Object.defineProperty(T,"default",{enumerable:!0,value:I})}:function(T,I){T.default=I};function k(T){if(T&&T.__esModule)return T;var I={};if(T!=null)for(var A in T)A!=="default"&&Object.prototype.hasOwnProperty.call(T,A)&&u(I,T,A);return v(I,T),I}function j(T){return T&&T.__esModule?T:{default:T}}function N(T,I,A,D){if(A==="a"&&!D)throw new TypeError("Private accessor was defined without a getter");if(typeof I=="function"?T!==I||!D:!I.has(T))throw new TypeError("Cannot read private member from an object whose class did not declare it");return A==="m"?D:A==="a"?D.call(T):D?D.value:I.get(T)}function P(T,I,A,D,B){if(D==="m")throw new TypeError("Private method is not writable");if(D==="a"&&!B)throw new TypeError("Private accessor was defined without a setter");if(typeof I=="function"?T!==I||!B:!I.has(T))throw new TypeError("Cannot write private member to an object whose class did not declare it");return D==="a"?B.call(T,A):B?B.value=A:I.set(T,A),A}},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0}),r.allToUpperCase=r.allToLowerCase=r.encodeBody=r.decodeBody=r.Format=r.promisify=r.trim=r.arrChooseN=r.randomHexString=r.randomString=r.cheapRandStr=r.dataSizeBytes=r.inspectBody=r.inspectError=r.isErrorInfoOrPartialErrorInfo=r.now=r.parseQueryString=r.toQueryString=r.arrPopRandomElement=r.defaultPostHeaders=r.defaultGetHeaders=r.allSame=r.arrEvery=r.arrFilter=r.arrMap=r.safeArrForEach=r.arrForEach=r.forInOwnNonNullProperties=r.valuesArray=r.keysArray=r.arrWithoutValue=r.arrDeleteValue=r.arrIn=r.arrIndexOf=r.arrSubtract=r.arrIntersectOb=r.arrIntersect=r.intersect=r.containsValue=r.inherits=r.prototypicalClone=r.shallowClone=r.isEmptyArg=r.isOnlyPropIn=r.isEmpty=r.isObject=r.ensureArray=r.isArray=r.copy=r.mixin=void 0,r.arrEquals=r.toBase64=r.matchDerivedChannel=r.shallowEquals=r.getGlobalObject=r.getRetryTime=r.getJitterCoefficient=r.getBackoffCoefficient=void 0;var a=o(0),l=a.__importDefault(o(3)),d=a.__importStar(o(8)),g=a.__importDefault(o(4)),S=o(11),R=o(31);function y(H){return Math.floor(Math.random()*H.length)}function E(H){for(var K=[],Y=1;Y<arguments.length;Y++)K[Y-1]=arguments[Y];for(var te=0;te<K.length;te++){var ie=K[te];if(!ie)break;var qe=Object.prototype.hasOwnProperty;for(var Qr in ie)(!qe||qe.call(ie,Qr))&&(H[Qr]=ie[Qr])}return H}r.mixin=E;function u(H){return E({},H)}r.copy=u,r.isArray=Array.isArray||function(H){return Object.prototype.toString.call(H)=="[object Array]"};function C(H){return m(H)?[]:(0,r.isArray)(H)?H:[H]}r.ensureArray=C;function M(H){return Object.prototype.toString.call(H)=="[object Object]"}r.isObject=M;function x(H){for(var K in H)return!1;return!0}r.isEmpty=x;function p(H,K){for(var Y in H)if(Y!==K)return!1;return!0}r.isOnlyPropIn=p;function m(H){return H==null}r.isEmptyArg=m;function b(H){var K=new Object;for(var Y in H)K[Y]=H[Y];return K}r.shallowClone=b;function h(H,K){var Y=function(){function ie(){}return ie}();Y.prototype=H;var te=new Y;return K&&E(te,K),te}r.prototypicalClone=h;var f=function(H,K){if(l.default.Config.inherits){l.default.Config.inherits(H,K);return}H.super_=K,H.prototype=h(K.prototype,{constructor:H})};r.inherits=f;function c(H,K){for(var Y in H)if(H[Y]==K)return!0;return!1}r.containsValue=c;function s(H,K){return(0,r.isArray)(K)?w(H,K):v(H,K)}r.intersect=s;function w(H,K){for(var Y=[],te=0;te<H.length;te++){var ie=H[te];(0,r.arrIndexOf)(K,ie)!=-1&&Y.push(ie)}return Y}r.arrIntersect=w;function v(H,K){for(var Y=[],te=0;te<H.length;te++){var ie=H[te];ie in K&&Y.push(ie)}return Y}r.arrIntersectOb=v;function k(H,K){for(var Y=[],te=0;te<H.length;te++){var ie=H[te];(0,r.arrIndexOf)(K,ie)==-1&&Y.push(ie)}return Y}r.arrSubtract=k,r.arrIndexOf=Array.prototype.indexOf?function(H,K,Y){return H.indexOf(K,Y)}:function(H,K,Y){Y=Y||0;for(var te=H.length;Y<te;Y++)if(H[Y]===K)return Y;return-1};function j(H,K){return(0,r.arrIndexOf)(H,K)!==-1}r.arrIn=j;function N(H,K){var Y=(0,r.arrIndexOf)(H,K),te=Y!=-1;return te&&H.splice(Y,1),te}r.arrDeleteValue=N;function P(H,K){var Y=H.slice();return N(Y,K),Y}r.arrWithoutValue=P;function T(H,K){var Y=[];for(var te in H)K&&!Object.prototype.hasOwnProperty.call(H,te)||Y.push(te);return Y}r.keysArray=T;function I(H,K){var Y=[];for(var te in H)K&&!Object.prototype.hasOwnProperty.call(H,te)||Y.push(H[te]);return Y}r.valuesArray=I;function A(H,K){for(var Y in H)Object.prototype.hasOwnProperty.call(H,Y)&&H[Y]&&K(Y)}r.forInOwnNonNullProperties=A,r.arrForEach=Array.prototype.forEach?function(H,K){H.forEach(K)}:function(H,K){for(var Y=H.length,te=0;te<Y;te++)K(H[te],te,H)};function D(H,K){return(0,r.arrForEach)(H.slice(),K)}r.safeArrForEach=D,r.arrMap=Array.prototype.map?function(H,K){return H.map(K)}:function(H,K){for(var Y=[],te=H.length,ie=0;ie<te;ie++)Y.push(K(H[ie],ie,H));return Y},r.arrFilter=Array.prototype.filter?function(H,K){return H.filter(K)}:function(H,K){for(var Y=[],te=H.length,ie=0;ie<te;ie++)K(H[ie])&&Y.push(H[ie]);return Y},r.arrEvery=Array.prototype.every?function(H,K){return H.every(K)}:function(H,K){for(var Y=H.length,te=0;te<Y;te++)if(!K(H[te],te,H))return!1;return!0};function B(H,K){if(H.length===0)return!0;var Y=H[0][K];return(0,r.arrEvery)(H,function(te){return te[K]===Y})}r.allSame=B;var z={json:"application/json",jsonp:"application/javascript",xml:"application/xml",html:"text/html",msgpack:"application/x-msgpack"};function $(H,K){var Y=z[K||ye.json];return{accept:Y,"X-Ably-Version":d.default.protocolVersion.toString(),"Ably-Agent":(0,d.getAgentString)(H)}}r.defaultGetHeaders=$;function V(H,K){var Y,te=Y=z[K||ye.json];return{accept:te,"content-type":Y,"X-Ably-Version":d.default.protocolVersion.toString(),"Ably-Agent":(0,d.getAgentString)(H)}}r.defaultPostHeaders=V;function F(H){return H.splice(y(H),1)[0]}r.arrPopRandomElement=F;function O(H){var K=[];if(H)for(var Y in H)K.push(encodeURIComponent(Y)+"="+encodeURIComponent(H[Y]));return K.length?"?"+K.join("&"):""}r.toQueryString=O;function L(H){for(var K,Y=/([^?&=]+)=?([^&]*)/g,te={};K=Y.exec(H);)te[decodeURIComponent(K[1])]=decodeURIComponent(K[2]);return te}r.parseQueryString=L,r.now=Date.now||function(){return new Date().getTime()};function U(H){return typeof H=="object"&&H!==null&&(H.constructor.name=="ErrorInfo"||H.constructor.name=="PartialErrorInfo")}r.isErrorInfoOrPartialErrorInfo=U;function _(H){var K,Y;return H instanceof Error||((K=H==null?void 0:H.constructor)===null||K===void 0?void 0:K.name)==="ErrorInfo"||((Y=H==null?void 0:H.constructor)===null||Y===void 0?void 0:Y.name)==="PartialErrorInfo"?H.toString():l.default.Config.inspect(H)}r.inspectError=_;function W(H){return l.default.BufferUtils.isBuffer(H)?H.toString():typeof H=="string"?H:l.default.Config.inspect(H)}r.inspectBody=W;function Q(H){if(l.default.BufferUtils.isBuffer(H))return l.default.BufferUtils.byteLength(H);if(typeof H=="string")return l.default.Config.stringByteSize(H);throw new Error("Expected input of Utils.dataSizeBytes to be a buffer or string, but was: "+typeof H)}r.dataSizeBytes=Q;function X(){return String(Math.random()).substr(2)}r.cheapRandStr=X;var ne=function(H){if(l.default.Config.getRandomValues&&typeof Uint8Array!="undefined"){var K=new Uint8Array(H);return l.default.Config.getRandomValues(K),l.default.BufferUtils.base64Encode(K)}for(var Y=l.default.BufferUtils.base64CharSet,te=Math.round(H*4/3),ie="",qe=0;qe<te;qe++)ie+=Y[y(Y)];return ie};r.randomString=ne;var re=function(H){if(l.default.Config.getRandomValues&&typeof Uint8Array!="undefined"){var K=new Uint8Array(H);return l.default.Config.getRandomValues(K),l.default.BufferUtils.hexEncode(K)}for(var Y=l.default.BufferUtils.hexCharSet,te=H*2,ie="",qe=0;qe<te;qe++)ie+=Y[y(Y)];return ie};r.randomHexString=re;function ce(H,K){for(var Y=Math.min(K,H.length),te=H.slice(),ie=[],qe=0;qe<Y;qe++)ie.push(F(te));return ie}r.arrChooseN=ce,r.trim=String.prototype.trim?function(H){return H.trim()}:function(H){return H.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};function q(H,K,Y){return new Promise(function(te,ie){H[K].apply(H,a.__spreadArray(a.__spreadArray([],Y,!1),[function(qe,Qr){qe?ie(qe):te(Qr)}],!1))})}r.promisify=q;var ye;(function(H){H.msgpack="msgpack",H.json="json"})(ye=r.Format||(r.Format={}));function De(H,K){return K=="msgpack"?l.default.Config.msgpack.decode(H):JSON.parse(String(H))}r.decodeBody=De;function Ve(H,K){return K=="msgpack"?l.default.Config.msgpack.encode(H,!0):JSON.stringify(H)}r.encodeBody=Ve;function Ae(H){return H.map(function(K){return K&&K.toLowerCase()})}r.allToLowerCase=Ae;function zt(H){return H.map(function(K){return K&&K.toUpperCase()})}r.allToUpperCase=zt;function ki(H){return Math.min((H+2)/3,2)}r.getBackoffCoefficient=ki;function xt(){return 1-Math.random()*.2}r.getJitterCoefficient=xt;function Ei(H,K){return H*ki(K)*xt()}r.getRetryTime=Ei;function nl(){return i||(typeof window!="undefined"?window:self)}r.getGlobalObject=nl;function rl(H,K){return Object.keys(H).every(function(Y){return H[Y]===K[Y]})&&Object.keys(K).every(function(Y){return K[Y]===H[Y]})}r.shallowEquals=rl;function em(H){var K=/^(\[([^?]*)(?:(.*))\])?(.+)$/,Y=H.match(K);if(!Y||!Y.length||Y.length<5)throw new g.default("regex match failed",400,40010);if(Y[2])throw new g.default("cannot use a derived option with a ".concat(Y[2]," channel"),400,40010);return{qualifierParam:Y[3]||"",channelName:Y[4]}}r.matchDerivedChannel=em;function tm(H){return l.default.Config.createHmac?Buffer.from(H,"ascii").toString("base64"):(0,S.stringify)((0,R.parse)(H))}r.toBase64=tm;function nm(H,K){return H.length===K.length&&(0,r.arrEvery)(H,function(Y,te){return Y===K[te]})}r.arrEquals=nm}).call(this,o(13))},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importDefault(o(3)),d=i||(typeof window!="undefined"?window:self),g;(function(u){u[u.None=0]="None",u[u.Error=1]="Error",u[u.Major=2]="Major",u[u.Minor=3]="Minor",u[u.Micro=4]="Micro"})(g||(g={}));function S(u,C){return"".concat(u).padStart(C?3:2,"0")}function R(u){return l.default.Config.logTimestamps?function(C){var M=new Date;u(S(M.getHours())+":"+S(M.getMinutes())+":"+S(M.getSeconds())+"."+S(M.getMilliseconds(),1)+" "+C)}:u}var y=function(){var u,C,M,x;return typeof Window=="undefined"&&typeof WorkerGlobalScope=="undefined"||typeof((C=(u=d==null?void 0:d.console)===null||u===void 0?void 0:u.log)===null||C===void 0?void 0:C.apply)=="function"?(M=function(){for(var p=[],m=0;m<arguments.length;m++)p[m]=arguments[m];console.log.apply(console,p)},x=console.warn?function(){for(var p=[],m=0;m<arguments.length;m++)p[m]=arguments[m];console.warn.apply(console,p)}:M):d!=null&&d.console.log?M=x=function(){Function.prototype.apply.call(console.log,console,arguments)}:M=x=function(){},[M,x].map(R)},E=function(){function u(){u.logLevel=u.LOG_DEFAULT}return u.initLogHandlers=function(){var C=y(),M=C[0],x=C[1];this.logHandler=M,this.logErrorHandler=x},u.renamedClientOption=function(C,M){u.deprecationWarning("The `".concat(C,"` client option has been renamed to `").concat(M,"`. Please update your code to use `").concat(M,"` instead. `").concat(C,"` will be removed in a future version."))},u.renamedMethod=function(C,M,x){u.deprecationWarning("`".concat(C,"`’s `").concat(M,"` method has been renamed to `").concat(x,"`. Please update your code to use `").concat(x,"` instead. `").concat(M,"` will be removed in a future version."))},u.deprecationWarning=function(C){u.shouldLog(g.Error)&&u.logErrorHandler("Ably: Deprecation warning - ".concat(C))},u.logLevel=g.Error,u.LOG_NONE=g.None,u.LOG_ERROR=g.Error,u.LOG_MAJOR=g.Major,u.LOG_MINOR=g.Minor,u.LOG_MICRO=g.Micro,u.LOG_DEFAULT=g.Error,u.LOG_DEBUG=g.Micro,u.logAction=function(C,M,x){u.shouldLog(C)&&(C===g.Error?u.logErrorHandler:u.logHandler)("Ably: "+M+": "+x)},u.deprecated=function(C,M){u.deprecationWarning("".concat(C," is deprecated and will be removed in a future version. ").concat(M))},u.shouldLog=function(C){return C<=u.logLevel},u.setLog=function(C,M){C!==void 0&&(u.logLevel=C),M!==void 0&&(u.logHandler=u.logErrorHandler=M)},u}();r.default=E}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function a(){}return a}();r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.PartialErrorInfo=void 0;var i=o(0),a=i.__importDefault(o(3)),l=i.__importStar(o(1));function d(R){var y="["+R.constructor.name;return R.message&&(y+=": "+R.message),R.statusCode&&(y+="; statusCode="+R.statusCode),R.code&&(y+="; code="+R.code),R.cause&&(y+="; cause="+l.inspectError(R.cause)),R.href&&!(R.message&&R.message.indexOf("help.ably.io")>-1)&&(y+="; see "+R.href+" "),y+="]",y}var g=function(R){i.__extends(y,R);function y(E,u,C,M){var x=R.call(this,E)||this;return typeof Object.setPrototypeOf!="undefined"&&Object.setPrototypeOf(x,y.prototype),x.code=u,x.statusCode=C,x.cause=M,x}return y.prototype.toString=function(){return d(this)},y.fromValues=function(E){var u=E,C=u.message,M=u.code,x=u.statusCode;if(typeof C!="string"||typeof M!="number"||typeof x!="number")throw new Error("ErrorInfo.fromValues(): invalid values: "+a.default.Config.inspect(E));var p=Object.assign(new y(C,M,x),E);return p.code&&!p.href&&(p.href="https://help.ably.io/error/"+p.code),p},y}(Error);r.default=g;var S=function(R){i.__extends(y,R);function y(E,u,C,M){var x=R.call(this,E)||this;return typeof Object.setPrototypeOf!="undefined"&&Object.setPrototypeOf(x,y.prototype),x.code=u,x.statusCode=C,x.cause=M,x}return y.prototype.toString=function(){return d(this)},y}(Error);r.PartialErrorInfo=S},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){if(typeof ArrayBuffer=="function"){var a=i,l=a.lib,d=l.WordArray,g=d.init,S=d.init=function(R){if(R instanceof ArrayBuffer&&(R=new Uint8Array(R)),(R instanceof Int8Array||typeof Uint8ClampedArray!="undefined"&&R instanceof Uint8ClampedArray||R instanceof Int16Array||R instanceof Uint16Array||R instanceof Int32Array||R instanceof Uint32Array||R instanceof Float32Array||R instanceof Float64Array)&&(R=new Uint8Array(R.buffer,R.byteOffset,R.byteLength)),R instanceof Uint8Array){for(var y=R.byteLength,E=[],u=0;u<y;u++)E[u>>>2]|=R[u]<<24-u%4*8;g.call(this,E,y)}else g.apply(this,arguments)};S.prototype=d}}(),i.lib.WordArray})},function(n,r,o){(function(i){(function(a,l){n.exports=l()})(this,function(){var a=a||function(l,d){var g;if(typeof window!="undefined"&&window.crypto&&(g=window.crypto),!g&&typeof window!="undefined"&&window.msCrypto&&(g=window.msCrypto),!g&&typeof i!="undefined"&&i.crypto&&(g=i.crypto),!g)try{g=o(44)}catch(f){}var S=function(){if(g){if(typeof g.getRandomValues=="function")try{return g.getRandomValues(new Uint32Array(1))[0]}catch(f){}if(typeof g.randomBytes=="function")try{return g.randomBytes(4).readInt32LE()}catch(f){}}throw new Error("Native crypto module could not be used to get secure random number.")},R=Object.create||function(){function f(){}return function(c){var s;return f.prototype=c,s=new f,f.prototype=null,s}}(),y={},E=y.lib={},u=E.Base=function(){return{extend:function(f){var c=R(this);return f&&c.mixIn(f),(!c.hasOwnProperty("init")||this.init===c.init)&&(c.init=function(){c.$super.init.apply(this,arguments)}),c.init.prototype=c,c.$super=this,c},create:function(){var f=this.extend();return f.init.apply(f,arguments),f},init:function(){},mixIn:function(f){for(var c in f)f.hasOwnProperty(c)&&(this[c]=f[c]);f.hasOwnProperty("toString")&&(this.toString=f.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),C=E.WordArray=u.extend({init:function(f,c){f=this.words=f||[],c!=d?this.sigBytes=c:this.sigBytes=f.length*4},toString:function(f){return(f||x).stringify(this)},concat:function(f){var c=this.words,s=f.words,w=this.sigBytes,v=f.sigBytes;if(this.clamp(),w%4)for(var k=0;k<v;k++){var j=s[k>>>2]>>>24-k%4*8&255;c[w+k>>>2]|=j<<24-(w+k)%4*8}else for(var k=0;k<v;k+=4)c[w+k>>>2]=s[k>>>2];return this.sigBytes+=v,this},clamp:function(){var f=this.words,c=this.sigBytes;f[c>>>2]&=4294967295<<32-c%4*8,f.length=l.ceil(c/4)},clone:function(){var f=u.clone.call(this);return f.words=this.words.slice(0),f},random:function(f){for(var c=[],s=0;s<f;s+=4)c.push(S());return new C.init(c,f)}}),M=y.enc={},x=M.Hex={stringify:function(f){for(var c=f.words,s=f.sigBytes,w=[],v=0;v<s;v++){var k=c[v>>>2]>>>24-v%4*8&255;w.push((k>>>4).toString(16)),w.push((k&15).toString(16))}return w.join("")},parse:function(f){for(var c=f.length,s=[],w=0;w<c;w+=2)s[w>>>3]|=parseInt(f.substr(w,2),16)<<24-w%8*4;return new C.init(s,c/2)}},p=M.Latin1={stringify:function(f){for(var c=f.words,s=f.sigBytes,w=[],v=0;v<s;v++){var k=c[v>>>2]>>>24-v%4*8&255;w.push(String.fromCharCode(k))}return w.join("")},parse:function(f){for(var c=f.length,s=[],w=0;w<c;w++)s[w>>>2]|=(f.charCodeAt(w)&255)<<24-w%4*8;return new C.init(s,c)}},m=M.Utf8={stringify:function(f){try{return decodeURIComponent(escape(p.stringify(f)))}catch(c){throw new Error("Malformed UTF-8 data")}},parse:function(f){return p.parse(unescape(encodeURIComponent(f)))}},b=E.BufferedBlockAlgorithm=u.extend({reset:function(){this._data=new C.init,this._nDataBytes=0},_append:function(f){typeof f=="string"&&(f=m.parse(f)),this._data.concat(f),this._nDataBytes+=f.sigBytes},_process:function(f){var c,s=this._data,w=s.words,v=s.sigBytes,k=this.blockSize,j=k*4,N=v/j;f?N=l.ceil(N):N=l.max((N|0)-this._minBufferSize,0);var P=N*k,T=l.min(P*4,v);if(P){for(var I=0;I<P;I+=k)this._doProcessBlock(w,I);c=w.splice(0,P),s.sigBytes-=T}return new C.init(c,T)},clone:function(){var f=u.clone.call(this);return f._data=this._data.clone(),f},_minBufferSize:0});E.Hasher=b.extend({cfg:u.extend(),init:function(f){this.cfg=this.cfg.extend(f),this.reset()},reset:function(){b.reset.call(this),this._doReset()},update:function(f){return this._append(f),this._process(),this},finalize:function(f){f&&this._append(f);var c=this._doFinalize();return c},blockSize:16,_createHelper:function(f){return function(c,s){return new f.init(s).finalize(c)}},_createHmacHelper:function(f){return function(c,s){return new h.HMAC.init(f,s).finalize(c)}}});var h=y.algo={};return y}(Math);return a})}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(2)),d=i.__importDefault(o(3));function g(y,E,u){try{E.apply(y,u)}catch(C){l.default.logAction(l.default.LOG_ERROR,"EventEmitter.emit()","Unexpected listener exception: "+C+"; stack = "+(C&&C.stack))}}function S(y,E,u){for(var C,M,x,p=0;p<y.length;p++)if(C=y[p],u&&(C=C[u]),a.isArray(C)){for(;(M=a.arrIndexOf(C,E))!==-1;)C.splice(M,1);u&&C.length===0&&delete y[p][u]}else if(a.isObject(C))for(x in C)Object.prototype.hasOwnProperty.call(C,x)&&a.isArray(C[x])&&S([C],E,x)}var R=function(){function y(){this.any=[],this.events=Object.create(null),this.anyOnce=[],this.eventsOnce=Object.create(null)}return y.prototype.on=function(){for(var E=this,u=[],C=0;C<arguments.length;C++)u[C]=arguments[C];if(u.length===1){var M=u[0];if(typeof M=="function")this.any.push(M);else throw new Error("EventListener.on(): Invalid arguments: "+d.default.Config.inspect(u))}if(u.length===2){var x=u[0],p=u[1];if(typeof p!="function")throw new Error("EventListener.on(): Invalid arguments: "+d.default.Config.inspect(u));if(a.isEmptyArg(x))this.any.push(p);else if(a.isArray(x))x.forEach(function(b){E.on(b,p)});else{if(typeof x!="string")throw new Error("EventListener.on(): Invalid arguments: "+d.default.Config.inspect(u));var m=this.events[x]||(this.events[x]=[]);m.push(p)}}},y.prototype.off=function(){for(var E,u=this,C=[],M=0;M<arguments.length;M++)C[M]=arguments[M];if(C.length==0||a.isEmptyArg(C[0])&&a.isEmptyArg(C[1])){this.any=[],this.events=Object.create(null),this.anyOnce=[],this.eventsOnce=Object.create(null);return}var x=C[0],p=C[1],m=null,b=null;if(C.length===1||!p)typeof x=="function"?m=x:b=x;else{if(typeof p!="function")throw new Error("EventEmitter.off(): invalid arguments:"+d.default.Config.inspect(C));E=[x,p],b=E[0],m=E[1]}if(m&&a.isEmptyArg(b)){S([this.any,this.events,this.anyOnce,this.eventsOnce],m);return}if(a.isArray(b)){b.forEach(function(h){u.off(h,m)});return}if(typeof b!="string")throw new Error("EventEmitter.off(): invalid arguments:"+d.default.Config.inspect(C));m?S([this.events,this.eventsOnce],m,b):(delete this.events[b],delete this.eventsOnce[b])},y.prototype.listeners=function(E){if(E){var u=this.events[E]||[];return this.eventsOnce[E]&&Array.prototype.push.apply(u,this.eventsOnce[E]),u.length?u:null}return this.any.length?this.any:null},y.prototype.emit=function(E){for(var u=[],C=1;C<arguments.length;C++)u[C-1]=arguments[C];var M={event:E},x=[];this.anyOnce.length&&(Array.prototype.push.apply(x,this.anyOnce),this.anyOnce=[]),this.any.length&&Array.prototype.push.apply(x,this.any);var p=this.eventsOnce[E];p&&(Array.prototype.push.apply(x,p),delete this.eventsOnce[E]);var m=this.events[E];m&&Array.prototype.push.apply(x,m),a.arrForEach(x,function(b){g(M,b,u)})},y.prototype.once=function(){for(var E=this,u=[],C=0;C<arguments.length;C++)u[C]=arguments[C];var M=u.length;if((M===0||M===1&&typeof u[0]!="function")&&d.default.Config.Promise){var x=u[0];return new d.default.Config.Promise(function(c){E.once(x,c)})}var p=u[0],m=u[1];if(u.length===1&&typeof p=="function")this.anyOnce.push(p);else if(a.isEmptyArg(p)){if(typeof m!="function")throw new Error("EventEmitter.once(): Invalid arguments:"+d.default.Config.inspect(u));this.anyOnce.push(m)}else if(a.isArray(p)){var b=this,h=function(){var c=Array.prototype.slice.call(arguments);if(a.arrForEach(p,function(s){b.off(s,h)}),typeof m!="function")throw new Error("EventEmitter.once(): Invalid arguments:"+d.default.Config.inspect(u));m.apply(this,c)};a.arrForEach(p,function(c){b.on(c,h)})}else{if(typeof p!="string")throw new Error("EventEmitter.once(): Invalid arguments:"+d.default.Config.inspect(u));var f=this.eventsOnce[p]||(this.eventsOnce[p]=[]);if(m){if(typeof m!="function")throw new Error("EventEmitter.once(): Invalid arguments:"+d.default.Config.inspect(u));f.push(m)}}},y.prototype.whenState=function(E,u,C){for(var M=this,x=[],p=3;p<arguments.length;p++)x[p-3]=arguments[p];var m={event:E};if(typeof E!="string"||typeof u!="string")throw"whenState requires a valid event String argument";if(typeof C!="function"&&d.default.Config.Promise)return new d.default.Config.Promise(function(b){y.prototype.whenState.apply(M,[E,u,b].concat(x))});E===u?g(m,C,x):this.once(E,C)},y}();r.default=R},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.getDefaults=r.normaliseOptions=r.objectifyOptions=r.getAgentString=r.getHosts=r.getFallbackHosts=r.environmentFallbackHosts=r.getHttpScheme=r.getPort=r.getHost=void 0;var i=o(0),a=i.__importDefault(o(3)),l=i.__importStar(o(1)),d=i.__importDefault(o(2)),g=i.__importDefault(o(4)),S=o(43),R="ably-js/"+S.version,y={ENVIRONMENT:"",REST_HOST:"rest.ably.io",REALTIME_HOST:"realtime.ably.io",FALLBACK_HOSTS:["A.ably-realtime.com","B.ably-realtime.com","C.ably-realtime.com","D.ably-realtime.com","E.ably-realtime.com"],PORT:80,TLS_PORT:443,TIMEOUTS:{disconnectedRetryTimeout:15e3,suspendedRetryTimeout:3e4,httpRequestTimeout:15e3,channelRetryTimeout:15e3,fallbackRetryTimeout:6e5,connectionStateTtl:12e4,realtimeRequestTimeout:1e4,recvTimeout:9e4,preferenceConnectTimeout:6e3,parallelUpgradeDelay:6e3},httpMaxRetryCount:3,maxMessageSize:65536,version:S.version,protocolVersion:2,agent:R,getHost:E,getPort:u,getHttpScheme:C,environmentFallbackHosts:M,getFallbackHosts:x,getHosts:p,checkHost:m,objectifyOptions:c,normaliseOptions:s};function E(v,k,j){return j?k=k==v.restHost&&v.realtimeHost||k||v.realtimeHost:k=k||v.restHost,k}r.getHost=E;function u(v,k){return k||v.tls?v.tlsPort:v.port}r.getPort=u;function C(v){return v.tls?"https://":"http://"}r.getHttpScheme=C;function M(v){return[v+"-a-fallback.ably-realtime.com",v+"-b-fallback.ably-realtime.com",v+"-c-fallback.ably-realtime.com",v+"-d-fallback.ably-realtime.com",v+"-e-fallback.ably-realtime.com"]}r.environmentFallbackHosts=M;function x(v){var k=v.fallbackHosts,j=typeof v.httpMaxRetryCount!="undefined"?v.httpMaxRetryCount:y.httpMaxRetryCount;return k?l.arrChooseN(k,j):[]}r.getFallbackHosts=x;function p(v){return[v.restHost].concat(x(v))}r.getHosts=p;function m(v){if(typeof v!="string")throw new g.default("host must be a string; was a "+typeof v,4e4,400);if(!v.length)throw new g.default("host must not be zero-length",4e4,400)}function b(v,k,j){return v.realtimeHost?v.realtimeHost:v.restHost?(d.default.logAction(d.default.LOG_MINOR,"Defaults.normaliseOptions",'restHost is set to "'+v.restHost+'" but realtimeHost is not set, so setting realtimeHost to "'+v.restHost+'" too. If this is not what you want, please set realtimeHost explicitly.'),v.restHost):k?y.REALTIME_HOST:j+"-"+y.REALTIME_HOST}function h(v){var k={};for(var j in y.TIMEOUTS)k[j]=v[j]||y.TIMEOUTS[j];return k}function f(v){var k=y.agent;if(v.agents)for(var j in v.agents)k+=" "+j+"/"+v.agents[j];return k}r.getAgentString=f;function c(v){return typeof v=="string"?v.indexOf(":")==-1?{token:v}:{key:v}:v}r.objectifyOptions=c;function s(v){if(v.host&&(d.default.renamedClientOption("host","restHost"),v.restHost=v.host),v.wsHost&&(d.default.renamedClientOption("wsHost","realtimeHost"),v.realtimeHost=v.wsHost),v.queueEvents&&(d.default.renamedClientOption("queueEvents","queueMessages"),v.queueMessages=v.queueEvents),v.headers&&d.default.deprecated("the `headers` client option",""),v.fallbackHostsUseDefault){if(v.fallbackHosts){var k="fallbackHosts and fallbackHostsUseDefault cannot both be set";throw d.default.logAction(d.default.LOG_ERROR,"Defaults.normaliseOptions",k),new g.default(k,4e4,400)}if(v.port||v.tlsPort){var k="fallbackHostsUseDefault cannot be set when port or tlsPort are set";throw d.default.logAction(d.default.LOG_ERROR,"Defaults.normaliseOptions",k),new g.default(k,4e4,400)}v.environment?d.default.deprecated("The `fallbackHostsUseDefault` client option","If you’re using this client option to force the library to make use of fallback hosts even though you’ve set the `environment` client option, then this is no longer necessary: remove your usage of the `fallbackHostsUseDefault` client option and the library will then automatically choose the correct fallback hosts to use for the specified environment."):d.default.deprecated("The `fallbackHostsUseDefault` client option","If you’re using this client option to force the library to make use of fallback hosts even though you’re not using the primary Ably environment, then stop using `fallbackHostsUseDefault`, and update your code to either pass the `environment` client option (in which case the library will automatically choose the correct fallback hosts to use for the specified environment), or to pass the `fallbackHosts` client option to specify a custom list of fallback hosts to use (for example, if you’re using a custom CNAME, in which case Ably will have provided you with an explicit list of fallback hosts)."),v.fallbackHosts=y.FALLBACK_HOSTS}v.recover===!0&&(d.default.deprecated("The ability to use a boolean value for the `recover` client option","If you wish for the connection to always be recovered, replace `{ recover: true }` with a function that always passes `true` to its callback: `{ recover: function(lastConnectionDetails, cb) { cb(true); } }`"),v.recover=function(F,O){O(!0)}),typeof v.recover=="function"&&v.closeOnUnload===!0&&(d.default.logAction(d.default.LOG_ERROR,"Defaults.normaliseOptions","closeOnUnload was true and a session recovery function was set - these are mutually exclusive, so unsetting the latter"),v.recover=void 0),"closeOnUnload"in v||(v.closeOnUnload=!v.recover),v.transports&&l.arrIn(v.transports,"xhr")&&(d.default.deprecationWarning('The "xhr" transport has been renamed to "xhr_streaming". Please update your client options code to use `transports: ["xhr_streaming"]` instead. The ability to use `transports: ["xhr"]` will be removed in a future version.'),l.arrDeleteValue(v.transports,"xhr"),v.transports.push("xhr_streaming")),"queueMessages"in v||(v.queueMessages=!0);var j=v.environment&&String(v.environment).toLowerCase()||y.ENVIRONMENT,N=!j||j==="production";!v.fallbackHosts&&!v.restHost&&!v.realtimeHost&&!v.port&&!v.tlsPort&&(v.fallbackHosts=N?y.FALLBACK_HOSTS:M(j));var P=v.restHost||(N?y.REST_HOST:j+"-"+y.REST_HOST),T=b(v,N,j);l.arrForEach((v.fallbackHosts||[]).concat(P,T),m),v.port=v.port||y.PORT,v.tlsPort=v.tlsPort||y.TLS_PORT,"tls"in v||(v.tls=!0);var I=h(v);if("useBinaryProtocol"in v?v.useBinaryProtocol=a.default.Config.supportsBinary&&v.useBinaryProtocol:v.useBinaryProtocol=a.default.Config.preferBinary,v.clientId){var A=v.headers=v.headers||{};A["X-Ably-ClientId"]=a.default.BufferUtils.base64Encode(a.default.BufferUtils.utf8Encode(v.clientId))}"idempotentRestPublishing"in v||(v.idempotentRestPublishing=!0),v.promises&&!a.default.Config.Promise&&(d.default.logAction(d.default.LOG_ERROR,"Defaults.normaliseOptions","{promises: true} was specified, but no Promise constructor found; disabling promises"),v.promises=!1);var D=null,B=v.connectivityCheckUrl;if(v.connectivityCheckUrl){var z=v.connectivityCheckUrl.split("?"),$=z[0],V=z[1];D=V?l.parseQueryString(V):{},$.indexOf("://")===-1&&($="https://"+$),B=$}return i.__assign(i.__assign({},v),{useBinaryProtocol:"useBinaryProtocol"in v?a.default.Config.supportsBinary&&v.useBinaryProtocol:a.default.Config.preferBinary,realtimeHost:T,restHost:P,maxMessageSize:v.maxMessageSize||y.maxMessageSize,timeouts:I,connectivityCheckParams:D,connectivityCheckUrl:B})}r.normaliseOptions=s,r.default=y;function w(v){return Object.assign(y,v)}r.getDefaults=w},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(3)),l=i.__importDefault(o(2)),d=i.__importDefault(o(4)),g=i.__importStar(o(1));function S(u){return!u||!u.channelOptions?{channelOptions:u,plugins:{},baseEncodedPreviousPayload:void 0}:u}function R(u){if(u&&u.cipher){if(!a.default.Crypto)throw new Error("Encryption not enabled; use ably.encryption.js instead");var C=a.default.Crypto.getCipher(u.cipher);return{cipher:C.cipherParams,channelCipher:C.cipher}}return u!=null?u:{}}function y(u){var C=0;return u.name&&(C+=u.name.length),u.clientId&&(C+=u.clientId.length),u.extras&&(C+=JSON.stringify(u.extras).length),u.data&&(C+=g.dataSizeBytes(u.data)),C}var E=function(){function u(){}return u.prototype.toJSON=function(){var C=this.encoding,M=this.data;return M&&a.default.BufferUtils.isBuffer(M)&&(arguments.length>0?(C=C?C+"/base64":"base64",M=a.default.BufferUtils.base64Encode(M)):M=a.default.BufferUtils.toBuffer(M)),{name:this.name,id:this.id,clientId:this.clientId,connectionId:this.connectionId,connectionKey:this.connectionKey,extras:this.extras,encoding:C,data:M}},u.prototype.toString=function(){var C="[Message";return this.name&&(C+="; name="+this.name),this.id&&(C+="; id="+this.id),this.timestamp&&(C+="; timestamp="+this.timestamp),this.clientId&&(C+="; clientId="+this.clientId),this.connectionId&&(C+="; connectionId="+this.connectionId),this.encoding&&(C+="; encoding="+this.encoding),this.extras&&(C+="; extras ="+JSON.stringify(this.extras)),this.data&&(typeof this.data=="string"?C+="; data="+this.data:a.default.BufferUtils.isBuffer(this.data)?C+="; data (buffer)="+a.default.BufferUtils.base64Encode(this.data):C+="; data (json)="+JSON.stringify(this.data)),this.extras&&(C+="; extras="+JSON.stringify(this.extras)),C+="]",C},u.encrypt=function(C,M,x){var p=C.data,m=C.encoding,b=M.channelCipher;m=m?m+"/":"",a.default.BufferUtils.isBuffer(p)||(p=a.default.BufferUtils.utf8Encode(String(p)),m=m+"utf-8/"),b.encrypt(p,function(h,f){if(h){x(h);return}C.data=f,C.encoding=m+"cipher+"+b.algorithm,x(null,C)})},u.encode=function(C,M,x){var p=C.data,m=typeof p=="string"||a.default.BufferUtils.isBuffer(p)||p===null||p===void 0;if(!m)if(g.isObject(p)||g.isArray(p))C.data=JSON.stringify(p),C.encoding=C.encoding?C.encoding+"/json":"json";else throw new d.default("Data type is unsupported",40013,400);M!=null&&M.cipher?u.encrypt(C,M,x):x(null,C)},u.encodeArray=function(C,M,x){for(var p=0,m=0;m<C.length;m++)u.encode(C[m],M,function(b){if(b){x(b);return}p++,p==C.length&&x(null,C)})},u.decode=function(C,M){var x=S(M),p=C.data,m=C.encoding;if(m){var b=m.split("/"),h=void 0,f=b.length,c=C.data,s="";try{for(;(h=f)>0;){var w=b[--f].match(/([-\w]+)(\+([\w-]+))?/);if(!w)break;switch(s=w[1],s){case"base64":c=a.default.BufferUtils.base64Decode(String(c)),h==b.length&&(p=c);continue;case"utf-8":c=a.default.BufferUtils.utf8Decode(c);continue;case"json":c=JSON.parse(c);continue;case"cipher":if(x.channelOptions!=null&&x.channelOptions.cipher&&x.channelOptions.channelCipher){var v=w[3],k=x.channelOptions.channelCipher;if(v!=k.algorithm)throw new Error("Unable to decrypt message with given cipher; incompatible cipher params");c=k.decrypt(c);continue}else throw new Error("Unable to decrypt message; not an encrypted channel");case"vcdiff":if(!x.plugins||!x.plugins.vcdiff)throw new d.default("Missing Vcdiff decoder (https://github.com/ably-forks/vcdiff-decoder)",40019,400);if(typeof Uint8Array=="undefined")throw new d.default("Delta decoding not supported on this browser (need ArrayBuffer & Uint8Array)",40020,400);try{var j=x.baseEncodedPreviousPayload;typeof j=="string"&&(j=a.default.BufferUtils.utf8Encode(j)),j=a.default.BufferUtils.toBuffer(j),c=a.default.BufferUtils.toBuffer(c),c=a.default.BufferUtils.typedArrayToBuffer(x.plugins.vcdiff.decode(c,j)),p=c}catch(P){throw new d.default("Vcdiff delta decode failed with "+P,40018,400)}continue;default:throw new Error("Unknown encoding")}}}catch(P){var N=P;throw new d.default("Error processing the "+s+" encoding, decoder returned ‘"+N.message+"’",N.code||40013,400)}finally{C.encoding=h<=0?null:b.slice(0,h).join("/"),C.data=c}}x.baseEncodedPreviousPayload=p},u.fromResponseBody=function(C,M,x){x&&(C=g.decodeBody(C,x));for(var p=0;p<C.length;p++){var m=C[p]=u.fromValues(C[p]);try{u.decode(m,M)}catch(b){l.default.logAction(l.default.LOG_ERROR,"Message.fromResponseBody()",b.toString())}}return C},u.fromValues=function(C){return Object.assign(new u,C)},u.fromValuesArray=function(C){for(var M=C.length,x=new Array(M),p=0;p<M;p++)x[p]=u.fromValues(C[p]);return x},u.fromEncoded=function(C,M){var x=u.fromValues(C),p=R(M!=null?M:null);try{u.decode(x,p)}catch(m){l.default.logAction(l.default.LOG_ERROR,"Message.fromEncoded()",m.toString())}return x},u.fromEncodedArray=function(C,M){return C.map(function(x){return u.fromEncoded(x,M)})},u.getMessagesSize=function(C){for(var M,x=0,p=0;p<C.length;p++)M=C[p],x+=M.size||(M.size=y(M));return x},u.serialize=g.encodeBody,u}();r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(4)),d=i.__importDefault(o(9)),g=i.__importDefault(o(16)),S={HEARTBEAT:0,ACK:1,NACK:2,CONNECT:3,CONNECTED:4,DISCONNECT:5,DISCONNECTED:6,CLOSE:7,CLOSED:8,ERROR:9,ATTACH:10,ATTACHED:11,DETACH:12,DETACHED:13,PRESENCE:14,MESSAGE:15,SYNC:16,AUTH:17,ACTIVATE:18},R=[];Object.keys(S).forEach(function(x){R[S[x]]=x});var y={HAS_PRESENCE:1,HAS_BACKLOG:2,RESUMED:4,TRANSIENT:16,ATTACH_RESUME:32,PRESENCE:65536,PUBLISH:1<<17,SUBSCRIBE:1<<18,PRESENCE_SUBSCRIBE:1<<19},E=Object.keys(y);y.MODE_ALL=y.PRESENCE|y.PUBLISH|y.SUBSCRIBE|y.PRESENCE_SUBSCRIBE;function u(x){var p=[];if(x)for(var m=0;m<x.length;m++)p.push(x[m].toString());return"[ "+p.join(", ")+" ]"}var C="id channel channelSerial connectionId count msgSerial timestamp".split(" "),M=function(){function x(){var p=this;this.hasFlag=function(m){return(p.flags&y[m])>0}}return x.prototype.setFlag=function(p){return this.flags=this.flags|y[p]},x.prototype.getMode=function(){return this.flags&&this.flags&y.MODE_ALL},x.prototype.encodeModesToFlags=function(p){var m=this;p.forEach(function(b){return m.setFlag(b)})},x.prototype.decodeModesFromFlags=function(){var p=this,m=[];return x.channelModes.forEach(function(b){p.hasFlag(b)&&m.push(b)}),m.length>0?m:void 0},x.fromValues=function(p){return Object.assign(new x,p)},x.Action=S,x.channelModes=["PRESENCE","PUBLISH","SUBSCRIBE","PRESENCE_SUBSCRIBE"],x.ActionName=R,x.serialize=a.encodeBody,x.deserialize=function(p,m){var b=a.decodeBody(p,m);return x.fromDeserialized(b)},x.fromDeserialized=function(p){var m=p.error;m&&(p.error=l.default.fromValues(m));var b=p.messages;if(b)for(var h=0;h<b.length;h++)b[h]=d.default.fromValues(b[h]);var f=p.presence;if(f)for(var h=0;h<f.length;h++)f[h]=g.default.fromValues(f[h],!0);return Object.assign(new x,p)},x.stringify=function(p){var m="[ProtocolMessage";p.action!==void 0&&(m+="; action="+x.ActionName[p.action]||!1);for(var b,h=0;h<C.length;h++)b=C[h],p[b]!==void 0&&(m+="; "+b+"="+p[b]);if(p.messages&&(m+="; messages="+u(d.default.fromValuesArray(p.messages))),p.presence&&(m+="; presence="+u(g.default.fromValuesArray(p.presence))),p.error&&(m+="; error="+l.default.fromValues(p.error).toString()),p.auth&&p.auth.accessToken&&(m+="; token="+p.auth.accessToken),p.flags&&(m+="; flags="+E.filter(p.hasFlag).join(",")),p.params){var f="";a.forInOwnNonNullProperties(p.params,function(c){f.length>0&&(f+="; "),f+=c+"="+p.params[c]}),f.length>0&&(m+="; params=["+f+"]")}return m+="]",m},x}();r.default=M},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){var a=i,l=a.lib,d=l.WordArray,g=a.enc;g.Base64={stringify:function(R){var y=R.words,E=R.sigBytes,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";R.clamp();for(var C=[],M=0;M<E;M+=3)for(var x=y[M>>>2]>>>24-M%4*8&255,p=y[M+1>>>2]>>>24-(M+1)%4*8&255,m=y[M+2>>>2]>>>24-(M+2)%4*8&255,b=x<<16|p<<8|m,h=0;h<4&&M+h*.75<E;h++)C.push(u.charAt(b>>>6*(3-h)&63));var f=u.charAt(64);if(f)for(;C.length%4;)C.push(f);return C.join("")},parse:function(R){var y=R.length,E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var C=0;C<E.length;C++)u[E.charCodeAt(C)]=C}var M=E.charAt(64);if(M){var x=R.indexOf(M);x!==-1&&(y=x)}return S(R,y,u)}};function S(R,y,E){for(var u=[],C=0,M=0;M<y;M++)if(M%4){var x=E[R.charCodeAt(M-1)]<<M%4*2,p=E[R.charCodeAt(M)]>>>6-M%4*2,m=x|p;u[C>>>2]|=m<<24-C%4*8,C++}return d.create(u,C)}}(),i.enc.Base64})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(10)),d=i.__importDefault(o(26)),g=i.__importDefault(o(2)),S=i.__importDefault(o(8)),R=i.__importDefault(o(21)),y=i.__importDefault(o(18)),E=i.__importDefault(o(4)),u=i.__importDefault(o(22)),C=i.__importDefault(o(3));function M(m){var b=[80015,80017,80030];return m.code?y.default.isTokenErr(m)?!1:a.arrIn(b,m.code)?!0:m.code>=4e4&&m.code<5e4:!1}function x(m){return M(m)?[l.default.fromValues({action:l.default.Action.ERROR,error:m})]:[l.default.fromValues({action:l.default.Action.DISCONNECTED,error:m})]}var p=function(m){i.__extends(b,m);function b(h,f,c){var s=m.call(this,h,f,c,!0)||this;return s.onAuthUpdated=function(w){s.authParams={access_token:w.token}},s.stream="stream"in c?c.stream:!0,s.sendRequest=null,s.recvRequest=null,s.pendingCallback=null,s.pendingItems=null,s}return b.prototype.connect=function(){var h=this;g.default.logAction(g.default.LOG_MINOR,"CometTransport.connect()","starting"),d.default.prototype.connect.call(this);var f=this.params,c=f.options,s=S.default.getHost(c,f.host),w=S.default.getPort(c),v=c.tls?"https://":"http://";this.baseUri=v+s+":"+w+"/comet/";var k=this.baseUri+"connect";g.default.logAction(g.default.LOG_MINOR,"CometTransport.connect()","uri: "+k),this.auth.getAuthParams(function(j,N){if(j){h.disconnect(j);return}if(!h.isDisposed){h.authParams=N;var P=h.params.getConnectParams(N);"stream"in P&&(h.stream=P.stream),g.default.logAction(g.default.LOG_MINOR,"CometTransport.connect()","connectParams:"+a.toQueryString(P));var T=!1,I=h.recvRequest=h.createRequest(k,null,P,null,h.stream?u.default.REQ_RECV_STREAM:u.default.REQ_RECV);I.on("data",function(A){h.recvRequest&&(T||(T=!0,h.emit("preconnect")),h.onData(A))}),I.on("complete",function(A){if(h.recvRequest||(A=A||new E.default("Request cancelled",80003,400)),h.recvRequest=null,!T&&!A&&(T=!0,h.emit("preconnect")),h.onActivity(),A){A.code?h.onData(x(A)):h.disconnect(A);return}C.default.Config.nextTick(function(){h.recv()})}),I.exec()}})},b.prototype.requestClose=function(){g.default.logAction(g.default.LOG_MINOR,"CometTransport.requestClose()"),this._requestCloseOrDisconnect(!0)},b.prototype.requestDisconnect=function(){g.default.logAction(g.default.LOG_MINOR,"CometTransport.requestDisconnect()"),this._requestCloseOrDisconnect(!1)},b.prototype._requestCloseOrDisconnect=function(h){var f=this,c=h?this.closeUri:this.disconnectUri;if(c){var s=this.createRequest(c,null,this.authParams,null,u.default.REQ_SEND);s.on("complete",function(w){w&&(g.default.logAction(g.default.LOG_ERROR,"CometTransport.request"+(h?"Close()":"Disconnect()"),"request returned err = "+a.inspectError(w)),f.finish("disconnected",w))}),s.exec()}},b.prototype.dispose=function(){var h=this;g.default.logAction(g.default.LOG_MINOR,"CometTransport.dispose()",""),this.isDisposed||(this.isDisposed=!0,this.recvRequest&&(g.default.logAction(g.default.LOG_MINOR,"CometTransport.dispose()","aborting recv request"),this.recvRequest.abort(),this.recvRequest=null),this.finish("disconnected",R.default.disconnected()),C.default.Config.nextTick(function(){h.emit("disposed")}))},b.prototype.onConnect=function(h){var f;if(!this.isDisposed){var c=(f=h.connectionDetails)===null||f===void 0?void 0:f.connectionKey;d.default.prototype.onConnect.call(this,h);var s=this.baseUri+c;g.default.logAction(g.default.LOG_MICRO,"CometTransport.onConnect()","baseUri = "+s),this.sendUri=s+"/send",this.recvUri=s+"/recv",this.closeUri=s+"/close",this.disconnectUri=s+"/disconnect"}},b.prototype.send=function(h){if(this.sendRequest){this.pendingItems=this.pendingItems||[],this.pendingItems.push(h);return}var f=this.pendingItems||[];f.push(h),this.pendingItems=null,this.sendItems(f)},b.prototype.sendAnyPending=function(){var h=this.pendingItems;h&&(this.pendingItems=null,this.sendItems(h))},b.prototype.sendItems=function(h){var f=this,c=this.sendRequest=this.createRequest(this.sendUri,null,this.authParams,this.encodeRequest(h),u.default.REQ_SEND);c.on("complete",function(s,w){if(s&&g.default.logAction(g.default.LOG_ERROR,"CometTransport.sendItems()","on complete: err = "+a.inspectError(s)),f.sendRequest=null,s){s.code?f.onData(x(s)):f.disconnect(s);return}w&&f.onData(w),f.pendingItems&&C.default.Config.nextTick(function(){f.sendRequest||f.sendAnyPending()})}),c.exec()},b.prototype.recv=function(){var h=this;if(!this.recvRequest&&this.isConnected){var f=this.recvRequest=this.createRequest(this.recvUri,null,this.authParams,null,this.stream?u.default.REQ_RECV_STREAM:u.default.REQ_RECV_POLL);f.on("data",function(c){h.onData(c)}),f.on("complete",function(c){if(h.recvRequest=null,h.onActivity(),c){c.code?h.onData(x(c)):h.disconnect(c);return}C.default.Config.nextTick(function(){h.recv()})}),f.exec()}},b.prototype.onData=function(h){try{var f=this.decodeResponse(h);if(f&&f.length)for(var c=0;c<f.length;c++)this.onProtocolMessage(l.default.fromDeserialized(f[c]))}catch(s){g.default.logAction(g.default.LOG_ERROR,"CometTransport.onData()","Unexpected exception handing channel event: "+s.stack)}},b.prototype.encodeRequest=function(h){return JSON.stringify(h)},b.prototype.decodeResponse=function(h){return typeof h=="string"?JSON.parse(h):h},b}(d.default);r.default=p},function(n,r){var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(i){typeof window=="object"&&(o=window)}n.exports=o},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.isSuccessCode=void 0;var i;(function(l){l[l.Success=200]="Success",l[l.NoContent=204]="NoContent",l[l.BadRequest=400]="BadRequest",l[l.Unauthorized=401]="Unauthorized",l[l.Forbidden=403]="Forbidden",l[l.RequestTimeout=408]="RequestTimeout",l[l.InternalServerError=500]="InternalServerError"})(i||(i={}));function a(l){return l>=i.Success&&l<i.BadRequest}r.isSuccessCode=a,r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(3)),l=i.__importStar(o(1)),d=i.__importDefault(o(2)),g=i.__importDefault(o(18)),S=i.__importDefault(o(19)),R=o(4),y=i.__importDefault(o(14));function E(m,b,h,f,c){m.http.supportsAuthHeaders?m.auth.getAuthHeaders(function(s,w){s?f(s):c(l.mixin(w,b),h)}):m.auth.getAuthParams(function(s,w){s?f(s):c(b,l.mixin(w,h))})}function u(m,b){return function(h,f,c,s,w){if(h&&!f){m(h);return}if(w===y.default.NoContent){m(h,[],c,!0,w);return}if(!s)try{f=l.decodeBody(f,b)}catch(T){l.isErrorInfoOrPartialErrorInfo(T)?m(T):m(new R.PartialErrorInfo(l.inspectError(T),null));return}if(!f){m(new R.PartialErrorInfo("unenvelope(): Response body is missing",null));return}var v=f,k=v.statusCode,j=v.response,N=v.headers;if(k===void 0){m(h,f,c,!0,w);return}if(k<200||k>=300){var P=j&&j.error||h;P||(P=new Error("Error in unenveloping "+f),P.statusCode=k),m(P,j,N,!0,k);return}m(h,j,N,!0,k)}}function C(m){var b=[];if(m)for(var h in m)b.push(h+"="+m[h]);return b.join("&")}function M(m,b){return m+(b?"?":"")+C(b)}function x(m,b,h,f){return function(c,s,w,v,k){c?d.default.logAction(d.default.LOG_MICRO,"Resource."+b+"()","Received Error; "+M(h,f)+"; Error: "+l.inspectError(c)):d.default.logAction(d.default.LOG_MICRO,"Resource."+b+"()","Received; "+M(h,f)+"; Headers: "+C(w)+"; StatusCode: "+k+"; Body: "+(a.default.BufferUtils.isBuffer(s)?s.toString():s)),m&&m(c,s,w,v,k)}}var p=function(){function m(){}return m.get=function(b,h,f,c,s,w){m.do(S.default.Get,b,h,null,f,c,s,w)},m.delete=function(b,h,f,c,s,w){m.do(S.default.Delete,b,h,null,f,c,s,w)},m.post=function(b,h,f,c,s,w,v){m.do(S.default.Post,b,h,f,c,s,w,v)},m.patch=function(b,h,f,c,s,w,v){m.do(S.default.Patch,b,h,f,c,s,w,v)},m.put=function(b,h,f,c,s,w,v){m.do(S.default.Put,b,h,f,c,s,w,v)},m.do=function(b,h,f,c,s,w,v,k){d.default.shouldLog(d.default.LOG_MICRO)&&(k=x(k,b,f,w)),v&&(k=k&&u(k,v),(w=w||{}).envelope=v);function j(N,P){var T;if(d.default.shouldLog(d.default.LOG_MICRO)&&d.default.logAction(d.default.LOG_MICRO,"Resource."+b+"()","Sending; "+M(f,P)),d.default.shouldLog(d.default.LOG_MICRO)){var I=c;if(((T=N["content-type"])===null||T===void 0?void 0:T.indexOf("msgpack"))>0)try{I=a.default.Config.msgpack.decode(c)}catch(A){d.default.logAction(d.default.LOG_MICRO,"Resource."+b+"()","Sending MsgPack Decoding Error: "+l.inspectError(A))}d.default.logAction(d.default.LOG_MICRO,"Resource."+b+"()","Sending; "+M(f,P)+"; Body: "+I)}h.http.do(b,h,f,N,c,P,function(A,D,B,z,$){if(A&&g.default.isTokenErr(A)){h.auth.authorize(null,null,function(V){if(V){k(V);return}E(h,N,P,k,j)});return}k(A,D,B,z,$)})}E(h,s,w,k,j)},m}();r.default=p},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(2)),l=i.__importDefault(o(3)),d=i.__importDefault(o(9)),g=i.__importStar(o(1));function S(y){return R.Actions.indexOf(y)}var R=function(){function y(){}return y.prototype.isSynthesized=function(){return!this.id||!this.connectionId?!0:this.id.substring(this.connectionId.length,0)!==this.connectionId},y.prototype.parseId=function(){if(!this.id)throw new Error("parseId(): Presence message does not contain an id");var E=this.id.split(":");return{connectionId:E[0],msgSerial:parseInt(E[1],10),index:parseInt(E[2],10)}},y.prototype.toJSON=function(){var E=this.data,u=this.encoding;return E&&l.default.BufferUtils.isBuffer(E)&&(arguments.length>0?(u=u?u+"/base64":"base64",E=l.default.BufferUtils.base64Encode(E)):E=l.default.BufferUtils.toBuffer(E)),{id:this.id,clientId:this.clientId,action:S(this.action),data:E,encoding:u,extras:this.extras}},y.prototype.toString=function(){var E="[PresenceMessage";return E+="; action="+this.action,this.id&&(E+="; id="+this.id),this.timestamp&&(E+="; timestamp="+this.timestamp),this.clientId&&(E+="; clientId="+this.clientId),this.connectionId&&(E+="; connectionId="+this.connectionId),this.encoding&&(E+="; encoding="+this.encoding),this.data&&(typeof this.data=="string"?E+="; data="+this.data:l.default.BufferUtils.isBuffer(this.data)?E+="; data (buffer)="+l.default.BufferUtils.base64Encode(this.data):E+="; data (json)="+JSON.stringify(this.data)),this.extras&&(E+="; extras="+JSON.stringify(this.extras)),E+="]",E},y.fromResponseBody=function(E,u,C){var M=[];C&&(E=g.decodeBody(E,C));for(var x=0;x<E.length;x++){var p=M[x]=y.fromValues(E[x],!0);try{y.decode(p,u)}catch(m){a.default.logAction(a.default.LOG_ERROR,"PresenceMessage.fromResponseBody()",m.toString())}}return M},y.fromValues=function(E,u){return u&&(E.action=y.Actions[E.action]),Object.assign(new y,E)},y.fromValuesArray=function(E){for(var u=E.length,C=new Array(u),M=0;M<u;M++)C[M]=y.fromValues(E[M]);return C},y.fromEncoded=function(E,u){var C=y.fromValues(E,!0);try{y.decode(C,u!=null?u:{})}catch(M){a.default.logAction(a.default.LOG_ERROR,"PresenceMessage.fromEncoded()",M.toString())}return C},y.fromEncodedArray=function(E,u){return E.map(function(C){return y.fromEncoded(C,u)})},y.fromData=function(E){return E instanceof y?E:y.fromValues({data:E})},y.Actions=["absent","present","enter","leave","update"],y.encode=d.default.encode,y.decode=d.default.decode,y.getMessagesSize=d.default.getMessagesSize,y}();r.default=R},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importStar(o(1)),d=a.__importDefault(o(7)),g=a.__importStar(o(4)),S=a.__importDefault(o(2)),R=a.__importDefault(o(8)),y=a.__importDefault(o(22)),E=a.__importDefault(o(3));function u(v,k){return l.arrIn(l.allToLowerCase(l.keysArray(k)),"x-ably-errorcode")}function C(v,k){if(u(v,k))return v.error&&g.default.fromValues(v.error)}var M=function(){},x=0,p={},m=typeof i!="undefined"&&i.XDomainRequest;function b(){var v=navigator.userAgent.toString().match(/MSIE\s([\d.]+)/);return v&&Number(v[1])}function h(){var v;return m&&(v=b())&&v===10}function f(v,k){return v.getResponseHeader&&v.getResponseHeader(k)}function c(v){return v.getResponseHeader&&(v.getResponseHeader("transfer-encoding")||!v.getResponseHeader("content-length"))}function s(v){for(var k=l.trim(v.getAllResponseHeaders()).split(`\r
138
138
  `),j={},N=0;N<k.length;N++){var P=k[N].split(":").map(l.trim);j[P[0].toLowerCase()]=P[1]}return j}var w=function(v){a.__extends(k,v);function k(j,N,P,T,I,A,D){var B=v.call(this)||this;return P=P||{},P.rnd=l.cheapRandStr(),h()&&!P.envelope&&(P.envelope="json"),B.uri=j+l.toQueryString(P),B.headers=N||{},B.body=T,B.method=D?D.toUpperCase():l.isEmptyArg(T)?"GET":"POST",B.requestMode=I,B.timeouts=A,B.timedOut=!1,B.requestComplete=!1,B.id=String(++x),p[B.id]=B,B}return k.createRequest=function(j,N,P,T,I,A,D){var B=A||R.default.TIMEOUTS;return new k(j,N,l.copy(P),T,I,B,D)},k.prototype.complete=function(j,N,P,T,I){this.requestComplete||(this.requestComplete=!0,!j&&N&&this.emit("data",N),this.emit("complete",j,N,P,T,I),this.dispose())},k.prototype.abort=function(){this.dispose()},k.prototype.exec=function(){var j=this,N=this.headers,P=this.requestMode==y.default.REQ_SEND?this.timeouts.httpRequestTimeout:this.timeouts.recvTimeout,T=this.timer=setTimeout(function(){j.timedOut=!0,A.abort()},P),I=this.method,A=this.xhr=new XMLHttpRequest,D=N.accept,B=this.body,z="text";if(D?D.indexOf("application/x-msgpack")===0&&(z="arraybuffer"):N.accept="application/json",B){var $=N["content-type"]||(N["content-type"]="application/json");$.indexOf("application/json")>-1&&typeof B!="string"&&(B=JSON.stringify(B))}A.open(I,this.uri,!0),A.responseType=z,"authorization"in N&&(A.withCredentials=!0);for(var V in N)A.setRequestHeader(V,N[V]);var F=function(q,ye,De,Ve){var Ae,zt=ye+" (event type: "+q.type+")";!((Ae=j==null?void 0:j.xhr)===null||Ae===void 0)&&Ae.statusText&&(zt+=", current statusText is "+j.xhr.statusText),S.default.logAction(S.default.LOG_ERROR,"Request.on"+q.type+"()",zt),j.complete(new g.PartialErrorInfo(zt,De,Ve))};A.onerror=function(q){F(q,"XHR error occurred",null,400)},A.onabort=function(q){j.timedOut?F(q,"Request aborted due to request timeout expiring",null,408):F(q,"Request cancelled",null,400)},A.ontimeout=function(q){F(q,"Request timed out",null,408)};var O,L,U,_=0,W=!1,Q=function(){if(clearTimeout(T),U=L<400,L==204){j.complete(null,null,null,null,L);return}O=j.requestMode==y.default.REQ_RECV_STREAM&&U&&c(A)},X=function(){var q;try{var ye=f(A,"content-type"),De=ye?ye.indexOf("application/json")>=0:A.responseType=="text";if(De){var Ve=A.responseType==="arraybuffer"?E.default.BufferUtils.utf8Decode(A.response):String(A.responseText);Ve.length?q=JSON.parse(Ve):q=Ve,W=!0}else q=A.response;q.response!==void 0?(L=q.statusCode,U=L<400,N=q.headers,q=q.response):N=s(A)}catch(zt){j.complete(new g.PartialErrorInfo("Malformed response body from server: "+zt.message,null,400));return}if(U||l.isArray(q)){j.complete(null,q,N,W,L);return}var Ae=C(q,N);Ae||(Ae=new g.PartialErrorInfo("Error response received from server: "+L+" body was: "+E.default.Config.inspect(q),null,L)),j.complete(Ae,q,N,W,L)};function ne(){for(var q=A.responseText,ye=q.length-1,De,Ve;_<ye&&(De=q.indexOf(`
139
139
  `,_))>-1;)Ve=q.slice(_,De),_=De+1,re(Ve)}var re=function(q){try{q=JSON.parse(q)}catch(ye){j.complete(new g.PartialErrorInfo("Malformed response body from server: "+ye.message,null,400));return}j.emit("data",q)},ce=function(){ne(),j.streamComplete=!0,E.default.Config.nextTick(function(){j.complete()})};A.onreadystatechange=function(){var q=A.readyState;q<3||A.status!==0&&(L===void 0&&(L=A.status,L===1223&&(L=204),Q()),q==3&&O?ne():q==4&&(O?ce():X()))},A.send(B)},k.prototype.dispose=function(){var j=this.xhr;if(j){j.onreadystatechange=j.onerror=j.onabort=j.ontimeout=M,this.xhr=null;var N=this.timer;N&&(clearTimeout(N),this.timer=null),this.requestComplete||j.abort()}delete p[this.id]},k}(d.default);r.default=w}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(2)),l=i.__importStar(o(1)),d=i.__importDefault(o(24)),g=i.__importDefault(o(4)),S=i.__importDefault(o(45)),R=o(11),y=i.__importDefault(o(19)),E=i.__importDefault(o(14)),u=i.__importDefault(o(3)),C=i.__importDefault(o(15)),M=Math.pow(2,17);function x(){}function p(){return("000000"+Math.floor(Math.random()*1e16)).slice(-16)}function m(P){return!!P.connection}function b(P){return l.isErrorInfoOrPartialErrorInfo(P)?(P.code||(P.statusCode===403?P.code=40300:(P.code=40170,P.statusCode=401)),P):new g.default(l.inspectError(P),P.code||40170,P.statusCode||401)}var h=function(P,T){if(u.default.Config.createHmac){var I=u.default.Config.createHmac("SHA256",T);return I.update(P),I.digest("base64")}return(0,R.stringify)((0,S.default)(P,T))};function f(P){if(!P)return"";typeof P=="string"&&(P=JSON.parse(P));var T=Object.create(null),I=l.keysArray(P,!0);if(!I)return"";I.sort();for(var A=0;A<I.length;A++)T[I[A]]=P[I[A]].sort();return JSON.stringify(T)}function c(P){if(P.authCallback)a.default.logAction(a.default.LOG_MINOR,"Auth()","using token auth with authCallback");else if(P.authUrl)a.default.logAction(a.default.LOG_MINOR,"Auth()","using token auth with authUrl");else if(P.key)a.default.logAction(a.default.LOG_MINOR,"Auth()","using token auth with client-side signing");else if(P.tokenDetails)a.default.logAction(a.default.LOG_MINOR,"Auth()","using token auth with supplied token only");else{var T="authOptions must include valid authentication parameters";throw a.default.logAction(a.default.LOG_ERROR,"Auth()",T),new Error(T)}}function s(P){return"useTokenAuth"in P&&!P.useTokenAuth}function w(P){return P.useTokenAuth||!s(P)&&(P.authCallback||P.authUrl||P.token||P.tokenDetails)}function v(P){return!P.key&&!P.authCallback&&!P.authUrl}var k=0;function j(){return k++}var N=function(){function P(T,I){if(this.authOptions={},this.client=T,this.tokenParams=I.defaultTokenParams||{},this.currentTokenRequestId=null,this.waitingForTokenRequest=null,w(I)){if(I.key&&!h){var A="client-side token request signing not supported";throw a.default.logAction(a.default.LOG_ERROR,"Auth()",A),new Error(A)}v(I)&&a.default.logAction(a.default.LOG_ERROR,"Auth()","Warning: library initialized with a token literal without any way to renew the token when it expires (no authUrl, authCallback, or key). See https://help.ably.io/error/40171 for help"),this._saveTokenOptions(I.defaultTokenParams,I),c(this.authOptions)}else{if(!I.key){var A="No authentication options provided; need one of: key, authUrl, or authCallback (or for testing only, token or tokenDetails)";throw a.default.logAction(a.default.LOG_ERROR,"Auth()",A),new g.default(A,40160,401)}a.default.logAction(a.default.LOG_MINOR,"Auth()","anonymous, using basic auth"),this._saveBasicOptions(I)}}return P.prototype.authorize=function(T,I,A){var D=this,B;if(typeof T=="function"&&!A?(A=T,B=T=null):typeof I=="function"&&!A?(A=I,B=null):B=I,!A&&this.client.options.promises)return l.promisify(this,"authorize",arguments);if(B&&B.key&&this.authOptions.key!==B.key)throw new g.default("Unable to update auth options with incompatible key",40102,401);B&&"force"in B&&(a.default.deprecated("The `force` auth option","If you’re using this option to force `authorize()` to fetch a new token even if the current token has not expired, this is no longer necessary, as `authorize()` now always fetches a new token. Update your code to no longer pass the `force` auth option. Note that, in general, passing an auth options argument to `authorize()` will overwrite the library’s stored auth options, which may not be what you want. The library currently contains a special case behavior where passing an auth options object which only contains `{ force: true }` will _not_ overwrite the stored options. This special case behavior will be removed alongside support for the `force` option, so if you’re currently passing `authorize()` an auth options object which only contains `{ force: true }`, you should stop passing it an auth options object entirely."),l.isOnlyPropIn(B,"force")&&(B=null)),this._forceNewToken(T,B,function(z,$){if(z){D.client.connection&&z.statusCode===E.default.Forbidden&&D.client.connection.connectionManager.actOnErrorFromAuthorize(z),A==null||A(z);return}m(D.client)?D.client.connection.connectionManager.onAuthUpdated($,A||x):A==null||A(null,$)})},P.prototype.authorise=function(T,I,A){a.default.renamedMethod("Auth","authorise","authorize"),this.authorize(T,I,A)},P.prototype._forceNewToken=function(T,I,A){var D=this;this.tokenDetails=null,this._saveTokenOptions(T,I),c(this.authOptions),this._ensureValidAuthCredentials(!0,function(B,z){delete D.tokenParams.timestamp,delete D.authOptions.queryTime,A(B,z)})},P.prototype.requestToken=function(T,I,A){var D=this;if(typeof T=="function"&&!A?(A=T,I=T=null):typeof I=="function"&&!A&&(A=I,I=null),!A&&this.client.options.promises)return l.promisify(this,"requestToken",arguments);I=I||this.authOptions,T=T||l.copy(this.tokenParams);var B=A||x,z,$=this.client;if(I.authCallback)a.default.logAction(a.default.LOG_MINOR,"Auth.requestToken()","using token auth with authCallback"),z=I.authCallback;else if(I.authUrl)a.default.logAction(a.default.LOG_MINOR,"Auth.requestToken()","using token auth with authUrl"),z=function(_,W){var Q=l.mixin({accept:"application/json, text/plain"},I.authHeaders),X=I.authMethod&&I.authMethod.toLowerCase()==="post",ne,re=I.authUrl.indexOf("?");re>-1&&(ne=l.parseQueryString(I.authUrl.slice(re)),I.authUrl=I.authUrl.slice(0,re),X||(I.authParams=l.mixin(ne,I.authParams)));var ce=l.mixin({},I.authParams||{},_),q=function(Ve,Ae,zt,ki){var xt;if(Ve?a.default.logAction(a.default.LOG_MICRO,"Auth.requestToken().tokenRequestCallback","Received Error: "+l.inspectError(Ve)):(xt=zt["content-type"],a.default.logAction(a.default.LOG_MICRO,"Auth.requestToken().tokenRequestCallback","Received; content-type: "+xt+"; body: "+l.inspectBody(Ae))),Ve||ki)return W(Ve,Ae);if(u.default.BufferUtils.isBuffer(Ae)&&(Ae=Ae.toString()),!xt){W(new g.default("authUrl response is missing a content-type header",40170,401));return}var Ei=xt.indexOf("application/json")>-1,nl=xt.indexOf("text/plain")>-1||xt.indexOf("application/jwt")>-1;if(!Ei&&!nl){W(new g.default("authUrl responded with unacceptable content-type "+xt+", should be either text/plain, application/jwt or application/json",40170,401));return}if(Ei){if(Ae.length>M){W(new g.default("authUrl response exceeded max permitted length",40170,401));return}try{Ae=JSON.parse(Ae)}catch(rl){W(new g.default("Unexpected error processing authURL response; err = "+rl.message,40170,401));return}}W(null,Ae,xt)};if(a.default.logAction(a.default.LOG_MICRO,"Auth.requestToken().tokenRequestCallback","Requesting token from "+I.authUrl+"; Params: "+JSON.stringify(ce)+"; method: "+(X?"POST":"GET")),X){var ye=Q||{};ye["content-type"]="application/x-www-form-urlencoded";var De=l.toQueryString(ce).slice(1);D.client.http.doUri(y.default.Post,$,I.authUrl,ye,De,ne,q)}else D.client.http.doUri(y.default.Get,$,I.authUrl,Q||{},null,ce,q)};else if(I.key)a.default.logAction(a.default.LOG_MINOR,"Auth.requestToken()","using token auth with client-side signing"),z=function(_,W){D.createTokenRequest(_,I,W)};else{var V="Need a new token, but authOptions does not include any way to request one (no authUrl, authCallback, or key)";a.default.logAction(a.default.LOG_ERROR,"Auth()","library initialized with a token literal without any way to renew the token when it expires (no authUrl, authCallback, or key). See https://help.ably.io/error/40171 for help"),B(new g.default(V,40171,403));return}"capability"in T&&(T.capability=f(T.capability));var F=function(_,W){var Q=_.keyName,X="/keys/"+Q+"/requestToken",ne=function(ce){return $.baseUri(ce)+X},re=l.defaultPostHeaders(D.client.options);I.requestHeaders&&l.mixin(re,I.requestHeaders),a.default.logAction(a.default.LOG_MICRO,"Auth.requestToken().requestToken","Sending POST to "+X+"; Token params: "+JSON.stringify(_)),D.client.http.do(y.default.Post,$,ne,re,JSON.stringify(_),null,W)},O=!1,L=this.client.options.timeouts.realtimeRequestTimeout,U=setTimeout(function(){O=!0;var _="Token request callback timed out after "+L/1e3+" seconds";a.default.logAction(a.default.LOG_ERROR,"Auth.requestToken()",_),B(new g.default(_,40170,401))},L);z(T,function(_,W,Q){if(!O){if(clearTimeout(U),_){a.default.logAction(a.default.LOG_ERROR,"Auth.requestToken()","token request signing call returned error; err = "+l.inspectError(_)),B(b(_));return}if(typeof W=="string"){W.length===0?B(new g.default("Token string is empty",40170,401)):W.length>M?B(new g.default("Token string exceeded max permitted length (was "+W.length+" bytes)",40170,401)):W==="undefined"||W==="null"?B(new g.default("Token string was literal null/undefined",40170,401)):W[0]==="{"&&!(Q&&Q.indexOf("application/jwt")>-1)?B(new g.default("Token was double-encoded; make sure you're not JSON-encoding an already encoded token request or details",40170,401)):B(null,{token:W});return}if(typeof W!="object"){var X="Expected token request callback to call back with a token string or token request/details object, but got a "+typeof W;a.default.logAction(a.default.LOG_ERROR,"Auth.requestToken()",X),B(new g.default(X,40170,401));return}var ne=JSON.stringify(W).length;if(ne>M&&!I.suppressMaxLengthCheck){B(new g.default("Token request/details object exceeded max permitted stringified size (was "+ne+" bytes)",40170,401));return}if("issued"in W){B(null,W);return}if(!("keyName"in W)){var X="Expected token request callback to call back with a token string, token request object, or token details object";a.default.logAction(a.default.LOG_ERROR,"Auth.requestToken()",X),B(new g.default(X,40170,401));return}F(W,function(re,ce,q,ye){if(re){a.default.logAction(a.default.LOG_ERROR,"Auth.requestToken()","token request API call returned error; err = "+l.inspectError(re)),B(b(re));return}ye||(ce=JSON.parse(ce)),a.default.logAction(a.default.LOG_MINOR,"Auth.getToken()","token received"),B(null,ce)})}})},P.prototype.createTokenRequest=function(T,I,A){var D=this;if(typeof T=="function"&&!A?(A=T,I=T=null):typeof I=="function"&&!A&&(A=I,I=null),!A&&this.client.options.promises)return l.promisify(this,"createTokenRequest",arguments);I=I||this.authOptions,T=T||l.copy(this.tokenParams);var B=I.key;if(!B){A(new g.default("No key specified",40101,403));return}var z=B.split(":"),$=z[0],V=z[1];if(!V){A(new g.default("Invalid key specified",40101,403));return}if(T.clientId===""){A(new g.default("clientId can’t be an empty string",40012,400));return}"capability"in T&&(T.capability=f(T.capability));var F=l.mixin({keyName:$},T),O=T.clientId||"",L=T.ttl||"",U=T.capability||"";(function(_){if(F.timestamp){_();return}D.getTimestamp(I&&I.queryTime,function(W,Q){if(W){A(W);return}F.timestamp=Q,_()})})(function(){var _=F.nonce||(F.nonce=p()),W=F.timestamp,Q=F.keyName+`
140
140
  `+L+`
@@ -142,8 +142,8 @@ Please report this to https://github.com/markedjs/marked.`,e){const r="<p>An err
142
142
  `+O+`
143
143
  `+W+`
144
144
  `+_+`
145
- `;F.mac=F.mac||h(Q,V),a.default.logAction(a.default.LOG_MINOR,"Auth.getTokenRequest()","generated signed request"),A(null,F)})},P.prototype.getAuthParams=function(T){this.method=="basic"?T(null,{key:this.key}):this._ensureValidAuthCredentials(!1,function(I,A){if(I){T(I);return}if(!A)throw new Error("Auth.getAuthParams(): _ensureValidAuthCredentials returned no error or tokenDetails");T(null,{access_token:A.token})})},P.prototype.getAuthHeaders=function(T){this.method=="basic"?T(null,{authorization:"Basic "+this.basicKey}):this._ensureValidAuthCredentials(!1,function(I,A){if(I){T(I);return}if(!A)throw new Error("Auth.getAuthParams(): _ensureValidAuthCredentials returned no error or tokenDetails");T(null,{authorization:"Bearer "+l.toBase64(A.token)})})},P.prototype.getTimestamp=function(T,I){!this.isTimeOffsetSet()&&(T||this.authOptions.queryTime)?this.client.time(I):I(null,this.getTimestampUsingOffset())},P.prototype.getTimestampUsingOffset=function(){return l.now()+(this.client.serverTimeOffset||0)},P.prototype.isTimeOffsetSet=function(){return this.client.serverTimeOffset!==null},P.prototype._saveBasicOptions=function(T){this.method="basic",this.key=T.key,this.basicKey=l.toBase64(T.key),this.authOptions=T||{},"clientId"in T&&this._userSetClientId(T.clientId)},P.prototype._saveTokenOptions=function(T,I){this.method="token",T&&(this.tokenParams=T),I&&(I.token&&(I.tokenDetails=typeof I.token=="string"?{token:I.token}:I.token),I.tokenDetails&&(this.tokenDetails=I.tokenDetails),"clientId"in I&&this._userSetClientId(I.clientId),this.authOptions=I)},P.prototype._ensureValidAuthCredentials=function(T,I){var A=this,D=this.tokenDetails;if(D){if(this._tokenClientIdMismatch(D.clientId)){I(new g.default("Mismatch between clientId in token ("+D.clientId+") and current clientId ("+this.clientId+")",40102,403));return}if(!this.isTimeOffsetSet()||!D.expires||D.expires>=this.getTimestampUsingOffset()){a.default.logAction(a.default.LOG_MINOR,"Auth.getToken()","using cached token; expires = "+D.expires),I(null,D);return}a.default.logAction(a.default.LOG_MINOR,"Auth.getToken()","deleting expired token"),this.tokenDetails=null}if((this.waitingForTokenRequest||(this.waitingForTokenRequest=d.default.create())).push(I),!(this.currentTokenRequestId!==null&&!T)){var B=this.currentTokenRequestId=j();this.requestToken(this.tokenParams,this.authOptions,function(z,$){if(A.currentTokenRequestId>B){a.default.logAction(a.default.LOG_MINOR,"Auth._ensureValidAuthCredentials()","Discarding token request response; overtaken by newer one");return}A.currentTokenRequestId=null;var V=A.waitingForTokenRequest||x;if(A.waitingForTokenRequest=null,z){V(z);return}V(null,A.tokenDetails=$)})}},P.prototype._userSetClientId=function(T){if(typeof T=="string"||T===null){if(T==="*")throw new g.default('Can’t use "*" as a clientId as that string is reserved. (To change the default token request behaviour to use a wildcard clientId, instantiate the library with {defaultTokenParams: {clientId: "*"}}), or if calling authorize(), pass it in as a tokenParam: authorize({clientId: "*"}, authOptions)',40012,400);var I=this._uncheckedSetClientId(T);if(I)throw I}else throw new g.default("clientId must be either a string or null",40012,400)},P.prototype._uncheckedSetClientId=function(T){if(this._tokenClientIdMismatch(T)){var I="Unexpected clientId mismatch: client has "+this.clientId+", requested "+T,A=new g.default(I,40102,401);return a.default.logAction(a.default.LOG_ERROR,"Auth._uncheckedSetClientId()",I),A}else return this.clientId=this.tokenParams.clientId=T,null},P.prototype._tokenClientIdMismatch=function(T){return!!(this.clientId&&this.clientId!=="*"&&T&&T!=="*"&&this.clientId!==T)},P.isTokenErr=function(T){return T.code&&T.code>=40140&&T.code<40150},P.prototype.revokeTokens=function(T,I,A){if(w(this.client.options))throw new g.default("Cannot revoke tokens when using token auth",40162,401);var D=this.client.options.keyName,B;if(typeof I=="function"?(A=I,B={}):B=I!=null?I:{},A===void 0){if(this.client.options.promises)return l.promisify(this,"revokeTokens",[T,B]);A=x}var z=A,$=i.__assign({targets:T.map(function(L){return"".concat(L.type,":").concat(L.value)})},B),V=this.client.options.useBinaryProtocol?l.Format.msgpack:l.Format.json,F=l.defaultPostHeaders(this.client.options,V);this.client.options.headers&&l.mixin(F,this.client.options.headers);var O=l.encodeBody($,V);C.default.post(this.client,"/keys/".concat(D,"/revokeTokens"),O,F,{newBatchResponse:"true"},null,function(L,U,_,W){if(L){z(L);return}var Q=W?U:l.decodeBody(U,V);z(null,Q)})},P}();r.default=N},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a.Get="get",a.Delete="delete",a.Post="post",a.Put="put",a.Patch="patch"})(i||(i={})),r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.HttpPaginatedResponse=r.PaginatedResult=void 0;var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(2)),d=i.__importDefault(o(15)),g=i.__importDefault(o(14));function S(M){var x=M.match(/^\.\/(\w+)\?(.*)$/);return x&&x[2]&&a.parseQueryString(x[2])}function R(M){typeof M=="string"&&(M=M.split(","));for(var x={},p=0;p<M.length;p++){var m=M[p].match(/^\s*<(.+)>;\s*rel="(\w+)"$/);if(m){var b=S(m[1]);b&&(x[m[2]]=b)}}return x}function y(M,x,p){return!(p&&(x||typeof M.code=="number"))}var E=function(){function M(x,p,m,b,h,f){this.rest=x,this.path=p,this.headers=m,this.envelope=b!=null?b:null,this.bodyHandler=h,this.useHttpPaginatedResponse=f||!1}return M.prototype.get=function(x,p){var m=this;d.default.get(this.rest,this.path,this.headers,x,this.envelope,function(b,h,f,c,s){m.handlePage(b,h,f,c,s,p)})},M.prototype.delete=function(x,p){var m=this;d.default.delete(this.rest,this.path,this.headers,x,this.envelope,function(b,h,f,c,s){m.handlePage(b,h,f,c,s,p)})},M.prototype.post=function(x,p,m){var b=this;d.default.post(this.rest,this.path,p,this.headers,x,this.envelope,function(h,f,c,s,w){m&&b.handlePage(h,f,c,s,w,m)})},M.prototype.put=function(x,p,m){var b=this;d.default.put(this.rest,this.path,p,this.headers,x,this.envelope,function(h,f,c,s,w){m&&b.handlePage(h,f,c,s,w,m)})},M.prototype.patch=function(x,p,m){var b=this;d.default.patch(this.rest,this.path,p,this.headers,x,this.envelope,function(h,f,c,s,w){m&&b.handlePage(h,f,c,s,w,m)})},M.prototype.handlePage=function(x,p,m,b,h,f){if(x&&y(x,p,this.useHttpPaginatedResponse)){l.default.logAction(l.default.LOG_ERROR,"PaginatedResource.handlePage()","Unexpected error getting resource: err = "+a.inspectError(x)),f==null||f(x);return}var c,s,w;try{c=h==g.default.NoContent?[]:this.bodyHandler(p,m||{},b)}catch(v){f==null||f(x||v);return}m&&(s=m.Link||m.link)&&(w=R(s)),this.useHttpPaginatedResponse?f(null,new C(this,c,m||{},h,w,x)):f(null,new u(this,c,w))},M}(),u=function(){function M(x,p,m){var b=this;this.resource=x,this.items=p;var h=this;m&&("first"in m&&(this.first=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"first",[]);h.get(m.first,f)}),"current"in m&&(this.current=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"current",[]);h.get(m.current,f)}),this.next=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"next",[]);"next"in m?h.get(m.next,f):f(null,null)},this.hasNext=function(){return"next"in m},this.isLast=function(){var f;return!(!((f=b.hasNext)===null||f===void 0)&&f.call(b))})}return M.prototype.get=function(x,p){var m=this.resource;d.default.get(m.rest,m.path,m.headers,x,m.envelope,function(b,h,f,c,s){m.handlePage(b,h,f,c,s,p)})},M}();r.PaginatedResult=u;var C=function(M){i.__extends(x,M);function x(p,m,b,h,f,c){var s=M.call(this,p,m,f)||this;return s.statusCode=h,s.success=h<300&&h>=200,s.headers=b,s.errorCode=c&&c.code,s.errorMessage=c&&c.message,s}return x.prototype.toJSON=function(){return{items:this.items,statusCode:this.statusCode,success:this.success,headers:this.headers,errorCode:this.errorCode,errorMessage:this.errorMessage}},x}(u);r.HttpPaginatedResponse=C,r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.isRetriable=void 0;var i=o(0),a=i.__importDefault(o(4)),l={DISCONNECTED:80003,SUSPENDED:80002,FAILED:8e4,CLOSING:80017,CLOSED:80017,UNKNOWN_CONNECTION_ERR:50002,UNKNOWN_CHANNEL_ERR:50001},d={disconnected:function(){return a.default.fromValues({statusCode:400,code:l.DISCONNECTED,message:"Connection to server temporarily unavailable"})},suspended:function(){return a.default.fromValues({statusCode:400,code:l.SUSPENDED,message:"Connection to server unavailable"})},failed:function(){return a.default.fromValues({statusCode:400,code:l.FAILED,message:"Connection failed or disconnected by server"})},closing:function(){return a.default.fromValues({statusCode:400,code:l.CLOSING,message:"Connection closing"})},closed:function(){return a.default.fromValues({statusCode:400,code:l.CLOSED,message:"Connection closed"})},unknownConnectionErr:function(){return a.default.fromValues({statusCode:500,code:l.UNKNOWN_CONNECTION_ERR,message:"Internal connection error"})},unknownChannelErr:function(){return a.default.fromValues({statusCode:500,code:l.UNKNOWN_CONNECTION_ERR,message:"Internal channel error"})}};function g(S){return!S.statusCode||!S.code||S.statusCode>=500?!0:Object.values(l).includes(S.code)}r.isRetriable=g,r.default=d},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a[a.REQ_SEND=0]="REQ_SEND",a[a.REQ_RECV=1]="REQ_RECV",a[a.REQ_RECV_POLL=2]="REQ_RECV_POLL",a[a.REQ_RECV_STREAM=3]="REQ_RECV_STREAM"})(i||(i={})),r.default=i},function(n,r,o){(function(i,a){n.exports=a(o(6),o(5),o(58),o(11),o(40),o(32),o(25),o(27),o(28),o(59),o(60))})(this,function(i){return i})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(2)),l=function(){function d(g){this.members=g||[]}return d.prototype.call=function(){for(var g=[],S=0;S<arguments.length;S++)g[S]=arguments[S];for(var R=0,y=this.members;R<y.length;R++){var E=y[R];if(E)try{E.apply(void 0,g)}catch(u){a.default.logAction(a.default.LOG_ERROR,"Multicaster multiple callback handler","Unexpected exception: "+u+"; stack = "+u.stack)}}},d.prototype.push=function(){for(var g,S=[],R=0;R<arguments.length;R++)S[R]=arguments[R];(g=this.members).push.apply(g,S)},d.create=function(g){var S=new d(g);return Object.assign(function(){for(var R=[],y=0;y<arguments.length;y++)R[y]=arguments[y];return S.call.apply(S,R)},{push:function(R){return S.push(R)}})},d}();r.default=l},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){(function(){var a=i,l=a.lib,d=l.Base,g=a.enc,S=g.Utf8,R=a.algo;R.HMAC=d.extend({init:function(y,E){y=this._hasher=new y.init,typeof E=="string"&&(E=S.parse(E));var u=y.blockSize,C=u*4;E.sigBytes>C&&(E=y.finalize(E)),E.clamp();for(var M=this._oKey=E.clone(),x=this._iKey=E.clone(),p=M.words,m=x.words,b=0;b<u;b++)p[b]^=1549556828,m[b]^=909522486;M.sigBytes=x.sigBytes=C,this.reset()},reset:function(){var y=this._hasher;y.reset(),y.update(this._iKey)},update:function(y){return this._hasher.update(y),this},finalize:function(y){var E=this._hasher,u=E.finalize(y);E.reset();var C=E.finalize(this._oKey.clone().concat(u));return C}})})()})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(10)),l=i.__importStar(o(1)),d=i.__importDefault(o(7)),g=i.__importDefault(o(2)),S=i.__importDefault(o(21)),R=i.__importDefault(o(4)),y=i.__importDefault(o(3)),E=a.default.Action,u=a.default.fromValues({action:E.CLOSE}),C=a.default.fromValues({action:E.DISCONNECT}),M=function(x){i.__extends(p,x);function p(m,b,h,f){var c=x.call(this)||this;return f&&(h.format=void 0,h.heartbeats=!0),c.connectionManager=m,m.registerProposedTransport(c),c.auth=b,c.params=h,c.timeouts=h.options.timeouts,c.format=h.format,c.isConnected=!1,c.isFinished=!1,c.isDisposed=!1,c.maxIdleInterval=null,c.idleTimer=null,c.lastActivity=null,c}return p.prototype.connect=function(){},p.prototype.close=function(){this.isConnected&&this.requestClose(),this.finish("closed",S.default.closed())},p.prototype.disconnect=function(m){this.isConnected&&this.requestDisconnect(),this.finish("disconnected",m||S.default.disconnected())},p.prototype.fail=function(m){this.isConnected&&this.requestDisconnect(),this.finish("failed",m||S.default.failed())},p.prototype.finish=function(m,b){var h;this.isFinished||(this.isFinished=!0,this.isConnected=!1,this.maxIdleInterval=null,clearTimeout((h=this.idleTimer)!==null&&h!==void 0?h:void 0),this.idleTimer=null,this.emit(m,b),this.dispose())},p.prototype.onProtocolMessage=function(m){switch(g.default.shouldLog(g.default.LOG_MICRO)&&g.default.logAction(g.default.LOG_MICRO,"Transport.onProtocolMessage()","received on "+this.shortName+": "+a.default.stringify(m)+"; connectionId = "+this.connectionManager.connectionId),this.onActivity(),m.action){case E.HEARTBEAT:g.default.logAction(g.default.LOG_MICRO,"Transport.onProtocolMessage()",this.shortName+" heartbeat; connectionId = "+this.connectionManager.connectionId),this.emit("heartbeat",m.id);break;case E.CONNECTED:this.onConnect(m),this.emit("connected",m.error,m.connectionId,m.connectionDetails,m);break;case E.CLOSED:this.onClose(m);break;case E.DISCONNECTED:this.onDisconnect(m);break;case E.ACK:this.emit("ack",m.msgSerial,m.count);break;case E.NACK:this.emit("nack",m.msgSerial,m.count,m.error);break;case E.SYNC:this.connectionManager.onChannelMessage(m,this);break;case E.ACTIVATE:break;case E.AUTH:this.auth.authorize(function(b){b&&g.default.logAction(g.default.LOG_ERROR,"Transport.onProtocolMessage()","Ably requested re-authentication, but unable to obtain a new token: "+l.inspectError(b))});break;case E.ERROR:if(g.default.logAction(g.default.LOG_MINOR,"Transport.onProtocolMessage()","received error action; connectionId = "+this.connectionManager.connectionId+"; err = "+y.default.Config.inspect(m.error)+(m.channel?", channel: "+m.channel:"")),m.channel===void 0){this.onFatalError(m);break}this.connectionManager.onChannelMessage(m,this);break;default:this.connectionManager.onChannelMessage(m,this)}},p.prototype.onConnect=function(m){if(this.isConnected=!0,!m.connectionDetails)throw new Error("Transport.onConnect(): Connect message recieved without connectionDetails");var b=m.connectionDetails.maxIdleInterval;b&&(this.maxIdleInterval=b+this.timeouts.realtimeRequestTimeout,this.onActivity())},p.prototype.onDisconnect=function(m){var b=m&&m.error;g.default.logAction(g.default.LOG_MINOR,"Transport.onDisconnect()","err = "+l.inspectError(b)),this.finish("disconnected",b)},p.prototype.onFatalError=function(m){var b=m&&m.error;g.default.logAction(g.default.LOG_MINOR,"Transport.onFatalError()","err = "+l.inspectError(b)),this.finish("failed",b)},p.prototype.onClose=function(m){var b=m&&m.error;g.default.logAction(g.default.LOG_MINOR,"Transport.onClose()","err = "+l.inspectError(b)),this.finish("closed",b)},p.prototype.requestClose=function(){g.default.logAction(g.default.LOG_MINOR,"Transport.requestClose()",""),this.send(u)},p.prototype.requestDisconnect=function(){g.default.logAction(g.default.LOG_MINOR,"Transport.requestDisconnect()",""),this.send(C)},p.prototype.ping=function(m){var b={action:a.default.Action.HEARTBEAT};m&&(b.id=m),this.send(a.default.fromValues(b))},p.prototype.dispose=function(){g.default.logAction(g.default.LOG_MINOR,"Transport.dispose()",""),this.isDisposed=!0,this.off()},p.prototype.onActivity=function(){this.maxIdleInterval&&(this.lastActivity=this.connectionManager.lastActivity=l.now(),this.setIdleTimer(this.maxIdleInterval+100))},p.prototype.setIdleTimer=function(m){var b=this;this.idleTimer||(this.idleTimer=setTimeout(function(){b.onIdleTimerExpire()},m))},p.prototype.onIdleTimerExpire=function(){if(!this.lastActivity||!this.maxIdleInterval)throw new Error("Transport.onIdleTimerExpire(): lastActivity/maxIdleInterval not set");this.idleTimer=null;var m=l.now()-this.lastActivity,b=this.maxIdleInterval-m;if(b<=0){var h="No activity seen from realtime in "+m+"ms; assuming connection has dropped";g.default.logAction(g.default.LOG_ERROR,"Transport.onIdleTimerExpire()",h),this.disconnect(new R.default(h,80003,408))}else this.setIdleTimer(b+100)},p.tryConnect=function(m,b,h,f,c){var s=new m(b,h,f),w,v=function(j){clearTimeout(w),c({event:this.event,error:j})},k=b.options.timeouts.realtimeRequestTimeout;w=setTimeout(function(){s.off(["preconnect","disconnected","failed"]),s.dispose(),v.call({event:"disconnected"},new R.default("Timeout waiting for transport to indicate itself viable",5e4,500))},k),s.on(["failed","disconnected"],v),s.on("preconnect",function(){g.default.logAction(g.default.LOG_MINOR,"Transport.tryConnect()","viable transport "+s),clearTimeout(w),s.off(["failed","disconnected"],v),c(null,s)}),s.connect()},p}(d.default);r.default=M},function(n,r,o){(function(i,a){n.exports=a(o(6),o(40),o(25))})(this,function(i){return function(){var a=i,l=a.lib,d=l.Base,g=l.WordArray,S=a.algo,R=S.MD5,y=S.EvpKDF=d.extend({cfg:d.extend({keySize:128/32,hasher:R,iterations:1}),init:function(E){this.cfg=this.cfg.extend(E)},compute:function(E,u){for(var C,M=this.cfg,x=M.hasher.create(),p=g.create(),m=p.words,b=M.keySize,h=M.iterations;m.length<b;){C&&x.update(C),C=x.update(E).finalize(u),x.reset();for(var f=1;f<h;f++)C=x.finalize(C),x.reset();p.concat(C)}return p.sigBytes=b*4,p}});a.EvpKDF=function(E,u,C){return y.create(C).compute(E,u)}}(),i.EvpKDF})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(27))})(this,function(i){i.lib.Cipher||function(a){var l=i,d=l.lib,g=d.Base,S=d.WordArray,R=d.BufferedBlockAlgorithm,y=l.enc;y.Utf8;var E=y.Base64,u=l.algo,C=u.EvpKDF,M=d.Cipher=R.extend({cfg:g.extend(),createEncryptor:function(N,P){return this.create(this._ENC_XFORM_MODE,N,P)},createDecryptor:function(N,P){return this.create(this._DEC_XFORM_MODE,N,P)},init:function(N,P,T){this.cfg=this.cfg.extend(T),this._xformMode=N,this._key=P,this.reset()},reset:function(){R.reset.call(this),this._doReset()},process:function(N){return this._append(N),this._process()},finalize:function(N){N&&this._append(N);var P=this._doFinalize();return P},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function N(P){return typeof P=="string"?j:w}return function(P){return{encrypt:function(T,I,A){return N(I).encrypt(P,T,I,A)},decrypt:function(T,I,A){return N(I).decrypt(P,T,I,A)}}}}()});d.StreamCipher=M.extend({_doFinalize:function(){var N=this._process(!0);return N},blockSize:1});var x=l.mode={},p=d.BlockCipherMode=g.extend({createEncryptor:function(N,P){return this.Encryptor.create(N,P)},createDecryptor:function(N,P){return this.Decryptor.create(N,P)},init:function(N,P){this._cipher=N,this._iv=P}}),m=x.CBC=function(){var N=p.extend();N.Encryptor=N.extend({processBlock:function(T,I){var A=this._cipher,D=A.blockSize;P.call(this,T,I,D),A.encryptBlock(T,I),this._prevBlock=T.slice(I,I+D)}}),N.Decryptor=N.extend({processBlock:function(T,I){var A=this._cipher,D=A.blockSize,B=T.slice(I,I+D);A.decryptBlock(T,I),P.call(this,T,I,D),this._prevBlock=B}});function P(T,I,A){var D,B=this._iv;B?(D=B,this._iv=a):D=this._prevBlock;for(var z=0;z<A;z++)T[I+z]^=D[z]}return N}(),b=l.pad={},h=b.Pkcs7={pad:function(N,P){for(var T=P*4,I=T-N.sigBytes%T,A=I<<24|I<<16|I<<8|I,D=[],B=0;B<I;B+=4)D.push(A);var z=S.create(D,I);N.concat(z)},unpad:function(N){var P=N.words[N.sigBytes-1>>>2]&255;N.sigBytes-=P}};d.BlockCipher=M.extend({cfg:M.cfg.extend({mode:m,padding:h}),reset:function(){var N;M.reset.call(this);var P=this.cfg,T=P.iv,I=P.mode;this._xformMode==this._ENC_XFORM_MODE?N=I.createEncryptor:(N=I.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==N?this._mode.init(this,T&&T.words):(this._mode=N.call(I,this,T&&T.words),this._mode.__creator=N)},_doProcessBlock:function(N,P){this._mode.processBlock(N,P)},_doFinalize:function(){var N,P=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(P.pad(this._data,this.blockSize),N=this._process(!0)):(N=this._process(!0),P.unpad(N)),N},blockSize:128/32});var f=d.CipherParams=g.extend({init:function(N){this.mixIn(N)},toString:function(N){return(N||this.formatter).stringify(this)}}),c=l.format={},s=c.OpenSSL={stringify:function(N){var P,T=N.ciphertext,I=N.salt;return I?P=S.create([1398893684,1701076831]).concat(I).concat(T):P=T,P.toString(E)},parse:function(N){var P,T=E.parse(N),I=T.words;return I[0]==1398893684&&I[1]==1701076831&&(P=S.create(I.slice(2,4)),I.splice(0,4),T.sigBytes-=16),f.create({ciphertext:T,salt:P})}},w=d.SerializableCipher=g.extend({cfg:g.extend({format:s}),encrypt:function(N,P,T,I){I=this.cfg.extend(I);var A=N.createEncryptor(T,I),D=A.finalize(P),B=A.cfg;return f.create({ciphertext:D,key:T,iv:B.iv,algorithm:N,mode:B.mode,padding:B.padding,blockSize:N.blockSize,formatter:I.format})},decrypt:function(N,P,T,I){I=this.cfg.extend(I),P=this._parse(P,I.format);var A=N.createDecryptor(T,I).finalize(P.ciphertext);return A},_parse:function(N,P){return typeof N=="string"?P.parse(N,this):N}}),v=l.kdf={},k=v.OpenSSL={execute:function(N,P,T,I){I||(I=S.random(64/8));var A=C.create({keySize:P+T}).compute(N,I),D=S.create(A.words.slice(P),T*4);return A.sigBytes=P*4,f.create({key:A,iv:D,salt:I})}},j=d.PasswordBasedCipher=w.extend({cfg:w.cfg.extend({kdf:k}),encrypt:function(N,P,T,I){I=this.cfg.extend(I);var A=I.kdf.execute(T,N.keySize,N.ivSize);I.iv=A.iv;var D=w.encrypt.call(this,N,P,A.key,I);return D.mixIn(A),D},decrypt:function(N,P,T,I){I=this.cfg.extend(I),P=this._parse(P,I.format);var A=I.kdf.execute(T,N.keySize,N.ivSize,P.salt);I.iv=A.iv;var D=w.decrypt.call(this,N,P,A.key,I);return D}})}()})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.Request=r.createRequest=void 0;var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(12)),d=i.__importDefault(o(3)),g=i.__importDefault(o(7)),S=o(4),R=i.__importDefault(o(8)),y=i.__importDefault(o(2)),E=i.__importDefault(o(22)),u=a.getGlobalObject(),C=function(){},M=u._ablyjs_jsonp={};M._=function(c){return M["_"+c]||C};var x=1,p="jsonp";function m(c,s,w,v,k,j,N){return j=j||R.default.TIMEOUTS,new h(void 0,c,s,a.copy(w),v,k,j,N)}r.createRequest=m;var b=function(c){i.__extends(s,c);function s(w,v,k){var j=c.call(this,w,v,k)||this;return j.shortName=p,k.stream=!1,j}return s.isAvailable=function(){return d.default.Config.jsonpSupported&&d.default.Config.allowComet},s.prototype.toString=function(){return"JSONPTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},s.prototype.createRequest=function(w,v,k,j,N,P,T){return P=(this===null||this===void 0?void 0:this.timeouts)||P||R.default.TIMEOUTS,m(w,v,k,j,N,P,T)},s}(l.default),h=function(c){i.__extends(s,c);function s(w,v,k,j,N,P,T,I){var A=c.call(this)||this;return w===void 0&&(w=x++),A.id=w,A.uri=v,A.params=j||{},A.params.rnd=a.cheapRandStr(),k&&(k["X-Ably-Version"]&&(A.params.v=k["X-Ably-Version"]),k["X-Ably-Lib"]&&(A.params.lib=k["X-Ably-Lib"])),A.body=N,A.method=I,A.requestMode=P,A.timeouts=T,A.requestComplete=!1,A}return s.prototype.exec=function(){var w=this,v=this.id,k=this.body,j=this.method,N=this.uri,P=this.params;P.callback="_ablyjs_jsonp._("+v+")",P.envelope="jsonp",k&&(P.body=k),j&&j!=="get"&&(P.method=j);var T=this.script=document.createElement("script"),I=N+a.toQueryString(P);T.src=I,T.src.split("/").slice(-1)[0]!==I.split("/").slice(-1)[0]&&y.default.logAction(y.default.LOG_ERROR,"JSONP Request.exec()","Warning: the browser appears to have truncated the script URI. This will likely result in the request failing due to an unparseable body param"),T.async=!0,T.type="text/javascript",T.charset="UTF-8",T.onerror=function(B){w.complete(new S.PartialErrorInfo("JSONP script error (event: "+d.default.Config.inspect(B)+")",null,400))},M["_"+v]=function(B){if(B.statusCode){var z=B.response;if(B.statusCode==204)w.complete(null,null,null,B.statusCode);else if(!z)w.complete(new S.PartialErrorInfo("Invalid server response: no envelope detected",null,500));else if(B.statusCode<400||a.isArray(z))w.complete(null,z,B.headers,B.statusCode);else{var $=z.error||new S.PartialErrorInfo("Error response received from server",null,B.statusCode);w.complete($)}}else w.complete(null,B)};var A=this.requestMode==E.default.REQ_SEND?this.timeouts.httpRequestTimeout:this.timeouts.recvTimeout;this.timer=setTimeout(this.abort.bind(this),A);var D=document.getElementsByTagName("head")[0];D.insertBefore(T,D.firstChild)},s.prototype.complete=function(w,v,k,j){if(k=k||{},!this.requestComplete){this.requestComplete=!0;var N=void 0;v&&(N=typeof v=="string"?"text/plain":"application/json",k["content-type"]=N,this.emit("data",v)),this.emit("complete",w,v,k,!0,j),this.dispose()}},s.prototype.abort=function(){this.dispose()},s.prototype.dispose=function(){var w=this.timer;w&&(clearTimeout(w),this.timer=null);var v=this.script;v.parentNode&&v.parentNode.removeChild(v),delete M[this.id],this.emit("disposed")},s}(g.default);r.Request=h;function f(c){return u.JSONPTransport=b,b.isAvailable()&&(c.supportedTransports[p]=b),b}r.default=f},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(2)),d=i.__importDefault(o(8)),g=i.__importDefault(o(18)),S=i.__importDefault(o(46)),R=i.__importDefault(o(20)),y=i.__importDefault(o(33)),E=i.__importDefault(o(4)),u=i.__importDefault(o(49)),C=i.__importDefault(o(19)),M=i.__importDefault(o(3)),x=i.__importDefault(o(9)),p=i.__importDefault(o(16)),m=i.__importDefault(o(15)),b=function(){},h=function(){function c(s){if(!s){var w="no options provided";throw l.default.logAction(l.default.LOG_ERROR,"Rest()",w),new Error(w)}var v=d.default.objectifyOptions(s);v.log?(l.default.setLog(v.log.level,v.log.handler),l.default.deprecated("The `log` client option","Equivalent functionality is provided by the `logLevel` and `logHandler` client options. Update your client options code of the form `{ log: { level: logLevel, handler: logHandler } }` to instead be `{ logLevel, logHandler }`.")):l.default.setLog(v.logLevel,v.logHandler),l.default.logAction(l.default.LOG_MICRO,"Rest()","initialized with clientOptions "+M.default.Config.inspect(s));var k=this.options=d.default.normaliseOptions(v);if(k.key){var j=k.key.match(/^([^:\s]+):([^:.\s]+)$/);if(!j){var w="invalid key parameter";throw l.default.logAction(l.default.LOG_ERROR,"Rest()",w),new E.default(w,40400,404)}k.keyName=j[1],k.keySecret=j[2]}if("clientId"in k)if(typeof k.clientId=="string"||k.clientId===null){if(k.clientId==="*")throw new E.default('Can’t use "*" as a clientId as that string is reserved. (To change the default token request behaviour to use a wildcard clientId, use {defaultTokenParams: {clientId: "*"}})',40012,400)}else throw new E.default("clientId must be either a string or null",40012,400);l.default.logAction(l.default.LOG_MINOR,"Rest()","started; version = "+d.default.version),this.baseUri=this.authority=function(N){return d.default.getHttpScheme(k)+N+":"+d.default.getPort(k,!1)},this._currentFallback=null,this.serverTimeOffset=null,this.http=new M.default.Http(k),this.auth=new g.default(this,k),this.channels=new f(this),this.push=new S.default(this)}return c.prototype.stats=function(s,w){if(w===void 0)if(typeof s=="function")w=s,s=null;else{if(this.options.promises)return a.promisify(this,"stats",[s]);w=b}var v=a.defaultGetHeaders(this.options),k=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,j=this.http.supportsLinkHeaders?void 0:k;this.options.headers&&a.mixin(v,this.options.headers),new R.default(this,"/stats",v,j,function(N,P,T){for(var I=T?N:JSON.parse(N),A=0;A<I.length;A++)I[A]=u.default.fromValues(I[A]);return I}).get(s,w)},c.prototype.time=function(s,w){var v=this;if(w===void 0){if(typeof s=="function")w=s,s=null;else if(this.options.promises)return a.promisify(this,"time",[s])}var k=w||b,j=a.defaultGetHeaders(this.options);this.options.headers&&a.mixin(j,this.options.headers);var N=function(P){return v.authority(P)+"/time"};this.http.do(C.default.Get,this,N,j,null,s,function(P,T,I,A){if(P){k(P);return}A||(T=JSON.parse(T));var D=T[0];if(!D){k(new E.default("Internal error (unexpected result type from GET /time)",5e4,500));return}v.serverTimeOffset=D-a.now(),k(null,D)})},c.prototype.request=function(s,w,v,k,j,N){var P=this.options.useBinaryProtocol,T=P?M.default.Config.msgpack.encode:JSON.stringify,I=P?M.default.Config.msgpack.decode:JSON.parse,A=P?a.Format.msgpack:a.Format.json,D=this.http.supportsLinkHeaders?void 0:A;v=v||{};var B=s.toLowerCase(),z=B=="get"?a.defaultGetHeaders(this.options,A):a.defaultPostHeaders(this.options,A);if(N===void 0){if(this.options.promises)return a.promisify(this,"request",[s,w,v,k,j]);N=b}typeof k!="string"&&(k=T(k)),this.options.headers&&a.mixin(z,this.options.headers),j&&a.mixin(z,j);var $=new R.default(this,w,z,D,function(V,F,O){return a.ensureArray(O?V:I(V))},!0);if(!a.arrIn(M.default.Http.methods,B))throw new E.default("Unsupported method "+B,40500,405);a.arrIn(M.default.Http.methodsWithBody,B)?$[B](v,k,N):$[B](v,N)},c.prototype.batchPublish=function(s,w){if(w===void 0){if(this.options.promises)return a.promisify(this,"batchPublish",[s]);w=b}var v=w,k,j;a.isArray(s)?(k=s,j=!1):(k=[s],j=!0);var N=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,P=a.defaultPostHeaders(this.options,N);this.options.headers&&a.mixin(P,this.options.headers);var T=a.encodeBody(k,N);m.default.post(this,"/messages",T,P,{newBatchResponse:"true"},null,function(I,A,D,B){if(I){v(I);return}var z=B?A:a.decodeBody(A,N);j?v(null,z[0]):v(null,z)})},c.prototype.batchPresence=function(s,w){if(w===void 0){if(this.options.promises)return a.promisify(this,"batchPresence",[s]);w=b}var v=w,k=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,j=a.defaultPostHeaders(this.options,k);this.options.headers&&a.mixin(j,this.options.headers);var N=s.join(",");m.default.get(this,"/presence",j,{newBatchResponse:"true",channels:N},null,function(P,T,I,A){if(P){v(P);return}var D=A?T:a.decodeBody(T,k);v(null,D)})},c.prototype.setLog=function(s){l.default.setLog(s.level,s.handler)},c.Promise=function(s){return s=d.default.objectifyOptions(s),s.promises=!0,new c(s)},c.Callbacks=c,c.Platform=M.default,c.Message=x.default,c.PresenceMessage=p.default,c}(),f=function(){function c(s){this.rest=s,this.all=Object.create(null)}return c.prototype.get=function(s,w){s=String(s);var v=this.all[s];return v?w&&v.setOptions(w):this.all[s]=v=new y.default(this.rest,s,w),v},c.prototype.release=function(s){delete this.all[String(s)]},c}();r.default=h},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return i.enc.Utf8})},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(a){var l=i,d=l.lib,g=d.WordArray,S=d.Hasher,R=l.algo,y=[],E=[];(function(){function M(b){for(var h=a.sqrt(b),f=2;f<=h;f++)if(!(b%f))return!1;return!0}function x(b){return(b-(b|0))*4294967296|0}for(var p=2,m=0;m<64;)M(p)&&(m<8&&(y[m]=x(a.pow(p,1/2))),E[m]=x(a.pow(p,1/3)),m++),p++})();var u=[],C=R.SHA256=S.extend({_doReset:function(){this._hash=new g.init(y.slice(0))},_doProcessBlock:function(M,x){for(var p=this._hash.words,m=p[0],b=p[1],h=p[2],f=p[3],c=p[4],s=p[5],w=p[6],v=p[7],k=0;k<64;k++){if(k<16)u[k]=M[x+k]|0;else{var j=u[k-15],N=(j<<25|j>>>7)^(j<<14|j>>>18)^j>>>3,P=u[k-2],T=(P<<15|P>>>17)^(P<<13|P>>>19)^P>>>10;u[k]=N+u[k-7]+T+u[k-16]}var I=c&s^~c&w,A=m&b^m&h^b&h,D=(m<<30|m>>>2)^(m<<19|m>>>13)^(m<<10|m>>>22),B=(c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25),z=v+B+I+E[k]+u[k],$=D+A;v=w,w=s,s=c,c=f+z|0,f=h,h=b,b=m,m=z+$|0}p[0]=p[0]+m|0,p[1]=p[1]+b|0,p[2]=p[2]+h|0,p[3]=p[3]+f|0,p[4]=p[4]+c|0,p[5]=p[5]+s|0,p[6]=p[6]+w|0,p[7]=p[7]+v|0},_doFinalize:function(){var M=this._data,x=M.words,p=this._nDataBytes*8,m=M.sigBytes*8;return x[m>>>5]|=128<<24-m%32,x[(m+64>>>9<<4)+14]=a.floor(p/4294967296),x[(m+64>>>9<<4)+15]=p,M.sigBytes=x.length*4,this._process(),this._hash},clone:function(){var M=S.clone.call(this);return M._hash=this._hash.clone(),M}});l.SHA256=S._createHelper(C),l.HmacSHA256=S._createHmacHelper(C)}(Math),i.SHA256})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(2)),g=i.__importDefault(o(34)),S=i.__importDefault(o(9)),R=i.__importDefault(o(4)),y=i.__importDefault(o(20)),E=i.__importDefault(o(15)),u=i.__importDefault(o(3));function C(){}var M=9;function x(b){return a.arrEvery(b,function(h){return!h.id})}function p(b){var h=b||{};if(h.cipher){if(!u.default.Crypto)throw new Error("Encryption not enabled; use ably.encryption.js instead");var f=u.default.Crypto.getCipher(h.cipher);h.cipher=f.cipherParams,h.channelCipher=f.cipher}else"cipher"in h&&(h.cipher=void 0,h.channelCipher=null);return h}var m=function(b){i.__extends(h,b);function h(f,c,s){var w=b.call(this)||this;return d.default.logAction(d.default.LOG_MINOR,"Channel()","started; name = "+c),w.rest=f,w.name=c,w.basePath="/channels/"+encodeURIComponent(c),w.presence=new g.default(w),w.channelOptions=p(s),w}return h.prototype.setOptions=function(f){this.channelOptions=p(f)},h.prototype.history=function(f,c){if(d.default.logAction(d.default.LOG_MICRO,"Channel.history()","channel = "+this.name),c===void 0)if(typeof f=="function")c=f,f=null;else{if(this.rest.options.promises)return a.promisify(this,"history",arguments);c=C}this._history(f,c)},h.prototype._history=function(f,c){var s=this.rest,w=s.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,v=this.rest.http.supportsLinkHeaders?void 0:w,k=a.defaultGetHeaders(s.options,w);s.options.headers&&a.mixin(k,s.options.headers);var j=this.channelOptions;new y.default(s,this.basePath+"/messages",k,v,function(N,P,T){return S.default.fromResponseBody(N,j,T?void 0:w)}).get(f,c)},h.prototype.publish=function(){var f=this,c=arguments.length,s=arguments[0],w=arguments[1],v=arguments[c-1],k,j;if(typeof v!="function"){if(this.rest.options.promises)return a.promisify(this,"publish",arguments);v=C}if(typeof s=="string"||s===null)k=[S.default.fromValues({name:s,data:w})],j=arguments[2];else if(a.isObject(s))k=[S.default.fromValues(s)],j=arguments[1];else if(a.isArray(s))k=S.default.fromValuesArray(s),j=arguments[1];else throw new R.default("The single-argument form of publish() expects a message object or an array of message objects",40013,400);(typeof j!="object"||!j)&&(j={});var N=this.rest,P=N.options,T=P.useBinaryProtocol?a.Format.msgpack:a.Format.json,I=N.options.idempotentRestPublishing,A=a.defaultPostHeaders(N.options,T);if(P.headers&&a.mixin(A,P.headers),I&&x(k)){var D=a.randomString(M);a.arrForEach(k,function(B,z){B.id=D+":"+z.toString()})}S.default.encodeArray(k,this.channelOptions,function(B){if(B){v(B);return}var z=S.default.getMessagesSize(k),$=P.maxMessageSize;if(z>$){v(new R.default("Maximum size of messages that can be published at once exceeded ( was "+z+" bytes; limit is "+$+" bytes)",40009,400));return}f._publish(S.default.serialize(k,T),A,j,v)})},h.prototype._publish=function(f,c,s,w){E.default.post(this.rest,this.basePath+"/messages",f,c,s,null,w)},h.prototype.status=function(f){if(typeof f!="function"&&this.rest.options.promises)return a.promisify(this,"status",[]);var c=this.rest.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,s=a.defaultPostHeaders(this.rest.options,c);E.default.get(this.rest,this.basePath,s,{},c,f||C)},h}(l.default);r.default=m},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(2)),g=i.__importDefault(o(20)),S=i.__importDefault(o(16));function R(){}var y=function(E){i.__extends(u,E);function u(C){var M=E.call(this)||this;return M.channel=C,M.basePath=C.basePath+"/presence",M}return u.prototype.get=function(C,M){if(d.default.logAction(d.default.LOG_MICRO,"Presence.get()","channel = "+this.channel.name),M===void 0)if(typeof C=="function")M=C,C=null;else{if(this.channel.rest.options.promises)return a.promisify(this,"get",arguments);M=R}var x=this.channel.rest,p=x.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,m=this.channel.rest.http.supportsLinkHeaders?void 0:p,b=a.defaultGetHeaders(x.options,p);x.options.headers&&a.mixin(b,x.options.headers);var h=this.channel.channelOptions;new g.default(x,this.basePath,b,m,function(f,c,s){return S.default.fromResponseBody(f,h,s?void 0:p)}).get(C,M)},u.prototype.history=function(C,M){return d.default.logAction(d.default.LOG_MICRO,"Presence.history()","channel = "+this.channel.name),this._history(C,M)},u.prototype._history=function(C,M){if(M===void 0)if(typeof C=="function")M=C,C=null;else{if(this.channel.rest.options.promises)return a.promisify(this,"_history",[C]);M=R}var x=this.channel.rest,p=x.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,m=this.channel.rest.http.supportsLinkHeaders?void 0:p,b=a.defaultGetHeaders(x.options,p);x.options.headers&&a.mixin(b,x.options.headers);var h=this.channel.channelOptions;new g.default(x,this.basePath+"/history",b,m,function(f,c,s){return S.default.fromResponseBody(f,h,s?void 0:p)}).get(C,M)},u}(l.default);r.default=y},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0}),r.TransportParams=void 0;var a=o(0),l=a.__importDefault(o(10)),d=a.__importStar(o(1)),g=a.__importStar(o(52)),S=a.__importStar(o(8)),R=a.__importDefault(o(3)),y=a.__importDefault(o(7)),E=a.__importDefault(o(36)),u=a.__importDefault(o(2)),C=a.__importDefault(o(37)),M=a.__importStar(o(21)),x=a.__importStar(o(4)),p=a.__importDefault(o(18)),m=a.__importDefault(o(9)),b=a.__importDefault(o(24)),h=a.__importDefault(o(53)),f=a.__importDefault(o(26)),c=a.__importDefault(o(14)),s=function(){var V;return typeof R.default.WebStorage!="undefined"&&((V=R.default.WebStorage)===null||V===void 0?void 0:V.localSupported)},w=function(){var V;return typeof R.default.WebStorage!="undefined"&&((V=R.default.WebStorage)===null||V===void 0?void 0:V.sessionSupported)},v=l.default.Action,k=function(){},j="ably-transport-preference",N="ably-connection-recovery";function P(){var V,F;return w()&&((F=(V=R.default.WebStorage)===null||V===void 0?void 0:V.getSession)===null||F===void 0?void 0:F.call(V,N))}function T(V){var F,O;return w()&&((O=(F=R.default.WebStorage)===null||F===void 0?void 0:F.setSession)===null||O===void 0?void 0:O.call(F,N,V))}function I(){var V,F;return w()&&((F=(V=R.default.WebStorage)===null||V===void 0?void 0:V.removeSession)===null||F===void 0?void 0:F.call(V,N))}function A(V,F){return d.arrIndexOf(R.default.Defaults.transportPreferenceOrder,V.shortName)>d.arrIndexOf(R.default.Defaults.transportPreferenceOrder,F.shortName)}function D(V,F,O){var L;if(V.channel!==F.channel||(L=V.action)!==v.PRESENCE&&L!==v.MESSAGE||L!==F.action)return!1;var U=L===v.PRESENCE?"presence":"messages",_=V[U].concat(F[U]),W=m.default.getMessagesSize(_);return W>O||!d.allSame(_,"clientId")||!d.arrEvery(_,function(Q){return!Q.id})?!1:(V[U]=_,!0)}function B(V){try{return JSON.parse(V)}catch(F){return null}}var z=function(){function V(F,O,L,U){this.options=F,this.host=O,this.mode=L,this.connectionKey=U,this.format=F.useBinaryProtocol?d.Format.msgpack:d.Format.json}return V.prototype.getConnectParams=function(F){var O=F?d.copy(F):{},L=this.options;switch(this.mode){case"upgrade":O.upgrade=this.connectionKey;break;case"resume":O.resume=this.connectionKey;break;case"recover":{var U=B(L.recover);U&&(O.recover=U.connectionKey);break}}return L.clientId!==void 0&&(O.clientId=L.clientId),L.echoMessages===!1&&(O.echo="false"),this.format!==void 0&&(O.format=this.format),this.stream!==void 0&&(O.stream=this.stream),this.heartbeats!==void 0&&(O.heartbeats=this.heartbeats),O.v=S.default.protocolVersion,O.agent=(0,S.getAgentString)(this.options),L.transportParams!==void 0&&d.mixin(O,L.transportParams),O},V.prototype.toString=function(){var F="[mode="+this.mode;return this.host&&(F+=",host="+this.host),this.connectionKey&&(F+=",connectionKey="+this.connectionKey),this.format&&(F+=",format="+this.format),F+="]",F},V}();r.TransportParams=z;var $=function(V){a.__extends(F,V);function F(O,L){var U=V.call(this)||this;U.disconnectedRetryCount=0,F.initTransports(),U.realtime=O,U.options=L;var _=L.timeouts,W=_.preferenceConnectTimeout+_.realtimeRequestTimeout;if(U.states={initialized:{state:"initialized",terminal:!1,queueEvents:!0,sendEvents:!1,failState:"disconnected"},connecting:{state:"connecting",terminal:!1,queueEvents:!0,sendEvents:!1,retryDelay:W,failState:"disconnected"},connected:{state:"connected",terminal:!1,queueEvents:!1,sendEvents:!0,failState:"disconnected"},synchronizing:{state:"connected",terminal:!1,queueEvents:!0,sendEvents:!1,forceQueueEvents:!0,failState:"disconnected"},disconnected:{state:"disconnected",terminal:!1,queueEvents:!0,sendEvents:!1,retryDelay:_.disconnectedRetryTimeout,failState:"disconnected"},suspended:{state:"suspended",terminal:!1,queueEvents:!1,sendEvents:!1,retryDelay:_.suspendedRetryTimeout,failState:"suspended"},closing:{state:"closing",terminal:!1,queueEvents:!1,sendEvents:!1,retryDelay:_.realtimeRequestTimeout,failState:"closed"},closed:{state:"closed",terminal:!0,queueEvents:!1,sendEvents:!1,failState:"closed"},failed:{state:"failed",terminal:!0,queueEvents:!1,sendEvents:!1,failState:"failed"}},U.state=U.states.initialized,U.errorReason=null,U.queuedMessages=new E.default,U.msgSerial=0,U.connectionDetails=void 0,U.connectionId=void 0,U.connectionKey=void 0,U.connectionStateTtl=_.connectionStateTtl,U.maxIdleInterval=null,U.transports=d.intersect(L.transports||S.default.defaultTransports,F.supportedTransports),U.baseTransport=d.intersect(S.default.baseTransportOrder,U.transports)[0],U.upgradeTransports=d.intersect(U.transports,S.default.upgradeTransports),U.transportPreference=null,U.httpHosts=S.default.getHosts(L),U.activeProtocol=null,U.proposedTransports=[],U.pendingTransports=[],U.host=null,U.lastAutoReconnectAttempt=null,U.lastActivity=null,U.forceFallbackHost=!1,U.connectCounter=0,u.default.logAction(u.default.LOG_MINOR,"Realtime.ConnectionManager()","started"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","requested transports = ["+(L.transports||S.default.defaultTransports)+"]"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","available transports = ["+U.transports+"]"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","http hosts = ["+U.httpHosts+"]"),!U.transports.length){var Q="no requested transports available";throw u.default.logAction(u.default.LOG_ERROR,"realtime.ConnectionManager()",Q),new Error(Q)}var X=R.default.Config.addEventListener;return X&&(w()&&typeof L.recover=="function"&&X("beforeunload",U.persistConnection.bind(U)),L.closeOnUnload===!0&&X("beforeunload",function(){u.default.logAction(u.default.LOG_MAJOR,"Realtime.ConnectionManager()","beforeunload event has triggered the connection to close as closeOnUnload is true"),U.requestState({state:"closing"})}),X("online",function(){U.state==U.states.disconnected||U.state==U.states.suspended?(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager caught browser ‘online’ event","reattempting connection"),U.requestState({state:"connecting"})):U.state==U.states.connecting&&(U.pendingTransports.forEach(function(ne){ne.off()}),U.disconnectAllTransports(),U.startConnect())}),X("offline",function(){U.state==U.states.connected&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager caught browser ‘offline’ event","disconnecting active transport"),U.disconnectAllTransports())})),U}return F.initTransports=function(){(0,h.default)(F),d.arrForEach(R.default.Transports,function(O){O(F)})},F.prototype.createTransportParams=function(O,L){return new z(this.options,O,L,this.connectionKey)},F.prototype.getTransportParams=function(O){var L=this,U=function(_){if(L.connectionKey){_("resume");return}if(typeof L.options.recover=="string"){_("recover");return}var W=L.options.recover,Q=P();if(Q&&typeof W=="function"){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Calling clientOptions-provided recover function with last session data"),W(Q,function(X){X?(L.options.recover=Q.recoveryKey,_("recover")):_("clean")});return}_("clean")};U(function(_){var W=L.createTransportParams(null,_);if(_==="recover"){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Transport recovery mode = recover; recoveryKey = "+L.options.recover);var Q=B(L.options.recover);Q&&(L.msgSerial=Q.msgSerial)}else u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Transport params = "+W.toString());O(W)})},F.prototype.tryATransport=function(O,L,U){var _=this;u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.tryATransport()","trying "+L),f.default.tryConnect(F.supportedTransports[L],this,this.realtime.auth,O,function(W,Q){var X=_.state;if(X==_.states.closing||X==_.states.closed||X==_.states.failed){Q&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.tryATransport()","connection "+X.state+" while we were attempting the transport; closing "+Q),Q.close()),U(!0);return}if(W){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.tryATransport()","transport "+L+" "+W.event+", err: "+W.error.toString()),p.default.isTokenErr(W.error)&&!(_.errorReason&&p.default.isTokenErr(_.errorReason))?(_.errorReason=W.error,_.realtime.auth._forceNewToken(null,null,function(ne){if(ne){_.actOnErrorFromAuthorize(ne);return}_.tryATransport(O,L,U)})):W.event==="failed"?(_.notifyState({state:"failed",error:W.error}),U(!0)):W.event==="disconnected"&&((0,M.isRetriable)(W.error)?U(!1):(_.notifyState({state:_.states.connecting.failState,error:W.error}),U(!0)));return}u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.tryATransport()","viable transport "+L+"; setting pending"),_.setTransportPending(Q,O),U(null,Q)})},F.prototype.setTransportPending=function(O,L){var U=this,_=L.mode;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setTransportPending()","transport = "+O+"; mode = "+_),d.arrDeleteValue(this.proposedTransports,O),this.pendingTransports.push(O);var W=R.default.Defaults.transportPreferenceOrder[R.default.Defaults.transportPreferenceOrder.length-1];O.once("connected",function(X,ne,re){_=="upgrade"&&U.activeProtocol?O.shortName!==W&&d.arrIn(U.getUpgradePossibilities(),W)&&U.activeProtocol?setTimeout(function(){U.scheduleTransportActivation(X,O,ne,re)},U.options.timeouts.parallelUpgradeDelay):U.scheduleTransportActivation(X,O,ne,re):(U.activateTransport(X,O,ne,re),R.default.Config.nextTick(function(){U.connectImpl(L)})),_==="recover"&&U.options.recover&&(U.options.recover=null,U.unpersistConnection())});var Q=this;O.on(["disconnected","closed","failed"],function(X){Q.deactivateTransport(O,this.event,X)}),this.emit("transport.pending",O)},F.prototype.scheduleTransportActivation=function(O,L,U,_){var W=this,Q=this.activeProtocol&&this.activeProtocol.getTransport(),X=function(){L.disconnect(),d.arrDeleteValue(W.pendingTransports,L)};if(this.state!==this.states.connected&&this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Current connection state ("+this.state.state+(this.state===this.states.synchronizing?", but with an upgrade already in progress":"")+") is not valid to upgrade in; abandoning upgrade to "+L.shortName),X();return}if(Q&&!A(L,Q)){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Proposed transport "+L.shortName+" is no better than current active transport "+Q.shortName+" - abandoning upgrade"),X();return}u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Scheduling transport upgrade; transport = "+L);var ne=null;if(!L.isConnected){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Proposed transport "+L.shortName+"is no longer connected; abandoning upgrade"),X();return}if(this.state===this.states.connected)u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.scheduleTransportActivation()","Currently connected, so temporarily pausing events until the upgrade is complete"),this.state=this.states.synchronizing,ne=this.activeProtocol;else if(this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Current connection state ("+this.state.state+(this.state===this.states.synchronizing?", but with an upgrade already in progress":"")+") is not valid to upgrade in; abandoning upgrade to "+L.shortName),X();return}u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Syncing transport; transport = "+L);var re=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Activating transport; transport = "+L),L.send(l.default.fromValues({action:v.ACTIVATE})),W.activateTransport(O,L,U,_),W.state===W.states.synchronizing?(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.scheduleTransportActivation()","Pre-upgrade protocol idle, sending queued messages on upgraded transport; transport = "+L),W.state=W.states.connected):u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Pre-upgrade protocol idle, but state is now "+W.state.state+", so leaving unchanged"),W.state.sendEvents&&W.sendQueuedMessages()};ne?ne.onceIdle(re):re()},F.prototype.activateTransport=function(O,L,U,_){var W=this;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","transport = "+L),O&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","error = "+O),U&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.activateTransport()","connectionId = "+U),_&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.activateTransport()","connectionDetails = "+JSON.stringify(_)),this.persistTransportPreference(L);var Q=this.state,X=this.states.connected.state;if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","current state = "+Q.state),Q.state==this.states.closing.state||Q.state==this.states.closed.state||Q.state==this.states.failed.state)return u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","Disconnecting transport and abandoning"),L.disconnect(),!1;if(d.arrDeleteValue(this.pendingTransports,L),!L.isConnected)return u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","Declining to activate transport "+L+" since it appears to no longer be connected"),!1;var ne=this.activeProtocol;this.activeProtocol=new g.default(L),this.host=L.params.host;var re=_.connectionKey;if(re&&this.connectionKey!=re&&this.setConnection(U,_,!!O),this.onConnectionDetailsUpdate(_,L),R.default.Config.nextTick(function(){L.on("connected",function(q,ye,De){W.onConnectionDetailsUpdate(De,L),W.emit("update",new C.default(X,X,null,q))})}),Q.state===this.states.connected.state?O&&(this.errorReason=this.realtime.connection.errorReason=O,this.emit("update",new C.default(X,X,null,O))):(this.notifyState({state:"connected",error:O}),this.errorReason=this.realtime.connection.errorReason=O||null),this.emit("transport.active",L),ne)if(ne.messageQueue.count()>0&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","Previous active protocol (for transport "+ne.transport.shortName+", new one is "+L.shortName+") finishing with "+ne.messageQueue.count()+" messages still pending"),ne.transport===L){var ce="Assumption violated: activating a transport that was also the transport for the previous active protocol; transport = "+L.shortName+"; stack = "+new Error().stack;u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()",ce)}else ne.finish();return d.safeArrForEach(this.pendingTransports,function(q){if(q===L){var ye="Assumption violated: activating a transport that is still marked as a pending transport; transport = "+L.shortName+"; stack = "+new Error().stack;u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()",ye),d.arrDeleteValue(W.pendingTransports,L)}else q.disconnect()}),d.safeArrForEach(this.proposedTransports,function(q){q===L?(u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","Assumption violated: activating a transport that is still marked as a proposed transport; transport = "+L.shortName+"; stack = "+new Error().stack),d.arrDeleteValue(W.proposedTransports,L)):q.dispose()}),!0},F.prototype.deactivateTransport=function(O,L,U){var _=this.activeProtocol,W=_&&_.getTransport()===O,Q=d.arrDeleteValue(this.pendingTransports,O),X=d.arrDeleteValue(this.proposedTransports,O),ne=this.noTransportsScheduledForActivation();if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.deactivateTransport()","transport = "+O),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.deactivateTransport()","state = "+L+(W?"; was active":Q?"; was pending":X?"; was proposed":"")+(ne?"":"; another transport is scheduled for activation")),U&&U.message&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","reason = "+U.message),W&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","Getting, clearing, and requeuing "+this.activeProtocol.messageQueue.count()+" pending messages"),this.queuePendingMessages(_.getPendingMessages()),R.default.Config.nextTick(function(){_.clearPendingMessages()}),this.activeProtocol=this.host=null),this.emit("transport.inactive",O),W&&ne||W&&L==="failed"||L==="closed"||_===null&&Q&&this.pendingTransports.length===0){if(L==="disconnected"&&U&&U.statusCode>500&&this.httpHosts.length>1){this.unpersistTransportPreference(),this.forceFallbackHost=!0,this.notifyState({state:L,error:U,retryImmediately:!0});return}var re=L==="failed"&&p.default.isTokenErr(U)?"disconnected":L;this.notifyState({state:re,error:U});return}W&&L==="disconnected"&&this.state!==this.states.synchronizing&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","wasActive but another transport is connected and scheduled for activation, so going into the connecting state until it activates"),this.startSuspendTimer(),this.startTransitionTimer(this.states.connecting),this.notifyState({state:"connecting",error:U}))},F.prototype.noTransportsScheduledForActivation=function(){return d.isEmpty(this.pendingTransports)||this.pendingTransports.every(function(O){return!O.isConnected})},F.prototype.setConnection=function(O,L,U){var _=this.connectionId,W=_&&_!==O,Q=!_&&U;(W||Q)&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setConnection()","Resetting msgSerial"),this.msgSerial=0,this.queuedMessages.resetSendAttempted()),this.connectionId!==O&&u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setConnection()","New connectionId; reattaching any attached channels"),this.realtime.connection.id=this.connectionId=O,this.realtime.connection.key=this.connectionKey=L.connectionKey},F.prototype.clearConnection=function(){this.realtime.connection.id=this.connectionId=void 0,this.realtime.connection.key=this.connectionKey=void 0,this.msgSerial=0,this.unpersistConnection()},F.prototype.createRecoveryKey=function(){return this.connectionKey?JSON.stringify({connectionKey:this.connectionKey,msgSerial:this.msgSerial,channelSerials:this.realtime.channels.channelSerials()}):null},F.prototype.checkConnectionStateFreshness=function(){if(!(!this.lastActivity||!this.connectionId)){var O=d.now()-this.lastActivity;O>this.connectionStateTtl+this.maxIdleInterval&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.checkConnectionStateFreshness()","Last known activity from realtime was "+O+"ms ago; discarding connection state"),this.clearConnection(),this.states.connecting.failState="suspended")}},F.prototype.persistConnection=function(){if(w()){var O=this.createRecoveryKey();O&&T({recoveryKey:O,disconnectedAt:d.now(),location:i.location,clientId:this.realtime.auth.clientId})}},F.prototype.unpersistConnection=function(){I()},F.prototype.getError=function(){return this.errorReason||this.getStateError()},F.prototype.getStateError=function(){var O,L;return(L=(O=M.default)[this.state.state])===null||L===void 0?void 0:L.call(O)},F.prototype.activeState=function(){return this.state.queueEvents||this.state.sendEvents},F.prototype.enactStateChange=function(O){var L=O.current==="failed"?u.default.LOG_ERROR:u.default.LOG_MAJOR;u.default.logAction(L,"Connection state",O.current+(O.reason?"; reason: "+O.reason:"")),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.enactStateChange","setting new state: "+O.current+"; reason = "+(O.reason&&O.reason.message));var U=this.state=this.states[O.current];O.reason&&(this.errorReason=O.reason,this.realtime.connection.errorReason=O.reason),(U.terminal||U.state==="suspended")&&this.clearConnection(),this.emit("connectionstate",O)},F.prototype.startTransitionTimer=function(O){var L=this;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startTransitionTimer()","transitionState: "+O.state),this.transitionTimer&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startTransitionTimer()","clearing already-running timer"),clearTimeout(this.transitionTimer)),this.transitionTimer=setTimeout(function(){L.transitionTimer&&(L.transitionTimer=null,u.default.logAction(u.default.LOG_MINOR,"ConnectionManager "+O.state+" timer expired","requesting new state: "+O.failState),L.notifyState({state:O.failState}))},O.retryDelay)},F.prototype.cancelTransitionTimer=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.cancelTransitionTimer()",""),this.transitionTimer&&(clearTimeout(this.transitionTimer),this.transitionTimer=null)},F.prototype.startSuspendTimer=function(){var O=this;this.suspendTimer||(this.suspendTimer=setTimeout(function(){O.suspendTimer&&(O.suspendTimer=null,u.default.logAction(u.default.LOG_MINOR,"ConnectionManager suspend timer expired","requesting new state: suspended"),O.states.connecting.failState="suspended",O.notifyState({state:"suspended"}))},this.connectionStateTtl))},F.prototype.checkSuspendTimer=function(O){O!=="disconnected"&&O!=="suspended"&&O!=="connecting"&&this.cancelSuspendTimer()},F.prototype.cancelSuspendTimer=function(){this.states.connecting.failState="disconnected",this.suspendTimer&&(clearTimeout(this.suspendTimer),this.suspendTimer=null)},F.prototype.startRetryTimer=function(O){var L=this;this.retryTimer=setTimeout(function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager retry timer expired","retrying"),L.retryTimer=null,L.requestState({state:"connecting"})},O)},F.prototype.cancelRetryTimer=function(){this.retryTimer&&(clearTimeout(this.retryTimer),this.retryTimer=null)},F.prototype.notifyState=function(O){var L=this,U,_,W=O.state,Q=W==="disconnected"&&(this.state===this.states.connected||this.state===this.states.synchronizing||O.retryImmediately||this.state===this.states.connecting&&O.error&&p.default.isTokenErr(O.error)&&!(this.errorReason&&p.default.isTokenErr(this.errorReason)));if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.notifyState()","new state: "+W+(Q?"; will retry connection immediately":"")),W!=this.state.state&&(this.cancelTransitionTimer(),this.cancelRetryTimer(),this.checkSuspendTimer(O.state),(W==="suspended"||W==="connected")&&(this.disconnectedRetryCount=0),!this.state.terminal)){var X=this.states[O.state],ne=X.retryDelay;X.state==="disconnected"&&(this.disconnectedRetryCount++,ne=d.getRetryTime(X.retryDelay,this.disconnectedRetryCount));var re=new C.default(this.state.state,X.state,ne,O.error||((_=(U=M.default)[X.state])===null||_===void 0?void 0:_.call(U)));if(Q){var ce=function(){L.state===L.states.disconnected&&(L.lastAutoReconnectAttempt=d.now(),L.requestState({state:"connecting"}))},q=this.lastAutoReconnectAttempt&&d.now()-this.lastAutoReconnectAttempt+1;q&&q<1e3?(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.notifyState()","Last reconnect attempt was only "+q+"ms ago, waiting another "+(1e3-q)+"ms before trying again"),setTimeout(ce,1e3-q)):R.default.Config.nextTick(ce)}else(W==="disconnected"||W==="suspended")&&this.startRetryTimer(ne);(W==="disconnected"&&!Q||W==="suspended"||X.terminal)&&R.default.Config.nextTick(function(){L.disconnectAllTransports()}),W=="connected"&&!this.activeProtocol&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.notifyState()","Broken invariant: attempted to go into connected state, but there is no active protocol"),this.enactStateChange(re),this.state.sendEvents?this.sendQueuedMessages():this.state.queueEvents||(this.realtime.channels.propogateConnectionInterruption(W,re.reason),this.failQueuedMessages(re.reason))}},F.prototype.requestState=function(O){var L=this,U,_,W=O.state;if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.requestState()","requested state: "+W+"; current state: "+this.state.state),W!=this.state.state&&(this.cancelTransitionTimer(),this.cancelRetryTimer(),this.checkSuspendTimer(W),!(W=="connecting"&&this.state.state=="connected")&&!(W=="closing"&&this.state.state=="closed"))){var Q=this.states[W],X=new C.default(this.state.state,Q.state,null,O.error||((_=(U=M.default)[Q.state])===null||_===void 0?void 0:_.call(U)));this.enactStateChange(X),W=="connecting"&&R.default.Config.nextTick(function(){L.startConnect()}),W=="closing"&&this.closeImpl()}},F.prototype.startConnect=function(){var O=this;if(this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startConnect()","Must be in connecting state to connect, but was "+this.state.state);return}var L=this.realtime.auth,U=++this.connectCounter,_=function(){O.checkConnectionStateFreshness(),O.getTransportParams(function(Q){if(Q.mode==="recover"&&Q.options.recover){var X=B(Q.options.recover);X&&O.realtime.channels.recoverChannels(X.channelSerials)}U===O.connectCounter&&O.connectImpl(Q,U)})};if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startConnect()","starting connection"),this.startSuspendTimer(),this.startTransitionTimer(this.states.connecting),L.method==="basic")_();else{var W=function(Q){U===O.connectCounter&&(Q?O.actOnErrorFromAuthorize(Q):_())};this.errorReason&&p.default.isTokenErr(this.errorReason)?L._forceNewToken(null,null,W):L._ensureValidAuthCredentials(!1,W)}},F.prototype.connectImpl=function(O,L){var U=this.state.state;U!==this.states.connecting.state&&U!==this.states.connected.state?u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectImpl()","Must be in connecting state to connect (or connected to upgrade), but was "+U):this.pendingTransports.length?u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectImpl()","Transports "+this.pendingTransports[0].toString()+" currently pending; taking no action"):U==this.states.connected.state?this.upgradeIfNeeded(O):this.transports.length>1&&this.getTransportPreference()?this.connectPreference(O,L):this.connectBase(O,L)},F.prototype.connectPreference=function(O,L){var U=this,_=this.getTransportPreference(),W=!1;d.arrIn(this.transports,_)||(this.unpersistTransportPreference(),this.connectImpl(O,L)),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectPreference()","Trying to connect with stored transport preference "+_);var Q=setTimeout(function(){W=!0,U.state.state!==U.states.connected.state&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectPreference()","Shortcircuit connection attempt with "+_+" failed; clearing preference and trying from scratch"),U.disconnectAllTransports(),U.unpersistTransportPreference()),U.connectImpl(O,L)},this.options.timeouts.preferenceConnectTimeout);O.host=this.httpHosts[0],this.tryATransport(O,_,function(X,ne){clearTimeout(Q),W&&ne?(ne.off(),ne.disconnect(),d.arrDeleteValue(U.pendingTransports,ne)):!ne&&!X&&(U.unpersistTransportPreference(),U.connectImpl(O,L))})},F.prototype.connectBase=function(O,L){var U=this,_=function(re){U.notifyState({state:U.states.connecting.failState,error:re})},W=this.httpHosts.slice(),Q=function(re,ce){L===U.connectCounter&&!ce&&!re&&ne()};u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectBase()","Trying to connect with base transport "+this.baseTransport);var X=W.shift();if(!X){_(new x.default("Unable to connect (no available host)",80003,404));return}O.host=X;var ne=function(){if(!W.length){_(new x.default("Unable to connect (and no more fallback hosts to try)",80003,404));return}if(!U.realtime.http.checkConnectivity){_(new x.PartialErrorInfo("Internal error: Http.checkConnectivity not set",null,500));return}U.realtime.http.checkConnectivity(function(re,ce){if(L===U.connectCounter){if(re){_(re);return}if(!ce){_(new x.default("Unable to connect (network unreachable)",80003,404));return}O.host=d.arrPopRandomElement(W),U.tryATransport(O,U.baseTransport,Q)}})};if(this.forceFallbackHost&&W.length){this.forceFallbackHost=!1,ne();return}this.tryATransport(O,this.baseTransport,Q)},F.prototype.getUpgradePossibilities=function(){var O=this.activeProtocol.getTransport().shortName,L=d.arrIndexOf(this.upgradeTransports,O);return this.upgradeTransports.slice(L+1)},F.prototype.upgradeIfNeeded=function(O){var L=this,U=this.getUpgradePossibilities();u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.upgradeIfNeeded()","upgrade possibilities: "+R.default.Config.inspect(U)),U.length&&d.arrForEach(U,function(_){var W=L.createTransportParams(O.host,"upgrade");L.tryATransport(W,_,k)})},F.prototype.closeImpl=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.closeImpl()","closing connection"),this.cancelSuspendTimer(),this.startTransitionTimer(this.states.closing),d.safeArrForEach(this.pendingTransports,function(O){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Closing pending transport: "+O),O&&O.close()}),d.safeArrForEach(this.proposedTransports,function(O){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Disposing of proposed transport: "+O),O&&O.dispose()}),this.activeProtocol&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Closing active transport: "+this.activeProtocol.getTransport()),this.activeProtocol.getTransport().close()),this.notifyState({state:"closed"})},F.prototype.onAuthUpdated=function(O,L){var U=this,_;switch(this.state.state){case"connected":{if(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Sending AUTH message on active transport"),(this.pendingTransports.length||this.proposedTransports.length)&&this.state!==this.states.synchronizing){this.disconnectAllTransports(!0);var W=this.activeProtocol.getTransport().params;R.default.Config.nextTick(function(){U.state.state==="connected"&&U.upgradeIfNeeded(W)})}var Q=(_=this.activeProtocol)===null||_===void 0?void 0:_.getTransport();Q&&Q.onAuthUpdated&&Q.onAuthUpdated(O);var X=l.default.fromValues({action:v.AUTH,auth:{accessToken:O.token}});this.send(X);var ne=function(){U.off(re),L(null,O)},re=function(q){q.current==="failed"&&(U.off(ne),U.off(re),L(q.reason||U.getStateError()))};this.once("connectiondetails",ne),this.on("connectionstate",re);break}case"connecting":u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Aborting current connection attempts in order to start again with the new auth details"),this.disconnectAllTransports();default:{u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Connection state is "+this.state.state+"; waiting until either connected or failed");var ce=function(q){switch(q.current){case"connected":U.off(ce),L(null,O);break;case"failed":case"closed":case"suspended":U.off(ce),L(q.reason||U.getStateError());break}};this.on("connectionstate",ce),this.state.state==="connecting"?this.startConnect():this.requestState({state:"connecting"})}}},F.prototype.disconnectAllTransports=function(O){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.disconnectAllTransports()","Disconnecting all transports"+(O?" except the active transport":"")),this.connectCounter++,d.safeArrForEach(this.pendingTransports,function(L){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disconnecting pending transport: "+L),L&&L.disconnect()}),this.pendingTransports=[],d.safeArrForEach(this.proposedTransports,function(L){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disposing of proposed transport: "+L),L&&L.dispose()}),this.proposedTransports=[],this.activeProtocol&&!O&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disconnecting active transport: "+this.activeProtocol.getTransport()),this.activeProtocol.getTransport().disconnect())},F.prototype.send=function(O,L,U){U=U||k;var _=this.state;if(_.sendEvents){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()","sending event"),this.sendImpl(new g.PendingMessage(O,U));return}var W=L&&_.queueEvents||_.forceQueueEvents;if(!W){var Q="rejecting event, queueEvent was "+L+", state was "+_.state;u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()",Q),U(this.errorReason||new x.default(Q,9e4,400));return}u.default.shouldLog(u.default.LOG_MICRO)&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()","queueing msg; "+l.default.stringify(O)),this.queue(O,U)},F.prototype.sendImpl=function(O){var L=O.message;O.ackRequired&&!O.sendAttempted&&(L.msgSerial=this.msgSerial++);try{this.activeProtocol.send(O)}catch(U){u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.sendImpl()","Unexpected exception in transport.send(): "+U.stack)}},F.prototype.queue=function(O,L){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.queue()","queueing event");var U=this.queuedMessages.last(),_=this.options.maxMessageSize;U&&!U.sendAttempted&&D(U.message,O,_)?(U.merged||(U.callback=b.default.create([U.callback]),U.merged=!0),U.callback.push(L)):this.queuedMessages.push(new g.PendingMessage(O,L))},F.prototype.sendQueuedMessages=function(){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.sendQueuedMessages()","sending "+this.queuedMessages.count()+" queued messages");for(var O;O=this.queuedMessages.shift();)this.sendImpl(O)},F.prototype.queuePendingMessages=function(O){O&&O.length&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.queuePendingMessages()","queueing "+O.length+" pending messages"),this.queuedMessages.prepend(O))},F.prototype.failQueuedMessages=function(O){var L=this.queuedMessages.count();L>0&&(u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.failQueuedMessages()","failing "+L+" queued messages, err = "+d.inspectError(O)),this.queuedMessages.completeAllMessages(O))},F.prototype.onChannelMessage=function(O,L){var U=this.activeProtocol&&L===this.activeProtocol.getTransport(),_=d.arrIn(this.pendingTransports,L)&&this.state==this.states.synchronizing;U||_?this.realtime.channels.onChannelMessage(O):d.arrIndexOf([v.ACK,v.NACK,v.ERROR],O.action)>-1?this.realtime.channels.onChannelMessage(O):u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onChannelMessage()","received message "+JSON.stringify(O)+"on defunct transport; discarding")},F.prototype.ping=function(O,L){var U=this;if(O){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.ping()","transport = "+O);var _=function(){O.off("heartbeat",X),L(new x.default("Timeout waiting for heartbeat response",5e4,500))},W=d.now(),Q=d.cheapRandStr(),X=function(ye){if(ye===Q){O.off("heartbeat",X),clearTimeout(ne);var De=d.now()-W;L(null,De)}},ne=setTimeout(_,this.options.timeouts.realtimeRequestTimeout);O.on("heartbeat",X),O.ping(Q);return}if(this.state.state!=="connected"){L(new x.default("Unable to ping service; not connected",4e4,400));return}var re=!1,ce=function(ye,De){U.off("transport.active",q),re||(re=!0,L(ye,De))},q=function(){re||(re=!0,R.default.Config.nextTick(function(){U.ping(null,L)}))};this.on("transport.active",q),this.ping(this.activeProtocol.getTransport(),ce)},F.prototype.abort=function(O){this.activeProtocol.getTransport().fail(O)},F.prototype.registerProposedTransport=function(O){this.proposedTransports.push(O)},F.prototype.getTransportPreference=function(){var O,L;return this.transportPreference||s()&&((L=(O=R.default.WebStorage)===null||O===void 0?void 0:O.get)===null||L===void 0?void 0:L.call(O,j))},F.prototype.persistTransportPreference=function(O){var L,U;d.arrIn(S.default.upgradeTransports,O.shortName)&&(this.transportPreference=O.shortName,s()&&((U=(L=R.default.WebStorage)===null||L===void 0?void 0:L.set)===null||U===void 0||U.call(L,j,O.shortName)))},F.prototype.unpersistTransportPreference=function(){var O,L;this.transportPreference=null,s()&&((L=(O=R.default.WebStorage)===null||O===void 0?void 0:O.remove)===null||L===void 0||L.call(O,j))},F.prototype.actOnErrorFromAuthorize=function(O){if(O.code===40171)this.notifyState({state:"failed",error:O});else if(O.code===40102)this.notifyState({state:"failed",error:O});else if(O.statusCode===c.default.Forbidden){var L="Client configured authentication provider returned 403; failing the connection";u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.actOnErrorFromAuthorize()",L),this.notifyState({state:"failed",error:new x.default(L,80019,403,O)})}else{var L="Client configured authentication provider request failed";u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.actOnErrorFromAuthorize",L),this.notifyState({state:this.state.failState,error:new x.default(L,80019,401,O)})}},F.prototype.onConnectionDetailsUpdate=function(O,L){if(O){this.connectionDetails=O,O.maxMessageSize&&(this.options.maxMessageSize=O.maxMessageSize);var U=O.clientId;if(U){var _=this.realtime.auth._uncheckedSetClientId(U);if(_){u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.onConnectionDetailsUpdate()",_.message),L.fail(_);return}}var W=O.connectionStateTtl;W&&(this.connectionStateTtl=W),this.maxIdleInterval=O.maxIdleInterval,this.emit("connectiondetails",O)}},F.supportedTransports={},F}(y.default);r.default=$}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(7)),l=i.__importDefault(o(2)),d=function(g){i.__extends(S,g);function S(){var R=g.call(this)||this;return R.messages=[],R}return S.prototype.count=function(){return this.messages.length},S.prototype.push=function(R){this.messages.push(R)},S.prototype.shift=function(){return this.messages.shift()},S.prototype.last=function(){return this.messages[this.messages.length-1]},S.prototype.copyAll=function(){return this.messages.slice()},S.prototype.append=function(R){this.messages.push.apply(this.messages,R)},S.prototype.prepend=function(R){this.messages.unshift.apply(this.messages,R)},S.prototype.completeMessages=function(R,y,E){l.default.logAction(l.default.LOG_MICRO,"MessageQueue.completeMessages()","serial = "+R+"; count = "+y),E=E||null;var u=this.messages;if(u.length===0)throw new Error("MessageQueue.completeMessages(): completeMessages called on any empty MessageQueue");var C=u[0];if(C){var M=C.message.msgSerial,x=R+y;if(x>M)for(var p=u.splice(0,x-M),m=0,b=p;m<b.length;m++){var h=b[m];h.callback(E)}u.length==0&&this.emit("idle")}},S.prototype.completeAllMessages=function(R){this.completeMessages(0,Number.MAX_SAFE_INTEGER||Number.MAX_VALUE,R)},S.prototype.resetSendAttempted=function(){for(var R=0,y=this.messages;R<y.length;R++){var E=y[R];E.sendAttempted=!1}},S.prototype.clear=function(){l.default.logAction(l.default.LOG_MICRO,"MessageQueue.clear()","clearing "+this.messages.length+" messages"),this.messages=[],this.emit("idle")},S}(a.default);r.default=d},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function a(l,d,g,S){this.previous=l,this.current=d,g&&(this.retryIn=g),S&&(this.reason=S)}return a}();r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(10)),l=i.__importDefault(o(7)),d=i.__importStar(o(1)),g=i.__importDefault(o(33)),S=i.__importDefault(o(2)),R=i.__importDefault(o(54)),y=i.__importDefault(o(9)),E=i.__importDefault(o(39)),u=i.__importStar(o(4)),C=i.__importDefault(o(16)),M=i.__importDefault(o(21)),x=a.default.Action,p=function(){};function m(f){if(f&&"params"in f&&!d.isObject(f.params))return new u.default("options.params must be an object",4e4,400);if(f&&"modes"in f){if(!d.isArray(f.modes))return new u.default("options.modes must be an array",4e4,400);for(var c=0;c<f.modes.length;c++){var s=f.modes[c];if(!s||typeof s!="string"||!d.arrIn(a.default.channelModes,String.prototype.toUpperCase.call(s)))return new u.default("Invalid channel mode: "+s,4e4,400)}}}var b=function(f){i.__extends(c,f);function c(s,w,v){var k=f.call(this,s,w,v)||this;return k.retryCount=0,k.history=function(j,N){if(S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.history()","channel = "+this.name),N===void 0)if(typeof j=="function")N=j,j=null;else{if(this.rest.options.promises)return d.promisify(this,"history",arguments);N=p}if(j&&j.untilAttach){if(this.state!=="attached"){N(new u.default("option untilAttach requires the channel to be attached",4e4,400));return}if(!this.properties.attachSerial){N(new u.default("untilAttach was specified and channel is attached, but attachSerial is not defined",4e4,400));return}delete j.untilAttach,j.from_serial=this.properties.attachSerial}g.default.prototype._history.call(this,j,N)},k.whenState=function(j,N){return l.default.prototype.whenState.call(k,j,k.state,N)},S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel()","started; name = "+w),k.realtime=s,k.presence=new R.default(k),k.connectionManager=s.connection.connectionManager,k.state="initialized",k.subscriptions=new l.default,k.syncChannelSerial=void 0,k.properties={attachSerial:void 0,channelSerial:void 0},k.setOptions(v),k.errorReason=null,k._requestedFlags=null,k._mode=null,k._attachResume=!1,k._decodingContext={channelOptions:k.channelOptions,plugins:s.options.plugins||{},baseEncodedPreviousPayload:void 0},k._lastPayload={messageId:null,protocolMessageChannelSerial:null,decodeFailureRecoveryInProgress:null},k._allChannelChanges=new l.default,k}return c.prototype.invalidStateError=function(){return new u.default("Channel operation failed as channel state is "+this.state,90001,400,this.errorReason||void 0)},c.processListenerArgs=function(s){return s=Array.prototype.slice.call(s),typeof s[0]=="function"&&s.unshift(null),s[s.length-1]==null&&s.pop(),s},c.prototype.setOptions=function(s,w){var v=this.channelOptions;if(!w&&this.rest.options.promises)return d.promisify(this,"setOptions",arguments);var k=w||function(N){N&&S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel.setOptions()","Set options failed: "+N.toString())},j=m(s);if(j){k(j);return}g.default.prototype.setOptions.call(this,s),this._decodingContext&&(this._decodingContext.channelOptions=this.channelOptions),this._shouldReattachToSetOptions(s,v)?(this.attachImpl(),this._allChannelChanges.once(["attached","update","detached","failed"],function(N){switch(this.event){case"update":case"attached":k==null||k(null);return;default:k==null||k(N.reason);return}})):k()},c.prototype._shouldReattachToSetOptions=function(s,w){if(!(this.state==="attached"||this.state==="attaching"))return!1;if(s!=null&&s.params){var v=h(s.params),k=h(w.params);if(Object.keys(v).length!==Object.keys(k).length||!d.shallowEquals(k,v))return!0}return!!(s!=null&&s.modes&&(!w.modes||!d.arrEquals(s.modes,w.modes)))},c.prototype.publish=function(){for(var s=this,w=[],v=0;v<arguments.length;v++)w[v]=arguments[v];var k=w[0],j=w.length,N=w[j-1];if(typeof N!="function"){if(this.realtime.options.promises)return d.promisify(this,"publish",arguments);N=p,++j}if(!this.connectionManager.activeState()){N(this.connectionManager.getError());return}if(j==2)if(d.isObject(k))k=[y.default.fromValues(k)];else if(d.isArray(k))k=y.default.fromValuesArray(k);else throw new u.default("The single-argument form of publish() expects a message object or an array of message objects",40013,400);else k=[y.default.fromValues({name:w[0],data:w[1]})];var P=this.realtime.options.maxMessageSize;y.default.encodeArray(k,this.channelOptions,function(T){if(T){N(T);return}var I=y.default.getMessagesSize(k);if(I>P){N(new u.default("Maximum size of messages that can be published at once exceeded ( was "+I+" bytes; limit is "+P+" bytes)",40009,400));return}s.__publish(k,N)})},c.prototype.__publish=function(s,w){S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.publish()","message count = "+s.length);var v=this.state;switch(v){case"failed":case"suspended":w(u.default.fromValues(this.invalidStateError()));break;default:{S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.publish()","sending message; channel state is "+v);var k=new a.default;k.action=x.MESSAGE,k.channel=this.name,k.messages=s,this.sendMessage(k,w);break}}},c.prototype.onEvent=function(s){S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.onEvent()","received message");for(var w=this.subscriptions,v=0;v<s.length;v++){var k=s[v];w.emit(k.name,k)}},c.prototype.attach=function(s,w){var v;if(typeof s=="function"?(w=s,v=null):v=s,!w){if(this.realtime.options.promises)return d.promisify(this,"attach",arguments);w=function(k){k&&S.default.logAction(S.default.LOG_MAJOR,"RealtimeChannel.attach()","Channel attach failed: "+k.toString())}}if(v)S.default.deprecated("The ability to pass an array of channel mode flags as the first argument of `RealtimeChannel.attach()`","To set channel mode flags, populate the `modes` property of the channel options object that you pass to `Channels.get()` or `RealtimeChannel.setOptions()`."),this._requestedFlags=v;else if(this.state==="attached"){w(null,null);return}this._attach(!1,null,w)},c.prototype._attach=function(s,w,v){v||(v=function(j){j&&S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel._attach()","Channel attach failed: "+j.toString())});var k=this.connectionManager;if(!k.activeState()){v(k.getError());return}(this.state!=="attaching"||s)&&this.requestState("attaching",w),this.once(function(j){switch(this.event){case"attached":v==null||v(null,j);break;case"detached":case"suspended":case"failed":v==null||v(j.reason||k.getError()||new u.default("Unable to attach; reason unknown; state = "+this.event,9e4,500));break;case"detaching":v==null||v(new u.default("Attach request superseded by a subsequent detach request",9e4,409));break}})},c.prototype.attachImpl=function(){S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.attachImpl()","sending ATTACH message");var s=a.default.fromValues({action:x.ATTACH,channel:this.name,params:this.channelOptions.params,channelSerial:this.properties.channelSerial});this._requestedFlags?s.encodeModesToFlags(this._requestedFlags):this.channelOptions.modes&&s.encodeModesToFlags(d.allToUpperCase(this.channelOptions.modes)),this._attachResume&&s.setFlag("ATTACH_RESUME"),this._lastPayload.decodeFailureRecoveryInProgress&&(s.channelSerial=this._lastPayload.protocolMessageChannelSerial),this.sendMessage(s,p)},c.prototype.detach=function(s){if(!s){if(this.realtime.options.promises)return d.promisify(this,"detach",arguments);s=p}var w=this.connectionManager;if(!w.activeState()){s(w.getError());return}switch(this.state){case"suspended":this.notifyState("detached"),s();break;case"detached":s();break;case"failed":s(new u.default("Unable to detach; channel state = failed",90001,400));break;default:this.requestState("detaching");case"detaching":this.once(function(v){switch(this.event){case"detached":s();break;case"attached":case"suspended":case"failed":s(v.reason||w.getError()||new u.default("Unable to detach; reason unknown; state = "+this.event,9e4,500));break;case"attaching":s(new u.default("Detach request superseded by a subsequent attach request",9e4,409));break}})}},c.prototype.detachImpl=function(s){S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.detach()","sending DETACH message");var w=a.default.fromValues({action:x.DETACH,channel:this.name});this.sendMessage(w,s||p)},c.prototype.subscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=c.processListenerArgs(s),k=v[0],j=v[1],N=v[2];if(!N&&this.realtime.options.promises)return d.promisify(this,"subscribe",[k,j]);if(this.state==="failed"){N==null||N(u.default.fromValues(this.invalidStateError()));return}return k&&typeof k=="object"&&!Array.isArray(k)?this._subscribeFilter(k,j):this.subscriptions.on(k,j),this.attach(N||p)},c.prototype._subscribeFilter=function(s,w){var v=function(k){var j,N,P,T,I,A,D={name:k.name,refTimeserial:(N=(j=k.extras)===null||j===void 0?void 0:j.ref)===null||N===void 0?void 0:N.timeserial,refType:(T=(P=k.extras)===null||P===void 0?void 0:P.ref)===null||T===void 0?void 0:T.type,isRef:!!(!((A=(I=k.extras)===null||I===void 0?void 0:I.ref)===null||A===void 0)&&A.timeserial),clientId:k.clientId};Object.entries(s).find(function(B){var z=B[0],$=B[1];return $!==void 0?D[z]!==$:!1})||w(k)};this._addFilteredSubscription(s,w,v),this.subscriptions.on(v)},c.prototype._addFilteredSubscription=function(s,w,v){var k;if(this.filteredSubscriptions||(this.filteredSubscriptions=new Map),this.filteredSubscriptions.has(w)){var j=this.filteredSubscriptions.get(w);j.set(s,((k=j==null?void 0:j.get(s))===null||k===void 0?void 0:k.concat(v))||[v])}else this.filteredSubscriptions.set(w,new Map([[s,[v]]]))},c.prototype._getAndDeleteFilteredSubscriptions=function(s,w){var v=this;if(!this.filteredSubscriptions)return[];if(!w&&s)return Array.from(this.filteredSubscriptions.entries()).map(function(P){var T,I=P[0],A=P[1],D=A.get(s);return A.delete(s),A.size===0&&((T=v.filteredSubscriptions)===null||T===void 0||T.delete(I)),D}).reduce(function(P,T){var I;return T?(I=P).concat.apply(I,T):P},[]);if(!w||!this.filteredSubscriptions.has(w))return[];var k=this.filteredSubscriptions.get(w);if(!s){var j=Array.from(k.values()).reduce(function(P,T){return P.concat.apply(P,T)},[]);return this.filteredSubscriptions.delete(w),j}var N=k.get(s);return k.delete(s),N||[]},c.prototype.unsubscribe=function(){for(var s=this,w,v=[],k=0;k<arguments.length;k++)v[k]=arguments[k];var j=c.processListenerArgs(v),N=j[0],P=j[1];if(typeof N=="object"&&!P||!((w=this.filteredSubscriptions)===null||w===void 0)&&w.has(P)){this._getAndDeleteFilteredSubscriptions(N,P).forEach(function(T){return s.subscriptions.off(T)});return}this.subscriptions.off(N,P)},c.prototype.sync=function(){switch(this.state){case"initialized":case"detaching":case"detached":throw new u.PartialErrorInfo("Unable to sync to channel; not attached",4e4)}var s=this.connectionManager;if(!s.activeState())throw s.getError();var w=a.default.fromValues({action:x.SYNC,channel:this.name});this.syncChannelSerial&&(w.channelSerial=this.syncChannelSerial),s.send(w)},c.prototype.sendMessage=function(s,w){this.connectionManager.send(s,this.realtime.options.queueMessages,w)},c.prototype.sendPresence=function(s,w){var v=a.default.fromValues({action:x.PRESENCE,channel:this.name,presence:d.isArray(s)?C.default.fromValuesArray(s):[C.default.fromValues(s)]});this.sendMessage(v,w)},c.prototype.onMessage=function(s){(s.action===x.ATTACHED||s.action===x.MESSAGE||s.action===x.PRESENCE)&&this.setChannelSerial(s.channelSerial);var w,v=!1;switch(s.action){case x.ATTACHED:{this.properties.attachSerial=s.channelSerial,this._mode=s.getMode(),this.params=s.params||{};var k=s.decodeModesFromFlags();this.modes=k&&d.allToLowerCase(k)||void 0;var j=s.hasFlag("RESUMED"),N=s.hasFlag("HAS_PRESENCE"),P=s.hasFlag("HAS_BACKLOG");if(this.state==="attached"){j||this.presence.onAttached(N);var T=new E.default(this.state,this.state,j,P,s.error);this._allChannelChanges.emit("update",T),(!j||this.channelOptions.updateOnAttached)&&this.emit("update",T)}else this.state==="detaching"?this.checkPendingState():this.notifyState("attached",s.error,j,N,P);break}case x.DETACHED:{var I=s.error?u.default.fromValues(s.error):new u.default("Channel detached",90001,404);this.state==="detaching"?this.notifyState("detached",I):this.state==="attaching"?this.notifyState("suspended",I):this.requestState("attaching",I);break}case x.SYNC:if(v=!0,w=this.syncChannelSerial=s.channelSerial,!s.presence)break;case x.PRESENCE:{for(var A=s.presence,D=s.id,B=s.connectionId,z=s.timestamp,$=this.channelOptions,V=void 0,F=0;F<A.length;F++)try{V=A[F],C.default.decode(V,$),V.connectionId||(V.connectionId=B),V.timestamp||(V.timestamp=z),V.id||(V.id=D+":"+F)}catch(Q){S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel.onMessage()",Q.toString())}this.presence.setPresence(A,v,w);break}case x.MESSAGE:{if(this.state!=="attached"){S.default.logAction(S.default.LOG_MAJOR,"RealtimeChannel.onMessage()",'Message "'+s.id+'" skipped as this channel "'+this.name+'" state is not "attached" (state is "'+this.state+'").');return}var O=s.messages,L=O[0],U=O[O.length-1],D=s.id,B=s.connectionId,z=s.timestamp;if(L.extras&&L.extras.delta&&L.extras.delta.from!==this._lastPayload.messageId){var _='Delta message decode failure - previous message not available for message "'+s.id+'" on this channel "'+this.name+'".';S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel.onMessage()",_),this._startDecodeFailureRecovery(new u.default(_,40018,400));break}for(var F=0;F<O.length;F++){var _=O[F];try{y.default.decode(_,this._decodingContext)}catch(q){switch(S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel.onMessage()",q.toString()),q.code){case 40018:this._startDecodeFailureRecovery(q);return;case 40019:case 40021:this.notifyState("failed",q);return}}_.connectionId||(_.connectionId=B),_.timestamp||(_.timestamp=z),_.id||(_.id=D+":"+F)}this._lastPayload.messageId=U.id,this._lastPayload.protocolMessageChannelSerial=s.channelSerial,this.onEvent(O);break}case x.ERROR:{var W=s.error;W&&W.code==80016?this.checkPendingState():this.notifyState("failed",u.default.fromValues(W));break}default:S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel.onMessage()","Fatal protocol error: unrecognised action ("+s.action+")"),this.connectionManager.abort(M.default.unknownChannelErr())}},c.prototype._startDecodeFailureRecovery=function(s){var w=this;this._lastPayload.decodeFailureRecoveryInProgress||(S.default.logAction(S.default.LOG_MAJOR,"RealtimeChannel.onMessage()","Starting decode failure recovery process."),this._lastPayload.decodeFailureRecoveryInProgress=!0,this._attach(!0,s,function(){w._lastPayload.decodeFailureRecoveryInProgress=!1}))},c.prototype.onAttached=function(){S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel.onAttached","activating channel; name = "+this.name)},c.prototype.notifyState=function(s,w,v,k,j){if(S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.notifyState","name = "+this.name+", current state = "+this.state+", notifying state "+s),this.clearStateTimer(),d.arrIn(["detached","suspended","failed"],s)&&(this.properties.channelSerial=null),s!==this.state){this.presence.actOnChannelState(s,k,w),s==="suspended"&&this.connectionManager.state.sendEvents?this.startRetryTimer():this.cancelRetryTimer(),w&&(this.errorReason=w);var N=new E.default(this.state,s,v,j,w),P=s==="failed"?S.default.LOG_ERROR:S.default.LOG_MAJOR;S.default.logAction(P,'Channel state for channel "'+this.name+'"',s+(w?"; reason: "+w:"")),s!=="attaching"&&s!=="suspended"&&(this.retryCount=0),s==="attached"&&this.onAttached(),s==="attached"?this._attachResume=!0:(s==="detaching"||s==="failed")&&(this._attachResume=!1),this.state=s,this._allChannelChanges.emit(s,N),this.emit(s,N)}},c.prototype.requestState=function(s,w){S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel.requestState","name = "+this.name+", state = "+s),this.notifyState(s,w),this.checkPendingState()},c.prototype.checkPendingState=function(){var s=this.connectionManager.state;if(!(s.sendEvents||s.forceQueueEvents)){S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel.checkPendingState","sendEvents is false; state is "+this.connectionManager.state.state);return}switch(S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel.checkPendingState","name = "+this.name+", state = "+this.state),this.state){case"attaching":this.startStateTimerIfNotRunning(),this.attachImpl();break;case"detaching":this.startStateTimerIfNotRunning(),this.detachImpl();break;case"attached":this.sync();break}},c.prototype.timeoutPendingState=function(){switch(this.state){case"attaching":{var s=new u.default("Channel attach timed out",90007,408);this.notifyState("suspended",s);break}case"detaching":{var s=new u.default("Channel detach timed out",90007,408);this.notifyState("attached",s);break}default:this.checkPendingState();break}},c.prototype.startStateTimerIfNotRunning=function(){var s=this;this.stateTimer||(this.stateTimer=setTimeout(function(){S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel.startStateTimerIfNotRunning","timer expired"),s.stateTimer=null,s.timeoutPendingState()},this.realtime.options.timeouts.realtimeRequestTimeout))},c.prototype.clearStateTimer=function(){var s=this.stateTimer;s&&(clearTimeout(s),this.stateTimer=null)},c.prototype.startRetryTimer=function(){var s=this;if(!this.retryTimer){this.retryCount++;var w=d.getRetryTime(this.realtime.options.timeouts.channelRetryTimeout,this.retryCount);this.retryTimer=setTimeout(function(){s.state==="suspended"&&s.connectionManager.state.sendEvents&&(s.retryTimer=null,S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel retry timer expired","attempting a new attach"),s.requestState("attaching"))},w)}},c.prototype.cancelRetryTimer=function(){this.retryTimer&&(clearTimeout(this.retryTimer),this.retryTimer=null)},c.prototype.getReleaseErr=function(){var s=this.state;return s==="initialized"||s==="detached"||s==="failed"?null:new u.default("Can only release a channel in a state where there is no possibility of further updates from the server being received (initialized, detached, or failed); was "+s,90001,400)},c.prototype.setChannelSerial=function(s){S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.setChannelSerial()","Updating channel serial; serial = "+s+"; previous = "+this.properties.channelSerial),s&&(this.properties.channelSerial=s)},c}(g.default);function h(f){var c=f||{};c.agent;var s=i.__rest(c,["agent"]);return s}r.default=b},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function a(l,d,g,S,R){this.previous=l,this.current=d,d==="attached"&&(this.resumed=g,this.hasBacklog=S),R&&(this.reason=R)}return a}();r.default=i},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){var a=i,l=a.lib,d=l.WordArray,g=l.Hasher,S=a.algo,R=[],y=S.SHA1=g.extend({_doReset:function(){this._hash=new d.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(E,u){for(var C=this._hash.words,M=C[0],x=C[1],p=C[2],m=C[3],b=C[4],h=0;h<80;h++){if(h<16)R[h]=E[u+h]|0;else{var f=R[h-3]^R[h-8]^R[h-14]^R[h-16];R[h]=f<<1|f>>>31}var c=(M<<5|M>>>27)+b+R[h];h<20?c+=(x&p|~x&m)+1518500249:h<40?c+=(x^p^m)+1859775393:h<60?c+=(x&p|x&m|p&m)-1894007588:c+=(x^p^m)-899497514,b=m,m=p,p=x<<30|x>>>2,x=M,M=c}C[0]=C[0]+M|0,C[1]=C[1]+x|0,C[2]=C[2]+p|0,C[3]=C[3]+m|0,C[4]=C[4]+b|0},_doFinalize:function(){var E=this._data,u=E.words,C=this._nDataBytes*8,M=E.sigBytes*8;return u[M>>>5]|=128<<24-M%32,u[(M+64>>>9<<4)+14]=Math.floor(C/4294967296),u[(M+64>>>9<<4)+15]=C,E.sigBytes=u.length*4,this._process(),this._hash},clone:function(){var E=g.clone.call(this);return E._hash=this._hash.clone(),E}});a.SHA1=g._createHelper(y),a.HmacSHA1=g._createHmacHelper(y)}(),i.SHA1})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});function i(h){if(h===void 0)return"undefined";var f,c;if(h instanceof ArrayBuffer?(c="ArrayBuffer",f=new DataView(h)):h instanceof DataView&&(c="DataView",f=h),!f)return JSON.stringify(h);for(var s=[],w=0;w<h.byteLength;w++){if(w>20){s.push("...");break}var v=f.getUint8(w).toString(16);v.length===1&&(v="0"+v),s.push(v)}return"<"+c+" "+s.join(" ")+">"}function a(h,f,c){for(var s=0,w=c.length;s<w;s++){var v=c.charCodeAt(s);if(v<128){h.setUint8(f++,v>>>0&127|0);continue}if(v<2048){h.setUint8(f++,v>>>6&31|192),h.setUint8(f++,v>>>0&63|128);continue}if(v<65536){h.setUint8(f++,v>>>12&15|224),h.setUint8(f++,v>>>6&63|128),h.setUint8(f++,v>>>0&63|128);continue}if(v<1114112){h.setUint8(f++,v>>>18&7|240),h.setUint8(f++,v>>>12&63|128),h.setUint8(f++,v>>>6&63|128),h.setUint8(f++,v>>>0&63|128);continue}throw new Error("bad codepoint "+v)}}function l(h,f,c){for(var s="",w=f,v=f+c;w<v;w++){var k=h.getUint8(w);if(!(k&128)){s+=String.fromCharCode(k);continue}if((k&224)===192){s+=String.fromCharCode((k&15)<<6|h.getUint8(++w)&63);continue}if((k&240)===224){s+=String.fromCharCode((k&15)<<12|(h.getUint8(++w)&63)<<6|(h.getUint8(++w)&63)<<0);continue}if((k&248)===240){s+=String.fromCharCode((k&7)<<18|(h.getUint8(++w)&63)<<12|(h.getUint8(++w)&63)<<6|(h.getUint8(++w)&63)<<0);continue}throw new Error("Invalid byte "+k.toString(16))}return s}function d(h){for(var f=0,c=0,s=h.length;c<s;c++){var w=h.charCodeAt(c);if(w<128){f+=1;continue}if(w<2048){f+=2;continue}if(w<65536){f+=3;continue}if(w<1114112){f+=4;continue}throw new Error("bad codepoint "+w)}return f}function g(h,f){var c=b(h,f);if(c!==0){var s=new ArrayBuffer(c),w=new DataView(s);return m(h,w,0,f),s}}var S=65536*65536,R=1/S;function y(h,f){return f=f||0,h.getInt32(f)*S+h.getUint32(f+4)}function E(h,f){return f=f||0,h.getUint32(f)*S+h.getUint32(f+4)}function u(h,f,c){c<9223372036854776e3?(h.setInt32(f,Math.floor(c*R)),h.setInt32(f+4,c&-1)):(h.setUint32(f,2147483647),h.setUint32(f+4,2147483647))}function C(h,f,c){c<18446744073709552e3?(h.setUint32(f,Math.floor(c*R)),h.setInt32(f+4,c&-1)):(h.setUint32(f,4294967295),h.setUint32(f+4,4294967295))}var M=function(){function h(f,c){var s=this;this.map=function(w){for(var v={},k=0;k<w;k++){var j=s.parse();v[j]=s.parse()}return v},this.bin=function(w){var v=new ArrayBuffer(w);return new Uint8Array(v).set(new Uint8Array(s.view.buffer,s.offset,w),0),s.offset+=w,v},this.buf=this.bin,this.str=function(w){var v=l(s.view,s.offset,w);return s.offset+=w,v},this.array=function(w){for(var v=new Array(w),k=0;k<w;k++)v[k]=s.parse();return v},this.ext=function(w){return s.offset+=w,{type:s.view.getInt8(s.offset),data:s.buf(w)}},this.parse=function(){var w=s.view.getUint8(s.offset),v,k;if(!(w&128))return s.offset++,w;if((w&240)===128)return k=w&15,s.offset++,s.map(k);if((w&240)===144)return k=w&15,s.offset++,s.array(k);if((w&224)===160)return k=w&31,s.offset++,s.str(k);if((w&224)===224)return v=s.view.getInt8(s.offset),s.offset++,v;switch(w){case 192:return s.offset++,null;case 193:s.offset++;return;case 194:return s.offset++,!1;case 195:return s.offset++,!0;case 196:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.bin(k);case 197:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.bin(k);case 198:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.bin(k);case 199:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.ext(k);case 200:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.ext(k);case 201:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.ext(k);case 202:return v=s.view.getFloat32(s.offset+1),s.offset+=5,v;case 203:return v=s.view.getFloat64(s.offset+1),s.offset+=9,v;case 204:return v=s.view.getUint8(s.offset+1),s.offset+=2,v;case 205:return v=s.view.getUint16(s.offset+1),s.offset+=3,v;case 206:return v=s.view.getUint32(s.offset+1),s.offset+=5,v;case 207:return v=E(s.view,s.offset+1),s.offset+=9,v;case 208:return v=s.view.getInt8(s.offset+1),s.offset+=2,v;case 209:return v=s.view.getInt16(s.offset+1),s.offset+=3,v;case 210:return v=s.view.getInt32(s.offset+1),s.offset+=5,v;case 211:return v=y(s.view,s.offset+1),s.offset+=9,v;case 212:return k=1,s.offset++,s.ext(k);case 213:return k=2,s.offset++,s.ext(k);case 214:return k=4,s.offset++,s.ext(k);case 215:return k=8,s.offset++,s.ext(k);case 216:return k=16,s.offset++,s.ext(k);case 217:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.str(k);case 218:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.str(k);case 219:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.str(k);case 220:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.array(k);case 221:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.array(k);case 222:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.map(k);case 223:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.map(k)}throw new Error("Unknown type 0x"+w.toString(16))},this.offset=c||0,this.view=f}return h}();function x(h){var f=new DataView(h),c=new M(f),s=c.parse();if(c.offset!==h.byteLength)throw new Error(h.byteLength-c.offset+" trailing bytes");return s}function p(h,f){return Object.keys(h).filter(function(c){var s=h[c],w=typeof s;return(!f||s!=null)&&(w!=="function"||!!s.toJSON)})}function m(h,f,c,s){var w=typeof h;if(typeof h=="string"){var v=d(h);if(v<32)return f.setUint8(c,v|160),a(f,c+1,h),1+v;if(v<256)return f.setUint8(c,217),f.setUint8(c+1,v),a(f,c+2,h),2+v;if(v<65536)return f.setUint8(c,218),f.setUint16(c+1,v),a(f,c+3,h),3+v;if(v<4294967296)return f.setUint8(c,219),f.setUint32(c+1,v),a(f,c+5,h),5+v}if(ArrayBuffer.isView&&ArrayBuffer.isView(h)&&(h=h.buffer),h instanceof ArrayBuffer){var k=h.byteLength;if(k<256)return f.setUint8(c,196),f.setUint8(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+2),2+k;if(k<65536)return f.setUint8(c,197),f.setUint16(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+3),3+k;if(k<4294967296)return f.setUint8(c,198),f.setUint32(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+5),5+k}if(typeof h=="number"){if(Math.floor(h)!==h)return f.setUint8(c,203),f.setFloat64(c+1,h),9;if(h>=0){if(h<128)return f.setUint8(c,h),1;if(h<256)return f.setUint8(c,204),f.setUint8(c+1,h),2;if(h<65536)return f.setUint8(c,205),f.setUint16(c+1,h),3;if(h<4294967296)return f.setUint8(c,206),f.setUint32(c+1,h),5;if(h<18446744073709552e3)return f.setUint8(c,207),C(f,c+1,h),9;throw new Error("Number too big 0x"+h.toString(16))}if(h>=-32)return f.setInt8(c,h),1;if(h>=-128)return f.setUint8(c,208),f.setInt8(c+1,h),2;if(h>=-32768)return f.setUint8(c,209),f.setInt16(c+1,h),3;if(h>=-2147483648)return f.setUint8(c,210),f.setInt32(c+1,h),5;if(h>=-9223372036854776e3)return f.setUint8(c,211),u(f,c+1,h),9;throw new Error("Number too small -0x"+(-h).toString(16).substr(1))}if(w==="undefined")return s?0:(f.setUint8(c,212),f.setUint8(c+1,0),f.setUint8(c+2,0),3);if(h===null)return s?0:(f.setUint8(c,192),1);if(w==="boolean")return f.setUint8(c,h?195:194),1;if(typeof h.toJSON=="function")return m(h.toJSON(),f,c,s);if(w==="object"){var j,N=0,P=void 0,T=Array.isArray(h);if(T?j=h.length:(P=p(h,s),j=P.length),j<16?(f.setUint8(c,j|(T?144:128)),N=1):j<65536?(f.setUint8(c,T?220:222),f.setUint16(c+1,j),N=3):j<4294967296&&(f.setUint8(c,T?221:223),f.setUint32(c+1,j),N=5),T)for(var I=0;I<j;I++)N+=m(h[I],f,c+N,s);else if(P)for(var I=0;I<j;I++){var A=P[I];N+=m(A,f,c+N),N+=m(h[A],f,c+N,s)}return N}if(w==="function")return 0;throw new Error("Unknown type "+w)}function b(h,f){var c=typeof h;if(c==="string"){var s=d(h);if(s<32)return 1+s;if(s<256)return 2+s;if(s<65536)return 3+s;if(s<4294967296)return 5+s}if(ArrayBuffer.isView&&ArrayBuffer.isView(h)&&(h=h.buffer),h instanceof ArrayBuffer){var w=h.byteLength;if(w<256)return 2+w;if(w<65536)return 3+w;if(w<4294967296)return 5+w}if(typeof h=="number"){if(Math.floor(h)!==h)return 9;if(h>=0){if(h<128)return 1;if(h<256)return 2;if(h<65536)return 3;if(h<4294967296)return 5;if(h<18446744073709552e3)return 9;throw new Error("Number too big 0x"+h.toString(16))}if(h>=-32)return 1;if(h>=-128)return 2;if(h>=-32768)return 3;if(h>=-2147483648)return 5;if(h>=-9223372036854776e3)return 9;throw new Error("Number too small -0x"+h.toString(16).substr(1))}if(c==="boolean")return 1;if(h===null)return f?0:1;if(h===void 0)return f?0:3;if(typeof h.toJSON=="function")return b(h.toJSON(),f);if(c==="object"){var v,k=0;if(Array.isArray(h)){v=h.length;for(var j=0;j<v;j++)k+=b(h[j],f)}else{var N=p(h,f);v=N.length;for(var j=0;j<v;j++){var P=N[j];k+=b(P)+b(h[P],f)}}if(v<16)return 1+k;if(v<65536)return 3+k;if(v<4294967296)return 5+k;throw new Error("Array or object too long 0x"+v.toString(16))}if(c==="function")return 0;throw new Error("Unknown type "+c)}r.default={encode:g,decode:x,inspect:i,utf8Write:a,utf8Read:l,utf8ByteCount:d}},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(30)),l=i.__importDefault(o(50)),d=i.__importDefault(o(3)),g=i.__importDefault(o(4)),S=i.__importDefault(o(55)),R=i.__importDefault(o(57)),y=i.__importDefault(o(62)),E=i.__importDefault(o(64)),u=i.__importDefault(o(68)),C=i.__importDefault(o(2)),M=o(8),x=i.__importDefault(o(65)),p=i.__importDefault(o(66)),m=i.__importDefault(o(41)),b=(0,R.default)(E.default,S.default);d.default.Crypto=b,d.default.BufferUtils=S.default,d.default.Http=y.default,d.default.Config=E.default,d.default.Transports=u.default,d.default.WebStorage=x.default,a.default.Crypto=b,l.default.Crypto=b,C.default.initLogHandlers(),d.default.Defaults=(0,M.getDefaults)(p.default),d.default.Config.agent&&(d.default.Defaults.agent+=" "+d.default.Config.agent),d.default.Config.noUpgrade&&(d.default.Defaults.upgradeTransports=[]),r.default={ErrorInfo:g.default,Rest:a.default,Realtime:l.default,msgpack:m.default}},function(n){n.exports=JSON.parse('{"name":"ably","description":"Realtime client library for Ably, the realtime messaging service","version":"1.2.50","license":"Apache-2.0","bugs":{"url":"https://github.com/ably/ably-js/issues","email":"support@ably.com"},"main":"./build/ably-node.js","typings":"./ably.d.ts","react-native":{"./build/ably-node.js":"./build/ably-reactnative.js"},"browser":{"./build/ably-node.js":"./build/ably-commonjs.js"},"files":["build/**","ably.d.ts","callbacks.d.ts","callbacks.js","promises.d.ts","promises.js","resources/**","src/**","react/**"],"dependencies":{"@ably/msgpack-js":"^0.4.0","got":"^11.8.5","ws":"^8.14.2"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"devDependencies":{"@ably/vcdiff-decoder":"1.0.4","@arethetypeswrong/cli":"^0.13.1","@babel/preset-env":"^7.23.6","@testing-library/react":"^13.3.0","@types/crypto-js":"^4.0.1","@types/jmespath":"^0.15.2","@types/node":"^15.0.0","@types/request":"^2.48.7","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.14.0","@typescript-eslint/parser":"^5.14.0","@vitejs/plugin-react":"^1.3.2","async":"ably-forks/async#requirejs","aws-sdk":"^2.1413.0","babel-loader":"^8.3.0","chai":"^4.2.0","copy-webpack-plugin":"^6.4.1","cors":"^2.8.5","crypto-js":"ably-forks/crypto-js#crypto-lite","eslint":"^7.13.0","eslint-plugin-import":"^2.28.0","eslint-plugin-jsdoc":"^40.0.0","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-security":"^1.4.0","express":"^4.17.1","glob":"~4.4","google-closure-compiler":"^20180610.0.1","grunt":"^1.6.1","grunt-bump":"^0.3.1","grunt-cli":"~1.2.0","grunt-closure-tools":"^1.0.0","grunt-contrib-concat":"~0.5","grunt-shell":"~1.1","grunt-webpack":"^4.0.2","hexy":"~0.2","jmespath":"^0.16.0","jsdom":"^20.0.0","kexec":"ably-forks/node-kexec#update-for-node-12","minimist":"^1.2.5","mocha":"^8.1.3","mocha-junit-reporter":"^2.2.1","null-loader":"^4.0.1","playwright":"^1.39.0","prettier":"^2.5.1","react":">=18.1.0","react-dom":">=18.1.0","requirejs":"~2.1","shelljs":"~0.8","source-map-explorer":"^2.5.2","ts-loader":"^8.2.0","tsconfig-paths-webpack-plugin":"^4.0.1","tslib":"^2.3.1","typedoc":"^0.23.8","typescript":"^4.6.4","vite":"^4.4.9","vitest":"^0.18.0","webpack":"^4.44.2","webpack-cli":"^4.2.0","webpack-node-externals":"^3.0.0"},"engines":{"node":">=5.10.x"},"repository":"ably/ably-js","jspm":{"registry":"npm","directories":{"lib":"build"},"main":"ably"},"scripts":{"start:react":"npx vite serve","grunt":"grunt","test":"grunt test","test:node":"grunt test:node","test:node:skip-build":"grunt mocha","test:webserver":"grunt test:webserver","test:playwright":"node test/support/runPlaywrightTests.js","test:react":"vitest run","concat":"grunt concat","build":"grunt build:all && npm run build:react","build:node":"grunt build:node","build:browser":"grunt build:browser","build:react":"npm run build:react:mjs && npm run build:react:cjs && cp src/platform/react-hooks/res/package.react.json react/package.json","build:react:mjs":"tsc --project src/platform/react-hooks/tsconfig.mjs.json && cp src/platform/react-hooks/res/package.mjs.json react/mjs/package.json","build:react:cjs":"tsc --project src/platform/react-hooks/tsconfig.cjs.json && cp src/platform/react-hooks/res/package.cjs.json react/cjs/package.json","requirejs":"grunt requirejs","lint":"eslint .","lint:fix":"eslint --fix .","check-closure-compiler":"grunt check-closure-compiler","prepare":"npm run build","format":"prettier --write --ignore-path .gitignore --ignore-path .prettierignore src test ably.d.ts webpack.config.js Gruntfile.js scripts/cdn_deploy.js docs/chrome-mv3.md","format:check":"prettier --check --ignore-path .gitignore --ignore-path .prettierignore src test ably.d.ts webpack.config.js Gruntfile.js scripts/cdn_deploy.js","sourcemap":"source-map-explorer build/ably.min.js","sourcemap:noencryption":"source-map-explorer build/ably.noencryption.min.js","docs":"typedoc --entryPoints ably.d.ts --out docs/generated/default --readme docs/landing-pages/default.md && typedoc --entryPoints promises.d.ts --out docs/generated/promises --name \\"ably (Promise-based)\\" --readme docs/landing-pages/promises.md && cp docs/landing-pages/choose-library.html docs/generated/index.html"}}')},function(n,r){},function(n,r,o){(function(i,a){n.exports=a(o(6),o(32),o(25))})(this,function(i){return i.HmacSHA256})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(47)),d=i.__importDefault(o(15)),g=i.__importDefault(o(20)),S=i.__importDefault(o(4)),R=i.__importDefault(o(48)),y=function(){},E=function(){function x(p){this.rest=p,this.admin=new u(p)}return x}(),u=function(){function x(p){this.rest=p,this.deviceRegistrations=new C(p),this.channelSubscriptions=new M(p)}return x.prototype.publish=function(p,m,b){var h=this.rest,f=h.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(h.options,f),s={},w=a.mixin({recipient:p},m);if(typeof b!="function"){if(this.rest.options.promises)return a.promisify(this,"publish",arguments);b=y}h.options.headers&&a.mixin(c,h.options.headers),h.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var v=a.encodeBody(w,f);d.default.post(h,"/push/publish",v,c,s,null,function(k){return b(k)})},x}(),C=function(){function x(p){this.rest=p}return x.prototype.save=function(p,m){var b=this.rest,h=l.default.fromValues(p),f=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(b.options,f),s={};if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"save",arguments);m=y}b.options.headers&&a.mixin(c,b.options.headers),b.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var w=a.encodeBody(h,f);d.default.put(b,"/push/deviceRegistrations/"+encodeURIComponent(p.id),w,c,s,null,function(v,k,j,N){m(v,v?void 0:l.default.fromResponseBody(k,N?void 0:f))})},x.prototype.get=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(b.options,h),c=p.id||p;if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"get",arguments);m=y}if(typeof c!="string"||!c.length){m(new S.default("First argument to DeviceRegistrations#get must be a deviceId string or DeviceDetails",4e4,400));return}b.options.headers&&a.mixin(f,b.options.headers),d.default.get(b,"/push/deviceRegistrations/"+encodeURIComponent(c),f,{},null,function(s,w,v,k){m(s,s?void 0:l.default.fromResponseBody(w,k?void 0:h))})},x.prototype.list=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(b.options,h);if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"list",arguments);m=y}b.options.headers&&a.mixin(c,b.options.headers),new g.default(b,"/push/deviceRegistrations",c,f,function(s,w,v){return l.default.fromResponseBody(s,v?void 0:h)}).get(p,m)},x.prototype.remove=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(b.options,h),c={},s=p.id||p;if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"remove",arguments);m=y}if(typeof s!="string"||!s.length){m(new S.default("First argument to DeviceRegistrations#remove must be a deviceId string or DeviceDetails",4e4,400));return}b.options.headers&&a.mixin(f,b.options.headers),b.options.pushFullWait&&a.mixin(c,{fullWait:"true"}),d.default.delete(b,"/push/deviceRegistrations/"+encodeURIComponent(s),f,c,null,function(w){return m(w)})},x.prototype.removeWhere=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(b.options,h);if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"removeWhere",arguments);m=y}b.options.headers&&a.mixin(f,b.options.headers),b.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),d.default.delete(b,"/push/deviceRegistrations",f,p,null,function(c){return m(c)})},x}(),M=function(){function x(p){this.remove=x.prototype.removeWhere,this.rest=p}return x.prototype.save=function(p,m){var b=this.rest,h=R.default.fromValues(p),f=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(b.options,f),s={};if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"save",arguments);m=y}b.options.headers&&a.mixin(c,b.options.headers),b.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var w=a.encodeBody(h,f);d.default.post(b,"/push/channelSubscriptions",w,c,s,null,function(v,k,j,N){m(v,!v&&R.default.fromResponseBody(k,N?void 0:f))})},x.prototype.list=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(b.options,h);if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"list",arguments);m=y}b.options.headers&&a.mixin(c,b.options.headers),new g.default(b,"/push/channelSubscriptions",c,f,function(s,w,v){return R.default.fromResponseBody(s,v?void 0:h)}).get(p,m)},x.prototype.removeWhere=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(b.options,h);if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"removeWhere",arguments);m=y}b.options.headers&&a.mixin(f,b.options.headers),b.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),d.default.delete(b,"/push/channelSubscriptions",f,p,null,function(c){return m(c)})},x.prototype.listChannels=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(b.options,h);if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"listChannels",arguments);m=y}b.options.headers&&a.mixin(c,b.options.headers),b.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),new g.default(b,"/push/channels",c,f,function(s,w,v){for(var k=!v&&h?a.decodeBody(s,h):s,j=0;j<k.length;j++)k[j]=String(k[j]);return k}).get(p,m)},x}();r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(4)),d;(function(R){R.Phone="phone",R.Tablet="tablet",R.Desktop="desktop",R.TV="tv",R.Watch="watch",R.Car="car",R.Embedded="embedded",R.Other="other"})(d||(d={}));var g;(function(R){R.Android="android",R.IOS="ios",R.Browser="browser"})(g||(g={}));var S=function(){function R(){}return R.prototype.toJSON=function(){var y,E,u;return{id:this.id,deviceSecret:this.deviceSecret,platform:this.platform,formFactor:this.formFactor,clientId:this.clientId,metadata:this.metadata,deviceIdentityToken:this.deviceIdentityToken,push:{recipient:(y=this.push)===null||y===void 0?void 0:y.recipient,state:(E=this.push)===null||E===void 0?void 0:E.state,error:(u=this.push)===null||u===void 0?void 0:u.error}}},R.prototype.toString=function(){var y,E,u,C,M="[DeviceDetails";return this.id&&(M+="; id="+this.id),this.platform&&(M+="; platform="+this.platform),this.formFactor&&(M+="; formFactor="+this.formFactor),this.clientId&&(M+="; clientId="+this.clientId),this.metadata&&(M+="; metadata="+this.metadata),this.deviceIdentityToken&&(M+="; deviceIdentityToken="+JSON.stringify(this.deviceIdentityToken)),!((y=this.push)===null||y===void 0)&&y.recipient&&(M+="; push.recipient="+JSON.stringify(this.push.recipient)),!((E=this.push)===null||E===void 0)&&E.state&&(M+="; push.state="+this.push.state),!((u=this.push)===null||u===void 0)&&u.error&&(M+="; push.error="+JSON.stringify(this.push.error)),!((C=this.push)===null||C===void 0)&&C.metadata&&(M+="; push.metadata="+this.push.metadata),M+="]",M},R.fromResponseBody=function(y,E){return E&&(y=a.decodeBody(y,E)),a.isArray(y)?R.fromValuesArray(y):R.fromValues(y)},R.fromValues=function(y){return y.error=y.error&&l.default.fromValues(y.error),Object.assign(new R,y)},R.fromValuesArray=function(y){for(var E=y.length,u=new Array(E),C=0;C<E;C++)u[C]=R.fromValues(y[C]);return u},R.toRequestBody=a.encodeBody,R}();r.default=S},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=function(){function d(){}return d.prototype.toJSON=function(){return{channel:this.channel,deviceId:this.deviceId,clientId:this.clientId}},d.prototype.toString=function(){var g="[PushChannelSubscription";return this.channel&&(g+="; channel="+this.channel),this.deviceId&&(g+="; deviceId="+this.deviceId),this.clientId&&(g+="; clientId="+this.clientId),g+="]",g},d.fromResponseBody=function(g,S){return S&&(g=a.decodeBody(g,S)),a.isArray(g)?d.fromValuesArray(g):d.fromValues(g)},d.fromValues=function(g){return Object.assign(new d,g)},d.fromValuesArray=function(g){for(var S=g.length,R=new Array(S),y=0;y<S;y++)R[y]=d.fromValues(g[y]);return R},d.toRequestBody=a.encodeBody,d}();r.default=l},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=function(){function b(h){this.count=h&&h.count||0,this.data=h&&h.data||0,this.uncompressedData=h&&h.uncompressedData||0,this.failed=h&&h.failed||0,this.refused=h&&h.refused||0}return b}(),d=function(b){i.__extends(h,b);function h(f){var c=b.call(this,f)||this;return f&&f.category&&(c.category={},a.forInOwnNonNullProperties(f.category,function(s){c.category[s]=new l(f.category[s])})),c}return h}(l),g=function(){function b(h){this.peak=h&&h.peak||0,this.min=h&&h.min||0,this.mean=h&&h.mean||0,this.opened=h&&h.opened||0,this.refused=h&&h.refused||0}return b}(),S=function(){function b(h){this.succeeded=h&&h.succeeded||0,this.failed=h&&h.failed||0,this.refused=h&&h.refused||0}return b}(),R=function(){function b(h){this.plain=new g(h&&h.plain),this.tls=new g(h&&h.tls),this.all=new g(h&&h.all)}return b}(),y=function(){function b(h){this.messages=new d(h&&h.messages),this.presence=new d(h&&h.presence),this.all=new d(h&&h.all)}return b}(),E=function(){function b(h){this.realtime=new y(h&&h.realtime),this.rest=new y(h&&h.rest),this.webhook=new y(h&&h.webhook),this.sharedQueue=new y(h&&h.sharedQueue),this.externalQueue=new y(h&&h.externalQueue),this.httpEvent=new y(h&&h.httpEvent),this.push=new y(h&&h.push),this.all=new y(h&&h.all)}return b}(),u=function(){function b(h){this.all=new y(h&&h.all),this.inbound=new E(h&&h.inbound),this.outbound=new E(h&&h.outbound)}return b}(),C=function(){function b(h){this.all=new y(h&&h.all),this.producerPaid=new u(h&&h.producerPaid),this.consumerPaid=new u(h&&h.consumerPaid)}return b}(),M=function(){function b(h){this.messages=h&&h.messages||0;var f=h&&h.notifications;this.notifications={invalid:f&&f.invalid||0,attempted:f&&f.attempted||0,successful:f&&f.successful||0,failed:f&&f.failed||0},this.directPublishes=h&&h.directPublishes||0}return b}(),x=function(){function b(h){this.succeeded=h&&h.succeeded||0,this.skipped=h&&h.skipped||0,this.failed=h&&h.failed||0}return b}(),p=function(){function b(h){var f=this;this.delta=void 0,h&&h.delta&&(this.delta={},a.forInOwnNonNullProperties(h.delta,function(c){f.delta[c]=new x(h.delta[c])}))}return b}(),m=function(b){i.__extends(h,b);function h(f){var c=b.call(this,f)||this;return c.persisted=new y(f&&f.persisted),c.connections=new R(f&&f.connections),c.channels=new g(f&&f.channels),c.apiRequests=new S(f&&f.apiRequests),c.tokenRequests=new S(f&&f.tokenRequests),c.xchgProducer=new C(f&&f.xchgProducer),c.xchgConsumer=new C(f&&f.xchgConsumer),c.push=new M(f&&f.pushStats),c.processed=new p(f&&f.processed),c.inProgress=f&&f.inProgress||void 0,c.unit=f&&f.unit||void 0,c.intervalId=f&&f.intervalId||void 0,c}return h.fromValues=function(f){return new h(f)},h}(u);r.default=m},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(30)),d=i.__importDefault(o(7)),g=i.__importDefault(o(2)),S=i.__importDefault(o(51)),R=i.__importDefault(o(38)),y=i.__importDefault(o(8)),E=i.__importDefault(o(4)),u=i.__importDefault(o(10)),C=i.__importDefault(o(35)),M=i.__importDefault(o(3)),x=i.__importDefault(o(9)),p=function(b){i.__extends(h,b);function h(f){var c=b.call(this,f)||this;return g.default.logAction(g.default.LOG_MINOR,"Realtime()",""),c.connection=new S.default(c,c.options),c.channels=new m(c),f.autoConnect!==!1&&c.connect(),c}return h.prototype.connect=function(){g.default.logAction(g.default.LOG_MINOR,"Realtime.connect()",""),this.connection.connect()},h.prototype.close=function(){g.default.logAction(g.default.LOG_MINOR,"Realtime.close()",""),this.connection.close()},h.Promise=function(f){return f=y.default.objectifyOptions(f),f.promises=!0,new h(f)},h.Callbacks=h,h.Utils=a,h.ConnectionManager=C.default,h.Platform=M.default,h.ProtocolMessage=u.default,h.Message=x.default,h}(l.default),m=function(b){i.__extends(h,b);function h(f){var c=b.call(this)||this;return c.realtime=f,c.all=Object.create(null),f.connection.connectionManager.on("transport.active",function(){c.onTransportActive()}),c}return h.prototype.channelSerials=function(){for(var f={},c=0,s=a.keysArray(this.all,!0);c<s.length;c++){var w=s[c],v=this.all[w];v.properties.channelSerial&&(f[w]=v.properties.channelSerial)}return f},h.prototype.recoverChannels=function(f){for(var c=0,s=a.keysArray(f,!0);c<s.length;c++){var w=s[c],v=this.get(w);v.properties.channelSerial=f[w]}},h.prototype.onChannelMessage=function(f){var c=f.channel;if(c===void 0){g.default.logAction(g.default.LOG_ERROR,"Channels.onChannelMessage()","received event unspecified channel, action = "+f.action);return}var s=this.all[c];if(!s){g.default.logAction(g.default.LOG_ERROR,"Channels.onChannelMessage()","received event for non-existent channel: "+c);return}s.onMessage(f)},h.prototype.onTransportActive=function(){for(var f in this.all){var c=this.all[f];c.state==="attaching"||c.state==="detaching"?c.checkPendingState():c.state==="suspended"?c._attach(!1,null):c.state==="attached"&&c.requestState("attaching")}},h.prototype.propogateConnectionInterruption=function(f,c){var s={closing:"detached",closed:"detached",failed:"failed",suspended:"suspended"},w=["attaching","attached","detaching","suspended"],v=s[f];for(var k in this.all){var j=this.all[k];a.arrIn(w,j.state)&&j.notifyState(v,c)}},h.prototype.get=function(f,c){f=String(f);var s=this.all[f];if(!s)s=this.all[f]=new R.default(this.realtime,f,c);else if(c){if(s._shouldReattachToSetOptions(c,s.channelOptions))throw new E.default("Channels.get() cannot be used to set channel options that would cause the channel to reattach. Please, use RealtimeChannel.setOptions() instead.",4e4,400);s.setOptions(c)}return s},h.prototype.getDerived=function(f,c,s){if(c.filter){var w=a.toBase64(c.filter),v=a.matchDerivedChannel(f);f="[filter=".concat(w).concat(v.qualifierParam,"]").concat(v.channelName)}return this.get(f,s)},h.prototype.release=function(f){f=String(f);var c=this.all[f];if(c){var s=c.getReleaseErr();if(s)throw s;delete this.all[f]}},h}(d.default);r.default=p},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(35)),g=i.__importDefault(o(2)),S=i.__importDefault(o(37)),R=i.__importDefault(o(3));function y(){}var E=function(u){i.__extends(C,u);function C(M,x){var p=u.call(this)||this;return p.whenState=function(m,b){return l.default.prototype.whenState.call(p,m,p.state,b,new S.default(void 0,m))},p.ably=M,p.connectionManager=new d.default(M,x),p.state=p.connectionManager.state.state,p.key=void 0,p.id=void 0,p.errorReason=null,p.connectionManager.on("connectionstate",function(m){var b=p.state=m.current;R.default.Config.nextTick(function(){p.emit(b,m)})}),p.connectionManager.on("update",function(m){R.default.Config.nextTick(function(){p.emit("update",m)})}),p}return C.prototype.connect=function(){g.default.logAction(g.default.LOG_MINOR,"Connection.connect()",""),this.connectionManager.requestState({state:"connecting"})},C.prototype.ping=function(M){if(g.default.logAction(g.default.LOG_MINOR,"Connection.ping()",""),!M){if(this.ably.options.promises)return a.promisify(this,"ping",arguments);M=y}this.connectionManager.ping(null,M)},C.prototype.close=function(){g.default.logAction(g.default.LOG_MINOR,"Connection.close()","connectionKey = "+this.key),this.connectionManager.requestState({state:"closing"})},Object.defineProperty(C.prototype,"recoveryKey",{get:function(){return this.createRecoveryKey()},enumerable:!1,configurable:!0}),C.prototype.createRecoveryKey=function(){return this.connectionManager.createRecoveryKey()},C}(l.default);r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.PendingMessage=void 0;var i=o(0),a=i.__importDefault(o(10)),l=i.__importStar(o(1)),d=i.__importDefault(o(7)),g=i.__importDefault(o(2)),S=i.__importDefault(o(36)),R=i.__importDefault(o(4)),y=a.default.Action,E=function(){function C(M,x){this.message=M,this.callback=x,this.merged=!1;var p=M.action;this.sendAttempted=!1,this.ackRequired=p==y.MESSAGE||p==y.PRESENCE}return C}();r.PendingMessage=E;var u=function(C){i.__extends(M,C);function M(x){var p=C.call(this)||this;return p.transport=x,p.messageQueue=new S.default,x.on("ack",function(m,b){p.onAck(m,b)}),x.on("nack",function(m,b,h){p.onNack(m,b,h)}),p}return M.prototype.onAck=function(x,p){g.default.logAction(g.default.LOG_MICRO,"Protocol.onAck()","serial = "+x+"; count = "+p),this.messageQueue.completeMessages(x,p)},M.prototype.onNack=function(x,p,m){g.default.logAction(g.default.LOG_ERROR,"Protocol.onNack()","serial = "+x+"; count = "+p+"; err = "+l.inspectError(m)),m||(m=new R.default("Unable to send message; channel not responding",50001,500)),this.messageQueue.completeMessages(x,p,m)},M.prototype.onceIdle=function(x){var p=this.messageQueue;if(p.count()===0){x();return}p.once("idle",x)},M.prototype.send=function(x){x.ackRequired&&this.messageQueue.push(x),g.default.shouldLog(g.default.LOG_MICRO)&&g.default.logAction(g.default.LOG_MICRO,"Protocol.send()","sending msg; "+a.default.stringify(x.message)),x.sendAttempted=!0,this.transport.send(x.message)},M.prototype.getTransport=function(){return this.transport},M.prototype.getPendingMessages=function(){return this.messageQueue.copyAll()},M.prototype.clearPendingMessages=function(){return this.messageQueue.clear()},M.prototype.finish=function(){var x=this.transport;this.onceIdle(function(){x.disconnect()})},M}(d.default);r.default=u},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(3)),l=i.__importStar(o(1)),d=i.__importDefault(o(26)),g=i.__importDefault(o(8)),S=i.__importDefault(o(2)),R=i.__importDefault(o(10)),y=i.__importDefault(o(4)),E="web_socket";function u(x){return!!x.on}var C=function(x){i.__extends(p,x);function p(m,b,h){var f=x.call(this,m,b,h)||this;return f.shortName=E,h.heartbeats=a.default.Config.useProtocolHeartbeats,f.wsHost=g.default.getHost(h.options,h.host,!0),f}return p.isAvailable=function(){return!!a.default.Config.WebSocket},p.prototype.createWebSocket=function(m,b){return this.uri=m+l.toQueryString(b),new a.default.Config.WebSocket(this.uri)},p.prototype.toString=function(){return"WebSocketTransport; uri="+this.uri},p.prototype.connect=function(){S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.connect()","starting"),d.default.prototype.connect.call(this);var m=this,b=this.params,h=b.options,f=h.tls?"wss://":"ws://",c=f+this.wsHost+":"+g.default.getPort(h)+"/";S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.connect()","uri: "+c),this.auth.getAuthParams(function(s,w){if(!m.isDisposed){var v="";for(var k in w)v+=" "+k+": "+w[k]+";";if(S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.connect()","authParams:"+v+" err: "+s),s){m.disconnect(s);return}var j=b.getConnectParams(w);try{var N=m.wsConnection=m.createWebSocket(c,j);N.binaryType=a.default.Config.binaryType,N.onopen=function(){m.onWsOpen()},N.onclose=function(P){m.onWsClose(P)},N.onmessage=function(P){m.onWsData(P.data)},N.onerror=function(P){m.onWsError(P)},u(N)&&N.on("ping",function(){m.onActivity()})}catch(P){S.default.logAction(S.default.LOG_ERROR,"WebSocketTransport.connect()","Unexpected exception creating websocket: err = "+(P.stack||P.message)),m.disconnect(P)}}})},p.prototype.send=function(m){var b=this.wsConnection;if(!b){S.default.logAction(S.default.LOG_ERROR,"WebSocketTransport.send()","No socket connection");return}try{b.send(R.default.serialize(m,this.params.format))}catch(f){var h="Exception from ws connection when trying to send: "+l.inspectError(f);S.default.logAction(S.default.LOG_ERROR,"WebSocketTransport.send()",h),this.finish("disconnected",new y.default(h,5e4,500))}},p.prototype.onWsData=function(m){S.default.logAction(S.default.LOG_MICRO,"WebSocketTransport.onWsData()","data received; length = "+m.length+"; type = "+typeof m);try{this.onProtocolMessage(R.default.deserialize(m,this.format))}catch(b){S.default.logAction(S.default.LOG_ERROR,"WebSocketTransport.onWsData()","Unexpected exception handing channel message: "+b.stack)}},p.prototype.onWsOpen=function(){S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.onWsOpen()","opened WebSocket"),this.emit("preconnect")},p.prototype.onWsClose=function(m){var b,h;if(typeof m=="object"?(h=m.code,b=m.wasClean||h===1e3):(h=m,b=h==1e3),delete this.wsConnection,b){S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.onWsClose()","Cleanly closed WebSocket");var f=new y.default("Websocket closed",80003,400);this.finish("disconnected",f)}else{var c="Unclean disconnection of WebSocket ; code = "+h,f=new y.default(c,80003,400);S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.onWsClose()",c),this.finish("disconnected",f)}this.emit("disposed")},p.prototype.onWsError=function(m){var b=this;S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.onError()","Error from WebSocket: "+m.message),a.default.Config.nextTick(function(){b.disconnect(Error(m.message))})},p.prototype.dispose=function(){S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.dispose()",""),this.isDisposed=!0;var m=this.wsConnection;m&&(m.onmessage=function(){},delete this.wsConnection,a.default.Config.nextTick(function(){if(S.default.logAction(S.default.LOG_MICRO,"WebSocketTransport.dispose()","closing websocket"),!m)throw new Error("WebSocketTransport.dispose(): wsConnection is not defined");m.close()}))},p}(d.default);function M(x){return C.isAvailable()&&(x.supportedTransports[E]=C),C}r.default=M},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(34)),d=i.__importDefault(o(7)),g=i.__importDefault(o(2)),S=i.__importDefault(o(16)),R=i.__importStar(o(4)),y=i.__importDefault(o(38)),E=i.__importDefault(o(24)),u=i.__importDefault(o(39)),C=function(){};function M(f){return f.channel.realtime.auth.clientId}function x(f){var c=f.channel.realtime,s=c.auth.clientId;return(!s||s==="*")&&c.connection.state==="connected"}function p(f,c,s){switch(f.state){case"attached":case"suspended":s();break;case"initialized":case"detached":case"detaching":case"attaching":f.attach(function(w){w?c(w):s()});break;default:c(R.default.fromValues(f.invalidStateError()))}}function m(f,c){if(f.isSynthesized()||c.isSynthesized())return f.timestamp>=c.timestamp;var s=f.parseId(),w=c.parseId();return s.msgSerial===w.msgSerial?s.index>w.index:s.msgSerial>w.msgSerial}var b=function(f){i.__extends(c,f);function c(s){var w=f.call(this,s)||this;return w.channel=s,w.syncComplete=!1,w.members=new h(w,function(v){return v.clientId+":"+v.connectionId}),w._myMembers=new h(w,function(v){return v.clientId}),w.subscriptions=new d.default,w.pendingPresence=[],w}return c.prototype.enter=function(s,w){if(x(this))throw new R.default("clientId must be specified to enter a presence channel",40012,400);return this._enterOrUpdateClient(void 0,void 0,s,"enter",w)},c.prototype.update=function(s,w){if(x(this))throw new R.default("clientId must be specified to update presence data",40012,400);return this._enterOrUpdateClient(void 0,void 0,s,"update",w)},c.prototype.enterClient=function(s,w,v){return this._enterOrUpdateClient(void 0,s,w,"enter",v)},c.prototype.updateClient=function(s,w,v){return this._enterOrUpdateClient(void 0,s,w,"update",v)},c.prototype._enterOrUpdateClient=function(s,w,v,k,j){var N=this;if(!j)if(typeof v=="function")j=v,v=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"_enterOrUpdateClient",[s,w,v,k]);j=C}var P=this.channel;if(!P.connectionManager.activeState()){j(P.connectionManager.getError());return}g.default.logAction(g.default.LOG_MICRO,"RealtimePresence."+k+"Client()","channel = "+P.name+", id = "+s+", client = "+(w||"(implicit) "+M(this)));var T=S.default.fromData(v);T.action=k,s&&(T.id=s),w&&(T.clientId=w),S.default.encode(T,P.channelOptions,function(I){if(I){j(I);return}switch(P.state){case"attached":P.sendPresence(T,j);break;case"initialized":case"detached":P.attach();case"attaching":N.pendingPresence.push({presence:T,callback:j});break;default:I=new R.PartialErrorInfo("Unable to "+k+" presence channel while in "+P.state+" state",90001),I.code=90001,j(I)}})},c.prototype.leave=function(s,w){if(x(this))throw new R.default("clientId must have been specified to enter or leave a presence channel",40012,400);return this.leaveClient(void 0,s,w)},c.prototype.leaveClient=function(s,w,v){if(!v)if(typeof w=="function")v=w,w=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"leaveClient",[s,w]);v=C}var k=this.channel;if(!k.connectionManager.activeState()){v==null||v(k.connectionManager.getError());return}g.default.logAction(g.default.LOG_MICRO,"RealtimePresence.leaveClient()","leaving; channel = "+this.channel.name+", client = "+s);var j=S.default.fromData(w);switch(j.action="leave",s&&(j.clientId=s),k.state){case"attached":k.sendPresence(j,v);break;case"attaching":this.pendingPresence.push({presence:j,callback:v});break;case"initialized":case"failed":{var N=new R.PartialErrorInfo("Unable to leave presence channel (incompatible state)",90001);v==null||v(N);break}default:v==null||v(k.invalidStateError())}},c.prototype.get=function(s,w){var v=this,k=Array.prototype.slice.call(arguments);k.length==1&&typeof k[0]=="function"&&k.unshift(null),s=k[0],w=k[1];var j=!s||("waitForSync"in s?s.waitForSync:!0);if(!w){if(this.channel.realtime.options.promises)return a.promisify(this,"get",k);w=C}function N(P){w(null,s?P.list(s):P.values())}if(this.channel.state==="suspended"){j?w(R.default.fromValues({statusCode:400,code:91005,message:"Presence state is out of sync due to channel being in the SUSPENDED state"})):N(this.members);return}p(this.channel,w,function(){var P=v.members;j?P.waitSync(function(){N(P)}):N(P)})},c.prototype.history=function(s,w){if(g.default.logAction(g.default.LOG_MICRO,"RealtimePresence.history()","channel = "+this.name),w===void 0)if(typeof s=="function")w=s,s=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"history",arguments);w=C}s&&s.untilAttach&&(this.channel.state==="attached"?(delete s.untilAttach,s.from_serial=this.channel.properties.attachSerial):w(new R.default("option untilAttach requires the channel to be attached, was: "+this.channel.state,4e4,400))),l.default.prototype._history.call(this,s,w)},c.prototype.setPresence=function(s,w,v){g.default.logAction(g.default.LOG_MICRO,"RealtimePresence.setPresence()","received presence for "+s.length+" participants; syncChannelSerial = "+v);var k,j,N=this.members,P=this._myMembers,T=[],I=this.channel.connectionManager.connectionId;w&&(this.members.startSync(),v&&(j=v.match(/^[\w-]+:(.*)$/))&&(k=j[1]));for(var A=0;A<s.length;A++){var D=S.default.fromValues(s[A]);switch(D.action){case"leave":N.remove(D)&&T.push(D),D.connectionId===I&&!D.isSynthesized()&&P.remove(D);break;case"enter":case"present":case"update":N.put(D)&&T.push(D),D.connectionId===I&&P.put(D);break}}w&&!k&&(N.endSync(),this.channel.syncChannelSerial=null);for(var A=0;A<T.length;A++){var D=T[A];this.subscriptions.emit(D.action,D)}},c.prototype.onAttached=function(s){g.default.logAction(g.default.LOG_MINOR,"RealtimePresence.onAttached()","channel = "+this.channel.name+", hasPresence = "+s),s?this.members.startSync():(this._synthesizeLeaves(this.members.values()),this.members.clear()),this._ensureMyMembersPresent();var w=this.pendingPresence,v=w.length;if(v){this.pendingPresence=[];var k=[],j=E.default.create();g.default.logAction(g.default.LOG_MICRO,"RealtimePresence.onAttached","sending "+v+" queued presence messages");for(var N=0;N<v;N++){var P=w[N];k.push(P.presence),j.push(P.callback)}this.channel.sendPresence(k,j)}},c.prototype.actOnChannelState=function(s,w,v){switch(s){case"attached":this.onAttached(w);break;case"detached":case"failed":this._clearMyMembers(),this.members.clear();case"suspended":this.failPendingPresence(v);break}},c.prototype.failPendingPresence=function(s){if(this.pendingPresence.length){g.default.logAction(g.default.LOG_MINOR,"RealtimeChannel.failPendingPresence","channel; name = "+this.channel.name+", err = "+a.inspectError(s));for(var w=0;w<this.pendingPresence.length;w++)try{this.pendingPresence[w].callback(s)}catch(v){}this.pendingPresence=[]}},c.prototype._clearMyMembers=function(){this._myMembers.clear()},c.prototype._ensureMyMembersPresent=function(){var s=this,w=this._myMembers,v=function(N){if(N){var P="Presence auto-re-enter failed: "+N.toString(),T=new R.default(P,91004,400);g.default.logAction(g.default.LOG_ERROR,"RealtimePresence._ensureMyMembersPresent()",P);var I=new u.default(s.channel.state,s.channel.state,!0,!1,T);s.channel.emit("update",I)}};for(var k in w.map){var j=w.map[k];g.default.logAction(g.default.LOG_MICRO,"RealtimePresence._ensureMyMembersPresent()",'Auto-reentering clientId "'+j.clientId+'" into the presence set'),this._enterOrUpdateClient(j.id,j.clientId,j.data,"enter",v)}},c.prototype._synthesizeLeaves=function(s){var w=this.subscriptions;a.arrForEach(s,function(v){var k=S.default.fromValues({action:"leave",connectionId:v.connectionId,clientId:v.clientId,data:v.data,encoding:v.encoding,timestamp:a.now()});w.emit("leave",k)})},c.prototype.on=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];g.default.renamedMethod("RealtimePresence","on","subscribe"),this.subscribe.apply(this,s)},c.prototype.off=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];g.default.renamedMethod("RealtimePresence","off","unsubscribe"),this.unsubscribe.apply(this,s)},c.prototype.subscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=y.default.processListenerArgs(s),k=v[0],j=v[1],N=v[2],P=this.channel;if(!N){if(this.channel.realtime.options.promises)return a.promisify(this,"subscribe",[k,j]);N=C}if(P.state==="failed"){N(R.default.fromValues(P.invalidStateError()));return}this.subscriptions.on(k,j),P.attach(N)},c.prototype.unsubscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=y.default.processListenerArgs(s),k=v[0],j=v[1];this.subscriptions.off(k,j)},c}(l.default),h=function(f){i.__extends(c,f);function c(s,w){var v=f.call(this)||this;return v.presence=s,v.map=Object.create(null),v.syncInProgress=!1,v.residualMembers=null,v.memberKey=w,v}return c.prototype.get=function(s){return this.map[s]},c.prototype.getClient=function(s){var w=this.map,v=[];for(var k in w){var j=w[k];j.clientId==s&&j.action!="absent"&&v.push(j)}return v},c.prototype.list=function(s){var w=this.map,v=s&&s.clientId,k=s&&s.connectionId,j=[];for(var N in w){var P=w[N];P.action!=="absent"&&(v&&v!=P.clientId||k&&k!=P.connectionId||j.push(P))}return j},c.prototype.put=function(s){(s.action==="enter"||s.action==="update")&&(s=S.default.fromValues(s),s.action="present");var w=this.map,v=this.memberKey(s);this.residualMembers&&delete this.residualMembers[v];var k=w[v];return k&&!m(s,k)?!1:(w[v]=s,!0)},c.prototype.values=function(){var s=this.map,w=[];for(var v in s){var k=s[v];k.action!="absent"&&w.push(k)}return w},c.prototype.remove=function(s){var w=this.map,v=this.memberKey(s),k=w[v];return k&&!m(s,k)?!1:(this.syncInProgress?(s=S.default.fromValues(s),s.action="absent",w[v]=s):delete w[v],!0)},c.prototype.startSync=function(){var s=this.map,w=this.syncInProgress;g.default.logAction(g.default.LOG_MINOR,"PresenceMap.startSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),this.syncInProgress||(this.residualMembers=a.copy(s),this.setInProgress(!0))},c.prototype.endSync=function(){var s=this.map,w=this.syncInProgress;if(g.default.logAction(g.default.LOG_MINOR,"PresenceMap.endSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),w){for(var v in s){var k=s[v];k.action==="absent"&&delete s[v]}this.presence._synthesizeLeaves(a.valuesArray(this.residualMembers));for(var v in this.residualMembers)delete s[v];this.residualMembers=null,this.setInProgress(!1)}this.emit("sync")},c.prototype.waitSync=function(s){var w=this.syncInProgress;if(g.default.logAction(g.default.LOG_MINOR,"PresenceMap.waitSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),!w){s();return}this.once("sync",s)},c.prototype.clear=function(){this.map={},this.setInProgress(!1),this.residualMembers=null},c.prototype.setInProgress=function(s){g.default.logAction(g.default.LOG_MICRO,"PresenceMap.setInProgress()","inProgress = "+s),this.syncInProgress=s,this.presence.syncComplete=!s},c}(d.default);r.default=b},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=o(56),l=o(31),d=o(11),g=i.__importDefault(o(5)),S=i.__importDefault(o(3)),R=function(){function y(){this.base64CharSet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",this.hexCharSet="0123456789abcdef"}return y.prototype.isWordArray=function(E){return E!=null&&E.sigBytes!==void 0},y.prototype.isArrayBuffer=function(E){return E!=null&&E.constructor===ArrayBuffer},y.prototype.isTypedArray=function(E){return!!ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(E)},y.prototype.uint8ViewToBase64=function(E){for(var u="",C=this.base64CharSet,M=E.byteLength,x=M%3,p=M-x,m,b,h,f,c,s=0;s<p;s=s+3)c=E[s]<<16|E[s+1]<<8|E[s+2],m=(c&16515072)>>18,b=(c&258048)>>12,h=(c&4032)>>6,f=c&63,u+=C[m]+C[b]+C[h]+C[f];return x==1?(c=E[p],m=(c&252)>>2,b=(c&3)<<4,u+=C[m]+C[b]+"=="):x==2&&(c=E[p]<<8|E[p+1],m=(c&64512)>>10,b=(c&1008)>>4,h=(c&15)<<2,u+=C[m]+C[b]+C[h]+"="),u},y.prototype.base64ToArrayBuffer=function(E){for(var u=atob==null?void 0:atob(E),C=u.length,M=new Uint8Array(C),x=0;x<C;x++){var p=u.charCodeAt(x);M[x]=p}return M.buffer},y.prototype.isBuffer=function(E){return this.isArrayBuffer(E)||this.isWordArray(E)||this.isTypedArray(E)},y.prototype.toBuffer=function(E){if(!ArrayBuffer)throw new Error("Can't convert to Buffer: browser does not support the necessary types");if(this.isArrayBuffer(E))return new Uint8Array(E);if(this.isTypedArray(E))return new Uint8Array(E.buffer);if(this.isWordArray(E)){for(var u=new ArrayBuffer(E.sigBytes),C=new Uint8Array(u),M=0;M<E.sigBytes;M++)C[M]=E.words[M>>>2]>>>24-M%4*8&255;return C}throw new Error("BufferUtils.toBuffer expected an arraybuffer, typed array, or CryptoJS wordarray")},y.prototype.toArrayBuffer=function(E){return this.isArrayBuffer(E)?E:this.toBuffer(E).buffer},y.prototype.toWordArray=function(E){return this.isTypedArray(E)&&(E=E.buffer),this.isWordArray(E)?E:g.default.create(E)},y.prototype.base64Encode=function(E){return this.isWordArray(E)?(0,d.stringify)(E):this.uint8ViewToBase64(this.toBuffer(E))},y.prototype.base64Decode=function(E){return ArrayBuffer&&S.default.Config.atob?this.base64ToArrayBuffer(E):(0,d.parse)(E)},y.prototype.hexEncode=function(E){return(0,a.stringify)(this.toWordArray(E))},y.prototype.hexDecode=function(E){var u=(0,a.parse)(E);return ArrayBuffer?this.toArrayBuffer(u):u},y.prototype.utf8Encode=function(E){return S.default.Config.TextEncoder?new S.default.Config.TextEncoder().encode(E).buffer:(0,l.parse)(E)},y.prototype.utf8Decode=function(E){if(!this.isBuffer(E))throw new Error("Expected input of utf8decode to be an arraybuffer, typed array, or CryptoJS wordarray");return TextDecoder&&!this.isWordArray(E)?new TextDecoder().decode(E):(E=this.toWordArray(E),(0,l.stringify)(E))},y.prototype.bufferCompare=function(E,u){if(!E)return-1;if(!u)return 1;var C=this.toWordArray(E),M=this.toWordArray(u);C.clamp(),M.clamp();var x=C.sigBytes-M.sigBytes;if(x!=0)return x;for(var p=C.words,m=M.words,b=0;b<p.length;b++)if(x=p[b]-m[b],x!=0)return x;return 0},y.prototype.byteLength=function(E){return this.isArrayBuffer(E)||this.isTypedArray(E)?E.byteLength:this.isWordArray(E)?E.sigBytes:-1},y.prototype.typedArrayToBuffer=function(E){return E.buffer},y}();r.default=new R},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return i.enc.Hex})},function(n,r,o){o.r(r);var i=o(5),a=o.n(i),l=o(11),d=o(23),g=o.n(d),S=o(2),R=o.n(S),y=o(4),E=o.n(y),u=function(C,M){var x="aes",p=256,m="cbc",b=16,h=4,f=4294967296,c=2147483648,s;if(C.getRandomWordArray)s=C.getRandomWordArray;else if(typeof Uint32Array!="undefined"&&C.getRandomValues){var w=new Uint32Array(h);s=function(A,D){var B=A/4,z=B==h?w:new Uint32Array(B);C.getRandomValues(z,function($){typeof D!="undefined"&&D($,M.toWordArray(z))})}}else s=function(A,D){R.a.logAction(R.a.LOG_MAJOR,"Ably.Crypto.generateRandom()","Warning: the browser you are using does not support secure cryptographically secure randomness generation; falling back to insecure Math.random()");for(var B=A/4,z=new Array(B),$=0;$<B;$++)z[$]=Math.floor(Math.random()*f)-c;D(null,a.a.create(z))};function v(A){return A+b&-16}function k(A){if(A.algorithm==="aes"&&A.mode==="cbc"){if(A.keyLength===128||A.keyLength===256)return;throw new Error("Unsupported key length "+A.keyLength+" for aes-cbc encryption. Encryption key must be 128 or 256 bits (16 or 32 ASCII characters)")}}function j(A){return A.replace("_","/").replace("-","+")}var N=[a.a.create([269488144,269488144,269488144,269488144],16),a.a.create([16777216],1),a.a.create([33685504],2),a.a.create([50529024],3),a.a.create([67372036],4),a.a.create([84215045,83886080],5),a.a.create([101058054,101056512],6),a.a.create([117901063,117901056],7),a.a.create([134744072,134744072],8),a.a.create([151587081,151587081,150994944],9),a.a.create([168430090,168430090,168427520],10),a.a.create([185273099,185273099,185273088],11),a.a.create([202116108,202116108,202116108],12),a.a.create([218959117,218959117,218959117,218103808],13),a.a.create([235802126,235802126,235802126,235798528],14),a.a.create([252645135,252645135,252645135,252645135],15),a.a.create([269488144,269488144,269488144,269488144],16)];function P(){}function T(){this.algorithm=null,this.keyLength=null,this.mode=null,this.key=null}P.CipherParams=T,P.getDefaultParams=function(A){var D;if(typeof A=="function"||typeof A=="string"){if(R.a.deprecated("The ability to pass a callback to `Crypto.getDefaultParams()`","This method now directly returns its result, instead of returning it asynchronously via a callback. Please update your code so that it uses the return value of this method instead of passing a callback."),typeof A=="function")R.a.deprecated("The ability to call `Crypto.getDefaultParams()` without specifying an encryption key","Please update your code so that it instead passes an object whose `key` property contains an encryption key. That is, replace `Crypto.getDefaultParams()` with `Crypto.getDefaultParams({ key })`, where `key` is an encryption key that you have generated (for example from the `Crypto.generateRandomKey()` method)."),P.generateRandomKey(function(z){A(null,P.getDefaultParams({key:z}))});else if(typeof arguments[1]=="function")R.a.deprecated("The ability to pass the encryption key as the first argument of `Crypto.getDefaultParams()`","Please update your code so that it instead passes an object whose `key` property contains the key. That is, replace `Crypto.getDefaultParams(key)` with `Crypto.getDefaultParams({ key })`."),arguments[1](null,P.getDefaultParams({key:A}));else throw new Error("Invalid arguments for Crypto.getDefaultParams");return}if(!A.key)throw new Error("Crypto.getDefaultParams: a key is required");typeof A.key=="string"?D=Object(l.parse)(j(A.key)):D=M.toWordArray(A.key);var B=new T;if(B.key=D,B.algorithm=A.algorithm||x,B.keyLength=D.words.length*(4*8),B.mode=A.mode||m,A.keyLength&&A.keyLength!==B.keyLength)throw new Error("Crypto.getDefaultParams: a keyLength of "+A.keyLength+" was specified, but the key actually has length "+B.keyLength);return k(B),B},P.generateRandomKey=function(A,D){arguments.length==1&&typeof A=="function"&&(D=A,A=void 0),s((A||p)/8,function(B,z){D!==void 0&&D(B?E.a.fromValues(B):null,z)})},P.getCipher=function(A){var D=A instanceof T?A:P.getDefaultParams(A);return{cipherParams:D,cipher:new I(D,h,A.iv)}};function I(A,D,B){this.algorithm=A.algorithm+"-"+String(A.keyLength)+"-"+A.mode,this.cjsAlgorithm=A.algorithm.toUpperCase().replace(/-\d+$/,""),this.key=M.toWordArray(A.key),B&&(this.iv=M.toWordArray(B).clone()),this.blockLengthWords=D}return I.prototype.encrypt=function(A,D){R.a.logAction(R.a.LOG_MICRO,"CBCCipher.encrypt()",""),A=M.toWordArray(A);var B=A.sigBytes,z=v(B),$=this,V=function(){$.getIv(function(F,O){if(F){D(F);return}var L=$.encryptCipher.process(A.concat(N[z-B])),U=O.concat(L);D(null,U)})};this.encryptCipher?V():this.iv?(this.encryptCipher=g.a.algo[this.cjsAlgorithm].createEncryptor(this.key,{iv:this.iv}),V()):s(b,function(F,O){if(F){D(F);return}$.encryptCipher=g.a.algo[$.cjsAlgorithm].createEncryptor($.key,{iv:O}),$.iv=O,V()})},I.prototype.decrypt=function(A){R.a.logAction(R.a.LOG_MICRO,"CBCCipher.decrypt()",""),A=M.toWordArray(A);var D=this.blockLengthWords,B=A.words,z=a.a.create(B.slice(0,D)),$=a.a.create(B.slice(D)),V=g.a.algo[this.cjsAlgorithm].createDecryptor(this.key,{iv:z}),F=V.process($),O=V.finalize();return V.reset(),O&&O.sigBytes&&F.concat(O),F},I.prototype.getIv=function(A){if(this.iv){var D=this.iv;this.iv=null,A(null,D);return}var B=this;s(b,function(z,$){if(z){A(z);return}A(null,B.encryptCipher.process($))})},P};r.default=u},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){var a=i,l=a.lib,d=l.WordArray,g=a.enc;g.Utf16=g.Utf16BE={stringify:function(R){for(var y=R.words,E=R.sigBytes,u=[],C=0;C<E;C+=2){var M=y[C>>>2]>>>16-C%4*8&65535;u.push(String.fromCharCode(M))}return u.join("")},parse:function(R){for(var y=R.length,E=[],u=0;u<y;u++)E[u>>>1]|=R.charCodeAt(u)<<16-u%2*16;return d.create(E,y*2)}},g.Utf16LE={stringify:function(R){for(var y=R.words,E=R.sigBytes,u=[],C=0;C<E;C+=2){var M=S(y[C>>>2]>>>16-C%4*8&65535);u.push(String.fromCharCode(M))}return u.join("")},parse:function(R){for(var y=R.length,E=[],u=0;u<y;u++)E[u>>>1]|=S(R.charCodeAt(u)<<16-u%2*16);return d.create(E,y*2)}};function S(R){return R<<8&4278255360|R>>>8&16711935}}(),i.enc.Utf16})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(28))})(this,function(i){return function(a){var l=i,d=l.lib,g=d.CipherParams,S=l.enc,R=S.Hex,y=l.format;y.Hex={stringify:function(E){return E.ciphertext.toString(R)},parse:function(E){var u=R.parse(E);return g.create({ciphertext:u})}}}(),i.format.Hex})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(11),o(61),o(27),o(28))})(this,function(i){return function(){var a=i,l=a.lib,d=l.BlockCipher,g=a.algo,S=[],R=[],y=[],E=[],u=[],C=[],M=[],x=[],p=[],m=[];(function(){for(var f=[],c=0;c<256;c++)c<128?f[c]=c<<1:f[c]=c<<1^283;for(var s=0,w=0,c=0;c<256;c++){var v=w^w<<1^w<<2^w<<3^w<<4;v=v>>>8^v&255^99,S[s]=v,R[v]=s;var k=f[s],j=f[k],N=f[j],P=f[v]*257^v*16843008;y[s]=P<<24|P>>>8,E[s]=P<<16|P>>>16,u[s]=P<<8|P>>>24,C[s]=P;var P=N*16843009^j*65537^k*257^s*16843008;M[v]=P<<24|P>>>8,x[v]=P<<16|P>>>16,p[v]=P<<8|P>>>24,m[v]=P,s?(s=k^f[f[f[N^k]]],w^=f[f[w]]):s=w=1}})();var b=[0,1,2,4,8,16,32,64,128,27,54],h=g.AES=d.extend({_doReset:function(){var f;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var c=this._keyPriorReset=this._key,s=c.words,w=c.sigBytes/4,v=this._nRounds=w+6,k=(v+1)*4,j=this._keySchedule=[],N=0;N<k;N++)N<w?j[N]=s[N]:(f=j[N-1],N%w?w>6&&N%w==4&&(f=S[f>>>24]<<24|S[f>>>16&255]<<16|S[f>>>8&255]<<8|S[f&255]):(f=f<<8|f>>>24,f=S[f>>>24]<<24|S[f>>>16&255]<<16|S[f>>>8&255]<<8|S[f&255],f^=b[N/w|0]<<24),j[N]=j[N-w]^f);for(var P=this._invKeySchedule=[],T=0;T<k;T++){var N=k-T;if(T%4)var f=j[N];else var f=j[N-4];T<4||N<=4?P[T]=f:P[T]=M[S[f>>>24]]^x[S[f>>>16&255]]^p[S[f>>>8&255]]^m[S[f&255]]}}},encryptBlock:function(f,c){this._doCryptBlock(f,c,this._keySchedule,y,E,u,C,S)},decryptBlock:function(f,c){var s=f[c+1];f[c+1]=f[c+3],f[c+3]=s,this._doCryptBlock(f,c,this._invKeySchedule,M,x,p,m,R);var s=f[c+1];f[c+1]=f[c+3],f[c+3]=s},_doCryptBlock:function(f,c,s,w,v,k,j,N){for(var P=this._nRounds,T=f[c]^s[0],I=f[c+1]^s[1],A=f[c+2]^s[2],D=f[c+3]^s[3],B=4,z=1;z<P;z++){var $=w[T>>>24]^v[I>>>16&255]^k[A>>>8&255]^j[D&255]^s[B++],V=w[I>>>24]^v[A>>>16&255]^k[D>>>8&255]^j[T&255]^s[B++],F=w[A>>>24]^v[D>>>16&255]^k[T>>>8&255]^j[I&255]^s[B++],O=w[D>>>24]^v[T>>>16&255]^k[I>>>8&255]^j[A&255]^s[B++];T=$,I=V,A=F,D=O}var $=(N[T>>>24]<<24|N[I>>>16&255]<<16|N[A>>>8&255]<<8|N[D&255])^s[B++],V=(N[I>>>24]<<24|N[A>>>16&255]<<16|N[D>>>8&255]<<8|N[T&255])^s[B++],F=(N[A>>>24]<<24|N[D>>>16&255]<<16|N[T>>>8&255]<<8|N[I&255])^s[B++],O=(N[D>>>24]<<24|N[T>>>16&255]<<16|N[I>>>8&255]<<8|N[A&255])^s[B++];f[c]=$,f[c+1]=V,f[c+2]=F,f[c+3]=O},keySize:256/32});a.AES=d._createHelper(h)}(),i.AES})},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(a){var l=i,d=l.lib,g=d.WordArray,S=d.Hasher,R=l.algo,y=[];(function(){for(var p=0;p<64;p++)y[p]=a.abs(a.sin(p+1))*4294967296|0})();var E=R.MD5=S.extend({_doReset:function(){this._hash=new g.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(p,m){for(var b=0;b<16;b++){var h=m+b,f=p[h];p[h]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}var c=this._hash.words,s=p[m+0],w=p[m+1],v=p[m+2],k=p[m+3],j=p[m+4],N=p[m+5],P=p[m+6],T=p[m+7],I=p[m+8],A=p[m+9],D=p[m+10],B=p[m+11],z=p[m+12],$=p[m+13],V=p[m+14],F=p[m+15],O=c[0],L=c[1],U=c[2],_=c[3];O=u(O,L,U,_,s,7,y[0]),_=u(_,O,L,U,w,12,y[1]),U=u(U,_,O,L,v,17,y[2]),L=u(L,U,_,O,k,22,y[3]),O=u(O,L,U,_,j,7,y[4]),_=u(_,O,L,U,N,12,y[5]),U=u(U,_,O,L,P,17,y[6]),L=u(L,U,_,O,T,22,y[7]),O=u(O,L,U,_,I,7,y[8]),_=u(_,O,L,U,A,12,y[9]),U=u(U,_,O,L,D,17,y[10]),L=u(L,U,_,O,B,22,y[11]),O=u(O,L,U,_,z,7,y[12]),_=u(_,O,L,U,$,12,y[13]),U=u(U,_,O,L,V,17,y[14]),L=u(L,U,_,O,F,22,y[15]),O=C(O,L,U,_,w,5,y[16]),_=C(_,O,L,U,P,9,y[17]),U=C(U,_,O,L,B,14,y[18]),L=C(L,U,_,O,s,20,y[19]),O=C(O,L,U,_,N,5,y[20]),_=C(_,O,L,U,D,9,y[21]),U=C(U,_,O,L,F,14,y[22]),L=C(L,U,_,O,j,20,y[23]),O=C(O,L,U,_,A,5,y[24]),_=C(_,O,L,U,V,9,y[25]),U=C(U,_,O,L,k,14,y[26]),L=C(L,U,_,O,I,20,y[27]),O=C(O,L,U,_,$,5,y[28]),_=C(_,O,L,U,v,9,y[29]),U=C(U,_,O,L,T,14,y[30]),L=C(L,U,_,O,z,20,y[31]),O=M(O,L,U,_,N,4,y[32]),_=M(_,O,L,U,I,11,y[33]),U=M(U,_,O,L,B,16,y[34]),L=M(L,U,_,O,V,23,y[35]),O=M(O,L,U,_,w,4,y[36]),_=M(_,O,L,U,j,11,y[37]),U=M(U,_,O,L,T,16,y[38]),L=M(L,U,_,O,D,23,y[39]),O=M(O,L,U,_,$,4,y[40]),_=M(_,O,L,U,s,11,y[41]),U=M(U,_,O,L,k,16,y[42]),L=M(L,U,_,O,P,23,y[43]),O=M(O,L,U,_,A,4,y[44]),_=M(_,O,L,U,z,11,y[45]),U=M(U,_,O,L,F,16,y[46]),L=M(L,U,_,O,v,23,y[47]),O=x(O,L,U,_,s,6,y[48]),_=x(_,O,L,U,T,10,y[49]),U=x(U,_,O,L,V,15,y[50]),L=x(L,U,_,O,N,21,y[51]),O=x(O,L,U,_,z,6,y[52]),_=x(_,O,L,U,k,10,y[53]),U=x(U,_,O,L,D,15,y[54]),L=x(L,U,_,O,w,21,y[55]),O=x(O,L,U,_,I,6,y[56]),_=x(_,O,L,U,F,10,y[57]),U=x(U,_,O,L,P,15,y[58]),L=x(L,U,_,O,$,21,y[59]),O=x(O,L,U,_,j,6,y[60]),_=x(_,O,L,U,B,10,y[61]),U=x(U,_,O,L,v,15,y[62]),L=x(L,U,_,O,A,21,y[63]),c[0]=c[0]+O|0,c[1]=c[1]+L|0,c[2]=c[2]+U|0,c[3]=c[3]+_|0},_doFinalize:function(){var p=this._data,m=p.words,b=this._nDataBytes*8,h=p.sigBytes*8;m[h>>>5]|=128<<24-h%32;var f=a.floor(b/4294967296),c=b;m[(h+64>>>9<<4)+15]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360,m[(h+64>>>9<<4)+14]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360,p.sigBytes=(m.length+1)*4,this._process();for(var s=this._hash,w=s.words,v=0;v<4;v++){var k=w[v];w[v]=(k<<8|k>>>24)&16711935|(k<<24|k>>>8)&4278255360}return s},clone:function(){var p=S.clone.call(this);return p._hash=this._hash.clone(),p}});function u(p,m,b,h,f,c,s){var w=p+(m&b|~m&h)+f+s;return(w<<c|w>>>32-c)+m}function C(p,m,b,h,f,c,s){var w=p+(m&h|b&~h)+f+s;return(w<<c|w>>>32-c)+m}function M(p,m,b,h,f,c,s){var w=p+(m^b^h)+f+s;return(w<<c|w>>>32-c)+m}function x(p,m,b,h,f,c,s){var w=p+(b^(m|~h))+f+s;return(w<<c|w>>>32-c)+m}l.MD5=S._createHelper(E),l.HmacMD5=S._createHmacHelper(E)}(Math),i.MD5})},function(n,r,o){var i;Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importDefault(o(3)),d=a.__importStar(o(1)),g=a.__importDefault(o(8)),S=o(4),R=a.__importDefault(o(19)),y=a.__importDefault(o(17)),E=a.__importDefault(o(22)),u=a.__importDefault(o(2)),C=o(29),M=a.__importDefault(o(63)),x=o(14);function p(h){var f=h.statusCode;return f===408&&!h.code||f===400&&!h.code||f>=500&&f<=504}function m(h){var f=h.connection,c=f&&f.connectionManager.host;return c?[c].concat(g.default.getFallbackHosts(h.options)):g.default.getHosts(h.options)}var b=(i=function(){function h(f){this.checksInProgress=null,this.checkConnectivity=void 0,this.supportsAuthHeaders=!1,this.supportsLinkHeaders=!1,this._getHosts=m,this.options=f||{};var c=this.options.connectivityCheckUrl||g.default.connectivityCheckUrl,s=this.options.connectivityCheckParams,w=!this.options.connectivityCheckUrl;l.default.Config.xhrSupported?(this.supportsAuthHeaders=!0,this.Request=function(v,k,j,N,P,T,I){var A=y.default.createRequest(j,N,P,T,E.default.REQ_SEND,k&&k.options.timeouts,v);return A.once("complete",I),A.exec(),A},this.options.disableConnectivityCheck?this.checkConnectivity=function(v){v(null,!0)}:this.checkConnectivity=function(v){u.default.logAction(u.default.LOG_MICRO,"(XHRRequest)Http.checkConnectivity()","Sending; "+c),this.doUri(R.default.Get,null,c,null,null,s,function(k,j,N,P,T){var I=!1;w?I=!k&&(j==null?void 0:j.replace(/\n/,""))=="yes":I=!k&&(0,x.isSuccessCode)(T),u.default.logAction(u.default.LOG_MICRO,"(XHRRequest)Http.checkConnectivity()","Result: "+I),v(null,I)})}):l.default.Config.jsonpSupported?(this.Request=function(v,k,j,N,P,T,I){var A=(0,C.createRequest)(j,N,P,T,E.default.REQ_SEND,k&&k.options.timeouts,v);return A.once("complete",I),l.default.Config.nextTick(function(){A.exec()}),A},this.options.disableConnectivityCheck?this.checkConnectivity=function(v){v(null,!0)}:this.checkConnectivity=function(v){var k=this,j=g.default.jsonpInternetUpUrl;if(this.checksInProgress){this.checksInProgress.push(v);return}this.checksInProgress=[v],u.default.logAction(u.default.LOG_MICRO,"(JSONP)Http.checkConnectivity()","Sending; "+j);var N=new C.Request("isTheInternetUp",j,null,null,null,E.default.REQ_SEND,g.default.TIMEOUTS);N.once("complete",function(P,T){var I=!P&&T;u.default.logAction(u.default.LOG_MICRO,"(JSONP)Http.checkConnectivity()","Result: "+I);for(var A=0;A<k.checksInProgress.length;A++)k.checksInProgress[A](null,I);k.checksInProgress=null}),l.default.Config.nextTick(function(){N.exec()})}):l.default.Config.fetchSupported?(this.supportsAuthHeaders=!0,this.Request=M.default,this.checkConnectivity=function(v){u.default.logAction(u.default.LOG_MICRO,"(Fetch)Http.checkConnectivity()","Sending; "+c),this.doUri(R.default.Get,null,c,null,null,null,function(k,j){var N=!k&&(j==null?void 0:j.replace(/\n/,""))=="yes";u.default.logAction(u.default.LOG_MICRO,"(Fetch)Http.checkConnectivity()","Result: "+N),v(null,N)})}):this.Request=function(v,k,j,N,P,T,I){I(new S.PartialErrorInfo("no supported HTTP transports available",null,400),null)}}return h.prototype.do=function(f,c,s,w,v,k,j){var N=this,P=typeof s=="function"?s:function(D){return c.baseUri(D)+s},T=c._currentFallback;if(T)if(T.validUntil>d.now()){if(!this.Request){j==null||j(new S.PartialErrorInfo("Request invoked before assigned to",null,500));return}this.Request(f,c,P(T.host),w,k,v,function(D){for(var B=[],z=1;z<arguments.length;z++)B[z-1]=arguments[z];if(D&&p(D)){c._currentFallback=null,N.do(f,c,s,w,v,k,j);return}j==null||j.apply(void 0,a.__spreadArray([D],B,!1))});return}else c._currentFallback=null;var I=m(c);if(I.length===1){this.doUri(f,c,P(I[0]),w,v,k,j);return}var A=function(D,B){var z=D.shift();N.doUri(f,c,P(z),w,v,k,function($){for(var V=[],F=1;F<arguments.length;F++)V[F-1]=arguments[F];if($&&p($)&&D.length){A(D,!0);return}B&&(c._currentFallback={host:z,validUntil:d.now()+c.options.timeouts.fallbackRetryTimeout}),j==null||j.apply(void 0,a.__spreadArray([$],V,!1))})};A(I)},h.prototype.doUri=function(f,c,s,w,v,k,j){if(!this.Request){j(new S.PartialErrorInfo("Request invoked before assigned to",null,500));return}this.Request(f,c,s,w,k,v,j)},h}(),i.methods=[R.default.Get,R.default.Delete,R.default.Post,R.default.Put,R.default.Patch],i.methodsWithoutBody=[R.default.Get,R.default.Delete],i.methodsWithBody=[R.default.Post,R.default.Put,R.default.Patch],i);r.default=b},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(4)),l=i.__importDefault(o(3)),d=i.__importDefault(o(8)),g=i.__importStar(o(1)),S=o(1);function R(u,C){return!!C.get("x-ably-errorcode")}function y(u,C){if(R(u,C))return u.error&&a.default.fromValues(u.error)}function E(u,C,M,x,p,m,b){var h=new Headers(x||{}),f=u?u.toUpperCase():g.isEmptyArg(m)?"GET":"POST",c=new AbortController,s=setTimeout(function(){c.abort(),b(new a.PartialErrorInfo("Request timed out",null,408))},C?C.options.timeouts.httpRequestTimeout:d.default.TIMEOUTS.httpRequestTimeout),w={method:f,headers:h,body:m};l.default.Config.isWebworker||(w.credentials=h.has("authorization")?"include":"same-origin"),(0,S.getGlobalObject)().fetch(M+"?"+new URLSearchParams(p||{}),w).then(function(v){clearTimeout(s);var k=v.headers.get("Content-Type"),j;k&&k.indexOf("application/x-msgpack")>-1?j=v.arrayBuffer():k&&k.indexOf("application/json")>-1?j=v.json():j=v.text(),j.then(function(N){var P=!!k&&k.indexOf("application/x-msgpack")===-1;if(v.ok)b(null,N,v.headers,P,v.status);else{var T=y(N,v.headers)||new a.PartialErrorInfo("Error response received from server: "+v.status+" body was: "+l.default.Config.inspect(N),null,v.status);b(T,N,v.headers,P,v.status)}})}).catch(function(v){clearTimeout(s),b(v)})}r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(41)),l=i.__importStar(o(1)),d=l.getGlobalObject();typeof Window=="undefined"&&typeof WorkerGlobalScope=="undefined"&&console.log("Warning: this distribution of Ably is intended for browsers. On nodejs, please use the 'ably' package on npm");function g(){var E=d.location;return!d.WebSocket||!E||!E.origin||E.origin.indexOf("http")>-1}var S=d.navigator&&d.navigator.userAgent.toString(),R=d.location&&d.location.href,y={agent:"browser",logTimestamps:!0,userAgent:S,currentUrl:R,noUpgrade:S&&!!S.match(/MSIE\s8\.0/),binaryType:"arraybuffer",WebSocket:d.WebSocket,fetchSupported:!!d.fetch,xhrSupported:d.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,jsonpSupported:typeof document!="undefined",allowComet:g(),streamingSupported:!0,useProtocolHeartbeats:!0,createHmac:null,msgpack:a.default,supportsBinary:!!d.TextDecoder,preferBinary:!1,ArrayBuffer:d.ArrayBuffer,atob:d.atob,nextTick:typeof d.setImmediate!="undefined"?d.setImmediate.bind(d):function(E){setTimeout(E,0)},addEventListener:d.addEventListener,inspect:JSON.stringify,stringByteSize:function(E){return d.TextDecoder&&new d.TextEncoder().encode(E).length||E.length},TextEncoder:d.TextEncoder,TextDecoder:d.TextDecoder,Promise:d.Promise,getRandomValues:function(E){if(E!==void 0)return function(u,C){E.getRandomValues(u),C&&C(null)}}(d.crypto||msCrypto)};r.default=y},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importStar(o(1)),d="ablyjs-storage-test",g=function(){function S(){try{i.sessionStorage.setItem(d,d),i.sessionStorage.removeItem(d),this.sessionSupported=!0}catch(R){this.sessionSupported=!1}try{i.localStorage.setItem(d,d),i.localStorage.removeItem(d),this.localSupported=!0}catch(R){this.localSupported=!1}}return S.prototype.get=function(R){return this._get(R,!1)},S.prototype.getSession=function(R){return this._get(R,!0)},S.prototype.remove=function(R){return this._remove(R,!1)},S.prototype.removeSession=function(R){return this._remove(R,!0)},S.prototype.set=function(R,y,E){return this._set(R,y,E,!1)},S.prototype.setSession=function(R,y,E){return this._set(R,y,E,!0)},S.prototype._set=function(R,y,E,u){var C={value:y};return E&&(C.expires=l.now()+E),this.storageInterface(u).setItem(R,JSON.stringify(C))},S.prototype._get=function(R,y){if(y&&!this.sessionSupported)throw new Error("Session Storage not supported");if(!y&&!this.localSupported)throw new Error("Local Storage not supported");var E=this.storageInterface(y).getItem(R);if(!E)return null;var u=JSON.parse(E);return u.expires&&u.expires<l.now()?(this.storageInterface(y).removeItem(R),null):u.value},S.prototype._remove=function(R,y){return this.storageInterface(y).removeItem(R)},S.prototype.storageInterface=function(R){return R?i.sessionStorage:i.localStorage},S}();r.default=new g}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(67)),l={connectivityCheckUrl:"https://internet-up.ably-realtime.com/is-the-internet-up.txt",jsonpInternetUpUrl:"https://internet-up.ably-realtime.com/is-the-internet-up-0-9.js",defaultTransports:[a.default.XhrPolling,a.default.XhrStreaming,a.default.JsonP,a.default.WebSocket],baseTransportOrder:[a.default.XhrPolling,a.default.XhrStreaming,a.default.JsonP,a.default.WebSocket],transportPreferenceOrder:[a.default.JsonP,a.default.XhrPolling,a.default.XhrStreaming,a.default.WebSocket],upgradeTransports:[a.default.XhrStreaming,a.default.WebSocket]};r.default=l},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a.WebSocket="web_socket",a.Comet="comet",a.XhrStreaming="xhr_streaming",a.XhrPolling="xhr_polling",a.JsonP="jsonp"})(i||(i={})),r.default=i},function(n,r,o){o.r(r);var i=o(29),a=o.n(i),l=o(1),d=o(3),g=o.n(d),S=o(12),R=o.n(S),y=o(17),E=o.n(y),u=function(p){var m="xhr_polling";function b(h,f,c){c.stream=!1,R.a.call(this,h,f,c),this.shortName=m}return l.inherits(b,R.a),b.isAvailable=function(){return g.a.Config.xhrSupported&&g.a.Config.allowComet},b.prototype.toString=function(){return"XHRPollingTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},b.prototype.createRequest=function(h,f,c,s,w){return E.a.createRequest(h,f,c,s,w,this.timeouts)},typeof p!="undefined"&&b.isAvailable()&&(p.supportedTransports[m]=b),b},C=u,M=function(p){var m="xhr_streaming";function b(h,f,c){R.a.call(this,h,f,c),this.shortName=m}return l.inherits(b,R.a),b.isAvailable=function(){return g.a.Config.xhrSupported&&g.a.Config.streamingSupported&&g.a.Config.allowComet},b.prototype.toString=function(){return"XHRStreamingTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},b.prototype.createRequest=function(h,f,c,s,w){return E.a.createRequest(h,f,c,s,w,this.timeouts)},typeof p!="undefined"&&b.isAvailable()&&(p.supportedTransports[m]=b),b},x=M;r.default=[a.a,C,x]}]).default})})(id);var Gg=id.exports;const Wg=pe(Gg),bi=(e,t,n,r,o,i)=>Me(this,null,function*(){try{const a=new Wg.Realtime({token:e.token,clientId:e.clientId});a.connection.on("connected",()=>{i==null||i("connected")}),a.connection.on("failed",R=>{console.error("[❌ ABLY CONNECTION FAILED]",R),i==null||i("failed")}),a.connection.on("disconnected",()=>{i==null||i("disconnected")});const l=`room:${t}:${n}`,d=a.channels.get(l);d.subscribe("messages",R=>{var y;try{const E=(y=R.data)==null?void 0:y.message;if(E&&E.role==="employee"){const u={id:E.id||at(),text:E.content||"",sender:"bot",timestamp:E.createdAt?new Date(E.createdAt):new Date,type:E.type};r(u)}}catch(E){console.error("[❌ MESSAGE PARSING ERROR]",E)}});const g=`room:${t}`;return a.channels.get(g).subscribe("message:livechat",R=>{try{const y=R.data;(y==null?void 0:y.type)==="toggleAI"&&y.conversationId===n&&(o==null||o(y.chatbotActivated))}catch(y){console.error("[❌ TOGGLE AI PARSING ERROR]",y)}}),{client:a,channel:d}}catch(a){throw console.error("[❌ ABLY INITIALIZATION ERROR]",a),a}}),$g=(e,t)=>Me(this,null,function*(){try{const n=Vf(),r=yield fetch(`${n}?conversationId=${e}&chatbotUid=${t}`);return r.ok?yield r.json():(console.error("Failed to fetch conversation data:",r.statusText),null)}catch(n){return console.error("[❌ ABLY TOKEN FETCH ERROR]",n),null}}),ad=e=>{e&&e.close()},Si=()=>({id:at(),text:"Lo siento, hubo un problema con la conexión. Esta es una respuesta de demostración.",sender:"bot",timestamp:new Date().toISOString(),type:"text"}),sd=(e,t,n,r,o)=>{const i=od(t,e),a=od(n,e),l={id:e,senderId:o||"unknown",createdAt:new Date().toISOString(),chatbotActivated:!0,updatedAt:new Date().toISOString(),source:"IFRAME",website:typeof window!="undefined"?window.location.origin:"",messages:i};return{conversationId:e,conversation:l,chatbotUid:r.apiKey,newMessages:a}},ld=e=>Me(this,null,function*(){try{const t=Tg(),n=yield fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});return n.ok?yield n.json():(console.error("WebChat: API request failed:",n.status,n.statusText),null)}catch(t){return console.error("WebChat: Error sending message to API:",t),null}}),ud=e=>{if(e&&e.content){let t;return e.createdAt?t=e.createdAt.endsWith("Z")?e.createdAt:`${e.createdAt}Z`:t=new Date().toISOString(),{id:e.id||at(),text:e.content,sender:"bot",timestamp:t,type:e.type}}return null},Vg=e=>`¡Hola! Soy ${e||"tu asistente"}, ¿En qué te puedo ayudar?
145
+ `;F.mac=F.mac||h(Q,V),a.default.logAction(a.default.LOG_MINOR,"Auth.getTokenRequest()","generated signed request"),A(null,F)})},P.prototype.getAuthParams=function(T){this.method=="basic"?T(null,{key:this.key}):this._ensureValidAuthCredentials(!1,function(I,A){if(I){T(I);return}if(!A)throw new Error("Auth.getAuthParams(): _ensureValidAuthCredentials returned no error or tokenDetails");T(null,{access_token:A.token})})},P.prototype.getAuthHeaders=function(T){this.method=="basic"?T(null,{authorization:"Basic "+this.basicKey}):this._ensureValidAuthCredentials(!1,function(I,A){if(I){T(I);return}if(!A)throw new Error("Auth.getAuthParams(): _ensureValidAuthCredentials returned no error or tokenDetails");T(null,{authorization:"Bearer "+l.toBase64(A.token)})})},P.prototype.getTimestamp=function(T,I){!this.isTimeOffsetSet()&&(T||this.authOptions.queryTime)?this.client.time(I):I(null,this.getTimestampUsingOffset())},P.prototype.getTimestampUsingOffset=function(){return l.now()+(this.client.serverTimeOffset||0)},P.prototype.isTimeOffsetSet=function(){return this.client.serverTimeOffset!==null},P.prototype._saveBasicOptions=function(T){this.method="basic",this.key=T.key,this.basicKey=l.toBase64(T.key),this.authOptions=T||{},"clientId"in T&&this._userSetClientId(T.clientId)},P.prototype._saveTokenOptions=function(T,I){this.method="token",T&&(this.tokenParams=T),I&&(I.token&&(I.tokenDetails=typeof I.token=="string"?{token:I.token}:I.token),I.tokenDetails&&(this.tokenDetails=I.tokenDetails),"clientId"in I&&this._userSetClientId(I.clientId),this.authOptions=I)},P.prototype._ensureValidAuthCredentials=function(T,I){var A=this,D=this.tokenDetails;if(D){if(this._tokenClientIdMismatch(D.clientId)){I(new g.default("Mismatch between clientId in token ("+D.clientId+") and current clientId ("+this.clientId+")",40102,403));return}if(!this.isTimeOffsetSet()||!D.expires||D.expires>=this.getTimestampUsingOffset()){a.default.logAction(a.default.LOG_MINOR,"Auth.getToken()","using cached token; expires = "+D.expires),I(null,D);return}a.default.logAction(a.default.LOG_MINOR,"Auth.getToken()","deleting expired token"),this.tokenDetails=null}if((this.waitingForTokenRequest||(this.waitingForTokenRequest=d.default.create())).push(I),!(this.currentTokenRequestId!==null&&!T)){var B=this.currentTokenRequestId=j();this.requestToken(this.tokenParams,this.authOptions,function(z,$){if(A.currentTokenRequestId>B){a.default.logAction(a.default.LOG_MINOR,"Auth._ensureValidAuthCredentials()","Discarding token request response; overtaken by newer one");return}A.currentTokenRequestId=null;var V=A.waitingForTokenRequest||x;if(A.waitingForTokenRequest=null,z){V(z);return}V(null,A.tokenDetails=$)})}},P.prototype._userSetClientId=function(T){if(typeof T=="string"||T===null){if(T==="*")throw new g.default('Can’t use "*" as a clientId as that string is reserved. (To change the default token request behaviour to use a wildcard clientId, instantiate the library with {defaultTokenParams: {clientId: "*"}}), or if calling authorize(), pass it in as a tokenParam: authorize({clientId: "*"}, authOptions)',40012,400);var I=this._uncheckedSetClientId(T);if(I)throw I}else throw new g.default("clientId must be either a string or null",40012,400)},P.prototype._uncheckedSetClientId=function(T){if(this._tokenClientIdMismatch(T)){var I="Unexpected clientId mismatch: client has "+this.clientId+", requested "+T,A=new g.default(I,40102,401);return a.default.logAction(a.default.LOG_ERROR,"Auth._uncheckedSetClientId()",I),A}else return this.clientId=this.tokenParams.clientId=T,null},P.prototype._tokenClientIdMismatch=function(T){return!!(this.clientId&&this.clientId!=="*"&&T&&T!=="*"&&this.clientId!==T)},P.isTokenErr=function(T){return T.code&&T.code>=40140&&T.code<40150},P.prototype.revokeTokens=function(T,I,A){if(w(this.client.options))throw new g.default("Cannot revoke tokens when using token auth",40162,401);var D=this.client.options.keyName,B;if(typeof I=="function"?(A=I,B={}):B=I!=null?I:{},A===void 0){if(this.client.options.promises)return l.promisify(this,"revokeTokens",[T,B]);A=x}var z=A,$=i.__assign({targets:T.map(function(L){return"".concat(L.type,":").concat(L.value)})},B),V=this.client.options.useBinaryProtocol?l.Format.msgpack:l.Format.json,F=l.defaultPostHeaders(this.client.options,V);this.client.options.headers&&l.mixin(F,this.client.options.headers);var O=l.encodeBody($,V);C.default.post(this.client,"/keys/".concat(D,"/revokeTokens"),O,F,{newBatchResponse:"true"},null,function(L,U,_,W){if(L){z(L);return}var Q=W?U:l.decodeBody(U,V);z(null,Q)})},P}();r.default=N},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a.Get="get",a.Delete="delete",a.Post="post",a.Put="put",a.Patch="patch"})(i||(i={})),r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.HttpPaginatedResponse=r.PaginatedResult=void 0;var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(2)),d=i.__importDefault(o(15)),g=i.__importDefault(o(14));function S(M){var x=M.match(/^\.\/(\w+)\?(.*)$/);return x&&x[2]&&a.parseQueryString(x[2])}function R(M){typeof M=="string"&&(M=M.split(","));for(var x={},p=0;p<M.length;p++){var m=M[p].match(/^\s*<(.+)>;\s*rel="(\w+)"$/);if(m){var b=S(m[1]);b&&(x[m[2]]=b)}}return x}function y(M,x,p){return!(p&&(x||typeof M.code=="number"))}var E=function(){function M(x,p,m,b,h,f){this.rest=x,this.path=p,this.headers=m,this.envelope=b!=null?b:null,this.bodyHandler=h,this.useHttpPaginatedResponse=f||!1}return M.prototype.get=function(x,p){var m=this;d.default.get(this.rest,this.path,this.headers,x,this.envelope,function(b,h,f,c,s){m.handlePage(b,h,f,c,s,p)})},M.prototype.delete=function(x,p){var m=this;d.default.delete(this.rest,this.path,this.headers,x,this.envelope,function(b,h,f,c,s){m.handlePage(b,h,f,c,s,p)})},M.prototype.post=function(x,p,m){var b=this;d.default.post(this.rest,this.path,p,this.headers,x,this.envelope,function(h,f,c,s,w){m&&b.handlePage(h,f,c,s,w,m)})},M.prototype.put=function(x,p,m){var b=this;d.default.put(this.rest,this.path,p,this.headers,x,this.envelope,function(h,f,c,s,w){m&&b.handlePage(h,f,c,s,w,m)})},M.prototype.patch=function(x,p,m){var b=this;d.default.patch(this.rest,this.path,p,this.headers,x,this.envelope,function(h,f,c,s,w){m&&b.handlePage(h,f,c,s,w,m)})},M.prototype.handlePage=function(x,p,m,b,h,f){if(x&&y(x,p,this.useHttpPaginatedResponse)){l.default.logAction(l.default.LOG_ERROR,"PaginatedResource.handlePage()","Unexpected error getting resource: err = "+a.inspectError(x)),f==null||f(x);return}var c,s,w;try{c=h==g.default.NoContent?[]:this.bodyHandler(p,m||{},b)}catch(v){f==null||f(x||v);return}m&&(s=m.Link||m.link)&&(w=R(s)),this.useHttpPaginatedResponse?f(null,new C(this,c,m||{},h,w,x)):f(null,new u(this,c,w))},M}(),u=function(){function M(x,p,m){var b=this;this.resource=x,this.items=p;var h=this;m&&("first"in m&&(this.first=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"first",[]);h.get(m.first,f)}),"current"in m&&(this.current=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"current",[]);h.get(m.current,f)}),this.next=function(f){if(!f&&h.resource.rest.options.promises)return a.promisify(h,"next",[]);"next"in m?h.get(m.next,f):f(null,null)},this.hasNext=function(){return"next"in m},this.isLast=function(){var f;return!(!((f=b.hasNext)===null||f===void 0)&&f.call(b))})}return M.prototype.get=function(x,p){var m=this.resource;d.default.get(m.rest,m.path,m.headers,x,m.envelope,function(b,h,f,c,s){m.handlePage(b,h,f,c,s,p)})},M}();r.PaginatedResult=u;var C=function(M){i.__extends(x,M);function x(p,m,b,h,f,c){var s=M.call(this,p,m,f)||this;return s.statusCode=h,s.success=h<300&&h>=200,s.headers=b,s.errorCode=c&&c.code,s.errorMessage=c&&c.message,s}return x.prototype.toJSON=function(){return{items:this.items,statusCode:this.statusCode,success:this.success,headers:this.headers,errorCode:this.errorCode,errorMessage:this.errorMessage}},x}(u);r.HttpPaginatedResponse=C,r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.isRetriable=void 0;var i=o(0),a=i.__importDefault(o(4)),l={DISCONNECTED:80003,SUSPENDED:80002,FAILED:8e4,CLOSING:80017,CLOSED:80017,UNKNOWN_CONNECTION_ERR:50002,UNKNOWN_CHANNEL_ERR:50001},d={disconnected:function(){return a.default.fromValues({statusCode:400,code:l.DISCONNECTED,message:"Connection to server temporarily unavailable"})},suspended:function(){return a.default.fromValues({statusCode:400,code:l.SUSPENDED,message:"Connection to server unavailable"})},failed:function(){return a.default.fromValues({statusCode:400,code:l.FAILED,message:"Connection failed or disconnected by server"})},closing:function(){return a.default.fromValues({statusCode:400,code:l.CLOSING,message:"Connection closing"})},closed:function(){return a.default.fromValues({statusCode:400,code:l.CLOSED,message:"Connection closed"})},unknownConnectionErr:function(){return a.default.fromValues({statusCode:500,code:l.UNKNOWN_CONNECTION_ERR,message:"Internal connection error"})},unknownChannelErr:function(){return a.default.fromValues({statusCode:500,code:l.UNKNOWN_CONNECTION_ERR,message:"Internal channel error"})}};function g(S){return!S.statusCode||!S.code||S.statusCode>=500?!0:Object.values(l).includes(S.code)}r.isRetriable=g,r.default=d},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a[a.REQ_SEND=0]="REQ_SEND",a[a.REQ_RECV=1]="REQ_RECV",a[a.REQ_RECV_POLL=2]="REQ_RECV_POLL",a[a.REQ_RECV_STREAM=3]="REQ_RECV_STREAM"})(i||(i={})),r.default=i},function(n,r,o){(function(i,a){n.exports=a(o(6),o(5),o(58),o(11),o(40),o(32),o(25),o(27),o(28),o(59),o(60))})(this,function(i){return i})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(2)),l=function(){function d(g){this.members=g||[]}return d.prototype.call=function(){for(var g=[],S=0;S<arguments.length;S++)g[S]=arguments[S];for(var R=0,y=this.members;R<y.length;R++){var E=y[R];if(E)try{E.apply(void 0,g)}catch(u){a.default.logAction(a.default.LOG_ERROR,"Multicaster multiple callback handler","Unexpected exception: "+u+"; stack = "+u.stack)}}},d.prototype.push=function(){for(var g,S=[],R=0;R<arguments.length;R++)S[R]=arguments[R];(g=this.members).push.apply(g,S)},d.create=function(g){var S=new d(g);return Object.assign(function(){for(var R=[],y=0;y<arguments.length;y++)R[y]=arguments[y];return S.call.apply(S,R)},{push:function(R){return S.push(R)}})},d}();r.default=l},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){(function(){var a=i,l=a.lib,d=l.Base,g=a.enc,S=g.Utf8,R=a.algo;R.HMAC=d.extend({init:function(y,E){y=this._hasher=new y.init,typeof E=="string"&&(E=S.parse(E));var u=y.blockSize,C=u*4;E.sigBytes>C&&(E=y.finalize(E)),E.clamp();for(var M=this._oKey=E.clone(),x=this._iKey=E.clone(),p=M.words,m=x.words,b=0;b<u;b++)p[b]^=1549556828,m[b]^=909522486;M.sigBytes=x.sigBytes=C,this.reset()},reset:function(){var y=this._hasher;y.reset(),y.update(this._iKey)},update:function(y){return this._hasher.update(y),this},finalize:function(y){var E=this._hasher,u=E.finalize(y);E.reset();var C=E.finalize(this._oKey.clone().concat(u));return C}})})()})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(10)),l=i.__importStar(o(1)),d=i.__importDefault(o(7)),g=i.__importDefault(o(2)),S=i.__importDefault(o(21)),R=i.__importDefault(o(4)),y=i.__importDefault(o(3)),E=a.default.Action,u=a.default.fromValues({action:E.CLOSE}),C=a.default.fromValues({action:E.DISCONNECT}),M=function(x){i.__extends(p,x);function p(m,b,h,f){var c=x.call(this)||this;return f&&(h.format=void 0,h.heartbeats=!0),c.connectionManager=m,m.registerProposedTransport(c),c.auth=b,c.params=h,c.timeouts=h.options.timeouts,c.format=h.format,c.isConnected=!1,c.isFinished=!1,c.isDisposed=!1,c.maxIdleInterval=null,c.idleTimer=null,c.lastActivity=null,c}return p.prototype.connect=function(){},p.prototype.close=function(){this.isConnected&&this.requestClose(),this.finish("closed",S.default.closed())},p.prototype.disconnect=function(m){this.isConnected&&this.requestDisconnect(),this.finish("disconnected",m||S.default.disconnected())},p.prototype.fail=function(m){this.isConnected&&this.requestDisconnect(),this.finish("failed",m||S.default.failed())},p.prototype.finish=function(m,b){var h;this.isFinished||(this.isFinished=!0,this.isConnected=!1,this.maxIdleInterval=null,clearTimeout((h=this.idleTimer)!==null&&h!==void 0?h:void 0),this.idleTimer=null,this.emit(m,b),this.dispose())},p.prototype.onProtocolMessage=function(m){switch(g.default.shouldLog(g.default.LOG_MICRO)&&g.default.logAction(g.default.LOG_MICRO,"Transport.onProtocolMessage()","received on "+this.shortName+": "+a.default.stringify(m)+"; connectionId = "+this.connectionManager.connectionId),this.onActivity(),m.action){case E.HEARTBEAT:g.default.logAction(g.default.LOG_MICRO,"Transport.onProtocolMessage()",this.shortName+" heartbeat; connectionId = "+this.connectionManager.connectionId),this.emit("heartbeat",m.id);break;case E.CONNECTED:this.onConnect(m),this.emit("connected",m.error,m.connectionId,m.connectionDetails,m);break;case E.CLOSED:this.onClose(m);break;case E.DISCONNECTED:this.onDisconnect(m);break;case E.ACK:this.emit("ack",m.msgSerial,m.count);break;case E.NACK:this.emit("nack",m.msgSerial,m.count,m.error);break;case E.SYNC:this.connectionManager.onChannelMessage(m,this);break;case E.ACTIVATE:break;case E.AUTH:this.auth.authorize(function(b){b&&g.default.logAction(g.default.LOG_ERROR,"Transport.onProtocolMessage()","Ably requested re-authentication, but unable to obtain a new token: "+l.inspectError(b))});break;case E.ERROR:if(g.default.logAction(g.default.LOG_MINOR,"Transport.onProtocolMessage()","received error action; connectionId = "+this.connectionManager.connectionId+"; err = "+y.default.Config.inspect(m.error)+(m.channel?", channel: "+m.channel:"")),m.channel===void 0){this.onFatalError(m);break}this.connectionManager.onChannelMessage(m,this);break;default:this.connectionManager.onChannelMessage(m,this)}},p.prototype.onConnect=function(m){if(this.isConnected=!0,!m.connectionDetails)throw new Error("Transport.onConnect(): Connect message recieved without connectionDetails");var b=m.connectionDetails.maxIdleInterval;b&&(this.maxIdleInterval=b+this.timeouts.realtimeRequestTimeout,this.onActivity())},p.prototype.onDisconnect=function(m){var b=m&&m.error;g.default.logAction(g.default.LOG_MINOR,"Transport.onDisconnect()","err = "+l.inspectError(b)),this.finish("disconnected",b)},p.prototype.onFatalError=function(m){var b=m&&m.error;g.default.logAction(g.default.LOG_MINOR,"Transport.onFatalError()","err = "+l.inspectError(b)),this.finish("failed",b)},p.prototype.onClose=function(m){var b=m&&m.error;g.default.logAction(g.default.LOG_MINOR,"Transport.onClose()","err = "+l.inspectError(b)),this.finish("closed",b)},p.prototype.requestClose=function(){g.default.logAction(g.default.LOG_MINOR,"Transport.requestClose()",""),this.send(u)},p.prototype.requestDisconnect=function(){g.default.logAction(g.default.LOG_MINOR,"Transport.requestDisconnect()",""),this.send(C)},p.prototype.ping=function(m){var b={action:a.default.Action.HEARTBEAT};m&&(b.id=m),this.send(a.default.fromValues(b))},p.prototype.dispose=function(){g.default.logAction(g.default.LOG_MINOR,"Transport.dispose()",""),this.isDisposed=!0,this.off()},p.prototype.onActivity=function(){this.maxIdleInterval&&(this.lastActivity=this.connectionManager.lastActivity=l.now(),this.setIdleTimer(this.maxIdleInterval+100))},p.prototype.setIdleTimer=function(m){var b=this;this.idleTimer||(this.idleTimer=setTimeout(function(){b.onIdleTimerExpire()},m))},p.prototype.onIdleTimerExpire=function(){if(!this.lastActivity||!this.maxIdleInterval)throw new Error("Transport.onIdleTimerExpire(): lastActivity/maxIdleInterval not set");this.idleTimer=null;var m=l.now()-this.lastActivity,b=this.maxIdleInterval-m;if(b<=0){var h="No activity seen from realtime in "+m+"ms; assuming connection has dropped";g.default.logAction(g.default.LOG_ERROR,"Transport.onIdleTimerExpire()",h),this.disconnect(new R.default(h,80003,408))}else this.setIdleTimer(b+100)},p.tryConnect=function(m,b,h,f,c){var s=new m(b,h,f),w,v=function(j){clearTimeout(w),c({event:this.event,error:j})},k=b.options.timeouts.realtimeRequestTimeout;w=setTimeout(function(){s.off(["preconnect","disconnected","failed"]),s.dispose(),v.call({event:"disconnected"},new R.default("Timeout waiting for transport to indicate itself viable",5e4,500))},k),s.on(["failed","disconnected"],v),s.on("preconnect",function(){g.default.logAction(g.default.LOG_MINOR,"Transport.tryConnect()","viable transport "+s),clearTimeout(w),s.off(["failed","disconnected"],v),c(null,s)}),s.connect()},p}(d.default);r.default=M},function(n,r,o){(function(i,a){n.exports=a(o(6),o(40),o(25))})(this,function(i){return function(){var a=i,l=a.lib,d=l.Base,g=l.WordArray,S=a.algo,R=S.MD5,y=S.EvpKDF=d.extend({cfg:d.extend({keySize:128/32,hasher:R,iterations:1}),init:function(E){this.cfg=this.cfg.extend(E)},compute:function(E,u){for(var C,M=this.cfg,x=M.hasher.create(),p=g.create(),m=p.words,b=M.keySize,h=M.iterations;m.length<b;){C&&x.update(C),C=x.update(E).finalize(u),x.reset();for(var f=1;f<h;f++)C=x.finalize(C),x.reset();p.concat(C)}return p.sigBytes=b*4,p}});a.EvpKDF=function(E,u,C){return y.create(C).compute(E,u)}}(),i.EvpKDF})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(27))})(this,function(i){i.lib.Cipher||function(a){var l=i,d=l.lib,g=d.Base,S=d.WordArray,R=d.BufferedBlockAlgorithm,y=l.enc;y.Utf8;var E=y.Base64,u=l.algo,C=u.EvpKDF,M=d.Cipher=R.extend({cfg:g.extend(),createEncryptor:function(N,P){return this.create(this._ENC_XFORM_MODE,N,P)},createDecryptor:function(N,P){return this.create(this._DEC_XFORM_MODE,N,P)},init:function(N,P,T){this.cfg=this.cfg.extend(T),this._xformMode=N,this._key=P,this.reset()},reset:function(){R.reset.call(this),this._doReset()},process:function(N){return this._append(N),this._process()},finalize:function(N){N&&this._append(N);var P=this._doFinalize();return P},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function N(P){return typeof P=="string"?j:w}return function(P){return{encrypt:function(T,I,A){return N(I).encrypt(P,T,I,A)},decrypt:function(T,I,A){return N(I).decrypt(P,T,I,A)}}}}()});d.StreamCipher=M.extend({_doFinalize:function(){var N=this._process(!0);return N},blockSize:1});var x=l.mode={},p=d.BlockCipherMode=g.extend({createEncryptor:function(N,P){return this.Encryptor.create(N,P)},createDecryptor:function(N,P){return this.Decryptor.create(N,P)},init:function(N,P){this._cipher=N,this._iv=P}}),m=x.CBC=function(){var N=p.extend();N.Encryptor=N.extend({processBlock:function(T,I){var A=this._cipher,D=A.blockSize;P.call(this,T,I,D),A.encryptBlock(T,I),this._prevBlock=T.slice(I,I+D)}}),N.Decryptor=N.extend({processBlock:function(T,I){var A=this._cipher,D=A.blockSize,B=T.slice(I,I+D);A.decryptBlock(T,I),P.call(this,T,I,D),this._prevBlock=B}});function P(T,I,A){var D,B=this._iv;B?(D=B,this._iv=a):D=this._prevBlock;for(var z=0;z<A;z++)T[I+z]^=D[z]}return N}(),b=l.pad={},h=b.Pkcs7={pad:function(N,P){for(var T=P*4,I=T-N.sigBytes%T,A=I<<24|I<<16|I<<8|I,D=[],B=0;B<I;B+=4)D.push(A);var z=S.create(D,I);N.concat(z)},unpad:function(N){var P=N.words[N.sigBytes-1>>>2]&255;N.sigBytes-=P}};d.BlockCipher=M.extend({cfg:M.cfg.extend({mode:m,padding:h}),reset:function(){var N;M.reset.call(this);var P=this.cfg,T=P.iv,I=P.mode;this._xformMode==this._ENC_XFORM_MODE?N=I.createEncryptor:(N=I.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==N?this._mode.init(this,T&&T.words):(this._mode=N.call(I,this,T&&T.words),this._mode.__creator=N)},_doProcessBlock:function(N,P){this._mode.processBlock(N,P)},_doFinalize:function(){var N,P=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(P.pad(this._data,this.blockSize),N=this._process(!0)):(N=this._process(!0),P.unpad(N)),N},blockSize:128/32});var f=d.CipherParams=g.extend({init:function(N){this.mixIn(N)},toString:function(N){return(N||this.formatter).stringify(this)}}),c=l.format={},s=c.OpenSSL={stringify:function(N){var P,T=N.ciphertext,I=N.salt;return I?P=S.create([1398893684,1701076831]).concat(I).concat(T):P=T,P.toString(E)},parse:function(N){var P,T=E.parse(N),I=T.words;return I[0]==1398893684&&I[1]==1701076831&&(P=S.create(I.slice(2,4)),I.splice(0,4),T.sigBytes-=16),f.create({ciphertext:T,salt:P})}},w=d.SerializableCipher=g.extend({cfg:g.extend({format:s}),encrypt:function(N,P,T,I){I=this.cfg.extend(I);var A=N.createEncryptor(T,I),D=A.finalize(P),B=A.cfg;return f.create({ciphertext:D,key:T,iv:B.iv,algorithm:N,mode:B.mode,padding:B.padding,blockSize:N.blockSize,formatter:I.format})},decrypt:function(N,P,T,I){I=this.cfg.extend(I),P=this._parse(P,I.format);var A=N.createDecryptor(T,I).finalize(P.ciphertext);return A},_parse:function(N,P){return typeof N=="string"?P.parse(N,this):N}}),v=l.kdf={},k=v.OpenSSL={execute:function(N,P,T,I){I||(I=S.random(64/8));var A=C.create({keySize:P+T}).compute(N,I),D=S.create(A.words.slice(P),T*4);return A.sigBytes=P*4,f.create({key:A,iv:D,salt:I})}},j=d.PasswordBasedCipher=w.extend({cfg:w.cfg.extend({kdf:k}),encrypt:function(N,P,T,I){I=this.cfg.extend(I);var A=I.kdf.execute(T,N.keySize,N.ivSize);I.iv=A.iv;var D=w.encrypt.call(this,N,P,A.key,I);return D.mixIn(A),D},decrypt:function(N,P,T,I){I=this.cfg.extend(I),P=this._parse(P,I.format);var A=I.kdf.execute(T,N.keySize,N.ivSize,P.salt);I.iv=A.iv;var D=w.decrypt.call(this,N,P,A.key,I);return D}})}()})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.Request=r.createRequest=void 0;var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(12)),d=i.__importDefault(o(3)),g=i.__importDefault(o(7)),S=o(4),R=i.__importDefault(o(8)),y=i.__importDefault(o(2)),E=i.__importDefault(o(22)),u=a.getGlobalObject(),C=function(){},M=u._ablyjs_jsonp={};M._=function(c){return M["_"+c]||C};var x=1,p="jsonp";function m(c,s,w,v,k,j,N){return j=j||R.default.TIMEOUTS,new h(void 0,c,s,a.copy(w),v,k,j,N)}r.createRequest=m;var b=function(c){i.__extends(s,c);function s(w,v,k){var j=c.call(this,w,v,k)||this;return j.shortName=p,k.stream=!1,j}return s.isAvailable=function(){return d.default.Config.jsonpSupported&&d.default.Config.allowComet},s.prototype.toString=function(){return"JSONPTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},s.prototype.createRequest=function(w,v,k,j,N,P,T){return P=(this===null||this===void 0?void 0:this.timeouts)||P||R.default.TIMEOUTS,m(w,v,k,j,N,P,T)},s}(l.default),h=function(c){i.__extends(s,c);function s(w,v,k,j,N,P,T,I){var A=c.call(this)||this;return w===void 0&&(w=x++),A.id=w,A.uri=v,A.params=j||{},A.params.rnd=a.cheapRandStr(),k&&(k["X-Ably-Version"]&&(A.params.v=k["X-Ably-Version"]),k["X-Ably-Lib"]&&(A.params.lib=k["X-Ably-Lib"])),A.body=N,A.method=I,A.requestMode=P,A.timeouts=T,A.requestComplete=!1,A}return s.prototype.exec=function(){var w=this,v=this.id,k=this.body,j=this.method,N=this.uri,P=this.params;P.callback="_ablyjs_jsonp._("+v+")",P.envelope="jsonp",k&&(P.body=k),j&&j!=="get"&&(P.method=j);var T=this.script=document.createElement("script"),I=N+a.toQueryString(P);T.src=I,T.src.split("/").slice(-1)[0]!==I.split("/").slice(-1)[0]&&y.default.logAction(y.default.LOG_ERROR,"JSONP Request.exec()","Warning: the browser appears to have truncated the script URI. This will likely result in the request failing due to an unparseable body param"),T.async=!0,T.type="text/javascript",T.charset="UTF-8",T.onerror=function(B){w.complete(new S.PartialErrorInfo("JSONP script error (event: "+d.default.Config.inspect(B)+")",null,400))},M["_"+v]=function(B){if(B.statusCode){var z=B.response;if(B.statusCode==204)w.complete(null,null,null,B.statusCode);else if(!z)w.complete(new S.PartialErrorInfo("Invalid server response: no envelope detected",null,500));else if(B.statusCode<400||a.isArray(z))w.complete(null,z,B.headers,B.statusCode);else{var $=z.error||new S.PartialErrorInfo("Error response received from server",null,B.statusCode);w.complete($)}}else w.complete(null,B)};var A=this.requestMode==E.default.REQ_SEND?this.timeouts.httpRequestTimeout:this.timeouts.recvTimeout;this.timer=setTimeout(this.abort.bind(this),A);var D=document.getElementsByTagName("head")[0];D.insertBefore(T,D.firstChild)},s.prototype.complete=function(w,v,k,j){if(k=k||{},!this.requestComplete){this.requestComplete=!0;var N=void 0;v&&(N=typeof v=="string"?"text/plain":"application/json",k["content-type"]=N,this.emit("data",v)),this.emit("complete",w,v,k,!0,j),this.dispose()}},s.prototype.abort=function(){this.dispose()},s.prototype.dispose=function(){var w=this.timer;w&&(clearTimeout(w),this.timer=null);var v=this.script;v.parentNode&&v.parentNode.removeChild(v),delete M[this.id],this.emit("disposed")},s}(g.default);r.Request=h;function f(c){return u.JSONPTransport=b,b.isAvailable()&&(c.supportedTransports[p]=b),b}r.default=f},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(2)),d=i.__importDefault(o(8)),g=i.__importDefault(o(18)),S=i.__importDefault(o(46)),R=i.__importDefault(o(20)),y=i.__importDefault(o(33)),E=i.__importDefault(o(4)),u=i.__importDefault(o(49)),C=i.__importDefault(o(19)),M=i.__importDefault(o(3)),x=i.__importDefault(o(9)),p=i.__importDefault(o(16)),m=i.__importDefault(o(15)),b=function(){},h=function(){function c(s){if(!s){var w="no options provided";throw l.default.logAction(l.default.LOG_ERROR,"Rest()",w),new Error(w)}var v=d.default.objectifyOptions(s);v.log?(l.default.setLog(v.log.level,v.log.handler),l.default.deprecated("The `log` client option","Equivalent functionality is provided by the `logLevel` and `logHandler` client options. Update your client options code of the form `{ log: { level: logLevel, handler: logHandler } }` to instead be `{ logLevel, logHandler }`.")):l.default.setLog(v.logLevel,v.logHandler),l.default.logAction(l.default.LOG_MICRO,"Rest()","initialized with clientOptions "+M.default.Config.inspect(s));var k=this.options=d.default.normaliseOptions(v);if(k.key){var j=k.key.match(/^([^:\s]+):([^:.\s]+)$/);if(!j){var w="invalid key parameter";throw l.default.logAction(l.default.LOG_ERROR,"Rest()",w),new E.default(w,40400,404)}k.keyName=j[1],k.keySecret=j[2]}if("clientId"in k)if(typeof k.clientId=="string"||k.clientId===null){if(k.clientId==="*")throw new E.default('Can’t use "*" as a clientId as that string is reserved. (To change the default token request behaviour to use a wildcard clientId, use {defaultTokenParams: {clientId: "*"}})',40012,400)}else throw new E.default("clientId must be either a string or null",40012,400);l.default.logAction(l.default.LOG_MINOR,"Rest()","started; version = "+d.default.version),this.baseUri=this.authority=function(N){return d.default.getHttpScheme(k)+N+":"+d.default.getPort(k,!1)},this._currentFallback=null,this.serverTimeOffset=null,this.http=new M.default.Http(k),this.auth=new g.default(this,k),this.channels=new f(this),this.push=new S.default(this)}return c.prototype.stats=function(s,w){if(w===void 0)if(typeof s=="function")w=s,s=null;else{if(this.options.promises)return a.promisify(this,"stats",[s]);w=b}var v=a.defaultGetHeaders(this.options),k=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,j=this.http.supportsLinkHeaders?void 0:k;this.options.headers&&a.mixin(v,this.options.headers),new R.default(this,"/stats",v,j,function(N,P,T){for(var I=T?N:JSON.parse(N),A=0;A<I.length;A++)I[A]=u.default.fromValues(I[A]);return I}).get(s,w)},c.prototype.time=function(s,w){var v=this;if(w===void 0){if(typeof s=="function")w=s,s=null;else if(this.options.promises)return a.promisify(this,"time",[s])}var k=w||b,j=a.defaultGetHeaders(this.options);this.options.headers&&a.mixin(j,this.options.headers);var N=function(P){return v.authority(P)+"/time"};this.http.do(C.default.Get,this,N,j,null,s,function(P,T,I,A){if(P){k(P);return}A||(T=JSON.parse(T));var D=T[0];if(!D){k(new E.default("Internal error (unexpected result type from GET /time)",5e4,500));return}v.serverTimeOffset=D-a.now(),k(null,D)})},c.prototype.request=function(s,w,v,k,j,N){var P=this.options.useBinaryProtocol,T=P?M.default.Config.msgpack.encode:JSON.stringify,I=P?M.default.Config.msgpack.decode:JSON.parse,A=P?a.Format.msgpack:a.Format.json,D=this.http.supportsLinkHeaders?void 0:A;v=v||{};var B=s.toLowerCase(),z=B=="get"?a.defaultGetHeaders(this.options,A):a.defaultPostHeaders(this.options,A);if(N===void 0){if(this.options.promises)return a.promisify(this,"request",[s,w,v,k,j]);N=b}typeof k!="string"&&(k=T(k)),this.options.headers&&a.mixin(z,this.options.headers),j&&a.mixin(z,j);var $=new R.default(this,w,z,D,function(V,F,O){return a.ensureArray(O?V:I(V))},!0);if(!a.arrIn(M.default.Http.methods,B))throw new E.default("Unsupported method "+B,40500,405);a.arrIn(M.default.Http.methodsWithBody,B)?$[B](v,k,N):$[B](v,N)},c.prototype.batchPublish=function(s,w){if(w===void 0){if(this.options.promises)return a.promisify(this,"batchPublish",[s]);w=b}var v=w,k,j;a.isArray(s)?(k=s,j=!1):(k=[s],j=!0);var N=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,P=a.defaultPostHeaders(this.options,N);this.options.headers&&a.mixin(P,this.options.headers);var T=a.encodeBody(k,N);m.default.post(this,"/messages",T,P,{newBatchResponse:"true"},null,function(I,A,D,B){if(I){v(I);return}var z=B?A:a.decodeBody(A,N);j?v(null,z[0]):v(null,z)})},c.prototype.batchPresence=function(s,w){if(w===void 0){if(this.options.promises)return a.promisify(this,"batchPresence",[s]);w=b}var v=w,k=this.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,j=a.defaultPostHeaders(this.options,k);this.options.headers&&a.mixin(j,this.options.headers);var N=s.join(",");m.default.get(this,"/presence",j,{newBatchResponse:"true",channels:N},null,function(P,T,I,A){if(P){v(P);return}var D=A?T:a.decodeBody(T,k);v(null,D)})},c.prototype.setLog=function(s){l.default.setLog(s.level,s.handler)},c.Promise=function(s){return s=d.default.objectifyOptions(s),s.promises=!0,new c(s)},c.Callbacks=c,c.Platform=M.default,c.Message=x.default,c.PresenceMessage=p.default,c}(),f=function(){function c(s){this.rest=s,this.all=Object.create(null)}return c.prototype.get=function(s,w){s=String(s);var v=this.all[s];return v?w&&v.setOptions(w):this.all[s]=v=new y.default(this.rest,s,w),v},c.prototype.release=function(s){delete this.all[String(s)]},c}();r.default=h},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return i.enc.Utf8})},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(a){var l=i,d=l.lib,g=d.WordArray,S=d.Hasher,R=l.algo,y=[],E=[];(function(){function M(b){for(var h=a.sqrt(b),f=2;f<=h;f++)if(!(b%f))return!1;return!0}function x(b){return(b-(b|0))*4294967296|0}for(var p=2,m=0;m<64;)M(p)&&(m<8&&(y[m]=x(a.pow(p,1/2))),E[m]=x(a.pow(p,1/3)),m++),p++})();var u=[],C=R.SHA256=S.extend({_doReset:function(){this._hash=new g.init(y.slice(0))},_doProcessBlock:function(M,x){for(var p=this._hash.words,m=p[0],b=p[1],h=p[2],f=p[3],c=p[4],s=p[5],w=p[6],v=p[7],k=0;k<64;k++){if(k<16)u[k]=M[x+k]|0;else{var j=u[k-15],N=(j<<25|j>>>7)^(j<<14|j>>>18)^j>>>3,P=u[k-2],T=(P<<15|P>>>17)^(P<<13|P>>>19)^P>>>10;u[k]=N+u[k-7]+T+u[k-16]}var I=c&s^~c&w,A=m&b^m&h^b&h,D=(m<<30|m>>>2)^(m<<19|m>>>13)^(m<<10|m>>>22),B=(c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25),z=v+B+I+E[k]+u[k],$=D+A;v=w,w=s,s=c,c=f+z|0,f=h,h=b,b=m,m=z+$|0}p[0]=p[0]+m|0,p[1]=p[1]+b|0,p[2]=p[2]+h|0,p[3]=p[3]+f|0,p[4]=p[4]+c|0,p[5]=p[5]+s|0,p[6]=p[6]+w|0,p[7]=p[7]+v|0},_doFinalize:function(){var M=this._data,x=M.words,p=this._nDataBytes*8,m=M.sigBytes*8;return x[m>>>5]|=128<<24-m%32,x[(m+64>>>9<<4)+14]=a.floor(p/4294967296),x[(m+64>>>9<<4)+15]=p,M.sigBytes=x.length*4,this._process(),this._hash},clone:function(){var M=S.clone.call(this);return M._hash=this._hash.clone(),M}});l.SHA256=S._createHelper(C),l.HmacSHA256=S._createHmacHelper(C)}(Math),i.SHA256})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(2)),g=i.__importDefault(o(34)),S=i.__importDefault(o(9)),R=i.__importDefault(o(4)),y=i.__importDefault(o(20)),E=i.__importDefault(o(15)),u=i.__importDefault(o(3));function C(){}var M=9;function x(b){return a.arrEvery(b,function(h){return!h.id})}function p(b){var h=b||{};if(h.cipher){if(!u.default.Crypto)throw new Error("Encryption not enabled; use ably.encryption.js instead");var f=u.default.Crypto.getCipher(h.cipher);h.cipher=f.cipherParams,h.channelCipher=f.cipher}else"cipher"in h&&(h.cipher=void 0,h.channelCipher=null);return h}var m=function(b){i.__extends(h,b);function h(f,c,s){var w=b.call(this)||this;return d.default.logAction(d.default.LOG_MINOR,"Channel()","started; name = "+c),w.rest=f,w.name=c,w.basePath="/channels/"+encodeURIComponent(c),w.presence=new g.default(w),w.channelOptions=p(s),w}return h.prototype.setOptions=function(f){this.channelOptions=p(f)},h.prototype.history=function(f,c){if(d.default.logAction(d.default.LOG_MICRO,"Channel.history()","channel = "+this.name),c===void 0)if(typeof f=="function")c=f,f=null;else{if(this.rest.options.promises)return a.promisify(this,"history",arguments);c=C}this._history(f,c)},h.prototype._history=function(f,c){var s=this.rest,w=s.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,v=this.rest.http.supportsLinkHeaders?void 0:w,k=a.defaultGetHeaders(s.options,w);s.options.headers&&a.mixin(k,s.options.headers);var j=this.channelOptions;new y.default(s,this.basePath+"/messages",k,v,function(N,P,T){return S.default.fromResponseBody(N,j,T?void 0:w)}).get(f,c)},h.prototype.publish=function(){var f=this,c=arguments.length,s=arguments[0],w=arguments[1],v=arguments[c-1],k,j;if(typeof v!="function"){if(this.rest.options.promises)return a.promisify(this,"publish",arguments);v=C}if(typeof s=="string"||s===null)k=[S.default.fromValues({name:s,data:w})],j=arguments[2];else if(a.isObject(s))k=[S.default.fromValues(s)],j=arguments[1];else if(a.isArray(s))k=S.default.fromValuesArray(s),j=arguments[1];else throw new R.default("The single-argument form of publish() expects a message object or an array of message objects",40013,400);(typeof j!="object"||!j)&&(j={});var N=this.rest,P=N.options,T=P.useBinaryProtocol?a.Format.msgpack:a.Format.json,I=N.options.idempotentRestPublishing,A=a.defaultPostHeaders(N.options,T);if(P.headers&&a.mixin(A,P.headers),I&&x(k)){var D=a.randomString(M);a.arrForEach(k,function(B,z){B.id=D+":"+z.toString()})}S.default.encodeArray(k,this.channelOptions,function(B){if(B){v(B);return}var z=S.default.getMessagesSize(k),$=P.maxMessageSize;if(z>$){v(new R.default("Maximum size of messages that can be published at once exceeded ( was "+z+" bytes; limit is "+$+" bytes)",40009,400));return}f._publish(S.default.serialize(k,T),A,j,v)})},h.prototype._publish=function(f,c,s,w){E.default.post(this.rest,this.basePath+"/messages",f,c,s,null,w)},h.prototype.status=function(f){if(typeof f!="function"&&this.rest.options.promises)return a.promisify(this,"status",[]);var c=this.rest.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,s=a.defaultPostHeaders(this.rest.options,c);E.default.get(this.rest,this.basePath,s,{},c,f||C)},h}(l.default);r.default=m},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(2)),g=i.__importDefault(o(20)),S=i.__importDefault(o(16));function R(){}var y=function(E){i.__extends(u,E);function u(C){var M=E.call(this)||this;return M.channel=C,M.basePath=C.basePath+"/presence",M}return u.prototype.get=function(C,M){if(d.default.logAction(d.default.LOG_MICRO,"Presence.get()","channel = "+this.channel.name),M===void 0)if(typeof C=="function")M=C,C=null;else{if(this.channel.rest.options.promises)return a.promisify(this,"get",arguments);M=R}var x=this.channel.rest,p=x.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,m=this.channel.rest.http.supportsLinkHeaders?void 0:p,b=a.defaultGetHeaders(x.options,p);x.options.headers&&a.mixin(b,x.options.headers);var h=this.channel.channelOptions;new g.default(x,this.basePath,b,m,function(f,c,s){return S.default.fromResponseBody(f,h,s?void 0:p)}).get(C,M)},u.prototype.history=function(C,M){return d.default.logAction(d.default.LOG_MICRO,"Presence.history()","channel = "+this.channel.name),this._history(C,M)},u.prototype._history=function(C,M){if(M===void 0)if(typeof C=="function")M=C,C=null;else{if(this.channel.rest.options.promises)return a.promisify(this,"_history",[C]);M=R}var x=this.channel.rest,p=x.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,m=this.channel.rest.http.supportsLinkHeaders?void 0:p,b=a.defaultGetHeaders(x.options,p);x.options.headers&&a.mixin(b,x.options.headers);var h=this.channel.channelOptions;new g.default(x,this.basePath+"/history",b,m,function(f,c,s){return S.default.fromResponseBody(f,h,s?void 0:p)}).get(C,M)},u}(l.default);r.default=y},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0}),r.TransportParams=void 0;var a=o(0),l=a.__importDefault(o(10)),d=a.__importStar(o(1)),g=a.__importStar(o(52)),S=a.__importStar(o(8)),R=a.__importDefault(o(3)),y=a.__importDefault(o(7)),E=a.__importDefault(o(36)),u=a.__importDefault(o(2)),C=a.__importDefault(o(37)),M=a.__importStar(o(21)),x=a.__importStar(o(4)),p=a.__importDefault(o(18)),m=a.__importDefault(o(9)),b=a.__importDefault(o(24)),h=a.__importDefault(o(53)),f=a.__importDefault(o(26)),c=a.__importDefault(o(14)),s=function(){var V;return typeof R.default.WebStorage!="undefined"&&((V=R.default.WebStorage)===null||V===void 0?void 0:V.localSupported)},w=function(){var V;return typeof R.default.WebStorage!="undefined"&&((V=R.default.WebStorage)===null||V===void 0?void 0:V.sessionSupported)},v=l.default.Action,k=function(){},j="ably-transport-preference",N="ably-connection-recovery";function P(){var V,F;return w()&&((F=(V=R.default.WebStorage)===null||V===void 0?void 0:V.getSession)===null||F===void 0?void 0:F.call(V,N))}function T(V){var F,O;return w()&&((O=(F=R.default.WebStorage)===null||F===void 0?void 0:F.setSession)===null||O===void 0?void 0:O.call(F,N,V))}function I(){var V,F;return w()&&((F=(V=R.default.WebStorage)===null||V===void 0?void 0:V.removeSession)===null||F===void 0?void 0:F.call(V,N))}function A(V,F){return d.arrIndexOf(R.default.Defaults.transportPreferenceOrder,V.shortName)>d.arrIndexOf(R.default.Defaults.transportPreferenceOrder,F.shortName)}function D(V,F,O){var L;if(V.channel!==F.channel||(L=V.action)!==v.PRESENCE&&L!==v.MESSAGE||L!==F.action)return!1;var U=L===v.PRESENCE?"presence":"messages",_=V[U].concat(F[U]),W=m.default.getMessagesSize(_);return W>O||!d.allSame(_,"clientId")||!d.arrEvery(_,function(Q){return!Q.id})?!1:(V[U]=_,!0)}function B(V){try{return JSON.parse(V)}catch(F){return null}}var z=function(){function V(F,O,L,U){this.options=F,this.host=O,this.mode=L,this.connectionKey=U,this.format=F.useBinaryProtocol?d.Format.msgpack:d.Format.json}return V.prototype.getConnectParams=function(F){var O=F?d.copy(F):{},L=this.options;switch(this.mode){case"upgrade":O.upgrade=this.connectionKey;break;case"resume":O.resume=this.connectionKey;break;case"recover":{var U=B(L.recover);U&&(O.recover=U.connectionKey);break}}return L.clientId!==void 0&&(O.clientId=L.clientId),L.echoMessages===!1&&(O.echo="false"),this.format!==void 0&&(O.format=this.format),this.stream!==void 0&&(O.stream=this.stream),this.heartbeats!==void 0&&(O.heartbeats=this.heartbeats),O.v=S.default.protocolVersion,O.agent=(0,S.getAgentString)(this.options),L.transportParams!==void 0&&d.mixin(O,L.transportParams),O},V.prototype.toString=function(){var F="[mode="+this.mode;return this.host&&(F+=",host="+this.host),this.connectionKey&&(F+=",connectionKey="+this.connectionKey),this.format&&(F+=",format="+this.format),F+="]",F},V}();r.TransportParams=z;var $=function(V){a.__extends(F,V);function F(O,L){var U=V.call(this)||this;U.disconnectedRetryCount=0,F.initTransports(),U.realtime=O,U.options=L;var _=L.timeouts,W=_.preferenceConnectTimeout+_.realtimeRequestTimeout;if(U.states={initialized:{state:"initialized",terminal:!1,queueEvents:!0,sendEvents:!1,failState:"disconnected"},connecting:{state:"connecting",terminal:!1,queueEvents:!0,sendEvents:!1,retryDelay:W,failState:"disconnected"},connected:{state:"connected",terminal:!1,queueEvents:!1,sendEvents:!0,failState:"disconnected"},synchronizing:{state:"connected",terminal:!1,queueEvents:!0,sendEvents:!1,forceQueueEvents:!0,failState:"disconnected"},disconnected:{state:"disconnected",terminal:!1,queueEvents:!0,sendEvents:!1,retryDelay:_.disconnectedRetryTimeout,failState:"disconnected"},suspended:{state:"suspended",terminal:!1,queueEvents:!1,sendEvents:!1,retryDelay:_.suspendedRetryTimeout,failState:"suspended"},closing:{state:"closing",terminal:!1,queueEvents:!1,sendEvents:!1,retryDelay:_.realtimeRequestTimeout,failState:"closed"},closed:{state:"closed",terminal:!0,queueEvents:!1,sendEvents:!1,failState:"closed"},failed:{state:"failed",terminal:!0,queueEvents:!1,sendEvents:!1,failState:"failed"}},U.state=U.states.initialized,U.errorReason=null,U.queuedMessages=new E.default,U.msgSerial=0,U.connectionDetails=void 0,U.connectionId=void 0,U.connectionKey=void 0,U.connectionStateTtl=_.connectionStateTtl,U.maxIdleInterval=null,U.transports=d.intersect(L.transports||S.default.defaultTransports,F.supportedTransports),U.baseTransport=d.intersect(S.default.baseTransportOrder,U.transports)[0],U.upgradeTransports=d.intersect(U.transports,S.default.upgradeTransports),U.transportPreference=null,U.httpHosts=S.default.getHosts(L),U.activeProtocol=null,U.proposedTransports=[],U.pendingTransports=[],U.host=null,U.lastAutoReconnectAttempt=null,U.lastActivity=null,U.forceFallbackHost=!1,U.connectCounter=0,u.default.logAction(u.default.LOG_MINOR,"Realtime.ConnectionManager()","started"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","requested transports = ["+(L.transports||S.default.defaultTransports)+"]"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","available transports = ["+U.transports+"]"),u.default.logAction(u.default.LOG_MICRO,"Realtime.ConnectionManager()","http hosts = ["+U.httpHosts+"]"),!U.transports.length){var Q="no requested transports available";throw u.default.logAction(u.default.LOG_ERROR,"realtime.ConnectionManager()",Q),new Error(Q)}var X=R.default.Config.addEventListener;return X&&(w()&&typeof L.recover=="function"&&X("beforeunload",U.persistConnection.bind(U)),L.closeOnUnload===!0&&X("beforeunload",function(){u.default.logAction(u.default.LOG_MAJOR,"Realtime.ConnectionManager()","beforeunload event has triggered the connection to close as closeOnUnload is true"),U.requestState({state:"closing"})}),X("online",function(){U.state==U.states.disconnected||U.state==U.states.suspended?(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager caught browser ‘online’ event","reattempting connection"),U.requestState({state:"connecting"})):U.state==U.states.connecting&&(U.pendingTransports.forEach(function(ne){ne.off()}),U.disconnectAllTransports(),U.startConnect())}),X("offline",function(){U.state==U.states.connected&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager caught browser ‘offline’ event","disconnecting active transport"),U.disconnectAllTransports())})),U}return F.initTransports=function(){(0,h.default)(F),d.arrForEach(R.default.Transports,function(O){O(F)})},F.prototype.createTransportParams=function(O,L){return new z(this.options,O,L,this.connectionKey)},F.prototype.getTransportParams=function(O){var L=this,U=function(_){if(L.connectionKey){_("resume");return}if(typeof L.options.recover=="string"){_("recover");return}var W=L.options.recover,Q=P();if(Q&&typeof W=="function"){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Calling clientOptions-provided recover function with last session data"),W(Q,function(X){X?(L.options.recover=Q.recoveryKey,_("recover")):_("clean")});return}_("clean")};U(function(_){var W=L.createTransportParams(null,_);if(_==="recover"){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Transport recovery mode = recover; recoveryKey = "+L.options.recover);var Q=B(L.options.recover);Q&&(L.msgSerial=Q.msgSerial)}else u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.getTransportParams()","Transport params = "+W.toString());O(W)})},F.prototype.tryATransport=function(O,L,U){var _=this;u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.tryATransport()","trying "+L),f.default.tryConnect(F.supportedTransports[L],this,this.realtime.auth,O,function(W,Q){var X=_.state;if(X==_.states.closing||X==_.states.closed||X==_.states.failed){Q&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.tryATransport()","connection "+X.state+" while we were attempting the transport; closing "+Q),Q.close()),U(!0);return}if(W){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.tryATransport()","transport "+L+" "+W.event+", err: "+W.error.toString()),p.default.isTokenErr(W.error)&&!(_.errorReason&&p.default.isTokenErr(_.errorReason))?(_.errorReason=W.error,_.realtime.auth._forceNewToken(null,null,function(ne){if(ne){_.actOnErrorFromAuthorize(ne);return}_.tryATransport(O,L,U)})):W.event==="failed"?(_.notifyState({state:"failed",error:W.error}),U(!0)):W.event==="disconnected"&&((0,M.isRetriable)(W.error)?U(!1):(_.notifyState({state:_.states.connecting.failState,error:W.error}),U(!0)));return}u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.tryATransport()","viable transport "+L+"; setting pending"),_.setTransportPending(Q,O),U(null,Q)})},F.prototype.setTransportPending=function(O,L){var U=this,_=L.mode;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setTransportPending()","transport = "+O+"; mode = "+_),d.arrDeleteValue(this.proposedTransports,O),this.pendingTransports.push(O);var W=R.default.Defaults.transportPreferenceOrder[R.default.Defaults.transportPreferenceOrder.length-1];O.once("connected",function(X,ne,re){_=="upgrade"&&U.activeProtocol?O.shortName!==W&&d.arrIn(U.getUpgradePossibilities(),W)&&U.activeProtocol?setTimeout(function(){U.scheduleTransportActivation(X,O,ne,re)},U.options.timeouts.parallelUpgradeDelay):U.scheduleTransportActivation(X,O,ne,re):(U.activateTransport(X,O,ne,re),R.default.Config.nextTick(function(){U.connectImpl(L)})),_==="recover"&&U.options.recover&&(U.options.recover=null,U.unpersistConnection())});var Q=this;O.on(["disconnected","closed","failed"],function(X){Q.deactivateTransport(O,this.event,X)}),this.emit("transport.pending",O)},F.prototype.scheduleTransportActivation=function(O,L,U,_){var W=this,Q=this.activeProtocol&&this.activeProtocol.getTransport(),X=function(){L.disconnect(),d.arrDeleteValue(W.pendingTransports,L)};if(this.state!==this.states.connected&&this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Current connection state ("+this.state.state+(this.state===this.states.synchronizing?", but with an upgrade already in progress":"")+") is not valid to upgrade in; abandoning upgrade to "+L.shortName),X();return}if(Q&&!A(L,Q)){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Proposed transport "+L.shortName+" is no better than current active transport "+Q.shortName+" - abandoning upgrade"),X();return}u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Scheduling transport upgrade; transport = "+L);var ne=null;if(!L.isConnected){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Proposed transport "+L.shortName+"is no longer connected; abandoning upgrade"),X();return}if(this.state===this.states.connected)u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.scheduleTransportActivation()","Currently connected, so temporarily pausing events until the upgrade is complete"),this.state=this.states.synchronizing,ne=this.activeProtocol;else if(this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Current connection state ("+this.state.state+(this.state===this.states.synchronizing?", but with an upgrade already in progress":"")+") is not valid to upgrade in; abandoning upgrade to "+L.shortName),X();return}u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Syncing transport; transport = "+L);var re=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Activating transport; transport = "+L),L.send(l.default.fromValues({action:v.ACTIVATE})),W.activateTransport(O,L,U,_),W.state===W.states.synchronizing?(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.scheduleTransportActivation()","Pre-upgrade protocol idle, sending queued messages on upgraded transport; transport = "+L),W.state=W.states.connected):u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.scheduleTransportActivation()","Pre-upgrade protocol idle, but state is now "+W.state.state+", so leaving unchanged"),W.state.sendEvents&&W.sendQueuedMessages()};ne?ne.onceIdle(re):re()},F.prototype.activateTransport=function(O,L,U,_){var W=this;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","transport = "+L),O&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","error = "+O),U&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.activateTransport()","connectionId = "+U),_&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.activateTransport()","connectionDetails = "+JSON.stringify(_)),this.persistTransportPreference(L);var Q=this.state,X=this.states.connected.state;if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","current state = "+Q.state),Q.state==this.states.closing.state||Q.state==this.states.closed.state||Q.state==this.states.failed.state)return u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","Disconnecting transport and abandoning"),L.disconnect(),!1;if(d.arrDeleteValue(this.pendingTransports,L),!L.isConnected)return u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.activateTransport()","Declining to activate transport "+L+" since it appears to no longer be connected"),!1;var ne=this.activeProtocol;this.activeProtocol=new g.default(L),this.host=L.params.host;var re=_.connectionKey;if(re&&this.connectionKey!=re&&this.setConnection(U,_,!!O),this.onConnectionDetailsUpdate(_,L),R.default.Config.nextTick(function(){L.on("connected",function(q,ye,De){W.onConnectionDetailsUpdate(De,L),W.emit("update",new C.default(X,X,null,q))})}),Q.state===this.states.connected.state?O&&(this.errorReason=this.realtime.connection.errorReason=O,this.emit("update",new C.default(X,X,null,O))):(this.notifyState({state:"connected",error:O}),this.errorReason=this.realtime.connection.errorReason=O||null),this.emit("transport.active",L),ne)if(ne.messageQueue.count()>0&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","Previous active protocol (for transport "+ne.transport.shortName+", new one is "+L.shortName+") finishing with "+ne.messageQueue.count()+" messages still pending"),ne.transport===L){var ce="Assumption violated: activating a transport that was also the transport for the previous active protocol; transport = "+L.shortName+"; stack = "+new Error().stack;u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()",ce)}else ne.finish();return d.safeArrForEach(this.pendingTransports,function(q){if(q===L){var ye="Assumption violated: activating a transport that is still marked as a pending transport; transport = "+L.shortName+"; stack = "+new Error().stack;u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()",ye),d.arrDeleteValue(W.pendingTransports,L)}else q.disconnect()}),d.safeArrForEach(this.proposedTransports,function(q){q===L?(u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.activateTransport()","Assumption violated: activating a transport that is still marked as a proposed transport; transport = "+L.shortName+"; stack = "+new Error().stack),d.arrDeleteValue(W.proposedTransports,L)):q.dispose()}),!0},F.prototype.deactivateTransport=function(O,L,U){var _=this.activeProtocol,W=_&&_.getTransport()===O,Q=d.arrDeleteValue(this.pendingTransports,O),X=d.arrDeleteValue(this.proposedTransports,O),ne=this.noTransportsScheduledForActivation();if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.deactivateTransport()","transport = "+O),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.deactivateTransport()","state = "+L+(W?"; was active":Q?"; was pending":X?"; was proposed":"")+(ne?"":"; another transport is scheduled for activation")),U&&U.message&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","reason = "+U.message),W&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","Getting, clearing, and requeuing "+this.activeProtocol.messageQueue.count()+" pending messages"),this.queuePendingMessages(_.getPendingMessages()),R.default.Config.nextTick(function(){_.clearPendingMessages()}),this.activeProtocol=this.host=null),this.emit("transport.inactive",O),W&&ne||W&&L==="failed"||L==="closed"||_===null&&Q&&this.pendingTransports.length===0){if(L==="disconnected"&&U&&U.statusCode>500&&this.httpHosts.length>1){this.unpersistTransportPreference(),this.forceFallbackHost=!0,this.notifyState({state:L,error:U,retryImmediately:!0});return}var re=L==="failed"&&p.default.isTokenErr(U)?"disconnected":L;this.notifyState({state:re,error:U});return}W&&L==="disconnected"&&this.state!==this.states.synchronizing&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.deactivateTransport()","wasActive but another transport is connected and scheduled for activation, so going into the connecting state until it activates"),this.startSuspendTimer(),this.startTransitionTimer(this.states.connecting),this.notifyState({state:"connecting",error:U}))},F.prototype.noTransportsScheduledForActivation=function(){return d.isEmpty(this.pendingTransports)||this.pendingTransports.every(function(O){return!O.isConnected})},F.prototype.setConnection=function(O,L,U){var _=this.connectionId,W=_&&_!==O,Q=!_&&U;(W||Q)&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setConnection()","Resetting msgSerial"),this.msgSerial=0,this.queuedMessages.resetSendAttempted()),this.connectionId!==O&&u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.setConnection()","New connectionId; reattaching any attached channels"),this.realtime.connection.id=this.connectionId=O,this.realtime.connection.key=this.connectionKey=L.connectionKey},F.prototype.clearConnection=function(){this.realtime.connection.id=this.connectionId=void 0,this.realtime.connection.key=this.connectionKey=void 0,this.msgSerial=0,this.unpersistConnection()},F.prototype.createRecoveryKey=function(){return this.connectionKey?JSON.stringify({connectionKey:this.connectionKey,msgSerial:this.msgSerial,channelSerials:this.realtime.channels.channelSerials()}):null},F.prototype.checkConnectionStateFreshness=function(){if(!(!this.lastActivity||!this.connectionId)){var O=d.now()-this.lastActivity;O>this.connectionStateTtl+this.maxIdleInterval&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.checkConnectionStateFreshness()","Last known activity from realtime was "+O+"ms ago; discarding connection state"),this.clearConnection(),this.states.connecting.failState="suspended")}},F.prototype.persistConnection=function(){if(w()){var O=this.createRecoveryKey();O&&T({recoveryKey:O,disconnectedAt:d.now(),location:i.location,clientId:this.realtime.auth.clientId})}},F.prototype.unpersistConnection=function(){I()},F.prototype.getError=function(){return this.errorReason||this.getStateError()},F.prototype.getStateError=function(){var O,L;return(L=(O=M.default)[this.state.state])===null||L===void 0?void 0:L.call(O)},F.prototype.activeState=function(){return this.state.queueEvents||this.state.sendEvents},F.prototype.enactStateChange=function(O){var L=O.current==="failed"?u.default.LOG_ERROR:u.default.LOG_MAJOR;u.default.logAction(L,"Connection state",O.current+(O.reason?"; reason: "+O.reason:"")),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.enactStateChange","setting new state: "+O.current+"; reason = "+(O.reason&&O.reason.message));var U=this.state=this.states[O.current];O.reason&&(this.errorReason=O.reason,this.realtime.connection.errorReason=O.reason),(U.terminal||U.state==="suspended")&&this.clearConnection(),this.emit("connectionstate",O)},F.prototype.startTransitionTimer=function(O){var L=this;u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startTransitionTimer()","transitionState: "+O.state),this.transitionTimer&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startTransitionTimer()","clearing already-running timer"),clearTimeout(this.transitionTimer)),this.transitionTimer=setTimeout(function(){L.transitionTimer&&(L.transitionTimer=null,u.default.logAction(u.default.LOG_MINOR,"ConnectionManager "+O.state+" timer expired","requesting new state: "+O.failState),L.notifyState({state:O.failState}))},O.retryDelay)},F.prototype.cancelTransitionTimer=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.cancelTransitionTimer()",""),this.transitionTimer&&(clearTimeout(this.transitionTimer),this.transitionTimer=null)},F.prototype.startSuspendTimer=function(){var O=this;this.suspendTimer||(this.suspendTimer=setTimeout(function(){O.suspendTimer&&(O.suspendTimer=null,u.default.logAction(u.default.LOG_MINOR,"ConnectionManager suspend timer expired","requesting new state: suspended"),O.states.connecting.failState="suspended",O.notifyState({state:"suspended"}))},this.connectionStateTtl))},F.prototype.checkSuspendTimer=function(O){O!=="disconnected"&&O!=="suspended"&&O!=="connecting"&&this.cancelSuspendTimer()},F.prototype.cancelSuspendTimer=function(){this.states.connecting.failState="disconnected",this.suspendTimer&&(clearTimeout(this.suspendTimer),this.suspendTimer=null)},F.prototype.startRetryTimer=function(O){var L=this;this.retryTimer=setTimeout(function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager retry timer expired","retrying"),L.retryTimer=null,L.requestState({state:"connecting"})},O)},F.prototype.cancelRetryTimer=function(){this.retryTimer&&(clearTimeout(this.retryTimer),this.retryTimer=null)},F.prototype.notifyState=function(O){var L=this,U,_,W=O.state,Q=W==="disconnected"&&(this.state===this.states.connected||this.state===this.states.synchronizing||O.retryImmediately||this.state===this.states.connecting&&O.error&&p.default.isTokenErr(O.error)&&!(this.errorReason&&p.default.isTokenErr(this.errorReason)));if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.notifyState()","new state: "+W+(Q?"; will retry connection immediately":"")),W!=this.state.state&&(this.cancelTransitionTimer(),this.cancelRetryTimer(),this.checkSuspendTimer(O.state),(W==="suspended"||W==="connected")&&(this.disconnectedRetryCount=0),!this.state.terminal)){var X=this.states[O.state],ne=X.retryDelay;X.state==="disconnected"&&(this.disconnectedRetryCount++,ne=d.getRetryTime(X.retryDelay,this.disconnectedRetryCount));var re=new C.default(this.state.state,X.state,ne,O.error||((_=(U=M.default)[X.state])===null||_===void 0?void 0:_.call(U)));if(Q){var ce=function(){L.state===L.states.disconnected&&(L.lastAutoReconnectAttempt=d.now(),L.requestState({state:"connecting"}))},q=this.lastAutoReconnectAttempt&&d.now()-this.lastAutoReconnectAttempt+1;q&&q<1e3?(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.notifyState()","Last reconnect attempt was only "+q+"ms ago, waiting another "+(1e3-q)+"ms before trying again"),setTimeout(ce,1e3-q)):R.default.Config.nextTick(ce)}else(W==="disconnected"||W==="suspended")&&this.startRetryTimer(ne);(W==="disconnected"&&!Q||W==="suspended"||X.terminal)&&R.default.Config.nextTick(function(){L.disconnectAllTransports()}),W=="connected"&&!this.activeProtocol&&u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.notifyState()","Broken invariant: attempted to go into connected state, but there is no active protocol"),this.enactStateChange(re),this.state.sendEvents?this.sendQueuedMessages():this.state.queueEvents||(this.realtime.channels.propogateConnectionInterruption(W,re.reason),this.failQueuedMessages(re.reason))}},F.prototype.requestState=function(O){var L=this,U,_,W=O.state;if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.requestState()","requested state: "+W+"; current state: "+this.state.state),W!=this.state.state&&(this.cancelTransitionTimer(),this.cancelRetryTimer(),this.checkSuspendTimer(W),!(W=="connecting"&&this.state.state=="connected")&&!(W=="closing"&&this.state.state=="closed"))){var Q=this.states[W],X=new C.default(this.state.state,Q.state,null,O.error||((_=(U=M.default)[Q.state])===null||_===void 0?void 0:_.call(U)));this.enactStateChange(X),W=="connecting"&&R.default.Config.nextTick(function(){L.startConnect()}),W=="closing"&&this.closeImpl()}},F.prototype.startConnect=function(){var O=this;if(this.state!==this.states.connecting){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startConnect()","Must be in connecting state to connect, but was "+this.state.state);return}var L=this.realtime.auth,U=++this.connectCounter,_=function(){O.checkConnectionStateFreshness(),O.getTransportParams(function(Q){if(Q.mode==="recover"&&Q.options.recover){var X=B(Q.options.recover);X&&O.realtime.channels.recoverChannels(X.channelSerials)}U===O.connectCounter&&O.connectImpl(Q,U)})};if(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.startConnect()","starting connection"),this.startSuspendTimer(),this.startTransitionTimer(this.states.connecting),L.method==="basic")_();else{var W=function(Q){U===O.connectCounter&&(Q?O.actOnErrorFromAuthorize(Q):_())};this.errorReason&&p.default.isTokenErr(this.errorReason)?L._forceNewToken(null,null,W):L._ensureValidAuthCredentials(!1,W)}},F.prototype.connectImpl=function(O,L){var U=this.state.state;U!==this.states.connecting.state&&U!==this.states.connected.state?u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectImpl()","Must be in connecting state to connect (or connected to upgrade), but was "+U):this.pendingTransports.length?u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectImpl()","Transports "+this.pendingTransports[0].toString()+" currently pending; taking no action"):U==this.states.connected.state?this.upgradeIfNeeded(O):this.transports.length>1&&this.getTransportPreference()?this.connectPreference(O,L):this.connectBase(O,L)},F.prototype.connectPreference=function(O,L){var U=this,_=this.getTransportPreference(),W=!1;d.arrIn(this.transports,_)||(this.unpersistTransportPreference(),this.connectImpl(O,L)),u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectPreference()","Trying to connect with stored transport preference "+_);var Q=setTimeout(function(){W=!0,U.state.state!==U.states.connected.state&&(u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectPreference()","Shortcircuit connection attempt with "+_+" failed; clearing preference and trying from scratch"),U.disconnectAllTransports(),U.unpersistTransportPreference()),U.connectImpl(O,L)},this.options.timeouts.preferenceConnectTimeout);O.host=this.httpHosts[0],this.tryATransport(O,_,function(X,ne){clearTimeout(Q),W&&ne?(ne.off(),ne.disconnect(),d.arrDeleteValue(U.pendingTransports,ne)):!ne&&!X&&(U.unpersistTransportPreference(),U.connectImpl(O,L))})},F.prototype.connectBase=function(O,L){var U=this,_=function(re){U.notifyState({state:U.states.connecting.failState,error:re})},W=this.httpHosts.slice(),Q=function(re,ce){L===U.connectCounter&&!ce&&!re&&ne()};u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.connectBase()","Trying to connect with base transport "+this.baseTransport);var X=W.shift();if(!X){_(new x.default("Unable to connect (no available host)",80003,404));return}O.host=X;var ne=function(){if(!W.length){_(new x.default("Unable to connect (and no more fallback hosts to try)",80003,404));return}if(!U.realtime.http.checkConnectivity){_(new x.PartialErrorInfo("Internal error: Http.checkConnectivity not set",null,500));return}U.realtime.http.checkConnectivity(function(re,ce){if(L===U.connectCounter){if(re){_(re);return}if(!ce){_(new x.default("Unable to connect (network unreachable)",80003,404));return}O.host=d.arrPopRandomElement(W),U.tryATransport(O,U.baseTransport,Q)}})};if(this.forceFallbackHost&&W.length){this.forceFallbackHost=!1,ne();return}this.tryATransport(O,this.baseTransport,Q)},F.prototype.getUpgradePossibilities=function(){var O=this.activeProtocol.getTransport().shortName,L=d.arrIndexOf(this.upgradeTransports,O);return this.upgradeTransports.slice(L+1)},F.prototype.upgradeIfNeeded=function(O){var L=this,U=this.getUpgradePossibilities();u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.upgradeIfNeeded()","upgrade possibilities: "+R.default.Config.inspect(U)),U.length&&d.arrForEach(U,function(_){var W=L.createTransportParams(O.host,"upgrade");L.tryATransport(W,_,k)})},F.prototype.closeImpl=function(){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.closeImpl()","closing connection"),this.cancelSuspendTimer(),this.startTransitionTimer(this.states.closing),d.safeArrForEach(this.pendingTransports,function(O){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Closing pending transport: "+O),O&&O.close()}),d.safeArrForEach(this.proposedTransports,function(O){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Disposing of proposed transport: "+O),O&&O.dispose()}),this.activeProtocol&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.closeImpl()","Closing active transport: "+this.activeProtocol.getTransport()),this.activeProtocol.getTransport().close()),this.notifyState({state:"closed"})},F.prototype.onAuthUpdated=function(O,L){var U=this,_;switch(this.state.state){case"connected":{if(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Sending AUTH message on active transport"),(this.pendingTransports.length||this.proposedTransports.length)&&this.state!==this.states.synchronizing){this.disconnectAllTransports(!0);var W=this.activeProtocol.getTransport().params;R.default.Config.nextTick(function(){U.state.state==="connected"&&U.upgradeIfNeeded(W)})}var Q=(_=this.activeProtocol)===null||_===void 0?void 0:_.getTransport();Q&&Q.onAuthUpdated&&Q.onAuthUpdated(O);var X=l.default.fromValues({action:v.AUTH,auth:{accessToken:O.token}});this.send(X);var ne=function(){U.off(re),L(null,O)},re=function(q){q.current==="failed"&&(U.off(ne),U.off(re),L(q.reason||U.getStateError()))};this.once("connectiondetails",ne),this.on("connectionstate",re);break}case"connecting":u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Aborting current connection attempts in order to start again with the new auth details"),this.disconnectAllTransports();default:{u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onAuthUpdated()","Connection state is "+this.state.state+"; waiting until either connected or failed");var ce=function(q){switch(q.current){case"connected":U.off(ce),L(null,O);break;case"failed":case"closed":case"suspended":U.off(ce),L(q.reason||U.getStateError());break}};this.on("connectionstate",ce),this.state.state==="connecting"?this.startConnect():this.requestState({state:"connecting"})}}},F.prototype.disconnectAllTransports=function(O){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.disconnectAllTransports()","Disconnecting all transports"+(O?" except the active transport":"")),this.connectCounter++,d.safeArrForEach(this.pendingTransports,function(L){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disconnecting pending transport: "+L),L&&L.disconnect()}),this.pendingTransports=[],d.safeArrForEach(this.proposedTransports,function(L){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disposing of proposed transport: "+L),L&&L.dispose()}),this.proposedTransports=[],this.activeProtocol&&!O&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.disconnectAllTransports()","Disconnecting active transport: "+this.activeProtocol.getTransport()),this.activeProtocol.getTransport().disconnect())},F.prototype.send=function(O,L,U){U=U||k;var _=this.state;if(_.sendEvents){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()","sending event"),this.sendImpl(new g.PendingMessage(O,U));return}var W=L&&_.queueEvents||_.forceQueueEvents;if(!W){var Q="rejecting event, queueEvent was "+L+", state was "+_.state;u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()",Q),U(this.errorReason||new x.default(Q,9e4,400));return}u.default.shouldLog(u.default.LOG_MICRO)&&u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.send()","queueing msg; "+l.default.stringify(O)),this.queue(O,U)},F.prototype.sendImpl=function(O){var L=O.message;O.ackRequired&&!O.sendAttempted&&(L.msgSerial=this.msgSerial++);try{this.activeProtocol.send(O)}catch(U){u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.sendImpl()","Unexpected exception in transport.send(): "+U.stack)}},F.prototype.queue=function(O,L){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.queue()","queueing event");var U=this.queuedMessages.last(),_=this.options.maxMessageSize;U&&!U.sendAttempted&&D(U.message,O,_)?(U.merged||(U.callback=b.default.create([U.callback]),U.merged=!0),U.callback.push(L)):this.queuedMessages.push(new g.PendingMessage(O,L))},F.prototype.sendQueuedMessages=function(){u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.sendQueuedMessages()","sending "+this.queuedMessages.count()+" queued messages");for(var O;O=this.queuedMessages.shift();)this.sendImpl(O)},F.prototype.queuePendingMessages=function(O){O&&O.length&&(u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.queuePendingMessages()","queueing "+O.length+" pending messages"),this.queuedMessages.prepend(O))},F.prototype.failQueuedMessages=function(O){var L=this.queuedMessages.count();L>0&&(u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.failQueuedMessages()","failing "+L+" queued messages, err = "+d.inspectError(O)),this.queuedMessages.completeAllMessages(O))},F.prototype.onChannelMessage=function(O,L){var U=this.activeProtocol&&L===this.activeProtocol.getTransport(),_=d.arrIn(this.pendingTransports,L)&&this.state==this.states.synchronizing;U||_?this.realtime.channels.onChannelMessage(O):d.arrIndexOf([v.ACK,v.NACK,v.ERROR],O.action)>-1?this.realtime.channels.onChannelMessage(O):u.default.logAction(u.default.LOG_MICRO,"ConnectionManager.onChannelMessage()","received message "+JSON.stringify(O)+"on defunct transport; discarding")},F.prototype.ping=function(O,L){var U=this;if(O){u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.ping()","transport = "+O);var _=function(){O.off("heartbeat",X),L(new x.default("Timeout waiting for heartbeat response",5e4,500))},W=d.now(),Q=d.cheapRandStr(),X=function(ye){if(ye===Q){O.off("heartbeat",X),clearTimeout(ne);var De=d.now()-W;L(null,De)}},ne=setTimeout(_,this.options.timeouts.realtimeRequestTimeout);O.on("heartbeat",X),O.ping(Q);return}if(this.state.state!=="connected"){L(new x.default("Unable to ping service; not connected",4e4,400));return}var re=!1,ce=function(ye,De){U.off("transport.active",q),re||(re=!0,L(ye,De))},q=function(){re||(re=!0,R.default.Config.nextTick(function(){U.ping(null,L)}))};this.on("transport.active",q),this.ping(this.activeProtocol.getTransport(),ce)},F.prototype.abort=function(O){this.activeProtocol.getTransport().fail(O)},F.prototype.registerProposedTransport=function(O){this.proposedTransports.push(O)},F.prototype.getTransportPreference=function(){var O,L;return this.transportPreference||s()&&((L=(O=R.default.WebStorage)===null||O===void 0?void 0:O.get)===null||L===void 0?void 0:L.call(O,j))},F.prototype.persistTransportPreference=function(O){var L,U;d.arrIn(S.default.upgradeTransports,O.shortName)&&(this.transportPreference=O.shortName,s()&&((U=(L=R.default.WebStorage)===null||L===void 0?void 0:L.set)===null||U===void 0||U.call(L,j,O.shortName)))},F.prototype.unpersistTransportPreference=function(){var O,L;this.transportPreference=null,s()&&((L=(O=R.default.WebStorage)===null||O===void 0?void 0:O.remove)===null||L===void 0||L.call(O,j))},F.prototype.actOnErrorFromAuthorize=function(O){if(O.code===40171)this.notifyState({state:"failed",error:O});else if(O.code===40102)this.notifyState({state:"failed",error:O});else if(O.statusCode===c.default.Forbidden){var L="Client configured authentication provider returned 403; failing the connection";u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.actOnErrorFromAuthorize()",L),this.notifyState({state:"failed",error:new x.default(L,80019,403,O)})}else{var L="Client configured authentication provider request failed";u.default.logAction(u.default.LOG_MINOR,"ConnectionManager.actOnErrorFromAuthorize",L),this.notifyState({state:this.state.failState,error:new x.default(L,80019,401,O)})}},F.prototype.onConnectionDetailsUpdate=function(O,L){if(O){this.connectionDetails=O,O.maxMessageSize&&(this.options.maxMessageSize=O.maxMessageSize);var U=O.clientId;if(U){var _=this.realtime.auth._uncheckedSetClientId(U);if(_){u.default.logAction(u.default.LOG_ERROR,"ConnectionManager.onConnectionDetailsUpdate()",_.message),L.fail(_);return}}var W=O.connectionStateTtl;W&&(this.connectionStateTtl=W),this.maxIdleInterval=O.maxIdleInterval,this.emit("connectiondetails",O)}},F.supportedTransports={},F}(y.default);r.default=$}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(7)),l=i.__importDefault(o(2)),d=function(g){i.__extends(S,g);function S(){var R=g.call(this)||this;return R.messages=[],R}return S.prototype.count=function(){return this.messages.length},S.prototype.push=function(R){this.messages.push(R)},S.prototype.shift=function(){return this.messages.shift()},S.prototype.last=function(){return this.messages[this.messages.length-1]},S.prototype.copyAll=function(){return this.messages.slice()},S.prototype.append=function(R){this.messages.push.apply(this.messages,R)},S.prototype.prepend=function(R){this.messages.unshift.apply(this.messages,R)},S.prototype.completeMessages=function(R,y,E){l.default.logAction(l.default.LOG_MICRO,"MessageQueue.completeMessages()","serial = "+R+"; count = "+y),E=E||null;var u=this.messages;if(u.length===0)throw new Error("MessageQueue.completeMessages(): completeMessages called on any empty MessageQueue");var C=u[0];if(C){var M=C.message.msgSerial,x=R+y;if(x>M)for(var p=u.splice(0,x-M),m=0,b=p;m<b.length;m++){var h=b[m];h.callback(E)}u.length==0&&this.emit("idle")}},S.prototype.completeAllMessages=function(R){this.completeMessages(0,Number.MAX_SAFE_INTEGER||Number.MAX_VALUE,R)},S.prototype.resetSendAttempted=function(){for(var R=0,y=this.messages;R<y.length;R++){var E=y[R];E.sendAttempted=!1}},S.prototype.clear=function(){l.default.logAction(l.default.LOG_MICRO,"MessageQueue.clear()","clearing "+this.messages.length+" messages"),this.messages=[],this.emit("idle")},S}(a.default);r.default=d},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function a(l,d,g,S){this.previous=l,this.current=d,g&&(this.retryIn=g),S&&(this.reason=S)}return a}();r.default=i},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(10)),l=i.__importDefault(o(7)),d=i.__importStar(o(1)),g=i.__importDefault(o(33)),S=i.__importDefault(o(2)),R=i.__importDefault(o(54)),y=i.__importDefault(o(9)),E=i.__importDefault(o(39)),u=i.__importStar(o(4)),C=i.__importDefault(o(16)),M=i.__importDefault(o(21)),x=a.default.Action,p=function(){};function m(f){if(f&&"params"in f&&!d.isObject(f.params))return new u.default("options.params must be an object",4e4,400);if(f&&"modes"in f){if(!d.isArray(f.modes))return new u.default("options.modes must be an array",4e4,400);for(var c=0;c<f.modes.length;c++){var s=f.modes[c];if(!s||typeof s!="string"||!d.arrIn(a.default.channelModes,String.prototype.toUpperCase.call(s)))return new u.default("Invalid channel mode: "+s,4e4,400)}}}var b=function(f){i.__extends(c,f);function c(s,w,v){var k=f.call(this,s,w,v)||this;return k.retryCount=0,k.history=function(j,N){if(S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.history()","channel = "+this.name),N===void 0)if(typeof j=="function")N=j,j=null;else{if(this.rest.options.promises)return d.promisify(this,"history",arguments);N=p}if(j&&j.untilAttach){if(this.state!=="attached"){N(new u.default("option untilAttach requires the channel to be attached",4e4,400));return}if(!this.properties.attachSerial){N(new u.default("untilAttach was specified and channel is attached, but attachSerial is not defined",4e4,400));return}delete j.untilAttach,j.from_serial=this.properties.attachSerial}g.default.prototype._history.call(this,j,N)},k.whenState=function(j,N){return l.default.prototype.whenState.call(k,j,k.state,N)},S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel()","started; name = "+w),k.realtime=s,k.presence=new R.default(k),k.connectionManager=s.connection.connectionManager,k.state="initialized",k.subscriptions=new l.default,k.syncChannelSerial=void 0,k.properties={attachSerial:void 0,channelSerial:void 0},k.setOptions(v),k.errorReason=null,k._requestedFlags=null,k._mode=null,k._attachResume=!1,k._decodingContext={channelOptions:k.channelOptions,plugins:s.options.plugins||{},baseEncodedPreviousPayload:void 0},k._lastPayload={messageId:null,protocolMessageChannelSerial:null,decodeFailureRecoveryInProgress:null},k._allChannelChanges=new l.default,k}return c.prototype.invalidStateError=function(){return new u.default("Channel operation failed as channel state is "+this.state,90001,400,this.errorReason||void 0)},c.processListenerArgs=function(s){return s=Array.prototype.slice.call(s),typeof s[0]=="function"&&s.unshift(null),s[s.length-1]==null&&s.pop(),s},c.prototype.setOptions=function(s,w){var v=this.channelOptions;if(!w&&this.rest.options.promises)return d.promisify(this,"setOptions",arguments);var k=w||function(N){N&&S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel.setOptions()","Set options failed: "+N.toString())},j=m(s);if(j){k(j);return}g.default.prototype.setOptions.call(this,s),this._decodingContext&&(this._decodingContext.channelOptions=this.channelOptions),this._shouldReattachToSetOptions(s,v)?(this.attachImpl(),this._allChannelChanges.once(["attached","update","detached","failed"],function(N){switch(this.event){case"update":case"attached":k==null||k(null);return;default:k==null||k(N.reason);return}})):k()},c.prototype._shouldReattachToSetOptions=function(s,w){if(!(this.state==="attached"||this.state==="attaching"))return!1;if(s!=null&&s.params){var v=h(s.params),k=h(w.params);if(Object.keys(v).length!==Object.keys(k).length||!d.shallowEquals(k,v))return!0}return!!(s!=null&&s.modes&&(!w.modes||!d.arrEquals(s.modes,w.modes)))},c.prototype.publish=function(){for(var s=this,w=[],v=0;v<arguments.length;v++)w[v]=arguments[v];var k=w[0],j=w.length,N=w[j-1];if(typeof N!="function"){if(this.realtime.options.promises)return d.promisify(this,"publish",arguments);N=p,++j}if(!this.connectionManager.activeState()){N(this.connectionManager.getError());return}if(j==2)if(d.isObject(k))k=[y.default.fromValues(k)];else if(d.isArray(k))k=y.default.fromValuesArray(k);else throw new u.default("The single-argument form of publish() expects a message object or an array of message objects",40013,400);else k=[y.default.fromValues({name:w[0],data:w[1]})];var P=this.realtime.options.maxMessageSize;y.default.encodeArray(k,this.channelOptions,function(T){if(T){N(T);return}var I=y.default.getMessagesSize(k);if(I>P){N(new u.default("Maximum size of messages that can be published at once exceeded ( was "+I+" bytes; limit is "+P+" bytes)",40009,400));return}s.__publish(k,N)})},c.prototype.__publish=function(s,w){S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.publish()","message count = "+s.length);var v=this.state;switch(v){case"failed":case"suspended":w(u.default.fromValues(this.invalidStateError()));break;default:{S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.publish()","sending message; channel state is "+v);var k=new a.default;k.action=x.MESSAGE,k.channel=this.name,k.messages=s,this.sendMessage(k,w);break}}},c.prototype.onEvent=function(s){S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.onEvent()","received message");for(var w=this.subscriptions,v=0;v<s.length;v++){var k=s[v];w.emit(k.name,k)}},c.prototype.attach=function(s,w){var v;if(typeof s=="function"?(w=s,v=null):v=s,!w){if(this.realtime.options.promises)return d.promisify(this,"attach",arguments);w=function(k){k&&S.default.logAction(S.default.LOG_MAJOR,"RealtimeChannel.attach()","Channel attach failed: "+k.toString())}}if(v)S.default.deprecated("The ability to pass an array of channel mode flags as the first argument of `RealtimeChannel.attach()`","To set channel mode flags, populate the `modes` property of the channel options object that you pass to `Channels.get()` or `RealtimeChannel.setOptions()`."),this._requestedFlags=v;else if(this.state==="attached"){w(null,null);return}this._attach(!1,null,w)},c.prototype._attach=function(s,w,v){v||(v=function(j){j&&S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel._attach()","Channel attach failed: "+j.toString())});var k=this.connectionManager;if(!k.activeState()){v(k.getError());return}(this.state!=="attaching"||s)&&this.requestState("attaching",w),this.once(function(j){switch(this.event){case"attached":v==null||v(null,j);break;case"detached":case"suspended":case"failed":v==null||v(j.reason||k.getError()||new u.default("Unable to attach; reason unknown; state = "+this.event,9e4,500));break;case"detaching":v==null||v(new u.default("Attach request superseded by a subsequent detach request",9e4,409));break}})},c.prototype.attachImpl=function(){S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.attachImpl()","sending ATTACH message");var s=a.default.fromValues({action:x.ATTACH,channel:this.name,params:this.channelOptions.params,channelSerial:this.properties.channelSerial});this._requestedFlags?s.encodeModesToFlags(this._requestedFlags):this.channelOptions.modes&&s.encodeModesToFlags(d.allToUpperCase(this.channelOptions.modes)),this._attachResume&&s.setFlag("ATTACH_RESUME"),this._lastPayload.decodeFailureRecoveryInProgress&&(s.channelSerial=this._lastPayload.protocolMessageChannelSerial),this.sendMessage(s,p)},c.prototype.detach=function(s){if(!s){if(this.realtime.options.promises)return d.promisify(this,"detach",arguments);s=p}var w=this.connectionManager;if(!w.activeState()){s(w.getError());return}switch(this.state){case"suspended":this.notifyState("detached"),s();break;case"detached":s();break;case"failed":s(new u.default("Unable to detach; channel state = failed",90001,400));break;default:this.requestState("detaching");case"detaching":this.once(function(v){switch(this.event){case"detached":s();break;case"attached":case"suspended":case"failed":s(v.reason||w.getError()||new u.default("Unable to detach; reason unknown; state = "+this.event,9e4,500));break;case"attaching":s(new u.default("Detach request superseded by a subsequent attach request",9e4,409));break}})}},c.prototype.detachImpl=function(s){S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.detach()","sending DETACH message");var w=a.default.fromValues({action:x.DETACH,channel:this.name});this.sendMessage(w,s||p)},c.prototype.subscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=c.processListenerArgs(s),k=v[0],j=v[1],N=v[2];if(!N&&this.realtime.options.promises)return d.promisify(this,"subscribe",[k,j]);if(this.state==="failed"){N==null||N(u.default.fromValues(this.invalidStateError()));return}return k&&typeof k=="object"&&!Array.isArray(k)?this._subscribeFilter(k,j):this.subscriptions.on(k,j),this.attach(N||p)},c.prototype._subscribeFilter=function(s,w){var v=function(k){var j,N,P,T,I,A,D={name:k.name,refTimeserial:(N=(j=k.extras)===null||j===void 0?void 0:j.ref)===null||N===void 0?void 0:N.timeserial,refType:(T=(P=k.extras)===null||P===void 0?void 0:P.ref)===null||T===void 0?void 0:T.type,isRef:!!(!((A=(I=k.extras)===null||I===void 0?void 0:I.ref)===null||A===void 0)&&A.timeserial),clientId:k.clientId};Object.entries(s).find(function(B){var z=B[0],$=B[1];return $!==void 0?D[z]!==$:!1})||w(k)};this._addFilteredSubscription(s,w,v),this.subscriptions.on(v)},c.prototype._addFilteredSubscription=function(s,w,v){var k;if(this.filteredSubscriptions||(this.filteredSubscriptions=new Map),this.filteredSubscriptions.has(w)){var j=this.filteredSubscriptions.get(w);j.set(s,((k=j==null?void 0:j.get(s))===null||k===void 0?void 0:k.concat(v))||[v])}else this.filteredSubscriptions.set(w,new Map([[s,[v]]]))},c.prototype._getAndDeleteFilteredSubscriptions=function(s,w){var v=this;if(!this.filteredSubscriptions)return[];if(!w&&s)return Array.from(this.filteredSubscriptions.entries()).map(function(P){var T,I=P[0],A=P[1],D=A.get(s);return A.delete(s),A.size===0&&((T=v.filteredSubscriptions)===null||T===void 0||T.delete(I)),D}).reduce(function(P,T){var I;return T?(I=P).concat.apply(I,T):P},[]);if(!w||!this.filteredSubscriptions.has(w))return[];var k=this.filteredSubscriptions.get(w);if(!s){var j=Array.from(k.values()).reduce(function(P,T){return P.concat.apply(P,T)},[]);return this.filteredSubscriptions.delete(w),j}var N=k.get(s);return k.delete(s),N||[]},c.prototype.unsubscribe=function(){for(var s=this,w,v=[],k=0;k<arguments.length;k++)v[k]=arguments[k];var j=c.processListenerArgs(v),N=j[0],P=j[1];if(typeof N=="object"&&!P||!((w=this.filteredSubscriptions)===null||w===void 0)&&w.has(P)){this._getAndDeleteFilteredSubscriptions(N,P).forEach(function(T){return s.subscriptions.off(T)});return}this.subscriptions.off(N,P)},c.prototype.sync=function(){switch(this.state){case"initialized":case"detaching":case"detached":throw new u.PartialErrorInfo("Unable to sync to channel; not attached",4e4)}var s=this.connectionManager;if(!s.activeState())throw s.getError();var w=a.default.fromValues({action:x.SYNC,channel:this.name});this.syncChannelSerial&&(w.channelSerial=this.syncChannelSerial),s.send(w)},c.prototype.sendMessage=function(s,w){this.connectionManager.send(s,this.realtime.options.queueMessages,w)},c.prototype.sendPresence=function(s,w){var v=a.default.fromValues({action:x.PRESENCE,channel:this.name,presence:d.isArray(s)?C.default.fromValuesArray(s):[C.default.fromValues(s)]});this.sendMessage(v,w)},c.prototype.onMessage=function(s){(s.action===x.ATTACHED||s.action===x.MESSAGE||s.action===x.PRESENCE)&&this.setChannelSerial(s.channelSerial);var w,v=!1;switch(s.action){case x.ATTACHED:{this.properties.attachSerial=s.channelSerial,this._mode=s.getMode(),this.params=s.params||{};var k=s.decodeModesFromFlags();this.modes=k&&d.allToLowerCase(k)||void 0;var j=s.hasFlag("RESUMED"),N=s.hasFlag("HAS_PRESENCE"),P=s.hasFlag("HAS_BACKLOG");if(this.state==="attached"){j||this.presence.onAttached(N);var T=new E.default(this.state,this.state,j,P,s.error);this._allChannelChanges.emit("update",T),(!j||this.channelOptions.updateOnAttached)&&this.emit("update",T)}else this.state==="detaching"?this.checkPendingState():this.notifyState("attached",s.error,j,N,P);break}case x.DETACHED:{var I=s.error?u.default.fromValues(s.error):new u.default("Channel detached",90001,404);this.state==="detaching"?this.notifyState("detached",I):this.state==="attaching"?this.notifyState("suspended",I):this.requestState("attaching",I);break}case x.SYNC:if(v=!0,w=this.syncChannelSerial=s.channelSerial,!s.presence)break;case x.PRESENCE:{for(var A=s.presence,D=s.id,B=s.connectionId,z=s.timestamp,$=this.channelOptions,V=void 0,F=0;F<A.length;F++)try{V=A[F],C.default.decode(V,$),V.connectionId||(V.connectionId=B),V.timestamp||(V.timestamp=z),V.id||(V.id=D+":"+F)}catch(Q){S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel.onMessage()",Q.toString())}this.presence.setPresence(A,v,w);break}case x.MESSAGE:{if(this.state!=="attached"){S.default.logAction(S.default.LOG_MAJOR,"RealtimeChannel.onMessage()",'Message "'+s.id+'" skipped as this channel "'+this.name+'" state is not "attached" (state is "'+this.state+'").');return}var O=s.messages,L=O[0],U=O[O.length-1],D=s.id,B=s.connectionId,z=s.timestamp;if(L.extras&&L.extras.delta&&L.extras.delta.from!==this._lastPayload.messageId){var _='Delta message decode failure - previous message not available for message "'+s.id+'" on this channel "'+this.name+'".';S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel.onMessage()",_),this._startDecodeFailureRecovery(new u.default(_,40018,400));break}for(var F=0;F<O.length;F++){var _=O[F];try{y.default.decode(_,this._decodingContext)}catch(q){switch(S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel.onMessage()",q.toString()),q.code){case 40018:this._startDecodeFailureRecovery(q);return;case 40019:case 40021:this.notifyState("failed",q);return}}_.connectionId||(_.connectionId=B),_.timestamp||(_.timestamp=z),_.id||(_.id=D+":"+F)}this._lastPayload.messageId=U.id,this._lastPayload.protocolMessageChannelSerial=s.channelSerial,this.onEvent(O);break}case x.ERROR:{var W=s.error;W&&W.code==80016?this.checkPendingState():this.notifyState("failed",u.default.fromValues(W));break}default:S.default.logAction(S.default.LOG_ERROR,"RealtimeChannel.onMessage()","Fatal protocol error: unrecognised action ("+s.action+")"),this.connectionManager.abort(M.default.unknownChannelErr())}},c.prototype._startDecodeFailureRecovery=function(s){var w=this;this._lastPayload.decodeFailureRecoveryInProgress||(S.default.logAction(S.default.LOG_MAJOR,"RealtimeChannel.onMessage()","Starting decode failure recovery process."),this._lastPayload.decodeFailureRecoveryInProgress=!0,this._attach(!0,s,function(){w._lastPayload.decodeFailureRecoveryInProgress=!1}))},c.prototype.onAttached=function(){S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel.onAttached","activating channel; name = "+this.name)},c.prototype.notifyState=function(s,w,v,k,j){if(S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.notifyState","name = "+this.name+", current state = "+this.state+", notifying state "+s),this.clearStateTimer(),d.arrIn(["detached","suspended","failed"],s)&&(this.properties.channelSerial=null),s!==this.state){this.presence.actOnChannelState(s,k,w),s==="suspended"&&this.connectionManager.state.sendEvents?this.startRetryTimer():this.cancelRetryTimer(),w&&(this.errorReason=w);var N=new E.default(this.state,s,v,j,w),P=s==="failed"?S.default.LOG_ERROR:S.default.LOG_MAJOR;S.default.logAction(P,'Channel state for channel "'+this.name+'"',s+(w?"; reason: "+w:"")),s!=="attaching"&&s!=="suspended"&&(this.retryCount=0),s==="attached"&&this.onAttached(),s==="attached"?this._attachResume=!0:(s==="detaching"||s==="failed")&&(this._attachResume=!1),this.state=s,this._allChannelChanges.emit(s,N),this.emit(s,N)}},c.prototype.requestState=function(s,w){S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel.requestState","name = "+this.name+", state = "+s),this.notifyState(s,w),this.checkPendingState()},c.prototype.checkPendingState=function(){var s=this.connectionManager.state;if(!(s.sendEvents||s.forceQueueEvents)){S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel.checkPendingState","sendEvents is false; state is "+this.connectionManager.state.state);return}switch(S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel.checkPendingState","name = "+this.name+", state = "+this.state),this.state){case"attaching":this.startStateTimerIfNotRunning(),this.attachImpl();break;case"detaching":this.startStateTimerIfNotRunning(),this.detachImpl();break;case"attached":this.sync();break}},c.prototype.timeoutPendingState=function(){switch(this.state){case"attaching":{var s=new u.default("Channel attach timed out",90007,408);this.notifyState("suspended",s);break}case"detaching":{var s=new u.default("Channel detach timed out",90007,408);this.notifyState("attached",s);break}default:this.checkPendingState();break}},c.prototype.startStateTimerIfNotRunning=function(){var s=this;this.stateTimer||(this.stateTimer=setTimeout(function(){S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel.startStateTimerIfNotRunning","timer expired"),s.stateTimer=null,s.timeoutPendingState()},this.realtime.options.timeouts.realtimeRequestTimeout))},c.prototype.clearStateTimer=function(){var s=this.stateTimer;s&&(clearTimeout(s),this.stateTimer=null)},c.prototype.startRetryTimer=function(){var s=this;if(!this.retryTimer){this.retryCount++;var w=d.getRetryTime(this.realtime.options.timeouts.channelRetryTimeout,this.retryCount);this.retryTimer=setTimeout(function(){s.state==="suspended"&&s.connectionManager.state.sendEvents&&(s.retryTimer=null,S.default.logAction(S.default.LOG_MINOR,"RealtimeChannel retry timer expired","attempting a new attach"),s.requestState("attaching"))},w)}},c.prototype.cancelRetryTimer=function(){this.retryTimer&&(clearTimeout(this.retryTimer),this.retryTimer=null)},c.prototype.getReleaseErr=function(){var s=this.state;return s==="initialized"||s==="detached"||s==="failed"?null:new u.default("Can only release a channel in a state where there is no possibility of further updates from the server being received (initialized, detached, or failed); was "+s,90001,400)},c.prototype.setChannelSerial=function(s){S.default.logAction(S.default.LOG_MICRO,"RealtimeChannel.setChannelSerial()","Updating channel serial; serial = "+s+"; previous = "+this.properties.channelSerial),s&&(this.properties.channelSerial=s)},c}(g.default);function h(f){var c=f||{};c.agent;var s=i.__rest(c,["agent"]);return s}r.default=b},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function a(l,d,g,S,R){this.previous=l,this.current=d,d==="attached"&&(this.resumed=g,this.hasBacklog=S),R&&(this.reason=R)}return a}();r.default=i},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){var a=i,l=a.lib,d=l.WordArray,g=l.Hasher,S=a.algo,R=[],y=S.SHA1=g.extend({_doReset:function(){this._hash=new d.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(E,u){for(var C=this._hash.words,M=C[0],x=C[1],p=C[2],m=C[3],b=C[4],h=0;h<80;h++){if(h<16)R[h]=E[u+h]|0;else{var f=R[h-3]^R[h-8]^R[h-14]^R[h-16];R[h]=f<<1|f>>>31}var c=(M<<5|M>>>27)+b+R[h];h<20?c+=(x&p|~x&m)+1518500249:h<40?c+=(x^p^m)+1859775393:h<60?c+=(x&p|x&m|p&m)-1894007588:c+=(x^p^m)-899497514,b=m,m=p,p=x<<30|x>>>2,x=M,M=c}C[0]=C[0]+M|0,C[1]=C[1]+x|0,C[2]=C[2]+p|0,C[3]=C[3]+m|0,C[4]=C[4]+b|0},_doFinalize:function(){var E=this._data,u=E.words,C=this._nDataBytes*8,M=E.sigBytes*8;return u[M>>>5]|=128<<24-M%32,u[(M+64>>>9<<4)+14]=Math.floor(C/4294967296),u[(M+64>>>9<<4)+15]=C,E.sigBytes=u.length*4,this._process(),this._hash},clone:function(){var E=g.clone.call(this);return E._hash=this._hash.clone(),E}});a.SHA1=g._createHelper(y),a.HmacSHA1=g._createHmacHelper(y)}(),i.SHA1})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});function i(h){if(h===void 0)return"undefined";var f,c;if(h instanceof ArrayBuffer?(c="ArrayBuffer",f=new DataView(h)):h instanceof DataView&&(c="DataView",f=h),!f)return JSON.stringify(h);for(var s=[],w=0;w<h.byteLength;w++){if(w>20){s.push("...");break}var v=f.getUint8(w).toString(16);v.length===1&&(v="0"+v),s.push(v)}return"<"+c+" "+s.join(" ")+">"}function a(h,f,c){for(var s=0,w=c.length;s<w;s++){var v=c.charCodeAt(s);if(v<128){h.setUint8(f++,v>>>0&127|0);continue}if(v<2048){h.setUint8(f++,v>>>6&31|192),h.setUint8(f++,v>>>0&63|128);continue}if(v<65536){h.setUint8(f++,v>>>12&15|224),h.setUint8(f++,v>>>6&63|128),h.setUint8(f++,v>>>0&63|128);continue}if(v<1114112){h.setUint8(f++,v>>>18&7|240),h.setUint8(f++,v>>>12&63|128),h.setUint8(f++,v>>>6&63|128),h.setUint8(f++,v>>>0&63|128);continue}throw new Error("bad codepoint "+v)}}function l(h,f,c){for(var s="",w=f,v=f+c;w<v;w++){var k=h.getUint8(w);if(!(k&128)){s+=String.fromCharCode(k);continue}if((k&224)===192){s+=String.fromCharCode((k&15)<<6|h.getUint8(++w)&63);continue}if((k&240)===224){s+=String.fromCharCode((k&15)<<12|(h.getUint8(++w)&63)<<6|(h.getUint8(++w)&63)<<0);continue}if((k&248)===240){s+=String.fromCharCode((k&7)<<18|(h.getUint8(++w)&63)<<12|(h.getUint8(++w)&63)<<6|(h.getUint8(++w)&63)<<0);continue}throw new Error("Invalid byte "+k.toString(16))}return s}function d(h){for(var f=0,c=0,s=h.length;c<s;c++){var w=h.charCodeAt(c);if(w<128){f+=1;continue}if(w<2048){f+=2;continue}if(w<65536){f+=3;continue}if(w<1114112){f+=4;continue}throw new Error("bad codepoint "+w)}return f}function g(h,f){var c=b(h,f);if(c!==0){var s=new ArrayBuffer(c),w=new DataView(s);return m(h,w,0,f),s}}var S=65536*65536,R=1/S;function y(h,f){return f=f||0,h.getInt32(f)*S+h.getUint32(f+4)}function E(h,f){return f=f||0,h.getUint32(f)*S+h.getUint32(f+4)}function u(h,f,c){c<9223372036854776e3?(h.setInt32(f,Math.floor(c*R)),h.setInt32(f+4,c&-1)):(h.setUint32(f,2147483647),h.setUint32(f+4,2147483647))}function C(h,f,c){c<18446744073709552e3?(h.setUint32(f,Math.floor(c*R)),h.setInt32(f+4,c&-1)):(h.setUint32(f,4294967295),h.setUint32(f+4,4294967295))}var M=function(){function h(f,c){var s=this;this.map=function(w){for(var v={},k=0;k<w;k++){var j=s.parse();v[j]=s.parse()}return v},this.bin=function(w){var v=new ArrayBuffer(w);return new Uint8Array(v).set(new Uint8Array(s.view.buffer,s.offset,w),0),s.offset+=w,v},this.buf=this.bin,this.str=function(w){var v=l(s.view,s.offset,w);return s.offset+=w,v},this.array=function(w){for(var v=new Array(w),k=0;k<w;k++)v[k]=s.parse();return v},this.ext=function(w){return s.offset+=w,{type:s.view.getInt8(s.offset),data:s.buf(w)}},this.parse=function(){var w=s.view.getUint8(s.offset),v,k;if(!(w&128))return s.offset++,w;if((w&240)===128)return k=w&15,s.offset++,s.map(k);if((w&240)===144)return k=w&15,s.offset++,s.array(k);if((w&224)===160)return k=w&31,s.offset++,s.str(k);if((w&224)===224)return v=s.view.getInt8(s.offset),s.offset++,v;switch(w){case 192:return s.offset++,null;case 193:s.offset++;return;case 194:return s.offset++,!1;case 195:return s.offset++,!0;case 196:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.bin(k);case 197:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.bin(k);case 198:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.bin(k);case 199:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.ext(k);case 200:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.ext(k);case 201:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.ext(k);case 202:return v=s.view.getFloat32(s.offset+1),s.offset+=5,v;case 203:return v=s.view.getFloat64(s.offset+1),s.offset+=9,v;case 204:return v=s.view.getUint8(s.offset+1),s.offset+=2,v;case 205:return v=s.view.getUint16(s.offset+1),s.offset+=3,v;case 206:return v=s.view.getUint32(s.offset+1),s.offset+=5,v;case 207:return v=E(s.view,s.offset+1),s.offset+=9,v;case 208:return v=s.view.getInt8(s.offset+1),s.offset+=2,v;case 209:return v=s.view.getInt16(s.offset+1),s.offset+=3,v;case 210:return v=s.view.getInt32(s.offset+1),s.offset+=5,v;case 211:return v=y(s.view,s.offset+1),s.offset+=9,v;case 212:return k=1,s.offset++,s.ext(k);case 213:return k=2,s.offset++,s.ext(k);case 214:return k=4,s.offset++,s.ext(k);case 215:return k=8,s.offset++,s.ext(k);case 216:return k=16,s.offset++,s.ext(k);case 217:return k=s.view.getUint8(s.offset+1),s.offset+=2,s.str(k);case 218:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.str(k);case 219:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.str(k);case 220:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.array(k);case 221:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.array(k);case 222:return k=s.view.getUint16(s.offset+1),s.offset+=3,s.map(k);case 223:return k=s.view.getUint32(s.offset+1),s.offset+=5,s.map(k)}throw new Error("Unknown type 0x"+w.toString(16))},this.offset=c||0,this.view=f}return h}();function x(h){var f=new DataView(h),c=new M(f),s=c.parse();if(c.offset!==h.byteLength)throw new Error(h.byteLength-c.offset+" trailing bytes");return s}function p(h,f){return Object.keys(h).filter(function(c){var s=h[c],w=typeof s;return(!f||s!=null)&&(w!=="function"||!!s.toJSON)})}function m(h,f,c,s){var w=typeof h;if(typeof h=="string"){var v=d(h);if(v<32)return f.setUint8(c,v|160),a(f,c+1,h),1+v;if(v<256)return f.setUint8(c,217),f.setUint8(c+1,v),a(f,c+2,h),2+v;if(v<65536)return f.setUint8(c,218),f.setUint16(c+1,v),a(f,c+3,h),3+v;if(v<4294967296)return f.setUint8(c,219),f.setUint32(c+1,v),a(f,c+5,h),5+v}if(ArrayBuffer.isView&&ArrayBuffer.isView(h)&&(h=h.buffer),h instanceof ArrayBuffer){var k=h.byteLength;if(k<256)return f.setUint8(c,196),f.setUint8(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+2),2+k;if(k<65536)return f.setUint8(c,197),f.setUint16(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+3),3+k;if(k<4294967296)return f.setUint8(c,198),f.setUint32(c+1,k),new Uint8Array(f.buffer).set(new Uint8Array(h),c+5),5+k}if(typeof h=="number"){if(Math.floor(h)!==h)return f.setUint8(c,203),f.setFloat64(c+1,h),9;if(h>=0){if(h<128)return f.setUint8(c,h),1;if(h<256)return f.setUint8(c,204),f.setUint8(c+1,h),2;if(h<65536)return f.setUint8(c,205),f.setUint16(c+1,h),3;if(h<4294967296)return f.setUint8(c,206),f.setUint32(c+1,h),5;if(h<18446744073709552e3)return f.setUint8(c,207),C(f,c+1,h),9;throw new Error("Number too big 0x"+h.toString(16))}if(h>=-32)return f.setInt8(c,h),1;if(h>=-128)return f.setUint8(c,208),f.setInt8(c+1,h),2;if(h>=-32768)return f.setUint8(c,209),f.setInt16(c+1,h),3;if(h>=-2147483648)return f.setUint8(c,210),f.setInt32(c+1,h),5;if(h>=-9223372036854776e3)return f.setUint8(c,211),u(f,c+1,h),9;throw new Error("Number too small -0x"+(-h).toString(16).substr(1))}if(w==="undefined")return s?0:(f.setUint8(c,212),f.setUint8(c+1,0),f.setUint8(c+2,0),3);if(h===null)return s?0:(f.setUint8(c,192),1);if(w==="boolean")return f.setUint8(c,h?195:194),1;if(typeof h.toJSON=="function")return m(h.toJSON(),f,c,s);if(w==="object"){var j,N=0,P=void 0,T=Array.isArray(h);if(T?j=h.length:(P=p(h,s),j=P.length),j<16?(f.setUint8(c,j|(T?144:128)),N=1):j<65536?(f.setUint8(c,T?220:222),f.setUint16(c+1,j),N=3):j<4294967296&&(f.setUint8(c,T?221:223),f.setUint32(c+1,j),N=5),T)for(var I=0;I<j;I++)N+=m(h[I],f,c+N,s);else if(P)for(var I=0;I<j;I++){var A=P[I];N+=m(A,f,c+N),N+=m(h[A],f,c+N,s)}return N}if(w==="function")return 0;throw new Error("Unknown type "+w)}function b(h,f){var c=typeof h;if(c==="string"){var s=d(h);if(s<32)return 1+s;if(s<256)return 2+s;if(s<65536)return 3+s;if(s<4294967296)return 5+s}if(ArrayBuffer.isView&&ArrayBuffer.isView(h)&&(h=h.buffer),h instanceof ArrayBuffer){var w=h.byteLength;if(w<256)return 2+w;if(w<65536)return 3+w;if(w<4294967296)return 5+w}if(typeof h=="number"){if(Math.floor(h)!==h)return 9;if(h>=0){if(h<128)return 1;if(h<256)return 2;if(h<65536)return 3;if(h<4294967296)return 5;if(h<18446744073709552e3)return 9;throw new Error("Number too big 0x"+h.toString(16))}if(h>=-32)return 1;if(h>=-128)return 2;if(h>=-32768)return 3;if(h>=-2147483648)return 5;if(h>=-9223372036854776e3)return 9;throw new Error("Number too small -0x"+h.toString(16).substr(1))}if(c==="boolean")return 1;if(h===null)return f?0:1;if(h===void 0)return f?0:3;if(typeof h.toJSON=="function")return b(h.toJSON(),f);if(c==="object"){var v,k=0;if(Array.isArray(h)){v=h.length;for(var j=0;j<v;j++)k+=b(h[j],f)}else{var N=p(h,f);v=N.length;for(var j=0;j<v;j++){var P=N[j];k+=b(P)+b(h[P],f)}}if(v<16)return 1+k;if(v<65536)return 3+k;if(v<4294967296)return 5+k;throw new Error("Array or object too long 0x"+v.toString(16))}if(c==="function")return 0;throw new Error("Unknown type "+c)}r.default={encode:g,decode:x,inspect:i,utf8Write:a,utf8Read:l,utf8ByteCount:d}},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(30)),l=i.__importDefault(o(50)),d=i.__importDefault(o(3)),g=i.__importDefault(o(4)),S=i.__importDefault(o(55)),R=i.__importDefault(o(57)),y=i.__importDefault(o(62)),E=i.__importDefault(o(64)),u=i.__importDefault(o(68)),C=i.__importDefault(o(2)),M=o(8),x=i.__importDefault(o(65)),p=i.__importDefault(o(66)),m=i.__importDefault(o(41)),b=(0,R.default)(E.default,S.default);d.default.Crypto=b,d.default.BufferUtils=S.default,d.default.Http=y.default,d.default.Config=E.default,d.default.Transports=u.default,d.default.WebStorage=x.default,a.default.Crypto=b,l.default.Crypto=b,C.default.initLogHandlers(),d.default.Defaults=(0,M.getDefaults)(p.default),d.default.Config.agent&&(d.default.Defaults.agent+=" "+d.default.Config.agent),d.default.Config.noUpgrade&&(d.default.Defaults.upgradeTransports=[]),r.default={ErrorInfo:g.default,Rest:a.default,Realtime:l.default,msgpack:m.default}},function(n){n.exports=JSON.parse('{"name":"ably","description":"Realtime client library for Ably, the realtime messaging service","version":"1.2.50","license":"Apache-2.0","bugs":{"url":"https://github.com/ably/ably-js/issues","email":"support@ably.com"},"main":"./build/ably-node.js","typings":"./ably.d.ts","react-native":{"./build/ably-node.js":"./build/ably-reactnative.js"},"browser":{"./build/ably-node.js":"./build/ably-commonjs.js"},"files":["build/**","ably.d.ts","callbacks.d.ts","callbacks.js","promises.d.ts","promises.js","resources/**","src/**","react/**"],"dependencies":{"@ably/msgpack-js":"^0.4.0","got":"^11.8.5","ws":"^8.14.2"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true}},"devDependencies":{"@ably/vcdiff-decoder":"1.0.4","@arethetypeswrong/cli":"^0.13.1","@babel/preset-env":"^7.23.6","@testing-library/react":"^13.3.0","@types/crypto-js":"^4.0.1","@types/jmespath":"^0.15.2","@types/node":"^15.0.0","@types/request":"^2.48.7","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.14.0","@typescript-eslint/parser":"^5.14.0","@vitejs/plugin-react":"^1.3.2","async":"ably-forks/async#requirejs","aws-sdk":"^2.1413.0","babel-loader":"^8.3.0","chai":"^4.2.0","copy-webpack-plugin":"^6.4.1","cors":"^2.8.5","crypto-js":"ably-forks/crypto-js#crypto-lite","eslint":"^7.13.0","eslint-plugin-import":"^2.28.0","eslint-plugin-jsdoc":"^40.0.0","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-security":"^1.4.0","express":"^4.17.1","glob":"~4.4","google-closure-compiler":"^20180610.0.1","grunt":"^1.6.1","grunt-bump":"^0.3.1","grunt-cli":"~1.2.0","grunt-closure-tools":"^1.0.0","grunt-contrib-concat":"~0.5","grunt-shell":"~1.1","grunt-webpack":"^4.0.2","hexy":"~0.2","jmespath":"^0.16.0","jsdom":"^20.0.0","kexec":"ably-forks/node-kexec#update-for-node-12","minimist":"^1.2.5","mocha":"^8.1.3","mocha-junit-reporter":"^2.2.1","null-loader":"^4.0.1","playwright":"^1.39.0","prettier":"^2.5.1","react":">=18.1.0","react-dom":">=18.1.0","requirejs":"~2.1","shelljs":"~0.8","source-map-explorer":"^2.5.2","ts-loader":"^8.2.0","tsconfig-paths-webpack-plugin":"^4.0.1","tslib":"^2.3.1","typedoc":"^0.23.8","typescript":"^4.6.4","vite":"^4.4.9","vitest":"^0.18.0","webpack":"^4.44.2","webpack-cli":"^4.2.0","webpack-node-externals":"^3.0.0"},"engines":{"node":">=5.10.x"},"repository":"ably/ably-js","jspm":{"registry":"npm","directories":{"lib":"build"},"main":"ably"},"scripts":{"start:react":"npx vite serve","grunt":"grunt","test":"grunt test","test:node":"grunt test:node","test:node:skip-build":"grunt mocha","test:webserver":"grunt test:webserver","test:playwright":"node test/support/runPlaywrightTests.js","test:react":"vitest run","concat":"grunt concat","build":"grunt build:all && npm run build:react","build:node":"grunt build:node","build:browser":"grunt build:browser","build:react":"npm run build:react:mjs && npm run build:react:cjs && cp src/platform/react-hooks/res/package.react.json react/package.json","build:react:mjs":"tsc --project src/platform/react-hooks/tsconfig.mjs.json && cp src/platform/react-hooks/res/package.mjs.json react/mjs/package.json","build:react:cjs":"tsc --project src/platform/react-hooks/tsconfig.cjs.json && cp src/platform/react-hooks/res/package.cjs.json react/cjs/package.json","requirejs":"grunt requirejs","lint":"eslint .","lint:fix":"eslint --fix .","check-closure-compiler":"grunt check-closure-compiler","prepare":"npm run build","format":"prettier --write --ignore-path .gitignore --ignore-path .prettierignore src test ably.d.ts webpack.config.js Gruntfile.js scripts/cdn_deploy.js docs/chrome-mv3.md","format:check":"prettier --check --ignore-path .gitignore --ignore-path .prettierignore src test ably.d.ts webpack.config.js Gruntfile.js scripts/cdn_deploy.js","sourcemap":"source-map-explorer build/ably.min.js","sourcemap:noencryption":"source-map-explorer build/ably.noencryption.min.js","docs":"typedoc --entryPoints ably.d.ts --out docs/generated/default --readme docs/landing-pages/default.md && typedoc --entryPoints promises.d.ts --out docs/generated/promises --name \\"ably (Promise-based)\\" --readme docs/landing-pages/promises.md && cp docs/landing-pages/choose-library.html docs/generated/index.html"}}')},function(n,r){},function(n,r,o){(function(i,a){n.exports=a(o(6),o(32),o(25))})(this,function(i){return i.HmacSHA256})},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(47)),d=i.__importDefault(o(15)),g=i.__importDefault(o(20)),S=i.__importDefault(o(4)),R=i.__importDefault(o(48)),y=function(){},E=function(){function x(p){this.rest=p,this.admin=new u(p)}return x}(),u=function(){function x(p){this.rest=p,this.deviceRegistrations=new C(p),this.channelSubscriptions=new M(p)}return x.prototype.publish=function(p,m,b){var h=this.rest,f=h.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(h.options,f),s={},w=a.mixin({recipient:p},m);if(typeof b!="function"){if(this.rest.options.promises)return a.promisify(this,"publish",arguments);b=y}h.options.headers&&a.mixin(c,h.options.headers),h.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var v=a.encodeBody(w,f);d.default.post(h,"/push/publish",v,c,s,null,function(k){return b(k)})},x}(),C=function(){function x(p){this.rest=p}return x.prototype.save=function(p,m){var b=this.rest,h=l.default.fromValues(p),f=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(b.options,f),s={};if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"save",arguments);m=y}b.options.headers&&a.mixin(c,b.options.headers),b.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var w=a.encodeBody(h,f);d.default.put(b,"/push/deviceRegistrations/"+encodeURIComponent(p.id),w,c,s,null,function(v,k,j,N){m(v,v?void 0:l.default.fromResponseBody(k,N?void 0:f))})},x.prototype.get=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(b.options,h),c=p.id||p;if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"get",arguments);m=y}if(typeof c!="string"||!c.length){m(new S.default("First argument to DeviceRegistrations#get must be a deviceId string or DeviceDetails",4e4,400));return}b.options.headers&&a.mixin(f,b.options.headers),d.default.get(b,"/push/deviceRegistrations/"+encodeURIComponent(c),f,{},null,function(s,w,v,k){m(s,s?void 0:l.default.fromResponseBody(w,k?void 0:h))})},x.prototype.list=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(b.options,h);if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"list",arguments);m=y}b.options.headers&&a.mixin(c,b.options.headers),new g.default(b,"/push/deviceRegistrations",c,f,function(s,w,v){return l.default.fromResponseBody(s,v?void 0:h)}).get(p,m)},x.prototype.remove=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(b.options,h),c={},s=p.id||p;if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"remove",arguments);m=y}if(typeof s!="string"||!s.length){m(new S.default("First argument to DeviceRegistrations#remove must be a deviceId string or DeviceDetails",4e4,400));return}b.options.headers&&a.mixin(f,b.options.headers),b.options.pushFullWait&&a.mixin(c,{fullWait:"true"}),d.default.delete(b,"/push/deviceRegistrations/"+encodeURIComponent(s),f,c,null,function(w){return m(w)})},x.prototype.removeWhere=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(b.options,h);if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"removeWhere",arguments);m=y}b.options.headers&&a.mixin(f,b.options.headers),b.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),d.default.delete(b,"/push/deviceRegistrations",f,p,null,function(c){return m(c)})},x}(),M=function(){function x(p){this.remove=x.prototype.removeWhere,this.rest=p}return x.prototype.save=function(p,m){var b=this.rest,h=R.default.fromValues(p),f=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,c=a.defaultPostHeaders(b.options,f),s={};if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"save",arguments);m=y}b.options.headers&&a.mixin(c,b.options.headers),b.options.pushFullWait&&a.mixin(s,{fullWait:"true"});var w=a.encodeBody(h,f);d.default.post(b,"/push/channelSubscriptions",w,c,s,null,function(v,k,j,N){m(v,!v&&R.default.fromResponseBody(k,N?void 0:f))})},x.prototype.list=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(b.options,h);if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"list",arguments);m=y}b.options.headers&&a.mixin(c,b.options.headers),new g.default(b,"/push/channelSubscriptions",c,f,function(s,w,v){return R.default.fromResponseBody(s,v?void 0:h)}).get(p,m)},x.prototype.removeWhere=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=a.defaultGetHeaders(b.options,h);if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"removeWhere",arguments);m=y}b.options.headers&&a.mixin(f,b.options.headers),b.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),d.default.delete(b,"/push/channelSubscriptions",f,p,null,function(c){return m(c)})},x.prototype.listChannels=function(p,m){var b=this.rest,h=b.options.useBinaryProtocol?a.Format.msgpack:a.Format.json,f=this.rest.http.supportsLinkHeaders?void 0:h,c=a.defaultGetHeaders(b.options,h);if(typeof m!="function"){if(this.rest.options.promises)return a.promisify(this,"listChannels",arguments);m=y}b.options.headers&&a.mixin(c,b.options.headers),b.options.pushFullWait&&a.mixin(p,{fullWait:"true"}),new g.default(b,"/push/channels",c,f,function(s,w,v){for(var k=!v&&h?a.decodeBody(s,h):s,j=0;j<k.length;j++)k[j]=String(k[j]);return k}).get(p,m)},x}();r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(4)),d;(function(R){R.Phone="phone",R.Tablet="tablet",R.Desktop="desktop",R.TV="tv",R.Watch="watch",R.Car="car",R.Embedded="embedded",R.Other="other"})(d||(d={}));var g;(function(R){R.Android="android",R.IOS="ios",R.Browser="browser"})(g||(g={}));var S=function(){function R(){}return R.prototype.toJSON=function(){var y,E,u;return{id:this.id,deviceSecret:this.deviceSecret,platform:this.platform,formFactor:this.formFactor,clientId:this.clientId,metadata:this.metadata,deviceIdentityToken:this.deviceIdentityToken,push:{recipient:(y=this.push)===null||y===void 0?void 0:y.recipient,state:(E=this.push)===null||E===void 0?void 0:E.state,error:(u=this.push)===null||u===void 0?void 0:u.error}}},R.prototype.toString=function(){var y,E,u,C,M="[DeviceDetails";return this.id&&(M+="; id="+this.id),this.platform&&(M+="; platform="+this.platform),this.formFactor&&(M+="; formFactor="+this.formFactor),this.clientId&&(M+="; clientId="+this.clientId),this.metadata&&(M+="; metadata="+this.metadata),this.deviceIdentityToken&&(M+="; deviceIdentityToken="+JSON.stringify(this.deviceIdentityToken)),!((y=this.push)===null||y===void 0)&&y.recipient&&(M+="; push.recipient="+JSON.stringify(this.push.recipient)),!((E=this.push)===null||E===void 0)&&E.state&&(M+="; push.state="+this.push.state),!((u=this.push)===null||u===void 0)&&u.error&&(M+="; push.error="+JSON.stringify(this.push.error)),!((C=this.push)===null||C===void 0)&&C.metadata&&(M+="; push.metadata="+this.push.metadata),M+="]",M},R.fromResponseBody=function(y,E){return E&&(y=a.decodeBody(y,E)),a.isArray(y)?R.fromValuesArray(y):R.fromValues(y)},R.fromValues=function(y){return y.error=y.error&&l.default.fromValues(y.error),Object.assign(new R,y)},R.fromValuesArray=function(y){for(var E=y.length,u=new Array(E),C=0;C<E;C++)u[C]=R.fromValues(y[C]);return u},R.toRequestBody=a.encodeBody,R}();r.default=S},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=function(){function d(){}return d.prototype.toJSON=function(){return{channel:this.channel,deviceId:this.deviceId,clientId:this.clientId}},d.prototype.toString=function(){var g="[PushChannelSubscription";return this.channel&&(g+="; channel="+this.channel),this.deviceId&&(g+="; deviceId="+this.deviceId),this.clientId&&(g+="; clientId="+this.clientId),g+="]",g},d.fromResponseBody=function(g,S){return S&&(g=a.decodeBody(g,S)),a.isArray(g)?d.fromValuesArray(g):d.fromValues(g)},d.fromValues=function(g){return Object.assign(new d,g)},d.fromValuesArray=function(g){for(var S=g.length,R=new Array(S),y=0;y<S;y++)R[y]=d.fromValues(g[y]);return R},d.toRequestBody=a.encodeBody,d}();r.default=l},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=function(){function b(h){this.count=h&&h.count||0,this.data=h&&h.data||0,this.uncompressedData=h&&h.uncompressedData||0,this.failed=h&&h.failed||0,this.refused=h&&h.refused||0}return b}(),d=function(b){i.__extends(h,b);function h(f){var c=b.call(this,f)||this;return f&&f.category&&(c.category={},a.forInOwnNonNullProperties(f.category,function(s){c.category[s]=new l(f.category[s])})),c}return h}(l),g=function(){function b(h){this.peak=h&&h.peak||0,this.min=h&&h.min||0,this.mean=h&&h.mean||0,this.opened=h&&h.opened||0,this.refused=h&&h.refused||0}return b}(),S=function(){function b(h){this.succeeded=h&&h.succeeded||0,this.failed=h&&h.failed||0,this.refused=h&&h.refused||0}return b}(),R=function(){function b(h){this.plain=new g(h&&h.plain),this.tls=new g(h&&h.tls),this.all=new g(h&&h.all)}return b}(),y=function(){function b(h){this.messages=new d(h&&h.messages),this.presence=new d(h&&h.presence),this.all=new d(h&&h.all)}return b}(),E=function(){function b(h){this.realtime=new y(h&&h.realtime),this.rest=new y(h&&h.rest),this.webhook=new y(h&&h.webhook),this.sharedQueue=new y(h&&h.sharedQueue),this.externalQueue=new y(h&&h.externalQueue),this.httpEvent=new y(h&&h.httpEvent),this.push=new y(h&&h.push),this.all=new y(h&&h.all)}return b}(),u=function(){function b(h){this.all=new y(h&&h.all),this.inbound=new E(h&&h.inbound),this.outbound=new E(h&&h.outbound)}return b}(),C=function(){function b(h){this.all=new y(h&&h.all),this.producerPaid=new u(h&&h.producerPaid),this.consumerPaid=new u(h&&h.consumerPaid)}return b}(),M=function(){function b(h){this.messages=h&&h.messages||0;var f=h&&h.notifications;this.notifications={invalid:f&&f.invalid||0,attempted:f&&f.attempted||0,successful:f&&f.successful||0,failed:f&&f.failed||0},this.directPublishes=h&&h.directPublishes||0}return b}(),x=function(){function b(h){this.succeeded=h&&h.succeeded||0,this.skipped=h&&h.skipped||0,this.failed=h&&h.failed||0}return b}(),p=function(){function b(h){var f=this;this.delta=void 0,h&&h.delta&&(this.delta={},a.forInOwnNonNullProperties(h.delta,function(c){f.delta[c]=new x(h.delta[c])}))}return b}(),m=function(b){i.__extends(h,b);function h(f){var c=b.call(this,f)||this;return c.persisted=new y(f&&f.persisted),c.connections=new R(f&&f.connections),c.channels=new g(f&&f.channels),c.apiRequests=new S(f&&f.apiRequests),c.tokenRequests=new S(f&&f.tokenRequests),c.xchgProducer=new C(f&&f.xchgProducer),c.xchgConsumer=new C(f&&f.xchgConsumer),c.push=new M(f&&f.pushStats),c.processed=new p(f&&f.processed),c.inProgress=f&&f.inProgress||void 0,c.unit=f&&f.unit||void 0,c.intervalId=f&&f.intervalId||void 0,c}return h.fromValues=function(f){return new h(f)},h}(u);r.default=m},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(30)),d=i.__importDefault(o(7)),g=i.__importDefault(o(2)),S=i.__importDefault(o(51)),R=i.__importDefault(o(38)),y=i.__importDefault(o(8)),E=i.__importDefault(o(4)),u=i.__importDefault(o(10)),C=i.__importDefault(o(35)),M=i.__importDefault(o(3)),x=i.__importDefault(o(9)),p=function(b){i.__extends(h,b);function h(f){var c=b.call(this,f)||this;return g.default.logAction(g.default.LOG_MINOR,"Realtime()",""),c.connection=new S.default(c,c.options),c.channels=new m(c),f.autoConnect!==!1&&c.connect(),c}return h.prototype.connect=function(){g.default.logAction(g.default.LOG_MINOR,"Realtime.connect()",""),this.connection.connect()},h.prototype.close=function(){g.default.logAction(g.default.LOG_MINOR,"Realtime.close()",""),this.connection.close()},h.Promise=function(f){return f=y.default.objectifyOptions(f),f.promises=!0,new h(f)},h.Callbacks=h,h.Utils=a,h.ConnectionManager=C.default,h.Platform=M.default,h.ProtocolMessage=u.default,h.Message=x.default,h}(l.default),m=function(b){i.__extends(h,b);function h(f){var c=b.call(this)||this;return c.realtime=f,c.all=Object.create(null),f.connection.connectionManager.on("transport.active",function(){c.onTransportActive()}),c}return h.prototype.channelSerials=function(){for(var f={},c=0,s=a.keysArray(this.all,!0);c<s.length;c++){var w=s[c],v=this.all[w];v.properties.channelSerial&&(f[w]=v.properties.channelSerial)}return f},h.prototype.recoverChannels=function(f){for(var c=0,s=a.keysArray(f,!0);c<s.length;c++){var w=s[c],v=this.get(w);v.properties.channelSerial=f[w]}},h.prototype.onChannelMessage=function(f){var c=f.channel;if(c===void 0){g.default.logAction(g.default.LOG_ERROR,"Channels.onChannelMessage()","received event unspecified channel, action = "+f.action);return}var s=this.all[c];if(!s){g.default.logAction(g.default.LOG_ERROR,"Channels.onChannelMessage()","received event for non-existent channel: "+c);return}s.onMessage(f)},h.prototype.onTransportActive=function(){for(var f in this.all){var c=this.all[f];c.state==="attaching"||c.state==="detaching"?c.checkPendingState():c.state==="suspended"?c._attach(!1,null):c.state==="attached"&&c.requestState("attaching")}},h.prototype.propogateConnectionInterruption=function(f,c){var s={closing:"detached",closed:"detached",failed:"failed",suspended:"suspended"},w=["attaching","attached","detaching","suspended"],v=s[f];for(var k in this.all){var j=this.all[k];a.arrIn(w,j.state)&&j.notifyState(v,c)}},h.prototype.get=function(f,c){f=String(f);var s=this.all[f];if(!s)s=this.all[f]=new R.default(this.realtime,f,c);else if(c){if(s._shouldReattachToSetOptions(c,s.channelOptions))throw new E.default("Channels.get() cannot be used to set channel options that would cause the channel to reattach. Please, use RealtimeChannel.setOptions() instead.",4e4,400);s.setOptions(c)}return s},h.prototype.getDerived=function(f,c,s){if(c.filter){var w=a.toBase64(c.filter),v=a.matchDerivedChannel(f);f="[filter=".concat(w).concat(v.qualifierParam,"]").concat(v.channelName)}return this.get(f,s)},h.prototype.release=function(f){f=String(f);var c=this.all[f];if(c){var s=c.getReleaseErr();if(s)throw s;delete this.all[f]}},h}(d.default);r.default=p},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(7)),d=i.__importDefault(o(35)),g=i.__importDefault(o(2)),S=i.__importDefault(o(37)),R=i.__importDefault(o(3));function y(){}var E=function(u){i.__extends(C,u);function C(M,x){var p=u.call(this)||this;return p.whenState=function(m,b){return l.default.prototype.whenState.call(p,m,p.state,b,new S.default(void 0,m))},p.ably=M,p.connectionManager=new d.default(M,x),p.state=p.connectionManager.state.state,p.key=void 0,p.id=void 0,p.errorReason=null,p.connectionManager.on("connectionstate",function(m){var b=p.state=m.current;R.default.Config.nextTick(function(){p.emit(b,m)})}),p.connectionManager.on("update",function(m){R.default.Config.nextTick(function(){p.emit("update",m)})}),p}return C.prototype.connect=function(){g.default.logAction(g.default.LOG_MINOR,"Connection.connect()",""),this.connectionManager.requestState({state:"connecting"})},C.prototype.ping=function(M){if(g.default.logAction(g.default.LOG_MINOR,"Connection.ping()",""),!M){if(this.ably.options.promises)return a.promisify(this,"ping",arguments);M=y}this.connectionManager.ping(null,M)},C.prototype.close=function(){g.default.logAction(g.default.LOG_MINOR,"Connection.close()","connectionKey = "+this.key),this.connectionManager.requestState({state:"closing"})},Object.defineProperty(C.prototype,"recoveryKey",{get:function(){return this.createRecoveryKey()},enumerable:!1,configurable:!0}),C.prototype.createRecoveryKey=function(){return this.connectionManager.createRecoveryKey()},C}(l.default);r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0}),r.PendingMessage=void 0;var i=o(0),a=i.__importDefault(o(10)),l=i.__importStar(o(1)),d=i.__importDefault(o(7)),g=i.__importDefault(o(2)),S=i.__importDefault(o(36)),R=i.__importDefault(o(4)),y=a.default.Action,E=function(){function C(M,x){this.message=M,this.callback=x,this.merged=!1;var p=M.action;this.sendAttempted=!1,this.ackRequired=p==y.MESSAGE||p==y.PRESENCE}return C}();r.PendingMessage=E;var u=function(C){i.__extends(M,C);function M(x){var p=C.call(this)||this;return p.transport=x,p.messageQueue=new S.default,x.on("ack",function(m,b){p.onAck(m,b)}),x.on("nack",function(m,b,h){p.onNack(m,b,h)}),p}return M.prototype.onAck=function(x,p){g.default.logAction(g.default.LOG_MICRO,"Protocol.onAck()","serial = "+x+"; count = "+p),this.messageQueue.completeMessages(x,p)},M.prototype.onNack=function(x,p,m){g.default.logAction(g.default.LOG_ERROR,"Protocol.onNack()","serial = "+x+"; count = "+p+"; err = "+l.inspectError(m)),m||(m=new R.default("Unable to send message; channel not responding",50001,500)),this.messageQueue.completeMessages(x,p,m)},M.prototype.onceIdle=function(x){var p=this.messageQueue;if(p.count()===0){x();return}p.once("idle",x)},M.prototype.send=function(x){x.ackRequired&&this.messageQueue.push(x),g.default.shouldLog(g.default.LOG_MICRO)&&g.default.logAction(g.default.LOG_MICRO,"Protocol.send()","sending msg; "+a.default.stringify(x.message)),x.sendAttempted=!0,this.transport.send(x.message)},M.prototype.getTransport=function(){return this.transport},M.prototype.getPendingMessages=function(){return this.messageQueue.copyAll()},M.prototype.clearPendingMessages=function(){return this.messageQueue.clear()},M.prototype.finish=function(){var x=this.transport;this.onceIdle(function(){x.disconnect()})},M}(d.default);r.default=u},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(3)),l=i.__importStar(o(1)),d=i.__importDefault(o(26)),g=i.__importDefault(o(8)),S=i.__importDefault(o(2)),R=i.__importDefault(o(10)),y=i.__importDefault(o(4)),E="web_socket";function u(x){return!!x.on}var C=function(x){i.__extends(p,x);function p(m,b,h){var f=x.call(this,m,b,h)||this;return f.shortName=E,h.heartbeats=a.default.Config.useProtocolHeartbeats,f.wsHost=g.default.getHost(h.options,h.host,!0),f}return p.isAvailable=function(){return!!a.default.Config.WebSocket},p.prototype.createWebSocket=function(m,b){return this.uri=m+l.toQueryString(b),new a.default.Config.WebSocket(this.uri)},p.prototype.toString=function(){return"WebSocketTransport; uri="+this.uri},p.prototype.connect=function(){S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.connect()","starting"),d.default.prototype.connect.call(this);var m=this,b=this.params,h=b.options,f=h.tls?"wss://":"ws://",c=f+this.wsHost+":"+g.default.getPort(h)+"/";S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.connect()","uri: "+c),this.auth.getAuthParams(function(s,w){if(!m.isDisposed){var v="";for(var k in w)v+=" "+k+": "+w[k]+";";if(S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.connect()","authParams:"+v+" err: "+s),s){m.disconnect(s);return}var j=b.getConnectParams(w);try{var N=m.wsConnection=m.createWebSocket(c,j);N.binaryType=a.default.Config.binaryType,N.onopen=function(){m.onWsOpen()},N.onclose=function(P){m.onWsClose(P)},N.onmessage=function(P){m.onWsData(P.data)},N.onerror=function(P){m.onWsError(P)},u(N)&&N.on("ping",function(){m.onActivity()})}catch(P){S.default.logAction(S.default.LOG_ERROR,"WebSocketTransport.connect()","Unexpected exception creating websocket: err = "+(P.stack||P.message)),m.disconnect(P)}}})},p.prototype.send=function(m){var b=this.wsConnection;if(!b){S.default.logAction(S.default.LOG_ERROR,"WebSocketTransport.send()","No socket connection");return}try{b.send(R.default.serialize(m,this.params.format))}catch(f){var h="Exception from ws connection when trying to send: "+l.inspectError(f);S.default.logAction(S.default.LOG_ERROR,"WebSocketTransport.send()",h),this.finish("disconnected",new y.default(h,5e4,500))}},p.prototype.onWsData=function(m){S.default.logAction(S.default.LOG_MICRO,"WebSocketTransport.onWsData()","data received; length = "+m.length+"; type = "+typeof m);try{this.onProtocolMessage(R.default.deserialize(m,this.format))}catch(b){S.default.logAction(S.default.LOG_ERROR,"WebSocketTransport.onWsData()","Unexpected exception handing channel message: "+b.stack)}},p.prototype.onWsOpen=function(){S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.onWsOpen()","opened WebSocket"),this.emit("preconnect")},p.prototype.onWsClose=function(m){var b,h;if(typeof m=="object"?(h=m.code,b=m.wasClean||h===1e3):(h=m,b=h==1e3),delete this.wsConnection,b){S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.onWsClose()","Cleanly closed WebSocket");var f=new y.default("Websocket closed",80003,400);this.finish("disconnected",f)}else{var c="Unclean disconnection of WebSocket ; code = "+h,f=new y.default(c,80003,400);S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.onWsClose()",c),this.finish("disconnected",f)}this.emit("disposed")},p.prototype.onWsError=function(m){var b=this;S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.onError()","Error from WebSocket: "+m.message),a.default.Config.nextTick(function(){b.disconnect(Error(m.message))})},p.prototype.dispose=function(){S.default.logAction(S.default.LOG_MINOR,"WebSocketTransport.dispose()",""),this.isDisposed=!0;var m=this.wsConnection;m&&(m.onmessage=function(){},delete this.wsConnection,a.default.Config.nextTick(function(){if(S.default.logAction(S.default.LOG_MICRO,"WebSocketTransport.dispose()","closing websocket"),!m)throw new Error("WebSocketTransport.dispose(): wsConnection is not defined");m.close()}))},p}(d.default);function M(x){return C.isAvailable()&&(x.supportedTransports[E]=C),C}r.default=M},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(1)),l=i.__importDefault(o(34)),d=i.__importDefault(o(7)),g=i.__importDefault(o(2)),S=i.__importDefault(o(16)),R=i.__importStar(o(4)),y=i.__importDefault(o(38)),E=i.__importDefault(o(24)),u=i.__importDefault(o(39)),C=function(){};function M(f){return f.channel.realtime.auth.clientId}function x(f){var c=f.channel.realtime,s=c.auth.clientId;return(!s||s==="*")&&c.connection.state==="connected"}function p(f,c,s){switch(f.state){case"attached":case"suspended":s();break;case"initialized":case"detached":case"detaching":case"attaching":f.attach(function(w){w?c(w):s()});break;default:c(R.default.fromValues(f.invalidStateError()))}}function m(f,c){if(f.isSynthesized()||c.isSynthesized())return f.timestamp>=c.timestamp;var s=f.parseId(),w=c.parseId();return s.msgSerial===w.msgSerial?s.index>w.index:s.msgSerial>w.msgSerial}var b=function(f){i.__extends(c,f);function c(s){var w=f.call(this,s)||this;return w.channel=s,w.syncComplete=!1,w.members=new h(w,function(v){return v.clientId+":"+v.connectionId}),w._myMembers=new h(w,function(v){return v.clientId}),w.subscriptions=new d.default,w.pendingPresence=[],w}return c.prototype.enter=function(s,w){if(x(this))throw new R.default("clientId must be specified to enter a presence channel",40012,400);return this._enterOrUpdateClient(void 0,void 0,s,"enter",w)},c.prototype.update=function(s,w){if(x(this))throw new R.default("clientId must be specified to update presence data",40012,400);return this._enterOrUpdateClient(void 0,void 0,s,"update",w)},c.prototype.enterClient=function(s,w,v){return this._enterOrUpdateClient(void 0,s,w,"enter",v)},c.prototype.updateClient=function(s,w,v){return this._enterOrUpdateClient(void 0,s,w,"update",v)},c.prototype._enterOrUpdateClient=function(s,w,v,k,j){var N=this;if(!j)if(typeof v=="function")j=v,v=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"_enterOrUpdateClient",[s,w,v,k]);j=C}var P=this.channel;if(!P.connectionManager.activeState()){j(P.connectionManager.getError());return}g.default.logAction(g.default.LOG_MICRO,"RealtimePresence."+k+"Client()","channel = "+P.name+", id = "+s+", client = "+(w||"(implicit) "+M(this)));var T=S.default.fromData(v);T.action=k,s&&(T.id=s),w&&(T.clientId=w),S.default.encode(T,P.channelOptions,function(I){if(I){j(I);return}switch(P.state){case"attached":P.sendPresence(T,j);break;case"initialized":case"detached":P.attach();case"attaching":N.pendingPresence.push({presence:T,callback:j});break;default:I=new R.PartialErrorInfo("Unable to "+k+" presence channel while in "+P.state+" state",90001),I.code=90001,j(I)}})},c.prototype.leave=function(s,w){if(x(this))throw new R.default("clientId must have been specified to enter or leave a presence channel",40012,400);return this.leaveClient(void 0,s,w)},c.prototype.leaveClient=function(s,w,v){if(!v)if(typeof w=="function")v=w,w=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"leaveClient",[s,w]);v=C}var k=this.channel;if(!k.connectionManager.activeState()){v==null||v(k.connectionManager.getError());return}g.default.logAction(g.default.LOG_MICRO,"RealtimePresence.leaveClient()","leaving; channel = "+this.channel.name+", client = "+s);var j=S.default.fromData(w);switch(j.action="leave",s&&(j.clientId=s),k.state){case"attached":k.sendPresence(j,v);break;case"attaching":this.pendingPresence.push({presence:j,callback:v});break;case"initialized":case"failed":{var N=new R.PartialErrorInfo("Unable to leave presence channel (incompatible state)",90001);v==null||v(N);break}default:v==null||v(k.invalidStateError())}},c.prototype.get=function(s,w){var v=this,k=Array.prototype.slice.call(arguments);k.length==1&&typeof k[0]=="function"&&k.unshift(null),s=k[0],w=k[1];var j=!s||("waitForSync"in s?s.waitForSync:!0);if(!w){if(this.channel.realtime.options.promises)return a.promisify(this,"get",k);w=C}function N(P){w(null,s?P.list(s):P.values())}if(this.channel.state==="suspended"){j?w(R.default.fromValues({statusCode:400,code:91005,message:"Presence state is out of sync due to channel being in the SUSPENDED state"})):N(this.members);return}p(this.channel,w,function(){var P=v.members;j?P.waitSync(function(){N(P)}):N(P)})},c.prototype.history=function(s,w){if(g.default.logAction(g.default.LOG_MICRO,"RealtimePresence.history()","channel = "+this.name),w===void 0)if(typeof s=="function")w=s,s=null;else{if(this.channel.realtime.options.promises)return a.promisify(this,"history",arguments);w=C}s&&s.untilAttach&&(this.channel.state==="attached"?(delete s.untilAttach,s.from_serial=this.channel.properties.attachSerial):w(new R.default("option untilAttach requires the channel to be attached, was: "+this.channel.state,4e4,400))),l.default.prototype._history.call(this,s,w)},c.prototype.setPresence=function(s,w,v){g.default.logAction(g.default.LOG_MICRO,"RealtimePresence.setPresence()","received presence for "+s.length+" participants; syncChannelSerial = "+v);var k,j,N=this.members,P=this._myMembers,T=[],I=this.channel.connectionManager.connectionId;w&&(this.members.startSync(),v&&(j=v.match(/^[\w-]+:(.*)$/))&&(k=j[1]));for(var A=0;A<s.length;A++){var D=S.default.fromValues(s[A]);switch(D.action){case"leave":N.remove(D)&&T.push(D),D.connectionId===I&&!D.isSynthesized()&&P.remove(D);break;case"enter":case"present":case"update":N.put(D)&&T.push(D),D.connectionId===I&&P.put(D);break}}w&&!k&&(N.endSync(),this.channel.syncChannelSerial=null);for(var A=0;A<T.length;A++){var D=T[A];this.subscriptions.emit(D.action,D)}},c.prototype.onAttached=function(s){g.default.logAction(g.default.LOG_MINOR,"RealtimePresence.onAttached()","channel = "+this.channel.name+", hasPresence = "+s),s?this.members.startSync():(this._synthesizeLeaves(this.members.values()),this.members.clear()),this._ensureMyMembersPresent();var w=this.pendingPresence,v=w.length;if(v){this.pendingPresence=[];var k=[],j=E.default.create();g.default.logAction(g.default.LOG_MICRO,"RealtimePresence.onAttached","sending "+v+" queued presence messages");for(var N=0;N<v;N++){var P=w[N];k.push(P.presence),j.push(P.callback)}this.channel.sendPresence(k,j)}},c.prototype.actOnChannelState=function(s,w,v){switch(s){case"attached":this.onAttached(w);break;case"detached":case"failed":this._clearMyMembers(),this.members.clear();case"suspended":this.failPendingPresence(v);break}},c.prototype.failPendingPresence=function(s){if(this.pendingPresence.length){g.default.logAction(g.default.LOG_MINOR,"RealtimeChannel.failPendingPresence","channel; name = "+this.channel.name+", err = "+a.inspectError(s));for(var w=0;w<this.pendingPresence.length;w++)try{this.pendingPresence[w].callback(s)}catch(v){}this.pendingPresence=[]}},c.prototype._clearMyMembers=function(){this._myMembers.clear()},c.prototype._ensureMyMembersPresent=function(){var s=this,w=this._myMembers,v=function(N){if(N){var P="Presence auto-re-enter failed: "+N.toString(),T=new R.default(P,91004,400);g.default.logAction(g.default.LOG_ERROR,"RealtimePresence._ensureMyMembersPresent()",P);var I=new u.default(s.channel.state,s.channel.state,!0,!1,T);s.channel.emit("update",I)}};for(var k in w.map){var j=w.map[k];g.default.logAction(g.default.LOG_MICRO,"RealtimePresence._ensureMyMembersPresent()",'Auto-reentering clientId "'+j.clientId+'" into the presence set'),this._enterOrUpdateClient(j.id,j.clientId,j.data,"enter",v)}},c.prototype._synthesizeLeaves=function(s){var w=this.subscriptions;a.arrForEach(s,function(v){var k=S.default.fromValues({action:"leave",connectionId:v.connectionId,clientId:v.clientId,data:v.data,encoding:v.encoding,timestamp:a.now()});w.emit("leave",k)})},c.prototype.on=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];g.default.renamedMethod("RealtimePresence","on","subscribe"),this.subscribe.apply(this,s)},c.prototype.off=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];g.default.renamedMethod("RealtimePresence","off","unsubscribe"),this.unsubscribe.apply(this,s)},c.prototype.subscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=y.default.processListenerArgs(s),k=v[0],j=v[1],N=v[2],P=this.channel;if(!N){if(this.channel.realtime.options.promises)return a.promisify(this,"subscribe",[k,j]);N=C}if(P.state==="failed"){N(R.default.fromValues(P.invalidStateError()));return}this.subscriptions.on(k,j),P.attach(N)},c.prototype.unsubscribe=function(){for(var s=[],w=0;w<arguments.length;w++)s[w]=arguments[w];var v=y.default.processListenerArgs(s),k=v[0],j=v[1];this.subscriptions.off(k,j)},c}(l.default),h=function(f){i.__extends(c,f);function c(s,w){var v=f.call(this)||this;return v.presence=s,v.map=Object.create(null),v.syncInProgress=!1,v.residualMembers=null,v.memberKey=w,v}return c.prototype.get=function(s){return this.map[s]},c.prototype.getClient=function(s){var w=this.map,v=[];for(var k in w){var j=w[k];j.clientId==s&&j.action!="absent"&&v.push(j)}return v},c.prototype.list=function(s){var w=this.map,v=s&&s.clientId,k=s&&s.connectionId,j=[];for(var N in w){var P=w[N];P.action!=="absent"&&(v&&v!=P.clientId||k&&k!=P.connectionId||j.push(P))}return j},c.prototype.put=function(s){(s.action==="enter"||s.action==="update")&&(s=S.default.fromValues(s),s.action="present");var w=this.map,v=this.memberKey(s);this.residualMembers&&delete this.residualMembers[v];var k=w[v];return k&&!m(s,k)?!1:(w[v]=s,!0)},c.prototype.values=function(){var s=this.map,w=[];for(var v in s){var k=s[v];k.action!="absent"&&w.push(k)}return w},c.prototype.remove=function(s){var w=this.map,v=this.memberKey(s),k=w[v];return k&&!m(s,k)?!1:(this.syncInProgress?(s=S.default.fromValues(s),s.action="absent",w[v]=s):delete w[v],!0)},c.prototype.startSync=function(){var s=this.map,w=this.syncInProgress;g.default.logAction(g.default.LOG_MINOR,"PresenceMap.startSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),this.syncInProgress||(this.residualMembers=a.copy(s),this.setInProgress(!0))},c.prototype.endSync=function(){var s=this.map,w=this.syncInProgress;if(g.default.logAction(g.default.LOG_MINOR,"PresenceMap.endSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),w){for(var v in s){var k=s[v];k.action==="absent"&&delete s[v]}this.presence._synthesizeLeaves(a.valuesArray(this.residualMembers));for(var v in this.residualMembers)delete s[v];this.residualMembers=null,this.setInProgress(!1)}this.emit("sync")},c.prototype.waitSync=function(s){var w=this.syncInProgress;if(g.default.logAction(g.default.LOG_MINOR,"PresenceMap.waitSync()","channel = "+this.presence.channel.name+"; syncInProgress = "+w),!w){s();return}this.once("sync",s)},c.prototype.clear=function(){this.map={},this.setInProgress(!1),this.residualMembers=null},c.prototype.setInProgress=function(s){g.default.logAction(g.default.LOG_MICRO,"PresenceMap.setInProgress()","inProgress = "+s),this.syncInProgress=s,this.presence.syncComplete=!s},c}(d.default);r.default=b},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=o(56),l=o(31),d=o(11),g=i.__importDefault(o(5)),S=i.__importDefault(o(3)),R=function(){function y(){this.base64CharSet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",this.hexCharSet="0123456789abcdef"}return y.prototype.isWordArray=function(E){return E!=null&&E.sigBytes!==void 0},y.prototype.isArrayBuffer=function(E){return E!=null&&E.constructor===ArrayBuffer},y.prototype.isTypedArray=function(E){return!!ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(E)},y.prototype.uint8ViewToBase64=function(E){for(var u="",C=this.base64CharSet,M=E.byteLength,x=M%3,p=M-x,m,b,h,f,c,s=0;s<p;s=s+3)c=E[s]<<16|E[s+1]<<8|E[s+2],m=(c&16515072)>>18,b=(c&258048)>>12,h=(c&4032)>>6,f=c&63,u+=C[m]+C[b]+C[h]+C[f];return x==1?(c=E[p],m=(c&252)>>2,b=(c&3)<<4,u+=C[m]+C[b]+"=="):x==2&&(c=E[p]<<8|E[p+1],m=(c&64512)>>10,b=(c&1008)>>4,h=(c&15)<<2,u+=C[m]+C[b]+C[h]+"="),u},y.prototype.base64ToArrayBuffer=function(E){for(var u=atob==null?void 0:atob(E),C=u.length,M=new Uint8Array(C),x=0;x<C;x++){var p=u.charCodeAt(x);M[x]=p}return M.buffer},y.prototype.isBuffer=function(E){return this.isArrayBuffer(E)||this.isWordArray(E)||this.isTypedArray(E)},y.prototype.toBuffer=function(E){if(!ArrayBuffer)throw new Error("Can't convert to Buffer: browser does not support the necessary types");if(this.isArrayBuffer(E))return new Uint8Array(E);if(this.isTypedArray(E))return new Uint8Array(E.buffer);if(this.isWordArray(E)){for(var u=new ArrayBuffer(E.sigBytes),C=new Uint8Array(u),M=0;M<E.sigBytes;M++)C[M]=E.words[M>>>2]>>>24-M%4*8&255;return C}throw new Error("BufferUtils.toBuffer expected an arraybuffer, typed array, or CryptoJS wordarray")},y.prototype.toArrayBuffer=function(E){return this.isArrayBuffer(E)?E:this.toBuffer(E).buffer},y.prototype.toWordArray=function(E){return this.isTypedArray(E)&&(E=E.buffer),this.isWordArray(E)?E:g.default.create(E)},y.prototype.base64Encode=function(E){return this.isWordArray(E)?(0,d.stringify)(E):this.uint8ViewToBase64(this.toBuffer(E))},y.prototype.base64Decode=function(E){return ArrayBuffer&&S.default.Config.atob?this.base64ToArrayBuffer(E):(0,d.parse)(E)},y.prototype.hexEncode=function(E){return(0,a.stringify)(this.toWordArray(E))},y.prototype.hexDecode=function(E){var u=(0,a.parse)(E);return ArrayBuffer?this.toArrayBuffer(u):u},y.prototype.utf8Encode=function(E){return S.default.Config.TextEncoder?new S.default.Config.TextEncoder().encode(E).buffer:(0,l.parse)(E)},y.prototype.utf8Decode=function(E){if(!this.isBuffer(E))throw new Error("Expected input of utf8decode to be an arraybuffer, typed array, or CryptoJS wordarray");return TextDecoder&&!this.isWordArray(E)?new TextDecoder().decode(E):(E=this.toWordArray(E),(0,l.stringify)(E))},y.prototype.bufferCompare=function(E,u){if(!E)return-1;if(!u)return 1;var C=this.toWordArray(E),M=this.toWordArray(u);C.clamp(),M.clamp();var x=C.sigBytes-M.sigBytes;if(x!=0)return x;for(var p=C.words,m=M.words,b=0;b<p.length;b++)if(x=p[b]-m[b],x!=0)return x;return 0},y.prototype.byteLength=function(E){return this.isArrayBuffer(E)||this.isTypedArray(E)?E.byteLength:this.isWordArray(E)?E.sigBytes:-1},y.prototype.typedArrayToBuffer=function(E){return E.buffer},y}();r.default=new R},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return i.enc.Hex})},function(n,r,o){o.r(r);var i=o(5),a=o.n(i),l=o(11),d=o(23),g=o.n(d),S=o(2),R=o.n(S),y=o(4),E=o.n(y),u=function(C,M){var x="aes",p=256,m="cbc",b=16,h=4,f=4294967296,c=2147483648,s;if(C.getRandomWordArray)s=C.getRandomWordArray;else if(typeof Uint32Array!="undefined"&&C.getRandomValues){var w=new Uint32Array(h);s=function(A,D){var B=A/4,z=B==h?w:new Uint32Array(B);C.getRandomValues(z,function($){typeof D!="undefined"&&D($,M.toWordArray(z))})}}else s=function(A,D){R.a.logAction(R.a.LOG_MAJOR,"Ably.Crypto.generateRandom()","Warning: the browser you are using does not support secure cryptographically secure randomness generation; falling back to insecure Math.random()");for(var B=A/4,z=new Array(B),$=0;$<B;$++)z[$]=Math.floor(Math.random()*f)-c;D(null,a.a.create(z))};function v(A){return A+b&-16}function k(A){if(A.algorithm==="aes"&&A.mode==="cbc"){if(A.keyLength===128||A.keyLength===256)return;throw new Error("Unsupported key length "+A.keyLength+" for aes-cbc encryption. Encryption key must be 128 or 256 bits (16 or 32 ASCII characters)")}}function j(A){return A.replace("_","/").replace("-","+")}var N=[a.a.create([269488144,269488144,269488144,269488144],16),a.a.create([16777216],1),a.a.create([33685504],2),a.a.create([50529024],3),a.a.create([67372036],4),a.a.create([84215045,83886080],5),a.a.create([101058054,101056512],6),a.a.create([117901063,117901056],7),a.a.create([134744072,134744072],8),a.a.create([151587081,151587081,150994944],9),a.a.create([168430090,168430090,168427520],10),a.a.create([185273099,185273099,185273088],11),a.a.create([202116108,202116108,202116108],12),a.a.create([218959117,218959117,218959117,218103808],13),a.a.create([235802126,235802126,235802126,235798528],14),a.a.create([252645135,252645135,252645135,252645135],15),a.a.create([269488144,269488144,269488144,269488144],16)];function P(){}function T(){this.algorithm=null,this.keyLength=null,this.mode=null,this.key=null}P.CipherParams=T,P.getDefaultParams=function(A){var D;if(typeof A=="function"||typeof A=="string"){if(R.a.deprecated("The ability to pass a callback to `Crypto.getDefaultParams()`","This method now directly returns its result, instead of returning it asynchronously via a callback. Please update your code so that it uses the return value of this method instead of passing a callback."),typeof A=="function")R.a.deprecated("The ability to call `Crypto.getDefaultParams()` without specifying an encryption key","Please update your code so that it instead passes an object whose `key` property contains an encryption key. That is, replace `Crypto.getDefaultParams()` with `Crypto.getDefaultParams({ key })`, where `key` is an encryption key that you have generated (for example from the `Crypto.generateRandomKey()` method)."),P.generateRandomKey(function(z){A(null,P.getDefaultParams({key:z}))});else if(typeof arguments[1]=="function")R.a.deprecated("The ability to pass the encryption key as the first argument of `Crypto.getDefaultParams()`","Please update your code so that it instead passes an object whose `key` property contains the key. That is, replace `Crypto.getDefaultParams(key)` with `Crypto.getDefaultParams({ key })`."),arguments[1](null,P.getDefaultParams({key:A}));else throw new Error("Invalid arguments for Crypto.getDefaultParams");return}if(!A.key)throw new Error("Crypto.getDefaultParams: a key is required");typeof A.key=="string"?D=Object(l.parse)(j(A.key)):D=M.toWordArray(A.key);var B=new T;if(B.key=D,B.algorithm=A.algorithm||x,B.keyLength=D.words.length*(4*8),B.mode=A.mode||m,A.keyLength&&A.keyLength!==B.keyLength)throw new Error("Crypto.getDefaultParams: a keyLength of "+A.keyLength+" was specified, but the key actually has length "+B.keyLength);return k(B),B},P.generateRandomKey=function(A,D){arguments.length==1&&typeof A=="function"&&(D=A,A=void 0),s((A||p)/8,function(B,z){D!==void 0&&D(B?E.a.fromValues(B):null,z)})},P.getCipher=function(A){var D=A instanceof T?A:P.getDefaultParams(A);return{cipherParams:D,cipher:new I(D,h,A.iv)}};function I(A,D,B){this.algorithm=A.algorithm+"-"+String(A.keyLength)+"-"+A.mode,this.cjsAlgorithm=A.algorithm.toUpperCase().replace(/-\d+$/,""),this.key=M.toWordArray(A.key),B&&(this.iv=M.toWordArray(B).clone()),this.blockLengthWords=D}return I.prototype.encrypt=function(A,D){R.a.logAction(R.a.LOG_MICRO,"CBCCipher.encrypt()",""),A=M.toWordArray(A);var B=A.sigBytes,z=v(B),$=this,V=function(){$.getIv(function(F,O){if(F){D(F);return}var L=$.encryptCipher.process(A.concat(N[z-B])),U=O.concat(L);D(null,U)})};this.encryptCipher?V():this.iv?(this.encryptCipher=g.a.algo[this.cjsAlgorithm].createEncryptor(this.key,{iv:this.iv}),V()):s(b,function(F,O){if(F){D(F);return}$.encryptCipher=g.a.algo[$.cjsAlgorithm].createEncryptor($.key,{iv:O}),$.iv=O,V()})},I.prototype.decrypt=function(A){R.a.logAction(R.a.LOG_MICRO,"CBCCipher.decrypt()",""),A=M.toWordArray(A);var D=this.blockLengthWords,B=A.words,z=a.a.create(B.slice(0,D)),$=a.a.create(B.slice(D)),V=g.a.algo[this.cjsAlgorithm].createDecryptor(this.key,{iv:z}),F=V.process($),O=V.finalize();return V.reset(),O&&O.sigBytes&&F.concat(O),F},I.prototype.getIv=function(A){if(this.iv){var D=this.iv;this.iv=null,A(null,D);return}var B=this;s(b,function(z,$){if(z){A(z);return}A(null,B.encryptCipher.process($))})},P};r.default=u},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(){var a=i,l=a.lib,d=l.WordArray,g=a.enc;g.Utf16=g.Utf16BE={stringify:function(R){for(var y=R.words,E=R.sigBytes,u=[],C=0;C<E;C+=2){var M=y[C>>>2]>>>16-C%4*8&65535;u.push(String.fromCharCode(M))}return u.join("")},parse:function(R){for(var y=R.length,E=[],u=0;u<y;u++)E[u>>>1]|=R.charCodeAt(u)<<16-u%2*16;return d.create(E,y*2)}},g.Utf16LE={stringify:function(R){for(var y=R.words,E=R.sigBytes,u=[],C=0;C<E;C+=2){var M=S(y[C>>>2]>>>16-C%4*8&65535);u.push(String.fromCharCode(M))}return u.join("")},parse:function(R){for(var y=R.length,E=[],u=0;u<y;u++)E[u>>>1]|=S(R.charCodeAt(u)<<16-u%2*16);return d.create(E,y*2)}};function S(R){return R<<8&4278255360|R>>>8&16711935}}(),i.enc.Utf16})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(28))})(this,function(i){return function(a){var l=i,d=l.lib,g=d.CipherParams,S=l.enc,R=S.Hex,y=l.format;y.Hex={stringify:function(E){return E.ciphertext.toString(R)},parse:function(E){var u=R.parse(E);return g.create({ciphertext:u})}}}(),i.format.Hex})},function(n,r,o){(function(i,a){n.exports=a(o(6),o(11),o(61),o(27),o(28))})(this,function(i){return function(){var a=i,l=a.lib,d=l.BlockCipher,g=a.algo,S=[],R=[],y=[],E=[],u=[],C=[],M=[],x=[],p=[],m=[];(function(){for(var f=[],c=0;c<256;c++)c<128?f[c]=c<<1:f[c]=c<<1^283;for(var s=0,w=0,c=0;c<256;c++){var v=w^w<<1^w<<2^w<<3^w<<4;v=v>>>8^v&255^99,S[s]=v,R[v]=s;var k=f[s],j=f[k],N=f[j],P=f[v]*257^v*16843008;y[s]=P<<24|P>>>8,E[s]=P<<16|P>>>16,u[s]=P<<8|P>>>24,C[s]=P;var P=N*16843009^j*65537^k*257^s*16843008;M[v]=P<<24|P>>>8,x[v]=P<<16|P>>>16,p[v]=P<<8|P>>>24,m[v]=P,s?(s=k^f[f[f[N^k]]],w^=f[f[w]]):s=w=1}})();var b=[0,1,2,4,8,16,32,64,128,27,54],h=g.AES=d.extend({_doReset:function(){var f;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var c=this._keyPriorReset=this._key,s=c.words,w=c.sigBytes/4,v=this._nRounds=w+6,k=(v+1)*4,j=this._keySchedule=[],N=0;N<k;N++)N<w?j[N]=s[N]:(f=j[N-1],N%w?w>6&&N%w==4&&(f=S[f>>>24]<<24|S[f>>>16&255]<<16|S[f>>>8&255]<<8|S[f&255]):(f=f<<8|f>>>24,f=S[f>>>24]<<24|S[f>>>16&255]<<16|S[f>>>8&255]<<8|S[f&255],f^=b[N/w|0]<<24),j[N]=j[N-w]^f);for(var P=this._invKeySchedule=[],T=0;T<k;T++){var N=k-T;if(T%4)var f=j[N];else var f=j[N-4];T<4||N<=4?P[T]=f:P[T]=M[S[f>>>24]]^x[S[f>>>16&255]]^p[S[f>>>8&255]]^m[S[f&255]]}}},encryptBlock:function(f,c){this._doCryptBlock(f,c,this._keySchedule,y,E,u,C,S)},decryptBlock:function(f,c){var s=f[c+1];f[c+1]=f[c+3],f[c+3]=s,this._doCryptBlock(f,c,this._invKeySchedule,M,x,p,m,R);var s=f[c+1];f[c+1]=f[c+3],f[c+3]=s},_doCryptBlock:function(f,c,s,w,v,k,j,N){for(var P=this._nRounds,T=f[c]^s[0],I=f[c+1]^s[1],A=f[c+2]^s[2],D=f[c+3]^s[3],B=4,z=1;z<P;z++){var $=w[T>>>24]^v[I>>>16&255]^k[A>>>8&255]^j[D&255]^s[B++],V=w[I>>>24]^v[A>>>16&255]^k[D>>>8&255]^j[T&255]^s[B++],F=w[A>>>24]^v[D>>>16&255]^k[T>>>8&255]^j[I&255]^s[B++],O=w[D>>>24]^v[T>>>16&255]^k[I>>>8&255]^j[A&255]^s[B++];T=$,I=V,A=F,D=O}var $=(N[T>>>24]<<24|N[I>>>16&255]<<16|N[A>>>8&255]<<8|N[D&255])^s[B++],V=(N[I>>>24]<<24|N[A>>>16&255]<<16|N[D>>>8&255]<<8|N[T&255])^s[B++],F=(N[A>>>24]<<24|N[D>>>16&255]<<16|N[T>>>8&255]<<8|N[I&255])^s[B++],O=(N[D>>>24]<<24|N[T>>>16&255]<<16|N[I>>>8&255]<<8|N[A&255])^s[B++];f[c]=$,f[c+1]=V,f[c+2]=F,f[c+3]=O},keySize:256/32});a.AES=d._createHelper(h)}(),i.AES})},function(n,r,o){(function(i,a){n.exports=a(o(6))})(this,function(i){return function(a){var l=i,d=l.lib,g=d.WordArray,S=d.Hasher,R=l.algo,y=[];(function(){for(var p=0;p<64;p++)y[p]=a.abs(a.sin(p+1))*4294967296|0})();var E=R.MD5=S.extend({_doReset:function(){this._hash=new g.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(p,m){for(var b=0;b<16;b++){var h=m+b,f=p[h];p[h]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}var c=this._hash.words,s=p[m+0],w=p[m+1],v=p[m+2],k=p[m+3],j=p[m+4],N=p[m+5],P=p[m+6],T=p[m+7],I=p[m+8],A=p[m+9],D=p[m+10],B=p[m+11],z=p[m+12],$=p[m+13],V=p[m+14],F=p[m+15],O=c[0],L=c[1],U=c[2],_=c[3];O=u(O,L,U,_,s,7,y[0]),_=u(_,O,L,U,w,12,y[1]),U=u(U,_,O,L,v,17,y[2]),L=u(L,U,_,O,k,22,y[3]),O=u(O,L,U,_,j,7,y[4]),_=u(_,O,L,U,N,12,y[5]),U=u(U,_,O,L,P,17,y[6]),L=u(L,U,_,O,T,22,y[7]),O=u(O,L,U,_,I,7,y[8]),_=u(_,O,L,U,A,12,y[9]),U=u(U,_,O,L,D,17,y[10]),L=u(L,U,_,O,B,22,y[11]),O=u(O,L,U,_,z,7,y[12]),_=u(_,O,L,U,$,12,y[13]),U=u(U,_,O,L,V,17,y[14]),L=u(L,U,_,O,F,22,y[15]),O=C(O,L,U,_,w,5,y[16]),_=C(_,O,L,U,P,9,y[17]),U=C(U,_,O,L,B,14,y[18]),L=C(L,U,_,O,s,20,y[19]),O=C(O,L,U,_,N,5,y[20]),_=C(_,O,L,U,D,9,y[21]),U=C(U,_,O,L,F,14,y[22]),L=C(L,U,_,O,j,20,y[23]),O=C(O,L,U,_,A,5,y[24]),_=C(_,O,L,U,V,9,y[25]),U=C(U,_,O,L,k,14,y[26]),L=C(L,U,_,O,I,20,y[27]),O=C(O,L,U,_,$,5,y[28]),_=C(_,O,L,U,v,9,y[29]),U=C(U,_,O,L,T,14,y[30]),L=C(L,U,_,O,z,20,y[31]),O=M(O,L,U,_,N,4,y[32]),_=M(_,O,L,U,I,11,y[33]),U=M(U,_,O,L,B,16,y[34]),L=M(L,U,_,O,V,23,y[35]),O=M(O,L,U,_,w,4,y[36]),_=M(_,O,L,U,j,11,y[37]),U=M(U,_,O,L,T,16,y[38]),L=M(L,U,_,O,D,23,y[39]),O=M(O,L,U,_,$,4,y[40]),_=M(_,O,L,U,s,11,y[41]),U=M(U,_,O,L,k,16,y[42]),L=M(L,U,_,O,P,23,y[43]),O=M(O,L,U,_,A,4,y[44]),_=M(_,O,L,U,z,11,y[45]),U=M(U,_,O,L,F,16,y[46]),L=M(L,U,_,O,v,23,y[47]),O=x(O,L,U,_,s,6,y[48]),_=x(_,O,L,U,T,10,y[49]),U=x(U,_,O,L,V,15,y[50]),L=x(L,U,_,O,N,21,y[51]),O=x(O,L,U,_,z,6,y[52]),_=x(_,O,L,U,k,10,y[53]),U=x(U,_,O,L,D,15,y[54]),L=x(L,U,_,O,w,21,y[55]),O=x(O,L,U,_,I,6,y[56]),_=x(_,O,L,U,F,10,y[57]),U=x(U,_,O,L,P,15,y[58]),L=x(L,U,_,O,$,21,y[59]),O=x(O,L,U,_,j,6,y[60]),_=x(_,O,L,U,B,10,y[61]),U=x(U,_,O,L,v,15,y[62]),L=x(L,U,_,O,A,21,y[63]),c[0]=c[0]+O|0,c[1]=c[1]+L|0,c[2]=c[2]+U|0,c[3]=c[3]+_|0},_doFinalize:function(){var p=this._data,m=p.words,b=this._nDataBytes*8,h=p.sigBytes*8;m[h>>>5]|=128<<24-h%32;var f=a.floor(b/4294967296),c=b;m[(h+64>>>9<<4)+15]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360,m[(h+64>>>9<<4)+14]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360,p.sigBytes=(m.length+1)*4,this._process();for(var s=this._hash,w=s.words,v=0;v<4;v++){var k=w[v];w[v]=(k<<8|k>>>24)&16711935|(k<<24|k>>>8)&4278255360}return s},clone:function(){var p=S.clone.call(this);return p._hash=this._hash.clone(),p}});function u(p,m,b,h,f,c,s){var w=p+(m&b|~m&h)+f+s;return(w<<c|w>>>32-c)+m}function C(p,m,b,h,f,c,s){var w=p+(m&h|b&~h)+f+s;return(w<<c|w>>>32-c)+m}function M(p,m,b,h,f,c,s){var w=p+(m^b^h)+f+s;return(w<<c|w>>>32-c)+m}function x(p,m,b,h,f,c,s){var w=p+(b^(m|~h))+f+s;return(w<<c|w>>>32-c)+m}l.MD5=S._createHelper(E),l.HmacMD5=S._createHmacHelper(E)}(Math),i.MD5})},function(n,r,o){var i;Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importDefault(o(3)),d=a.__importStar(o(1)),g=a.__importDefault(o(8)),S=o(4),R=a.__importDefault(o(19)),y=a.__importDefault(o(17)),E=a.__importDefault(o(22)),u=a.__importDefault(o(2)),C=o(29),M=a.__importDefault(o(63)),x=o(14);function p(h){var f=h.statusCode;return f===408&&!h.code||f===400&&!h.code||f>=500&&f<=504}function m(h){var f=h.connection,c=f&&f.connectionManager.host;return c?[c].concat(g.default.getFallbackHosts(h.options)):g.default.getHosts(h.options)}var b=(i=function(){function h(f){this.checksInProgress=null,this.checkConnectivity=void 0,this.supportsAuthHeaders=!1,this.supportsLinkHeaders=!1,this._getHosts=m,this.options=f||{};var c=this.options.connectivityCheckUrl||g.default.connectivityCheckUrl,s=this.options.connectivityCheckParams,w=!this.options.connectivityCheckUrl;l.default.Config.xhrSupported?(this.supportsAuthHeaders=!0,this.Request=function(v,k,j,N,P,T,I){var A=y.default.createRequest(j,N,P,T,E.default.REQ_SEND,k&&k.options.timeouts,v);return A.once("complete",I),A.exec(),A},this.options.disableConnectivityCheck?this.checkConnectivity=function(v){v(null,!0)}:this.checkConnectivity=function(v){u.default.logAction(u.default.LOG_MICRO,"(XHRRequest)Http.checkConnectivity()","Sending; "+c),this.doUri(R.default.Get,null,c,null,null,s,function(k,j,N,P,T){var I=!1;w?I=!k&&(j==null?void 0:j.replace(/\n/,""))=="yes":I=!k&&(0,x.isSuccessCode)(T),u.default.logAction(u.default.LOG_MICRO,"(XHRRequest)Http.checkConnectivity()","Result: "+I),v(null,I)})}):l.default.Config.jsonpSupported?(this.Request=function(v,k,j,N,P,T,I){var A=(0,C.createRequest)(j,N,P,T,E.default.REQ_SEND,k&&k.options.timeouts,v);return A.once("complete",I),l.default.Config.nextTick(function(){A.exec()}),A},this.options.disableConnectivityCheck?this.checkConnectivity=function(v){v(null,!0)}:this.checkConnectivity=function(v){var k=this,j=g.default.jsonpInternetUpUrl;if(this.checksInProgress){this.checksInProgress.push(v);return}this.checksInProgress=[v],u.default.logAction(u.default.LOG_MICRO,"(JSONP)Http.checkConnectivity()","Sending; "+j);var N=new C.Request("isTheInternetUp",j,null,null,null,E.default.REQ_SEND,g.default.TIMEOUTS);N.once("complete",function(P,T){var I=!P&&T;u.default.logAction(u.default.LOG_MICRO,"(JSONP)Http.checkConnectivity()","Result: "+I);for(var A=0;A<k.checksInProgress.length;A++)k.checksInProgress[A](null,I);k.checksInProgress=null}),l.default.Config.nextTick(function(){N.exec()})}):l.default.Config.fetchSupported?(this.supportsAuthHeaders=!0,this.Request=M.default,this.checkConnectivity=function(v){u.default.logAction(u.default.LOG_MICRO,"(Fetch)Http.checkConnectivity()","Sending; "+c),this.doUri(R.default.Get,null,c,null,null,null,function(k,j){var N=!k&&(j==null?void 0:j.replace(/\n/,""))=="yes";u.default.logAction(u.default.LOG_MICRO,"(Fetch)Http.checkConnectivity()","Result: "+N),v(null,N)})}):this.Request=function(v,k,j,N,P,T,I){I(new S.PartialErrorInfo("no supported HTTP transports available",null,400),null)}}return h.prototype.do=function(f,c,s,w,v,k,j){var N=this,P=typeof s=="function"?s:function(D){return c.baseUri(D)+s},T=c._currentFallback;if(T)if(T.validUntil>d.now()){if(!this.Request){j==null||j(new S.PartialErrorInfo("Request invoked before assigned to",null,500));return}this.Request(f,c,P(T.host),w,k,v,function(D){for(var B=[],z=1;z<arguments.length;z++)B[z-1]=arguments[z];if(D&&p(D)){c._currentFallback=null,N.do(f,c,s,w,v,k,j);return}j==null||j.apply(void 0,a.__spreadArray([D],B,!1))});return}else c._currentFallback=null;var I=m(c);if(I.length===1){this.doUri(f,c,P(I[0]),w,v,k,j);return}var A=function(D,B){var z=D.shift();N.doUri(f,c,P(z),w,v,k,function($){for(var V=[],F=1;F<arguments.length;F++)V[F-1]=arguments[F];if($&&p($)&&D.length){A(D,!0);return}B&&(c._currentFallback={host:z,validUntil:d.now()+c.options.timeouts.fallbackRetryTimeout}),j==null||j.apply(void 0,a.__spreadArray([$],V,!1))})};A(I)},h.prototype.doUri=function(f,c,s,w,v,k,j){if(!this.Request){j(new S.PartialErrorInfo("Request invoked before assigned to",null,500));return}this.Request(f,c,s,w,k,v,j)},h}(),i.methods=[R.default.Get,R.default.Delete,R.default.Post,R.default.Put,R.default.Patch],i.methodsWithoutBody=[R.default.Get,R.default.Delete],i.methodsWithBody=[R.default.Post,R.default.Put,R.default.Patch],i);r.default=b},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importStar(o(4)),l=i.__importDefault(o(3)),d=i.__importDefault(o(8)),g=i.__importStar(o(1)),S=o(1);function R(u,C){return!!C.get("x-ably-errorcode")}function y(u,C){if(R(u,C))return u.error&&a.default.fromValues(u.error)}function E(u,C,M,x,p,m,b){var h=new Headers(x||{}),f=u?u.toUpperCase():g.isEmptyArg(m)?"GET":"POST",c=new AbortController,s=setTimeout(function(){c.abort(),b(new a.PartialErrorInfo("Request timed out",null,408))},C?C.options.timeouts.httpRequestTimeout:d.default.TIMEOUTS.httpRequestTimeout),w={method:f,headers:h,body:m};l.default.Config.isWebworker||(w.credentials=h.has("authorization")?"include":"same-origin"),(0,S.getGlobalObject)().fetch(M+"?"+new URLSearchParams(p||{}),w).then(function(v){clearTimeout(s);var k=v.headers.get("Content-Type"),j;k&&k.indexOf("application/x-msgpack")>-1?j=v.arrayBuffer():k&&k.indexOf("application/json")>-1?j=v.json():j=v.text(),j.then(function(N){var P=!!k&&k.indexOf("application/x-msgpack")===-1;if(v.ok)b(null,N,v.headers,P,v.status);else{var T=y(N,v.headers)||new a.PartialErrorInfo("Error response received from server: "+v.status+" body was: "+l.default.Config.inspect(N),null,v.status);b(T,N,v.headers,P,v.status)}})}).catch(function(v){clearTimeout(s),b(v)})}r.default=E},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(41)),l=i.__importStar(o(1)),d=l.getGlobalObject();typeof Window=="undefined"&&typeof WorkerGlobalScope=="undefined"&&console.log("Warning: this distribution of Ably is intended for browsers. On nodejs, please use the 'ably' package on npm");function g(){var E=d.location;return!d.WebSocket||!E||!E.origin||E.origin.indexOf("http")>-1}var S=d.navigator&&d.navigator.userAgent.toString(),R=d.location&&d.location.href,y={agent:"browser",logTimestamps:!0,userAgent:S,currentUrl:R,noUpgrade:S&&!!S.match(/MSIE\s8\.0/),binaryType:"arraybuffer",WebSocket:d.WebSocket,fetchSupported:!!d.fetch,xhrSupported:d.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,jsonpSupported:typeof document!="undefined",allowComet:g(),streamingSupported:!0,useProtocolHeartbeats:!0,createHmac:null,msgpack:a.default,supportsBinary:!!d.TextDecoder,preferBinary:!1,ArrayBuffer:d.ArrayBuffer,atob:d.atob,nextTick:typeof d.setImmediate!="undefined"?d.setImmediate.bind(d):function(E){setTimeout(E,0)},addEventListener:d.addEventListener,inspect:JSON.stringify,stringByteSize:function(E){return d.TextDecoder&&new d.TextEncoder().encode(E).length||E.length},TextEncoder:d.TextEncoder,TextDecoder:d.TextDecoder,Promise:d.Promise,getRandomValues:function(E){if(E!==void 0)return function(u,C){E.getRandomValues(u),C&&C(null)}}(d.crypto||msCrypto)};r.default=y},function(n,r,o){(function(i){Object.defineProperty(r,"__esModule",{value:!0});var a=o(0),l=a.__importStar(o(1)),d="ablyjs-storage-test",g=function(){function S(){try{i.sessionStorage.setItem(d,d),i.sessionStorage.removeItem(d),this.sessionSupported=!0}catch(R){this.sessionSupported=!1}try{i.localStorage.setItem(d,d),i.localStorage.removeItem(d),this.localSupported=!0}catch(R){this.localSupported=!1}}return S.prototype.get=function(R){return this._get(R,!1)},S.prototype.getSession=function(R){return this._get(R,!0)},S.prototype.remove=function(R){return this._remove(R,!1)},S.prototype.removeSession=function(R){return this._remove(R,!0)},S.prototype.set=function(R,y,E){return this._set(R,y,E,!1)},S.prototype.setSession=function(R,y,E){return this._set(R,y,E,!0)},S.prototype._set=function(R,y,E,u){var C={value:y};return E&&(C.expires=l.now()+E),this.storageInterface(u).setItem(R,JSON.stringify(C))},S.prototype._get=function(R,y){if(y&&!this.sessionSupported)throw new Error("Session Storage not supported");if(!y&&!this.localSupported)throw new Error("Local Storage not supported");var E=this.storageInterface(y).getItem(R);if(!E)return null;var u=JSON.parse(E);return u.expires&&u.expires<l.now()?(this.storageInterface(y).removeItem(R),null):u.value},S.prototype._remove=function(R,y){return this.storageInterface(y).removeItem(R)},S.prototype.storageInterface=function(R){return R?i.sessionStorage:i.localStorage},S}();r.default=new g}).call(this,o(13))},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i=o(0),a=i.__importDefault(o(67)),l={connectivityCheckUrl:"https://internet-up.ably-realtime.com/is-the-internet-up.txt",jsonpInternetUpUrl:"https://internet-up.ably-realtime.com/is-the-internet-up-0-9.js",defaultTransports:[a.default.XhrPolling,a.default.XhrStreaming,a.default.JsonP,a.default.WebSocket],baseTransportOrder:[a.default.XhrPolling,a.default.XhrStreaming,a.default.JsonP,a.default.WebSocket],transportPreferenceOrder:[a.default.JsonP,a.default.XhrPolling,a.default.XhrStreaming,a.default.WebSocket],upgradeTransports:[a.default.XhrStreaming,a.default.WebSocket]};r.default=l},function(n,r,o){Object.defineProperty(r,"__esModule",{value:!0});var i;(function(a){a.WebSocket="web_socket",a.Comet="comet",a.XhrStreaming="xhr_streaming",a.XhrPolling="xhr_polling",a.JsonP="jsonp"})(i||(i={})),r.default=i},function(n,r,o){o.r(r);var i=o(29),a=o.n(i),l=o(1),d=o(3),g=o.n(d),S=o(12),R=o.n(S),y=o(17),E=o.n(y),u=function(p){var m="xhr_polling";function b(h,f,c){c.stream=!1,R.a.call(this,h,f,c),this.shortName=m}return l.inherits(b,R.a),b.isAvailable=function(){return g.a.Config.xhrSupported&&g.a.Config.allowComet},b.prototype.toString=function(){return"XHRPollingTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},b.prototype.createRequest=function(h,f,c,s,w){return E.a.createRequest(h,f,c,s,w,this.timeouts)},typeof p!="undefined"&&b.isAvailable()&&(p.supportedTransports[m]=b),b},C=u,M=function(p){var m="xhr_streaming";function b(h,f,c){R.a.call(this,h,f,c),this.shortName=m}return l.inherits(b,R.a),b.isAvailable=function(){return g.a.Config.xhrSupported&&g.a.Config.streamingSupported&&g.a.Config.allowComet},b.prototype.toString=function(){return"XHRStreamingTransport; uri="+this.baseUri+"; isConnected="+this.isConnected},b.prototype.createRequest=function(h,f,c,s,w){return E.a.createRequest(h,f,c,s,w,this.timeouts)},typeof p!="undefined"&&b.isAvailable()&&(p.supportedTransports[m]=b),b},x=M;r.default=[a.a,C,x]}]).default})})(id);var Wg=id.exports;const $g=pe(Wg),bi=(e,t,n,r,o,i)=>Me(this,null,function*(){try{const a=new $g.Realtime({token:e.token,clientId:e.clientId});a.connection.on("connected",()=>{i==null||i("connected")}),a.connection.on("failed",R=>{console.error("[❌ ABLY CONNECTION FAILED]",R),i==null||i("failed")}),a.connection.on("disconnected",()=>{i==null||i("disconnected")});const l=`room:${t}:${n}`,d=a.channels.get(l);d.subscribe("messages",R=>{var y;try{const E=(y=R.data)==null?void 0:y.message;if(E&&E.role==="employee"){const u={id:E.id||at(),text:E.content||"",sender:"bot",timestamp:E.createdAt?new Date(E.createdAt):new Date,type:E.type};r(u)}}catch(E){console.error("[❌ MESSAGE PARSING ERROR]",E)}});const g=`room:${t}`;return a.channels.get(g).subscribe("message:livechat",R=>{try{const y=R.data;(y==null?void 0:y.type)==="toggleAI"&&y.conversationId===n&&(o==null||o(y.chatbotActivated))}catch(y){console.error("[❌ TOGGLE AI PARSING ERROR]",y)}}),{client:a,channel:d}}catch(a){throw console.error("[❌ ABLY INITIALIZATION ERROR]",a),a}}),Vg=(e,t)=>Me(this,null,function*(){try{const n=Vf(),r=yield fetch(`${n}?conversationId=${e}&chatbotUid=${t}`);return r.ok?yield r.json():(console.error("Failed to fetch conversation data:",r.statusText),null)}catch(n){return console.error("[❌ ABLY TOKEN FETCH ERROR]",n),null}}),ad=e=>{e&&e.close()},Si=()=>({id:at(),text:"Lo siento, hubo un problema con la conexión. Esta es una respuesta de demostración.",sender:"bot",timestamp:new Date().toISOString(),type:"text"}),sd=(e,t,n,r,o)=>{const i=od(t,e),a=od(n,e),l={id:e,senderId:o||"unknown",createdAt:new Date().toISOString(),chatbotActivated:!0,updatedAt:new Date().toISOString(),source:"IFRAME",website:typeof window!="undefined"?window.location.origin:"",messages:i};return{conversationId:e,conversation:l,chatbotUid:r.apiKey,newMessages:a}},ld=e=>Me(this,null,function*(){try{const t=Tg(),n=yield fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});return n.ok?yield n.json():(console.error("WebChat: API request failed:",n.status,n.statusText),null)}catch(t){return console.error("WebChat: Error sending message to API:",t),null}}),ud=e=>{if(e&&e.content){let t;return e.createdAt?t=e.createdAt.endsWith("Z")?e.createdAt:`${e.createdAt}Z`:t=new Date().toISOString(),{id:e.id||at(),text:e.content,sender:"bot",timestamp:t,type:e.type}}return null},Kg=e=>`¡Hola! Soy ${e||"tu asistente"}, ¿En qué te puedo ayudar?
146
146
 
147
147
  Aunque no lo creas, soy una inteligencia artificial! Puedo resolver todas tus dudas 😊
148
148
 
149
- También puedes pedir hablar con nuestro equipo de los sueños!`,cd=e=>({id:at(),text:Vg(e),sender:"bot",timestamp:new Date().toISOString(),type:"text"}),fd=()=>typeof window!="undefined"&&window.innerWidth<640,Kg=({config:e})=>{if(!e.apiKey)return null;const[t,n]=Z.useState(()=>xi(e)),[r,o]=Z.useState(!1),[i,a]=Z.useState(()=>fd()),[l,d]=Z.useState(""),[g,S]=Z.useState(!1),[R,y]=Z.useState(!1),[E,u]=Z.useState(!1),[C,M]=Z.useState(""),[,x]=Z.useState(null),p=Z.useRef(null),[m,b]=Z.useState(!1),[h,f]=Z.useState(!1),[c,s]=Z.useState(""),[w,v]=Z.useState(!0),[k,j]=Z.useState(!1),[N,P]=Z.useState([e.initialMessage?{id:at(),text:e.initialMessage,sender:"bot",timestamp:new Date().toISOString(),type:"text"}:cd(e.title)]),T=Z.useCallback((O,L="bot")=>{P(U=>[...U,O]),!r&&(O.sender==="bot"||L==="bot")&&O.id!==c&&b(!0)},[r,c]);Z.useEffect(()=>{const O=()=>{const L=fd();a(L)};return window.addEventListener("resize",O),()=>window.removeEventListener("resize",O)},[]),Z.useEffect(()=>_g(()=>{n(xi(e))}),[e]),Z.useEffect(()=>{n(xi(e))},[e]),Z.useEffect(()=>{Me(this,null,function*(){const L=td();d(L);const U=yield rd();M(U)})},[]),Z.useEffect(()=>{if(N.length>0){const O=N[N.length-1];O.sender==="bot"&&s(O.id)}},[]);const I=Z.useCallback(O=>{T(O,"ably")},[T]),A=Z.useCallback(O=>{v(O)},[]),D=Z.useCallback(O=>Me(this,null,function*(){if(!(h||p.current))try{if(O.tokenDetails){const L=yield bi(O.tokenDetails,e.apiKey||"",l,I,A);x(L),p.current=L.client,f(!0)}}catch(L){console.error("[❌ ABLY SETUP ERROR from history]",L)}}),[h,l,I]),B=Z.useCallback(()=>Me(this,null,function*(){if(!(h||p.current))try{const O=yield $g(l,e.apiKey||"");if(O!=null&&O.tokenDetails){const L=yield bi(O.tokenDetails,e.apiKey||"",l,I,A);x(L),p.current=L.client,f(!0)}}catch(O){console.error("[❌ ABLY SETUP ERROR from endpoint]",O)}}),[h,l,e.apiKey,I]),z=Z.useCallback(()=>Me(this,null,function*(){var L,U;const O=r;if(o(_=>!_),!O){b(!1);const _=N.filter(W=>W.sender==="bot").slice(-1)[0];_&&s(_.id)}if(!O&&!g&&l&&nd()&&!h){y(!0);const _=yield Hg(l,e.apiKey||"");if(((U=(L=_==null?void 0:_.conversation)==null?void 0:L.messages)==null?void 0:U.length)>0){const W=Fg(_.conversation.messages);P(W),_.conversation.chatbotActivated!==void 0&&v(_.conversation.chatbotActivated),_.conversation.isRated!==void 0&&j(_.conversation.isRated);const Q=W.filter(X=>X.sender==="bot").slice(-1)[0];Q&&s(Q.id),yield D(_)}else console.warn("WebChat: No conversation history found, showing initial message");y(!1),S(!0)}else!O&&nd()&&!h&&(yield B())}),[r,l,g,h,e.apiKey,D,B,N]),$=Z.useCallback(()=>{o(!1)},[]),V=Z.useCallback((O,L)=>Me(this,null,function*(){const U=new Date().toISOString(),_=[],W=[...N];if(O.trim()){const Q={id:at(),text:O,sender:"user",timestamp:U,type:"text"};_.push(Q),W.push(Q)}if(L&&L.length>0){const Q=L.map(X=>({id:at(),text:X.type.startsWith("image/")?`![${X.name}](${X.url})`:`[${X.name}](${X.url})`,sender:"user",timestamp:U,type:X.type.startsWith("image/")?"image":"file",metaContent:X.url}));_.push(...Q),W.push(...Q)}P(Q=>[...Q,..._]),u(!0);try{const Q=sd(l,W,_,{apiKey:e.apiKey||""},C),X=yield ld(Q);if(X){if(X.response.tokenDetails&&!p.current){const re=yield bi(X.response.tokenDetails,e.apiKey||"",l,I,A);x(re),p.current=re.client,f(!0)}const ne=ud(X.response.message);ne&&T(ne,"bot")}else{setTimeout(()=>{const ne=Si();T(ne,"bot"),u(!1)},1e3);return}}catch(Q){console.error("WebChat: Error in message handling:",Q),setTimeout(()=>{const X=Si();T(X,"bot"),u(!1)},1e3);return}u(!1),Ug(!0)}),[l,N,e.apiKey,C,I,T]),F=zg(e);return Z.useEffect(()=>()=>{ad(p.current),p.current=null},[]),G.jsxs("div",{className:"nbc-font-sans",style:{zIndex:2147483647},children:[F.showPopup!==!1&&G.jsx(Lg,{initialMessage:e.initialMessage,avatar:t.avatar,position:F.position,marginBottom:F.marginBottom,marginSide:F.marginSide,primaryColor:t.primaryColor||"#007bff",isMobile:i,isOpen:r,onPopoverClick:z}),G.jsx(zp,{isOpen:r,onClick:z,primaryColor:t.primaryColor,position:F.position,marginBottom:F.marginBottom,marginSide:F.marginSide,hasNewMessages:m,isMobile:i}),G.jsx(Ng,{isOpen:r,onClose:$,config:t,messages:N,onSendMessage:V,isLoading:R,isAiTyping:E,position:F.position,marginBottom:F.marginBottom,marginSide:F.marginSide,isMobile:i,apiKeyMissing:!e.apiKey,chatbotActivated:w,isRated:k,onRatingChange:j,conversationId:l})]})},dd='*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.nbc-pointer-events-none{pointer-events:none}.nbc-pointer-events-auto{pointer-events:auto}.nbc-fixed{position:fixed}.nbc-absolute{position:absolute}.nbc-relative{position:relative}.nbc-inset-0{inset:0}.nbc-inset-auto{inset:auto}.nbc-left-2{left:8px}.nbc-right-0{right:0}.nbc-right-2{right:8px}.nbc-top-0{top:0}.nbc-top-1\\/2{top:50%}.nbc-top-2{top:8px}.nbc-top-full{top:100%}.nbc-m-0{margin:0}.nbc-mx-auto{margin-left:auto;margin-right:auto}.nbc-mb-1{margin-bottom:4px}.nbc-mb-2{margin-bottom:8px}.nbc-mb-4{margin-bottom:16px}.nbc-ml-1{margin-left:4px}.nbc-ml-2{margin-left:8px}.nbc-mr-1{margin-right:4px}.nbc-mr-3{margin-right:12px}.nbc-mt-1{margin-top:4px}.nbc-line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.nbc-flex{display:flex}.nbc-hidden{display:none}.nbc-h-0{height:0px}.nbc-h-10{height:40px}.nbc-h-12{height:48px}.nbc-h-16{height:64px}.nbc-h-2{height:8px}.nbc-h-24{height:96px}.nbc-h-3{height:12px}.nbc-h-4{height:16px}.nbc-h-5{height:20px}.nbc-h-6{height:24px}.nbc-h-7{height:28px}.nbc-h-8{height:32px}.nbc-h-auto{height:auto}.nbc-h-full{height:100%}.nbc-min-h-0{min-height:0px}.nbc-min-h-\\[220px\\]{min-height:220px}.nbc-w-0{width:0px}.nbc-w-10{width:40px}.nbc-w-12{width:48px}.nbc-w-16{width:64px}.nbc-w-2{width:8px}.nbc-w-3{width:12px}.nbc-w-4{width:16px}.nbc-w-5{width:20px}.nbc-w-6{width:24px}.nbc-w-7{width:28px}.nbc-w-8{width:32px}.nbc-w-auto{width:auto}.nbc-w-full{width:100%}.nbc-max-w-20{max-width:80px}.nbc-max-w-\\[90\\%\\]{max-width:90%}.nbc-max-w-xs{max-width:20rem}.nbc-flex-1{flex:1 1 0%}.nbc-flex-shrink-0{flex-shrink:0}.-nbc-translate-y-4{--tw-translate-y: -16px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc--translate-y-1\\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-2{--tw-translate-y: 8px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-3{--tw-translate-y: 12px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-4{--tw-translate-y: 16px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-\\[-10px\\]{--tw-translate-y: -10px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-\\[1\\.13\\]{--tw-scale-x: 1.13;--tw-scale-y: 1.13;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes nbc-bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.nbc-animate-bounce{animation:nbc-bounce 1s infinite}@keyframes nbc-ping{75%,to{transform:scale(2);opacity:0}}.nbc-animate-ping{animation:nbc-ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes nbc-pulse{50%{opacity:.5}}.nbc-animate-pulse{animation:nbc-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes nbc-spin{to{transform:rotate(360deg)}}.nbc-animate-spin{animation:nbc-spin 1s linear infinite}.nbc-cursor-pointer{cursor:pointer}.nbc-flex-col{flex-direction:column}.nbc-flex-wrap{flex-wrap:wrap}.nbc-items-start{align-items:flex-start}.nbc-items-end{align-items:flex-end}.nbc-items-center{align-items:center}.nbc-justify-start{justify-content:flex-start}.nbc-justify-end{justify-content:flex-end}.nbc-justify-center{justify-content:center}.nbc-justify-between{justify-content:space-between}.nbc-gap-2{gap:8px}.nbc-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(4px * var(--tw-space-x-reverse));margin-left:calc(4px * calc(1 - var(--tw-space-x-reverse)))}.nbc-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(12px * var(--tw-space-x-reverse));margin-left:calc(12px * calc(1 - var(--tw-space-x-reverse)))}.nbc-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(8px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(8px * var(--tw-space-y-reverse))}.nbc-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(16px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(16px * var(--tw-space-y-reverse))}.nbc-overflow-hidden{overflow:hidden}.nbc-overflow-y-auto{overflow-y:auto}.nbc-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nbc-whitespace-nowrap{white-space:nowrap}.nbc-break-words{overflow-wrap:break-word}.nbc-rounded{border-radius:4px}.nbc-rounded-2xl{border-radius:16px}.nbc-rounded-full{border-radius:9999px}.nbc-rounded-lg{border-radius:8px}.nbc-rounded-none{border-radius:0}.nbc-rounded-bl-md{border-bottom-left-radius:6px}.nbc-rounded-br-md{border-bottom-right-radius:6px}.nbc-border{border-width:1px}.nbc-border-0{border-width:0px}.nbc-border-2{border-width:2px}.nbc-border-b{border-bottom-width:1px}.nbc-border-t{border-top-width:1px}.nbc-border-none{border-style:none}.nbc-border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.nbc-border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.nbc-border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.nbc-border-t-gray-600{--tw-border-opacity: 1;border-top-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.nbc-bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.nbc-bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.nbc-bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.nbc-bg-transparent{background-color:transparent}.nbc-bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.nbc-bg-none{background-image:none}.nbc-object-cover{-o-object-fit:cover;object-fit:cover}.nbc-p-0{padding:0}.nbc-p-1{padding:4px}.nbc-p-2{padding:8px}.nbc-p-4{padding:16px}.nbc-p-5{padding:20px}.nbc-px-2{padding-left:8px;padding-right:8px}.nbc-px-4{padding-left:16px;padding-right:16px}.nbc-py-1{padding-top:4px;padding-bottom:4px}.nbc-py-2{padding-top:8px;padding-bottom:8px}.nbc-py-3{padding-top:12px;padding-bottom:12px}.nbc-pl-12{padding-left:48px}.nbc-pr-12{padding-right:48px}.nbc-pt-4{padding-top:16px}.nbc-text-center{text-align:center}.nbc-text-right{text-align:right}.nbc-font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.nbc-text-\\[15px\\]{font-size:15px}.nbc-text-lg{font-size:18px}.nbc-text-sm{font-size:14px}.nbc-text-xs{font-size:12px}.nbc-font-bold{font-weight:700}.nbc-font-medium{font-weight:500}.nbc-italic{font-style:italic}.nbc-leading-none{line-height:1}.nbc-leading-relaxed{line-height:1.625}.nbc-text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.nbc-text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.nbc-text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.nbc-text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.nbc-text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.nbc-text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.nbc-text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.nbc-text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.nbc-text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.nbc-text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.nbc-no-underline{text-decoration-line:none}.nbc-opacity-0{opacity:0}.nbc-opacity-100{opacity:1}.nbc-opacity-50{opacity:.5}.nbc-opacity-70{opacity:.7}.nbc-opacity-75{opacity:.75}.nbc-shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-outline-none{outline:2px solid transparent;outline-offset:2px}.nbc-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-duration-200{transition-duration:.2s}.nbc-duration-300{transition-duration:.3s}.nbc-duration-500{transition-duration:.5s}.nbc-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.hover\\:nbc-scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:nbc-scale-\\[1\\.02\\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:nbc-bg-black:hover{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.hover\\:nbc-bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\\:nbc-bg-opacity-20:hover{--tw-bg-opacity: .2}.hover\\:nbc-text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\\:nbc-text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.disabled\\:nbc-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:nbc-opacity-50:disabled{opacity:.5}',Qg={apiKey:"",primaryColor:"#111111",avatar:"",title:"NotChatBot",placeholder:"Escribe tu mensaje...",initialMessage:"¡Hola! ¿En qué puedo ayudarte?",position:"bottom-right",marginBottom:20,marginSide:20,showPopup:!0,mobile:{position:"bottom-right",marginBottom:15,marginSide:15,showPopup:!0},desktop:{position:"bottom-right",marginBottom:25,marginSide:25,showPopup:!0},closeButtonIcon:"default",closeButtonText:"Cerrar",closeButtonCustomIcon:""},Yg=({title:e,primaryColor:t="#3b82f6",avatar:n})=>{const r={backgroundColor:t};return G.jsxs("div",{id:"notchatbot-embed-chat-header",style:r,className:"nbc-flex nbc-items-center nbc-p-4",children:[G.jsx("div",{className:"nbc-flex nbc-items-center nbc-mr-3 nbc-text-black",children:n?G.jsx("img",{src:n,alt:"Avatar",className:"nbc-w-8 nbc-h-8 nbc-rounded-full nbc-object-cover"}):G.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"nbc-w-8 nbc-h-8 nbc-bg-white nbc-rounded-full nbc-p-1",children:[G.jsx("path",{d:"M12 6V2H8"}),G.jsx("path",{d:"m8 18-4 4V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2Z"}),G.jsx("path",{d:"M2 12h2"}),G.jsx("path",{d:"M9 11v2"}),G.jsx("path",{d:"M15 11v2"}),G.jsx("path",{d:"M20 12h2"})]})}),G.jsx("h3",{className:"nbc-m-0 nbc-text-lg nbc-font-bold nbc-text-white",children:e})]})},Jg=({footerText:e,primaryColor:t,footerColor:n})=>{if(!e)return null;const r=o=>{const i=/(https?:\/\/[^\s]+)/g;return o.split(i).map((l,d)=>i.test(l)?G.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"nbc-font-medium nbc-no-underline",style:{color:t},children:l},d):l)};return G.jsx("div",{id:"notchatbot-embed-chat-footer",className:"nbc-py-3 nbc-px-4 nbc-bg-gray-50 nbc-text-xs nbc-text-gray-600 nbc-text-center nbc-leading-relaxed nbc-italic",style:{backgroundColor:n},children:r(e)})},Xg=({config:e,messages:t,onSendMessage:n,isLoading:r,isAiTyping:o,chatbotActivated:i=!0})=>{var d;const a=(g,S="auto")=>g===void 0?S:typeof g=="number"?`${g}px`:g,l={width:a(e.width,"100%"),height:a(e.height,"400px"),maxWidth:a(e.maxWidth,"100%"),maxHeight:a(e.maxHeight,"100vh"),minWidth:a(e.minWidth,"280px"),minHeight:a(e.minHeight,"300px"),display:"flex",flexDirection:"column",backgroundColor:e.chatTransparent?"transparent":e.chatBackground||"#ffffff",borderRadius:a(e.borderRadius,"12px"),border:e.border||"1px solid #e5e7eb",boxShadow:e.boxShadow||"0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",overflow:"hidden",position:"relative"};return G.jsxs("div",{id:"notchatbot-embed-chat",className:"nbc-font-sans",style:l,children:[e.showHeader!==!1&&G.jsx(Yg,{title:e.title||"Chat",primaryColor:e.primaryColor,avatar:e.avatar}),G.jsxs("div",{id:"notchatbot-embed-chat-body",className:"nbc-flex-1 nbc-flex nbc-flex-col nbc-min-h-0",style:{position:"relative",overflow:"hidden"},children:[r?G.jsx("div",{className:"nbc-flex-1 nbc-p-4",children:G.jsx(Yf,{})}):G.jsx($f,{messages:t,isTyping:o||!1,avatar:e.avatar,textColor:e.textColor,bubbleUserColor:e.bubbleUserColor,chatbotActivated:i}),G.jsx("div",{id:"notchatbot-embed-chat-body-input",className:"nbc-py-2 nbc-bg-gray-50 nbc-border-none",style:{backgroundColor:(d=e.input)==null?void 0:d.backgroundColor},children:G.jsx(Qf,{onSendMessage:n,placeholder:e.placeholder||"Escribe un mensaje...",primaryColor:e.primaryColor,disabled:r,input:e.input,apiKey:e.apiKey})})]}),e.showFooter!==!1&&e.footerText&&G.jsx(Jg,{footerText:e.footerText,primaryColor:e.primaryColor,footerColor:e.footerColor})]})},hd=({config:e})=>{if(!e.apiKey)return null;const[t,n]=Z.useState(""),[r,o]=Z.useState(!1),[i,a]=Z.useState(""),[,l]=Z.useState(null),d=Z.useRef(null),[,g]=Z.useState(!1),[S,R]=Z.useState(!0),[y,E]=Z.useState([e.initialMessage?{id:at(),text:e.initialMessage,sender:"bot",timestamp:new Date().toISOString(),type:"text"}:cd(e.title)]),u=Z.useCallback(p=>{E(m=>[...m,p])},[]);Z.useEffect(()=>{Me(this,null,function*(){const m=yield rd();a(m)})},[]);const C=Z.useCallback(p=>{u(p)},[u]),M=Z.useCallback(p=>{R(p)},[]),x=Z.useCallback((p,m)=>Me(this,null,function*(){if(!p.trim()&&(!m||m.length===0))return;let b=t;b||(b=at(),n(b));const h=new Date().toISOString(),f=[...y],c=[];if(p.trim()){const s={id:at(),text:p,sender:"user",timestamp:h,conversationId:b,type:"text"};u(s),f.push(s),c.push(s)}if(m&&m.length>0){const s=m.map(w=>({id:at(),text:w.type.startsWith("image/")?`![${w.name}](${w.url})`:`[${w.name}](${w.url})`,sender:"user",timestamp:h,conversationId:b,type:w.type.startsWith("image/")?"image":"file",metaContent:w.url}));s.forEach(w=>{u(w),c.push(w)}),f.push(...s)}o(!0);try{const s=sd(b,f,c,{apiKey:e.apiKey||""},i),w=yield ld(s);if(w){if(w.response.tokenDetails&&!d.current){const k=yield bi(w.response.tokenDetails,e.apiKey||"",b,C,M);l(k),d.current=k.client,g(!0)}const v=ud(w.response.message);v&&u(v)}else{setTimeout(()=>{const v=Si();u(v),o(!1)},1e3);return}o(!1)}catch(s){console.error("EmbedChat: Error sending message:",s),setTimeout(()=>{const w=Si();u(w),o(!1)},1e3);return}}),[t,i,e.apiKey,u,C,y]);return Z.useEffect(()=>()=>{d.current&&ad(d.current)},[]),G.jsx(Xg,{config:e,messages:y,onSendMessage:x,isLoading:!1,isAiTyping:r,chatbotActivated:S})};let pd=!1,Ci=null;const gd=e=>{try{e&&(pd=!0),Ci&&(Ci.destroy(),Ci=null);const t=fe(fe({elementId:"webchat-notchatbot"},Qg),e),n=document.getElementById(t.elementId);if(!n)return console.error(`WebChat: Element with id "${t.elementId}" not found`),null;let r;n.shadowRoot?(r=n.shadowRoot,r.innerHTML=""):r=n.attachShadow({mode:"open"});const o=document.createElement("style");o.textContent=dd,r.appendChild(o);const i=document.createElement("div");r.appendChild(i);const a=Hs(i);return a.render(Ni.createElement(Kg,{config:t})),{root:a,destroy:()=>{a.unmount(),Ci=null},getConversationId:()=>td()}}catch(t){return console.error("WebChat: Failed to initialize",t),null}},Zg=e=>{try{if(!e.elementId)return console.error("EmbedChat: elementId is required"),null;const t=document.getElementById(e.elementId);if(!t)return console.error(`EmbedChat: Element with id "${e.elementId}" not found`),null;let n;t.shadowRoot?(n=t.shadowRoot,n.innerHTML=""):n=t.attachShadow({mode:"open"});const r=document.createElement("style");if(r.textContent=dd,n.appendChild(r),e.customCSS){const a=document.createElement("style");a.setAttribute("data-custom","true"),a.textContent=e.customCSS,n.appendChild(a)}const o=document.createElement("div");n.appendChild(o);const i=Hs(o);return i.render(Ni.createElement(hd,{config:e})),{destroy:()=>{i.unmount()},updateConfig:a=>{const l=fe(fe({},e),a);if(a.customCSS!==void 0){const d=n.querySelector("style[data-custom]");if(d&&d.remove(),l.customCSS){const g=document.createElement("style");g.setAttribute("data-custom","true"),g.textContent=l.customCSS,n.appendChild(g)}}i.render(Ni.createElement(hd,{config:l}))},injectCSS:a=>{const l=n.querySelector("style[data-custom]");l&&l.remove();const d=document.createElement("style");d.setAttribute("data-custom","true"),d.textContent=a,n.appendChild(d)},removeCustomCSS:()=>{const a=n.querySelector("style[data-custom]");a&&a.remove()}}}catch(t){return console.error("EmbedChat: Failed to initialize",t),null}},md={initialize:gd},vd={initialize:Zg};if(typeof window!="undefined"){window.WebChat=md,window.EmbedChat=vd;const e=()=>{if(!pd){let o=document.getElementById("webchat-notchatbot");o||(o=document.createElement("div"),o.id="webchat-notchatbot",document.body.appendChild(o)),gd()}const r=new CustomEvent("WebChatReady");document.dispatchEvent(r)},t=()=>{const r=new CustomEvent("EmbedChatReady");document.dispatchEvent(r)},n=()=>{e(),t()};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",n):setTimeout(n,0)}Ce.EmbedChatAPI=vd,Ce.WebChat=md,Object.defineProperty(Ce,Symbol.toStringTag,{value:"Module"})});
149
+ También puedes pedir hablar con nuestro equipo de los sueños!`,cd=e=>({id:at(),text:Kg(e),sender:"bot",timestamp:new Date().toISOString(),type:"text"}),fd=()=>typeof window!="undefined"&&window.innerWidth<640,Qg=({config:e})=>{if(!e.apiKey)return null;const[t,n]=Z.useState(()=>xi(e)),[r,o]=Z.useState(!1),[i,a]=Z.useState(()=>fd()),[l,d]=Z.useState(""),[g,S]=Z.useState(!1),[R,y]=Z.useState(!1),[E,u]=Z.useState(!1),[C,M]=Z.useState(""),[,x]=Z.useState(null),p=Z.useRef(null),[m,b]=Z.useState(!1),[h,f]=Z.useState(!1),[c,s]=Z.useState(""),[w,v]=Z.useState(!0),[k,j]=Z.useState(!1),[N,P]=Z.useState([e.initialMessage?{id:at(),text:e.initialMessage,sender:"bot",timestamp:new Date().toISOString(),type:"text"}:cd(e.title)]),T=Z.useCallback((O,L="bot")=>{P(U=>[...U,O]),!r&&(O.sender==="bot"||L==="bot")&&O.id!==c&&b(!0)},[r,c]);Z.useEffect(()=>{const O=()=>{const L=fd();a(L)};return window.addEventListener("resize",O),()=>window.removeEventListener("resize",O)},[]),Z.useEffect(()=>_g(()=>{n(xi(e))}),[e]),Z.useEffect(()=>{n(xi(e))},[e]),Z.useEffect(()=>{Me(this,null,function*(){const L=td();d(L);const U=yield rd();M(U)})},[]),Z.useEffect(()=>{if(N.length>0){const O=N[N.length-1];O.sender==="bot"&&s(O.id)}},[]);const I=Z.useCallback(O=>{T(O,"ably")},[T]),A=Z.useCallback(O=>{v(O)},[]),D=Z.useCallback(O=>Me(this,null,function*(){if(!(h||p.current))try{if(O.tokenDetails){const L=yield bi(O.tokenDetails,e.apiKey||"",l,I,A);x(L),p.current=L.client,f(!0)}}catch(L){console.error("[❌ ABLY SETUP ERROR from history]",L)}}),[h,l,I]),B=Z.useCallback(()=>Me(this,null,function*(){if(!(h||p.current))try{const O=yield Vg(l,e.apiKey||"");if(O!=null&&O.tokenDetails){const L=yield bi(O.tokenDetails,e.apiKey||"",l,I,A);x(L),p.current=L.client,f(!0)}}catch(O){console.error("[❌ ABLY SETUP ERROR from endpoint]",O)}}),[h,l,e.apiKey,I]),z=Z.useCallback(()=>Me(this,null,function*(){var L,U;const O=r;if(o(_=>!_),!O){b(!1);const _=N.filter(W=>W.sender==="bot").slice(-1)[0];_&&s(_.id)}if(!O&&!g&&l&&nd()&&!h){y(!0);const _=yield Hg(l,e.apiKey||"");if(((U=(L=_==null?void 0:_.conversation)==null?void 0:L.messages)==null?void 0:U.length)>0){const W=Fg(_.conversation.messages);P(W),_.conversation.chatbotActivated!==void 0&&v(_.conversation.chatbotActivated),_.conversation.isRated!==void 0&&j(_.conversation.isRated);const Q=W.filter(X=>X.sender==="bot").slice(-1)[0];Q&&s(Q.id),yield D(_)}else console.warn("WebChat: No conversation history found, showing initial message");y(!1),S(!0)}else!O&&nd()&&!h&&(yield B())}),[r,l,g,h,e.apiKey,D,B,N]),$=Z.useCallback(()=>{o(!1)},[]),V=Z.useCallback((O,L)=>Me(this,null,function*(){const U=new Date().toISOString(),_=[],W=[...N];if(O.trim()){const Q={id:at(),text:O,sender:"user",timestamp:U,type:"text"};_.push(Q),W.push(Q)}if(L&&L.length>0){const Q=L.map(X=>({id:at(),text:X.type.startsWith("image/")?`![image](${X.url})`:`[${X.name}](${X.url})`,sender:"user",timestamp:U,type:X.type.startsWith("image/")?"image":"file",metaContent:X.url}));_.push(...Q),W.push(...Q)}P(Q=>[...Q,..._]),u(!0);try{const Q=sd(l,W,_,{apiKey:e.apiKey||""},C),X=yield ld(Q);if(X){if(X.response.tokenDetails&&!p.current){const re=yield bi(X.response.tokenDetails,e.apiKey||"",l,I,A);x(re),p.current=re.client,f(!0)}const ne=ud(X.response.message);ne&&T(ne,"bot")}else{setTimeout(()=>{const ne=Si();T(ne,"bot"),u(!1)},1e3);return}}catch(Q){console.error("WebChat: Error in message handling:",Q),setTimeout(()=>{const X=Si();T(X,"bot"),u(!1)},1e3);return}u(!1),Ug(!0)}),[l,N,e.apiKey,C,I,T]),F=zg(e);return Z.useEffect(()=>()=>{ad(p.current),p.current=null},[]),G.jsxs("div",{className:"nbc-font-sans",style:{zIndex:2147483647},children:[F.showPopup!==!1&&G.jsx(Lg,{initialMessage:e.initialMessage,avatar:t.avatar,position:F.position,marginBottom:F.marginBottom,marginSide:F.marginSide,primaryColor:t.primaryColor||"#007bff",isMobile:i,isOpen:r,onPopoverClick:z}),G.jsx(zp,{isOpen:r,onClick:z,primaryColor:t.primaryColor,position:F.position,marginBottom:F.marginBottom,marginSide:F.marginSide,hasNewMessages:m,isMobile:i}),G.jsx(Ng,{isOpen:r,onClose:$,config:t,messages:N,onSendMessage:V,isLoading:R,isAiTyping:E,position:F.position,marginBottom:F.marginBottom,marginSide:F.marginSide,isMobile:i,apiKeyMissing:!e.apiKey,chatbotActivated:w,isRated:k,onRatingChange:j,conversationId:l})]})},dd='*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.nbc-pointer-events-none{pointer-events:none}.nbc-pointer-events-auto{pointer-events:auto}.nbc-fixed{position:fixed}.nbc-absolute{position:absolute}.nbc-relative{position:relative}.nbc-inset-0{inset:0}.nbc-inset-auto{inset:auto}.nbc-left-2{left:8px}.nbc-right-0{right:0}.nbc-right-2{right:8px}.nbc-top-0{top:0}.nbc-top-1\\/2{top:50%}.nbc-top-2{top:8px}.nbc-top-full{top:100%}.nbc-m-0{margin:0}.nbc-mx-auto{margin-left:auto;margin-right:auto}.nbc-mb-1{margin-bottom:4px}.nbc-mb-2{margin-bottom:8px}.nbc-mb-4{margin-bottom:16px}.nbc-ml-1{margin-left:4px}.nbc-ml-2{margin-left:8px}.nbc-mr-1{margin-right:4px}.nbc-mr-3{margin-right:12px}.nbc-mt-1{margin-top:4px}.nbc-line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.nbc-flex{display:flex}.nbc-hidden{display:none}.nbc-h-0{height:0px}.nbc-h-10{height:40px}.nbc-h-12{height:48px}.nbc-h-16{height:64px}.nbc-h-2{height:8px}.nbc-h-24{height:96px}.nbc-h-3{height:12px}.nbc-h-4{height:16px}.nbc-h-5{height:20px}.nbc-h-6{height:24px}.nbc-h-7{height:28px}.nbc-h-8{height:32px}.nbc-h-auto{height:auto}.nbc-h-full{height:100%}.nbc-min-h-0{min-height:0px}.nbc-min-h-\\[220px\\]{min-height:220px}.nbc-w-0{width:0px}.nbc-w-10{width:40px}.nbc-w-12{width:48px}.nbc-w-16{width:64px}.nbc-w-2{width:8px}.nbc-w-3{width:12px}.nbc-w-4{width:16px}.nbc-w-5{width:20px}.nbc-w-6{width:24px}.nbc-w-7{width:28px}.nbc-w-8{width:32px}.nbc-w-auto{width:auto}.nbc-w-full{width:100%}.nbc-max-w-20{max-width:80px}.nbc-max-w-\\[90\\%\\]{max-width:90%}.nbc-max-w-xs{max-width:20rem}.nbc-flex-1{flex:1 1 0%}.nbc-flex-shrink-0{flex-shrink:0}.-nbc-translate-y-4{--tw-translate-y: -16px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc--translate-y-1\\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-2{--tw-translate-y: 8px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-3{--tw-translate-y: 12px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-4{--tw-translate-y: 16px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-translate-y-\\[-10px\\]{--tw-translate-y: -10px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-scale-\\[1\\.13\\]{--tw-scale-x: 1.13;--tw-scale-y: 1.13;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nbc-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes nbc-bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.nbc-animate-bounce{animation:nbc-bounce 1s infinite}@keyframes nbc-ping{75%,to{transform:scale(2);opacity:0}}.nbc-animate-ping{animation:nbc-ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes nbc-pulse{50%{opacity:.5}}.nbc-animate-pulse{animation:nbc-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes nbc-spin{to{transform:rotate(360deg)}}.nbc-animate-spin{animation:nbc-spin 1s linear infinite}.nbc-cursor-pointer{cursor:pointer}.nbc-flex-col{flex-direction:column}.nbc-flex-wrap{flex-wrap:wrap}.nbc-items-start{align-items:flex-start}.nbc-items-end{align-items:flex-end}.nbc-items-center{align-items:center}.nbc-justify-start{justify-content:flex-start}.nbc-justify-end{justify-content:flex-end}.nbc-justify-center{justify-content:center}.nbc-justify-between{justify-content:space-between}.nbc-gap-2{gap:8px}.nbc-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(4px * var(--tw-space-x-reverse));margin-left:calc(4px * calc(1 - var(--tw-space-x-reverse)))}.nbc-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(12px * var(--tw-space-x-reverse));margin-left:calc(12px * calc(1 - var(--tw-space-x-reverse)))}.nbc-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(8px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(8px * var(--tw-space-y-reverse))}.nbc-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(16px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(16px * var(--tw-space-y-reverse))}.nbc-overflow-hidden{overflow:hidden}.nbc-overflow-y-auto{overflow-y:auto}.nbc-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nbc-whitespace-nowrap{white-space:nowrap}.nbc-break-words{overflow-wrap:break-word}.nbc-rounded{border-radius:4px}.nbc-rounded-2xl{border-radius:16px}.nbc-rounded-full{border-radius:9999px}.nbc-rounded-lg{border-radius:8px}.nbc-rounded-none{border-radius:0}.nbc-rounded-bl-md{border-bottom-left-radius:6px}.nbc-rounded-br-md{border-bottom-right-radius:6px}.nbc-border{border-width:1px}.nbc-border-0{border-width:0px}.nbc-border-2{border-width:2px}.nbc-border-b{border-bottom-width:1px}.nbc-border-t{border-top-width:1px}.nbc-border-none{border-style:none}.nbc-border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.nbc-border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.nbc-border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.nbc-border-t-gray-600{--tw-border-opacity: 1;border-top-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.nbc-bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.nbc-bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.nbc-bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.nbc-bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.nbc-bg-transparent{background-color:transparent}.nbc-bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.nbc-bg-none{background-image:none}.nbc-object-cover{-o-object-fit:cover;object-fit:cover}.nbc-p-0{padding:0}.nbc-p-1{padding:4px}.nbc-p-2{padding:8px}.nbc-p-4{padding:16px}.nbc-p-5{padding:20px}.nbc-px-2{padding-left:8px;padding-right:8px}.nbc-px-4{padding-left:16px;padding-right:16px}.nbc-py-1{padding-top:4px;padding-bottom:4px}.nbc-py-2{padding-top:8px;padding-bottom:8px}.nbc-py-3{padding-top:12px;padding-bottom:12px}.nbc-pl-12{padding-left:48px}.nbc-pr-12{padding-right:48px}.nbc-pt-4{padding-top:16px}.nbc-text-center{text-align:center}.nbc-text-right{text-align:right}.nbc-font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.nbc-text-\\[15px\\]{font-size:15px}.nbc-text-lg{font-size:18px}.nbc-text-sm{font-size:14px}.nbc-text-xs{font-size:12px}.nbc-font-bold{font-weight:700}.nbc-font-medium{font-weight:500}.nbc-italic{font-style:italic}.nbc-leading-none{line-height:1}.nbc-leading-relaxed{line-height:1.625}.nbc-text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.nbc-text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.nbc-text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.nbc-text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.nbc-text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.nbc-text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.nbc-text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.nbc-text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.nbc-text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.nbc-text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.nbc-no-underline{text-decoration-line:none}.nbc-opacity-0{opacity:0}.nbc-opacity-100{opacity:1}.nbc-opacity-50{opacity:.5}.nbc-opacity-70{opacity:.7}.nbc-opacity-75{opacity:.75}.nbc-shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.nbc-outline-none{outline:2px solid transparent;outline-offset:2px}.nbc-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nbc-duration-200{transition-duration:.2s}.nbc-duration-300{transition-duration:.3s}.nbc-duration-500{transition-duration:.5s}.nbc-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.hover\\:nbc-scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:nbc-scale-\\[1\\.02\\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:nbc-bg-black:hover{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.hover\\:nbc-bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\\:nbc-bg-opacity-20:hover{--tw-bg-opacity: .2}.hover\\:nbc-text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\\:nbc-text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.disabled\\:nbc-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:nbc-opacity-50:disabled{opacity:.5}',Yg={apiKey:"",primaryColor:"#111111",avatar:"",title:"NotChatBot",placeholder:"Escribe tu mensaje...",initialMessage:"¡Hola! ¿En qué puedo ayudarte?",position:"bottom-right",marginBottom:20,marginSide:20,showPopup:!0,mobile:{position:"bottom-right",marginBottom:15,marginSide:15,showPopup:!0},desktop:{position:"bottom-right",marginBottom:25,marginSide:25,showPopup:!0},closeButtonIcon:"default",closeButtonText:"Cerrar",closeButtonCustomIcon:""},Jg=({title:e,primaryColor:t="#3b82f6",avatar:n})=>{const r={backgroundColor:t};return G.jsxs("div",{id:"notchatbot-embed-chat-header",style:r,className:"nbc-flex nbc-items-center nbc-p-4",children:[G.jsx("div",{className:"nbc-flex nbc-items-center nbc-mr-3 nbc-text-black",children:n?G.jsx("img",{src:n,alt:"Avatar",className:"nbc-w-8 nbc-h-8 nbc-rounded-full nbc-object-cover"}):G.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"nbc-w-8 nbc-h-8 nbc-bg-white nbc-rounded-full nbc-p-1",children:[G.jsx("path",{d:"M12 6V2H8"}),G.jsx("path",{d:"m8 18-4 4V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2Z"}),G.jsx("path",{d:"M2 12h2"}),G.jsx("path",{d:"M9 11v2"}),G.jsx("path",{d:"M15 11v2"}),G.jsx("path",{d:"M20 12h2"})]})}),G.jsx("h3",{className:"nbc-m-0 nbc-text-lg nbc-font-bold nbc-text-white",children:e})]})},Xg=({footerText:e,primaryColor:t,footerColor:n})=>{if(!e)return null;const r=o=>{const i=/(https?:\/\/[^\s]+)/g;return o.split(i).map((l,d)=>i.test(l)?G.jsx("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"nbc-font-medium nbc-no-underline",style:{color:t},children:l},d):l)};return G.jsx("div",{id:"notchatbot-embed-chat-footer",className:"nbc-py-3 nbc-px-4 nbc-bg-gray-50 nbc-text-xs nbc-text-gray-600 nbc-text-center nbc-leading-relaxed nbc-italic",style:{backgroundColor:n},children:r(e)})},Zg=({config:e,messages:t,onSendMessage:n,isLoading:r,isAiTyping:o,chatbotActivated:i=!0})=>{var d;const a=(g,S="auto")=>g===void 0?S:typeof g=="number"?`${g}px`:g,l={width:a(e.width,"100%"),height:a(e.height,"400px"),maxWidth:a(e.maxWidth,"100%"),maxHeight:a(e.maxHeight,"100vh"),minWidth:a(e.minWidth,"280px"),minHeight:a(e.minHeight,"300px"),display:"flex",flexDirection:"column",backgroundColor:e.chatTransparent?"transparent":e.chatBackground||"#ffffff",borderRadius:a(e.borderRadius,"12px"),border:e.border||"1px solid #e5e7eb",boxShadow:e.boxShadow||"0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",overflow:"hidden",position:"relative"};return G.jsxs("div",{id:"notchatbot-embed-chat",className:"nbc-font-sans",style:l,children:[e.showHeader!==!1&&G.jsx(Jg,{title:e.title||"Chat",primaryColor:e.primaryColor,avatar:e.avatar}),G.jsxs("div",{id:"notchatbot-embed-chat-body",className:"nbc-flex-1 nbc-flex nbc-flex-col nbc-min-h-0",style:{position:"relative",overflow:"hidden"},children:[r?G.jsx("div",{className:"nbc-flex-1 nbc-p-4",children:G.jsx(Yf,{})}):G.jsx($f,{messages:t,isTyping:o||!1,avatar:e.avatar,textColor:e.textColor,bubbleUserColor:e.bubbleUserColor,chatbotActivated:i}),G.jsx("div",{id:"notchatbot-embed-chat-body-input",className:"nbc-py-2 nbc-bg-gray-50 nbc-border-none",style:{backgroundColor:(d=e.input)==null?void 0:d.backgroundColor},children:G.jsx(Qf,{onSendMessage:n,placeholder:e.placeholder||"Escribe un mensaje...",primaryColor:e.primaryColor,disabled:r,input:e.input,apiKey:e.apiKey})})]}),e.showFooter!==!1&&e.footerText&&G.jsx(Xg,{footerText:e.footerText,primaryColor:e.primaryColor,footerColor:e.footerColor})]})},hd=({config:e})=>{if(!e.apiKey)return null;const[t,n]=Z.useState(""),[r,o]=Z.useState(!1),[i,a]=Z.useState(""),[,l]=Z.useState(null),d=Z.useRef(null),[,g]=Z.useState(!1),[S,R]=Z.useState(!0),[y,E]=Z.useState([e.initialMessage?{id:at(),text:e.initialMessage,sender:"bot",timestamp:new Date().toISOString(),type:"text"}:cd(e.title)]),u=Z.useCallback(p=>{E(m=>[...m,p])},[]);Z.useEffect(()=>{Me(this,null,function*(){const m=yield rd();a(m)})},[]);const C=Z.useCallback(p=>{u(p)},[u]),M=Z.useCallback(p=>{R(p)},[]),x=Z.useCallback((p,m)=>Me(this,null,function*(){if(!p.trim()&&(!m||m.length===0))return;let b=t;b||(b=at(),n(b));const h=new Date().toISOString(),f=[...y],c=[];if(p.trim()){const s={id:at(),text:p,sender:"user",timestamp:h,conversationId:b,type:"text"};u(s),f.push(s),c.push(s)}if(m&&m.length>0){const s=m.map(w=>({id:at(),text:w.type.startsWith("image/")?`![image](${w.url})`:`[${w.name}](${w.url})`,sender:"user",timestamp:h,conversationId:b,type:w.type.startsWith("image/")?"image":"file",metaContent:w.url}));s.forEach(w=>{u(w),c.push(w)}),f.push(...s)}o(!0);try{const s=sd(b,f,c,{apiKey:e.apiKey||""},i),w=yield ld(s);if(w){if(w.response.tokenDetails&&!d.current){const k=yield bi(w.response.tokenDetails,e.apiKey||"",b,C,M);l(k),d.current=k.client,g(!0)}const v=ud(w.response.message);v&&u(v)}else{setTimeout(()=>{const v=Si();u(v),o(!1)},1e3);return}o(!1)}catch(s){console.error("EmbedChat: Error sending message:",s),setTimeout(()=>{const w=Si();u(w),o(!1)},1e3);return}}),[t,i,e.apiKey,u,C,y]);return Z.useEffect(()=>()=>{d.current&&ad(d.current)},[]),G.jsx(Zg,{config:e,messages:y,onSendMessage:x,isLoading:!1,isAiTyping:r,chatbotActivated:S})};let pd=!1,Ci=null;const gd=e=>{try{e&&(pd=!0),Ci&&(Ci.destroy(),Ci=null);const t=fe(fe({elementId:"webchat-notchatbot"},Yg),e),n=document.getElementById(t.elementId);if(!n)return console.error(`WebChat: Element with id "${t.elementId}" not found`),null;let r;n.shadowRoot?(r=n.shadowRoot,r.innerHTML=""):r=n.attachShadow({mode:"open"});const o=document.createElement("style");o.textContent=dd,r.appendChild(o);const i=document.createElement("div");r.appendChild(i);const a=Hs(i);return a.render(Ni.createElement(Qg,{config:t})),{root:a,destroy:()=>{a.unmount(),Ci=null},getConversationId:()=>td()}}catch(t){return console.error("WebChat: Failed to initialize",t),null}},qg=e=>{try{if(!e.elementId)return console.error("EmbedChat: elementId is required"),null;const t=document.getElementById(e.elementId);if(!t)return console.error(`EmbedChat: Element with id "${e.elementId}" not found`),null;let n;t.shadowRoot?(n=t.shadowRoot,n.innerHTML=""):n=t.attachShadow({mode:"open"});const r=document.createElement("style");if(r.textContent=dd,n.appendChild(r),e.customCSS){const a=document.createElement("style");a.setAttribute("data-custom","true"),a.textContent=e.customCSS,n.appendChild(a)}const o=document.createElement("div");n.appendChild(o);const i=Hs(o);return i.render(Ni.createElement(hd,{config:e})),{destroy:()=>{i.unmount()},updateConfig:a=>{const l=fe(fe({},e),a);if(a.customCSS!==void 0){const d=n.querySelector("style[data-custom]");if(d&&d.remove(),l.customCSS){const g=document.createElement("style");g.setAttribute("data-custom","true"),g.textContent=l.customCSS,n.appendChild(g)}}i.render(Ni.createElement(hd,{config:l}))},injectCSS:a=>{const l=n.querySelector("style[data-custom]");l&&l.remove();const d=document.createElement("style");d.setAttribute("data-custom","true"),d.textContent=a,n.appendChild(d)},removeCustomCSS:()=>{const a=n.querySelector("style[data-custom]");a&&a.remove()}}}catch(t){return console.error("EmbedChat: Failed to initialize",t),null}},md={initialize:gd},vd={initialize:qg};if(typeof window!="undefined"){window.WebChat=md,window.EmbedChat=vd;const e=()=>{if(!pd){let o=document.getElementById("webchat-notchatbot");o||(o=document.createElement("div"),o.id="webchat-notchatbot",document.body.appendChild(o)),gd()}const r=new CustomEvent("WebChatReady");document.dispatchEvent(r)},t=()=>{const r=new CustomEvent("EmbedChatReady");document.dispatchEvent(r)},n=()=>{e(),t()};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",n):setTimeout(n,0)}Ce.EmbedChatAPI=vd,Ce.WebChat=md,Object.defineProperty(Ce,Symbol.toStringTag,{value:"Module"})});