@dora-cell/sdk 0.1.1-beta.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/index.ts","../src/core/AuthProvider.ts","../src/utils/phoneFormatter.ts","../src/core/CallManager.ts","../src/core/DoraCell.ts"],"names":["EventEmitter","JsSIP"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Core TypeScript type definitions for Dora Cell SDK\n */\n\n// ============================================\n// Configuration Types\n// ============================================\n\nexport interface ApiTokenAuth {\n type: 'api-token';\n apiToken: string;\n apiBaseUrl?: string;\n}\n\nexport interface DirectCredentialsAuth {\n type: 'direct';\n sipUri: string;\n password: string;\n wsUrl: string;\n}\n\nexport type AuthConfig = ApiTokenAuth | DirectCredentialsAuth;\n\nexport interface DoraCellConfig {\n auth: AuthConfig;\n sipServer?: string;\n turnServers?: RTCIceServer[];\n debug?: boolean;\n autoSelectExtension?: boolean; // Auto-select first available extension\n}\n\n// ============================================\n// SIP Credentials\n// ============================================\n\nexport interface SipCredentials {\n wsUrl: string;\n sipUri: string;\n password: string;\n sipDomain?: string;\n extensions?: Extension[];\n expiresIn?: number;\n}\n\nexport interface Extension {\n extension: string;\n displayName?: string;\n isPrimary?: boolean;\n}\n\n// ============================================\n// Call Types\n// ============================================\n\nexport type CallStatus = 'idle' | 'connecting' | 'ringing' | 'ongoing' | 'ended';\n\nexport type CallDirection = 'inbound' | 'outbound';\n\nexport interface CallOptions {\n extension?: string; // Specific extension to use for this call\n mediaConstraints?: MediaStreamConstraints;\n}\n\nexport interface Call {\n id: string;\n status: CallStatus;\n direction: CallDirection;\n remoteNumber: string;\n localExtension: string;\n duration: number;\n startTime?: number;\n endTime?: number;\n\n // Methods\n mute(): void;\n unmute(): void;\n hangup(): void;\n isMuted(): boolean;\n}\n\n// ============================================\n// Connection Status\n// ============================================\n\nexport type ConnectionStatus =\n | 'disconnected'\n | 'connecting'\n | 'connected'\n | 'registered'\n | 'registrationFailed';\n\nexport interface ConnectionState {\n status: ConnectionStatus;\n extension?: string;\n error?: string;\n}\n\n// ============================================\n// Events\n// ============================================\n\nexport type DoraCellEventMap = {\n 'connection:status': (state: ConnectionState) => void;\n 'call:incoming': (call: Call) => void;\n 'call:outgoing': (call: Call) => void;\n 'call:ringing': (call: Call) => void;\n 'call:connected': (call: Call) => void;\n 'call:ended': (call: Call, reason?: string) => void;\n 'call:failed': (call: Call, error: string) => void;\n 'error': (error: Error) => void;\n};\n\nexport type DoraCellEvent = keyof DoraCellEventMap;\n\n// ============================================\n// API Response Types\n// ============================================\n\nexport interface ApiTokenResponse {\n ws_url?: string;\n wsUrl?: string;\n sip_uri?: string;\n sipUri?: string;\n password?: string;\n sip_domain?: string;\n sipDomain?: string;\n extensions?: Extension[];\n expires_in?: number;\n expiresIn?: number;\n}\n\n// ============================================\n// Error Types\n// ============================================\n\nexport class DoraCellError extends Error {\n constructor(\n message: string,\n public code?: string,\n public details?: any\n ) {\n super(message);\n this.name = 'DoraCellError';\n }\n}\n\nexport class AuthenticationError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'AUTH_ERROR', details);\n this.name = 'AuthenticationError';\n }\n}\n\nexport class CallError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'CALL_ERROR', details);\n this.name = 'CallError';\n }\n}\n\nexport class ConnectionError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'CONNECTION_ERROR', details);\n this.name = 'ConnectionError';\n }\n}\n","/**\n * Authentication provider for API token-based authentication\n */\n\nimport type {\n AuthConfig,\n SipCredentials,\n ApiTokenResponse,\n Extension,\n} from '../types';\nimport { AuthenticationError } from '../types';\n\nexport interface AuthProvider {\n authenticate(config: AuthConfig): Promise<SipCredentials>;\n refreshCredentials?(): Promise<SipCredentials>;\n isAuthenticated(): boolean;\n}\n\n/**\n * API Token Authentication Provider\n * Exchanges API token for SIP credentials via backend API\n */\nexport class ApiTokenAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n private apiToken: string;\n private apiBaseUrl: string;\n\n constructor(apiToken: string, apiBaseUrl?: string) {\n this.apiToken = apiToken;\n this.apiBaseUrl = apiBaseUrl || process.env.NEXT_PUBLIC_BASE_API_URL || '';\n }\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'api-token') {\n throw new AuthenticationError('Invalid auth config type for ApiTokenAuthProvider');\n }\n\n try {\n const response = await fetch(`${this.apiBaseUrl}/api/sip-credentials`, {\n method: 'GET',\n headers: {\n 'Authorization': `Bearer ${this.apiToken}`,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n },\n credentials: 'include',\n });\n\n if (!response.ok) {\n if (response.status === 401 || response.status === 403) {\n throw new AuthenticationError(\n 'Invalid API token or insufficient permissions',\n { status: response.status }\n );\n }\n throw new AuthenticationError(\n `Failed to fetch SIP credentials: ${response.status}`,\n { status: response.status }\n );\n }\n\n const data: ApiTokenResponse = await response.json();\n this.credentials = this.parseCredentials(data);\n return this.credentials;\n } catch (error) {\n if (error instanceof AuthenticationError) {\n throw error;\n }\n throw new AuthenticationError(\n `Authentication failed: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n async refreshCredentials(): Promise<SipCredentials> {\n // Re-authenticate to get fresh credentials\n return this.authenticate({ type: 'api-token', apiToken: this.apiToken });\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n\n private parseCredentials(data: ApiTokenResponse): SipCredentials {\n const wsUrl = data.ws_url || data.wsUrl;\n const sipUri = data.sip_uri || data.sipUri;\n const password = data.password;\n const sipDomain = data.sip_domain || data.sipDomain;\n const extensions = data.extensions;\n const expiresIn = data.expires_in || data.expiresIn;\n\n if (!wsUrl || !sipUri) {\n throw new AuthenticationError(\n 'Invalid credentials response: missing ws_url or sip_uri'\n );\n }\n\n return {\n wsUrl,\n sipUri,\n password: password || '',\n sipDomain,\n extensions,\n expiresIn,\n };\n }\n}\n\n/**\n * Direct Credentials Authentication Provider\n * Uses credentials provided directly in configuration\n */\nexport class DirectCredentialsAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'direct') {\n throw new AuthenticationError('Invalid auth config type for DirectCredentialsAuthProvider');\n }\n\n this.credentials = {\n wsUrl: config.wsUrl,\n sipUri: config.sipUri,\n password: config.password,\n };\n\n return this.credentials;\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n}\n\n/**\n * Factory function to create appropriate auth provider\n */\nexport function createAuthProvider(config: AuthConfig): AuthProvider {\n switch (config.type) {\n case 'api-token':\n return new ApiTokenAuthProvider(config.apiToken, config.apiBaseUrl);\n case 'direct':\n return new DirectCredentialsAuthProvider();\n default:\n throw new AuthenticationError('Unknown authentication type');\n }\n}\n","/**\n * Phone number formatting utilities\n * Extracted from JsSIPProvider.tsx\n */\n\n/**\n * Format a phone number to SIP URI format\n * Handles Nigerian numbers, international format, and local extensions\n */\nexport function formatPhoneToSIP(phone: string, sipDomain: string): string {\n // Strip all non-numeric characters\n let cleaned = phone.replace(/\\D/g, '');\n\n // Case 1: Short local extension (like \"101\", \"102\", etc.)\n if (cleaned.length <= 4) {\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 2: Nigerian number starting with 0 (like \"08012345678\")\n if (cleaned.startsWith('0')) {\n cleaned = '234' + cleaned.substring(1);\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 3: Already in international format (starts with 234)\n if (cleaned.startsWith('234')) {\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 4: Any other number - assume it needs 234 prefix\n cleaned = '234' + cleaned;\n return `sip:${cleaned}@${sipDomain}`;\n}\n\n/**\n * Normalize a phone number to E.164 format\n */\nexport function normalizePhoneNumber(\n phone: string,\n countryCode: string = '234'\n): string {\n let cleaned = phone.replace(/\\D/g, '');\n\n // If it's a short extension, return as-is\n if (cleaned.length <= 4) {\n return cleaned;\n }\n\n // Remove leading 0 and add country code\n if (cleaned.startsWith('0')) {\n return countryCode + cleaned.substring(1);\n }\n\n // If already has country code, return as-is\n if (cleaned.startsWith(countryCode)) {\n return cleaned;\n }\n\n // Otherwise add country code\n return countryCode + cleaned;\n}\n\n/**\n * Extract extension/number from SIP URI\n */\nexport function extractNumberFromSipUri(sipUri: string): string {\n const match = sipUri.match(/sip:([^@]+)@/);\n return match ? match[1] : sipUri;\n}\n\n/**\n * Validate phone number format\n */\nexport function isValidPhoneNumber(phone: string, minLength: number = 3): boolean {\n const cleaned = phone.replace(/\\D/g, '');\n return cleaned.length >= minLength;\n}\n","/**\n * Call Manager - Handles individual call sessions\n * Extracted and refactored from JsSIPProvider.tsx\n */\n\nimport type {\n Call,\n CallStatus,\n CallDirection,\n CallOptions,\n SipCredentials,\n} from '../types';\nimport { CallError } from '../types';\nimport { formatPhoneToSIP } from '../utils/phoneFormatter';\nimport EventEmitter from 'eventemitter3';\n\nexport interface CallConfig {\n pcConfig: RTCConfiguration;\n mediaConstraints?: MediaStreamConstraints;\n}\n\nexport class CallSession implements Call {\n public id: string;\n public status: CallStatus = 'idle';\n public direction: CallDirection;\n public remoteNumber: string;\n public localExtension: string;\n public duration: number = 0;\n public startTime?: number;\n public endTime?: number;\n\n private session: any; // JsSIP RTCSession\n private _isMuted: boolean = false;\n private remoteStreamValue: MediaStream | null = null;\n private durationInterval?: number;\n private events: EventEmitter;\n\n constructor(\n session: any,\n direction: CallDirection,\n remoteNumber: string,\n localExtension: string,\n events: EventEmitter\n ) {\n this.id = this.generateCallId();\n this.session = session;\n this.direction = direction;\n this.remoteNumber = remoteNumber;\n this.localExtension = localExtension;\n this.events = events;\n\n this.setupSessionHandlers();\n }\n\n private generateCallId(): string {\n return `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private setupSessionHandlers(): void {\n // Progress event (ringing)\n this.session.on('progress', (evt: any) => {\n const code = evt.response?.status_code;\n if (code === 180 || code === 183) {\n this.status = 'ringing';\n this.events.emit('call:ringing', this);\n }\n });\n\n // Call confirmed (connected)\n this.session.on('confirmed', () => {\n this.status = 'ongoing';\n this.startTime = Date.now();\n this.startDurationTimer();\n this.events.emit('call:connected', this);\n });\n\n // Peer connection setup\n this.session.on('peerconnection', (evt: any) => {\n evt.peerconnection.ontrack = (event: any) => {\n if (event.streams && event.streams[0]) {\n this.remoteStreamValue = event.streams[0];\n }\n };\n });\n\n // Call ended\n this.session.on('ended', (evt: any) => {\n this.handleCallEnd(evt?.cause);\n });\n\n // Call failed\n this.session.on('failed', (evt: any) => {\n this.handleCallEnd(evt?.cause || 'Call failed');\n });\n\n // Call rejected\n this.session.on('rejected', (evt: any) => {\n this.handleCallEnd(evt?.cause || 'Call rejected');\n });\n }\n\n private handleCallEnd(reason?: string): void {\n this.status = 'ended';\n this.endTime = Date.now();\n this.stopDurationTimer();\n this.remoteStreamValue = null;\n this._isMuted = false;\n this.events.emit('call:ended', this, reason);\n }\n\n private startDurationTimer(): void {\n this.durationInterval = window.setInterval(() => {\n if (this.startTime) {\n this.duration = Math.floor((Date.now() - this.startTime) / 1000);\n }\n }, 1000);\n }\n\n private stopDurationTimer(): void {\n if (this.durationInterval) {\n clearInterval(this.durationInterval);\n this.durationInterval = undefined;\n }\n }\n\n // Public methods\n mute(): void {\n if (this.session && !this._isMuted) {\n this.session.mute({ audio: true });\n this._isMuted = true;\n }\n }\n\n unmute(): void {\n if (this.session && this._isMuted) {\n this.session.unmute({ audio: true });\n this._isMuted = false;\n }\n }\n\n hangup(): void {\n if (this.session) {\n this.session.terminate();\n }\n }\n\n isMuted(): boolean {\n return this._isMuted;\n }\n\n getRemoteStream(): MediaStream | null {\n return this.remoteStreamValue;\n }\n\n getFormattedDuration(): string {\n const mm = String(Math.floor(this.duration / 60)).padStart(2, '0');\n const ss = String(this.duration % 60).padStart(2, '0');\n return `${mm}:${ss}`;\n }\n\n destroy(): void {\n this.stopDurationTimer();\n this.session = null;\n this.remoteStreamValue = null;\n }\n}\n\n/**\n * Call Manager - Manages call sessions and JsSIP integration\n */\nexport class CallManager {\n private ua: any | null = null; // JsSIP User Agent\n private currentCall: CallSession | null = null;\n private credentials: SipCredentials;\n private events: EventEmitter;\n private callConfig: CallConfig;\n\n constructor(\n credentials: SipCredentials,\n events: EventEmitter,\n callConfig: CallConfig\n ) {\n this.credentials = credentials;\n this.events = events;\n this.callConfig = callConfig;\n }\n\n setUserAgent(ua: any): void {\n this.ua = ua;\n }\n\n /**\n * Initiate an outbound call\n */\n async initiateCall(\n targetNumber: string,\n options?: CallOptions\n ): Promise<CallSession> {\n if (!this.ua) {\n throw new CallError('User Agent not initialized');\n }\n\n if (this.currentCall && this.currentCall.status !== 'ended') {\n throw new CallError('A call is already in progress');\n }\n\n try {\n // Request microphone permission\n await navigator.mediaDevices.getUserMedia({ audio: true });\n\n // Determine which extension to use\n const extension = options?.extension || this.getDefaultExtension();\n\n // Format the target number to SIP URI\n const sipDomain = this.extractDomain(this.credentials.sipUri);\n const sipTarget = formatPhoneToSIP(targetNumber, sipDomain);\n\n // Initiate the call\n const session = this.ua.call(sipTarget, {\n mediaConstraints: options?.mediaConstraints || { audio: true },\n pcConfig: this.callConfig.pcConfig,\n });\n\n // Create call session\n const call = new CallSession(\n session,\n 'outbound',\n targetNumber,\n extension,\n this.events\n );\n\n call.status = 'connecting';\n this.currentCall = call;\n this.events.emit('call:outgoing', call);\n\n return call;\n } catch (error) {\n throw new CallError(\n `Failed to initiate call: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n /**\n * Answer an incoming call\n */\n answerCall(session: any): CallSession {\n if (!session) {\n throw new CallError('No session provided');\n }\n\n try {\n const remoteUri = session.remote_identity?.uri?.toString() || 'Unknown';\n const extension = this.getDefaultExtension();\n\n session.answer({\n mediaConstraints: { audio: true },\n pcConfig: this.callConfig.pcConfig,\n });\n\n const call = new CallSession(\n session,\n 'inbound',\n remoteUri,\n extension,\n this.events\n );\n\n this.currentCall = call;\n return call;\n } catch (error) {\n throw new CallError(\n `Failed to answer call: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n /**\n * Handle incoming call from JsSIP\n */\n handleIncomingCall(session: any): CallSession {\n const remoteUri = session.remote_identity?.uri?.toString() || 'Unknown';\n const extension = this.getDefaultExtension();\n\n const call = new CallSession(\n session,\n 'inbound',\n remoteUri,\n extension,\n this.events\n );\n\n call.status = 'ringing';\n this.currentCall = call;\n this.events.emit('call:incoming', call);\n\n return call;\n }\n\n getCurrentCall(): CallSession | null {\n return this.currentCall;\n }\n\n clearCurrentCall(): void {\n if (this.currentCall) {\n this.currentCall.destroy();\n this.currentCall = null;\n }\n }\n\n private getDefaultExtension(): string {\n // Auto-select first extension if available\n if (this.credentials.extensions && this.credentials.extensions.length > 0) {\n return this.credentials.extensions[0].extension;\n }\n // Fallback to extracting from sipUri\n return this.extractExtension(this.credentials.sipUri);\n }\n\n private extractExtension(sipUri: string): string {\n const match = sipUri.match(/sip:([^@]+)@/);\n return match ? match[1] : 'unknown';\n }\n\n private extractDomain(sipUri: string): string {\n const match = sipUri.match(/@(.+)$/);\n return match ? match[1] : '';\n }\n\n destroy(): void {\n this.clearCurrentCall();\n this.ua = null;\n }\n}\n","/**\n * Dora Cell SDK - Main entry point\n * Framework-agnostic VoIP calling SDK using JsSIP\n */\n\nimport JsSIP from 'jssip';\nimport EventEmitter from 'eventemitter3';\nimport type {\n DoraCellConfig,\n DoraCellEventMap,\n DoraCellEvent,\n ConnectionStatus,\n ConnectionState,\n Call,\n CallOptions,\n SipCredentials,\n} from '../types';\nimport { ConnectionError, CallError } from '../types';\nimport { createAuthProvider, AuthProvider } from './AuthProvider';\nimport { CallManager } from './CallManager';\n\nexport class DoraCell {\n private config: DoraCellConfig;\n private events: EventEmitter;\n private authProvider: AuthProvider;\n private credentials: SipCredentials | null = null;\n private ua: any | null = null; // JsSIP User Agent\n private callManager: CallManager | null = null;\n private connectionStatus: ConnectionStatus = 'disconnected';\n private retryCount: number = 0;\n private maxRetries: number = 3;\n\n constructor(config: DoraCellConfig) {\n this.config = {\n autoSelectExtension: true,\n debug: false,\n ...config,\n };\n\n this.events = new EventEmitter();\n this.authProvider = createAuthProvider(config.auth);\n\n // Enable JsSIP debugging if requested\n if (this.config.debug) {\n JsSIP.debug.enable('JsSIP:*');\n }\n }\n\n /**\n * Initialize the SDK - authenticate and connect to SIP server\n */\n async initialize(): Promise<void> {\n try {\n // Step 1: Authenticate and get SIP credentials\n this.credentials = await this.authProvider.authenticate(this.config.auth);\n\n // Step 2: Initialize JsSIP User Agent\n await this.initializeUserAgent();\n\n // Step 3: Initialize Call Manager\n this.initializeCallManager();\n\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n this.emitError(new ConnectionError(`Initialization failed: ${errorMessage}`));\n throw error;\n }\n }\n\n private async initializeUserAgent(): Promise<void> {\n if (!this.credentials) {\n throw new ConnectionError('No credentials available');\n }\n\n try {\n // Create WebSocket connection\n const socket = new JsSIP.WebSocketInterface(this.credentials.wsUrl);\n\n // Build TURN/STUN configuration\n const pcConfig: RTCConfiguration = {\n iceServers: this.config.turnServers || this.getDefaultTurnServers(),\n };\n\n // Create User Agent configuration\n const uaConfig: any = {\n uri: this.credentials.sipUri,\n password: this.credentials.password,\n sockets: [socket],\n register: true,\n display_name: this.getDisplayName(),\n session_timers: false,\n use_preloaded_route: false,\n pcConfig: pcConfig,\n instance_id: this.generateInstanceId(),\n };\n\n // Create User Agent\n this.ua = new JsSIP.UA(uaConfig);\n\n // Set up UA event handlers\n this.setupUserAgentHandlers();\n\n // Start the UA\n this.ua.start();\n\n } catch (error) {\n throw new ConnectionError(\n `Failed to initialize User Agent: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n private setupUserAgentHandlers(): void {\n if (!this.ua) return;\n\n this.ua.on('connected', () => {\n this.connectionStatus = 'connected';\n this.emitConnectionStatus();\n });\n\n this.ua.on('disconnected', () => {\n this.connectionStatus = 'disconnected';\n this.emitConnectionStatus();\n });\n\n this.ua.on('registered', () => {\n this.connectionStatus = 'registered';\n this.retryCount = 0;\n this.emitConnectionStatus();\n });\n\n this.ua.on('registrationFailed', (e: any) => {\n this.connectionStatus = 'registrationFailed';\n this.emitConnectionStatus(e.cause);\n\n // Retry logic\n if (this.retryCount < this.maxRetries) {\n this.retryCount++;\n setTimeout(() => {\n this.ua?.register();\n }, 3000);\n }\n });\n\n this.ua.on('newRTCSession', (e: any) => {\n const session = e.session;\n\n if (session.direction === 'incoming') {\n // Handle incoming call\n this.callManager?.handleIncomingCall(session);\n }\n });\n }\n\n private initializeCallManager(): void {\n if (!this.credentials) {\n throw new ConnectionError('No credentials available for call manager');\n }\n\n const pcConfig: RTCConfiguration = {\n iceServers: this.config.turnServers || this.getDefaultTurnServers(),\n };\n\n this.callManager = new CallManager(\n this.credentials,\n this.events,\n { pcConfig }\n );\n\n this.callManager.setUserAgent(this.ua);\n }\n\n /**\n * Make an outbound call\n */\n async call(phoneNumber: string, options?: CallOptions): Promise<Call> {\n if (!this.callManager) {\n throw new CallError('SDK not initialized. Call initialize() first.');\n }\n\n if (this.connectionStatus !== 'registered') {\n throw new CallError('Not registered to SIP server');\n }\n\n return this.callManager.initiateCall(phoneNumber, options);\n }\n\n /**\n * Answer an incoming call\n */\n answerCall(): void {\n const currentCall = this.callManager?.getCurrentCall();\n\n if (!currentCall) {\n throw new CallError('No incoming call to answer');\n }\n\n if (currentCall.direction !== 'inbound') {\n throw new CallError('Current call is not an incoming call');\n }\n\n // The CallSession will handle answering via its internal session\n // This is already set up in CallManager.handleIncomingCall\n }\n\n /**\n * Hangup the current call\n */\n hangup(): void {\n const currentCall = this.callManager?.getCurrentCall();\n\n if (!currentCall) {\n throw new CallError('No active call to hang up');\n }\n\n currentCall.hangup();\n }\n\n /**\n * Get current call\n */\n getCurrentCall(): Call | null {\n return this.callManager?.getCurrentCall() || null;\n }\n\n /**\n * Get connection status\n */\n getStatus(): ConnectionStatus {\n return this.connectionStatus;\n }\n\n /**\n * Get available extensions\n */\n getExtensions(): string[] {\n if (!this.credentials?.extensions) {\n return [];\n }\n return this.credentials.extensions.map(ext => ext.extension);\n }\n\n /**\n * Event listener management\n */\n on<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.on(event, handler as any);\n }\n\n off<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.off(event, handler as any);\n }\n\n once<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.once(event, handler as any);\n }\n\n /**\n * Cleanup and destroy the SDK instance\n */\n destroy(): void {\n if (this.ua) {\n this.ua.stop();\n this.ua = null;\n }\n\n if (this.callManager) {\n this.callManager.destroy();\n this.callManager = null;\n }\n\n this.events.removeAllListeners();\n this.connectionStatus = 'disconnected';\n this.credentials = null;\n }\n\n // Helper methods\n private emitConnectionStatus(error?: string): void {\n const state: ConnectionState = {\n status: this.connectionStatus,\n extension: this.credentials?.extensions?.[0]?.extension,\n error,\n };\n this.events.emit('connection:status', state);\n }\n\n private emitError(error: Error): void {\n this.events.emit('error', error);\n }\n\n private getDefaultTurnServers(): RTCIceServer[] {\n const turnUri = process.env.NEXT_PUBLIC_TURN_URI || 'turn:64.227.10.164:3478';\n const turnUser = process.env.NEXT_PUBLIC_TURN_USER || '02018890089';\n const turnPass = process.env.NEXT_PUBLIC_TURN_PASS || 'dora12345';\n\n return [\n {\n urls: turnUri,\n username: turnUser,\n credential: turnPass,\n },\n ];\n }\n\n private getDisplayName(): string {\n if (this.credentials?.extensions?.[0]?.displayName) {\n return this.credentials.extensions[0].displayName;\n }\n if (this.credentials?.extensions?.[0]?.extension) {\n return `Ext ${this.credentials.extensions[0].extension}`;\n }\n return 'Dora Cell User';\n }\n\n private generateInstanceId(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n\nexport default DoraCell;\n"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/package.json","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Constants.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Exceptions.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/NameAddrHeader.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Grammar.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/URI.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Utils.js","../../../node_modules/.pnpm/events@3.3.0/node_modules/events/events.js","../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/common.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/browser.js","stub-node-builtin:tty-stub","stub-node-builtin:os-stub","../../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js","../../../node_modules/.pnpm/supports-color@8.1.1/node_modules/supports-color/index.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/node.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/index.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Logger.js","../../../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/grammar.js","../../../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/parser.js","../../../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/writer.js","../../../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/index.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/SIPMessage.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/DigestAuthentication.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Timers.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Transactions.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/RequestSender.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Registrator.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Dialog/RequestSender.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Dialog.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/RTCSession/DTMF.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/RTCSession/Info.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/RTCSession/ReferNotifier.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/RTCSession/ReferSubscriber.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/RTCSession.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Subscriber.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Notifier.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Message.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Options.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Socket.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Transport.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Parser.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/sanityCheck.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/Config.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/UA.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/WebSocketInterface.js","../../../node_modules/.pnpm/jssip@3.13.5/node_modules/jssip/lib/JsSIP.js","../../../node_modules/.pnpm/eventemitter3@5.0.4/node_modules/eventemitter3/index.js","../src/core/DoraCell.ts","../../../node_modules/.pnpm/eventemitter3@5.0.4/node_modules/eventemitter3/index.mjs","../src/types/index.ts","../src/core/AuthProvider.ts","../src/utils/phoneFormatter.ts","../src/core/CallManager.ts"],"names":["exports","result2","offset","result","expected","found","x","a","b","c","d","ReflectApply","ReflectOwnKeys","NumberIsNaN","EventEmitter","once","useColors","require_RequestSender","JsSIP"],"mappings":"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","file":"index.js","sourcesContent":["{\n\t\"name\": \"jssip\",\n\t\"title\": \"JsSIP\",\n\t\"description\": \"The Javascript SIP library\",\n\t\"version\": \"3.13.5\",\n\t\"homepage\": \"https://jssip.net\",\n\t\"contributors\": [\n\t\t\"José Luis Millán <jmillan@aliax.net> (https://github.com/jmillan)\",\n\t\t\"Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)\"\n\t],\n\t\"types\": \"lib/JsSIP.d.ts\",\n\t\"main\": \"lib/JsSIP.js\",\n\t\"keywords\": [\n\t\t\"sip\",\n\t\t\"websocket\",\n\t\t\"webrtc\",\n\t\t\"node\",\n\t\t\"browser\",\n\t\t\"library\"\n\t],\n\t\"license\": \"MIT\",\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"https://github.com/versatica/JsSIP.git\"\n\t},\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/versatica/JsSIP/issues\"\n\t},\n\t\"files\": [\n\t\t\"LICENSE\",\n\t\t\"README.md\",\n\t\t\"npm-scripts.mjs\",\n\t\t\"lib\"\n\t],\n\t\"scripts\": {\n\t\t\"lint\": \"node npm-scripts.mjs lint\",\n\t\t\"lint:fix\": \"node npm-scripts.mjs lint:fix\",\n\t\t\"test\": \"node npm-scripts.mjs test\",\n\t\t\"coverage\": \"node npm-scripts.mjs coverage\",\n\t\t\"build\": \"node npm-scripts.mjs build\",\n\t\t\"typescript:build\": \"node npm-scripts.mjs typescript:build\",\n\t\t\"release\": \"node npm-scripts.mjs release\",\n\t\t\"docs\": \"node npm-scripts.mjs docs\",\n\t\t\"docs:watch\": \"node npm-scripts.mjs docs:watch\",\n\t\t\"docs:check\": \"node npm-scripts.mjs docs:check\"\n\t},\n\t\"dependencies\": {\n\t\t\"debug\": \"^4.3.1\",\n\t\t\"events\": \"^3.3.0\",\n\t\t\"sdp-transform\": \"^2.14.1\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@eslint/eslintrc\": \"^3.3.3\",\n\t\t\"@eslint/js\": \"^9.39.2\",\n\t\t\"@types/debug\": \"^4.1.12\",\n\t\t\"@types/events\": \"^3.0.3\",\n\t\t\"@types/jest\": \"^30.0.0\",\n\t\t\"@types/node\": \"^25.0.10\",\n\t\t\"cpx\": \"^1.5.0\",\n\t\t\"esbuild\": \"^0.27.2\",\n\t\t\"eslint\": \"^9.39.1\",\n\t\t\"eslint-config-prettier\": \"^10.1.8\",\n\t\t\"eslint-plugin-jest\": \"^29.12.1\",\n\t\t\"eslint-plugin-prettier\": \"^5.5.5\",\n\t\t\"globals\": \"^17.0.0\",\n\t\t\"jest\": \"^30.2.0\",\n\t\t\"open-cli\": \"^8.0.0\",\n\t\t\"pegjs\": \"^0.7.0\",\n\t\t\"prettier\": \"^3.8.1\",\n\t\t\"ts-jest\": \"^29.4.6\",\n\t\t\"typedoc\": \"^0.28.16\",\n\t\t\"typescript\": \"^5.9.3\",\n\t\t\"typescript-eslint\": \"^8.53.1\"\n\t}\n}\n","\"use strict\";\nconst pkg = require('../package.json');\nmodule.exports = {\n USER_AGENT: `${pkg.title} ${pkg.version}`,\n // SIP scheme.\n SIP: 'sip',\n SIPS: 'sips',\n // End and Failure causes.\n causes: {\n // Generic error causes.\n CONNECTION_ERROR: 'Connection Error',\n REQUEST_TIMEOUT: 'Request Timeout',\n SIP_FAILURE_CODE: 'SIP Failure Code',\n INTERNAL_ERROR: 'Internal Error',\n // SIP error causes.\n BUSY: 'Busy',\n REJECTED: 'Rejected',\n REDIRECTED: 'Redirected',\n UNAVAILABLE: 'Unavailable',\n NOT_FOUND: 'Not Found',\n ADDRESS_INCOMPLETE: 'Address Incomplete',\n INCOMPATIBLE_SDP: 'Incompatible SDP',\n MISSING_SDP: 'Missing SDP',\n AUTHENTICATION_ERROR: 'Authentication Error',\n // Session error causes.\n BYE: 'Terminated',\n WEBRTC_ERROR: 'WebRTC Error',\n CANCELED: 'Canceled',\n NO_ANSWER: 'No Answer',\n EXPIRES: 'Expires',\n NO_ACK: 'No ACK',\n DIALOG_ERROR: 'Dialog Error',\n USER_DENIED_MEDIA_ACCESS: 'User Denied Media Access',\n BAD_MEDIA_DESCRIPTION: 'Bad Media Description',\n RTP_TIMEOUT: 'RTP Timeout',\n },\n SIP_ERROR_CAUSES: {\n REDIRECTED: [300, 301, 302, 305, 380],\n BUSY: [486, 600],\n REJECTED: [403, 603],\n NOT_FOUND: [404, 604],\n UNAVAILABLE: [480, 410, 408, 430],\n ADDRESS_INCOMPLETE: [484, 424],\n INCOMPATIBLE_SDP: [488, 606],\n AUTHENTICATION_ERROR: [401, 407],\n },\n // SIP Methods.\n ACK: 'ACK',\n BYE: 'BYE',\n CANCEL: 'CANCEL',\n INFO: 'INFO',\n INVITE: 'INVITE',\n MESSAGE: 'MESSAGE',\n NOTIFY: 'NOTIFY',\n OPTIONS: 'OPTIONS',\n REGISTER: 'REGISTER',\n REFER: 'REFER',\n UPDATE: 'UPDATE',\n SUBSCRIBE: 'SUBSCRIBE',\n // DTMF transport methods.\n DTMF_TRANSPORT: {\n INFO: 'INFO',\n RFC2833: 'RFC2833',\n },\n /* SIP Response Reasons\n * DOC: https://www.iana.org/assignments/sip-parameters\n * Copied from https://github.com/versatica/OverSIP/blob/master/lib/oversip/sip/constants.rb#L7\n */\n REASON_PHRASE: {\n 100: 'Trying',\n 180: 'Ringing',\n 181: 'Call Is Being Forwarded',\n 182: 'Queued',\n 183: 'Session Progress',\n 199: 'Early Dialog Terminated', // draft-ietf-sipcore-199\n 200: 'OK',\n 202: 'Accepted', // RFC 3265\n 204: 'No Notification', // RFC 5839\n 300: 'Multiple Choices',\n 301: 'Moved Permanently',\n 302: 'Moved Temporarily',\n 305: 'Use Proxy',\n 380: 'Alternative Service',\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Timeout',\n 410: 'Gone',\n 412: 'Conditional Request Failed', // RFC 3903\n 413: 'Request Entity Too Large',\n 414: 'Request-URI Too Long',\n 415: 'Unsupported Media Type',\n 416: 'Unsupported URI Scheme',\n 417: 'Unknown Resource-Priority', // RFC 4412\n 420: 'Bad Extension',\n 421: 'Extension Required',\n 422: 'Session Interval Too Small', // RFC 4028\n 423: 'Interval Too Brief',\n 424: 'Bad Location Information', // RFC 6442\n 428: 'Use Identity Header', // RFC 4474\n 429: 'Provide Referrer Identity', // RFC 3892\n 430: 'Flow Failed', // RFC 5626\n 433: 'Anonymity Disallowed', // RFC 5079\n 436: 'Bad Identity-Info', // RFC 4474\n 437: 'Unsupported Certificate', // RFC 4744\n 438: 'Invalid Identity Header', // RFC 4744\n 439: 'First Hop Lacks Outbound Support', // RFC 5626\n 440: 'Max-Breadth Exceeded', // RFC 5393\n 469: 'Bad Info Package', // draft-ietf-sipcore-info-events\n 470: 'Consent Needed', // RFC 5360\n 478: 'Unresolvable Destination', // Custom code copied from Kamailio.\n 480: 'Temporarily Unavailable',\n 481: 'Call/Transaction Does Not Exist',\n 482: 'Loop Detected',\n 483: 'Too Many Hops',\n 484: 'Address Incomplete',\n 485: 'Ambiguous',\n 486: 'Busy Here',\n 487: 'Request Terminated',\n 488: 'Not Acceptable Here',\n 489: 'Bad Event', // RFC 3265\n 491: 'Request Pending',\n 493: 'Undecipherable',\n 494: 'Security Agreement Required', // RFC 3329\n 500: 'JsSIP Internal Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Server Time-out',\n 505: 'Version Not Supported',\n 513: 'Message Too Large',\n 580: 'Precondition Failure', // RFC 3312\n 600: 'Busy Everywhere',\n 603: 'Decline',\n 604: 'Does Not Exist Anywhere',\n 606: 'Not Acceptable',\n },\n ALLOWED_METHODS: 'INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY,SUBSCRIBE',\n ACCEPTED_BODY_TYPES: 'application/sdp, application/dtmf-relay',\n MAX_FORWARDS: 69,\n SESSION_EXPIRES: 90,\n MIN_SESSION_EXPIRES: 60,\n CONNECTION_RECOVERY_MAX_INTERVAL: 30,\n CONNECTION_RECOVERY_MIN_INTERVAL: 2,\n};\n","\"use strict\";\nclass ConfigurationError extends Error {\n constructor(parameter, value) {\n super();\n this.code = 1;\n this.name = 'CONFIGURATION_ERROR';\n this.parameter = parameter;\n this.value = value;\n this.message = !this.value\n ? `Missing parameter: ${this.parameter}`\n : `Invalid value ${JSON.stringify(this.value)} for parameter \"${this.parameter}\"`;\n }\n}\nclass InvalidStateError extends Error {\n constructor(status) {\n super();\n this.code = 2;\n this.name = 'INVALID_STATE_ERROR';\n this.status = status;\n this.message = `Invalid status: ${status}`;\n }\n}\nclass NotSupportedError extends Error {\n constructor(message) {\n super();\n this.code = 3;\n this.name = 'NOT_SUPPORTED_ERROR';\n this.message = message;\n }\n}\nclass NotReadyError extends Error {\n constructor(message) {\n super();\n this.code = 4;\n this.name = 'NOT_READY_ERROR';\n this.message = message;\n }\n}\nmodule.exports = {\n ConfigurationError,\n InvalidStateError,\n NotSupportedError,\n NotReadyError,\n};\n","\"use strict\";\nconst URI = require('./URI');\nconst Grammar = require('./Grammar');\nmodule.exports = class NameAddrHeader {\n /**\n * Parse the given string and returns a NameAddrHeader instance or undefined if\n * it is an invalid NameAddrHeader.\n */\n static parse(name_addr_header) {\n name_addr_header = Grammar.parse(name_addr_header, 'Name_Addr_Header');\n if (name_addr_header !== -1) {\n return name_addr_header;\n }\n else {\n return undefined;\n }\n }\n constructor(uri, display_name, parameters) {\n // Checks.\n if (!uri || !(uri instanceof URI)) {\n throw new TypeError('missing or invalid \"uri\" parameter');\n }\n // Initialize parameters.\n this._uri = uri;\n this._parameters = {};\n this.display_name = display_name;\n for (const param in parameters) {\n if (Object.prototype.hasOwnProperty.call(parameters, param)) {\n this.setParam(param, parameters[param]);\n }\n }\n }\n get uri() {\n return this._uri;\n }\n get display_name() {\n return this._display_name;\n }\n set display_name(value) {\n this._display_name = value === 0 ? '0' : value;\n }\n setParam(key, value) {\n if (key) {\n this._parameters[key.toLowerCase()] =\n typeof value === 'undefined' || value === null\n ? null\n : value.toString();\n }\n }\n getParam(key) {\n if (key) {\n return this._parameters[key.toLowerCase()];\n }\n }\n hasParam(key) {\n if (key) {\n return ((this._parameters.hasOwnProperty(key.toLowerCase()) && true) || false);\n }\n }\n deleteParam(parameter) {\n parameter = parameter.toLowerCase();\n if (this._parameters.hasOwnProperty(parameter)) {\n const value = this._parameters[parameter];\n delete this._parameters[parameter];\n return value;\n }\n }\n clearParams() {\n this._parameters = {};\n }\n clone() {\n return new NameAddrHeader(this._uri.clone(), this._display_name, JSON.parse(JSON.stringify(this._parameters)));\n }\n _quote(str) {\n return str.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n }\n toString() {\n let body = this._display_name\n ? `\"${this._quote(this._display_name)}\" `\n : '';\n body += `<${this._uri.toString()}>`;\n for (const parameter in this._parameters) {\n if (Object.prototype.hasOwnProperty.call(this._parameters, parameter)) {\n body += `;${parameter}`;\n if (this._parameters[parameter] !== null) {\n body += `=${this._parameters[parameter]}`;\n }\n }\n }\n return body;\n }\n};\n","\"use strict\";\nmodule.exports = (function () {\n /*\n * Generated by PEG.js 0.7.0.\n *\n * http://pegjs.majda.cz/\n */\n function quote(s) {\n /*\n * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a\n * string literal except for the closing quote character, backslash,\n * carriage return, line separator, paragraph separator, and line feed.\n * Any character may appear in the form of an escape sequence.\n *\n * For portability, we also escape escape all control and non-ASCII\n * characters. Note that \"\\0\" and \"\\v\" escape sequences are not used\n * because JSHint does not like the first and IE the second.\n */\n return '\"' + s\n .replace(/\\\\/g, '\\\\\\\\') // backslash\n .replace(/\"/g, '\\\\\"') // closing quote character\n .replace(/\\x08/g, '\\\\b') // backspace\n .replace(/\\t/g, '\\\\t') // horizontal tab\n .replace(/\\n/g, '\\\\n') // line feed\n .replace(/\\f/g, '\\\\f') // form feed\n .replace(/\\r/g, '\\\\r') // carriage return\n .replace(/[\\x00-\\x07\\x0B\\x0E-\\x1F\\x80-\\uFFFF]/g, escape)\n + '\"';\n }\n var result = {\n /*\n * Parses the input with a generated parser. If the parsing is successfull,\n * returns a value explicitly or implicitly specified by the grammar from\n * which the parser was generated (see |PEG.buildParser|). If the parsing is\n * unsuccessful, throws |PEG.parser.SyntaxError| describing the error.\n */\n parse: function (input, startRule) {\n var parseFunctions = {\n \"CRLF\": parse_CRLF,\n \"DIGIT\": parse_DIGIT,\n \"ALPHA\": parse_ALPHA,\n \"HEXDIG\": parse_HEXDIG,\n \"WSP\": parse_WSP,\n \"OCTET\": parse_OCTET,\n \"DQUOTE\": parse_DQUOTE,\n \"SP\": parse_SP,\n \"HTAB\": parse_HTAB,\n \"alphanum\": parse_alphanum,\n \"reserved\": parse_reserved,\n \"unreserved\": parse_unreserved,\n \"mark\": parse_mark,\n \"escaped\": parse_escaped,\n \"LWS\": parse_LWS,\n \"SWS\": parse_SWS,\n \"HCOLON\": parse_HCOLON,\n \"TEXT_UTF8_TRIM\": parse_TEXT_UTF8_TRIM,\n \"TEXT_UTF8char\": parse_TEXT_UTF8char,\n \"UTF8_NONASCII\": parse_UTF8_NONASCII,\n \"UTF8_CONT\": parse_UTF8_CONT,\n \"LHEX\": parse_LHEX,\n \"token\": parse_token,\n \"token_nodot\": parse_token_nodot,\n \"separators\": parse_separators,\n \"word\": parse_word,\n \"STAR\": parse_STAR,\n \"SLASH\": parse_SLASH,\n \"EQUAL\": parse_EQUAL,\n \"LPAREN\": parse_LPAREN,\n \"RPAREN\": parse_RPAREN,\n \"RAQUOT\": parse_RAQUOT,\n \"LAQUOT\": parse_LAQUOT,\n \"COMMA\": parse_COMMA,\n \"SEMI\": parse_SEMI,\n \"COLON\": parse_COLON,\n \"LDQUOT\": parse_LDQUOT,\n \"RDQUOT\": parse_RDQUOT,\n \"comment\": parse_comment,\n \"ctext\": parse_ctext,\n \"quoted_string\": parse_quoted_string,\n \"quoted_string_clean\": parse_quoted_string_clean,\n \"qdtext\": parse_qdtext,\n \"quoted_pair\": parse_quoted_pair,\n \"SIP_URI_noparams\": parse_SIP_URI_noparams,\n \"SIP_URI\": parse_SIP_URI,\n \"uri_scheme\": parse_uri_scheme,\n \"uri_scheme_sips\": parse_uri_scheme_sips,\n \"uri_scheme_sip\": parse_uri_scheme_sip,\n \"userinfo\": parse_userinfo,\n \"user\": parse_user,\n \"user_unreserved\": parse_user_unreserved,\n \"password\": parse_password,\n \"hostport\": parse_hostport,\n \"host\": parse_host,\n \"hostname\": parse_hostname,\n \"domainlabel\": parse_domainlabel,\n \"toplabel\": parse_toplabel,\n \"IPv6reference\": parse_IPv6reference,\n \"IPv6address\": parse_IPv6address,\n \"h16\": parse_h16,\n \"ls32\": parse_ls32,\n \"IPv4address\": parse_IPv4address,\n \"dec_octet\": parse_dec_octet,\n \"port\": parse_port,\n \"uri_parameters\": parse_uri_parameters,\n \"uri_parameter\": parse_uri_parameter,\n \"transport_param\": parse_transport_param,\n \"user_param\": parse_user_param,\n \"method_param\": parse_method_param,\n \"ttl_param\": parse_ttl_param,\n \"maddr_param\": parse_maddr_param,\n \"lr_param\": parse_lr_param,\n \"other_param\": parse_other_param,\n \"pname\": parse_pname,\n \"pvalue\": parse_pvalue,\n \"paramchar\": parse_paramchar,\n \"param_unreserved\": parse_param_unreserved,\n \"headers\": parse_headers,\n \"header\": parse_header,\n \"hname\": parse_hname,\n \"hvalue\": parse_hvalue,\n \"hnv_unreserved\": parse_hnv_unreserved,\n \"Request_Response\": parse_Request_Response,\n \"Request_Line\": parse_Request_Line,\n \"Request_URI\": parse_Request_URI,\n \"absoluteURI\": parse_absoluteURI,\n \"hier_part\": parse_hier_part,\n \"net_path\": parse_net_path,\n \"abs_path\": parse_abs_path,\n \"opaque_part\": parse_opaque_part,\n \"uric\": parse_uric,\n \"uric_no_slash\": parse_uric_no_slash,\n \"path_segments\": parse_path_segments,\n \"segment\": parse_segment,\n \"param\": parse_param,\n \"pchar\": parse_pchar,\n \"scheme\": parse_scheme,\n \"authority\": parse_authority,\n \"srvr\": parse_srvr,\n \"reg_name\": parse_reg_name,\n \"query\": parse_query,\n \"SIP_Version\": parse_SIP_Version,\n \"INVITEm\": parse_INVITEm,\n \"ACKm\": parse_ACKm,\n \"OPTIONSm\": parse_OPTIONSm,\n \"BYEm\": parse_BYEm,\n \"CANCELm\": parse_CANCELm,\n \"REGISTERm\": parse_REGISTERm,\n \"SUBSCRIBEm\": parse_SUBSCRIBEm,\n \"NOTIFYm\": parse_NOTIFYm,\n \"REFERm\": parse_REFERm,\n \"Method\": parse_Method,\n \"Status_Line\": parse_Status_Line,\n \"Status_Code\": parse_Status_Code,\n \"extension_code\": parse_extension_code,\n \"Reason_Phrase\": parse_Reason_Phrase,\n \"Allow_Events\": parse_Allow_Events,\n \"Call_ID\": parse_Call_ID,\n \"Contact\": parse_Contact,\n \"contact_param\": parse_contact_param,\n \"name_addr\": parse_name_addr,\n \"display_name\": parse_display_name,\n \"contact_params\": parse_contact_params,\n \"c_p_q\": parse_c_p_q,\n \"c_p_expires\": parse_c_p_expires,\n \"delta_seconds\": parse_delta_seconds,\n \"qvalue\": parse_qvalue,\n \"generic_param\": parse_generic_param,\n \"gen_value\": parse_gen_value,\n \"Content_Disposition\": parse_Content_Disposition,\n \"disp_type\": parse_disp_type,\n \"disp_param\": parse_disp_param,\n \"handling_param\": parse_handling_param,\n \"Content_Encoding\": parse_Content_Encoding,\n \"Content_Length\": parse_Content_Length,\n \"Content_Type\": parse_Content_Type,\n \"media_type\": parse_media_type,\n \"m_type\": parse_m_type,\n \"discrete_type\": parse_discrete_type,\n \"composite_type\": parse_composite_type,\n \"extension_token\": parse_extension_token,\n \"x_token\": parse_x_token,\n \"m_subtype\": parse_m_subtype,\n \"m_parameter\": parse_m_parameter,\n \"m_value\": parse_m_value,\n \"CSeq\": parse_CSeq,\n \"CSeq_value\": parse_CSeq_value,\n \"Expires\": parse_Expires,\n \"Event\": parse_Event,\n \"event_type\": parse_event_type,\n \"From\": parse_From,\n \"from_param\": parse_from_param,\n \"tag_param\": parse_tag_param,\n \"Max_Forwards\": parse_Max_Forwards,\n \"Min_Expires\": parse_Min_Expires,\n \"Name_Addr_Header\": parse_Name_Addr_Header,\n \"Proxy_Authenticate\": parse_Proxy_Authenticate,\n \"challenge\": parse_challenge,\n \"other_challenge\": parse_other_challenge,\n \"auth_param\": parse_auth_param,\n \"digest_cln\": parse_digest_cln,\n \"realm\": parse_realm,\n \"realm_value\": parse_realm_value,\n \"domain\": parse_domain,\n \"URI\": parse_URI,\n \"nonce\": parse_nonce,\n \"nonce_value\": parse_nonce_value,\n \"opaque\": parse_opaque,\n \"stale\": parse_stale,\n \"algorithm\": parse_algorithm,\n \"qop_options\": parse_qop_options,\n \"qop_value\": parse_qop_value,\n \"Proxy_Require\": parse_Proxy_Require,\n \"Record_Route\": parse_Record_Route,\n \"rec_route\": parse_rec_route,\n \"Reason\": parse_Reason,\n \"reason_param\": parse_reason_param,\n \"reason_cause\": parse_reason_cause,\n \"Require\": parse_Require,\n \"Route\": parse_Route,\n \"route_param\": parse_route_param,\n \"Subscription_State\": parse_Subscription_State,\n \"substate_value\": parse_substate_value,\n \"subexp_params\": parse_subexp_params,\n \"event_reason_value\": parse_event_reason_value,\n \"Subject\": parse_Subject,\n \"Supported\": parse_Supported,\n \"To\": parse_To,\n \"to_param\": parse_to_param,\n \"Via\": parse_Via,\n \"via_param\": parse_via_param,\n \"via_params\": parse_via_params,\n \"via_ttl\": parse_via_ttl,\n \"via_maddr\": parse_via_maddr,\n \"via_received\": parse_via_received,\n \"via_branch\": parse_via_branch,\n \"response_port\": parse_response_port,\n \"rport\": parse_rport,\n \"sent_protocol\": parse_sent_protocol,\n \"protocol_name\": parse_protocol_name,\n \"transport\": parse_transport,\n \"sent_by\": parse_sent_by,\n \"via_host\": parse_via_host,\n \"via_port\": parse_via_port,\n \"ttl\": parse_ttl,\n \"WWW_Authenticate\": parse_WWW_Authenticate,\n \"Session_Expires\": parse_Session_Expires,\n \"s_e_expires\": parse_s_e_expires,\n \"s_e_params\": parse_s_e_params,\n \"s_e_refresher\": parse_s_e_refresher,\n \"extension_header\": parse_extension_header,\n \"header_value\": parse_header_value,\n \"message_body\": parse_message_body,\n \"uuid_URI\": parse_uuid_URI,\n \"uuid\": parse_uuid,\n \"hex4\": parse_hex4,\n \"hex8\": parse_hex8,\n \"hex12\": parse_hex12,\n \"Refer_To\": parse_Refer_To,\n \"Replaces\": parse_Replaces,\n \"call_id\": parse_call_id,\n \"replaces_param\": parse_replaces_param,\n \"to_tag\": parse_to_tag,\n \"from_tag\": parse_from_tag,\n \"early_flag\": parse_early_flag\n };\n if (startRule !== undefined) {\n if (parseFunctions[startRule] === undefined) {\n throw new Error(\"Invalid rule name: \" + quote(startRule) + \".\");\n }\n }\n else {\n startRule = \"CRLF\";\n }\n var pos = 0;\n var reportFailures = 0;\n var rightmostFailuresPos = 0;\n var rightmostFailuresExpected = [];\n function padLeft(input, padding, length) {\n var result = input;\n var padLength = length - input.length;\n for (var i = 0; i < padLength; i++) {\n result = padding + result;\n }\n return result;\n }\n function escape(ch) {\n var charCode = ch.charCodeAt(0);\n var escapeChar;\n var length;\n if (charCode <= 0xFF) {\n escapeChar = 'x';\n length = 2;\n }\n else {\n escapeChar = 'u';\n length = 4;\n }\n return '\\\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length);\n }\n function matchFailed(failure) {\n if (pos < rightmostFailuresPos) {\n return;\n }\n if (pos > rightmostFailuresPos) {\n rightmostFailuresPos = pos;\n rightmostFailuresExpected = [];\n }\n rightmostFailuresExpected.push(failure);\n }\n function parse_CRLF() {\n var result0;\n if (input.substr(pos, 2) === \"\\r\\n\") {\n result0 = \"\\r\\n\";\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\r\\\\n\\\"\");\n }\n }\n return result0;\n }\n function parse_DIGIT() {\n var result0;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n return result0;\n }\n function parse_ALPHA() {\n var result0;\n if (/^[a-zA-Z]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-zA-Z]\");\n }\n }\n return result0;\n }\n function parse_HEXDIG() {\n var result0;\n if (/^[0-9a-fA-F]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9a-fA-F]\");\n }\n }\n return result0;\n }\n function parse_WSP() {\n var result0;\n result0 = parse_SP();\n if (result0 === null) {\n result0 = parse_HTAB();\n }\n return result0;\n }\n function parse_OCTET() {\n var result0;\n if (/^[\\0-\\xFF]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\0-\\\\xFF]\");\n }\n }\n return result0;\n }\n function parse_DQUOTE() {\n var result0;\n if (/^[\"]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\"]\");\n }\n }\n return result0;\n }\n function parse_SP() {\n var result0;\n if (input.charCodeAt(pos) === 32) {\n result0 = \" \";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\" \\\"\");\n }\n }\n return result0;\n }\n function parse_HTAB() {\n var result0;\n if (input.charCodeAt(pos) === 9) {\n result0 = \"\\t\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\t\\\"\");\n }\n }\n return result0;\n }\n function parse_alphanum() {\n var result0;\n if (/^[a-zA-Z0-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-zA-Z0-9]\");\n }\n }\n return result0;\n }\n function parse_reserved() {\n var result0;\n if (input.charCodeAt(pos) === 59) {\n result0 = \";\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 64) {\n result0 = \"@\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 44) {\n result0 = \",\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_unreserved() {\n var result0;\n result0 = parse_alphanum();\n if (result0 === null) {\n result0 = parse_mark();\n }\n return result0;\n }\n function parse_mark() {\n var result0;\n if (input.charCodeAt(pos) === 45) {\n result0 = \"-\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 95) {\n result0 = \"_\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 46) {\n result0 = \".\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 33) {\n result0 = \"!\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 126) {\n result0 = \"~\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 42) {\n result0 = \"*\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 39) {\n result0 = \"'\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 40) {\n result0 = \"(\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 41) {\n result0 = \")\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_escaped() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 37) {\n result0 = \"%\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_HEXDIG();\n if (result1 !== null) {\n result2 = parse_HEXDIG();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, escaped) { return escaped.join(''); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_LWS() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n pos2 = pos;\n result0 = [];\n result1 = parse_WSP();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_WSP();\n }\n if (result0 !== null) {\n result1 = parse_CRLF();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos2;\n }\n }\n else {\n result0 = null;\n pos = pos2;\n }\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result2 = parse_WSP();\n if (result2 !== null) {\n result1 = [];\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_WSP();\n }\n }\n else {\n result1 = null;\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \" \"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_SWS() {\n var result0;\n result0 = parse_LWS();\n result0 = result0 !== null ? result0 : \"\";\n return result0;\n }\n function parse_HCOLON() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = [];\n result1 = parse_SP();\n if (result1 === null) {\n result1 = parse_HTAB();\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_SP();\n if (result1 === null) {\n result1 = parse_HTAB();\n }\n }\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return ':'; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_TEXT_UTF8_TRIM() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result1 = parse_TEXT_UTF8char();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_TEXT_UTF8char();\n }\n }\n else {\n result0 = null;\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = [];\n result3 = parse_LWS();\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_LWS();\n }\n if (result2 !== null) {\n result3 = parse_TEXT_UTF8char();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = [];\n result3 = parse_LWS();\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_LWS();\n }\n if (result2 !== null) {\n result3 = parse_TEXT_UTF8char();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n return input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_TEXT_UTF8char() {\n var result0;\n if (/^[!-~]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[!-~]\");\n }\n }\n if (result0 === null) {\n result0 = parse_UTF8_NONASCII();\n }\n return result0;\n }\n function parse_UTF8_NONASCII() {\n var result0;\n if (/^[\\x80-\\uFFFF]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\x80-\\\\uFFFF]\");\n }\n }\n return result0;\n }\n function parse_UTF8_CONT() {\n var result0;\n if (/^[\\x80-\\xBF]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\x80-\\\\xBF]\");\n }\n }\n return result0;\n }\n function parse_LHEX() {\n var result0;\n result0 = parse_DIGIT();\n if (result0 === null) {\n if (/^[a-f]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-f]\");\n }\n }\n }\n return result0;\n }\n function parse_token() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n return input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_token_nodot() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n return input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_separators() {\n var result0;\n if (input.charCodeAt(pos) === 40) {\n result0 = \"(\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 41) {\n result0 = \")\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 60) {\n result0 = \"<\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"<\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 62) {\n result0 = \">\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\">\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 64) {\n result0 = \"@\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 44) {\n result0 = \",\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 59) {\n result0 = \";\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 92) {\n result0 = \"\\\\\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\\\\\\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_DQUOTE();\n if (result0 === null) {\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 91) {\n result0 = \"[\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 93) {\n result0 = \"]\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 123) {\n result0 = \"{\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"{\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 125) {\n result0 = \"}\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"}\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_SP();\n if (result0 === null) {\n result0 = parse_HTAB();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_word() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 40) {\n result1 = \"(\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 41) {\n result1 = \")\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 60) {\n result1 = \"<\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"<\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 62) {\n result1 = \">\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\">\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 92) {\n result1 = \"\\\\\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\\\\\\\\"\");\n }\n }\n if (result1 === null) {\n result1 = parse_DQUOTE();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 47) {\n result1 = \"/\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 91) {\n result1 = \"[\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 93) {\n result1 = \"]\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 63) {\n result1 = \"?\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 123) {\n result1 = \"{\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"{\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 125) {\n result1 = \"}\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"}\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 40) {\n result1 = \"(\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 41) {\n result1 = \")\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 60) {\n result1 = \"<\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"<\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 62) {\n result1 = \">\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\">\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 92) {\n result1 = \"\\\\\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\\\\\\\\"\");\n }\n }\n if (result1 === null) {\n result1 = parse_DQUOTE();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 47) {\n result1 = \"/\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 91) {\n result1 = \"[\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 93) {\n result1 = \"]\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 63) {\n result1 = \"?\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 123) {\n result1 = \"{\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"{\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 125) {\n result1 = \"}\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"}\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n return input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_STAR() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \"*\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_SLASH() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 47) {\n result1 = \"/\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \"/\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_EQUAL() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \"=\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_LPAREN() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 40) {\n result1 = \"(\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \"(\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_RPAREN() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 41) {\n result1 = \")\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \")\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_RAQUOT() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 62) {\n result0 = \">\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\">\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_SWS();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \">\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_LAQUOT() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 60) {\n result1 = \"<\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"<\\\"\");\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \"<\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_COMMA() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 44) {\n result1 = \",\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \",\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_SEMI() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 59) {\n result1 = \";\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \";\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_COLON() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \":\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_LDQUOT() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n result1 = parse_DQUOTE();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \"\\\"\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_RDQUOT() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DQUOTE();\n if (result0 !== null) {\n result1 = parse_SWS();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) { return \"\\\"\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_comment() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_LPAREN();\n if (result0 !== null) {\n result1 = [];\n result2 = parse_ctext();\n if (result2 === null) {\n result2 = parse_quoted_pair();\n if (result2 === null) {\n result2 = parse_comment();\n }\n }\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_ctext();\n if (result2 === null) {\n result2 = parse_quoted_pair();\n if (result2 === null) {\n result2 = parse_comment();\n }\n }\n }\n if (result1 !== null) {\n result2 = parse_RPAREN();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_ctext() {\n var result0;\n if (/^[!-']/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[!-']\");\n }\n }\n if (result0 === null) {\n if (/^[*-[]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[*-[]\");\n }\n }\n if (result0 === null) {\n if (/^[\\]-~]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\]-~]\");\n }\n }\n if (result0 === null) {\n result0 = parse_UTF8_NONASCII();\n if (result0 === null) {\n result0 = parse_LWS();\n }\n }\n }\n }\n return result0;\n }\n function parse_quoted_string() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n result1 = parse_DQUOTE();\n if (result1 !== null) {\n result2 = [];\n result3 = parse_qdtext();\n if (result3 === null) {\n result3 = parse_quoted_pair();\n }\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_qdtext();\n if (result3 === null) {\n result3 = parse_quoted_pair();\n }\n }\n if (result2 !== null) {\n result3 = parse_DQUOTE();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n return input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_quoted_string_clean() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n result1 = parse_DQUOTE();\n if (result1 !== null) {\n result2 = [];\n result3 = parse_qdtext();\n if (result3 === null) {\n result3 = parse_quoted_pair();\n }\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_qdtext();\n if (result3 === null) {\n result3 = parse_quoted_pair();\n }\n }\n if (result2 !== null) {\n result3 = parse_DQUOTE();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n var trimmed = input\n .substring(pos, offset)\n .trim();\n return trimmed\n .substring(1, trimmed.length - 1) // remove outer quotes\n .replace(/\\\\([\\x00-\\x09\\x0b-\\x0c\\x0e-\\x7f])/g, '$1');\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_qdtext() {\n var result0;\n result0 = parse_LWS();\n if (result0 === null) {\n if (input.charCodeAt(pos) === 33) {\n result0 = \"!\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result0 === null) {\n if (/^[#-[]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[#-[]\");\n }\n }\n if (result0 === null) {\n if (/^[\\]-~]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\]-~]\");\n }\n }\n if (result0 === null) {\n result0 = parse_UTF8_NONASCII();\n }\n }\n }\n }\n return result0;\n }\n function parse_quoted_pair() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n if (input.charCodeAt(pos) === 92) {\n result0 = \"\\\\\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\\\\\\\\"\");\n }\n }\n if (result0 !== null) {\n if (/^[\\0-\\t]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\0-\\\\t]\");\n }\n }\n if (result1 === null) {\n if (/^[\\x0B-\\f]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\x0B-\\\\f]\");\n }\n }\n if (result1 === null) {\n if (/^[\\x0E-]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\x0E-]\");\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_SIP_URI_noparams() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_uri_scheme();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_userinfo();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_hostport();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n try {\n data.uri = new URI(data.scheme, data.user, data.host, data.port);\n delete data.scheme;\n delete data.user;\n delete data.host;\n delete data.host_type;\n delete data.port;\n }\n catch (e) {\n data = -1;\n }\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_SIP_URI() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_uri_scheme();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_userinfo();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_hostport();\n if (result3 !== null) {\n result4 = parse_uri_parameters();\n if (result4 !== null) {\n result5 = parse_headers();\n result5 = result5 !== null ? result5 : \"\";\n if (result5 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n var header;\n try {\n data.uri = new URI(data.scheme, data.user, data.host, data.port, data.uri_params, data.uri_headers);\n delete data.scheme;\n delete data.user;\n delete data.host;\n delete data.host_type;\n delete data.port;\n delete data.uri_params;\n if (startRule === 'SIP_URI') {\n data = data.uri;\n }\n }\n catch (e) {\n data = -1;\n }\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_uri_scheme() {\n var result0;\n result0 = parse_uri_scheme_sips();\n if (result0 === null) {\n result0 = parse_uri_scheme_sip();\n }\n return result0;\n }\n function parse_uri_scheme_sips() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"sips\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"sips\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function (offset, scheme) {\n data.scheme = scheme.toLowerCase();\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_uri_scheme_sip() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sip\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"sip\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function (offset, scheme) {\n data.scheme = scheme.toLowerCase();\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_userinfo() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_user();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_password();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 64) {\n result2 = \"@\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.user = decodeURIComponent(input.substring(pos - 1, offset));\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_user() {\n var result0, result1;\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n result1 = parse_user_unreserved();\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n result1 = parse_user_unreserved();\n }\n }\n }\n }\n else {\n result0 = null;\n }\n return result0;\n }\n function parse_user_unreserved() {\n var result0;\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 44) {\n result0 = \",\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 59) {\n result0 = \";\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_password() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result0 = [];\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 38) {\n result1 = \"&\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 36) {\n result1 = \"$\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 44) {\n result1 = \",\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 38) {\n result1 = \"&\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 36) {\n result1 = \"$\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 44) {\n result1 = \",\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.password = input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_hostport() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_host();\n if (result0 !== null) {\n pos1 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_port();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos1;\n }\n }\n else {\n result1 = null;\n pos = pos1;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_host() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_hostname();\n if (result0 === null) {\n result0 = parse_IPv4address();\n if (result0 === null) {\n result0 = parse_IPv6reference();\n }\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.host = input.substring(pos, offset).toLowerCase();\n return data.host;\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_hostname() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = [];\n pos2 = pos;\n result1 = parse_domainlabel();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n while (result1 !== null) {\n result0.push(result1);\n pos2 = pos;\n result1 = parse_domainlabel();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n if (result0 !== null) {\n result1 = parse_toplabel();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.host_type = 'domain';\n return input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_domainlabel() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_alphanum();\n if (result0 !== null) {\n result1 = [];\n result2 = parse_alphanum();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 95) {\n result2 = \"_\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n }\n }\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_alphanum();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 95) {\n result2 = \"_\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_toplabel() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_ALPHA();\n if (result0 !== null) {\n result1 = [];\n result2 = parse_alphanum();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 95) {\n result2 = \"_\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n }\n }\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_alphanum();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 95) {\n result2 = \"_\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_IPv6reference() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 91) {\n result0 = \"[\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_IPv6address();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 93) {\n result2 = \"]\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.host_type = 'IPv6';\n return input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_IPv6address() {\n var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result5 = \":\";\n pos++;\n }\n else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_h16();\n if (result6 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result7 = \":\";\n pos++;\n }\n else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result7 !== null) {\n result8 = parse_h16();\n if (result8 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result9 = \":\";\n pos++;\n }\n else {\n result9 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result9 !== null) {\n result10 = parse_h16();\n if (result10 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result11 = \":\";\n pos++;\n }\n else {\n result11 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result11 !== null) {\n result12 = parse_ls32();\n if (result12 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n }\n else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n }\n else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_h16();\n if (result7 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result8 = \":\";\n pos++;\n }\n else {\n result8 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result8 !== null) {\n result9 = parse_h16();\n if (result9 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result10 = \":\";\n pos++;\n }\n else {\n result10 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result10 !== null) {\n result11 = parse_ls32();\n if (result11 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n }\n else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n }\n else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_h16();\n if (result7 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result8 = \":\";\n pos++;\n }\n else {\n result8 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result8 !== null) {\n result9 = parse_ls32();\n if (result9 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n }\n else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n }\n else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_ls32();\n if (result7 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n }\n else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_ls32();\n if (result5 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_ls32();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_ls32();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result1 = \"::\";\n pos += 2;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result5 = \":\";\n pos++;\n }\n else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_h16();\n if (result6 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result7 = \":\";\n pos++;\n }\n else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result7 !== null) {\n result8 = parse_h16();\n if (result8 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result9 = \":\";\n pos++;\n }\n else {\n result9 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result9 !== null) {\n result10 = parse_ls32();\n if (result10 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result2 = \"::\";\n pos += 2;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n }\n else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n }\n else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_h16();\n if (result7 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result8 = \":\";\n pos++;\n }\n else {\n result8 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result8 !== null) {\n result9 = parse_ls32();\n if (result9 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result3 = \"::\";\n pos += 2;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result5 = \":\";\n pos++;\n }\n else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_h16();\n if (result6 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result7 = \":\";\n pos++;\n }\n else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result7 !== null) {\n result8 = parse_ls32();\n if (result8 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n result3 = [result3, result4];\n }\n else {\n result3 = null;\n pos = pos2;\n }\n }\n else {\n result3 = null;\n pos = pos2;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result4 = \"::\";\n pos += 2;\n }\n else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n }\n else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_ls32();\n if (result7 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n result3 = [result3, result4];\n }\n else {\n result3 = null;\n pos = pos2;\n }\n }\n else {\n result3 = null;\n pos = pos2;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n }\n else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos2;\n }\n }\n else {\n result4 = null;\n pos = pos2;\n }\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result5 = \"::\";\n pos += 2;\n }\n else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_ls32();\n if (result6 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n result3 = [result3, result4];\n }\n else {\n result3 = null;\n pos = pos2;\n }\n }\n else {\n result3 = null;\n pos = pos2;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n }\n else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos2;\n }\n }\n else {\n result4 = null;\n pos = pos2;\n }\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result5 = \":\";\n pos++;\n }\n else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_h16();\n if (result6 !== null) {\n result5 = [result5, result6];\n }\n else {\n result5 = null;\n pos = pos2;\n }\n }\n else {\n result5 = null;\n pos = pos2;\n }\n result5 = result5 !== null ? result5 : \"\";\n if (result5 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result6 = \"::\";\n pos += 2;\n }\n else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_h16();\n if (result7 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n result3 = [result3, result4];\n }\n else {\n result3 = null;\n pos = pos2;\n }\n }\n else {\n result3 = null;\n pos = pos2;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n }\n else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos2;\n }\n }\n else {\n result4 = null;\n pos = pos2;\n }\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result5 = \":\";\n pos++;\n }\n else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_h16();\n if (result6 !== null) {\n result5 = [result5, result6];\n }\n else {\n result5 = null;\n pos = pos2;\n }\n }\n else {\n result5 = null;\n pos = pos2;\n }\n result5 = result5 !== null ? result5 : \"\";\n if (result5 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n }\n else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_h16();\n if (result7 !== null) {\n result6 = [result6, result7];\n }\n else {\n result6 = null;\n pos = pos2;\n }\n }\n else {\n result6 = null;\n pos = pos2;\n }\n result6 = result6 !== null ? result6 : \"\";\n if (result6 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result7 = \"::\";\n pos += 2;\n }\n else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result7 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.host_type = 'IPv6';\n return input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_h16() {\n var result0, result1, result2, result3;\n var pos0;\n pos0 = pos;\n result0 = parse_HEXDIG();\n if (result0 !== null) {\n result1 = parse_HEXDIG();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_HEXDIG();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_HEXDIG();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_ls32() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n result0 = parse_IPv4address();\n }\n return result0;\n }\n function parse_IPv4address() {\n var result0, result1, result2, result3, result4, result5, result6;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_dec_octet();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_dec_octet();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result3 = \".\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_dec_octet();\n if (result4 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result5 = \".\";\n pos++;\n }\n else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_dec_octet();\n if (result6 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.host_type = 'IPv4';\n return input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_dec_octet() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 2) === \"25\") {\n result0 = \"25\";\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"25\\\"\");\n }\n }\n if (result0 !== null) {\n if (/^[0-5]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-5]\");\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.charCodeAt(pos) === 50) {\n result0 = \"2\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"2\\\"\");\n }\n }\n if (result0 !== null) {\n if (/^[0-4]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-4]\");\n }\n }\n if (result1 !== null) {\n result2 = parse_DIGIT();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.charCodeAt(pos) === 49) {\n result0 = \"1\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"1\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result2 = parse_DIGIT();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (/^[1-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[1-9]\");\n }\n }\n if (result0 !== null) {\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n result0 = parse_DIGIT();\n }\n }\n }\n }\n return result0;\n }\n function parse_port() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DIGIT();\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result1 = parse_DIGIT();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_DIGIT();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_DIGIT();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result4 = parse_DIGIT();\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, port) {\n port = parseInt(port.join(''));\n data.port = port;\n return port;\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_uri_parameters() {\n var result0, result1, result2;\n var pos0;\n result0 = [];\n pos0 = pos;\n if (input.charCodeAt(pos) === 59) {\n result1 = \";\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_uri_parameter();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos0;\n }\n }\n else {\n result1 = null;\n pos = pos0;\n }\n while (result1 !== null) {\n result0.push(result1);\n pos0 = pos;\n if (input.charCodeAt(pos) === 59) {\n result1 = \";\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_uri_parameter();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos0;\n }\n }\n else {\n result1 = null;\n pos = pos0;\n }\n }\n return result0;\n }\n function parse_uri_parameter() {\n var result0;\n result0 = parse_transport_param();\n if (result0 === null) {\n result0 = parse_user_param();\n if (result0 === null) {\n result0 = parse_method_param();\n if (result0 === null) {\n result0 = parse_ttl_param();\n if (result0 === null) {\n result0 = parse_maddr_param();\n if (result0 === null) {\n result0 = parse_lr_param();\n if (result0 === null) {\n result0 = parse_other_param();\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_transport_param() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 10).toLowerCase() === \"transport=\") {\n result0 = input.substr(pos, 10);\n pos += 10;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"transport=\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 3).toLowerCase() === \"udp\") {\n result1 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"udp\\\"\");\n }\n }\n if (result1 === null) {\n if (input.substr(pos, 3).toLowerCase() === \"tcp\") {\n result1 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"tcp\\\"\");\n }\n }\n if (result1 === null) {\n if (input.substr(pos, 4).toLowerCase() === \"sctp\") {\n result1 = input.substr(pos, 4);\n pos += 4;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"sctp\\\"\");\n }\n }\n if (result1 === null) {\n if (input.substr(pos, 3).toLowerCase() === \"tls\") {\n result1 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"tls\\\"\");\n }\n }\n if (result1 === null) {\n result1 = parse_token();\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, transport) {\n if (!data.uri_params)\n data.uri_params = {};\n data.uri_params['transport'] = transport.toLowerCase();\n })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_user_param() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"user=\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"user=\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 5).toLowerCase() === \"phone\") {\n result1 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"phone\\\"\");\n }\n }\n if (result1 === null) {\n if (input.substr(pos, 2).toLowerCase() === \"ip\") {\n result1 = input.substr(pos, 2);\n pos += 2;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"ip\\\"\");\n }\n }\n if (result1 === null) {\n result1 = parse_token();\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, user) {\n if (!data.uri_params)\n data.uri_params = {};\n data.uri_params['user'] = user.toLowerCase();\n })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_method_param() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 7).toLowerCase() === \"method=\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"method=\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_Method();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, method) {\n if (!data.uri_params)\n data.uri_params = {};\n data.uri_params['method'] = method;\n })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_ttl_param() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"ttl=\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"ttl=\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_ttl();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, ttl) {\n if (!data.params)\n data.params = {};\n data.params['ttl'] = ttl;\n })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_maddr_param() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"maddr=\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"maddr=\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_host();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, maddr) {\n if (!data.uri_params)\n data.uri_params = {};\n data.uri_params['maddr'] = maddr;\n })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_lr_param() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 2).toLowerCase() === \"lr\") {\n result0 = input.substr(pos, 2);\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"lr\\\"\");\n }\n }\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n if (!data.uri_params)\n data.uri_params = {};\n data.uri_params['lr'] = undefined;\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_other_param() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_pname();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_pvalue();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, param, value) {\n if (!data.uri_params)\n data.uri_params = {};\n if (typeof value === 'undefined') {\n value = undefined;\n }\n else {\n value = value[1];\n }\n data.uri_params[param.toLowerCase()] = value;\n })(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_pname() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_paramchar();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_paramchar();\n }\n }\n else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function (offset, pname) { return pname.join(''); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_pvalue() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_paramchar();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_paramchar();\n }\n }\n else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function (offset, pvalue) { return pvalue.join(''); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_paramchar() {\n var result0;\n result0 = parse_param_unreserved();\n if (result0 === null) {\n result0 = parse_unreserved();\n if (result0 === null) {\n result0 = parse_escaped();\n }\n }\n return result0;\n }\n function parse_param_unreserved() {\n var result0;\n if (input.charCodeAt(pos) === 91) {\n result0 = \"[\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 93) {\n result0 = \"]\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_headers() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1;\n pos0 = pos;\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_header();\n if (result1 !== null) {\n result2 = [];\n pos1 = pos;\n if (input.charCodeAt(pos) === 38) {\n result3 = \"&\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_header();\n if (result4 !== null) {\n result3 = [result3, result4];\n }\n else {\n result3 = null;\n pos = pos1;\n }\n }\n else {\n result3 = null;\n pos = pos1;\n }\n while (result3 !== null) {\n result2.push(result3);\n pos1 = pos;\n if (input.charCodeAt(pos) === 38) {\n result3 = \"&\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_header();\n if (result4 !== null) {\n result3 = [result3, result4];\n }\n else {\n result3 = null;\n pos = pos1;\n }\n }\n else {\n result3 = null;\n pos = pos1;\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_header() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_hname();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_hvalue();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, hname, hvalue) {\n hname = hname.join('').toLowerCase();\n hvalue = hvalue.join('');\n if (!data.uri_headers)\n data.uri_headers = {};\n if (!data.uri_headers[hname]) {\n data.uri_headers[hname] = [hvalue];\n }\n else {\n data.uri_headers[hname].push(hvalue);\n }\n })(pos0, result0[0], result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_hname() {\n var result0, result1;\n result1 = parse_hnv_unreserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_hnv_unreserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n }\n }\n }\n }\n else {\n result0 = null;\n }\n return result0;\n }\n function parse_hvalue() {\n var result0, result1;\n result0 = [];\n result1 = parse_hnv_unreserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n }\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_hnv_unreserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n }\n }\n }\n return result0;\n }\n function parse_hnv_unreserved() {\n var result0;\n if (input.charCodeAt(pos) === 91) {\n result0 = \"[\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 93) {\n result0 = \"]\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_Request_Response() {\n var result0;\n result0 = parse_Status_Line();\n if (result0 === null) {\n result0 = parse_Request_Line();\n }\n return result0;\n }\n function parse_Request_Line() {\n var result0, result1, result2, result3, result4;\n var pos0;\n pos0 = pos;\n result0 = parse_Method();\n if (result0 !== null) {\n result1 = parse_SP();\n if (result1 !== null) {\n result2 = parse_Request_URI();\n if (result2 !== null) {\n result3 = parse_SP();\n if (result3 !== null) {\n result4 = parse_SIP_Version();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Request_URI() {\n var result0;\n result0 = parse_SIP_URI();\n if (result0 === null) {\n result0 = parse_absoluteURI();\n }\n return result0;\n }\n function parse_absoluteURI() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_scheme();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_hier_part();\n if (result2 === null) {\n result2 = parse_opaque_part();\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_hier_part() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_net_path();\n if (result0 === null) {\n result0 = parse_abs_path();\n }\n if (result0 !== null) {\n pos1 = pos;\n if (input.charCodeAt(pos) === 63) {\n result1 = \"?\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_query();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos1;\n }\n }\n else {\n result1 = null;\n pos = pos1;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_net_path() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 2) === \"//\") {\n result0 = \"//\";\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"//\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_authority();\n if (result1 !== null) {\n result2 = parse_abs_path();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_abs_path() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_path_segments();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_opaque_part() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_uric_no_slash();\n if (result0 !== null) {\n result1 = [];\n result2 = parse_uric();\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_uric();\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_uric() {\n var result0;\n result0 = parse_reserved();\n if (result0 === null) {\n result0 = parse_unreserved();\n if (result0 === null) {\n result0 = parse_escaped();\n }\n }\n return result0;\n }\n function parse_uric_no_slash() {\n var result0;\n result0 = parse_unreserved();\n if (result0 === null) {\n result0 = parse_escaped();\n if (result0 === null) {\n if (input.charCodeAt(pos) === 59) {\n result0 = \";\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 64) {\n result0 = \"@\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 44) {\n result0 = \",\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_path_segments() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_segment();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n if (input.charCodeAt(pos) === 47) {\n result2 = \"/\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_segment();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n if (input.charCodeAt(pos) === 47) {\n result2 = \"/\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_segment();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_segment() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = [];\n result1 = parse_pchar();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_pchar();\n }\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n if (input.charCodeAt(pos) === 59) {\n result2 = \";\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n if (input.charCodeAt(pos) === 59) {\n result2 = \";\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_param() {\n var result0, result1;\n result0 = [];\n result1 = parse_pchar();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_pchar();\n }\n return result0;\n }\n function parse_pchar() {\n var result0;\n result0 = parse_unreserved();\n if (result0 === null) {\n result0 = parse_escaped();\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 64) {\n result0 = \"@\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 44) {\n result0 = \",\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_scheme() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_ALPHA();\n if (result0 !== null) {\n result1 = [];\n result2 = parse_ALPHA();\n if (result2 === null) {\n result2 = parse_DIGIT();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 43) {\n result2 = \"+\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n }\n }\n }\n }\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_ALPHA();\n if (result2 === null) {\n result2 = parse_DIGIT();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 43) {\n result2 = \"+\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.scheme = input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_authority() {\n var result0;\n result0 = parse_srvr();\n if (result0 === null) {\n result0 = parse_reg_name();\n }\n return result0;\n }\n function parse_srvr() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_userinfo();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 64) {\n result1 = \"@\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result1 = parse_hostport();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n result0 = result0 !== null ? result0 : \"\";\n return result0;\n }\n function parse_reg_name() {\n var result0, result1;\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 36) {\n result1 = \"$\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 44) {\n result1 = \",\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 59) {\n result1 = \";\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 64) {\n result1 = \"@\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 38) {\n result1 = \"&\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 36) {\n result1 = \"$\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 44) {\n result1 = \",\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 59) {\n result1 = \";\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 64) {\n result1 = \"@\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 38) {\n result1 = \"&\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n else {\n result0 = null;\n }\n return result0;\n }\n function parse_query() {\n var result0, result1;\n result0 = [];\n result1 = parse_uric();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_uric();\n }\n return result0;\n }\n function parse_SIP_Version() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sip\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SIP\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 47) {\n result1 = \"/\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result1 !== null) {\n result3 = parse_DIGIT();\n if (result3 !== null) {\n result2 = [];\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_DIGIT();\n }\n }\n else {\n result2 = null;\n }\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result3 = \".\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result3 !== null) {\n result5 = parse_DIGIT();\n if (result5 !== null) {\n result4 = [];\n while (result5 !== null) {\n result4.push(result5);\n result5 = parse_DIGIT();\n }\n }\n else {\n result4 = null;\n }\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.sip_version = input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_INVITEm() {\n var result0;\n if (input.substr(pos, 6) === \"INVITE\") {\n result0 = \"INVITE\";\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"INVITE\\\"\");\n }\n }\n return result0;\n }\n function parse_ACKm() {\n var result0;\n if (input.substr(pos, 3) === \"ACK\") {\n result0 = \"ACK\";\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"ACK\\\"\");\n }\n }\n return result0;\n }\n function parse_OPTIONSm() {\n var result0;\n if (input.substr(pos, 7) === \"OPTIONS\") {\n result0 = \"OPTIONS\";\n pos += 7;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"OPTIONS\\\"\");\n }\n }\n return result0;\n }\n function parse_BYEm() {\n var result0;\n if (input.substr(pos, 3) === \"BYE\") {\n result0 = \"BYE\";\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"BYE\\\"\");\n }\n }\n return result0;\n }\n function parse_CANCELm() {\n var result0;\n if (input.substr(pos, 6) === \"CANCEL\") {\n result0 = \"CANCEL\";\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"CANCEL\\\"\");\n }\n }\n return result0;\n }\n function parse_REGISTERm() {\n var result0;\n if (input.substr(pos, 8) === \"REGISTER\") {\n result0 = \"REGISTER\";\n pos += 8;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"REGISTER\\\"\");\n }\n }\n return result0;\n }\n function parse_SUBSCRIBEm() {\n var result0;\n if (input.substr(pos, 9) === \"SUBSCRIBE\") {\n result0 = \"SUBSCRIBE\";\n pos += 9;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SUBSCRIBE\\\"\");\n }\n }\n return result0;\n }\n function parse_NOTIFYm() {\n var result0;\n if (input.substr(pos, 6) === \"NOTIFY\") {\n result0 = \"NOTIFY\";\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"NOTIFY\\\"\");\n }\n }\n return result0;\n }\n function parse_REFERm() {\n var result0;\n if (input.substr(pos, 5) === \"REFER\") {\n result0 = \"REFER\";\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"REFER\\\"\");\n }\n }\n return result0;\n }\n function parse_Method() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_INVITEm();\n if (result0 === null) {\n result0 = parse_ACKm();\n if (result0 === null) {\n result0 = parse_OPTIONSm();\n if (result0 === null) {\n result0 = parse_BYEm();\n if (result0 === null) {\n result0 = parse_CANCELm();\n if (result0 === null) {\n result0 = parse_REGISTERm();\n if (result0 === null) {\n result0 = parse_SUBSCRIBEm();\n if (result0 === null) {\n result0 = parse_NOTIFYm();\n if (result0 === null) {\n result0 = parse_REFERm();\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.method = input.substring(pos, offset);\n return data.method;\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Status_Line() {\n var result0, result1, result2, result3, result4;\n var pos0;\n pos0 = pos;\n result0 = parse_SIP_Version();\n if (result0 !== null) {\n result1 = parse_SP();\n if (result1 !== null) {\n result2 = parse_Status_Code();\n if (result2 !== null) {\n result3 = parse_SP();\n if (result3 !== null) {\n result4 = parse_Reason_Phrase();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Status_Code() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_extension_code();\n if (result0 !== null) {\n result0 = (function (offset, status_code) {\n data.status_code = parseInt(status_code.join(''));\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_extension_code() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_DIGIT();\n if (result0 !== null) {\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result2 = parse_DIGIT();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Reason_Phrase() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result0 = [];\n result1 = parse_reserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n result1 = parse_UTF8_NONASCII();\n if (result1 === null) {\n result1 = parse_UTF8_CONT();\n if (result1 === null) {\n result1 = parse_SP();\n if (result1 === null) {\n result1 = parse_HTAB();\n }\n }\n }\n }\n }\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_reserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n result1 = parse_UTF8_NONASCII();\n if (result1 === null) {\n result1 = parse_UTF8_CONT();\n if (result1 === null) {\n result1 = parse_SP();\n if (result1 === null) {\n result1 = parse_HTAB();\n }\n }\n }\n }\n }\n }\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.reason_phrase = input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Allow_Events() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_event_type();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_event_type();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_event_type();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Call_ID() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_word();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 64) {\n result1 = \"@\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_word();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data = input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Contact() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n result0 = parse_STAR();\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_contact_param();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_contact_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_contact_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n var idx, length;\n length = data.multi_header.length;\n for (idx = 0; idx < length; idx++) {\n if (data.multi_header[idx].parsed === null) {\n data = null;\n break;\n }\n }\n if (data !== null) {\n data = data.multi_header;\n }\n else {\n data = -1;\n }\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_contact_param() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SIP_URI_noparams();\n if (result0 === null) {\n result0 = parse_name_addr();\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_contact_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_contact_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n var header;\n if (!data.multi_header)\n data.multi_header = [];\n try {\n header = new NameAddrHeader(data.uri, data.display_name, data.params);\n delete data.uri;\n delete data.display_name;\n delete data.params;\n }\n catch (e) {\n header = null;\n }\n data.multi_header.push({ 'possition': pos,\n 'offset': offset,\n 'parsed': header\n });\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_name_addr() {\n var result0, result1, result2, result3;\n var pos0;\n pos0 = pos;\n result0 = parse_display_name();\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result1 = parse_LAQUOT();\n if (result1 !== null) {\n result2 = parse_SIP_URI();\n if (result2 !== null) {\n result3 = parse_RAQUOT();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_display_name() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_LWS();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_LWS();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n result0 = parse_quoted_string_clean();\n }\n if (result0 !== null) {\n result0 = (function (offset, display_name) {\n if (typeof display_name === 'string') { // quoted_string_clean\n data.display_name = display_name;\n }\n else { // token ( LWS token )*\n data.display_name = display_name[1].reduce(function (acc, cur) {\n return acc + cur[0] + cur[1];\n }, display_name[0]);\n }\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_contact_params() {\n var result0;\n result0 = parse_c_p_q();\n if (result0 === null) {\n result0 = parse_c_p_expires();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n }\n return result0;\n }\n function parse_c_p_q() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 1).toLowerCase() === \"q\") {\n result0 = input.substr(pos, 1);\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"q\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_qvalue();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, q) {\n if (!data.params)\n data.params = {};\n data.params['q'] = q;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_c_p_expires() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 7).toLowerCase() === \"expires\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"expires\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_delta_seconds();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, expires) {\n if (!data.params)\n data.params = {};\n data.params['expires'] = expires;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_delta_seconds() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_DIGIT();\n }\n }\n else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function (offset, delta_seconds) {\n return parseInt(delta_seconds.join(''));\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_qvalue() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 48) {\n result0 = \"0\";\n pos++;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"0\\\"\");\n }\n }\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_DIGIT();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_DIGIT();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result4 = parse_DIGIT();\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n result1 = [result1, result2, result3, result4];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n return parseFloat(input.substring(pos, offset));\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_generic_param() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n pos2 = pos;\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_gen_value();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, param, value) {\n if (!data.params)\n data.params = {};\n if (typeof value === 'undefined') {\n value = undefined;\n }\n else {\n value = value[1];\n }\n data.params[param.toLowerCase()] = value;\n })(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_gen_value() {\n var result0;\n result0 = parse_token();\n if (result0 === null) {\n result0 = parse_host();\n if (result0 === null) {\n result0 = parse_quoted_string();\n }\n }\n return result0;\n }\n function parse_Content_Disposition() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_disp_type();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_disp_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_disp_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_disp_type() {\n var result0;\n if (input.substr(pos, 6).toLowerCase() === \"render\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"render\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 7).toLowerCase() === \"session\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"session\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 4).toLowerCase() === \"icon\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"icon\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 5).toLowerCase() === \"alert\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"alert\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n }\n }\n return result0;\n }\n function parse_disp_param() {\n var result0;\n result0 = parse_handling_param();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n return result0;\n }\n function parse_handling_param() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 8).toLowerCase() === \"handling\") {\n result0 = input.substr(pos, 8);\n pos += 8;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"handling\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n if (input.substr(pos, 8).toLowerCase() === \"optional\") {\n result2 = input.substr(pos, 8);\n pos += 8;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"optional\\\"\");\n }\n }\n if (result2 === null) {\n if (input.substr(pos, 8).toLowerCase() === \"required\") {\n result2 = input.substr(pos, 8);\n pos += 8;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"required\\\"\");\n }\n }\n if (result2 === null) {\n result2 = parse_token();\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Content_Encoding() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Content_Length() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_DIGIT();\n }\n }\n else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function (offset, length) {\n data = parseInt(length.join(''));\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Content_Type() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_media_type();\n if (result0 !== null) {\n result0 = (function (offset) {\n data = input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_media_type() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_m_type();\n if (result0 !== null) {\n result1 = parse_SLASH();\n if (result1 !== null) {\n result2 = parse_m_subtype();\n if (result2 !== null) {\n result3 = [];\n pos1 = pos;\n result4 = parse_SEMI();\n if (result4 !== null) {\n result5 = parse_m_parameter();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n else {\n result4 = null;\n pos = pos1;\n }\n while (result4 !== null) {\n result3.push(result4);\n pos1 = pos;\n result4 = parse_SEMI();\n if (result4 !== null) {\n result5 = parse_m_parameter();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_m_type() {\n var result0;\n result0 = parse_discrete_type();\n if (result0 === null) {\n result0 = parse_composite_type();\n }\n return result0;\n }\n function parse_discrete_type() {\n var result0;\n if (input.substr(pos, 4).toLowerCase() === \"text\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"text\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 5).toLowerCase() === \"image\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"image\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 5).toLowerCase() === \"audio\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"audio\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 5).toLowerCase() === \"video\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"video\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 11).toLowerCase() === \"application\") {\n result0 = input.substr(pos, 11);\n pos += 11;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"application\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_extension_token();\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_composite_type() {\n var result0;\n if (input.substr(pos, 7).toLowerCase() === \"message\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"message\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 9).toLowerCase() === \"multipart\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"multipart\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_extension_token();\n }\n }\n return result0;\n }\n function parse_extension_token() {\n var result0;\n result0 = parse_token();\n if (result0 === null) {\n result0 = parse_x_token();\n }\n return result0;\n }\n function parse_x_token() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 2).toLowerCase() === \"x-\") {\n result0 = input.substr(pos, 2);\n pos += 2;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"x-\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_token();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_m_subtype() {\n var result0;\n result0 = parse_extension_token();\n if (result0 === null) {\n result0 = parse_token();\n }\n return result0;\n }\n function parse_m_parameter() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_m_value();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_m_value() {\n var result0;\n result0 = parse_token();\n if (result0 === null) {\n result0 = parse_quoted_string();\n }\n return result0;\n }\n function parse_CSeq() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_CSeq_value();\n if (result0 !== null) {\n result1 = parse_LWS();\n if (result1 !== null) {\n result2 = parse_Method();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_CSeq_value() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_DIGIT();\n }\n }\n else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function (offset, cseq_value) {\n data.value = parseInt(cseq_value.join(''));\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Expires() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_delta_seconds();\n if (result0 !== null) {\n result0 = (function (offset, expires) { data = expires; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Event() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_event_type();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, event_type) {\n data.event = event_type.join('').toLowerCase();\n })(pos0, result0[0]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_event_type() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token_nodot();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_token_nodot();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_token_nodot();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_From() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SIP_URI_noparams();\n if (result0 === null) {\n result0 = parse_name_addr();\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_from_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_from_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n var tag = data.tag;\n try {\n data = new NameAddrHeader(data.uri, data.display_name, data.params);\n if (tag) {\n data.setParam('tag', tag);\n }\n }\n catch (e) {\n data = -1;\n }\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_from_param() {\n var result0;\n result0 = parse_tag_param();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n return result0;\n }\n function parse_tag_param() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"tag\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"tag\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, tag) { data.tag = tag; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Max_Forwards() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_DIGIT();\n }\n }\n else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function (offset, forwards) {\n data = parseInt(forwards.join(''));\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Min_Expires() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_delta_seconds();\n if (result0 !== null) {\n result0 = (function (offset, min_expires) { data = min_expires; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Name_Addr_Header() {\n var result0, result1, result2, result3, result4, result5, result6;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = [];\n result1 = parse_display_name();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_display_name();\n }\n if (result0 !== null) {\n result1 = parse_LAQUOT();\n if (result1 !== null) {\n result2 = parse_SIP_URI();\n if (result2 !== null) {\n result3 = parse_RAQUOT();\n if (result3 !== null) {\n result4 = [];\n pos2 = pos;\n result5 = parse_SEMI();\n if (result5 !== null) {\n result6 = parse_generic_param();\n if (result6 !== null) {\n result5 = [result5, result6];\n }\n else {\n result5 = null;\n pos = pos2;\n }\n }\n else {\n result5 = null;\n pos = pos2;\n }\n while (result5 !== null) {\n result4.push(result5);\n pos2 = pos;\n result5 = parse_SEMI();\n if (result5 !== null) {\n result6 = parse_generic_param();\n if (result6 !== null) {\n result5 = [result5, result6];\n }\n else {\n result5 = null;\n pos = pos2;\n }\n }\n else {\n result5 = null;\n pos = pos2;\n }\n }\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n try {\n data = new NameAddrHeader(data.uri, data.display_name, data.params);\n }\n catch (e) {\n data = -1;\n }\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Proxy_Authenticate() {\n var result0;\n result0 = parse_challenge();\n return result0;\n }\n function parse_challenge() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"digest\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"Digest\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_LWS();\n if (result1 !== null) {\n result2 = parse_digest_cln();\n if (result2 !== null) {\n result3 = [];\n pos1 = pos;\n result4 = parse_COMMA();\n if (result4 !== null) {\n result5 = parse_digest_cln();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n else {\n result4 = null;\n pos = pos1;\n }\n while (result4 !== null) {\n result3.push(result4);\n pos1 = pos;\n result4 = parse_COMMA();\n if (result4 !== null) {\n result5 = parse_digest_cln();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n result0 = parse_other_challenge();\n }\n return result0;\n }\n function parse_other_challenge() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = parse_LWS();\n if (result1 !== null) {\n result2 = parse_auth_param();\n if (result2 !== null) {\n result3 = [];\n pos1 = pos;\n result4 = parse_COMMA();\n if (result4 !== null) {\n result5 = parse_auth_param();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n else {\n result4 = null;\n pos = pos1;\n }\n while (result4 !== null) {\n result3.push(result4);\n pos1 = pos;\n result4 = parse_COMMA();\n if (result4 !== null) {\n result5 = parse_auth_param();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_auth_param() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 === null) {\n result2 = parse_quoted_string();\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_digest_cln() {\n var result0;\n result0 = parse_realm();\n if (result0 === null) {\n result0 = parse_domain();\n if (result0 === null) {\n result0 = parse_nonce();\n if (result0 === null) {\n result0 = parse_opaque();\n if (result0 === null) {\n result0 = parse_stale();\n if (result0 === null) {\n result0 = parse_algorithm();\n if (result0 === null) {\n result0 = parse_qop_options();\n if (result0 === null) {\n result0 = parse_auth_param();\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_realm() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"realm\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"realm\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_realm_value();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_realm_value() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_quoted_string_clean();\n if (result0 !== null) {\n result0 = (function (offset, realm) { data.realm = realm; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_domain() {\n var result0, result1, result2, result3, result4, result5, result6;\n var pos0, pos1;\n pos0 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"domain\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"domain\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_LDQUOT();\n if (result2 !== null) {\n result3 = parse_URI();\n if (result3 !== null) {\n result4 = [];\n pos1 = pos;\n result6 = parse_SP();\n if (result6 !== null) {\n result5 = [];\n while (result6 !== null) {\n result5.push(result6);\n result6 = parse_SP();\n }\n }\n else {\n result5 = null;\n }\n if (result5 !== null) {\n result6 = parse_URI();\n if (result6 !== null) {\n result5 = [result5, result6];\n }\n else {\n result5 = null;\n pos = pos1;\n }\n }\n else {\n result5 = null;\n pos = pos1;\n }\n while (result5 !== null) {\n result4.push(result5);\n pos1 = pos;\n result6 = parse_SP();\n if (result6 !== null) {\n result5 = [];\n while (result6 !== null) {\n result5.push(result6);\n result6 = parse_SP();\n }\n }\n else {\n result5 = null;\n }\n if (result5 !== null) {\n result6 = parse_URI();\n if (result6 !== null) {\n result5 = [result5, result6];\n }\n else {\n result5 = null;\n pos = pos1;\n }\n }\n else {\n result5 = null;\n pos = pos1;\n }\n }\n if (result4 !== null) {\n result5 = parse_RDQUOT();\n if (result5 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_URI() {\n var result0;\n result0 = parse_absoluteURI();\n if (result0 === null) {\n result0 = parse_abs_path();\n }\n return result0;\n }\n function parse_nonce() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"nonce\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"nonce\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_nonce_value();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_nonce_value() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_quoted_string_clean();\n if (result0 !== null) {\n result0 = (function (offset, nonce) { data.nonce = nonce; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_opaque() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"opaque\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"opaque\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_quoted_string_clean();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, opaque) { data.opaque = opaque; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_stale() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"stale\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"stale\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"true\") {\n result2 = input.substr(pos, 4);\n pos += 4;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"true\\\"\");\n }\n }\n if (result2 !== null) {\n result2 = (function (offset) { data.stale = true; })(pos1);\n }\n if (result2 === null) {\n pos = pos1;\n }\n if (result2 === null) {\n pos1 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"false\") {\n result2 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"false\\\"\");\n }\n }\n if (result2 !== null) {\n result2 = (function (offset) { data.stale = false; })(pos1);\n }\n if (result2 === null) {\n pos = pos1;\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_algorithm() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 9).toLowerCase() === \"algorithm\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"algorithm\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n if (input.substr(pos, 3).toLowerCase() === \"md5\") {\n result2 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"MD5\\\"\");\n }\n }\n if (result2 === null) {\n if (input.substr(pos, 8).toLowerCase() === \"md5-sess\") {\n result2 = input.substr(pos, 8);\n pos += 8;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"MD5-sess\\\"\");\n }\n }\n if (result2 === null) {\n result2 = parse_token();\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, algorithm) {\n data.algorithm = algorithm.toUpperCase();\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_qop_options() {\n var result0, result1, result2, result3, result4, result5, result6;\n var pos0, pos1, pos2;\n pos0 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"qop\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"qop\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_LDQUOT();\n if (result2 !== null) {\n pos1 = pos;\n result3 = parse_qop_value();\n if (result3 !== null) {\n result4 = [];\n pos2 = pos;\n if (input.charCodeAt(pos) === 44) {\n result5 = \",\";\n pos++;\n }\n else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_qop_value();\n if (result6 !== null) {\n result5 = [result5, result6];\n }\n else {\n result5 = null;\n pos = pos2;\n }\n }\n else {\n result5 = null;\n pos = pos2;\n }\n while (result5 !== null) {\n result4.push(result5);\n pos2 = pos;\n if (input.charCodeAt(pos) === 44) {\n result5 = \",\";\n pos++;\n }\n else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_qop_value();\n if (result6 !== null) {\n result5 = [result5, result6];\n }\n else {\n result5 = null;\n pos = pos2;\n }\n }\n else {\n result5 = null;\n pos = pos2;\n }\n }\n if (result4 !== null) {\n result3 = [result3, result4];\n }\n else {\n result3 = null;\n pos = pos1;\n }\n }\n else {\n result3 = null;\n pos = pos1;\n }\n if (result3 !== null) {\n result4 = parse_RDQUOT();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_qop_value() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 8).toLowerCase() === \"auth-int\") {\n result0 = input.substr(pos, 8);\n pos += 8;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"auth-int\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 4).toLowerCase() === \"auth\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"auth\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n if (result0 !== null) {\n result0 = (function (offset, qop_value) {\n data.qop || (data.qop = []);\n data.qop.push(qop_value.toLowerCase());\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Proxy_Require() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Record_Route() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_rec_route();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_rec_route();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_rec_route();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n var idx, length;\n length = data.multi_header.length;\n for (idx = 0; idx < length; idx++) {\n if (data.multi_header[idx].parsed === null) {\n data = null;\n break;\n }\n }\n if (data !== null) {\n data = data.multi_header;\n }\n else {\n data = -1;\n }\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_rec_route() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_name_addr();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n var header;\n if (!data.multi_header)\n data.multi_header = [];\n try {\n header = new NameAddrHeader(data.uri, data.display_name, data.params);\n delete data.uri;\n delete data.display_name;\n delete data.params;\n }\n catch (e) {\n header = null;\n }\n data.multi_header.push({ 'possition': pos,\n 'offset': offset,\n 'parsed': header\n });\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Reason() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sip\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SIP\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_reason_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_reason_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, protocol) {\n data.protocol = protocol.toLowerCase();\n if (!data.params)\n data.params = {};\n if (data.params.text && data.params.text[0] === '\"') {\n var text = data.params.text;\n data.text = text.substring(1, text.length - 1);\n delete data.params.text;\n }\n })(pos0, result0[0]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_reason_param() {\n var result0;\n result0 = parse_reason_cause();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n return result0;\n }\n function parse_reason_cause() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"cause\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"cause\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result3 = parse_DIGIT();\n if (result3 !== null) {\n result2 = [];\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_DIGIT();\n }\n }\n else {\n result2 = null;\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, cause) {\n data.cause = parseInt(cause.join(''));\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Require() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Route() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_route_param();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_route_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_route_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_route_param() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_name_addr();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Subscription_State() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_substate_value();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_subexp_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_subexp_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_substate_value() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"active\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"active\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 7).toLowerCase() === \"pending\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"pending\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 10).toLowerCase() === \"terminated\") {\n result0 = input.substr(pos, 10);\n pos += 10;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"terminated\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.state = input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_subexp_params() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"reason\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"reason\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_event_reason_value();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, reason) {\n if (typeof reason !== 'undefined')\n data.reason = reason;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 7).toLowerCase() === \"expires\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"expires\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_delta_seconds();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, expires) {\n if (typeof expires !== 'undefined')\n data.expires = expires;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 11).toLowerCase() === \"retry_after\") {\n result0 = input.substr(pos, 11);\n pos += 11;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"retry_after\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_delta_seconds();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, retry_after) {\n if (typeof retry_after !== 'undefined')\n data.retry_after = retry_after;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n }\n }\n return result0;\n }\n function parse_event_reason_value() {\n var result0;\n if (input.substr(pos, 11).toLowerCase() === \"deactivated\") {\n result0 = input.substr(pos, 11);\n pos += 11;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"deactivated\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 9).toLowerCase() === \"probation\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"probation\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 8).toLowerCase() === \"rejected\") {\n result0 = input.substr(pos, 8);\n pos += 8;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"rejected\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 7).toLowerCase() === \"timeout\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"timeout\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 6).toLowerCase() === \"giveup\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"giveup\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 10).toLowerCase() === \"noresource\") {\n result0 = input.substr(pos, 10);\n pos += 10;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"noresource\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 9).toLowerCase() === \"invariant\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"invariant\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_Subject() {\n var result0;\n result0 = parse_TEXT_UTF8_TRIM();\n result0 = result0 !== null ? result0 : \"\";\n return result0;\n }\n function parse_Supported() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n result0 = result0 !== null ? result0 : \"\";\n return result0;\n }\n function parse_To() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SIP_URI_noparams();\n if (result0 === null) {\n result0 = parse_name_addr();\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_to_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_to_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n var tag = data.tag;\n try {\n data = new NameAddrHeader(data.uri, data.display_name, data.params);\n if (tag) {\n data.setParam('tag', tag);\n }\n }\n catch (e) {\n data = -1;\n }\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_to_param() {\n var result0;\n result0 = parse_tag_param();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n return result0;\n }\n function parse_Via() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_via_param();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_via_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_via_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_via_param() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_sent_protocol();\n if (result0 !== null) {\n result1 = parse_LWS();\n if (result1 !== null) {\n result2 = parse_sent_by();\n if (result2 !== null) {\n result3 = [];\n pos1 = pos;\n result4 = parse_SEMI();\n if (result4 !== null) {\n result5 = parse_via_params();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n else {\n result4 = null;\n pos = pos1;\n }\n while (result4 !== null) {\n result3.push(result4);\n pos1 = pos;\n result4 = parse_SEMI();\n if (result4 !== null) {\n result5 = parse_via_params();\n if (result5 !== null) {\n result4 = [result4, result5];\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n else {\n result4 = null;\n pos = pos1;\n }\n }\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_via_params() {\n var result0;\n result0 = parse_via_ttl();\n if (result0 === null) {\n result0 = parse_via_maddr();\n if (result0 === null) {\n result0 = parse_via_received();\n if (result0 === null) {\n result0 = parse_via_branch();\n if (result0 === null) {\n result0 = parse_response_port();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_via_ttl() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"ttl\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"ttl\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_ttl();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, via_ttl_value) {\n data.ttl = via_ttl_value;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_via_maddr() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"maddr\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"maddr\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_host();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, via_maddr) {\n data.maddr = via_maddr;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_via_received() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 8).toLowerCase() === \"received\") {\n result0 = input.substr(pos, 8);\n pos += 8;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"received\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_IPv4address();\n if (result2 === null) {\n result2 = parse_IPv6address();\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, via_received) {\n data.received = via_received;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_via_branch() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"branch\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"branch\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, via_branch) {\n data.branch = via_branch;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_response_port() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"rport\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"rport\\\"\");\n }\n }\n if (result0 !== null) {\n pos1 = pos;\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_rport();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos1;\n }\n }\n else {\n result1 = null;\n pos = pos1;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_rport() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DIGIT();\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result1 = parse_DIGIT();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_DIGIT();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_DIGIT();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result4 = parse_DIGIT();\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, rport) {\n data.rport = parseInt(rport.join(''));\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_sent_protocol() {\n var result0, result1, result2, result3, result4;\n var pos0;\n pos0 = pos;\n result0 = parse_protocol_name();\n if (result0 !== null) {\n result1 = parse_SLASH();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result3 = parse_SLASH();\n if (result3 !== null) {\n result4 = parse_transport();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_protocol_name() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sip\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SIP\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n if (result0 !== null) {\n result0 = (function (offset, via_protocol) {\n data.protocol = via_protocol;\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_transport() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"udp\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"UDP\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 3).toLowerCase() === \"tcp\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"TCP\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 3).toLowerCase() === \"tls\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"TLS\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 4).toLowerCase() === \"sctp\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SCTP\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n }\n }\n if (result0 !== null) {\n result0 = (function (offset, via_transport) {\n data.transport = via_transport;\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_sent_by() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_via_host();\n if (result0 !== null) {\n pos1 = pos;\n result1 = parse_COLON();\n if (result1 !== null) {\n result2 = parse_via_port();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos1;\n }\n }\n else {\n result1 = null;\n pos = pos1;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_via_host() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_IPv4address();\n if (result0 === null) {\n result0 = parse_IPv6reference();\n if (result0 === null) {\n result0 = parse_hostname();\n }\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.host = input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_via_port() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DIGIT();\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result1 = parse_DIGIT();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_DIGIT();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_DIGIT();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result4 = parse_DIGIT();\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, via_sent_by_port) {\n data.port = parseInt(via_sent_by_port.join(''));\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_ttl() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DIGIT();\n if (result0 !== null) {\n result1 = parse_DIGIT();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_DIGIT();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, ttl) {\n return parseInt(ttl.join(''));\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_WWW_Authenticate() {\n var result0;\n result0 = parse_challenge();\n return result0;\n }\n function parse_Session_Expires() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_s_e_expires();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_s_e_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_s_e_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_s_e_expires() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_delta_seconds();\n if (result0 !== null) {\n result0 = (function (offset, expires) { data.expires = expires; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_s_e_params() {\n var result0;\n result0 = parse_s_e_refresher();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n return result0;\n }\n function parse_s_e_refresher() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 9).toLowerCase() === \"refresher\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"refresher\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n if (input.substr(pos, 3).toLowerCase() === \"uac\") {\n result2 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"uac\\\"\");\n }\n }\n if (result2 === null) {\n if (input.substr(pos, 3).toLowerCase() === \"uas\") {\n result2 = input.substr(pos, 3);\n pos += 3;\n }\n else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"uas\\\"\");\n }\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, s_e_refresher_value) { data.refresher = s_e_refresher_value.toLowerCase(); })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_extension_header() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = parse_HCOLON();\n if (result1 !== null) {\n result2 = parse_header_value();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_header_value() {\n var result0, result1;\n result0 = [];\n result1 = parse_TEXT_UTF8char();\n if (result1 === null) {\n result1 = parse_UTF8_CONT();\n if (result1 === null) {\n result1 = parse_LWS();\n }\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_TEXT_UTF8char();\n if (result1 === null) {\n result1 = parse_UTF8_CONT();\n if (result1 === null) {\n result1 = parse_LWS();\n }\n }\n }\n return result0;\n }\n function parse_message_body() {\n var result0, result1;\n result0 = [];\n result1 = parse_OCTET();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_OCTET();\n }\n return result0;\n }\n function parse_uuid_URI() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 5) === \"uuid:\") {\n result0 = \"uuid:\";\n pos += 5;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"uuid:\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_uuid();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_uuid() {\n var result0, result1, result2, result3, result4, result5, result6, result7, result8;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_hex8();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_hex4();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 45) {\n result3 = \"-\";\n pos++;\n }\n else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_hex4();\n if (result4 !== null) {\n if (input.charCodeAt(pos) === 45) {\n result5 = \"-\";\n pos++;\n }\n else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_hex4();\n if (result6 !== null) {\n if (input.charCodeAt(pos) === 45) {\n result7 = \"-\";\n pos++;\n }\n else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result7 !== null) {\n result8 = parse_hex12();\n if (result8 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, uuid) {\n data = input.substring(pos + 5, offset);\n })(pos0, result0[0]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_hex4() {\n var result0, result1, result2, result3;\n var pos0;\n pos0 = pos;\n result0 = parse_HEXDIG();\n if (result0 !== null) {\n result1 = parse_HEXDIG();\n if (result1 !== null) {\n result2 = parse_HEXDIG();\n if (result2 !== null) {\n result3 = parse_HEXDIG();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_hex8() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result0 = parse_hex4();\n if (result0 !== null) {\n result1 = parse_hex4();\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_hex12() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_hex4();\n if (result0 !== null) {\n result1 = parse_hex4();\n if (result1 !== null) {\n result2 = parse_hex4();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Refer_To() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SIP_URI_noparams();\n if (result0 === null) {\n result0 = parse_name_addr();\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n try {\n data = new NameAddrHeader(data.uri, data.display_name, data.params);\n }\n catch (e) {\n data = -1;\n }\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Replaces() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_call_id();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_replaces_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_replaces_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos0;\n }\n }\n else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_call_id() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_word();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 64) {\n result1 = \"@\";\n pos++;\n }\n else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_word();\n if (result2 !== null) {\n result1 = [result1, result2];\n }\n else {\n result1 = null;\n pos = pos2;\n }\n }\n else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.call_id = input.substring(pos, offset);\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_replaces_param() {\n var result0;\n result0 = parse_to_tag();\n if (result0 === null) {\n result0 = parse_from_tag();\n if (result0 === null) {\n result0 = parse_early_flag();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n }\n }\n return result0;\n }\n function parse_to_tag() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6) === \"to-tag\") {\n result0 = \"to-tag\";\n pos += 6;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"to-tag\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, to_tag) {\n data.to_tag = to_tag;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_from_tag() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 8) === \"from-tag\") {\n result0 = \"from-tag\";\n pos += 8;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"from-tag\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n }\n else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function (offset, from_tag) {\n data.from_tag = from_tag;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_early_flag() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 10) === \"early-only\") {\n result0 = \"early-only\";\n pos += 10;\n }\n else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"early-only\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function (offset) {\n data.early_only = true;\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function cleanupExpected(expected) {\n expected.sort();\n var lastExpected = null;\n var cleanExpected = [];\n for (var i = 0; i < expected.length; i++) {\n if (expected[i] !== lastExpected) {\n cleanExpected.push(expected[i]);\n lastExpected = expected[i];\n }\n }\n return cleanExpected;\n }\n function computeErrorPosition() {\n /*\n * The first idea was to use |String.split| to break the input up to the\n * error position along newlines and derive the line and column from\n * there. However IE's |split| implementation is so broken that it was\n * enough to prevent it.\n */\n var line = 1;\n var column = 1;\n var seenCR = false;\n for (var i = 0; i < Math.max(pos, rightmostFailuresPos); i++) {\n var ch = input.charAt(i);\n if (ch === \"\\n\") {\n if (!seenCR) {\n line++;\n }\n column = 1;\n seenCR = false;\n }\n else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n line++;\n column = 1;\n seenCR = true;\n }\n else {\n column++;\n seenCR = false;\n }\n }\n return { line: line, column: column };\n }\n var URI = require('./URI');\n var NameAddrHeader = require('./NameAddrHeader');\n var data = {};\n var result = parseFunctions[startRule]();\n /*\n * The parser is now in one of the following three states:\n *\n * 1. The parser successfully parsed the whole input.\n *\n * - |result !== null|\n * - |pos === input.length|\n * - |rightmostFailuresExpected| may or may not contain something\n *\n * 2. The parser successfully parsed only a part of the input.\n *\n * - |result !== null|\n * - |pos < input.length|\n * - |rightmostFailuresExpected| may or may not contain something\n *\n * 3. The parser did not successfully parse any part of the input.\n *\n * - |result === null|\n * - |pos === 0|\n * - |rightmostFailuresExpected| contains at least one failure\n *\n * All code following this comment (including called functions) must\n * handle these states.\n */\n if (result === null || pos !== input.length) {\n var offset = Math.max(pos, rightmostFailuresPos);\n var found = offset < input.length ? input.charAt(offset) : null;\n var errorPosition = computeErrorPosition();\n new this.SyntaxError(cleanupExpected(rightmostFailuresExpected), found, offset, errorPosition.line, errorPosition.column);\n return -1;\n }\n return data;\n },\n /* Returns the parser source code. */\n toSource: function () { return this._source; }\n };\n /* Thrown when a parser encounters a syntax error. */\n result.SyntaxError = function (expected, found, offset, line, column) {\n function buildMessage(expected, found) {\n var expectedHumanized, foundHumanized;\n switch (expected.length) {\n case 0:\n expectedHumanized = \"end of input\";\n break;\n case 1:\n expectedHumanized = expected[0];\n break;\n default:\n expectedHumanized = expected.slice(0, expected.length - 1).join(\", \")\n + \" or \"\n + expected[expected.length - 1];\n }\n foundHumanized = found ? quote(found) : \"end of input\";\n return \"Expected \" + expectedHumanized + \" but \" + foundHumanized + \" found.\";\n }\n this.name = \"SyntaxError\";\n this.expected = expected;\n this.found = found;\n this.message = buildMessage(expected, found);\n this.offset = offset;\n this.line = line;\n this.column = column;\n };\n result.SyntaxError.prototype = Error.prototype;\n return result;\n})();\n","\"use strict\";\nconst JsSIP_C = require('./Constants');\nconst Utils = require('./Utils');\nconst Grammar = require('./Grammar');\n/**\n * -param {String} [scheme]\n * -param {String} [user]\n * -param {String} host\n * -param {String} [port]\n * -param {Object} [parameters]\n * -param {Object} [headers]\n *\n */\nmodule.exports = class URI {\n /**\n * Parse the given string and returns a JsSIP.URI instance or undefined if\n * it is an invalid URI.\n */\n static parse(uri) {\n uri = Grammar.parse(uri, 'SIP_URI');\n if (uri !== -1) {\n return uri;\n }\n else {\n return undefined;\n }\n }\n constructor(scheme, user, host, port, parameters = {}, headers = {}) {\n // Checks.\n if (!host) {\n throw new TypeError('missing or invalid \"host\" parameter');\n }\n // Initialize parameters.\n this._parameters = {};\n this._headers = {};\n this._scheme = scheme || JsSIP_C.SIP;\n this._user = user;\n this._host = host;\n this._port = port;\n for (const param in parameters) {\n if (Object.prototype.hasOwnProperty.call(parameters, param)) {\n this.setParam(param, parameters[param]);\n }\n }\n for (const header in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, header)) {\n this.setHeader(header, headers[header]);\n }\n }\n }\n get scheme() {\n return this._scheme;\n }\n set scheme(value) {\n this._scheme = value.toLowerCase();\n }\n get user() {\n return this._user;\n }\n set user(value) {\n this._user = value;\n }\n get host() {\n return this._host;\n }\n set host(value) {\n this._host = value.toLowerCase();\n }\n get port() {\n return this._port;\n }\n set port(value) {\n this._port = value === 0 ? value : parseInt(value, 10) || null;\n }\n setParam(key, value) {\n if (key) {\n this._parameters[key.toLowerCase()] =\n typeof value === 'undefined' || value === null\n ? null\n : value.toString();\n }\n }\n getParam(key) {\n if (key) {\n return this._parameters[key.toLowerCase()];\n }\n }\n hasParam(key) {\n if (key) {\n return ((this._parameters.hasOwnProperty(key.toLowerCase()) && true) || false);\n }\n }\n deleteParam(parameter) {\n parameter = parameter.toLowerCase();\n if (this._parameters.hasOwnProperty(parameter)) {\n const value = this._parameters[parameter];\n delete this._parameters[parameter];\n return value;\n }\n }\n clearParams() {\n this._parameters = {};\n }\n setHeader(name, value) {\n this._headers[Utils.headerize(name)] = Array.isArray(value)\n ? value\n : [value];\n }\n getHeader(name) {\n if (name) {\n return this._headers[Utils.headerize(name)];\n }\n }\n hasHeader(name) {\n if (name) {\n return ((this._headers.hasOwnProperty(Utils.headerize(name)) && true) || false);\n }\n }\n deleteHeader(header) {\n header = Utils.headerize(header);\n if (this._headers.hasOwnProperty(header)) {\n const value = this._headers[header];\n delete this._headers[header];\n return value;\n }\n }\n clearHeaders() {\n this._headers = {};\n }\n clone() {\n return new URI(this._scheme, this._user, this._host, this._port, JSON.parse(JSON.stringify(this._parameters)), JSON.parse(JSON.stringify(this._headers)));\n }\n toString() {\n const headers = [];\n let uri = `${this._scheme}:`;\n if (this._user) {\n uri += `${Utils.escapeUser(this._user)}@`;\n }\n uri += this._host;\n if (this._port || this._port === 0) {\n uri += `:${this._port}`;\n }\n for (const parameter in this._parameters) {\n if (Object.prototype.hasOwnProperty.call(this._parameters, parameter)) {\n uri += `;${parameter}`;\n if (this._parameters[parameter] !== null) {\n uri += `=${this._parameters[parameter]}`;\n }\n }\n }\n for (const header in this._headers) {\n if (Object.prototype.hasOwnProperty.call(this._headers, header)) {\n for (const item of this._headers[header]) {\n headers.push(`${header}=${item}`);\n }\n }\n }\n if (headers.length > 0) {\n uri += `?${headers.join('&')}`;\n }\n return uri;\n }\n toAor(show_port) {\n let aor = `${this._scheme}:`;\n if (this._user) {\n aor += `${Utils.escapeUser(this._user)}@`;\n }\n aor += this._host;\n if (show_port && (this._port || this._port === 0)) {\n aor += `:${this._port}`;\n }\n return aor;\n }\n};\n","\"use strict\";\nconst JsSIP_C = require('./Constants');\nconst URI = require('./URI');\nconst Grammar = require('./Grammar');\nexports.str_utf8_length = string => unescape(encodeURIComponent(string)).length;\n// Used by 'hasMethods'.\nconst isFunction = (exports.isFunction = fn => {\n if (fn !== undefined) {\n return Object.prototype.toString.call(fn) === '[object Function]'\n ? true\n : false;\n }\n else {\n return false;\n }\n});\nexports.isString = str => {\n if (str !== undefined) {\n return Object.prototype.toString.call(str) === '[object String]'\n ? true\n : false;\n }\n else {\n return false;\n }\n};\nexports.isDecimal = num => !isNaN(num) && parseFloat(num) === parseInt(num, 10);\nexports.isEmpty = value => {\n return (value === null ||\n value === '' ||\n value === undefined ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'number' && isNaN(value)));\n};\nexports.hasMethods = function (obj, ...methodNames) {\n for (const methodName of methodNames) {\n if (isFunction(obj[methodName])) {\n return false;\n }\n }\n return true;\n};\n// Used by 'newTag'.\nconst createRandomToken = (exports.createRandomToken = (size, base = 32) => {\n let i, r, token = '';\n for (i = 0; i < size; i++) {\n r = (Math.random() * base) | 0;\n token += r.toString(base);\n }\n return token;\n});\nexports.newTag = () => createRandomToken(10);\n// https://stackoverflow.com/users/109538/broofa.\nexports.newUUID = () => {\n const UUID = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n return UUID;\n};\nexports.hostType = host => {\n if (!host) {\n return;\n }\n else {\n host = Grammar.parse(host, 'host');\n if (host !== -1) {\n return host.host_type;\n }\n }\n};\n/**\n * Hex-escape a SIP URI user.\n * Don't hex-escape ':' (%3A), '+' (%2B), '?' (%3F\"), '/' (%2F).\n *\n * Used by 'normalizeTarget'.\n */\nconst escapeUser = (exports.escapeUser = user => encodeURIComponent(decodeURIComponent(user))\n .replace(/%3A/gi, ':')\n .replace(/%2B/gi, '+')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/'));\n/**\n * Normalize SIP URI.\n * NOTE: It does not allow a SIP URI without username.\n * Accepts 'sip', 'sips' and 'tel' URIs and convert them into 'sip'.\n * Detects the domain part (if given) and properly hex-escapes the user portion.\n * If the user portion has only 'tel' number symbols the user portion is clean of 'tel' visual separators.\n */\nexports.normalizeTarget = (target, domain) => {\n // If no target is given then raise an error.\n if (!target) {\n return;\n // If a URI instance is given then return it.\n }\n else if (target instanceof URI) {\n return target;\n // If a string is given split it by '@':\n // - Last fragment is the desired domain.\n // - Otherwise append the given domain argument.\n }\n else if (typeof target === 'string') {\n const target_array = target.split('@');\n let target_user;\n let target_domain;\n switch (target_array.length) {\n case 1: {\n if (!domain) {\n return;\n }\n target_user = target;\n target_domain = domain;\n break;\n }\n case 2: {\n target_user = target_array[0];\n target_domain = target_array[1];\n break;\n }\n default: {\n target_user = target_array.slice(0, target_array.length - 1).join('@');\n target_domain = target_array[target_array.length - 1];\n }\n }\n // Remove the URI scheme (if present).\n target_user = target_user.replace(/^(sips?|tel):/i, '');\n // Remove 'tel' visual separators if the user portion just contains 'tel' number symbols.\n if (/^[-.()]*\\+?[0-9\\-.()]+$/.test(target_user)) {\n target_user = target_user.replace(/[-.()]/g, '');\n }\n // Build the complete SIP URI.\n target = `${JsSIP_C.SIP}:${escapeUser(target_user)}@${target_domain}`;\n // Finally parse the resulting URI.\n let uri;\n if ((uri = URI.parse(target))) {\n return uri;\n }\n else {\n return;\n }\n }\n else {\n return;\n }\n};\nexports.headerize = string => {\n const exceptions = {\n 'Call-Id': 'Call-ID',\n Cseq: 'CSeq',\n 'Www-Authenticate': 'WWW-Authenticate',\n };\n const name = string.toLowerCase().replace(/_/g, '-').split('-');\n let hname = '';\n const parts = name.length;\n let part;\n for (part = 0; part < parts; part++) {\n if (part !== 0) {\n hname += '-';\n }\n hname += name[part].charAt(0).toUpperCase() + name[part].substring(1);\n }\n if (exceptions[hname]) {\n hname = exceptions[hname];\n }\n return hname;\n};\nexports.sipErrorCause = status_code => {\n for (const cause in JsSIP_C.SIP_ERROR_CAUSES) {\n if (JsSIP_C.SIP_ERROR_CAUSES[cause].indexOf(status_code) !== -1) {\n return JsSIP_C.causes[cause];\n }\n }\n return JsSIP_C.causes.SIP_FAILURE_CODE;\n};\n/**\n * Generate a random Test-Net IP (https://tools.ietf.org/html/rfc5735)\n */\nexports.getRandomTestNetIP = () => {\n function getOctet(from, to) {\n return Math.floor(Math.random() * (to - from + 1) + from);\n }\n return `192.0.2.${getOctet(1, 254)}`;\n};\n// MD5 (Message-Digest Algorithm) https://www.webtoolkit.info.\nexports.calculateMD5 = string => {\n function rotateLeft(lValue, iShiftBits) {\n return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));\n }\n function addUnsigned(lX, lY) {\n const lX8 = lX & 0x80000000;\n const lY8 = lY & 0x80000000;\n const lX4 = lX & 0x40000000;\n const lY4 = lY & 0x40000000;\n const lResult = (lX & 0x3fffffff) + (lY & 0x3fffffff);\n if (lX4 & lY4) {\n return lResult ^ 0x80000000 ^ lX8 ^ lY8;\n }\n if (lX4 | lY4) {\n if (lResult & 0x40000000) {\n return lResult ^ 0xc0000000 ^ lX8 ^ lY8;\n }\n else {\n return lResult ^ 0x40000000 ^ lX8 ^ lY8;\n }\n }\n else {\n return lResult ^ lX8 ^ lY8;\n }\n }\n function doF(x, y, z) {\n return (x & y) | (~x & z);\n }\n function doG(x, y, z) {\n return (x & z) | (y & ~z);\n }\n function doH(x, y, z) {\n return x ^ y ^ z;\n }\n function doI(x, y, z) {\n return y ^ (x | ~z);\n }\n function doFF(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(doF(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n }\n function doGG(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(doG(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n }\n function doHH(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(doH(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n }\n function doII(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(doI(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n }\n function convertToWordArray(str) {\n let lWordCount;\n const lMessageLength = str.length;\n const lNumberOfWords_temp1 = lMessageLength + 8;\n const lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;\n const lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;\n const lWordArray = new Array(lNumberOfWords - 1);\n let lBytePosition = 0;\n let lByteCount = 0;\n while (lByteCount < lMessageLength) {\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\n lBytePosition = (lByteCount % 4) * 8;\n lWordArray[lWordCount] =\n lWordArray[lWordCount] | (str.charCodeAt(lByteCount) << lBytePosition);\n lByteCount++;\n }\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\n lBytePosition = (lByteCount % 4) * 8;\n lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);\n lWordArray[lNumberOfWords - 2] = lMessageLength << 3;\n lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\n return lWordArray;\n }\n function wordToHex(lValue) {\n let wordToHexValue = '', wordToHexValue_temp = '', lByte, lCount;\n for (lCount = 0; lCount <= 3; lCount++) {\n lByte = (lValue >>> (lCount * 8)) & 255;\n wordToHexValue_temp = `0${lByte.toString(16)}`;\n wordToHexValue =\n wordToHexValue +\n wordToHexValue_temp.substr(wordToHexValue_temp.length - 2, 2);\n }\n return wordToHexValue;\n }\n function utf8Encode(str) {\n let utftext = '';\n for (let n = 0; n < str.length; n++) {\n const c = str.charCodeAt(n);\n if (c < 128) {\n utftext += String.fromCharCode(c);\n }\n else if (c > 127 && c < 2048) {\n utftext += String.fromCharCode((c >> 6) | 192);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n else {\n utftext += String.fromCharCode((c >> 12) | 224);\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n }\n return utftext;\n }\n let x = [];\n let k, AA, BB, CC, DD, a, b, c, d;\n const S11 = 7, S12 = 12, S13 = 17, S14 = 22;\n const S21 = 5, S22 = 9, S23 = 14, S24 = 20;\n const S31 = 4, S32 = 11, S33 = 16, S34 = 23;\n const S41 = 6, S42 = 10, S43 = 15, S44 = 21;\n string = utf8Encode(string);\n x = convertToWordArray(string);\n a = 0x67452301;\n b = 0xefcdab89;\n c = 0x98badcfe;\n d = 0x10325476;\n for (k = 0; k < x.length; k += 16) {\n AA = a;\n BB = b;\n CC = c;\n DD = d;\n a = doFF(a, b, c, d, x[k + 0], S11, 0xd76aa478);\n d = doFF(d, a, b, c, x[k + 1], S12, 0xe8c7b756);\n c = doFF(c, d, a, b, x[k + 2], S13, 0x242070db);\n b = doFF(b, c, d, a, x[k + 3], S14, 0xc1bdceee);\n a = doFF(a, b, c, d, x[k + 4], S11, 0xf57c0faf);\n d = doFF(d, a, b, c, x[k + 5], S12, 0x4787c62a);\n c = doFF(c, d, a, b, x[k + 6], S13, 0xa8304613);\n b = doFF(b, c, d, a, x[k + 7], S14, 0xfd469501);\n a = doFF(a, b, c, d, x[k + 8], S11, 0x698098d8);\n d = doFF(d, a, b, c, x[k + 9], S12, 0x8b44f7af);\n c = doFF(c, d, a, b, x[k + 10], S13, 0xffff5bb1);\n b = doFF(b, c, d, a, x[k + 11], S14, 0x895cd7be);\n a = doFF(a, b, c, d, x[k + 12], S11, 0x6b901122);\n d = doFF(d, a, b, c, x[k + 13], S12, 0xfd987193);\n c = doFF(c, d, a, b, x[k + 14], S13, 0xa679438e);\n b = doFF(b, c, d, a, x[k + 15], S14, 0x49b40821);\n a = doGG(a, b, c, d, x[k + 1], S21, 0xf61e2562);\n d = doGG(d, a, b, c, x[k + 6], S22, 0xc040b340);\n c = doGG(c, d, a, b, x[k + 11], S23, 0x265e5a51);\n b = doGG(b, c, d, a, x[k + 0], S24, 0xe9b6c7aa);\n a = doGG(a, b, c, d, x[k + 5], S21, 0xd62f105d);\n d = doGG(d, a, b, c, x[k + 10], S22, 0x2441453);\n c = doGG(c, d, a, b, x[k + 15], S23, 0xd8a1e681);\n b = doGG(b, c, d, a, x[k + 4], S24, 0xe7d3fbc8);\n a = doGG(a, b, c, d, x[k + 9], S21, 0x21e1cde6);\n d = doGG(d, a, b, c, x[k + 14], S22, 0xc33707d6);\n c = doGG(c, d, a, b, x[k + 3], S23, 0xf4d50d87);\n b = doGG(b, c, d, a, x[k + 8], S24, 0x455a14ed);\n a = doGG(a, b, c, d, x[k + 13], S21, 0xa9e3e905);\n d = doGG(d, a, b, c, x[k + 2], S22, 0xfcefa3f8);\n c = doGG(c, d, a, b, x[k + 7], S23, 0x676f02d9);\n b = doGG(b, c, d, a, x[k + 12], S24, 0x8d2a4c8a);\n a = doHH(a, b, c, d, x[k + 5], S31, 0xfffa3942);\n d = doHH(d, a, b, c, x[k + 8], S32, 0x8771f681);\n c = doHH(c, d, a, b, x[k + 11], S33, 0x6d9d6122);\n b = doHH(b, c, d, a, x[k + 14], S34, 0xfde5380c);\n a = doHH(a, b, c, d, x[k + 1], S31, 0xa4beea44);\n d = doHH(d, a, b, c, x[k + 4], S32, 0x4bdecfa9);\n c = doHH(c, d, a, b, x[k + 7], S33, 0xf6bb4b60);\n b = doHH(b, c, d, a, x[k + 10], S34, 0xbebfbc70);\n a = doHH(a, b, c, d, x[k + 13], S31, 0x289b7ec6);\n d = doHH(d, a, b, c, x[k + 0], S32, 0xeaa127fa);\n c = doHH(c, d, a, b, x[k + 3], S33, 0xd4ef3085);\n b = doHH(b, c, d, a, x[k + 6], S34, 0x4881d05);\n a = doHH(a, b, c, d, x[k + 9], S31, 0xd9d4d039);\n d = doHH(d, a, b, c, x[k + 12], S32, 0xe6db99e5);\n c = doHH(c, d, a, b, x[k + 15], S33, 0x1fa27cf8);\n b = doHH(b, c, d, a, x[k + 2], S34, 0xc4ac5665);\n a = doII(a, b, c, d, x[k + 0], S41, 0xf4292244);\n d = doII(d, a, b, c, x[k + 7], S42, 0x432aff97);\n c = doII(c, d, a, b, x[k + 14], S43, 0xab9423a7);\n b = doII(b, c, d, a, x[k + 5], S44, 0xfc93a039);\n a = doII(a, b, c, d, x[k + 12], S41, 0x655b59c3);\n d = doII(d, a, b, c, x[k + 3], S42, 0x8f0ccc92);\n c = doII(c, d, a, b, x[k + 10], S43, 0xffeff47d);\n b = doII(b, c, d, a, x[k + 1], S44, 0x85845dd1);\n a = doII(a, b, c, d, x[k + 8], S41, 0x6fa87e4f);\n d = doII(d, a, b, c, x[k + 15], S42, 0xfe2ce6e0);\n c = doII(c, d, a, b, x[k + 6], S43, 0xa3014314);\n b = doII(b, c, d, a, x[k + 13], S44, 0x4e0811a1);\n a = doII(a, b, c, d, x[k + 4], S41, 0xf7537e82);\n d = doII(d, a, b, c, x[k + 11], S42, 0xbd3af235);\n c = doII(c, d, a, b, x[k + 2], S43, 0x2ad7d2bb);\n b = doII(b, c, d, a, x[k + 9], S44, 0xeb86d391);\n a = addUnsigned(a, AA);\n b = addUnsigned(b, BB);\n c = addUnsigned(c, CC);\n d = addUnsigned(d, DD);\n }\n const temp = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);\n return temp.toLowerCase();\n};\nexports.closeMediaStream = stream => {\n if (!stream) {\n return;\n }\n // Latest spec states that MediaStream has no stop() method and instead must\n // call stop() on every MediaStreamTrack.\n try {\n let tracks;\n if (stream.getTracks) {\n tracks = stream.getTracks();\n for (const track of tracks) {\n track.stop();\n }\n }\n else {\n tracks = stream.getAudioTracks();\n for (const track of tracks) {\n track.stop();\n }\n tracks = stream.getVideoTracks();\n for (const track of tracks) {\n track.stop();\n }\n }\n }\n catch (error) {\n // Deprecated by the spec, but still in use.\n // NOTE: In Temasys IE plugin stream.stop is a callable 'object'.\n if (typeof stream.stop === 'function' || typeof stream.stop === 'object') {\n stream.stop();\n }\n }\n};\nexports.cloneArray = array => {\n return (array && array.slice()) || [];\n};\nexports.cloneObject = (obj, fallback = {}) => {\n return (obj && Object.assign({}, obj)) || fallback;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","module.exports = {};","module.exports = {};","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet flagForceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tflagForceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m') ||\n\t\t\thasFlag('color=full') ||\n\t\t\thasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream, options = {}) {\n\tconst level = supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options\n\t});\n\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel({isTTY: tty.isatty(1)}),\n\tstderr: getSupportLevel({isTTY: tty.isatty(2)})\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nconst debug = require('debug');\nconst APP_NAME = 'JsSIP';\nmodule.exports = class Logger {\n constructor(prefix) {\n if (prefix) {\n this._debug = debug.default(`${APP_NAME}:${prefix}`);\n this._warn = debug.default(`${APP_NAME}:WARN:${prefix}`);\n this._error = debug.default(`${APP_NAME}:ERROR:${prefix}`);\n }\n else {\n this._debug = debug.default(APP_NAME);\n this._warn = debug.default(`${APP_NAME}:WARN`);\n this._error = debug.default(`${APP_NAME}:ERROR`);\n }\n /* eslint-disable no-console */\n this._debug.log = console.info.bind(console);\n this._warn.log = console.warn.bind(console);\n this._error.log = console.error.bind(console);\n /* eslint-enable no-console */\n }\n get debug() {\n return this._debug;\n }\n get warn() {\n return this._warn;\n }\n get error() {\n return this._error;\n }\n};\n","var grammar = module.exports = {\n v: [{\n name: 'version',\n reg: /^(\\d*)$/\n }],\n o: [{\n // o=- 20518 0 IN IP4 203.0.113.1\n // NB: sessionId will be a String in most cases because it is huge\n name: 'origin',\n reg: /^(\\S*) (\\d*) (\\d*) (\\S*) IP(\\d) (\\S*)/,\n names: ['username', 'sessionId', 'sessionVersion', 'netType', 'ipVer', 'address'],\n format: '%s %s %d %s IP%d %s'\n }],\n // default parsing of these only (though some of these feel outdated)\n s: [{ name: 'name' }],\n i: [{ name: 'description' }],\n u: [{ name: 'uri' }],\n e: [{ name: 'email' }],\n p: [{ name: 'phone' }],\n z: [{ name: 'timezones' }], // TODO: this one can actually be parsed properly...\n r: [{ name: 'repeats' }], // TODO: this one can also be parsed properly\n // k: [{}], // outdated thing ignored\n t: [{\n // t=0 0\n name: 'timing',\n reg: /^(\\d*) (\\d*)/,\n names: ['start', 'stop'],\n format: '%d %d'\n }],\n c: [{\n // c=IN IP4 10.47.197.26\n name: 'connection',\n reg: /^IN IP(\\d) (\\S*)/,\n names: ['version', 'ip'],\n format: 'IN IP%d %s'\n }],\n b: [{\n // b=AS:4000\n push: 'bandwidth',\n reg: /^(TIAS|AS|CT|RR|RS):(\\d*)/,\n names: ['type', 'limit'],\n format: '%s:%s'\n }],\n m: [{\n // m=video 51744 RTP/AVP 126 97 98 34 31\n // NB: special - pushes to session\n // TODO: rtp/fmtp should be filtered by the payloads found here?\n reg: /^(\\w*) (\\d*) ([\\w/]*)(?: (.*))?/,\n names: ['type', 'port', 'protocol', 'payloads'],\n format: '%s %d %s %s'\n }],\n a: [\n {\n // a=rtpmap:110 opus/48000/2\n push: 'rtp',\n reg: /^rtpmap:(\\d*) ([\\w\\-.]*)(?:\\s*\\/(\\d*)(?:\\s*\\/(\\S*))?)?/,\n names: ['payload', 'codec', 'rate', 'encoding'],\n format: function (o) {\n return (o.encoding)\n ? 'rtpmap:%d %s/%s/%s'\n : o.rate\n ? 'rtpmap:%d %s/%s'\n : 'rtpmap:%d %s';\n }\n },\n {\n // a=fmtp:108 profile-level-id=24;object=23;bitrate=64000\n // a=fmtp:111 minptime=10; useinbandfec=1\n push: 'fmtp',\n reg: /^fmtp:(\\d*) ([\\S| ]*)/,\n names: ['payload', 'config'],\n format: 'fmtp:%d %s'\n },\n {\n // a=control:streamid=0\n name: 'control',\n reg: /^control:(.*)/,\n format: 'control:%s'\n },\n {\n // a=rtcp:65179 IN IP4 193.84.77.194\n name: 'rtcp',\n reg: /^rtcp:(\\d*)(?: (\\S*) IP(\\d) (\\S*))?/,\n names: ['port', 'netType', 'ipVer', 'address'],\n format: function (o) {\n return (o.address != null)\n ? 'rtcp:%d %s IP%d %s'\n : 'rtcp:%d';\n }\n },\n {\n // a=rtcp-fb:98 trr-int 100\n push: 'rtcpFbTrrInt',\n reg: /^rtcp-fb:(\\*|\\d*) trr-int (\\d*)/,\n names: ['payload', 'value'],\n format: 'rtcp-fb:%s trr-int %d'\n },\n {\n // a=rtcp-fb:98 nack rpsi\n push: 'rtcpFb',\n reg: /^rtcp-fb:(\\*|\\d*) ([\\w-_]*)(?: ([\\w-_]*))?/,\n names: ['payload', 'type', 'subtype'],\n format: function (o) {\n return (o.subtype != null)\n ? 'rtcp-fb:%s %s %s'\n : 'rtcp-fb:%s %s';\n }\n },\n {\n // a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n // a=extmap:1/recvonly URI-gps-string\n // a=extmap:3 urn:ietf:params:rtp-hdrext:encrypt urn:ietf:params:rtp-hdrext:smpte-tc 25@600/24\n push: 'ext',\n reg: /^extmap:(\\d+)(?:\\/(\\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\\S*)(?: (\\S*))?/,\n names: ['value', 'direction', 'encrypt-uri', 'uri', 'config'],\n format: function (o) {\n return (\n 'extmap:%d' +\n (o.direction ? '/%s' : '%v') +\n (o['encrypt-uri'] ? ' %s' : '%v') +\n ' %s' +\n (o.config ? ' %s' : '')\n );\n }\n },\n {\n // a=extmap-allow-mixed\n name: 'extmapAllowMixed',\n reg: /^(extmap-allow-mixed)/\n },\n {\n // a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:32\n push: 'crypto',\n reg: /^crypto:(\\d*) ([\\w_]*) (\\S*)(?: (\\S*))?/,\n names: ['id', 'suite', 'config', 'sessionConfig'],\n format: function (o) {\n return (o.sessionConfig != null)\n ? 'crypto:%d %s %s %s'\n : 'crypto:%d %s %s';\n }\n },\n {\n // a=setup:actpass\n name: 'setup',\n reg: /^setup:(\\w*)/,\n format: 'setup:%s'\n },\n {\n // a=connection:new\n name: 'connectionType',\n reg: /^connection:(new|existing)/,\n format: 'connection:%s'\n },\n {\n // a=mid:1\n name: 'mid',\n reg: /^mid:([^\\s]*)/,\n format: 'mid:%s'\n },\n {\n // a=msid:0c8b064d-d807-43b4-b434-f92a889d8587 98178685-d409-46e0-8e16-7ef0db0db64a\n name: 'msid',\n reg: /^msid:(.*)/,\n format: 'msid:%s'\n },\n {\n // a=ptime:20\n name: 'ptime',\n reg: /^ptime:(\\d*(?:\\.\\d*)*)/,\n format: 'ptime:%d'\n },\n {\n // a=maxptime:60\n name: 'maxptime',\n reg: /^maxptime:(\\d*(?:\\.\\d*)*)/,\n format: 'maxptime:%d'\n },\n {\n // a=sendrecv\n name: 'direction',\n reg: /^(sendrecv|recvonly|sendonly|inactive)/\n },\n {\n // a=ice-lite\n name: 'icelite',\n reg: /^(ice-lite)/\n },\n {\n // a=ice-ufrag:F7gI\n name: 'iceUfrag',\n reg: /^ice-ufrag:(\\S*)/,\n format: 'ice-ufrag:%s'\n },\n {\n // a=ice-pwd:x9cml/YzichV2+XlhiMu8g\n name: 'icePwd',\n reg: /^ice-pwd:(\\S*)/,\n format: 'ice-pwd:%s'\n },\n {\n // a=fingerprint:SHA-1 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33\n name: 'fingerprint',\n reg: /^fingerprint:(\\S*) (\\S*)/,\n names: ['type', 'hash'],\n format: 'fingerprint:%s %s'\n },\n {\n // a=candidate:0 1 UDP 2113667327 203.0.113.1 54400 typ host\n // a=candidate:1162875081 1 udp 2113937151 192.168.34.75 60017 typ host generation 0 network-id 3 network-cost 10\n // a=candidate:3289912957 2 udp 1845501695 193.84.77.194 60017 typ srflx raddr 192.168.34.75 rport 60017 generation 0 network-id 3 network-cost 10\n // a=candidate:229815620 1 tcp 1518280447 192.168.150.19 60017 typ host tcptype active generation 0 network-id 3 network-cost 10\n // a=candidate:3289912957 2 tcp 1845501695 193.84.77.194 60017 typ srflx raddr 192.168.34.75 rport 60017 tcptype passive generation 0 network-id 3 network-cost 10\n push:'candidates',\n reg: /^candidate:(\\S*) (\\d*) (\\S*) (\\d*) (\\S*) (\\d*) typ (\\S*)(?: raddr (\\S*) rport (\\d*))?(?: tcptype (\\S*))?(?: generation (\\d*))?(?: network-id (\\d*))?(?: network-cost (\\d*))?/,\n names: ['foundation', 'component', 'transport', 'priority', 'ip', 'port', 'type', 'raddr', 'rport', 'tcptype', 'generation', 'network-id', 'network-cost'],\n format: function (o) {\n var str = 'candidate:%s %d %s %d %s %d typ %s';\n\n str += (o.raddr != null) ? ' raddr %s rport %d' : '%v%v';\n\n // NB: candidate has three optional chunks, so %void middles one if it's missing\n str += (o.tcptype != null) ? ' tcptype %s' : '%v';\n\n if (o.generation != null) {\n str += ' generation %d';\n }\n\n str += (o['network-id'] != null) ? ' network-id %d' : '%v';\n str += (o['network-cost'] != null) ? ' network-cost %d' : '%v';\n return str;\n }\n },\n {\n // a=end-of-candidates (keep after the candidates line for readability)\n name: 'endOfCandidates',\n reg: /^(end-of-candidates)/\n },\n {\n // a=remote-candidates:1 203.0.113.1 54400 2 203.0.113.1 54401 ...\n name: 'remoteCandidates',\n reg: /^remote-candidates:(.*)/,\n format: 'remote-candidates:%s'\n },\n {\n // a=ice-options:google-ice\n name: 'iceOptions',\n reg: /^ice-options:(\\S*)/,\n format: 'ice-options:%s'\n },\n {\n // a=ssrc:2566107569 cname:t9YU8M1UxTF8Y1A1\n push: 'ssrcs',\n reg: /^ssrc:(\\d*) ([\\w_-]*)(?::(.*))?/,\n names: ['id', 'attribute', 'value'],\n format: function (o) {\n var str = 'ssrc:%d';\n if (o.attribute != null) {\n str += ' %s';\n if (o.value != null) {\n str += ':%s';\n }\n }\n return str;\n }\n },\n {\n // a=ssrc-group:FEC 1 2\n // a=ssrc-group:FEC-FR 3004364195 1080772241\n push: 'ssrcGroups',\n // token-char = %x21 / %x23-27 / %x2A-2B / %x2D-2E / %x30-39 / %x41-5A / %x5E-7E\n reg: /^ssrc-group:([\\x21\\x23\\x24\\x25\\x26\\x27\\x2A\\x2B\\x2D\\x2E\\w]*) (.*)/,\n names: ['semantics', 'ssrcs'],\n format: 'ssrc-group:%s %s'\n },\n {\n // a=msid-semantic: WMS Jvlam5X3SX1OP6pn20zWogvaKJz5Hjf9OnlV\n name: 'msidSemantic',\n reg: /^msid-semantic:\\s?(\\w*) (\\S*)/,\n names: ['semantic', 'token'],\n format: 'msid-semantic: %s %s' // space after ':' is not accidental\n },\n {\n // a=group:BUNDLE audio video\n push: 'groups',\n reg: /^group:(\\w*) (.*)/,\n names: ['type', 'mids'],\n format: 'group:%s %s'\n },\n {\n // a=rtcp-mux\n name: 'rtcpMux',\n reg: /^(rtcp-mux)/\n },\n {\n // a=rtcp-rsize\n name: 'rtcpRsize',\n reg: /^(rtcp-rsize)/\n },\n {\n // a=sctpmap:5000 webrtc-datachannel 1024\n name: 'sctpmap',\n reg: /^sctpmap:([\\w_/]*) (\\S*)(?: (\\S*))?/,\n names: ['sctpmapNumber', 'app', 'maxMessageSize'],\n format: function (o) {\n return (o.maxMessageSize != null)\n ? 'sctpmap:%s %s %s'\n : 'sctpmap:%s %s';\n }\n },\n {\n // a=x-google-flag:conference\n name: 'xGoogleFlag',\n reg: /^x-google-flag:([^\\s]*)/,\n format: 'x-google-flag:%s'\n },\n {\n // a=rid:1 send max-width=1280;max-height=720;max-fps=30;depend=0\n push: 'rids',\n reg: /^rid:([\\d\\w]+) (\\w+)(?: ([\\S| ]*))?/,\n names: ['id', 'direction', 'params'],\n format: function (o) {\n return (o.params) ? 'rid:%s %s %s' : 'rid:%s %s';\n }\n },\n {\n // a=imageattr:97 send [x=800,y=640,sar=1.1,q=0.6] [x=480,y=320] recv [x=330,y=250]\n // a=imageattr:* send [x=800,y=640] recv *\n // a=imageattr:100 recv [x=320,y=240]\n push: 'imageattrs',\n reg: new RegExp(\n // a=imageattr:97\n '^imageattr:(\\\\d+|\\\\*)' +\n // send [x=800,y=640,sar=1.1,q=0.6] [x=480,y=320]\n '[\\\\s\\\\t]+(send|recv)[\\\\s\\\\t]+(\\\\*|\\\\[\\\\S+\\\\](?:[\\\\s\\\\t]+\\\\[\\\\S+\\\\])*)' +\n // recv [x=330,y=250]\n '(?:[\\\\s\\\\t]+(recv|send)[\\\\s\\\\t]+(\\\\*|\\\\[\\\\S+\\\\](?:[\\\\s\\\\t]+\\\\[\\\\S+\\\\])*))?'\n ),\n names: ['pt', 'dir1', 'attrs1', 'dir2', 'attrs2'],\n format: function (o) {\n return 'imageattr:%s %s %s' + (o.dir2 ? ' %s %s' : '');\n }\n },\n {\n // a=simulcast:send 1,2,3;~4,~5 recv 6;~7,~8\n // a=simulcast:recv 1;4,5 send 6;7\n name: 'simulcast',\n reg: new RegExp(\n // a=simulcast:\n '^simulcast:' +\n // send 1,2,3;~4,~5\n '(send|recv) ([a-zA-Z0-9\\\\-_~;,]+)' +\n // space + recv 6;~7,~8\n '(?:\\\\s?(send|recv) ([a-zA-Z0-9\\\\-_~;,]+))?' +\n // end\n '$'\n ),\n names: ['dir1', 'list1', 'dir2', 'list2'],\n format: function (o) {\n return 'simulcast:%s %s' + (o.dir2 ? ' %s %s' : '');\n }\n },\n {\n // old simulcast draft 03 (implemented by Firefox)\n // https://tools.ietf.org/html/draft-ietf-mmusic-sdp-simulcast-03\n // a=simulcast: recv pt=97;98 send pt=97\n // a=simulcast: send rid=5;6;7 paused=6,7\n name: 'simulcast_03',\n reg: /^simulcast:[\\s\\t]+([\\S+\\s\\t]+)$/,\n names: ['value'],\n format: 'simulcast: %s'\n },\n {\n // a=framerate:25\n // a=framerate:29.97\n name: 'framerate',\n reg: /^framerate:(\\d+(?:$|\\.\\d+))/,\n format: 'framerate:%s'\n },\n {\n // RFC4570\n // a=source-filter: incl IN IP4 239.5.2.31 10.1.15.5\n name: 'sourceFilter',\n reg: /^source-filter: *(excl|incl) (\\S*) (IP4|IP6|\\*) (\\S*) (.*)/,\n names: ['filterMode', 'netType', 'addressTypes', 'destAddress', 'srcList'],\n format: 'source-filter: %s %s %s %s %s'\n },\n {\n // a=bundle-only\n name: 'bundleOnly',\n reg: /^(bundle-only)/\n },\n {\n // a=label:1\n name: 'label',\n reg: /^label:(.+)/,\n format: 'label:%s'\n },\n {\n // RFC version 26 for SCTP over DTLS\n // https://tools.ietf.org/html/draft-ietf-mmusic-sctp-sdp-26#section-5\n name: 'sctpPort',\n reg: /^sctp-port:(\\d+)$/,\n format: 'sctp-port:%s'\n },\n {\n // RFC version 26 for SCTP over DTLS\n // https://tools.ietf.org/html/draft-ietf-mmusic-sctp-sdp-26#section-6\n name: 'maxMessageSize',\n reg: /^max-message-size:(\\d+)$/,\n format: 'max-message-size:%s'\n },\n {\n // RFC7273\n // a=ts-refclk:ptp=IEEE1588-2008:39-A7-94-FF-FE-07-CB-D0:37\n push:'tsRefClocks',\n reg: /^ts-refclk:([^\\s=]*)(?:=(\\S*))?/,\n names: ['clksrc', 'clksrcExt'],\n format: function (o) {\n return 'ts-refclk:%s' + (o.clksrcExt != null ? '=%s' : '');\n }\n },\n {\n // RFC7273\n // a=mediaclk:direct=963214424\n name:'mediaClk',\n reg: /^mediaclk:(?:id=(\\S*))? *([^\\s=]*)(?:=(\\S*))?(?: *rate=(\\d+)\\/(\\d+))?/,\n names: ['id', 'mediaClockName', 'mediaClockValue', 'rateNumerator', 'rateDenominator'],\n format: function (o) {\n var str = 'mediaclk:';\n str += (o.id != null ? 'id=%s %s' : '%v%s');\n str += (o.mediaClockValue != null ? '=%s' : '');\n str += (o.rateNumerator != null ? ' rate=%s' : '');\n str += (o.rateDenominator != null ? '/%s' : '');\n return str;\n }\n },\n {\n // a=keywds:keywords\n name: 'keywords',\n reg: /^keywds:(.+)$/,\n format: 'keywds:%s'\n },\n {\n // a=content:main\n name: 'content',\n reg: /^content:(.+)/,\n format: 'content:%s'\n },\n // BFCP https://tools.ietf.org/html/rfc4583\n {\n // a=floorctrl:c-s\n name: 'bfcpFloorCtrl',\n reg: /^floorctrl:(c-only|s-only|c-s)/,\n format: 'floorctrl:%s'\n },\n {\n // a=confid:1\n name: 'bfcpConfId',\n reg: /^confid:(\\d+)/,\n format: 'confid:%s'\n },\n {\n // a=userid:1\n name: 'bfcpUserId',\n reg: /^userid:(\\d+)/,\n format: 'userid:%s'\n },\n {\n // a=floorid:1\n name: 'bfcpFloorId',\n reg: /^floorid:(.+) (?:m-stream|mstrm):(.+)/,\n names: ['id', 'mStream'],\n format: 'floorid:%s mstrm:%s'\n },\n {\n // any a= that we don't understand is kept verbatim on media.invalid\n push: 'invalid',\n names: ['value']\n }\n ]\n};\n\n// set sensible defaults to avoid polluting the grammar with boring details\nObject.keys(grammar).forEach(function (key) {\n var objs = grammar[key];\n objs.forEach(function (obj) {\n if (!obj.reg) {\n obj.reg = /(.*)/;\n }\n if (!obj.format) {\n obj.format = '%s';\n }\n });\n});\n","var toIntIfInt = function (v) {\n return String(Number(v)) === v ? Number(v) : v;\n};\n\nvar attachProperties = function (match, location, names, rawName) {\n if (rawName && !names) {\n location[rawName] = toIntIfInt(match[1]);\n }\n else {\n for (var i = 0; i < names.length; i += 1) {\n if (match[i+1] != null) {\n location[names[i]] = toIntIfInt(match[i+1]);\n }\n }\n }\n};\n\nvar parseReg = function (obj, location, content) {\n var needsBlank = obj.name && obj.names;\n if (obj.push && !location[obj.push]) {\n location[obj.push] = [];\n }\n else if (needsBlank && !location[obj.name]) {\n location[obj.name] = {};\n }\n var keyLocation = obj.push ?\n {} : // blank object that will be pushed\n needsBlank ? location[obj.name] : location; // otherwise, named location or root\n\n attachProperties(content.match(obj.reg), keyLocation, obj.names, obj.name);\n\n if (obj.push) {\n location[obj.push].push(keyLocation);\n }\n};\n\nvar grammar = require('./grammar');\nvar validLine = RegExp.prototype.test.bind(/^([a-z])=(.*)/);\n\nexports.parse = function (sdp) {\n var session = {}\n , media = []\n , location = session; // points at where properties go under (one of the above)\n\n // parse lines we understand\n sdp.split(/(\\r\\n|\\r|\\n)/).filter(validLine).forEach(function (l) {\n var type = l[0];\n var content = l.slice(2);\n if (type === 'm') {\n media.push({rtp: [], fmtp: []});\n location = media[media.length-1]; // point at latest media line\n }\n\n for (var j = 0; j < (grammar[type] || []).length; j += 1) {\n var obj = grammar[type][j];\n if (obj.reg.test(content)) {\n return parseReg(obj, location, content);\n }\n }\n });\n\n session.media = media; // link it up\n return session;\n};\n\nvar paramReducer = function (acc, expr) {\n var s = expr.split(/=(.+)/, 2);\n if (s.length === 2) {\n acc[s[0]] = toIntIfInt(s[1]);\n } else if (s.length === 1 && expr.length > 1) {\n acc[s[0]] = undefined;\n }\n return acc;\n};\n\nexports.parseParams = function (str) {\n return str.split(/;\\s?/).reduce(paramReducer, {});\n};\n\n// For backward compatibility - alias will be removed in 3.0.0\nexports.parseFmtpConfig = exports.parseParams;\n\nexports.parsePayloads = function (str) {\n return str.toString().split(' ').map(Number);\n};\n\nexports.parseRemoteCandidates = function (str) {\n var candidates = [];\n var parts = str.split(' ').map(toIntIfInt);\n for (var i = 0; i < parts.length; i += 3) {\n candidates.push({\n component: parts[i],\n ip: parts[i + 1],\n port: parts[i + 2]\n });\n }\n return candidates;\n};\n\nexports.parseImageAttributes = function (str) {\n return str.split(' ').map(function (item) {\n return item.substring(1, item.length-1).split(',').reduce(paramReducer, {});\n });\n};\n\nexports.parseSimulcastStreamList = function (str) {\n return str.split(';').map(function (stream) {\n return stream.split(',').map(function (format) {\n var scid, paused = false;\n\n if (format[0] !== '~') {\n scid = toIntIfInt(format);\n } else {\n scid = toIntIfInt(format.substring(1, format.length));\n paused = true;\n }\n\n return {\n scid: scid,\n paused: paused\n };\n });\n });\n};\n","var grammar = require('./grammar');\n\n// customized util.format - discards excess arguments and can void middle ones\nvar formatRegExp = /%[sdv%]/g;\nvar format = function (formatStr) {\n var i = 1;\n var args = arguments;\n var len = args.length;\n return formatStr.replace(formatRegExp, function (x) {\n if (i >= len) {\n return x; // missing argument\n }\n var arg = args[i];\n i += 1;\n switch (x) {\n case '%%':\n return '%';\n case '%s':\n return String(arg);\n case '%d':\n return Number(arg);\n case '%v':\n return '';\n }\n });\n // NB: we discard excess arguments - they are typically undefined from makeLine\n};\n\nvar makeLine = function (type, obj, location) {\n var str = obj.format instanceof Function ?\n (obj.format(obj.push ? location : location[obj.name])) :\n obj.format;\n\n var args = [type + '=' + str];\n if (obj.names) {\n for (var i = 0; i < obj.names.length; i += 1) {\n var n = obj.names[i];\n if (obj.name) {\n args.push(location[obj.name][n]);\n }\n else { // for mLine and push attributes\n args.push(location[obj.names[i]]);\n }\n }\n }\n else {\n args.push(location[obj.name]);\n }\n return format.apply(null, args);\n};\n\n// RFC specified order\n// TODO: extend this with all the rest\nvar defaultOuterOrder = [\n 'v', 'o', 's', 'i',\n 'u', 'e', 'p', 'c',\n 'b', 't', 'r', 'z', 'a'\n];\nvar defaultInnerOrder = ['i', 'c', 'b', 'a'];\n\n\nmodule.exports = function (session, opts) {\n opts = opts || {};\n // ensure certain properties exist\n if (session.version == null) {\n session.version = 0; // 'v=0' must be there (only defined version atm)\n }\n if (session.name == null) {\n session.name = ' '; // 's= ' must be there if no meaningful name set\n }\n session.media.forEach(function (mLine) {\n if (mLine.payloads == null) {\n mLine.payloads = '';\n }\n });\n\n var outerOrder = opts.outerOrder || defaultOuterOrder;\n var innerOrder = opts.innerOrder || defaultInnerOrder;\n var sdp = [];\n\n // loop through outerOrder for matching properties on session\n outerOrder.forEach(function (type) {\n grammar[type].forEach(function (obj) {\n if (obj.name in session && session[obj.name] != null) {\n sdp.push(makeLine(type, obj, session));\n }\n else if (obj.push in session && session[obj.push] != null) {\n session[obj.push].forEach(function (el) {\n sdp.push(makeLine(type, obj, el));\n });\n }\n });\n });\n\n // then for each media line, follow the innerOrder\n session.media.forEach(function (mLine) {\n sdp.push(makeLine('m', grammar.m[0], mLine));\n\n innerOrder.forEach(function (type) {\n grammar[type].forEach(function (obj) {\n if (obj.name in mLine && mLine[obj.name] != null) {\n sdp.push(makeLine(type, obj, mLine));\n }\n else if (obj.push in mLine && mLine[obj.push] != null) {\n mLine[obj.push].forEach(function (el) {\n sdp.push(makeLine(type, obj, el));\n });\n }\n });\n });\n });\n\n return sdp.join('\\r\\n') + '\\r\\n';\n};\n","var parser = require('./parser');\nvar writer = require('./writer');\nvar grammar = require('./grammar');\n\nexports.grammar = grammar;\nexports.write = writer;\nexports.parse = parser.parse;\nexports.parseParams = parser.parseParams;\nexports.parseFmtpConfig = parser.parseFmtpConfig; // Alias of parseParams().\nexports.parsePayloads = parser.parsePayloads;\nexports.parseRemoteCandidates = parser.parseRemoteCandidates;\nexports.parseImageAttributes = parser.parseImageAttributes;\nexports.parseSimulcastStreamList = parser.parseSimulcastStreamList;\n","\"use strict\";\nconst sdp_transform = require('sdp-transform');\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst Utils = require('./Utils');\nconst NameAddrHeader = require('./NameAddrHeader');\nconst Grammar = require('./Grammar');\nconst logger = new Logger('SIPMessage');\n/**\n * -param {String} method request method\n * -param {String} ruri request uri\n * -param {UA} ua\n * -param {Object} params parameters that will have priority over ua.configuration parameters:\n * <br>\n * - cseq, call_id, from_tag, from_uri, from_display_name, to_uri, to_tag, route_set\n * -param {Object} [headers] extra headers\n * -param {String} [body]\n */\nclass OutgoingRequest {\n constructor(method, ruri, ua, params, extraHeaders, body) {\n // Mandatory parameters check.\n if (!method || !ruri || !ua) {\n return null;\n }\n params = params || {};\n this.ua = ua;\n this.headers = {};\n this.method = method;\n this.ruri = ruri;\n this.body = body;\n this.extraHeaders = Utils.cloneArray(extraHeaders);\n if (this.ua.configuration.extra_headers) {\n this.extraHeaders = this.extraHeaders.concat(this.ua.configuration.extra_headers);\n }\n // Fill the Common SIP Request Headers.\n // Route.\n if (params.route_set) {\n this.setHeader('route', params.route_set);\n }\n else if (ua.configuration.use_preloaded_route) {\n this.setHeader('route', `<${ua.transport.sip_uri};lr>`);\n }\n // Via.\n // Empty Via header. Will be filled by the client transaction.\n this.setHeader('via', '');\n // Max-Forwards.\n this.setHeader('max-forwards', JsSIP_C.MAX_FORWARDS);\n // To\n const to_uri = params.to_uri || ruri;\n const to_params = params.to_tag ? { tag: params.to_tag } : null;\n const to_display_name = typeof params.to_display_name !== 'undefined'\n ? params.to_display_name\n : null;\n this.to = new NameAddrHeader(to_uri, to_display_name, to_params);\n this.setHeader('to', this.to.toString());\n // From.\n const from_uri = params.from_uri || ua.configuration.uri;\n const from_params = { tag: params.from_tag || Utils.newTag() };\n let display_name;\n if (typeof params.from_display_name !== 'undefined') {\n display_name = params.from_display_name;\n }\n else if (ua.configuration.display_name) {\n display_name = ua.configuration.display_name;\n }\n else {\n display_name = null;\n }\n this.from = new NameAddrHeader(from_uri, display_name, from_params);\n this.setHeader('from', this.from.toString());\n // Call-ID.\n const call_id = params.call_id || ua.configuration.jssip_id + Utils.createRandomToken(15);\n this.call_id = call_id;\n this.setHeader('call-id', call_id);\n // CSeq.\n const cseq = params.cseq || Math.floor(Math.random() * 10000);\n this.cseq = cseq;\n this.setHeader('cseq', `${cseq} ${method}`);\n }\n /**\n * Replace the the given header by the given value.\n * -param {String} name header name\n * -param {String | Array} value header value\n */\n setHeader(name, value) {\n // Remove the header from extraHeaders if present.\n const regexp = new RegExp(`^\\\\s*${name}\\\\s*:`, 'i');\n for (let idx = 0; idx < this.extraHeaders.length; idx++) {\n if (regexp.test(this.extraHeaders[idx])) {\n this.extraHeaders.splice(idx, 1);\n }\n }\n this.headers[Utils.headerize(name)] = Array.isArray(value)\n ? value\n : [value];\n }\n /**\n * Get the value of the given header name at the given position.\n * -param {String} name header name\n * -returns {String|undefined} Returns the specified header, null if header doesn't exist.\n */\n getHeader(name) {\n const headers = this.headers[Utils.headerize(name)];\n if (headers) {\n if (headers[0]) {\n return headers[0];\n }\n }\n else {\n const regexp = new RegExp(`^\\\\s*${name}\\\\s*:`, 'i');\n for (const header of this.extraHeaders) {\n if (regexp.test(header)) {\n return header.substring(header.indexOf(':') + 1).trim();\n }\n }\n }\n return;\n }\n /**\n * Get the header/s of the given name.\n * -param {String} name header name\n * -returns {Array} Array with all the headers of the specified name.\n */\n getHeaders(name) {\n const headers = this.headers[Utils.headerize(name)];\n const result = [];\n if (headers) {\n for (const header of headers) {\n result.push(header);\n }\n return result;\n }\n else {\n const regexp = new RegExp(`^\\\\s*${name}\\\\s*:`, 'i');\n for (const header of this.extraHeaders) {\n if (regexp.test(header)) {\n result.push(header.substring(header.indexOf(':') + 1).trim());\n }\n }\n return result;\n }\n }\n /**\n * Verify the existence of the given header.\n * -param {String} name header name\n * -returns {boolean} true if header with given name exists, false otherwise\n */\n hasHeader(name) {\n if (this.headers[Utils.headerize(name)]) {\n return true;\n }\n else {\n const regexp = new RegExp(`^\\\\s*${name}\\\\s*:`, 'i');\n for (const header of this.extraHeaders) {\n if (regexp.test(header)) {\n return true;\n }\n }\n }\n return false;\n }\n /**\n * Parse the current body as a SDP and store the resulting object\n * into this.sdp.\n * -param {Boolean} force: Parse even if this.sdp already exists.\n *\n * Returns this.sdp.\n */\n parseSDP(force) {\n if (!force && this.sdp) {\n return this.sdp;\n }\n else {\n this.sdp = sdp_transform.parse(this.body || '');\n return this.sdp;\n }\n }\n toString() {\n let msg = `${this.method} ${this.ruri} SIP/2.0\\r\\n`;\n for (const headerName in this.headers) {\n if (Object.prototype.hasOwnProperty.call(this.headers, headerName)) {\n for (const headerValue of this.headers[headerName]) {\n msg += `${headerName}: ${headerValue}\\r\\n`;\n }\n }\n }\n for (const header of this.extraHeaders) {\n msg += `${header.trim()}\\r\\n`;\n }\n // Supported.\n const supported = [];\n switch (this.method) {\n case JsSIP_C.REGISTER: {\n supported.push('path', 'gruu');\n break;\n }\n case JsSIP_C.INVITE: {\n if (this.ua.configuration.session_timers) {\n supported.push('timer');\n }\n if (this.ua.contact.pub_gruu || this.ua.contact.temp_gruu) {\n supported.push('gruu');\n }\n supported.push('ice', 'replaces');\n break;\n }\n case JsSIP_C.UPDATE: {\n if (this.ua.configuration.session_timers) {\n supported.push('timer');\n }\n supported.push('ice');\n break;\n }\n }\n supported.push('outbound');\n const userAgent = this.ua.configuration.user_agent || JsSIP_C.USER_AGENT;\n // Allow.\n msg += `Allow: ${JsSIP_C.ALLOWED_METHODS}\\r\\n`;\n msg += `Supported: ${supported}\\r\\n`;\n msg += `User-Agent: ${userAgent}\\r\\n`;\n if (this.body) {\n const length = Utils.str_utf8_length(this.body);\n msg += `Content-Length: ${length}\\r\\n\\r\\n`;\n msg += this.body;\n }\n else {\n msg += 'Content-Length: 0\\r\\n\\r\\n';\n }\n return msg;\n }\n clone() {\n const request = new OutgoingRequest(this.method, this.ruri, this.ua);\n Object.keys(this.headers).forEach(function (name) {\n request.headers[name] = this.headers[name].slice();\n }, this);\n request.body = this.body;\n request.extraHeaders = Utils.cloneArray(this.extraHeaders);\n request.to = this.to;\n request.from = this.from;\n request.call_id = this.call_id;\n request.cseq = this.cseq;\n return request;\n }\n}\nclass InitialOutgoingInviteRequest extends OutgoingRequest {\n constructor(ruri, ua, params, extraHeaders, body) {\n super(JsSIP_C.INVITE, ruri, ua, params, extraHeaders, body);\n this.transaction = null;\n }\n cancel(reason) {\n this.transaction.cancel(reason);\n }\n clone() {\n const request = new InitialOutgoingInviteRequest(this.ruri, this.ua);\n Object.keys(this.headers).forEach(function (name) {\n request.headers[name] = this.headers[name].slice();\n }, this);\n request.body = this.body;\n request.extraHeaders = Utils.cloneArray(this.extraHeaders);\n request.to = this.to;\n request.from = this.from;\n request.call_id = this.call_id;\n request.cseq = this.cseq;\n request.transaction = this.transaction;\n return request;\n }\n}\nclass IncomingMessage {\n constructor() {\n this.data = null;\n this.headers = null;\n this.method = null;\n this.via = null;\n this.via_branch = null;\n this.call_id = null;\n this.cseq = null;\n this.from = null;\n this.from_tag = null;\n this.to = null;\n this.to_tag = null;\n this.body = null;\n this.sdp = null;\n }\n /**\n * Insert a header of the given name and value into the last position of the\n * header array.\n */\n addHeader(name, value) {\n const header = { raw: value };\n name = Utils.headerize(name);\n if (this.headers[name]) {\n this.headers[name].push(header);\n }\n else {\n this.headers[name] = [header];\n }\n }\n /**\n * Get the value of the given header name at the given position.\n */\n getHeader(name) {\n const header = this.headers[Utils.headerize(name)];\n if (header) {\n if (header[0]) {\n return header[0].raw;\n }\n }\n else {\n return;\n }\n }\n /**\n * Get the header/s of the given name.\n */\n getHeaders(name) {\n const headers = this.headers[Utils.headerize(name)];\n const result = [];\n if (!headers) {\n return [];\n }\n for (const header of headers) {\n result.push(header.raw);\n }\n return result;\n }\n /**\n * Verify the existence of the given header.\n */\n hasHeader(name) {\n return this.headers[Utils.headerize(name)] ? true : false;\n }\n /**\n * Parse the given header on the given index.\n * -param {String} name header name\n * -param {Number} [idx=0] header index\n * -returns {Object|undefined} Parsed header object, undefined if the header\n * is not present or in case of a parsing error.\n */\n parseHeader(name, idx = 0) {\n name = Utils.headerize(name);\n if (!this.headers[name]) {\n logger.debug(`header \"${name}\" not present`);\n return;\n }\n else if (idx >= this.headers[name].length) {\n logger.debug(`not so many \"${name}\" headers present`);\n return;\n }\n const header = this.headers[name][idx];\n const value = header.raw;\n if (header.parsed) {\n return header.parsed;\n }\n // Substitute '-' by '_' for grammar rule matching.\n const parsed = Grammar.parse(value, name.replace(/-/g, '_'));\n if (parsed === -1) {\n this.headers[name].splice(idx, 1); // delete from headers\n logger.debug(`error parsing \"${name}\" header field with value \"${value}\"`);\n return;\n }\n else {\n header.parsed = parsed;\n return parsed;\n }\n }\n /**\n * Message Header attribute selector. Alias of parseHeader.\n * -param {String} name header name\n * -param {Number} [idx=0] header index\n * -returns {Object|undefined} Parsed header object, undefined if the header\n * is not present or in case of a parsing error.\n *\n * -example\n * message.s('via',3).port\n */\n s(name, idx) {\n return this.parseHeader(name, idx);\n }\n /**\n * Replace the value of the given header by the value.\n * -param {String} name header name\n * -param {String} value header value\n */\n setHeader(name, value) {\n const header = { raw: value };\n this.headers[Utils.headerize(name)] = [header];\n }\n /**\n * Parse the current body as a SDP and store the resulting object\n * into this.sdp.\n * -param {Boolean} force: Parse even if this.sdp already exists.\n *\n * Returns this.sdp.\n */\n parseSDP(force) {\n if (!force && this.sdp) {\n return this.sdp;\n }\n else {\n this.sdp = sdp_transform.parse(this.body || '');\n return this.sdp;\n }\n }\n toString() {\n return this.data;\n }\n}\nclass IncomingRequest extends IncomingMessage {\n constructor(ua) {\n super();\n this.ua = ua;\n this.headers = {};\n this.ruri = null;\n this.transport = null;\n this.server_transaction = null;\n }\n /**\n * Stateful reply.\n * -param {Number} code status code\n * -param {String} reason reason phrase\n * -param {Object} headers extra headers\n * -param {String} body body\n * -param {Function} [onSuccess] onSuccess callback\n * -param {Function} [onFailure] onFailure callback\n */\n reply(code, reason, extraHeaders, body, onSuccess, onFailure) {\n const supported = [];\n let to = this.getHeader('To');\n code = code || null;\n reason = reason || null;\n // Validate code and reason values.\n if (!code || code < 100 || code > 699) {\n throw new TypeError(`Invalid status_code: ${code}`);\n }\n else if (reason &&\n typeof reason !== 'string' &&\n !(reason instanceof String)) {\n throw new TypeError(`Invalid reason_phrase: ${reason}`);\n }\n reason = reason || JsSIP_C.REASON_PHRASE[code] || '';\n extraHeaders = Utils.cloneArray(extraHeaders);\n if (this.ua.configuration.extra_headers) {\n extraHeaders = extraHeaders.concat(this.ua.configuration.extra_headers);\n }\n let response = `SIP/2.0 ${code} ${reason}\\r\\n`;\n if (this.method === JsSIP_C.INVITE && code > 100 && code <= 200) {\n const headers = this.getHeaders('record-route');\n for (const header of headers) {\n response += `Record-Route: ${header}\\r\\n`;\n }\n }\n const vias = this.getHeaders('via');\n for (const via of vias) {\n response += `Via: ${via}\\r\\n`;\n }\n if (!this.to_tag && code > 100) {\n to += `;tag=${Utils.newTag()}`;\n }\n else if (this.to_tag && !this.s('to').hasParam('tag')) {\n to += `;tag=${this.to_tag}`;\n }\n response += `To: ${to}\\r\\n`;\n response += `From: ${this.getHeader('From')}\\r\\n`;\n response += `Call-ID: ${this.call_id}\\r\\n`;\n response += `CSeq: ${this.cseq} ${this.method}\\r\\n`;\n for (const header of extraHeaders) {\n response += `${header.trim()}\\r\\n`;\n }\n // Supported.\n switch (this.method) {\n case JsSIP_C.INVITE: {\n if (this.ua.configuration.session_timers) {\n supported.push('timer');\n }\n if (this.ua.contact.pub_gruu || this.ua.contact.temp_gruu) {\n supported.push('gruu');\n }\n supported.push('ice', 'replaces');\n break;\n }\n case JsSIP_C.UPDATE: {\n if (this.ua.configuration.session_timers) {\n supported.push('timer');\n }\n if (body) {\n supported.push('ice');\n }\n supported.push('replaces');\n }\n }\n supported.push('outbound');\n // Allow and Accept.\n if (this.method === JsSIP_C.OPTIONS) {\n response += `Allow: ${JsSIP_C.ALLOWED_METHODS}\\r\\n`;\n response += `Accept: ${JsSIP_C.ACCEPTED_BODY_TYPES}\\r\\n`;\n }\n else if (code === 405) {\n response += `Allow: ${JsSIP_C.ALLOWED_METHODS}\\r\\n`;\n }\n else if (code === 415) {\n response += `Accept: ${JsSIP_C.ACCEPTED_BODY_TYPES}\\r\\n`;\n }\n response += `Supported: ${supported}\\r\\n`;\n if (body) {\n const length = Utils.str_utf8_length(body);\n response += 'Content-Type: application/sdp\\r\\n';\n response += `Content-Length: ${length}\\r\\n\\r\\n`;\n response += body;\n }\n else {\n response += `Content-Length: ${0}\\r\\n\\r\\n`;\n }\n this.server_transaction.receiveResponse(code, response, onSuccess, onFailure);\n }\n /**\n * Stateless reply.\n * -param {Number} code status code\n * -param {String} reason reason phrase\n */\n reply_sl(code = null, reason = null) {\n const vias = this.getHeaders('via');\n // Validate code and reason values.\n if (!code || code < 100 || code > 699) {\n throw new TypeError(`Invalid status_code: ${code}`);\n }\n else if (reason &&\n typeof reason !== 'string' &&\n !(reason instanceof String)) {\n throw new TypeError(`Invalid reason_phrase: ${reason}`);\n }\n reason = reason || JsSIP_C.REASON_PHRASE[code] || '';\n let response = `SIP/2.0 ${code} ${reason}\\r\\n`;\n for (const via of vias) {\n response += `Via: ${via}\\r\\n`;\n }\n let to = this.getHeader('To');\n if (!this.to_tag && code > 100) {\n to += `;tag=${Utils.newTag()}`;\n }\n else if (this.to_tag && !this.s('to').hasParam('tag')) {\n to += `;tag=${this.to_tag}`;\n }\n response += `To: ${to}\\r\\n`;\n response += `From: ${this.getHeader('From')}\\r\\n`;\n response += `Call-ID: ${this.call_id}\\r\\n`;\n response += `CSeq: ${this.cseq} ${this.method}\\r\\n`;\n if (this.ua.configuration.extra_headers) {\n for (const header of this.ua.configuration.extra_headers) {\n response += `${header.trim()}\\r\\n`;\n }\n }\n response += `Content-Length: ${0}\\r\\n\\r\\n`;\n this.transport.send(response);\n }\n}\nclass IncomingResponse extends IncomingMessage {\n constructor() {\n super();\n this.headers = {};\n this.status_code = null;\n this.reason_phrase = null;\n }\n}\nmodule.exports = {\n OutgoingRequest,\n InitialOutgoingInviteRequest,\n IncomingRequest,\n IncomingResponse,\n};\n","\"use strict\";\nconst Logger = require('./Logger');\nconst Utils = require('./Utils');\nconst logger = new Logger('DigestAuthentication');\nmodule.exports = class DigestAuthentication {\n constructor(credentials) {\n this._credentials = credentials;\n this._cnonce = null;\n this._nc = 0;\n this._ncHex = '00000000';\n this._algorithm = null;\n this._realm = null;\n this._nonce = null;\n this._opaque = null;\n this._stale = null;\n this._qop = null;\n this._method = null;\n this._uri = null;\n this._ha1 = null;\n this._response = null;\n }\n get(parameter) {\n switch (parameter) {\n case 'realm': {\n return this._realm;\n }\n case 'ha1': {\n return this._ha1;\n }\n default: {\n logger.warn('get() | cannot get \"%s\" parameter', parameter);\n return undefined;\n }\n }\n }\n /**\n * Performs Digest authentication given a SIP request and the challenge\n * received in a response to that request.\n * Returns true if auth was successfully generated, false otherwise.\n */\n authenticate({ method, ruri, body }, challenge, cnonce = null /* test interface */) {\n this._algorithm = challenge.algorithm;\n this._realm = challenge.realm;\n this._nonce = challenge.nonce;\n this._opaque = challenge.opaque;\n this._stale = challenge.stale;\n if (this._algorithm) {\n if (this._algorithm !== 'MD5') {\n logger.warn('authenticate() | challenge with Digest algorithm different than \"MD5\", authentication aborted');\n return false;\n }\n }\n else {\n this._algorithm = 'MD5';\n }\n if (!this._nonce) {\n logger.warn('authenticate() | challenge without Digest nonce, authentication aborted');\n return false;\n }\n if (!this._realm) {\n logger.warn('authenticate() | challenge without Digest realm, authentication aborted');\n return false;\n }\n // If no plain SIP password is provided.\n if (!this._credentials.password) {\n // If ha1 is not provided we cannot authenticate.\n if (!this._credentials.ha1) {\n logger.warn('authenticate() | no plain SIP password nor ha1 provided, authentication aborted');\n return false;\n }\n // If the realm does not match the stored realm we cannot authenticate.\n if (this._credentials.realm !== this._realm) {\n logger.warn('authenticate() | no plain SIP password, and stored `realm` does not match the given `realm`, cannot authenticate [stored:\"%s\", given:\"%s\"]', this._credentials.realm, this._realm);\n return false;\n }\n }\n // 'qop' can contain a list of values (Array). Let's choose just one.\n if (challenge.qop) {\n if (challenge.qop.indexOf('auth-int') > -1) {\n this._qop = 'auth-int';\n }\n else if (challenge.qop.indexOf('auth') > -1) {\n this._qop = 'auth';\n }\n else {\n // Otherwise 'qop' is present but does not contain 'auth' or 'auth-int', so abort here.\n logger.warn('authenticate() | challenge without Digest qop different than \"auth\" or \"auth-int\", authentication aborted');\n return false;\n }\n }\n else {\n this._qop = null;\n }\n // Fill other attributes.\n this._method = method;\n this._uri = ruri;\n this._cnonce = cnonce || Utils.createRandomToken(12);\n this._nc += 1;\n const hex = Number(this._nc).toString(16);\n this._ncHex = '00000000'.substr(0, 8 - hex.length) + hex;\n // Nc-value = 8LHEX. Max value = 'FFFFFFFF'.\n if (this._nc === 4294967296) {\n this._nc = 1;\n this._ncHex = '00000001';\n }\n // Calculate the Digest \"response\" value.\n // If we have plain SIP password then regenerate ha1.\n if (this._credentials.password) {\n // HA1 = MD5(A1) = MD5(username:realm:password).\n this._ha1 = Utils.calculateMD5(`${this._credentials.username}:${this._realm}:${this._credentials.password}`);\n }\n // Otherwise reuse the stored ha1.\n else {\n this._ha1 = this._credentials.ha1;\n }\n let a2;\n let ha2;\n if (this._qop === 'auth') {\n // HA2 = MD5(A2) = MD5(method:digestURI).\n a2 = `${this._method}:${this._uri}`;\n ha2 = Utils.calculateMD5(a2);\n logger.debug('authenticate() | using qop=auth [a2:\"%s\"]', a2);\n // Response = MD5(HA1:nonce:nonceCount:credentialsNonce:qop:HA2).\n this._response = Utils.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth:${ha2}`);\n }\n else if (this._qop === 'auth-int') {\n // HA2 = MD5(A2) = MD5(method:digestURI:MD5(entityBody)).\n a2 = `${this._method}:${this._uri}:${Utils.calculateMD5(body ? body : '')}`;\n ha2 = Utils.calculateMD5(a2);\n logger.debug('authenticate() | using qop=auth-int [a2:\"%s\"]', a2);\n // Response = MD5(HA1:nonce:nonceCount:credentialsNonce:qop:HA2).\n this._response = Utils.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth-int:${ha2}`);\n }\n else if (this._qop === null) {\n // HA2 = MD5(A2) = MD5(method:digestURI).\n a2 = `${this._method}:${this._uri}`;\n ha2 = Utils.calculateMD5(a2);\n logger.debug('authenticate() | using qop=null [a2:\"%s\"]', a2);\n // Response = MD5(HA1:nonce:HA2).\n this._response = Utils.calculateMD5(`${this._ha1}:${this._nonce}:${ha2}`);\n }\n logger.debug('authenticate() | response generated');\n return true;\n }\n /**\n * Return the Proxy-Authorization or WWW-Authorization header value.\n */\n toString() {\n const auth_params = [];\n if (!this._response) {\n throw new Error('response field does not exist, cannot generate Authorization header');\n }\n auth_params.push(`algorithm=${this._algorithm}`);\n auth_params.push(`username=\"${this._credentials.username}\"`);\n auth_params.push(`realm=\"${this._realm}\"`);\n auth_params.push(`nonce=\"${this._nonce}\"`);\n auth_params.push(`uri=\"${this._uri}\"`);\n auth_params.push(`response=\"${this._response}\"`);\n if (this._opaque) {\n auth_params.push(`opaque=\"${this._opaque}\"`);\n }\n if (this._qop) {\n auth_params.push(`qop=${this._qop}`);\n auth_params.push(`cnonce=\"${this._cnonce}\"`);\n auth_params.push(`nc=${this._ncHex}`);\n }\n return `Digest ${auth_params.join(', ')}`;\n }\n};\n","\"use strict\";\nconst T1 = 500, T2 = 4000, T4 = 5000;\nmodule.exports = {\n T1,\n T2,\n T4,\n TIMER_B: 64 * T1,\n TIMER_D: 0 * T1,\n TIMER_F: 64 * T1,\n TIMER_H: 64 * T1,\n TIMER_I: 0 * T1,\n TIMER_J: 0 * T1,\n TIMER_K: 0 * T4,\n TIMER_L: 64 * T1,\n TIMER_M: 64 * T1,\n PROVISIONAL_RESPONSE_INTERVAL: 60000, // See RFC 3261 Section 13.3.1.1\n};\n","\"use strict\";\nconst EventEmitter = require('events').EventEmitter;\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst SIPMessage = require('./SIPMessage');\nconst Timers = require('./Timers');\nconst loggernict = new Logger('NonInviteClientTransaction');\nconst loggerict = new Logger('InviteClientTransaction');\nconst loggeract = new Logger('AckClientTransaction');\nconst loggernist = new Logger('NonInviteServerTransaction');\nconst loggerist = new Logger('InviteServerTransaction');\nconst C = {\n // Transaction states.\n STATUS_TRYING: 1,\n STATUS_PROCEEDING: 2,\n STATUS_CALLING: 3,\n STATUS_ACCEPTED: 4,\n STATUS_COMPLETED: 5,\n STATUS_TERMINATED: 6,\n STATUS_CONFIRMED: 7,\n // Transaction types.\n NON_INVITE_CLIENT: 'nict',\n NON_INVITE_SERVER: 'nist',\n INVITE_CLIENT: 'ict',\n INVITE_SERVER: 'ist',\n};\nclass NonInviteClientTransaction extends EventEmitter {\n constructor(ua, transport, request, eventHandlers) {\n super();\n this.type = C.NON_INVITE_CLIENT;\n this.id = `z9hG4bK${Math.floor(Math.random() * 10000000)}`;\n this.ua = ua;\n this.transport = transport;\n this.request = request;\n this.eventHandlers = eventHandlers;\n let via = `SIP/2.0/${transport.via_transport}`;\n via += ` ${ua.configuration.via_host};branch=${this.id}`;\n this.request.setHeader('via', via);\n this.ua.newTransaction(this);\n }\n get C() {\n return C;\n }\n stateChanged(state) {\n this.state = state;\n this.emit('stateChanged');\n }\n send() {\n this.stateChanged(C.STATUS_TRYING);\n this.F = setTimeout(() => {\n this.timer_F();\n }, Timers.TIMER_F);\n if (!this.transport.send(this.request)) {\n this.onTransportError();\n }\n }\n onTransportError() {\n loggernict.debug(`transport error occurred, deleting transaction ${this.id}`);\n clearTimeout(this.F);\n clearTimeout(this.K);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n this.eventHandlers.onTransportError();\n }\n timer_F() {\n loggernict.debug(`Timer F expired for transaction ${this.id}`);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n this.eventHandlers.onRequestTimeout();\n }\n timer_K() {\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n receiveResponse(response) {\n const status_code = response.status_code;\n if (status_code < 200) {\n switch (this.state) {\n case C.STATUS_TRYING:\n case C.STATUS_PROCEEDING: {\n this.stateChanged(C.STATUS_PROCEEDING);\n this.eventHandlers.onReceiveResponse(response);\n break;\n }\n }\n }\n else {\n switch (this.state) {\n case C.STATUS_TRYING:\n case C.STATUS_PROCEEDING: {\n this.stateChanged(C.STATUS_COMPLETED);\n clearTimeout(this.F);\n if (status_code === 408) {\n this.eventHandlers.onRequestTimeout();\n }\n else {\n this.eventHandlers.onReceiveResponse(response);\n }\n this.K = setTimeout(() => {\n this.timer_K();\n }, Timers.TIMER_K);\n break;\n }\n case C.STATUS_COMPLETED: {\n break;\n }\n }\n }\n }\n}\nclass InviteClientTransaction extends EventEmitter {\n constructor(ua, transport, request, eventHandlers) {\n super();\n this.type = C.INVITE_CLIENT;\n this.id = `z9hG4bK${Math.floor(Math.random() * 10000000)}`;\n this.ua = ua;\n this.transport = transport;\n this.request = request;\n this.eventHandlers = eventHandlers;\n request.transaction = this;\n let via = `SIP/2.0/${transport.via_transport}`;\n via += ` ${ua.configuration.via_host};branch=${this.id}`;\n this.request.setHeader('via', via);\n this.ua.newTransaction(this);\n }\n get C() {\n return C;\n }\n stateChanged(state) {\n this.state = state;\n this.emit('stateChanged');\n }\n send() {\n this.stateChanged(C.STATUS_CALLING);\n this.B = setTimeout(() => {\n this.timer_B();\n }, Timers.TIMER_B);\n if (!this.transport.send(this.request)) {\n this.onTransportError();\n }\n }\n onTransportError() {\n clearTimeout(this.B);\n clearTimeout(this.D);\n clearTimeout(this.M);\n if (this.state !== C.STATUS_ACCEPTED) {\n loggerict.debug(`transport error occurred, deleting transaction ${this.id}`);\n this.eventHandlers.onTransportError();\n }\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n // RFC 6026 7.2.\n timer_M() {\n loggerict.debug(`Timer M expired for transaction ${this.id}`);\n if (this.state === C.STATUS_ACCEPTED) {\n clearTimeout(this.B);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n }\n // RFC 3261 17.1.1.\n timer_B() {\n loggerict.debug(`Timer B expired for transaction ${this.id}`);\n if (this.state === C.STATUS_CALLING) {\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n this.eventHandlers.onRequestTimeout();\n }\n }\n timer_D() {\n loggerict.debug(`Timer D expired for transaction ${this.id}`);\n clearTimeout(this.B);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n sendACK(response) {\n const ack = new SIPMessage.OutgoingRequest(JsSIP_C.ACK, this.request.ruri, this.ua, {\n route_set: this.request.getHeaders('route'),\n call_id: this.request.getHeader('call-id'),\n cseq: this.request.cseq,\n });\n ack.setHeader('from', this.request.getHeader('from'));\n ack.setHeader('via', this.request.getHeader('via'));\n ack.setHeader('to', response.getHeader('to'));\n this.D = setTimeout(() => {\n this.timer_D();\n }, Timers.TIMER_D);\n this.transport.send(ack);\n }\n cancel(reason) {\n // Send only if a provisional response (>100) has been received.\n if (this.state !== C.STATUS_PROCEEDING) {\n return;\n }\n const cancel = new SIPMessage.OutgoingRequest(JsSIP_C.CANCEL, this.request.ruri, this.ua, {\n route_set: this.request.getHeaders('route'),\n call_id: this.request.getHeader('call-id'),\n cseq: this.request.cseq,\n });\n cancel.setHeader('from', this.request.getHeader('from'));\n cancel.setHeader('via', this.request.getHeader('via'));\n cancel.setHeader('to', this.request.getHeader('to'));\n if (reason) {\n cancel.setHeader('reason', reason);\n }\n this.transport.send(cancel);\n }\n receiveResponse(response) {\n const status_code = response.status_code;\n if (status_code >= 100 && status_code <= 199) {\n switch (this.state) {\n case C.STATUS_CALLING: {\n this.stateChanged(C.STATUS_PROCEEDING);\n this.eventHandlers.onReceiveResponse(response);\n break;\n }\n case C.STATUS_PROCEEDING: {\n this.eventHandlers.onReceiveResponse(response);\n break;\n }\n }\n }\n else if (status_code >= 200 && status_code <= 299) {\n switch (this.state) {\n case C.STATUS_CALLING:\n case C.STATUS_PROCEEDING: {\n this.stateChanged(C.STATUS_ACCEPTED);\n this.M = setTimeout(() => {\n this.timer_M();\n }, Timers.TIMER_M);\n this.eventHandlers.onReceiveResponse(response);\n break;\n }\n case C.STATUS_ACCEPTED: {\n this.eventHandlers.onReceiveResponse(response);\n break;\n }\n }\n }\n else if (status_code >= 300 && status_code <= 699) {\n switch (this.state) {\n case C.STATUS_CALLING:\n case C.STATUS_PROCEEDING: {\n this.stateChanged(C.STATUS_COMPLETED);\n this.sendACK(response);\n this.eventHandlers.onReceiveResponse(response);\n break;\n }\n case C.STATUS_COMPLETED: {\n this.sendACK(response);\n break;\n }\n }\n }\n }\n}\nclass AckClientTransaction extends EventEmitter {\n constructor(ua, transport, request, eventHandlers) {\n super();\n this.id = `z9hG4bK${Math.floor(Math.random() * 10000000)}`;\n this.transport = transport;\n this.request = request;\n this.eventHandlers = eventHandlers;\n let via = `SIP/2.0/${transport.via_transport}`;\n via += ` ${ua.configuration.via_host};branch=${this.id}`;\n this.request.setHeader('via', via);\n }\n get C() {\n return C;\n }\n send() {\n if (!this.transport.send(this.request)) {\n this.onTransportError();\n }\n }\n onTransportError() {\n loggeract.debug(`transport error occurred for transaction ${this.id}`);\n this.eventHandlers.onTransportError();\n }\n}\nclass NonInviteServerTransaction extends EventEmitter {\n constructor(ua, transport, request) {\n super();\n this.type = C.NON_INVITE_SERVER;\n this.id = request.via_branch;\n this.ua = ua;\n this.transport = transport;\n this.request = request;\n this.last_response = '';\n request.server_transaction = this;\n this.state = C.STATUS_TRYING;\n ua.newTransaction(this);\n }\n get C() {\n return C;\n }\n stateChanged(state) {\n this.state = state;\n this.emit('stateChanged');\n }\n timer_J() {\n loggernist.debug(`Timer J expired for transaction ${this.id}`);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n onTransportError() {\n if (!this.transportError) {\n this.transportError = true;\n loggernist.debug(`transport error occurred, deleting transaction ${this.id}`);\n clearTimeout(this.J);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n }\n receiveResponse(status_code, response, onSuccess, onFailure) {\n if (status_code === 100) {\n /* RFC 4320 4.1\n * 'A SIP element MUST NOT\n * send any provisional response with a\n * Status-Code other than 100 to a non-INVITE request.'\n */\n switch (this.state) {\n case C.STATUS_TRYING: {\n this.stateChanged(C.STATUS_PROCEEDING);\n if (!this.transport.send(response)) {\n this.onTransportError();\n }\n break;\n }\n case C.STATUS_PROCEEDING: {\n this.last_response = response;\n if (!this.transport.send(response)) {\n this.onTransportError();\n if (onFailure) {\n onFailure();\n }\n }\n else if (onSuccess) {\n onSuccess();\n }\n break;\n }\n }\n }\n else if (status_code >= 200 && status_code <= 699) {\n switch (this.state) {\n case C.STATUS_TRYING:\n case C.STATUS_PROCEEDING: {\n this.stateChanged(C.STATUS_COMPLETED);\n this.last_response = response;\n this.J = setTimeout(() => {\n this.timer_J();\n }, Timers.TIMER_J);\n if (!this.transport.send(response)) {\n this.onTransportError();\n if (onFailure) {\n onFailure();\n }\n }\n else if (onSuccess) {\n onSuccess();\n }\n break;\n }\n case C.STATUS_COMPLETED: {\n break;\n }\n }\n }\n }\n}\nclass InviteServerTransaction extends EventEmitter {\n constructor(ua, transport, request) {\n super();\n this.type = C.INVITE_SERVER;\n this.id = request.via_branch;\n this.ua = ua;\n this.transport = transport;\n this.request = request;\n this.last_response = '';\n request.server_transaction = this;\n this.state = C.STATUS_PROCEEDING;\n ua.newTransaction(this);\n this.resendProvisionalTimer = null;\n request.reply(100);\n }\n get C() {\n return C;\n }\n stateChanged(state) {\n this.state = state;\n this.emit('stateChanged');\n }\n timer_H() {\n loggerist.debug(`Timer H expired for transaction ${this.id}`);\n if (this.state === C.STATUS_COMPLETED) {\n loggerist.debug('ACK not received, dialog will be terminated');\n }\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n timer_I() {\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n // RFC 6026 7.1.\n timer_L() {\n loggerist.debug(`Timer L expired for transaction ${this.id}`);\n if (this.state === C.STATUS_ACCEPTED) {\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n }\n onTransportError() {\n if (!this.transportError) {\n this.transportError = true;\n loggerist.debug(`transport error occurred, deleting transaction ${this.id}`);\n if (this.resendProvisionalTimer !== null) {\n clearInterval(this.resendProvisionalTimer);\n this.resendProvisionalTimer = null;\n }\n clearTimeout(this.L);\n clearTimeout(this.H);\n clearTimeout(this.I);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n }\n resend_provisional() {\n if (!this.transport.send(this.last_response)) {\n this.onTransportError();\n }\n }\n // INVITE Server Transaction RFC 3261 17.2.1.\n receiveResponse(status_code, response, onSuccess, onFailure) {\n if (status_code >= 100 && status_code <= 199) {\n switch (this.state) {\n case C.STATUS_PROCEEDING: {\n if (!this.transport.send(response)) {\n this.onTransportError();\n }\n this.last_response = response;\n break;\n }\n }\n }\n if (status_code > 100 &&\n status_code <= 199 &&\n this.state === C.STATUS_PROCEEDING) {\n // Trigger the resendProvisionalTimer only for the first non 100 provisional response.\n if (this.resendProvisionalTimer === null) {\n this.resendProvisionalTimer = setInterval(() => {\n this.resend_provisional();\n }, Timers.PROVISIONAL_RESPONSE_INTERVAL);\n }\n }\n else if (status_code >= 200 && status_code <= 299) {\n switch (this.state) {\n case C.STATUS_PROCEEDING: {\n this.stateChanged(C.STATUS_ACCEPTED);\n this.last_response = response;\n this.L = setTimeout(() => {\n this.timer_L();\n }, Timers.TIMER_L);\n if (this.resendProvisionalTimer !== null) {\n clearInterval(this.resendProvisionalTimer);\n this.resendProvisionalTimer = null;\n }\n }\n // falls through\n case C.STATUS_ACCEPTED: {\n // Note that this point will be reached for proceeding this.state also.\n if (!this.transport.send(response)) {\n this.onTransportError();\n if (onFailure) {\n onFailure();\n }\n }\n else if (onSuccess) {\n onSuccess();\n }\n break;\n }\n }\n }\n else if (status_code >= 300 && status_code <= 699) {\n switch (this.state) {\n case C.STATUS_PROCEEDING: {\n if (this.resendProvisionalTimer !== null) {\n clearInterval(this.resendProvisionalTimer);\n this.resendProvisionalTimer = null;\n }\n if (!this.transport.send(response)) {\n this.onTransportError();\n if (onFailure) {\n onFailure();\n }\n }\n else {\n this.stateChanged(C.STATUS_COMPLETED);\n this.H = setTimeout(() => {\n this.timer_H();\n }, Timers.TIMER_H);\n if (onSuccess) {\n onSuccess();\n }\n }\n break;\n }\n }\n }\n }\n}\n/**\n * INVITE:\n * _true_ if retransmission\n * _false_ new request\n *\n * ACK:\n * _true_ ACK to non2xx response\n * _false_ ACK must be passed to TU (accepted state)\n * ACK to 2xx response\n *\n * CANCEL:\n * _true_ no matching invite transaction\n * _false_ matching invite transaction and no final response sent\n *\n * OTHER:\n * _true_ retransmission\n * _false_ new request\n */\nfunction checkTransaction({ _transactions }, request) {\n let tr;\n switch (request.method) {\n case JsSIP_C.INVITE: {\n tr = _transactions.ist[request.via_branch];\n if (tr) {\n switch (tr.state) {\n case C.STATUS_PROCEEDING: {\n tr.transport.send(tr.last_response);\n break;\n }\n // RFC 6026 7.1 Invite retransmission.\n // Received while in C.STATUS_ACCEPTED state. Absorb it.\n case C.STATUS_ACCEPTED: {\n break;\n }\n }\n return true;\n }\n break;\n }\n case JsSIP_C.ACK: {\n tr = _transactions.ist[request.via_branch];\n // RFC 6026 7.1.\n if (tr) {\n if (tr.state === C.STATUS_ACCEPTED) {\n return false;\n }\n else if (tr.state === C.STATUS_COMPLETED) {\n tr.state = C.STATUS_CONFIRMED;\n tr.I = setTimeout(() => {\n tr.timer_I();\n }, Timers.TIMER_I);\n return true;\n }\n }\n // ACK to 2XX Response.\n else {\n return false;\n }\n break;\n }\n case JsSIP_C.CANCEL: {\n tr = _transactions.ist[request.via_branch];\n if (tr) {\n request.reply_sl(200);\n if (tr.state === C.STATUS_PROCEEDING) {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n request.reply_sl(481);\n return true;\n }\n }\n default: {\n // Non-INVITE Server Transaction RFC 3261 17.2.2.\n tr = _transactions.nist[request.via_branch];\n if (tr) {\n switch (tr.state) {\n case C.STATUS_TRYING: {\n break;\n }\n case C.STATUS_PROCEEDING:\n case C.STATUS_COMPLETED: {\n tr.transport.send(tr.last_response);\n break;\n }\n }\n return true;\n }\n break;\n }\n }\n}\nmodule.exports = {\n C,\n NonInviteClientTransaction,\n InviteClientTransaction,\n AckClientTransaction,\n NonInviteServerTransaction,\n InviteServerTransaction,\n checkTransaction,\n};\n","\"use strict\";\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst DigestAuthentication = require('./DigestAuthentication');\nconst Transactions = require('./Transactions');\nconst logger = new Logger('RequestSender');\n// Default event handlers.\nconst EventHandlers = {\n onRequestTimeout: () => { },\n onTransportError: () => { },\n onReceiveResponse: () => { },\n onAuthenticated: () => { },\n};\nmodule.exports = class RequestSender {\n constructor(ua, request, eventHandlers) {\n this._ua = ua;\n this._eventHandlers = eventHandlers;\n this._method = request.method;\n this._request = request;\n this._auth = null;\n this._challenged = false;\n this._staled = false;\n // Define the undefined handlers.\n for (const handler in EventHandlers) {\n if (Object.prototype.hasOwnProperty.call(EventHandlers, handler)) {\n if (!this._eventHandlers[handler]) {\n this._eventHandlers[handler] = EventHandlers[handler];\n }\n }\n }\n // If ua is in closing process or even closed just allow sending Bye and ACK.\n if (ua.status === ua.C.STATUS_USER_CLOSED &&\n (this._method !== JsSIP_C.BYE || this._method !== JsSIP_C.ACK)) {\n this._eventHandlers.onTransportError();\n }\n }\n /**\n * Create the client transaction and send the message.\n */\n send() {\n const eventHandlers = {\n onRequestTimeout: () => {\n this._eventHandlers.onRequestTimeout();\n },\n onTransportError: () => {\n this._eventHandlers.onTransportError();\n },\n onReceiveResponse: response => {\n this._receiveResponse(response);\n },\n };\n switch (this._method) {\n case 'INVITE': {\n this.clientTransaction = new Transactions.InviteClientTransaction(this._ua, this._ua.transport, this._request, eventHandlers);\n break;\n }\n case 'ACK': {\n this.clientTransaction = new Transactions.AckClientTransaction(this._ua, this._ua.transport, this._request, eventHandlers);\n break;\n }\n default: {\n this.clientTransaction = new Transactions.NonInviteClientTransaction(this._ua, this._ua.transport, this._request, eventHandlers);\n }\n }\n // If authorization JWT is present, use it.\n if (this._ua._configuration.authorization_jwt) {\n this._request.setHeader('Authorization', this._ua._configuration.authorization_jwt);\n }\n this.clientTransaction.send();\n }\n /**\n * Called from client transaction when receiving a correct response to the request.\n * Authenticate request if needed or pass the response back to the applicant.\n */\n _receiveResponse(response) {\n let challenge;\n let authorization_header_name;\n const status_code = response.status_code;\n /*\n * Authentication\n * Authenticate once. _challenged_ flag used to avoid infinite authentications.\n */\n if ((status_code === 401 || status_code === 407) &&\n (this._ua.configuration.password !== null ||\n this._ua.configuration.ha1 !== null)) {\n // Get and parse the appropriate WWW-Authenticate or Proxy-Authenticate header.\n if (response.status_code === 401) {\n challenge = response.parseHeader('www-authenticate');\n authorization_header_name = 'authorization';\n }\n else {\n challenge = response.parseHeader('proxy-authenticate');\n authorization_header_name = 'proxy-authorization';\n }\n // Verify it seems a valid challenge.\n if (!challenge) {\n logger.debug(`${response.status_code} with wrong or missing challenge, cannot authenticate`);\n this._eventHandlers.onReceiveResponse(response);\n return;\n }\n if (!this._challenged || (!this._staled && challenge.stale === true)) {\n if (!this._auth) {\n this._auth = new DigestAuthentication({\n username: this._ua.configuration.authorization_user,\n password: this._ua.configuration.password,\n realm: this._ua.configuration.realm,\n ha1: this._ua.configuration.ha1,\n });\n }\n // Verify that the challenge is really valid.\n if (!this._auth.authenticate(this._request, challenge)) {\n this._eventHandlers.onReceiveResponse(response);\n return;\n }\n this._challenged = true;\n // Update ha1 and realm in the UA.\n this._ua.set('realm', this._auth.get('realm'));\n this._ua.set('ha1', this._auth.get('ha1'));\n if (challenge.stale) {\n this._staled = true;\n }\n this._request = this._request.clone();\n this._request.cseq += 1;\n this._request.setHeader('cseq', `${this._request.cseq} ${this._method}`);\n this._request.setHeader(authorization_header_name, this._auth.toString());\n this._eventHandlers.onAuthenticated(this._request);\n this.send();\n }\n else {\n this._eventHandlers.onReceiveResponse(response);\n }\n }\n else {\n this._eventHandlers.onReceiveResponse(response);\n }\n }\n};\n","\"use strict\";\nconst Logger = require('./Logger');\nconst Utils = require('./Utils');\nconst JsSIP_C = require('./Constants');\nconst SIPMessage = require('./SIPMessage');\nconst RequestSender = require('./RequestSender');\nconst logger = new Logger('Registrator');\nconst MIN_REGISTER_EXPIRES = 10; // In seconds.\nmodule.exports = class Registrator {\n constructor(ua, transport) {\n // Force reg_id to 1.\n this._reg_id = 1;\n this._ua = ua;\n this._transport = transport;\n this._registrar = ua.configuration.registrar_server;\n this._expires = ua.configuration.register_expires;\n // Call-ID and CSeq values RFC3261 10.2.\n this._call_id = Utils.createRandomToken(22);\n this._cseq = 0;\n this._to_uri = ua.configuration.uri;\n this._registrationTimer = null;\n // Ongoing Register request.\n this._registering = false;\n // Set status.\n this._registered = false;\n // Contact header.\n this._contact = this._ua.contact.toString();\n // Sip.ice media feature tag (RFC 5768).\n this._contact += ';+sip.ice';\n // Custom headers for REGISTER and un-REGISTER.\n this._extraHeaders = [];\n // Custom Contact header params for REGISTER and un-REGISTER.\n this._extraContactParams = '';\n // Contents of the sip.instance Contact header parameter.\n this._sipInstance = `\"<urn:uuid:${this._ua.configuration.instance_id}>\"`;\n this._contact += `;reg-id=${this._reg_id}`;\n this._contact += `;+sip.instance=${this._sipInstance}`;\n }\n get registered() {\n return this._registered;\n }\n setExtraHeaders(extraHeaders) {\n if (!Array.isArray(extraHeaders)) {\n extraHeaders = [];\n }\n this._extraHeaders = extraHeaders.slice();\n }\n setExtraContactParams(extraContactParams) {\n if (!(extraContactParams instanceof Object)) {\n extraContactParams = {};\n }\n // Reset it.\n this._extraContactParams = '';\n for (const param_key in extraContactParams) {\n if (Object.prototype.hasOwnProperty.call(extraContactParams, param_key)) {\n const param_value = extraContactParams[param_key];\n this._extraContactParams += `;${param_key}`;\n if (param_value) {\n this._extraContactParams += `=${param_value}`;\n }\n }\n }\n }\n register() {\n if (this._registering) {\n logger.debug('Register request in progress...');\n return;\n }\n const extraHeaders = Utils.cloneArray(this._extraHeaders);\n let contactValue;\n if (this._expires) {\n contactValue = `${this._contact};expires=${this._expires}${this._extraContactParams}`;\n extraHeaders.push(`Expires: ${this._expires}`);\n }\n else {\n contactValue = `${this._contact}${this._extraContactParams}`;\n }\n extraHeaders.push(`Contact: ${contactValue}`);\n let fromTag = Utils.newTag();\n if (this._ua.configuration.register_from_tag_trail) {\n if (typeof this._ua.configuration.register_from_tag_trail === 'function') {\n fromTag += this._ua.configuration.register_from_tag_trail();\n }\n else {\n fromTag += this._ua.configuration.register_from_tag_trail;\n }\n }\n const request = new SIPMessage.OutgoingRequest(JsSIP_C.REGISTER, this._registrar, this._ua, {\n to_uri: this._to_uri,\n call_id: this._call_id,\n cseq: (this._cseq += 1),\n from_tag: fromTag,\n }, extraHeaders);\n const request_sender = new RequestSender(this._ua, request, {\n onRequestTimeout: () => {\n this._registrationFailure(null, JsSIP_C.causes.REQUEST_TIMEOUT);\n },\n onTransportError: () => {\n this._registrationFailure(null, JsSIP_C.causes.CONNECTION_ERROR);\n },\n // Increase the CSeq on authentication.\n onAuthenticated: () => {\n this._cseq += 1;\n },\n onReceiveResponse: response => {\n // Discard responses to older REGISTER/un-REGISTER requests.\n if (response.cseq !== this._cseq) {\n return;\n }\n // Clear registration timer.\n if (this._registrationTimer !== null) {\n clearTimeout(this._registrationTimer);\n this._registrationTimer = null;\n }\n switch (true) {\n case /^1[0-9]{2}$/.test(response.status_code): {\n // Ignore provisional responses.\n break;\n }\n case /^2[0-9]{2}$/.test(response.status_code): {\n this._registering = false;\n if (!response.hasHeader('Contact')) {\n logger.debug('no Contact header in response to REGISTER, response ignored');\n break;\n }\n const contacts = response.headers['Contact'].reduce((a, b) => a.concat(b.parsed), []);\n // Get the Contact pointing to us and update the expires value accordingly.\n // Try to find a matching Contact using sip.instance and reg-id.\n let contact = contacts.find(element => this._sipInstance === element.getParam('+sip.instance') &&\n this._reg_id === parseInt(element.getParam('reg-id')));\n // If no match was found using the sip.instance try comparing the URIs.\n if (!contact) {\n contact = contacts.find(element => element.uri.user === this._ua.contact.uri.user);\n }\n if (!contact) {\n logger.debug('no Contact header pointing to us, response ignored');\n break;\n }\n let expires = contact.getParam('expires');\n if (!expires && response.hasHeader('expires')) {\n expires = response.getHeader('expires');\n }\n if (!expires) {\n expires = this._expires;\n }\n expires = Number(expires);\n if (expires < MIN_REGISTER_EXPIRES) {\n expires = MIN_REGISTER_EXPIRES;\n }\n const timeout = expires > 64\n ? (expires * 1000) / 2 +\n Math.floor((expires / 2 - 32) * 1000 * Math.random())\n : expires * 1000 - 5000;\n // Re-Register or emit an event before the expiration interval has elapsed.\n // For that, decrease the expires value. ie: 3 seconds.\n this._registrationTimer = setTimeout(() => {\n this._registrationTimer = null;\n // If there are no listeners for registrationExpiring, renew registration.\n // If there are listeners, let the function listening do the register call.\n if (this._ua.listeners('registrationExpiring').length === 0) {\n this.register();\n }\n else {\n this._ua.emit('registrationExpiring');\n }\n }, timeout);\n // Save gruu values.\n if (contact.hasParam('temp-gruu')) {\n this._ua.contact.temp_gruu = contact\n .getParam('temp-gruu')\n .replace(/\"/g, '');\n }\n if (contact.hasParam('pub-gruu')) {\n this._ua.contact.pub_gruu = contact\n .getParam('pub-gruu')\n .replace(/\"/g, '');\n }\n if (!this._registered) {\n this._registered = true;\n this._ua.registered({ response });\n }\n break;\n }\n // Interval too brief RFC3261 10.2.8.\n case /^423$/.test(response.status_code): {\n if (response.hasHeader('min-expires')) {\n // Increase our registration interval to the suggested minimum.\n this._expires = Number(response.getHeader('min-expires'));\n if (this._expires < MIN_REGISTER_EXPIRES) {\n this._expires = MIN_REGISTER_EXPIRES;\n }\n // Assure register re-try with new expire.\n this._registering = false;\n // Attempt the registration again immediately.\n this.register();\n }\n else {\n // This response MUST contain a Min-Expires header field.\n logger.debug('423 response received for REGISTER without Min-Expires');\n this._registrationFailure(response, JsSIP_C.causes.SIP_FAILURE_CODE);\n }\n break;\n }\n default: {\n const cause = Utils.sipErrorCause(response.status_code);\n this._registrationFailure(response, cause);\n }\n }\n },\n });\n this._registering = true;\n request_sender.send();\n }\n unregister(options = {}) {\n if (!this._registered) {\n logger.debug('already unregistered');\n return;\n }\n this._registered = false;\n // Clear the registration timer.\n if (this._registrationTimer !== null) {\n clearTimeout(this._registrationTimer);\n this._registrationTimer = null;\n }\n const extraHeaders = Utils.cloneArray(this._extraHeaders);\n if (options.all) {\n extraHeaders.push(`Contact: *${this._extraContactParams}`);\n }\n else {\n extraHeaders.push(`Contact: ${this._contact};expires=0${this._extraContactParams}`);\n }\n extraHeaders.push('Expires: 0');\n const request = new SIPMessage.OutgoingRequest(JsSIP_C.REGISTER, this._registrar, this._ua, {\n to_uri: this._to_uri,\n call_id: this._call_id,\n cseq: (this._cseq += 1),\n }, extraHeaders);\n const request_sender = new RequestSender(this._ua, request, {\n onRequestTimeout: () => {\n this._unregistered(null, JsSIP_C.causes.REQUEST_TIMEOUT);\n },\n onTransportError: () => {\n this._unregistered(null, JsSIP_C.causes.CONNECTION_ERROR);\n },\n // Increase the CSeq on authentication.\n onAuthenticated: () => {\n this._cseq += 1;\n },\n onReceiveResponse: response => {\n switch (true) {\n case /^1[0-9]{2}$/.test(response.status_code): {\n // Ignore provisional responses.\n break;\n }\n case /^2[0-9]{2}$/.test(response.status_code): {\n this._unregistered(response);\n break;\n }\n default: {\n const cause = Utils.sipErrorCause(response.status_code);\n this._unregistered(response, cause);\n }\n }\n },\n });\n request_sender.send();\n }\n close() {\n if (this._registered) {\n this.unregister();\n }\n }\n onTransportClosed() {\n this._registering = false;\n if (this._registrationTimer !== null) {\n clearTimeout(this._registrationTimer);\n this._registrationTimer = null;\n }\n if (this._registered) {\n this._registered = false;\n this._ua.unregistered({});\n }\n }\n _registrationFailure(response, cause) {\n this._registering = false;\n this._ua.registrationFailed({\n response: response || null,\n cause,\n });\n if (this._registered) {\n this._registered = false;\n this._ua.unregistered({\n response: response || null,\n cause,\n });\n }\n }\n _unregistered(response, cause) {\n this._registering = false;\n this._registered = false;\n this._ua.unregistered({\n response: response || null,\n cause: cause || null,\n });\n }\n};\n","\"use strict\";\nconst JsSIP_C = require('../Constants');\nconst Transactions = require('../Transactions');\nconst RequestSender = require('../RequestSender');\n// Default event handlers.\nconst EventHandlers = {\n onRequestTimeout: () => { },\n onTransportError: () => { },\n onSuccessResponse: () => { },\n onErrorResponse: () => { },\n onAuthenticated: () => { },\n onDialogError: () => { },\n};\nmodule.exports = class DialogRequestSender {\n constructor(dialog, request, eventHandlers) {\n this._dialog = dialog;\n this._ua = dialog._ua;\n this._request = request;\n this._eventHandlers = eventHandlers;\n // RFC3261 14.1 Modifying an Existing Session. UAC Behavior.\n this._reattempt = false;\n this._reattemptTimer = null;\n // Define the undefined handlers.\n for (const handler in EventHandlers) {\n if (Object.prototype.hasOwnProperty.call(EventHandlers, handler)) {\n if (!this._eventHandlers[handler]) {\n this._eventHandlers[handler] = EventHandlers[handler];\n }\n }\n }\n }\n get request() {\n return this._request;\n }\n send() {\n const request_sender = new RequestSender(this._ua, this._request, {\n onRequestTimeout: () => {\n this._eventHandlers.onRequestTimeout();\n },\n onTransportError: () => {\n this._eventHandlers.onTransportError();\n },\n onAuthenticated: request => {\n this._eventHandlers.onAuthenticated(request);\n },\n onReceiveResponse: response => {\n this._receiveResponse(response);\n },\n });\n request_sender.send();\n // RFC3261 14.2 Modifying an Existing Session -UAC BEHAVIOR-.\n if ((this._request.method === JsSIP_C.INVITE ||\n (this._request.method === JsSIP_C.UPDATE && this._request.body)) &&\n request_sender.clientTransaction.state !==\n Transactions.C.STATUS_TERMINATED) {\n this._dialog.uac_pending_reply = true;\n const stateChanged = () => {\n if (request_sender.clientTransaction.state ===\n Transactions.C.STATUS_ACCEPTED ||\n request_sender.clientTransaction.state ===\n Transactions.C.STATUS_COMPLETED ||\n request_sender.clientTransaction.state ===\n Transactions.C.STATUS_TERMINATED) {\n request_sender.clientTransaction.removeListener('stateChanged', stateChanged);\n this._dialog.uac_pending_reply = false;\n }\n };\n request_sender.clientTransaction.on('stateChanged', stateChanged);\n }\n }\n _receiveResponse(response) {\n // RFC3261 12.2.1.2 408 or 481 is received for a request within a dialog.\n if (response.status_code === 408 || response.status_code === 481) {\n this._eventHandlers.onDialogError(response);\n }\n else if (response.method === JsSIP_C.INVITE &&\n response.status_code === 491) {\n if (this._reattempt) {\n this._eventHandlers.onErrorResponse(response);\n }\n else {\n this._request.cseq = this._dialog.local_seqnum += 1;\n this._reattemptTimer = setTimeout(() => {\n if (!this._dialog.isTerminated()) {\n this._reattempt = true;\n this.send();\n }\n }, 1000);\n }\n }\n else if (response.status_code >= 200 && response.status_code < 300) {\n this._eventHandlers.onSuccessResponse(response);\n }\n else if (response.status_code >= 300) {\n this._eventHandlers.onErrorResponse(response);\n }\n }\n};\n","\"use strict\";\nconst Logger = require('./Logger');\nconst SIPMessage = require('./SIPMessage');\nconst JsSIP_C = require('./Constants');\nconst Transactions = require('./Transactions');\nconst Dialog_RequestSender = require('./Dialog/RequestSender');\nconst Utils = require('./Utils');\nconst logger = new Logger('Dialog');\nconst C = {\n // Dialog states.\n STATUS_EARLY: 1,\n STATUS_CONFIRMED: 2,\n STATUS_TERMINATED: 3,\n};\n// RFC 3261 12.1.\nmodule.exports = class Dialog {\n // Expose C object.\n static get C() {\n return C;\n }\n constructor(owner, message, type, state = C.STATUS_CONFIRMED) {\n this._owner = owner;\n this._ua = owner._ua;\n this._uac_pending_reply = false;\n this._uas_pending_reply = false;\n if (!message.hasHeader('contact')) {\n return {\n error: 'unable to create a Dialog without Contact header field',\n };\n }\n if (message instanceof SIPMessage.IncomingResponse) {\n state = message.status_code < 200 ? C.STATUS_EARLY : C.STATUS_CONFIRMED;\n }\n const contact = message.parseHeader('contact');\n // RFC 3261 12.1.1.\n if (type === 'UAS') {\n this._id = {\n call_id: message.call_id,\n local_tag: message.to_tag,\n remote_tag: message.from_tag,\n toString() {\n return this.call_id + this.local_tag + this.remote_tag;\n },\n };\n this._state = state;\n this._remote_seqnum = message.cseq;\n this._local_uri = message.parseHeader('to').uri;\n this._remote_uri = message.parseHeader('from').uri;\n this._remote_target = contact.uri;\n this._route_set = message.getHeaders('record-route');\n this.incoming_ack_seqnum = message.cseq;\n this.outgoing_ack_seqnum = null;\n }\n // RFC 3261 12.1.2.\n else if (type === 'UAC') {\n this._id = {\n call_id: message.call_id,\n local_tag: message.from_tag,\n remote_tag: message.to_tag,\n toString() {\n return this.call_id + this.local_tag + this.remote_tag;\n },\n };\n this._state = state;\n this._local_seqnum = message.cseq;\n this._local_uri = message.parseHeader('from').uri;\n this._remote_uri = message.parseHeader('to').uri;\n this._remote_target = contact.uri;\n this._route_set = message.getHeaders('record-route').reverse();\n this.incoming_ack_seqnum = null;\n this.outgoing_ack_seqnum = this._local_seqnum;\n }\n this._ua.newDialog(this);\n logger.debug(`new ${type} dialog created with status ${this._state === C.STATUS_EARLY ? 'EARLY' : 'CONFIRMED'}`);\n }\n get id() {\n return this._id;\n }\n get local_seqnum() {\n return this._local_seqnum;\n }\n set local_seqnum(num) {\n this._local_seqnum = num;\n }\n get owner() {\n return this._owner;\n }\n get uac_pending_reply() {\n return this._uac_pending_reply;\n }\n set uac_pending_reply(pending) {\n this._uac_pending_reply = pending;\n }\n get uas_pending_reply() {\n return this._uas_pending_reply;\n }\n isTerminated() {\n return this._status === C.STATUS_TERMINATED;\n }\n update(message, type) {\n this._state = C.STATUS_CONFIRMED;\n logger.debug(`dialog ${this._id.toString()} changed to CONFIRMED state`);\n if (type === 'UAC') {\n // RFC 3261 13.2.2.4.\n this._route_set = message.getHeaders('record-route').reverse();\n }\n }\n terminate() {\n logger.debug(`dialog ${this._id.toString()} deleted`);\n this._ua.destroyDialog(this);\n this._state = C.STATUS_TERMINATED;\n }\n sendRequest(method, options = {}) {\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const body = options.body || null;\n const request = this._createRequest(method, extraHeaders, body);\n // Some usages may need to know about authentication.\n const onAuthenticated = eventHandlers.onAuthenticated || (() => { });\n // Increase the local CSeq on authentication.\n eventHandlers.onAuthenticated = _request => {\n this._local_seqnum += 1;\n // In case of re-INVITE store outgoing ack_seqnum for its CANCEL or ACK.\n if (request.method === JsSIP_C.INVITE) {\n this._outgoing_ack_seqnum = this._local_seqnum;\n }\n onAuthenticated(_request);\n };\n const request_sender = new Dialog_RequestSender(this, request, eventHandlers);\n request_sender.send();\n // Return the instance of OutgoingRequest.\n return request;\n }\n receiveRequest(request) {\n // Check in-dialog request.\n if (!this._checkInDialogRequest(request)) {\n return;\n }\n // ACK received. Cleanup this._ack_seqnum.\n if (request.method === JsSIP_C.ACK && this.incoming_ack_seqnum !== null) {\n this.incoming_ack_seqnum = null;\n }\n // INVITE received. Set this._ack_seqnum.\n else if (request.method === JsSIP_C.INVITE) {\n this.incoming_ack_seqnum = request.cseq;\n }\n this._owner.receiveRequest(request);\n }\n // RFC 3261 12.2.1.1.\n _createRequest(method, extraHeaders, body) {\n extraHeaders = Utils.cloneArray(extraHeaders);\n if (!this._local_seqnum) {\n this._local_seqnum = Math.floor(Math.random() * 10000);\n }\n // CANCEL and ACK must use the same sequence number as the INVITE.\n const cseq = method === JsSIP_C.CANCEL || method === JsSIP_C.ACK\n ? this.outgoing_ack_seqnum\n : (this._local_seqnum += 1);\n // In case of re-INVITE store ack_seqnum for future CANCEL or ACK.\n if (method === JsSIP_C.INVITE) {\n this.outgoing_ack_seqnum = cseq;\n }\n const request = new SIPMessage.OutgoingRequest(method, this._remote_target, this._ua, {\n cseq: cseq,\n call_id: this._id.call_id,\n from_uri: this._local_uri,\n from_tag: this._id.local_tag,\n to_uri: this._remote_uri,\n to_tag: this._id.remote_tag,\n route_set: this._route_set,\n }, extraHeaders, body);\n return request;\n }\n // RFC 3261 12.2.2.\n _checkInDialogRequest(request) {\n if (!this._remote_seqnum) {\n this._remote_seqnum = request.cseq;\n }\n else if (request.cseq < this._remote_seqnum) {\n if (request.method === JsSIP_C.ACK) {\n // We are not expecting any ACK with lower seqnum than the current one.\n // Or this is not the ACK we are waiting for.\n if (this.incoming_ack_seqnum === null ||\n request.cseq !== this.incoming_ack_seqnum) {\n return false;\n }\n }\n else {\n request.reply(500);\n return false;\n }\n }\n else if (request.cseq > this._remote_seqnum) {\n this._remote_seqnum = request.cseq;\n }\n // RFC3261 14.2 Modifying an Existing Session -UAS BEHAVIOR-.\n if (request.method === JsSIP_C.INVITE ||\n (request.method === JsSIP_C.UPDATE && request.body)) {\n if (this._uac_pending_reply === true) {\n request.reply(491);\n }\n else if (this._uas_pending_reply === true) {\n const retryAfter = ((Math.random() * 10) | 0) + 1;\n request.reply(500, null, [`Retry-After:${retryAfter}`]);\n return false;\n }\n else {\n this._uas_pending_reply = true;\n const stateChanged = () => {\n if (request.server_transaction.state ===\n Transactions.C.STATUS_ACCEPTED ||\n request.server_transaction.state ===\n Transactions.C.STATUS_COMPLETED ||\n request.server_transaction.state ===\n Transactions.C.STATUS_TERMINATED) {\n request.server_transaction.removeListener('stateChanged', stateChanged);\n this._uas_pending_reply = false;\n }\n };\n request.server_transaction.on('stateChanged', stateChanged);\n }\n // RFC3261 12.2.2 Replace the dialog`s remote target URI if the request is accepted.\n if (request.hasHeader('contact')) {\n request.server_transaction.on('stateChanged', () => {\n if (request.server_transaction.state === Transactions.C.STATUS_ACCEPTED) {\n this._remote_target = request.parseHeader('contact').uri;\n }\n });\n }\n }\n else if (request.method === JsSIP_C.NOTIFY) {\n // RFC6665 3.2 Replace the dialog`s remote target URI if the request is accepted.\n if (request.hasHeader('contact')) {\n request.server_transaction.on('stateChanged', () => {\n if (request.server_transaction.state === Transactions.C.STATUS_COMPLETED) {\n this._remote_target = request.parseHeader('contact').uri;\n }\n });\n }\n }\n return true;\n }\n};\n","\"use strict\";\nconst EventEmitter = require('events').EventEmitter;\nconst Logger = require('../Logger');\nconst JsSIP_C = require('../Constants');\nconst Exceptions = require('../Exceptions');\nconst Utils = require('../Utils');\nconst logger = new Logger('RTCSession:DTMF');\nconst C = {\n MIN_DURATION: 70,\n MAX_DURATION: 6000,\n DEFAULT_DURATION: 100,\n MIN_INTER_TONE_GAP: 50,\n DEFAULT_INTER_TONE_GAP: 500,\n};\nmodule.exports = class DTMF extends EventEmitter {\n constructor(session) {\n super();\n this._session = session;\n this._direction = null;\n this._tone = null;\n this._duration = null;\n this._request = null;\n }\n get tone() {\n return this._tone;\n }\n get duration() {\n return this._duration;\n }\n send(tone, options = {}) {\n if (tone === undefined) {\n throw new TypeError('Not enough arguments');\n }\n this._direction = 'outgoing';\n // Check RTCSession Status.\n if (this._session.status !== this._session.C.STATUS_CONFIRMED &&\n this._session.status !== this._session.C.STATUS_WAITING_FOR_ACK &&\n this._session.status !== this._session.C.STATUS_1XX_RECEIVED) {\n throw new Exceptions.InvalidStateError(this._session.status);\n }\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n this.eventHandlers = Utils.cloneObject(options.eventHandlers);\n // Check tone type.\n if (typeof tone === 'string') {\n tone = tone.toUpperCase();\n }\n else if (typeof tone === 'number') {\n tone = tone.toString();\n }\n else {\n throw new TypeError(`Invalid tone: ${tone}`);\n }\n // Check tone value.\n if (!tone.match(/^[0-9A-DR#*]$/)) {\n throw new TypeError(`Invalid tone: ${tone}`);\n }\n else {\n this._tone = tone;\n }\n // Duration is checked/corrected in RTCSession.\n this._duration = options.duration;\n extraHeaders.push('Content-Type: application/dtmf-relay');\n let body = `Signal=${this._tone}\\r\\n`;\n body += `Duration=${this._duration}`;\n this._session.newDTMF({\n originator: 'local',\n dtmf: this,\n request: this._request,\n });\n this._session.sendRequest(JsSIP_C.INFO, {\n extraHeaders,\n eventHandlers: {\n onSuccessResponse: response => {\n this.emit('succeeded', {\n originator: 'remote',\n response,\n });\n },\n onErrorResponse: response => {\n if (this.eventHandlers.onFailed) {\n this.eventHandlers.onFailed();\n }\n this.emit('failed', {\n originator: 'remote',\n response,\n });\n },\n onRequestTimeout: () => {\n this._session.onRequestTimeout();\n },\n onTransportError: () => {\n this._session.onTransportError();\n },\n onDialogError: () => {\n this._session.onDialogError();\n },\n },\n body,\n });\n }\n init_incoming(request) {\n const reg_tone = /^(Signal\\s*?=\\s*?)([0-9A-D#*]{1})(\\s)?.*/;\n const reg_duration = /^(Duration\\s?=\\s?)([0-9]{1,4})(\\s)?.*/;\n this._direction = 'incoming';\n this._request = request;\n request.reply(200);\n if (request.body) {\n const body = request.body.split('\\n');\n if (body.length >= 1) {\n if (reg_tone.test(body[0])) {\n this._tone = body[0].replace(reg_tone, '$2');\n }\n }\n if (body.length >= 2) {\n if (reg_duration.test(body[1])) {\n this._duration = parseInt(body[1].replace(reg_duration, '$2'), 10);\n }\n }\n }\n if (!this._duration) {\n this._duration = C.DEFAULT_DURATION;\n }\n if (!this._tone) {\n logger.debug('invalid INFO DTMF received, discarded');\n }\n else {\n this._session.newDTMF({\n originator: 'remote',\n dtmf: this,\n request,\n });\n }\n }\n};\n/**\n * Expose C object.\n */\nmodule.exports.C = C;\n","\"use strict\";\nconst EventEmitter = require('events').EventEmitter;\nconst JsSIP_C = require('../Constants');\nconst Exceptions = require('../Exceptions');\nconst Utils = require('../Utils');\nmodule.exports = class Info extends EventEmitter {\n constructor(session) {\n super();\n this._session = session;\n this._direction = null;\n this._contentType = null;\n this._body = null;\n }\n get contentType() {\n return this._contentType;\n }\n get body() {\n return this._body;\n }\n send(contentType, body, options = {}) {\n this._direction = 'outgoing';\n if (contentType === undefined) {\n throw new TypeError('Not enough arguments');\n }\n // Check RTCSession Status.\n if (this._session.status !== this._session.C.STATUS_CONFIRMED &&\n this._session.status !== this._session.C.STATUS_WAITING_FOR_ACK) {\n throw new Exceptions.InvalidStateError(this._session.status);\n }\n this._contentType = contentType;\n this._body = body;\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n extraHeaders.push(`Content-Type: ${contentType}`);\n this._session.newInfo({\n originator: 'local',\n info: this,\n request: this.request,\n });\n this._session.sendRequest(JsSIP_C.INFO, {\n extraHeaders,\n eventHandlers: {\n onSuccessResponse: response => {\n this.emit('succeeded', {\n originator: 'remote',\n response,\n });\n },\n onErrorResponse: response => {\n this.emit('failed', {\n originator: 'remote',\n response,\n });\n },\n onTransportError: () => {\n this._session.onTransportError();\n },\n onRequestTimeout: () => {\n this._session.onRequestTimeout();\n },\n onDialogError: () => {\n this._session.onDialogError();\n },\n },\n body,\n });\n }\n init_incoming(request) {\n this._direction = 'incoming';\n this.request = request;\n request.reply(200);\n this._contentType = request.hasHeader('Content-Type')\n ? request.getHeader('Content-Type').toLowerCase()\n : undefined;\n this._body = request.body;\n this._session.newInfo({\n originator: 'remote',\n info: this,\n request,\n });\n }\n};\n","\"use strict\";\nconst Logger = require('../Logger');\nconst JsSIP_C = require('../Constants');\nconst logger = new Logger('RTCSession:ReferNotifier');\nconst C = {\n event_type: 'refer',\n body_type: 'message/sipfrag;version=2.0',\n expires: 300,\n};\nmodule.exports = class ReferNotifier {\n constructor(session, id, expires) {\n this._session = session;\n this._id = id;\n this._expires = expires || C.expires;\n this._active = true;\n // The creation of a Notifier results in an immediate NOTIFY.\n this.notify(100);\n }\n notify(code, reason) {\n logger.debug('notify()');\n if (this._active === false) {\n return;\n }\n reason = reason || JsSIP_C.REASON_PHRASE[code] || '';\n let state;\n if (code >= 200) {\n state = 'terminated;reason=noresource';\n }\n else {\n state = `active;expires=${this._expires}`;\n }\n // Put this in a try/catch block.\n this._session.sendRequest(JsSIP_C.NOTIFY, {\n extraHeaders: [\n `Event: ${C.event_type};id=${this._id}`,\n `Subscription-State: ${state}`,\n `Content-Type: ${C.body_type}`,\n ],\n body: `SIP/2.0 ${code} ${reason}`,\n eventHandlers: {\n // If a negative response is received, subscription is canceled.\n onErrorResponse() {\n this._active = false;\n },\n },\n });\n }\n};\n","\"use strict\";\nconst EventEmitter = require('events').EventEmitter;\nconst Logger = require('../Logger');\nconst JsSIP_C = require('../Constants');\nconst Grammar = require('../Grammar');\nconst Utils = require('../Utils');\nconst logger = new Logger('RTCSession:ReferSubscriber');\nmodule.exports = class ReferSubscriber extends EventEmitter {\n constructor(session) {\n super();\n this._id = null;\n this._session = session;\n }\n get id() {\n return this._id;\n }\n sendRefer(target, options = {}) {\n logger.debug('sendRefer()');\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n // Set event handlers.\n for (const event in eventHandlers) {\n if (Object.prototype.hasOwnProperty.call(eventHandlers, event)) {\n this.on(event, eventHandlers[event]);\n }\n }\n // Replaces URI header field.\n let replaces = null;\n if (options.replaces) {\n replaces = options.replaces._request.call_id;\n replaces += `;to-tag=${options.replaces._to_tag}`;\n replaces += `;from-tag=${options.replaces._from_tag}`;\n replaces = encodeURIComponent(replaces);\n }\n // Refer-To header field.\n const referTo = `Refer-To: <${target}${replaces ? `?Replaces=${replaces}` : ''}>`;\n extraHeaders.push(referTo);\n // Referred-By header field (if not already present).\n if (!extraHeaders.some(header => header.toLowerCase().startsWith('referred-by:'))) {\n const referredBy = `Referred-By: <${this._session._ua._configuration.uri._scheme}:${this._session._ua._configuration.uri._user}@${this._session._ua._configuration.uri._host}>`;\n extraHeaders.push(referredBy);\n }\n extraHeaders.push(`Contact: ${this._session.contact}`);\n const request = this._session.sendRequest(JsSIP_C.REFER, {\n extraHeaders,\n eventHandlers: {\n onSuccessResponse: response => {\n this._requestSucceeded(response);\n },\n onErrorResponse: response => {\n this._requestFailed(response, JsSIP_C.causes.REJECTED);\n },\n onTransportError: () => {\n this._requestFailed(null, JsSIP_C.causes.CONNECTION_ERROR);\n },\n onRequestTimeout: () => {\n this._requestFailed(null, JsSIP_C.causes.REQUEST_TIMEOUT);\n },\n onDialogError: () => {\n this._requestFailed(null, JsSIP_C.causes.DIALOG_ERROR);\n },\n onAuthenticated: _request => {\n this._id = _request.cseq;\n this.emit('authenticated');\n },\n },\n });\n this._id = request.cseq;\n }\n receiveNotify(request) {\n logger.debug('receiveNotify()');\n if (!request.body) {\n return;\n }\n const status_line = Grammar.parse(request.body.trim().split('\\r\\n', 1)[0], 'Status_Line');\n if (status_line === -1) {\n logger.debug(`receiveNotify() | error parsing NOTIFY body: \"${request.body}\"`);\n return;\n }\n switch (true) {\n case /^100$/.test(status_line.status_code): {\n this.emit('trying', {\n request,\n status_line,\n });\n break;\n }\n case /^1[0-9]{2}$/.test(status_line.status_code): {\n this.emit('progress', {\n request,\n status_line,\n });\n break;\n }\n case /^2[0-9]{2}$/.test(status_line.status_code): {\n this.emit('accepted', {\n request,\n status_line,\n });\n break;\n }\n default: {\n this.emit('failed', {\n request,\n status_line,\n });\n break;\n }\n }\n }\n _requestSucceeded(response) {\n logger.debug('REFER succeeded');\n logger.debug('emit \"requestSucceeded\"');\n this.emit('requestSucceeded', {\n response,\n });\n }\n _requestFailed(response, cause) {\n logger.debug('REFER failed');\n logger.debug('emit \"requestFailed\"');\n this.emit('requestFailed', {\n response: response || null,\n cause,\n });\n }\n};\n","\"use strict\";\n/* globals RTCPeerConnection: false, RTCSessionDescription: false */\n/* eslint-disable no-invalid-this */\nconst EventEmitter = require('events').EventEmitter;\nconst sdp_transform = require('sdp-transform');\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst Exceptions = require('./Exceptions');\nconst Transactions = require('./Transactions');\nconst Utils = require('./Utils');\nconst Timers = require('./Timers');\nconst SIPMessage = require('./SIPMessage');\nconst Dialog = require('./Dialog');\nconst RequestSender = require('./RequestSender');\nconst RTCSession_DTMF = require('./RTCSession/DTMF');\nconst RTCSession_Info = require('./RTCSession/Info');\nconst RTCSession_ReferNotifier = require('./RTCSession/ReferNotifier');\nconst RTCSession_ReferSubscriber = require('./RTCSession/ReferSubscriber');\nconst URI = require('./URI');\nconst logger = new Logger('RTCSession');\nconst C = {\n // RTCSession states.\n STATUS_NULL: 0,\n STATUS_INVITE_SENT: 1,\n STATUS_1XX_RECEIVED: 2,\n STATUS_INVITE_RECEIVED: 3,\n STATUS_WAITING_FOR_ANSWER: 4,\n STATUS_ANSWERED: 5,\n STATUS_WAITING_FOR_ACK: 6,\n STATUS_CANCELED: 7,\n STATUS_TERMINATED: 8,\n STATUS_CONFIRMED: 9,\n};\n/**\n * Local variables.\n */\nconst holdMediaTypes = ['audio', 'video'];\nmodule.exports = class RTCSession extends EventEmitter {\n /**\n * Expose C object.\n */\n static get C() {\n return C;\n }\n constructor(ua) {\n logger.debug('new');\n super();\n this._id = null;\n this._ua = ua;\n this._status = C.STATUS_NULL;\n this._dialog = null;\n this._earlyDialogs = {};\n this._contact = null;\n this._from_tag = null;\n this._to_tag = null;\n // The RTCPeerConnection instance (public attribute).\n this._connection = null;\n // Prevent races on serial PeerConnction operations.\n this._connectionPromiseQueue = Promise.resolve();\n // Incoming/Outgoing request being currently processed.\n this._request = null;\n // Cancel state for initial outgoing request.\n this._is_canceled = false;\n this._cancel_reason = '';\n // RTCSession confirmation flag.\n this._is_confirmed = false;\n // Is late SDP being negotiated.\n this._late_sdp = false;\n // Default rtcOfferConstraints and rtcAnswerConstrainsts (passed in connect() or answer()).\n this._rtcOfferConstraints = null;\n this._rtcAnswerConstraints = null;\n // Local MediaStream.\n this._localMediaStream = null;\n this._localMediaStreamLocallyGenerated = false;\n // Flag to indicate PeerConnection ready for new actions.\n this._rtcReady = true;\n // Flag to indicate ICE candidate gathering is finished even if iceGatheringState is not yet 'complete'.\n this._iceReady = false;\n // SIP Timers.\n this._timers = {\n ackTimer: null,\n expiresTimer: null,\n invite2xxTimer: null,\n userNoAnswerTimer: null,\n };\n // Session info.\n this._direction = null;\n this._local_identity = null;\n this._remote_identity = null;\n this._start_time = null;\n this._end_time = null;\n this._tones = null;\n // Mute/Hold state.\n this._audioMuted = false;\n this._videoMuted = false;\n this._localHold = false;\n this._remoteHold = false;\n // Session Timers (RFC 4028).\n this._sessionTimers = {\n enabled: this._ua.configuration.session_timers,\n refreshMethod: this._ua.configuration.session_timers_refresh_method,\n defaultExpires: JsSIP_C.SESSION_EXPIRES,\n currentExpires: null,\n running: false,\n refresher: false,\n timer: null, // A setTimeout.\n };\n // Map of ReferSubscriber instances indexed by the REFER's CSeq number.\n this._referSubscribers = {};\n // Custom session empty object for high level use.\n this._data = {};\n }\n /**\n * User API\n */\n // Expose RTCSession constants as a property of the RTCSession instance.\n get C() {\n return C;\n }\n // Expose session failed/ended causes as a property of the RTCSession instance.\n get causes() {\n return JsSIP_C.causes;\n }\n get id() {\n return this._id;\n }\n get connection() {\n return this._connection;\n }\n get contact() {\n return this._contact;\n }\n get direction() {\n return this._direction;\n }\n get local_identity() {\n return this._local_identity;\n }\n get remote_identity() {\n return this._remote_identity;\n }\n get start_time() {\n return this._start_time;\n }\n get end_time() {\n return this._end_time;\n }\n get data() {\n return this._data;\n }\n set data(_data) {\n this._data = _data;\n }\n get status() {\n return this._status;\n }\n isInProgress() {\n switch (this._status) {\n case C.STATUS_NULL:\n case C.STATUS_INVITE_SENT:\n case C.STATUS_1XX_RECEIVED:\n case C.STATUS_INVITE_RECEIVED:\n case C.STATUS_WAITING_FOR_ANSWER: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n isEstablished() {\n switch (this._status) {\n case C.STATUS_ANSWERED:\n case C.STATUS_WAITING_FOR_ACK:\n case C.STATUS_CONFIRMED: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n isEnded() {\n switch (this._status) {\n case C.STATUS_CANCELED:\n case C.STATUS_TERMINATED: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n isMuted() {\n return {\n audio: this._audioMuted,\n video: this._videoMuted,\n };\n }\n isOnHold() {\n return {\n local: this._localHold,\n remote: this._remoteHold,\n };\n }\n connect(target, options = {}, initCallback) {\n logger.debug('connect()');\n const originalTarget = target;\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const mediaConstraints = Utils.cloneObject(options.mediaConstraints, {\n audio: true,\n video: true,\n });\n const mediaStream = options.mediaStream || null;\n const pcConfig = Utils.cloneObject(options.pcConfig, { iceServers: [] });\n const rtcConstraints = options.rtcConstraints || null;\n const rtcOfferConstraints = options.rtcOfferConstraints || null;\n this._rtcOfferConstraints = rtcOfferConstraints;\n this._rtcAnswerConstraints = options.rtcAnswerConstraints || null;\n this._data = options.data || this._data;\n // Check target.\n if (target === undefined) {\n throw new TypeError('Not enough arguments');\n }\n // Check Session Status.\n if (this._status !== C.STATUS_NULL) {\n throw new Exceptions.InvalidStateError(this._status);\n }\n // Check WebRTC support.\n // eslint-disable-next-line no-undef\n if (!window.RTCPeerConnection) {\n throw new Exceptions.NotSupportedError('WebRTC not supported');\n }\n // Check target validity.\n target = this._ua.normalizeTarget(target);\n if (!target) {\n throw new TypeError(`Invalid target: ${originalTarget}`);\n }\n // Session Timers.\n if (this._sessionTimers.enabled) {\n if (Utils.isDecimal(options.sessionTimersExpires)) {\n if (options.sessionTimersExpires >= JsSIP_C.MIN_SESSION_EXPIRES) {\n this._sessionTimers.defaultExpires = options.sessionTimersExpires;\n }\n else {\n this._sessionTimers.defaultExpires = JsSIP_C.SESSION_EXPIRES;\n }\n }\n }\n // Set event handlers.\n for (const event in eventHandlers) {\n if (Object.prototype.hasOwnProperty.call(eventHandlers, event)) {\n this.on(event, eventHandlers[event]);\n }\n }\n // Session parameter initialization.\n this._from_tag = Utils.newTag();\n // Set anonymous property.\n const anonymous = options.anonymous || false;\n const requestParams = { from_tag: this._from_tag };\n this._contact = this._ua.contact.toString({\n anonymous,\n outbound: true,\n });\n if (anonymous) {\n requestParams.from_display_name = 'Anonymous';\n requestParams.from_uri = new URI('sip', 'anonymous', 'anonymous.invalid');\n extraHeaders.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`);\n extraHeaders.push('Privacy: id');\n }\n else if (options.fromUserName) {\n requestParams.from_uri = new URI('sip', options.fromUserName, this._ua.configuration.uri.host);\n extraHeaders.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`);\n }\n if (options.fromDisplayName) {\n requestParams.from_display_name = options.fromDisplayName;\n }\n extraHeaders.push(`Contact: ${this._contact}`);\n extraHeaders.push('Content-Type: application/sdp');\n if (this._sessionTimers.enabled) {\n extraHeaders.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher ? ';refresher=uac' : ''}`);\n }\n this._request = new SIPMessage.InitialOutgoingInviteRequest(target, this._ua, requestParams, extraHeaders);\n this._id = this._request.call_id + this._from_tag;\n // Create a new RTCPeerConnection instance.\n this._createRTCConnection(pcConfig, rtcConstraints);\n // Set internal properties.\n this._direction = 'outgoing';\n this._local_identity = this._request.from;\n this._remote_identity = this._request.to;\n // User explicitly provided a newRTCSession callback for this session.\n if (initCallback) {\n initCallback(this);\n }\n this._newRTCSession('local', this._request);\n this._sendInitialRequest(mediaConstraints, rtcOfferConstraints, mediaStream);\n }\n init_incoming(request, initCallback) {\n logger.debug('init_incoming()');\n let expires;\n const contentType = request.hasHeader('Content-Type')\n ? request.getHeader('Content-Type').toLowerCase()\n : undefined;\n // Check body and content type.\n if (request.body && contentType !== 'application/sdp') {\n request.reply(415);\n return;\n }\n // Session parameter initialization.\n this._status = C.STATUS_INVITE_RECEIVED;\n this._from_tag = request.from_tag;\n this._id = request.call_id + this._from_tag;\n this._request = request;\n this._contact = this._ua.contact.toString();\n // Get the Expires header value if exists.\n if (request.hasHeader('expires')) {\n expires = request.getHeader('expires') * 1000;\n }\n /* Set the to_tag before\n * replying a response code that will create a dialog.\n */\n request.to_tag = Utils.newTag();\n // An error on dialog creation will fire 'failed' event.\n if (!this._createDialog(request, 'UAS', true)) {\n request.reply(500, 'Missing Contact header field');\n return;\n }\n if (request.body) {\n this._late_sdp = false;\n }\n else {\n this._late_sdp = true;\n }\n this._status = C.STATUS_WAITING_FOR_ANSWER;\n // Set userNoAnswerTimer.\n this._timers.userNoAnswerTimer = setTimeout(() => {\n request.reply(408);\n this._failed('local', null, JsSIP_C.causes.NO_ANSWER);\n }, this._ua.configuration.no_answer_timeout);\n /* Set expiresTimer\n * RFC3261 13.3.1\n */\n if (expires) {\n this._timers.expiresTimer = setTimeout(() => {\n if (this._status === C.STATUS_WAITING_FOR_ANSWER) {\n request.reply(487);\n this._failed('system', null, JsSIP_C.causes.EXPIRES);\n }\n }, expires);\n }\n // Set internal properties.\n this._direction = 'incoming';\n this._local_identity = request.to;\n this._remote_identity = request.from;\n // A init callback was specifically defined.\n if (initCallback) {\n initCallback(this);\n }\n // Fire 'newRTCSession' event.\n this._newRTCSession('remote', request);\n // The user may have rejected the call in the 'newRTCSession' event.\n if (this._status === C.STATUS_TERMINATED) {\n return;\n }\n // Reply 180.\n request.reply(180, null, [`Contact: ${this._contact}`]);\n // Fire 'progress' event.\n // TODO: Document that 'response' field in 'progress' event is null for incoming calls.\n this._progress('local', null);\n }\n /**\n * Answer the call.\n */\n answer(options = {}) {\n logger.debug('answer()');\n const request = this._request;\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const mediaConstraints = Utils.cloneObject(options.mediaConstraints);\n const mediaStream = options.mediaStream || null;\n const pcConfig = Utils.cloneObject(options.pcConfig, { iceServers: [] });\n const rtcConstraints = options.rtcConstraints || null;\n const rtcAnswerConstraints = options.rtcAnswerConstraints || null;\n const rtcOfferConstraints = Utils.cloneObject(options.rtcOfferConstraints);\n let tracks;\n let peerHasAudioLine = false;\n let peerHasVideoLine = false;\n let peerOffersFullAudio = false;\n let peerOffersFullVideo = false;\n this._rtcAnswerConstraints = rtcAnswerConstraints;\n this._rtcOfferConstraints = options.rtcOfferConstraints || null;\n this._data = options.data || this._data;\n // Check Session Direction and Status.\n if (this._direction !== 'incoming') {\n throw new Exceptions.NotSupportedError('\"answer\" not supported for outgoing RTCSession');\n }\n // Check Session status.\n if (this._status !== C.STATUS_WAITING_FOR_ANSWER) {\n throw new Exceptions.InvalidStateError(this._status);\n }\n // Session Timers.\n if (this._sessionTimers.enabled) {\n if (Utils.isDecimal(options.sessionTimersExpires)) {\n if (options.sessionTimersExpires >= JsSIP_C.MIN_SESSION_EXPIRES) {\n this._sessionTimers.defaultExpires = options.sessionTimersExpires;\n }\n else {\n this._sessionTimers.defaultExpires = JsSIP_C.SESSION_EXPIRES;\n }\n }\n }\n this._status = C.STATUS_ANSWERED;\n // An error on dialog creation will fire 'failed' event.\n if (!this._createDialog(request, 'UAS')) {\n request.reply(500, 'Error creating dialog');\n return;\n }\n clearTimeout(this._timers.userNoAnswerTimer);\n extraHeaders.unshift(`Contact: ${this._contact}`);\n // Determine incoming media from incoming SDP offer (if any).\n const sdp = request.parseSDP();\n // Make sure sdp.media is an array, not the case if there is only one media.\n if (!Array.isArray(sdp.media)) {\n sdp.media = [sdp.media];\n }\n // Go through all medias in SDP to find offered capabilities to answer with.\n for (const m of sdp.media) {\n if (m.type === 'audio') {\n peerHasAudioLine = true;\n if (!m.direction || m.direction === 'sendrecv') {\n peerOffersFullAudio = true;\n }\n }\n if (m.type === 'video') {\n peerHasVideoLine = true;\n if (!m.direction || m.direction === 'sendrecv') {\n peerOffersFullVideo = true;\n }\n }\n }\n // Remove audio from mediaStream if suggested by mediaConstraints.\n if (mediaStream && mediaConstraints.audio === false) {\n tracks = mediaStream.getAudioTracks();\n for (const track of tracks) {\n mediaStream.removeTrack(track);\n }\n }\n // Remove video from mediaStream if suggested by mediaConstraints.\n if (mediaStream && mediaConstraints.video === false) {\n tracks = mediaStream.getVideoTracks();\n for (const track of tracks) {\n mediaStream.removeTrack(track);\n }\n }\n // Set audio constraints based on incoming stream if not supplied.\n if (!mediaStream && mediaConstraints.audio === undefined) {\n mediaConstraints.audio = peerOffersFullAudio;\n }\n // Set video constraints based on incoming stream if not supplied.\n if (!mediaStream && mediaConstraints.video === undefined) {\n mediaConstraints.video = peerOffersFullVideo;\n }\n // Don't ask for audio if the incoming offer has no audio section.\n if (!mediaStream &&\n !peerHasAudioLine &&\n !rtcOfferConstraints.offerToReceiveAudio) {\n mediaConstraints.audio = false;\n }\n // Don't ask for video if the incoming offer has no video section.\n if (!mediaStream &&\n !peerHasVideoLine &&\n !rtcOfferConstraints.offerToReceiveVideo) {\n mediaConstraints.video = false;\n }\n // Create a new RTCPeerConnection instance.\n // TODO: This may throw an error, should react.\n this._createRTCConnection(pcConfig, rtcConstraints);\n Promise.resolve()\n // Handle local MediaStream.\n .then(() => {\n // A local MediaStream is given, use it.\n if (mediaStream) {\n return mediaStream;\n }\n // Audio and/or video requested, prompt getUserMedia.\n else if (mediaConstraints.audio || mediaConstraints.video) {\n this._localMediaStreamLocallyGenerated = true;\n return navigator.mediaDevices\n .getUserMedia(mediaConstraints)\n .catch(error => {\n if (this._status === C.STATUS_TERMINATED) {\n throw new Error('terminated');\n }\n request.reply(480);\n this._failed('local', null, JsSIP_C.causes.USER_DENIED_MEDIA_ACCESS);\n logger.warn('emit \"getusermediafailed\" [error:%o]', error);\n this.emit('getusermediafailed', error);\n throw new Error('getUserMedia() failed');\n });\n }\n })\n // Attach MediaStream to RTCPeerconnection.\n .then(stream => {\n if (this._status === C.STATUS_TERMINATED) {\n throw new Error('terminated');\n }\n this._localMediaStream = stream;\n if (stream) {\n stream.getTracks().forEach(track => {\n this._connection.addTrack(track, stream);\n });\n }\n })\n // Set remote description.\n .then(() => {\n if (this._late_sdp) {\n return;\n }\n const e = { originator: 'remote', type: 'offer', sdp: request.body };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n const offer = new RTCSessionDescription({ type: 'offer', sdp: e.sdp });\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._connection.setRemoteDescription(offer))\n .catch(error => {\n request.reply(488);\n this._failed('system', null, JsSIP_C.causes.WEBRTC_ERROR);\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n this.emit('peerconnection:setremotedescriptionfailed', error);\n throw new Error('peerconnection.setRemoteDescription() failed');\n });\n return this._connectionPromiseQueue;\n })\n // Create local description.\n .then(() => {\n if (this._status === C.STATUS_TERMINATED) {\n throw new Error('terminated');\n }\n // TODO: Is this event already useful?\n this._connecting(request);\n if (!this._late_sdp) {\n return this._createLocalDescription('answer', rtcAnswerConstraints).catch(() => {\n request.reply(500);\n throw new Error('_createLocalDescription() failed');\n });\n }\n else {\n return this._createLocalDescription('offer', this._rtcOfferConstraints).catch(() => {\n request.reply(500);\n throw new Error('_createLocalDescription() failed');\n });\n }\n })\n // Send reply.\n .then(desc => {\n if (this._status === C.STATUS_TERMINATED) {\n throw new Error('terminated');\n }\n this._handleSessionTimersInIncomingRequest(request, extraHeaders);\n request.reply(200, null, extraHeaders, desc, () => {\n this._status = C.STATUS_WAITING_FOR_ACK;\n this._setInvite2xxTimer(request, desc);\n this._setACKTimer();\n this._accepted('local');\n }, () => {\n this._failed('system', null, JsSIP_C.causes.CONNECTION_ERROR);\n });\n })\n .catch(error => {\n if (this._status === C.STATUS_TERMINATED) {\n return;\n }\n logger.warn(`answer() failed: ${error.message}`);\n this._failed('system', error.message, JsSIP_C.causes.INTERNAL_ERROR);\n });\n }\n /**\n * Terminate the call.\n */\n terminate(options = {}) {\n logger.debug('terminate()');\n const cause = options.cause || JsSIP_C.causes.BYE;\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const body = options.body;\n let cancel_reason;\n let status_code = options.status_code;\n let reason_phrase = options.reason_phrase;\n // Check Session Status.\n if (this._status === C.STATUS_TERMINATED) {\n throw new Exceptions.InvalidStateError(this._status);\n }\n switch (this._status) {\n // - UAC -\n case C.STATUS_NULL:\n case C.STATUS_INVITE_SENT:\n case C.STATUS_1XX_RECEIVED: {\n logger.debug('canceling session');\n if (status_code && (status_code < 200 || status_code >= 700)) {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n else if (status_code) {\n reason_phrase =\n reason_phrase || JsSIP_C.REASON_PHRASE[status_code] || '';\n cancel_reason = `SIP ;cause=${status_code} ;text=\"${reason_phrase}\"`;\n }\n // Check Session Status.\n if (this._status === C.STATUS_NULL ||\n this._status === C.STATUS_INVITE_SENT) {\n this._is_canceled = true;\n this._cancel_reason = cancel_reason;\n }\n else if (this._status === C.STATUS_1XX_RECEIVED) {\n this._request.cancel(cancel_reason);\n }\n this._status = C.STATUS_CANCELED;\n this._failed('local', null, JsSIP_C.causes.CANCELED);\n break;\n }\n // - UAS -\n case C.STATUS_WAITING_FOR_ANSWER:\n case C.STATUS_ANSWERED: {\n logger.debug('rejecting session');\n status_code = status_code || 480;\n if (status_code < 300 || status_code >= 700) {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n this._request.reply(status_code, reason_phrase, extraHeaders, body);\n this._failed('local', null, JsSIP_C.causes.REJECTED);\n break;\n }\n case C.STATUS_WAITING_FOR_ACK:\n case C.STATUS_CONFIRMED: {\n logger.debug('terminating session');\n reason_phrase =\n options.reason_phrase || JsSIP_C.REASON_PHRASE[status_code] || '';\n if (status_code && (status_code < 200 || status_code >= 700)) {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n else if (status_code) {\n extraHeaders.push(`Reason: SIP ;cause=${status_code}; text=\"${reason_phrase}\"`);\n }\n /* RFC 3261 section 15 (Terminating a session):\n *\n * \"...the callee's UA MUST NOT send a BYE on a confirmed dialog\n * until it has received an ACK for its 2xx response or until the server\n * transaction times out.\"\n */\n if (this._status === C.STATUS_WAITING_FOR_ACK &&\n this._direction === 'incoming' &&\n this._request.server_transaction.state !==\n Transactions.C.STATUS_TERMINATED) {\n // Save the dialog for later restoration.\n const dialog = this._dialog;\n // Send the BYE as soon as the ACK is received...\n this.receiveRequest = ({ method }) => {\n if (method === JsSIP_C.ACK) {\n this.sendRequest(JsSIP_C.BYE, {\n extraHeaders,\n body,\n });\n dialog.terminate();\n }\n };\n // .., or when the INVITE transaction times out\n this._request.server_transaction.on('stateChanged', () => {\n if (this._request.server_transaction.state ===\n Transactions.C.STATUS_TERMINATED) {\n this.sendRequest(JsSIP_C.BYE, {\n extraHeaders,\n body,\n });\n dialog.terminate();\n }\n });\n this._ended('local', null, cause);\n // Restore the dialog into 'this' in order to be able to send the in-dialog BYE :-).\n this._dialog = dialog;\n // Restore the dialog into 'ua' so the ACK can reach 'this' session.\n this._ua.newDialog(dialog);\n }\n else {\n this.sendRequest(JsSIP_C.BYE, {\n extraHeaders,\n body,\n });\n this._ended('local', null, cause);\n }\n }\n }\n }\n sendDTMF(tones, options = {}) {\n logger.debug('sendDTMF() | tones: %s', tones);\n let duration = options.duration || null;\n let interToneGap = options.interToneGap || null;\n const transportType = options.transportType || JsSIP_C.DTMF_TRANSPORT.INFO;\n if (tones === undefined) {\n throw new TypeError('Not enough arguments');\n }\n // Check Session Status.\n if (this._status !== C.STATUS_CONFIRMED &&\n this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_1XX_RECEIVED) {\n throw new Exceptions.InvalidStateError(this._status);\n }\n // Check Transport type.\n if (transportType !== JsSIP_C.DTMF_TRANSPORT.INFO &&\n transportType !== JsSIP_C.DTMF_TRANSPORT.RFC2833) {\n throw new TypeError(`invalid transportType: ${transportType}`);\n }\n // Convert to string.\n if (typeof tones === 'number') {\n tones = tones.toString();\n }\n // Check tones.\n if (!tones ||\n typeof tones !== 'string' ||\n !tones.match(/^[0-9A-DR#*,]+$/i)) {\n throw new TypeError(`Invalid tones: ${tones}`);\n }\n // Check duration.\n if (duration && !Utils.isDecimal(duration)) {\n throw new TypeError(`Invalid tone duration: ${duration}`);\n }\n else if (!duration) {\n duration = RTCSession_DTMF.C.DEFAULT_DURATION;\n }\n else if (duration < RTCSession_DTMF.C.MIN_DURATION) {\n logger.debug(`\"duration\" value is lower than the minimum allowed, setting it to ${RTCSession_DTMF.C.MIN_DURATION} milliseconds`);\n duration = RTCSession_DTMF.C.MIN_DURATION;\n }\n else if (duration > RTCSession_DTMF.C.MAX_DURATION) {\n logger.debug(`\"duration\" value is greater than the maximum allowed, setting it to ${RTCSession_DTMF.C.MAX_DURATION} milliseconds`);\n duration = RTCSession_DTMF.C.MAX_DURATION;\n }\n else {\n duration = Math.abs(duration);\n }\n options.duration = duration;\n // Check interToneGap.\n if (interToneGap && !Utils.isDecimal(interToneGap)) {\n throw new TypeError(`Invalid interToneGap: ${interToneGap}`);\n }\n else if (!interToneGap) {\n interToneGap = RTCSession_DTMF.C.DEFAULT_INTER_TONE_GAP;\n }\n else if (interToneGap < RTCSession_DTMF.C.MIN_INTER_TONE_GAP) {\n logger.debug(`\"interToneGap\" value is lower than the minimum allowed, setting it to ${RTCSession_DTMF.C.MIN_INTER_TONE_GAP} milliseconds`);\n interToneGap = RTCSession_DTMF.C.MIN_INTER_TONE_GAP;\n }\n else {\n interToneGap = Math.abs(interToneGap);\n }\n // RFC2833. Let RTCDTMFSender enqueue the DTMFs.\n if (transportType === JsSIP_C.DTMF_TRANSPORT.RFC2833) {\n // Send DTMF in current audio RTP stream.\n const sender = this._getDTMFRTPSender();\n if (sender) {\n // Add remaining buffered tones.\n tones = sender.toneBuffer + tones;\n // Insert tones.\n sender.insertDTMF(tones, duration, interToneGap);\n }\n return;\n }\n if (this._tones) {\n // Tones are already queued, just add to the queue.\n this._tones += tones;\n return;\n }\n this._tones = tones;\n // Send the first tone.\n _sendDTMF.call(this);\n function _sendDTMF() {\n let timeout;\n if (this._status === C.STATUS_TERMINATED || !this._tones) {\n // Stop sending DTMF.\n this._tones = null;\n return;\n }\n // Retrieve the next tone.\n const tone = this._tones[0];\n // Remove the tone from this._tones.\n this._tones = this._tones.substring(1);\n if (tone === ',') {\n timeout = 2000;\n }\n else {\n // Send DTMF via SIP INFO messages.\n const dtmf = new RTCSession_DTMF(this);\n options.eventHandlers = {\n onFailed: () => {\n this._tones = null;\n },\n };\n dtmf.send(tone, options);\n timeout = duration + interToneGap;\n }\n // Set timeout for the next tone.\n setTimeout(_sendDTMF.bind(this), timeout);\n }\n }\n sendInfo(contentType, body, options = {}) {\n logger.debug('sendInfo()');\n // Check Session Status.\n if (this._status !== C.STATUS_CONFIRMED &&\n this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_1XX_RECEIVED) {\n throw new Exceptions.InvalidStateError(this._status);\n }\n const info = new RTCSession_Info(this);\n info.send(contentType, body, options);\n }\n /**\n * Mute\n */\n mute(options = { audio: true, video: false }) {\n logger.debug('mute()');\n let audioMuted = false, videoMuted = false;\n if (this._audioMuted === false && options.audio) {\n audioMuted = true;\n this._audioMuted = true;\n this._toggleMuteAudio(true);\n }\n if (this._videoMuted === false && options.video) {\n videoMuted = true;\n this._videoMuted = true;\n this._toggleMuteVideo(true);\n }\n if (audioMuted === true || videoMuted === true) {\n this._onmute({\n audio: audioMuted,\n video: videoMuted,\n });\n }\n }\n /**\n * Unmute\n */\n unmute(options = { audio: true, video: true }) {\n logger.debug('unmute()');\n let audioUnMuted = false, videoUnMuted = false;\n if (this._audioMuted === true && options.audio) {\n audioUnMuted = true;\n this._audioMuted = false;\n if (this._localHold === false) {\n this._toggleMuteAudio(false);\n }\n }\n if (this._videoMuted === true && options.video) {\n videoUnMuted = true;\n this._videoMuted = false;\n if (this._localHold === false) {\n this._toggleMuteVideo(false);\n }\n }\n if (audioUnMuted === true || videoUnMuted === true) {\n this._onunmute({\n audio: audioUnMuted,\n video: videoUnMuted,\n });\n }\n }\n /**\n * Hold\n */\n hold(options = {}, done) {\n logger.debug('hold()');\n if (this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_CONFIRMED) {\n return false;\n }\n if (this._localHold === true) {\n return false;\n }\n if (!this.isReadyToReOffer()) {\n return false;\n }\n this._localHold = true;\n this._onhold('local');\n const eventHandlers = {\n succeeded: () => {\n if (done) {\n done();\n }\n },\n failed: () => {\n this.terminate({\n cause: JsSIP_C.causes.WEBRTC_ERROR,\n status_code: 500,\n reason_phrase: 'Hold Failed',\n });\n },\n };\n if (options.useUpdate) {\n this._sendUpdate({\n sdpOffer: true,\n eventHandlers,\n extraHeaders: options.extraHeaders,\n });\n }\n else {\n this._sendReinvite({\n eventHandlers,\n extraHeaders: options.extraHeaders,\n });\n }\n return true;\n }\n unhold(options = {}, done) {\n logger.debug('unhold()');\n if (this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_CONFIRMED) {\n return false;\n }\n if (this._localHold === false) {\n return false;\n }\n if (!this.isReadyToReOffer()) {\n return false;\n }\n this._localHold = false;\n this._onunhold('local');\n const eventHandlers = {\n succeeded: () => {\n if (done) {\n done();\n }\n },\n failed: () => {\n this.terminate({\n cause: JsSIP_C.causes.WEBRTC_ERROR,\n status_code: 500,\n reason_phrase: 'Unhold Failed',\n });\n },\n };\n if (options.useUpdate) {\n this._sendUpdate({\n sdpOffer: true,\n eventHandlers,\n extraHeaders: options.extraHeaders,\n });\n }\n else {\n this._sendReinvite({\n eventHandlers,\n extraHeaders: options.extraHeaders,\n });\n }\n return true;\n }\n renegotiate(options = {}, done) {\n logger.debug('renegotiate()');\n const rtcOfferConstraints = options.rtcOfferConstraints || null;\n if (this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_CONFIRMED) {\n return false;\n }\n if (!this.isReadyToReOffer()) {\n return false;\n }\n const eventHandlers = {\n succeeded: () => {\n if (done) {\n done();\n }\n },\n failed: () => {\n this.terminate({\n cause: JsSIP_C.causes.WEBRTC_ERROR,\n status_code: 500,\n reason_phrase: 'Media Renegotiation Failed',\n });\n },\n };\n this._setLocalMediaStatus();\n if (options.useUpdate) {\n this._sendUpdate({\n sdpOffer: true,\n eventHandlers,\n rtcOfferConstraints,\n extraHeaders: options.extraHeaders,\n });\n }\n else {\n this._sendReinvite({\n eventHandlers,\n rtcOfferConstraints,\n extraHeaders: options.extraHeaders,\n });\n }\n return true;\n }\n /**\n * Refer\n */\n refer(target, options) {\n logger.debug('refer()');\n const originalTarget = target;\n if (this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_CONFIRMED) {\n return false;\n }\n // Check target validity.\n target = this._ua.normalizeTarget(target);\n if (!target) {\n throw new TypeError(`Invalid target: ${originalTarget}`);\n }\n const referSubscriber = new RTCSession_ReferSubscriber(this);\n referSubscriber.sendRefer(target, options);\n // Store in the map.\n let id = referSubscriber.id;\n this._referSubscribers[id] = referSubscriber;\n // Listen for ending events so we can remove it from the map.\n referSubscriber.on('requestFailed', () => {\n delete this._referSubscribers[id];\n });\n referSubscriber.on('accepted', () => {\n delete this._referSubscribers[id];\n });\n referSubscriber.on('failed', () => {\n delete this._referSubscribers[id];\n });\n referSubscriber.on('authenticated', () => {\n // Refer request authentication casues CSEQ and hence ID update.\n delete this._referSubscribers[id];\n id = referSubscriber.id;\n this._referSubscribers[id] = referSubscriber;\n });\n return referSubscriber;\n }\n /**\n * Send a generic in-dialog Request\n */\n sendRequest(method, options) {\n logger.debug('sendRequest()');\n if (this._dialog) {\n return this._dialog.sendRequest(method, options);\n }\n else {\n const dialogsArray = Object.values(this._earlyDialogs);\n if (dialogsArray.length > 0) {\n return dialogsArray[0].sendRequest(method, options);\n }\n logger.warn('sendRequest() | no valid early dialog found');\n return;\n }\n }\n /**\n * In dialog Request Reception\n */\n receiveRequest(request) {\n logger.debug('receiveRequest()');\n if (request.method === JsSIP_C.CANCEL) {\n /* RFC3261 15 States that a UAS may have accepted an invitation while a CANCEL\n * was in progress and that the UAC MAY continue with the session established by\n * any 2xx response, or MAY terminate with BYE. JsSIP does continue with the\n * established session. So the CANCEL is processed only if the session is not yet\n * established.\n */\n /*\n * Terminate the whole session in case the user didn't accept (or yet send the answer)\n * nor reject the request opening the session.\n */\n if (this._status === C.STATUS_WAITING_FOR_ANSWER ||\n this._status === C.STATUS_ANSWERED) {\n this._status = C.STATUS_CANCELED;\n this._request.reply(487);\n this._failed('remote', request, JsSIP_C.causes.CANCELED);\n }\n }\n else {\n // Requests arriving here are in-dialog requests.\n switch (request.method) {\n case JsSIP_C.ACK: {\n if (this._status !== C.STATUS_WAITING_FOR_ACK) {\n return;\n }\n // Update signaling status.\n this._status = C.STATUS_CONFIRMED;\n clearTimeout(this._timers.ackTimer);\n clearTimeout(this._timers.invite2xxTimer);\n if (this._late_sdp) {\n if (!request.body) {\n this.terminate({\n cause: JsSIP_C.causes.MISSING_SDP,\n status_code: 400,\n });\n break;\n }\n const e = {\n originator: 'remote',\n type: 'answer',\n sdp: request.body,\n };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n const answer = new RTCSessionDescription({\n type: 'answer',\n sdp: e.sdp,\n });\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._connection.setRemoteDescription(answer))\n .then(() => {\n if (!this._is_confirmed) {\n this._confirmed('remote', request);\n }\n })\n .catch(error => {\n this.terminate({\n cause: JsSIP_C.causes.BAD_MEDIA_DESCRIPTION,\n status_code: 488,\n });\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n this.emit('peerconnection:setremotedescriptionfailed', error);\n });\n }\n else if (!this._is_confirmed) {\n this._confirmed('remote', request);\n }\n break;\n }\n case JsSIP_C.BYE: {\n if (this._status === C.STATUS_CONFIRMED ||\n this._status === C.STATUS_WAITING_FOR_ACK) {\n request.reply(200);\n this._ended('remote', request, JsSIP_C.causes.BYE);\n }\n else if (this._status === C.STATUS_INVITE_RECEIVED ||\n this._status === C.STATUS_WAITING_FOR_ANSWER) {\n request.reply(200);\n this._request.reply(487, 'BYE Received');\n this._ended('remote', request, JsSIP_C.causes.BYE);\n }\n else {\n request.reply(403, 'Wrong Status');\n }\n break;\n }\n case JsSIP_C.INVITE: {\n if (this._status === C.STATUS_CONFIRMED) {\n if (request.hasHeader('replaces')) {\n this._receiveReplaces(request);\n }\n else {\n this._receiveReinvite(request);\n }\n }\n else {\n request.reply(403, 'Wrong Status');\n }\n break;\n }\n case JsSIP_C.INFO: {\n if (this._status === C.STATUS_1XX_RECEIVED ||\n this._status === C.STATUS_WAITING_FOR_ANSWER ||\n this._status === C.STATUS_ANSWERED ||\n this._status === C.STATUS_WAITING_FOR_ACK ||\n this._status === C.STATUS_CONFIRMED) {\n const contentType = request.hasHeader('Content-Type')\n ? request.getHeader('Content-Type').toLowerCase()\n : undefined;\n if (contentType && contentType.match(/^application\\/dtmf-relay/i)) {\n new RTCSession_DTMF(this).init_incoming(request);\n }\n else if (contentType !== undefined) {\n new RTCSession_Info(this).init_incoming(request);\n }\n else {\n request.reply(415);\n }\n }\n else {\n request.reply(403, 'Wrong Status');\n }\n break;\n }\n case JsSIP_C.UPDATE: {\n if (this._status === C.STATUS_CONFIRMED) {\n this._receiveUpdate(request);\n }\n else {\n request.reply(403, 'Wrong Status');\n }\n break;\n }\n case JsSIP_C.REFER: {\n if (this._status === C.STATUS_CONFIRMED) {\n this._receiveRefer(request);\n }\n else {\n request.reply(403, 'Wrong Status');\n }\n break;\n }\n case JsSIP_C.NOTIFY: {\n if (this._status === C.STATUS_CONFIRMED) {\n this._receiveNotify(request);\n }\n else {\n request.reply(403, 'Wrong Status');\n }\n break;\n }\n default: {\n request.reply(501);\n }\n }\n }\n }\n /**\n * Session Callbacks\n */\n onTransportError() {\n logger.warn('onTransportError()');\n if (this._status !== C.STATUS_TERMINATED) {\n this.terminate({\n status_code: 500,\n reason_phrase: JsSIP_C.causes.CONNECTION_ERROR,\n cause: JsSIP_C.causes.CONNECTION_ERROR,\n });\n }\n }\n onRequestTimeout() {\n logger.warn('onRequestTimeout()');\n if (this._status !== C.STATUS_TERMINATED) {\n this.terminate({\n status_code: 408,\n reason_phrase: JsSIP_C.causes.REQUEST_TIMEOUT,\n cause: JsSIP_C.causes.REQUEST_TIMEOUT,\n });\n }\n }\n onDialogError() {\n logger.warn('onDialogError()');\n if (this._status !== C.STATUS_TERMINATED) {\n this.terminate({\n status_code: 500,\n reason_phrase: JsSIP_C.causes.DIALOG_ERROR,\n cause: JsSIP_C.causes.DIALOG_ERROR,\n });\n }\n }\n // Called from DTMF handler.\n newDTMF(data) {\n logger.debug('newDTMF()');\n this.emit('newDTMF', data);\n }\n // Called from Info handler.\n newInfo(data) {\n logger.debug('newInfo()');\n this.emit('newInfo', data);\n }\n /**\n * Check if RTCSession is ready for an outgoing re-INVITE or UPDATE with SDP.\n */\n isReadyToReOffer() {\n if (!this._rtcReady) {\n logger.debug('isReadyToReOffer() | internal WebRTC status not ready');\n return false;\n }\n // No established yet.\n if (!this._dialog) {\n logger.debug('isReadyToReOffer() | session not established yet');\n return false;\n }\n // Another INVITE transaction is in progress.\n if (this._dialog.uac_pending_reply === true ||\n this._dialog.uas_pending_reply === true) {\n logger.debug('isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress');\n return false;\n }\n return true;\n }\n _close() {\n logger.debug('close()');\n // Close local MediaStream if it was not given by the user.\n if (this._localMediaStream && this._localMediaStreamLocallyGenerated) {\n logger.debug('close() | closing local MediaStream');\n Utils.closeMediaStream(this._localMediaStream);\n }\n if (this._status === C.STATUS_TERMINATED) {\n return;\n }\n this._status = C.STATUS_TERMINATED;\n // Terminate RTC.\n if (this._connection) {\n try {\n this._connection.close();\n }\n catch (error) {\n logger.warn('close() | error closing the RTCPeerConnection: %o', error);\n }\n }\n // Terminate signaling.\n // Clear SIP timers.\n for (const timer in this._timers) {\n if (Object.prototype.hasOwnProperty.call(this._timers, timer)) {\n clearTimeout(this._timers[timer]);\n }\n }\n // Clear Session Timers.\n clearTimeout(this._sessionTimers.timer);\n // Terminate confirmed dialog.\n if (this._dialog) {\n this._dialog.terminate();\n delete this._dialog;\n }\n // Terminate early dialogs.\n for (const dialog in this._earlyDialogs) {\n if (Object.prototype.hasOwnProperty.call(this._earlyDialogs, dialog)) {\n this._earlyDialogs[dialog].terminate();\n delete this._earlyDialogs[dialog];\n }\n }\n // Terminate REFER subscribers.\n for (const subscriber in this._referSubscribers) {\n if (Object.prototype.hasOwnProperty.call(this._referSubscribers, subscriber)) {\n delete this._referSubscribers[subscriber];\n }\n }\n this._ua.destroyRTCSession(this);\n }\n /**\n * Private API.\n */\n /**\n * RFC3261 13.3.1.4\n * Response retransmissions cannot be accomplished by transaction layer\n * since it is destroyed when receiving the first 2xx answer\n */\n _setInvite2xxTimer(request, body) {\n let timeout = Timers.T1;\n function invite2xxRetransmission() {\n if (this._status !== C.STATUS_WAITING_FOR_ACK) {\n return;\n }\n request.reply(200, null, [`Contact: ${this._contact}`], body);\n if (timeout < Timers.T2) {\n timeout = timeout * 2;\n if (timeout > Timers.T2) {\n timeout = Timers.T2;\n }\n }\n this._timers.invite2xxTimer = setTimeout(invite2xxRetransmission.bind(this), timeout);\n }\n this._timers.invite2xxTimer = setTimeout(invite2xxRetransmission.bind(this), timeout);\n }\n /**\n * RFC3261 14.2\n * If a UAS generates a 2xx response and never receives an ACK,\n * it SHOULD generate a BYE to terminate the dialog.\n */\n _setACKTimer() {\n this._timers.ackTimer = setTimeout(() => {\n if (this._status === C.STATUS_WAITING_FOR_ACK) {\n logger.debug('no ACK received, terminating the session');\n clearTimeout(this._timers.invite2xxTimer);\n this.sendRequest(JsSIP_C.BYE);\n this._ended('remote', null, JsSIP_C.causes.NO_ACK);\n }\n }, Timers.TIMER_H);\n }\n _createRTCConnection(pcConfig, rtcConstraints) {\n this._connection = new RTCPeerConnection(pcConfig, rtcConstraints);\n this._connection.addEventListener('iceconnectionstatechange', () => {\n const state = this._connection.iceConnectionState;\n // TODO: Do more with different states.\n if (state === 'failed') {\n this.terminate({\n cause: JsSIP_C.causes.RTP_TIMEOUT,\n status_code: 408,\n reason_phrase: JsSIP_C.causes.RTP_TIMEOUT,\n });\n }\n });\n logger.debug('emit \"peerconnection\"');\n this.emit('peerconnection', {\n peerconnection: this._connection,\n });\n }\n _createLocalDescription(type, constraints) {\n logger.debug('createLocalDescription()');\n if (type !== 'offer' && type !== 'answer') {\n throw new Error(`createLocalDescription() | invalid type \"${type}\"`);\n }\n const connection = this._connection;\n this._rtcReady = false;\n return (Promise.resolve()\n // Create Offer or Answer.\n .then(() => {\n if (type === 'offer') {\n return connection.createOffer(constraints).catch(error => {\n logger.warn('emit \"peerconnection:createofferfailed\" [error:%o]', error);\n this.emit('peerconnection:createofferfailed', error);\n return Promise.reject(error);\n });\n }\n else {\n return connection.createAnswer(constraints).catch(error => {\n logger.warn('emit \"peerconnection:createanswerfailed\" [error:%o]', error);\n this.emit('peerconnection:createanswerfailed', error);\n return Promise.reject(error);\n });\n }\n })\n // Set local description.\n .then(desc => {\n return connection.setLocalDescription(desc).catch(error => {\n this._rtcReady = true;\n logger.warn('emit \"peerconnection:setlocaldescriptionfailed\" [error:%o]', error);\n this.emit('peerconnection:setlocaldescriptionfailed', error);\n return Promise.reject(error);\n });\n })\n .then(() => {\n // Resolve right away if 'pc.iceGatheringState' is 'complete'.\n /**\n * Resolve right away if:\n * - 'connection.iceGatheringState' is 'complete' and no 'iceRestart' constraint is set.\n * - 'connection.iceGatheringState' is 'gathering' and 'iceReady' is true.\n */\n const iceRestart = constraints && constraints.iceRestart;\n if ((connection.iceGatheringState === 'complete' && !iceRestart) ||\n (connection.iceGatheringState === 'gathering' && this._iceReady)) {\n this._rtcReady = true;\n const e = {\n originator: 'local',\n type: type,\n sdp: connection.localDescription.sdp,\n };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n return Promise.resolve(e.sdp);\n }\n // Add 'pc.onicencandidate' event handler to resolve on last candidate.\n return new Promise(resolve => {\n let finished = false;\n let iceCandidateListener;\n let iceGatheringStateListener;\n this._iceReady = false;\n const ready = () => {\n if (finished) {\n return;\n }\n connection.removeEventListener('icecandidate', iceCandidateListener);\n connection.removeEventListener('icegatheringstatechange', iceGatheringStateListener);\n finished = true;\n this._rtcReady = true;\n // connection.iceGatheringState will still indicate 'gathering' and thus be blocking.\n this._iceReady = true;\n const e = {\n originator: 'local',\n type: type,\n sdp: connection.localDescription.sdp,\n };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n resolve(e.sdp);\n };\n connection.addEventListener('icecandidate', (iceCandidateListener = event => {\n const candidate = event.candidate;\n if (candidate) {\n this.emit('icecandidate', {\n candidate,\n ready,\n });\n }\n else {\n ready();\n }\n }));\n connection.addEventListener('icegatheringstatechange', (iceGatheringStateListener = () => {\n if (connection.iceGatheringState === 'complete') {\n ready();\n }\n }));\n });\n }));\n }\n /**\n * Dialog Management\n */\n _createDialog(message, type, early) {\n const local_tag = type === 'UAS' ? message.to_tag : message.from_tag;\n const remote_tag = type === 'UAS' ? message.from_tag : message.to_tag;\n const id = message.call_id + local_tag + remote_tag;\n let early_dialog = this._earlyDialogs[id];\n // Early Dialog.\n if (early) {\n if (early_dialog) {\n return true;\n }\n else {\n early_dialog = new Dialog(this, message, type, Dialog.C.STATUS_EARLY);\n // Dialog has been successfully created.\n if (early_dialog.error) {\n logger.debug(early_dialog.error);\n this._failed('remote', message, JsSIP_C.causes.INTERNAL_ERROR);\n return false;\n }\n else {\n this._earlyDialogs[id] = early_dialog;\n return true;\n }\n }\n }\n // Confirmed Dialog.\n else {\n this._from_tag = message.from_tag;\n this._to_tag = message.to_tag;\n // In case the dialog is in _early_ state, update it.\n if (early_dialog) {\n early_dialog.update(message, type);\n this._dialog = early_dialog;\n delete this._earlyDialogs[id];\n return true;\n }\n // Otherwise, create a _confirmed_ dialog.\n const dialog = new Dialog(this, message, type);\n if (dialog.error) {\n logger.debug(dialog.error);\n this._failed('remote', message, JsSIP_C.causes.INTERNAL_ERROR);\n return false;\n }\n else {\n this._dialog = dialog;\n return true;\n }\n }\n }\n /**\n * In dialog INVITE Reception\n */\n _receiveReinvite(request) {\n logger.debug('receiveReinvite()');\n const contentType = request.hasHeader('Content-Type')\n ? request.getHeader('Content-Type').toLowerCase()\n : undefined;\n const data = {\n request,\n callback: undefined,\n reject: reject.bind(this),\n };\n let rejected = false;\n function reject(options = {}) {\n rejected = true;\n const status_code = options.status_code || 403;\n const reason_phrase = options.reason_phrase || '';\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n if (this._status !== C.STATUS_CONFIRMED) {\n return false;\n }\n if (status_code < 300 || status_code >= 700) {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n request.reply(status_code, reason_phrase, extraHeaders);\n }\n // Emit 'reinvite'.\n this.emit('reinvite', data);\n if (rejected) {\n return;\n }\n this._late_sdp = false;\n // Request without SDP.\n if (!request.body) {\n this._late_sdp = true;\n if (this._remoteHold) {\n this._remoteHold = false;\n this._onunhold('remote');\n }\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._createLocalDescription('offer', this._rtcOfferConstraints))\n .then(sdp => {\n sendAnswer.call(this, sdp);\n })\n .catch(() => {\n request.reply(500);\n });\n return;\n }\n // Request with SDP.\n if (contentType !== 'application/sdp') {\n logger.debug('invalid Content-Type');\n request.reply(415);\n return;\n }\n this._processInDialogSdpOffer(request)\n // Send answer.\n .then(desc => {\n if (this._status === C.STATUS_TERMINATED) {\n return;\n }\n sendAnswer.call(this, desc);\n })\n .catch(error => {\n logger.warn(error);\n });\n function sendAnswer(desc) {\n const extraHeaders = [`Contact: ${this._contact}`];\n this._handleSessionTimersInIncomingRequest(request, extraHeaders);\n if (this._late_sdp) {\n desc = this._mangleOffer(desc);\n }\n request.reply(200, null, extraHeaders, desc, () => {\n this._status = C.STATUS_WAITING_FOR_ACK;\n this._setInvite2xxTimer(request, desc);\n this._setACKTimer();\n });\n // If callback is given execute it.\n if (typeof data.callback === 'function') {\n data.callback();\n }\n }\n }\n /**\n * In dialog UPDATE Reception\n */\n _receiveUpdate(request) {\n logger.debug('receiveUpdate()');\n const contentType = request.hasHeader('Content-Type')\n ? request.getHeader('Content-Type').toLowerCase()\n : undefined;\n const data = {\n request,\n callback: undefined,\n reject: reject.bind(this),\n };\n let rejected = false;\n function reject(options = {}) {\n rejected = true;\n const status_code = options.status_code || 403;\n const reason_phrase = options.reason_phrase || '';\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n if (this._status !== C.STATUS_CONFIRMED) {\n return false;\n }\n if (status_code < 300 || status_code >= 700) {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n request.reply(status_code, reason_phrase, extraHeaders);\n }\n // Emit 'update'.\n this.emit('update', data);\n if (rejected) {\n return;\n }\n if (!request.body) {\n sendAnswer.call(this, null);\n return;\n }\n if (contentType !== 'application/sdp') {\n logger.debug('invalid Content-Type');\n request.reply(415);\n return;\n }\n this._processInDialogSdpOffer(request)\n // Send answer.\n .then(desc => {\n if (this._status === C.STATUS_TERMINATED) {\n return;\n }\n sendAnswer.call(this, desc);\n })\n .catch(error => {\n logger.warn(error);\n });\n function sendAnswer(desc) {\n const extraHeaders = [`Contact: ${this._contact}`];\n this._handleSessionTimersInIncomingRequest(request, extraHeaders);\n request.reply(200, null, extraHeaders, desc);\n // If callback is given execute it.\n if (typeof data.callback === 'function') {\n data.callback();\n }\n }\n }\n _processInDialogSdpOffer(request) {\n logger.debug('_processInDialogSdpOffer()');\n const sdp = request.parseSDP();\n let hold = false;\n for (const m of sdp.media) {\n if (holdMediaTypes.indexOf(m.type) === -1) {\n continue;\n }\n const direction = m.direction || sdp.direction || 'sendrecv';\n if (direction === 'sendonly' || direction === 'inactive') {\n hold = true;\n }\n // If at least one of the streams is active don't emit 'hold'.\n else {\n hold = false;\n break;\n }\n }\n const e = { originator: 'remote', type: 'offer', sdp: request.body };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n const offer = new RTCSessionDescription({ type: 'offer', sdp: e.sdp });\n this._connectionPromiseQueue = this._connectionPromiseQueue\n // Set remote description.\n .then(() => {\n if (this._status === C.STATUS_TERMINATED) {\n throw new Error('terminated');\n }\n return this._connection.setRemoteDescription(offer).catch(error => {\n request.reply(488);\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n this.emit('peerconnection:setremotedescriptionfailed', error);\n throw error;\n });\n })\n .then(() => {\n if (this._status === C.STATUS_TERMINATED) {\n throw new Error('terminated');\n }\n if (this._remoteHold === true && hold === false) {\n this._remoteHold = false;\n this._onunhold('remote');\n }\n else if (this._remoteHold === false && hold === true) {\n this._remoteHold = true;\n this._onhold('remote');\n }\n })\n // Create local description.\n .then(() => {\n if (this._status === C.STATUS_TERMINATED) {\n throw new Error('terminated');\n }\n return this._createLocalDescription('answer', this._rtcAnswerConstraints).catch(error => {\n request.reply(500);\n logger.warn('emit \"peerconnection:createtelocaldescriptionfailed\" [error:%o]', error);\n throw error;\n });\n })\n .catch(error => {\n logger.warn('_processInDialogSdpOffer() failed [error: %o]', error);\n });\n return this._connectionPromiseQueue;\n }\n /**\n * In dialog Refer Reception\n */\n _receiveRefer(request) {\n logger.debug('receiveRefer()');\n if (!request.refer_to) {\n logger.debug('no Refer-To header field present in REFER');\n request.reply(400);\n return;\n }\n if (request.refer_to.uri.scheme !== JsSIP_C.SIP) {\n logger.debug('Refer-To header field points to a non-SIP URI scheme');\n request.reply(416);\n return;\n }\n // Reply before the transaction timer expires.\n request.reply(202);\n const notifier = new RTCSession_ReferNotifier(this, request.cseq);\n logger.debug('emit \"refer\"');\n // Emit 'refer'.\n this.emit('refer', {\n request,\n accept: (initCallback, options) => {\n accept.call(this, initCallback, options);\n },\n reject: () => {\n reject.call(this);\n },\n });\n function accept(initCallback, options = {}) {\n initCallback = typeof initCallback === 'function' ? initCallback : null;\n if (this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_CONFIRMED) {\n return false;\n }\n const session = new RTCSession(this._ua);\n session.on('progress', ({ response }) => {\n notifier.notify(response.status_code, response.reason_phrase);\n });\n session.on('accepted', ({ response }) => {\n notifier.notify(response.status_code, response.reason_phrase);\n });\n session.on('_failed', ({ message, cause }) => {\n if (message) {\n notifier.notify(message.status_code, message.reason_phrase);\n }\n else {\n notifier.notify(487, cause);\n }\n });\n // Consider the Replaces header present in the Refer-To URI.\n if (request.refer_to.uri.hasHeader('replaces')) {\n const replaces = decodeURIComponent(request.refer_to.uri.getHeader('replaces'));\n options.extraHeaders = Utils.cloneArray(options.extraHeaders);\n options.extraHeaders.push(`Replaces: ${replaces}`);\n }\n session.connect(request.refer_to.uri, options, initCallback);\n }\n function reject() {\n notifier.notify(603);\n }\n }\n /**\n * In dialog Notify Reception\n */\n _receiveNotify(request) {\n logger.debug('receiveNotify()');\n if (!request.event) {\n request.reply(400);\n }\n switch (request.event.event) {\n case 'refer': {\n let id;\n let referSubscriber;\n if (request.event.params && request.event.params.id) {\n id = request.event.params.id;\n referSubscriber = this._referSubscribers[id];\n }\n else if (Object.keys(this._referSubscribers).length === 1) {\n referSubscriber =\n this._referSubscribers[Object.keys(this._referSubscribers)[0]];\n }\n else {\n request.reply(400, 'Missing event id parameter');\n return;\n }\n if (!referSubscriber) {\n request.reply(481, 'Subscription does not exist');\n return;\n }\n referSubscriber.receiveNotify(request);\n request.reply(200);\n break;\n }\n default: {\n request.reply(489);\n }\n }\n }\n /**\n * INVITE with Replaces Reception\n */\n _receiveReplaces(request) {\n logger.debug('receiveReplaces()');\n function accept(initCallback) {\n if (this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_CONFIRMED) {\n return false;\n }\n const session = new RTCSession(this._ua);\n // Terminate the current session when the new one is confirmed.\n session.on('confirmed', () => {\n this.terminate();\n });\n session.init_incoming(request, initCallback);\n }\n function reject() {\n logger.debug('Replaced INVITE rejected by the user');\n request.reply(486);\n }\n // Emit 'replace'.\n this.emit('replaces', {\n request,\n accept: initCallback => {\n accept.call(this, initCallback);\n },\n reject: () => {\n reject.call(this);\n },\n });\n }\n /**\n * Initial Request Sender\n */\n _sendInitialRequest(mediaConstraints, rtcOfferConstraints, mediaStream) {\n const request_sender = new RequestSender(this._ua, this._request, {\n onRequestTimeout: () => {\n this.onRequestTimeout();\n },\n onTransportError: () => {\n this.onTransportError();\n },\n // Update the request on authentication.\n onAuthenticated: request => {\n this._request = request;\n },\n onReceiveResponse: response => {\n this._receiveInviteResponse(response);\n },\n });\n // This Promise is resolved within the next iteration, so the app has now\n // a chance to set events such as 'peerconnection' and 'connecting'.\n Promise.resolve()\n // Get a stream if required.\n .then(() => {\n // A stream is given, let the app set events such as 'peerconnection' and 'connecting'.\n if (mediaStream) {\n return mediaStream;\n }\n // Request for user media access.\n else if (mediaConstraints.audio || mediaConstraints.video) {\n this._localMediaStreamLocallyGenerated = true;\n return navigator.mediaDevices\n .getUserMedia(mediaConstraints)\n .catch(error => {\n if (this._status === C.STATUS_TERMINATED) {\n throw new Error('terminated');\n }\n this._failed('local', null, JsSIP_C.causes.USER_DENIED_MEDIA_ACCESS);\n logger.warn('emit \"getusermediafailed\" [error:%o]', error);\n this.emit('getusermediafailed', error);\n throw error;\n });\n }\n })\n .then(stream => {\n if (this._status === C.STATUS_TERMINATED) {\n throw new Error('terminated');\n }\n this._localMediaStream = stream;\n if (stream) {\n stream.getTracks().forEach(track => {\n this._connection.addTrack(track, stream);\n });\n }\n // TODO: should this be triggered here?\n this._connecting(this._request);\n return this._createLocalDescription('offer', rtcOfferConstraints).catch(error => {\n this._failed('local', null, JsSIP_C.causes.WEBRTC_ERROR);\n throw error;\n });\n })\n .then(desc => {\n if (this._is_canceled || this._status === C.STATUS_TERMINATED) {\n throw new Error('terminated');\n }\n this._request.body = desc;\n this._status = C.STATUS_INVITE_SENT;\n logger.debug('emit \"sending\" [request:%o]', this._request);\n // Emit 'sending' so the app can mangle the body before the request is sent.\n this.emit('sending', {\n request: this._request,\n });\n request_sender.send();\n })\n .catch(error => {\n if (this._status === C.STATUS_TERMINATED) {\n return;\n }\n logger.warn(error);\n });\n }\n /**\n * Get DTMF RTCRtpSender.\n */\n _getDTMFRTPSender() {\n const sender = this._connection.getSenders().find(rtpSender => {\n return rtpSender.track && rtpSender.track.kind === 'audio';\n });\n if (!(sender && sender.dtmf)) {\n logger.warn('sendDTMF() | no local audio track to send DTMF with');\n return;\n }\n return sender.dtmf;\n }\n /**\n * Reception of Response for Initial INVITE\n */\n _receiveInviteResponse(response) {\n logger.debug('receiveInviteResponse()');\n // Handle 2XX retransmissions and responses from forked requests.\n if (this._dialog &&\n response.status_code >= 200 &&\n response.status_code <= 299) {\n /*\n * If it is a retransmission from the endpoint that established\n * the dialog, send an ACK\n */\n if (this._dialog.id.call_id === response.call_id &&\n this._dialog.id.local_tag === response.from_tag &&\n this._dialog.id.remote_tag === response.to_tag) {\n this.sendRequest(JsSIP_C.ACK);\n return;\n }\n // If not, send an ACK and terminate.\n else {\n const dialog = new Dialog(this, response, 'UAC');\n if (dialog.error !== undefined) {\n logger.debug(dialog.error);\n return;\n }\n this.sendRequest(JsSIP_C.ACK);\n this.sendRequest(JsSIP_C.BYE);\n return;\n }\n }\n // Proceed to cancellation if the user requested.\n if (this._is_canceled) {\n if (response.status_code >= 100 && response.status_code < 200) {\n this._request.cancel(this._cancel_reason);\n }\n else if (response.status_code >= 200 && response.status_code < 299) {\n this._acceptAndTerminate(response);\n }\n return;\n }\n if (this._status !== C.STATUS_INVITE_SENT &&\n this._status !== C.STATUS_1XX_RECEIVED) {\n return;\n }\n switch (true) {\n case /^100$/.test(response.status_code): {\n this._status = C.STATUS_1XX_RECEIVED;\n break;\n }\n case /^1[0-9]{2}$/.test(response.status_code): {\n // Do nothing with 1xx responses without To tag.\n if (!response.to_tag) {\n logger.debug('1xx response received without to tag');\n break;\n }\n // Create Early Dialog if 1XX comes with contact.\n if (response.hasHeader('contact')) {\n // An error on dialog creation will fire 'failed' event.\n if (!this._createDialog(response, 'UAC', true)) {\n break;\n }\n }\n this._status = C.STATUS_1XX_RECEIVED;\n if (!response.body) {\n this._progress('remote', response);\n break;\n }\n const e = { originator: 'remote', type: 'answer', sdp: response.body };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n const answer = new RTCSessionDescription({\n type: 'answer',\n sdp: e.sdp,\n });\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._connection.setRemoteDescription(answer))\n .then(() => this._progress('remote', response))\n .catch(error => {\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n this.emit('peerconnection:setremotedescriptionfailed', error);\n });\n break;\n }\n case /^2[0-9]{2}$/.test(response.status_code): {\n this._status = C.STATUS_CONFIRMED;\n if (!response.body) {\n this._acceptAndTerminate(response, 400, JsSIP_C.causes.MISSING_SDP);\n this._failed('remote', response, JsSIP_C.causes.BAD_MEDIA_DESCRIPTION);\n break;\n }\n // An error on dialog creation will fire 'failed' event.\n if (!this._createDialog(response, 'UAC')) {\n break;\n }\n const e = { originator: 'remote', type: 'answer', sdp: response.body };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n const answer = new RTCSessionDescription({\n type: 'answer',\n sdp: e.sdp,\n });\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => {\n // Be ready for 200 with SDP after a 180/183 with SDP.\n // We created a SDP 'answer' for it, so check the current signaling state.\n if (this._connection.signalingState === 'stable') {\n return this._connection\n .createOffer(this._rtcOfferConstraints)\n .then(offer => this._connection.setLocalDescription(offer))\n .catch(error => {\n this._acceptAndTerminate(response, 500, error.toString());\n this._failed('local', response, JsSIP_C.causes.WEBRTC_ERROR);\n });\n }\n })\n .then(() => {\n this._connection\n .setRemoteDescription(answer)\n .then(() => {\n // Handle Session Timers.\n this._handleSessionTimersInIncomingResponse(response);\n this._accepted('remote', response);\n this.sendRequest(JsSIP_C.ACK);\n this._confirmed('local', null);\n })\n .catch(error => {\n this._acceptAndTerminate(response, 488, 'Not Acceptable Here');\n this._failed('remote', response, JsSIP_C.causes.BAD_MEDIA_DESCRIPTION);\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n this.emit('peerconnection:setremotedescriptionfailed', error);\n });\n });\n break;\n }\n default: {\n const cause = Utils.sipErrorCause(response.status_code);\n this._failed('remote', response, cause);\n }\n }\n }\n /**\n * Send Re-INVITE\n */\n _sendReinvite(options = {}) {\n logger.debug('sendReinvite()');\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const rtcOfferConstraints = options.rtcOfferConstraints || this._rtcOfferConstraints || null;\n let succeeded = false;\n extraHeaders.push(`Contact: ${this._contact}`);\n extraHeaders.push('Content-Type: application/sdp');\n // Session Timers.\n if (this._sessionTimers.running) {\n extraHeaders.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher ? 'uac' : 'uas'}`);\n }\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._createLocalDescription('offer', rtcOfferConstraints))\n .then(sdp => {\n sdp = this._mangleOffer(sdp);\n const e = { originator: 'local', type: 'offer', sdp };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n this.sendRequest(JsSIP_C.INVITE, {\n extraHeaders,\n body: sdp,\n eventHandlers: {\n onSuccessResponse: response => {\n onSucceeded.call(this, response);\n succeeded = true;\n },\n onErrorResponse: response => {\n onFailed.call(this, response);\n },\n onTransportError: () => {\n this.onTransportError(); // Do nothing because session ends.\n },\n onRequestTimeout: () => {\n this.onRequestTimeout(); // Do nothing because session ends.\n },\n onDialogError: () => {\n this.onDialogError(); // Do nothing because session ends.\n },\n },\n });\n })\n .catch(() => {\n onFailed();\n });\n function onSucceeded(response) {\n if (this._status === C.STATUS_TERMINATED) {\n return;\n }\n this.sendRequest(JsSIP_C.ACK);\n // If it is a 2XX retransmission exit now.\n if (succeeded) {\n return;\n }\n // Handle Session Timers.\n this._handleSessionTimersInIncomingResponse(response);\n // Must have SDP answer.\n if (!response.body) {\n onFailed.call(this);\n return;\n }\n else if (!response.hasHeader('Content-Type') ||\n response.getHeader('Content-Type').toLowerCase() !== 'application/sdp') {\n onFailed.call(this);\n return;\n }\n const e = { originator: 'remote', type: 'answer', sdp: response.body };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n const answer = new RTCSessionDescription({ type: 'answer', sdp: e.sdp });\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._connection.setRemoteDescription(answer))\n .then(() => {\n if (eventHandlers.succeeded) {\n eventHandlers.succeeded(response);\n }\n })\n .catch(error => {\n onFailed.call(this);\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n this.emit('peerconnection:setremotedescriptionfailed', error);\n });\n }\n function onFailed(response) {\n if (eventHandlers.failed) {\n eventHandlers.failed(response);\n }\n }\n }\n /**\n * Send UPDATE\n */\n _sendUpdate(options = {}) {\n logger.debug('sendUpdate()');\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const rtcOfferConstraints = options.rtcOfferConstraints || this._rtcOfferConstraints || null;\n const sdpOffer = options.sdpOffer || false;\n let succeeded = false;\n extraHeaders.push(`Contact: ${this._contact}`);\n // Session Timers.\n if (this._sessionTimers.running) {\n extraHeaders.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher ? 'uac' : 'uas'}`);\n }\n if (sdpOffer) {\n extraHeaders.push('Content-Type: application/sdp');\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._createLocalDescription('offer', rtcOfferConstraints))\n .then(sdp => {\n sdp = this._mangleOffer(sdp);\n const e = { originator: 'local', type: 'offer', sdp };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n this.sendRequest(JsSIP_C.UPDATE, {\n extraHeaders,\n body: sdp,\n eventHandlers: {\n onSuccessResponse: response => {\n onSucceeded.call(this, response);\n succeeded = true;\n },\n onErrorResponse: response => {\n onFailed.call(this, response);\n },\n onTransportError: () => {\n this.onTransportError(); // Do nothing because session ends.\n },\n onRequestTimeout: () => {\n this.onRequestTimeout(); // Do nothing because session ends.\n },\n onDialogError: () => {\n this.onDialogError(); // Do nothing because session ends.\n },\n },\n });\n })\n .catch(() => {\n onFailed.call(this);\n });\n }\n // No SDP.\n else {\n this.sendRequest(JsSIP_C.UPDATE, {\n extraHeaders,\n eventHandlers: {\n onSuccessResponse: response => {\n onSucceeded.call(this, response);\n },\n onErrorResponse: response => {\n onFailed.call(this, response);\n },\n onTransportError: () => {\n this.onTransportError(); // Do nothing because session ends.\n },\n onRequestTimeout: () => {\n this.onRequestTimeout(); // Do nothing because session ends.\n },\n onDialogError: () => {\n this.onDialogError(); // Do nothing because session ends.\n },\n },\n });\n }\n function onSucceeded(response) {\n if (this._status === C.STATUS_TERMINATED) {\n return;\n }\n // If it is a 2XX retransmission exit now.\n if (succeeded) {\n return;\n }\n // Handle Session Timers.\n this._handleSessionTimersInIncomingResponse(response);\n // Must have SDP answer.\n if (sdpOffer) {\n if (!response.body) {\n onFailed.call(this);\n return;\n }\n else if (!response.hasHeader('Content-Type') ||\n response.getHeader('Content-Type').toLowerCase() !== 'application/sdp') {\n onFailed.call(this);\n return;\n }\n const e = { originator: 'remote', type: 'answer', sdp: response.body };\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n const answer = new RTCSessionDescription({\n type: 'answer',\n sdp: e.sdp,\n });\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._connection.setRemoteDescription(answer))\n .then(() => {\n if (eventHandlers.succeeded) {\n eventHandlers.succeeded(response);\n }\n })\n .catch(error => {\n onFailed.call(this);\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n this.emit('peerconnection:setremotedescriptionfailed', error);\n });\n }\n // No SDP answer.\n else if (eventHandlers.succeeded) {\n eventHandlers.succeeded(response);\n }\n }\n function onFailed(response) {\n if (eventHandlers.failed) {\n eventHandlers.failed(response);\n }\n }\n }\n _acceptAndTerminate(response, status_code, reason_phrase) {\n logger.debug('acceptAndTerminate()');\n const extraHeaders = [];\n if (status_code) {\n reason_phrase = reason_phrase || JsSIP_C.REASON_PHRASE[status_code] || '';\n extraHeaders.push(`Reason: SIP ;cause=${status_code}; text=\"${reason_phrase}\"`);\n }\n // An error on dialog creation will fire 'failed' event.\n if (this._dialog || this._createDialog(response, 'UAC')) {\n this.sendRequest(JsSIP_C.ACK);\n this.sendRequest(JsSIP_C.BYE, {\n extraHeaders,\n });\n }\n // Update session status.\n this._status = C.STATUS_TERMINATED;\n }\n /**\n * Correctly set the SDP direction attributes if the call is on local hold\n */\n _mangleOffer(sdp) {\n if (!this._localHold && !this._remoteHold) {\n return sdp;\n }\n sdp = sdp_transform.parse(sdp);\n // Local hold.\n if (this._localHold && !this._remoteHold) {\n logger.debug('mangleOffer() | me on hold, mangling offer');\n for (const m of sdp.media) {\n if (holdMediaTypes.indexOf(m.type) === -1) {\n continue;\n }\n if (!m.direction) {\n m.direction = 'sendonly';\n }\n else if (m.direction === 'sendrecv') {\n m.direction = 'sendonly';\n }\n else if (m.direction === 'recvonly') {\n m.direction = 'inactive';\n }\n }\n }\n // Local and remote hold.\n else if (this._localHold && this._remoteHold) {\n logger.debug('mangleOffer() | both on hold, mangling offer');\n for (const m of sdp.media) {\n if (holdMediaTypes.indexOf(m.type) === -1) {\n continue;\n }\n m.direction = 'inactive';\n }\n }\n // Remote hold.\n else if (this._remoteHold) {\n logger.debug('mangleOffer() | remote on hold, mangling offer');\n for (const m of sdp.media) {\n if (holdMediaTypes.indexOf(m.type) === -1) {\n continue;\n }\n if (!m.direction) {\n m.direction = 'recvonly';\n }\n else if (m.direction === 'sendrecv') {\n m.direction = 'recvonly';\n }\n else if (m.direction === 'recvonly') {\n m.direction = 'inactive';\n }\n }\n }\n return sdp_transform.write(sdp);\n }\n _setLocalMediaStatus() {\n let enableAudio = true, enableVideo = true;\n if (this._localHold || this._remoteHold) {\n enableAudio = false;\n enableVideo = false;\n }\n if (this._audioMuted) {\n enableAudio = false;\n }\n if (this._videoMuted) {\n enableVideo = false;\n }\n this._toggleMuteAudio(!enableAudio);\n this._toggleMuteVideo(!enableVideo);\n }\n /**\n * Handle SessionTimers for an incoming INVITE or UPDATE.\n * @param {IncomingRequest} request\n * @param {Array} responseExtraHeaders Extra headers for the 200 response.\n */\n _handleSessionTimersInIncomingRequest(request, responseExtraHeaders) {\n if (!this._sessionTimers.enabled) {\n return;\n }\n let session_expires_refresher;\n if (request.session_expires &&\n request.session_expires >= JsSIP_C.MIN_SESSION_EXPIRES) {\n this._sessionTimers.currentExpires = request.session_expires;\n session_expires_refresher = request.session_expires_refresher || 'uas';\n }\n else {\n this._sessionTimers.currentExpires = this._sessionTimers.defaultExpires;\n session_expires_refresher = 'uas';\n }\n responseExtraHeaders.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${session_expires_refresher}`);\n this._sessionTimers.refresher = session_expires_refresher === 'uas';\n this._runSessionTimer();\n }\n /**\n * Handle SessionTimers for an incoming response to INVITE or UPDATE.\n * @param {IncomingResponse} response\n */\n _handleSessionTimersInIncomingResponse(response) {\n if (!this._sessionTimers.enabled) {\n return;\n }\n let session_expires_refresher;\n if (response.session_expires &&\n response.session_expires >= JsSIP_C.MIN_SESSION_EXPIRES) {\n this._sessionTimers.currentExpires = response.session_expires;\n session_expires_refresher = response.session_expires_refresher || 'uac';\n }\n else {\n this._sessionTimers.currentExpires = this._sessionTimers.defaultExpires;\n session_expires_refresher = 'uac';\n }\n this._sessionTimers.refresher = session_expires_refresher === 'uac';\n this._runSessionTimer();\n }\n _runSessionTimer() {\n const expires = this._sessionTimers.currentExpires;\n this._sessionTimers.running = true;\n clearTimeout(this._sessionTimers.timer);\n // I'm the refresher.\n if (this._sessionTimers.refresher) {\n this._sessionTimers.timer = setTimeout(() => {\n if (this._status === C.STATUS_TERMINATED) {\n return;\n }\n if (!this.isReadyToReOffer()) {\n return;\n }\n logger.debug('runSessionTimer() | sending session refresh request');\n if (this._sessionTimers.refreshMethod === JsSIP_C.UPDATE) {\n this._sendUpdate();\n }\n else {\n this._sendReinvite();\n }\n }, expires * 500); // Half the given interval (as the RFC states).\n }\n // I'm not the refresher.\n else {\n this._sessionTimers.timer = setTimeout(() => {\n if (this._status === C.STATUS_TERMINATED) {\n return;\n }\n logger.warn('runSessionTimer() | timer expired, terminating the session');\n this.terminate({\n cause: JsSIP_C.causes.REQUEST_TIMEOUT,\n status_code: 408,\n reason_phrase: 'Session Timer Expired',\n });\n }, expires * 1100);\n }\n }\n _toggleMuteAudio(mute) {\n const senders = this._connection.getSenders().filter(sender => {\n return sender.track && sender.track.kind === 'audio';\n });\n for (const sender of senders) {\n sender.track.enabled = !mute;\n }\n }\n _toggleMuteVideo(mute) {\n const senders = this._connection.getSenders().filter(sender => {\n return sender.track && sender.track.kind === 'video';\n });\n for (const sender of senders) {\n sender.track.enabled = !mute;\n }\n }\n _newRTCSession(originator, request) {\n logger.debug('newRTCSession()');\n this._ua.newRTCSession(this, {\n originator,\n session: this,\n request,\n });\n }\n _connecting(request) {\n logger.debug('session connecting');\n logger.debug('emit \"connecting\"');\n this.emit('connecting', {\n request,\n });\n }\n _progress(originator, response) {\n logger.debug('session progress');\n logger.debug('emit \"progress\"');\n this.emit('progress', {\n originator,\n response: response || null,\n });\n }\n _accepted(originator, message) {\n logger.debug('session accepted');\n this._start_time = new Date();\n logger.debug('emit \"accepted\"');\n this.emit('accepted', {\n originator,\n response: message || null,\n });\n }\n _confirmed(originator, ack) {\n logger.debug('session confirmed');\n this._is_confirmed = true;\n logger.debug('emit \"confirmed\"');\n this.emit('confirmed', {\n originator,\n ack: ack || null,\n });\n }\n _ended(originator, message, cause) {\n logger.debug('session ended');\n this._end_time = new Date();\n this._close();\n logger.debug('emit \"ended\"');\n this.emit('ended', {\n originator,\n message: message || null,\n cause,\n });\n }\n _failed(originator, message, cause) {\n logger.debug('session failed');\n // Emit private '_failed' event first.\n logger.debug('emit \"_failed\"');\n this.emit('_failed', {\n originator,\n message: message || null,\n cause,\n });\n this._close();\n logger.debug('emit \"failed\"');\n this.emit('failed', {\n originator,\n message: message || null,\n cause,\n });\n }\n _onhold(originator) {\n logger.debug('session onhold');\n this._setLocalMediaStatus();\n logger.debug('emit \"hold\"');\n this.emit('hold', {\n originator,\n });\n }\n _onunhold(originator) {\n logger.debug('session onunhold');\n this._setLocalMediaStatus();\n logger.debug('emit \"unhold\"');\n this.emit('unhold', {\n originator,\n });\n }\n _onmute({ audio, video }) {\n logger.debug('session onmute');\n this._setLocalMediaStatus();\n logger.debug('emit \"muted\"');\n this.emit('muted', {\n audio,\n video,\n });\n }\n _onunmute({ audio, video }) {\n logger.debug('session onunmute');\n this._setLocalMediaStatus();\n logger.debug('emit \"unmuted\"');\n this.emit('unmuted', {\n audio,\n video,\n });\n }\n};\n","\"use strict\";\nconst EventEmitter = require('events').EventEmitter;\nconst Exceptions = require('./Exceptions');\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst Utils = require('./Utils');\nconst Grammar = require('./Grammar');\nconst SIPMessage = require('./SIPMessage');\nconst RequestSender = require('./RequestSender');\nconst Dialog = require('./Dialog');\nconst logger = new Logger('Subscriber');\n/**\n * Termination codes.\n */\nconst C = {\n // Termination codes.\n SUBSCRIBE_RESPONSE_TIMEOUT: 0,\n SUBSCRIBE_TRANSPORT_ERROR: 1,\n SUBSCRIBE_NON_OK_RESPONSE: 2,\n SUBSCRIBE_WRONG_OK_RESPONSE: 3,\n SUBSCRIBE_AUTHENTICATION_FAILED: 4,\n UNSUBSCRIBE_TIMEOUT: 5,\n FINAL_NOTIFY_RECEIVED: 6,\n WRONG_NOTIFY_RECEIVED: 7,\n // Subscriber states.\n STATE_PENDING: 0,\n STATE_ACTIVE: 1,\n STATE_TERMINATED: 2,\n STATE_INIT: 3,\n STATE_WAITING_NOTIFY: 4,\n // RFC 6665 3.1.1, default expires value.\n DEFAULT_EXPIRES_SEC: 900,\n};\n/**\n * RFC 6665 Subscriber implementation.\n */\nmodule.exports = class Subscriber extends EventEmitter {\n /**\n * Expose C object.\n */\n static get C() {\n return C;\n }\n /**\n * @param {UA} ua - reference to JsSIP.UA\n * @param {string} target\n * @param {string} eventName - Event header value. May end with optional ;id=xxx\n * @param {string} accept - Accept header value.\n *\n * @param {SubscriberOption} options - optional parameters.\n * @param {number} expires - Expires header value. Default is 900.\n * @param {string} contentType - Content-Type header value. Used for SUBSCRIBE with body\n * @param {string} allowEvents - Allow-Events header value.\n * @param {RequestParams} params - Will have priority over ua.configuration.\n * If set please define: to_uri, to_display_name, from_uri, from_display_name\n * @param {Array<string>} extraHeaders - Additional SIP headers.\n */\n constructor(ua, target, eventName, accept, { expires, contentType, allowEvents, params, extraHeaders }) {\n logger.debug('new');\n super();\n // Check that arguments are defined.\n if (!target) {\n throw new TypeError('Not enough arguments: Missing target');\n }\n if (!eventName) {\n throw new TypeError('Not enough arguments: Missing eventName');\n }\n if (!accept) {\n throw new TypeError('Not enough arguments: Missing accept');\n }\n const event_header = Grammar.parse(eventName, 'Event');\n if (event_header === -1) {\n throw new TypeError('Missing Event header field');\n }\n this._ua = ua;\n this._target = target;\n if (!Utils.isDecimal(expires) || expires <= 0) {\n expires = C.DEFAULT_EXPIRES_SEC;\n }\n this._expires = expires;\n // Used to subscribe with body.\n this._content_type = contentType;\n // Set initial subscribe parameters.\n this._params = Utils.cloneObject(params);\n if (!this._params.from_uri) {\n this._params.from_uri = this._ua.configuration.uri;\n }\n this._params.from_tag = Utils.newTag();\n this._params.to_tag = null;\n this._params.call_id = Utils.createRandomToken(20);\n // Create subscribe cseq if not defined custom cseq.\n if (this._params.cseq === undefined) {\n this._params.cseq = Math.floor(Math.random() * 10000 + 1);\n }\n // Subscriber state.\n this._state = C.STATE_INIT;\n // Dialog.\n this._dialog = null;\n // To refresh subscription.\n this._expires_timer = null;\n this._expires_timestamp = null;\n // To prevent duplicate terminated call.\n this._terminated = false;\n this._event_name = event_header.event;\n this._event_id = event_header.params && event_header.params.id;\n let eventValue = this._event_name;\n if (this._event_id) {\n eventValue += `;id=${this._event_id}`;\n }\n this._headers = Utils.cloneArray(extraHeaders);\n this._headers = this._headers.concat([\n `Event: ${eventValue}`,\n `Expires: ${this._expires}`,\n `Accept: ${accept}`,\n ]);\n if (!this._headers.find(header => header.startsWith('Contact'))) {\n const contact = `Contact: ${this._ua._contact.toString()}`;\n this._headers.push(contact);\n }\n if (allowEvents) {\n this._headers.push(`Allow-Events: ${allowEvents}`);\n }\n // To enqueue SUBSCRIBE requests created before the reception of the initial subscribe OK response.\n this._queue = [];\n // Custom session empty object for high level use.\n this._data = {};\n }\n // Expose Subscriber constants as a property of the Subscriber instance.\n get C() {\n return C;\n }\n /**\n * Get dialog state.\n */\n get state() {\n return this._state;\n }\n /**\n * Get dialog id.\n */\n get id() {\n return this._dialog ? this._dialog.id : null;\n }\n get data() {\n return this._data;\n }\n set data(_data) {\n this._data = _data;\n }\n onRequestTimeout() {\n this._terminateDialog(C.SUBSCRIBE_RESPONSE_TIMEOUT);\n }\n onTransportError() {\n this._terminateDialog(C.SUBSCRIBE_TRANSPORT_ERROR);\n }\n /**\n * Dialog callback.\n */\n receiveRequest(request) {\n if (request.method !== JsSIP_C.NOTIFY) {\n logger.warn('received non-NOTIFY request');\n request.reply(405);\n return;\n }\n // RFC 6665 8.2.1. Check if event header matches.\n const event_header = request.parseHeader('Event');\n if (!event_header) {\n logger.warn('missing Event header');\n request.reply(400);\n this._terminateDialog(C.WRONG_NOTIFY_RECEIVED);\n return;\n }\n const event_name = event_header.event;\n const event_id = event_header.params && event_header.params.id;\n if (event_name !== this._event_name || event_id !== this._event_id) {\n logger.warn('Event header does not match the one in SUBSCRIBE request');\n request.reply(489);\n this._terminateDialog(C.WRONG_NOTIFY_RECEIVED);\n return;\n }\n // Process Subscription-State header.\n const subs_state = request.parseHeader('subscription-state');\n if (!subs_state) {\n logger.warn('missing Subscription-State header');\n request.reply(400);\n this._terminateDialog(C.WRONG_NOTIFY_RECEIVED);\n return;\n }\n const new_state = this._parseSubscriptionState(subs_state.state);\n if (new_state === undefined) {\n logger.warn(`Invalid Subscription-State header value: ${subs_state.state}`);\n request.reply(400);\n this._terminateDialog(C.WRONG_NOTIFY_RECEIVED);\n return;\n }\n request.reply(200);\n const prev_state = this._state;\n if (prev_state !== C.STATE_TERMINATED && new_state !== C.STATE_TERMINATED) {\n this._state = new_state;\n if (subs_state.expires !== undefined) {\n const expires = subs_state.expires;\n const expires_timestamp = new Date().getTime() + expires * 1000;\n const max_time_deviation = 2000;\n // Expiration time is shorter and the difference is not too small.\n if (this._expires_timestamp - expires_timestamp > max_time_deviation) {\n logger.debug('update sending re-SUBSCRIBE time');\n this._scheduleSubscribe(expires);\n }\n }\n }\n if (prev_state !== C.STATE_PENDING && new_state === C.STATE_PENDING) {\n logger.debug('emit \"pending\"');\n this.emit('pending');\n }\n else if (prev_state !== C.STATE_ACTIVE && new_state === C.STATE_ACTIVE) {\n logger.debug('emit \"active\"');\n this.emit('active');\n }\n const body = request.body;\n // Check if the notify is final.\n const is_final = new_state === C.STATE_TERMINATED;\n // Notify event fired only for notify with body.\n if (body) {\n const content_type = request.getHeader('content-type');\n logger.debug('emit \"notify\"');\n this.emit('notify', is_final, request, body, content_type);\n }\n if (is_final) {\n const reason = subs_state.reason;\n let retry_after = undefined;\n if (subs_state.params && subs_state.params['retry-after'] !== undefined) {\n retry_after = parseInt(subs_state.params['retry-after']);\n }\n this._terminateDialog(C.FINAL_NOTIFY_RECEIVED, reason, retry_after);\n }\n }\n /**\n * User API\n */\n /**\n * Send the initial (non-fetch) and subsequent subscribe.\n * @param {string} body - subscribe request body.\n */\n subscribe(body = null) {\n logger.debug('subscribe()');\n if (this._state === C.STATE_INIT) {\n this._sendInitialSubscribe(body, this._headers);\n }\n else {\n this._sendSubsequentSubscribe(body, this._headers);\n }\n }\n /**\n * terminate.\n * Send un-subscribe or fetch-subscribe (with Expires: 0).\n * @param {string} body - un-subscribe request body\n */\n terminate(body = null) {\n logger.debug('terminate()');\n if (this._state === C.STATE_INIT) {\n throw new Exceptions.InvalidStateError(this._state);\n }\n // Prevent duplication un-subscribe sending.\n if (this._terminated) {\n return;\n }\n this._terminated = true;\n // Set header Expires: 0.\n const headers = this._headers.map(header => {\n return header.startsWith('Expires') ? 'Expires: 0' : header;\n });\n this._sendSubsequentSubscribe(body, headers);\n }\n /**\n * Private API.\n */\n _terminateDialog(terminationCode, reason = undefined, retryAfter = undefined) {\n // To prevent duplicate emit terminated event.\n if (this._state === C.STATE_TERMINATED) {\n return;\n }\n this._state = C.STATE_TERMINATED;\n // Clear timers.\n clearTimeout(this._expires_timer);\n if (this._dialog) {\n this._dialog.terminate();\n this._dialog = null;\n }\n logger.debug(`emit \"terminated\" code=${terminationCode}`);\n this.emit('terminated', terminationCode, reason, retryAfter);\n }\n _sendInitialSubscribe(body, headers) {\n if (body) {\n if (!this._content_type) {\n throw new TypeError('content_type is undefined');\n }\n headers = Utils.cloneArray(headers);\n headers.push(`Content-Type: ${this._content_type}`);\n }\n this._state = C.STATE_WAITING_NOTIFY;\n const request = new SIPMessage.OutgoingRequest(JsSIP_C.SUBSCRIBE, this._ua.normalizeTarget(this._target), this._ua, this._params, headers, body);\n const request_sender = new RequestSender(this._ua, request, {\n onRequestTimeout: () => {\n this.onRequestTimeout();\n },\n onTransportError: () => {\n this.onTransportError();\n },\n onReceiveResponse: response => {\n this._receiveSubscribeResponse(response);\n },\n });\n request_sender.send();\n }\n _sendSubsequentSubscribe(body, headers) {\n if (this._state === C.STATE_TERMINATED) {\n return;\n }\n if (!this._dialog) {\n logger.debug('enqueue subscribe');\n this._queue.push({ body, headers: Utils.cloneArray(headers) });\n return;\n }\n if (body) {\n if (!this._content_type) {\n throw new TypeError('content_type is undefined');\n }\n headers = Utils.cloneArray(headers);\n headers.push(`Content-Type: ${this._content_type}`);\n }\n this._dialog.sendRequest(JsSIP_C.SUBSCRIBE, {\n body,\n extraHeaders: headers,\n eventHandlers: {\n onRequestTimeout: () => {\n this.onRequestTimeout();\n },\n onTransportError: () => {\n this.onTransportError();\n },\n onSuccessResponse: response => {\n this._receiveSubscribeResponse(response);\n },\n onErrorResponse: response => {\n this._receiveSubscribeResponse(response);\n },\n onDialogError: response => {\n this._receiveSubscribeResponse(response);\n },\n },\n });\n }\n _receiveSubscribeResponse(response) {\n if (this._state === C.STATE_TERMINATED) {\n return;\n }\n if (response.status_code >= 200 && response.status_code < 300) {\n // Create dialog.\n if (this._dialog === null) {\n const dialog = new Dialog(this, response, 'UAC');\n if (dialog.error) {\n // OK response without Contact.\n logger.warn(dialog.error);\n this._terminateDialog(C.SUBSCRIBE_WRONG_OK_RESPONSE);\n return;\n }\n this._dialog = dialog;\n logger.debug('emit \"accepted\"');\n this.emit('accepted');\n // Subsequent subscribes saved in the queue until dialog created.\n for (const subscribe of this._queue) {\n logger.debug('dequeue subscribe');\n this._sendSubsequentSubscribe(subscribe.body, subscribe.headers);\n }\n }\n // Check expires value.\n const expires_value = response.getHeader('expires');\n let expires = parseInt(expires_value);\n if (!Utils.isDecimal(expires) || expires <= 0) {\n logger.warn(`response without Expires header, setting a default value of ${C.DEFAULT_EXPIRES_SEC}`);\n // RFC 6665 3.1.1 subscribe OK response must contain Expires header.\n // Use workaround expires value.\n expires = C.DEFAULT_EXPIRES_SEC;\n }\n if (expires > 0) {\n this._scheduleSubscribe(expires);\n }\n }\n else if (response.status_code === 401 || response.status_code === 407) {\n this._terminateDialog(C.SUBSCRIBE_AUTHENTICATION_FAILED);\n }\n else if (response.status_code >= 300) {\n this._terminateDialog(C.SUBSCRIBE_NON_OK_RESPONSE);\n }\n }\n _scheduleSubscribe(expires) {\n /*\n If the expires time is less than 140 seconds we do not support Chrome intensive timer throttling mode.\n In this case, the re-subcribe is sent 5 seconds before the subscription expiration.\n\n When Chrome is in intensive timer throttling mode, in the worst case,\n the timer will be 60 seconds late.\n We give the server 10 seconds to make sure it will execute the command even if it is heavily loaded.\n As a result, we order the time no later than 70 seconds before the subscription expiration.\n Resulting time calculated as half time interval + (half interval - 70) * random.\n\n E.g. expires is 140, re-subscribe will be ordered to send in 70 seconds.\n expires is 600, re-subscribe will be ordered to send in 300 + (0 .. 230) seconds.\n */\n const timeout = expires >= 140\n ? (expires * 1000) / 2 +\n Math.floor((expires / 2 - 70) * 1000 * Math.random())\n : expires * 1000 - 5000;\n this._expires_timestamp = new Date().getTime() + expires * 1000;\n logger.debug(`next SUBSCRIBE will be sent in ${Math.floor(timeout / 1000)} sec`);\n clearTimeout(this._expires_timer);\n this._expires_timer = setTimeout(() => {\n this._expires_timer = null;\n this._sendSubsequentSubscribe(null, this._headers);\n }, timeout);\n }\n _parseSubscriptionState(strState) {\n switch (strState) {\n case 'pending': {\n return C.STATE_PENDING;\n }\n case 'active': {\n return C.STATE_ACTIVE;\n }\n case 'terminated': {\n return C.STATE_TERMINATED;\n }\n case 'init': {\n return C.STATE_INIT;\n }\n case 'notify_wait': {\n return C.STATE_WAITING_NOTIFY;\n }\n default: {\n return undefined;\n }\n }\n }\n};\n","\"use strict\";\nconst EventEmitter = require('events').EventEmitter;\nconst Exceptions = require('./Exceptions');\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst Utils = require('./Utils');\nconst Dialog = require('./Dialog');\nconst logger = new Logger('Notifier');\n/**\n * Termination codes.\n */\nconst C = {\n // Termination codes.\n NOTIFY_RESPONSE_TIMEOUT: 0,\n NOTIFY_TRANSPORT_ERROR: 1,\n NOTIFY_NON_OK_RESPONSE: 2,\n NOTIFY_AUTHENTICATION_FAILED: 3,\n FINAL_NOTIFY_SENT: 4,\n UNSUBSCRIBE_RECEIVED: 5,\n SUBSCRIPTION_EXPIRED: 6,\n // Notifer states.\n STATE_PENDING: 0,\n STATE_ACTIVE: 1,\n STATE_TERMINATED: 2,\n // RFC 6665 3.1.1, default expires value.\n DEFAULT_EXPIRES_SEC: 900,\n};\n/**\n * RFC 6665 Notifier implementation.\n */\nmodule.exports = class Notifier extends EventEmitter {\n /**\n * Expose C object.\n */\n static get C() {\n return C;\n }\n static init_incoming(request, callback) {\n try {\n Notifier.checkSubscribe(request);\n }\n catch (error) {\n logger.warn('Notifier.init_incoming: invalid request. Error: ', error.message);\n request.reply(405);\n return;\n }\n callback();\n }\n static checkSubscribe(subscribe) {\n if (!subscribe) {\n throw new TypeError('Not enough arguments. Missing subscribe request');\n }\n if (subscribe.method !== JsSIP_C.SUBSCRIBE) {\n throw new TypeError('Invalid method for Subscribe request');\n }\n if (!subscribe.hasHeader('contact')) {\n throw new TypeError('Missing Contact header in subscribe request');\n }\n if (!subscribe.hasHeader('event')) {\n throw new TypeError('Missing Event header in subscribe request');\n }\n const expires = subscribe.getHeader('expires');\n if (expires) {\n const parsed_expires = parseInt(expires);\n if (!Utils.isDecimal(parsed_expires) || parsed_expires < 0) {\n throw new TypeError('Invalid Expires header field in subscribe request');\n }\n }\n }\n /**\n * @param {UA} ua - JsSIP User Agent instance.\n * @param {IncomingRequest} subscribe - Subscribe request.\n * @param {string} contentType - Content-Type header value.\n * @param {NotifierOptions} options - Optional parameters.\n * @param {Array<string>} extraHeaders - Additional SIP headers.\n * @param {string} allowEvents - Allow-Events header value.\n * @param {boolean} pending - Set initial dialog state as \"pending\".\n * @param {number} defaultExpires - Default expires value (seconds).\n */\n constructor(ua, subscribe, contentType, { extraHeaders, allowEvents, pending, defaultExpires }) {\n logger.debug('new');\n super();\n if (!contentType) {\n throw new TypeError('Not enough arguments. Missing contentType');\n }\n Notifier.checkSubscribe(subscribe);\n const eventName = subscribe.getHeader('event');\n this._ua = ua;\n this._initial_subscribe = subscribe;\n this._expires_timestamp = null;\n this._expires_timer = null;\n this._defaultExpires = defaultExpires || C.DEFAULT_EXPIRES_SEC;\n // Notifier state: pending, active, terminated.\n this._state = pending ? C.STATE_PENDING : C.STATE_ACTIVE;\n this._content_type = contentType;\n this._headers = Utils.cloneArray(extraHeaders);\n this._headers.push(`Event: ${eventName}`);\n // Use contact from extraHeaders or create it.\n this._contact = this._headers.find(header => header.startsWith('Contact'));\n if (!this._contact) {\n this._contact = `Contact: ${this._ua._contact.toString()}`;\n this._headers.push(this._contact);\n }\n if (allowEvents) {\n this._headers.push(`Allow-Events: ${allowEvents}`);\n }\n this._target = subscribe.from.uri.user;\n subscribe.to_tag = Utils.newTag();\n // Custom session empty object for high level use.\n this._data = {};\n }\n // Expose Notifier constants as a property of the Notifier instance.\n get C() {\n return C;\n }\n /**\n * Get dialog state.\n */\n get state() {\n return this._state;\n }\n /**\n * Get dialog id.\n */\n get id() {\n return this._dialog ? this._dialog.id : null;\n }\n get data() {\n return this._data;\n }\n set data(_data) {\n this._data = _data;\n }\n /**\n * Dialog callback.\n * Called also for initial subscribe.\n * Supported RFC 6665 4.4.3: initial fetch subscribe (with expires: 0).\n */\n receiveRequest(request) {\n if (request.method !== JsSIP_C.SUBSCRIBE) {\n request.reply(405);\n return;\n }\n this._setExpires(request);\n // Create dialog for normal and fetch-subscribe.\n if (!this._dialog) {\n this._dialog = new Dialog(this, request, 'UAS');\n }\n request.reply(200, null, [`Expires: ${this._expires}`, `${this._contact}`]);\n const body = request.body;\n const content_type = request.getHeader('content-type');\n const is_unsubscribe = this._expires === 0;\n if (!is_unsubscribe) {\n this._setExpiresTimer();\n }\n logger.debug('emit \"subscribe\"');\n this.emit('subscribe', is_unsubscribe, request, body, content_type);\n if (is_unsubscribe) {\n this._terminateDialog(C.UNSUBSCRIBE_RECEIVED);\n }\n }\n /**\n * User API\n */\n /**\n * Call this method after creating the Notifier instance and setting the event handlers.\n */\n start() {\n logger.debug('start()');\n if (this._state === C.STATE_TERMINATED) {\n throw new Exceptions.InvalidStateError(this._state);\n }\n this.receiveRequest(this._initial_subscribe);\n }\n /**\n * Switch pending dialog state to active.\n */\n setActiveState() {\n logger.debug('setActiveState()');\n if (this._state === C.STATE_TERMINATED) {\n throw new Exceptions.InvalidStateError(this._state);\n }\n if (this._state === C.STATE_PENDING) {\n this._state = C.STATE_ACTIVE;\n }\n }\n /**\n * Send the initial and subsequent notify request.\n * @param {string} body - notify request body.\n */\n notify(body = null) {\n logger.debug('notify()');\n if (this._state === C.STATE_TERMINATED) {\n throw new Exceptions.InvalidStateError(this._state);\n }\n const expires = Math.floor((this._expires_timestamp - new Date().getTime()) / 1000);\n // expires_timer is about to trigger. Clean up the timer and terminate.\n if (expires <= 0) {\n if (!this._expires_timer) {\n logger.error('expires timer is not set');\n }\n clearTimeout(this._expires_timer);\n this.terminate(body, 'timeout');\n }\n else {\n this._sendNotify([`;expires=${expires}`], body);\n }\n }\n /**\n * Terminate. (Send the final NOTIFY request).\n *\n * @param {string} body - Notify message body.\n * @param {string} reason - Set Subscription-State reason parameter.\n * @param {number} retryAfter - Set Subscription-State retry-after parameter.\n */\n terminate(body = null, reason = null, retryAfter = null) {\n logger.debug('terminate()');\n if (this._state === C.STATE_TERMINATED) {\n return;\n }\n const subsStateParameters = [];\n if (reason) {\n subsStateParameters.push(`;reason=${reason}`);\n }\n if (retryAfter !== null) {\n subsStateParameters.push(`;retry-after=${retryAfter}`);\n }\n this._sendNotify(subsStateParameters, body, null, 'terminated');\n this._terminateDialog(reason === 'timeout' ? C.SUBSCRIPTION_EXPIRED : C.FINAL_NOTIFY_SENT);\n }\n /**\n * Private API\n */\n _terminateDialog(termination_code) {\n if (this._state === C.STATE_TERMINATED) {\n return;\n }\n this._state = C.STATE_TERMINATED;\n clearTimeout(this._expires_timer);\n if (this._dialog) {\n this._dialog.terminate();\n this._dialog = null;\n }\n logger.debug(`emit \"terminated\" code=${termination_code}`);\n this.emit('terminated', termination_code);\n }\n _setExpires(request) {\n if (request.hasHeader('expires')) {\n this._expires = parseInt(request.getHeader('expires'));\n }\n else {\n this._expires = this._defaultExpires;\n logger.debug(`missing Expires header field, default value set: ${this._expires}`);\n }\n }\n /**\n * @param {Array<string>} subsStateParams subscription state parameters.\n * @param {String} body Notify body\n * @param {Array<string>} extraHeaders\n */\n _sendNotify(subsStateParameters, body = null, extraHeaders = null, state = null) {\n // Prevent send notify after final notify.\n if (this._state === C.STATE_TERMINATED) {\n logger.warn('final notify already sent');\n return;\n }\n // Build Subscription-State header with parameters.\n let subsState = `Subscription-State: ${state || this._parseState()}`;\n for (const param of subsStateParameters) {\n subsState += param;\n }\n let headers = Utils.cloneArray(this._headers);\n headers.push(subsState);\n if (extraHeaders) {\n headers = headers.concat(extraHeaders);\n }\n if (body) {\n headers.push(`Content-Type: ${this._content_type}`);\n }\n this._dialog.sendRequest(JsSIP_C.NOTIFY, {\n body,\n extraHeaders: headers,\n eventHandlers: {\n onRequestTimeout: () => {\n this._terminateDialog(C.NOTIFY_RESPONSE_TIMEOUT);\n },\n onTransportError: () => {\n this._terminateDialog(C.NOTIFY_TRANSPORT_ERROR);\n },\n onErrorResponse: response => {\n if (response.status_code === 401 || response.status_code === 407) {\n this._terminateDialog(C.NOTIFY_AUTHENTICATION_FAILED);\n }\n else {\n this._terminateDialog(C.NOTIFY_NON_OK_RESPONSE);\n }\n },\n onDialogError: () => {\n this._terminateDialog(C.NOTIFY_NON_OK_RESPONSE);\n },\n },\n });\n }\n _setExpiresTimer() {\n this._expires_timestamp = new Date().getTime() + this._expires * 1000;\n clearTimeout(this._expires_timer);\n this._expires_timer = setTimeout(() => {\n if (this._state === C.STATE_TERMINATED) {\n return;\n }\n logger.debug('emit \"expired\"');\n // Client can hook into the 'expired' event and call terminate to send a custom notify.\n this.emit('expired');\n // This will be no-op if the client already called `terminate()`.\n this.terminate(null, 'timeout');\n }, this._expires * 1000);\n }\n _parseState() {\n switch (this._state) {\n case C.STATE_PENDING: {\n return 'pending';\n }\n case C.STATE_ACTIVE: {\n return 'active';\n }\n case C.STATE_TERMINATED: {\n return 'terminated';\n }\n default: {\n throw new TypeError('wrong state value');\n }\n }\n }\n};\n","\"use strict\";\nconst EventEmitter = require('events').EventEmitter;\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst SIPMessage = require('./SIPMessage');\nconst Utils = require('./Utils');\nconst RequestSender = require('./RequestSender');\nconst Exceptions = require('./Exceptions');\nconst URI = require('./URI');\nconst logger = new Logger('Message');\nmodule.exports = class Message extends EventEmitter {\n constructor(ua) {\n super();\n this._ua = ua;\n this._request = null;\n this._closed = false;\n this._direction = null;\n this._local_identity = null;\n this._remote_identity = null;\n // Whether an incoming message has been replied.\n this._is_replied = false;\n // Custom message empty object for high level use.\n this._data = {};\n }\n get direction() {\n return this._direction;\n }\n get local_identity() {\n return this._local_identity;\n }\n get remote_identity() {\n return this._remote_identity;\n }\n send(target, body, options = {}) {\n const originalTarget = target;\n if (target === undefined || body === undefined) {\n throw new TypeError('Not enough arguments');\n }\n // Check target validity.\n target = this._ua.normalizeTarget(target);\n if (!target) {\n throw new TypeError(`Invalid target: ${originalTarget}`);\n }\n // Get call options.\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const contentType = options.contentType || 'text/plain';\n const requestParams = {};\n if (options.fromUserName) {\n requestParams.from_uri = new URI('sip', options.fromUserName, this._ua.configuration.uri.host);\n extraHeaders.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`);\n }\n if (options.fromDisplayName) {\n requestParams.from_display_name = options.fromDisplayName;\n }\n // Set event handlers.\n for (const event in eventHandlers) {\n if (Object.prototype.hasOwnProperty.call(eventHandlers, event)) {\n this.on(event, eventHandlers[event]);\n }\n }\n extraHeaders.push(`Content-Type: ${contentType}`);\n this._request = new SIPMessage.OutgoingRequest(JsSIP_C.MESSAGE, target, this._ua, requestParams, extraHeaders);\n if (body) {\n this._request.body = body;\n }\n const request_sender = new RequestSender(this._ua, this._request, {\n onRequestTimeout: () => {\n this._onRequestTimeout();\n },\n onTransportError: () => {\n this._onTransportError();\n },\n onReceiveResponse: response => {\n this._receiveResponse(response);\n },\n });\n this._newMessage('local', this._request);\n request_sender.send();\n }\n init_incoming(request) {\n this._request = request;\n this._newMessage('remote', request);\n // Reply with a 200 OK if the user didn't reply.\n if (!this._is_replied) {\n this._is_replied = true;\n request.reply(200);\n }\n this._close();\n }\n /**\n * Accept the incoming Message\n * Only valid for incoming Messages\n */\n accept(options = {}) {\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const body = options.body;\n if (this._direction !== 'incoming') {\n throw new Exceptions.NotSupportedError('\"accept\" not supported for outgoing Message');\n }\n if (this._is_replied) {\n throw new Error('incoming Message already replied');\n }\n this._is_replied = true;\n this._request.reply(200, null, extraHeaders, body);\n }\n /**\n * Reject the incoming Message\n * Only valid for incoming Messages\n */\n reject(options = {}) {\n const status_code = options.status_code || 480;\n const reason_phrase = options.reason_phrase;\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const body = options.body;\n if (this._direction !== 'incoming') {\n throw new Exceptions.NotSupportedError('\"reject\" not supported for outgoing Message');\n }\n if (this._is_replied) {\n throw new Error('incoming Message already replied');\n }\n if (status_code < 300 || status_code >= 700) {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n this._is_replied = true;\n this._request.reply(status_code, reason_phrase, extraHeaders, body);\n }\n _receiveResponse(response) {\n if (this._closed) {\n return;\n }\n switch (true) {\n case /^1[0-9]{2}$/.test(response.status_code): {\n // Ignore provisional responses.\n break;\n }\n case /^2[0-9]{2}$/.test(response.status_code): {\n this._succeeded('remote', response);\n break;\n }\n default: {\n const cause = Utils.sipErrorCause(response.status_code);\n this._failed('remote', response, cause);\n break;\n }\n }\n }\n _onRequestTimeout() {\n if (this._closed) {\n return;\n }\n this._failed('system', null, JsSIP_C.causes.REQUEST_TIMEOUT);\n }\n _onTransportError() {\n if (this._closed) {\n return;\n }\n this._failed('system', null, JsSIP_C.causes.CONNECTION_ERROR);\n }\n _close() {\n this._closed = true;\n this._ua.destroyMessage(this);\n }\n /**\n * Internal Callbacks\n */\n _newMessage(originator, request) {\n if (originator === 'remote') {\n this._direction = 'incoming';\n this._local_identity = request.to;\n this._remote_identity = request.from;\n }\n else if (originator === 'local') {\n this._direction = 'outgoing';\n this._local_identity = request.from;\n this._remote_identity = request.to;\n }\n this._ua.newMessage(this, {\n originator,\n message: this,\n request,\n });\n }\n _failed(originator, response, cause) {\n logger.debug('MESSAGE failed');\n this._close();\n logger.debug('emit \"failed\"');\n this.emit('failed', {\n originator,\n response: response || null,\n cause,\n });\n }\n _succeeded(originator, response) {\n logger.debug('MESSAGE succeeded');\n this._close();\n logger.debug('emit \"succeeded\"');\n this.emit('succeeded', {\n originator,\n response,\n });\n }\n};\n","\"use strict\";\nconst EventEmitter = require('events').EventEmitter;\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst SIPMessage = require('./SIPMessage');\nconst Utils = require('./Utils');\nconst RequestSender = require('./RequestSender');\nconst Exceptions = require('./Exceptions');\nconst logger = new Logger('Options');\nmodule.exports = class Options extends EventEmitter {\n constructor(ua) {\n super();\n this._ua = ua;\n this._request = null;\n this._closed = false;\n this._direction = null;\n this._local_identity = null;\n this._remote_identity = null;\n // Whether an incoming message has been replied.\n this._is_replied = false;\n // Custom message empty object for high level use.\n this._data = {};\n }\n get direction() {\n return this._direction;\n }\n get local_identity() {\n return this._local_identity;\n }\n get remote_identity() {\n return this._remote_identity;\n }\n send(target, body, options = {}) {\n const originalTarget = target;\n if (target === undefined) {\n throw new TypeError('A target is required for OPTIONS');\n }\n // Check target validity.\n target = this._ua.normalizeTarget(target);\n if (!target) {\n throw new TypeError(`Invalid target: ${originalTarget}`);\n }\n // Get call options.\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const contentType = options.contentType || 'application/sdp';\n // Set event handlers.\n for (const event in eventHandlers) {\n if (Object.prototype.hasOwnProperty.call(eventHandlers, event)) {\n this.on(event, eventHandlers[event]);\n }\n }\n extraHeaders.push(`Content-Type: ${contentType}`);\n this._request = new SIPMessage.OutgoingRequest(JsSIP_C.OPTIONS, target, this._ua, null, extraHeaders);\n if (body) {\n this._request.body = body;\n }\n const request_sender = new RequestSender(this._ua, this._request, {\n onRequestTimeout: () => {\n this._onRequestTimeout();\n },\n onTransportError: () => {\n this._onTransportError();\n },\n onReceiveResponse: response => {\n this._receiveResponse(response);\n },\n });\n this._newOptions('local', this._request);\n request_sender.send();\n }\n init_incoming(request) {\n this._request = request;\n this._newOptions('remote', request);\n // Reply with a 200 OK if the user didn't reply.\n if (!this._is_replied) {\n this._is_replied = true;\n request.reply(200);\n }\n this._close();\n }\n /**\n * Accept the incoming Options\n * Only valid for incoming Options\n */\n accept(options = {}) {\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const body = options.body;\n if (this._direction !== 'incoming') {\n throw new Exceptions.NotSupportedError('\"accept\" not supported for outgoing Options');\n }\n if (this._is_replied) {\n throw new Error('incoming Options already replied');\n }\n this._is_replied = true;\n this._request.reply(200, null, extraHeaders, body);\n }\n /**\n * Reject the incoming Options\n * Only valid for incoming Options\n */\n reject(options = {}) {\n const status_code = options.status_code || 480;\n const reason_phrase = options.reason_phrase;\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const body = options.body;\n if (this._direction !== 'incoming') {\n throw new Exceptions.NotSupportedError('\"reject\" not supported for outgoing Options');\n }\n if (this._is_replied) {\n throw new Error('incoming Options already replied');\n }\n if (status_code < 300 || status_code >= 700) {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n this._is_replied = true;\n this._request.reply(status_code, reason_phrase, extraHeaders, body);\n }\n _receiveResponse(response) {\n if (this._closed) {\n return;\n }\n switch (true) {\n case /^1[0-9]{2}$/.test(response.status_code): {\n // Ignore provisional responses.\n break;\n }\n case /^2[0-9]{2}$/.test(response.status_code): {\n this._succeeded('remote', response);\n break;\n }\n default: {\n const cause = Utils.sipErrorCause(response.status_code);\n this._failed('remote', response, cause);\n break;\n }\n }\n }\n _onRequestTimeout() {\n if (this._closed) {\n return;\n }\n this._failed('system', null, JsSIP_C.causes.REQUEST_TIMEOUT);\n }\n _onTransportError() {\n if (this._closed) {\n return;\n }\n this._failed('system', null, JsSIP_C.causes.CONNECTION_ERROR);\n }\n _close() {\n this._closed = true;\n this._ua.destroyMessage(this);\n }\n /**\n * Internal Callbacks\n */\n _newOptions(originator, request) {\n if (originator === 'remote') {\n this._direction = 'incoming';\n this._local_identity = request.to;\n this._remote_identity = request.from;\n }\n else if (originator === 'local') {\n this._direction = 'outgoing';\n this._local_identity = request.from;\n this._remote_identity = request.to;\n }\n this._ua.newOptions(this, {\n originator,\n message: this,\n request,\n });\n }\n _failed(originator, response, cause) {\n logger.debug('OPTIONS failed');\n this._close();\n logger.debug('emit \"failed\"');\n this.emit('failed', {\n originator,\n response: response || null,\n cause,\n });\n }\n _succeeded(originator, response) {\n logger.debug('OPTIONS succeeded');\n this._close();\n logger.debug('emit \"succeeded\"');\n this.emit('succeeded', {\n originator,\n response,\n });\n }\n};\n","\"use strict\";\nconst Logger = require('./Logger');\nconst Utils = require('./Utils');\nconst Grammar = require('./Grammar');\nconst logger = new Logger('Socket');\n/**\n * Interface documentation: https://jssip.net/documentation/$last_version/api/socket/\n *\n * interface Socket {\n * attribute String via_transport\n * attribute String url\n * attribute String sip_uri\n *\n * method connect();\n * method disconnect();\n * method send(data);\n *\n * attribute EventHandler onconnect\n * attribute EventHandler ondisconnect\n * attribute EventHandler ondata\n * }\n *\n */\nexports.isSocket = socket => {\n // Ignore if an array is given.\n if (Array.isArray(socket)) {\n return false;\n }\n if (typeof socket === 'undefined') {\n logger.warn('undefined JsSIP.Socket instance');\n return false;\n }\n // Check Properties.\n try {\n if (!Utils.isString(socket.url)) {\n logger.warn('missing or invalid JsSIP.Socket url property');\n throw new Error('Missing or invalid JsSIP.Socket url property');\n }\n if (!Utils.isString(socket.via_transport)) {\n logger.warn('missing or invalid JsSIP.Socket via_transport property');\n throw new Error('Missing or invalid JsSIP.Socket via_transport property');\n }\n if (Grammar.parse(socket.sip_uri, 'SIP_URI') === -1) {\n logger.warn('missing or invalid JsSIP.Socket sip_uri property');\n throw new Error('missing or invalid JsSIP.Socket sip_uri property');\n }\n }\n catch (error) {\n return false;\n }\n // Check Methods.\n try {\n ['connect', 'disconnect', 'send'].forEach(method => {\n if (!Utils.isFunction(socket[method])) {\n logger.warn(`missing or invalid JsSIP.Socket method: ${method}`);\n throw new Error(`Missing or invalid JsSIP.Socket method: ${method}`);\n }\n });\n }\n catch (error) {\n return false;\n }\n return true;\n};\n","\"use strict\";\nconst Logger = require('./Logger');\nconst Socket = require('./Socket');\nconst JsSIP_C = require('./Constants');\nconst logger = new Logger('Transport');\n/**\n * Constants\n */\nconst C = {\n // Transport status.\n STATUS_CONNECTED: 0,\n STATUS_CONNECTING: 1,\n STATUS_DISCONNECTED: 2,\n // Socket status.\n SOCKET_STATUS_READY: 0,\n SOCKET_STATUS_ERROR: 1,\n // Recovery options.\n recovery_options: {\n // minimum interval in seconds between recover attempts.\n min_interval: JsSIP_C.CONNECTION_RECOVERY_MIN_INTERVAL,\n // maximum interval in seconds between recover attempts.\n max_interval: JsSIP_C.CONNECTION_RECOVERY_MAX_INTERVAL,\n },\n};\n/*\n * Manages one or multiple JsSIP.Socket instances.\n * Is reponsible for transport recovery logic among all socket instances.\n *\n * @socket JsSIP::Socket instance\n */\nmodule.exports = class Transport {\n constructor(sockets, recovery_options = C.recovery_options) {\n logger.debug('new()');\n this.status = C.STATUS_DISCONNECTED;\n // Current socket.\n this.socket = null;\n // Socket collection.\n this.sockets = [];\n this.recovery_options = recovery_options;\n this.recover_attempts = 0;\n this.recovery_timer = null;\n this.close_requested = false;\n // It seems that TextDecoder is not available in some versions of React-Native.\n // See https://github.com/versatica/JsSIP/issues/695\n try {\n this.textDecoder = new TextDecoder('utf8');\n }\n catch (error) {\n logger.warn(`cannot use TextDecoder: ${error}`);\n }\n if (typeof sockets === 'undefined') {\n throw new TypeError(\"Invalid argument. undefined 'sockets' argument\");\n }\n if (!(sockets instanceof Array)) {\n sockets = [sockets];\n }\n sockets.forEach(function (socket) {\n if (!Socket.isSocket(socket.socket)) {\n throw new TypeError(\"Invalid argument. invalid 'JsSIP.Socket' instance\");\n }\n if (socket.weight && !Number(socket.weight)) {\n throw new TypeError(\"Invalid argument. 'weight' attribute is not a number\");\n }\n this.sockets.push({\n socket: socket.socket,\n weight: socket.weight || 0,\n status: C.SOCKET_STATUS_READY,\n });\n }, this);\n // Get the socket with higher weight.\n this._getSocket();\n }\n /**\n * Instance Methods\n */\n get via_transport() {\n return this.socket.via_transport;\n }\n get url() {\n return this.socket.url;\n }\n get sip_uri() {\n return this.socket.sip_uri;\n }\n connect() {\n logger.debug('connect()');\n if (this.isConnected()) {\n logger.debug('Transport is already connected');\n return;\n }\n else if (this.isConnecting()) {\n logger.debug('Transport is connecting');\n return;\n }\n this.close_requested = false;\n this.status = C.STATUS_CONNECTING;\n this.onconnecting({ socket: this.socket, attempts: this.recover_attempts });\n if (!this.close_requested) {\n // Bind socket event callbacks.\n this.socket.onconnect = this._onConnect.bind(this);\n this.socket.ondisconnect = this._onDisconnect.bind(this);\n this.socket.ondata = this._onData.bind(this);\n this.socket.connect();\n }\n return;\n }\n disconnect() {\n logger.debug('close()');\n this.close_requested = true;\n this.recover_attempts = 0;\n this.status = C.STATUS_DISCONNECTED;\n // Clear recovery_timer.\n if (this.recovery_timer !== null) {\n clearTimeout(this.recovery_timer);\n this.recovery_timer = null;\n }\n // Unbind socket event callbacks.\n this.socket.onconnect = () => { };\n this.socket.ondisconnect = () => { };\n this.socket.ondata = () => { };\n this.socket.disconnect();\n this.ondisconnect({\n socket: this.socket,\n error: false,\n });\n }\n send(data) {\n logger.debug('send()');\n if (!this.isConnected()) {\n logger.warn('unable to send message, transport is not connected');\n return false;\n }\n const message = data.toString();\n logger.debug(`sending message:\\n\\n${message}\\n`);\n return this.socket.send(message);\n }\n isConnected() {\n return this.status === C.STATUS_CONNECTED;\n }\n isConnecting() {\n return this.status === C.STATUS_CONNECTING;\n }\n /**\n * Private API.\n */\n _reconnect() {\n this.recover_attempts += 1;\n let k = Math.floor(Math.random() * Math.pow(2, this.recover_attempts) + 1);\n if (k < this.recovery_options.min_interval) {\n k = this.recovery_options.min_interval;\n }\n else if (k > this.recovery_options.max_interval) {\n k = this.recovery_options.max_interval;\n }\n logger.debug(`reconnection attempt: ${this.recover_attempts}. next connection attempt in ${k} seconds`);\n this.recovery_timer = setTimeout(() => {\n if (!this.close_requested &&\n !(this.isConnected() || this.isConnecting())) {\n // Get the next available socket with higher weight.\n this._getSocket();\n // Connect the socket.\n this.connect();\n }\n }, k * 1000);\n }\n /**\n * get the next available socket with higher weight\n */\n _getSocket() {\n let candidates = [];\n this.sockets.forEach(socket => {\n if (socket.status === C.SOCKET_STATUS_ERROR) {\n return; // continue the array iteration\n }\n else if (candidates.length === 0) {\n candidates.push(socket);\n }\n else if (socket.weight > candidates[0].weight) {\n candidates = [socket];\n }\n else if (socket.weight === candidates[0].weight) {\n candidates.push(socket);\n }\n });\n if (candidates.length === 0) {\n // All sockets have failed. reset sockets status.\n this.sockets.forEach(socket => {\n socket.status = C.SOCKET_STATUS_READY;\n });\n // Get next available socket.\n this._getSocket();\n return;\n }\n const idx = Math.floor(Math.random() * candidates.length);\n this.socket = candidates[idx].socket;\n }\n /**\n * Socket Event Handlers\n */\n _onConnect() {\n this.recover_attempts = 0;\n this.status = C.STATUS_CONNECTED;\n // Clear recovery_timer.\n if (this.recovery_timer !== null) {\n clearTimeout(this.recovery_timer);\n this.recovery_timer = null;\n }\n this.onconnect({ socket: this });\n }\n _onDisconnect(error, code, reason) {\n this.status = C.STATUS_DISCONNECTED;\n this.ondisconnect({\n socket: this.socket,\n error,\n code,\n reason,\n });\n if (this.close_requested) {\n return;\n }\n // Update socket status.\n else {\n this.sockets.forEach(function (socket) {\n if (this.socket === socket.socket) {\n socket.status = C.SOCKET_STATUS_ERROR;\n }\n }, this);\n }\n this._reconnect(error);\n }\n _onData(data) {\n // CRLF Keep Alive request from server, reply.\n if (data === '\\r\\n\\r\\n') {\n logger.debug('received message with double-CRLF Keep Alive request');\n try {\n // Reply with single CRLF.\n this.socket.send('\\r\\n');\n }\n catch (error) {\n logger.warn(`error sending Keep Alive response: ${error}`);\n }\n return;\n }\n // CRLF Keep Alive response from server, ignore it.\n if (data === '\\r\\n') {\n logger.debug('received message with CRLF Keep Alive response');\n return;\n }\n // Binary message.\n else if (typeof data !== 'string') {\n try {\n if (this.textDecoder) {\n data = this.textDecoder.decode(data);\n }\n else {\n data = String.fromCharCode.apply(null, new Uint8Array(data));\n }\n }\n catch (error) {\n logger.debug(`received binary message failed to be converted into string: ${error}`);\n return;\n }\n logger.debug(`received binary message:\\n\\n${data}\\n`);\n }\n // Text message.\n else {\n logger.debug(`received text message:\\n\\n${data}\\n`);\n }\n this.ondata({ transport: this, message: data });\n }\n};\n","\"use strict\";\nconst Logger = require('./Logger');\nconst Grammar = require('./Grammar');\nconst SIPMessage = require('./SIPMessage');\nconst logger = new Logger('Parser');\n/**\n * Parse SIP Message\n */\nexports.parseMessage = (data, ua) => {\n let message;\n let bodyStart;\n let headerEnd = data.indexOf('\\r\\n');\n if (headerEnd === -1) {\n logger.warn('parseMessage() | no CRLF found, not a SIP message');\n return;\n }\n // Parse first line. Check if it is a Request or a Reply.\n const firstLine = data.substring(0, headerEnd);\n let parsed = Grammar.parse(firstLine, 'Request_Response');\n if (parsed === -1) {\n logger.warn(`parseMessage() | error parsing first line of SIP message: \"${firstLine}\"`);\n return;\n }\n else if (!parsed.status_code) {\n message = new SIPMessage.IncomingRequest(ua);\n message.method = parsed.method;\n message.ruri = parsed.uri;\n }\n else {\n message = new SIPMessage.IncomingResponse();\n message.status_code = parsed.status_code;\n message.reason_phrase = parsed.reason_phrase;\n }\n message.data = data;\n let headerStart = headerEnd + 2;\n /* Loop over every line in data. Detect the end of each header and parse\n * it or simply add to the headers collection.\n */\n while (true) {\n headerEnd = getHeader(data, headerStart);\n // The SIP message has normally finished.\n if (headerEnd === -2) {\n bodyStart = headerStart + 2;\n break;\n }\n // Data.indexOf returned -1 due to a malformed message.\n else if (headerEnd === -1) {\n logger.warn('parseMessage() | malformed message');\n return;\n }\n parsed = parseHeader(message, data, headerStart, headerEnd);\n if (parsed !== true) {\n logger.warn('parseMessage() |', parsed.error);\n return;\n }\n headerStart = headerEnd + 2;\n }\n /* RFC3261 18.3.\n * If there are additional bytes in the transport packet\n * beyond the end of the body, they MUST be discarded.\n */\n if (message.hasHeader('content-length')) {\n const contentLength = message.getHeader('content-length');\n message.body = data.substr(bodyStart, contentLength);\n }\n else {\n message.body = data.substring(bodyStart);\n }\n return message;\n};\n/**\n * Extract and parse every header of a SIP message.\n */\nfunction getHeader(data, headerStart) {\n // 'start' position of the header.\n let start = headerStart;\n // 'end' position of the header.\n let end = 0;\n // 'partial end' position of the header.\n let partialEnd = 0;\n // End of message.\n if (data.substring(start, start + 2).match(/(^\\r\\n)/)) {\n return -2;\n }\n while (end === 0) {\n // Partial End of Header.\n partialEnd = data.indexOf('\\r\\n', start);\n // 'indexOf' returns -1 if the value to be found never occurs.\n if (partialEnd === -1) {\n return partialEnd;\n }\n if (!data.substring(partialEnd + 2, partialEnd + 4).match(/(^\\r\\n)/) &&\n data.charAt(partialEnd + 2).match(/(^\\s+)/)) {\n // Not the end of the message. Continue from the next position.\n start = partialEnd + 2;\n }\n else {\n end = partialEnd;\n }\n }\n return end;\n}\nfunction parseHeader(message, data, headerStart, headerEnd) {\n let parsed;\n const hcolonIndex = data.indexOf(':', headerStart);\n const headerName = data.substring(headerStart, hcolonIndex).trim();\n const headerValue = data.substring(hcolonIndex + 1, headerEnd).trim();\n // If header-field is well-known, parse it.\n switch (headerName.toLowerCase()) {\n case 'via':\n case 'v': {\n message.addHeader('via', headerValue);\n if (message.getHeaders('via').length === 1) {\n parsed = message.parseHeader('Via');\n if (parsed) {\n message.via = parsed;\n message.via_branch = parsed.branch;\n }\n }\n else {\n parsed = 0;\n }\n break;\n }\n case 'from':\n case 'f': {\n message.setHeader('from', headerValue);\n parsed = message.parseHeader('from');\n if (parsed) {\n message.from = parsed;\n message.from_tag = parsed.getParam('tag');\n }\n break;\n }\n case 'to':\n case 't': {\n message.setHeader('to', headerValue);\n parsed = message.parseHeader('to');\n if (parsed) {\n message.to = parsed;\n message.to_tag = parsed.getParam('tag');\n }\n break;\n }\n case 'record-route': {\n parsed = Grammar.parse(headerValue, 'Record_Route');\n if (parsed === -1) {\n parsed = undefined;\n }\n else {\n for (const header of parsed) {\n message.addHeader('record-route', headerValue.substring(header.possition, header.offset));\n message.headers['Record-Route'][message.getHeaders('record-route').length - 1].parsed = header.parsed;\n }\n }\n break;\n }\n case 'call-id':\n case 'i': {\n message.setHeader('call-id', headerValue);\n parsed = message.parseHeader('call-id');\n if (parsed) {\n message.call_id = headerValue;\n }\n break;\n }\n case 'contact':\n case 'm': {\n parsed = Grammar.parse(headerValue, 'Contact');\n if (parsed === -1) {\n parsed = undefined;\n }\n else {\n for (const header of parsed) {\n message.addHeader('contact', headerValue.substring(header.possition, header.offset));\n message.headers.Contact[message.getHeaders('contact').length - 1].parsed = header.parsed;\n }\n }\n break;\n }\n case 'content-length':\n case 'l': {\n message.setHeader('content-length', headerValue);\n parsed = message.parseHeader('content-length');\n break;\n }\n case 'content-type':\n case 'c': {\n message.setHeader('content-type', headerValue);\n parsed = message.parseHeader('content-type');\n break;\n }\n case 'cseq': {\n message.setHeader('cseq', headerValue);\n parsed = message.parseHeader('cseq');\n if (parsed) {\n message.cseq = parsed.value;\n }\n if (message instanceof SIPMessage.IncomingResponse) {\n message.method = parsed.method;\n }\n break;\n }\n case 'max-forwards': {\n message.setHeader('max-forwards', headerValue);\n parsed = message.parseHeader('max-forwards');\n break;\n }\n case 'www-authenticate': {\n message.setHeader('www-authenticate', headerValue);\n parsed = message.parseHeader('www-authenticate');\n break;\n }\n case 'proxy-authenticate': {\n message.setHeader('proxy-authenticate', headerValue);\n parsed = message.parseHeader('proxy-authenticate');\n break;\n }\n case 'session-expires':\n case 'x': {\n message.setHeader('session-expires', headerValue);\n parsed = message.parseHeader('session-expires');\n if (parsed) {\n message.session_expires = parsed.expires;\n message.session_expires_refresher = parsed.refresher;\n }\n break;\n }\n case 'refer-to':\n case 'r': {\n message.setHeader('refer-to', headerValue);\n parsed = message.parseHeader('refer-to');\n if (parsed) {\n message.refer_to = parsed;\n }\n break;\n }\n case 'replaces': {\n message.setHeader('replaces', headerValue);\n parsed = message.parseHeader('replaces');\n if (parsed) {\n message.replaces = parsed;\n }\n break;\n }\n case 'event':\n case 'o': {\n message.setHeader('event', headerValue);\n parsed = message.parseHeader('event');\n if (parsed) {\n message.event = parsed;\n }\n break;\n }\n default: {\n // Do not parse this header.\n message.addHeader(headerName, headerValue);\n parsed = 0;\n }\n }\n if (parsed === undefined) {\n return {\n error: `error parsing header \"${headerName}\"`,\n };\n }\n else {\n return true;\n }\n}\n","\"use strict\";\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst SIPMessage = require('./SIPMessage');\nconst Utils = require('./Utils');\nconst logger = new Logger('sanityCheck');\n// Checks for requests and responses.\nconst all = [minimumHeaders];\n// Checks for requests.\nconst requests = [\n rfc3261_8_2_2_1,\n rfc3261_16_3_4,\n rfc3261_18_3_request,\n rfc3261_8_2_2_2,\n];\n// Checks for responses.\nconst responses = [rfc3261_8_1_3_3, rfc3261_18_3_response];\n// local variables.\nlet message;\nlet ua;\nlet transport;\nmodule.exports = (m, u, t) => {\n message = m;\n ua = u;\n transport = t;\n for (const check of all) {\n if (check() === false) {\n return false;\n }\n }\n if (message instanceof SIPMessage.IncomingRequest) {\n for (const check of requests) {\n if (check() === false) {\n return false;\n }\n }\n }\n else if (message instanceof SIPMessage.IncomingResponse) {\n for (const check of responses) {\n if (check() === false) {\n return false;\n }\n }\n }\n // Everything is OK.\n return true;\n};\n/*\n * Sanity Check for incoming Messages\n *\n * Requests:\n * - _rfc3261_8_2_2_1_ Receive a Request with a non supported URI scheme\n * - _rfc3261_16_3_4_ Receive a Request already sent by us\n * Does not look at via sent-by but at jssip_id, which is inserted as\n * a prefix in all initial requests generated by the ua\n * - _rfc3261_18_3_request_ Body Content-Length\n * - _rfc3261_8_2_2_2_ Merged Requests\n *\n * Responses:\n * - _rfc3261_8_1_3_3_ Multiple Via headers\n * - _rfc3261_18_3_response_ Body Content-Length\n *\n * All:\n * - Minimum headers in a SIP message\n */\n// Sanity Check functions for requests.\nfunction rfc3261_8_2_2_1() {\n if (message.s('to').uri.scheme !== 'sip') {\n reply(416);\n return false;\n }\n}\nfunction rfc3261_16_3_4() {\n if (!message.to_tag) {\n if (message.call_id.substr(0, 5) === ua.configuration.jssip_id) {\n reply(482);\n return false;\n }\n }\n}\nfunction rfc3261_18_3_request() {\n const len = Utils.str_utf8_length(message.body);\n const contentLength = message.getHeader('content-length');\n if (len < contentLength) {\n reply(400);\n return false;\n }\n}\nfunction rfc3261_8_2_2_2() {\n const fromTag = message.from_tag;\n const call_id = message.call_id;\n const cseq = message.cseq;\n let tr;\n // Accept any in-dialog request.\n if (message.to_tag) {\n return;\n }\n // INVITE request.\n if (message.method === JsSIP_C.INVITE) {\n // If the branch matches the key of any IST then assume it is a retransmission\n // and ignore the INVITE.\n // TODO: we should reply the last response.\n if (ua._transactions.ist[message.via_branch]) {\n return false;\n }\n // Otherwise check whether it is a merged request.\n else {\n for (const transaction in ua._transactions.ist) {\n if (Object.prototype.hasOwnProperty.call(ua._transactions.ist, transaction)) {\n tr = ua._transactions.ist[transaction];\n if (tr.request.from_tag === fromTag &&\n tr.request.call_id === call_id &&\n tr.request.cseq === cseq) {\n reply(482);\n return false;\n }\n }\n }\n }\n }\n // Non INVITE request.\n // If the branch matches the key of any NIST then assume it is a retransmission\n // and ignore the request.\n // TODO: we should reply the last response.\n else if (ua._transactions.nist[message.via_branch]) {\n return false;\n }\n // Otherwise check whether it is a merged request.\n else {\n for (const transaction in ua._transactions.nist) {\n if (Object.prototype.hasOwnProperty.call(ua._transactions.nist, transaction)) {\n tr = ua._transactions.nist[transaction];\n if (tr.request.from_tag === fromTag &&\n tr.request.call_id === call_id &&\n tr.request.cseq === cseq) {\n reply(482);\n return false;\n }\n }\n }\n }\n}\n// Sanity Check functions for responses.\nfunction rfc3261_8_1_3_3() {\n if (message.getHeaders('via').length > 1) {\n logger.debug('more than one Via header field present in the response, dropping the response');\n return false;\n }\n}\nfunction rfc3261_18_3_response() {\n const len = Utils.str_utf8_length(message.body), contentLength = message.getHeader('content-length');\n if (len < contentLength) {\n logger.debug('message body length is lower than the value in Content-Length header field, dropping the response');\n return false;\n }\n}\n// Sanity Check functions for requests and responses.\nfunction minimumHeaders() {\n const mandatoryHeaders = ['from', 'to', 'call_id', 'cseq', 'via'];\n for (const header of mandatoryHeaders) {\n if (!message.hasHeader(header)) {\n logger.debug(`missing mandatory header field : ${header}, dropping the response`);\n return false;\n }\n }\n}\n// Reply.\nfunction reply(status_code) {\n const vias = message.getHeaders('via');\n let to;\n let response = `SIP/2.0 ${status_code} ${JsSIP_C.REASON_PHRASE[status_code]}\\r\\n`;\n for (const via of vias) {\n response += `Via: ${via}\\r\\n`;\n }\n to = message.getHeader('To');\n if (!message.to_tag) {\n to += `;tag=${Utils.newTag()}`;\n }\n response += `To: ${to}\\r\\n`;\n response += `From: ${message.getHeader('From')}\\r\\n`;\n response += `Call-ID: ${message.call_id}\\r\\n`;\n response += `CSeq: ${message.cseq} ${message.method}\\r\\n`;\n response += '\\r\\n';\n transport.send(response);\n}\n","\"use strict\";\nconst Utils = require('./Utils');\nconst JsSIP_C = require('./Constants');\nconst Grammar = require('./Grammar');\nconst URI = require('./URI');\nconst Socket = require('./Socket');\nconst Exceptions = require('./Exceptions');\n// Default settings.\nexports.settings = {\n // SIP authentication.\n authorization_user: null,\n password: null,\n realm: null,\n ha1: null,\n authorization_jwt: null,\n // SIP account.\n display_name: null,\n uri: null,\n contact_uri: null,\n // SIP instance id (GRUU).\n instance_id: null,\n // Preloaded SIP Route header field.\n use_preloaded_route: false,\n // Session parameters.\n session_timers: true,\n session_timers_refresh_method: JsSIP_C.UPDATE,\n session_timers_force_refresher: false,\n no_answer_timeout: 60,\n // Registration parameters.\n register: true,\n register_expires: 600,\n register_from_tag_trail: '',\n registrar_server: null,\n // Connection options.\n sockets: null,\n connection_recovery_max_interval: JsSIP_C.CONNECTION_RECOVERY_MAX_INTERVAL,\n connection_recovery_min_interval: JsSIP_C.CONNECTION_RECOVERY_MIN_INTERVAL,\n // Global extra headers, to be added to every request and response\n extra_headers: null,\n /*\n * Host address.\n * Value to be set in Via sent_by and host part of Contact FQDN.\n */\n via_host: `${Utils.createRandomToken(12)}.invalid`,\n};\n// Configuration checks.\nconst checks = {\n mandatory: {\n sockets(sockets) {\n /* Allow defining sockets parameter as:\n * Socket: socket\n * Array of Socket: [socket1, socket2]\n * Array of Objects: [{socket: socket1, weight:1}, {socket: Socket2, weight:0}]\n * Array of Objects and Socket: [{socket: socket1}, socket2]\n */\n const _sockets = [];\n if (Socket.isSocket(sockets)) {\n _sockets.push({ socket: sockets });\n }\n else if (Array.isArray(sockets) && sockets.length) {\n for (const socket of sockets) {\n if (Object.prototype.hasOwnProperty.call(socket, 'socket') &&\n Socket.isSocket(socket.socket)) {\n _sockets.push(socket);\n }\n else if (Socket.isSocket(socket)) {\n _sockets.push({ socket: socket });\n }\n }\n }\n else {\n return;\n }\n return _sockets;\n },\n uri(uri) {\n if (!/^sip:/i.test(uri)) {\n uri = `${JsSIP_C.SIP}:${uri}`;\n }\n const parsed = URI.parse(uri);\n if (!parsed) {\n return;\n }\n else if (!parsed.user) {\n return;\n }\n else {\n return parsed;\n }\n },\n },\n optional: {\n authorization_user(authorization_user) {\n if (Grammar.parse(`\"${authorization_user}\"`, 'quoted_string') === -1) {\n return;\n }\n else {\n return authorization_user;\n }\n },\n authorization_jwt(authorization_jwt) {\n if (typeof authorization_jwt === 'string') {\n return authorization_jwt;\n }\n },\n user_agent(user_agent) {\n if (typeof user_agent === 'string') {\n return user_agent;\n }\n },\n connection_recovery_max_interval(connection_recovery_max_interval) {\n if (Utils.isDecimal(connection_recovery_max_interval)) {\n const value = Number(connection_recovery_max_interval);\n if (value > 0) {\n return value;\n }\n }\n },\n connection_recovery_min_interval(connection_recovery_min_interval) {\n if (Utils.isDecimal(connection_recovery_min_interval)) {\n const value = Number(connection_recovery_min_interval);\n if (value > 0) {\n return value;\n }\n }\n },\n contact_uri(contact_uri) {\n if (typeof contact_uri === 'string') {\n const uri = Grammar.parse(contact_uri, 'SIP_URI');\n if (uri !== -1) {\n return uri;\n }\n }\n },\n display_name(display_name) {\n return display_name;\n },\n instance_id(instance_id) {\n if (/^uuid:/i.test(instance_id)) {\n instance_id = instance_id.substr(5);\n }\n if (Grammar.parse(instance_id, 'uuid') === -1) {\n return;\n }\n else {\n return instance_id;\n }\n },\n no_answer_timeout(no_answer_timeout) {\n if (Utils.isDecimal(no_answer_timeout)) {\n const value = Number(no_answer_timeout);\n if (value > 0) {\n return value;\n }\n }\n },\n session_timers(session_timers) {\n if (typeof session_timers === 'boolean') {\n return session_timers;\n }\n },\n session_timers_refresh_method(method) {\n if (typeof method === 'string') {\n method = method.toUpperCase();\n if (method === JsSIP_C.INVITE || method === JsSIP_C.UPDATE) {\n return method;\n }\n }\n },\n session_timers_force_refresher(session_timers_force_refresher) {\n if (typeof session_timers_force_refresher === 'boolean') {\n return session_timers_force_refresher;\n }\n },\n password(password) {\n return String(password);\n },\n realm(realm) {\n return String(realm);\n },\n ha1(ha1) {\n return String(ha1);\n },\n register(register) {\n if (typeof register === 'boolean') {\n return register;\n }\n },\n register_expires(register_expires) {\n if (Utils.isDecimal(register_expires)) {\n const value = Number(register_expires);\n if (value >= 0) {\n return value;\n }\n }\n },\n register_from_tag_trail(register_from_tag_trail) {\n if (typeof register_from_tag_trail === 'function') {\n return register_from_tag_trail;\n }\n return String(register_from_tag_trail);\n },\n registrar_server(registrar_server) {\n if (!/^sip:/i.test(registrar_server)) {\n registrar_server = `${JsSIP_C.SIP}:${registrar_server}`;\n }\n const parsed = URI.parse(registrar_server);\n if (!parsed) {\n return;\n }\n else if (parsed.user) {\n return;\n }\n else {\n return parsed;\n }\n },\n use_preloaded_route(use_preloaded_route) {\n if (typeof use_preloaded_route === 'boolean') {\n return use_preloaded_route;\n }\n },\n extra_headers(extra_headers) {\n const _extraHeaders = [];\n if (Array.isArray(extra_headers) && extra_headers.length) {\n for (const header of extra_headers) {\n if (typeof header === 'string') {\n _extraHeaders.push(header);\n }\n }\n }\n else {\n return;\n }\n return _extraHeaders;\n },\n },\n};\nexports.load = (dst, src) => {\n // Check Mandatory parameters.\n for (const parameter in checks.mandatory) {\n if (!src.hasOwnProperty(parameter)) {\n throw new Exceptions.ConfigurationError(parameter);\n }\n else {\n const value = src[parameter];\n const checked_value = checks.mandatory[parameter](value);\n if (checked_value !== undefined) {\n dst[parameter] = checked_value;\n }\n else {\n throw new Exceptions.ConfigurationError(parameter, value);\n }\n }\n }\n // Check Optional parameters.\n for (const parameter in checks.optional) {\n if (src.hasOwnProperty(parameter)) {\n const value = src[parameter];\n /* If the parameter value is null, empty string, undefined, empty array\n * or it's a number with NaN value, then apply its default value.\n */\n if (Utils.isEmpty(value)) {\n continue;\n }\n const checked_value = checks.optional[parameter](value);\n if (checked_value !== undefined) {\n dst[parameter] = checked_value;\n }\n else {\n throw new Exceptions.ConfigurationError(parameter, value);\n }\n }\n }\n};\n","\"use strict\";\n/* eslint-disable no-invalid-this */\nconst EventEmitter = require('events').EventEmitter;\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst Registrator = require('./Registrator');\nconst RTCSession = require('./RTCSession');\nconst Subscriber = require('./Subscriber');\nconst Notifier = require('./Notifier');\nconst Message = require('./Message');\nconst Options = require('./Options');\nconst Transactions = require('./Transactions');\nconst Transport = require('./Transport');\nconst Utils = require('./Utils');\nconst Exceptions = require('./Exceptions');\nconst URI = require('./URI');\nconst Parser = require('./Parser');\nconst SIPMessage = require('./SIPMessage');\nconst sanityCheck = require('./sanityCheck');\nconst config = require('./Config');\nconst logger = new Logger('UA');\nconst C = {\n // UA status codes.\n STATUS_INIT: 0,\n STATUS_READY: 1,\n STATUS_USER_CLOSED: 2,\n STATUS_NOT_READY: 3,\n // UA error codes.\n CONFIGURATION_ERROR: 1,\n NETWORK_ERROR: 2,\n};\n/**\n * The User-Agent class.\n * @class JsSIP.UA\n * @param {Object} configuration Configuration parameters.\n * @throws {JsSIP.Exceptions.ConfigurationError} If a configuration parameter is invalid.\n * @throws {TypeError} If no configuration is given.\n */\nmodule.exports = class UA extends EventEmitter {\n // Expose C object.\n static get C() {\n return C;\n }\n constructor(configuration) {\n // Check configuration argument.\n if (!configuration) {\n throw new TypeError('Not enough arguments');\n }\n // Hide sensitive information.\n const sensitiveKeys = ['password', 'ha1', 'authorization_jwt'];\n logger.debug('new() [configuration:%o]', Object.entries(configuration).filter(([key]) => !sensitiveKeys.includes(key)));\n super();\n this._cache = {\n credentials: {},\n };\n this._configuration = Object.assign({}, config.settings);\n this._dynConfiguration = {};\n this._dialogs = {};\n // User actions outside any session/dialog (MESSAGE/OPTIONS).\n this._applicants = {};\n this._sessions = {};\n this._transport = null;\n this._contact = null;\n this._status = C.STATUS_INIT;\n this._error = null;\n this._transactions = {\n nist: {},\n nict: {},\n ist: {},\n ict: {},\n };\n // Custom UA empty object for high level use.\n this._data = {};\n this._closeTimer = null;\n // Load configuration.\n try {\n this._loadConfig(configuration);\n }\n catch (error) {\n this._status = C.STATUS_NOT_READY;\n this._error = C.CONFIGURATION_ERROR;\n throw error;\n }\n // Initialize registrator.\n this._registrator = new Registrator(this);\n }\n get C() {\n return C;\n }\n get status() {\n return this._status;\n }\n get contact() {\n return this._contact;\n }\n get configuration() {\n return this._configuration;\n }\n get transport() {\n return this._transport;\n }\n // =================\n // High Level API\n // =================\n /**\n * Connect to the server if status = STATUS_INIT.\n * Resume UA after being closed.\n */\n start() {\n logger.debug('start()');\n if (this._status === C.STATUS_INIT) {\n this._transport.connect();\n }\n else if (this._status === C.STATUS_USER_CLOSED) {\n logger.debug('restarting UA');\n // Disconnect.\n if (this._closeTimer !== null) {\n clearTimeout(this._closeTimer);\n this._closeTimer = null;\n this._transport.disconnect();\n }\n // Reconnect.\n this._status = C.STATUS_INIT;\n this._transport.connect();\n }\n else if (this._status === C.STATUS_READY) {\n logger.debug('UA is in READY status, not restarted');\n }\n else {\n logger.debug('ERROR: connection is down, Auto-Recovery system is trying to reconnect');\n }\n // Set dynamic configuration.\n this._dynConfiguration.register = this._configuration.register;\n }\n /**\n * Register.\n */\n register() {\n logger.debug('register()');\n this._dynConfiguration.register = true;\n this._registrator.register();\n }\n /**\n * Unregister.\n */\n unregister(options) {\n logger.debug('unregister()');\n this._dynConfiguration.register = false;\n this._registrator.unregister(options);\n }\n /**\n * Get the Registrator instance.\n */\n registrator() {\n return this._registrator;\n }\n /**\n * Registration state.\n */\n isRegistered() {\n return this._registrator.registered;\n }\n /**\n * Connection state.\n */\n isConnected() {\n return this._transport.isConnected();\n }\n /**\n * Make an outgoing call.\n *\n * -param {String} target\n * -param {Object} [options]\n *\n * -throws {TypeError}\n *\n */\n call(target, options) {\n logger.debug('call()');\n const session = new RTCSession(this);\n session.connect(target, options);\n return session;\n }\n /**\n * Send a message.\n *\n * -param {String} target\n * -param {String} body\n * -param {Object} [options]\n *\n * -throws {TypeError}\n *\n */\n sendMessage(target, body, options) {\n logger.debug('sendMessage()');\n const message = new Message(this);\n message.send(target, body, options);\n return message;\n }\n /**\n * Create subscriber instance\n */\n subscribe(target, eventName, accept, options) {\n logger.debug('subscribe()');\n return new Subscriber(this, target, eventName, accept, options);\n }\n /**\n * Create notifier instance\n */\n notify(subscribe, contentType, options) {\n logger.debug('notify()');\n return new Notifier(this, subscribe, contentType, options);\n }\n /**\n * Send a SIP OPTIONS.\n *\n * -param {String} target\n * -param {String} [body]\n * -param {Object} [options]\n *\n * -throws {TypeError}\n *\n */\n sendOptions(target, body, options) {\n logger.debug('sendOptions()');\n const message = new Options(this);\n message.send(target, body, options);\n return message;\n }\n /**\n * Terminate ongoing sessions.\n */\n terminateSessions(options) {\n logger.debug('terminateSessions()');\n for (const idx in this._sessions) {\n if (!this._sessions[idx].isEnded()) {\n this._sessions[idx].terminate(options);\n }\n }\n }\n /**\n * Gracefully close.\n *\n */\n stop() {\n logger.debug('stop()');\n // Remove dynamic settings.\n this._dynConfiguration = {};\n if (this._status === C.STATUS_USER_CLOSED) {\n logger.debug('UA already closed');\n return;\n }\n // Close registrator.\n this._registrator.close();\n // If there are session wait a bit so CANCEL/BYE can be sent and their responses received.\n const num_sessions = Object.keys(this._sessions).length;\n // Run _terminate_ on every Session.\n for (const session in this._sessions) {\n if (Object.prototype.hasOwnProperty.call(this._sessions, session)) {\n logger.debug(`closing session ${session}`);\n try {\n this._sessions[session].terminate();\n }\n catch (error) { }\n }\n }\n // Run _close_ on every applicant.\n for (const applicant in this._applicants) {\n if (Object.prototype.hasOwnProperty.call(this._applicants, applicant)) {\n try {\n this._applicants[applicant].close();\n }\n catch (error) { }\n }\n }\n this._status = C.STATUS_USER_CLOSED;\n const num_transactions = Object.keys(this._transactions.nict).length +\n Object.keys(this._transactions.nist).length +\n Object.keys(this._transactions.ict).length +\n Object.keys(this._transactions.ist).length;\n if (num_transactions === 0 && num_sessions === 0) {\n this._transport.disconnect();\n }\n else {\n this._closeTimer = setTimeout(() => {\n this._closeTimer = null;\n this._transport.disconnect();\n }, 2000);\n }\n }\n /**\n * Normalice a string into a valid SIP request URI\n * -param {String} target\n * -returns {JsSIP.URI|undefined}\n */\n normalizeTarget(target) {\n return Utils.normalizeTarget(target, this._configuration.hostport_params);\n }\n /**\n * Allow retrieving configuration and autogenerated fields in runtime.\n */\n get(parameter) {\n switch (parameter) {\n case 'authorization_user': {\n return this._configuration.authorization_user;\n }\n case 'realm': {\n return this._configuration.realm;\n }\n case 'ha1': {\n return this._configuration.ha1;\n }\n case 'authorization_jwt': {\n return this._configuration.authorization_jwt;\n }\n default: {\n logger.warn('get() | cannot get \"%s\" parameter in runtime', parameter);\n return undefined;\n }\n }\n }\n /**\n * Allow configuration changes in runtime.\n * Returns true if the parameter could be set.\n */\n set(parameter, value) {\n switch (parameter) {\n case 'authorization_user': {\n this._configuration.authorization_user = String(value);\n break;\n }\n case 'password': {\n this._configuration.password = String(value);\n break;\n }\n case 'realm': {\n this._configuration.realm = String(value);\n break;\n }\n case 'ha1': {\n this._configuration.ha1 = String(value);\n // Delete the plain SIP password.\n this._configuration.password = null;\n break;\n }\n case 'authorization_jwt': {\n this._configuration.authorization_jwt = String(value);\n break;\n }\n case 'display_name': {\n this._configuration.display_name = value;\n break;\n }\n case 'extra_headers': {\n this._configuration.extra_headers = value;\n break;\n }\n default: {\n logger.warn('set() | cannot set \"%s\" parameter in runtime', parameter);\n return false;\n }\n }\n return true;\n }\n // ==========================\n // Event Handlers.\n // ==========================\n /**\n * new Transaction\n */\n newTransaction(transaction) {\n this._transactions[transaction.type][transaction.id] = transaction;\n this.emit('newTransaction', {\n transaction,\n });\n }\n /**\n * Transaction destroyed.\n */\n destroyTransaction(transaction) {\n delete this._transactions[transaction.type][transaction.id];\n this.emit('transactionDestroyed', {\n transaction,\n });\n }\n /**\n * new Dialog\n */\n newDialog(dialog) {\n this._dialogs[dialog.id] = dialog;\n }\n /**\n * Dialog destroyed.\n */\n destroyDialog(dialog) {\n delete this._dialogs[dialog.id];\n }\n /**\n * new Message\n */\n newMessage(message, data) {\n this._applicants[message] = message;\n this.emit('newMessage', data);\n }\n /**\n * new Options\n */\n newOptions(message, data) {\n this._applicants[message] = message;\n this.emit('newOptions', data);\n }\n /**\n * Message destroyed.\n */\n destroyMessage(message) {\n delete this._applicants[message];\n }\n /**\n * new RTCSession\n */\n newRTCSession(session, data) {\n this._sessions[session.id] = session;\n this.emit('newRTCSession', data);\n }\n /**\n * RTCSession destroyed.\n */\n destroyRTCSession(session) {\n delete this._sessions[session.id];\n }\n /**\n * Registered\n */\n registered(data) {\n this.emit('registered', data);\n }\n /**\n * Unregistered\n */\n unregistered(data) {\n this.emit('unregistered', data);\n }\n /**\n * Registration Failed\n */\n registrationFailed(data) {\n this.emit('registrationFailed', data);\n }\n // =========================\n // ReceiveRequest.\n // =========================\n /**\n * Request reception\n */\n receiveRequest(request) {\n const method = request.method;\n // Check that request URI points to us.\n if (request.ruri.user !== this._configuration.uri.user &&\n request.ruri.user !== this._contact.uri.user) {\n logger.debug('Request-URI does not point to us');\n if (request.method !== JsSIP_C.ACK) {\n request.reply_sl(404);\n }\n return;\n }\n // Check request URI scheme.\n if (request.ruri.scheme === JsSIP_C.SIPS) {\n request.reply_sl(416);\n return;\n }\n // Check transaction.\n if (Transactions.checkTransaction(this, request)) {\n return;\n }\n // Create the server transaction.\n if (method === JsSIP_C.INVITE) {\n /* eslint-disable no-new */\n new Transactions.InviteServerTransaction(this, this._transport, request);\n /* eslint-enable no-new */\n }\n else if (method !== JsSIP_C.ACK && method !== JsSIP_C.CANCEL) {\n /* eslint-disable no-new */\n new Transactions.NonInviteServerTransaction(this, this._transport, request);\n /* eslint-enable no-new */\n }\n /* RFC3261 12.2.2\n * Requests that do not change in any way the state of a dialog may be\n * received within a dialog (for example, an OPTIONS request).\n * They are processed as if they had been received outside the dialog.\n */\n if (method === JsSIP_C.OPTIONS) {\n if (this.listeners('newOptions').length === 0) {\n request.reply(200);\n return;\n }\n const message = new Options(this);\n message.init_incoming(request);\n }\n else if (method === JsSIP_C.MESSAGE) {\n if (this.listeners('newMessage').length === 0) {\n request.reply(405);\n return;\n }\n const message = new Message(this);\n message.init_incoming(request);\n }\n else if (method === JsSIP_C.SUBSCRIBE) {\n if (this.listeners('newSubscribe').length === 0) {\n request.reply(405);\n return;\n }\n }\n else if (method === JsSIP_C.INVITE) {\n // Initial INVITE.\n if (!request.to_tag && this.listeners('newRTCSession').length === 0) {\n request.reply(405);\n return;\n }\n }\n let dialog;\n let session;\n // Initial Request.\n if (!request.to_tag) {\n switch (method) {\n case JsSIP_C.INVITE: {\n // eslint-disable-next-line no-undef\n if (window.RTCPeerConnection) {\n // TODO\n if (request.hasHeader('replaces')) {\n const replaces = request.replaces;\n dialog = this._findDialog(replaces.call_id, replaces.from_tag, replaces.to_tag);\n if (dialog) {\n session = dialog.owner;\n if (!session.isEnded()) {\n session.receiveRequest(request);\n }\n else {\n request.reply(603);\n }\n }\n else {\n request.reply(481);\n }\n }\n else {\n session = new RTCSession(this);\n session.init_incoming(request);\n }\n }\n else {\n logger.warn('INVITE received but WebRTC is not supported');\n request.reply(488);\n }\n break;\n }\n case JsSIP_C.BYE: {\n // Out of dialog BYE received.\n request.reply(481);\n break;\n }\n case JsSIP_C.CANCEL: {\n session = this._findSession(request);\n if (session) {\n session.receiveRequest(request);\n }\n else {\n logger.debug('received CANCEL request for a non existent session');\n }\n break;\n }\n case JsSIP_C.ACK: {\n /* Absorb it.\n * ACK request without a corresponding Invite Transaction\n * and without To tag.\n */\n break;\n }\n case JsSIP_C.NOTIFY: {\n // Receive new sip event.\n this.emit('sipEvent', {\n event: request.event,\n request,\n });\n request.reply(200);\n break;\n }\n case JsSIP_C.SUBSCRIBE: {\n Notifier.init_incoming(request, () => {\n this.emit('newSubscribe', {\n event: request.event,\n request,\n });\n });\n break;\n }\n default: {\n request.reply(405);\n break;\n }\n }\n }\n // In-dialog request.\n else {\n dialog = this._findDialog(request.call_id, request.from_tag, request.to_tag);\n if (dialog) {\n dialog.receiveRequest(request);\n }\n else if (method === JsSIP_C.NOTIFY) {\n session = this._findSession(request);\n if (session) {\n session.receiveRequest(request);\n }\n else {\n logger.debug('received NOTIFY request for a non existent subscription');\n request.reply(481, 'Subscription does not exist');\n }\n }\n else if (method !== JsSIP_C.ACK) {\n /* RFC3261 12.2.2\n * Request with to tag, but no matching dialog found.\n * Exception: ACK for an Invite request for which a dialog has not\n * been created.\n */\n request.reply(481);\n }\n }\n }\n // =================\n // Utils.\n // =================\n /**\n * Get the session to which the request belongs to, if any.\n */\n _findSession({ call_id, from_tag, to_tag }) {\n const sessionIDa = call_id + from_tag;\n const sessionA = this._sessions[sessionIDa];\n const sessionIDb = call_id + to_tag;\n const sessionB = this._sessions[sessionIDb];\n if (sessionA) {\n return sessionA;\n }\n else if (sessionB) {\n return sessionB;\n }\n else {\n return null;\n }\n }\n /**\n * Get the dialog to which the request belongs to, if any.\n */\n _findDialog(call_id, from_tag, to_tag) {\n let id = call_id + from_tag + to_tag;\n let dialog = this._dialogs[id];\n if (dialog) {\n return dialog;\n }\n else {\n id = call_id + to_tag + from_tag;\n dialog = this._dialogs[id];\n if (dialog) {\n return dialog;\n }\n else {\n return null;\n }\n }\n }\n _loadConfig(configuration) {\n // Check and load the given configuration.\n // This can throw.\n config.load(this._configuration, configuration);\n // Post Configuration Process.\n // Allow passing 0 number as display_name.\n if (this._configuration.display_name === 0) {\n this._configuration.display_name = '0';\n }\n // Instance-id for GRUU.\n if (!this._configuration.instance_id) {\n this._configuration.instance_id = Utils.newUUID();\n }\n // Jssip_id instance parameter. Static random tag of length 5.\n this._configuration.jssip_id = Utils.createRandomToken(5);\n // String containing this._configuration.uri without scheme and user.\n const hostport_params = this._configuration.uri.clone();\n hostport_params.user = null;\n this._configuration.hostport_params = hostport_params\n .toString()\n .replace(/^sip:/i, '');\n // Transport.\n try {\n this._transport = new Transport(this._configuration.sockets, {\n // Recovery options.\n max_interval: this._configuration.connection_recovery_max_interval,\n min_interval: this._configuration.connection_recovery_min_interval,\n });\n // Transport event callbacks.\n this._transport.onconnecting = onTransportConnecting.bind(this);\n this._transport.onconnect = onTransportConnect.bind(this);\n this._transport.ondisconnect = onTransportDisconnect.bind(this);\n this._transport.ondata = onTransportData.bind(this);\n }\n catch (error) {\n logger.warn(error);\n throw new Exceptions.ConfigurationError('sockets', this._configuration.sockets);\n }\n // Remove sockets instance from configuration object.\n delete this._configuration.sockets;\n // Check whether authorization_user is explicitly defined.\n // Take 'this._configuration.uri.user' value if not.\n if (!this._configuration.authorization_user) {\n this._configuration.authorization_user = this._configuration.uri.user;\n }\n // If no 'registrar_server' is set use the 'uri' value without user portion and\n // without URI params/headers.\n if (!this._configuration.registrar_server) {\n const registrar_server = this._configuration.uri.clone();\n registrar_server.user = null;\n registrar_server.clearParams();\n registrar_server.clearHeaders();\n this._configuration.registrar_server = registrar_server;\n }\n // User no_answer_timeout.\n this._configuration.no_answer_timeout *= 1000;\n // Via Host.\n if (this._configuration.contact_uri) {\n this._configuration.via_host = this._configuration.contact_uri.host;\n }\n // Contact URI.\n else {\n this._configuration.contact_uri = new URI('sip', Utils.createRandomToken(8), this._configuration.via_host, null, { transport: 'ws' });\n }\n this._contact = {\n pub_gruu: null,\n temp_gruu: null,\n uri: this._configuration.contact_uri,\n toString(options = {}) {\n const anonymous = options.anonymous || null;\n const outbound = options.outbound || null;\n let contact = '<';\n if (anonymous) {\n contact +=\n this.temp_gruu || 'sip:anonymous@anonymous.invalid;transport=ws';\n }\n else {\n contact += this.pub_gruu || this.uri.toString();\n }\n if (outbound && (anonymous ? !this.temp_gruu : !this.pub_gruu)) {\n contact += ';ob';\n }\n contact += '>';\n return contact;\n },\n };\n // Seal the configuration.\n const writable_parameters = [\n 'authorization_user',\n 'password',\n 'realm',\n 'ha1',\n 'authorization_jwt',\n 'display_name',\n 'register',\n 'extra_headers',\n ];\n for (const parameter in this._configuration) {\n if (Object.prototype.hasOwnProperty.call(this._configuration, parameter)) {\n if (writable_parameters.indexOf(parameter) !== -1) {\n Object.defineProperty(this._configuration, parameter, {\n writable: true,\n configurable: false,\n });\n }\n else {\n Object.defineProperty(this._configuration, parameter, {\n writable: false,\n configurable: false,\n });\n }\n }\n }\n logger.debug('configuration parameters after validation:');\n for (const parameter in this._configuration) {\n // Only show the user user configurable parameters.\n if (Object.prototype.hasOwnProperty.call(config.settings, parameter)) {\n switch (parameter) {\n case 'uri':\n case 'registrar_server': {\n logger.debug(`- ${parameter}: ${this._configuration[parameter]}`);\n break;\n }\n case 'password':\n case 'ha1':\n case 'authorization_jwt': {\n logger.debug(`- ${parameter}: NOT SHOWN`);\n break;\n }\n default: {\n logger.debug(`- ${parameter}: ${JSON.stringify(this._configuration[parameter])}`);\n }\n }\n }\n }\n return;\n }\n};\n/**\n * Transport event handlers\n */\n// Transport connecting event.\nfunction onTransportConnecting(data) {\n this.emit('connecting', data);\n}\n// Transport connected event.\nfunction onTransportConnect(data) {\n if (this._status === C.STATUS_USER_CLOSED) {\n return;\n }\n this._status = C.STATUS_READY;\n this._error = null;\n this.emit('connected', data);\n if (this._dynConfiguration.register) {\n this._registrator.register();\n }\n}\n// Transport disconnected event.\nfunction onTransportDisconnect(data) {\n // Run _onTransportError_ callback on every client transaction using _transport_.\n const client_transactions = ['nict', 'ict', 'nist', 'ist'];\n for (const type of client_transactions) {\n for (const id in this._transactions[type]) {\n if (Object.prototype.hasOwnProperty.call(this._transactions[type], id)) {\n this._transactions[type][id].onTransportError();\n }\n }\n }\n this.emit('disconnected', data);\n // Call registrator _onTransportClosed_.\n this._registrator.onTransportClosed();\n if (this._status !== C.STATUS_USER_CLOSED) {\n this._status = C.STATUS_NOT_READY;\n this._error = C.NETWORK_ERROR;\n }\n}\n// Transport data event.\nfunction onTransportData(data) {\n const transport = data.transport;\n let message = data.message;\n message = Parser.parseMessage(message, this);\n if (!message) {\n return;\n }\n if (this._status === C.STATUS_USER_CLOSED &&\n message instanceof SIPMessage.IncomingRequest) {\n return;\n }\n // Do some sanity check.\n if (!sanityCheck(message, this, transport)) {\n return;\n }\n if (message instanceof SIPMessage.IncomingRequest) {\n message.transport = transport;\n this.receiveRequest(message);\n }\n else if (message instanceof SIPMessage.IncomingResponse) {\n /* Unike stated in 18.1.2, if a response does not match\n * any transaction, it is discarded here and no passed to the core\n * in order to be discarded there.\n */\n let transaction;\n switch (message.method) {\n case JsSIP_C.INVITE: {\n transaction = this._transactions.ict[message.via_branch];\n if (transaction) {\n transaction.receiveResponse(message);\n }\n break;\n }\n case JsSIP_C.ACK: {\n // Just in case ;-).\n break;\n }\n default: {\n transaction = this._transactions.nict[message.via_branch];\n if (transaction) {\n transaction.receiveResponse(message);\n }\n break;\n }\n }\n }\n}\n","\"use strict\";\nconst Logger = require('./Logger');\nconst Grammar = require('./Grammar');\nconst logger = new Logger('WebSocketInterface');\nmodule.exports = class WebSocketInterface {\n constructor(url) {\n logger.debug('new() [url:\"%s\"]', url);\n this._url = url;\n this._sip_uri = null;\n this._via_transport = null;\n this._ws = null;\n const parsed_url = Grammar.parse(url, 'absoluteURI');\n if (parsed_url === -1) {\n logger.warn(`invalid WebSocket URI: ${url}`);\n throw new TypeError(`Invalid argument: ${url}`);\n }\n else if (parsed_url.scheme !== 'wss' && parsed_url.scheme !== 'ws') {\n logger.warn(`invalid WebSocket URI scheme: ${parsed_url.scheme}`);\n throw new TypeError(`Invalid argument: ${url}`);\n }\n else {\n this._sip_uri = `sip:${parsed_url.host}${parsed_url.port ? `:${parsed_url.port}` : ''};transport=ws`;\n this._via_transport = parsed_url.scheme.toUpperCase();\n }\n }\n get via_transport() {\n return this._via_transport;\n }\n set via_transport(value) {\n this._via_transport = value.toUpperCase();\n }\n get sip_uri() {\n return this._sip_uri;\n }\n get url() {\n return this._url;\n }\n connect() {\n logger.debug('connect()');\n if (this.isConnected()) {\n logger.debug(`WebSocket ${this._url} is already connected`);\n return;\n }\n else if (this.isConnecting()) {\n logger.debug(`WebSocket ${this._url} is connecting`);\n return;\n }\n if (this._ws) {\n this.disconnect();\n }\n logger.debug(`connecting to WebSocket ${this._url}`);\n try {\n this._ws = new WebSocket(this._url, 'sip');\n this._ws.binaryType = 'arraybuffer';\n this._ws.onopen = this._onOpen.bind(this);\n this._ws.onclose = this._onClose.bind(this);\n this._ws.onmessage = this._onMessage.bind(this);\n this._ws.onerror = this._onError.bind(this);\n }\n catch (error) {\n this._onError(error);\n }\n }\n disconnect() {\n logger.debug('disconnect()');\n if (this._ws) {\n // Unbind websocket event callbacks.\n this._ws.onopen = () => { };\n this._ws.onclose = () => { };\n this._ws.onmessage = () => { };\n this._ws.onerror = () => { };\n this._ws.close();\n this._ws = null;\n }\n }\n send(message) {\n logger.debug('send()');\n if (this.isConnected()) {\n this._ws.send(message);\n return true;\n }\n else {\n logger.warn('unable to send message, WebSocket is not open');\n return false;\n }\n }\n isConnected() {\n return this._ws && this._ws.readyState === this._ws.OPEN;\n }\n isConnecting() {\n return this._ws && this._ws.readyState === this._ws.CONNECTING;\n }\n /**\n * WebSocket Event Handlers\n */\n _onOpen() {\n logger.debug(`WebSocket ${this._url} connected`);\n this.onconnect();\n }\n _onClose({ wasClean, code, reason }) {\n logger.debug(`WebSocket ${this._url} closed`);\n if (wasClean === false) {\n logger.debug('WebSocket abrupt disconnection');\n }\n this.ondisconnect(!wasClean, code, reason);\n }\n _onMessage({ data }) {\n logger.debug('received WebSocket message');\n this.ondata(data);\n }\n _onError(e) {\n logger.warn(`WebSocket ${this._url} error: `, e);\n }\n};\n","\"use strict\";\nconst pkg = require('../package.json');\nconst C = require('./Constants');\nconst Exceptions = require('./Exceptions');\nconst Utils = require('./Utils');\nconst UA = require('./UA');\nconst URI = require('./URI');\nconst NameAddrHeader = require('./NameAddrHeader');\nconst Grammar = require('./Grammar');\nconst WebSocketInterface = require('./WebSocketInterface');\nconst debug = require('debug')('JsSIP');\nconst RTCSession = require('./RTCSession');\ndebug('version %s', pkg.version);\n/**\n * Expose the JsSIP module.\n */\nmodule.exports = {\n C,\n Exceptions,\n Utils,\n UA,\n URI,\n NameAddrHeader,\n WebSocketInterface,\n Grammar,\n RTCSession,\n // Expose the debug module.\n debug: require('debug'),\n get name() {\n return pkg.title;\n },\n get version() {\n return pkg.version;\n },\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/**\n * Dora Cell SDK - Main entry point\n * Framework-agnostic VoIP calling SDK using JsSIP\n */\n\nimport JsSIP from 'jssip';\nimport EventEmitter from 'eventemitter3';\nimport type {\n DoraCellConfig,\n DoraCellEventMap,\n DoraCellEvent,\n ConnectionStatus,\n ConnectionState,\n Call,\n CallOptions,\n SipCredentials,\n} from '../types';\nimport { ConnectionError, CallError } from '../types';\nimport { createAuthProvider, AuthProvider } from './AuthProvider';\nimport { CallManager } from './CallManager';\n\nexport class DoraCell {\n private config: DoraCellConfig;\n private events: EventEmitter;\n private authProvider: AuthProvider;\n private credentials: SipCredentials | null = null;\n private ua: any | null = null; // JsSIP User Agent\n private callManager: CallManager | null = null;\n private connectionStatus: ConnectionStatus = 'disconnected';\n private retryCount: number = 0;\n private maxRetries: number = 3;\n\n constructor(config: DoraCellConfig) {\n this.config = {\n autoSelectExtension: true,\n debug: false,\n ...config,\n };\n\n this.events = new EventEmitter();\n this.authProvider = createAuthProvider(config.auth);\n\n // Enable JsSIP debugging if requested\n if (this.config.debug) {\n JsSIP.debug.enable('JsSIP:*');\n }\n }\n\n /**\n * Initialize the SDK - authenticate and connect to SIP server\n */\n async initialize(): Promise<void> {\n try {\n // Step 1: Authenticate and get SIP credentials\n this.credentials = await this.authProvider.authenticate(this.config.auth);\n\n // Step 2: Initialize JsSIP User Agent\n await this.initializeUserAgent();\n\n // Step 3: Initialize Call Manager\n this.initializeCallManager();\n\n // Step 4: Wait for registration if we are supposed to register\n await this.waitForRegistration();\n\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n this.emitError(new ConnectionError(`Initialization failed: ${errorMessage}`));\n throw error;\n }\n }\n\n private waitForRegistration(timeoutMs: number = 10000): Promise<void> {\n if (this.connectionStatus === 'registered') {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.off('connection:status', handler);\n reject(new ConnectionError(`Registration timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n\n const handler = (state: ConnectionState) => {\n if (state.status === 'registered') {\n clearTimeout(timeout);\n this.off('connection:status', handler);\n resolve();\n } else if (state.status === 'registrationFailed') {\n clearTimeout(timeout);\n this.off('connection:status', handler);\n reject(new ConnectionError(`Registration failed: ${state.error || 'Unknown cause'}`));\n }\n };\n\n this.on('connection:status', handler);\n });\n }\n\n private async initializeUserAgent(): Promise<void> {\n if (!this.credentials) {\n throw new ConnectionError('No credentials available');\n }\n\n try {\n // Create WebSocket connection\n const socket = new JsSIP.WebSocketInterface(this.credentials.wsUrl);\n\n // Build TURN/STUN configuration\n const pcConfig: RTCConfiguration = {\n iceServers: this.config.turnServers || this.getDefaultTurnServers(),\n };\n\n const uaConfig: any = {\n uri: this.credentials.sipUri,\n password: this.credentials.password,\n sockets: [socket],\n register: true,\n display_name: this.getDisplayName(),\n sessionTimers: false,\n trickleIce: false,\n pcConfig: pcConfig,\n instance_id: this.generateInstanceId(),\n };\n\n // Create User Agent\n console.log('SDK: Initializing UA with config:', { ...uaConfig, password: '***' });\n this.ua = new JsSIP.UA(uaConfig);\n\n // Set up UA event handlers\n this.setupUserAgentHandlers();\n\n // Start the UA\n console.log('SDK: Starting UA...');\n this.ua.start();\n\n } catch (error) {\n throw new ConnectionError(\n `Failed to initialize User Agent: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n private setupUserAgentHandlers(): void {\n if (!this.ua) return;\n\n this.ua.on('connected', () => {\n this.connectionStatus = 'connected';\n this.emitConnectionStatus();\n });\n\n this.ua.on('disconnected', () => {\n this.connectionStatus = 'disconnected';\n this.emitConnectionStatus();\n });\n\n this.ua.on('registered', () => {\n this.connectionStatus = 'registered';\n this.retryCount = 0;\n this.emitConnectionStatus();\n });\n\n this.ua.on('registrationFailed', (e: any) => {\n this.connectionStatus = 'registrationFailed';\n this.emitConnectionStatus(e.cause);\n\n // Retry logic\n if (this.retryCount < this.maxRetries) {\n this.retryCount++;\n setTimeout(() => {\n this.ua?.register();\n }, 3000);\n }\n });\n\n this.ua.on('newRTCSession', (e: any) => {\n const session = e.session;\n console.log(`SDK: New session detected (${session.direction}):`, session.remote_identity?.uri?.toString());\n\n if (session.direction === 'incoming') {\n console.log('SDK: Handling incoming call event');\n // Handle incoming call\n this.callManager?.handleIncomingCall(session);\n }\n });\n }\n\n private initializeCallManager(): void {\n if (!this.credentials) {\n throw new ConnectionError('No credentials available for call manager');\n }\n\n const pcConfig: RTCConfiguration = {\n iceServers: this.config.turnServers || this.getDefaultTurnServers(),\n };\n\n this.callManager = new CallManager(\n this.credentials,\n this.events,\n { pcConfig }\n );\n\n this.callManager.setUserAgent(this.ua);\n }\n\n /**\n * Make an outbound call\n */\n async call(phoneNumber: string, options?: CallOptions): Promise<Call> {\n if (!this.callManager) {\n throw new CallError('SDK not initialized. Call initialize() first.');\n }\n\n if (this.connectionStatus !== 'registered') {\n throw new CallError(`Not registered to SIP server. Current status: ${this.connectionStatus}`);\n }\n\n return this.callManager.initiateCall(phoneNumber, options);\n }\n\n /**\n * Answer an incoming call\n */\n answerCall(): void {\n const currentCall = this.callManager?.getCurrentCall();\n\n if (!currentCall) {\n throw new CallError('No incoming call to answer');\n }\n\n if (currentCall.direction !== 'inbound') {\n throw new CallError('Current call is not an incoming call');\n }\n\n this.callManager!.answerCurrentCall();\n }\n\n\n /**\n * Hangup the current call\n */\n hangup(): void {\n const currentCall = this.callManager?.getCurrentCall();\n\n if (!currentCall) {\n throw new CallError('No active call to hang up');\n }\n\n currentCall.hangup();\n }\n\n /**\n * Get current call\n */\n getCurrentCall(): Call | null {\n return this.callManager?.getCurrentCall() || null;\n }\n\n /**\n * Get connection status\n */\n getStatus(): ConnectionStatus {\n return this.connectionStatus;\n }\n\n /**\n * Get available extensions\n */\n getExtensions(): string[] {\n if (!this.credentials?.extensions) {\n return [];\n }\n return this.credentials.extensions.map(ext => ext.extension);\n }\n\n /**\n * Event listener management\n */\n on<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.on(event, handler as any);\n }\n\n off<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.off(event, handler as any);\n }\n\n once<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.once(event, handler as any);\n }\n\n /**\n * Cleanup and destroy the SDK instance\n */\n destroy(): void {\n if (this.ua) {\n this.ua.stop();\n this.ua = null;\n }\n\n if (this.callManager) {\n this.callManager.destroy();\n this.callManager = null;\n }\n\n this.events.removeAllListeners();\n this.connectionStatus = 'disconnected';\n this.credentials = null;\n }\n\n // Helper methods\n private emitConnectionStatus(error?: string): void {\n const state: ConnectionState = {\n status: this.connectionStatus,\n extension: this.credentials?.extensions?.[0]?.extension,\n error,\n };\n this.events.emit('connection:status', state);\n }\n\n private emitError(error: Error): void {\n this.events.emit('error', error);\n }\n\n private getDefaultTurnServers(): RTCIceServer[] {\n let turnUri = 'turn:64.227.10.164:3478';\n let turnUser = '02018890089';\n let turnPass = 'dora12345';\n\n if (typeof process !== 'undefined' && process.env) {\n turnUri = turnUri;\n turnUser = turnUser;\n turnPass = turnPass;\n }\n\n return [\n {\n urls: turnUri,\n username: turnUser,\n credential: turnPass,\n },\n ];\n }\n\n private getDisplayName(): string {\n if (this.credentials?.extensions?.[0]?.displayName) {\n return this.credentials.extensions[0].displayName;\n }\n if (this.credentials?.extensions?.[0]?.extension) {\n return `Ext ${this.credentials.extensions[0].extension}`;\n }\n return 'Dora Cell User';\n }\n\n private generateInstanceId(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n\nexport default DoraCell;\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","/**\n * Core TypeScript type definitions for Dora Cell SDK\n */\n\n// ============================================\n// Configuration Types\n// ============================================\n\nexport interface ApiTokenAuth {\n type: 'api-token';\n apiToken: string;\n apiBaseUrl?: string;\n}\n\nexport interface DirectCredentialsAuth {\n type: 'direct';\n sipUri: string;\n password: string;\n wsUrl: string;\n}\n\nexport interface ExtensionAuth {\n type: 'extension';\n extension: string;\n // Optional overrides for advanced cases\n password?: string;\n sipDomain?: string;\n}\n\nexport type AuthConfig = ApiTokenAuth | DirectCredentialsAuth | ExtensionAuth;\n\nexport interface DoraCellConfig {\n auth: AuthConfig;\n sipServer?: string;\n turnServers?: RTCIceServer[];\n debug?: boolean;\n autoSelectExtension?: boolean; // Auto-select first available extension\n}\n\n// ============================================\n// SIP Credentials\n// ============================================\n\nexport interface SipCredentials {\n wsUrl: string;\n sipUri: string;\n password: string;\n sipDomain?: string;\n extensions?: Extension[];\n expiresIn?: number;\n}\n\nexport interface Extension {\n extension: string;\n displayName?: string;\n isPrimary?: boolean;\n}\n\n// ============================================\n// Call Types\n// ============================================\n\nexport type CallStatus = 'idle' | 'connecting' | 'ringing' | 'ongoing' | 'ended';\n\nexport type CallDirection = 'inbound' | 'outbound';\n\nexport interface CallOptions {\n extension?: string; // Specific extension to use for this call\n mediaConstraints?: MediaStreamConstraints;\n}\n\nexport interface Call {\n id: string;\n status: CallStatus;\n direction: CallDirection;\n remoteNumber: string;\n localExtension: string;\n duration: number;\n startTime?: number;\n endTime?: number;\n\n // Methods\n mute(): void;\n unmute(): void;\n hangup(): void;\n isMuted(): boolean;\n getRemoteStream(): MediaStream | null;\n}\n\n// ============================================\n// Connection Status\n// ============================================\n\nexport type ConnectionStatus =\n | 'disconnected'\n | 'connecting'\n | 'connected'\n | 'registered'\n | 'registrationFailed';\n\nexport interface ConnectionState {\n status: ConnectionStatus;\n extension?: string;\n error?: string;\n}\n\n// ============================================\n// Events\n// ============================================\n\nexport type DoraCellEventMap = {\n 'connection:status': (state: ConnectionState) => void;\n 'call:incoming': (call: Call) => void;\n 'call:outgoing': (call: Call) => void;\n 'call:ringing': (call: Call) => void;\n 'call:connected': (call: Call) => void;\n 'call:ended': (call: Call, reason?: string) => void;\n 'call:failed': (call: Call, error: string) => void;\n 'error': (error: Error) => void;\n};\n\nexport type DoraCellEvent = keyof DoraCellEventMap;\n\n// ============================================\n// API Response Types\n// ============================================\n\nexport interface ApiTokenResponse {\n ws_url?: string;\n wsUrl?: string;\n sip_uri?: string;\n sipUri?: string;\n password?: string;\n sip_domain?: string;\n sipDomain?: string;\n extensions?: Extension[];\n expires_in?: number;\n expiresIn?: number;\n}\n\n// ============================================\n// Error Types\n// ============================================\n\nexport class DoraCellError extends Error {\n constructor(\n message: string,\n public code?: string,\n public details?: any\n ) {\n super(message);\n this.name = 'DoraCellError';\n }\n}\n\nexport class AuthenticationError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'AUTH_ERROR', details);\n this.name = 'AuthenticationError';\n }\n}\n\nexport class CallError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'CALL_ERROR', details);\n this.name = 'CallError';\n }\n}\n\nexport class ConnectionError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'CONNECTION_ERROR', details);\n this.name = 'ConnectionError';\n }\n}\n","/**\n * Authentication provider for API token-based authentication\n */\n\nimport type {\n AuthConfig,\n SipCredentials,\n ApiTokenResponse,\n} from '../types';\nimport { AuthenticationError } from '../types';\n\nexport interface AuthProvider {\n authenticate(config: AuthConfig): Promise<SipCredentials>;\n refreshCredentials?(): Promise<SipCredentials>;\n isAuthenticated(): boolean;\n}\n\n/**\n * API Token Authentication Provider\n * Exchanges API token for SIP credentials via backend API\n */\nexport class ApiTokenAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n private apiToken: string;\n private apiBaseUrl: string;\n\n constructor(apiToken: string, apiBaseUrl?: string) {\n this.apiToken = apiToken;\n let defaultBaseUrl = '';\n if (typeof process !== 'undefined' && process.env) {\n defaultBaseUrl = process.env.NEXT_PUBLIC_BASE_API_URL || '';\n }\n this.apiBaseUrl = apiBaseUrl || defaultBaseUrl;\n }\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'api-token') {\n throw new AuthenticationError('Invalid auth config type for ApiTokenAuthProvider');\n }\n\n try {\n const response = await fetch(`${this.apiBaseUrl}/api/sip-credentials`, {\n method: 'GET',\n headers: {\n 'Authorization': `Bearer ${this.apiToken}`,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n },\n credentials: 'include',\n });\n\n if (!response.ok) {\n if (response.status === 401 || response.status === 403) {\n throw new AuthenticationError(\n 'Invalid API token or insufficient permissions',\n { status: response.status }\n );\n }\n throw new AuthenticationError(\n `Failed to fetch SIP credentials: ${response.status}`,\n { status: response.status }\n );\n }\n\n const data: ApiTokenResponse = await response.json();\n this.credentials = this.parseCredentials(data);\n return this.credentials;\n } catch (error) {\n if (error instanceof AuthenticationError) {\n throw error;\n }\n throw new AuthenticationError(\n `Authentication failed: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n async refreshCredentials(): Promise<SipCredentials> {\n // Re-authenticate to get fresh credentials\n return this.authenticate({ type: 'api-token', apiToken: this.apiToken });\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n\n private parseCredentials(data: ApiTokenResponse): SipCredentials {\n const wsUrl = data.ws_url || data.wsUrl;\n const sipUri = data.sip_uri || data.sipUri;\n const password = data.password;\n const sipDomain = data.sip_domain || data.sipDomain;\n const extensions = data.extensions;\n const expiresIn = data.expires_in || data.expiresIn;\n\n if (!wsUrl || !sipUri) {\n throw new AuthenticationError(\n 'Invalid credentials response: missing ws_url or sip_uri'\n );\n }\n\n return {\n wsUrl,\n sipUri,\n password: password || '',\n sipDomain,\n extensions,\n expiresIn,\n };\n }\n}\n\n/**\n * Direct Credentials Authentication Provider\n * Uses credentials provided directly in configuration\n */\nexport class DirectCredentialsAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'direct') {\n throw new AuthenticationError('Invalid auth config type for DirectCredentialsAuthProvider');\n }\n\n this.credentials = {\n wsUrl: config.wsUrl,\n sipUri: config.sipUri,\n password: config.password,\n };\n\n return this.credentials;\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n}\n\n/**\n * Extension Authentication Provider\n * Simplified plug-and-play authentication using just an extension number.\n * Uses default Dora Cell infrastructure configuration.\n */\nconst DEFAULT_WSS_URL = 'wss://cell.usedora.com:8089/ws';\nconst DEFAULT_SIP_IP = '64.227.10.164';\nconst DEFAULT_PASSWORD = '1234';\n\nexport class ExtensionAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'extension') {\n throw new AuthenticationError('Invalid auth config type for ExtensionAuthProvider');\n }\n\n const extension = config.extension;\n const password = config.password || DEFAULT_PASSWORD;\n const wsUrl = DEFAULT_WSS_URL;\n const sipDomain = config.sipDomain || DEFAULT_SIP_IP;\n\n const sipUri = `sip:${extension}@${sipDomain}`;\n\n this.credentials = {\n wsUrl,\n sipUri,\n password,\n sipDomain,\n extensions: [{ extension, displayName: `Ext ${extension}`, isPrimary: true }]\n };\n\n return this.credentials;\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n}\n\n/**\n * Factory function to create appropriate auth provider\n */\nexport function createAuthProvider(config: AuthConfig): AuthProvider {\n switch (config.type) {\n case 'api-token':\n return new ApiTokenAuthProvider(config.apiToken, config.apiBaseUrl);\n case 'direct':\n return new DirectCredentialsAuthProvider();\n case 'extension':\n return new ExtensionAuthProvider();\n default:\n throw new AuthenticationError('Unknown authentication type');\n }\n}\n","/**\n * Phone number formatting utilities\n * Extracted from JsSIPProvider.tsx\n */\n\n/**\n * Format a phone number to SIP URI format\n * Handles Nigerian numbers, international format, and local extensions\n */\nexport function formatPhoneToSIP(phone: string, sipDomain: string): string {\n // Strip all non-numeric characters\n let cleaned = phone.replace(/\\D/g, '');\n\n // Case 1: Short local extension (like \"101\", \"102\", etc.)\n if (cleaned.length <= 4) {\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 2: Nigerian number starting with 0 (like \"08012345678\")\n if (cleaned.startsWith('0')) {\n cleaned = '234' + cleaned.substring(1);\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 3: Already in international format (starts with 234)\n if (cleaned.startsWith('234')) {\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 4: Any other number - assume it needs 234 prefix\n cleaned = '234' + cleaned;\n return `sip:${cleaned}@${sipDomain}`;\n}\n\n/**\n * Normalize a phone number to E.164 format\n */\nexport function normalizePhoneNumber(\n phone: string,\n countryCode: string = '234'\n): string {\n let cleaned = phone.replace(/\\D/g, '');\n\n // If it's a short extension, return as-is\n if (cleaned.length <= 4) {\n return cleaned;\n }\n\n // Remove leading 0 and add country code\n if (cleaned.startsWith('0')) {\n return countryCode + cleaned.substring(1);\n }\n\n // If already has country code, return as-is\n if (cleaned.startsWith(countryCode)) {\n return cleaned;\n }\n\n // Otherwise add country code\n return countryCode + cleaned;\n}\n\n/**\n * Extract extension/number from SIP URI\n */\nexport function extractNumberFromSipUri(sipUri: string): string {\n if (!sipUri) return '';\n\n // Handle string inputs like \"sip:1001@domain.com\"\n const match = sipUri.match(/sips?:([^@]+)(?:@.*)?/i);\n if (match) {\n return match[1];\n }\n\n // Fallback: just return the input\n return sipUri.replace(/^sips?:/i, '');\n}\n\n/**\n * Validate phone number format\n */\nexport function isValidPhoneNumber(phone: string, minLength: number = 3): boolean {\n const cleaned = phone.replace(/\\D/g, '');\n return cleaned.length >= minLength;\n}\n","/**\n * Call Manager - Handles individual call sessions\n * Extracted and refactored from JsSIPProvider.tsx\n */\n\nimport type {\n Call,\n CallStatus,\n CallDirection,\n CallOptions,\n SipCredentials,\n} from '../types';\nimport { CallError } from '../types';\nimport { formatPhoneToSIP, extractNumberFromSipUri } from '../utils/phoneFormatter';\nimport EventEmitter from 'eventemitter3';\n\nexport interface CallConfig {\n pcConfig: RTCConfiguration;\n mediaConstraints?: MediaStreamConstraints;\n}\n\nexport class CallSession implements Call {\n public id: string;\n public status: CallStatus = 'idle';\n public direction: CallDirection;\n public remoteNumber: string;\n public localExtension: string;\n public duration: number = 0;\n public startTime?: number;\n public endTime?: number;\n\n private session: any; // JsSIP RTCSession\n private _isMuted: boolean = false;\n private remoteStreamValue: MediaStream | null = null;\n private durationInterval?: number;\n private events: EventEmitter;\n\n constructor(\n session: any,\n direction: CallDirection,\n remoteNumber: string,\n localExtension: string,\n events: EventEmitter\n ) {\n this.id = this.generateCallId();\n this.session = session;\n this.direction = direction;\n this.remoteNumber = remoteNumber;\n this.localExtension = localExtension;\n this.events = events;\n\n this.setupSessionHandlers();\n }\n\n private generateCallId(): string {\n return `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private setupSessionHandlers(): void {\n // Progress event (ringing)\n this.session.on('progress', (evt: any) => {\n const code = evt.response?.status_code;\n if (code === 180 || code === 183) {\n this.status = 'ringing';\n this.events.emit('call:ringing', this);\n }\n });\n\n // Call confirmed (connected)\n this.session.on('confirmed', () => {\n this.status = 'ongoing';\n this.startTime = Date.now();\n this.startDurationTimer();\n this.events.emit('call:connected', this);\n });\n\n // Peer connection setup\n this.session.on('peerconnection', (evt: any) => {\n evt.peerconnection.ontrack = (event: any) => {\n if (event.streams && event.streams[0]) {\n this.remoteStreamValue = event.streams[0];\n }\n };\n });\n\n // Call ended\n this.session.on('ended', (evt: any) => {\n this.handleCallEnd(evt?.cause);\n });\n\n // Call failed\n this.session.on('failed', (evt: any) => {\n this.handleCallEnd(evt?.cause || 'Call failed');\n });\n\n // Call rejected\n this.session.on('rejected', (evt: any) => {\n this.handleCallEnd(evt?.cause || 'Call rejected');\n });\n }\n\n private handleCallEnd(reason?: string): void {\n this.status = 'ended';\n this.endTime = Date.now();\n this.stopDurationTimer();\n this.remoteStreamValue = null;\n this._isMuted = false;\n this.events.emit('call:ended', this, reason);\n }\n\n private startDurationTimer(): void {\n this.durationInterval = window.setInterval(() => {\n if (this.startTime) {\n this.duration = Math.floor((Date.now() - this.startTime) / 1000);\n }\n }, 1000);\n }\n\n private stopDurationTimer(): void {\n if (this.durationInterval) {\n clearInterval(this.durationInterval);\n this.durationInterval = undefined;\n }\n }\n\n // Public methods\n mute(): void {\n if (this.session && !this._isMuted) {\n this.session.mute({ audio: true });\n this._isMuted = true;\n }\n }\n\n unmute(): void {\n if (this.session && this._isMuted) {\n this.session.unmute({ audio: true });\n this._isMuted = false;\n }\n }\n\n hangup(): void {\n if (this.session) {\n this.session.terminate();\n }\n }\n\n isMuted(): boolean {\n return this._isMuted;\n }\n\n getRemoteStream(): MediaStream | null {\n return this.remoteStreamValue;\n }\n\n getFormattedDuration(): string {\n const mm = String(Math.floor(this.duration / 60)).padStart(2, '0');\n const ss = String(this.duration % 60).padStart(2, '0');\n return `${mm}:${ss}`;\n }\n\n destroy(): void {\n this.stopDurationTimer();\n this.session = null;\n this.remoteStreamValue = null;\n }\n}\n\n/**\n * Call Manager - Manages call sessions and JsSIP integration\n */\nexport class CallManager {\n private ua: any | null = null; // JsSIP User Agent\n private currentCall: CallSession | null = null;\n private pendingSession: any | null = null; // raw JsSIP session for unanswered incoming call\n private credentials: SipCredentials;\n private events: EventEmitter;\n private callConfig: CallConfig;\n\n constructor(\n credentials: SipCredentials,\n events: EventEmitter,\n callConfig: CallConfig\n ) {\n this.credentials = credentials;\n this.events = events;\n this.callConfig = callConfig;\n }\n\n setUserAgent(ua: any): void {\n this.ua = ua;\n }\n\n /**\n * Initiate an outbound call\n */\n async initiateCall(\n targetNumber: string,\n options?: CallOptions\n ): Promise<CallSession> {\n if (!this.ua) {\n throw new CallError('User Agent not initialized');\n }\n\n if (this.currentCall && this.currentCall.status !== 'ended') {\n throw new CallError('A call is already in progress');\n }\n\n try {\n // Request microphone permission\n await navigator.mediaDevices.getUserMedia({ audio: true });\n\n // Determine which extension to use\n const extension = options?.extension || this.getDefaultExtension();\n\n // Format the target number to SIP URI\n const sipDomain = this.extractDomain(this.credentials.sipUri);\n const sipTarget = formatPhoneToSIP(targetNumber, sipDomain);\n\n // Initiate the call\n const session = this.ua.call(sipTarget, {\n mediaConstraints: options?.mediaConstraints || { audio: true },\n pcConfig: this.callConfig.pcConfig,\n });\n\n // Create call session\n const call = new CallSession(\n session,\n 'outbound',\n targetNumber,\n extension,\n this.events\n );\n\n call.status = 'connecting';\n this.currentCall = call;\n this.events.emit('call:outgoing', call);\n\n return call;\n } catch (error) {\n throw new CallError(\n `Failed to initiate call: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n /**\n * Answer the pending incoming call.\n * Uses the stored pendingSession from handleIncomingCall.\n */\n answerCurrentCall(): void {\n const session = this.pendingSession;\n if (!session) {\n throw new CallError('No pending incoming call to answer');\n }\n\n try {\n session.answer({\n mediaConstraints: { audio: true },\n pcConfig: this.callConfig.pcConfig,\n });\n // pendingSession cleared — CallSession event handlers take over from here\n this.pendingSession = null;\n } catch (error) {\n throw new CallError(\n `Failed to answer call: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n /**\n * Handle incoming call from JsSIP — stores the raw session\n * so answerCurrentCall() can answer it later.\n */\n handleIncomingCall(session: any): CallSession {\n // Extract the user/number from the URI object if possible, otherwise parse the string\n const remoteUri = session.remote_identity?.uri?.toString() || '';\n const remoteNumber = session.remote_identity?.uri?.user || extractNumberFromSipUri(remoteUri) || 'Unknown';\n \n const extension = this.getDefaultExtension();\n\n // Store raw session so answerCurrentCall() can call session.answer()\n this.pendingSession = session;\n\n const call = new CallSession(\n session,\n 'inbound',\n remoteNumber,\n extension,\n this.events\n );\n\n call.status = 'ringing';\n this.currentCall = call;\n this.events.emit('call:incoming', call);\n\n return call;\n }\n\n getCurrentCall(): CallSession | null {\n return this.currentCall;\n }\n\n clearCurrentCall(): void {\n if (this.currentCall) {\n this.currentCall.destroy();\n this.currentCall = null;\n }\n this.pendingSession = null;\n }\n\n private getDefaultExtension(): string {\n // Auto-select first extension if available\n if (this.credentials.extensions && this.credentials.extensions.length > 0) {\n return this.credentials.extensions[0].extension;\n }\n // Fallback to extracting from sipUri\n return this.extractExtension(this.credentials.sipUri);\n }\n\n private extractExtension(sipUri: string): string {\n const match = sipUri.match(/sip:([^@]+)@/);\n return match ? match[1] : 'unknown';\n }\n\n private extractDomain(sipUri: string): string {\n const match = sipUri.match(/@(.+)$/);\n return match ? match[1] : '';\n }\n\n destroy(): void {\n this.clearCurrentCall();\n this.ua = null;\n }\n}\n"]}