UNPKG

@larva.io/webcomponents

Version:

Fentrica SmartUnits WebComponents package

4 lines 268 kB
/*! * (C) Fentrica http://fentrica.com - Seee LICENSE.md */ import{r as t,c as e,h as s,g as i}from"./p-C4h1muVj.js";import{C as n,D as r}from"./p-Dc5Vc_1A.js";import"./p-C56buD75.js";import"./p-BhmlBuJX.js";function o(){return t=>{if(!t.audio&&!t.video){return Promise.resolve(new MediaStream)}if(navigator.mediaDevices===undefined){return Promise.reject(new Error("Media devices not available in insecure contexts."))}return navigator.mediaDevices.getUserMedia.call(navigator.mediaDevices,t)}}function h(){const t={bundlePolicy:"balanced",certificates:undefined,iceCandidatePoolSize:0,iceServers:[{urls:"stun:stun.l.google.com:19302"}],iceTransportPolicy:"all",rtcpMuxPolicy:"require"};return t}class a{constructor(t,e,s){t.debug("SessionDescriptionHandler.constructor");this.logger=t;this.mediaStreamFactory=e;this.sessionDescriptionHandlerConfiguration=s;this._localMediaStream=new MediaStream;this._remoteMediaStream=new MediaStream;this._peerConnection=new RTCPeerConnection(s===null||s===void 0?void 0:s.peerConnectionConfiguration);this.initPeerConnectionEventHandlers()}get localMediaStream(){return this._localMediaStream}get remoteMediaStream(){return this._remoteMediaStream}get dataChannel(){return this._dataChannel}get peerConnection(){return this._peerConnection}get peerConnectionDelegate(){return this._peerConnectionDelegate}set peerConnectionDelegate(t){this._peerConnectionDelegate=t}static dispatchAddTrackEvent(t,e){t.dispatchEvent(new MediaStreamTrackEvent("addtrack",{track:e}))}static dispatchRemoveTrackEvent(t,e){t.dispatchEvent(new MediaStreamTrackEvent("removetrack",{track:e}))}close(){this.logger.debug("SessionDescriptionHandler.close");if(this._peerConnection===undefined){return}this._peerConnection.getReceivers().forEach((t=>{t.track&&t.track.stop()}));this._peerConnection.getSenders().forEach((t=>{t.track&&t.track.stop()}));if(this._dataChannel){this._dataChannel.close()}this._peerConnection.close();this._peerConnection=undefined}enableReceiverTracks(t){const e=this.peerConnection;if(!e){throw new Error("Peer connection closed.")}e.getReceivers().forEach((e=>{if(e.track){e.track.enabled=t}}))}enableSenderTracks(t){const e=this.peerConnection;if(!e){throw new Error("Peer connection closed.")}e.getSenders().forEach((e=>{if(e.track){e.track.enabled=t}}))}getDescription(t,e){var s,i;this.logger.debug("SessionDescriptionHandler.getDescription");if(this._peerConnection===undefined){return Promise.reject(new Error("Peer connection closed."))}this.onDataChannel=t===null||t===void 0?void 0:t.onDataChannel;const n=(s=t===null||t===void 0?void 0:t.offerOptions)===null||s===void 0?void 0:s.iceRestart;const r=(t===null||t===void 0?void 0:t.iceGatheringTimeout)===undefined?(i=this.sessionDescriptionHandlerConfiguration)===null||i===void 0?void 0:i.iceGatheringTimeout:t===null||t===void 0?void 0:t.iceGatheringTimeout;return this.getLocalMediaStream(t).then((()=>this.updateDirection(t))).then((()=>this.createDataChannel(t))).then((()=>this.createLocalOfferOrAnswer(t))).then((t=>this.applyModifiers(t,e))).then((t=>this.setLocalSessionDescription(t))).then((()=>this.waitForIceGatheringComplete(n,r))).then((()=>this.getLocalSessionDescription())).then((t=>({body:t.sdp,contentType:"application/sdp"}))).catch((t=>{this.logger.error("SessionDescriptionHandler.getDescription failed - "+t);throw t}))}hasDescription(t){this.logger.debug("SessionDescriptionHandler.hasDescription");return t==="application/sdp"}iceGatheringComplete(){this.logger.debug("SessionDescriptionHandler.iceGatheringComplete");if(this.iceGatheringCompleteTimeoutId!==undefined){this.logger.debug("SessionDescriptionHandler.iceGatheringComplete - clearing timeout");clearTimeout(this.iceGatheringCompleteTimeoutId);this.iceGatheringCompleteTimeoutId=undefined}if(this.iceGatheringCompletePromise!==undefined){this.logger.debug("SessionDescriptionHandler.iceGatheringComplete - resolving promise");this.iceGatheringCompleteResolve&&this.iceGatheringCompleteResolve();this.iceGatheringCompletePromise=undefined;this.iceGatheringCompleteResolve=undefined;this.iceGatheringCompleteReject=undefined}}sendDtmf(t,e){this.logger.debug("SessionDescriptionHandler.sendDtmf");if(this._peerConnection===undefined){this.logger.error("SessionDescriptionHandler.sendDtmf failed - peer connection closed");return false}const s=this._peerConnection.getSenders();if(s.length===0){this.logger.error("SessionDescriptionHandler.sendDtmf failed - no senders");return false}const i=s[0].dtmf;if(!i){this.logger.error("SessionDescriptionHandler.sendDtmf failed - no DTMF sender");return false}const n=e===null||e===void 0?void 0:e.duration;const r=e===null||e===void 0?void 0:e.interToneGap;try{i.insertDTMF(t,n,r)}catch(t){this.logger.error(t.toString());return false}this.logger.log("SessionDescriptionHandler.sendDtmf sent via RTP: "+t.toString());return true}setDescription(t,e,s){this.logger.debug("SessionDescriptionHandler.setDescription");if(this._peerConnection===undefined){return Promise.reject(new Error("Peer connection closed."))}this.onDataChannel=e===null||e===void 0?void 0:e.onDataChannel;const i=this._peerConnection.signalingState==="have-local-offer"?"answer":"offer";return this.getLocalMediaStream(e).then((()=>this.applyModifiers({sdp:t,type:i},s))).then((t=>this.setRemoteSessionDescription(t))).catch((t=>{this.logger.error("SessionDescriptionHandler.setDescription failed - "+t);throw t}))}applyModifiers(t,e){this.logger.debug("SessionDescriptionHandler.applyModifiers");if(!e||e.length===0){return Promise.resolve(t)}return e.reduce(((t,e)=>t.then(e)),Promise.resolve(t)).then((t=>{this.logger.debug("SessionDescriptionHandler.applyModifiers - modified sdp");if(!t.sdp||!t.type){throw new Error("Invalid SDP.")}return{sdp:t.sdp,type:t.type}}))}createDataChannel(t){if(this._peerConnection===undefined){return Promise.reject(new Error("Peer connection closed."))}if((t===null||t===void 0?void 0:t.dataChannel)!==true){return Promise.resolve()}if(this._dataChannel){return Promise.resolve()}switch(this._peerConnection.signalingState){case"stable":this.logger.debug("SessionDescriptionHandler.createDataChannel - creating data channel");try{this._dataChannel=this._peerConnection.createDataChannel((t===null||t===void 0?void 0:t.dataChannelLabel)||"",t===null||t===void 0?void 0:t.dataChannelOptions);if(this.onDataChannel){this.onDataChannel(this._dataChannel)}return Promise.resolve()}catch(t){return Promise.reject(t)}case"have-remote-offer":return Promise.resolve();case"have-local-offer":case"have-local-pranswer":case"have-remote-pranswer":case"closed":default:return Promise.reject(new Error("Invalid signaling state "+this._peerConnection.signalingState))}}createLocalOfferOrAnswer(t){if(this._peerConnection===undefined){return Promise.reject(new Error("Peer connection closed."))}switch(this._peerConnection.signalingState){case"stable":this.logger.debug("SessionDescriptionHandler.createLocalOfferOrAnswer - creating SDP offer");return this._peerConnection.createOffer(t===null||t===void 0?void 0:t.offerOptions);case"have-remote-offer":this.logger.debug("SessionDescriptionHandler.createLocalOfferOrAnswer - creating SDP answer");return this._peerConnection.createAnswer(t===null||t===void 0?void 0:t.answerOptions);case"have-local-offer":case"have-local-pranswer":case"have-remote-pranswer":case"closed":default:return Promise.reject(new Error("Invalid signaling state "+this._peerConnection.signalingState))}}getLocalMediaStream(t){this.logger.debug("SessionDescriptionHandler.getLocalMediaStream");if(this._peerConnection===undefined){return Promise.reject(new Error("Peer connection closed."))}let e=Object.assign({},t===null||t===void 0?void 0:t.constraints);if(this.localMediaStreamConstraints){e.audio=e.audio||this.localMediaStreamConstraints.audio;e.video=e.video||this.localMediaStreamConstraints.video;if(JSON.stringify(this.localMediaStreamConstraints.audio)===JSON.stringify(e.audio)&&JSON.stringify(this.localMediaStreamConstraints.video)===JSON.stringify(e.video)){return Promise.resolve()}}else{if(e.audio===undefined&&e.video===undefined){e={audio:true}}}this.localMediaStreamConstraints=e;return this.mediaStreamFactory(e,this,t).then((t=>this.setLocalMediaStream(t)))}setLocalMediaStream(t){this.logger.debug("SessionDescriptionHandler.setLocalMediaStream");if(!this._peerConnection){throw new Error("Peer connection undefined.")}const e=this._peerConnection;const s=this._localMediaStream;const i=[];const n=t=>{const n=t.kind;if(n!=="audio"&&n!=="video"){throw new Error(`Unknown new track kind ${n}.`)}const r=e.getSenders().find((t=>t.track&&t.track.kind===n));if(r){i.push(new Promise((t=>{this.logger.debug(`SessionDescriptionHandler.setLocalMediaStream - replacing sender ${n} track`);t()})).then((()=>r.replaceTrack(t).then((()=>{const e=s.getTracks().find((t=>t.kind===n));if(e){e.stop();s.removeTrack(e);a.dispatchRemoveTrackEvent(s,e)}s.addTrack(t);a.dispatchAddTrackEvent(s,t)})).catch((t=>{this.logger.error(`SessionDescriptionHandler.setLocalMediaStream - failed to replace sender ${n} track`);throw t})))))}else{i.push(new Promise((t=>{this.logger.debug(`SessionDescriptionHandler.setLocalMediaStream - adding sender ${n} track`);t()})).then((()=>{try{e.addTrack(t,s)}catch(t){this.logger.error(`SessionDescriptionHandler.setLocalMediaStream - failed to add sender ${n} track`);throw t}s.addTrack(t);a.dispatchAddTrackEvent(s,t)})))}};const r=t.getAudioTracks();if(r.length){n(r[0])}const o=t.getVideoTracks();if(o.length){n(o[0])}return i.reduce(((t,e)=>t.then((()=>e))),Promise.resolve())}getLocalSessionDescription(){this.logger.debug("SessionDescriptionHandler.getLocalSessionDescription");if(this._peerConnection===undefined){return Promise.reject(new Error("Peer connection closed."))}const t=this._peerConnection.localDescription;if(!t){return Promise.reject(new Error("Failed to get local session description"))}return Promise.resolve(t)}setLocalSessionDescription(t){this.logger.debug("SessionDescriptionHandler.setLocalSessionDescription");if(this._peerConnection===undefined){return Promise.reject(new Error("Peer connection closed."))}return this._peerConnection.setLocalDescription(t)}setRemoteSessionDescription(t){this.logger.debug("SessionDescriptionHandler.setRemoteSessionDescription");if(this._peerConnection===undefined){return Promise.reject(new Error("Peer connection closed."))}const e=t.sdp;let s;switch(this._peerConnection.signalingState){case"stable":s="offer";break;case"have-local-offer":s="answer";break;case"have-local-pranswer":case"have-remote-offer":case"have-remote-pranswer":case"closed":default:return Promise.reject(new Error("Invalid signaling state "+this._peerConnection.signalingState))}if(!e){this.logger.error("SessionDescriptionHandler.setRemoteSessionDescription failed - cannot set null sdp");return Promise.reject(new Error("SDP is undefined"))}return this._peerConnection.setRemoteDescription({sdp:e,type:s})}setRemoteTrack(t){this.logger.debug("SessionDescriptionHandler.setRemoteTrack");const e=this._remoteMediaStream;if(e.getTrackById(t.id)){this.logger.debug(`SessionDescriptionHandler.setRemoteTrack - have remote ${t.kind} track`)}else if(t.kind==="audio"){this.logger.debug(`SessionDescriptionHandler.setRemoteTrack - adding remote ${t.kind} track`);e.getAudioTracks().forEach((t=>{t.stop();e.removeTrack(t);a.dispatchRemoveTrackEvent(e,t)}));e.addTrack(t);a.dispatchAddTrackEvent(e,t)}else if(t.kind==="video"){this.logger.debug(`SessionDescriptionHandler.setRemoteTrack - adding remote ${t.kind} track`);e.getVideoTracks().forEach((t=>{t.stop();e.removeTrack(t);a.dispatchRemoveTrackEvent(e,t)}));e.addTrack(t);a.dispatchAddTrackEvent(e,t)}}updateDirection(t){if(this._peerConnection===undefined){return Promise.reject(new Error("Peer connection closed."))}switch(this._peerConnection.signalingState){case"stable":this.logger.debug("SessionDescriptionHandler.updateDirection - setting offer direction");{const e=e=>{switch(e){case"inactive":return(t===null||t===void 0?void 0:t.hold)?"inactive":"recvonly";case"recvonly":return(t===null||t===void 0?void 0:t.hold)?"inactive":"recvonly";case"sendonly":return(t===null||t===void 0?void 0:t.hold)?"sendonly":"sendrecv";case"sendrecv":return(t===null||t===void 0?void 0:t.hold)?"sendonly":"sendrecv";case"stopped":return"stopped";default:throw new Error("Should never happen")}};this._peerConnection.getTransceivers().forEach((t=>{if(t.direction){const s=e(t.direction);if(t.direction!==s){t.direction=s}}}))}break;case"have-remote-offer":this.logger.debug("SessionDescriptionHandler.updateDirection - setting answer direction");{const e=(()=>{const t=this._peerConnection.remoteDescription;if(!t){throw new Error("Failed to read remote offer")}const e=/a=sendrecv\r\n|a=sendonly\r\n|a=recvonly\r\n|a=inactive\r\n/.exec(t.sdp);if(e){switch(e[0]){case"a=inactive\r\n":return"inactive";case"a=recvonly\r\n":return"recvonly";case"a=sendonly\r\n":return"sendonly";case"a=sendrecv\r\n":return"sendrecv";default:throw new Error("Should never happen")}}return"sendrecv"})();const s=(()=>{switch(e){case"inactive":return"inactive";case"recvonly":return"sendonly";case"sendonly":return(t===null||t===void 0?void 0:t.hold)?"inactive":"recvonly";case"sendrecv":return(t===null||t===void 0?void 0:t.hold)?"sendonly":"sendrecv";default:throw new Error("Should never happen")}})();this._peerConnection.getTransceivers().forEach((t=>{if(t.direction){if(t.direction!=="stopped"&&t.direction!==s){t.direction=s}}}))}break;case"have-local-offer":case"have-local-pranswer":case"have-remote-pranswer":case"closed":default:return Promise.reject(new Error("Invalid signaling state "+this._peerConnection.signalingState))}return Promise.resolve()}waitForIceGatheringComplete(t=false,e=0){this.logger.debug("SessionDescriptionHandler.waitForIceGatheringToComplete");if(this._peerConnection===undefined){return Promise.reject("Peer connection closed.")}if(!t&&this._peerConnection.iceGatheringState==="complete"){this.logger.debug("SessionDescriptionHandler.waitForIceGatheringToComplete - already complete");return Promise.resolve()}if(this.iceGatheringCompletePromise!==undefined){this.logger.debug("SessionDescriptionHandler.waitForIceGatheringToComplete - rejecting prior waiting promise");this.iceGatheringCompleteReject&&this.iceGatheringCompleteReject(new Error("Promise superseded."));this.iceGatheringCompletePromise=undefined;this.iceGatheringCompleteResolve=undefined;this.iceGatheringCompleteReject=undefined}this.iceGatheringCompletePromise=new Promise(((t,s)=>{this.iceGatheringCompleteResolve=t;this.iceGatheringCompleteReject=s;if(e>0){this.logger.debug("SessionDescriptionHandler.waitForIceGatheringToComplete - timeout in "+e);this.iceGatheringCompleteTimeoutId=setTimeout((()=>{this.logger.debug("SessionDescriptionHandler.waitForIceGatheringToComplete - timeout");this.iceGatheringComplete()}),e)}}));return this.iceGatheringCompletePromise}initPeerConnectionEventHandlers(){this.logger.debug("SessionDescriptionHandler.initPeerConnectionEventHandlers");if(!this._peerConnection)throw new Error("Peer connection undefined.");const t=this._peerConnection;t.onconnectionstatechange=e=>{var s;const i=t.connectionState;this.logger.debug(`SessionDescriptionHandler.onconnectionstatechange ${i}`);if((s=this._peerConnectionDelegate)===null||s===void 0?void 0:s.onconnectionstatechange){this._peerConnectionDelegate.onconnectionstatechange(e)}};t.ondatachannel=t=>{var e;this.logger.debug(`SessionDescriptionHandler.ondatachannel`);this._dataChannel=t.channel;if(this.onDataChannel){this.onDataChannel(this._dataChannel)}if((e=this._peerConnectionDelegate)===null||e===void 0?void 0:e.ondatachannel){this._peerConnectionDelegate.ondatachannel(t)}};t.onicecandidate=t=>{var e;this.logger.debug(`SessionDescriptionHandler.onicecandidate`);if((e=this._peerConnectionDelegate)===null||e===void 0?void 0:e.onicecandidate){this._peerConnectionDelegate.onicecandidate(t)}};t.onicecandidateerror=t=>{var e;this.logger.debug(`SessionDescriptionHandler.onicecandidateerror`);if((e=this._peerConnectionDelegate)===null||e===void 0?void 0:e.onicecandidateerror){this._peerConnectionDelegate.onicecandidateerror(t)}};t.oniceconnectionstatechange=e=>{var s;const i=t.iceConnectionState;this.logger.debug(`SessionDescriptionHandler.oniceconnectionstatechange ${i}`);if((s=this._peerConnectionDelegate)===null||s===void 0?void 0:s.oniceconnectionstatechange){this._peerConnectionDelegate.oniceconnectionstatechange(e)}};t.onicegatheringstatechange=e=>{var s;const i=t.iceGatheringState;this.logger.debug(`SessionDescriptionHandler.onicegatheringstatechange ${i}`);if(i==="complete"){this.iceGatheringComplete()}if((s=this._peerConnectionDelegate)===null||s===void 0?void 0:s.onicegatheringstatechange){this._peerConnectionDelegate.onicegatheringstatechange(e)}};t.onnegotiationneeded=t=>{var e;this.logger.debug(`SessionDescriptionHandler.onnegotiationneeded`);if((e=this._peerConnectionDelegate)===null||e===void 0?void 0:e.onnegotiationneeded){this._peerConnectionDelegate.onnegotiationneeded(t)}};t.onsignalingstatechange=e=>{var s;const i=t.signalingState;this.logger.debug(`SessionDescriptionHandler.onsignalingstatechange ${i}`);if((s=this._peerConnectionDelegate)===null||s===void 0?void 0:s.onsignalingstatechange){this._peerConnectionDelegate.onsignalingstatechange(e)}};t.ontrack=t=>{var e;const s=t.track.kind;const i=t.track.enabled?"enabled":"disabled";this.logger.debug(`SessionDescriptionHandler.ontrack ${s} ${i}`);this.setRemoteTrack(t.track);if((e=this._peerConnectionDelegate)===null||e===void 0?void 0:e.ontrack){this._peerConnectionDelegate.ontrack(t)}}}}function c(t){return(e,s)=>{if(t===undefined){t=o()}const i=(s===null||s===void 0?void 0:s.iceGatheringTimeout)!==undefined?s===null||s===void 0?void 0:s.iceGatheringTimeout:5e3;const n={iceGatheringTimeout:i,peerConnectionConfiguration:Object.assign(Object.assign({},h()),s===null||s===void 0?void 0:s.peerConnectionConfiguration)};const r=e.userAgent.getLogger("sip.SessionDescriptionHandler");return new a(r,t,n)}}function d(){return(t,e)=>({session:e,held:false,muted:false})}class u{constructor(t){this.parameters={};for(const e in t){if(t.hasOwnProperty(e)){this.setParam(e,t[e])}}}setParam(t,e){if(t){this.parameters[t.toLowerCase()]=typeof e==="undefined"||e===null?null:e.toString()}}getParam(t){if(t){return this.parameters[t.toLowerCase()]}}hasParam(t){return!!(t&&this.parameters[t.toLowerCase()]!==undefined)}deleteParam(t){t=t.toLowerCase();if(this.hasParam(t)){const e=this.parameters[t];delete this.parameters[t];return e}}clearParams(){this.parameters={}}}class f extends u{constructor(t,e,s){super(s);this.uri=t;this._displayName=e}get friendlyName(){return this.displayName||this.uri.aor}get displayName(){return this._displayName}set displayName(t){this._displayName=t}clone(){return new f(this.uri.clone(),this._displayName,JSON.parse(JSON.stringify(this.parameters)))}toString(){let t=this.displayName||this.displayName==="0"?'"'+this.displayName+'" ':"";t+="<"+this.uri.toString()+">";for(const e in this.parameters){if(this.parameters.hasOwnProperty(e)){t+=";"+e;if(this.parameters[e]!==null){t+="="+this.parameters[e]}}}return t}}class l extends u{constructor(t="sip",e,s,i,n,r){super(n||{});this.headers={};if(!s){throw new TypeError('missing or invalid "host" parameter')}for(const t in r){if(r.hasOwnProperty(t)){this.setHeader(t,r[t])}}this.raw={scheme:t,user:e,host:s,port:i};this.normal={scheme:t.toLowerCase(),user:e,host:s.toLowerCase(),port:i}}get scheme(){return this.normal.scheme}set scheme(t){this.raw.scheme=t;this.normal.scheme=t.toLowerCase()}get user(){return this.normal.user}set user(t){this.normal.user=this.raw.user=t}get host(){return this.normal.host}set host(t){this.raw.host=t;this.normal.host=t.toLowerCase()}get aor(){return this.normal.user+"@"+this.normal.host}get port(){return this.normal.port}set port(t){this.normal.port=this.raw.port=t===0?t:t}setHeader(t,e){this.headers[this.headerize(t)]=e instanceof Array?e:[e]}getHeader(t){if(t){return this.headers[this.headerize(t)]}}hasHeader(t){return!!t&&!!this.headers.hasOwnProperty(this.headerize(t))}deleteHeader(t){t=this.headerize(t);if(this.headers.hasOwnProperty(t)){const e=this.headers[t];delete this.headers[t];return e}}clearHeaders(){this.headers={}}clone(){return new l(this._raw.scheme,this._raw.user||"",this._raw.host,this._raw.port,JSON.parse(JSON.stringify(this.parameters)),JSON.parse(JSON.stringify(this.headers)))}toRaw(){return this._toString(this._raw)}toString(){return this._toString(this._normal)}get _normal(){return this.normal}get _raw(){return this.raw}_toString(t){let e=t.scheme+":";if(!t.scheme.toLowerCase().match("^sips?$")){e+="//"}if(t.user){e+=this.escapeUser(t.user)+"@"}e+=t.host;if(t.port||t.port===0){e+=":"+t.port}for(const t in this.parameters){if(this.parameters.hasOwnProperty(t)){e+=";"+t;if(this.parameters[t]!==null){e+="="+this.parameters[t]}}}const s=[];for(const t in this.headers){if(this.headers.hasOwnProperty(t)){for(const e in this.headers[t]){if(this.headers[t].hasOwnProperty(e)){s.push(t+"="+this.headers[t][e])}}}}if(s.length>0){e+="?"+s.join("&")}return e}escapeUser(t){let e;try{e=decodeURIComponent(t)}catch(t){throw t}return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%2B/gi,"+").replace(/%3F/gi,"?").replace(/%2F/gi,"/")}headerize(t){const e={"Call-Id":"Call-ID",Cseq:"CSeq","Min-Se":"Min-SE",Rack:"RAck",Rseq:"RSeq","Www-Authenticate":"WWW-Authenticate"};const s=t.toLowerCase().replace(/_/g,"-").split("-");const i=s.length;let n="";for(let t=0;t<i;t++){if(t!==0){n+="-"}n+=s[t].charAt(0).toUpperCase()+s[t].substring(1)}if(e[n]){n=e[n]}return n}}function p(t,e){if(t.scheme!==e.scheme){return false}if(t.user!==e.user||t.host!==e.host||t.port!==e.port){return false}function s(t,e){const s=Object.keys(t.parameters);const i=Object.keys(e.parameters);const n=s.filter((t=>i.includes(t)));if(!n.every((s=>t.parameters[s]===e.parameters[s]))){return false}if(!["user","ttl","method","transport"].every((s=>t.hasParam(s)&&e.hasParam(s)||!t.hasParam(s)&&!e.hasParam(s)))){return false}if(!["maddr"].every((s=>t.hasParam(s)&&e.hasParam(s)||!t.hasParam(s)&&!e.hasParam(s)))){return false}return true}if(!s(t,e)){return false}const i=Object.keys(t.headers);const n=Object.keys(e.headers);if(i.length!==0||n.length!==0){if(i.length!==n.length){return false}const s=i.filter((t=>n.includes(t)));if(s.length!==n.length){return false}if(!s.every((s=>t.headers[s].length&&e.headers[s].length&&t.headers[s][0]===e.headers[s][0]))){return false}}return true}function g(t,e,s){s=s||" ";if(t.length>e){return t}e-=t.length;s+=s.repeat(e);return t+s.slice(0,e)}class w extends Error{constructor(t,e,s,i){super();this.message=t;this.expected=e;this.found=s;this.location=i;this.name="SyntaxError";if(typeof Object.setPrototypeOf==="function"){Object.setPrototypeOf(this,w.prototype)}else{this.__proto__=w.prototype}if(typeof Error.captureStackTrace==="function"){Error.captureStackTrace(this,w)}}static buildMessage(t,e){function s(t){return t.charCodeAt(0).toString(16).toUpperCase()}function i(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(t=>"\\x0"+s(t))).replace(/[\x10-\x1F\x7F-\x9F]/g,(t=>"\\x"+s(t)))}function n(t){return t.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(t=>"\\x0"+s(t))).replace(/[\x10-\x1F\x7F-\x9F]/g,(t=>"\\x"+s(t)))}function r(t){switch(t.type){case"literal":return'"'+i(t.text)+'"';case"class":const e=t.parts.map((t=>Array.isArray(t)?n(t[0])+"-"+n(t[1]):n(t)));return"["+(t.inverted?"^":"")+e+"]";case"any":return"any character";case"end":return"end of input";case"other":return t.description}}function o(t){const e=t.map(r);let s;let i;e.sort();if(e.length>0){for(s=1,i=1;s<e.length;s++){if(e[s-1]!==e[s]){e[i]=e[s];i++}}e.length=i}switch(e.length){case 1:return e[0];case 2:return e[0]+" or "+e[1];default:return e.slice(0,-1).join(", ")+", or "+e[e.length-1]}}function h(t){return t?'"'+i(t)+'"':"end of input"}return"Expected "+o(t)+" but "+h(e)+" found."}format(t){let e="Error: "+this.message;if(this.location){let s=null;let i;for(i=0;i<t.length;i++){if(t[i].source===this.location.source){s=t[i].text.split(/\r\n|\n|\r/g);break}}let n=this.location.start;let r=this.location.source+":"+n.line+":"+n.column;if(s){let t=this.location.end;let i=g("",n.line.toString().length," ");let o=s[n.line-1];let h=n.line===t.line?t.column:o.length+1;e+="\n --\x3e "+r+"\n"+i+" |\n"+n.line+" | "+o+"\n"+i+" | "+g("",n.column-1," ")+g("",h-n.column,"^")}else{e+="\n at "+r}}return e}}function m(t,e){e=e!==undefined?e:{};const s={};const i=e.grammarSource;const n={Contact:119,Name_Addr_Header:156,Record_Route:176,Request_Response:81,SIP_URI:45,Subscription_State:186,Supported:191,Require:182,Via:194,absoluteURI:84,Call_ID:118,Content_Disposition:130,Content_Length:135,Content_Type:136,CSeq:146,displayName:122,Event:149,From:151,host:52,Max_Forwards:154,Min_SE:213,Proxy_Authenticate:157,quoted_string:40,Refer_To:178,Replaces:179,Session_Expires:210,stun_URI:217,To:192,turn_URI:223,uuid:226,WWW_Authenticate:209,challenge:158,sipfrag:230,Referred_By:231};let r=119;const o=["\r\n",b("\r\n",false),/^[0-9]/,E([["0","9"]],false,false),/^[a-zA-Z]/,E([["a","z"],["A","Z"]],false,false),/^[0-9a-fA-F]/,E([["0","9"],["a","f"],["A","F"]],false,false),/^[\0-\xFF]/,E([["\0","ÿ"]],false,false),/^["]/,E(['"'],false,false)," ",b(" ",false),"\t",b("\t",false),/^[a-zA-Z0-9]/,E([["a","z"],["A","Z"],["0","9"]],false,false),";",b(";",false),"/",b("/",false),"?",b("?",false),":",b(":",false),"@",b("@",false),"&",b("&",false),"=",b("=",false),"+",b("+",false),"$",b("$",false),",",b(",",false),"-",b("-",false),"_",b("_",false),".",b(".",false),"!",b("!",false),"~",b("~",false),"*",b("*",false),"'",b("'",false),"(",b("(",false),")",b(")",false),"%",b("%",false),function(){return" "},function(){return":"},/^[!-~]/,E([["!","~"]],false,false),/^[\x80-\uFFFF]/,E([["€","￿"]],false,false),/^[\x80-\xBF]/,E([["€","¿"]],false,false),/^[a-f]/,E([["a","f"]],false,false),"`",b("`",false),"<",b("<",false),">",b(">",false),"\\",b("\\",false),"[",b("[",false),"]",b("]",false),"{",b("{",false),"}",b("}",false),function(){return"*"},function(){return"/"},function(){return"="},function(){return"("},function(){return")"},function(){return">"},function(){return"<"},function(){return","},function(){return";"},function(){return":"},function(){return'"'},/^[!-']/,E([["!","'"]],false,false),/^[*-[]/,E([["*","["]],false,false),/^[\]-~]/,E([["]","~"]],false,false),function(t){return t},/^[#-[]/,E([["#","["]],false,false),/^[\0-\t]/,E([["\0","\t"]],false,false),/^[\v-\f]/,E([["\v","\f"]],false,false),/^[\x0E-\x7F]/,E([["",""]],false,false),function(){e=e||{data:{}};e.data.uri=new l(e.data.scheme,e.data.user,e.data.host,e.data.port);delete e.data.scheme;delete e.data.user;delete e.data.host;delete e.data.host_type;delete e.data.port},function(){e=e||{data:{}};e.data.uri=new l(e.data.scheme,e.data.user,e.data.host,e.data.port,e.data.uri_params,e.data.uri_headers);delete e.data.scheme;delete e.data.user;delete e.data.host;delete e.data.host_type;delete e.data.port;delete e.data.uri_params;if(e.startRule==="SIP_URI"){e.data=e.data.uri}},"sips",b("sips",true),"sip",b("sip",true),function(t){e=e||{data:{}};e.data.scheme=t},function(){e=e||{data:{}};e.data.user=decodeURIComponent($().slice(0,-1))},function(){e=e||{data:{}};e.data.password=$()},function(){e=e||{data:{}};e.data.host=$();return e.data.host},function(){e=e||{data:{}};e.data.host_type="domain";return $()},/^[a-zA-Z0-9_\-]/,E([["a","z"],["A","Z"],["0","9"],"_","-"],false,false),/^[a-zA-Z0-9\-]/,E([["a","z"],["A","Z"],["0","9"],"-"],false,false),function(){e=e||{data:{}};e.data.host_type="IPv6";return $()},"::",b("::",false),function(){e=e||{data:{}};e.data.host_type="IPv6";return $()},function(){e=e||{data:{}};e.data.host_type="IPv4";return $()},"25",b("25",false),/^[0-5]/,E([["0","5"]],false,false),"2",b("2",false),/^[0-4]/,E([["0","4"]],false,false),"1",b("1",false),/^[1-9]/,E([["1","9"]],false,false),function(t){e=e||{data:{}};t=parseInt(t.join(""));e.data.port=t;return t},"transport=",b("transport=",true),"udp",b("udp",true),"tcp",b("tcp",true),"sctp",b("sctp",true),"tls",b("tls",true),function(t){e=e||{data:{}};if(!e.data.uri_params)e.data.uri_params={};e.data.uri_params["transport"]=t.toLowerCase()},"user=",b("user=",true),"phone",b("phone",true),"ip",b("ip",true),function(t){e=e||{data:{}};if(!e.data.uri_params)e.data.uri_params={};e.data.uri_params["user"]=t.toLowerCase()},"method=",b("method=",true),function(t){e=e||{data:{}};if(!e.data.uri_params)e.data.uri_params={};e.data.uri_params["method"]=t},"ttl=",b("ttl=",true),function(t){e=e||{data:{}};if(!e.data.params)e.data.params={};e.data.params["ttl"]=t},"maddr=",b("maddr=",true),function(t){e=e||{data:{}};if(!e.data.uri_params)e.data.uri_params={};e.data.uri_params["maddr"]=t},"lr",b("lr",true),function(){e=e||{data:{}};if(!e.data.uri_params)e.data.uri_params={};e.data.uri_params["lr"]=undefined},function(t,s){e=e||{data:{}};if(!e.data.uri_params)e.data.uri_params={};if(s===null){s=undefined}else{s=s[1]}e.data.uri_params[t.toLowerCase()]=s},function(t,s){t=t.join("").toLowerCase();s=s.join("");e=e||{data:{}};if(!e.data.uri_headers)e.data.uri_headers={};if(!e.data.uri_headers[t]){e.data.uri_headers[t]=[s]}else{e.data.uri_headers[t].push(s)}},function(){e=e||{data:{}};if(e.startRule==="Refer_To"){e.data.uri=new l(e.data.scheme,e.data.user,e.data.host,e.data.port,e.data.uri_params,e.data.uri_headers);delete e.data.scheme;delete e.data.user;delete e.data.host;delete e.data.host_type;delete e.data.port;delete e.data.uri_params}},"//",b("//",false),function(){e=e||{data:{}};e.data.scheme=$()},b("SIP",true),function(){e=e||{data:{}};e.data.sip_version=$()},"INVITE",b("INVITE",false),"ACK",b("ACK",false),"VXACH",b("VXACH",false),"OPTIONS",b("OPTIONS",false),"BYE",b("BYE",false),"CANCEL",b("CANCEL",false),"REGISTER",b("REGISTER",false),"SUBSCRIBE",b("SUBSCRIBE",false),"NOTIFY",b("NOTIFY",false),"REFER",b("REFER",false),"PUBLISH",b("PUBLISH",false),function(){e=e||{data:{}};e.data.method=$();return e.data.method},function(t){e=e||{data:{}};e.data.status_code=parseInt(t.join(""))},function(){e=e||{data:{}};e.data.reason_phrase=$()},function(){e=e||{data:{}};e.data=$()},function(){var t,s;e=e||{data:{}};s=e.data.multi_header.length;for(t=0;t<s;t++){if(e.data.multi_header[t].parsed===null){e.data=null;break}}if(e.data!==null){e.data=e.data.multi_header}else{e.data=-1}},function(){var t;e=e||{data:{}};if(!e.data.multi_header)e.data.multi_header=[];try{t=new f(e.data.uri,e.data.displayName,e.data.params);delete e.data.uri;delete e.data.displayName;delete e.data.params}catch(e){t=null}e.data.multi_header.push({position:a,offset:v().start.offset,parsed:t})},function(t){t=$().trim();if(t[0]==='"'){t=t.substring(1,t.length-1)}e=e||{data:{}};e.data.displayName=t},"q",b("q",true),function(t){e=e||{data:{}};if(!e.data.params)e.data.params={};e.data.params["q"]=t},"expires",b("expires",true),function(t){e=e||{data:{}};if(!e.data.params)e.data.params={};e.data.params["expires"]=t},function(t){return parseInt(t.join(""))},"0",b("0",false),function(){return parseFloat($())},function(t,s){e=e||{data:{}};if(!e.data.params)e.data.params={};if(s===null){s=undefined}else{s=s[1]}e.data.params[t.toLowerCase()]=s},"render",b("render",true),"session",b("session",true),"icon",b("icon",true),"alert",b("alert",true),function(){e=e||{data:{}};if(e.startRule==="Content_Disposition"){e.data.type=$().toLowerCase()}},"handling",b("handling",true),"optional",b("optional",true),"required",b("required",true),function(t){e=e||{data:{}};e.data=parseInt(t.join(""))},function(){e=e||{data:{}};e.data=$()},"text",b("text",true),"image",b("image",true),"audio",b("audio",true),"video",b("video",true),"application",b("application",true),"message",b("message",true),"multipart",b("multipart",true),"x-",b("x-",true),function(t){e=e||{data:{}};e.data.value=parseInt(t.join(""))},function(t){e=e||{data:{}};e.data=t},function(t){e=e||{data:{}};e.data.event=t.toLowerCase()},function(){e=e||{data:{}};var t=e.data.tag;e.data=new f(e.data.uri,e.data.displayName,e.data.params);if(t){e.data.setParam("tag",t)}},"tag",b("tag",true),function(t){e=e||{data:{}};e.data.tag=t},function(t){e=e||{data:{}};e.data=parseInt(t.join(""))},function(t){e=e||{data:{}};e.data=t},function(){e=e||{data:{}};e.data=new f(e.data.uri,e.data.displayName,e.data.params)},"digest",b("Digest",true),"realm",b("realm",true),function(t){e=e||{data:{}};e.data.realm=t},"domain",b("domain",true),"nonce",b("nonce",true),function(t){e=e||{data:{}};e.data.nonce=t},"opaque",b("opaque",true),function(t){e=e||{data:{}};e.data.opaque=t},"stale",b("stale",true),"true",b("true",true),function(){e=e||{data:{}};e.data.stale=true},"false",b("false",true),function(){e=e||{data:{}};e.data.stale=false},"algorithm",b("algorithm",true),"md5",b("MD5",true),"md5-sess",b("MD5-sess",true),function(t){e=e||{data:{}};e.data.algorithm=t.toUpperCase()},"qop",b("qop",true),"auth-int",b("auth-int",true),"auth",b("auth",true),function(t){e=e||{data:{}};e.data.qop||(e.data.qop=[]);e.data.qop.push(t.toLowerCase())},function(t){e=e||{data:{}};e.data.value=parseInt(t.join(""))},function(){var t,s;e=e||{data:{}};s=e.data.multi_header.length;for(t=0;t<s;t++){if(e.data.multi_header[t].parsed===null){e.data=null;break}}if(e.data!==null){e.data=e.data.multi_header}else{e.data=-1}},function(){var t;e=e||{data:{}};if(!e.data.multi_header)e.data.multi_header=[];try{t=new f(e.data.uri,e.data.displayName,e.data.params);delete e.data.uri;delete e.data.displayName;delete e.data.params}catch(e){t=null}e.data.multi_header.push({position:a,offset:v().start.offset,parsed:t})},function(){e=e||{data:{}};e.data=new f(e.data.uri,e.data.displayName,e.data.params)},function(){e=e||{data:{}};if(!(e.data.replaces_from_tag&&e.data.replaces_to_tag)){e.data=-1}},function(){e=e||{data:{}};e.data={call_id:e.data}},"from-tag",b("from-tag",true),function(t){e=e||{data:{}};e.data.replaces_from_tag=t},"to-tag",b("to-tag",true),function(t){e=e||{data:{}};e.data.replaces_to_tag=t},"early-only",b("early-only",true),function(){e=e||{data:{}};e.data.early_only=true},function(t,e){return e},function(t,e){return P(t,e)},function(t){e=e||{data:{}};if(e.startRule==="Require"){e.data=t||[]}},function(t){e=e||{data:{}};e.data.value=parseInt(t.join(""))},"active",b("active",true),"pending",b("pending",true),"terminated",b("terminated",true),function(){e=e||{data:{}};e.data.state=$()},"reason",b("reason",true),function(t){e=e||{data:{}};if(typeof t!=="undefined")e.data.reason=t},function(t){e=e||{data:{}};if(typeof t!=="undefined")e.data.expires=t},"retry_after",b("retry_after",true),function(t){e=e||{data:{}};if(typeof t!=="undefined")e.data.retry_after=t},"deactivated",b("deactivated",true),"probation",b("probation",true),"rejected",b("rejected",true),"timeout",b("timeout",true),"giveup",b("giveup",true),"noresource",b("noresource",true),"invariant",b("invariant",true),function(t){e=e||{data:{}};if(e.startRule==="Supported"){e.data=t||[]}},function(){e=e||{data:{}};var t=e.data.tag;e.data=new f(e.data.uri,e.data.displayName,e.data.params);if(t){e.data.setParam("tag",t)}},"ttl",b("ttl",true),function(t){e=e||{data:{}};e.data.ttl=t},"maddr",b("maddr",true),function(t){e=e||{data:{}};e.data.maddr=t},"received",b("received",true),function(t){e=e||{data:{}};e.data.received=t},"branch",b("branch",true),function(t){e=e||{data:{}};e.data.branch=t},"rport",b("rport",true),function(t){e=e||{data:{}};if(typeof t!=="undefined")e.data.rport=t.join("")},function(t){e=e||{data:{}};e.data.protocol=t},b("UDP",true),b("TCP",true),b("TLS",true),b("SCTP",true),function(t){e=e||{data:{}};e.data.transport=t},function(){e=e||{data:{}};e.data.host=$()},function(t){e=e||{data:{}};e.data.port=parseInt(t.join(""))},function(t){return parseInt(t.join(""))},function(t){e=e||{data:{}};if(e.startRule==="Session_Expires"){e.data.deltaSeconds=t}},"refresher",b("refresher",false),"uas",b("uas",false),"uac",b("uac",false),function(t){e=e||{data:{}};if(e.startRule==="Session_Expires"){e.data.refresher=t}},function(t){e=e||{data:{}};if(e.startRule==="Min_SE"){e.data=t}},"stuns",b("stuns",true),"stun",b("stun",true),function(t){e=e||{data:{}};e.data.scheme=t},function(t){e=e||{data:{}};e.data.host=t},"?transport=",b("?transport=",false),"turns",b("turns",true),"turn",b("turn",true),function(t){e=e||{data:{}};e.data.transport=t},function(){e=e||{data:{}};e.data=$()},"Referred-By",b("Referred-By",false),"b",b("b",false),"cid",b("cid",false)];const h=[k('2 ""6 7!'),k('4"""5!7#'),k('4$""5!7%'),k('4&""5!7\''),k(";'.# &;("),k('4(""5!7)'),k('4*""5!7+'),k('2,""6,7-'),k('2.""6.7/'),k('40""5!71'),k('22""6273.‰ &24""6475.} &26""6677.q &28""6879.e &2:""6:7;.Y &2<""6<7=.M &2>""6>7?.A &2@""6@7A.5 &2B""6B7C.) &2D""6D7E'),k(";).# &;,"),k('2F""6F7G.} &2H""6H7I.q &2J""6J7K.e &2L""6L7M.Y &2N""6N7O.M &2P""6P7Q.A &2R""6R7S.5 &2T""6T7U.) &2V""6V7W'),k('%%2X""6X7Y/5#;#/,$;#/#$+#)(#\'#("\'#&\'#/"!&,)'),k('%%$;$0#*;$&/,#; /#$+")("\'#&\'#." &"/=#$;$/&#0#*;$&&&#/\'$8":Z" )("\'#&\'#'),k(';.." &"'),k("%$;'.# &;(0)*;'.# &;(&/?#28\"\"6879/0$;//'$8#:[# )(#'#(\"'#&'#"),k('%%$;2/&#0#*;2&&&#/g#$%$;.0#*;.&/,#;2/#$+")("\'#&\'#0=*%$;.0#*;.&/,#;2/#$+")("\'#&\'#&/#$+")("\'#&\'#/"!&,)'),k('4\\""5!7].# &;3'),k('4^""5!7_'),k('4`""5!7a'),k(';!.) &4b""5!7c'),k('%$;).• &2F""6F7G.‰ &2J""6J7K.} &2L""6L7M.q &2X""6X7Y.e &2P""6P7Q.Y &2H""6H7I.M &2@""6@7A.A &2d""6d7e.5 &2R""6R7S.) &2N""6N7O/ž#0›*;).• &2F""6F7G.‰ &2J""6J7K.} &2L""6L7M.q &2X""6X7Y.e &2P""6P7Q.Y &2H""6H7I.M &2@""6@7A.A &2d""6d7e.5 &2R""6R7S.) &2N""6N7O&&&#/"!&,)'),k('%$;).‰ &2F""6F7G.} &2L""6L7M.q &2X""6X7Y.e &2P""6P7Q.Y &2H""6H7I.M &2@""6@7A.A &2d""6d7e.5 &2R""6R7S.) &2N""6N7O/’#0*;).‰ &2F""6F7G.} &2L""6L7M.q &2X""6X7Y.e &2P""6P7Q.Y &2H""6H7I.M &2@""6@7A.A &2d""6d7e.5 &2R""6R7S.) &2N""6N7O&&&#/"!&,)'),k('2T""6T7U.ã &2V""6V7W.× &2f""6f7g.Ë &2h""6h7i.¿ &2:""6:7;.³ &2D""6D7E.§ &22""6273.› &28""6879. &2j""6j7k.ƒ &;&.} &24""6475.q &2l""6l7m.e &2n""6n7o.Y &26""6677.M &2>""6>7?.A &2p""6p7q.5 &2r""6r7s.) &;\'.# &;('),k('%$;).ī &2F""6F7G.ğ &2J""6J7K.ē &2L""6L7M.ć &2X""6X7Y.û &2P""6P7Q.ï &2H""6H7I.ã &2@""6@7A.× &2d""6d7e.Ë &2R""6R7S.¿ &2N""6N7O.³ &2T""6T7U.§ &2V""6V7W.› &2f""6f7g. &2h""6h7i.ƒ &28""6879.w &2j""6j7k.k &;&.e &24""6475.Y &2l""6l7m.M &2n""6n7o.A &26""6677.5 &2p""6p7q.) &2r""6r7s/Ĵ#0ı*;).ī &2F""6F7G.ğ &2J""6J7K.ē &2L""6L7M.ć &2X""6X7Y.û &2P""6P7Q.ï &2H""6H7I.ã &2@""6@7A.× &2d""6d7e.Ë &2R""6R7S.¿ &2N""6N7O.³ &2T""6T7U.§ &2V""6V7W.› &2f""6f7g. &2h""6h7i.ƒ &28""6879.w &2j""6j7k.k &;&.e &24""6475.Y &2l""6l7m.M &2n""6n7o.A &26""6677.5 &2p""6p7q.) &2r""6r7s&&&#/"!&,)'),k("%;//?#2P\"\"6P7Q/0$;//'$8#:t# )(#'#(\"'#&'#"),k("%;//?#24\"\"6475/0$;//'$8#:u# )(#'#(\"'#&'#"),k("%;//?#2>\"\"6>7?/0$;//'$8#:v# )(#'#(\"'#&'#"),k("%;//?#2T\"\"6T7U/0$;//'$8#:w# )(#'#(\"'#&'#"),k("%;//?#2V\"\"6V7W/0$;//'$8#:x# )(#'#(\"'#&'#"),k('%2h""6h7i/0#;//\'$8":y" )("\'#&\'#'),k('%;//6#2f""6f7g/\'$8":z" )("\'#&\'#'),k("%;//?#2D\"\"6D7E/0$;//'$8#:{# )(#'#(\"'#&'#"),k("%;//?#22\"\"6273/0$;//'$8#:|# )(#'#(\"'#&'#"),k("%;//?#28\"\"6879/0$;//'$8#:}# )(#'#(\"'#&'#"),k("%;//0#;&/'$8\":~\" )(\"'#&'#"),k("%;&/0#;//'$8\":~\" )(\"'#&'#"),k("%;=/T#$;G.) &;K.# &;F0/*;G.) &;K.# &;F&/,$;>/#$+#)(#'#(\"'#&'#"),k('4""5!7€.A &4""5!7‚.5 &4ƒ""5!7„.) &;3.# &;.'),k("%%;//Q#;&/H$$;J.# &;K0)*;J.# &;K&/,$;&/#$+$)($'#(#'#(\"'#&'#/\"!&,)"),k("%;//]#;&/T$%$;J.# &;K0)*;J.# &;K&/\"!&,)/1$;&/($8$:…$!!)($'#(#'#(\"'#&'#"),k(';..G &2L""6L7M.; &4†""5!7‡./ &4ƒ""5!7„.# &;3'),k('%2j""6j7k/J#4ˆ""5!7‰.5 &4Š""5!7‹.) &4Œ""5!7/#$+")("\'#&\'#'),k("%;N/M#28\"\"6879/>$;O.\" &\"/0$;S/'$8$:Ž$ )($'#(#'#(\"'#&'#"),k("%;N/d#28\"\"6879/U$;O.\" &\"/G$;S/>$;_/5$;l.\" &\"/'$8&:& )(&'#(%'#($'#(#'#(\"'#&'#"),k('%3""5$7‘.) &3’""5#7“/\' 8!:”!! )'),k('%;P/]#%28""6879/,#;R/#$+")("\'#&\'#." &"/6$2:""6:7;/\'$8#:•# )(#\'#("\'#&\'#'),k("$;+.) &;-.# &;Q/2#0/*;+.) &;-.# &;Q&&&#"),k('2<""6<7=.q &2>""6>7?.e &2@""6@7A.Y &2B""6B7C.M &2D""6D7E.A &22""6273.5 &26""6677.) &24""6475'),k('%$;+._ &;-.Y &2<""6<7=.M &2>""6>7?.A &2@""6@7A.5 &2B""6B7C.) &2D""6D7E0e*;+._ &;-.Y &2<""6<7=.M &2>""6>7?.A &2@""6@7A.5 &2B""6B7C.) &2D""6D7E&/& 8!:–! )'),k('%;T/J#%28""6879/,#;^/#$+")("\'#&\'#." &"/#$+")("\'#&\'#'),k("%;U.) &;\\.# &;X/& 8!:—! )"),k('%$%;V/2#2J""6J7K/#$+")("\'#&\'#0<*%;V/2#2J""6J7K/#$+")("\'#&\'#&/D#;W/;$2J""6J7K." &"/\'$8#:˜# )(#\'#("\'#&\'#'),k('$4™""5!7š/,#0)*4™""5!7š&&&#'),k('%4$""5!7%/?#$4›""5!7œ0)*4›""5!7œ&/#$+")("\'#&\'#'),k('%2l""6l7m/?#;Y/6$2n""6n7o/\'$8#:# )(#\'#("\'#&\'#'),k('%%;Z/³#28""6879/¤$;Z/›$28""6879/Œ$;Z/ƒ$28""6879/t$;Z/k$28""6879/\\$;Z/S$28""6879/D$;Z/;$28""6879/,$;[/#$+-)(-\'#(,\'#(+\'#(*\'#()\'#((\'#(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#.ސ &%2ž""6ž7Ÿ/¤#;Z/›$28""6879/Œ$;Z/ƒ$28""6879/t$;Z/k$28""6879/\\$;Z/S$28""6879/D$;Z/;$28""6879/,$;[/#$+,)(,\'#(+\'#(*\'#()\'#((\'#(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#.۹ &%2ž""6ž7Ÿ/Œ#;Z/ƒ$28""6879/t$;Z/k$28""6879/\\$;Z/S$28""6879/D$;Z/;$28""6879/,$;[/#$+*)(*\'#()\'#((\'#(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#.ٺ &%2ž""6ž7Ÿ/t#;Z/k$28""6879/\\$;Z/S$28""6879/D$;Z/;$28""6879/,$;[/#$+()((\'#(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#.ؓ &%2ž""6ž7Ÿ/\\#;Z/S$28""6879/D$;Z/;$28""6879/,$;[/#$+&)(&\'#(%\'#($\'#(#\'#("\'#&\'#.ׄ &%2ž""6ž7Ÿ/D#;Z/;$28""6879/,$;[/#$+$)($\'#(#\'#("\'#&\'#.֍ &%2ž""6ž7Ÿ/,#;[/#$+")("\'#&\'#.ծ &%2ž""6ž7Ÿ/,#;Z/#$+")("\'#&\'#.Տ &%;Z/›#2ž""6ž7Ÿ/Œ$;Z/ƒ$28""6879/t$;Z/k$28""6879/\\$;Z/S$28""6879/D$;Z/;$28""6879/,$;[/#$++)(+\'#(*\'#()\'#((\'#(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#.Ӈ &%;Z/ª#%28""6879/,#;Z/#$+")("\'#&\'#." &"/ƒ$2ž""6ž7Ÿ/t$;Z/k$28""6879/\\$;Z/S$28""6879/D$;Z/;$28""6879/,$;[/#$+*)(*\'#()\'#((\'#(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#.а &%;Z/¹#%28""6879/,#;Z/#$+")("\'#&\'#." &"/’$%28""6879/,#;Z/#$+")("\'#&\'#." &"/k$2ž""6ž7Ÿ/\\$;Z/S$28""6879/D$;Z/;$28""6879/,$;[/#$+))()\'#((\'#(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#.Ί &%;Z/È#%28""6879/,#;Z/#$+")("\'#&\'#." &"/¡$%28""6879/,#;Z/#$+")("\'#&\'#." &"/z$%28""6879/,#;Z/#$+")("\'#&\'#." &"/S$2ž""6ž7Ÿ/D$;Z/;$28""6879/,$;[/#$+()((\'#(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#.˕ &%;Z/×#%28""6879/,#;Z/#$+")("\'#&\'#." &"/°$%28""6879/,#;Z/#$+")("\'#&\'#." &"/‰$%28""6879/,#;Z/#$+")("\'#&\'#." &"/b$%28""6879/,#;Z/#$+")("\'#&\'#." &"/;$2ž""6ž7Ÿ/,$;[/#$+\')(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#.ȑ &%;Z/þ#%28""6879/,#;Z/#$+")("\'#&\'#." &"/×$%28""6879/,#;Z/#$+")("\'#&\'#." &"/°$%28""6879/,#;Z/#$+")("\'#&\'#." &"/‰$%28""6879/,#;Z/#$+")("\'#&\'#." &"/b$%28""6879/,#;Z/#$+")("\'#&\'#." &"/;$2ž""6ž7Ÿ/,$;Z/#$+()((\'#(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#.Ħ &%;Z/Ĝ#%28""6879/,#;Z/#$+")("\'#&\'#." &"/õ$%28""6879/,#;Z/#$+")("\'#&\'#." &"/Î$%28""6879/,#;Z/#$+")("\'#&\'#." &"/§$%28""6879/,#;Z/#$+")("\'#&\'#." &"/€$%28""6879/,#;Z/#$+")("\'#&\'#." &"/Y$%28""6879/,#;Z/#$+")("\'#&\'#." &"/2$2ž""6ž7Ÿ/#$+()((\'#(\'\'#(&\'#(%\'#($\'#(#\'#("\'#&\'#/& 8!: ! )'),k('%;#/M#;#." &"/?$;#." &"/1$;#." &"/#$+$)($\'#(#\'#("\'#&\'#'),k("%;Z/;#28\"\"6879/,$;Z/#$+#)(#'#(\"'#&'#.# &;\\"),k("%;]/o#2J\"\"6J7K/`$;]/W$2J\"\"6J7K/H$;]/?$2J\"\"6J7K/0$;]/'$8':¡' )(''#(&'#(%'#($'#(#'#(\"'#&'#"),k('%2¢""6¢7£/2#4¤""5!7¥/#$+")("\'#&\'#.˜ &%2¦""6¦7§/;#4¨""5!7©/,$;!/#$+#)(#\'#("\'#&\'#.j &%2ª""6ª7«/5#;!/,$;!/#$+#)(#\'#("\'#&\'#.B &%4¬""5!7­/,#;!/#$+")("\'#&\'#.# &;!'),k('%%;!." &"/[#;!." &"/M$;!." &"/?$;!." &"/1$;!." &"/#$+%)(%\'#($\'#(#\'#("\'#&\'#/\' 8!:®!! )'),k('$%22""6273/,#;`/#$+")("\'#&\'#0<*%22""6273/,#;`/#$+")("\'#&\'#&'),k(";a.A &;b.; &;c.5 &;d./ &;e.) &;f.# &;g"),k('%3¯""5*7°/a#3±""5#7².G &3³""5#7´.; &3µ""5$7¶./ &3·""5#7¸.# &;6/($8":¹"! )("\'#&\'#'),k('%3º""5%7»/I#3¼""5%7½./ &3¾""5"7¿.# &;6/($8":À"! )("\'#&\'#'),k('%3Á""5\'7Â/1#;/($8":Ã"! )("\'#&\'#'),k('%3Ä""5$7Å/1#;ð/($8":Æ"! )("\'#&\'#'),k('%3Ç""5&7È/1#;T/($8":É"! )("\'#&\'#'),k('%3Ê""5"7Ë/N#%2>""6>7?/,#;6/#$+")("\'#&\'#." &"/\'$8":Ì" )("\'#&\'#'),k('%;h/P#%2>""6>7?/,#;i/#$+")("\'#&\'#." &"/)$8":Í""! )("\'#&\'#'),k('%$;j/&#0#*;j&&&#/"!&,)'),k('%$;j/&#0#*;j&&&#/"!&,)'),k(";k.) &;+.# &;-"),k('2l""6l7m.e &2n""6n7o.Y &24""6475.M &28""6879.A &2<""6<7=.5 &2@""6@7A.) &2B""6B7C'),k('%26""6677/n#;m/e$$%2<""6<7=/,#;m/#$+")("\'#&\'#0<*%2<""6<7=/,#;m/#$+")("\'#&\'#&/#$+#)(#\'#("\'#&\'#'),k('%;n/A#2>""6>7?/2$;o/)$8#:Î#"" )(#\'#("\'#&\'#'),k("$;p.) &;+.# &;-/2#0/*;p.) &;+.# &;-&&&#"),k("$;p.) &;+.# &;-0/*;p.) &;+.# &;-&"),k('2l""6l7m.e &2n""6n7o.Y &24""6475.M &26""6677.A &28""6879.5 &2@""6@7A.) &2B""6B7C'),k(";‘.# &;r"),k("%;/G#;'/>$;s/5$;'/,$;„/#$+%)(%'#($'#(#'#(\"'#&'#"),k(";M.# &;t"),k("%;/E#28\"\"6879/6$;u.# &;x/'$8#:Ï# )(#'#(\"'#&'#"),k('%;v.# &;w/J#%26""6677/,#;ƒ/#$+")("\'#&\'#." &"/#$+")("\'#&\'#'),k('%2Ð""6Ð7Ñ/:#;€/1$;w." &"/#$+#)(#\'#("\'#&\'#'),k('%24""6475/,#;{/#$+")("\'#&\'#'),k("%;z/3#$;y0#*;y&/#$+\")(\"'#&'#"),k(";*.) &;+.# &;-"),k(';+. &;-.‰ &22""6273.} &26""6677.q &28""6879.e &2:""6:7;.Y &2<""6<7=.M &2>""6>7?.A &2@""6@7A.5 &2B""6B7C.) &2D""6D7E'),k('%;|/e#$%24""6475/,#;|/#$+")("\'#&\'#0<*%24""6475/,#;|/#$+")("\'#&\'#&/#$+")("\'#&\'#'),k('%$;~0#*;~&/e#$%22""6273/,#;}/#$+")("\'#&\'#0<*%22""6273/,#;}/#$+")("\'#&\'#&/#$+")("\'#&\'#'),k("$;~0#*;~&"),k(';+.w &;-.q &28""6879.e &2:""6:7;.Y &2<""6<7=.M &2>""6>7?.A &2@""6@7A.5 &2B""6B7C.) &2D""6D7E'),k('%%;"/‡#$;".G &;!.A &2@""6@7A.5 &2F""6F7G.) &2J""6J7K0M*;".G &;!.A &2@""6@7A.5 &2F""6F7G.) &2J""6J7K&/#$+")("\'#&\'#/& 8!:Ò! )'),k(";.# &;‚"),k('%%;O/2#2:""6:7;/#$+")("\'#&\'#." &"/,#;S/#$+")("\'#&\'#." &"'),k('$;+.ƒ &;-.} &2B""6B7C.q &2D""6D7E.e &22""6273.Y &28""6879.M &2:""6:7;.A &2<""6<7=.5 &2>""6>7?.) &2@""6@7A/Œ#0‰*;+.ƒ &;-.} &2B""6B7C.q &2D""6D7E.e &22""6273.Y &28""6879.M &2:""6:7;.A &2<""6<7=.5 &2>""6>7?.) &2@""6@7A&&&#'),k("$;y0#*;y&"),k('%3’""5#7Ó/q#24""6475/b$$;!/&#0#*;!&&&#/L$2J""6J7K/=$$;!/&#0#*;!&&&#/\'$8%:Ô% )(%\'#($\'#(#\'#("\'#&\'#'),k('2Õ""6Õ7Ö'),k('2×""6×7Ø'),k('2Ù""6Ù7Ú'),k('2Û""6Û7Ü'),k('2Ý""6Ý7Þ'),k('2ß""6ß7à'),k('2á""6á7â'),k('2ã""6ã7ä'),k('2å""6å7æ'),k('2ç""6ç7è'),k('2é""6é7ê'),k("%;….Y &;†.S &;ˆ.M &;‰.G &;Š.A &;‹.; &;Œ.5 &;./ &;.) &;Ž.# &;6/& 8!:ë! )"),k("%;„/G#;'/>$;’/5$;'/,$;”/#$+%)(%'#($'#(#'#(\"'#&'#"),k("%;“/' 8!:ì!! )"),k("%;!/5#;!/,$;!/#$+#)(#'#(\"'#&'#"),k("%$;*.A &;+.; &;-.5 &;3./ &;4.) &;'.# &;(0G*;*.A &;+.; &;-.5 &;3./ &;4.) &;'.# &;(&/& 8!:í! )"),k("%;¶/Y#$%;A/,#;¶/#$+\")(\"'#&'#06*%;A/,#;¶/#$+\")(\"'#&'#&/#$+\")(\"'#&'#"),k('%;9/N#%2:""6:7;/,#;9/#$+")("\'#&\'#." &"/\'$8":î" )("\'#&\'#'),k("%;:.c &%;˜/Y#$%;A/,#;˜/#$+\")(\"'#&'#06*%;A/,#;˜/#$+\")(\"'#&'#&/#$+\")(\"'#&'#/& 8!:ï! )"),k("%;L.# &;™/]#$%;B/,#;›/#$+\")(\"'#&'#06*%;B/,#;›/#$+\")(\"'#&'#&/'$8\":ð\" )(\"'#&'#"),k("%;š.\" &\"/>#;@/5$;M/,$;?/#$+$)($'#(#'#(\"'#&'#"),k("%%;6/Y#$%;./,#;6/#$+\")(\"'#&'#06*%;./,#;6/#$+\")(\"'#&'#&/#$+\")(\"'#&'#.# &;H/' 8!:ñ!! )"),k(";œ.) &;.# &; "),k("%3ò\"\"5!7ó/:#;</1$;Ÿ/($8#:ô#! )(#'#(\"'#&'#"),k("%3õ\"\"5'7ö/:#;</1$;ž/($8#:÷#! )(#'#(\"'#&'#"),k("%$;!/&#0#*;!&&&#/' 8!:ø!! )"),k('%2ù""6ù7ú/o#%2J""6J7K/M#;!." &"/?$;!." &"/1$;!." &"/#$+$)($\'#(#\'#("\'#&\'#." &"/\'$8":û" )("\'#&\'#'),k('%;6/J#%;</,#;¡/#$+")("\'#&\'#." &"/)$8":ü""! )("\'#&\'#'),k(";6.) &;T.# &;H"),k("%;£/Y#$%;B/,#;¤/#$+\")(\"'#&'#06*%;B/,#;¤/#$+\")(\"'#&'#&/#$+\")(\"'#&'#"),k('%3ý""5&7þ.G &3ÿ""5\'7Ā.; &3ā""5$7Ă./ &3ă""5%7Ą.# &;6/& 8!:ą! )'),k(";¥.# &; "),k('%3Ć""5(7ć/M#;</D$3Ĉ""5(7ĉ./ &3Ċ""5(7ċ.# &;6/#$+#)(#\'#("\'#&\'#'),k("%;6/Y#$%;A/,#;6/#$+\")(\"'#&'#06*%;A/,#;6/#$+\")(\"'#&'#&/#$+\")(\"'#&'#"),k("%$;!/&#0#*;!&&&#/' 8!:Č!! )"),k("%;©/& 8!:č! )"),k("%;ª/k#;;/b$;¯/Y$$%;B/,#;°/#$+\")(\"'#&'#06*%;B/,#;°/#$+\")(\"'#&'#&/#$+$)($'#(#'#(\"'#&'#"),k(";«.# &;¬"),k('3Ď""5$7ď.S &3Đ""5%7đ.G &3Ē""5%7ē.; &3Ĕ""5%7ĕ./ &3Ė""5+7ė.# &;­'),k('3Ę""5\'7ę./ &3Ě""5)7ě.# &;­'),k(";6.# &;®"),k('%3Ĝ""5"7ĝ/,#;6/#$+")("\'#&\'#'),k(";­.# &;6"),k("%;6/5#;</,$;±/#$+#)(#'#(\"'#&'#"),k(";6.# &;H"),k("%;³/5#;./,$;/#$+#)(#'#(\"'#&'#"),k("%$;!/&#0#*;!&&&#/' 8!:Ğ!! )"),k("%;ž/' 8!:ğ!! )"),k('%;¶/^#$%;B/,#; /#$+")("\'#&\'#06*%;B/,#; /#$+")("\'#&\'#&/($8":Ġ"!!)("\'#&\'#'),k('%%;7/e#$%2J""6J7K/,#;7/#$+")("\'#&\'#0<*%2J""6J7K/,#;7/#$+")("\'#&\'#&/#$+")("\'#&\'#/"!&,)'),k("%;L.# &;™/]#$%;B/,#;¸/#$+\")(\"'#&'#06*%;B/,#;¸/#$+\")(\"'#&'#&/'$8\":ġ\" )(\"'#&'#"),k(";¹.# &; "),k("%3Ģ\"\"5#7ģ/:#;</1$;6/($8#:Ĥ#! )(#'#(\"'#&'#"),k("%$;!/&#0#*;!&&&#/' 8!:ĥ!! )"),k("%;ž/' 8!:Ħ!! )"),k("%$;š0#*;š&/x#;@/o$;M/f$;?/]$$%;B/,#; /#$+\")(\"'#&'#06*%;B/,#; /#$+\")(\"'#&'#&/'$8%:ħ% )(%'#($'#(#'#(\"'#&'#"),k(";¾"),k("%3Ĩ\"\"5&7ĩ/k#;./b$;Á/Y$$%;A/,#;Á/#$+\")(\"'#&'#06*%;A/,#;Á/#$+\")(\"'#&'#&/#$+$)($'#(#'#(\"'#&'#.# &;¿"),k("%;6/k#;./b$;À/Y$$%;A/,#;À/#$+\")(\"'#&'#06*%;A/,#;À/#$+\")(\"'#&'#&/#$+$)($'#(#'#(\"'#&'#"),k("%;6/;#;</2$;6.# &;H/#$+#)(#'#(\"'#&'#"),k(";Â.G &;Ä.A &;Æ.; &;È.5 &;É./ &;Ê.) &;Ë.# &;À"),k("%3Ī\"\"5%7ī/5#;</,$;Ã/#$+#)(#'#(\"'#&'#"),k("%;I/' 8!:Ĭ!! )"),k("%3ĭ\"\"5&7Į/—#;</Ž$;D/…$;Å/|$$%$;'/&#0#*;'&&&#/,#;Å/#$+\")(\"'#&'#0C*%$;'/&#0#*;'&&&#/,#;Å/#$+\")(\"'#&'#&/,$;E/#$+&)(&'#(%'#($'#(#'#(\"'#&'#"),k(";t.# &;w"),k("%3į\"\"5%7İ/5#;</,$;Ç/#$+#)(#'#(\"'#&'#"),k("%;I/' 8!:ı!! )"),k("%3IJ\"\"5&7ij/:#;</1$;I/($8#:Ĵ#! )(#'#(\"'#&'#"),k('%3ĵ""5%7Ķ/]#;</T$%3ķ""5$7ĸ/& 8!:Ĺ! ).4 &%3ĺ""5%7Ļ/& 8!:ļ! )/#$+#)(#\'#("\'#&\'#'),k('%3Ľ""5)7ľ/R#;</I$3Ŀ""5#7ŀ./ &3Ł""5(7ł.# &;6/($8#:Ń#! )(#\'#("\'#&\'#'),k('%3ń""5#7Ņ/“#;</Š$;D/$%;Ì/e#$%2D""6D7E/,#;Ì/#$+")("\'#&\'#0<*%2D""6D7E/,#;Ì/#$+")("\'#&\'#&/#$+")("\'#&\'#/,$;E/#$+%)(%\'#($\'#(#\'#("\'#&\'#'),k('%3ņ""5(7Ň./ &3ň""5$7ʼn.# &;6/\' 8!:Ŋ!! )'),k("%;6/Y#$%;A/,#;6/#$+\")(\"'#&'#06*%;A/,#;6/#$+\")(\"'#&'#&/#$+\")(\"'#&'#"),k("%;Ï/G#;./>$;Ï/5$;./,$;/#$+%)(%'#($'#(#'#(\"'#&'#"),k("%$;!/&#0#*;!&&&#/' 8!:ŋ!! )"),k("%;Ñ/]#$%;A/,#;Ñ/#$+\")(\"'#&'#06*%;A/,#;Ñ/#$+\")(\"'#&'#&/'$8\":Ō\" )(\"'#&'#"),k("%;™/]#$%;B/,#; /#$+\")(\"'#&'#06*%;B/,#; /#$+\")(\"'#&'#&/'$8\":ō\" )(\"'#&'#"),k('%;L.O &;™.I &%;@." &"/:#;t/1$;?." &"/#$+#)(#\'#("\'#&\'#/]#$%;B/,#; /#$+")("\'#&\'#06*%;B/,#; /#$+")("\'#&\'#&/\'$8":Ŏ" )("\'#&\'#'),k("%;Ô/]#$%;B/,#;Õ/#$+\")(\"'#&'#06*%;B/,#;Õ/#$+\")(\"'#&'#&/'$8\":ŏ\" )(\"'#&'#"),k("%;–/& 8!:Ő! )"),k('%3ő""5(7Œ/:#;</1$;6/($8#:œ#! )(#\'#("\'#&\'#.g &%3Ŕ""5&7ŕ/:#;</1$;6/($8#:Ŗ#! )