{"version":3,"file":"resgrid-ngx-resgridlib.mjs","sources":["../../../projects/ngx-resgrid-apps-shared/src/lib/directives/conversation.directive.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/directives/groupBy.directive.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/directives/orderBy.directive.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/utils.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/directives/rgTimeAgo.directive.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/directives/rgTimeAgoUtc.directive.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/directives/truncate.directive.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/resgrid-config.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/uriEncoder.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/logger.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/storage.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/auth.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/interceptors/http.auth.interceptor.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/cache.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/interceptors/http.cache.interceptor.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/interceptors/http.interceptor.module.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/voice.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/livekit.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/components/voice-footer/voice-footer.component.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/components/voice-footer/voice-footer.component.html","../../../projects/ngx-resgrid-apps-shared/src/lib/ngx-resgridlib.module.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/consts.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/webCacheWrapper.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/providers/webcache.provider.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/autofills.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/calendar.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/callFiles.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/callNotes.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/baseV4Request.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callPriorities/callPrioritiesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/callPriorities.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/callProtocols.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callTypes/callTypesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/callTypes.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/calls.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/customStatuses.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/configs/getConfigResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/configs/getConfigResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/config.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/device.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/dispatch.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/forms.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/groups/groupsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/groups.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/health.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/mapping.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/messages.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/notes.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/personnel.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/roles.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/personnelStaffing.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/personnelLocation.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/personnelStatuses.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/security.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/shifts.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/statuses.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/templates.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/unitLocation.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/unitRoles.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/unitStatus.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/v4/units.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/custom-states.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/document.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/pubsub.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/events.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/gpsLocation.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/Ellipsoid.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/Coordinate.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/Functions/MathMore.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/Distance/Vincenty.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/location.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/signalr.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/realtime-geolocation.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/types.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/services/window.service.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/autofills/autofillsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/autofills/autofillsResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calendar/calendarItemResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calendar/calendarItemResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calendar/calendarItemsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calendar/calendarItemTypeResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calendar/calendarItemTypesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calendar/setCalendarAttendingResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callFiles/callFileResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callFiles/callFilesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callFiles/saveCallFileResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callNotes/callNoteResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callNotes/callNotesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callNotes/saveCallNoteResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callPriorities/callPriorityResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callProtocols/callProtocolsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callProtocols/callProtocolsResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/activeCallsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/callExtraDataResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/callExtraDataResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/callResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/callResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/closeCallResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/deleteCallResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/dispatchedEventResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/saveCallResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/scheduledCallsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/updateCallResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/calls/updateDispatchTimeResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/callTypes/callTypeResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/customStatuses/customStatusResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/customStatuses/customStatusesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/getCallTemplatesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/getCallTemplatesResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/getPersonnelForCallGridResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/getPersonnelForCallGridResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/getRolesForCallGridResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/getRolesForCallGridResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/getSetUnitStateResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/getSetUnitStateResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/newCallFormResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/newCallFormResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/getGroupsForCallGridResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/dispatch/getGroupsForCallGridResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/forms/formDataAutomationResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/forms/formResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/forms/formResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/groups/groupsResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/groups/groupResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/health/healthResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/health/healthResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/mapping/getMapDataAndMarkersData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/mapping/getMapDataAndMarkersResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/mapping/getMapLayersResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/mapping/getMapLayersResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/messages/deleteMessageResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/messages/messageRecipientInput.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/messages/messageResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/messages/messageResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/messages/messagesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/messages/respondToMessageResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/messages/sendMessageResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/messages/getRecipientsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/messages/recipientsResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/notes/notesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/notes/noteResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/notes/noteCategoryResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/notes/noteCategoryResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/notes/saveNoteResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnel/filterResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnel/getPersonnelFilterOptionsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnel/getAllPersonnelInfosResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnel/personnelInfoResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnel/personnelInfoResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelLocation/personnelLocationResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelLocation/personnelLocationResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelLocation/savePersonnelLocationInput.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelLocation/savePersonnelLocationResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStatuses/getCurrentStatusResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStatuses/getCurrentStatusResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStatuses/savePersonsStatusesInput.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStatuses/savePersonsStatusesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStatuses/savePersonStatusInput.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStatuses/savePersonStatusResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStaffing/getCurrentStaffingResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStaffing/getCurrentStaffingResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStaffing/savePersonsStaffingsInput.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStaffing/savePersonsStaffingsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStaffing/savePersonStaffingInput.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/personnelStaffing/savePersonStaffingResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/roles/roleResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/roles/rolesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/security/departmentRightsResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/security/departmentRightsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/shifts/shiftDayResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/shifts/shiftDayResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/shifts/shiftDaysResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/shifts/shiftResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/shifts/shiftResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/shifts/shiftsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/shifts/signupShiftDayResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/statuses/statusesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/statuses/statusesResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/statuses/unitTypeStatusesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/statuses/unitTypeStatusResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/templates/callNoteTemplateResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/templates/callNoteTemplatesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitLocation/saveUnitLocationInput.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitLocation/saveUnitLocationResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitLocation/unitLocationResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitLocation/unitLocationResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitRoles/unitRoleResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitRoles/unitRolesForUnitResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitRoles/activeUnitRoleResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitRoles/activeUnitRolesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitRoles/setRoleAssignmentsForUnitResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitRoles/setUnitRolesInput.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/units/getUnitFilterOptionsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/units/unitInfoResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/units/unitInfoResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/units/unitRoleData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/units/unitResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/units/unitsResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitStatus/saveUnitStatusInput.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitStatus/saveUnitStatusResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitStatus/unitStatusResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/unitStatus/unitStatusesResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/voice/departmentVoiceResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/voice/departmentVoiceResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/voice/voiceSessionConnectionResultData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/voice/voiceSessionConnectionResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/voice/departmentAudioResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/voice/departmentAudioResultStreamData.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/v4/device/pushRegistrationResult.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/Bounds.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/GeometryInterface.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/Line.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/Polygon.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/Polyline.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/Distance/DistanceInterface.ts","../../../projects/ngx-resgrid-apps-shared/src/lib/models/geo/Distance/Haversine.ts","../../../projects/ngx-resgrid-apps-shared/src/public-api.ts","../../../projects/ngx-resgrid-apps-shared/src/resgrid-ngx-resgridlib.ts"],"sourcesContent":["import { Injectable, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'conversationFilter'\n})\n@Injectable()\nexport class ConversationPipe implements PipeTransform {\n  // ConversationPipe\n  // Filter conversation based on friend's name or username.\n  transform(conversations: any[], search: string): any {\n    if (!conversations) {\n      return;\n    } else if (!search) {\n      return conversations;\n    } else {\n      let term = search.toLowerCase();\n      return conversations.filter(conversation => conversation.friend.name.toLowerCase().indexOf(term) > -1 || conversation.friend.username.toLowerCase().indexOf(term) > -1);\n    }\n  }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'groupBy' })\nexport class GroupByPipe implements PipeTransform {\n  transform(value: Array<any>, field: string): Array<any> {\n    if (value && value.length > 0) {\n      const groupedObj = value.reduce((prev, cur) => {\n        if (!prev[cur[field]]) {\n          prev[cur[field]] = [cur];\n        } else {\n          prev[cur[field]].push(cur);\n        }\n        return prev;\n      }, {});\n\n      return Object.keys(groupedObj).map(key => ({ key, value: groupedObj[key] }));\n    }\n\n    return value;\n  }\n}","/*\n * Example use\n *\t\tBasic Array of single type: *ngFor=\"let todo of todoService.todos | orderBy : '-'\"\n *\t\tMultidimensional Array Sort on single column: *ngFor=\"let todo of todoService.todos | orderBy : ['-status']\"\n *\t\tMultidimensional Array Sort on multiple columns: *ngFor=\"let todo of todoService.todos | orderBy : ['status', '-title']\"\n */\n// https://github.com/FuelInteractive/fuel-ui/tree/master/src/pipes/OrderBy\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'orderBy', pure: false })\nexport class OrderByPipe implements PipeTransform {\n  value: string[] = [];\n\n  static _orderByComparator(a: any, b: any): number {\n    if (a === null || typeof a === 'undefined') a = 0;\n    if (b === null || typeof b === 'undefined') b = 0;\n\n    if (\n      isNaN(parseFloat(a)) ||\n      !isFinite(a) ||\n      isNaN(parseFloat(b)) ||\n      !isFinite(b)\n    ) {\n      //Isn't a number so lowercase the string to properly compare\n      if (a.toLowerCase() < b.toLowerCase()) return -1;\n      if (a.toLowerCase() > b.toLowerCase()) return 1;\n    } else {\n      //Parse strings as numbers to compare properly\n      if (parseFloat(a) < parseFloat(b)) return -1;\n      if (parseFloat(a) > parseFloat(b)) return 1;\n    }\n\n    return 0; //equal each other\n  }\n\n  transform(input: any, config: string = '+'): any {\n    //invalid input given\n    if (!input) return input;\n\n    //make a copy of the input's reference\n    this.value = [...input];\n    let value = this.value;\n\n    if (!Array.isArray(value)) return value;\n\n    if (\n      !Array.isArray(config) ||\n      (Array.isArray(config) && config.length == 1)\n    ) {\n      let propertyToCheck: string = !Array.isArray(config) ? config : config[0];\n      let desc = propertyToCheck.substr(0, 1) == '-';\n\n      //Basic array\n      if (\n        !propertyToCheck ||\n        propertyToCheck == '-' ||\n        propertyToCheck == '+'\n      ) {\n        return !desc ? value.sort() : value.sort().reverse();\n      } else {\n        let property: string =\n          propertyToCheck.substr(0, 1) == '+' ||\n          propertyToCheck.substr(0, 1) == '-'\n            ? propertyToCheck.substr(1)\n            : propertyToCheck;\n\n        return value.sort(function (a: any, b: any) {\n          let aValue = a[property];\n          let bValue = b[property];\n\n          let propertySplit = property.split('.');\n\n          if (\n            typeof aValue === 'undefined' &&\n            typeof bValue === 'undefined' &&\n            propertySplit.length > 1\n          ) {\n            aValue = a;\n            bValue = b;\n            for (let j = 0; j < propertySplit.length; j++) {\n              aValue = aValue[propertySplit[j]];\n              bValue = bValue[propertySplit[j]];\n            }\n          }\n\n          return !desc\n            ? OrderByPipe._orderByComparator(aValue, bValue)\n            : -OrderByPipe._orderByComparator(aValue, bValue);\n        });\n      }\n    } else {\n      //Loop over property of the array in order and sort\n      return value.sort(function (a: any, b: any) {\n        for (let i: number = 0; i < config.length; i++) {\n          let desc = config[i].substr(0, 1) == '-';\n          let property =\n            config[i].substr(0, 1) == '+' || config[i].substr(0, 1) == '-'\n              ? config[i].substr(1)\n              : config[i];\n\n          let aValue = a[property];\n          let bValue = b[property];\n\n          let propertySplit = property.split('.');\n\n          if (\n            typeof aValue === 'undefined' &&\n            typeof bValue === 'undefined' &&\n            propertySplit.length > 1\n          ) {\n            aValue = a;\n            bValue = b;\n            for (let j = 0; j < propertySplit.length; j++) {\n              aValue = aValue[propertySplit[j]];\n              bValue = bValue[propertySplit[j]];\n            }\n          }\n\n          let comparison = !desc\n            ? OrderByPipe._orderByComparator(aValue, bValue)\n            : -OrderByPipe._orderByComparator(aValue, bValue);\n\n          //Don't return 0 yet in case of needing to sort by next property\n          if (comparison != 0) return comparison;\n        }\n\n        return 0; //equal each other\n      });\n    }\n  }\n}\n\nexport let ORDERBY_PROVIDERS = [OrderByPipe];\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UtilsService {\n  private monthNames = [\n    'January',\n    'February',\n    'March',\n    'April',\n    'May',\n    'June',\n    'July',\n    'August',\n    'September',\n    'October',\n    'November',\n    'December',\n  ];\n\n  private monthShortNames = [\n    'Jan',\n    'Feb',\n    'Mar',\n    'Apr',\n    'May',\n    'Jun',\n    'Jul',\n    'Aug',\n    'Sep',\n    'Oct',\n    'Nov',\n    'Dec',\n  ];\n\n  public to2Digit(str: string): string {\n    if (!str) {\n      return '';\n    }\n\n    const isString: boolean = typeof str === 'string';\n    if (isString && str.length === 1) {\n      str = 0 + str;\n    }\n    return str;\n  }\n\n  public getMinutesBetweenDates(startDate: Date, endDate: Date): number {\n    let diff = endDate.getTime() - startDate.getTime();\n    return diff / 60000;\n  }\n\n  public parseDateISOString(s: string): Date {\n    const b = s.split(/\\D/);\n    return new Date(\n      parseInt(b[0], 10),\n      parseInt(b[1], 10) - 1,\n      parseInt(b[2], 10),\n      parseInt(b[3], 10),\n      parseInt(b[4], 10),\n      parseInt(b[5], 10)\n    );\n  }\n\n  public getDate(date: string): string {\n    if (!date) {\n      return 'Unknown';\n    }\n\n    const d = new Date(date);\n    const datestring =\n      ('0' + d.getDate()).slice(-2) +\n      '-' +\n      ('0' + (d.getMonth() + 1)).slice(-2) +\n      '-' +\n      d.getFullYear() +\n      ' ' +\n      ('0' + d.getHours()).slice(-2) +\n      ':' +\n      ('0' + d.getMinutes()).slice(-2);\n\n    return datestring;\n  }\n\n  public formatDateForDisplay(date: Date, format: string): string {\n    // Original idea from: https://weblog.west-wind.com/posts/2008/Mar/18/A-simple-formatDate-function-for-JavaScript\n\n    if (!date) {\n      return '';\n    }\n\n    if (!format) {\n      format = 'MM/dd/yyyy';\n    }\n\n    const month = date.getMonth() + 1;\n    const year = date.getFullYear();\n\n    let hours = date.getHours();\n    if (format.indexOf('t') > -1) {\n      if (hours > 11) {\n        format = format.replace('t', 'pm');\n      } else {\n        format = format.replace('t', 'am');\n      }\n    }\n\n    if (format.indexOf('MMMM') > -1) {\n      format = format.replace('MMMM', this.monthNames[date.getMonth()]);\n    } else if (format.indexOf('MMM') > -1) {\n      format = format.replace('MMM', this.monthShortNames[date.getMonth()]);\n    } else if (format.indexOf('MM') > -1) {\n      format = format.replace('MM', this.padLeadingZero(month).toString());\n    }\n\n    if (format.indexOf('yyyy') > -1) {\n      format = format.replace('yyyy', year.toString());\n    } else if (format.indexOf('yy') > -1) {\n      format = format.replace('yy', year.toString().substr(2, 2));\n    }\n\n    format = format.replace(\n      'dd',\n      this.padLeadingZero(date.getDate()).toString()\n    );\n\n    if (format.indexOf('HH') > -1) {\n      format = format.replace('HH', this.padLeadingZero(hours).toString());\n    }\n\n    if (format.indexOf('hh') > -1) {\n      if (hours > 12) {\n        hours = hours - 12;\n      }\n\n      if (hours === 0) {\n        hours = hours = 12;\n      }\n      format = format.replace('hh', this.padLeadingZero(hours).toString());\n    }\n    if (format.indexOf('mm') > -1) {\n      format = format.replace(\n        'mm',\n        this.padLeadingZero(date.getMinutes()).toString()\n      );\n    }\n\n    if (format.indexOf('ss') > -1) {\n      format = format.replace(\n        'ss',\n        this.padLeadingZero(date.getSeconds()).toString()\n      );\n    }\n    if (format.indexOf('dd') > -1) {\n      format = format.replace(\n        'ss',\n        this.padLeadingZero(date.getDay()).toString()\n      );\n    }\n    if (format.indexOf('Z') > -1) {\n      let timeZone: string | undefined;\n      try {\n        // Chrome, Firefox\n        let zone = /.*\\s(.+)/.exec(\n          new Date()?.toLocaleDateString(navigator.language, {\n            timeZoneName: 'short',\n          })\n        );\n        if (zone) {\n          timeZone = zone[1];\n        }\n      } catch (e) {\n        // IE, some loss in accuracy due to guessing at the abbreviation\n        // Note: This regex adds a grouping around the open paren as a\n        //       workaround for an IE regex parser bug\n        timeZone = new Date()\n          .toTimeString()\n          ?.match(new RegExp('[A-Z](?!.*[(])', 'g'))\n          ?.join('');\n      }\n\n      if (timeZone) {\n        format = format.replace('Z', timeZone);\n      }\n    }\n\n    return format;\n  }\n\n  public formatDateString(date: Date): string {\n    const day = date.getDate(); // yields date\n    const month = date.getMonth() + 1; // yields month (add one as '.getMonth()' is zero indexed)\n    const year = date.getFullYear(); // yields year\n    const hour = date.getHours(); // yields hours\n    const minute = date.getMinutes(); // yields minutes\n    const second = date.getSeconds(); // yields seconds\n    let timeZone = '';\n\n    /*\n        try {\n            // Chrome, Firefox\n            timeZone = /.*\\s(.+)/.exec((new Date()).toLocaleDateString(navigator.language, { timeZoneName:'short' }))[1];\n        } catch(e) {\n            // IE, some loss in accuracy due to guessing at the abbreviation\n            // Note: This regex adds a grouping around the open paren as a\n            //       workaround for an IE regex parser bug\n            timeZone = (new Date()).toTimeString().match(new RegExp('[A-Z](?!.*[\\(])','g')).join('');\n        }\n        */\n\n    timeZone = this.createDateUTCOffset(date);\n\n    const time =\n      this.padLeadingZero(month) +\n      '/' +\n      this.padLeadingZero(day) +\n      '/' +\n      year +\n      ' ' +\n      this.padLeadingZero(hour) +\n      ':' +\n      this.padLeadingZero(minute) +\n      ':' +\n      this.padLeadingZero(second) +\n      ' ' +\n      timeZone;\n\n    return time;\n  }\n\n  public padLeadingZero(value: number): string {\n    return value < 10 ? '0' + value : value.toString();\n  }\n\n  private createDateUTCOffset(date: Date): string {\n    const sign = date.getTimezoneOffset() > 0 ? '-' : '+';\n    const offset = Math.abs(date.getTimezoneOffset());\n    const hours = this.padLeadingZero(Math.floor(offset / 60));\n    const minutes = this.padLeadingZero(offset % 60);\n    return sign + hours + ':' + minutes;\n  }\n\n  public addDaysToDate(date: string, days: number): Date {\n    const result = new Date(date);\n    result.setDate(result.getDate() + days);\n    return result;\n  }\n\n  public subtractDaysFromDate(date: string, days: number): Date {\n    const result = new Date(date);\n    result.setDate(result.getDate() - days);\n    return result;\n  }\n\n  public getTimeAgo(time: any, floor: number = 0): string {\n    if (!time) {\n      return 'Unknown';\n    }\n\n    switch (typeof time) {\n      case 'number':\n        break;\n      case 'string':\n        time = +new Date(time);\n        break;\n      case 'object':\n        if (time.constructor === Date) {\n          time = time.getTime();\n        }\n        break;\n      default:\n        time = +new Date();\n    }\n\n    const timeFormats = [\n      [60, 'seconds', 1], // 60\n      [120, '1 minute ago', '1 minute from now'], // 60*2\n      [3600, 'minutes', 60], // 60*60, 60\n      [7200, '1 hour ago', '1 hour from now'], // 60*60*2\n      [86400, 'hours', 3600], // 60*60*24, 60*60\n      [172800, 'Yesterday', 'Tomorrow'], // 60*60*24*2\n      [604800, 'days', 86400], // 60*60*24*7, 60*60*24\n      [1209600, 'Last week', 'Next week'], // 60*60*24*7*4*2\n      [2419200, 'weeks', 604800], // 60*60*24*7*4, 60*60*24*7\n      [4838400, 'Last month', 'Next month'], // 60*60*24*7*4*2\n      [29030400, 'months', 2419200], // 60*60*24*7*4*12, 60*60*24*7*4\n      [58060800, 'Last year', 'Next year'], // 60*60*24*7*4*12*2\n      [2903040000, 'years', 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12\n      [5806080000, 'Last century', 'Next century'], // 60*60*24*7*4*12*100*2\n      [58060800000, 'centuries', 2903040000], // 60*60*24*7*4*12*100*20, 60*60*24*7*4*12*100\n    ];\n    let seconds = (+new Date() - time) / 1000,\n      token = 'ago',\n      listChoice = 1;\n\n    if (floor > 0 && seconds < floor) {\n      seconds = seconds + floor;\n    }\n\n    if (seconds === 0) {\n      return 'Just now';\n    }\n    if (seconds < 0) {\n      seconds = Math.abs(seconds);\n      token = 'from now';\n      listChoice = 2;\n    }\n    let i = 0, format;\n    while ((format = timeFormats[i++])) {\n      if (seconds < Number(format[0])) {\n        if (typeof format[2] === 'string') {\n          return format[listChoice].toString();\n        } else {\n          return (\n            Math.floor(seconds / format[2]) + ' ' + format[1] + ' ' + token\n          );\n        }\n      }\n    }\n    return time;\n  }\n\n  public getTimeAgoUtc(time: any): string {\n    if (!time) {\n      return 'Unknown';\n    }\n\n    switch (typeof time) {\n      case 'number':\n        break;\n      case 'string':\n        time = +new Date(time);\n        break;\n      case 'object':\n        if (time.constructor === Date) {\n          time = time.getTime();\n        }\n        break;\n      default:\n        time = +new Date();\n    }\n\n    const currentDate = new Date();\n    time = Number(new Date(time).getTime() + 0 * 60 * 1000);\n\n    const timeFormats = [\n      [60, 'seconds', 1], // 60\n      [120, '1 minute ago', '1 minute from now'], // 60*2\n      [3600, 'minutes', 60], // 60*60, 60\n      [7200, '1 hour ago', '1 hour from now'], // 60*60*2\n      [86400, 'hours', 3600], // 60*60*24, 60*60\n      [172800, 'Yesterday', 'Tomorrow'], // 60*60*24*2\n      [604800, 'days', 86400], // 60*60*24*7, 60*60*24\n      [1209600, 'Last week', 'Next week'], // 60*60*24*7*4*2\n      [2419200, 'weeks', 604800], // 60*60*24*7*4, 60*60*24*7\n      [4838400, 'Last month', 'Next month'], // 60*60*24*7*4*2\n      [29030400, 'months', 2419200], // 60*60*24*7*4*12, 60*60*24*7*4\n      [58060800, 'Last year', 'Next year'], // 60*60*24*7*4*12*2\n      [2903040000, 'years', 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12\n      [5806080000, 'Last century', 'Next century'], // 60*60*24*7*4*12*100*2\n      [58060800000, 'centuries', 2903040000], // 60*60*24*7*4*12*100*20, 60*60*24*7*4*12*100\n    ];\n    let seconds =\n        (Number(\n          new Date(currentDate).getTime() +\n            new Date(currentDate).getTimezoneOffset() * 60 * 1000\n        ) -\n          time) /\n        1000,\n      token = 'ago',\n      listChoice = 1;\n\n    // If it's within a minute of the current date lets just say \"Just now\" as it messes up \n    // Angular checking for changes and throws an error.\n    if (seconds < 60 && seconds > -60) {\n      return 'Just now';\n    }\n\n    if (seconds < 0) {\n      seconds = Math.abs(seconds);\n      token = 'from now';\n      listChoice = 2;\n    }\n    let i = 0,\n      format;\n    while ((format = timeFormats[i++])) {\n      if (seconds < Number(format[0])) {\n        if (typeof format[2] === 'string') {\n          return format[listChoice].toString();\n        } else {\n          return (\n            Math.floor(seconds / format[2]) + ' ' + format[1] + ' ' + token\n          );\n        }\n      }\n    }\n    return time;\n  }\n\n  public generateUUID(): string {\n    var d = new Date().getTime(); //Timestamp\n\n    // Time in microseconds since page-load or 0 if unsupported\n    var d2 =\n      (typeof performance !== 'undefined' &&\n        performance.now &&\n        performance.now() * 1000) ||\n      0;\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n      /[xy]/g,\n      function (c) {\n        var r = Math.random() * 16; //random number between 0 and 16\n        if (d > 0) {\n          //Use timestamp until depleted\n          r = (d + r) % 16 | 0;\n          d = Math.floor(d / 16);\n        } else {\n          //Use microseconds since page-load if supported\n          r = (d2 + r) % 16 | 0;\n          d2 = Math.floor(d2 / 16);\n        }\n        return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n      }\n    );\n  }\n\n  public invertColor(hex: string, bw: boolean): string {\n    if (hex.indexOf('#') === 0) {\n      hex = hex.slice(1);\n    }\n    // convert 3-digit hex to 6-digits.\n    if (hex.length === 3) {\n      hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n    }\n    if (hex.length !== 6) {\n      throw new Error('Invalid HEX color.');\n    }\n    let r = parseInt(hex.slice(0, 2), 16),\n      g = parseInt(hex.slice(2, 4), 16),\n      b = parseInt(hex.slice(4, 6), 16);\n    if (bw) {\n      // https://stackoverflow.com/a/3943023/112731\n      return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? '#000000' : '#FFFFFF';\n    }\n    // invert color components\n    let r2 = (255 - r).toString(16),\n      g2 = (255 - g).toString(16),\n      b2 = (255 - b).toString(16);\n    // pad each with zeros and return\n    return (\n      '#' + this.padZero(r2, 2) + this.padZero(g2, 2) + this.padZero(b2, 2)\n    );\n  }\n\n  public blendColor(hexColor: string, magnitude: number): string\n  {\n    hexColor = hexColor.replace(`#`, ``);\n    if (hexColor.length === 6) {\n        const decimalColor = parseInt(hexColor, 16);\n        let r = (decimalColor >> 16) + magnitude;\n        r > 255 && (r = 255);\n        r < 0 && (r = 0);\n        let g = (decimalColor & 0x0000ff) + magnitude;\n        g > 255 && (g = 255);\n        g < 0 && (g = 0);\n        let b = ((decimalColor >> 8) & 0x00ff) + magnitude;\n        b > 255 && (b = 255);\n        b < 0 && (b = 0);\n        return `#${(g | (b << 8) | (r << 16)).toString(16)}`;\n    } else {\n        return hexColor;\n    }\n  }\n\n  public isColorDark(color: string): boolean {\n    let r: number = 0;\n    let g: number = 0;\n    let b: number = 0;\n\n    // Check the format of the color, HEX or RGB?\n    if (color.match(/^rgb/)) {\n  \n      // If HEX --> store the red, green, blue values in separate variables\n      let colorHex = color.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/);\n  \n      if (colorHex)\n      {\n        r = parseInt(colorHex[1]);\n        g = parseInt(colorHex[2]);\n        b = parseInt(colorHex[3]);\n      }\n    } \n    else {\n      // If RGB --> Convert it to HEX: http://gist.github.com/983661\n      //let colorRGB = +(\"0x\" + color.slice(1).replace(color.length < 5 && /./g, '$&$&'));\n  \n      //r = colorRGB >> 16;\n      //g = colorRGB >> 8 & 255;\n      //b = colorRGB & 255;\n\n      var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(color);\n\n      if (result)\n      {\n        r = parseInt(result[1], 16);\n        g = parseInt(result[2], 16);\n        b = parseInt(result[3], 16);\n      }\n    }\n  \n    // HSP (Highly Sensitive Poo) equation from http://alienryderflex.com/hsp.html\n    let hsp = Math.sqrt(\n      0.299 * (r * r) +\n      0.587 * (g * g) +\n      0.114 * (b * b)\n    );\n  \n    // Using the HSP value, determine whether the color is light or dark\n    if (hsp>127.5) {\n      return false;\n    } \n    else {\n      return true;\n    }\n  }\n\n  public padZero(str: string, len: number): string {\n    len = len || 2;\n    var zeros = new Array(len).join('0');\n    return (zeros + str).slice(-len);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { UtilsService } from '../services/utils.service';\n\n@Pipe({\n  name: 'rgTimeAgo',\n})\nexport class RGTimeAgoPipe implements PipeTransform {\n  constructor(private utilsProvider: UtilsService) {}\n\n  transform(value: string): string {\n    return this.utilsProvider.getTimeAgo(value);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { UtilsService } from '../services/utils.service';\n\n@Pipe({\n  name: 'rgTimeAgoUtc',\n})\nexport class RGTimeAgoUTCPipe implements PipeTransform {\n  constructor(private utilsProvider: UtilsService) {}\n\n  transform(value: string): string {\n    return this.utilsProvider.getTimeAgoUtc(value);\n  }\n}\n","import {Pipe} from '@angular/core';\n\n@Pipe({\n  name: 'truncate'\n})\nexport class TruncatePipe {\n  transform(value: string, args: string[]) : string {\n    let limit = args.length > 0 ? parseInt(args[0], 10) : 10;\n    let trail = args.length > 1 ? args[1] : '...';\n\n    return value.length > limit ? value.substring(0, limit) + trail : value;\n  }\n}","export interface ResgridASConfiguration {\n  baseApiUrl: () => string;\n  apiVersion: string;\n  clientId: string;\n  googleApiKey: string;\n  channelUrl: string;\n  channelHubName: string;\n  realtimeGeolocationHubName: string;\n  logLevel: number;\n  isMobileApp: boolean;\n  cacheProvider: any;\n  storageProvider: any;\n}\n\nexport class ResgridConfig implements ResgridASConfiguration {\n  public baseApiUrl = (): string => {return 'http://localhost:8080/api/'};\n  public apiVersion: string = 'v4';\n  public channelUrl: string = '';\n  public channelHubName: string = '';\n  public realtimeGeolocationHubName: string = '';\n  public clientId: string = '';\n  public googleApiKey: string = '';\n  public logLevel: number = 0;\n  public isMobileApp: boolean = false;\n  public cacheProvider: any = null;\n  public storageProvider: any = null;\n\n  get apiUrl(): string {\n    return `${this.baseApiUrl()}/api/${this.apiVersion}`;\n  }\n}\n","import { HttpParameterCodec } from '@angular/common/http';\n\nexport class UriEncoder implements HttpParameterCodec {\n  encodeKey(key: string): string {\n    return encodeURIComponent(key);\n  }\n\n  encodeValue(value: string): string {\n    return encodeURIComponent(value);\n  }\n\n  decodeKey(key: string): string {\n    return decodeURIComponent(key);\n  }\n\n  decodeValue(value: string): string {\n    return decodeURIComponent(value);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ResgridConfig } from '../resgrid-config';\n\n@Injectable({\n    providedIn: 'root',\n  })\nexport class LoggerService {\n\n  public constructor(private config: ResgridConfig){\n\n  }\n\n  logError(message: any, ...args: any[]): void {\n    if (this.config.logLevel >= 2) {\n      if (!!args && !!args.length) {\n          console.error(`[ERROR] ${this.config.clientId} - ${message}`, ...args);\n        } else {\n          console.error(`[ERROR] ${this.config.clientId} - ${message}`);\n        }\n    }\n  }\n\n  logWarning(message: any, ...args: any[]): void {\n    if (this.config.logLevel >= 1) {\n      if (!!args && !!args.length) {\n          console.warn(`[WARN] ${this.config.clientId} - ${message}`, ...args);\n        } else {\n          console.warn(`[WARN] ${this.config.clientId} - ${message}`);\n        }\n    }\n  }\n\n  logDebug(message: any, ...args: any[]): void {\n    if (this.config.logLevel >= 0) {\n      if (!!args && !!args.length) {\n        console.log(`[DEBUG] ${this.config.clientId} - ${message}`, ...args);\n      } else {\n        console.log(`[DEBUG] ${this.config.clientId} - ${message}`);\n      }\n    }\n  }\n}","import { Inject, Injectable } from '@angular/core';\nimport { ResgridConfig } from '../resgrid-config';\nimport { LoggerService } from './logger.service';\nimport { IStorageProvider } from '../models/storageProvider';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class StorageService {\n  constructor(@Inject('RG_STORAGE_PROVIDER') private storageProvider: IStorageProvider, private logger: LoggerService, private config: ResgridConfig) {}\n\n  async read(key: string): Promise<string | null> {\n    if (this.storageProvider) {\n      return await this.storageProvider.read(key);\n    } \n\n    const combinedKey = `${this.config.clientId}.${key}`;\n    const storedValue = localStorage.getItem(combinedKey);\n\n    if (storedValue) {\n      this.logger.logDebug(\n        `readKey ${combinedKey} length: ${storedValue.length}`\n      );\n\n      return storedValue;\n    }\n\n    this.logger.logDebug(\n      `readKey ${combinedKey} empty`\n    );\n\n    return null;\n  }\n\n  async write(key: string, value: string): Promise<void> {\n    if (this.storageProvider) {\n      return await this.storageProvider.write(key, value);\n    }\n\n    localStorage.setItem(`${this.config.clientId}.${key}`, value);\n  }\n\n  async remove(key: string): Promise<void> {\n    if (this.storageProvider) {\n      return await this.storageProvider.remove(key);\n    }\n\n    localStorage.removeItem(`${this.config.clientId}.${key}`);\n  }\n\n  async clear(): Promise<void> {\n    if (this.storageProvider) {\n      return await this.storageProvider.clear();\n    }\n\n    localStorage.clear();\n  }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n  BehaviorSubject,\n  from,\n  interval,\n  Observable,\n  of,\n  Subscription,\n  throwError,\n} from 'rxjs';\nimport { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { AuthStateModel } from '../../models/v4/auth/authState';\nimport { AuthTokenModel } from '../../models/v4/auth/authTokens';\nimport { LoginModel } from '../../models/v4/auth/login';\nimport { ProfileModel } from '../../models/v4/auth/profile';\nimport { ResgridConfig } from '../../resgrid-config';\n\nimport jwt_decode from 'jwt-decode';\nimport { UriEncoder } from '../uriEncoder.service';\nimport { StorageService } from '../storage.service';\nimport { LoggerService } from '../logger.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AuthService {\n  public isRefreshing = false;\n  public refreshTokenSubject: BehaviorSubject<ProfileModel | null> = new BehaviorSubject<ProfileModel | null>(\n    null\n  );\n\n  private initalState: AuthStateModel = {\n    profile: undefined,\n    tokens: undefined,\n    authReady: false,\n  };\n  private authReady$ = new BehaviorSubject<boolean>(false);\n  private state: BehaviorSubject<AuthStateModel>;\n  private refreshSubscription$: Subscription | undefined;\n\n  state$: Observable<AuthStateModel>;\n  tokens$: Observable<AuthTokenModel | undefined>;\n  profile$: Observable<ProfileModel | undefined>;\n  loggedIn$: Observable<boolean> | undefined;\n\n  constructor(\n    private http: HttpClient,\n    private config: ResgridConfig,\n    private storageService: StorageService,\n    private logger: LoggerService\n  ) {\n    this.state = new BehaviorSubject<AuthStateModel>(this.initalState);\n    this.state$ = this.state.asObservable();\n\n    this.tokens$ = this.state.pipe(\n      filter(\n        (state) => state.authReady != undefined && state.authReady != null && state.authReady != false\n      ),\n      map((state) => state.tokens)\n    );\n\n    this.profile$ = this.state.pipe(\n      filter(\n        (state) => state.authReady != undefined && state.authReady != null && state.authReady != false\n      ),\n      map((state) => state.profile)\n    );\n\n    this.loggedIn$ = this.tokens$.pipe(map((tokens) => !!tokens));\n  }\n\n  public init(): Observable<AuthTokenModel> {\n    return this.startupTokenRefresh().pipe(tap(() => this.scheduleRefresh()));\n  }\n\n  public login(user: LoginModel): Observable<ProfileModel> {\n    return this.getTokens(user, 'password');\n  }\n\n  public async logout(): Promise<void> {\n    this.updateState({ profile: undefined, tokens: undefined });\n    if (this.refreshSubscription$) {\n      this.refreshSubscription$.unsubscribe();\n      this.refreshSubscription$ = undefined;\n    }\n    return await this.removeToken();\n  }\n\n  public refreshTokens(): Observable<ProfileModel | null> {\n    this.logger.logDebug('Starting refresh token flow');\n\n    return from(this.retrieveTokens()).pipe(\n      switchMap((storedTokens) => {\n        if (\n          storedTokens &&\n          storedTokens.refresh_token &&\n          storedTokens.refresh_token.length > 0\n        ) {\n          if (!this.isRefreshing) {\n            this.isRefreshing = true;\n\n            this.logger.logDebug('Retrieved stored tokens');\n\n            return this.getTokens(\n              {\n                username: '',\n                password: '',\n                refresh_token: storedTokens.refresh_token,\n              },\n              'refresh_token'\n            );\n          } else {\n            return this.refreshTokenSubject.pipe(\n              filter((profile) => profile !== null),\n              take(1),\n              switchMap((profile) => of(profile))\n            );\n          }\n        }\n        this.logger.logDebug('No stored tokens retrieved');\n        return of(null);\n      })\n    );\n  }\n\n  private async storeToken(tokens: AuthTokenModel): Promise<void> {\n    this.logger.logDebug('storing tokens');\n\n    const previousTokens = await this.retrieveTokens();\n    if (previousTokens != null && tokens.refresh_token == null) {\n      tokens.refresh_token = previousTokens.refresh_token;\n    }\n\n    this.storageService.write('auth-tokens', JSON.stringify(tokens));\n  }\n\n  public async retrieveTokens(): Promise<AuthTokenModel | null> {\n    var tokens = await this.storageService.read('auth-tokens');\n\n    if (tokens) {\n      return JSON.parse(tokens) as AuthTokenModel;\n    }\n    return null;\n  }\n\n  private async removeToken(): Promise<void> {\n    await this.storageService.remove('auth-tokens');\n  }\n\n  private updateState(newState: AuthStateModel): void {\n    const previousState = this.state.getValue();\n    this.state.next(Object.assign({}, previousState, newState));\n  }\n\n  private getTokens(\n    data: LoginModel,\n    grantType: string\n  ): Observable<ProfileModel> {\n    let headers: HttpHeaders = new HttpHeaders();\n    headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\n\n    let params = new HttpParams({\n      encoder: new UriEncoder(),\n    });\n\n    params = params.set('grant_type', grantType);\n\n    if (data.refresh_token && data.refresh_token.length > 0) {\n      params = params.append('refresh_token', data.refresh_token);\n    } else {\n      if (this.config.isMobileApp) {\n        params = params.append('scope', 'openid profile offline_access mobile');\n      } else {\n        params = params.append('scope', 'openid profile offline_access');\n      }\n\n      params = params.append('username', data.username);\n      params = params.append('password', data.password);\n    }\n\n    this.logger.logDebug('performing token connection');\n\n    return this.http\n      .post<AuthTokenModel>(`${this.config.apiUrl}/connect/token`, params, {\n        headers,\n      })\n      .pipe(\n        map((res) => {\n          const now = new Date();\n          res.expiration_date = new Date(now.getTime() + res.expires_in * 1000)\n            .getTime()\n            .toString();\n\n          this.logger.logDebug(`got token expiration: ${res.expiration_date}`);\n\n          const profile: ProfileModel = jwt_decode(res.id_token);\n\n          this.storeToken(res);\n          this.updateState({ authReady: true, tokens: res, profile });\n\n          this.isRefreshing = false;\n          this.refreshTokenSubject.next(profile);\n\n          return profile;\n        }),\n        catchError((err) => {\n          this.isRefreshing = false;\n          this.refreshTokenSubject.next(null);\n\n          //this.authService.logout();\n          return throwError(err);\n        })\n      );\n  }\n\n  private startupTokenRefresh(): Observable<AuthTokenModel> {\n    return from(this.retrieveTokens()).pipe(\n      map((tokens: AuthTokenModel | null) => {\n        if (!tokens) {\n          this.updateState({ authReady: true });\n          return of('No token in Storage');\n        }\n        const profile: ProfileModel = jwt_decode(tokens.id_token);\n        this.updateState({ tokens, profile });\n\n        if (+tokens.expiration_date > new Date().getTime()) {\n          this.updateState({ authReady: true });\n        }\n\n        return this.refreshTokens();\n      }),\n      catchError((error: any) => {\n        // Commented out for now, need to figure out how to handle this\n        //await this.logout();\n        this.updateState({ authReady: true });\n        return of(error);\n      })\n    );\n  }\n\n  private scheduleRefresh(): void {\n    this.refreshSubscription$ = this.tokens$\n      .pipe(\n        take(1),\n        // refresh every half the total expiration time\n        map((tokens: AuthTokenModel | undefined) => {\n          if (tokens) {\n            this.logger.logDebug(\n              `Will refresh auth token in ${tokens.expires_in * 0.8 * 1000}`\n            );\n            interval(tokens.expires_in * 0.8 * 1000);\n          }\n        }),\n        map(() => this.refreshTokens())\n      )\n      .subscribe();\n  }\n}\n","import { Injectable, NgModule } from '@angular/core';\nimport {\n  HttpEvent,\n  HttpInterceptor,\n  HttpHandler,\n  HttpRequest,\n  HttpErrorResponse,\n} from '@angular/common/http';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { BehaviorSubject, Observable, from, of, throwError, timer } from 'rxjs';\nimport { AuthService } from '../services/v4/auth.service';\nimport { ResgridConfig } from '../resgrid-config';\nimport {\n  catchError,\n  concatMap,\n  delay,\n  filter,\n  retryWhen,\n  switchMap,\n  take,\n} from 'rxjs/operators';\nimport { LoggerService } from '../services/logger.service';\n\nexport const retryCount = 3;\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HttpsRequestInterceptor implements HttpInterceptor {\n  constructor(\n    private authService: AuthService,\n    private config: ResgridConfig,\n    private logger: LoggerService\n  ) {}\n\n  intercept(\n    req: HttpRequest<any>,\n    next: HttpHandler\n  ): Observable<HttpEvent<any>> {\n    if (this.shouldAddTokenToRequest(req.url)) {\n      return from(this.addAuthHeader(req)).pipe(\n        switchMap((dupReq: any) => {\n          return next.handle(dupReq).pipe(\n            catchError((error) => {\n              if (error instanceof HttpErrorResponse && error.status === 401) {\n                return this.handle401Error(req, next);\n              }\n\n              return throwError(() => error);\n            })\n          );\n        })\n      );\n    }\n    return next.handle(req);\n  }\n\n  private handle401Error(\n    req: HttpRequest<any>,\n    next: HttpHandler\n  ): Observable<HttpEvent<any>> {\n    return this.authService.refreshTokens().pipe(\n      switchMap((response) => this.addAuthHeader(req)),\n      switchMap((dupReq: any) => {\n        return next.handle(dupReq);\n      }),\n      catchError((err) => {\n        this.authService.logout().then(() => {\n          this.logger.logDebug('User logged out due to 401 error');\n        });\n        return throwError(() => err);\n      })\n    );\n  }\n\n  private async addAuthHeader(\n    request: HttpRequest<any>\n  ): Promise<HttpRequest<any>> {\n    const tokens = await this.authService.retrieveTokens();\n    if (tokens) {\n      const dupReq = request.clone({\n        headers: request.headers.set(\n          'Authorization',\n          'Bearer ' + tokens.access_token\n        ),\n      });\n\n      return dupReq;\n    }\n\n    return request;\n  }\n\n  private shouldAddTokenToRequest(requestUrl: string): boolean {\n    if (!requestUrl.startsWith(this.config.baseApiUrl())) {\n      return false;\n    }\n\n    if (requestUrl.includes('/connect/token')) {\n      return false;\n    }\n\n    return true;\n  }\n}\n","import {\n  HttpContext,\n  HttpContextToken,\n  HttpResponse,\n} from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { ICacheable } from '../models/cacheable';\nimport { ICacheProvider } from '../models/cacheProvider';\nimport { WebCacheProvider } from '../providers/webcache.provider';\nimport { LoggerService } from './logger.service';\n\nexport const CACHE = new HttpContextToken<boolean>(() => false);\nexport const CACHE_KEY = new HttpContextToken<string>(() => '');\nexport const CACHE_TYPE = new HttpContextToken<number>(() => 0);\nexport const CACHE_TIME = new HttpContextToken<number>(() => 0);\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CacheService {\n\n  constructor(@Inject('RG_CACHE_PROVIDER') private cacheProvider: ICacheProvider, private loggerService: LoggerService) {}\n\n  public setCacheInfoHttpContext(type: ICacheable): HttpContext {\n    let httpContext = new HttpContext();\n    httpContext.set(CACHE, true);\n    httpContext.set(CACHE_KEY, type.cacheKey);\n    httpContext.set(CACHE_TYPE, type.cacheType);\n    httpContext.set(CACHE_TIME, type.cacheTime);\n\n    return httpContext;\n  }\n\n  public async initalize(): Promise<void> {\n    if (this.cacheProvider) {\n      return await this.cacheProvider.initialize();\n    } else {\n      this.loggerService.logError('No cache provider found');\n      return new Promise<void>((resolve, reject) => {\n        resolve();\n      });\n    }\n  }\n\n  public async put(data: ICacheable): Promise<void> {\n    if (this.cacheProvider) {\n      data.cacheSavedOn = new Date();\n      const expiresOn = new Date();\n      expiresOn.setMinutes(expiresOn.getMinutes() + data.cacheTime);\n\n      await this.cacheProvider.put(\n        data.cacheKey,\n        expiresOn,\n        JSON.stringify(data)\n      );\n    }\n  }\n\n  public async get<T extends ICacheable>(key: string): Promise<T> {\n    if (this.cacheProvider) {\n\n      try {\n        const data = await this.cacheProvider.get(key);\n\n        if (data && data.length > 0) {\n          const result = JSON.parse(data) as T;\n\n          if (result) {\n            const now = new Date();\n\n            if (result.cacheSavedOn) {\n              result!.cacheSavedOn!.setMinutes(\n                result!.cacheSavedOn!.getMinutes() + result.cacheTime\n              );\n              const diff = now.getTime() - result!.cacheSavedOn!.getTime();\n\n              if (diff <= 0) {\n                result.cacheHitFailed = true;\n                await this.delete(key);\n              }\n            }\n\n            return result;\n          }\n        }\n      } catch (error) {\n        return { cacheHitFailed: true } as T;\n      }\n    }\n\n    return { cacheHitFailed: true } as T;\n  }\n\n  public async delete(key: string): Promise<void> {\n    if (this.cacheProvider) {\n      await this.cacheProvider.delete(key);\n    }\n  }\n\n  public async putHttpResponse(\n    cacheKey: string,\n    cacheTime: number,\n    response: HttpResponse<any>\n  ): Promise<void> {\n    if (this.cacheProvider) {\n      const expiresOn = new Date();\n      expiresOn.setMinutes(expiresOn.getMinutes() + cacheTime);\n\n      await this.cacheProvider.put(\n        cacheKey,\n        expiresOn,\n        JSON.stringify(response)\n      );\n    }\n  }\n\n  public async getHttpResponse(\n    key: string\n  ): Promise<HttpResponse<any> | undefined> {\n    if (this.cacheProvider) {\n      const data = await this.cacheProvider.get(key);\n\n      if (data && data.length > 0) {\n        const result = JSON.parse(data) as HttpResponse<any>;\n        return result;\n      }\n    }\n\n    return undefined;\n  }\n\n  public async deleteHttpResponse(key: string): Promise<void> {\n    if (this.cacheProvider) {\n      await this.cacheProvider.delete(key);\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  HttpEvent,\n  HttpInterceptor,\n  HttpHandler,\n  HttpRequest,\n  HttpResponse,\n  HttpContextToken,\n  HttpErrorResponse,\n} from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { switchMap, tap, catchError } from 'rxjs/operators';\nimport {\n  CACHE,\n  CacheService,\n  CACHE_KEY,\n  CACHE_TIME,\n  CACHE_TYPE,\n} from '../services/cache.service';\nimport { LoggerService } from '../services/logger.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CacheInterceptor implements HttpInterceptor {\n  constructor(private cacheService: CacheService, private loggerService: LoggerService) {}\n\n  intercept(\n    req: HttpRequest<any>,\n    next: HttpHandler\n  ): Observable<HttpEvent<any>> {\n    //check if the outgoing calls are GETs\n    if (req.method === 'GET') {\n      if (req.context.get(CACHE)) {\n        if (req.context.get(CACHE_TYPE) === 1) {\n          return next.handle(req).pipe(\n          tap<HttpEvent<any>>((httpEvent: HttpEvent<any>) => {\n              if (httpEvent instanceof HttpResponse && httpEvent.status === 200) {\n                this.cacheService.putHttpResponse(\n                  req.context.get(CACHE_KEY),\n                  req.context.get(CACHE_TIME),\n                  httpEvent\n                );\n              }\n            }),\n            switchMap((httpEvent: HttpEvent<any>) => {\n              return of(httpEvent);\n            }),\n            catchError((err: HttpErrorResponse) => {\n              throw err;\n            })\n          );\n        } else { // TODO: Cache Type 2\n          // pass along non-cacheable requests\n          return next.handle(req);\n        }\n      } else {\n        // pass along non-cacheable requests\n        return next.handle(req);\n      }\n    } else {\n      // pass along non-cacheable requests\n      return next.handle(req);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { HttpsRequestInterceptor } from './http.auth.interceptor';\nimport { CacheInterceptor } from './http.cache.interceptor';\n\n@NgModule({\n  providers: [\n    {\n      provide: HTTP_INTERCEPTORS,\n      useClass: HttpsRequestInterceptor,\n      multi: true,\n    },\n    {\n      provide: HTTP_INTERCEPTORS,\n      useClass: CacheInterceptor,\n      multi: true,\n    },\n  ],\n})\nexport class HttpInterceptorModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { from, Observable, of } from 'rxjs';\nimport { switchMap, catchError } from 'rxjs/operators';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { DepartmentVoiceResult } from '../../models/v4/voice/departmentVoiceResult';\nimport { VoiceSessionConnectionResult } from '../../models/v4/voice/voiceSessionConnectionResult';\nimport { CacheService } from '../cache.service';\nimport { LoggerService } from '../logger.service';\nimport { DepartmentAudioResult } from '../../models/v4/voice/departmentAudioResult';\nimport { CanConnectToVoiceSessionResult } from '../../models/v4/voice/canConnectToVoiceSessionResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class VoiceService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig,\n    private cacheService: CacheService, \n    private loggerService: LoggerService\n  ) {}\n\n  public getDepartmentVoiceSettings(): Observable<DepartmentVoiceResult> {\n    const url = this.config.apiUrl + '/Voice/GetDepartmentVoiceSettings';\n    return this.http.get<DepartmentVoiceResult>(url);\n  }\n\n  public connectToSession(sessionId: string): Observable<VoiceSessionConnectionResult> {\n    const url = this.config.apiUrl + '/Voice/ConnectToSession?sessionId=' + sessionId;\n    return this.http.get<VoiceSessionConnectionResult>(url);\n  }\n\n  public getDepartmentAudioStreams(): Observable<DepartmentAudioResult> {\n    const url = this.config.apiUrl + '/Voice/GetDepartmentAudioStreams';\n    return this.http.get<DepartmentAudioResult>(url);\n  }\n\n  public getCanConnectToVoiceSession(token: string): Observable<CanConnectToVoiceSessionResult> {\n    const url = this.config.apiUrl + '/Voice/CanConnectToVoiceSession?token=' + token;\n    return this.http.get<CanConnectToVoiceSessionResult>(url);\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { ElementRef, Injectable } from '@angular/core';\nimport {\n  ConnectionQuality,\n  ConnectionState,\n  DataPacket_Kind,\n  DisconnectReason,\n  ExternalE2EEKeyProvider,\n  LocalAudioTrack,\n  LocalParticipant,\n  LogLevel,\n  MediaDeviceFailure,\n  Participant,\n  ParticipantEvent,\n  RemoteParticipant,\n  RemoteTrackPublication,\n  RemoteVideoTrack,\n  Room,\n  RoomConnectOptions,\n  RoomEvent,\n  RoomOptions,\n  SimulationScenario,\n  Track,\n  TrackPublication,\n  VideoCaptureOptions,\n  VideoCodec,\n  VideoPresets,\n  VideoQuality,\n  createAudioAnalyser,\n  setLogLevel,\n  supportsAV1,\n  supportsVP9,\n} from 'livekit-client';\nimport { Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { VoiceService } from './v4/voice.service';\nimport {\n  IRGPluginOptionRoom,\n  IRGPluginOptions,\n} from '../models/plugin/rgPluginOptions';\nimport { ResgridConfig } from '../resgrid-config';\nimport { CanConnectToVoiceSessionResult } from '../models/v4/voice/canConnectToVoiceSessionResult';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LiveKitService {\n  private departmentVoiceOptions: IRGPluginOptions = {\n    token: '',\n    url: '',\n    type: 0,\n    defaultMic: '',\n    defaultSpeaker: '',\n    apiUrl: '/',\n    canConnectToVoiceApiToken: '',\n    rooms: [],\n  };\n  private canConnect: CanConnectToVoiceSessionResult | null = null;\n  private state = {\n    isFrontFacing: false,\n    encoder: new TextEncoder(),\n    decoder: new TextDecoder(),\n    defaultDevices: new Map<MediaDeviceKind, string>(),\n    bitrateInterval: undefined as any,\n  };\n\n  public room: Room | null = null;\n  public devices: MediaDeviceInfo[] = [];\n\n  public callConnected: boolean = false;\n  public startTime: number | null = null;\n\n  public participants: Participant[] = [];\n  elementMapping: { [k: string]: MediaDeviceKind } = {\n    //'video-input': 'videoinput',\n    //'audio-input': 'audioinput',\n    //'audio-output': 'audiooutput',\n  };\n\n  constructor(\n    private http: HttpClient,\n    private voiceService: VoiceService,\n    private config: ResgridConfig\n  ) {}\n\n  init(): Observable<IRGPluginOptions> {\n    return this.voiceService.getDepartmentVoiceSettings().pipe(\n      take(1),\n      map((data) => {\n        if (data && data.Data && data.Data.VoiceEnabled) {\n          let options: IRGPluginOptions = {\n            token: '',\n            url: data.Data.VoipServerWebsocketSslAddress,\n            type: 0,\n            defaultMic: '',\n            defaultSpeaker: '',\n            apiUrl: this.config.apiUrl + '/',\n            canConnectToVoiceApiToken: data.Data.CanConnectApiToken,\n            rooms: [],\n          };\n\n          if (data.Data.Channels && data.Data.Channels.length > 0) {\n            data.Data.Channels.forEach((channel) => {\n              options.rooms.push({\n                name: channel.Name,\n                id: channel.Id,\n                token: channel.Token,\n              });\n            });\n          }\n\n          this.departmentVoiceOptions = options;\n        }\n\n        return this.departmentVoiceOptions;\n      })\n    );\n  }\n\n  canConnectToVoice() {\n    return this.voiceService\n      .getCanConnectToVoiceSession(\n        this.departmentVoiceOptions!.canConnectToVoiceApiToken\n      )\n      .pipe(\n        map((res: CanConnectToVoiceSessionResult) => {\n          this.canConnect = res;\n          return res;\n        })\n      );\n  }\n\n  public async connect(room: IRGPluginOptionRoom) {\n    const simulcast = false;\n    const dynacast = true;  // optimize publishing bandwidth and CPU for published tracks\n    const forceTURN = false;\n    const adaptiveStream = true; // automatically manage subscribed video quality\n    const shouldPublish = true;\n    const autoSubscribe = true;\n\n    setLogLevel(LogLevel.debug);\n\n    const roomOpts: RoomOptions = {\n      adaptiveStream,\n      dynacast,\n      publishDefaults: {\n        simulcast,\n        videoSimulcastLayers: [VideoPresets.h90, VideoPresets.h216],\n        videoCodec: 'vp8',\n        dtx: true,\n        red: true,\n        forceStereo: false,\n      },\n      videoCaptureDefaults: {\n        resolution: VideoPresets.h720.resolution,\n      },\n      e2ee: undefined,\n    };\n\n    const connectOpts: RoomConnectOptions = {\n      autoSubscribe: autoSubscribe,\n    };\n    if (forceTURN) {\n      connectOpts.rtcConfig = {\n        iceTransportPolicy: 'relay',\n      };\n    }\n    await this.connectToRoom(\n      this.departmentVoiceOptions.url,\n      room.token,\n      roomOpts,\n      connectOpts,\n      shouldPublish\n    );\n  }\n\n  private async connectToRoom(\n    url: string,\n    token: string,\n    roomOptions?: RoomOptions,\n    connectOptions?: RoomConnectOptions,\n    shouldPublish?: boolean\n  ): Promise<Room | undefined> {\n    this.room = new Room(roomOptions);\n\n    const startTime = Date.now();\n    await this.room.prepareConnection(url, token);\n    const prewarmTime = Date.now() - startTime;\n    const that = this;\n    this.room\n      .on(RoomEvent.ParticipantConnected, (participant: RemoteParticipant) => { that.participantConnected(that, participant);})\n      .on(RoomEvent.Disconnected, that.handleRoomDisconnect)\n      .on(RoomEvent.DataReceived, that.handleData)\n      .on(RoomEvent.ParticipantDisconnected, (participant: RemoteParticipant) => { that.renderParticipant(participant, true);})\n      .on(RoomEvent.Reconnected, async () => {})\n      .on(RoomEvent.LocalTrackPublished, (pub) => {\n        const track = pub.track as LocalAudioTrack;\n\n        if (track instanceof LocalAudioTrack) {\n          const { calculateVolume } = createAudioAnalyser(track);\n\n          setInterval(() => {\n            const codecElm = <HTMLElement>(\n              document.getElementById('local-volume')\n            );\n            codecElm.setAttribute('value', calculateVolume().toFixed(4));\n          }, 200);\n        }\n        // When the track is a LocalVideoTrack the below errors out on the participant.getTrack call\n        this.renderParticipant(this.room!.localParticipant);\n        this.updateButtonsForPublishState();\n        //this.renderScreenShare(this.room);\n      })\n      .on(RoomEvent.LocalTrackUnpublished, () => {\n        this.renderParticipant(this.room!.localParticipant);\n        this.updateButtonsForPublishState();\n        //this.renderScreenShare(this.room);\n      })\n      .on(RoomEvent.RoomMetadataChanged, (metadata) => {})\n      .on(RoomEvent.MediaDevicesChanged, this.handleDevicesChanged)\n      .on(RoomEvent.AudioPlaybackStatusChanged, () => {\n        if (this.room!.canPlaybackAudio) {\n          //const element = <HTMLButtonElement>(\n          //  document.getElementById('start-audio-button')\n          //);\n          //element.setAttribute('disabled', 'true');\n        } else {\n          //const element = <HTMLButtonElement>(\n          //  document.getElementById('start-audio-button')\n          //);\n          //element.setAttribute('disabled', 'true');\n        }\n      })\n      .on(RoomEvent.MediaDevicesError, (e: Error) => {\n        const failure = MediaDeviceFailure.getFailure(e);\n      })\n      .on(\n        RoomEvent.ConnectionQualityChanged,\n        (quality: ConnectionQuality, participant?: Participant) => {}\n      )\n      .on(RoomEvent.TrackSubscribed, (track, pub, participant) => {\n        this.renderParticipant(participant);\n        //this.renderScreenShare(this.room);\n      })\n      .on(RoomEvent.TrackUnsubscribed, (_, pub, participant) => {\n        this.renderParticipant(participant);\n        //this.renderScreenShare(this.room);\n      })\n      .on(RoomEvent.SignalConnected, async () => {\n        const signalConnectionTime = Date.now() - startTime;\n        // speed up publishing by starting to publish before it's fully connected\n        // publishing is accepted as soon as signal connection has established\n        if (shouldPublish) {\n          //await this.room!.localParticipant.enableCameraAndMicrophone();\n          //await this.room!.localParticipant.setMicrophoneEnabled(true);\n          //this.updateButtonsForPublishState();\n        }\n      })\n      .on(RoomEvent.ParticipantEncryptionStatusChanged, () => {\n        this.updateButtonsForPublishState();\n      })\n      .on(\n        RoomEvent.TrackStreamStateChanged,\n        (pub, streamState, participant) => {}\n      );\n\n    try {\n      // read and set current key from input\n      //const cryptoKey = this.e2EEKey;\n      //this.state.e2eeKeyProvider.setKey(cryptoKey);\n      //if (this.e2ee) {\n      // await this.room.setE2EEEnabled(true);\n      //}\n\n      await this.room.connect(url, token, connectOptions);\n      const elapsed = Date.now() - startTime;\n    } catch (error: any) {\n      let message: any = error;\n      if (error.message) {\n        message = error.message;\n      }\n      return;\n    }\n    let currentRoom = this.room;\n    this.setButtonsForState(true);\n\n    if (this.room && this.room.remoteParticipants) {\n      this.room.remoteParticipants.forEach((participant) => {\n        this.participantConnected(this, participant);\n      });\n    }\n    this.participantConnected(this, this.room.localParticipant);\n\n    //await this.room.localParticipant.setMicrophoneEnabled(false);\n    await this.room.localParticipant.setCameraEnabled(false);\n\n    return this.room;\n  }\n\n  renderParticipant(participant: Participant, remove: boolean = false) {\n    const container = <HTMLElement>document.getElementById('participants-area');\n    if (!container) return;\n    const { identity } = participant;\n    let div = <HTMLElement>document.getElementById('participant-' + identity);\n    if (!div && !remove) {\n      div = document.createElement('div');\n      div.id = `participant-${identity}`;\n      div.className = 'participant';\n      div.innerHTML = `\n      <video id=\"video-${identity}\"></video>\n      <audio id=\"audio-${identity}\"></audio>\n      <div class=\"info-bar\">\n        <div id=\"name-${identity}\" class=\"name\">\n        </div>\n        <div style=\"text-align: center;\">\n          <span id=\"codec-${identity}\" class=\"codec\">\n          </span>\n          <span id=\"size-${identity}\" class=\"size\">\n          </span>\n          <span id=\"bitrate-${identity}\" class=\"bitrate\">\n          </span>\n        </div>\n        <div class=\"right\">\n          <span id=\"signal-${identity}\"></span>\n          <span id=\"mic-${identity}\" class=\"mic-on\"></span>\n          <span id=\"e2ee-${identity}\" class=\"e2ee-on\"></span>\n        </div>\n      </div>\n      ${\n        participant instanceof RemoteParticipant\n          ? `<div class=\"volume-control\">\n        <input id=\"volume-${identity}\" type=\"range\" min=\"0\" max=\"1\" step=\"0.1\" value=\"1\" orient=\"vertical\" />\n      </div>`\n          : `<progress id=\"local-volume\" max=\"1\" value=\"0\"></progress>`\n      }`;\n      //<video class=\"video-elm\" id=\"video-${identity}\"></video>\n\n      container.appendChild(div);\n      let sizeElm = <HTMLSpanElement>(\n        document.getElementById('size-' + identity)\n      );\n      //let videoElm = <HTMLVideoElement>(\n      //  document.getElementById('video-' + identity)\n      //);\n\n      //videoElm.onresize = () => {\n      //  this.updateVideoSize(videoElm!, sizeElm!);\n      //};\n    }\n    let videoElm = <HTMLVideoElement>(\n      document.getElementById('video-' + identity)\n    );\n\n    let audioELm = <HTMLAudioElement>(\n      document.getElementById('audio-' + identity)\n    );\n\n    if (remove) {\n      div.remove();\n      container.style.display = 'none';\n      if (videoElm) {\n        videoElm.srcObject = null;\n        videoElm.src = '';\n      }\n      if (audioELm) {\n        audioELm.srcObject = null;\n        audioELm.src = '';\n      }\n      return;\n    }\n\n    // update properties\n    const element = <HTMLElement>document.getElementById('name-' + identity);\n    element.innerHTML = participant.identity;\n\n    if (participant instanceof LocalParticipant) {\n      element.innerHTML += ' (you)';\n    }\n    const micElm = <HTMLElement>document.getElementById('mic-' + identity);\n    const signalElm = <HTMLElement>(\n      document.getElementById('signal-' + identity)\n    );\n\n    //try {\n      const cameraPub = undefined;//participant.getTrackPublication(Track.Source.Camera);\n      const micPub = participant.getTrackPublication(Track.Source.Microphone);\n\n      if (participant.isSpeaking) {\n        div!.classList.add('speaking');\n      } else {\n        div!.classList.remove('speaking');\n      }\n\n      if (participant instanceof RemoteParticipant) {\n        //const volumeSlider = <HTMLInputElement>(\n        //  document.getElementById('volume-' + identity)\n        //);\n        //volumeSlider.addEventListener('input', (ev) => {\n        //  participant.setVolume(\n        //    Number.parseFloat((ev.target as HTMLInputElement).value)\n        //  );\n        //});\n\n        participant.setVolume(1);\n      }\n\n      /*\n    const cameraEnabled = false;//cameraPub && cameraPub.isSubscribed && !cameraPub.isMuted;\n    if (cameraEnabled) {\n      if (participant instanceof LocalParticipant) {\n        // flip\n        videoElm.style.transform = 'scale(-1, 1)';\n      } else if (!cameraPub?.videoTrack?.attachedElements.includes(videoElm)) {\n        const renderStartTime = Date.now();\n        // measure time to render\n        videoElm.onloadeddata = () => {\n          const elapsed = Date.now() - renderStartTime;\n          let fromJoin = 0;\n          if (\n            participant.joinedAt &&\n            participant.joinedAt.getTime() < this.startTime!\n          ) {\n            fromJoin = Date.now() - this.startTime!;\n          }\n        };\n      }\n      cameraPub?.videoTrack?.attach(videoElm);\n    } else {\n      // clear information display\n      let element = <HTMLElement>document.getElementById('size-' + identity);\n      element.innerHTML = '';\n      if (cameraPub?.videoTrack) {\n        // detach manually whenever possible\n        cameraPub.videoTrack?.detach(videoElm);\n      } else {\n        videoElm.src = '';\n        videoElm.srcObject = null;\n      }\n    }\n    */\n\n      const micEnabled = micPub && micPub.isSubscribed && !micPub.isMuted;\n      if (micEnabled) {\n        if (!(participant instanceof LocalParticipant)) {\n          // don't attach local audio\n          audioELm.onloadeddata = () => {\n            if (\n              participant.joinedAt &&\n              participant.joinedAt.getTime() < this.startTime!\n            ) {\n              const fromJoin = Date.now() - this.startTime!;\n            }\n          };\n          micPub?.audioTrack?.attach(audioELm);\n        }\n        //micElm.className = 'mic-on';\n        //micElm.innerHTML = '<i class=\"fas fa-microphone\"></i>';\n      } else {\n        //micElm.className = 'mic-off';\n        //micElm.innerHTML = '<i class=\"fas fa-microphone-slash\"></i>';\n      }\n    //} catch (error) {}\n\n    //let e2eeElm = <HTMLElement>document.getElementById('e2ee-' + identity);\n\n    //if (participant.isEncrypted) {\n    //  e2eeElm.className = 'e2ee-on';\n    //  e2eeElm.innerHTML = '<i class=\"fas fa-lock\"></i>';\n    //} else {\n    //  e2eeElm.className = 'e2ee-off';\n    //  e2eeElm.innerHTML = '<i class=\"fas fa-unlock\"></i>';\n    //}\n\n    //switch (participant.connectionQuality) {\n    //  case ConnectionQuality.Excellent:\n    //  case ConnectionQuality.Good:\n    //  case ConnectionQuality.Poor:\n    //    signalElm.className = `connection-${participant.connectionQuality}`;\n    //    signalElm.innerHTML = '<i class=\"fas fa-circle\"></i>';\n    //    break;\n    //  default:\n    //    signalElm.innerHTML = '';\n    //  // do nothing\n    //}\n  }\n\n  participantConnected(that: any, participant: Participant) {\n    console.log('tracks', participant.trackPublications);\n\n    participant\n      .on(ParticipantEvent.TrackMuted, (pub: TrackPublication) => {\n        that.renderParticipant(participant);\n      })\n      .on(ParticipantEvent.TrackUnmuted, (pub: TrackPublication) => {\n        that.renderParticipant(participant);\n      })\n      .on(ParticipantEvent.IsSpeakingChanged, () => {\n        that.renderParticipant(participant);\n      })\n      .on(ParticipantEvent.ConnectionQualityChanged, () => {\n        that.renderParticipant(participant);\n      });\n  }\n\n  handleRoomDisconnect(reason?: DisconnectReason) {\n    if (!this.room) return;\n    this.setButtonsForState(false);\n    this.renderParticipant(this.room.localParticipant, true);\n    this.room.remoteParticipants.forEach((p) => {\n      this.renderParticipant(p, true);\n    });\n    //this.renderScreenShare(this.room);\n    const container = <HTMLElement>document.getElementById('participants-area');\n\n    if (container) {\n      container.remove();\n    }\n\n    // clear the chat area on disconnect\n    const chat = <HTMLTextAreaElement>document.getElementById('chat');\n    chat.value = '';\n  }\n\n  handleData(msg: Uint8Array, participant?: RemoteParticipant) {\n    console.log('handleData', msg);\n    const str = this.state.decoder.decode(msg);\n    const chat = <HTMLTextAreaElement>document.getElementById('chat');\n    let from = 'server';\n    if (participant) {\n      from = participant.identity;\n    }\n    chat.value += `${from}: ${str}\\n`;\n  }\n\n  updateButtonsForPublishState() {\n    if (!this.room) {\n      return;\n    }\n    const lp = this.room.localParticipant;\n\n    // video\n    this.setButtonState(\n      'toggle-video-button',\n      `${lp.isCameraEnabled ? 'Disable' : 'Enable'} Video`,\n      lp.isCameraEnabled\n    );\n\n    // audio\n    this.setButtonState(\n      'toggle-audio-button',\n      `${lp.isMicrophoneEnabled ? 'Disable' : 'Enable'} Audio`,\n      lp.isMicrophoneEnabled\n    );\n\n    // screen share\n    this.setButtonState(\n      'share-screen-button',\n      lp.isScreenShareEnabled ? 'Stop Screen Share' : 'Share Screen',\n      lp.isScreenShareEnabled\n    );\n\n    // e2ee\n    this.setButtonState(\n      'toggle-e2ee-button',\n      `${this.room.isE2EEEnabled ? 'Disable' : 'Enable'} E2EE`,\n      this.room.isE2EEEnabled\n    );\n  }\n\n  setButtonsForState(connected: boolean) {\n    const connectedSet = [\n      'toggle-video-button',\n      'toggle-audio-button',\n      'share-screen-button',\n      'disconnect-ws-button',\n      'disconnect-room-button',\n      'flip-video-button',\n      'send-button',\n    ];\n    if (this.room && this.room.options.e2ee) {\n      connectedSet.push('toggle-e2ee-button', 'e2ee-ratchet-button');\n    }\n    const disconnectedSet = ['connect-button'];\n\n    const toRemove = connected ? connectedSet : disconnectedSet;\n    const toAdd = connected ? disconnectedSet : connectedSet;\n    toRemove.forEach((id) => {\n      const element = <HTMLButtonElement>document.getElementById(id);\n      if (element) {\n        element.removeAttribute('disabled');\n      }\n    });\n    toAdd.forEach((id) => {\n      const element = <HTMLButtonElement>document.getElementById(id);\n      if (element) {\n        element.setAttribute('disabled', 'true');\n      }\n    });\n  }\n\n  public async toggleAudio(mute: boolean): Promise<boolean> {\n    if (!this.room) return false;\n\n    await this.room.localParticipant.setMicrophoneEnabled(!mute);\n    return this.room.localParticipant.isMicrophoneEnabled;\n  }\n\n  public async toggleVideo(disableCamera: boolean): Promise<boolean> {\n    if (!this.room) return false;\n\n    await this.room.localParticipant.setCameraEnabled(!disableCamera);\n\n    // Donno why, leaving here for now\n    //this.renderParticipant(this.room.localParticipant);\n\n    return this.room.localParticipant.isCameraEnabled;\n  }\n\n  public async disconnect() {\n    if (this.room) {\n      await this.room.disconnect();\n    }\n    if (this.state.bitrateInterval) {\n      clearInterval(this.state.bitrateInterval);\n    }\n  }\n\n  setButtonState(\n    buttonId: string,\n    buttonText: string,\n    isActive: boolean,\n    isDisabled: boolean | undefined = undefined\n  ) {\n    const el = <HTMLButtonElement>document.getElementById(buttonId);\n    if (!el) return;\n    if (isDisabled !== undefined) {\n      el.disabled = isDisabled;\n    }\n    el.innerHTML = buttonText;\n    if (isActive) {\n      el.classList.add('active');\n    } else {\n      el.classList.remove('active');\n    }\n  }\n\n  async handleDevicesChanged() {\n    Promise.all(\n      Object.keys(this.elementMapping).map(async (id) => {\n        const kind = this.elementMapping[id];\n        if (!kind) {\n          return;\n        }\n        this.devices = await Room.getLocalDevices(kind);\n        const element = <HTMLSelectElement>document.getElementById(id);\n        this.populateSelect(\n          element,\n          this.devices,\n          this.state.defaultDevices.get(kind)\n        );\n      })\n    );\n  }\n\n  private updateVideoSize(element: HTMLVideoElement, target: HTMLElement) {\n    target.innerHTML = `(${element.videoWidth}x${element.videoHeight})`;\n  }\n\n  private participantDisconnected(participant: RemoteParticipant) {\n    this.renderParticipant(participant, true);\n  }\n\n  private populateSelect(\n    element: HTMLSelectElement,\n    devices: MediaDeviceInfo[],\n    selectedDeviceId?: string\n  ) {\n    // clear all elements\n    element.innerHTML = '';\n\n    for (const device of devices) {\n      const option = document.createElement('option');\n      option.text = device.label;\n      option.value = device.deviceId;\n      if (device.deviceId === selectedDeviceId) {\n        option.selected = true;\n      }\n      element.appendChild(option);\n    }\n  }\n}\n","import { ChangeDetectorRef, Component, OnInit } from \"@angular/core\";\nimport { DepartmentVoiceChannelResultData } from \"../../models/v4/voice/departmentVoiceResultData\";\nimport { LiveKitService } from \"../../services/livekit.service\";\nimport { IRGPluginOptionRoom } from \"../../models/plugin/rgPluginOptions\";\nimport { AuthService } from \"../../services/v4/auth.service\";\nimport { Subscription } from \"rxjs\";\nimport { SvgIconRegistryService } from \"angular-svg-icon\";\n\n@Component({\n  selector: \"app-resgrid-voice-footer\",\n  templateUrl: \"./voice-footer.component.html\",\n  styleUrls: [\"./voice-footer.component.scss\"]\n})\nexport class VoiceFooterComponent implements OnInit {\n  public isTransmitting: boolean = false;\n  public isVisible: boolean = false;\n  private isInitialized: boolean = false;\n  private isLoggedInSubscription$: Subscription | undefined = undefined;\n  public selectedRoom: IRGPluginOptionRoom | null = null;\n  public rooms: IRGPluginOptionRoom[] = [];\n  private defaultRoom: IRGPluginOptionRoom = { id: '', name: 'Select a Channel', token: ''};\n\n  constructor(private ref: ChangeDetectorRef, public livekitService: LiveKitService, \n    private authService: AuthService, private svgRegistry: SvgIconRegistryService) {\n      this.rooms.push(this.defaultRoom);\n      this.selectedRoom = this.defaultRoom;\n  }\n\n  ngOnInit(): void {\n    this.initSvgs();\n    this.livekitService.handleDevicesChanged();\n\n    this.isLoggedInSubscription$ = this.authService.loggedIn$?.subscribe((isLoggedIn) => {\n      this.rooms = [];\n      this.rooms.push(this.defaultRoom);\n\n      if (isLoggedIn && !this.isInitialized) {\n        this.isInitialized = true;\n        \n        this.livekitService.init().subscribe((data) => {\n          if (data) {\n            if (data.canConnectToVoiceApiToken) {\n              this.rooms = this.rooms.concat(data.rooms);\n\n              this.livekitService.canConnectToVoice().subscribe((canConnectResult) => {\n                if (canConnectResult && canConnectResult.Data) {\n                  this.isVisible = canConnectResult.Data.CanConnect;\n                } else {\n                  this.isVisible = false;\n                }\n              });\n            }\n          }\n        });\n      }\n    });\n  }\n\n  ngOnDestroy(): void {\n    \n  }\n\n  public async toggleTransmitting() {\n    if (this.isTransmitting) {\n      await this.stopTransmitting();\n    } else {\n      await this.startTransmitting();\n    }\n  }\n\n  public async startTransmitting() {\n    this.isTransmitting = await this.livekitService.toggleAudio(false);\n  }\n\n  public async stopTransmitting() {\n    this.isTransmitting = await this.livekitService.toggleAudio(true);\n  }\n\n  public stopTransmittingLeave(): void {\n   \n  }\n\n  public async onChannelChange(room: IRGPluginOptionRoom) {\n    if (room.id === '') {\n      await this.livekitService.disconnect();\n    } else {\n      await this.livekitService.connect(room);\n    }\n  }\n\n  private initSvgs() {\n    // From: https://www.svgrepo.com/\n    this.svgRegistry.addSvg(\"micOn\", '<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#37e22e\"><g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g><g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g><g id=\"SVGRepo_iconCarrier\"> <path d=\"M19 10V12C19 15.866 15.866 19 12 19M5 10V12C5 15.866 8.13401 19 12 19M12 19V22M8 22H16M15 6H13M15 10H13M12 15C10.3431 15 9 13.6569 9 12V5C9 3.34315 10.3431 2 12 2C13.6569 2 15 3.34315 15 5V12C15 13.6569 13.6569 15 12 15Z\" stroke=\"#28d924\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path> </g></svg>');\n    this.svgRegistry.addSvg(\"micOff\", '<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g><g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g><g id=\"SVGRepo_iconCarrier\"> <path d=\"M15 9.4V5C15 3.34315 13.6569 2 12 2C10.8224 2 9.80325 2.67852 9.3122 3.66593M12 19V22M8 22H16M3 3L21 21M5.00043 10C5.00043 10 3.50062 19 12.0401 19C14.51 19 16.1333 18.2471 17.1933 17.1768M19.0317 13C19.2365 11.3477 19 10 19 10M15 6H13M12 15C10.3431 15 9 13.6569 9 12V9L14.1226 14.12C13.5796 14.6637 12.8291 15 12 15Z\" stroke=\"#d51c29\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path> </g></svg>'); \n  }\n}\n","<div class=\"voice-footer\" *ngIf=\"isVisible;\">\n  <div class=\"ngx-resgrid-container-fluid ngx-resgrid-justify-content-center\" style=\"height: 50px;\">\n    <div class=\"ngx-resgrid-row\" style=\"height: 50px;\">\n      <div class=\"ngx-resgrid-col-sm-2\" style=\"height: 50px; padding: 4px; background: #252b3b;min-width: 175px !important;\">\n        <div class=\"ngx-resgrid-text-sm-left ngx-resgrid-d-block\">\n          <select class=\"ngx-resgrid-form-control\" [(ngModel)]=\"selectedRoom\" (ngModelChange)=\"onChannelChange($event)\">\n            <option *ngFor=\"let room of rooms;\" [ngValue]=\"room\">{{room.name}}</option>\n          </select>\n        </div>\n      </div>\n      <div class=\"ngx-resgrid-col-sm-2\" style=\"height: 50px; padding: 4px; background: #252b3b;min-width: 10px;max-width: 10px;\">\n        <div class=\"ngx-resgrid-text-sm-left ngx-resgrid-d-block\">\n          <div id=\"participants-area\" style=\"height: 1px; width: 1px; overflow: hidden;\">\n          </div>\n        </div>\n      </div>\n      <div class=\"ngx-resgrid-col-sm-2\" style=\"height: 50px; padding: 4px; background: #252b3b;min-width: 55px !important;\">\n        <div class=\"ngx-resgrid-text-right ngx-resgrid-d-block\">\n          <button type=\"button\" class=\"ngx-resgrid-btn ngx-resgrid-btn-primary\" (click)=\"toggleTransmitting()\" [disabled]=\"selectedRoom === null || selectedRoom.id === ''\">\n            <svg-icon name=\"micOn\" [stretch]=\"true\" [svgStyle]=\"{'width.px':20}\" *ngIf=\"isTransmitting\"></svg-icon>\n            <svg-icon name=\"micOff\" [stretch]=\"true\" [svgStyle]=\"{'width.px':20}\" *ngIf=\"!isTransmitting\"></svg-icon>\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ConversationPipe } from './directives/conversation.directive';\nimport { GroupByPipe } from './directives/groupBy.directive';\nimport { OrderByPipe } from './directives/orderBy.directive';\nimport { RGTimeAgoPipe } from './directives/rgTimeAgo.directive';\nimport { RGTimeAgoUTCPipe } from './directives/rgTimeAgoUtc.directive';\nimport { TruncatePipe } from './directives/truncate.directive';\nimport { ResgridASConfiguration, ResgridConfig } from './resgrid-config';\nimport { HttpInterceptorModule } from './interceptors/http.interceptor.module';\nimport { WebCacheProvider } from './providers/webcache.provider';\nimport { VoiceFooterComponent } from './components/voice-footer/voice-footer.component';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { AngularSvgIconModule } from \"angular-svg-icon\";\n\n/**\n * @internal\n */\nexport function directives() {\n  return [\n    OrderByPipe,\n    GroupByPipe,\n    TruncatePipe,\n    RGTimeAgoPipe,\n    RGTimeAgoUTCPipe,\n    ConversationPipe,\n    VoiceFooterComponent\n  ];\n}\n\n@NgModule({\n  declarations: directives(),\n  imports: [HttpInterceptorModule, CommonModule, FormsModule, AngularSvgIconModule.forRoot()],\n  exports: directives(),\n})\nexport class NgxResgridLibModule {\n  static forRoot(\n    configuration: ResgridASConfiguration\n  ): ModuleWithProviders<NgxResgridLibModule> {\n\n    //if (configuration && !configuration.cacheProvider) {\n    //  configuration.cacheProvider = new WebCacheProvider();\n    //}\n\n    return <ModuleWithProviders<NgxResgridLibModule>>{\n      ngModule: NgxResgridLibModule,\n      providers: [\n        {\n          provide: ResgridConfig,\n          useFactory: () => {\n            let config = new ResgridConfig();\n            config.baseApiUrl = configuration.baseApiUrl;\n            config.apiVersion = configuration.apiVersion;\n            config.clientId = configuration.clientId;\n            config.googleApiKey = configuration.googleApiKey;\n            config.channelUrl = configuration.channelUrl;\n            config.channelHubName = configuration.channelHubName;\n            config.realtimeGeolocationHubName = configuration.realtimeGeolocationHubName;\n            config.logLevel = configuration.logLevel;\n            config.isMobileApp = configuration.isMobileApp;\n\n            return config;\n          },\n        },\n        { \n          provide: 'RG_CACHE_PROVIDER', \n          useValue: configuration.cacheProvider \n        },\n        { \n          provide: 'RG_STORAGE_PROVIDER', \n          useValue: configuration.storageProvider \n        },\n      ],\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class Consts {\n  public LANG_KEY = 'lang';\n  public LANG_EN = 'en';\n  public HAS_SEEN_TUTORIAL_KEY = 'hasSeenTutorial';\n\n  public EVENTS = {\n    LOGGED_IN: 'userLoggedIn',\n    SYSTEM_READY: 'systemReady',\n    COREDATASYNCED: 'coreDataSynced',\n    LOCAL_DATA_SET: 'localDataSet',\n    SETTINGS_SAVED: 'settingsSaved',\n    MESSAGE_RECIPIENT_ADDED: 'messageRecipientAdded',\n    REGISTRATION_OPERATION_FINISHED: 'registrationOperationFinished',\n    CORDOVA_DEVICE_RESUMED: 'onResumeCordova',\n    CORDOVA_DEVICE_PAUSED: 'onPauseCordova',\n    HIDE_SPLASH_SCREEN: 'hideSplashScreen',\n    STATUS_UPDATED: 'statusUpdated',\n    STATUS_QUEUED: 'statusQueued',\n    STAFFING_UPDATED: 'staffingUpdated',\n    SECURITY_SET: 'securitySet',\n    NAV_PUSH: 'navPush',\n    NAV_SETROOT: 'navSetRoot',\n  };\n\n  public SIGNALR_EVENTS = {\n    PERSONNEL_STATUS_UPDATED: 'PersonnelStatusUpdated',\n    PERSONNEL_STAFFING_UPDATED: 'PersonnelStaffingUpdated',\n    UNIT_STATUS_UPDATED: 'UnitStatusUpdated',\n    CALLS_UPDATED: 'CallsUpdated',\n    CALL_ADDED: 'CallAdded',\n    CALL_CLOSED: 'CallClosed',\n    PERSONNEL_LOCATION_UPDATED: 'PersonnelLocationUpdated',\n    UNIT_LOCATION_UPDATED: 'UnitLocationUpdated',\n  };\n\n  public DOCTYPES = {\n    PERSONNEL: 1,\n    GROUPS: 2,\n    UNITS: 3,\n    ROLES: 4,\n    STATUSES: 5,\n    PRIORITIES: 6,\n    DEPARTMENTS: 7,\n  };\n\n  public STATUS = {\n    STANDINGBY: 0,\n    NOTRESPONDING: 1,\n    RESPONDING: 2,\n    ONSCENE: 3,\n    AVAILABLESTATION: 4,\n    RESPONDINGTOSTATION: 5,\n    RESPONDINGTOSCENE: 6,\n  };\n\n  public STAFFING = {\n    NORMAL: 0,\n    DELAYED: 1,\n    UNAVAILABLE: 2,\n    COMMITTED: 3,\n    ONSHIFT: 4,\n  };\n\n  public DETAILTYPES = {\n    NONE: 0,\n    STATIONS: 1,\n    CALLS: 2,\n    CALLSANDSTATIONS: 3,\n  };\n\n  public NOTETYPES = {\n    NONE: 0,\n    OPTIONAL: 1,\n    REQUIRED: 2,\n  };\n\n  public CUSTOMTYPES = {\n    PERSONNEL: 1,\n    UNIT: 2,\n    STAFFING: 3,\n  };\n\n  public MESSAGETYPES = {\n    NORMAL: 0,\n    CALLBACK: 1,\n    POLL: 2,\n  };\n\n  public GROUPTYPES = {\n    ORG: 1,\n    STATION: 2,\n  };\n\n  public DESTTYPES = {\n    STATION: 1,\n    CALL: 2,\n  };\n\n  public CACHE = {\n    PERSON_DETAIL: 'personDetail',\n    UNIT_DETAIL: 'unitDetail',\n  };\n}\n","export class WebCacheWrapper {\n    public expiresOn: Date = new Date();\n    public data: string = '';\n}","import { Injectable } from '@angular/core';\nimport { ICacheProvider } from '../models/cacheProvider';\nimport { WebCacheWrapper } from '../models/webCacheWrapper';\nimport { StorageService } from '../services/storage.service';\n\n@Injectable({\n    providedIn: 'root'\n  })\nexport class WebCacheProvider implements ICacheProvider {\n  constructor() {}\n\n  public initialize(): Promise<void> {\n    return new Promise<void>((resolve, reject) => {\n        resolve();\n      });\n  }\n\n  public get(key: string): Promise<string> {\n    const that = this;\n\n    return new Promise<string>((resolve, reject) => {\n      const cacheItem = that.localStorageRead(key) as WebCacheWrapper;\n      const cacheDate = new Date(cacheItem.expiresOn);\n      const now = new Date();\n\n      if (cacheItem) {\n        if (cacheDate > now) {\n          resolve(cacheItem.data);\n        } else {\n          that.localStorageRemove(key);\n          reject();\n        }\n      } else {\n        reject();\n      }\n    });\n  }\n\n  public put(key: string, expiresOn: Date, data: string): Promise<void> {\n    const that = this;\n\n    return new Promise<void>((resolve, reject) => {\n      const cacheItem = new WebCacheWrapper();\n      cacheItem.expiresOn = expiresOn;\n      cacheItem.data = data;\n\n      that.localStorageWrite(key, cacheItem);\n      resolve();\n    });\n  }\n\n  public delete(key: string): Promise<void> {\n    const that = this;\n\n    return new Promise<void>((resolve, reject) => {\n      that.localStorageRemove(key);\n      resolve();\n    });\n  }\n\n  private localStorageRead(key: string): any {\n    const combinedKey = `RGC.${key}`;\n    const storedValue = localStorage.getItem(combinedKey);\n\n    if (storedValue) {\n      return JSON.parse(storedValue);\n    }\n\n    return null;\n  }\n\n  private localStorageWrite(key: string, value: any): boolean {\n    localStorage.setItem(`RGC.${key}`, JSON.stringify(value));\n\n    return true;\n  }\n\n  private localStorageRemove(key: string): boolean {\n    localStorage.removeItem(`RGC.${key}`);\n\n    return true;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { AutofillsResult } from '../../models/v4/autofills/autofillsResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AutofillsService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getAllAutofills(): Observable<AutofillsResult> {\n    const url = this.config.apiUrl + '/Autofills/GetAllAutofills';\n    return this.http.get<AutofillsResult>(url);\n  }\n\n  public getAutofillsForType(type: number): Observable<AutofillsResult> {\n    const url = this.config.apiUrl + '/Autofills/GetAutofillsForType?type=' + type;\n    return this.http.get<AutofillsResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { CalendarItemsResult } from '../../models/v4/calendar/calendarItemsResult';\nimport { CalendarItemResult } from '../../models/v4/calendar/calendarItemResult';\nimport { CalendarItemTypesResult } from '../../models/v4/calendar/calendarItemTypesResult';\nimport { SetCalendarAttendingResult } from '../../models/v4/calendar/setCalendarAttendingResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CalendarService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getDepartmentCalendarItems(): Observable<CalendarItemsResult> {\n    const url = this.config.apiUrl + '/Calendar/GetDepartmentCalendarItems';\n    return this.http.get<CalendarItemsResult>(url);\n  }\n\n  public getDepartmentCalendarItemsInRange(start: string, end: string): Observable<CalendarItemsResult> {\n    const url = this.config.apiUrl + '/Calendar/GetDepartmentCalendarItemsInRange?start=' + start + '&end=' + end;\n    return this.http.get<CalendarItemsResult>(url);\n  }\n\n  public getCalendarItem(id: string): Observable<CalendarItemResult> {\n    const url = this.config.apiUrl + '/Calendar/GetCalendarItem?id=' + id;\n    return this.http.get<CalendarItemResult>(url);\n  }\n\n  public getDepartmentCalendarItemTypes(): Observable<CalendarItemTypesResult> {\n    const url = this.config.apiUrl + '/Calendar/GetDepartmentCalendarItemTypes';\n    return this.http.get<CalendarItemTypesResult>(url);\n  }\n\n  public setCalendarAttendingStatus(calendarEntityId: string, note: string, type: number): Observable<SetCalendarAttendingResult> {\n    const url = this.config.apiUrl + `/Calendar/SetCalendarAttendingStatus`;\n\n    return this.http.post<SetCalendarAttendingResult>(url,\n        { CalendarEventId: calendarEntityId,\n          Note: note,\n          Type: type\n        }\n      );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { GpsLocation } from '../../models/gpsLocation';\nimport { CallFilesResult } from '../../models/v4/callFiles/callFilesResult';\nimport { SaveCallFileResult } from '../../models/v4/callFiles/saveCallFileResult';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CallFilesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getCallImages(\n    callId: string,\n    includeData: boolean\n  ): Observable<CallFilesResult> {\n    return this.getFiles(callId, includeData, 2);\n  }\n\n  public getCallFiles(\n    callId: string,\n    includeData: boolean\n  ): Observable<CallFilesResult> {\n    return this.getFiles(callId, includeData, 3);\n  }\n\n  public getCallAudio(\n    callId: string,\n    includeData: boolean\n  ): Observable<CallFilesResult> {\n    return this.getFiles(callId, includeData, 1);\n  }\n\n  public getFiles(\n    callId: string,\n    includeData: boolean,\n    type: number\n  ): Observable<CallFilesResult> {\n    const url = this.config.apiUrl + `/CallFiles/GetFilesForCall`;\n    let params = new HttpParams()\n      .append('callId', callId.toString())\n      .append('includeData', includeData.toString())\n      .append('type', type.toString());\n\n    return this.http\n      .get<CallFilesResult>(\n        url,\n        { params: params }\n      );\n  }\n\n  public getCallAttachmentFile(url: string): Observable<any> {\n    const requestOptions: Object = {\n      responseType: 'blob',\n      reportProgress: true,\n      observe: 'events'\n    }\n    return this.http.get<any>(url, requestOptions);\n  }\n\n  public saveCallImage(\n    callId: string,\n    userId: string,\n    note: string,\n    name: string,\n    location: GpsLocation,\n    file: string\n  ): Observable<SaveCallFileResult> {\n    return this.saveFile(callId, userId, note, name, location, file, 2);\n  }\n\n  public saveCallFile(\n    callId: string,\n    userId: string,\n    note: string,\n    name: string,\n    location: GpsLocation,\n    file: string\n  ): Observable<SaveCallFileResult> {\n    return this.saveFile(callId, userId, note, name, location, file, 3);\n  }\n\n  public saveFile(\n    callId: string,\n    userId: string,\n    note: string,\n    name: string,\n    location: GpsLocation,\n    file: string,\n    type: number\n  ): Observable<SaveCallFileResult> {\n    const url = this.config.apiUrl + `/CallFiles/SaveCallFile`;\n\n    let data = {\n      CallId: callId,\n      UserId: userId,\n      Type: type,\n      Name: name,\n      Latitude: \"\",\n      Longitude: \"\",\n      Note: note,\n      Data: file,\n    };\n\n    if (location && location != null) {\n      data.Latitude = location.Latitude.toString();\n      data.Longitude = location.Longitude.toString();\n    }\n\n    return this.http.post<SaveCallFileResult>(url, data);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { CallNotesResult } from '../../models/v4/callNotes/callNotesResult';\nimport { GpsLocation } from '../../models/gpsLocation';\nimport { SaveCallNoteResult } from '../../models/v4/callNotes/saveCallNoteResult';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CallNotesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getCallNotes(callId: string): Observable<CallNotesResult> {\n    const url = this.config.apiUrl + `/CallNotes/GetCallNotes?callId=${callId}`;\n    return this.http.get<CallNotesResult>(url);\n  }\n\n  public saveCallNote(\n    callId: string,\n    userId: string,\n    note: string,\n    location: GpsLocation\n  ): Observable<SaveCallNoteResult> {\n    let url = this.config.apiUrl + '/CallNotes/SaveCallNote';\n\n    let data = {\n      CallId: callId,\n      UserId: userId,\n      Note: note,\n      Latitude: \"\",\n      Longitude: \"\"\n    };\n\n    if (location && location != null) {\n      data.Latitude = location.Latitude.toString();\n      data.Longitude = location.Longitude.toString();\n    }\n\n    return this.http.post<SaveCallNoteResult>(url, data);\n  }\n}\n","export class BaseV4Request  {\n    public PageSize: number = 0;\n    public Timestamp: string = '';\n    public Version: string = '';\n    public Node: string = '';\n    public RequestId: string = '';\n    public Status: string = '';\n    public Environment: string = '';\n}\n","import { ICacheable } from \"../../cacheable\";\nimport { BaseV4Request } from \"../baseV4Request\";\nimport { CallPriorityResultData } from \"./callPriorityResultData\";\n\nexport class CallPrioritiesResult extends BaseV4Request implements ICacheable {\n    public cacheKey: string = 'CallPrioritiesResult';\n    public cacheTime: number = 20160;\n    public cacheSavedOn: Date | undefined = undefined;\n    public cacheHitFailed: boolean = false;\n    public cacheType: number = 1;\n    \n    public Data: CallPriorityResultData[] = [];\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { CallPrioritiesResult } from '../../models/v4/callPriorities/callPrioritiesResult';\nimport { CacheService } from '../cache.service';\nimport { LoggerService } from '../logger.service';\nimport { from, Observable, of } from 'rxjs';\nimport { switchMap, catchError } from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CallPrioritiesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig,\n    private cacheService: CacheService, \n    private loggerService: LoggerService\n  ) {}\n\n  public getAllCallPriorites(): Observable<CallPrioritiesResult> {\n    const url = this.config.apiUrl + '/CallPriorities/GetAllCallPriorites';\n    const temp = new CallPrioritiesResult();\n\n    return from(this.cacheService.getHttpResponse(temp.cacheKey)).pipe(\n      switchMap((cachedResponse) => {\n        if (cachedResponse) {\n          this.loggerService.logDebug(`Returning a cached response: ${temp.cacheKey} data: ${JSON.stringify(cachedResponse)}`);\n          return of(cachedResponse.body);\n        } else {\n          return this.http.get<CallPrioritiesResult>(url, {\n            context:  this.cacheService.setCacheInfoHttpContext(temp),\n          });\n        }\n      }),\n      catchError((val) => {\n        return this.http.get<CallPrioritiesResult>(url, {\n          context:  this.cacheService.setCacheInfoHttpContext(temp),\n        });\n      })\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { CallProtocolsResult } from '../../models/v4/callProtocols/callProtocolsResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CallProtocolsService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getAllCallProtocols(): Observable<CallProtocolsResult> {\n    const url = this.config.apiUrl + '/CallProtocols/GetAllCallProtocols';\n    return this.http.get<CallProtocolsResult>(url);\n  }\n\n  public getCallProtocolAttachmentFile(attachmentId: string): Observable<any> {\n    const url = this.config.apiUrl + '/CallProtocols/GetFile?protocolAttachmentId=' + attachmentId;\n\n    const requestOptions: Object = {\n      responseType: 'blob',\n      reportProgress: true,\n      observe: 'events'\n    }\n    return this.http.get<any>(url, requestOptions);\n  }\n}\n","import { ICacheable } from \"../../cacheable\";\nimport { BaseV4Request } from \"../baseV4Request\";\nimport { CallTypeResultData } from \"./callTypeResultData\";\n\nexport class CallTypesResult extends BaseV4Request implements ICacheable  {\n    public cacheKey: string = 'CallTypesResult';\n    public cacheTime: number = 20160;\n    public cacheSavedOn: Date | undefined = undefined;\n    public cacheHitFailed: boolean = false;\n    public cacheType: number = 1;\n\n    public Data: CallTypeResultData[] = [];\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { from, Observable, of } from 'rxjs';\nimport { switchMap, catchError } from 'rxjs/operators';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { CallTypesResult } from '../../models/v4/callTypes/callTypesResult';\nimport { CacheService } from '../cache.service';\nimport { LoggerService } from '../logger.service';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CallTypesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig,\n    private cacheService: CacheService, \n    private loggerService: LoggerService\n  ) {}\n\n  public getAllCallTypes(): Observable<CallTypesResult> {\n    const url = this.config.apiUrl + '/CallTypes/GetAllCallTypes';\n    const temp = new CallTypesResult();\n\n    return from(this.cacheService.getHttpResponse(temp.cacheKey)).pipe(\n      switchMap((cachedResponse) => {\n        if (cachedResponse) {\n          this.loggerService.logDebug(`Returning a cached response: ${temp.cacheKey} data: ${JSON.stringify(cachedResponse)}`);\n          return of(cachedResponse.body);\n        } else {\n          return this.http.get<CallTypesResult>(url, {\n            context:  this.cacheService.setCacheInfoHttpContext(temp),\n          });\n        }\n      }),\n      catchError((val) => {\n        return this.http.get<CallTypesResult>(url, {\n          context:  this.cacheService.setCacheInfoHttpContext(temp),\n        });\n      })\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { ActiveCallsResult } from '../../models/v4/calls/activeCallsResult';\nimport { ScheduledCallsResult } from '../../models/v4/calls/scheduledCallsResult';\nimport { SaveCallResult } from '../../models/v4/calls/saveCallResult';\nimport { CallExtraDataResult } from '../../models/v4/calls/callExtraDataResult';\nimport { UpdateCallResult } from '../../models/v4/calls/updateCallResult';\nimport { UpdateDispatchTimeResult } from '../../models/v4/calls/updateDispatchTimeResult';\nimport { DeleteCallResult } from '../../models/v4/calls/deleteCallResult';\nimport { CloseCallResult } from '../../models/v4/calls/closeCallResult';\nimport { CallResult } from '../../models/v4/calls/callResult';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CallsService {\n  constructor(public http: HttpClient, private config: ResgridConfig) {}\n\n  public getActiveCalls(): Observable<ActiveCallsResult> {\n    const url = this.config.apiUrl + '/Calls/GetActiveCalls';\n    return this.http.get<ActiveCallsResult>(url);\n  }\n\n  public getCall(callId: string): Observable<CallResult> {\n    const url = this.config.apiUrl + `/Calls/GetCall?callId=${callId}`;\n    return this.http.get<CallResult>(url);\n  }\n\n  public getAllPendingScheduledCalls(): Observable<ScheduledCallsResult> {\n    const url = this.config.apiUrl + `/Calls/GetAllPendingScheduledCalls`;\n    return this.http.get<ScheduledCallsResult>(url);\n  }\n\n  public getCallExtraData(callId: string): Observable<CallExtraDataResult> {\n    const url = this.config.apiUrl + `/Calls/GetCallExtraData?callId=${callId}`;\n    return this.http.get<CallExtraDataResult>(url);\n  }\n\n  public saveCall(\n    name: string,\n    priority: number,\n    type: string,\n    contactName: string,\n    contactInfo: string,\n    externalId: string,\n    incidentId: string,\n    referenceId: string,\n    nature: string,\n    notes: string,\n    address: string,\n    w3w: string,\n    latitude: number,\n    longitude: number,\n    dispatchList: string,\n    dispatchOn: string,\n    callFormData: string\n  ): Observable<SaveCallResult> {\n    let url = this.config.apiUrl + '/Calls/SaveCall';\n\n    let coordinates = '';\n    if (latitude && latitude != 0 && longitude && longitude != 0) {\n      coordinates = `${latitude},${longitude}`;\n    }\n\n    return this.http.post<SaveCallResult>(url, {\n      Priority: priority,\n      Type: type,\n      ContactName: contactName,\n      ContactInfo: contactInfo,\n      ExternalId: externalId,\n      IncidentId: incidentId,\n      ReferenceId: referenceId,\n      Name: name,\n      Nature: nature,\n      Note: notes,\n      Geolocation: coordinates,\n      Address: address,\n      What3Words: w3w,\n      DispatchList: dispatchList,\n      DispatchOn: dispatchOn,\n      CallFormData: callFormData,\n    });\n  }\n\n  public updateCall(\n    callId: string,\n    name: string,\n    priority: number,\n    type: string,\n    contactName: string,\n    contactInfo: string,\n    externalId: string,\n    incidentId: string,\n    referenceId: string,\n    nature: string,\n    notes: string,\n    address: string,\n    w3w: string,\n    latitude: number,\n    longitude: number,\n    dispatchList: string,\n    dispatchOn: string,\n    callFormData: string,\n    redispatch: boolean\n  ): Observable<UpdateCallResult> {\n    let url = this.config.apiUrl + '/Calls/EditCall';\n    let coordinates = '';\n    if (latitude && latitude != 0 && longitude && longitude != 0) {\n      coordinates = `${latitude},${longitude}`;\n    }\n\n    return this.http.put<UpdateCallResult>(url, {\n      Id: callId,\n      Priority: priority,\n      Type: type,\n      ContactName: contactName,\n      ContactInfo: contactInfo,\n      ExternalId: externalId,\n      IncidentId: incidentId,\n      ReferenceId: referenceId,\n      Name: name,\n      Nature: nature,\n      Note: notes,\n      Geolocation: coordinates,\n      Address: address,\n      What3Words: w3w,\n      DispatchList: dispatchList,\n      DispatchOn: dispatchOn,\n      CallFormData: callFormData,\n      RebroadcastCall: redispatch,\n    });\n  }\n\n  public updateCallDisptachTime(\n    callId: string,\n    date: string\n  ): Observable<UpdateDispatchTimeResult> {\n    let url = this.config.apiUrl + '/Calls/UpdateScheduledDispatchTime';\n\n    return this.http.put<UpdateDispatchTimeResult>(url, {\n      Id: callId,\n      Date: date\n    });\n  }\n\n  public deleteCall(\n    callId: string\n  ): Observable<DeleteCallResult> {\n    let url = this.config.apiUrl + `/Calls/DeleteCall?callId=${callId}`;\n\n    return this.http.delete<DeleteCallResult>(url);\n  }\n\n  public closeCall(callId: string, note: string, type: number): Observable<CloseCallResult> {\n    let url = this.config.apiUrl + `/Calls/CloseCall`;\n\n    return this.http.put<CloseCallResult>(url, {\n      Id: callId,\n      Notes: note,\n      Type: type\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { CustomStatusesResult } from '../../models/v4/customStatuses/customStatusesResult';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CustomStatusesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getAllCustomStatuses(): Observable<CustomStatusesResult> {\n    const url = this.config.apiUrl + '/CustomStatuses/GetAllCustomStatuses';\n    return this.http.get<CustomStatusesResult>(url);\n  }\n\n  public getActivePersonnelStatuses(): Observable<CustomStatusesResult> {\n    const url = this.config.apiUrl + '/CustomStatuses/GetActivePersonnelStatuses';\n    return this.http.get<CustomStatusesResult>(url);\n  }\n\n  public getActivePersonnelStaffingLevels(): Observable<CustomStatusesResult> {\n    const url = this.config.apiUrl + '/CustomStatuses/GetActivePersonnelStaffingLevels';\n    return this.http.get<CustomStatusesResult>(url);\n  }\n\n  public getActiveUnitStatesLevels(): Observable<CustomStatusesResult> {\n    const url = this.config.apiUrl + '/CustomStatuses/GetActiveUnitStatesLevels';\n    return this.http.get<CustomStatusesResult>(url);\n  }\n}\n","export class GetConfigResultData  {\n    public W3WKey: string = '';\n    public GoogleMapsKey: string = '';\n    public DirectionsMapKey: string = '';\n    public NavigationMapKey: string = '';\n    public LoggingKey: string = '';\n    public MapUrl: string = '';\n    public MapAttribution: string = '';\n    public OpenWeatherApiKey: string = '';\n}","import { ICacheable } from \"../../cacheable\";\nimport { BaseV4Request } from \"../baseV4Request\";\nimport { GetConfigResultData } from \"./getConfigResultData\";\n\nexport class GetConfigResult extends BaseV4Request implements ICacheable  {\n    public cacheKey: string = 'GetConfigResult';\n    public cacheTime: number = 40320;\n    public cacheSavedOn: Date | undefined = undefined;\n    public cacheHitFailed: boolean = false;\n    public cacheType: number = 1;\n\n    public Data: GetConfigResultData = new GetConfigResultData();\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { from, Observable, of } from 'rxjs';\nimport { switchMap, catchError } from 'rxjs/operators';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { GetConfigResult } from '../../models/v4/configs/getConfigResult';\nimport { CacheService } from '../cache.service';\nimport { LoggerService } from '../logger.service';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ConfigService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig,\n    private cacheService: CacheService, \n    private loggerService: LoggerService\n  ) {}\n\n  public getConfig(key: string, bypassCache: boolean = false): Observable<GetConfigResult> {\n    const url = this.config.apiUrl + '/Config/GetConfig?key=' + key;\n    const temp = new GetConfigResult();\n\n    if (!bypassCache) {\n      return from(this.cacheService.getHttpResponse(temp.cacheKey)).pipe(\n        switchMap((cachedResponse) => {\n          if (cachedResponse) {\n            this.loggerService.logDebug(`Returning a cached response: ${temp.cacheKey} data: ${JSON.stringify(cachedResponse)}`);\n            return of(cachedResponse.body);\n          } else {\n            return this.http.get<GetConfigResult>(url, {\n              context:  this.cacheService.setCacheInfoHttpContext(temp),\n            });\n          }\n        }),\n        catchError((val) => {\n          return this.http.get<GetConfigResult>(url, {\n            context:  this.cacheService.setCacheInfoHttpContext(temp),\n          });\n        })\n      );\n    } else {\n      return this.http.get<GetConfigResult>(url);\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { PushRegistrationResult } from '../../models/v4/device/pushRegistrationResult';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DeviceService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig) {}\n\n  public RegisterUnitPush(token: string, unitId: string, deviceId: string, platform: number): Observable<PushRegistrationResult> {\n    const url = this.config.apiUrl + '/Devices/RegisterUnitDevice';\n\n    return this.http.post<PushRegistrationResult>(url, {\n      Platform: platform,\n      Token: token,\n      UnitId: unitId,\n      DeviceUuid: deviceId\n    });\n  }\n\n  public UnRegisterUnitPush(deviceId: string): Observable<PushRegistrationResult> {\n    const url = this.config.apiUrl + '/Devices/UnRegisterUnitDevice?deviceUuid=' + deviceId;\n    return this.http.delete<PushRegistrationResult>(url);\n  }\n\n  public RegisterPush(token: string, deviceId: string, platform: number): Observable<PushRegistrationResult> {\n    const url = this.config.apiUrl + '/Devices/RegisterDevice';\n\n    return this.http.post<PushRegistrationResult>(url, {\n      Platform: platform,\n      Token: token,\n      DeviceUuid: deviceId\n    });\n  }\n\n  public UnRegisterPush(deviceId: string): Observable<PushRegistrationResult> {\n    const url = this.config.apiUrl + '/Devices/UnRegisterDevice?deviceUuid=' + deviceId;\n    return this.http.delete<PushRegistrationResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { NewCallFormResult } from '../../models/v4/dispatch/newCallFormResult';\nimport { GetSetUnitStateResult } from '../../models/v4/dispatch/getSetUnitStateResult';\nimport { GetPersonnelForCallGridResult } from '../../models/v4/dispatch/getPersonnelForCallGridResult';\nimport { GetRolesForCallGridResult } from '../../models/v4/dispatch/getRolesForCallGridResult';\nimport { GetCallTemplatesResult } from '../../models/v4/dispatch/getCallTemplatesResult';\nimport { GetGroupsForCallGridResult } from '../../models/v4/dispatch/getGroupsForCallGridResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DispatchService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getNewCallData(): Observable<NewCallFormResult> {\n    const url = this.config.apiUrl + '/Dispatch/GetNewCallData';\n    return this.http.get<NewCallFormResult>(url);\n  }\n\n  public getSetUnitStatusData(unitId: string): Observable<GetSetUnitStateResult> {\n    const url = this.config.apiUrl + `/Dispatch/GetSetUnitStatusData?unitId=${unitId}`;\n    return this.http.get<GetSetUnitStateResult>(url);\n  }\n\n  public getPersonnelForCallGrid(): Observable<GetPersonnelForCallGridResult> {\n    const url = this.config.apiUrl + '/Dispatch/GetPersonnelForCallGrid';\n    return this.http.get<GetPersonnelForCallGridResult>(url);\n  }\n\n  public getGroupsForCallGrid(): Observable<GetGroupsForCallGridResult> {\n    const url = this.config.apiUrl + '/Dispatch/GetGroupsForCallGrid';\n    return this.http.get<GetGroupsForCallGridResult>(url);\n  }\n\n  public getRolesForCallGrid(): Observable<GetRolesForCallGridResult> {\n    const url = this.config.apiUrl + '/Dispatch/GetRolesForCallGrid';\n    return this.http.get<GetRolesForCallGridResult>(url);\n  }\n\n  public getCallTemplates(): Observable<GetCallTemplatesResult> {\n    const url = this.config.apiUrl + '/Dispatch/GetCallTemplates';\n    return this.http.get<GetCallTemplatesResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { FormResult } from '../../models/v4/forms/formResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FormsService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getNewCallForm(): Observable<FormResult> {\n    const url = this.config.apiUrl + '/Forms/GetNewCallForm';\n    return this.http.get<FormResult>(url);\n  }\n}\n","import { ICacheable } from \"../../cacheable\";\nimport { BaseV4Request } from \"../baseV4Request\";\nimport { GroupResultData } from \"./groupsResultData\";\n\nexport class GroupsResult extends BaseV4Request implements ICacheable  {\n    public cacheKey: string = 'GroupsResult';\n    public cacheTime: number = 20160;\n    public cacheSavedOn: Date | undefined = undefined;\n    public cacheHitFailed: boolean = false;\n    public cacheType: number = 1;\n\n    public Data: GroupResultData[] = [];\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { from, Observable, of } from 'rxjs';\nimport { switchMap, catchError } from 'rxjs/operators';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { GroupResult } from '../../models/v4/groups/groupResult';\nimport { GroupsResult } from '../../models/v4/groups/groupsResult';\nimport { CacheService } from '../cache.service';\nimport { LoggerService } from '../logger.service';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class GroupsService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig,\n    private cacheService: CacheService, \n    private loggerService: LoggerService\n  ) {}\n\n  public getGroup(groupId: string): Observable<GroupResult> {\n    const url = this.config.apiUrl + `/Groups/GetGroup?groupId=${groupId}`;\n    return this.http.get<GroupResult>(url);\n  }\n\n  public getallGroups(): Observable<GroupsResult> {\n    const url = this.config.apiUrl + `/Groups/GetAllGroups`;\n    const temp = new GroupsResult();\n\n    return from(this.cacheService.getHttpResponse(temp.cacheKey)).pipe(\n      switchMap((cachedResponse) => {\n        if (cachedResponse) {\n          this.loggerService.logDebug(`Returning a cached response: ${temp.cacheKey} data: ${JSON.stringify(cachedResponse)}`);\n          return of(cachedResponse.body);\n        } else {\n          return this.http.get<GroupsResult>(url, {\n            context:  this.cacheService.setCacheInfoHttpContext(temp),\n          });\n        }\n      }),\n      catchError((val) => {\n        return this.http.get<GroupsResult>(url, {\n          context:  this.cacheService.setCacheInfoHttpContext(temp),\n        });\n      })\n    );\n\n    return this.http.get<GroupsResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { HealthResult } from '../../models/v4/health/healthResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HealthService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getCurrent(): Observable<HealthResult> {\n    const url = this.config.apiUrl + `/Health/GetCurrent`;\n    return this.http.get<HealthResult>(url);\n  }\n\n  public getCurrentForCustomServer(baseApiUrl: string): Observable<HealthResult> {\n    const url = `${baseApiUrl}/api/${this.config.apiVersion}` + `/Health/GetCurrent`;\n    return this.http.get<HealthResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { GetMapDataAndMarkersResult } from '../../models/v4/mapping/getMapDataAndMarkersResult';\nimport { GetMapLayersResult } from '../../models/v4/mapping/getMapLayersResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MappingService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getMapDataAndMarkers(): Observable<GetMapDataAndMarkersResult> {\n    const url = this.config.apiUrl + '/Mapping/GetMapDataAndMarkers';\n    return this.http.get<GetMapDataAndMarkersResult>(url);\n  }\n\n  public getMayLayers(type: number): Observable<GetMapLayersResult> {\n    const url = this.config.apiUrl + '/Mapping/GetMayLayers?type=' + type;\n    return this.http.get<GetMapLayersResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { MessagesResult } from '../../models/v4/messages/messagesResult';\nimport { MessageResult } from '../../models/v4/messages/messageResult';\nimport { SendMessageResult } from '../../models/v4/messages/sendMessageResult';\nimport { MessageRecipientInput } from '../../models/v4/messages/messageRecipientInput';\nimport { RespondToMessageResult } from '../../models/v4/messages/respondToMessageResult';\nimport { DeleteMessageResult } from '../../models/v4/messages/deleteMessageResult';\nimport { GetRecipientsResult } from '../../models/v4/messages/getRecipientsResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MessagesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getInboxMessages(): Observable<MessagesResult> {\n    const url = this.config.apiUrl + '/Messages/GetInboxMessages';\n    return this.http.get<MessagesResult>(url);\n  }\n\n  public getOutboxMessages(): Observable<MessagesResult> {\n    const url = this.config.apiUrl + '/Messages/GetOutboxMessages';\n    return this.http.get<MessagesResult>(url);\n  }\n\n  public getMessage(messageId: string): Observable<MessageResult> {\n    const url = this.config.apiUrl + '/Messages/GetMessage?messageId=' + messageId;\n    return this.http.get<MessageResult>(url);\n  }\n\n  public sendMessage(title: string, body: string, type: number, recipients: MessageRecipientInput[]): Observable<SendMessageResult> {\n    const url = this.config.apiUrl + '/Messages/SendMessage';\n    return this.http.post<SendMessageResult>(url, {\n      Title: title,\n      Body: body,\n      Type: type,\n      Recipients: recipients\n    });\n  }\n\n  public respondToMessage(messageId: string, type: number, note: string): Observable<RespondToMessageResult> {\n    const url = this.config.apiUrl + '/Messages/RespondToMessage';\n    return this.http.put<RespondToMessageResult>(url, {\n      Id: messageId,\n      Type: type,\n      Note: note\n    });\n  }\n\n  public deleteMessage(messageId: string): Observable<DeleteMessageResult> {\n    const url = this.config.apiUrl + '/Messages/DeleteMessage?messageId=' + messageId;\n    return this.http.delete<DeleteMessageResult>(url);\n  }\n\n  public getRecipients(disallowNoone: boolean, includeUnits: boolean): Observable<GetRecipientsResult> {\n    const url = this.config.apiUrl + '/Messages/GetRecipients?disallowNoone=' + disallowNoone + '&includeUnits=' + includeUnits;\n    return this.http.get<GetRecipientsResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { NotesResult } from '../../models/v4/notes/notesResult';\nimport { NoteResult } from '../../models/v4/notes/noteResult';\nimport { NoteCategoryResult } from '../../models/v4/notes/noteCategoryResult';\nimport { SaveNoteResult } from '../../models/v4/notes/saveNoteResult';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NotesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig,\n  ) {}\n\n  public getAllNotes(): Observable<NotesResult> {\n    const url = this.config.apiUrl + '/Notes/GetAllNotes';\n    return this.http.get<NotesResult>(url);\n  }\n\n  public getDispatchNote(): Observable<NoteResult> {\n    const url = this.config.apiUrl + '/Notes/GetDispatchNote';\n    return this.http.get<NoteResult>(url);\n  }\n\n  public getAllUnexpiredNotesByCategory(\n    category: string,\n    includeUnCategorized: boolean,\n  ): Observable<NotesResult> {\n    const url = this.config.apiUrl +\n      `/Notes/GetAllUnexpiredNotesByCategory?category=${category}&includeUnCategorized=${includeUnCategorized}`;\n    return this.http.get<NotesResult>(url);\n  }\n\n  public getNote(noteId: string): Observable<NoteResult> {\n    const url = this.config.apiUrl + '/Notes/GetNote?noteId=' + noteId;\n    return this.http.get<NoteResult>(url);\n  }\n\n  public getNoteCategories(): Observable<NoteCategoryResult> {\n    const url = this.config.apiUrl + '/Notes/GetNoteCategories';\n    return this.http.get<NoteCategoryResult>(url);\n  }\n\n  public saveNote(\n    title: string,\n    body: string,\n    category: string,\n    isAdminOnly: boolean,\n    expiresOn: string,\n  ): Observable<SaveNoteResult> {\n    const url = this.config.apiUrl + '/Notes/SaveNote';\n    return this.http.post<SaveNoteResult>(url, {\n      Title: title,\n      Body: body,\n      Category: category,\n      IsAdminOnly: isAdminOnly,\n      ExpiresOn: expiresOn,\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { PersonnelInfoResult } from '../../models/v4/personnel/personnelInfoResult';\nimport { GetAllPersonnelInfosResult } from '../../models/v4/personnel/getAllPersonnelInfosResult';\nimport { GetPersonnelFilterOptionsResult } from '../../models/v4/personnel/getPersonnelFilterOptionsResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PersonnelService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getPersonnelInfo(userId: string): Observable<PersonnelInfoResult> {\n    const url = this.config.apiUrl + `/Personnel/GetPersonnelInfo?userId=${userId}`;\n    return this.http.get<PersonnelInfoResult>(url);\n  }\n\n  public getAllPersonnelInfos(filter: string): Observable<GetAllPersonnelInfosResult> {\n    let url = '';\n    \n    if (filter) {\n      url = this.config.apiUrl + `/Personnel/GetAllPersonnelInfos?activeFilter=${encodeURIComponent(filter)}`;\n    } else {\n      url = this.config.apiUrl + `/Personnel/GetAllPersonnelInfos`;\n    }\n    \n    return this.http.get<GetAllPersonnelInfosResult>(url);\n  }\n\n  public getPersonnelFilterOptions(): Observable<GetPersonnelFilterOptionsResult> {\n    const url = this.config.apiUrl + `/Personnel/GetPersonnelFilterOptions`;\n    return this.http.get<GetPersonnelFilterOptionsResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { RolesResult } from '../../models/v4/roles/rolesResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class RolesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getAllRoles(): Observable<RolesResult> {\n    const url = this.config.apiUrl + '/Roles/GetAllRoles';\n    return this.http.get<RolesResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { SavePersonsStaffingsInput } from '../../models/v4/personnelStaffing/savePersonsStaffingsInput';\nimport { SavePersonsStaffingsResult } from '../../models/v4/personnelStaffing/savePersonsStaffingsResult';\nimport { SavePersonStaffingInput } from '../../models/v4/personnelStaffing/savePersonStaffingInput';\nimport { SavePersonStaffingResult } from '../../models/v4/personnelStaffing/savePersonStaffingResult';\nimport { SavePersonStatusInput } from '../../models/v4/personnelStatuses/savePersonStatusInput';\nimport { SavePersonStatusResult } from '../../models/v4/personnelStatuses/savePersonStatusResult';\nimport { SavePersonsStatusesInput } from '../../models/v4/personnelStatuses/savePersonsStatusesInput';\nimport { SavePersonsStatusesResult } from '../../models/v4/personnelStatuses/savePersonsStatusesResult';\nimport { GetCurrentStaffingResult } from '../../models/v4/personnelStaffing/getCurrentStaffingResult';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PersonnelStaffingService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig,\n  ) {}\n\n  public getCurrentStatffing(\n    userId: string,\n  ): Observable<GetCurrentStaffingResult> {\n    const url =\n      this.config.apiUrl +\n      `/PersonnelStaffing/GetCurrentStatffing?userId=${userId}`;\n    return this.http.get<GetCurrentStaffingResult>(url);\n  }\n\n  public savePersonStaffing(\n    data: SavePersonStaffingInput,\n  ): Observable<SavePersonStaffingResult> {\n    const url = this.config.apiUrl + '/PersonnelStaffing/SavePersonStaffing';\n\n    return this.http.post<SavePersonStaffingResult>(url, data);\n  }\n\n  public savePersonsStaffings(\n    data: SavePersonsStaffingsInput,\n  ): Observable<SavePersonsStaffingsResult> {\n    const url = this.config.apiUrl + '/PersonnelStaffing/SavePersonsStaffings';\n\n    return this.http.post<SavePersonsStaffingsResult>(url, data);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { SavePersonnelLocationInput } from '../../models/v4/personnelLocation/savePersonnelLocationInput';\nimport { SavePersonnelLocationResult } from '../../models/v4/personnelLocation/savePersonnelLocationResult';\nimport { PersonnelLocationResult } from '../../models/v4/personnelLocation/personnelLocationResult';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PersonnelLocationService {\n  constructor(public http: HttpClient, private config: ResgridConfig) {}\n\n  public savePersonnelLocation(input: SavePersonnelLocationInput): Observable<SavePersonnelLocationResult> {\n    let url = this.config.apiUrl + '/PersonnelLocation/SetPersonLocation';\n    return this.http.post<SavePersonnelLocationResult>(url, input);\n  }\n\n  public getLatestPersonnelLocation(userId: string): Observable<PersonnelLocationResult> {\n    const url = this.config.apiUrl + `/PersonnelLocation/GetLatestPersonLocation?userId=${userId}`;\n    return this.http.get<PersonnelLocationResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { SaveUnitStatusResult } from '../../models/v4/unitStatus/saveUnitStatusResult';\nimport { SavePersonStatusInput } from '../../models/v4/personnelStatuses/savePersonStatusInput';\nimport { SavePersonStatusResult } from '../../models/v4/personnelStatuses/savePersonStatusResult';\nimport { SavePersonsStatusesInput } from '../../models/v4/personnelStatuses/savePersonsStatusesInput';\nimport { SavePersonsStatusesResult } from '../../models/v4/personnelStatuses/savePersonsStatusesResult';\nimport { GetCurrentStatusResult } from '../../models/v4/personnelStatuses/getCurrentStatusResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PersonnelStatusesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getCurrentStatus(userId: string): Observable<GetCurrentStatusResult> {\n    const url = this.config.apiUrl + `/PersonnelStatuses/GetCurrentStatus?userId=${userId}`;\n    return this.http.get<GetCurrentStatusResult>(url);\n  }\n\n  public savePersonStatus(data: SavePersonStatusInput): Observable<SavePersonStatusResult> {\n    const url = this.config.apiUrl + '/PersonnelStatuses/SavePersonStatus';\n\n    if (!data.RespondingTo) {\n      data.RespondingTo = '0';\n    }\n\n    return this.http.post<SavePersonStatusResult>(url, data);\n  }\n\n  public savePersonsStatuses(data: SavePersonsStatusesInput): Observable<SavePersonsStatusesResult> {\n    const url = this.config.apiUrl + '/PersonnelStatuses/SavePersonsStatuses';\n\n    if (!data.RespondingTo) {\n      data.RespondingTo = '0';\n    }\n\n    return this.http.post<SavePersonsStatusesResult>(url, data);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { map, tap } from 'rxjs/operators';\nimport { DepartmentRightsResult } from '../../models/v4/security/departmentRightsResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class SecurityService {\n  private groupRights: any[] = [];\n  private departmentAdmin: boolean = false;\n  private canCreateCalls: boolean = false;\n  private canCreateNotes: boolean = false;\n  private canViewPII: boolean = false;\n  private canCreateMessages: boolean = false;\n\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public applySecurityRights(): Observable<DepartmentRightsResult> {\n    return this.getCurrentUsersRights().pipe(\n        tap(data => this.setRights(data)));\n  }\n\n  private setRights(data: DepartmentRightsResult): void {\n    this.departmentAdmin = data.Data.IsAdmin;\n    this.groupRights = data.Data.Groups;\n\n    if (data.Data.CanViewPII) {\n      this.canViewPII = true;\n    }\n\n    if (data.Data.CanCreateCalls) {\n      this.canCreateCalls = true;\n    }\n\n    if (data.Data.CanAddNote) {\n      this.canCreateNotes = true;\n    }\n\n    if (data.Data.CanCreateMessage) {\n      this.canCreateMessages = true;\n    }\n\n    if (data.Data.IsAdmin) {\n      this.canViewPII = true;\n      this.canCreateCalls = true;\n      this.canCreateNotes = true;\n      this.canCreateMessages = true;\n    }\n  }\n\n  private getCurrentUsersRights(): Observable<DepartmentRightsResult> {\n    const url = this.config.apiUrl + '/Security/GetCurrentUsersRights';\n    return this.http.get<DepartmentRightsResult>(url);\n  }\n\n  public isUserDepartmentAdmin(): boolean {\n    return this.departmentAdmin;\n  }\n\n  public isUserGroupAdmin(groupId: string): boolean {\n    if (this.groupRights && this.groupRights.length > 0) {\n      for (let i = 0; i < this.groupRights.length; i++) {\n        if (this.groupRights[i].Gid === groupId) {\n          return this.groupRights[i].Adm;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  public canUserCreateCalls(): boolean {\n    return this.canCreateCalls;\n  }\n\n  public canUserCreateNotes(): boolean {\n    return this.canCreateNotes;\n  }\n\n  public canUserCreateMessages(): boolean {\n    return this.canCreateMessages;\n  }\n\n  public canUserViewPII(): boolean {\n    return this.canViewPII;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { ShiftsResult } from '../../models/v4/shifts/shiftsResult';\nimport { ShiftResult } from '../../models/v4/shifts/shiftResult';\nimport { ShiftDaysResult } from '../../models/v4/shifts/shiftDaysResult';\nimport { ShiftDayResult } from '../../models/v4/shifts/shiftDayResult';\nimport { SignupShiftDayResult } from '../../models/v4/shifts/signupShiftDayResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ShiftsService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getShifts(): Observable<ShiftsResult> {\n    const url = this.config.apiUrl + '/Shifts/GetShifts';\n    return this.http.get<ShiftsResult>(url);\n  }\n\n  public getShift(shiftId: string): Observable<ShiftResult> {\n    const url = this.config.apiUrl + '/Shifts/GetShift?id=' + shiftId;\n    return this.http.get<ShiftResult>(url);\n  }\n\n  public getTodaysShifts(): Observable<ShiftDaysResult> {\n    const url = this.config.apiUrl + '/Shifts/GetTodaysShifts';\n    return this.http.get<ShiftDaysResult>(url);\n  }\n\n  public getShiftDay(shiftDayId: string): Observable<ShiftDayResult> {\n    const url = this.config.apiUrl + '/Shifts/GetShiftDay?id=' + shiftDayId;\n    return this.http.get<ShiftDayResult>(url);\n  }\n\n  public signupForShiftDay(shiftDayId: string, groupId: string): Observable<SignupShiftDayResult> {\n    const url = this.config.apiUrl + '/Shifts/SignupForShiftDay';\n    return this.http.post<SignupShiftDayResult>(url, {\n      ShiftDayId: shiftDayId,\n      GroupId: groupId\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { StatusesResult } from '../../models/v4/statuses/statusesResult';\nimport { UnitTypeStatusesResult } from '../../models/v4/statuses/unitTypeStatusesResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class StatusesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getAllStatusesForPersonnel(): Observable<StatusesResult> {\n    const url = this.config.apiUrl + '/Statuses/GetAllStatusesForPersonnel';\n    return this.http.get<StatusesResult>(url);\n  }\n\n  public getAllStaffingsForPersonnel(): Observable<StatusesResult> {\n    const url = this.config.apiUrl + '/Statuses/GetAllStaffingsForPersonnel';\n    return this.http.get<StatusesResult>(url);\n  }\n\n  public getAllUnitStatuses(): Observable<UnitTypeStatusesResult> {\n    const url = this.config.apiUrl + '/Statuses/GetAllUnitStatuses';\n    return this.http.get<UnitTypeStatusesResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { CallNoteTemplatesResult } from '../../models/v4/templates/callNoteTemplatesResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TemplatesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getAllCallNoteTemplates(): Observable<CallNoteTemplatesResult> {\n    const url = this.config.apiUrl + '/Templates/GetAllCallNoteTemplates';\n    return this.http.get<CallNoteTemplatesResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { SaveUnitLocationInput } from '../../models/v4/unitLocation/saveUnitLocationInput';\nimport { SaveUnitLocationResult } from '../../models/v4/unitLocation/saveUnitLocationResult';\nimport { UnitLocationResult } from '../../models/v4/unitLocation/unitLocationResult';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UnitLocationService {\n  constructor(public http: HttpClient, private config: ResgridConfig) {}\n\n  public saveUnitLocation(input: SaveUnitLocationInput): Observable<SaveUnitLocationResult> {\n    let url = this.config.apiUrl + '/UnitLocation/SetUnitLocation';\n    return this.http.post<SaveUnitLocationResult>(url, input);\n  }\n\n  public getLatestUnitLocation(unitId: string): Observable<UnitLocationResult> {\n    const url = this.config.apiUrl + `/UnitLocation/GetLatestUnitLocation?unitId=${unitId}`;\n    return this.http.get<UnitLocationResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { UnitRolesForUnitResult } from '../../models/v4/unitRoles/unitRolesForUnitResult';\nimport { ActiveUnitRolesResult } from '../../models/v4/unitRoles/activeUnitRolesResult';\nimport { SetUnitRolesInput } from '../../models/v4/unitRoles/setUnitRolesInput';\nimport { SetRoleAssignmentsForUnitResult } from '../../models/v4/unitRoles/setRoleAssignmentsForUnitResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UnitRolesService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getRolesForUnit(unitId: string): Observable<UnitRolesForUnitResult> {\n    const url = this.config.apiUrl + `/UnitRoles/GetRolesForUnit?unitId=${unitId}`;\n    return this.http.get<UnitRolesForUnitResult>(url);\n  }\n\n  public getRoleAssignmentsForUnit(unitId: string): Observable<ActiveUnitRolesResult> {\n    const url = this.config.apiUrl + `/UnitRoles/GetRoleAssignmentsForUnit?unitId=${unitId}`;\n    return this.http.get<ActiveUnitRolesResult>(url);\n  }\n\n  public setRoleAssignmentsForUnit(data: SetUnitRolesInput): Observable<SetRoleAssignmentsForUnitResult> {\n    const url = this.config.apiUrl + '/UnitRoles/SetRoleAssignmentsForUnit';\n\n    return this.http.post<SetRoleAssignmentsForUnitResult>(url, data);\n  }\n\n  public getAllUnitRolesAndAssignmentsForDepartment(): Observable<ActiveUnitRolesResult> {\n    const url = this.config.apiUrl + `/UnitRoles/GetAllUnitRolesAndAssignmentsForDepartment`;\n    return this.http.get<ActiveUnitRolesResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { UnitStatusesResult } from '../../models/v4/unitStatus/unitStatusesResult';\nimport { SaveUnitStatusInput } from '../../models/v4/unitStatus/saveUnitStatusInput';\nimport { SaveUnitStatusResult } from '../../models/v4/unitStatus/saveUnitStatusResult';\nimport { UnitStatusResult } from '../../models/v4/unitStatus/unitStatusResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UnitStatusService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getAllUnitStatuses(): Observable<UnitStatusesResult> {\n    const url = this.config.apiUrl + '/UnitStatus/GetAllUnitStatuses';\n    return this.http.get<UnitStatusesResult>(url);\n  }\n\n  public getUnitStatus(unitId: string): Observable<UnitStatusResult> {\n    const url = this.config.apiUrl + `/UnitStatus/GetUnitStatus?unitId=${unitId}`;\n    return this.http.get<UnitStatusResult>(url);\n  }\n\n  public saveUnitStatus(data: SaveUnitStatusInput): Observable<SaveUnitStatusResult> {\n    const url = this.config.apiUrl + '/UnitStatus/SaveUnitStatus';\n\n    if (!data.RespondingTo) {\n      data.RespondingTo = '0';\n    }\n\n    return this.http.post<SaveUnitStatusResult>(url, data);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ResgridConfig } from '../../resgrid-config';\nimport { UnitsResult } from '../../models/v4/units/unitsResult';\nimport { GetUnitFilterOptionsResult } from '../../models/v4/units/getUnitFilterOptionsResult';\nimport { UnitsInfoResult } from '../../models/v4/units/unitInfoResult';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UnitsService {\n  constructor(\n    public http: HttpClient,\n    private config: ResgridConfig\n  ) {}\n\n  public getAllUnits(): Observable<UnitsResult> {\n    const url = this.config.apiUrl + `/Units/GetAllUnits`;\n    return this.http.get<UnitsResult>(url);\n  }\n\n  public getAllUnitsInfos(filter: string): Observable<UnitsInfoResult> {\n    let url = '';\n    \n    if (filter) {\n      url = this.config.apiUrl + `/Units/GetAllUnitsInfos?activeFilter=${encodeURIComponent(filter)}`;\n    } else {\n      url = this.config.apiUrl + `/Units/GetAllUnitsInfos`;\n    }\n    \n    return this.http.get<UnitsInfoResult>(url);\n  }\n\n  public getUnitsFilterOptions(): Observable<GetUnitFilterOptionsResult> {\n    const url = this.config.apiUrl + `/Units/GetUnitsFilterOptions`;\n    return this.http.get<GetUnitFilterOptionsResult>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Consts } from '../consts';\nimport { CustomStatusResultData } from '../models/v4/customStatuses/customStatusResultData';\nimport { CustomStatusesService } from './v4/customStatuses.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CustomStatesService {\n  private statuses: CustomStatusResultData[] = [];\n\n  constructor(\n    private consts: Consts,\n    private customStatusesService: CustomStatusesService\n  ) {}\n\n  public init() {\n    this.customStatusesService.getAllCustomStatuses().subscribe((statuses) => {\n      if (statuses && statuses.Data && statuses.Data.length > 0) {\n        this.statuses = statuses.Data;\n      }\n    });\n  }\n\n  public getPersonnelStatuses(): CustomStatusResultData[] {\n    return this.getCustomStatuses(this.consts.CUSTOMTYPES.PERSONNEL, false);\n  }\n\n  public getActivePersonnelStatuses(): CustomStatusResultData[] {\n    return this.getCustomStatuses(this.consts.CUSTOMTYPES.PERSONNEL, true);\n  }\n\n  public getPersonnelStaffing(): CustomStatusResultData[] {\n    return this.getCustomStatuses(this.consts.CUSTOMTYPES.STAFFING, false);\n  }\n\n  public getActivePersonnelStaffing(): CustomStatusResultData[] {\n    return this.getCustomStatuses(this.consts.CUSTOMTYPES.STAFFING, true);\n  }\n\n  public getUnitStates(): CustomStatusResultData[] {\n    return this.getCustomStatuses(this.consts.CUSTOMTYPES.UNIT, false);\n  }\n\n  public getActiveUnitStates(): CustomStatusResultData[] {\n    return this.getCustomStatuses(this.consts.CUSTOMTYPES.UNIT, true);\n  }\n\n  private getCustomStatuses(customType: any, activeOnly: boolean) {\n    const filteredStatuses: CustomStatusResultData[] = new Array<CustomStatusResultData>();\n\n    if (this.statuses) {\n      this.statuses.forEach((element) => {\n        if (activeOnly) {\n          if (element.Type === customType && element.IsDeleted === false) {\n            filteredStatuses.push(element);\n          }\n        } else {\n          if (element.Type === customType) {\n            filteredStatuses.push(element);\n          }\n        }\n      });\n    }\n\n    return filteredStatuses;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nfunction _document() : any {\n   // return the global native browser window object\n   return document;\n}\n\n@Injectable({\n    providedIn: 'root',\n  })\nexport class DocumentRef {\n   get nativeDocument(): any {\n      return _document();\n   }\n}","// from https://github.com/paritosh64ce/ngx-pub-sub/blob/master/libs/ngx-pub-sub/src/lib/types/subject-type.enum.ts\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable, ReplaySubject, SchedulerLike, Subject, Subscription } from 'rxjs';\n\nexport interface IHash {\n  [key: string]: {\n    type: SubjectType;\n    ref: Subject<any> | BehaviorSubject<any> | ReplaySubject<any>;\n  };\n}\n\nexport enum SubjectType {\n  Subject,\n  BehaviorSubject,\n  ReplaySubject,\n}\n\n@Injectable({\n    providedIn: 'root',\n  })\nexport class PubSubService implements OnDestroy {\n  private eventObservableMapping: IHash;\n\n  constructor() {\n    this.eventObservableMapping = {};\n  }\n\n  publishEvent(eventName: string, data?: any) {\n    this.validateEventName(eventName);\n    this.createSubjectIfNotExist(eventName);\n\n    this.publishNext(eventName, SubjectType.Subject, data);\n  }\n\n  subscribe(\n    eventName: string,\n    next?: (value: any) => void,\n    error?: (error: any) => any,\n    complete?: () => void\n  ): Subscription {\n    this.validateEventName(eventName);\n    // subject will be created if the provided eventName is not registered\n    this.createSubjectIfNotExist(eventName);\n\n    return this.eventObservableMapping[eventName].ref.subscribe(\n      next,\n      error,\n      complete\n    );\n  }\n\n  /**\n   * Use this method to get the Observable associated with the event.\n   * Useful when you would like to apply additional rxjs operators like debounceTime\n   */\n  getEventObservable(eventName: string): Observable<any> {\n    this.validateEventName(eventName);\n    // subject will be created if the provided eventName is not registered\n    this.createSubjectIfNotExist(eventName);\n\n    return this.eventObservableMapping[eventName].ref.asObservable();\n  }\n\n  registerEventWithLast(name: string, defaultValue: any) {\n    this.validateEventName(name);\n    // type and name check\n    this.checkType(name, SubjectType.BehaviorSubject, true);\n    // create one\n    this.eventObservableMapping[name] = {\n      type: SubjectType.BehaviorSubject,\n      ref: new BehaviorSubject(defaultValue),\n    };\n  }\n\n  registerEventWithHistory(\n    name: string,\n    bufferSize?: number,\n    windowTime?: number,\n    scheduler?: SchedulerLike\n  ) {\n    this.validateEventName(name);\n    // type and name check\n    this.checkType(name, SubjectType.ReplaySubject, true);\n    // create one\n    this.eventObservableMapping[name] = {\n      type: SubjectType.ReplaySubject,\n      ref: new ReplaySubject(bufferSize, windowTime, scheduler),\n    };\n  }\n\n  publishWithLast(eventName: string, data?: any) {\n    this.validateEventName(eventName);\n    this.publishNext(eventName, SubjectType.BehaviorSubject, data);\n  }\n\n  publishWithHistory(eventName: string, data?: any) {\n    this.validateEventName(eventName);\n    this.publishNext(eventName, SubjectType.ReplaySubject, data);\n  }\n\n  completeEvent(eventName: string) {\n    this.validateEventName(eventName);\n    if (!this.eventObservableMapping[eventName]) {\n      throw Error('Event not created yet');\n    }\n    this.completeObservableAndDestroyMapping(eventName);\n  }\n\n  ngOnDestroy() {\n    for (const eventName in this.eventObservableMapping) {\n      if (this.eventObservableMapping.hasOwnProperty(eventName)) {\n        this.completeObservableAndDestroyMapping(eventName);\n      }\n    }\n  }\n\n  private publishNext(\n    eventName: string,\n    type: SubjectType = SubjectType.Subject,\n    data?: any\n  ) {\n    this.checkType(eventName, type);\n    this.eventObservableMapping[eventName].ref.next(data);\n  }\n\n  private checkType(\n    eventName: string,\n    type: SubjectType = SubjectType.Subject,\n    shouldNotExist = false\n  ) {\n    const object = this.eventObservableMapping[eventName];\n    let errorMessage;\n    if (!object && shouldNotExist) {\n      return;\n    }\n    if (!object) {\n      errorMessage = `Event doesn't exist of type: ${SubjectType[type]} or it has been completed`;\n    } else if (object.type !== type) {\n      errorMessage = `Event exists with other type: ${\n        SubjectType[object.type]\n      }. Expected type: ${SubjectType[type]}`;\n    }\n    if (shouldNotExist && object.type === type) {\n      errorMessage = `Event already registerd with the same type. Don't register a second time`;\n    }\n    if (errorMessage) {\n      throw Error(`Error (${eventName}): ${errorMessage}`);\n    }\n  }\n\n  private createSubjectIfNotExist(eventName: string) {\n    const object = this.eventObservableMapping[eventName];\n    if (object) {\n      return;\n    }\n\n    this.eventObservableMapping[eventName] = {\n      type: SubjectType.Subject,\n      ref: new Subject(),\n    };\n  }\n\n  private validateEventName(eventName: string) {\n    if (!eventName) {\n      throw Error('Event name not provided');\n    }\n  }\n\n  private completeObservableAndDestroyMapping(eventName: string) {\n    this.eventObservableMapping[eventName].ref.complete();\n    delete this.eventObservableMapping[eventName];\n  }\n}\n","import { Injectable, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Consts } from '../consts';\nimport { PubSubService } from './pubsub.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class EventsService {\n  constructor(private pubsubSvc: PubSubService, private consts: Consts) {\n    this.pubsubSvc.registerEventWithLast(\n      this.consts.EVENTS.LOGGED_IN,\n      undefined\n    );\n    this.pubsubSvc.registerEventWithLast(\n      this.consts.EVENTS.SYSTEM_READY,\n      undefined\n    );\n    this.pubsubSvc.registerEventWithLast(\n      this.consts.EVENTS.COREDATASYNCED,\n      undefined\n    );\n    this.pubsubSvc.registerEventWithLast(\n      this.consts.EVENTS.LOCAL_DATA_SET,\n      undefined\n    );\n    this.pubsubSvc.registerEventWithLast(\n      this.consts.EVENTS.SETTINGS_SAVED,\n      undefined\n    );\n    this.pubsubSvc.registerEventWithLast(\n      this.consts.EVENTS.STATUS_UPDATED,\n      undefined\n    );\n    this.pubsubSvc.registerEventWithLast(\n      this.consts.EVENTS.STAFFING_UPDATED,\n      undefined\n    );\n    this.pubsubSvc.registerEventWithLast(\n      this.consts.EVENTS.SECURITY_SET,\n      undefined\n    );\n  }\n\n  public publishEvent(eventName: string, data?: any): void {\n    this.pubsubSvc.publishEvent(eventName, data);\n  }\n\n  public subscribe(\n    eventName: string,\n    next?: (value: any) => void,\n    error?: (error: any) => any,\n    complete?: () => void\n  ): Subscription {\n    return this.pubsubSvc.subscribe(eventName, next, error, complete);\n  }\n}\n","export class GpsLocation {\n    public Latitude: number;\n    public Longitude: number;\n\n    constructor(latitude: number, longitude: number) {\n        this.Latitude = latitude;\n        this.Longitude = longitude;\n    }\n}","/**\n * Ellipsoid\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n  */\n\n\n export class Ellipsoid {\n\n    name: string;\n  \n    /**\n     * The semi-major axis\n     */\n    a: number;\n  \n    /**\n     * The Inverse Flattening (1/f)\n     */\n    f: number;\n  \n    /**\n     * Some often used ellipsoids\n     */\n    static configs = {\n      'WGS-84': {\n        'name': 'World Geodetic System  1984',\n        'a': 6378137.0,\n        'f': 298.257223563,\n      },\n      'GRS-80': {\n        'name': 'Geodetic Reference System 1980',\n        'a': 6378137.0,\n        'f': 298.257222100,\n      }\n    };\n  \n    /**\n     * @param {string} name\n     * @param {number} a\n     * @param {number} f\n     */\n    constructor(name: string, a: number, f: number) {\n      this.name = name;\n      this.a = a;\n      this.f = f;\n    }\n  \n    /**\n     * @param config\n     * @returns {Ellipsoid}\n     */\n    static createFromArray(config: any): Ellipsoid {\n      return new this(config['name'], config['a'], config['f']);\n    }\n  \n    /**\n     * @param {string} name\n     * @returns {Ellipsoid}\n     */\n    static createDefault(name = 'WGS-84'): Ellipsoid {\n      const config = (Ellipsoid.configs as any)[name];\n      return Ellipsoid.createFromArray(config);\n    }\n  \n    /**\n     * @returns {string}\n     */\n    getName(): string {\n      return this.name;\n    }\n  \n    /**\n     * @returns {number}\n     */\n    getA(): number {\n      return this.a;\n    }\n  \n    /**\n     * Calculation of the semi-minor axis\n     *\n     * @returns {number}\n     */\n    getB(): number {\n      return (this.a * (1 - 1 / this.f));\n    }\n  \n    /**\n     * @returns {number}\n     */\n    getF(): number {\n      return this.f;\n    }\n  \n    /**\n     * Calculates the arithmetic mean radius\n     *\n     * @see http://home.online.no/~sigurdhu/WGS84_Eng.html\n     *\n     * @returns {number}\n     */\n    getArithmeticMeanRadius(): number {\n      return this.a * (1 - 1 / this.f / 3);\n    }\n  \n  }","/**\n * Coordinate Implementation\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n  */\n\n import {GeometryInterface} from \"./GeometryInterface\";\n import {Ellipsoid} from \"./Ellipsoid\";\n import {DistanceInterface} from \"./Distance/DistanceInterface\";\n import {FormatterInterface} from \"./Formatter/Coordinate/FormatterInterface\";\n \n export class Coordinate implements GeometryInterface {\n \n   lat: number;\n \n   lng: number;\n \n   ellipsoid: Ellipsoid;\n \n   /**\n    * @param {number} lat -90.0 .. +90.0\n    * @param {number} lng -180.0 .. +180.0\n    * @param {Ellipsoid} ellipsoid if omitted, WGS-84 is used\n    */\n   constructor(lat: number, lng: number, ellipsoid: Ellipsoid | null = null) {\n     this.lat = lat;\n     this.lng = lng;\n \n     if (ellipsoid !== null) {\n       this.ellipsoid = ellipsoid;\n     } else {\n       this.ellipsoid = Ellipsoid.createDefault();\n     }\n   }\n \n   /**\n    * @returns {number}\n    */\n   getLat(): number {\n     return this.lat;\n   }\n \n   /**\n    * @returns {number}\n    */\n   getLng(): number {\n     return this.lng;\n   }\n \n   /**\n    * Returns an array containing the point\n    *\n    * @returns {Array<this>}\n    */\n   getPoints(): Array<this> {\n     return [this];\n   }\n \n   /**\n    * @returns {Ellipsoid}\n    */\n   getEllipsoid(): Ellipsoid {\n     return this.ellipsoid;\n   }\n \n   /**\n    * Calculates the distance between the given coordinate\n    * and this coordinate.\n    *\n    * @param {Coordinate} coordinate\n    * @param {DistanceInterface} calculator instance of distance calculation class\n    * @returns {number}\n    */\n   getDistance(coordinate: Coordinate, calculator: DistanceInterface): number {\n     return calculator.getDistance(this, coordinate);\n   }\n \n \n   /**\n    * @param {FormatterInterface} formatter\n    * @returns {string}\n    */\n   format(formatter: FormatterInterface) {\n     return formatter.format(this);\n   }\n \n   /**\n    * Validates latitude\n    *\n    * @param {number} latitude\n    * @returns {boolean}\n    */\n   protected static isValidLatitude(latitude: number): boolean {\n     return Coordinate.isNumericInBounds(latitude, -90.0, 90.0);\n   }\n \n   /**\n    * Validates longitude\n    *\n    * @param {number} longitude\n    * @returns {boolean}\n    */\n   protected static isValidLongitude(longitude: number): boolean {\n     return Coordinate.isNumericInBounds(longitude, -180.0, 180.0);\n   }\n \n   /**\n    * Checks if the given value is between lower\n    * and upper bounds (including the bounds values).\n    *\n    * @param {number} value\n    * @param {number} lower\n    * @param {number} upper\n    * @returns {boolean}\n    */\n   protected static isNumericInBounds(value: number, lower: number, upper: number): boolean {\n     return !(value < lower || value > upper);\n   }\n }","/**\n * Math function\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n  */\n\n export class MathMore {\n\n    /**\n     * @param {number} angle\n     * @returns {number}\n     */\n    static deg2rad(angle: number){\n      //  discuss at: http://locutus.io/php/deg2rad/\n      // original by: Enrique Gonzalez\n      // improved by: Thomas Grainger (http://graingert.co.uk)\n      //   example 1: deg2rad(45)\n      //   returns 1: 0.7853981633974483\n      return ((angle / 180) * Math.PI); // (angle / 180) * Math.PI;\n    }\n  \n    /**\n     * @param {number} angle\n     * @returns {number}\n     */\n    static rad2deg(angle: number){\n      //  discuss at: http://locutus.io/php/rad2deg/\n      // original by: Enrique Gonzalez\n      // improved by: Brett Zamir (http://brett-zamir.me)\n      //   example 1: rad2deg(3.141592653589793)\n      //   returns 1: 180\n      return ((angle / Math.PI) * 180); // (angle / 180) * Math.PI;\n    }\n  \n    /**\n     * Decimal adjustment of a number.\n     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n     *\n     * @param {number}  value The number.\n     * @param {number} exp   The exponent (the 10 logarithm of the adjustment base).\n     * @return {Number} The adjusted value.\n     */\n    static round10(value: number, exp: number): number {\n      // If the exp is undefined or zero...\n      if (typeof exp === 'undefined' || +exp === 0) {\n        return Math.round(value);\n      }\n      value = +value;\n      exp = +exp;\n      // If the value is not a number or the exp is not an integer...\n      if (value === null || isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {\n        return NaN;\n      }\n      // If the value is negative...\n      if (value < 0) {\n        return -MathMore.round10(-value, exp);\n      }\n      // Shift\n      let value_str = value.toString().split('e');\n      value = Math.round(+(value_str[0] + 'e' + (value_str[1] ? (+value_str[1] - exp) : -exp)));\n      // Shift back\n      value_str = value.toString().split('e');\n      return +(value_str[0] + 'e' + (value_str[1] ? (+value_str[1] + exp) : exp));\n    }\n  \n    /**\n     * Returns the floating point remainder (modulo) of the division of the arguments\n     *\n     * @param {number} x\n     * @param {number} y\n     * @returns {number}\n     */\n    static fmod (x:number, y:number):number {\n      //  discuss at: http://locutus.io/php/fmod/\n      // original by: Onno Marsman (https://twitter.com/onnomarsman)\n      //    input by: Brett Zamir (http://brett-zamir.me)\n      // bugfixed by: Kevin van Zonneveld (http://kvz.io)\n      //   example 1: fmod(5.7, 1.3)\n      //   returns 1: 0.5\n      let tmp;\n      let tmp2;\n      let p = 0;\n      let pY = 0;\n      let l = 0.0;\n      let l2 = 0.0;\n      tmp = x.toExponential().match(/^.\\.?(.*)e(.+)$/);\n      if(tmp === null){ return 0; }\n      p = parseInt(tmp[2], 10) - (tmp[1] + '').length;\n      tmp = y.toExponential().match(/^.\\.?(.*)e(.+)$/);\n      if(tmp === null){ return 0; }\n      pY = parseInt(tmp[2], 10) - (tmp[1] + '').length;\n      if (pY > p) {\n        p = pY\n      }\n      tmp2 = (x % y);\n      if (p < -100 || p > 20) {\n        // toFixed will give an out of bound error so we fix it like this:\n        l = Math.round(Math.log(tmp2) / Math.log(10));\n        l2 = Math.pow(10, l);\n        return parseFloat((tmp2 / l2).toFixed(l - p)) * l2;\n      } else {\n        return parseFloat(tmp2.toFixed(-p));\n      }\n    }\n  \n  }","/**\n * Implementation of distance calculation with Vincenty Method\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n  */\n\n import {DistanceInterface} from \"./DistanceInterface\";\n import {Coordinate} from \"../Coordinate\";\n import {MathMore} from \"../Functions/MathMore\";\n \n export class Vincenty implements DistanceInterface {\n \n   /**\n    * @param {Coordinate} point1\n    * @param {Coordinate} point2\n    *\n    * @return number|null\n    */\n   getDistance(point1: Coordinate, point2: Coordinate): number{\n     if (point1.getEllipsoid().getName() !== point2.getEllipsoid().getName()) {\n       return 0;\n     }\n \n     let lat1 = MathMore.deg2rad(point1.getLat());\n     let lat2 = MathMore.deg2rad(point2.getLat());\n     let lng1 = MathMore.deg2rad(point1.getLng());\n     let lng2 = MathMore.deg2rad(point2.getLng());\n \n     let a = point1.getEllipsoid().getA();\n     let b = point1.getEllipsoid().getB();\n     let f = (1 / point1.getEllipsoid().getF());\n \n     let L = lng2 - lng1;\n     let U1 = Math.atan((1 - f) * Math.tan(lat1));\n     let U2 = Math.atan((1 - f) * Math.tan(lat2));\n \n     let iterationLimit = 100;\n     let lambda = L;\n \n     let sinU1 = Math.sin(U1);\n     let sinU2 = Math.sin(U2);\n     let cosU1 = Math.cos(U1);\n     let cosU2 = Math.cos(U2);\n \n     let lambdaP;\n     let cosSqAlpha;\n     let sinSigma;\n     let cos2SigmaM;\n     let cosSigma;\n     let sigma;\n \n     do {\n       let sinLambda = Math.sin(lambda);\n       let cosLambda = Math.cos(lambda);\n \n       sinSigma = Math.sqrt(\n         (cosU2 * sinLambda) * (cosU2 * sinLambda) +\n         (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda) * (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda)\n       );\n \n       if (sinSigma == 0) {\n         return 0.0;\n       }\n \n       cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n \n       sigma = Math.atan2(sinSigma, cosSigma);\n \n       let sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma;\n \n       cosSqAlpha = 1 - sinAlpha * sinAlpha;\n \n       cos2SigmaM = 0;\n       if (cosSqAlpha != 0) {\n         cos2SigmaM = cosSigma - 2 * sinU1 * sinU2 / cosSqAlpha;\n       }\n \n       let C = f / 16 * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha));\n \n       lambdaP = lambda;\n \n       lambda = L + (1 - C) * f * sinAlpha * (sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)));\n     } while (Math.abs(lambda - lambdaP) > 1e-12 && --iterationLimit > 0);\n \n     if (iterationLimit === 0) {\n       return 0;\n     }\n \n     let uSq = cosSqAlpha * (a * a - b * b) / (b * b);\n     let A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq)));\n     let B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));\n     let deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) - B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));\n     let s = b * A * (sigma - deltaSigma);\n \n     return MathMore.round10(s, -3);\n \n   }\n }","import { Injectable } from '@angular/core';\nimport {\n  bindCallback,\n  ConnectableObservable,\n  Observable,\n  of,\n  ReplaySubject,\n  throwError,\n} from 'rxjs';\nimport { map, multicast, switchMap, publishReplay } from 'rxjs/operators';\nimport { GpsLocation } from '../models/gpsLocation';\nimport { WindowRef } from './window.service';\nimport { DocumentRef } from './document.service';\nimport { ResgridConfig } from '../resgrid-config';\nimport { Coordinate } from '../models/geo/Coordinate';\nimport { Vincenty } from '../models/geo/Distance/Vincenty';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LocationService {\n  protected readonly geocoder$: Observable<google.maps.Geocoder>;\n\n  constructor(loader: LazyGoogleMapsLoader) {\n    const connectableGeocoder$ = new Observable((subscriber) => {\n      loader.load().then(() => subscriber.next());\n    }).pipe(\n      map(() => this._createGeocoder()),\n      publishReplay(1)\n    ) as ConnectableObservable<google.maps.Geocoder>;\n\n    connectableGeocoder$.connect(); // ignore the subscription\n    // since we will remain subscribed till application exits\n\n    this.geocoder$ = connectableGeocoder$;\n  }\n\n  private _createGeocoder() {\n    return new google.maps.Geocoder();\n  }\n\n  private _getGoogleResults(\n    geocoder: google.maps.Geocoder,\n    request: google.maps.GeocoderRequest\n  ): Observable<google.maps.GeocoderResult[]> {\n    const geocodeObservable = bindCallback(geocoder.geocode);\n    return geocodeObservable(request).pipe(\n      switchMap(([results, status]) => {\n        if (status === google.maps.GeocoderStatus.OK) {\n          return of(results);\n        }\n\n        return throwError(status);\n      })\n    );\n  }\n\n  private geocode(\n    request: google.maps.GeocoderRequest\n  ): Observable<google.maps.GeocoderResult[]> {\n    return this.geocoder$.pipe(\n      switchMap((geocoder) => this._getGoogleResults(geocoder, request))\n    );\n  }\n\n  public getAddressFromLocation(location: GpsLocation) {\n    return this.geocode({\n      location: new google.maps.LatLng(location.Latitude, location.Longitude),\n    }).pipe(\n      map((data) => {\n        if (data && data.length > 0) {\n          //console.log(JSON.stringify(data));\n          return data[0].formatted_address;\n        }\n\n        return null;\n      })\n    );\n  }\n\n  public getLocationFromAddress(address: string) {\n    return this.geocode({ address: address }).pipe(\n      map((data) => {\n        if (data && data.length > 0) {\n          return new GpsLocation(\n            data[0].geometry.location.lat(),\n            data[0].geometry.location.lng()\n          );\n        }\n\n        return null;\n      })\n    );\n\n    ////var geocoder = new Geocoder({\n    //  key: environment.osmMapKey,\n    //});\n    //const that = this;\n\n    //return new Observable((observer) => {\n    //  geocoder.geocode(address).then(function (results) {\n    //    if (results) {\n    //    //  console.log(JSON.stringify(results));\n    //console.log(results.features[0]);\n    //return results;\n    //return that.parseMapTilerResults(results);\n    //      let gpsLocation = that.parseMapTilerResults(results);\n    //      observer.next(gpsLocation);\n    //      observer.complete();\n    //    } else {\n    //      observer.error(\"No results\");\n    //    }\n    //  });\n    //});\n  }\n\n  public getDistanceBetweenTwoPoints(\n    point1: GpsLocation,\n    point2: GpsLocation\n  ): number {\n    let coordinate1 = new Coordinate(point1.Latitude, point1.Longitude);\n    let coordinate2 = new Coordinate(point2.Latitude, point2.Longitude);\n\n    let calculator = new Vincenty();\n    return calculator.getDistance(coordinate1, coordinate2);\n  }\n\n  private parseMapTilerResults(results: any): GpsLocation | null {\n    if (results && results.features && results.features.length > 0) {\n      for (let index = 0; index < results.features.length; index++) {\n        const feature = results.features[index];\n\n        if (this.doesMapTilerPlaceTypeContain('street', feature.place_type)) {\n          if (feature.center && feature.center.length === 2) {\n            return new GpsLocation(feature.center[1], feature.center[0]);\n          }\n        }\n      }\n    }\n\n    return null;\n  }\n\n  private doesMapTilerPlaceTypeContain(searchFor: string, placeTypes: any[]) {\n    if (searchFor && placeTypes && placeTypes.length > 0) {\n      return placeTypes.find((placeType) => {\n        return placeType === searchFor;\n      });\n    }\n  }\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LazyGoogleMapsLoader {\n  protected _scriptLoadingPromise: any;\n  protected readonly _SCRIPT_ID: string = 'googleMapsApiScript';\n  protected readonly callbackName: string = `lazyMapsAPILoader`;\n\n  constructor(private config: ResgridConfig) {}\n\n  load(): Promise<void> {\n    //const window = this._windowRef.nativeWindow() as any;\n    if (window.google && window.google.maps) {\n      // Google maps already loaded on the page.\n      return Promise.resolve();\n    }\n\n    if (this._scriptLoadingPromise) {\n      return this._scriptLoadingPromise;\n    }\n\n    // this can happen in HMR situations or Stackblitz.io editors.\n    const scriptOnPage = document.getElementById(this._SCRIPT_ID);\n    if (scriptOnPage) {\n      this._assignScriptLoadingPromise(scriptOnPage);\n      return this._scriptLoadingPromise;\n    }\n\n    const script = document.createElement('script');\n    script.type = 'text/javascript';\n    script.async = true;\n    script.defer = true;\n    script.id = this._SCRIPT_ID;\n    script.src = this._getScriptSrc(this.callbackName);\n    this._assignScriptLoadingPromise(script);\n    document.body.appendChild(script);\n    return this._scriptLoadingPromise;\n  }\n\n  private _assignScriptLoadingPromise(scriptElem: HTMLElement) {\n    this._scriptLoadingPromise = new Promise((resolve, reject) => {\n      (window as any)[this.callbackName] = () => {\n        resolve(true);\n      };\n\n      scriptElem.onerror = (error: any) => {\n        reject(error);\n      };\n    });\n  }\n\n  protected _getScriptSrc(callbackName: string): string {\n    const hostAndPath: string = 'maps.googleapis.com/maps/api/js';\n    const queryParams: { [key: string]: string | string[] } = {\n      v: 'quarterly',\n      callback: callbackName,\n      key: this.config.googleApiKey,\n      //client: this._config.clientId,\n      //channel: this._config.channel,\n      //libraries: this._config.libraries,\n      //region: this._config.region,\n      language: 'en-US',\n    };\n    const params: string = Object.keys(queryParams)\n      .filter((k: string) => queryParams[k] != null)\n      .filter((k: string) => {\n        // remove empty arrays\n        return (\n          !Array.isArray(queryParams[k]) ||\n          (Array.isArray(queryParams[k]) && queryParams[k].length > 0)\n        );\n      })\n      .map((k: string) => {\n        // join arrays as comma separated strings\n        const i = queryParams[k];\n        if (Array.isArray(i)) {\n          return { key: k, value: i.join(',') };\n        }\n        return { key: k, value: queryParams[k] };\n      })\n      .map((entry: { key: string; value: string | string[] }) => {\n        return `${entry.key}=${entry.value}`;\n      })\n      .join('&');\n    return `https://${hostAndPath}?${params}`;\n  }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport * as signalR from '@microsoft/signalr';\nimport { ResgridConfig } from '../resgrid-config';\nimport { Observable, Observer, Subject } from 'rxjs';\nimport { share } from 'rxjs/operators';\nimport { EventsService } from './events.service';\nimport { Consts } from '../consts';\n\n/**\n * When SignalR runs it will add functions to the global $ variable\n * that you use to create connections to the hub. However, in this\n * class we won't want to depend on any global variables, so this\n * class provides an abstraction away from using $ directly in here.\n */\nexport class SignalrWindow extends Window {\n  $: any;\n}\n\nexport enum ConnectionState {\n  Connecting = 1,\n  Connected = 2,\n  Reconnecting = 3,\n  Disconnected = 4,\n}\n\nexport class ChannelConfig {\n  url: string = '';\n  hubName: string = '';\n  channel: string = '';\n}\n\nexport class ChannelEvent {\n  Name: string = '';\n  ChannelName: string = '';\n  Timestamp: Date;\n  Data: any;\n  Json: string = '';\n\n  constructor() {\n    this.Timestamp = new Date();\n  }\n}\n\nexport class ChannelSubject {\n  channel: string = '';\n  subject?: Subject<ChannelEvent>;\n}\n\n/**\n * SignalRProvider is a wrapper around the functionality that SignalR\n * provides to expose the ideas of channels and events. With this service\n * you can subscribe to specific channels (or groups in signalr speak) and\n * use observables to react to specific events sent out on those channels.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class SignalRService {\n  private retryCount: number = 0;\n\n  /**\n   * starting$ is an observable available to know if the signalr\n   * connection is ready or not. On a successful connection this\n   * stream will emit a value.\n   */\n  public starting$: Observable<any>;\n\n  /**\n   * connectionState$ provides the current state of the underlying\n   * connection as an observable stream.\n   */\n  public connectionState$: Observable<ConnectionState>;\n\n  /**\n   * error$ provides a stream of any error messages that occur on the\n   * SignalR connection\n   */\n  public error$: Observable<string>;\n\n  // These are used to feed the public observables\n  //\n  private connectionStateObserver?: Observer<ConnectionState>;\n  //private connectionStateSubject = new Subject<ConnectionState>();\n  private startingSubject = new Subject<any>();\n  private errorSubject = new Subject<any>();\n\n  private hubConnection?: signalR.HubConnection;\n  private started: boolean = false;\n\n  // An internal array to track what channel subscriptions exist\n  //\n  private subjects = new Array<ChannelSubject>();\n\n  constructor(\n    private config: ResgridConfig,\n    private events: EventsService,\n    private consts: Consts\n  ) {\n    // Set up our observables\n    //\n    //this.connectionState$ = this.connectionStateSubject.asObservable().share();\n    this.connectionState$ = new Observable<ConnectionState>((observer: any) => {\n      this.connectionStateObserver = observer;\n    }).pipe(share()); // share() allows multiple subscribers\n\n    this.error$ = this.errorSubject.asObservable();\n    this.starting$ = this.startingSubject.asObservable();\n\n    //this.connectionStateObserver.next(ConnectionState.Connecting);\n  }\n\n  /**\n   * Start the SignalR connection. The starting$ stream will emit an\n   * event if the connection is established, otherwise it will emit an\n   * error.\n   */\n  public start(departmentId: string): void {\n    console.log('SignalR Channel Start()');\n    this.retryCount = 0;\n\n    // Now we only want the connection started once, so we have a special\n    //  starting$ observable that clients can subscribe to know know if\n    //  if the startup sequence is done.\n    //\n    // If we just mapped the start() promise to an observable, then any time\n    //  a client subscribed to it the start sequence would be triggered\n    //  again since it's a cold observable.\n    //\n    if (!this.started) {\n      try {\n        this.connectionStateObserver?.next(ConnectionState.Connecting);\n\n        this.hubConnection = new signalR.HubConnectionBuilder()\n          .withUrl(this.config.channelUrl + this.config.channelHubName)\n          .build();\n\n        // SignalR Event Listeners\n        this.hubConnection.on('personnelStatusUpdated', (data: any) => {\n          console.log('PersonnelStatusUpdated');\n          this.events.publishEvent(\n            this.consts.SIGNALR_EVENTS.PERSONNEL_STATUS_UPDATED,\n            data\n          );\n        });\n\n        this.hubConnection.on('personnelStaffingUpdated', (data: any) => {\n          console.log('PersonnelStaffingUpdated');\n          this.events.publishEvent(\n            this.consts.SIGNALR_EVENTS.PERSONNEL_STAFFING_UPDATED,\n            data\n          );\n        });\n\n        this.hubConnection.on('unitStatusUpdated', (data: any) => {\n          console.log('UnitStatusUpdated');\n          this.events.publishEvent(\n            this.consts.SIGNALR_EVENTS.UNIT_STATUS_UPDATED,\n            data\n          );\n        });\n\n        this.hubConnection.on('callsUpdated', (data: any) => {\n          console.log('CallsUpdated');\n          this.events.publishEvent(\n            this.consts.SIGNALR_EVENTS.CALLS_UPDATED,\n            data\n          );\n        });\n\n        this.hubConnection.on('callAdded', (data: any) => {\n          console.log('CallAdded');\n          this.events.publishEvent(this.consts.SIGNALR_EVENTS.CALL_ADDED, data);\n        });\n\n        this.hubConnection.on('callClosed', (data: any) => {\n          console.log('CallClosed');\n          this.events.publishEvent(\n            this.consts.SIGNALR_EVENTS.CALL_CLOSED,\n            data\n          );\n        });\n\n        this.hubConnection.on('onConnected', (data: any) => {\n          console.log(`onConnected with ${data}`);\n          //this.widgetPubSub.emitSignalRConnected(data);\n        });\n\n        this.hubConnection\n          .start()\n          .then(() => {\n            console.log('Connection started');\n            this.connectionStateObserver?.next(ConnectionState.Connected);\n\n            this.hubConnection\n              ?.invoke('connect', parseInt(departmentId))\n              .then(() => {\n                console.log(\n                  `Successfully subscribed to Connect channel with ${departmentId}`\n                );\n              })\n              .catch((error: any) => {\n                console.log(\n                  `Error subscribed to Connect channel with ${departmentId}, ERROR: ${error}`\n                );\n              });\n\n            this.started = true;\n          })\n          .catch((err) => {\n            this.retryCount++;\n            console.log('Error while starting connection: ' + err);\n            this.connectionStateObserver?.next(ConnectionState.Disconnected);\n            this.errorSubject.next(err);\n          });\n      } catch (ex) {\n        console.log(ex);\n      }\n    }\n  }\n\n  public restart(departmentId: string): void {\n    if (this.hubConnection && this.started === false) {\n      try {\n        this.hubConnection\n          .start()\n          .then(() => {\n            console.log('Connection started');\n            this.connectionStateObserver?.next(ConnectionState.Connected);\n\n            this.hubConnection\n              ?.invoke('connect', parseInt(departmentId))\n              .then(() => {\n                console.log(\n                  `Successfully subscribed to Connect channel with ${departmentId}`\n                );\n              })\n              .catch((error: any) => {\n                console.log(\n                  `Error subscribed to Connect channel with ${departmentId}, ERROR: ${error}`\n                );\n              });\n\n            this.started = true;\n          })\n          .catch((err) => {\n            console.log('Error while restarting connection: ' + err);\n            this.connectionStateObserver?.next(ConnectionState.Disconnected);\n\n            if (this.retryCount < 10) {\n              this.started = false;\n            } else {\n              console.log('Hub connection retry count exceeded');\n              this.started = true;  // Give up\n            }\n\n            this.retryCount++;\n            this.errorSubject.next(err);\n          });\n      } catch (ex) {\n        console.log(ex);\n      }\n    }\n  }\n\n  public stop() {\n    if (this.hubConnection) {\n      this.hubConnection.stop().then(() => {\n        console.log('Connection stopped');\n        this.connectionStateObserver?.next(ConnectionState.Disconnected);\n        this.started = false;\n        this.retryCount = 0;\n      })\n      .catch((err) => {\n        console.log('Error while stopping connection: ' + err);\n        this.connectionStateObserver?.next(ConnectionState.Disconnected);\n        this.started = false;\n        this.retryCount = 0;\n        this.errorSubject.next(err);\n      });\n    }\n  }\n\n  public subscribeToDepartment(linkId: number): void {\n    this.hubConnection\n      ?.invoke('SubscribeToDepartmentLink', linkId)\n      .then(() =>\n        console.log(`Successfully subscribed to department link with ${linkId}`)\n      )\n      .catch((err) =>\n        console.log(\n          `Error subscribed to department link with ${linkId}, ERROR: ${err}`\n        )\n      );\n  }\n\n  /**\n   * Get an observable that will contain the data associated with a specific\n   * channel\n   * */\n  private sub(\n    channel: string,\n    data?: string\n  ): Observable<ChannelEvent> | undefined {\n    // Try to find an observable that we already created for the requested\n    //  channel\n    //\n    let channelSub = this.subjects.find((x: ChannelSubject) => {\n      return x.channel === channel;\n    }) as ChannelSubject;\n\n    // If we already have one for this event, then just return it\n    //\n    if (channelSub !== undefined) {\n      console.log(`Found existing observable for ${channel} channel`);\n      return channelSub?.subject?.asObservable();\n    }\n\n    //\n    // If we're here then we don't already have the observable to provide the\n    //  caller, so we need to call the server method to join the channel\n    //  and then create an observable that the caller can use to received\n    //  messages.\n    //\n\n    // Now we just create our internal object so we can track this subject\n    //  in case someone else wants it too\n    //\n    channelSub = new ChannelSubject();\n    channelSub.channel = channel;\n    channelSub.subject = new Subject<ChannelEvent>();\n    this.subjects.push(channelSub);\n\n    // Now SignalR is asynchronous, so we need to ensure the connection is\n    //  established before we call any server methods. So we'll subscribe to\n    //  the starting$ stream since that won't emit a value until the connection\n    //  is ready\n    //\n    this.starting$.subscribe(\n      () => {\n        this.hubConnection\n          ?.invoke(channel, data)\n          .then(() =>\n            console.log(\n              `Successfully subscribed to ${channel} channel with ${data}`\n            )\n          )\n          .catch((err) => channelSub?.subject?.error(err));\n      },\n      (error: any) => {\n        channelSub?.subject?.error(error);\n      }\n    );\n\n    return channelSub.subject.asObservable();\n  }\n\n  // Not quite sure how to handle this (if at all) since there could be\n  //  more than 1 caller subscribed to an observable we created\n  //\n  // unsubscribe(channel: string): Rx.Observable<any> {\n  //     this.observables = this.observables.filter((x: ChannelObservable) => {\n  //         return x.channel === channel;\n  //     });\n  // }\n\n  /** publish provides a way for calls to emit events on any channel. In a\n   * production app the server would ensure that only authorized clients can\n   * actually emit the message, but here we're not concerned about that.\n   */\n  private publish(ev: ChannelEvent): void {\n    this.hubConnection?.invoke('Publish', ev);\n  }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport * as signalR from '@microsoft/signalr';\nimport { ResgridConfig } from '../resgrid-config';\nimport { Observable, Observer, Subject } from 'rxjs';\nimport { share } from 'rxjs/operators';\nimport { EventsService } from './events.service';\nimport { Consts } from '../consts';\nimport { ChannelEvent, ChannelSubject, ConnectionState } from './signalr.service';\nimport { AuthService } from './v4/auth.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class RealtimeGeolocationService {\n  private retryCount: number = 0;\n  public starting$: Observable<any>;\n  public connectionState$: Observable<ConnectionState>;\n  public error$: Observable<string>;\n  private connectionStateObserver?: Observer<ConnectionState>;\n  //private connectionStateSubject = new Subject<ConnectionState>();\n  private startingSubject = new Subject<any>();\n  private errorSubject = new Subject<any>();\n\n  private hubConnection?: signalR.HubConnection;\n  private started: boolean = false;\n  private subjects = new Array<ChannelSubject>();\n\n  constructor(\n    private config: ResgridConfig,\n    private events: EventsService,\n    private consts: Consts,\n    private authService: AuthService\n  ) {\n    this.connectionState$ = new Observable<ConnectionState>((observer: any) => {\n      this.connectionStateObserver = observer;\n    }).pipe(share()); // share() allows multiple subscribers\n\n    this.error$ = this.errorSubject.asObservable();\n    this.starting$ = this.startingSubject.asObservable();\n\n    //this.connectionStateObserver.next(ConnectionState.Connecting);\n  }\n\n  public async start(): Promise<void> {\n    console.log('SignalR Channel Start()');\n    this.retryCount = 0;\n\n    if (!this.started) {\n      try {\n        this.connectionStateObserver?.next(ConnectionState.Connecting);\n        const tokens = await this.authService.retrieveTokens();\n\n        if (tokens) {\n        this.hubConnection = new signalR.HubConnectionBuilder()\n          .withUrl(this.config.channelUrl + this.config.realtimeGeolocationHubName + `?access_token=${encodeURIComponent(tokens.access_token)}`)\n          .configureLogging(signalR.LogLevel.Information)\n          .withAutomaticReconnect()\n          .build();\n\n        // SignalR Event Listeners\n        this.hubConnection.on('onPersonnelLocationUpdated', (data: any) => {\n          console.log('onPersonnelLocationUpdated');\n          this.events.publishEvent(\n            this.consts.SIGNALR_EVENTS.PERSONNEL_LOCATION_UPDATED,\n            data\n          );\n        });\n\n        this.hubConnection.on('onUnitLocationUpdated', (data: any) => {\n          console.log('onUnitLocationUpdated');\n          this.events.publishEvent(\n            this.consts.SIGNALR_EVENTS.UNIT_LOCATION_UPDATED,\n            data\n          );\n        });\n\n        this.hubConnection.on('onGeolocationConnect', (data: any) => {\n          console.log(`onGeolocationConnect with ${data}`);\n          //this.widgetPubSub.emitSignalRConnected(data);\n        });\n\n        this.hubConnection\n          .start()\n          .then(() => {\n            console.log('Connection started');\n            this.connectionStateObserver?.next(ConnectionState.Connected);\n\n            this.hubConnection\n              ?.invoke('geolocationConnect')\n              .then(() => {\n                console.log(\n                  `Successfully subscribed to geolocationConnect channel`\n                );\n              })\n              .catch((error: any) => {\n                console.log(\n                  `Error subscribed to geolocationConnect channel, ERROR: ${error}`\n                );\n              });\n\n            this.started = true;\n          })\n          .catch((err) => {\n            this.retryCount++;\n            console.log('Error while starting connection: ' + err);\n            this.connectionStateObserver?.next(ConnectionState.Disconnected);\n            this.errorSubject.next(err);\n          });\n        }\n      } catch (ex) {\n        console.log(ex);\n      }\n    }\n  }\n\n  public restart(departmentId: string): void {\n    if (this.hubConnection && this.started === false) {\n      try {\n        this.hubConnection\n          .start()\n          .then(() => {\n            console.log('Connection started');\n            this.connectionStateObserver?.next(ConnectionState.Connected);\n\n            this.hubConnection\n              ?.invoke('geolocationConnect', parseInt(departmentId))\n              .then(() => {\n                console.log(\n                  `Successfully subscribed to Connect channel with ${departmentId}`\n                );\n              })\n              .catch((error: any) => {\n                console.log(\n                  `Error subscribed to Connect channel with ${departmentId}, ERROR: ${error}`\n                );\n              });\n\n            this.started = true;\n          })\n          .catch((err) => {\n            console.log('Error while restarting connection: ' + err);\n            this.connectionStateObserver?.next(ConnectionState.Disconnected);\n            \n            if (this.retryCount < 10) {\n              this.started = false;\n            } else {\n              console.log('Hub connection retry count exceeded');\n              this.started = true;  // Give up\n            }\n\n            this.retryCount++;\n            this.errorSubject.next(err);\n          });\n      } catch (ex) {\n        console.log(ex);\n      }\n    }\n  }\n\n  public stop() {\n    if (this.hubConnection) {\n      this.hubConnection.stop().then(() => {\n        console.log('Connection stopped');\n        this.connectionStateObserver?.next(ConnectionState.Disconnected);\n        this.started = false;\n        this.retryCount = 0;\n      })\n      .catch((err) => {\n        console.log('Error while starting connection: ' + err);\n        this.connectionStateObserver?.next(ConnectionState.Disconnected);\n        this.started = false;\n        this.retryCount = 0;\n        this.errorSubject.next(err);\n      });\n    }\n  }\n\n  /**\n   * Get an observable that will contain the data associated with a specific\n   * channel\n   * */\n  private sub(\n    channel: string,\n    data?: string\n  ): Observable<ChannelEvent> | undefined {\n    // Try to find an observable that we already created for the requested\n    //  channel\n    //\n    let channelSub = this.subjects.find((x: ChannelSubject) => {\n      return x.channel === channel;\n    }) as ChannelSubject;\n\n    // If we already have one for this event, then just return it\n    //\n    if (channelSub !== undefined) {\n      console.log(`Found existing observable for ${channel} channel`);\n      return channelSub?.subject?.asObservable();\n    }\n\n    //\n    // If we're here then we don't already have the observable to provide the\n    //  caller, so we need to call the server method to join the channel\n    //  and then create an observable that the caller can use to received\n    //  messages.\n    //\n\n    // Now we just create our internal object so we can track this subject\n    //  in case someone else wants it too\n    //\n    channelSub = new ChannelSubject();\n    channelSub.channel = channel;\n    channelSub.subject = new Subject<ChannelEvent>();\n    this.subjects.push(channelSub);\n\n    // Now SignalR is asynchronous, so we need to ensure the connection is\n    //  established before we call any server methods. So we'll subscribe to\n    //  the starting$ stream since that won't emit a value until the connection\n    //  is ready\n    //\n    this.starting$.subscribe(\n      () => {\n        this.hubConnection\n          ?.invoke(channel, data)\n          .then(() =>\n            console.log(\n              `Successfully subscribed to ${channel} channel with ${data}`\n            )\n          )\n          .catch((err) => channelSub?.subject?.error(err));\n      },\n      (error: any) => {\n        channelSub?.subject?.error(error);\n      }\n    );\n\n    return channelSub.subject.asObservable();\n  }\n\n  // Not quite sure how to handle this (if at all) since there could be\n  //  more than 1 caller subscribed to an observable we created\n  //\n  // unsubscribe(channel: string): Rx.Observable<any> {\n  //     this.observables = this.observables.filter((x: ChannelObservable) => {\n  //         return x.channel === channel;\n  //     });\n  // }\n\n  /** publish provides a way for calls to emit events on any channel. In a\n   * production app the server would ensure that only authorized clients can\n   * actually emit the message, but here we're not concerned about that.\n   */\n  private publish(ev: ChannelEvent): void {\n    this.hubConnection?.invoke('Publish', ev);\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Consts } from '../consts';\nimport { CustomStatusResultData } from '../models/v4/customStatuses/customStatusResultData';\nimport { CustomStatesService } from './custom-states.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TypesService {\n  private statuses: CustomStatusResultData[] = [];\n\tprivate staffings: CustomStatusResultData[] = [];\n\tprivate unitStates: CustomStatusResultData[] = [];\n\n  constructor(\n    private customStatesProvider: CustomStatesService,\n    private consts: Consts\n  ) {}\n\n  ngOnInit() {\n\n  }\n\n  public init() {\n\t\tthis.statuses = this.customStatesProvider.getPersonnelStatuses();\n\t\tthis.staffings = this.customStatesProvider.getPersonnelStaffing();\n    this.unitStates = this.customStatesProvider.getUnitStates();\n\t}\n\n  public statusToTextConverter(value: number): string {\n    if (value <= 25) {\n      if (value === 0) {\n        return 'Standing By';\n      } else if (value === 1) {\n        return 'Not Responding';\n      } else if (value === 2) {\n        return 'Responding';\n      } else if (value === 3) {\n        return 'On Scene';\n      } else if (value === 4) {\n        return 'Available Station';\n      } else if (value === 5) {\n        return 'Responding Station';\n      } else if (value === 6) {\n        return 'Responding Scene';\n      } else {\n        return 'Unknown';\n      }\n    } else if (this.statuses) {\n      let state: any;\n\n      this.statuses.forEach((element) => {\n        if (element.Id == value.toString()) {\n          state = element;\n        }\n      });\n\n      if (state) {\n        return state.Text;\n      } else {\n        return 'Unknown';\n      }\n    } else {\n      return 'Unknown';\n    }\n  }\n\n  public statusTextToValueConverter(text: string): number {\n    if (text === 'Standing By') {\n      return 0;\n    } else if (text === 'Not Responding') {\n      return 1;\n    } else if (text === 'Responding') {\n      return 2;\n    } else if (text === 'On Scene') {\n      return 3;\n    } else if (text === 'Available Station') {\n      return 4;\n    } else if (text === 'Responding Station') {\n      return 5;\n    } else if (text === 'Responding Scene') {\n      return 6;\n    } else {\n      return 0;\n    }\n  }\n\n  public statusToColorConverter(value: number): string {\n    if (value <= 25) {\n      if (value === 0) {\n        return '#000000';\n      } else if (value === 1) {\n        return '#d2322d';\n      } else if (value === 2) {\n        return '#47a447';\n      } else if (value === 3) {\n        return '#000000';\n      } else if (value === 4) {\n        return '#5bc0de';\n      } else if (value === 5) {\n        return '#47a447';\n      } else if (value === 6) {\n        return '#47a447';\n      } else {\n        return '#000000';\n      }\n    } else if (this.statuses) {\n      let state: any;\n\n      this.statuses.forEach((element) => {\n        if (element.Id == value.toString()) {\n          state = element;\n        }\n      });\n\n      if (state) {\n        return state.BColor;\n      } else {\n        return '#000000';\n      }\n    } else {\n      return '#000000';\n    }\n  }\n\n  public staffingToTextConverter(value: number): string {\n    if (value <= 25) {\n      if (value === 0) {\n        return 'Available';\n      } else if (value === 1) {\n        return 'Delayed';\n      } else if (value === 2) {\n        return 'Unavailable';\n      } else if (value === 3) {\n        return 'Committed';\n      } else if (value === 4) {\n        return 'On Shift';\n      } else {\n        return 'Unknown';\n      }\n    } else if (this.staffings) {\n      let staffing: any;\n\n      this.staffings.forEach((element) => {\n        if (element.Id == value.toString()) {\n          staffing = element;\n        }\n      });\n\n      if (staffing) {\n        return staffing.Text;\n      } else {\n        return 'Unknown';\n      }\n    } else {\n      return 'Unknown';\n    }\n  }\n\n  public staffingTextToValueConverter(text: string): number {\n    if (text === 'Available') {\n      return 0;\n    } else if (text === 'Delayed') {\n      return 1;\n    } else if (text === 'Unavailable') {\n      return 2;\n    } else if (text === 'Committed') {\n      return 3;\n    } else if (text === 'On Shift') {\n      return 4;\n    } else {\n      return 0;\n    }\n  }\n\n  public staffingToColorConverter(value: number): string {\n    if (value <= 25) {\n      if (value === 0) {\n        return '#000000';\n      } else if (value === 1) {\n        return '#f0ad4e';\n      } else if (value === 2) {\n        return '#d43f3a';\n      } else if (value === 3) {\n        return '#5bc0de';\n      } else if (value === 4) {\n        return '#000000';\n      } else {\n        return '#000000';\n      }\n    } else if (this.staffings) {\n      let staffing: any;\n\n      this.staffings.forEach((element) => {\n        if (element.Id == value.toString()) {\n          staffing = element;\n        }\n      });\n\n      if (staffing) {\n        return staffing.BColor;\n      } else {\n        return '#000000';\n      }\n    } else {\n      return '#000000';\n    }\n  }\n\n  public unitStatusToTextConverter(value: number): string {\n    if (value <= 25) {\n      if (value === 0) {\n        return 'Available';\n      } else if (value === 1) {\n        return 'Delayed';\n      } else if (value === 2) {\n        return 'Unavailable';\n      } else if (value === 3) {\n        return 'Committed';\n      } else if (value === 4) {\n        return 'Out Of Service';\n      } else if (value === 5) {\n        return 'Responding';\n      } else if (value === 6) {\n        return 'On Scene';\n      } else if (value === 7) {\n        return 'Staging';\n      } else if (value === 8) {\n        return 'Returning';\n      } else if (value === 9) {\n        return 'Cancelled';\n      } else if (value === 10) {\n        return 'Released';\n      } else if (value === 11) {\n        return 'Manual';\n      } else if (value === 12) {\n        return 'Enroute';\n      } else {\n        return 'Unknown';\n      }\n    } else if (this.unitStates) {\n      let state: any;\n\n      this.unitStates.forEach((element) => {\n        if (element.Id == value.toString()) {\n          state = element;\n        }\n      });\n\n      if (state) {\n        return state.Text;\n      } else {\n        return 'Unknown';\n      }\n    } else {\n      return 'Unknown';\n    }\n  }\n\n  public unitStatusToColorConverter(value: number): string {\n    if (value <= 25) {\n      if (value === 0) {\n        return '#000000';\n      } else if (value === 1) {\n        return '#f0ad4e';\n      } else if (value === 2) {\n        return '#d2322d';\n      } else if (value === 3) {\n        return '#000000';\n      } else if (value === 4) {\n        return '#d2322d';\n      } else if (value === 5) {\n        return '#47a447';\n      } else if (value === 6) {\n        return '#000000';\n      } else if (value === 7) {\n        return '#000000';\n      } else if (value === 8) {\n        return '#000000';\n      } else if (value === 9) {\n        return '#000000';\n      } else if (value === 10) {\n        return '#000000';\n      } else if (value === 11) {\n        return '#000000';\n      } else if (value === 12) {\n        return '#47a447';\n      } else {\n        return '#000000';\n      }\n    } else if (this.unitStates) {\n      let state: any;\n\n      this.unitStates.forEach((element) => {\n        if (element.Id == value.toString()) {\n          state = element;\n        }\n      });\n\n      if (state) {\n        return state.BColor;\n      } else {\n        return '#000000';\n      }\n    } else {\n      return '#000000';\n    }\n  }\n\n  public unitStatusTextToValueConverter(value: string): number {\n    let returnValue = null;\n\n    if (value === 'Available') {\n      returnValue = 0;\n    } else if (value === 'Delayed') {\n      returnValue = 1;\n    } else if (value === 'Unavailable') {\n      returnValue = 2;\n    } else if (value === 'Committed') {\n      returnValue = 3;\n    } else if (value === 'Out Of Service') {\n      returnValue = 4;\n    } else if (value === 'Responding') {\n      returnValue = 5;\n    } else if (value === 'On Scene') {\n      returnValue = 6;\n    } else if (value === 'Staging') {\n      returnValue = 7;\n    } else if (value === 'Returning') {\n      returnValue = 8;\n    } else if (value === 'Cancelled') {\n      returnValue = 9;\n    } else if (value === 'Released') {\n      returnValue = 10;\n    } else if (value === 'Manual') {\n      returnValue = 11;\n    } else if (value === 'Enroute') {\n      returnValue = 12;\n    }\n\n    if (returnValue == null && this.unitStates) {\n      let state: any;\n\n      this.unitStates.forEach((element) => {\n        if (element.Text == value) {\n          state = element;\n        }\n      });\n\n      if (state) {\n        return state.DetailId;\n      } else {\n        return 0;\n      }\n    } else if (returnValue == null) {\n      return 0;\n    } else {\n      return returnValue;\n    }\n  }\n\n  public priorityToColorConverter(value: number): string {\n    if (value === 0) return '#47a447';\n    else if (value === 1) return '#428bca';\n    else if (value === 2) return '#FF8300';\n    else if (value === 3) return '#d2322d';\n    else return '#000000';\n  }\n\n  public priorityToTextConverter(value: number): string {\n    if (value === 0) {\n      return 'Low';\n    } else if (value === 1) {\n      return 'Medium';\n    } else if (value === 2) {\n      return 'High';\n    } else if (value === 3) {\n      return 'Emergency';\n    } else {\n      return 'Unknown';\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\n\nfunction _window() : any {\n   // return the global native browser window object\n   return window;\n}\n\n@Injectable({\n    providedIn: 'root',\n  })\nexport class WindowRef {\n   get nativeWindow(): any {\n      return _window();\n   }\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { AutofillResultData } from \"./autofillsResultData\";\n\nexport class AutofillsResult extends BaseV4Request  {\n    public Data: AutofillResultData[] = [];\n}\n","export class AutofillResultData  {\n    public AutofillId: string = '';\n    public DepartmentId: number = 0;\n    public Name: string = '';\n    public Sort: number = 0;\n    public Type: number = 0;\n    public Data: string = '';\n    public AddedByUserId: string = '';\n    public AddedOn: string = '';\n}\n","export class CalendarItemResultData  {\n    public CalendarItemId: string = '';\n    public Title: string = '';\n    public Start: string = '';\n    public StartUtc: string = '';\n    public End: string = '';\n    public EndUtc: string = '';\n    public StartTimezone: string = '';\n    public EndTimezone: string = '';\n    public Description: string = '';\n    public RecurrenceId: string = '';\n    public RecurrenceRule: string = '';\n    public RecurrenceException: string = '';\n    public ItemType: number = 0;\n    public IsAllDay: boolean = false;\n    public Location: string = '';\n    public SignupType: number = 0;\n    public Reminder: number = 0;\n    public LockEditing: boolean = false;\n    public Entities: string = '';\n    public RequiredAttendes: string = '';\n    public OptionalAttendes: string = '';\n    public IsAdminOrCreator: boolean = false;\n    public CreatorUserId: string = '';\n    public Attending: boolean = false;\n    public TypeName: string = '';\n    public TypeColor: string = '';\n\n    public Attendees: CalendarItemResultAttendeeData[] = [];\n}\n\nexport class CalendarItemResultAttendeeData  {\n    public CalendarItemId: string = '';\n    public UserId: string = '';\n    public Name: string = '';\n    public GroupName: string = '';\n    public AttendeeType: number = 0;\n    public Timestamp: string = '';\n    public Note: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { CalendarItemResultData } from \"./calendarItemResultData\";\n\nexport class CalendarItemResult extends BaseV4Request  {\n    public Data: CalendarItemResultData = new CalendarItemResultData();\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { CalendarItemResultData } from \"./calendarItemResultData\";\n\nexport class CalendarItemsResult extends BaseV4Request  {\n    public Data: CalendarItemResultData[] = [];\n}\n","export class GetAllCalendarItemTypesResult  {\n    public CalendarItemTypeId: string = '';\n    public Name: string = '';\n    public Color: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { GetAllCalendarItemTypesResult } from \"./calendarItemTypeResultData\";\n\nexport class CalendarItemTypesResult extends BaseV4Request  {\n    public Data: GetAllCalendarItemTypesResult[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SetCalendarAttendingResult extends BaseV4Request  {\n    public Id: string = \"\";\n}","export class CallFileResultData  {\n    public Id: string = '';\n    public CallId: string = '';\n    public Type: number = 0;\n    public FileName: string = '';\n    public Data: string = '';\n    public Name: string = '';\n    public Size: number = 0;\n    public Url: string = '';\n    public UserId: string = '';\n    public Timestamp: string = '';\n    public Mime: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { CallFileResultData } from \"./callFileResultData\";\n\nexport class CallFilesResult extends BaseV4Request  {\n    public Data: CallFileResultData[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SaveCallFileResult extends BaseV4Request  {\n    public Id: string = \"\";\n}","export class CallNoteResultData  {\n    public CallId: number = 0;\n    public CallNoteId: string = '';\n    public UserId: string = '';\n    public Source: number = 0;\n    public TimestampFormatted: string = '';\n    public Timestamp: string = '';\n    public TimestampUtc: string = '';\n    public Note: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public FullName: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { CallNoteResultData } from \"./callNoteResultData\";\n\nexport class CallNotesResult extends BaseV4Request  {\n    public Data: CallNoteResultData[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SaveCallNoteResult extends BaseV4Request  {\n    public Id: string = '';\n}","export class CallPriorityResultData  {\n    public Id: number = 0;   // Call Priority Id\n    public DepartmentId: number = 0;   // Department Id for the Call\n    public Name: string = '';  // Name of the Priority\n    public Color: string = '';  // Color for the Priority\n    public Sort: number = 0; // Sort\n    public IsDeleted: boolean = false;\n    public IsDefault: boolean = false;\n    public Tone: number = 0;\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { CallProtocolsResultData } from \"./callProtocolsResultData\";\n\nexport class CallProtocolsResult extends BaseV4Request  {\n    public Data: CallProtocolsResultData[] = [];\n}\n","export class CallProtocolsResultData  {\n    public Id: string = '';\n    public DepartmentId: string = '';\n    public Name: string = '';\n    public Code: string = '';\n    public Description: string = '';\n    public ProtocolText: string = '';\n    public CreatedOn: string = '';\n    public CreatedByUserId: string = '';\n    public IsDisabled: boolean = false;\n    public UpdatedOn: string = '';\n    public UpdatedByUserId: string = '';\n    public MinimumWeight: number = 0;\n    public State: number = 0;\n    public Triggers: ProtocolTriggerResultData[] = [];\n    public Attachments: ProtocolTriggerAttachmentResultData[] = [];\n    public Questions: ProtocolTriggerQuestionResultData[] = [];\n}\n\nexport class ProtocolTriggerResultData  {\n    public Id: string = '';\n    public Type: number = 0;\n    public StartsOn: string = '';\n    public EndsOn: string = '';\n    public Priority: number = 0;\n    public CallType: string = '';\n    public Geofence: string = '';\n}\n\nexport class ProtocolTriggerAttachmentResultData  {\n    public Id: string = '';\n    public FileName: string = '';\n    public FileType: string = '';\n}\n\nexport class ProtocolTriggerQuestionResultData  {\n    public Id: string = '';\n    public Question: string = '';\n    public Answers: ProtocolQuestionAnswerResultData[] = [];\n}\n\nexport class ProtocolQuestionAnswerResultData  {\n    public Id: string = '';\n    public Answer: string = '';\n    public Weight: number = 0;\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { CallResultData } from \"./callResultData\";\n\nexport class ActiveCallsResult extends BaseV4Request  {\n    public Data: CallResultData[] = [];\n}\n","import { CallPriorityResultData } from \"../callPriorities/callPriorityResultData\";\nimport { CallProtocolsResultData } from \"../callProtocols/callProtocolsResultData\";\nimport { DispatchedEventResultData } from \"./dispatchedEventResultData\";\n\nexport class CallExtraDataResultData {\n    public CallFormData: string = '';\n    public Activity: DispatchedEventResultData[] = []; \n    public Dispatches: DispatchedEventResultData[] = [];\n    public Priority: CallPriorityResultData = new CallPriorityResultData();\n    public Protocols: CallProtocolsResultData[] = [];\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { CallExtraDataResultData } from \"./callExtraDataResultData\";\n\nexport class CallExtraDataResult extends BaseV4Request  {\n    public Data: CallExtraDataResultData = new CallExtraDataResultData();\n}\n","export class CallResultData {\n    public CallId: string = ''; \n    public Priority: number = 0;\n    public Name: string = '';\n    public Nature: string = '';\n    public Note: string = '';\n    public Address: string = '';\n    public Geolocation: string = '';\n    public LoggedOn: string = '';\n    public State: string = '';\n    public Number: string = '';\n    public NotesCount: number = 0;\n    public AudioCount: number = 0;\n    public ImgagesCount: number = 0;\n    public FileCount: number = 0;\n    public What3Words: string = '';\n    public ContactName: string = '';\n    public ContactInfo: string = '';\n    public ReferenceId: string = '';\n    public ExternalId: string = '';\n    public IncidentId: string = '';\n    public AudioFileId: string = '';\n    public Type: string = 'No Type';\n    public LoggedOnUtc: string = '';\n    public DispatchedOn: string = '';\n    public DispatchedOnUtc: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { CallResultData } from \"./callResultData\";\n\nexport class CallResult extends BaseV4Request  {\n    public Data: CallResultData = new CallResultData();\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class CloseCallResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class DeleteCallResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","export class DispatchedEventResultData {\n    public Id: string = \"\";\n    public Timestamp: string = \"\";\n    public Type: string = \"\";\n    public Name: string = \"\";\n    public GroupId: string = \"\";\n    public Group: string = \"\";\n    public Note: string = \"\";\n    public StatusId: number = 0;\n    public Location: string = \"\";\n\n    public StatusText: string = \"\";\n    public StatusColor: string = \"\";\n}","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SaveCallResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { CallResultData } from \"./callResultData\";\n\nexport class ScheduledCallsResult extends BaseV4Request  {\n    public Data: CallResultData[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class UpdateCallResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class UpdateDispatchTimeResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","export class CallTypeResultData  {\n    public Id: string = '';\n    public Name: string = '';\n}","export class CustomStatusResultData  {\n    public Id: string = '';\n    public Type: number = 0;\n    public StateId: string = '';\n    public Text: string = '';\n    public BColor: string = '';\n    public Color: string = '';\n    public Gps: boolean = false;    \n    public Note: number = 0;\n    public Detail: number = 0;\n    public IsDeleted: boolean = false;    \n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { CustomStatusResultData } from \"./customStatusResultData\";\n\nexport class CustomStatusesResult extends BaseV4Request  {\n    public Data: CustomStatusResultData[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { GetCallTemplatesResultData } from \"./getCallTemplatesResultData\";\n\nexport class GetCallTemplatesResult extends BaseV4Request  {\n    public Data: GetCallTemplatesResultData[] = [];\n}\n","export class GetCallTemplatesResultData  {\n    public Id: string = '';\n    public IsDisabled: boolean = false;\n    public Name: string = '';\n    public CallName: string = '';\n    public CallNature: string = '';\n    public CallType: string = '';\n    public CallPriority: number = 0;\n    public CreatedByUserId: string = '';\n    public CreatedOn: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { GetPersonnelForCallGridResultData } from \"./getPersonnelForCallGridResultData\";\n\nexport class GetPersonnelForCallGridResult extends BaseV4Request  {\n    public Data: GetPersonnelForCallGridResultData[] = [];\n}\n","export class GetPersonnelForCallGridResultData  {\n    public UserId: string = '';\n    public Name: string = '';\n    public FirstName: string = '';\n    public LastName: string = '';\n    public UnitName: string = '';\n    public Group: string = '';\n    public GroupId: string = '';\n    public Status: string = '';\n    public StatusColor: string = '';\n    public Staffing: string = '';\n    public StaffingColor: string = '';\n    public Roles: string[] = [];\n    public Eta: string = '';\n    public Weight: string = '';\n    public Location: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { GetRolesForCallGridResultData } from \"./getRolesForCallGridResultData\";\n\nexport class GetRolesForCallGridResult extends BaseV4Request  {\n    public Data: GetRolesForCallGridResultData[] = [];\n}\n    ","export class GetRolesForCallGridResultData  {\n    public RoleId: string = '';\n    public Name: string = '';\n    public Count: number = 0;\n}\n","import { CallResultData } from \"../calls/callResultData\";\nimport { CustomStatusResultData } from \"../customStatuses/customStatusResultData\";\nimport { GroupResultData } from \"../groups/groupsResultData\";\n\nexport class GetSetUnitStateResultData  {\n    public UnitId: string = '';\n    public UnitName: string = '';\n    public Stations: GroupResultData[] = [];\n    public Calls: CallResultData[] = [];\n    public Statuses: CustomStatusResultData[] = [];\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { GetSetUnitStateResultData } from \"./getSetUnitStateResultData\";\n\nexport class GetSetUnitStateResult extends BaseV4Request  {\n    public Data: GetSetUnitStateResultData = new GetSetUnitStateResultData();\n}\n","import { CallPriorityResultData } from \"../callPriorities/callPriorityResultData\";\nimport { CallTypeResultData } from \"../callTypes/callTypeResultData\";\nimport { CustomStatusResultData } from \"../customStatuses/customStatusResultData\";\nimport { GroupResultData } from \"../groups/groupsResultData\";\nimport { PersonnelInfoResultData } from \"../personnel/personnelInfoResultData\";\nimport { RoleResultData } from \"../roles/roleResultData\";\nimport { UnitRoleResultData } from \"../unitRoles/unitRoleResultData\";\nimport { UnitResultData } from \"../units/unitResultData\";\nimport { UnitStatusResultData } from \"../unitStatus/unitStatusResultData\";\n\nexport class NewCallFormResultData  {\n    public Personnel: PersonnelInfoResultData[] = [];\n    public Groups: GroupResultData[] = [];\n    public Units: UnitResultData[] = [];\n    public Roles: RoleResultData[] = [];\n    public Statuses: CustomStatusResultData[] = [];\n    public UnitStatuses: UnitStatusResultData[] = [];\n    public UnitRoles: UnitRoleResultData[] = [];\n    public Priorities: CallPriorityResultData[] = [];\n    public CallTypes: CallTypeResultData[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { NewCallFormResultData } from \"./newCallFormResultData\";\n\nexport class NewCallFormResult extends BaseV4Request  {\n    public Data: NewCallFormResultData = new NewCallFormResultData();\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { GroupsForCallGridData } from \"./getGroupsForCallGridResultData\";\n\nexport class GetGroupsForCallGridResult extends BaseV4Request  {\n    public Data: GroupsForCallGridData[] = [];\n}\n","export class GroupsForCallGridData {\n    public GroupId: string = \"\";\n    public Name: string = \"\";\n    public Count: number = 0;\n}","export class FormDataAutomationResult {\n    public Id: string = '';\n    public FormId: string = '';\n    public TriggerField: string = '';\n    public TriggerValue: string = '';\n    public OperationType: number = 0;\n    public OperationValue: string = '';\n}","import { FormDataAutomationResult } from './formDataAutomationResult';\n\nexport class FormResultData {\n    public Id: string = '';\n    public Name: string = '';\n    public Type: number = 0;\n    public Data: string = '';\n\n    public Automations: FormDataAutomationResult[] = [];\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { FormResultData } from \"./formResultData\";\n\nexport class FormResult extends BaseV4Request  {\n    public Data: FormResultData = new FormResultData();\n}\n","export class GroupResultData  {\n    public GroupId: string = '';\n    public TypeId: number = 0;\n    public Name: string = '';\n    public Address: string = '';\n\n    public GroupType: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { GroupResultData } from \"./groupsResultData\";\n\nexport class GroupResult extends BaseV4Request  {\n    public Data: GroupResultData = new GroupResultData();\n}\n","export class HealthResultData  {\n    public SiteId: string = '';\n    public ServicesVersion: string = '';\n    public ApiVersion: string = '';\n    public DatabaseOnline: boolean = false;\n    public CacheOnline: boolean = false;\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { HealthResultData } from \"./healthResultData\";\n\nexport class HealthResult extends BaseV4Request  {\n    public Data: HealthResultData = new HealthResultData();\n}\n","export class MapDataAndMarkersData  {\n    public CenterLat: string = '';\n    public CenterLon: string = '';\n    public ZoomLevel: string = '';\n    public MapMakerInfos: MapMakerInfoData[] = [];\n}\n\nexport class MapMakerInfoData  {\n    public Id: string = '';\n    public Longitude: number =  0;\n    public Latitude: number =  0;\n    public Title: string = '';\n    public zIndex: string = '';\n    public ImagePath: string = '';\n    public InfoWindowContent: string = '';\n    public Color: string = '';\n    public Type: number = 0;\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { MapDataAndMarkersData } from \"./getMapDataAndMarkersData\";\n\nexport class GetMapDataAndMarkersResult extends BaseV4Request  {\n    public Data: MapDataAndMarkersData = new MapDataAndMarkersData();\n}\n","import { FeatureCollection } from \"geojson\";\n\nexport class GetMapLayersResultData  {\n    public LayerJson: string = '';\n    public Layers: GetMapLayersData[] = [];\n}\n\nexport class GetMapLayersData {\n    public Id: string = '';\n    public DepartmentId: string = '';\n    public Name: string = '';\n    public Type: number = 0;\n    public Color: string = '';\n    public IsSearchable: boolean = false;\n    public IsOnByDefault: boolean = false;\n    public AddedById: string = '';\n    public AddedOn: string = '';\n    public UpdatedById: string = '';\n    public UpdatedOn: string = '';\n    public Data: GetMapLayersDataInfo = new GetMapLayersDataInfo();\n}\n\nexport class GetMapLayersDataInfo  {\n    public Type: string = '';\n    public Features: FeatureCollection[] = [];\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { GetMapLayersResultData } from \"./getMapLayersResultData\";\n\nexport class GetMapLayersResult extends BaseV4Request {\n    public Data: GetMapLayersResultData = new GetMapLayersResultData();\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class DeleteMessageResult extends BaseV4Request  {\n    public Id: string = \"\";\n}","export class MessageRecipientInput  {\n    public Id: string = '';\n    public Type: number = 0;\n    public Name: string = '';\n}","export class MessageResultData  {\n    public MessageId: string = '';\n    public Subject: string = '';\n    public SendingName: string = '';\n    public SendingUserId: string = '';\n    public Body: string = '';\n    public SentOn: string = '';\n    public SentOnUtc: string = '';\n    public Type: number = 0;\n    public ExpiredOn: string = '';\n    public Responded: boolean = false;\n    public Note: string = '';\n    public RespondedOn: string = '';\n    public ResponseType: string = '';\n    public IsSystem: boolean = false;\n\n    public Recipients: MessageRecipientResultData[] = [];\n}\n\nexport class MessageRecipientResultData  {\n    public MessageId: string = '';\n    public UserId: string = '';\n    public Name: string = '';\n    public RespondedOn: string = '';\n    public Response: string = '';\n    public Note: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { MessageResultData } from \"./messageResultData\";\n\nexport class MessageResult extends BaseV4Request  {\n    public Data: MessageResultData = new MessageResultData();\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { MessageResultData } from \"./messageResultData\";\n\nexport class MessagesResult extends BaseV4Request  {\n    public Data: MessageResultData[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class RespondToMessageResult extends BaseV4Request  {\n    public Id: string = \"\";\n}","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SendMessageResult extends BaseV4Request  {\n    public Id: string = \"\";\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { RecipientsResultData } from \"./recipientsResultData\";\n\nexport class GetRecipientsResult extends BaseV4Request  {\n    public Data: RecipientsResultData[] = [];\n}\n","export class RecipientsResultData  {\n    public Id: string = '';\n    public Type: string = '';\n    public Name: string = '';\n    public Selected: boolean = false;\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { NoteResultData } from \"./noteResultData\";\n\nexport class NotesResult extends BaseV4Request  {\n    public Data: NoteResultData[] = [];\n}\n","export class NoteResultData  {\n    public NoteId: string = '';\n    public UserId: string = '';\n    public Title: string = '';\n    public Body: string = '';\n    public Color: string = '';\n    public Category: string = '';\n    public ExpiresOn: string = '';\n    public AddedOn: string = '';\n}","import { BaseV4Request } from '../baseV4Request';\nimport { NoteCategoryResultData } from './noteCategoryResultData';\n\nexport class NoteCategoryResult extends BaseV4Request {\n  public Data: NoteCategoryResultData[] = [];\n}\n","export class NoteCategoryResultData {\n  public NoteCategoryId: string = '';\n  public Category: string = '';\n}\n","import { BaseV4Request } from '../baseV4Request';\n\nexport class SaveNoteResult extends BaseV4Request {\n  public Id: string = '';\n}\n","export class FilterResultData {\n    public Id: string = '';\n    public Type: string = '';\n    public Name: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { FilterResultData } from \"./filterResultData\";\n\nexport class GetPersonnelFilterOptionsResult extends BaseV4Request  {\n    public Data: FilterResultData[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { PersonnelInfoResultData } from \"./personnelInfoResultData\";\n\nexport class GetAllPersonnelInfosResult extends BaseV4Request  {\n    public Data: PersonnelInfoResultData[] = [];\n}\n","export class PersonnelInfoResultData {\n    public UserId: string = '';\n    public IdentificationNumber: string = '';\n    public DepartmentId: string = '';\n    public FirstName: string = '';\n    public LastName: string = '';\n    public EmailAddress: string = '';\n    public MobilePhone: string = '';\n    public GroupId: string = '';\n    public GroupName: string = '';\n    public StatusId: string = '';\n    public Status: string = '';\n    public StatusColor: string = '';\n    public StatusTimestamp: string = '';\n    public StatusDestinationId: string = '';\n    public StatusDestinationName: string = '';\n    public StaffingId: string = '';\n    public Staffing: string = '';\n    public StaffingColor: string = '';\n    public StaffingTimestamp: string = '';\n    public Roles: string[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { PersonnelInfoResultData } from \"./personnelInfoResultData\";\n\nexport class PersonnelInfoResult extends BaseV4Request  {\n    public Data: PersonnelInfoResultData = new PersonnelInfoResultData();\n}\n","export class PersonnelLocationResultData  {\n    public UserId: string = '';\n    public Timestamp: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public Accuracy: string = '';\n    public Altitude: string = '';\n    public AltitudeAccuracy: string = '';\n    public Speed: string = '';\n    public Heading: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { PersonnelLocationResultData } from \"./personnelLocationResultData\";\n\nexport class PersonnelLocationResult extends BaseV4Request  {\n    public Data: PersonnelLocationResultData = new PersonnelLocationResultData();\n}","export class SavePersonnelLocationInput  {\n    public UserId: string = '';\n    public Timestamp: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public Accuracy: string = '';\n    public Altitude: string = '';\n    public AltitudeAccuracy: string = '';\n    public Speed: string = '';\n    public Heading: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SavePersonnelLocationResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","export class GetCurrentStatusResultData {\n    public UserId: string = '';\n    public DepartmentId: string = '';\n    public StatusType: number = 0;\n    public TimestampUtc: string = '';\n    public Timestamp: string = '';\n    public Note: string = '';\n    public DestinationId: string = '';\n    public DestinationType: string = '';\n    public GeoLocationData: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { GetCurrentStatusResultData } from \"./getCurrentStatusResultData\";\n\nexport class GetCurrentStatusResult extends BaseV4Request  {\n    public Data: GetCurrentStatusResultData = new GetCurrentStatusResultData();\n}\n","export class SavePersonsStatusesInput  {\n    public UserIds: string[] = [];\n    public Type: string = '';\n    public RespondingTo: string = '';\n    public TimestampUtc: string = '';\n    public Timestamp: string = '';\n    public Note: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public Accuracy: string = '';\n    public Altitude: string = '';\n    public AltitudeAccuracy: string = '';\n    public Speed: string = '';\n    public Heading: string = '';\n    public EventId: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SavePersonsStatusesResult extends BaseV4Request  {\n    public Ids: string[] = [];\n}\n","export class SavePersonStatusInput  {\n    public UserId: string = '';\n    public Type: string = '';\n    public RespondingTo: string = '';\n    public TimestampUtc: string = '';\n    public Timestamp: string = '';\n    public Note: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public Accuracy: string = '';\n    public Altitude: string = '';\n    public AltitudeAccuracy: string = '';\n    public Speed: string = '';\n    public Heading: string = '';\n    public EventId: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SavePersonStatusResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","export class GetCurrentStaffingResultData {\n    public UserId: string = '';\n    public DepartmentId: string = '';\n    public StaffingType: number = 0;\n    public TimestampUtc: string = '';\n    public Timestamp: string = '';\n    public Note: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { GetCurrentStaffingResultData } from \"./getCurrentStaffingResultData\";\n\nexport class GetCurrentStaffingResult extends BaseV4Request  {\n    public Data: GetCurrentStaffingResultData = new GetCurrentStaffingResultData();\n}\n","export class SavePersonsStaffingsInput  {\n    public UserIds: string[] = [];\n    public Type: string = '';\n    public TimestampUtc: string = '';\n    public Timestamp: string = '';\n    public Note: string = '';\n    public EventId: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SavePersonsStaffingsResult extends BaseV4Request  {\n    public Ids: string[] = [];\n}\n","export class SavePersonStaffingInput  {\n    public UserId: string = '';\n    public Type: string = '';\n    public TimestampUtc: string = '';\n    public Timestamp: string = '';\n    public Note: string = '';\n    public EventId: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SavePersonStaffingResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","export class RoleResultData  {\n    public RoleId: string = '';\n    public Name: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { RoleResultData } from \"./roleResultData\";\n\nexport class RolesResult extends BaseV4Request  {\n    public Data: RoleResultData[] = [];\n}\n","\nexport class DepartmentRightsResultData {\n    public DepartmentName: string = '';\n    public FullName: string = '';\n    public EmailAddress: string = '';\n    public DepartmentId: string = '';\n    public IsAdmin: boolean = false;    // Is Department Admin\n    public CanViewPII: boolean = false;    // Can View PII\n    public CanCreateCalls: boolean = false;   // Can Create Calls\n    public CanAddNote: boolean = false;   // Can Add a Note\n    public CanCreateMessage: boolean = false;   // Can Add a Message\n    public Groups: GroupRightResultData[] = []; // Group Rights\n}\n\nexport class GroupRightResultData  {\n    public GroupId: number = 0;         // Group Id\n    public IsGroupAdmin: boolean = false;    // Is Group Admin\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { DepartmentRightsResultData } from \"./departmentRightsResultData\";\n\nexport class DepartmentRightsResult extends BaseV4Request  {\n    public Data: DepartmentRightsResultData = new DepartmentRightsResultData();\n}\n","export class ShiftDaysResultData  {\n    public ShiftId: string = '';\n    public ShiftName: string = '';\n    public ShiftDayId: string = '';\n    public ShiftDay: string = '';\n    public Start: string = '';\n    public End: string = '';\n    public SignedUp: boolean = false;\n    public ShiftType: number = 0;\n\n    public Signups: ShiftDaySignupResultData[] = [];\n    public Needs: ShiftDayGroupNeedsResultData[] = []; \n}\n\nexport class ShiftDaySignupResultData  {\n    public UserId: string = '';\n    public Name: string = '';\n    public Roles: number[] = [];\n}\n\nexport class ShiftDayGroupNeedsResultData  {\n    public GroupId: string = '';\n    public GroupName: string = '';\n    public GroupNeeds: ShiftDayGroupRoleNeedsResultData[] = [];\n}\n\nexport class ShiftDayGroupRoleNeedsResultData  {\n    public RoleId: string = '';\n    public RoleName: string = '';\n    public Needed: number = 0;\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { ShiftDaysResultData } from \"./shiftDayResultData\";\n\nexport class ShiftDayResult extends BaseV4Request  {\n    public Data: ShiftDaysResultData = new ShiftDaysResultData();\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { ShiftDaysResultData } from \"./shiftDayResultData\";\n\nexport class ShiftDaysResult extends BaseV4Request  {\n    public Data: ShiftDaysResultData[] = [];\n}\n","import { ShiftDaysResultData } from \"./shiftDayResultData\";\n\nexport class ShiftResultData  {\n    public ShiftId: string = '';\n    public Name: string = '';\n    public Code: string = '';\n    public Color: string = '';\n    public ScheduleType: number = 0;\n    public AssignmentType: number = 0;\n    public InShift: boolean = false;\n    public PersonnelCount: number = 0;\n    public GroupCount: number = 0;\n    public NextDay: string = '';\n    public NextDayId: string = '';\n\n    public Days: ShiftDaysResultData[] = [];\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { ShiftResultData } from \"./shiftResultData\";\n\nexport class ShiftResult extends BaseV4Request  {\n    public Data: ShiftResultData = new ShiftResultData();\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { ShiftResultData } from \"./shiftResultData\";\n\nexport class ShiftsResult extends BaseV4Request  {\n    public Data: ShiftResultData[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SignupShiftDayResult extends BaseV4Request  {\n    public Id: string = \"\";\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { StatusesResultData } from \"./statusesResultData\";\n\nexport class StatusesResult extends BaseV4Request  {\n    public Data: StatusesResultData[] = [];\n}\n","export class StatusesResultData  {\n    public Id: number = 0;    // Id of the Set\n    public Type: number = 0;   // Type of the Set\n    public StateId: number = 0;    // State Id\n    public Text: string = '';   // Button Text\n    public BColor: string = '';   // Button Color\n    public Color: string = '';   // Text Color\n    public Gps: boolean = false;   // Require GPS\n    public Note: number = 0;    // Note Type\n    public Detail: number = 0;    // Detail Type\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { UnitTypeStatusResultData } from \"./unitTypeStatusResultData\";\n\nexport class UnitTypeStatusesResult extends BaseV4Request  {\n    public Data: UnitTypeStatusResultData[] = [];\n}\n","import { StatusesResultData } from \"./statusesResultData\";\n\nexport class UnitTypeStatusResultData  {\n    public UnitType: string = '';\n    public StatusId: string = '';\n    public Statuses: StatusesResultData[] = [];\n}","\nexport class CallNoteTemplateResultData {\n    public Id: string = '';\n    public Type: number = 0;\n    public Sort: number = 0;\n    public Name: string = '';\n    public Data: string = '';\n    public AddedOn: string = '';\n    public AddedByUserId: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { CallNoteTemplateResultData } from \"./callNoteTemplateResultData\";\n\nexport class CallNoteTemplatesResult extends BaseV4Request  {\n    public Data: CallNoteTemplateResultData[] = [];\n}\n","export class SaveUnitLocationInput  {\n    public UnitId: string = '';\n    public Timestamp: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public Accuracy: string = '';\n    public Altitude: string = '';\n    public AltitudeAccuracy: string = '';\n    public Speed: string = '';\n    public Heading: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SaveUnitLocationResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","export class UnitLocationResultData  {\n    public UnitId: string = '';\n    public Timestamp: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public Accuracy: string = '';\n    public Altitude: string = '';\n    public AltitudeAccuracy: string = '';\n    public Speed: string = '';\n    public Heading: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { UnitLocationResultData } from \"./unitLocationResultData\";\n\nexport class UnitLocationResult extends BaseV4Request  {\n    public Data: UnitLocationResultData = new UnitLocationResultData();\n}","export class UnitRoleResultData  {\n    public UnitId: string = '';\n    public UnitRoleId: string = '';\n    public Name: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { UnitRoleResultData } from \"./unitRoleResultData\";\n\nexport class UnitRolesForUnitResult extends BaseV4Request  {\n    public Data: UnitRoleResultData[] = [];\n}\n","import { UnitRoleResultData } from \"./unitRoleResultData\";\n\nexport class ActiveUnitRoleResultData extends UnitRoleResultData {\n    public UserId: string = '';\n    public FullName: string = '';\n    public UpdatedOn: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { ActiveUnitRoleResultData } from \"./activeUnitRoleResultData\";\n\nexport class ActiveUnitRolesResult extends BaseV4Request  {\n    public Data: ActiveUnitRoleResultData[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SetRoleAssignmentsForUnitResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","export class SetUnitRolesInput  {\n    public UnitId: string = '';\n    public Roles: SetUnitRolesRoleInput[] = [];\n}\n\nexport class SetUnitRolesRoleInput  {\n    public UserId: string = '';\n    public RoleId: string = '';\n    public Name: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { FilterResultData } from \"../personnel/filterResultData\";\n\nexport class GetUnitFilterOptionsResult extends BaseV4Request  {\n    public Data: FilterResultData[] = [];\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { UnitInfoResultData } from \"./unitInfoResultData\";\n\nexport class UnitsInfoResult extends BaseV4Request  {\n    public Data: UnitInfoResultData[] = [];\n}\n","import { UnitRoleData } from \"./unitRoleData\";\n\nexport class UnitInfoResultData {\n    public UnitId: string = '';\n    public DepartmentId: string = '';\n    public Name: string = '';\n    public Type: string = '';\n    public TypeId: number = 0;\n    public CustomStatusSetId: string = '';\n    public GroupId: string = '';\n    public GroupName: string = '';\n    public Vin: string = '';\n    public PlateNumber: string = '';\n    public FourWheelDrive: boolean = false;\n    public SpecialPermit: boolean = false;\n    public CurrentDestinationId: string = '';\n    public CurrentDestinationName: string = '';\n    public CurrentStatusId: string = '';\n    public CurrentStatus: string = '';\n    public CurrentStatusColor: string = '';\n    public CurrentStatusTimestampUtc: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public Note: string = '';\n    public Roles: UnitRoleData[] = [];\n}\n","export class UnitRoleData  {\n    public RoleId: string = '';\n    public UserId: string = '';\n    public RoleName: string = '';\n    public Name: string = '';\n}\n","export class UnitResultData  {\n    public UnitId: string = '';\n    public DepartmentId: string = '';\n    public Name: string = '';\n    public Type: string = '';\n    public TypeId: number = 0;\n    public CustomStatusSetId: string = '';\n    public GroupId: string = '';\n    public GroupName: string = '';\n    public Vin: string = '';\n    public PlateNumber: string = '';\n    public FourWheelDrive: boolean = false;\n    public SpecialPermit: boolean = false;\n    public CurrentDestinationId: string = '';\n    public CurrentStatusId: string = '';\n    public CurrentStatusTimestamp: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public Note: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { UnitResultData } from \"./unitResultData\";\n\nexport class UnitsResult extends BaseV4Request  {\n    public Data: UnitResultData[] = [];\n}\n","export class SaveUnitStatusInput  {\n    public Id: string = '';\n    public Type: string = '';\n    public RespondingTo: string = '';\n    public TimestampUtc: string = '';\n    public Timestamp: string = '';\n    public Note: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public Accuracy: string = '';\n    public Altitude: string = '';\n    public AltitudeAccuracy: string = '';\n    public Speed: string = '';\n    public Heading: string = '';\n    public EventId: string = '';\n    public Roles: SaveUnitStatusRoleInput[] = [];\n}\n\nexport class SaveUnitStatusRoleInput  {\n    public Id: string = '';\n    public EventId: string = '';\n    public UserId: string = '';\n    public RoleId: string = '';\n    public Name: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class SaveUnitStatusResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","export class UnitStatusResultData  {\n    public Name: string = '';\n    public Type: string = '';\n    public State: string = '';\n    public StateCss: string = '';\n    public StateStyle: string = '';\n    public Timestamp: string = '';\n    public DestinationId: string = '';\n    public Note: string = '';\n    public Latitude: string = '';\n    public Longitude: string = '';\n    public GroupName: string = '';\n    public GroupId: string = '';\n    public Eta: string = '';\n    public UnitId: string = '';\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { UnitStatusResultData } from \"./unitStatusResultData\";\n\nexport class UnitStatusesResult extends BaseV4Request  {\n    public Data: UnitStatusResultData[] = [];\n}\n","export class DepartmentVoiceResultData {\n    public VoiceEnabled: boolean = false;\n    public Realm: string = '';\n    public Type: number = 0;\n    public VoipServerWebsocketSslAddress: string = '';\n    public CallerIdName: string = '';\n    public CanConnectApiToken: string = '';\n    public Channels: DepartmentVoiceChannelResultData[] = [];\n    public UserInfo: DepartmentVoiceUserInfoResultData = new DepartmentVoiceUserInfoResultData();\n}\n\nexport class DepartmentVoiceChannelResultData {\n    public Id: string = '';\n    public Name: string = ''; \n    public ConferenceNumber: number = 0; \n    public IsDefault: boolean = false;\n    public Token: string = '';\n}\n\nexport class DepartmentVoiceUserInfoResultData {\n    public Username: string = ''; \n    public Password: string = ''; \n    public Pin: string = ''; \n}","import { ICacheable } from \"../../cacheable\";\nimport { BaseV4Request } from \"../baseV4Request\";\nimport { DepartmentVoiceResultData } from \"./departmentVoiceResultData\";\n\nexport class DepartmentVoiceResult extends BaseV4Request implements ICacheable  {\n    public cacheKey: string = 'DepartmentVoiceResult';\n    public cacheTime: number = 20160;\n    public cacheSavedOn: Date | undefined = undefined;\n    public cacheHitFailed: boolean = false;\n    public cacheType: number = 1;\n\n    public Data: DepartmentVoiceResultData = new DepartmentVoiceResultData();\n}\n","export class VoiceSessionConnectionResultData {\n    public Token: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\nimport { VoiceSessionConnectionResultData } from \"./voiceSessionConnectionResultData\";\n\nexport class VoiceSessionConnectionResult extends BaseV4Request  {\n    public Data: VoiceSessionConnectionResultData = new VoiceSessionConnectionResultData();\n}\n","import { BaseV4Request } from \"../baseV4Request\";\nimport { DepartmentAudioResultStreamData } from \"./departmentAudioResultStreamData\";\n\nexport class DepartmentAudioResult extends BaseV4Request  {\n    public Data: DepartmentAudioResultStreamData[] = [];\n}\n","export class DepartmentAudioResultStreamData {\n    public Id: string = '';\n    public Name: string = '';\n    public Type: string = '';\n    public Url: string = '';\n}","import { BaseV4Request } from \"../baseV4Request\";\n\nexport class PushRegistrationResult extends BaseV4Request  {\n    public Id: string = '';\n}\n","/**\n * Coordinate Bounds Class\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n  */\n import {Coordinate} from \"./Coordinate\";\n\n\n export class Bounds {\n \n   /**\n    * @var Coordinate\n    */\n   protected northWest: Coordinate;\n \n   /**\n    * @var Coordinate\n    */\n   protected southEast: Coordinate;\n \n   /**\n    *\n    * @param {Coordinate} northWest\n    * @param {Coordinate} southEast\n    */\n   constructor(northWest: Coordinate, southEast: Coordinate) {\n     this.northWest = northWest;\n     this.southEast = southEast;\n   }\n \n   /**\n    * Getter\n    *\n    * @returns {Coordinate}\n    */\n   getNorthWest(): Coordinate {\n     return this.northWest;\n   }\n \n   /**\n    * Getter\n    *\n    * @returns {Coordinate}\n    */\n   getSouthEast(): Coordinate {\n     return this.southEast;\n   }\n \n   /**\n    * @returns {number}\n    */\n   getNorth(): number {\n     return this.northWest.getLat();\n   }\n \n   /**\n    * @returns {number}\n    */\n   getSouth(): number {\n     return this.southEast.getLat();\n   }\n \n   /**\n    * @returns {number}\n    */\n   getWest(): number {\n     return this.northWest.getLng();\n   }\n \n   /**\n    * @returns {number}\n    */\n   getEast(): number {\n     return this.southEast.getLng();\n   }\n \n   /**\n    * Calculates the center of this bounds object and returns it as a\n    * Coordinate instance.\n    *\n    * @returns {Coordinate}\n    */\n   getCenter(): Coordinate {\n     let centerLat = (this.getNorth() + this.getSouth()) / 2;\n \n     return new Coordinate(centerLat, this.getCenterLng());\n   }\n \n   /**\n    *\n    * @returns {number}\n    */\n   protected getCenterLng(): number {\n     let centerLng = (this.getEast() + this.getWest()) / 2;\n \n     let overlap = this.getWest() > 0 && this.getEast() < 0;\n \n     if (overlap && centerLng > 0) {\n       return -180.0 + centerLng;\n     }\n \n     if (overlap && centerLng < 0) {\n       return 180.0 + centerLng;\n     }\n \n     if (overlap && centerLng == 0) {\n       return 180.0;\n     }\n \n     return centerLng;\n   }\n \n }","/**\n * Interface for Geometry Classes\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n */\n\n import {Coordinate} from \"./Coordinate\";\n\n export interface GeometryInterface {\n \n   /**\n    * Returns an array containing all assigned points.\n    *\n    * @return array\n    */\n   getPoints(): Array<Coordinate>;\n }","/**\n * Line Implementation\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n  */\n import {GeometryInterface} from \"./GeometryInterface\";\n import {Coordinate} from \"./Coordinate\";\n import {DistanceInterface} from \"./Distance/DistanceInterface\";\n \n \n export class Line implements GeometryInterface {\n \n   /**\n    * @var Coordinate\n    */\n   protected point1: Coordinate;\n \n   /**\n    * @var Coordinate\n    */\n   protected point2: Coordinate;\n \n   /**\n    * @param {Coordinate} point1\n    * @param {Coordinate} point2\n    */\n   constructor(point1: Coordinate, point2: Coordinate) {\n     this.point1 = point1;\n     this.point2 = point2;\n   }\n \n   /**\n    * @param {Coordinate} point1\n    */\n   setPoint1(point1: Coordinate) {\n     this\n       .point1 = point1;\n   }\n \n   /**\n    * @returns {Coordinate}\n    */\n   getPoint1(): Coordinate {\n     return this.point1;\n   }\n \n   /**\n    * @param {Coordinate} point2\n    */\n   setPoint2(point2: Coordinate) {\n     this\n       .point2 = point2;\n   }\n \n   /**\n    * @returns {Coordinate}\n    */\n   getPoint2(): Coordinate {\n     return this.point2;\n   }\n \n   /**\n    * Returns an array containing the two points.\n    *\n    * @returns {Array<Coordinate>}\n    */\n   getPoints(): Array<Coordinate> {\n     return [this.point1, this.point2];\n   }\n \n   /**\n    * Calculates the length of the line (distance between the two\n    * coordinates).\n    *\n    * @param {DistanceInterface} calculator instance of distance calculation class\n    * @returns {number}\n    */\n   getLength(calculator: DistanceInterface): number {\n     return calculator.getDistance(this.point1, this.point2);\n   }\n \n   //TODO: Implement BearingInterface\n \n   /**\n    * Create a new instance with reversed point order, i. e. reversed direction.\n    *\n    * @return Line\n    */\n   getReverse(): Line {\n     return new Line(this.point2, this.point1);\n   }\n \n }","/**\n * Polygon Implementation\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n  */\n\n import {GeometryInterface} from \"./GeometryInterface\";\n import {DistanceInterface} from \"./Distance/DistanceInterface\";\n import {FormatterInterface} from \"./Formatter/Polygon/FormatterInterface\";\n import {Coordinate} from \"./Coordinate\";\n import {Line} from \"./Line\";\n import {MathMore} from \"./Functions/MathMore\";\n \n export class Polygon implements GeometryInterface {\n \n   points: Array<Coordinate> = [];\n \n   /**\n    * @param {Coordinate} point\n    */\n   addPoint(point: Coordinate) {\n     this.points.push(point);\n   }\n \n   /**\n    * @return array\n    */\n   getPoints(): Array<Coordinate> {\n     return this.points;\n   }\n \n   /**\n    * Return all polygon point's latitudes.\n    *\n    * @return number[]\n    */\n   getLats(): Array<number> {\n     let lats = [];\n \n     for (let point of this.points) {\n       lats.push(point.getLat())\n     }\n \n     return lats;\n   }\n \n   /**\n    * Return all polygon point's longitudes.\n    *\n    * @returns {Array<number>}\n    */\n   getLngs(): Array<number> {\n     let lngs = [];\n \n     for (let point of this.points) {\n       lngs.push(point.getLng())\n     }\n \n     return lngs;\n   }\n \n   /**\n    * @returns {number}\n    */\n   getNumberOfPoints(): number {\n     return this.points.length;\n   }\n \n   /**\n    *\n    * @param {FormatterInterface} formatter\n    * @returns {string}\n    */\n   format(formatter: FormatterInterface) {\n     return formatter.format(this);\n   }\n \n   /**\n    * @return array\n    */\n   getSegments(): Array<Line> {\n     let segments: Array<Line> = [];\n \n     if (this.points.length < 2) {\n       return segments;\n     }\n \n     let previousPoint = this.points[0];\n \n     let passLoop = true;\n     for (let point of this.points) {\n       if (!passLoop) {\n       segments.push(new Line(previousPoint, point));\n       previousPoint = point;\n     }\n       passLoop = false;\n     }\n \n     // to close the polygon we have to add the final segment between\n     // the last point and the first point\n     segments.push(new Line(this.points[this.points.length - 1], this.points[0]));\n \n     return segments;\n   }\n \n   /**\n    * Determine if given geometry is contained inside the polygon. This is\n    * assumed to be true, if each point of the geometry is inside the polygon.\n    *\n    * Edge cases:\n    *\n    * - it's not detected when a line between two points is outside the polygon\n    * - @see contains() for more restrictions\n    *\n    * @param {GeometryInterface} geometry\n    * @returns {boolean}\n    */\n   containsGeometry(geometry: GeometryInterface): boolean {\n     let geometryInPolygon = true;\n \n     /** @var Coordinate point */\n     for (let point of geometry.getPoints()) {\n       geometryInPolygon = geometryInPolygon && this.contains(point);\n     }\n \n     return geometryInPolygon;\n   }\n \n   /**\n    * Determine if given point is contained inside the polygon. Uses the PNPOLY\n    * algorithm by W. Randolph Franklin. Therfore some edge cases may not give the\n    * expected results, e. g. if the point resides on the polygon boundary.\n    *\n    * @see http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n    *\n    * For special cases this calculation leads to wrong results:\n    *\n    * - if the polygons spans over the longitude boundaries at 180/-180 degrees\n    *\n    * @param {Coordinate} point\n    * @returns {boolean}\n    */\n   contains(point: Coordinate): boolean {\n     let numberOfPoints = this.getNumberOfPoints();\n     let polygonLats = this.getLats();\n     let polygonLngs = this.getLngs();\n \n     let polygonContainsPoint = false;\n \n     for (let node = 0, altNode = (numberOfPoints - 1); node < numberOfPoints; altNode = node++) {\n       if ((polygonLngs[node] > point.getLng() != (polygonLngs[altNode] > point.getLng()))\n         && (point.getLat() < (polygonLats[altNode] - polygonLats[node])\n           * (point.getLng() - polygonLngs[node])\n           / (polygonLngs[altNode] - polygonLngs[node])\n           + polygonLats[node]\n         )\n       ) {\n         polygonContainsPoint = !polygonContainsPoint;\n       }\n     }\n \n     return polygonContainsPoint;\n   }\n \n   /**\n    * Calculates the polygon perimeter.\n    *\n    /**\n    *\n    * @param {DistanceInterface} calculator instance of distance calculation class\n    * @returns {number}\n    */\n   getPerimeter(calculator: DistanceInterface): number {\n     let perimeter = 0.0;\n \n     if (this.points.length < 2) {\n       return perimeter;\n     }\n \n     for (let segment of this.getSegments()) {\n       perimeter += segment.getLength(calculator);\n     }\n \n     return perimeter;\n   }\n \n   /**\n    * Calculates the polygon area.\n    *\n    * This algorithm gives inaccurate results as it ignores\n    * ellipsoid parameters other than to arithmetic mean radius.\n    * The error should be < 1 % for small areas.\n    *\n    * @return number\n    */\n   getArea(): number {\n     let area = 0;\n \n     if (this.getNumberOfPoints() <= 2) {\n       return area;\n     }\n \n     let referencePoint = this.points[0];\n     let radius = referencePoint.getEllipsoid().getArithmeticMeanRadius();\n     let segments = this.getSegments();\n \n     for (let segment of segments) {\n       /** @var {Coordinate} point1 */\n       let point1 = segment.getPoint1();\n       /** @var {Coordinate} point2 */\n       let point2 = segment.getPoint2();\n \n       let x1 = MathMore.deg2rad(point1.getLng() - referencePoint.getLng()) * Math.cos(MathMore.deg2rad(point1.getLat()));\n       let y1 = MathMore.deg2rad(point1.getLat() - referencePoint.getLat());\n \n       let x2 = MathMore.deg2rad(point2.getLng() - referencePoint.getLng()) * Math.cos(MathMore.deg2rad(point2.getLat()));\n       let y2 = MathMore.deg2rad(point2.getLat() - referencePoint.getLat());\n \n       area += (x2 * y1 - x1 * y2);\n     }\n \n     area *= 0.5 * radius ** 2;\n \n     return Math.abs(area);\n   }\n \n   /**\n    * Create a new polygon with reversed order of points, i. e. reversed\n    * polygon direction.\n    *\n    * @return Polygon\n    */\n   getReverse(): Polygon {\n     let reversed = new Polygon();\n     let points_reversed = this.points.reverse();\n \n     for (let point of points_reversed) {\n       reversed.addPoint(point);\n     }\n \n     return reversed;\n   }\n }","/**\n * Polyline Implementation\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n  */\n\n import {GeometryInterface} from \"./GeometryInterface\";\n import {DistanceInterface} from \"./Distance/DistanceInterface\";\n import {FormatterInterface} from \"./Formatter/Polyline/FormatterInterface\";\n import {Coordinate} from \"./Coordinate\";\n import {Line} from \"./Line\";\n \n export class Polyline implements GeometryInterface {\n \n   points: Array<Coordinate> = [];\n \n   /**\n    * @param {Coordinate} point\n    */\n   addPoint(point: Coordinate) {\n     this.points.push(point);\n   }\n \n   /**\n    * @return array\n    */\n   getPoints(): Array<Coordinate> {\n     return this.points;\n   }\n \n   /**\n    * Return all polygon point's latitudes.\n    *\n    * @return number[]\n    */\n   getLats(): Array<number> {\n     let lats = [];\n \n     for (let point of this.points) {\n       lats.push(point.getLat())\n     }\n \n     return lats;\n   }\n \n   /**\n    * Return all polygon point's longitudes.\n    *\n    * @returns {Array<number>}\n    */\n   getLngs(): Array<number> {\n     let lngs = [];\n \n     for (let point of this.points) {\n       lngs.push(point.getLng())\n     }\n \n     return lngs;\n   }\n \n   /**\n    * @returns {number}\n    */\n   getNumberOfPoints(): number {\n     return this.points.length;\n   }\n \n   /**\n    *\n    * @param {FormatterInterface} formatter\n    * @returns {string}\n    */\n   format(formatter: FormatterInterface) {\n     return formatter.format(this);\n   }\n \n   /**\n    * @return array\n    */\n   getSegments(): Array<Line> {\n     let segments: Array<Line> = [];\n \n     if (this.points.length < 2) {\n       return segments;\n     }\n \n     let previousPoint = this.points[0];\n \n     let passLoop = true;\n     for (let point of this.points) {\n       if (!passLoop) {\n       segments.push(new Line(previousPoint, point));\n       previousPoint = point;\n     }\n       passLoop = false;\n     }\n \n     return segments;\n   }\n \n \n   /**\n    * Calculates the length of the polyline.\n    *\n    * @param {DistanceInterface} calculator\n    * @returns {number}\n    */\n   getLength(calculator: DistanceInterface): number {\n     let distance = 0.0;\n \n     if (this.points.length <= 1) {\n       return distance;\n     }\n \n     for (let segment of this.getSegments()) {\n       distance += segment.getLength(calculator);\n     }\n \n     return distance;\n   }\n \n   /**\n    * Create a new polygon with reversed order of points, i. e. reversed\n    * polygon direction.\n    *\n    * @return Polygon\n    */\n   getReverse(): Polyline {\n     let reversed = new Polyline();\n     let points_reversed = this.points.reverse();\n \n     for (let point of points_reversed) {\n       reversed.addPoint(point);\n     }\n \n     return reversed;\n   }\n }","/**\n * Interface for Distance Calculator Classes\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n */\n\n import {Coordinate} from \"../Coordinate\";\n\n export interface DistanceInterface {\n \n   /**\n    * @param {Coordinate} point1\n    * @param {Coordinate} point2\n    *\n    * @return float distance between the two coordinates in meters\n    */\n   getDistance(point1: Coordinate, point2: Coordinate): number;\n }","/**\n * Implementation of distance calculation with http://en.wikipedia.org/wiki/Law_of_haversines\n *\n * @author    clemdesign <contact@clemdesign.fr>\n * @license   https://opensource.org/licenses/MIT\n * @link\n  */\n\n import {DistanceInterface} from \"./DistanceInterface\";\n import {Coordinate} from \"../Coordinate\";\n import {MathMore} from \"../Functions/MathMore\";\n \n export class Haversine implements DistanceInterface {\n \n   /**\n    * @param {Coordinate} point1\n    * @param {Coordinate} point2\n    *\n    * @return number|null\n    */\n   getDistance(point1: Coordinate, point2: Coordinate): number {\n     if (point1.getEllipsoid().getName() !== point2.getEllipsoid().getName()) {\n       return 0;\n     }\n \n     let lat1 = MathMore.deg2rad(point1.getLat());\n     let lat2 = MathMore.deg2rad(point2.getLat());\n     let lng1 = MathMore.deg2rad(point1.getLng());\n     let lng2 = MathMore.deg2rad(point2.getLng());\n \n     let dLat = lat2 - lat1;\n     let dLng = lng2 - lng1;\n \n     let radius = point1.getEllipsoid().getArithmeticMeanRadius();\n \n     let distance = 2 * radius * Math.asin(\n       Math.sqrt(\n         (Math.sin(dLat / 2) ** 2)\n         + Math.cos(lat1) * Math.cos(lat2) * (Math.sin(dLng / 2) ** 2)\n       )\n     );\n \n     return MathMore.round10(distance, -3);\n \n   }\n }","/*\n * Public API Surface of ngx-resgrid-apps-shared\n */\n\nexport * from './lib/ngx-resgridlib.module';\nexport * from './lib/consts';\nexport * from './lib/resgrid-config';\nexport * from './lib/directives/conversation.directive';\nexport * from './lib/directives/groupBy.directive';\nexport * from './lib/directives/orderBy.directive';\nexport * from './lib/directives/rgTimeAgo.directive';\nexport * from './lib/directives/rgTimeAgoUtc.directive';\nexport * from './lib/directives/truncate.directive';\nexport * from './lib/providers/webcache.provider';\nexport * from './lib/services/v4/auth.service';\nexport * from './lib/services/v4/autofills.service';\nexport * from './lib/services/v4/calendar.service';\nexport * from './lib/services/v4/callFiles.service';\nexport * from './lib/services/v4/callNotes.service';\nexport * from './lib/services/v4/callPriorities.service';\nexport * from './lib/services/v4/callProtocols.service';\nexport * from './lib/services/v4/callTypes.service';\nexport * from './lib/services/v4/calls.service';\nexport * from './lib/services/v4/customStatuses.service';\nexport * from './lib/services/v4/config.service';\nexport * from './lib/services/v4/device.service';\nexport * from './lib/services/v4/dispatch.service';\nexport * from './lib/services/v4/forms.service';\nexport * from './lib/services/v4/groups.service';\nexport * from './lib/services/v4/health.service';\nexport * from './lib/services/v4/mapping.service';\nexport * from './lib/services/v4/messages.service';\nexport * from './lib/services/v4/notes.service';\nexport * from './lib/services/v4/personnel.service';\nexport * from './lib/services/v4/roles.service';\nexport * from './lib/services/v4/personnelStaffing.service';\nexport * from './lib/services/v4/personnelLocation.service';\nexport * from './lib/services/v4/personnelStatuses.service';\nexport * from './lib/services/v4/security.service';\nexport * from './lib/services/v4/shifts.service';\nexport * from './lib/services/v4/statuses.service';\nexport * from './lib/services/v4/templates.service';\nexport * from './lib/services/v4/unitLocation.service';\nexport * from './lib/services/v4/unitRoles.service';\nexport * from './lib/services/v4/unitStatus.service';\nexport * from './lib/services/v4/units.service';\nexport * from './lib/services/v4/voice.service';\nexport * from './lib/services/cache.service';\nexport * from './lib/services/custom-states.service';\nexport * from './lib/services/document.service';\nexport * from './lib/services/events.service';\nexport * from './lib/services/livekit.service';\nexport * from './lib/services/location.service';\nexport * from './lib/services/logger.service';\nexport * from './lib/services/signalr.service';\nexport * from './lib/services/realtime-geolocation.service';\nexport * from './lib/services/storage.service';\nexport * from './lib/services/types.service';\nexport * from './lib/services/uriEncoder.service';\nexport * from './lib/services/utils.service';\nexport * from './lib/services/window.service';\nexport * from './lib/models/v4/baseV4Request';\nexport * from './lib/models/gpsLocation';\nexport * from './lib/models/cacheable';\nexport * from './lib/models/cacheProvider';\nexport * from './lib/models/storageProvider';\nexport * from './lib/models/v4/auth/authState';\nexport * from './lib/models/v4/auth/authTokens';\nexport * from './lib/models/v4/auth/login';\nexport * from './lib/models/v4/auth/profile';\nexport * from './lib/models/v4/autofills/autofillsResult';\nexport * from './lib/models/v4/autofills/autofillsResultData';\nexport * from './lib/models/v4/calendar/calendarItemResult';\nexport * from './lib/models/v4/calendar/calendarItemResultData';\nexport * from './lib/models/v4/calendar/calendarItemsResult';\nexport * from './lib/models/v4/calendar/calendarItemTypeResultData';\nexport * from './lib/models/v4/calendar/calendarItemTypesResult';\nexport * from './lib/models/v4/calendar/setCalendarAttendingResult';\nexport * from './lib/models/v4/callFiles/callFileResultData';\nexport * from './lib/models/v4/callFiles/callFilesResult';\nexport * from './lib/models/v4/callFiles/saveCallFileResult';\nexport * from './lib/models/v4/callNotes/callNoteResultData';\nexport * from './lib/models/v4/callNotes/callNotesResult';\nexport * from './lib/models/v4/callNotes/saveCallNoteResult';\nexport * from './lib/models/v4/callPriorities/callPrioritiesResult';\nexport * from './lib/models/v4/callPriorities/callPriorityResultData';\nexport * from './lib/models/v4/callProtocols/callProtocolsResult';\nexport * from './lib/models/v4/callProtocols/callProtocolsResultData';\nexport * from './lib/models/v4/calls/activeCallsResult';\nexport * from './lib/models/v4/calls/callExtraDataResult';\nexport * from './lib/models/v4/calls/callExtraDataResultData';\nexport * from './lib/models/v4/calls/callResult';\nexport * from './lib/models/v4/calls/callResultData';\nexport * from './lib/models/v4/calls/closeCallResult';\nexport * from './lib/models/v4/calls/deleteCallResult';\nexport * from './lib/models/v4/calls/dispatchedEventResultData';\nexport * from './lib/models/v4/calls/saveCallResult';\nexport * from './lib/models/v4/calls/scheduledCallsResult';\nexport * from './lib/models/v4/calls/updateCallResult';\nexport * from './lib/models/v4/calls/updateDispatchTimeResult';\nexport * from './lib/models/v4/callTypes/callTypeResultData';\nexport * from './lib/models/v4/callTypes/callTypesResult';\nexport * from './lib/models/v4/configs/getConfigResult';\nexport * from './lib/models/v4/configs/getConfigResultData';\nexport * from './lib/models/v4/customStatuses/customStatusResultData';\nexport * from './lib/models/v4/customStatuses/customStatusesResult';\nexport * from './lib/models/v4/dispatch/getCallTemplatesResult';\nexport * from './lib/models/v4/dispatch/getCallTemplatesResultData';\nexport * from './lib/models/v4/dispatch/getPersonnelForCallGridResult';\nexport * from './lib/models/v4/dispatch/getPersonnelForCallGridResultData';\nexport * from './lib/models/v4/dispatch/getRolesForCallGridResult';\nexport * from './lib/models/v4/dispatch/getRolesForCallGridResultData';\nexport * from './lib/models/v4/dispatch/getSetUnitStateResult';\nexport * from './lib/models/v4/dispatch/getSetUnitStateResultData';\nexport * from './lib/models/v4/dispatch/newCallFormResult';\nexport * from './lib/models/v4/dispatch/newCallFormResultData';\nexport * from './lib/models/v4/dispatch/getGroupsForCallGridResult';\nexport * from './lib/models/v4/dispatch/getGroupsForCallGridResultData';\nexport * from './lib/models/v4/forms/formDataAutomationResult';\nexport * from './lib/models/v4/forms/formResult';\nexport * from './lib/models/v4/forms/formResultData';\nexport * from './lib/models/v4/groups/groupResult';\nexport * from './lib/models/v4/groups/groupsResult';\nexport * from './lib/models/v4/groups/groupsResultData';\nexport * from './lib/models/v4/health/healthResult';\nexport * from './lib/models/v4/health/healthResultData';\nexport * from './lib/models/v4/mapping/getMapDataAndMarkersData';\nexport * from './lib/models/v4/mapping/getMapDataAndMarkersResult';\nexport * from './lib/models/v4/mapping/getMapLayersResult';\nexport * from './lib/models/v4/mapping/getMapLayersResultData';\nexport * from './lib/models/v4/messages/deleteMessageResult';\nexport * from './lib/models/v4/messages/messageRecipientInput';\nexport * from './lib/models/v4/messages/messageResult';\nexport * from './lib/models/v4/messages/messageResultData';\nexport * from './lib/models/v4/messages/messagesResult';\nexport * from './lib/models/v4/messages/respondToMessageResult';\nexport * from './lib/models/v4/messages/sendMessageResult';\nexport * from './lib/models/v4/messages/getRecipientsResult';\nexport * from './lib/models/v4/messages/recipientsResultData';\nexport * from './lib/models/v4/notes/notesResult';\nexport * from './lib/models/v4/notes/noteResultData';\nexport * from './lib/models/v4/notes/noteCategoryResult';\nexport * from './lib/models/v4/notes/noteCategoryResultData';\nexport * from './lib/models/v4/notes/saveNoteResult';\nexport * from './lib/models/v4/personnel/filterResultData';\nexport * from './lib/models/v4/personnel/getPersonnelFilterOptionsResult';\nexport * from './lib/models/v4/personnel/getAllPersonnelInfosResult';\nexport * from './lib/models/v4/personnel/personnelInfoResult';\nexport * from './lib/models/v4/personnel/personnelInfoResultData';\nexport * from './lib/models/v4/personnelLocation/personnelLocationResult';\nexport * from './lib/models/v4/personnelLocation/personnelLocationResultData';\nexport * from './lib/models/v4/personnelLocation/savePersonnelLocationInput';\nexport * from './lib/models/v4/personnelLocation/savePersonnelLocationResult';\nexport * from './lib/models/v4/personnelStatuses/getCurrentStatusResult';\nexport * from './lib/models/v4/personnelStatuses/getCurrentStatusResultData';\nexport * from './lib/models/v4/personnelStatuses/savePersonsStatusesInput';\nexport * from './lib/models/v4/personnelStatuses/savePersonsStatusesResult';\nexport * from './lib/models/v4/personnelStatuses/savePersonStatusInput';\nexport * from './lib/models/v4/personnelStatuses/savePersonStatusResult';\nexport * from './lib/models/v4/personnelStaffing/getCurrentStaffingResult';\nexport * from './lib/models/v4/personnelStaffing/getCurrentStaffingResultData';\nexport * from './lib/models/v4/personnelStaffing/savePersonsStaffingsInput';\nexport * from './lib/models/v4/personnelStaffing/savePersonsStaffingsResult';\nexport * from './lib/models/v4/personnelStaffing/savePersonStaffingInput';\nexport * from './lib/models/v4/personnelStaffing/savePersonStaffingResult';\nexport * from './lib/models/v4/roles/roleResultData';\nexport * from './lib/models/v4/roles/rolesResult';\nexport * from './lib/models/v4/security/departmentRightsResult';\nexport * from './lib/models/v4/security/departmentRightsResultData';\nexport * from './lib/models/v4/shifts/shiftDayResult';\nexport * from './lib/models/v4/shifts/shiftDayResultData';\nexport * from './lib/models/v4/shifts/shiftDaysResult';\nexport * from './lib/models/v4/shifts/shiftResult';\nexport * from './lib/models/v4/shifts/shiftResultData';\nexport * from './lib/models/v4/shifts/shiftsResult';\nexport * from './lib/models/v4/shifts/signupShiftDayResult';\nexport * from './lib/models/v4/statuses/statusesResult';\nexport * from './lib/models/v4/statuses/statusesResultData';\nexport * from './lib/models/v4/statuses/unitTypeStatusesResult';\nexport * from './lib/models/v4/statuses/unitTypeStatusResultData';\nexport * from './lib/models/v4/templates/callNoteTemplateResultData';\nexport * from './lib/models/v4/templates/callNoteTemplatesResult';\nexport * from './lib/models/v4/unitLocation/saveUnitLocationInput';\nexport * from './lib/models/v4/unitLocation/saveUnitLocationResult';\nexport * from './lib/models/v4/unitLocation/unitLocationResult';\nexport * from './lib/models/v4/unitLocation/unitLocationResultData';\nexport * from './lib/models/v4/unitRoles/unitRoleResultData';\nexport * from './lib/models/v4/unitRoles/unitRolesForUnitResult';\nexport * from './lib/models/v4/unitRoles/activeUnitRoleResultData';\nexport * from './lib/models/v4/unitRoles/activeUnitRolesResult';\nexport * from './lib/models/v4/unitRoles/setRoleAssignmentsForUnitResult';\nexport * from './lib/models/v4/unitRoles/setUnitRolesInput';\nexport * from './lib/models/v4/units/getUnitFilterOptionsResult';\nexport * from './lib/models/v4/units/unitInfoResult';\nexport * from './lib/models/v4/units/unitInfoResultData';\nexport * from './lib/models/v4/units/unitRoleData';\nexport * from './lib/models/v4/units/unitResultData';\nexport * from './lib/models/v4/units/unitsResult';\nexport * from './lib/models/v4/unitStatus/saveUnitStatusInput';\nexport * from './lib/models/v4/unitStatus/saveUnitStatusResult';\nexport * from './lib/models/v4/unitStatus/unitStatusResultData';\nexport * from './lib/models/v4/unitStatus/unitStatusesResult';\nexport * from './lib/models/v4/voice/departmentVoiceResult';\nexport * from './lib/models/v4/voice/departmentVoiceResultData';\nexport * from './lib/models/v4/voice/voiceSessionConnectionResult';\nexport * from './lib/models/v4/voice/voiceSessionConnectionResultData';\nexport * from './lib/models/v4/voice/departmentAudioResult';\nexport * from './lib/models/v4/voice/departmentAudioResultStreamData';\nexport * from './lib/models/v4/device/pushRegistrationResult';\nexport * from './lib/models/geo/Bounds';\nexport * from './lib/models/geo/Coordinate';\nexport * from './lib/models/geo/Ellipsoid';\nexport * from './lib/models/geo/GeometryInterface';\nexport * from './lib/models/geo/Line';\nexport * from './lib/models/geo/Polygon';\nexport * from './lib/models/geo/Polyline';\nexport * from './lib/models/geo/Distance/DistanceInterface';\nexport * from './lib/models/geo/Distance/Haversine';\nexport * from './lib/models/geo/Distance/Vincenty';\nexport * from './lib/components/voice-footer/voice-footer.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UtilsService","i1.ResgridConfig","i1.LoggerService","i2.ResgridConfig","i3.StorageService","i4.LoggerService","i1.AuthService","i3.LoggerService","i1.CacheService","i2.LoggerService","i3.CacheService","i2.VoiceService","i3.ResgridConfig","i1.LiveKitService","i2.AuthService","i1.Consts","i2.CustomStatusesService","i1.PubSubService","i2.Consts","i2.EventsService","i3.Consts","i4.AuthService","i1.CustomStatesService"],"mappings":"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"}