[automerger skipped] [DO NOT MERGE] Update SVN to 16 for August RoW backpocket bug:109889880
am: 1f3b021647  -s ours

Change-Id: I1b029c4bc6a38130b0d994418e3e3782d3837177
diff --git a/Android.bp b/Android.bp
deleted file mode 100644
index 9f2d303..0000000
--- a/Android.bp
+++ /dev/null
@@ -1,7 +0,0 @@
-subdirs = [
-    "thermal",
-    "vr",
-    "vibrator",
-    "wifi_offload",
-    "usb",
-]
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 4085bb5..b502a35 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -23,7 +23,7 @@
 TARGET_CPU_VARIANT := cortex-a73
 
 TARGET_2ND_ARCH := arm
-TARGET_2ND_ARCH_VARIANT := armv7-a-neon
+TARGET_2ND_ARCH_VARIANT := armv8-a
 TARGET_2ND_CPU_ABI := armeabi-v7a
 TARGET_2ND_CPU_ABI2 := armeabi
 TARGET_2ND_CPU_VARIANT := cortex-a73
@@ -35,6 +35,7 @@
 BOARD_KERNEL_CMDLINE += firmware_class.path=/vendor/firmware
 BOARD_KERNEL_CMDLINE += loop.max_part=7
 BOARD_KERNEL_CMDLINE += raid=noautodetect
+BOARD_KERNEL_CMDLINE += usbcore.autosuspend=7
 
 BOARD_KERNEL_BASE        := 0x00000000
 BOARD_KERNEL_PAGESIZE    := 4096
@@ -78,7 +79,7 @@
 # Install odex files into the other system image
 BOARD_USES_SYSTEM_OTHER_ODEX := true
 
-BOARD_ROOT_EXTRA_FOLDERS := persist firmware metadata
+BOARD_ROOT_EXTRA_FOLDERS := persist firmware
 
 BOARD_SEPOLICY_DIRS += device/google/wahoo/sepolicy/vendor
 BOARD_PLAT_PUBLIC_SEPOLICY_DIR := device/google/wahoo/sepolicy/public
@@ -89,20 +90,9 @@
 
 QCOM_BOARD_PLATFORMS += msm8998
 BOARD_HAVE_BLUETOOTH_QCOM := true
+BOARD_USES_SDM845_BLUETOOTH_HAL := true
 BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/google/wahoo/bluetooth
 
-# Enable dex pre-opt to speed up initial boot
-ifeq ($(HOST_OS),linux)
-  ifeq ($(WITH_DEXPREOPT),)
-    WITH_DEXPREOPT := true
-    WITH_DEXPREOPT_PIC := true
-    ifneq ($(TARGET_BUILD_VARIANT),user)
-      # Retain classes.dex in APK's for non-user builds
-      DEX_PREOPT_DEFAULT := nostripping
-    endif
-  endif
-endif
-
 # Camera
 TARGET_USES_AOSP := true
 BOARD_QTI_CAMERA_32BIT_ONLY := true
@@ -161,7 +151,8 @@
 # Vendor Interface Manifest
 DEVICE_MANIFEST_FILE := device/google/wahoo/manifest.xml
 DEVICE_MATRIX_FILE := device/google/wahoo/compatibility_matrix.xml
-
+DEVICE_FRAMEWORK_MANIFEST_FILE := device/google/wahoo/framework_manifest.xml
+DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := device/google/wahoo/device_framework_matrix.xml
 BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
 
 # Use mke2fs to create ext4 images
diff --git a/CleanSpec.mk b/CleanSpec.mk
index af32e90..aa65532 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -143,3 +143,52 @@
 # Remove eSIM OTA image
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/EuiccGoogle/esim.img)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/EuiccGoogle/esim2.img)
+
+# Remove init.recovery.*.rc file in root directory (only needed in recovery root).
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/init.recovery.$(PRODUCT_HARDWARE).rc)
+
+# Remove build and default prop.
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/*.prop)
+
+# android.hardware.thermal@1.0-wahoo.so can be a static lib
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib/hw/android.hardware.thermal@1.0-wahoo.so)
+
+# Remove android.hardware.keymaster@4.0-service
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.keymaster@4.0-service)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.keymaster@4.0-service.rc)
+
+# Health HAL 2.0
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.health@2.0-service)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.health@2.0-service.rc)
+
+# Remove PowerHAL
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.power*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.power*)
+
+# Remove Vibrator HAL 1.1
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.vibrator@1.1-service.wahoo.rc)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.vibrator@1.1-service.wahoo)
+
+# Remove all HALs (actual bitness now being specified)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib/hw/*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib64/hw/*)
+
+# Remove android.hardware.audio*@2.0 implementation
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib/hw/android.hardware.audio*@2.0-impl.so)
+
+# Remove Clearkey HAL 1.0
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.drm@1.0-service.clearkey.rc)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.drm@1.0-service.clearkey)
+
+# Remove Widevine HAL 1.0
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.drm@1.0-service.widevine.rc)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.drm@1.0-service.widevine)
+
+# Remove healthd
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/bin/healthd)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/healthd.rc)
+
+# Remove android.hardware.keymaster@4.0-service
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.keymaster@4.0-service)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.keymaster@4.0-service.rc)
+
diff --git a/apns-full-conf.xml b/apns-full-conf.xml
deleted file mode 100644
index e75d67c..0000000
--- a/apns-full-conf.xml
+++ /dev/null
@@ -1,32855 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-/*
-** Copyright 2016, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- use empty string to specify no proxy or port -->
-<!-- This version must agree with that in apps/common/res/apns.xml -->
-<apns version="8">
-
-  <apn carrier="AT&amp;T PHONE TEST SIM"
-      mcc="001"
-      mnc="01"
-      apn="phone"
-      user=""
-      password=""
-      proxy=""
-      port=""
-      mmsc="http://mmsc.mobile.att.net"
-      mmsproxy="proxy.mobile.att.net"
-      mmsport="80"
-      type="default,mms,supl,hipri,fota,dun"
-      mtu="1410"
-  />
-
-  <apn carrier="T-Mobile TEST SIM"
-      mcc="001"
-      mnc="01"
-      apn="phone"
-      user=""
-      password=""
-      proxy=""
-      port=""
-      type="default,supl,hipri,dun"
-      mtu="1440"
-  />
-
-  <apn carrier="U.S.Cellular TEST SIM"
-      mcc="001"
-      mnc="01"
-      apn="usccinternet"
-      user=""
-      password=""
-      proxy=""
-      port=""
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,hipri,dun,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      mtu="1422"
-  />
-
-  <!-- bearer 13, 14 -->
-  <apn carrier="Test 800"
-      mcc="001"
-      mnc="01"
-      apn="VZW800"
-      type="vzw800"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6|7|8|9|10|11|13|14"
-  />
-
-  <!-- bearer 13, 14 -->
-  <apn carrier="Test FOTA"
-      mcc="001"
-      mnc="01"
-      apn="VZWADMIN"
-      type="fota"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6|7|8|9|10|11|13|14"
-      profile_id="3"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <!-- bearer 13, 14 -->
-  <apn carrier="Test CBS"
-      mcc="001"
-      mnc="01"
-      apn="VZWAPP"
-      type="cbs,mms"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6|7|8|9|10|11|13|14"
-      profile_id="4"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <!-- bearer 13, 14 -->
-  <apn carrier="Test IMS"
-      mcc="001"
-      mnc="01"
-      apn="IMS"
-      type="ims,ia"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6|7|8|9|10|11|13|14"
-      profile_id="2"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test Internet"
-      mcc="001"
-      mnc="01"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      authtype="3"
-      bearer_bitmask="6"
-  />
-
-  <!-- bearer 13, 14 -->
-  <apn carrier="Test Internet"
-      mcc="001"
-      mnc="01"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6|7|8|9|10|11|13|14"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <!-- bearer 13, 14 -->
-  <apn carrier="Test 800"
-      mcc="001"
-      mnc="010"
-      apn="VZW800"
-      type="vzw800"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6|7|8|9|10|11|13|14"
-  />
-
-   <!-- bearer 13, 14 -->
-  <apn carrier="Test FOTA"
-      mcc="001"
-      mnc="010"
-      apn="VZWADMIN"
-      type="fota"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6|7|8|9|10|11|13|14"
-      profile_id="3"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <!-- bearer 13, 14 -->
-  <apn carrier="Test CBS"
-      mcc="001"
-      mnc="010"
-      apn="VZWAPP"
-      type="cbs,mms"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6|7|8|9|10|11|13|14"
-      profile_id="4"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test IMS"
-      mcc="001"
-      mnc="010"
-      apn="IMS"
-      type="ims,ia"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6|7|8|9|10|11|13|14"
-      profile_id="2"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test Internet"
-      mcc="001"
-      mnc="010"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      authtype="3"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Test Internet"
-      mcc="001"
-      mnc="010"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6|7|8|9|10|11|13|14"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Cosmote Wireless Internet"
-      mcc="202"
-      mnc="01"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Cosmote Wireless Internet"
-      mcc="202"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Cosmote Mms"
-      mcc="202"
-      mnc="01"
-      apn="mms"
-      mmsc="http://mmsc.cosmote.gr:8002"
-      mmsproxy="10.10.10.20"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Vf Mobile Internet"
-      mcc="202"
-      mnc="05"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Vf Mobile Internet"
-      mcc="202"
-      mnc="05"
-      apn="internet.vodafone.gr"
-      type="default,supl"
-  />
-
-  <apn carrier="Vf MMS"
-      mcc="202"
-      mnc="05"
-      apn="mms.vodafone.net"
-      user="user"
-      password="pass"
-      mmsc="http://mms.vodafone.gr"
-      mmsproxy="213.249.19.49"
-      mmsport="5080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Q Internet"
-      mcc="202"
-      mnc="09"
-      apn="myq"
-      type="default,supl"
-  />
-
-  <apn carrier="Q-Telecom MMS GPRS"
-      mcc="202"
-      mnc="09"
-      apn="q-mms.myq.gr"
-      mmsc="http://mms.myq.gr"
-      mmsproxy="192.168.80.134"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Wind Internet"
-      mcc="202"
-      mnc="10"
-      apn="gint.b-online.gr"
-      type="default,supl"
-  />
-
-  <apn carrier="Wind MMS"
-      mcc="202"
-      mnc="10"
-      apn="mnet.b-online.gr"
-      mmsc="http://192.168.200.95/servlets/mms"
-      mmsproxy="192.168.200.11"
-      mmsport="9401"
-      type="mms"
-  />
-
-  <apn carrier="Tele2 GPRS"
-      mcc="204"
-      mnc="02"
-      apn="internet.tele2.nl"
-      mmsc="http://mmsc.tele2.nl"
-      mmsproxy="193.12.40.64"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="MVNO NL"
-     mcc="204"
-     mnc="03"
-     apn="internet.mvno.mobi"
-     user="mvno"
-     password="mvno"
-     authtype="1"
-     type="default,supl"
-     mvno_match_data="20403"
-     mvno_type="imsi"
-  />
-
-  <apn carrier="Jump Roam"
-      mcc="204"
-      mnc="04"
-      apn="mobiledata"
-      authtype="0"
-      mvno_type="spn"
-      mvno_match_data="Jump"
-  />
-
-  <apn carrier="Truphone"
-      mcc="204"
-      mnc="04"
-      apn="truphone.com"
-      type="default,supl"
-      mvno_match_data="204043914"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Truphone"
-      mcc="204"
-      mnc="04"
-      apn="truphone.com"
-      type="default,supl"
-      mvno_match_data="20404794"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Vodafone NL"
-      mcc="204"
-      mnc="04"
-      apn="live.vodafone.com"
-      user="vodafone"
-      password="vodafone"
-      authtype="1"
-      mmsc="http://mmsc.mms.vodafone.nl"
-      mmsproxy="192.168.251.150"
-      mmsport="8799"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Vodafone US"
-      mcc="204"
-      mnc="04"
-      apn="us.vodafone.com"
-      type="default,mms,sup,dun"
-      protocol="IPV6"
-      roaming_protocol="IPV4"
-      mmsc="http://wholesale.mmsmvno.com/mms/wapenc"
-      mvno_type="gid"
-      mvno_match_data="2801"
-  />
-
-  <apn carrier="EHRPD - VZW Roaming Internet"
-      mcc="204"
-      mnc="04"
-      apn="VZWINTERNET"
-      type="default,dun"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      bearer_bitmask="13|18"
-      mvno_type="gid"
-      mvno_match_data="BAE0000000000000"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <apn carrier="LTE - VZW Roaming Internet"
-      mcc="204"
-      mnc="04"
-      apn="VZWINTERNET"
-      type="default,dun"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      mvno_type="gid"
-      mvno_match_data="BAE0000000000000"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <apn carrier="EHRPD - VZW Roaming FOTA"
-      mcc="204"
-      mnc="04"
-      apn="VZWADMIN"
-      type="fota"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      bearer_bitmask="13|18"
-      mvno_type="gid"
-      mvno_match_data="BAE0000000000000"
-      profile_id="3"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <apn carrier="LTE - VZW Roaming FOTA"
-      mcc="204"
-      mnc="04"
-      apn="VZWADMIN"
-      type="fota"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      mvno_type="gid"
-      mvno_match_data="BAE0000000000000"
-      profile_id="3"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <apn carrier="LTE - VZW Roaming IMS"
-      mcc="204"
-      mnc="04"
-      apn="IMS"
-      type="ims,ia"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV6"
-      mvno_type="gid"
-      mvno_match_data="BAE0000000000000"
-      profile_id="2"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <apn carrier="EHRPD - VZW Roaming IMS"
-      mcc="204"
-      mnc="04"
-      apn="IMS"
-      type="ims,ia"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV6"
-      bearer_bitmask="13|18"
-      mvno_type="gid"
-      mvno_match_data="BAE0000000000000"
-      profile_id="2"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <apn carrier="LTE - VZW Roaming CBS"
-      mcc="204"
-      mnc="04"
-      apn="VZWAPP"
-      type="cbs,mms"
-      authtype="0"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      mvno_type="gid"
-      mvno_match_data="BAE0000000000000"
-      profile_id="4"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <apn carrier="EHRPD - VZW Roaming CBS"
-      mcc="204"
-      mnc="04"
-      apn="VZWAPP"
-      type="cbs,mms"
-      authtype="0"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      bearer_bitmask="13|18"
-      mvno_type="gid"
-      mvno_match_data="BAE0000000000000"
-      profile_id="4"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <apn carrier="CSpire international"
-      mcc="204"
-      mnc="04"
-      apn="internet.cs4glte.com"
-      server="*"
-      user="Uniroam@inet.cs.com"
-      password="cs3g"
-      authtype ="3"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://pix.cspire.com"
-      mvno_type="spn"
-      mvno_match_data="C Spire"
-      type="default,internet,mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="CSpire international"
-      mcc="204"
-      mnc="04"
-      apn="admin.cs4glte.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://pix.cspire.com"
-      mvno_type="spn"
-      mvno_match_data="C Spire"
-      type="admin,fota,ota"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="CSpire international"
-      mcc="204"
-      mnc="04"
-      apn="tethering.cs4glte.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://pix.cspire.com"
-      mvno_type="spn"
-      mvno_match_data="C Spire"
-      type="dun,pam"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="USCCROAMING"
-      mcc="204"
-      mnc="04"
-      apn="usccinternet"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      mvno_type="spn"
-      mvno_match_data="U.S. Cellular"
-      type="mms,fota,default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="KPN Mobiel Internet"
-      mcc="204"
-      mnc="08"
-      apn="portalmmm.nl"
-      mmsc="http://mp.mobiel.kpn/mmsc"
-      mmsproxy="10.10.100.20"
-      mmsport="5080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="MVNO NL"
-     mcc="204"
-     mnc="08"
-     apn="internet.mvno.mobi"
-     user="mvno"
-     password="mvno"
-     authtype="1"
-     type="default,supl"
-     mvno_match_data="204080950"
-     mvno_type="imsi"
-  />
-
-  <apn carrier="Rabo Mobiel Int."
-      mcc="204"
-      mnc="08"
-      apn="rabo"
-      type="default,supl"
-      mvno_match_data="Rabo Mobiel"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Rabo Mobiel MMS"
-      mcc="204"
-      mnc="08"
-      apn="rabo"
-      mmsc="http://mp.mobiel.kpn/mmsc"
-      mmsproxy="10.10.100.10"
-      mmsport="5080"
-      type="mms"
-      mvno_match_data="Rabo Mobiel"
-      mvno_type="spn"
-  />
-
-  <apn carrier="HOT mobile Internet"
-      mcc="204"
-      mnc="04"
-      apn="net.hotm"
-      type="default,supl"
-      mvno_match_data="HOT mobile"
-      mvno_type="spn"
-  />
-
-  <apn carrier="HOT mobile MMS"
-      mcc="204"
-      mnc="04"
-      apn="mms.hotm"
-      mmsc="http://mms.hotmobile.co.il"
-      mmsproxy="80.246.131.99"
-      mmsport="80"
-      type="mms"
-      mvno_match_data="HOT mobile"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Telfort Internet"
-      mcc="204"
-      mnc="12"
-      apn="internet"
-      mmsc="http://mms"
-      mmsproxy="10.10.100.20"
-      mmsport="5080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="T-Mobile Internet"
-      mcc="204"
-      mnc="16"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="T-Mobile Internet"
-      mcc="204"
-      mnc="16"
-      apn="smartsites.t-mobile"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="T-Mobile MMS"
-      mcc="204"
-      mnc="16"
-      apn="mms"
-      user="tmobilemms"
-      password="tmobilemms"
-      authtype="1"
-      mmsc="http://t-mobilemms"
-      mmsproxy="10.10.10.11"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Ben Internet Abonnee"
-      mcc="204"
-      mnc="16"
-      apn="internet.ben"
-      type="default,supl"
-      mvno_match_data="BEN NL"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Ben Internet PrePaid"
-      mcc="204"
-      mnc="16"
-      apn="basic.internet.ben.data"
-      type="default,supl"
-      mvno_match_data="BEN NL"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Ben MMS"
-      mcc="204"
-      mnc="16"
-      apn="mms.ben"
-      authtype="1"
-      mmsc="http://benmms/"
-      mmsproxy="10.10.10.11"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="BEN NL"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Ziggo mobiel internet"
-      mcc="204"
-      mnc="18"
-      apn="internet.ziggo.nl"
-      type="default,supl"
-  />
-
-  <apn carrier="T-Mobile Internet"
-      mcc="204"
-      mnc="20"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="T-Mobile Internet"
-      mcc="204"
-      mnc="20"
-      apn="smartsites.t-mobile"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="T-Mobile MMS"
-      mcc="204"
-      mnc="20"
-      apn="mms"
-      user="tmobilemms"
-      password="tmobilemms"
-      authtype="1"
-      mmsc="http://t-mobilemms"
-      mmsproxy="10.10.10.11"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="AGMS NL"
-      mcc="204"
-      mnc="65"
-      apn="agms.nl.gmm"
-      mmsc=""
-      mmsproxy=""
-      mmsport=""
-      type="default"
-      protocol="IP"
-      roaming_protocol="IP"
-      mtu="1410"
-      mvno_match_data="50"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Px MMS"
-      mcc="206"
-      mnc="01"
-      apn="event.proximus.be"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mmsc.proximus.be/mms"
-      mmsproxy="10.55.14.75"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Px Internet"
-      mcc="206"
-      mnc="01"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Px Internet"
-      mcc="206"
-      mnc="01"
-      apn="INTERNET.PROXIMUS.BE"
-      type="default,supl"
-  />
-
-  <apn carrier="Px MMS"
-      mcc="206"
-      mnc="01"
-      apn="event.proximus.be"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mmsc.proximus.be/mms"
-      mmsproxy="10.55.14.75"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="4E"
-      mvno_type="gid"
-  />
-
-  <apn carrier="NRJ-ESM"
-      mcc="206"
-      mnc="01"
-      apn=""
-      type="ia"
-      mvno_match_data="4E"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Px Internet"
-      mcc="206"
-      mnc="01"
-      apn="INTERNET.PROXIMUS.BE"
-      type="default,supl"
-      mvno_match_data="4E"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Telenet Internet"
-      mcc="206"
-      mnc="01"
-      apn="telenetwap.be"
-      type="default,supl"
-      mvno_match_data="2060188"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Telenet MMS"
-      mcc="206"
-      mnc="01"
-      apn="mms.be"
-      mmsc="http://mmsc.telenet.be"
-      mmsproxy="195.130.149.100"
-      mmsport="80"
-      type="mms"
-      mvno_match_data="2060188"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Virgin mobile"
-      mcc="206"
-      mnc="01"
-      apn="virgin-mobile.fr"
-      proxy="10.6.10.1"
-      port="8080"
-      type="default,supl"
-      mvno_match_data="52"
-      mvno_type="gid"
-  />
-
-  <apn carrier="VM MMS"
-      mcc="206"
-      mnc="01"
-      apn="virgin-mobile.fr"
-      mmsc="http://virginmms.fr"
-      mmsproxy="10.6.10.1"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="52"
-      mvno_type="gid"
-  />
-
-  <apn carrier="MMS"
-      mcc="206"
-      mnc="01"
-      apn="mms.mobi.eastlink.ca"
-      mmsc="http://mmss.mobi.eastlink.ca"
-      mmsproxy="10.232.12.49"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="B6"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Internet"
-      mcc="206"
-      mnc="01"
-      apn="wisp.mobi.eastlink.ca"
-      type="default,supl"
-      mvno_match_data="B6"
-      mvno_type="gid"
-  />
-
-  <apn carrier="NRJMMS"
-      mcc="206"
-      mnc="01"
-      apn="event.proximus.be"
-      authtype="0"
-      user="mms"
-      password="mms"
-      mmsc="http://mmsc.proximus.be/mms"
-      mmsproxy="10.55.14.75"
-      mmsport="8080"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="NRJ Mobile"
-  />
-
-  <apn carrier="NRJWEB"
-      mcc="206"
-      mnc="01"
-      apn="internet.proximus.be"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-      mvno_type="spn"
-      mvno_match_data="NRJ Mobile"
-  />
-
-  <apn carrier="MMS"
-      mcc="206"
-      mnc="01"
-      apn="mms.iusacellgsm.mx"
-      authtype="0"
-      mmsc="http://mms.iusacell3g.com/"
-      type="mms"
-      user="mmsiusacellgsm"
-      password="mmsiusacellgsm"
-      mvno_type="spn"
-      mvno_match_data="UNEFON"
-  />
-
-  <apn carrier="MODEM"
-      mcc="206"
-      mnc="01"
-      apn="modem.iusacellgsm.mx"
-      authtype="0"
-      type="dun"
-      user="iusacellgsm"
-      password="iusacellgsm"
-      mvno_type="spn"
-      mvno_match_data="UNEFON"
-  />
-
-  <apn carrier="Internet"
-      mcc="206"
-      mnc="01"
-      apn="web.iusacellgsm.mx"
-      authtype="0"
-      type="default"
-      user="iusacellgsm"
-      password="iusacellgsm"
-      mvno_type="spn"
-      mvno_match_data="UNEFON"
-  />
-
-  <apn carrier="MMS"
-      mcc="206"
-      mnc="01"
-      apn="mms.iusacellgsm.mx"
-      authtype="0"
-      mmsc="http://mms.iusacell3g.com/"
-      type="mms"
-      user="mmsiusacellgsm"
-      password="mmsiusacellgsm"
-      mvno_type="spn"
-      mvno_match_data="IUSACELL"
-  />
-
-  <apn carrier="MODEM"
-      mcc="206"
-      mnc="01"
-      apn="modem.iusacellgsm.mx"
-      authtype="0"
-      type="dun"
-      user="iusacellgsm"
-      password="iusacellgsm"
-      mvno_type="spn"
-      mvno_match_data="IUSACELL"
-  />
-
-  <apn carrier="Internet"
-      mcc="206"
-      mnc="01"
-      apn="web.iusacellgsm.mx"
-      authtype="0"
-      type="default"
-      user="iusacellgsm"
-      password="iusacellgsm"
-      mvno_type="spn"
-      mvno_match_data="IUSACELL"
-  />
-
-  <apn carrier="Telenet Internet"
-      mcc="206"
-      mnc="05"
-      apn="telenetwap.be"
-      type="default,supl"
-  />
-
-  <apn carrier="Telenet MMS"
-      mcc="206"
-      mnc="05"
-      apn="mms.be"
-      mmsc="http://mmsc.telenet.be"
-      mmsproxy="195.130.149.100"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Mobistar MMS"
-      mcc="206"
-      mnc="10"
-      apn="mms.be"
-      mmsc="http://mmsc.mobistar.be"
-      mmsproxy="212.65.63.143"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Mobistar Internet"
-      mcc="206"
-      mnc="10"
-      apn="mworld.be"
-      type="default,supl"
-  />
-
-  <apn carrier="BASE WAP"
-      mcc="206"
-      mnc="20"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="BASE WAP"
-      mcc="206"
-      mnc="20"
-      apn="gprs.base.be"
-      user="base"
-      password="base"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="BASE MMS"
-      mcc="206"
-      mnc="20"
-      apn="mms.base.be"
-      user="base"
-      password="base"
-      authtype="1"
-      mmsc="http://mmsc.base.be"
-      mmsproxy="217.72.235.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange World"
-      mcc="208"
-      mnc="01"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Orange World"
-      mcc="208"
-      mnc="01"
-      apn="orange"
-      user="orange"
-      password="orange"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange MMS"
-      mcc="208"
-      mnc="01"
-      apn="orange.acte"
-      user="orange"
-      password="orange"
-      mmsc="http://mms.orange.fr"
-      mmsproxy="192.168.10.200"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Orange Entreprise"
-      mcc="208"
-      mnc="01"
-      apn="orange-mib"
-      proxy="172.16.2.8"
-      port="8000"
-      user="orange"
-      password="orange"
-      authtype="2"
-      type="default"
-  />
-
-  <apn carrier="Orange Internet"
-      mcc="208"
-      mnc="01"
-      apn="orange.fr"
-      authtype="0"
-      user="orange"
-      password="orange"
-      type="dun"
-  />
-
-  <apn carrier="Carrefour WAP"
-      mcc="208"
-      mnc="01"
-      apn="ofnew.fr"
-      proxy="192.168.10.100"
-      port="8080"
-      user="orange"
-      password="orange"
-      authtype="1"
-      type="default,supl"
-      mvno_match_data="33"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Carrefour MMS"
-      mcc="208"
-      mnc="01"
-      apn="orange.acte"
-      user="orange"
-      password="orange"
-      mmsc="http://mms.orange.fr"
-      mmsproxy="192.168.10.200"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-      mvno_match_data="33"
-      mvno_type="gid"
-  />
-
-  <apn carrier="VM WAP"
-      mcc="208"
-      mnc="01"
-      apn="ofnew.fr"
-      user="orange"
-      password="orange"
-      authtype="1"
-      type="default,supl"
-      mvno_match_data="52"
-      mvno_type="gid"
-  />
-
-  <apn carrier="VM MMS"
-      mcc="208"
-      mnc="01"
-      apn="orange.acte"
-      user="orange"
-      password="orange"
-      mmsc="http://mms.orange.fr"
-      mmsproxy="192.168.10.200"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-      mvno_match_data="52"
-      mvno_type="gid"
-  />
-
-  <apn carrier="NRJWEB"
-      mcc="208"
-      mnc="01"
-      apn="ofnew.fr"
-      user="orange"
-      password="orange"
-      authtype="1"
-      type="default,supl"
-      mvno_match_data="4E"
-      mvno_type="gid"
-  />
-
-  <apn carrier="NRJMMS"
-      mcc="208"
-      mnc="01"
-      apn="orange.acte"
-      user="orange"
-      password="orange"
-      mmsc="http://mms.orange.fr"
-      mmsproxy="192.168.10.200"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-      mvno_match_data="4E"
-      mvno_type="gid"
-  />
-
-  <apn carrier="SFR webphone"
-      mcc="208"
-      mnc="09"
-      apn="sl2sfr"
-      mmsc="http://mms1"
-      mmsproxy="10.151.0.1"
-      mmsport="8080"
-      protocol="IP"
-      type="default,mms,supl,agps,fota"
-  />
-
-  <apn carrier="SFR option modem"
-      mcc="208"
-      mnc="09"
-      apn="websfr"
-      protocol="IP"
-      type="dun"
-  />
-
-  <apn carrier="SFR webphone"
-      mcc="208"
-      mnc="10"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="SFR webphone"
-      mcc="208"
-      mnc="10"
-      apn="sl2sfr"
-      mmsc="http://mms1"
-      mmsproxy="10.151.0.1"
-      mmsport="8080"
-      type="default,mms,supl"
-  />
-
-  <apn carrier="SFR option Modem"
-      mcc="208"
-      mnc="10"
-      apn="websfr"
-      authtype="0"
-      type="dun"
-  />
-
-  <apn carrier="NRJWEB"
-      mcc="208"
-      mnc="10"
-      apn="fnetnrj"
-      type="default,supl"
-      mvno_match_data="4E"
-      mvno_type="gid"
-  />
-
-  <apn carrier="NRJMMS"
-      mcc="208"
-      mnc="10"
-      mmsc="http://mmsnrj"
-      mmsproxy="10.143.156.5"
-      mmsport="8080"
-      apn="mmsnrj"
-      type="mms"
-      mvno_match_data="4E"
-      mvno_type="gid"
-  />
-
-  <apn carrier="INTERNET NRJ"
-      mcc="208"
-      mnc="10"
-      apn="internetnrj"
-      authtype="0"
-      type="dun"
-      mvno_type="gid"
-      mvno_match_data="4E"
-  />
-
-  <apn carrier="Auchan WAP"
-      mcc="208"
-      mnc="10"
-      apn="wap65"
-      type="default,supl"
-      mvno_match_data="A MOBILE"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Auchan MMS"
-      mcc="208"
-      mnc="10"
-      mmsc="http://mms65"
-      mmsproxy="10.143.156.8"
-      mmsport="8080"
-      apn="mms65"
-      type="mms"
-      mvno_match_data="A MOBILE"
-      mvno_type="spn"
-  />
-
-  <apn carrier="WAP LeclercMobile"
-      mcc="208"
-      mnc="10"
-      proxy="192.168.21.9"
-      port="8080"
-      apn="wap66"
-      type="default,supl"
-      mvno_match_data="LeclercMobile"
-      mvno_type="spn"
-  />
-
-  <apn carrier="MMS LeclercMobile"
-      mcc="208"
-      mnc="10"
-      mmsc="http://mms66"
-      mmsproxy="10.143.156.9"
-      mmsport="8080"
-      apn="mms66"
-      type="mms"
-      mvno_match_data="LeclercMobile"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Coriolis WAP"
-      mcc="208"
-      mnc="10"
-      apn=""
-      type="ia"
-      mvno_match_data="12"
-      mvno_type="gid"
-  />
-
-  <apn carrier="APN sl2sfr"
-      mcc="208"
-      mnc="10"
-      apn="sl2sfr"
-      type="default,supl"
-      mvno_match_data="12"
-      mvno_type="gid"
-  />
-
-  <apn carrier="MMS smartphone"
-      mcc="208"
-      mnc="10"
-      mmsc="http://mms1"
-      mmsproxy="10.151.0.1"
-      mmsport="8080"
-      apn="sl2sfr"
-      type="mms"
-      mvno_match_data="12"
-      mvno_type="gid"
-  />
-
-  <apn carrier="APN websfr"
-      mcc="208"
-      mnc="10"
-      apn="websfr"
-      type="dun"
-      mvno_type="gid"
-      mvno_match_data="12"
-  />
-
-  <apn carrier="4G La Poste Mobile"
-      mcc="208"
-      mnc="10"
-      apn=""
-      type="ia"
-      mvno_match_data="4C"
-      mvno_type="gid"
-  />
-
-  <apn carrier="4G La Poste Mobile"
-      mcc="208"
-      mnc="10"
-      apn="sl2sfr"
-      mmsc="http://mms1"
-      mmsproxy="010.143.156.003"
-      mmsport="8080"
-      type="default,supl,mms"
-      mvno_match_data="4C"
-      mvno_type="gid"
-  />
-
-  <apn carrier="WEB La Poste Mobile"
-      mcc="208"
-      mnc="10"
-      proxy="192.168.21.3"
-      port="8080"
-      apn="wapdebitel"
-      type="default,supl"
-      mvno_match_data="4C"
-      mvno_type="gid"
-  />
-
-  <apn carrier="MMS La Poste Mobile"
-      mcc="208"
-      mnc="10"
-      apn="mmsdebitel"
-      mmsc="http://mmsdebitel"
-      mmsproxy="10.143.156.3"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="4C"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Darty Surf&amp;Mails"
-      mcc="208"
-      mnc="10"
-      apn="wap68"
-      proxy="192.168.21.11"
-      port="8080"
-      type="default,supl"
-      mvno_match_data="44"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Darty MMS"
-      mcc="208"
-      mnc="10"
-      apn="mms68"
-      mmsc="http://mms68/"
-      mmsproxy="10.143.156.11"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="44"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Keyyo Mobile Internet"
-      mcc="208"
-      mnc="10"
-      apn="internet68"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-      mvno_type="spn"
-      mvno_match_data="Keyyo Mobile"
-  />
-
-  <apn carrier="Keyyo Mobile MMS"
-      mcc="208"
-      mnc="10"
-      apn="mms68"
-      authtype="0"
-      mmsc="http://mms68"
-      mmsproxy="10.143.156.11"
-      mmsport="8080"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="Keyyo Mobile"
-  />
-
-  <apn carrier="Keyyo Mobile Wap"
-      mcc="208"
-      mnc="10"
-      apn="wap68"
-      proxy="192.168.21.11"
-      port="8080"
-      authtype="0"
-      type="default,supl,agps,fota"
-      mvno_type="spn"
-      mvno_match_data="Keyyo Mobile"
-  />
-
-  <apn carrier="Zero forfait"
-      mcc="208"
-      mnc="10"
-      apn="internet68"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-      mvno_type="spn"
-      mvno_match_data="ZERO FORFAIT"
-  />
-
-  <apn carrier="Zero forfait MMS"
-      mcc="208"
-      mnc="10"
-      apn="mms68"
-      authtype="0"
-      mmsc="http://mms68"
-      mmsproxy="10.143.156.11"
-      mmsport="8080"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="ZERO FORFAIT"
-  />
-
-  <apn carrier="WAP RegloMobile"
-      mcc="208"
-      mnc="10"
-      apn="wap66"
-      proxy="192.168.21.9"
-      port="8080"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-      mvno_type="spn"
-      mvno_match_data="RegloMobile"
-  />
-
-  <apn carrier="MMS RegloMobile"
-      mcc="208"
-      mnc="10"
-      apn="mms66"
-      authtype="0"
-      mmsc="http://mms66"
-      mmsproxy="10.143.156.9"
-      mmsport="8080"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="RegloMobile"
-  />
-
-  <apn carrier="Internet Joe"
-      mcc="208"
-      mnc="10"
-      apn="sl2sfr"
-      authtype="0"
-      mmsc="http://mms1"
-      mmsproxy="10.151.0.1"
-      mmsport="8080"
-      type="default,mms,supl,agps,fota"
-      mvno_type="gid"
-      mvno_match_data="53"
-  />
-
-  <apn carrier="Modem Joe"
-      mcc="208"
-      mnc="10"
-      apn="websfr"
-      authtype="0"
-      type="dun"
-      mvno_type="gid"
-      mvno_match_data="53"
-  />
-
-  <apn carrier="Free"
-      mcc="208"
-      mnc="15"
-      apn="free"
-      type="default,supl"
-  />
-
-  <apn carrier="Free MMS"
-      mcc="208"
-      mnc="15"
-      mmsc="http://mms.free.fr"
-      apn="mmsfree"
-      type="mms"
-  />
-
-  <apn carrier="Legos"
-      mcc="208"
-      mnc="17"
-      apn="bornsip"
-      type="default,supl"
-  />
-
-  <apn carrier="Legos MMS"
-      mcc="208"
-      mnc="17"
-      mmsc="http://mms.bornsip.fr:8191"
-      apn="bornsipmms"
-      type="mms"
-  />
-
-  <apn carrier="Bouygues Telecom"
-      mcc="208"
-      mnc="20"
-      apn="mmsbouygtel.com"
-      mmsc="http://mms.bouyguestelecom.fr/mms/wapenc"
-      mmsproxy="62.201.129.226"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Virgin mobile"
-      mcc="208"
-      mnc="23"
-      apn="virgin-mobile.fr"
-      proxy="10.6.10.1"
-      port="8080"
-      type="default,supl"
-      mvno_match_data="52"
-      mvno_type="gid"
-  />
-
-  <apn carrier="VM MMS"
-      mcc="208"
-      mnc="23"
-      apn="virgin-mobile.fr"
-      mmsc="http://virginmms.fr"
-      mmsproxy="10.6.10.1"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="52"
-      mvno_type="gid"
-  />
-
-  <apn carrier="NRJ WEB"
-      mcc="208"
-      mnc="26"
-      apn="fnetnrj"
-      type="default,supl"
-      mvno_match_data="4E"
-      mvno_type="gid"
-  />
-
-  <apn carrier="NRJ MMS"
-      mcc="208"
-      mnc="26"
-      apn="mmsnrj"
-      mmsc="http://mmsnrj"
-      mmsproxy="10.143.156.5"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="4E"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Internet móvil"
-      mcc="214"
-      mnc="01"
-      apn="airtelwap.es"
-      user="wap@wap"
-      password="wap125"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="INTERNET"
-      mcc="214"
-      mnc="01"
-      apn="airtelnet.es"
-      authtype="1"
-      user="vodafone"
-      password="vodafone"
-      type="dun"
-  />
-
-  <apn carrier="MMS VODAFONE"
-      mcc="214"
-      mnc="01"
-      apn="mms.vodafone.net"
-      user="wap@wap"
-      password="wap125"
-      mmsc="http://mmsc.vodafone.es/servlets/mms"
-      mmsproxy="212.73.32.10"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Orange Internet Móvil"
-      mcc="214"
-      mnc="03"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Orange Internet Móvil"
-      mcc="214"
-      mnc="03"
-      apn="orangeworld"
-      user="orange"
-      password="orange"
-      authtype="1"
-      type="default"
-  />
-
-  <apn carrier="Orange MMS"
-      mcc="214"
-      mnc="03"
-      apn="orangemms"
-      user="orange"
-      password="orange"
-      mmsc="http://mms.orange.es"
-      mmsproxy="172.22.188.25"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Orange Internet PC"
-      mcc="214"
-      mnc="03"
-      apn="internet"
-      authtype="0"
-      user="orange"
-      password="orange"
-      type="dun"
-  />
-
-  <apn carrier="Euskaltel Internet"
-      mcc="214"
-      mnc="03"
-      apn="internet.euskaltel.mobi"
-      user="CLIENTE"
-      password="EUSKALTEL"
-      authtype="1"
-      type="default,supl"
-      mvno_type="imsi"
-      mvno_match_data="2140359"
-  />
-
-  <apn carrier="Euskaltel MMS"
-      mcc="214"
-      mnc="03"
-      apn="euskaltelmms.euskaltel.mobi"
-      user="MMS"
-      password="EUSKALTEL"
-      authtype="1"
-      mmsc="http://mms.euskaltel.mobi"
-      mmsproxy="172.16.18.74"
-      mmsport="8080"
-      type="mms"
-      mvno_type="imsi"
-      mvno_match_data="2140359"
-  />
-
-  <apn carrier="Carrefour"
-      mcc="214"
-      mnc="03"
-      apn="CARREFOURINTERNET"
-      authtype="1"
-      type="default,supl"
-      mvno_type="imsi"
-      mvno_match_data="2140352xxxxxxxx"
-  />
-
-  <apn carrier="Carrefour MMS"
-      mcc="214"
-      mnc="03"
-      apn="CARREFOURMMS"
-      user="CARREFOUR"
-      password="CARREFOUR"
-      authtype="1"
-      mmsc="http://mms.orange.es"
-      mmsproxy="172.022.188.025"
-      mmsport="8080"
-      mvno_type="imsi"
-      mvno_match_data="2140352xxxxxxxx"
-      type="mms"
-  />
-
-  <apn carrier="Yoigo Internet"
-      mcc="214"
-      mnc="04"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Yoigo Internet"
-      mcc="214"
-      mnc="04"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Yoigo MMS"
-      mcc="214"
-      mnc="04"
-      apn="mms"
-      mmsc="http://mmss/"
-      mmsproxy="193.209.134.141"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Tuenti"
-      mcc="214"
-      mnc="05"
-      apn="tuenti.com"
-      authtype="1"
-      user="tuenti"
-      password="tuenti"
-      mmsc="http://tuenti.com"
-      mmsproxy="10.138.255.43"
-      mmsport="8080"
-  />
-
-  <apn carrier="INTERNET GPRS"
-      mcc="214"
-      mnc="06"
-      apn="airtelnet.es"
-      user="vodafone"
-      password="vodafone"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Vodafone"
-      mcc="214"
-      mnc="06"
-      apn="mms.vodafone.net"
-      user="wap@wap"
-      password="wap125"
-      mmsc="http://mmsc.vodafone.es/servlets/mms"
-      mmsproxy="212.73.32.10"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Euskaltel MMS"
-      mcc="214"
-      mnc="06"
-      apn="euskaltelmms.euskaltel.mobi"
-      user="MMS"
-      password="EUSKALTEL"
-      mmsc="http://mms.euskaltel.mobi"
-      mmsproxy="172.16.18.74"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-      mvno_match_data="0008"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Euskaltel Internet"
-      mcc="214"
-      mnc="06"
-      apn="internet.euskaltel.mobi"
-      user="CLIENTE"
-      password="EUSKALTEL"
-      authtype="1"
-      type="default,supl"
-      mvno_match_data="0008"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Internet R"
-      mcc="214"
-      mnc="06"
-      apn="internet.mundo-r.com"
-      authtype="1"
-      type="default,supl"
-      mvno_match_data="2140612"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="MMS R"
-      mcc="214"
-      mnc="06"
-      apn="mms.mundo-r.com"
-      mmsc="http://mms.mundo-r.com"
-      mmsproxy="10.0.157.169"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-      mvno_match_data="2140612"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="TeleCable Internet"
-      mcc="214"
-      mnc="06"
-      apn="internet.telecable.es"
-      user="telecable"
-      password="telecable"
-      authtype="1"
-      type="default,supl"
-      mvno_match_data="2140613"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="TeleCable MMS"
-      mcc="214"
-      mnc="06"
-      apn="mms.telecable.es"
-      user="telecable"
-      password="telecable"
-      mmsc="http://mms.telecable.es/mms/"
-      mmsproxy="212.89.0.84"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-      mvno_match_data="2140613"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Eroski Movil GPRS"
-      mcc="214"
-      mnc="06"
-      apn="gprs.eroskimovil.es"
-      user="wap@wap"
-      password="wap125"
-      authtype="1"
-      type="default,supl"
-      mvno_match_data="2140606"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Eroski Movil MMS"
-      mcc="214"
-      mnc="06"
-      apn="mms.eroskimovil.es"
-      user="wap@wap"
-      password="wap125"
-      mmsc="http://mms.eroskimovil.es/servlets/mms"
-      mmsproxy="212.73.32.10"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-      mvno_match_data="2140606"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="DUN"
-      mcc="214"
-      mnc="06"
-      apn="gprs.pepephone.com"
-      authtype="0"
-      type="dun"
-      mvno_type="spn"
-      mvno_match_data="pepephone"
-  />
-
-  <apn carrier="Internet"
-      mcc="214"
-      mnc="06"
-      apn="gprsmov.pepephone.com"
-      authtype="0"
-      type="default,supl,agps,fota"
-      mvno_type="spn"
-      mvno_match_data="pepephone"
-  />
-
-  <apn carrier="MMS"
-      mcc="214"
-      mnc="06"
-      apn="mms.pepephone.com"
-      authtype="0"
-      user="wap@wap"
-      password="wap125"
-      mmsc="http://mms.pepephone.com/servlets/mms"
-      mmsproxy="212.73.32.10"
-      mmsport="80"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="pepephone"
-  />
-
-  <apn carrier="Movistar"
-      mcc="214"
-      mnc="07"
-      apn="telefonica.es"
-      user="telefonica"
-      password="telefonica"
-      mmsc="http://mms.movistar.com"
-      mmsproxy="10.138.255.5"
-      mmsport="8080"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Jazztel Internet"
-      mcc="214"
-      mnc="07"
-      apn="jazzinternet"
-      type="default,supl"
-      mvno_match_data="JAZZTEL"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Jazztel MMS"
-      mcc="214"
-      mnc="07"
-      apn="jazzmms"
-      user=""
-      password=""
-      mmsc="http://jazztelmms.com/servlets/mms"
-      mmsproxy="37.132.0.10"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-      mvno_match_data="JAZZTEL"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Conexión Compartida"
-      mcc="214"
-      mnc="07"
-      apn="movistar.es"
-      authtype="1"
-      user="MOVISTAR"
-      password="MOVISTAR"
-      type="dun"
-  />
-
-  <apn carrier="T-2"
-      mcc="214"
-      mnc="07"
-      apn="internet.t-2.net"
-      mmsc="http://www.mms.t-2.net:8002"
-      mmsproxy="172.20.18.137"
-      mmsport="8080"
-      mvno_type="imsi"
-      mvno_match_data="2140759577xxxxx"
-      type="default,ims,mms,supl"
-  />
-
-  <apn carrier="T-2"
-      mcc="214"
-      mnc="07"
-      apn="internet.t-2.net"
-      mmsc="http://www.mms.t-2.net:8002"
-      mmsproxy="172.20.18.137"
-      mmsport="8080"
-      type="default,ims,mms,supl"
-      mvno_type="imsi"
-      mvno_match_data="2140796692xxxxx"
-  />
-
-  <apn carrier="Euskaltel MMS"
-      mcc="214"
-      mnc="08"
-      apn="euskaltelmms.euskaltel.mobi"
-      user="MMS"
-      password="EUSKALTEL"
-      mmsc="http://mms.euskaltel.mobi"
-      mmsproxy="172.16.18.74"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Euskaltel Internet"
-      mcc="214"
-      mnc="08"
-      apn="internet.euskaltel.mobi"
-      user="CLIENTE"
-      password="EUSKALTEL"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="TeleCable Internet"
-      mcc="214"
-      mnc="16"
-      apn="internet.telecable.es"
-      user="telecable"
-      password="telecable"
-      type="default,supl"
-  />
-
-  <apn carrier="TeleCable MMS"
-      mcc="214"
-      mnc="16"
-      apn="mms.telecable.es"
-      user="telecable"
-      password="telecable"
-      mmsc="http://mms.telecable.es/mms/"
-      mmsproxy="212.89.0.84"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="ONO Internet"
-      mcc="214"
-      mnc="18"
-      apn="internet.ono.com"
-      authtype="0"
-      type="default,supl"
-  />
-
-  <apn carrier="ONO MMS"
-      mcc="214"
-      mnc="18"
-      apn="mms.ono.com"
-      authtype="0"
-      mmsc="http://mms.ono.com/"
-      mmsproxy="10.126.0.50"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Simyo Internet"
-      mcc="214"
-      mnc="19"
-      apn="gprs-service.com"
-      mmsc="http://217.18.32.180:8080"
-      mmsproxy="217.18.32.181"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Jazztel Internet"
-      mcc="214"
-      mnc="21"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Jazztel Internet"
-      mcc="214"
-      mnc="21"
-      apn="jazzinternet"
-      type="default,supl"
-  />
-
-  <apn carrier="Jazztel MMS"
-      mcc="214"
-      mnc="21"
-      apn="jazzmms"
-      user=""
-      password=""
-      authtype="1"
-      mmsc="http://jazztelmms.com/servlets/mms"
-      mmsproxy="37.132.0.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Truphone"
-      mcc="214"
-      mnc="27"
-      apn="truphone.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Telenor MMS"
-      mcc="216"
-      mnc="01"
-      apn="mms"
-      mmsc="http://mmsc.telenor.hu/"
-      mmsproxy="84.225.255.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Telenor Online"
-      mcc="216"
-      mnc="01"
-      apn="online"
-      type="default,supl"
-  />
-
-  <apn carrier="Djuice MMS"
-      mcc="216"
-      mnc="01"
-      apn="mms"
-      mmsproxy="84.225.255.1"
-      mmsport="8080"
-      mmsc="http://mmsc.pgsm.hu/"
-      type="mms"
-      authtype="0"
-      mvno_match_data="Djuice"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Djuice NET"
-      mcc="216"
-      mnc="01"
-      apn="net"
-      type="default"
-      authtype="0"
-      mvno_match_data="Djuice"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Djuice WAP"
-      mcc="216"
-      mnc="01"
-      apn="wap"
-      proxy="84.225.255.1"
-      port="8080"
-      type="default"
-      authtype="0"
-      mvno_match_data="Djuice"
-      mvno_type="spn"
-  />
-
-  <apn carrier="T-Mobile H"
-      mcc="216"
-      mnc="30"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Telekom HU MMS"
-      mcc="216"
-      mnc="30"
-      apn="internet.telekom"
-      mmsc="http://mms.t-mobile.hu/servlets/mms"
-      mmsproxy="212.51.126.10"
-      mmsport="8080"
-      type="mms"
-      authtype="1"
-  />
-
-  <apn carrier="Telekom HU NET"
-      mcc="216"
-      mnc="30"
-      apn="internet.telekom"
-      type="default,dun,supl"
-      authtype="1"
-  />
-
-  <apn carrier="Vodafone Internet"
-      mcc="216"
-      mnc="70"
-      apn="internet.vodafone.net"
-      type="default,supl"
-      authtype="0"
-      mvno_match_data="21670xx2xxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Vodafone MMS"
-      mcc="216"
-      mnc="70"
-      apn="mms.vodafone.net"
-      mmsproxy="80.244.97.2"
-      mmsport="8080"
-      mmsc="http://mms.vodafone.hu/servlets/mms"
-      type="mms"
-      authtype="0"
-      mvno_match_data="21670xx2xxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Vodafone Internet VitaMAX"
-      mcc="216"
-      mnc="70"
-      apn="vitamax.internet.vodafone.net"
-      type="default,supl"
-      mvno_match_data="21670xx1xxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Vodafone MMS"
-      mcc="216"
-      mnc="70"
-      apn="mms.vodafone.net"
-      mmsproxy="80.244.97.2"
-      mmsport="8080"
-      mmsc="http://mms.vodafone.hu/servlets/mms"
-      type="mms"
-      mvno_match_data="21670xx1xxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Vodafone Live! VitaMAX"
-      mcc="216"
-      mnc="70"
-      apn="vitamax.wap.vodafone.net"
-      user="vodawap"
-      password="vodawap"
-      proxy="10.9.8.7"
-      port="8080"
-      type="default,supl"
-      authtype="1"
-      mvno_match_data="21670xx1xxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="UPC Mobil Internet"
-      mcc="216"
-      mnc="71"
-      apn="Internet.hu.upcmobile.com"
-      type="default"
-      protocol="IPV4V6"
-      authtype="0"
-  />
-
-  <apn carrier="UPC MMS"
-      mcc="216"
-      mnc="71"
-      apn="mms.hu.upcmobile.com"
-      mmsc="http://mms.hu.upcmobile.com:8080/servlets/mms"
-      mmsproxy="62.179.127.18"
-      mmsport="8080"
-      type="mms"
-      authtype="0"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="ERONET WEB"
-      mcc="218"
-      mnc="03"
-      apn="web.eronet.ba"
-      type="default"
-  />
-
-  <apn carrier="ERONET START"
-      mcc="218"
-      mnc="03"
-      apn="gprs.eronet.ba"
-      type="default"
-  />
-
-  <apn carrier="MMS-ERONET"
-      mcc="218"
-      mnc="03"
-      apn="mms.eronet.ba"
-      mmsc="http://mms.gprs.eronet.ba/mms/wapenc"
-      mmsproxy="10.12.3.11"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="mtelgprs"
-      mcc="218"
-      mnc="05"
-      apn="3g1"
-      type="default,supl"
-  />
-
-  <apn carrier="mtelmms"
-      mcc="218"
-      mnc="05"
-      apn="mtelmms"
-      mmsc="http://mmsc.mtel.ba/mms/wapenc"
-      mmsproxy="192.168.61.11"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="BHMobileInternet"
-      mcc="218"
-      mnc="90"
-      apn="active.bhmobile.ba"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="BHMobileMMS"
-      mcc="218"
-      mnc="90"
-      apn="mms.bhmobile.ba"
-      mmsc="http://mms.bhmobile.ba/servlets/mms"
-      mmsproxy="195.222.56.41"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="MMS"
-      mcc="219"
-      mnc="01"
-      apn="mms.htgprs"
-      mmsc="http://mms.t-mobile.hr/servlets/mms"
-      mmsproxy="10.12.0.4"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="T-Mobile"
-      mcc="219"
-      mnc="01"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Internet"
-      mcc="219"
-      mnc="01"
-      apn="internet.ht.hr"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Internet"
-      mcc="219"
-      mnc="01"
-      apn="internet.ht.hr"
-      authtype="1"
-      type="default,supl,agps,fota,dun"
-      mvno_type="spn"
-      mvno_match_data="bonbon"
-  />
-
-  <apn carrier="MMS"
-      mcc="219"
-      mnc="01"
-      apn="mms.htgprs"
-      authtype="1"
-      mmsc="http://mms.bonbon.com.hr/servlets/mms"
-      mmsproxy="10.12.0.4"
-      mmsport="8080"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="bonbon"
-  />
-
-  <apn carrier="Tele2"
-      mcc="219"
-      mnc="02"
-      apn="internet.tele2.hr"
-      mmsc="http://mmsc.tele2.hr"
-      mmsproxy="193.12.40.66"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Broadband"
-      mcc="219"
-      mnc="10"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Broadband"
-      mcc="219"
-      mnc="10"
-      apn="data.vip.hr"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="VIP MMS"
-      mcc="219"
-      mnc="10"
-      apn="mms.vipnet.hr"
-      user="38591"
-      password="38591"
-      authtype="1"
-      mmsc="http://mms.vipnet.hr/servlets/mms"
-      mmsproxy="212.91.99.91"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Telenor internet"
-      mcc="220"
-      mnc="01"
-      apn="internet"
-      user="telenor"
-      password="gprs"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Telenor MMS"
-      mcc="220"
-      mnc="01"
-      apn="mms"
-      mmsc="http://mms.telenor.rs/servlets/mms"
-      mmsproxy="217.65.192.33"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Telenor MNE internet"
-      mcc="220"
-      mnc="02"
-      apn="internet"
-      user="gprs"
-      password="gprs"
-      proxy="192.168.246.5"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Telenor MNE mms"
-      mcc="220"
-      mnc="02"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://mm.vor.telenor.me"
-      mmsproxy="192.168.246.5"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="mt:s wap"
-      mcc="220"
-      mnc="03"
-      apn="gprswap"
-      user="mts"
-      password="064"
-      proxy="172.17.88.198"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="mt:s mms"
-      mcc="220"
-      mnc="03"
-      apn="mms"
-      user="mts"
-      password="064"
-      mmsc="http://mms.mts064.telekom.rs/mms/wapenc"
-      mmsproxy="172.17.85.131"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="MTS Internet RS"
-      mcc="220"
-      mnc="03"
-      apn="gprsinternet"
-      authtype="0"
-      user="mts"
-      password="064"
-      type="default,supl,agps,fota,dun"
-  />
-
-  <apn carrier="T-Mobile MMS"
-      mcc="220"
-      mnc="04"
-      apn="mms"
-      user="38267"
-      password="38267"
-      mmsc="http://192.168.180.100/servlets/mms"
-      mmsproxy="10.0.5.19"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="T-Mobile Internet"
-      mcc="220"
-      mnc="04"
-      apn="tmcg-wnw"
-      user="38267"
-      password="38267"
-      proxy="10.0.5.19"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="SaskTel"
-      mcc="204"
-      mnc="04"
-      apn="pda.stm.sk.ca"
-      type="default,mms,supl"
-      mmsc="http://mms.sasktel.com/"
-      mmsproxy="mig.sasktel.com"
-      mmsport="80"
-      mvno_match_data="5A"
-      mvno_type="gid"
-  />
-
-  <apn carrier="agms"
-      mcc="204"
-      mnc="65"
-      apn="agms"
-      type="default,supl"
-  />
-
-  <apn carrier="Vip GPRS"
-      mcc="220"
-      mnc="05"
-      apn="vipmobile"
-      user="vipmobile"
-      password="vipmobile"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Vip MMS"
-      mcc="220"
-      mnc="05"
-      apn="vipmobile.mms"
-      user="vipmobile"
-      password="vipmobile"
-      mmsc="http://mms.vipmobile.rs"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="WAP TIM"
-      mcc="222"
-      mnc="01"
-      apn="wap.tim.it"
-      type="default,supl"
-  />
-
-  <apn carrier="TIM Web"
-      mcc="222"
-      mnc="01"
-      apn="ibox.tim.it"
-      authtype="0"
-      type="dun"
-  />
-
-  <apn carrier="iTIM"
-      mcc="222"
-      mnc="01"
-      apn="unico.tim.it"
-      mmsc="http://mms.tim.it/servlets/mms"
-      mmsproxy="213.230.130.89"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="222"
-      mnc="01"
-      apn="internet.windmobile.ca"
-      type="default,supl"
-      protocol="IPV4V6"
-      mvno_match_data="FFFFFF00"
-      mvno_type="gid"
-  />
-
-  <apn carrier="MMS"
-      mcc="222"
-      mnc="01"
-      apn="mms.windmobile.ca"
-      mmsc="http://mms.windmobile.ca"
-      mmsproxy="74.115.197.70"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="FFFFFF00"
-      mvno_type="gid"
-  />
-
- <apn carrier="MMS"
-      mcc="222"
-      mnc="01"
-      authtype="0"
-      mmsc="http://mms.iusacell3g.com/"
-      type="mms"
-      user="mmsiusacellgsm"
-      password="mmsiusacellgsm"
-      apn="mms.iusacellgsm.mx"
-      mvno_type="spn"
-      mvno_match_data="IUSACELL"
-  />
-
-  <apn carrier="Modem"
-      mcc="222"
-      mnc="01"
-      authtype="0"
-      type="dun"
-      user="iusacellgsm"
-      password="iusacellgsm"
-      apn="modem.iusacellgsm.mx"
-      mvno_type="spn"
-      mvno_match_data="IUSACELL"
-  />
-
-  <apn carrier="Internet"
-      mcc="222"
-      mnc="01"
-      authtype="0"
-      type="default"
-      user="iusacellgsm"
-      password="iusacellgsm"
-      apn="web.iusacellgsm.mx"
-      mvno_type="spn"
-      mvno_match_data="IUSACELL"
-  />
-
-  <apn carrier="MMS"
-      mcc="222"
-      mnc="01"
-      apn="mms.iusacellgsm.mx"
-      authtype="0"
-      mmsc="http://mms.iusacell3g.com/"
-      type="mms"
-      user="mmsiusacellgsm"
-      password="mmsiusacellgsm"
-      mvno_type="spn"
-      mvno_match_data="UNEFON"
-  />
-
-  <apn carrier="Modem"
-      mcc="222"
-      mnc="01"
-      apn="modem.iusacellgsm.mx"
-      authtype="0"
-      type="dun"
-      user="iusacellgsm"
-      password="iusacellgsm"
-      mvno_type="spn"
-      mvno_match_data="UNEFON"
-  />
-
-  <apn carrier="Internet"
-      mcc="222"
-      mnc="01"
-      apn="web.iusacellgsm.mx"
-      authtype="0"
-      type="default"
-      user="iusacellgsm"
-      password="iusacellgsm"
-      mvno_type="spn"
-      mvno_match_data="UNEFON"
-  />
-
-  <apn carrier="NOVERCA MMS"
-      mcc="222"
-      mnc="01"
-      apn="mms.noverca.it"
-      authtype="0"
-      mmsc="http://mms.noverca.it/"
-      mmsproxy="213.230.130.89"
-      mmsport="80"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="Noverca"
-  />
-
-  <apn carrier="NOVERCA WEB"
-      mcc="222"
-      mnc="01"
-      apn="web.noverca.it"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-      mvno_type="spn"
-      mvno_match_data="Noverca"
-  />
-
-  <apn carrier="Acc. Internet da cell"
-      mcc="222"
-      mnc="10"
-      apn=""
-      type="ia"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="MMS Vodafone"
-      mcc="222"
-      mnc="10"
-      apn="mms.vodafone.it"
-      mmsc="http://mms.vodafone.it/servlets/mms"
-      mmsproxy="10.128.224.10"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Acc. Internet da cell"
-      mcc="222"
-      mnc="10"
-      apn="mobile.vodafone.it"
-      type="default,supl"
-  />
-
-  <apn carrier="Tethering Internet"
-      mcc="222"
-      mnc="10"
-      apn="web.omnitel.it"
-      authtype="0"
-      mmsport="80"
-      type="dun"
-  />
-
-  <apn carrier="PosteMobile"
-      mcc="222"
-      mnc="10"
-      apn="wap.postemobile.it"
-      authtype="0"
-      type="default,supl,agps,fota"
-      mvno_type="spn"
-      mvno_match_data="PosteMobile"
-  />
-
-  <apn carrier="PosteMobile (DUN)"
-      mcc="222"
-      mnc="10"
-      apn="internet.postemobile.it"
-      authtype="0"
-      type="dun"
-      mvno_type="spn"
-      mvno_match_data="PosteMobile"
-  />
-
-  <apn carrier="PosteMobile MMS"
-      mcc="222"
-      mnc="10"
-      apn="mms.postemobile.it"
-      authtype="0"
-      mmsc="http://mms.postemobile.it/servlets/mms"
-      mmsproxy="10.128.224.10"
-      mmsport="80"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="PosteMobile"
-  />
-
-  <apn carrier="ErgMobile WAP"
-      mcc="222"
-      mnc="10"
-      apn="mobile.erg.it"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-      mvno_type="spn"
-      mvno_match_data="ERG"
-  />
-
-  <apn carrier="INTERNET WIND"
-      mcc="222"
-      mnc="88"
-      apn="internet.wind"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS WIND"
-      mcc="222"
-      mnc="88"
-      apn="mms.wind"
-      mmsc="http://mms.wind.it"
-      mmsproxy="212.245.244.100"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="222"
-      mnc="88"
-      apn="internet.windmobile.ca"
-      type="default,supl"
-      protocol="IPV4V6"
-      mvno_match_data="FFFFFF00"
-      mvno_type="gid"
-  />
-
-  <apn carrier="MMS"
-      mcc="222"
-      mnc="88"
-      apn="mms.windmobile.ca"
-      mmsc="http://mms.windmobile.ca"
-      mmsproxy="74.115.197.70"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="FFFFFF00"
-      mvno_type="gid"
-  />
-
-  <apn carrier="3"
-      mcc="222"
-      mnc="99"
-      apn="tre.it"
-      mmsc="http://10.216.59.240:10021/mmsc"
-      mmsproxy="62.13.171.3"
-      mmsport="8799"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Fastweb WEB"
-      mcc="222"
-      mnc="99"
-      apn="apn.fastweb.it"
-      mmsc="http://mms.fastweb.it/mms/wapenc"
-      mmsproxy="10.0.65.9"
-      mmsport="8080"
-      type="default,supl,mms"
-      mvno_match_data="FASTWEB"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Vodafone live!"
-      mcc="226"
-      mnc="01"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Vodafone live!"
-      mcc="226"
-      mnc="01"
-      apn="live.vodafone.com"
-      user="live"
-      password="vodafone"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodafone MMS"
-      mcc="226"
-      mnc="01"
-      apn="mms.vodafone.ro"
-      user="mms"
-      password="vodafone"
-      mmsc="http://multimedia/servlets/mms"
-      mmsproxy="193.230.161.231"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Vodafone live!PRE"
-      mcc="226"
-      mnc="01"
-      apn="live.pre.vodafone.com"
-      proxy="193.230.161.231"
-      port="8080"
-      authtype="0"
-      user="live"
-      password="vodafone"
-      type="default"
-  />
-
-  <apn carrier="Cosmote Connect Mobile"
-      mcc="226"
-      mnc="03"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Cosmote Connect Mobile"
-      mcc="226"
-      mnc="03"
-      apn="broadband"
-      type="default,supl"
-  />
-
-  <apn carrier="Cosmote MMS"
-      mcc="226"
-      mnc="03"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://mmsc1.mms.cosmote.ro:8002"
-      mmsproxy="10.252.1.62"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="web'n'walk"
-      mcc="226"
-      mnc="03"
-      apn="wnw"
-      user="wnw"
-      password="wnw"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="226"
-      mnc="05"
-      apn="mms"
-      mmsc="http://10.10.3.133:8002"
-      mmsproxy="10.10.3.130"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Digi.Mobil"
-      mcc="226"
-      mnc="05"
-      apn="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Cosmote Connect Mobile"
-      mcc="226"
-      mnc="06"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Cosmote Connect Mobile"
-      mcc="226"
-      mnc="06"
-      apn="broadband"
-      type="default,supl"
-  />
-
-  <apn carrier="Cosmote MMS"
-      mcc="226"
-      mnc="06"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://mmsc1.mms.cosmote.ro:8002"
-      mmsproxy="10.252.1.62"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="web'n'walk"
-      mcc="226"
-      mnc="06"
-      apn="wnw"
-      user="wnw"
-      password="wnw"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange Internet"
-      mcc="226"
-      mnc="10"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Orange MMS"
-      mcc="226"
-      mnc="10"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://wap.mms.orange.ro:8002"
-      mmsproxy="62.217.247.252"
-      mmsport="8799"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Orange Internet"
-      mcc="226"
-      mnc="10"
-      apn="net"
-      type="default"
-  />
-
-  <apn carrier="Swisscom MMS"
-      mcc="228"
-      mnc="01"
-      apn="event.swisscom.ch"
-      mmsc="http://mms.natel.ch:8079"
-      mmsproxy="192.168.210.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Swisscom Services"
-      mcc="228"
-      mnc="01"
-      apn="gprs.swisscom.ch"
-      type="default,supl"
-  />
-
-  <apn carrier="Sunrise live"
-      mcc="228"
-      mnc="02"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Sunrise MMS"
-      mcc="228"
-      mnc="02"
-      apn="mms.sunrise.ch"
-      mmsc="http://mmsc.sunrise.ch"
-      mmsproxy="212.35.34.75"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Salt Internet"
-      mcc="228"
-      mnc="03"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Salt MMS"
-      mcc="228"
-      mnc="03"
-      apn="mms"
-      mmsc="http://192.168.151.3:8002"
-      mmsproxy="192.168.151.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="T-Mobile CZ"
-      mcc="230"
-      mnc="01"
-      apn=""
-      type="ia"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="T-Mobile CZ"
-      mcc="230"
-      mnc="01"
-      apn="internet.t-mobile.cz"
-      user="wap"
-      password="wap"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="T-Mobile MMS"
-      mcc="230"
-      mnc="01"
-      apn="mms.t-mobile.cz"
-      user="mms"
-      password="mms"
-      mmsc="http://mms"
-      mmsproxy="10.0.0.10"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="O2 internet"
-      mcc="230"
-      mnc="02"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="O2 MMS"
-      mcc="230"
-      mnc="02"
-      apn="mms"
-      mmsc="http://mms.o2active.cz:8002"
-      mmsproxy="160.218.160.218"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="230"
-      mnc="03"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="230"
-      mnc="03"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://mms"
-      mmsproxy="10.11.10.111"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Orange SK"
-      mcc="231"
-      mnc="01"
-      apn="internet"
-      type="default"
-  />
-
-  <apn carrier="Orange SK MMS"
-      mcc="231"
-      mnc="01"
-      apn="mms"
-      user="wap"
-      password="wap"
-      authtype="1"
-      mmsc="http://imms.orange.sk"
-      mmsproxy="213.151.208.145"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <apn carrier="Orange World"
-      mcc="231"
-      mnc="01"
-      apn="orangewap"
-      user="wap"
-      password="wap"
-      authtype="1"
-      proxy="213.151.208.156"
-      port="8799"
-      type="default,supl"
-  />
-
-  <apn carrier="Telekom Internet"
-      mcc="231"
-      mnc="02"
-      apn="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Telekom MMS"
-      mcc="231"
-      mnc="02"
-      apn="mms"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mms"
-      mmsproxy="192.168.1.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="O2 internet"
-      mcc="231"
-      mnc="06"
-      apn="o2internet"
-      type="default,supl"
-  />
-
-  <apn carrier="O2 MMS"
-      mcc="231"
-      mnc="06"
-      apn="o2mms"
-      mmsc="http://mms.o2world.sk:8002"
-      mmsproxy="10.97.1.11"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="live!"
-      mcc="232"
-      mnc="01"
-      apn="a1.net"
-      user="ppp@a1plus.at"
-      password="ppp"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="A1 MMS"
-      mcc="232"
-      mnc="01"
-      apn="free.a1.net"
-      user="ppp@a1plus.at"
-      password="ppp"
-      mmsc="http://mmsc.a1.net"
-      mmsproxy="194.48.124.71"
-      mmsport="8001"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="T-Mobile Internet"
-      mcc="232"
-      mnc="03"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="T-Mobile LTE"
-      mcc="232"
-      mnc="03"
-      apn="internet.t-mobile.at"
-      user="t-mobile"
-      password="tm"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="T-Mobile MMS"
-      mcc="232"
-      mnc="03"
-      apn="gprsmms"
-      user="t-mobile"
-      password="tm"
-      mmsc="http://mmsc.t-mobile.at/servlets/mms"
-      mmsproxy="10.12.0.20"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Planet 3"
-      mcc="232"
-      mnc="05"
-      apn="drei.at"
-      mmsc="http://mmsc"
-      mmsproxy="213.94.78.133"
-      mmsport="8799"
-      type="default,supl,mms"
-  />
-
-  <!--apn carrier="Orange MMS (AT)"
-      mcc="232"
-      mnc="05"
-      apn="orange.mms"
-      authtype="1"
-      user="mms"
-      password="mms"
-      mmsc="http://mmsc.orange.at/mms/wapenc"
-      mmsproxy="194.24.128.118"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange web (AT)"
-      mcc="232"
-      mnc="05"
-      apn="web.one.at"
-      authtype="0"
-      user="web"
-      password="web"
-      type="default,supl,agps,fota,dun"
-  /-->
-
-  <apn carrier="tele.ring mms"
-      mcc="232"
-      mnc="07"
-      apn="mms"
-      user="wap@telering.at"
-      password="wap"
-      mmsc="http://relay.mms.telering.at"
-      mmsproxy="212.95.31.50"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="tele.ring web"
-      mcc="232"
-      mnc="07"
-      apn="web"
-      user="web@telering.at"
-      password="web"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Planet3"
-      mcc="232"
-      mnc="10"
-      apn="drei.at"
-      mmsc="http://mmsc"
-      mmsproxy="213.94.78.133"
-      mmsport="8799"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="data.bob"
-      mcc="232"
-      mnc="11"
-      apn="bob.at"
-      user="data@bob.at"
-      password="ppp"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="data.bob MMS"
-      mcc="232"
-      mnc="11"
-      apn="mms.bob.at"
-      user="data@bob.at"
-      password="ppp"
-      mmsc="http://mmsc.bob.at"
-      mmsproxy="194.48.124.7"
-      mmsport="8001"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="yesss!"
-      mcc="232"
-      mnc="12"
-      apn="web.yesss.at"
-      type="default,supl"
-  />
-
-  <apn carrier="UPC mobiles Internet"
-      mcc="232"
-      mnc="13"
-      apn="Internet.at.upcmobile.com"
-      type="default"
-      mvno_type="imsi"
-      mvno_match_data="23213xxxxxxxxxx"
-      protocol="IP"
-      authtype="0"
-  />
-
-  <apn carrier="UBIQUISYS"
-      mcc="234"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="O2 MOBILE WEB"
-      mcc="234"
-      mnc="02"
-      apn="mobile.o2.co.uk"
-      user="O2web"
-      password="O2web"
-      type="default,supl"
-  />
-
-  <apn carrier="O2 MMS Prepay"
-      mcc="234"
-      mnc="02"
-      apn="payandgo.o2.co.uk"
-      user="payandgo"
-      password="password"
-      mmsc="http://mmsc.mms.o2.co.uk:8002"
-      mmsproxy="82.132.254.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="O2 MMS Postpay"
-      mcc="234"
-      mnc="02"
-      apn="wap.o2.co.uk"
-      user="o2wap"
-      password="password"
-      mmsc="http://mmsc.mms.o2.co.uk:8002"
-      mmsproxy="82.132.254.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="BT One Phone Internet"
-      mcc="234"
-      mnc="08"
-      apn="internet.btonephone.com"
-      mvno_type="gid"
-      mvno_match_data="B2"
-      type="default,supl"
-  />
-
-  <apn carrier="BT One Phone MMS"
-      mcc="234"
-      mnc="08"
-      apn="mms.btonephone.com"
-      mmsc="http://MMSC/"
-      mmsproxy="proxy.btonephone.com"
-      mmsport="8080"
-      mvno_type="gid"
-      mvno_match_data="B2"
-      type="mms"
-  />
-
-  <apn carrier="O2 Mobile Web"
-      mcc="234"
-      mnc="10"
-      apn="mobile.o2.co.uk"
-      user="o2web"
-      password="password"
-      authtype="1"
-      mmsc="http://mmsc.mms.o2.co.uk:8002"
-      type="default,hipri,supl,mms"
-  />
-
-  <apn carrier="O2 Pay &amp; Go"
-      mcc="234"
-      mnc="10"
-      apn="payandgo.o2.co.uk"
-      user="payandgo"
-      password="password"
-      mmsc="http://mmsc.mms.o2.co.uk:8002"
-      type="default,supl,mms"
-      mvno_match_data="99"
-      mvno_type="gid"
-  />
-
-  <apn carrier="O2 Pay &amp; Go"
-      mcc="234"
-      mnc="10"
-      apn="payandgo.o2.co.uk"
-      user="payandgo"
-      password="password"
-      mmsc="http://mmsc.mms.o2.co.uk:8002"
-      type="default,supl,mms"
-      mvno_match_data="61"
-      mvno_type="gid"
-  />
-
-  <apn carrier="O2 Pay &amp; Go"
-      mcc="234"
-      mnc="10"
-      apn="payandgo.o2.co.uk"
-      user="payandgo"
-      password="password"
-      mmsc="http://mmsc.mms.o2.co.uk:8002"
-      type="default,supl,mms"
-      mvno_match_data="67"
-      mvno_type="gid"
-  />
-
-  <apn carrier="O2 Pay &amp; Go"
-      mcc="234"
-      mnc="10"
-      apn="payandgo.o2.co.uk"
-      user="payandgo"
-      password="password"
-      mmsc="http://mmsc.mms.o2.co.uk:8002"
-      type="default,supl,mms"
-      mvno_match_data="85"
-      mvno_type="gid"
-  />
-
-  <apn carrier="TESCO"
-      mcc="234"
-      mnc="10"
-      apn="prepay.tesco-mobile.com"
-      user="tescowap"
-      password="password"
-      mmsc="http://mmsc.mms.o2.co.uk:8002"
-      authtype="1"
-      type="default,supl,mms"
-      mvno_match_data="0A"
-      mvno_type="gid"
-  />
-
-  <apn carrier="giffgaff"
-      mcc="234"
-      mnc="10"
-      apn="giffgaff.com"
-      authtype="1"
-      user="giffgaff"
-      password="password"
-      mmsc="http://mmsc.mediamessaging.co.uk:8002"
-      mvno_type="spn"
-      mvno_match_data="giffgaff"
-  />
-
-  <apn carrier="Jump UK"
-      mcc="234"
-      mnc="10"
-      apn="mobiledata"
-      authtype="0"
-      mvno_type="spn"
-      mvno_match_data="Jump"
-  />
-
-  <apn carrier="O2 MOBILE WEB"
-      mcc="234"
-      mnc="11"
-      apn="mobile.o2.co.uk"
-      user="O2web"
-      password="O2web"
-      type="default,supl"
-  />
-
-  <apn carrier="O2 MMS Prepay"
-      mcc="234"
-      mnc="11"
-      apn="payandgo.o2.co.uk"
-      user="payandgo"
-      password="password"
-      mmsc="http://mmsc.mms.o2.co.uk:8002"
-      mmsproxy="82.132.254.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="O2 MMS Postpay"
-      mcc="234"
-      mnc="11"
-      apn="wap.o2.co.uk"
-      user="o2wap"
-      password="password"
-      mmsc="http://mmsc.mms.o2.co.uk:8002"
-      mmsproxy="82.132.254.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-
-  <apn carrier="O2 MOBILE WEB"
-      mcc="234"
-      mnc="11"
-      apn="mobile.o2.co.uk"
-      user="O2web"
-      password="O2web"
-      type="default,supl"
-  />
-
-  <apn carrier="O2 MMS Prepay"
-      mcc="234"
-      mnc="11"
-      apn="payandgo.o2.co.uk"
-      user="payandgo"
-      password="password"
-      mmsc="http://mmsc.mms.02.co.uk:8002"
-      mmsproxy="82.132.254.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="O2 MMS Postpay"
-      mcc="234"
-      mnc="11"
-      apn="wap.o2.co.uk"
-      user="o2wap"
-      password="password"
-      mmsc="http://mmsc.mms.02.co.uk:8002"
-      mmsproxy="82.132.254.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Contract WAP"
-      mcc="234"
-      mnc="15"
-      apn="wap.vodafone.co.uk"
-      user="wap"
-      password="wap"
-      mmsc="http://mms.vodafone.co.uk/servlets/mms"
-      mmsproxy="212.183.137.12"
-      mmsport="8799"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="PAYG WAP"
-      mcc="234"
-      mnc="15"
-      apn="pp.vodafone.co.uk"
-      user="wap"
-      password="wap"
-      mmsc="http://mms.vodafone.co.uk/servlets/mms"
-      mmsproxy="212.183.137.12"
-      mmsport="8799"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="ASDA WAP"
-      mcc="234"
-      mnc="15"
-      apn="asdamobiles.co.uk"
-      proxy="212.183.137.12"
-      port="8799"
-      user="wap"
-      password="wap"
-      mmsc="http://mms.asdamobiles.co.uk/servlets/mms"
-      mmsproxy="212.183.137.12"
-      mmsport="8799"
-      authtype="1"
-      type="default,supl,mms"
-      mvno_match_data="A0"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Talkmob PAYG WAP"
-      mcc="234"
-      mnc="15"
-      apn="payg.talkmobile.co.uk"
-      proxy="212.183.137.12"
-      port="8799"
-      user="wap"
-      password="wap"
-      mmsc="http://mms.talkmobile.co.uk/servlets/mms"
-      mmsproxy="212.183.137.12"
-      mmsport="8799"
-      authtype="1"
-      type="default,supl,mms"
-      mvno_match_data="C1"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Talkmob WAP"
-      mcc="234"
-      mnc="15"
-      apn="talkmobile.co.uk"
-      proxy="212.183.137.12"
-      port="8799"
-      user="wap"
-      password="wap"
-      mmsc="http://mms.talkmobile.co.uk/servlets/mms"
-      mmsproxy="212.183.137.12"
-      mmsport="8799"
-      authtype="1"
-      type="default,supl,mms"
-      mvno_match_data="C1"
-      mvno_type="gid"
-  />
-
-  <apn carrier="TalkTalk WAP"
-      mcc="234"
-      mnc="15"
-      apn="mobile.talktalk.co.uk"
-      mmsc="http://mms.talktalk.co.uk/servlets/mms"
-      mmsproxy="212.183.137.12"
-      mmsport="8799"
-      type="default,supl,mms"
-      mvno_match_data="70"
-      mvno_type="gid"
-  />
-
-  <apn carrier="BT Mobile"
-      mcc="234"
-      mnc="15"
-      apn="btmobile.bt.com"
-      authtype="1"
-      user="bt"
-      password="bt"
-      mmsc="http://mms.bt.com/servlets/mms"
-      mmsproxy="212.183.137.12"
-      mmsport="8799"
-      mvno_type="gid"
-      mvno_match_data="B3"
-  />
-
-  <apn carrier="Sainsbury's PAYG"
-      mcc="234"
-      mnc="15"
-      apn="payg.mobilebysainsburys.co.uk"
-      authtype="1"
-      mmsc="http://mms.mobilebysainsburys.co.uk/servlets/mms"
-      mmsproxy="212.183.137.12"
-      mmsport="8799"
-      mvno_type="spn"
-      mvno_match_data="Sainsbury's"
-  />
-
-  <apn carrier="Lebara Internet"
-      mcc="234"
-      mnc="15"
-      apn="uk.lebara.mobi"
-      authtype="1"
-      user="wap"
-      password="wap"
-      mmsc="http://mms.lebara.co.uk/servlets/mms"
-      mmsproxy="212.183.137.012"
-      mmsport="8799"
-      mvno_type="spn"
-      mvno_match_data="Lebara"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="3"
-      mcc="234"
-      mnc="20"
-      apn="three.co.uk"
-      mmsc="http://mms.um.three.co.uk:10021/mmsc"
-      mmsproxy="mms.three.co.uk"
-      mmsport="8799"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="3 Hotspot"
-      mcc="234"
-      mnc="20"
-      apn="3hotspot"
-      authtype="0"
-      type="dun"
-  />
-
-  <apn carrier="iD"
-      mcc="234"
-      mnc="20"
-      apn="id"
-      mmsc="http://mms.um.idmobile.co.uk:10021/mmsc"
-      mmsproxy="mms.idmobile.co.uk"
-      mmsport="8799"
-      type="default,supl,mms"
-      mvno_type="gid"
-      mvno_match_data="0305"
-  />
-
-  <apn carrier="Lycamobile"
-      mcc="234"
-      mnc="26"
-      apn="data.lycamobile.co.uk"
-      authtype="1"
-      user="lmuk"
-      password="plus"
-      mvno_type="spn"
-      mvno_match_data="Lycamobile"
-  />
-
-  <apn carrier="Virgin Media Mobile Internet"
-      mcc="234"
-      mnc="30"
-      apn="goto.virginmobile.uk"
-      user="user"
-      mmsc="http://mms.virginmobile.co.uk:8002"
-      mmsproxy="193.30.166.2"
-      mmsport="8080"
-      authtype="1"
-      type="default,supl,mms"
-      mvno_match_data="28"
-      mvno_type="gid"
-  />
-
-  <apn carrier="IMS"
-      mcc="234"
-      mnc="30"
-      apn="ims"
-      user="eesecure"
-      password="secure"
-      authtype="1"
-      type="ims"
-      protocol="IPV6"
-  />
-
-  <apn carrier="EE Internet"
-      mcc="234"
-      mnc="30"
-      apn="everywhere"
-      user="eesecure"
-      password="secure"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="EE MMS"
-      mcc="234"
-      mnc="30"
-      apn="eezone"
-      user="eesecure"
-      password="secure"
-      mmsc="http://mms/"
-      mmsproxy="149.254.201.135"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="BT One Phone Internet"
-      mcc="234"
-      mnc="30"
-      apn="internet.btonephone.com"
-      mvno_type="gid"
-      mvno_match_data="B2"
-      type="default,supl"
-  />
-
-  <apn carrier="BT One Phone MMS"
-      mcc="234"
-      mnc="30"
-      apn="mms.btonephone.com"
-      mmsc="http://MMSC/"
-      mmsproxy="proxy.btonephone.com"
-      mmsport="8080"
-      mvno_type="gid"
-      mvno_match_data="B2"
-      type="mms"
-  />
-
-  <apn carrier="BT Internet"
-      mcc="234"
-      mnc="30"
-      apn="btmobile.bt.com"
-      user="bt"
-      password="bt"
-      authtype="1"
-      mvno_type="gid"
-      mvno_match_data="B3"
-      type="default,supl"
-  />
-
-  <apn carrier="BT MMS"
-      mcc="234"
-      mnc="30"
-      apn="mms.bt.com"
-      user="bt"
-      password="bt"
-      authtype="1"
-      mmsc="http://MMS/"
-      mmsproxy="149.254.201.135"
-      mmsport="8080"
-      mvno_type="gid"
-      mvno_match_data="B3"
-      type="mms"
-  />
-
-  <apn carrier="BT Internet"
-      mcc="234"
-      mnc="30"
-      apn="btmobile.bt.com"
-      user="bt"
-      password="bt"
-      authtype="1"
-      mvno_type="gid"
-      mvno_match_data="C3"
-      type="default,supl"
-  />
-
-  <apn carrier="BT MMS"
-      mcc="234"
-      mnc="30"
-      apn="mms.bt.com"
-      user="bt"
-      password="bt"
-      authtype="1"
-      mmsc="http://MMS/"
-      mmsproxy="149.254.201.135"
-      mmsport="8080"
-      mvno_type="gid"
-      mvno_match_data="C3"
-      type="mms"
-  />
-
-  <apn carrier="EE Internet"
-      mcc="234"
-      mnc="31"
-      apn="everywhere"
-      user="eesecure"
-      password="secure"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="EE MMS"
-      mcc="234"
-      mnc="31"
-      apn="eezone"
-      user="eesecure"
-      password="secure"
-      mmsc="http://mms/"
-      mmsproxy="149.254.201.135"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="EE Internet"
-      mcc="234"
-      mnc="32"
-      apn="everywhere"
-      user="eesecure"
-      password="secure"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="EE MMS"
-      mcc="234"
-      mnc="32"
-      apn="eezone"
-      user="eesecure"
-      password="secure"
-      mmsc="http://mms/"
-      mmsproxy="149.254.201.135"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="IMS"
-      mcc="234"
-      mnc="33"
-      apn="ims"
-      user="eesecure"
-      password="secure"
-      authtype="1"
-      type="ims"
-      protocol="IPV6"
-  />
-
-  <apn carrier="EE Internet"
-      mcc="234"
-      mnc="33"
-      apn="everywhere"
-      user="eesecure"
-      password="secure"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="EE MMS"
-      mcc="234"
-      mnc="33"
-      apn="eezone"
-      user="eesecure"
-      password="secure"
-      mmsc="http://mms/"
-      mmsproxy="149.254.201.135"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="234"
-      mnc="33"
-      apn="tslpaygnet"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-      mvno_type="spn"
-      mvno_match_data="LIFE"
-  />
-
-  <apn carrier="MMS"
-      mcc="234"
-      mnc="33"
-      apn="tslmms"
-      authtype="1"
-      user="wap"
-      password="wap"
-      mmsc="http://mms/"
-      mmsproxy="193.35.133.194"
-      mmsport="8080"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="LIFE"
-  />
-
-  <apn carrier="EE Internet"
-      mcc="234"
-      mnc="34"
-      apn="everywhere"
-      user="eesecure"
-      password="secure"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="EE MMS"
-      mcc="234"
-      mnc="34"
-      apn="eezone"
-      user="eesecure"
-      password="secure"
-      mmsc="http://mms/"
-      mmsproxy="149.254.201.135"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <!--apn carrier="Orange UK 34"
-      mcc="234"
-      mnc="34"
-      apn="orangeinternet"
-      user="user"
-      password="pass"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="Orange UK 34 MMS"
-      mcc="234"
-      mnc="34"
-      apn="orangemms"
-      user=""
-      password=""
-      mmsc="http://mms.orange.co.uk"
-      mmsproxy="192.168.224.10"
-      mmsport="8080"
-      type="mms"
-  /-->
-
-  <apn carrier="Truphone"
-      mcc="234"
-      mnc="25"
-      apn="truphone.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Jersey Telecom"
-      mcc="234"
-      mnc="50"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://mms.surfmail.com/mmsc"
-      mmsproxy="212.9.19.199"
-      mmsport="3130"
-      type="mms"
-  />
-
-  <apn carrier="pepperWEB (Jersey)"
-      mcc="234"
-      mnc="50"
-      apn="pepper"
-      type="default,supl"
-  />
-
-  <apn carrier="C&amp;W Guernsey Internet"
-      mcc="234"
-      mnc="55"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Sure Picture Messaging"
-      mcc="234"
-      mnc="55"
-      apn="mms"
-      mmsc="http://mmsc.gprs.cw.com/"
-      mmsproxy="10.0.3.101"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="3G HSDPA"
-      mcc="234"
-      mnc="58"
-      apn="3gpronto"
-      type="default,supl"
-  />
-
-  <apn carrier="Manx Telecom Contract MMS"
-      mcc="234"
-      mnc="58"
-      apn="mms.manxpronto.net"
-      user="mms"
-      password="mms"
-      mmsc="http://mms.manxpronto.net:8002"
-      mmsproxy="195.10.99.46"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Manx Telecom Prepay MMS"
-      mcc="234"
-      mnc="58"
-      apn="mms.prontogo.net"
-      user="mmsgo"
-      password="mmsgo"
-      mmsc="http://mms.manxpronto.net:8002"
-      mmsproxy="195.10.99.41"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Manx Telecom Contract WEB"
-      mcc="234"
-      mnc="58"
-      apn="web.manxpronto.net"
-      user="gprs"
-      password="gprs"
-      type="default,supl"
-  />
-
-  <apn carrier="EE Internet"
-      mcc="234"
-      mnc="86"
-      apn="everywhere"
-      user="eesecure"
-      password="secure"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="EE MMS"
-      mcc="234"
-      mnc="86"
-      apn="eezone"
-      user="eesecure"
-      password="secure"
-      mmsc="http://mms/"
-      mmsproxy="149.254.201.135"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="3"
-      mcc="235"
-      mnc="94"
-      apn="three.co.uk"
-      mmsc="http://mms.um.three.co.uk:10021/mmsc"
-      mmsproxy="mms.three.co.uk"
-      mmsport="8799"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="DK TDC"
-      mcc="238"
-      mnc="01"
-      apn="internet"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-  />
-
-  <apn carrier="DK TDC mms"
-      mcc="238"
-      mnc="01"
-      apn="mms"
-      authtype="0"
-      mmsc="http://192.168.241.114:8002"
-      mmsproxy="194.182.251.15"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="TDC Internet"
-      mcc="238"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-      mvno_match_data="2380101xxxxxxxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="TDC MMS"
-      mcc="238"
-      mnc="01"
-      apn="mms"
-      mmsc="http://mmsc.tdc.dk:8002"
-      mmsproxy="194.182.251.15"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="2380101xxxxxxxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Telmore Internet"
-      mcc="238"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-      mvno_type="spn"
-      mvno_match_data="TELMORE"
-  />
-
-  <apn carrier="Telmore MMS"
-      mcc="238"
-      mnc="01"
-      apn="mms"
-      mmsproxy="194.182.251.15"
-      mmsport="8080"
-      mmsc="http://192.168.241.114:8002"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="TELMORE"
-  />
-
-  <apn carrier="TELMORE WAP"
-      mcc="238"
-      mnc="01"
-      apn="wap"
-      proxy="194.182.251.15"
-      port="8080"
-      authtype="0"
-      type="default"
-      mvno_type="spn"
-      mvno_match_data="TELMORE"
-  />
-
-  <apn carrier="Telenor Internet"
-      mcc="238"
-      mnc="02"
-      apn="Internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Telenor MMS"
-      mcc="238"
-      mnc="02"
-      apn="telenor"
-      mmsc="http://mms.telenor.dk"
-      mmsproxy="212.88.64.8"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="3"
-      mcc="238"
-      mnc="06"
-      apn="data.tre.dk"
-      mmsc="http://mms.3.dk/"
-      mmsproxy="mmsproxy.3.dk"
-      mmsport="8799"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Telia SurfPort"
-      mcc="238"
-      mnc="20"
-      apn="www.internet.mtelia.dk"
-      type="default,supl"
-      mvno_type="imsi"
-      mvno_match_data="2382010x"
-  />
-
-  <apn carrier="Telia SurfPort"
-      mcc="238"
-      mnc="20"
-      apn="www.internet.mtelia.dk"
-      type="default,supl"
-      mvno_type="imsi"
-      mvno_match_data="2382030x"
-  />
-
-  <apn carrier="Telia MMS"
-      mcc="238"
-      mnc="20"
-      apn="www.mms.mtelia.dk"
-      mmsc="http://mms.telia.dk"
-      mmsproxy="193.209.134.131"
-      mmsport="8080"
-      type="mms"
-      mvno_type="imsi"
-      mvno_match_data="2382010x"
-  />
-
-  <apn carrier="Telia MMS"
-      mcc="238"
-      mnc="20"
-      apn="www.mms.mtelia.dk"
-      mmsc="http://mms.telia.dk"
-      mmsproxy="193.209.134.131"
-      mmsport="8080"
-      type="mms"
-      mvno_type="imsi"
-      mvno_match_data="2382030x"
-  />
-
-  <apn carrier="Call me Internet"
-      mcc="238"
-      mnc="20"
-      apn="webSP"
-      type="default,supl"
-      mvno_type="spn"
-      mvno_match_data="Call me"
-  />
-
-  <apn carrier="Call me MMS"
-      mcc="238"
-      mnc="20"
-      apn="mmsSP"
-      mmsproxy="193.209.134.131"
-      mmsport="8080"
-      mmsc="http://mms.telia.dk"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="Call me"
-  />
-
-  <apn carrier="DLG Tele GPRS"
-      mcc="238"
-      mnc="20"
-      apn="webSP"
-      type="default,supl"
-      mvno_type="spn"
-      mvno_match_data="DLG Tele"
-  />
-
-  <apn carrier="DLG Tele MMS"
-      mcc="238"
-      mnc="20"
-      apn="mmsSP"
-      mmsproxy="193.209.134.131"
-      mmsport="8080"
-      mmsc="http://mms.telia.dk"
-      type="mms"
-      mvno_type="spn"
-      mvno_match_data="DLG Tele"
-  />
-
-  <apn carrier="Orange DE"
-      mcc="238"
-      mnc="30"
-      apn="web.orange.dk"
-      user=""
-      password=""
-  />
-
-  <apn carrier="Telenor Internet"
-      mcc="238"
-      mnc="77"
-      apn="Internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Telenor MMS"
-      mcc="238"
-      mnc="77"
-      apn="telenor"
-      mmsc="http://mms.telenor.dk"
-      mmsproxy="212.88.64.8"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Telia MMS"
-      mcc="240"
-      mnc="01"
-      apn="mms.telia.se"
-      mmsc="http://mmss"
-      mmsproxy="193.209.134.132"
-      mmsport="80"
-      type="mms"
-      authtype="0"
-  />
-
-  <apn carrier="Telia"
-      mcc="240"
-      mnc="01"
-      apn="online.telia.se"
-      type="default,supl"
-      authtype="0"
-  />
-
-  <apn carrier="Internet"
-      mcc="240"
-      mnc="01"
-      apn="halebop.telia.se"
-      type="default,supl"
-      authtype="0"
-      mvno_match_data="240017xxxxxxxxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="MMS"
-      mcc="240"
-      mnc="01"
-      apn="mms.telia.se"
-      mmsc="http://mmss"
-      mmsproxy="193.209.134.132"
-      mmsport="80"
-      type="mms"
-      authtype="0"
-      mvno_match_data="240017xxxxxxxxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="3"
-      mcc="240"
-      mnc="02"
-      apn="data.tre.se"
-      mmsc="http://mms.tre.se"
-      mmsproxy="mmsproxy.tre.se"
-      mmsport="8799"
-      type="default,supl,mms"
-      authtype="0"
-  />
-
-  <apn carrier="3"
-      mcc="240"
-      mnc="04"
-      apn="data.tre.se"
-      mmsc="http://mms.tre.se"
-      mmsproxy="mmsproxy.tre.se"
-      mmsport="8799"
-      type="default,supl,mms"
-      authtype="0"
-  />
-
-  <apn carrier="Telenor SE"
-      mcc="240"
-      mnc="04"
-      apn="services.telenor.se"
-      mmsc="http://mms"
-      mmsproxy="172.30.253.241"
-      mmsport="8799"
-      type="default,supl,mms"
-      authtype="0"
-      mvno_match_data="Telenor SE"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Tele2 Internet"
-      mcc="240"
-      mnc="05"
-      apn="4g.tele2.se"
-      type="default,supl"
-      authtype="0"
-      protocol="IPV4V6"
-      mvno_match_data="Tele2"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Tele2 MMS"
-      mcc="240"
-      mnc="05"
-      apn="4g.tele2.se"
-      mmsc="http://mmsc.tele2.se"
-      mmsproxy="130.244.202.30"
-      mmsport="8080"
-      type="mms"
-      authtype="0"
-      protocol="IPV4V6"
-      mvno_match_data="Tele2"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Tele2 Internet 3G"
-      mcc="240"
-      mnc="05"
-      apn="internet.tele2.se"
-      type="default,supl"
-      authtype="0"
-      protocol="IPV4V6"
-      mvno_match_data="Tele2"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Tele2 MMS 3G"
-      mcc="240"
-      mnc="05"
-      apn="internet.tele2.se"
-      mmsc="http://mmsc.tele2.se"
-      mmsproxy="130.244.202.30"
-      mmsport="8080"
-      type="mms"
-      authtype="0"
-      mvno_match_data="Tele2"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Telia MMS"
-      mcc="240"
-      mnc="05"
-      apn="mms.telia.se"
-      mmsc="http://mmss"
-      mmsproxy="193.209.134.132"
-      mmsport="80"
-      type="mms"
-      authtype="0"
-      mvno_match_data="Telia"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Telia"
-      mcc="240"
-      mnc="05"
-      apn="online.telia.se"
-      type="default,supl"
-      authtype="0"
-      mvno_match_data="Telia"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Internet"
-      mcc="240"
-      mnc="05"
-      apn="halebop.telia.se"
-      type="default,supl"
-      authtype="0"
-      mvno_match_data="Halebop"
-      mvno_type="spn"
-  />
-
-  <apn carrier="MMS"
-      mcc="240"
-      mnc="05"
-      apn="mms.telia.se"
-      mmsc="http://mmss"
-      mmsproxy="193.209.134.132"
-      mmsport="80"
-      type="mms"
-      authtype="0"
-      mvno_match_data="Halebop"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Telenor Mobilsurf"
-      mcc="240"
-      mnc="06"
-      apn="services.telenor.se"
-      proxy="173.30.253.241"
-      port="8799"
-      type="default,supl"
-  />
-
-  <apn carrier="Telenor MMS"
-      mcc="240"
-      mnc="06"
-      apn="services.telenor.se"
-      mmsc="http://mms"
-      mmsproxy="173.30.253.241"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <apn carrier="Tele2 Internet"
-      mcc="240"
-      mnc="07"
-      apn="4g.tele2.se"
-      type="default,supl"
-      authtype="0"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Tele2 MMS"
-      mcc="240"
-      mnc="07"
-      apn="4g.tele2.se"
-      mmsc="http://mmsc.tele2.se"
-      mmsproxy="130.244.202.30"
-      mmsport="8080"
-      type="mms"
-      authtype="0"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Tele2 Internet 3G"
-      mcc="240"
-      mnc="07"
-      apn="internet.tele2.se"
-      type="default,supl"
-      authtype="0"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Tele2 MMS 3G"
-      mcc="240"
-      mnc="07"
-      apn="internet.tele2.se"
-      mmsc="http://mmsc.tele2.se"
-      mmsproxy="130.244.202.30"
-      mmsport="8080"
-      type="mms"
-      authtype="0"
-  />
-
-  <apn carrier="Tele2 Internet"
-      mcc="240"
-      mnc="07"
-      apn="internet.tele2.no"
-      user="wap"
-      password="wap"
-      type="default,supl"
-      authtype="1"
-      mvno_match_data="2400768xxxxxxxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Tele2 MMS"
-      mcc="240"
-      mnc="07"
-      apn="internet.tele2.no"
-      mmsproxy="193.12.40.14"
-      mmsport="8080"
-      mmsc="http://mmsc.tele2.no"
-      type="mms"
-      mvno_match_data="2400768xxxxxxxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Telenor SE"
-      mcc="240"
-      mnc="08"
-      apn="services.telenor.se"
-      mmsc="http://mms"
-      mmsproxy="172.30.253.241"
-      mmsport="8799"
-      type="default,supl,mms"
-      authtype="0"
-  />
-
-  <apn carrier="TelenorMobilsurf"
-      mcc="240"
-      mnc="09"
-      apn="services.telenor.se"
-      proxy="173.30.253.241"
-      port="8799"
-      type="default,supl"
-  />
-
-  <apn carrier="Telenor MMS"
-      mcc="240"
-      mnc="09"
-      apn="services.telenor.se"
-      mmsc="http://mms"
-      mmsproxy="173.30.253.241"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <apn carrier="Spring data"
-      mcc="240"
-      mnc="10"
-      apn="data.springmobil.se"
-      type="default,supl"
-  />
-
-  <apn carrier="Spring MMS"
-      mcc="240"
-      mnc="10"
-      apn="mms.springmobil.se"
-      mmsc="http://mms.springmobil.se"
-      mmsproxy="213.88.184.37"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="240"
-      mnc="017"
-      apn="halebop.telia.se"
-      type="default,supl"
-      authtype="0"
-  />
-
-  <apn carrier="MMS"
-      mcc="240"
-      mnc="017"
-      apn="mms.telia.se"
-      user="mms"
-      password="telia"
-      mmsc="http://mmss"
-      mmsproxy="193.209.134.132"
-      mmsport="9201"
-      type="mms"
-      authtype="0"
-  />
-
-  <apn carrier="Tele2 Internet"
-      mcc="240"
-      mnc="24"
-      apn="4g.tele2.se"
-      type="default,supl"
-      authtype="0"
-      protocol="IPV4V6"
-      mvno_match_data="Tele2"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Tele2 MMS"
-      mcc="240"
-      mnc="24"
-      apn="4g.tele2.se"
-      mmsc="http://mmsc.tele2.se"
-      mmsproxy="130.244.202.30"
-      mmsport="8080"
-      type="mms"
-      authtype="0"
-      protocol="IPV4V6"
-      mvno_match_data="Tele2"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Tele2 Internet 3G"
-      mcc="240"
-      mnc="24"
-      apn="internet.tele2.se"
-      type="default,supl"
-      authtype="0"
-      protocol="IPV4V6"
-      mvno_match_data="Tele2"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Tele2 MMS 3G"
-      mcc="240"
-      mnc="24"
-      apn="internet.tele2.se"
-      mmsc="http://mmsc.tele2.se"
-      mmsproxy="130.244.202.30"
-      mmsport="8080"
-      type="mms"
-      authtype="0"
-      mvno_match_data="Tele2"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Telenor SE"
-      mcc="240"
-      mnc="24"
-      apn="services.telenor.se"
-      mmsc="http://mms"
-      mmsproxy="172.30.253.241"
-      mmsport="8799"
-      type="default,supl,mms"
-      authtype="0"
-      mvno_match_data="Telenor SE"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Phonero Internett"
-      mcc="242"
-      mnc="01"
-      apn="internet.phonero.no"
-      type="default,supl"
-      mvno_match_data="24201700xxxxxxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Phonero MMS"
-      mcc="242"
-      mnc="01"
-      apn="mms.phonero.no"
-      user="phonero"
-      password="1111"
-      mmsc="http://mmsc/"
-      mmsproxy="10.10.10.11"
-      mmsport="8080"
-      type="mms"
-      authtype="1"
-      mvno_match_data="24201700xxxxxxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Telenor"
-      mcc="242"
-      mnc="01"
-      apn="telenor"
-      mmsc="http://mmsc"
-      mmsproxy="10.10.10.11"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="NetCom"
-      mcc="242"
-      mnc="02"
-      apn="netcom"
-      mmsc="http://mm/"
-      mmsproxy="212.169.66.4"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Chess MMS"
-      mcc="242"
-      mnc="02"
-      apn="netcom"
-      user="mms"
-      password="netcom"
-      mmsproxy="212.169.66.4"
-      mmsport="8080"
-      mmsc="http://mm/"
-      type="mms"
-      authtype="1"
-      mvno_match_data="2420256xxxxxxxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Chess Internett"
-      mcc="242"
-      mnc="02"
-      apn="netcom"
-      type="default,supl"
-      mvno_match_data="2420256xxxxxxxx"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Tele2 Internet"
-      mcc="242"
-      mnc="04"
-      apn="internet.tele2.no"
-      mmsc="http://mmsc.tele2.no"
-      mmsproxy="193.12.40.14"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="NwN Internet"
-      mcc="242"
-      mnc="05"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="NwN MMS"
-      mcc="242"
-      mnc="05"
-      apn="mms"
-      mmsc="http://mms.nwn.no"
-      mmsproxy="188.149.250.10"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="DNA Internet"
-      mcc="244"
-      mnc="03"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4"
-  />
-
-  <apn carrier="DNA MMS"
-      mcc="244"
-      mnc="03"
-      apn="mms"
-      mmsc="http://mmsc.dna.fi"
-      mmsproxy="10.1.1.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="DNA Internet"
-      mcc="244"
-      mnc="04"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="DNA MMS"
-      mcc="244"
-      mnc="04"
-      apn="mms"
-      user="dna"
-      password="mms"
-      mmsc="http://mmsc.dnafinland.fi/"
-      mmsproxy="10.1.1.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Elisa Internet"
-      mcc="244"
-      mnc="05"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Elisa MMS"
-      mcc="244"
-      mnc="05"
-      apn="mms"
-      mmsc="http://mms.elisa.fi"
-      mmsproxy="213.161.41.57"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Saunalahti Internet"
-      mcc="244"
-      mnc="05"
-      apn="internet.saunalahti"
-      type="default,supl"
-      mvno_match_data="2440541"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Saunalahti MMS"
-      mcc="244"
-      mnc="05"
-      apn="mms.saunalahti.fi"
-      mmsc="http://mms.saunalahti.fi:8002/"
-      mmsproxy="62.142.4.197"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="2440541"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="TDC Internet"
-      mcc="244"
-      mnc="10"
-      apn="internet.song.fi"
-      user="song@internet"
-      password="songnet"
-      type="default,supl"
-  />
-
-  <apn carrier="TDC MMS"
-      mcc="244"
-      mnc="10"
-      apn="mms.song.fi"
-      mmsc="http://mms.song.fi"
-      mmsproxy="213.161.41.58"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="DNA Internet"
-      mcc="244"
-      mnc="12"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4"
-  />
-
-  <apn carrier="DNA MMS"
-      mcc="244"
-      mnc="12"
-      apn="mms"
-      mmsc="http://mmsc.dna.fi"
-      mmsproxy="10.1.1.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="DNA Pro Internet"
-      mcc="244"
-      mnc="12"
-      apn="dnapro.fi"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="DNA Pro MMS"
-      mcc="244"
-      mnc="12"
-      apn="mms.dnapro.fi"
-      mmsc="http://mmsc.dnapro.fi/"
-      mmsproxy="10.1.1.21"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="TDC Internet Finland"
-      mcc="244"
-      mnc="12"
-      apn="inet.tdc.fi"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="TDC MMS Finland"
-      mcc="244"
-      mnc="12"
-      apn="mms.tdc.fi"
-      mmsc="http://mmsc.tdc.fi"
-      mmsproxy="10.1.12.2"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="DNA Internet"
-      mcc="244"
-      mnc="13"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="DNA MMS"
-      mcc="244"
-      mnc="13"
-      apn="mms"
-      user="dna"
-      password="mms"
-      mmsc="http://mmsc.dnafinland.fi/"
-      mmsproxy="10.1.1.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Saunalahti Internet"
-      mcc="244"
-      mnc="21"
-      apn="internet.saunalahti"
-      type="default,supl"
-  />
-
-  <apn carrier="Saunalahti MMS"
-      mcc="244"
-      mnc="21"
-      apn="mms.saunalahti.fi"
-      mmsc="http://mms.saunalahti.fi:8002/"
-      mmsproxy="62.142.4.197"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="SONERA Internet"
-      mcc="244"
-      mnc="91"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="SONERA MMS"
-      mcc="244"
-      mnc="91"
-      apn="wap.sonera.net"
-      mmsc="http://mms.sonera.fi:8002"
-      mmsproxy="195.156.25.33"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Omnitel MMS"
-      mcc="246"
-      mnc="01"
-      apn="gprs.mms.lt"
-      user="mms"
-      password="mms"
-      mmsc="http://mms.omnitel.net:8002/"
-      mmsproxy="194.176.32.149"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Omnitel Internet"
-      mcc="246"
-      mnc="01"
-      apn="omnitel"
-      user="omni"
-      password="omni"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bite Internet"
-      mcc="246"
-      mnc="02"
-      apn="wap"
-      type="default,supl"
-  />
-
-  <apn carrier="Bite MMS"
-      mcc="246"
-      mnc="02"
-      apn="mms"
-      user="mms@mms"
-      password="mms"
-      mmsc="http://mmsc/servlets/mms"
-      mmsproxy="192.168.150.2"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Tele2 Internet LT"
-      mcc="246"
-      mnc="03"
-      apn="internet.tele2.lt"
-      mmsc="http://mmsc.tele2.lt/"
-      mmsproxy="193.12.40.29"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Test 800"
-      mcc="246"
-      mnc="081"
-      apn="VZW800"
-      type="vzw800"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Test 800"
-      mcc="246"
-      mnc="081"
-      apn="VZW800"
-      type="vzw800"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Test FOTA"
-      mcc="246"
-      mnc="081"
-      apn="VZWADMIN"
-      type="fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Test FOTA"
-      mcc="246"
-      mnc="081"
-      apn="VZWADMIN"
-      type="fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Test CBS"
-      mcc="246"
-      mnc="081"
-      apn="VZWAPP"
-      type="cbs,mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Test CBS"
-      mcc="246"
-      mnc="081"
-      apn="VZWAPP"
-      type="cbs,mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Test IMS"
-      mcc="246"
-      mnc="081"
-      apn="IMS"
-      type="ims,ia"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Test IMS"
-      mcc="246"
-      mnc="081"
-      apn="IMS"
-      type="ims,ia"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Test Internet"
-      mcc="246"
-      mnc="081"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      authtype="3"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Test Internet"
-      mcc="246"
-      mnc="081"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test Internet"
-      mcc="246"
-      mnc="081"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test 800"
-      mcc="246"
-      mnc="81"
-      apn="VZW800"
-      type="vzw800"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Test 800"
-      mcc="246"
-      mnc="81"
-      apn="VZW800"
-      type="vzw800"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Test FOTA"
-      mcc="246"
-      mnc="81"
-      apn="VZWADMIN"
-      type="fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      profile_id="3"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test FOTA"
-      mcc="246"
-      mnc="81"
-      apn="VZWADMIN"
-      type="fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      profile_id="3"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test CBS"
-      mcc="246"
-      mnc="81"
-      apn="VZWAPP"
-      type="cbs,mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      profile_id="4"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test CBS"
-      mcc="246"
-      mnc="81"
-      apn="VZWAPP"
-      type="cbs,mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      profile_id="4"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test IMS"
-      mcc="246"
-      mnc="81"
-      apn="IMS"
-      type="ims,ia"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      profile_id="2"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test IMS"
-      mcc="246"
-      mnc="81"
-      apn="IMS"
-      type="ims,ia"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      profile_id="2"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test Internet"
-      mcc="246"
-      mnc="81"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      authtype="3"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Test Internet"
-      mcc="246"
-      mnc="81"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Test Internet"
-      mcc="246"
-      mnc="81"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="LMT Internet"
-      mcc="247"
-      mnc="01"
-      apn="internet.lmt.lv"
-      type="default,supl"
-  />
-
-  <apn carrier="LMT MMS"
-      mcc="247"
-      mnc="01"
-      apn="internet.lmt.lv"
-      mmsc="http://mmsc.lmt.lv/mmsc"
-      type="mms"
-  />
-
-  <apn carrier="Tele2 LV Internet"
-      mcc="247"
-      mnc="02"
-      apn="internet.tele2.lv"
-      type="default,supl"
-  />
-
-  <apn carrier="Tele2 LV MMS"
-      mcc="247"
-      mnc="02"
-      apn="mms.tele2.lv"
-      user="wap"
-      password="wap"
-      mmsc="http://mmsc.tele2.lv/"
-      mmsproxy="193.12.40.38"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bite LV Internet"
-      mcc="247"
-      mnc="05"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Bite LV MMS"
-      mcc="247"
-      mnc="05"
-      apn="mms"
-      user="mms@mms"
-      password="mms"
-      mmsc="http://mmsc/servlets/mms"
-      mmsproxy="192.168.150.2"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bite LV WAP"
-      mcc="247"
-      mnc="05"
-      apn="wap"
-      proxy="213.226.131.133"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="EMT Internet"
-      mcc="248"
-      mnc="01"
-      apn="internet.emt.ee"
-      type="default,supl"
-  />
-
-  <apn carrier="EMT MMS"
-      mcc="248"
-      mnc="01"
-      apn="mms.emt.ee"
-      mmsc="http://mms.emt.ee/servlets/mms"
-      mmsproxy="217.71.32.82"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="EMT WAP"
-      mcc="248"
-      mnc="01"
-      apn="wap.emt.ee"
-      proxy="217.71.32.236"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Send"
-      mcc="248"
-      mnc="01"
-      apn="send.ee"
-      mmsc="http://mms.emt.ee/servlets/mms"
-      mmsproxy="217.71.32.82"
-      mmsport="8080"
-      type="default,supl,mms"
-      mvno_match_data="248010x2"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Send"
-      mcc="248"
-      mnc="01"
-      apn="send.ee"
-      mmsc="http://mms.emt.ee/servlets/mms"
-      mmsproxy="217.71.32.82"
-      mmsport="8080"
-      type="default,supl,mms"
-      mvno_match_data="248010x3"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Elisa Internet"
-      mcc="248"
-      mnc="02"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Elisa MMS"
-      mcc="248"
-      mnc="02"
-      apn="mms"
-      mmsc="http://194.204.2.10"
-      mmsproxy="194.204.2.6"
-      mmsport="8000"
-      type="mms"
-  />
-
-  <apn carrier="Elisa WAP"
-      mcc="248"
-      mnc="02"
-      apn="wap"
-      proxy="194.204.2.6"
-      port="8000"
-      type="default,supl"
-  />
-
-  <apn carrier="Tele2 Internet"
-      mcc="248"
-      mnc="03"
-      apn="internet.tele2.ee"
-      type="default,supl"
-  />
-
-  <apn carrier="Tele2 MMS"
-      mcc="248"
-      mnc="03"
-      apn="mms.tele2.ee"
-      mmsc="http://mmsc.tele2.ee"
-      mmsproxy="193.12.40.6"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Smart/Ultra MMS"
-      mcc="248"
-      mnc="03"
-      apn="internet.tele2.ee"
-      mmsc="http://mmsc.tele2.ee"
-      mmsproxy="193.12.40.6"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Tele2 Internet"
-      mcc="248"
-      mnc="03"
-      apn="internet.tele2.ee"
-      type="default,supl"
-      mvno_match_data="Tele2"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Smart/Ultra MMS"
-      mcc="248"
-      mnc="03"
-      apn="internet.tele2.ee"
-      mmsc="http://mmsc.tele2.ee"
-      mmsproxy="193.12.40.6"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="Tele2"
-      mvno_type="spn"
-  />
-
-  <apn carrier="MTS Internet"
-      mcc="250"
-      mnc="01"
-      apn="internet.mts.ru"
-      user="mts"
-      password="mts"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MTS MMS"
-      mcc="250"
-      mnc="01"
-      apn="mms.mts.ru"
-      user="mts"
-      password="mts"
-      mmsc="http://mmsc"
-      mmsproxy="192.168.192.192"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Megafon Internet"
-      mcc="250"
-      mnc="02"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Megafon MMS"
-      mcc="250"
-      mnc="02"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://mmsc:8002"
-      mmsproxy="10.10.10.10"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="YOTA Internet"
-      mcc="250"
-      mnc="11"
-      apn="yota.ru"
-      type="default,supl"
-  />
-
-  <apn carrier="TELE2 Internet"
-      mcc="250"
-      mnc="20"
-      apn="internet.tele2.ru"
-      type="default,supl"
-  />
-
-  <apn carrier="TELE2 MMS"
-      mcc="250"
-      mnc="20"
-      apn="mms.tele2.ru"
-      mmsc="http://mmsc.tele2.ru"
-      mmsproxy="193.12.40.65"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Beeline Internet"
-      mcc="250"
-      mnc="99"
-      apn="internet.beeline.ru"
-      user="beeline"
-      password="beeline"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Beeline MMS"
-      mcc="250"
-      mnc="99"
-      apn="mms.beeline.ru"
-      user="beeline"
-      password="beeline"
-      mmsc="http://mms/"
-      mmsproxy="192.168.94.23"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="MTS MMS"
-      mcc="255"
-      mnc="01"
-      apn="mms"
-      mmsc="http://mmsc:8002/"
-      mmsproxy="192.168.10.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="MTS-internet"
-      mcc="255"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Beeline-internet"
-      mcc="255"
-      mnc="02"
-      apn="internet.beeline.ua"
-      type="default,supl"
-  />
-
-  <apn carrier="Beeline MMS"
-      mcc="255"
-      mnc="02"
-      apn="mms.beeline.ua"
-      mmsc="http://mms/"
-      mmsproxy="172.29.18.192"
-      mmsport="8080"
-      type="mms"
-  />
-
-
-  <apn carrier="Kyivstar MMS"
-      mcc="255"
-      mnc="03"
-      apn="mms.kyivstar.net"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mms.kyivstar.net"
-      mmsproxy="10.10.10.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Kyivstar Internet"
-      mcc="255"
-      mnc="03"
-      apn="www.kyivstar.net"
-      user="igprs"
-      password="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Djuice MMS"
-      mcc="255"
-      mnc="03"
-      apn="mms.djuice.com.ua"
-      user="djuice"
-      password="mms"
-      authtype="1"
-      mmsc="http://mms.kyivstar.net"
-      mmsproxy="10.10.10.10"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="DJUICE"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Djuice Internet"
-      mcc="255"
-      mnc="03"
-      apn="www.djuice.com.ua"
-      type="default,supl"
-      mvno_match_data="DJUICE"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Life:) internet"
-      mcc="255"
-      mnc="06"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Life:) MMS"
-      mcc="255"
-      mnc="06"
-      apn="mms"
-      mmsc="http://mms.life.com.ua/cmmsc/post"
-      mmsproxy="212.58.162.230"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Utel Internet"
-      mcc="255"
-      mnc="07"
-      apn="3g.utel.ua"
-      type="default,supl"
-  />
-
-  <apn carrier="Utel MMS"
-      mcc="255"
-      mnc="07"
-      apn="3g.utel.ua"
-      mmsc="http://10.212.1.4/mms/wapenc"
-      mmsproxy="10.212.3.148"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Velcom Internet"
-      mcc="257"
-      mnc="01"
-      apn="web.velcom.by"
-      authtype="1"
-      proxy="10.200.15.15"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Velcom MMS"
-      mcc="257"
-      mnc="01"
-      apn="mms.velcom.by"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mmsc"
-      mmsproxy="10.200.15.15"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="MTS Internet"
-      mcc="257"
-      mnc="02"
-      apn="mts"
-      user="mts"
-      password="mts"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MTS MMS"
-      mcc="257"
-      mnc="02"
-      apn="mts"
-      user="mts"
-      password="mts"
-      authtype="1"
-      mmsc="http://mmsc"
-      mmsproxy="192.168.192.192"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="life:) Internet"
-      mcc="257"
-      mnc="04"
-      apn="internet.life.com.by"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="life:) MMS"
-      mcc="257"
-      mnc="04"
-      apn="mms.life.com.by"
-      authtype="1"
-      mmsc="http://mms.life.com.by/mmsc/"
-      mmsproxy="10.10.10.20"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange_Internet_GPRS"
-      mcc="259"
-      mnc="01"
-      apn="wap.orange.md"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange_MMS_GPRS"
-      mcc="259"
-      mnc="01"
-      apn="mms.orange.md"
-      mmsc="http://mms/mms"
-      mmsproxy="192.168.127.125"
-      mmsport="3128"
-      type="mms"
-  />
-
-  <apn carrier="Moldcell Internet"
-      mcc="259"
-      mnc="02"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Moldcell MMS"
-      mcc="259"
-      mnc="02"
-      apn="mms"
-      mmsc="http://mms.moldcell.md/cmmsc/post"
-      mmsproxy="10.0.10.10"
-      mmsport="9401"
-      type="mms"
-  />
-
-  <apn carrier="Unite Internet PrePay"
-      mcc="259"
-      mnc="05"
-      apn="internet3g.unite.md"
-      type="default,supl"
-  />
-
-  <apn carrier="Unite Internet PostPay"
-      mcc="259"
-      mnc="05"
-      apn="internet.unite.md"
-      type="default,supl"
-  />
-
-  <apn carrier="Unite MMS"
-      mcc="259"
-      mnc="05"
-      apn="mms.unite.md"
-      mmsc="http://10.32.15.68:38090/was"
-      mmsproxy="10.32.15.164"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange MMS"
-      apn="mms.orange.md"
-      mmsc="http://mms/mms"
-      mmsproxy="192.168.127.125"
-      mmsport="3128"
-      mcc="259"
-      mnc="01"
-      type="mms"
-  />
-
-  <apn carrier="Plus Internet"
-      mcc="260"
-      mnc="01"
-      apn="plus"
-      type="default,supl"
-  />
-
-  <apn carrier="Plus MMS"
-      mcc="260"
-      mnc="01"
-      apn="mms"
-      mmsc="http://mms.plusgsm.pl:8002"
-      mmsproxy="212.2.96.16"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="T-mobile.pl"
-      mcc="260"
-      mnc="02"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="T-mobile.pl"
-      mcc="260"
-      mnc="02"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="T-mobile.pl"
-      mcc="260"
-      mnc="02"
-      apn="mms"
-      mmsc="http://mms/servlets/mms"
-      mmsproxy="213.158.194.226"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="heyahinternet"
-      mcc="260"
-      mnc="02"
-      apn="heyah.pl"
-      type="default,supl"
-  />
-
-  <apn carrier="heyahmms"
-      mcc="260"
-      mnc="02"
-      apn="heyahmms"
-      mmsc="http://mms.heyah.pl/servlets/mms"
-      mmsproxy="213.158.194.226"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange Internet"
-      mcc="260"
-      mnc="03"
-      apn="Internet"
-      user="internet"
-      password="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange MMS"
-      mcc="260"
-      mnc="03"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://mms.orange.pl"
-      mmsproxy="192.168.6.104"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Play Internet"
-      mcc="260"
-      mnc="06"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Play MMS"
-      mcc="260"
-      mnc="06"
-      apn="mms"
-      mmsc="http://mmsc.play.pl/mms/wapenc"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Truphone"
-      mcc="260"
-      mnc="33"
-      apn="truphone.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Rebtel"
-      mcc="260"
-      mnc="44"
-      apn="rebtel"
-      mmsc="http://mmsc.rebtel.com"
-      mmsproxy="185.114.248.80"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Telekom IMS"
-      mcc="262"
-      mnc="01"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Telekom Internet"
-      mcc="262"
-      mnc="01"
-      apn="internet.telekom"
-      user="telekom"
-      password="telekom"
-      mmsc="http://mms.t-mobile.de/servlets/mms"
-      mmsproxy="109.237.176.193"
-      mmsport="8008"
-      bearer_bitmask="1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17"
-      authtype="1"
-      type="mms,default,supl,ia"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Telekom Internet"
-      mcc="262"
-      mnc="01"
-      apn="hos"
-      user="telekom"
-      password="telekom"
-      mmsc="http://mms.t-mobile.de/servlets/mms"
-      mmsproxy="109.237.176.193"
-      mmsport="8008"
-      bearer_bitmask="18"
-      authtype="1"
-      type="mms,supl"
-      protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Telekom Internet"
-      mcc="262"
-      mnc="01"
-      apn="internet.telekom"
-      user="telekom"
-      password="telekom"
-      authtype="1"
-      mmsproxy="172.28.23.131"
-      mmsc="http://mms.t-mobile.de/servlets/mms"
-      mmsport="8008"
-      mvno_match_data="debitel"
-      mvno_type="spn"
-      protocol="IP"
-  />
-
-  <apn carrier="Vodafone DE"
-      mcc="262"
-      mnc="02"
-      apn=""
-      type="ia"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone DE-MMS"
-      mcc="262"
-      mnc="02"
-      apn="event.vodafone.de"
-      mmsc="http://139.7.24.1/servlets/mms"
-      mmsproxy="139.7.29.17"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Vodafone DE"
-      mcc="262"
-      mnc="02"
-      apn="web.vodafone.de"
-      type="default,supl"
-  />
-
-  <apn carrier="E-Plus Internet"
-      mcc="262"
-      mnc="03"
-      apn="internet.eplus.de"
-      user="eplus"
-      password="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="E-Plus MMS"
-      mcc="262"
-      mnc="03"
-      apn="mms.eplus.de"
-      user="mms"
-      password="eplus"
-      mmsc="http://mms/eplus/"
-      mmsproxy="212.23.97.153"
-      mmsport="5080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="O2 Internet"
-      mcc="262"
-      mnc="07"
-      apn="internet"
-      mmsc="http://10.81.0.7:8002"
-      mmsproxy="82.113.100.5"
-      mmsport="8080"
-      authtype="1"
-      type="default,supl,mms"
-      protocol="IP"
-      roaming_protocol="IP"
-  />
-
-
-  <apn carrier="O2 DE IMS"
-      mcc="262"
-      mnc="07"
-      apn="ims"
-      type="ims"
-      protocol="IP"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="o2 Internet Prepaid"
-      mcc="262"
-      mnc="07"
-      apn="pinternet.interkom.de"
-      mmsc="http://10.81.0.7:8002"
-      mmsproxy="82.113.100.6"
-      mmsport="8080"
-      type="default,supl,mms"
-      mvno_match_data="2620749"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Alice"
-      mcc="262"
-      mnc="07"
-      apn="internet.partner1"
-      authtype="0"
-      mmsc="http://10.81.0.7:8002"
-      mmsproxy="82.113.100.41"
-      mmsport="8080"
-      mvno_type="spn"
-      mvno_match_data="Alice"
-  />
-
-  <apn carrier="Fonic Prepaid"
-      mcc="262"
-      mnc="07"
-      apn="pinternet.interkom.de"
-      mmsc="http://10.81.0.7:8002"
-      mmsproxy="82.113.100.6"
-      mmsport="8080"
-      type="default,supl,mms"
-      mvno_match_data="26207515"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Lidl Mobile"
-      mcc="262"
-      mnc="07"
-      apn="pinternet.interkom.de"
-      mmsc="http://10.81.0.7:8002"
-      mmsproxy="82.113.100.6"
-      mmsport="8080"
-      type="default,supl,mms"
-      mvno_match_data="26207520"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Tchibo Internet"
-      mcc="262"
-      mnc="07"
-      apn="webmobil1"
-      mmsc="http://10.81.0.7:8002"
-      mmsproxy="82.113.100.8"
-      mmsport="8080"
-      type="default,supl,mms"
-      mvno_match_data="26207500"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="O2 DE IMS"
-      mcc="262"
-      mnc="08"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      mvno_match_data="2620739"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Truphone"
-      mcc="262"
-      mnc="42"
-      apn="truphone.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodafone Net2"
-      mcc="268"
-      mnc="01"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="Vodafone Net2"
-      mcc="268"
-      mnc="01"
-      apn="net2.vodafone.pt"
-      user="vodafone"
-      password="vodafone"
-      authtype="1"
-      mmsc="http://mms.vodafone.pt/servlets/mms"
-      mmsproxy="iproxy.vodafone.pt"
-      mmsport="80"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="vodafone P dun"
-      mcc="268"
-      mnc="01"
-      apn="internet.vodafone.pt"
-      authtype="0"
-      type="dun"
-  />
-
-  <apn carrier="PortalOptimus"
-      mcc="268"
-      mnc="03"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="PortalOptimus"
-      mcc="268"
-      mnc="03"
-      apn="umts"
-      mmsc="http://mmsc:10021/mmsc"
-      mmsproxy="62.169.66.5"
-      mmsport="8799"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="tmn internet"
-      mcc="268"
-      mnc="06"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="tmn internet"
-      mcc="268"
-      mnc="06"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="mms tmn"
-      mcc="268"
-      mnc="06"
-      apn="mmsc.tmn.pt"
-      user="tmn"
-      password="tmnnet"
-      authtype="1"
-      mmsc="http://mmsc/"
-      mmsproxy="10.111.2.16"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="POST Internet"
-      mcc="270"
-      mnc="01"
-      apn="web.pt.lu"
-      type="default,supl"
-  />
-
-  <apn carrier="Tango WAP"
-      mcc="270"
-      mnc="77"
-      apn="internet"
-      user="tango"
-      password="tango"
-      proxy="130.244.196.90"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Tango MMS"
-      mcc="270"
-      mnc="77"
-      apn="mms"
-      user="tango"
-      password="tango"
-      mmsc="http://mms.tango.lu"
-      mmsproxy="212.66.75.3"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange"
-      mcc="270"
-      mnc="99"
-      apn="orange.lu"
-      mmsc="http://mms.orange.lu"
-      mmsproxy="212.88.139.44"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Vodafone IE"
-      mcc="272"
-      mnc="01"
-      apn="live.vodafone.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodafone IE-MMS"
-      mcc="272"
-      mnc="01"
-      apn="mms.vodafone.net"
-      mmsc="http://www.vodafone.ie/mms"
-      mmsproxy="10.24.59.200"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Vodafone MISP"
-      mcc="272"
-      mnc="01"
-      apn="hs.vodafone.ie"
-      authtype="0"
-      user="vodafone"
-      password="vodafone"
-      type="dun"
-  />
-
-  <apn carrier="O2 Ireland"
-      mcc="272"
-      mnc="02"
-      apn="internet"
-      proxy="62.40.32.40"
-      port="8080"
-      mmsc="http://mmsc.mms.o2.ie:8002"
-      mmsproxy="62.40.32.40"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="O2.ie Mobile Hotspot"
-      mcc="272"
-      mnc="02"
-      apn="Open.internet"
-      authtype="0"
-      type="dun"
-  />
-
-  <apn carrier="Meteor Data"
-      mcc="272"
-      mnc="03"
-      apn="data.mymeteor.ie"
-      user="my"
-      password="wap"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Meteor MMS"
-      mcc="272"
-      mnc="03"
-      apn="mms.mymeteor.ie"
-      user="my"
-      password="wap"
-      authtype="1"
-      mmsc="http://mms.mymeteor.ie"
-      mmsproxy="10.85.85.85"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <apn carrier="3"
-      mcc="272"
-      mnc="05"
-      apn="3ireland.ie"
-      mmsc="http://mms.um.3ireland.ie:10021/mmsc"
-      mmsproxy="mms.3ireland.ie"
-      mmsport="8799"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Tesco"
-      mcc="272"
-      mnc="11"
-      apn="tescomobile.liffeytelecom.com"
-      mmsc="http://mmc1/servlets/mms"
-      mmsproxy="10.1.11.19"
-      mmsport="8080"
-      type="default,supl,mms"
-      mvno_match_data="0A"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Siminn Internet"
-      mcc="274"
-      mnc="01"
-      apn="internet"
-      proxy="213.167.138.200"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Siminn MMS"
-      mcc="274"
-      mnc="01"
-      apn="mms.simi.is"
-      mmsc="http://mms.simi.is/servlets/mms"
-      mmsproxy="213.167.138.200"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Vodafone Internet"
-      mcc="274"
-      mnc="02"
-      apn="gprs.is"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodafone MMS"
-      mcc="274"
-      mnc="02"
-      apn="mms.gprs.is"
-      mmsc="http://mmsc.vodafone.is"
-      mmsproxy="10.22.0.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Vodafone Internet"
-      mcc="274"
-      mnc="03"
-      apn="gprs.is"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-  />
-
-  <apn carrier="Vodafone MMS"
-      mcc="274"
-      mnc="03"
-      apn="mms.gprs.is"
-      authtype="0"
-      mmsc="http://mmsc.vodafone.is"
-      mmsproxy="10.22.0.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="MMS Nova"
-      mcc="274"
-      mnc="11"
-      apn="mms.nova.is"
-      mmsc="http://mmsc.nova.is"
-      mmsproxy="10.10.2.60"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Net Nova"
-      mcc="274"
-      mnc="11"
-      apn="net.nova.is"
-      proxy="10.10.2.60"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodafone MT"
-      mcc="278"
-      mnc="01"
-      apn="internet"
-      user="internet"
-      password="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodafone MT-MMS"
-      mcc="278"
-      mnc="01"
-      apn="mms.vodafone.com.mt"
-      mmsc="http://mms.vodafone.com.mt/servlets/mms"
-      mmsproxy="10.12.0.3"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Cyta"
-      mcc="280"
-      mnc="01"
-      apn="cytamobile"
-      mmsc="http://mmsc.cyta.com.cy"
-      mmsproxy="212.31.96.161"
-      mmsport="8080"
-      type="default,supl,mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="MTN MMS"
-      mcc="280"
-      mnc="10"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://mms.mtn.com.cy/mmsc"
-      mmsproxy="172.24.97.1"
-      mmsport="3130"
-      type="mms"
-  />
-
-  <apn carrier="MTN Wap"
-      mcc="280"
-      mnc="10"
-      apn="wap"
-      user="wap"
-      password="wap"
-      proxy="172.24.97.3"
-      port="3130"
-      type="default,supl"
-  />
-
-  <apn carrier="Mtel Internet"
-      mcc="284"
-      mnc="01"
-      apn="wap-gprs.mtel.bg"
-      type="default,supl"
-  />
-
-  <apn carrier="MTel MMS"
-      mcc="284"
-      mnc="01"
-      apn="mms-gprs.mtel.bg"
-      user="mtel"
-      password="mtel"
-      mmsc="http://mmsc/"
-      mmsproxy="10.150.0.33"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="VIVACOM Internet"
-      mcc="284"
-      mnc="03"
-      apn="internet.vivacom.bg"
-      user="vivacom"
-      password="vivacom"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Vivacom MMS"
-      mcc="284"
-      mnc="03"
-      apn="mms.vivacom.bg"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mmsc.vivacom.bg"
-      mmsproxy="192.168.123.123"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Telenor Internet"
-      mcc="284"
-      mnc="05"
-      apn="telenorbg"
-      authtype="0"
-      type="default,supl"
-  />
-
-  <apn carrier="Telenor MMS"
-      mcc="284"
-      mnc="05"
-      apn="mms"
-      user="mms"
-      authtype="1"
-      mmsc="http://mmsc"
-      mmsproxy="192.168.87.11"
-      mmsport="8004"
-      type="mms"
-  />
-
-  <apn carrier="bulsatcom"
-      mcc="284"
-      mnc="11"
-      apn="bulsat.com"
-      type="default,supl"
-  />
-
-  <apn carrier="MAX TELECOM"
-      mcc="284"
-      mnc="13"
-      apn="apn.maxtelecom.bg"
-      type="default,supl"
-  />
-
-  <apn carrier="TURKCELL INTERNET"
-      mcc="286"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="TURKCELL MMS"
-      mcc="286"
-      mnc="01"
-      apn="mms"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mms.turkcell.com.tr/servlets/mms"
-      mmsproxy="212.252.169.217"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Vodafone internet"
-      mcc="286"
-      mnc="02"
-      apn="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodafone MMS"
-      mcc="286"
-      mnc="02"
-      apn="mms"
-      user="vodafone"
-      password="vodafone"
-      authtype="1"
-      mmsc="http://217.31.233.18:6001/MM1Servlet"
-      mmsproxy="217.31.233.18"
-      mmsport="9401"
-      type="mms"
-  />
-
-  <apn carrier="AVEA INTERNET"
-      mcc="286"
-      mnc="03"
-      apn="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="AVEA MMS"
-      mcc="286"
-      mnc="03"
-      apn="mms"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mms.avea.com.tr/servlets/mms"
-      mmsproxy="213.161.151.201"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Tele Internet"
-      mcc="290"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Tele MMS"
-      mcc="290"
-      mnc="01"
-      apn="mms"
-      mmsc="http://mms.tele.gl/mms/wapenc"
-      mmsproxy="10.112.222.37"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Si.mobil GPRS"
-      mcc="293"
-      mnc="40"
-      apn="internet.simobil.si"
-      user="simobil"
-      password="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Si.mobil MMS"
-      mcc="293"
-      mnc="40"
-      apn="mms.simobil.si"
-      user="simobil"
-      password="internet"
-      authtype="1"
-      mmsc="http://mmc/"
-      mmsproxy="80.95.224.46"
-      mmsport="9201"
-      type="mms"
-  />
-
- <apn carrier="Mobilni Internet"
-      mcc="293"
-      mnc="41"
-      apn="internet"
-      user="mobitel"
-      password="internet"
-      mmsc="http://mms.mobitel.si/servlets/mms"
-      mmsproxy="213.229.249.40"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="T2"
-      mcc="293"
-      mnc="64"
-      apn="internet.t-2.net"
-      mmsc="http://www.mms.t-2.net:8002"
-      mmsproxy="172.20.18.137"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="293"
-      mnc="70"
-      apn="internet"
-      mmsc="http://mms.telemach.net:8002"
-      mmsproxy="91.185.221.85"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Telemach Internet"
-      mcc="293"
-      mnc="70"
-      apn="telemach.net"
-      user="telemach"
-      password="internet"
-      mmsc="http://mms.telemach.net:8002"
-      mmsproxy="91.185.221.85"
-      mmsport="8080"
-      mvno_type="imsi"
-      mvno_match_data="29370029xxxxxxx"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="T-Mobile MK Internet"
-      mcc="294"
-      mnc="01"
-      apn=""
-      type="ia"
-  />
-
-  <apn carrier="T-Mobile MK Internet"
-      mcc="294"
-      mnc="01"
-      apn="internet"
-      user="internet"
-      password="t-mobile"
-      type="default,supl"
-  />
-
-  <apn carrier="T-Mobile MK MMS"
-      mcc="294"
-      mnc="01"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://mms.t-mobile.com.mk"
-      mmsproxy="62.162.155.227"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Cosmofon"
-      mcc="294"
-      mnc="02"
-      apn="Internet"
-      user="Internet"
-      password="Internet"
-      proxy="http://wap.planet.mk"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Cosmofon MMS"
-      mcc="294"
-      mnc="02"
-      apn="mms"
-      mmsc="http://195.167.65.220:8002"
-      mmsproxy="10.10.10.20"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="294"
-      mnc="03"
-      apn="vipoperator"
-      user="vipoperator"
-      password="vipoperator"
-      proxy="78.40.0.1"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="294"
-      mnc="03"
-      apn="vipoperator.mms"
-      user="vipoperator"
-      password="vipoperator"
-      mmsc="http://mmsc.vipoperator.com.mk"
-      mmsproxy="78.40.0.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Telenor MNE mms"
-      mcc="297"
-      mnc="01"
-      apn="mms"
-      authtype="0"
-      mmsc="http://mm.vor.telenor.me"
-      mmsproxy="192.168.246.005"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Telenor MNE internet"
-      mcc="297"
-      mnc="01"
-      apn="internet"
-      authtype="0"
-      proxy="192.168.246.005"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="T-Mobile MMS"
-      mcc="297"
-      mnc="02"
-      apn="mms"
-      user="38267"
-      password="38267"
-      mmsc="http://192.168.180.100/servlets/mms"
-      mmsproxy="10.0.5.19"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="T-Mobile Internet"
-      mcc="297"
-      mnc="02"
-      apn="tmcg-wnw"
-      user="38267"
-      password="38267"
-      proxy="10.0.5.19"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="TELUS SP"
-      mcc="302"
-      mnc="220"
-      apn="sp.telus.com"
-      type="default,mms,supl,hipri,ia"
-      mmsc="http://aliasredirect.net/proxy/mmsc"
-      mmsproxy="mmscproxy.mobility.ca"
-      mmsport="8799"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="5455"
-      mvno_type="gid"
-  />
-
-  <apn carrier="TELUS ISP"
-      mcc="302"
-      mnc="220"
-      apn="isp.telus.com"
-      server="*"
-      type="dun"
-      protocol="IP"
-      mvno_match_data="5455"
-      mvno_type="gid"
-  />
-
-  <apn carrier="TELUS IMS"
-      mcc="302"
-      mnc="220"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      mvno_match_data="5455"
-      mvno_type="gid"
-      user_visible="false"
-  />
-
-  <apn carrier="Koodo SP"
-      mcc="302"
-      mnc="220"
-      apn="sp.koodo.com"
-      type="*"
-      mmsc="http://aliasredirect.net/proxy/koodo/mmsc"
-      mmsproxy="74.49.0.18"
-      mmsport="80"
-      protocol="IP"
-      roaming_protocol="IP"
-      mvno_match_data="4B4F"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Koodo IMS"
-      mcc="302"
-      mnc="220"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      mvno_match_data="4B4F"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Mobile Internet"
-      mcc="302"
-      mnc="220"
-      apn="sp.mb.com"
-      type="default,mms,supl"
-      mmsc="http://aliasredirect.net/proxy/mb/mmsc"
-      mmsproxy="74.49.0.18"
-      mmsport="80"
-      mvno_match_data="5043"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Mobile Internet"
-       mcc="302"
-       mnc="220"
-       apn="sp.mb.com"
-       type="default,mms,agps,supl,fota,hipri"
-       mmsc="http://aliasredirect.net/proxy/mb/mmsc"
-       mmsproxy="74.49.0.18"
-       mmsport="80"
-       mvno_type="gid"
-       mvno_match_data="4D4F"
-  />
-
-  <apn carrier="TELUS SP"
-      mcc="302"
-      mnc="221"
-      apn="sp.telus.com"
-      type="default,mms,supl,hipri,ia"
-      mmsc="http://aliasredirect.net/proxy/mmsc"
-      mmsproxy="mmscproxy.mobility.ca"
-      mmsport="8799"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="5455"
-      mvno_type="gid"
-  />
-
-  <apn carrier="TELUS ISP"
-      mcc="302"
-      mnc="221"
-      apn="isp.telus.com"
-      server="*"
-      type="dun"
-      protocol="IP"
-      mvno_match_data="5455"
-      mvno_type="gid"
-  />
-
-  <apn carrier="TELUS IMS"
-      mcc="302"
-      mnc="221"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      mvno_match_data="5455"
-      mvno_type="gid"
-      user_visible="false"
-  />
-
-  <apn carrier="Koodo SP"
-      mcc="302"
-      mnc="221"
-      apn="sp.koodo.com"
-      type="*"
-      mmsc="http://aliasredirect.net/proxy/koodo/mmsc"
-      mmsproxy="74.49.0.18"
-      mmsport="80"
-      protocol="IP"
-      roaming_protocol="IP"
-      mvno_match_data="4B4F"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Koodo IMS"
-      mcc="302"
-      mnc="221"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      mvno_match_data="4B4F"
-      mvno_type="gid"
-  />
-
-  <apn carrier="PC mobile"
-      mcc="302"
-      mnc="221"
-      apn="sp.mb.com"
-      type="default,mms,supl"
-      mmsc="http://aliasredirect.net/proxy/mb/mmsc"
-      mmsproxy="74.49.0.18"
-      mmsport="80"
-      mvno_match_data="5043"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Eastlink MMS"
-      mcc="302"
-      mnc="270"
-      apn="mms.mobi.eastlink.ca"
-      mmsc="http://mmss.mobi.eastlink.ca"
-      mmsproxy="10.232.12.49"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Eastlink Internet"
-      mcc="302"
-      mnc="270"
-      apn="wisp.mobi.eastlink.ca"
-      type="default,supl,dun,hipri"
-  />
-
-  <apn carrier="MOWAP"
-      mcc="302"
-      mnc="320"
-      apn="wap.davewireless.com"
-      proxy="10.100.3.4"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="MOMMS"
-      mcc="302"
-      mnc="320"
-      apn="mms.davewireless.com"
-      mmsc="http://mms.mobilicity.net"
-      mmsproxy="10.100.3.4"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Fido Internet"
-      mcc="302"
-      mnc="370"
-      apn="ltemobile.apn"
-      type="default,mms,agps,supl,fota,hipri,ia"
-      mmsproxy="mmsproxy.fido.ca"
-      mmsc="http://mms.fido.ca"
-      mmsport="80"
-      bearer_bitmask="1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17"
-      mvno_match_data="DD"
-      mvno_type="gid"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Fido Netsvcs"
-      mcc="302"
-      mnc="370"
-      apn="netsvcs"
-      type="mms"
-      mmsproxy="mmsproxy.fido.ca"
-      mmsc="http://mms.fido.ca"
-      mmsport="80"
-      bearer_bitmask="18"
-      mvno_match_data="DD"
-      mvno_type="gid"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      user_visible="false"
-  />
-
-  <apn carrier="Fido IMS"
-      mcc="302"
-      mnc="370"
-      apn="ims"
-      type="ims"
-      mvno_match_data="DD"
-      mvno_type="gid"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Fido Tethering"
-      mcc="302"
-      mnc="370"
-      apn="ltedata.apn"
-      type="dun"
-      mvno_match_data="DD"
-      mvno_type="gid"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="MTS"
-      mcc="302"
-      mnc="370"
-      apn="sp.mts"
-      type="default,mms,supl"
-      mmsc="http://mmsc2.mts.net/"
-      mmsproxy="wapgw1.mts.net"
-      mmsport="9201"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      mvno_match_data="2C"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Internet"
-      mcc="302"
-      mnc="490"
-      apn="internet.freedommobile.ca"
-      type="default,dun,supl"
-      protocol="IPV4V6"
-      user_editable="false"
-  />
-
-  <apn carrier="MMS"
-      mcc="302"
-      mnc="490"
-      apn="mms.freedommobile.ca"
-      mmsc="http://mms.windmobile.ca"
-      mmsproxy="74.115.197.70"
-      mmsport="8080"
-      type="mms"
-      user_editable="false"
-  />
-
-  <apn carrier="VoLTE"
-      mcc="302"
-      mnc="490"
-      apn="volte.mobilefrdm.ca"
-      type="ims"
-      protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="E911"
-      mcc="302"
-      mnc="490"
-      apn="e911.mobilefrdm.ca"
-      type="emergency"
-      protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Videotron"
-      mcc="302"
-      mnc="500"
-      apn="media.ng"
-      mmsc="http://media.videotron.com"
-      mmsproxy="10.208.89.17"
-      mmsport="8080"
-      type="default,supl,mms"
-      user_editable="false"
-  />
-
-  <apn carrier="LTE IMS"
-      mcc="302"
-      mnc="500"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      user_visible="false"
-  />
-
-  <apn carrier="Emergency"
-      mcc="302"
-      mnc="500"
-      apn="sos"
-      type="emergency"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      user_visible="false"
-  />
-
-  <apn carrier="Videotron Mobile"
-      mcc="302"
-      mnc="510"
-      apn="media.ng"
-      mmsc="http://media.videotron.com"
-      mmsproxy="10.208.89.17"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Videotron Mobile"
-      mcc="302"
-      mnc="520"
-      apn="media.ng"
-      mmsc="http://media.videotron.com"
-      mmsproxy="10.208.89.17"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Bell Mobility"
-      mcc="302"
-      mnc="610"
-      apn="pda.bell.ca"
-      type="default,mms,supl,dun,hipri,ia"
-      mmsc="http://mms.bell.ca/mms/wapenc"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Bell Mobility IMS"
-      mcc="302"
-      mnc="610"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Virgin Mobile"
-      mcc="302"
-      mnc="610"
-      apn="pda.bell.ca"
-      type="default,mms,supl"
-      mmsc="http://mms.bell.ca/mms/wapenc"
-      authtype="2"
-      mvno_type="gid"
-      mvno_match_data="62"
-  />
-
-  <apn carrier="Virgin Mobile IMS"
-      mcc="302"
-      mnc="610"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      authtype="2"
-      mvno_type="gid"
-      mvno_match_data="62"
-  />
-
-  <apn carrier="Bell Mobility Test IMS"
-      mcc="302"
-      mnc="630"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Bell Mobility Test IMS"
-      mcc="302"
-      mnc="640"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="MTS"
-      mcc="302"
-      mnc="660"
-      apn="sp.mts"
-      type="default,mms,supl"
-      mmsc="http://mmsc2.mts.net/"
-      mmsproxy="wapgw1.mts.net"
-      mmsport="9401"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="chatr"
-      mcc="302"
-      mnc="720"
-      apn="chatrweb.apn"
-      type="default,mms,supl"
-      mmsc="http://mms.chatrwireless.com"
-      mmsproxy="205.151.11.11"
-      mmsport="80"
-      proxy="205.151.11.11"
-      port="80"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      mvno_match_data="302720x94"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Tbaytel Internet"
-      mnc="720"
-      mcc="302"
-      apn="ltemobile.apn"
-      type="default,mms,agps,supl,fota,hipri"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      mmsc="http://mms.gprs.rogers.com"
-      mmsproxy="mmsproxy.rogers.com"
-      mmsport="80"
-      mvno_type="gid"
-      mvno_match_data="BA"
-  />
-
-  <apn carrier="Cityfone Internet"
-      mnc="720"
-      mcc="302"
-      apn="ltemobile.apn"
-      type="default,mms,agps,supl,fota,hipri"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      mmsc="http://mms.gprs.rogers.com"
-      mmsproxy="mmsproxy.rogers.com"
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="CITYFONE"
-  />
-
-  <apn carrier="Rogers IMS"
-      mcc="302"
-      mnc="720"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Rogers Internet"
-      mcc="302"
-      mnc="720"
-      apn="ltemobile.apn"
-      type="default,mms,supl,hipri,ia"
-      mmsproxy="mmsproxy.rogers.com"
-      mmsc="http://mms.gprs.rogers.com"
-      mmsport="80"
-      bearer_bitmask="1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="Rogers Netsvcs"
-      mcc="302"
-      mnc="720"
-      apn="netsvcs"
-      type="mms"
-      mmsproxy="mmsproxy.rogers.com"
-      mmsc="http://mms.gprs.rogers.com"
-      mmsport="80"
-      bearer_bitmask="18"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Rogers Tethering"
-      mcc="302"
-      mnc="720"
-      apn="ltedata.apn"
-      type="dun"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="SaskTel"
-      mcc="302"
-      mnc="780"
-      apn="pda.stm.sk.ca"
-      type="default,mms,supl"
-      mmsc="http://mms.sasktel.com/"
-      mmsproxy="mig.sasktel.com"
-      mmsport="80"
-      protocol="IP"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Verizon CDMA HRPD"
-     mcc="310"
-     mnc="000"
-     mmsc="http://mms.vtext.com/servlets/mms"
-     type="default,mms,hipri,dun,supl"
-     mvno_type="spn"
-     mvno_match_data="Tracfone"
-     authtype="3"
-  />
-
-  <apn carrier="Bluewire"
-      mcc="310"
-      mnc="000"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="bluewire"
-      mmsc="http://mms.blueunlimited.com"
-      mmsproxy=""
-      mmsport="8514"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Bluewire IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="bluewire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Bluewire IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="bluewire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Bluewire FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="bluewire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Bluewire FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="bluewire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Bluewire"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.blueunlimited.com"
-      mmsproxy=""
-      mmsport="8514"
-      mvno_type="spn"
-      mvno_match_data="bluewire"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Bluewire"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.blueunlimited.com"
-      mmsproxy=""
-      mmsport="8514"
-      mvno_type="spn"
-      mvno_match_data="bluewire"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="flatwire"
-      mcc="310"
-      mnc="000"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="flatwire"
-      mmsc="http://mmsc.cleartalk.csky.us/"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Flatwire IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="flatwire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Flatwire IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="flatwire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Flatwire FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="flatwire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Flatwire FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="flatwire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Flatwire"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.cleartalk.csky.us/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="flatwire"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Flatwire"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.cleartalk.csky.us/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="flatwire"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="mobipcs"
-      mcc="310"
-      mnc="000"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="mobipcs"
-      mmsc="http://mms.mobipcs.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Mobipcs IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="mobipcs"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mobipcs IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="mobipcs"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Mobipcs FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="mobipcs"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mobipcs FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="mobipcs"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Mobipcs"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.mobipcs.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="mobipcs"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mobipcs"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.mobipcs.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="mobipcs"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="mobilenation"
-      mcc="310"
-      mnc="000"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="mobilenation"
-      mmsc="http://mms.mymn3g.net"
-      mmsproxy="mms.mymn3g.net"
-      mmsport="8081"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Mobilenation IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="mobilenation"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mobilenation IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="mobilenation"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Mobilenation FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="mobilenation"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mobilenation FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="mobilenation"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Mobilenation"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.mymn3g.net"
-      mmsproxy="mms.mymn3g.net"
-      mmsport="8081"
-      mvno_type="spn"
-      mvno_match_data="mobilenation"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mobilenation"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.mymn3g.net"
-      mmsproxy="mms.mymn3g.net"
-      mmsport="8081"
-      mvno_type="spn"
-      mvno_match_data="mobilenation"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="mohave"
-      mcc="310"
-      mnc="000"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="mohave"
-      mmsc="http://mms.mohavewireless.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Mohave IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="mohave"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mohave IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="mohave"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Mohave FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="mohave"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mohave FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="mohave"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Mohave"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.mohavewireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="mohave"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mohave"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.mohavewireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="mohave"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="peopleswire"
-      mcc="310"
-      mnc="000"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="peopleswire"
-      mmsc="http://172.16.16.130/mms/"
-      mmsproxy=""
-      mmsport="80"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Peopleswire IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="Peopleswire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Peopleswire IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="Peopleswire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="peopleswire FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="peopleswire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="peopleswire FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="peopleswire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Peopleswire"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://172.16.16.130/mms/"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="Peopleswire"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Peopleswire"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://172.16.16.130/mms/"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="Peopleswire"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="revol"
-      mcc="310"
-      mnc="000"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="revol"
-      mmsc="http://mms.revol.us/revol/mms.php"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Revol IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="revol"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Revol IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="revol"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Revol FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="revol"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Revol FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="revol"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Revol"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.revol.us/revol/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="revol"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Revol"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.revol.us/revol/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="revol"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Commnet"
-      mcc="310"
-      mnc="000"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="commnet"
-      mmsc="http://mmsc.cccomm.csky.us"
-      mmsproxy=""
-      mmsport="6672"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="distribution"
-      mcc="310"
-      mnc="000"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="distribution"
-      mmsc="http://mms.dst.com/mms/"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Distribution IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="distribution"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Distribution IMS"
-      mcc="310"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="distribution"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Distribution FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="distribution"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Distribution FOTA"
-      mcc="310"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="distribution"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Distribution"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.dst.com/mms/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="distribution"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Distribution"
-      mcc="310"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.dst.com/mms/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="distribution"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Union Wireless Data"
-      mcc="310"
-      mnc="020"
-      apn="union.wap.com"
-      proxy="166.230.4.83"
-      port="8799"
-      type="default,hipri,dun,supl"
-  />
-
-  <apn carrier="Union Wireless MMS"
-      mcc="310"
-      mnc="020"
-      apn="union.mms.com"
-      mmsc="http://mmsc/01"
-      mmsproxy="166.230.4.83"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <!-- Need two APNs for CDMA technologies: a default that is used normally -->
-  <!-- and a second APN to be used when DUN is required.  Even though the -->
-  <!-- parameters appear the same, the profileID sent to the radio when requesting -->
-  <!-- a DUN connection will be different -->
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="Verizon"
-      mcc="310"
-      mnc="004"
-      apn="internet"
-      authtype="3"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-  />
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="Verizon"
-      mcc="310"
-      mnc="004"
-      apn="internet"
-      authtype="3"
-      type="default,mms,supl,fota,cbs,dun"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      profile_id="1"
-  />
-
-  <!-- bearer 13, 14, 18 -->
-  <apn carrier="Verizon Internet"
-      mcc="310"
-      mnc="004"
-      apn="VZWINTERNET"
-      type="default,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      bearer_bitmask="13|14|18"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <!-- bearer 13, 14, 18 -->
-  <apn carrier="Verizon FOTA"
-      mcc="310"
-      mnc="004"
-      apn="VZWADMIN"
-      type="fota"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      bearer_bitmask="13|14|18"
-      profile_id="3"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <!-- bearer 13, 14, 18 -->
-  <apn carrier="Verizon IMS"
-      mcc="310"
-      mnc="004"
-      apn="IMS"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV6"
-      bearer_bitmask="13|14|18"
-      profile_id="2"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <!-- bearer 13, 14, 18 -->
-  <apn carrier="Verizon CBS"
-      mcc="310"
-      mnc="004"
-      apn="VZWAPP"
-      type="cbs,mms"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      bearer_bitmask="13|14|18"
-      profile_id="4"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <apn carrier=" ALU Test-SIM Internet"
-      mcc="310"
-      mnc="028"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier=" ALU Test-SIM FOTA"
-      mcc="310"
-      mnc="028"
-      apn="VZWADMIN"
-      type="fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier=" ALU Test-SIM IMS"
-      mcc="310"
-      mnc="028"
-      apn="IMS"
-      type="ims,ia"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier=" ALU Test-SIM CBS"
-      mcc="310"
-      mnc="028"
-      apn="VZWAPP"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="cbs,mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="myBlue Pix"
-      mcc="310"
-      mnc="030"
-      apn="mmswap.centennialwireless.com"
-      mmsc="http://mms.myblue.com/servlets/mms"
-      mmsproxy="63.99.231.135"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="310"
-      mnc="030"
-      apn="private.centennialwireless.com"
-      user="privuser"
-      password="priv"
-      type="default,supl"
-  />
-
-  <apn carrier="itewire"
-      mcc="310"
-      mnc="032"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="itewire"
-      mmsc=""
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Itewire IMS"
-      mcc="310"
-      mnc="032"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="itewire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Itewire IMS"
-      mcc="310"
-      mnc="032"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="itewire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Itewire FOTA"
-      mcc="310"
-      mnc="032"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="itewire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Itewire FOTA"
-      mcc="310"
-      mnc="032"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="itewire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Itewire"
-      mcc="310"
-      mnc="032"
-      apn="VZWINTERNET"
-      mmsc=""
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="itewire"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Itewire"
-      mcc="310"
-      mnc="032"
-      apn="VZWINTERNET"
-      mmsc=""
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="itewire"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="etex"
-      mcc="310"
-      mnc="035"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="etex"
-      mmsc="http://mmsi.etex.mobi"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Etex IMS"
-      mcc="310"
-      mnc="035"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="etex"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Etex IMS"
-      mcc="310"
-      mnc="035"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="etex"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Etex FOTA"
-      mcc="310"
-      mnc="035"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="etex"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Etex FOTA"
-      mcc="310"
-      mnc="035"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="etex"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Etex"
-      mcc="310"
-      mnc="035"
-      apn="VZWINTERNET"
-      mmsc="http://mmsi.etex.mobi"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="etex"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Etex"
-      mcc="310"
-      mnc="035"
-      apn="VZWINTERNET"
-      mmsc="http://mmsi.etex.mobi"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="etex"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="mta"
-      mcc="310"
-      mnc="040"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="mta"
-      mmsc="http://mmsc.mta.dataonair.net/"
-      mmsproxy="209.4.229.85"
-      mmsport="6672"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Mta IMS"
-      mcc="310"
-      mnc="040"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="mta"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mta IMS"
-      mcc="310"
-      mnc="040"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="mta"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Mta FOTA"
-      mcc="310"
-      mnc="040"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="mta"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mta FOTA"
-      mcc="310"
-      mnc="040"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="mta"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Mta"
-      mcc="310"
-      mnc="040"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.mta.dataonair.net/"
-      mmsproxy="209.4.229.85"
-      mmsport="6672"
-      mvno_type="spn"
-      mvno_match_data="mta"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Mta"
-      mcc="310"
-      mnc="040"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.mta.dataonair.net/"
-      mmsproxy="209.4.229.85"
-      mmsport="6672"
-      mvno_type="spn"
-      mvno_match_data="mta"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="alaskacomm"
-      mcc="310"
-      mnc="050"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="alaskacomm"
-      mmsc="http://mmsc1.acsalaska.net/servlets/mms"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Alaskacomm IMS"
-      mcc="310"
-      mnc="050"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="alaskacomm"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Alaskacomm IMS"
-      mcc="310"
-      mnc="050"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="alaskacomm"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Alaskacomm FOTA"
-      mcc="310"
-      mnc="050"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="alaskacomm"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Alaskacomm FOTA"
-      mcc="310"
-      mnc="050"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="alaskacomm"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Alaskacomm"
-      mcc="310"
-      mnc="050"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc1.acsalaska.net/servlets/mms"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="alaskacomm"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Alaskacomm"
-      mcc="310"
-      mnc="050"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc1.acsalaska.net/servlets/mms"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="alaskacomm"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="U.S.Cellular"
-      mcc="310"
-      mnc="066"
-      apn="internet"
-      user="*"
-      server="*"
-      password="*"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      mtu="1422"
-  />
-
-  <apn carrier="Corr Wap"
-      mcc="310"
-      mnc="080"
-      apn="corrgprs"
-      server="http://w.iot1.com/corr/wml.php"
-      proxy="74.112.57.172"
-      port="9201"
-      type="default"
-  />
-
-  <apn carrier="CorrMMS"
-      mcc="310"
-      mnc="080"
-      apn="corrmms"
-      mmsc="http://mms.iot1.com/corr/mms.php"
-      mmsproxy="66.255.55.23"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="310"
-      mnc="090"
-      apn="isp"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="MMS"
-      mcc="310"
-      mnc="090"
-      apn="mms"
-      mmsc="http://mms.edgemobile.net/mmsc"
-      mmsproxy="12.108.12.13"
-      mmsport="3128"
-      type="mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="Edge MMS Prepay"
-      mcc="310"
-      mnc="090"
-      apn="ppmms"
-      mmsc="http://mms.edgemobile.net/mmsc"
-      mmsproxy="12.108.12.13"
-      mmsport="3128"
-      type="mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="PLATMMS"
-      mcc="310"
-      mnc="100"
-      apn="mms.plateau"
-      mmsc="http://mms"
-      mmsproxy="172.23.253.206"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="PLATWEB"
-      mcc="310"
-      mnc="100"
-      apn="isp.plateau"
-      type="default,supl"
-  />
-
-  <!-- Need two APNs for CDMA technologies: a default that is used normally -->
-  <!-- and a second APN to be used when DUN is required.  Even though the -->
-  <!-- parameters appear the same, the profileID sent to the radio when requesting -->
-  <!-- a DUN connection will be different -->
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="Sprint"
-      mcc="310"
-      mnc="120"
-      apn="sprint"
-      type="default,supl,mms,ims,cbs"
-      mmsc="http://mms.sprintpcs.com"
-      mmsproxy="68.28.31.7"
-      mmsport="80"
-      bearer_bitmask="4|5|6|7|8|12"
-  />
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="Sprint"
-      mcc="310"
-      mnc="120"
-      apn="sprint"
-      type="default,supl,mms,ims,cbs,dun"
-      mmsc="http://mms.sprintpcs.com"
-      mmsproxy="68.28.31.7"
-      mmsport="80"
-      bearer_bitmask="4|5|6|7|8|12"
-      profile_id="1"
-  />
-
-  <!-- this APN will be deleted and replaced by a new ia APN by the HFA provisioning process.
-       This is just a bootstrap APN to enable HFA -->
-  <apn carrier="OTA"
-      mcc="310"
-      mnc="120"
-      apn="otasn"
-      type="fota,ia"
-      protocol="IPV4V6"
-      user="null"
-      password="null"
-  />
-
-  <!-- bearer 1, 2, 3, 9, 10, 11, 15, 16 -->
-  <apn carrier="SPCS Global"
-      mcc="310"
-      mnc="120"
-      apn="cinet.spcs"
-      mmsc="http://mms.sprintpcs.com"
-      mmsproxy="68.28.31.7"
-      mmsport="80"
-      type="default,supl,mms,dun"
-      bearer_bitmask="1|2|3|9|10|11|15|16"
-  />
-
-  <apn carrier="My Multi Media"
-      mcc="310"
-      mnc="130"
-      apn="mms.c1.ama"
-      user="cell1mms"
-      password="cell1"
-      mmsc="http://mms.iot1.com/amarillo/mms.php"
-      type="mms"
-  />
-
-  <apn carrier="carolinawest"
-      mcc="310"
-      mnc="130"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="carolinawest"
-      mmsc="http://mms.cwwmms.com/cww/mms.php"
-      mmsproxy="204.117.091.161"
-      mmsport="80"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Carolina IMS"
-      mcc="310"
-      mnc="130"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="carolinawest"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Carolina IMS"
-      mcc="310"
-      mnc="130"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="carolinawest"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Carolina FOTA"
-      mcc="310"
-      mnc="130"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="carolinawest"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Carolina FOTA"
-      mcc="310"
-      mnc="130"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="carolinawest"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Carolina west"
-      mcc="310"
-      mnc="130"
-      apn="VZWINTERNET"
-      mmsc="http://mms.cwwmms.com/cww/mms.php"
-      mmsproxy="204.117.091.161"
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="carolinawest"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Carolina west"
-      mcc="310"
-      mnc="130"
-      apn="VZWINTERNET"
-      mmsc="http://mms.cwwmms.com/cww/mms.php"
-      mmsproxy="204.117.091.161"
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="carolinawest"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="internet"
-      mcc="310"
-      mnc="150"
-      apn="ndo"
-      user=""
-      password=""
-      proxy=""
-      port=""
-      mmsc="http://mmsc.aiowireless.net"
-      mmsproxy="proxy.aiowireless.net"
-      mmsport="80"
-      type="default,mms,fota,hipri,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="T-Mobile US 160"
-      mcc="310"
-      mnc="160"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 160 IMS"
-      mcc="310"
-      mnc="160"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 160"
-      mcc="310"
-      mnc="160"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 160"
-      mcc="310"
-      mnc="160"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 160 IMS"
-      mcc="310"
-      mnc="160"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="ATT Nextgenphone"
-      mcc="310"
-      mnc="170"
-      apn="nxtgenphone"
-      mmsc="http://mmsc.mobile.att.net"
-      mmsproxy="proxy.mobile.att.net"
-      mmsport="80"
-      type="default,mms,supl,fota,hipri"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      mtu="1410"
-  />
-
-  <apn carrier="DataConnect"
-      mcc="310"
-      mnc="170"
-      apn="isp.cingular"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="Cingular MMS"
-      mcc="310"
-      mnc="170"
-      apn="wap.cingular"
-      user="WAP@CINGULARGPRS.COM"
-      password="CINGULAR1"
-      mmsc="http://mmsc.cingular.com"
-      mmsproxy="66.209.11.32"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="WCW-INTERNET"
-      mcc="310"
-      mnc="180"
-      apn="internet.wcc.net"
-      user="13257630000"
-      password="mmsc"
-      type="default"
-  />
-
-  <apn carrier="WCW-MMS"
-      mcc="310"
-      mnc="180"
-      apn="mms.wcc.net"
-      user="13257630000"
-      password="mmsc"
-      authtype="3"
-      mmsc="http://mms.wcc.net"
-      mmsproxy="209.55.70.246"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="T-Mobile US 200"
-      mcc="310"
-      mnc="200"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 200 IMS"
-      mcc="310"
-      mnc="200"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 200"
-      mcc="310"
-      mnc="200"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 200"
-      mcc="310"
-      mnc="200"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 200 IMS"
-      mcc="310"
-      mnc="200"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 210"
-      mcc="310"
-      mnc="210"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 210 IMS"
-      mcc="310"
-      mnc="210"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 210"
-      mcc="310"
-      mnc="210"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 210"
-      mcc="310"
-      mnc="210"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 210 IMS"
-      mcc="310"
-      mnc="210"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 220"
-      mcc="310"
-      mnc="220"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 220 IMS"
-      mcc="310"
-      mnc="220"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 220"
-      mcc="310"
-      mnc="220"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 220"
-      mcc="310"
-      mnc="220"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 220 IMS"
-      mcc="310"
-      mnc="220"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 230"
-      mcc="310"
-      mnc="230"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 230 IMS"
-      mcc="310"
-      mnc="230"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 230"
-      mcc="310"
-      mnc="230"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-  <apn carrier="MetroPCS 230"
-      mcc="310"
-      mnc="230"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 230 IMS"
-      mcc="310"
-      mnc="230"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 240"
-      mcc="310"
-      mnc="240"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 240 IMS"
-      mcc="310"
-      mnc="240"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-  <apn carrier="MetroPCS 240"
-      mcc="310"
-      mnc="240"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 240"
-      mcc="310"
-      mnc="240"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 240 IMS"
-      mcc="310"
-      mnc="240"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 250"
-      mcc="310"
-      mnc="250"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 250 IMS"
-      mcc="310"
-      mnc="250"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 250"
-      mcc="310"
-      mnc="250"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 250"
-      mcc="310"
-      mnc="250"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 250 IMS"
-      mcc="310"
-      mnc="250"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 260"
-      mcc="310"
-      mnc="260"
-      apn="fast.t-mobile.com"
-      type="default,supl,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 260 IMS"
-      mcc="310"
-      mnc="260"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      mtu="1440"
-      bearer_bitmask="1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17"
-  />
-
-  <apn carrier="T-Mobile US 260 IMS"
-      mcc="310"
-      mnc="260"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-      bearer="18"
-  />
-
-  <apn carrier="T-Mobile MMS"
-      mcc="310"
-      mnc="260"
-      apn="TMUS"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="mms"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      bearer_bitmask="1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17"
-  />
-
-  <apn carrier="T-Mobile MMS"
-       mcc="310"
-       mnc="260"
-       apn="TMUS"
-       mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-       type="mms"
-       protocol="IPV6"
-       roaming_protocol="IPV6"
-       bearer="18"
-  />
-
-  <apn carrier="Project Fi - T"
-       mcc="310"
-       mnc="260"
-       apn="h2g2"
-       type="ia"
-       protocol="IPV4V6"
-       roaming_protocol="IPV4V6"
-       mvno_match_data="31026097"
-       mvno_type="IMSI"
-  />
-
-  <apn carrier="Project Fi - T"
-       mcc="310"
-       mnc="260"
-       apn="h2g2"
-       user="none"
-       server="*"
-       password="none"
-       mmsc="http://mmsc1.g-mms.com/mms/wapenc"
-       protocol="IPV6"
-       roaming_protocol="IP"
-       mvno_match_data="31026097"
-       mvno_type="IMSI"
-  />
-
-  <apn carrier="MetroPCS 260"
-      mcc="310"
-      mnc="260"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 260"
-      mcc="310"
-      mnc="260"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 260 IMS"
-      mcc="310"
-      mnc="260"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-
-  <apn carrier="SIMPLE"
-      mcc="310"
-      mnc="260"
-      apn="simple"
-      type="default,mms,supl,hipri,fota"
-      protocol="IP"
-      roaming_protocol="IP"
-      mmsc="http://smpl.mms.msg.eng.t-mobile.com/mms/wapenc"
-      mvno_type="gid"
-      mvno_match_data="534D"
-  />
-
-  <apn carrier="TFWAP"
-      mcc="310"
-      mnc="260"
-      apn="wap.tracfone"
-      type="default,mms,supl,hipri,fota"
-      protocol="IP"
-      roaming_protocol="IP"
-      mmsc="http://mms.tracfone.com"
-      mvno_type="gid"
-      mvno_match_data="deff"
-  />
-
-  <apn carrier="TFWAP"
-      mcc="310"
-      mnc="260"
-      apn="wap.tracfone"
-      type="default,mms,supl,hipri,fota"
-      protocol="IP"
-      roaming_protocol="IP"
-      mmsc="http://mms.tracfone.com"
-      mvno_type="gid"
-      mvno_match_data="ddff"
-  />
-
-  <apn carrier="Consumer Cellular"
-      mcc="310"
-      mnc="260"
-      apn="wholesale"
-      user=""
-      password=""
-      proxy=""
-      port=""
-      mmsc="http://wholesale.mmsmvno.com/mms/wapenc"
-      mmsproxy=""
-      mmsport="80"
-      type="default,mms,supl,hipri"
-      mvno_type="gid"
-      mvno_match_data="2AC9"
-  />
-
-  <apn carrier="Vodafone US"
-      mcc="310"
-      mnc="260"
-      apn="us.vodafone.com"
-      type="default,mms,supl,dun"
-      protocol="IPV6"
-      roaming_protocol="IPV4"
-      mmsc="http://wholesale.mmsmvno.com/mms/wapenc"
-      mvno_type="gid"
-      mvno_match_data="2801"
-  />
-
-  <apn carrier="Vodafone US IMS"
-      mcc="310"
-      mnc="260"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV4"
-      mvno_type="gid"
-      mvno_match_data="2801"
-  />
-
-  <apn carrier="Vodafone US Service"
-      mcc="310"
-      mnc="260"
-      apn="service"
-      type="mms"
-      protocol="IPV6"
-      roaming_protocol="IPV4"
-      mmsc="http://wholesale.mmsmvno.com/mms/wapenc"
-      mvno_type="gid"
-      mvno_match_data="2801"
-  />
-
-  <apn carrier="T-Mobile US 270"
-      mcc="310"
-      mnc="270"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 270 IMS"
-      mcc="310"
-      mnc="270"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 270"
-      mcc="310"
-      mnc="270"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 270"
-      mcc="310"
-      mnc="270"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 270 IMS"
-      mcc="310"
-      mnc="270"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="agms"
-      mcc="310"
-      mnc="280"
-      apn="agms"
-      type="default,supl"
-  />
-
-  <apn carrier="T-Mobile US 300"
-      mcc="310"
-      mnc="300"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 300 IMS"
-      mcc="310"
-      mnc="300"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 300"
-      mcc="310"
-      mnc="300"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 300"
-      mcc="310"
-      mnc="300"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 300 IMS"
-      mcc="310"
-      mnc="300"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="Truphone"
-      mcc="310"
-      mnc="30"
-      apn="truphone.com"
-      type="default,supl"
-  />
-
-
-  <apn carrier="Truphone"
-      mcc="310"
-      mnc="300"
-      apn="truphone.com"
-      type="default,supl"
-  />
-
-  <apn carrier="T-Mobile US 310"
-      mcc="310"
-      mnc="310"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 310 IMS"
-      mcc="310"
-      mnc="310"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 310"
-      mcc="310"
-      mnc="310"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 310"
-      mcc="310"
-      mnc="310"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 310 IMS"
-      mcc="310"
-      mnc="310"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="Cellular One NEAZ ISP"
-      mcc="310"
-      mnc="320"
-      apn="isp.cellularoneaz.net"
-      type="default,supl"
-  />
-
-  <apn carrier="Cellular One ClearSky MMS"
-      mcc="310"
-      mnc="320"
-      apn="wap.c1csky.net"
-      mmsc="http://mmsc.c1neaz.csky.us:6672"
-      mmsproxy="209.4.229.94"
-      mmsport="9401"
-      type="mms"
-  />
-
-  <apn carrier="alltel2"
-      mcc="310"
-      mnc="330"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="alltel2"
-      mmsc="http://mms.alltel.com/servlets/mms"
-      mmsproxy="mms.alltel.com"
-      mmsport="8080"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Alltel2 IMS"
-      mcc="310"
-      mnc="330"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="alltel2"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Alltel2 IMS"
-      mcc="310"
-      mnc="330"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="alltel2"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Alltel2 FOTA"
-      mcc="310"
-      mnc="330"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="alltel2"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Alltel2 FOTA"
-      mcc="310"
-      mnc="330"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="alltel2"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Alltel2"
-      mcc="310"
-      mnc="330"
-      apn="VZWINTERNET"
-      mmsc="http://mms.alltel.com/servlets/mms"
-      mmsproxy="mms.alltel.com"
-      mmsport="8080"
-      mvno_type="spn"
-      mvno_match_data="alltel2"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Alltel2"
-      mcc="310"
-      mnc="330"
-      apn="VZWINTERNET"
-      mmsc="http://mms.alltel.com/servlets/mms"
-      mmsproxy="mms.alltel.com"
-      mmsport="8080"
-      mvno_type="spn"
-      mvno_match_data="alltel2"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="pioneer"
-      mcc="310"
-      mnc="360"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="pioneer"
-      mmsc="http://mms1.zsend.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Pioneer IMS"
-      mcc="310"
-      mnc="360"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="pioneer"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Pioneer IMS"
-      mcc="310"
-      mnc="360"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="pioneer"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Pioneer FOTA"
-      mcc="310"
-      mnc="360"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="pioneer"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Pioneer FOTA"
-      mcc="310"
-      mnc="360"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="pioneer"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Pioneer"
-      mcc="310"
-      mnc="360"
-      apn="VZWINTERNET"
-      mmsc="http://mms1.zsend.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="pioneer"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Pioneer"
-      mcc="310"
-      mnc="360"
-      apn="VZWINTERNET"
-      mmsc="http://mms1.zsend.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="pioneer"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Cingular 380 ATT"
-      mcc="310"
-      mnc="380"
-      apn="proxy"
-      mmsc="http://mmsc.cingular.com/"
-      mmsproxy="wireless.cingular.com"
-      type="default,supl,mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="AWS MMS"
-      mcc="310"
-      mnc="380"
-      apn="proxy"
-      mmsc="http://mmsc.mymmode.com"
-      mmsproxy="10.250.250.55"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="AGMS Global"
-      mcc="310"
-      mnc="380"
-      apn="agms.nl.gmm"
-      mmsc=""
-      mmsproxy=""
-      mmsport=""
-      type="default"
-      protocol="IP"
-      roaming_protocol="IP"
-      mtu="1410"
-      mvno_match_data="50"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Celloneet MMS"
-      mcc="310"
-      mnc="390"
-      apn="mms.celloneet.com"
-      user="user1@mms.celloneet.com"
-      password="celloneet"
-      mmsc="http://mms.celloneet.com/servlets/mms"
-      mmsproxy="63.99.231.135"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="ATT Nextgenphone"
-      mcc="310"
-      mnc="410"
-      apn="nxtgenphone"
-      mmsc="http://mmsc.mobile.att.net"
-      mmsproxy="proxy.mobile.att.net"
-      mmsport="80"
-      type="default,mms,supl,fota,hipri"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      mtu="1410"
-  />
-
-  <apn carrier="ATT Phone"
-      mcc="310"
-      mnc="410"
-      apn="phone"
-      type="default,mms,supl,fota,hipri"
-      mmsc="http://mmsc.mobile.att.net"
-      mmsproxy="proxy.mobile.att.net"
-      mmsport="80"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="ATT WAP"
-      mcc="310"
-      mnc="410"
-      apn="wap.cingular"
-      proxy="wireless.cingular.com"
-      port="80"
-      server="cingulargprs.com"
-      mmsc="http://mmsc.cingular.com/"
-      mmsproxy="wireless.cingular.com"
-      type="default,supl,mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="Defense Mobile"
-      mcc="310"
-      mnc="410"
-      apn="PRODATA"
-      mmsc="http://mmsc.mobile.att.net"
-      mmsproxy="proxy.mobile.att.net"
-      mmsport="80"
-      type="default,mms,supl"
-      protocol="IP"
-      mtusize="1410"
-      mvno_type="gid"
-      mvno_match_data="60FF"
-  />
-
-  <apn carrier="TRACFONE"
-      mcc="310"
-      mnc="410"
-      apn="reseller"
-      type="default,mms,supl,hipri,fota"
-      protocol="IP"
-      roaming_protocol="IP"
-      mmsc="http://mmsc.mobile.att.net"
-      mmsproxy="proxy.mobile.att.net"
-      mmsport="80"
-      mvno_type="gid"
-      mvno_match_data="deff"
-  />
-
-  <apn carrier="TFDATA"
-      mcc="310"
-      mnc="410"
-      apn="tfdata"
-      type="default,mms,supl,hipri,fota"
-      protocol="IP"
-      roaming_protocol="IP"
-      mmsc="http://mms-tf.net"
-      mmsproxy="mms3.tracfone.com"
-      mmsport="80"
-      mvno_type="gid"
-      mvno_match_data="ddff"
-  />
-
-  <apn carrier="CBW Data"
-      mcc="310"
-      mnc="420"
-      apn="wap.gocbw.com"
-      mmsc="http://mms.gocbw.com:8088/mms"
-      mmsproxy="216.68.79.202"
-      mmsport="80"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="gci"
-      mcc="310"
-      mnc="430"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="gci"
-      mmsc="http://mmsc.akdt.dataonair.net:6672/"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Gci IMS"
-      mcc="310"
-      mnc="430"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="gci"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Gci IMS"
-      mcc="310"
-      mnc="430"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="gci"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Gci FOTA"
-      mcc="310"
-      mnc="430"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="gci"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Gci FOTA"
-      mcc="310"
-      mnc="430"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="gci"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Gci"
-      mcc="310"
-      mnc="430"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.akdt.dataonair.net:6672/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="gci"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Gci"
-      mcc="310"
-      mnc="430"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.akdt.dataonair.net:6672/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="gci"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Viaero Connect"
-      mcc="310"
-      mnc="450"
-      apn="internet.vedge.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Viaero MMS"
-      mcc="310"
-      mnc="450"
-      apn="mms"
-      mmsc="http://mms.viaero.com"
-      mmsproxy="10.168.3.23"
-      mmsport="9401"
-      type="mms"
-  />
-
-  <apn carrier="DataConnect"
-      mcc="310"
-      mnc="470"
-      apn="isp.cingular"
-      type="default,supl"
-  />
-
-  <apn carrier="MediaNet"
-      mcc="310"
-      mnc="470"
-      apn="wap.cingular"
-      user="WAP@CINGULARGPRS.COM"
-      password="CINGULAR1"
-      mmsc="http://mmsc.cingular.com"
-      mmsproxy="66.209.11.32"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="nTelos Ota"
-      mcc="310"
-      mnc="470"
-      apn="admin.4g.ntelos.com"
-      type="admin,fota,ota"
-      bearer_bitmask="13"
-      mmsc="http://mms.ntelospcs.net"
-      server="*"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="nTelos Ota"
-      mcc="310"
-      mnc="470"
-      apn="admin.4g.ntelos.com"
-      type="admin,fota,ota"
-      bearer_bitmask="14"
-      mmsc="http://mms.ntelospcs.net"
-      server="*"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="nTelos Wireless"
-      mcc="310"
-      mnc="470"
-      apn="internet.4g.ntelos.com"
-      type="default,internet,supl,hipri,mms"
-      mmsc="http://mms.ntelospcs.net"
-      server="*"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="nTelos Tether"
-      mcc="310"
-      mnc="470"
-      apn="tethering.4g.ntelos.com"
-      type="dun,pam"
-      bearer_bitmask="13"
-      mmsc="http://mms.ntelospcs.net"
-      server="*"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="nTelos Tether"
-      mcc="310"
-      mnc="470"
-      apn="tethering.4g.ntelos.com"
-      type="dun,pam"
-      bearer_bitmask="14"
-      mmsc="http://mms.ntelospcs.net"
-      server="*"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="nTelos Wireless"
-      mcc="310"
-      mnc="470"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="ntelos"
-      mmsc="http://mms.ntelospcs.net/"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="DataConnect"
-      mcc="310"
-      mnc="480"
-      apn="isp.cingular"
-      type="default,supl"
-  />
-
-  <apn carrier="MediaNet"
-      mcc="310"
-      mnc="480"
-      apn="wap.cingular"
-      user="WAP@CINGULARGPRS.COM"
-      password="CINGULAR1"
-      mmsc="http://mmsc.cingular.com"
-      mmsproxy="66.209.11.32"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="T-Mobile US 490"
-      mcc="310"
-      mnc="490"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 490 IMS"
-      mcc="310"
-      mnc="490"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 490"
-      mcc="310"
-      mnc="490"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 490"
-      mcc="310"
-      mnc="490"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 490 IMS"
-      mcc="310"
-      mnc="490"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="GoodCall Picture Message"
-      mcc="310"
-      mnc="490"
-      apn="good.call"
-      mmsc="http://mms.suncom.net:8088/mms"
-      mmsproxy="66.150.33.125"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Suncom MMS"
-      mcc="310"
-      mnc="490"
-      apn="mms"
-      mmsc="http://mms.suncom.net:8088/mms"
-      mmsproxy="66.150.33.125"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="T-Mobile US 530"
-      mcc="310"
-      mnc="530"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 530 IMS"
-      mcc="310"
-      mnc="530"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 530"
-      mcc="310"
-      mnc="530"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-  <apn carrier="MetroPCS 530"
-      mcc="310"
-      mnc="530"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 530 IMS"
-      mcc="310"
-      mnc="530"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="ATT Nextgenphone"
-      mcc="310"
-      mnc="560"
-      apn="nxtgenphone"
-      mmsc="http://mmsc.mobile.att.net"
-      mmsproxy="proxy.mobile.att.net"
-      mmsport="80"
-      type="default,mms,supl,fota,hipri"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      mtu="1410"
-  />
-
-  <apn carrier="DobsonMMS"
-      mcc="310"
-      mnc="560"
-      apn="dobsoncellularwap"
-      mmsc="http://mmsc"
-      mmsproxy="172.23.1.252"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="Cellular One Smartphone"
-      mcc="310"
-      mnc="570"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Cellular One MMS"
-      mcc="310"
-      mnc="570"
-      apn="clearsky"
-      mmsc="http://mmsc.mtpcs.csky.us:6672/"
-      mmsproxy="209.4.229.229"
-      mmsport="9201"
-      type="mms"
-  />
-
-  <apn carrier="inland"
-      mcc="310"
-      mnc="580"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="inland"
-      mmsc="http://mms.inland3g.com/inland/mms.php"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Inland IMS"
-      mcc="310"
-      mnc="580"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="inland"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Inland IMS"
-      mcc="310"
-      mnc="580"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="inland"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Inland FOTA"
-      mcc="310"
-      mnc="580"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="inland"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Inland FOTA"
-      mcc="310"
-      mnc="580"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="inland"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Inland"
-      mcc="310"
-      mnc="580"
-      apn="VZWINTERNET"
-      mmsc="http://mms.inland3g.com/inland/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="inland"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Inland"
-      mcc="310"
-      mnc="580"
-      apn="VZWINTERNET"
-      mmsc="http://mms.inland3g.com/inland/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="inland"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="CellularOne MMS"
-      mcc="310"
-      mnc="590"
-      apn="cellular1wap"
-      mmsc="http://mmsc"
-      mmsproxy="172.23.1.252"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <apn carrier="T-Mobile US 590"
-      mcc="310"
-      mnc="590"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 590 IMS"
-      mcc="310"
-      mnc="590"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 590"
-      mcc="310"
-      mnc="590"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-  <apn carrier="MetroPCS 590"
-      mcc="310"
-      mnc="590"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 590 IMS"
-      mcc="310"
-      mnc="590"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="cellcom"
-      mcc="310"
-      mnc="600"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="cellcom"
-      mmsc="http://mms.cellcom.com/cellcom/mms.php"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Cellcom IMS"
-      mcc="310"
-      mnc="600"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="cellcom"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Cellcom IMS"
-      mcc="310"
-      mnc="600"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="cellcom"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Cellcom FOTA"
-      mcc="310"
-      mnc="600"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="cellcom"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Cellcom FOTA"
-      mcc="310"
-      mnc="600"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="cellcom"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Cellcom"
-      mcc="310"
-      mnc="600"
-      apn="VZWINTERNET"
-      mmsc="http://mms.cellcom.com/cellcom/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="cellcom"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Cellcom"
-      mcc="310"
-      mnc="600"
-      apn="VZWINTERNET"
-      mmsc="http://mms.cellcom.com/cellcom/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="cellcom"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-  <apn carrier="EpicINT"
-      mcc="310"
-      mnc="610"
-      apn="internet.epictouch"
-      type="default,supl"
-  />
-
-  <apn carrier="EpicMMS"
-      mcc="310"
-      mnc="610"
-      apn="mms.epictouch"
-      mmsc="http://mmsc.westlinkcom.com/servlets/mms"
-      mmsproxy="63.99.231.135"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="T-Mobile US 640"
-      mcc="310"
-      mnc="640"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 640 IMS"
-      mcc="310"
-      mnc="640"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 640"
-      mcc="310"
-      mnc="640"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 640"
-      mcc="310"
-      mnc="640"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 640 IMS"
-      mcc="310"
-      mnc="640"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 660"
-      mcc="310"
-      mnc="660"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 660 IMS"
-      mcc="310"
-      mnc="660"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 660"
-      mcc="310"
-      mnc="660"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-  <apn carrier="MetroPCS 660"
-      mcc="310"
-      mnc="660"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 660 IMS"
-      mcc="310"
-      mnc="660"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="Rogers Internet"
-      mcc="310"
-      mnc="720"
-      apn="internet.com"
-      user=""
-      password=""
-      proxy="10.128.1.69"
-      port="80"
-      type="default"
-  />
-
-  <apn carrier="Rogers Media"
-      mcc="310"
-      mnc="720"
-      apn="media.com"
-      user="media"
-      password="mda01"
-      proxy="10.128.1.69"
-      port="80"
-      type="mms"
-  />
-
-  <apn carrier="appalachian"
-      mcc="310"
-      mnc="750"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="appalachian"
-      mmsc="http://mms.ekn.com"
-      mmsproxy=""
-      mmsport="80"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Appalachian IMS"
-      mcc="310"
-      mnc="750"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="appalachian"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Appalachian IMS"
-      mcc="310"
-      mnc="750"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="appalachian"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Appalachian FOTA"
-      mcc="310"
-      mnc="750"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="appalachian"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Appalachian FOTA"
-      mcc="310"
-      mnc="750"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="appalachian"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Appalachian"
-      mcc="310"
-      mnc="750"
-      apn="VZWINTERNET"
-      mmsc="http://mms.ekn.com"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="appalachian"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Appalachian"
-      mcc="310"
-      mnc="750"
-      apn="VZWINTERNET"
-      mmsc="http://mms.ekn.com"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="appalachian"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-  <apn carrier="Web 2"
-      mcc="310"
-      mnc="770"
-      apn="i2.iwireless.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Web 1"
-      mcc="310"
-      mnc="770"
-      apn="wap1.iwireless.com"
-      proxy="209.4.229.31"
-      port="9401"
-      type="default,supl"
-  />
-
-  <apn carrier="Picture Messaging"
-      mcc="310"
-      mnc="770"
-      apn="wap1.iwireless.com"
-      mmsc="http://mmsc.iwireless.dataonair.net:6672"
-      mmsproxy="209.4.229.31"
-      mmsport="9401"
-      type="mms"
-  />
-
-  <apn carrier="T-Mobile US 800"
-      mcc="310"
-      mnc="800"
-      apn="fast.t-mobile.com"
-      mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc"
-      type="default,supl,mms,ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mtu="1440"
-  />
-
-  <apn carrier="T-Mobile US 800 IMS"
-      mcc="310"
-      mnc="800"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 800"
-      mcc="310"
-      mnc="800"
-      apn=""
-      type="ia"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 800"
-      mcc="310"
-      mnc="800"
-      apn="fast.metropcs.com"
-      mmsc="http://metropcs.mmsmvno.com/mms/wapenc"
-      type="default,supl,mms,hipri"
-      protocol="IPV6"
-      roaming_protocol="IP"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      mtu="1440"
-  />
-
-  <apn carrier="MetroPCS 800 IMS"
-      mcc="310"
-      mnc="800"
-      apn="ims"
-      type="ims"
-      mvno_match_data="6D"
-      mvno_type="gid"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-      mtu="1440"
-  />
-
-  <apn carrier="nepa"
-      mcc="310"
-      mnc="820"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="nepa"
-      mmsc="http://mmsc.c1nepa.csky.us:6672/"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Nepa IMS"
-      mcc="310"
-      mnc="820"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="nepa"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Nepa IMS"
-      mcc="310"
-      mnc="820"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="nepa"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Nepa FOTA"
-      mcc="310"
-      mnc="820"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="nepa"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Nepa FOTA"
-      mcc="310"
-      mnc="820"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="nepa"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Nepa"
-      mcc="310"
-      mnc="820"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.c1nepa.csky.us:6672/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="nepa"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Nepa"
-      mcc="310"
-      mnc="820"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.c1nepa.csky.us:6672/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="nepa"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Internet"
-      mcc="310"
-      mnc="840"
-      apn="isp"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="310"
-      mnc="840"
-      apn="mms"
-      mmsc="http://mms.edgemobile.net/mmsc"
-      mmsproxy="12.108.12.13"
-      mmsport="3128"
-      type="mms"
-  />
-
-  <apn carrier="Edge MMS Prepay"
-      mcc="310"
-      mnc="840"
-      apn="ppmms"
-      mmsc="http://mms.edgemobile.net/mmsc"
-      mmsproxy="12.108.12.13"
-      mmsport="3128"
-      type="mms"
-  />
-
-  <apn carrier="DTC dtcwap"
-      mcc="310"
-      mnc="880"
-      apn="wapdtcw.com"
-      type="default"
-      proxy="204.181.155.218"
-      port="8080"
-  />
-
-  <apn carrier="DTC MMS"
-      mcc="310"
-      mnc="880"
-      apn="mms.adv.com"
-      mmsc="http://mms.iot1.com/advantage/mms.php"
-      type="mms"
-  />
-
-  <apn carrier="midrivers"
-      mcc="310"
-      mnc="900"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="midrivers"
-      mmsc="http://mmsc.midrivers.csky.us:6672/"
-      mmsproxy="209.4.229.27"
-      mmsport="9401"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Midrivers IMS"
-      mcc="310"
-      mnc="900"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="midrivers"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Midrivers IMS"
-      mcc="310"
-      mnc="900"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="midrivers"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Midrivers FOTA"
-      mcc="310"
-      mnc="900"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="midrivers"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Midrivers FOTA"
-      mcc="310"
-      mnc="900"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="midrivers"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Midrivers"
-      mcc="310"
-      mnc="900"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.midrivers.csky.us:6672/"
-      mmsproxy="209.4.229.27"
-      mmsport="9401"
-      mvno_type="spn"
-      mvno_match_data="midrivers"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Midrivers"
-      mcc="310"
-      mnc="900"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.midrivers.csky.us:6672/"
-      mmsproxy="209.4.229.27"
-      mmsport="9401"
-      mvno_type="spn"
-      mvno_match_data="midrivers"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-  <apn carrier="WOW_WAP"
-      mcc="310"
-      mnc="910"
-      apn="wap.firstcellular.com"
-      mmsc="mms.firstcellular.net/mmsc"
-      mmsproxy="10.101.1.5"
-      mmsport="3128"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="jamesvalley"
-      mcc="310"
-      mnc="920"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="jamesvalley"
-      mmsc="http://m.iot1.com/jamesvalley/mms.php"
-      mmsproxy="m.iot1.com"
-      mmsport="9201"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Jamesvalley IMS"
-      mcc="310"
-      mnc="920"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="jamesvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Jamesvalley IMS"
-      mcc="310"
-      mnc="920"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="jamesvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Jamesvalley FOTA"
-      mcc="310"
-      mnc="920"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="jamesvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Jamesvalley FOTA"
-      mcc="310"
-      mnc="920"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="jamesvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Jamesvalley"
-      mcc="310"
-      mnc="920"
-      apn="VZWINTERNET"
-      mmsc="http://m.iot1.com/jamesvalley/mms.php"
-      mmsproxy="m.iot1.com"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="jamesvalley"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Jamesvalley"
-      mcc="310"
-      mnc="920"
-      apn="VZWINTERNET"
-      mmsc="http://m.iot1.com/jamesvalley/mms.php"
-      mmsproxy="m.iot1.com"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="jamesvalley"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="coppervalley"
-      mcc="310"
-      mnc="930"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="coppervalley"
-      mmsc="http://cvwmms.com/servlets/mms"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Coppervalley IMS"
-      mcc="310"
-      mnc="930"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="coppervalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Coppervalley IMS"
-      mcc="310"
-      mnc="930"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="coppervalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Coppervalley FOTA"
-      mcc="310"
-      mnc="930"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="coppervalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Coppervalley FOTA"
-      mcc="310"
-      mnc="930"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="coppervalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Copper Valley"
-      mcc="310"
-      mnc="930"
-      apn="VZWINTERNET"
-      mmsc="http://cvwmms.com/servlets/mms"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="coppervalley"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Copper Valley"
-      mcc="310"
-      mnc="930"
-      apn="VZWINTERNET"
-      mmsc="http://cvwmms.com/servlets/mms"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="coppervalley"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="nntcwire"
-      mcc="310"
-      mnc="960"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="nntcwire"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Nntcwire IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="nntcwire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Nntcwire IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="nntcwire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Nntcwire FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="nntcwire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Nntcwire FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="nntcwire"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Nntcwire"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="nntcwire"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Nntcwire"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="nntcwire"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="silverstar"
-      mcc="310"
-      mnc="960"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="silverstar"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Silverstar IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="silverstar"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Silverstar IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="silverstar"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Silverstar FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="silverstar"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Silverstar FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="silverstar"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Silverstar"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="silverstar"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Silverstar"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="silverstar"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="snakeriver"
-      mcc="310"
-      mnc="960"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="snakeriver"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Snakeriver IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="snakeriver"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Snakeriver IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="snakeriver"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Snakeriver FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="snakeriver"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Snakeriver FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="snakeriver"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Snakeriver"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="snakeriver"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Snakeriver"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="snakeriver"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="southcentral"
-      mcc="310"
-      mnc="960"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="southcentral"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Southcentral IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="southcentral"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Southcentral IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="southcentral"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Southcentral FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="southcentral"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Southcentral FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="southcentral"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Southcentral"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="southcentral"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Southcentral"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="southcentral"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="strata"
-      mcc="310"
-      mnc="960"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="strata"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Strata IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="strata"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Strata IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="strata"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Strata FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="strata"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Strata FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="strata"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="strata"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="strata"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="strata"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="strata"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="syringa"
-      mcc="310"
-      mnc="960"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="syringa"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Syringa IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="syringa"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Syringa IMS"
-      mcc="310"
-      mnc="960"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="syringa"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Syringa FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="syringa"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Syringa FOTA"
-      mcc="310"
-      mnc="960"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="syringa"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Syringa"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="syringa"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Syringa"
-      mcc="310"
-      mnc="960"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="syringa"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="thumbcellular"
-      mcc="311"
-      mnc="050"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="thumbcellular"
-      mmsc="http://mms.thumbcell.com/thumb/mms.php"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Thumb IMS"
-      mcc="311"
-      mnc="050"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="thumbcellular"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Thumb IMS"
-      mcc="311"
-      mnc="050"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="thumbcellular"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Thumb FOTA"
-      mcc="311"
-      mnc="050"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="thumbcellular"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Thumb FOTA"
-      mcc="311"
-      mnc="050"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="thumbcellular"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Thumbcellular"
-      mcc="311"
-      mnc="050"
-      apn="VZWINTERNET"
-      mmsc="http://mms.thumbcell.com/thumb/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="thumbcellular"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Thumbcellular"
-      mcc="311"
-      mnc="050"
-      apn="VZWINTERNET"
-      mmsc="http://mms.thumbcell.com/thumb/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="thumbcellular"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="elementmobile"
-      mcc="311"
-      mnc="070"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="elementmobile"
-      mmsc="http://mms.elementmobile.net"
-      mmsproxy=""
-      mmsport="8080"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Elementmobile IMS"
-      mcc="311"
-      mnc="070"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="elementmobile"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Elementmobile IMS"
-      mcc="311"
-      mnc="070"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="elementmobile"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Elementmobile FOTA"
-      mcc="311"
-      mnc="070"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="elementmobile"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Elementmobile FOTA"
-      mcc="311"
-      mnc="070"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="elementmobile"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Elementmobile"
-      mcc="311"
-      mnc="070"
-      apn="VZWINTERNET"
-      mmsc="http://mms.elementmobile.net"
-      mmsproxy=""
-      mmsport="8080"
-      mvno_type="spn"
-      mvno_match_data="elementmobile"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Elementmobile"
-      mcc="311"
-      mnc="070"
-      apn="VZWINTERNET"
-      mmsc="http://mms.elementmobile.net"
-      mmsproxy=""
-      mmsport="8080"
-      mvno_type="spn"
-      mvno_match_data="elementmobile"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="PINE WAP"
-     mcc="311"
-     mnc="080"
-     apn="PINE"
-     mmsc="http://69.8.34.146/mms/"
-     mmsproxy="69.8.34.146"
-     mmsport="9401"
-     type="default,mms"
-  />
-
-  <apn carrier="NexTech Wireless"
-      mcc="311"
-      mnc="100"
-      authtype="3"
-      type="mms"
-      mmsc="http://mms.ntwls.net/nex-tech/mms.php"
-      server="*"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="sprocket"
-      mcc="311"
-      mnc="140"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="sprocket"
-      mmsc="http://mms.sprocketwireless.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Sprocket IMS"
-      mcc="311"
-      mnc="140"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="sprocket"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Sprocket IMS"
-      mcc="311"
-      mnc="140"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="sprocket"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Sprocket FOTA"
-      mcc="311"
-      mnc="140"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="sprocket"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Sprocket FOTA"
-      mcc="311"
-      mnc="140"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="sprocket"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Sprocket"
-      mcc="311"
-      mnc="140"
-      apn="VZWINTERNET"
-      mmsc="http://mms.sprocketwireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="sprocket"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Sprocket"
-      mcc="311"
-      mnc="140"
-      apn="VZWINTERNET"
-      mmsc="http://mms.sprocketwireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="sprocket"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="ISP"
-      mcc="311"
-      mnc="190"
-      apn="isp.cellular1.net"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="311"
-      mnc="190"
-      apn="mms.cellular1.net"
-      mmsc="http://mms.cellular1.net"
-      mmsproxy="10.10.0.97"
-      mmsport="9201"
-      type="mms"
-  />
-
-  <apn carrier="Farmers GPRS"
-      mcc="311"
-      mnc="210"
-      apn="internet.farmerswireless.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Farmers MMS"
-      mcc="311"
-      mnc="210"
-      apn="mms.farmers.com"
-      mmsc="172.16.0.37:8514"
-      type="mms"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="220"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      authtype="3"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="220"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="220"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="221"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="221"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="220"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="221"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="221"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="221"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="222"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="222"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="222"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="223"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="223"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="223"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="224"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="224"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="224"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="225"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="225"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      carrier_enabled="true"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="225"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      carrier_enabled="true"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="226"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="226"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="226"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="227"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="227"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="227"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="228"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="228"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="228"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="229"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="229"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="229"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="CSpire ota"
-      mcc="311"
-      mnc="230"
-      apn="admin.cs4glte.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://pix.cspire.com"
-      type="admin,fota,ota"
-      bearer_bitmask="14"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="CSpire ota"
-      mcc="311"
-      mnc="230"
-      apn="admin.cs4glte.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://pix.cspire.com"
-      type="admin,fota,ota"
-      bearer_bitmask="13"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="CSpire internet"
-      mcc="311"
-      mnc="230"
-      apn="internet.cs4glte.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://pix.cspire.com"
-      type="default,internet,mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="CSpire tether"
-      mcc="311"
-      mnc="230"
-      apn="tethering.cs4glte.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://pix.cspire.com"
-      type="dun,pam"
-      bearer_bitmask="13"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="CSpire tether"
-      mcc="311"
-      mnc="230"
-      apn="tethering.cs4glte.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://pix.cspire.com"
-      type="dun,pam"
-      bearer_bitmask="14"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="CSpire"
-      mcc="311"
-      mnc="230"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="cspire"
-      mmsc="http://pix.cspire.com/servlets/mms"
-      mmsproxy="66.175.144.91"
-      mmsport="80"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="leaco"
-      mcc="311"
-      mnc="310"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="leaco"
-      mmsc="http://204.181.155.217/mms/"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Leaco IMS"
-      mcc="311"
-      mnc="310"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="leaco"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Leaco IMS"
-      mcc="311"
-      mnc="310"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="leaco"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Leaco FOTA"
-      mcc="311"
-      mnc="310"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="leaco"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Leaco FOTA"
-      mcc="311"
-      mnc="310"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="leaco"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Leaco"
-      mcc="311"
-      mnc="310"
-      apn="VZWINTERNET"
-      mmsc="http://204.181.155.217/mms/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="leaco"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Leaco"
-      mcc="311"
-      mnc="310"
-      apn="VZWINTERNET"
-      mmsc="http://204.181.155.217/mms/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="leaco"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="illinoisvalley"
-      mcc="311"
-      mnc="340"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="illinoisvalley"
-      mmsc="http://mms.iot1.com/ivc/mms.php"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Illinois IMS"
-      mcc="311"
-      mnc="340"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="illinoisvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Illinois IMS"
-      mcc="311"
-      mnc="340"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="illinoisvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Illinois FOTA"
-      mcc="311"
-      mnc="340"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="illinoisvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Illinois FOTA"
-      mcc="311"
-      mnc="340"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="illinoisvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Illinois valley"
-      mcc="311"
-      mnc="340"
-      apn="VZWINTERNET"
-      mmsc="http://mms.iot1.com/ivc/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="illinoisvalley"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Illinois valley"
-      mcc="311"
-      mnc="340"
-      apn="VZWINTERNET"
-      mmsc="http://mms.iot1.com/ivc/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="illinoisvalley"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="nemont"
-      mcc="311"
-      mnc="350"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="nemont"
-      mmsc="http://mms.nemont.mobi/mms/"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Nemont IMS"
-      mcc="311"
-      mnc="350"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="nemont"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Nemont IMS"
-      mcc="311"
-      mnc="350"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="nemont"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Nemont FOTA"
-      mcc="311"
-      mnc="350"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="nemont"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Nemont FOTA"
-      mcc="311"
-      mnc="350"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="nemont"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Nemont"
-      mcc="311"
-      mnc="350"
-      apn="VZWINTERNET"
-      mmsc="http://mms.nemont.mobi/mms/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="nemont"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Nemont"
-      mcc="311"
-      mnc="350"
-      apn="VZWINTERNET"
-      mmsc="http://mms.nemont.mobi/mms/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="nemont"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="GCI WEB"
-      mcc="311"
-      mnc="370"
-      apn="web.gci"
-      type="default,supl"
-  />
-
-  <apn carrier="GCI MMS"
-      mcc="311"
-      mnc="370"
-      apn="mms.gci"
-      proxy="209.4.229.92"
-      port="9201"
-      mmsc="http://mmsc.gci.csky.us:6672"
-      mmsproxy="209.4.229.92"
-      mmsport="9201"
-      type="mms"
-  />
-
-  <apn carrier="ACS WEB"
-      mcc="311"
-      mnc="370"
-      apn="web.acs"
-      type="default,supl"
-      mvno_match_data="3113702"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="ACS MMS"
-      mcc="311"
-      mnc="370"
-      apn="mms.acs"
-      mmsc="http://mmsc.acsalaska.net"
-      mmsproxy="209.4.229.92"
-      mmsport="9201"
-      type="mms"
-      mvno_match_data="3113702"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Ericsson Test-SIM Internet"
-      mcc="311"
-      mnc="390"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Ericsson Test-SIM Internet"
-      mcc="311"
-      mnc="390"
-      apn="VZWINTERNET"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="default,dun"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Ericsson Test-SIM FOTA"
-      mcc="311"
-      mnc="390"
-      apn="VZWADMIN"
-      type="fota"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      profile_id="3"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Ericsson Test-SIM FOTA"
-      mcc="311"
-      mnc="390"
-      apn="VZWADMIN"
-      type="fota"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      profile_id="3"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Ericsson Test-SIM IMS"
-      mcc="311"
-      mnc="390"
-      apn="IMS"
-      type="ims,ia"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      profile_id="2"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Ericsson Test-SIM IMS"
-      mcc="311"
-      mnc="390"
-      apn="IMS"
-      type="ims,ia"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      profile_id="2"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Ericsson Test-SIM CBS"
-      mcc="311"
-      mnc="390"
-      apn="VZWAPP"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="cbs,mms"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      profile_id="4"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="Ericsson Test-SIM CBS"
-      mcc="311"
-      mnc="390"
-      apn="VZWAPP"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      type="cbs,mms"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      profile_id="4"
-      modem_cognitive="true"
-      max_conns="1023"
-      max_conns_time="300"
-  />
-
-  <apn carrier="chatmobrsa2"
-      mcc="311"
-      mnc="410"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa2"
-      mmsc="http://mmsc.hawkeyeswitch.net/mms/"
-      mmsproxy=""
-      mmsport="80"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Chatmobrsa2 IMS"
-      mcc="311"
-      mnc="410"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa2"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Chatmobrsa2 IMS"
-      mcc="311"
-      mnc="410"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa2"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Chatmobrsa2 FOTA"
-      mcc="311"
-      mnc="410"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa2"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Chatmobrsa2 FOTA"
-      mcc="311"
-      mnc="410"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa2"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Chatmobrsa2"
-      mcc="311"
-      mnc="410"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.hawkeyeswitch.net/mms/"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa2"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Chatmobrsa2"
-      mcc="311"
-      mnc="410"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.hawkeyeswitch.net/mms/"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa2"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="northwestcell"
-      mcc="311"
-      mnc="420"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="northwestcell"
-      mmsc="http://mms.nwmcell.com/mms/"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="NW IMS"
-      mcc="311"
-      mnc="420"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="northwestcell"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="NW IMS"
-      mcc="311"
-      mnc="420"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="northwestcell"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="NW FOTA"
-      mcc="311"
-      mnc="420"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="northwestcell"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="NW FOTA"
-      mcc="311"
-      mnc="420"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="northwestcell"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Northwestcell"
-      mcc="311"
-      mnc="420"
-      apn="VZWINTERNET"
-      mmsc="http://mms.nwmcell.com/mms/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="northwestcell"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Northwestcell"
-      mcc="311"
-      mnc="420"
-      apn="VZWINTERNET"
-      mmsc="http://mms.nwmcell.com/mms/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="northwestcell"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="chatmobrsa1"
-      mcc="311"
-      mnc="430"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa1"
-      mmsc="http://mmsc.hawkeyeswitch.net/mms/"
-      mmsproxy=""
-      mmsport="80"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Chatmobrsa1 IMS"
-      mcc="311"
-      mnc="430"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa1"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Chatmobrsa1 IMS"
-      mcc="311"
-      mnc="430"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa1"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Chatmobrsa1 FOTA"
-      mcc="311"
-      mnc="430"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa1"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Chatmobrsa1 FOTA"
-      mcc="311"
-      mnc="430"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa1"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Chatmobrsa1"
-      mcc="311"
-      mnc="430"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.hawkeyeswitch.net/mms/"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa1"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Chatmobrsa1"
-      mcc="311"
-      mnc="430"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.hawkeyeswitch.net/mms/"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="chatmobrsa1"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="bluegrass"
-      mcc="311"
-      mnc="440"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="bluegrass"
-      mmsc="http://mms.iot1.com/bluegrass/mms.php"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Bluegrass IMS"
-      mcc="311"
-      mnc="440"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="bluegrass"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Bluegrass IMS"
-      mcc="311"
-      mnc="440"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="bluegrass"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Bluegrass FOTA"
-      mcc="311"
-      mnc="440"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="bluegrass"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Bluegrass FOTA"
-      mcc="311"
-      mnc="440"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="bluegrass"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Bluegrass"
-      mcc="311"
-      mnc="440"
-      apn="VZWINTERNET"
-      mmsc="http://mms.iot1.com/bluegrass/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="bluegrass"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Bluegrass"
-      mcc="311"
-      mnc="440"
-      apn="VZWINTERNET"
-      mmsc="http://mms.iot1.com/bluegrass/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="bluegrass"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="ptci"
-      mcc="311"
-      mnc="450"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="ptci"
-      mmsc="http://mmsc.ptci.net"
-      mmsproxy=""
-      mmsport="6672"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Ptci IMS"
-      mcc="311"
-      mnc="450"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="ptci"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Ptci IMS"
-      mcc="311"
-      mnc="450"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="ptci"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Ptci FOTA"
-      mcc="311"
-      mnc="450"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="ptci"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Ptci FOTA"
-      mcc="311"
-      mnc="450"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="ptci"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Ptci"
-      mcc="311"
-      mnc="450"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.ptci.net"
-      mmsproxy=""
-      mmsport="6672"
-      mvno_type="spn"
-      mvno_match_data="ptci"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Ptci"
-      mcc="311"
-      mnc="450"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.ptci.net"
-      mmsproxy=""
-      mmsport="6672"
-      mvno_type="spn"
-      mvno_match_data="ptci"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <!-- Need two APNs for CDMA technologies: a default that is used normally -->
-  <!-- and a second APN to be used when DUN is required.  Even though the -->
-  <!-- parameters appear the same, the profileID sent to the radio when requesting -->
-  <!-- a DUN connection will be different -->
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="Verizon"
-      mcc="311"
-      mnc="480"
-      apn="internet"
-      authtype="3"
-      type="default,mms,supl,fota,cbs,dun"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      user_visible="false"
-  />
-
-  <!-- bearer 1, 2, 3, 9, 10, 11, 13, 14, 15, 18 -->
-  <apn carrier="Verizon"
-      mcc="311"
-      mnc="480"
-      apn="VZWINTERNET"
-      type="default,dun,supl"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      bearer_bitmask="1|2|3|9|10|11|13|14|15|18"
-      profile_id="0"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-  />
-
-  <!-- bearer 1, 2, 3, 9, 10, 11, 13, 14, 15, 18 -->
-  <apn carrier="Verizon"
-      mcc="311"
-      mnc="480"
-      apn="VZWADMIN"
-      type="fota"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      bearer_bitmask="1|2|3|9|10|11|13|14|15|18"
-      profile_id="3"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-      user_visible="false"
-  />
-
-  <!-- bearer 1, 2, 3, 9, 10, 11, 13, 14, 15, 18 -->
-  <apn carrier="Verizon"
-      mcc="311"
-      mnc="480"
-      apn="IMS"
-      type="ims,ia"
-      authtype="0"
-      protocol="IPV4V6"
-      roaming_protocol="IPV6"
-      bearer_bitmask="1|2|3|9|10|11|13|14|15|18"
-      profile_id="2"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-      user_visible="false"
-  />
-
-  <!-- bearer 1, 2, 3, 9, 10, 11, 13, 14, 15, 18 -->
-  <apn carrier="Verizon"
-      mcc="311"
-      mnc="480"
-      apn="VZWAPP"
-      type="cbs,mms"
-      authtype="0"
-      mmsc="http://mms.vtext.com/servlets/mms"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-      bearer_bitmask="1|2|3|9|10|11|13|14|15|18"
-      profile_id="4"
-      modem_cognitive="true"
-      max_conns="20"
-      max_conns_time="300"
-      user_visible="false"
-  />
-
-  <apn carrier="24-7 WAP"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      mmsc="http://mmsc.ctc.csky.us:6672"
-      mmsproxy="09.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="24-7 Wireless"
-  />
-
-  <apn carrier="24-7 WAP AT&amp;T"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      mmsc="http://mmsc.ctc.csky.us:6672"
-      mmsproxy="09.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="24-7 Wireless RPA"
-  />
-
-  <apn carrier="24-7 WAP T-Mobile"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      mmsc="http://mmsc.ctc.csky.us:6672"
-      mmsproxy="09.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="24-7 Wireless RPT"
-  />
-
-  <apn carrier="24-7 WAP Other networks"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      mmsc="http://mmsc.ctc.csky.us:6672"
-      mmsproxy="09.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="24-7 Wireless RPO"
-  />
-
-  <apn carrier="Mosaic WAP"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      type="default,mms"
-      mmsc="http://mmsc.ctc.csky.us:6672/"
-      mmsproxy="209.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="Mosaic Mobile"
-  />
-
-  <apn carrier="Mosaic WAP AT&amp;T"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      type="default,mms"
-      mmsc="http://mmsc.ctc.csky.us:6672/"
-      mmsproxy="209.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="Mosaic RPA"
-  />
-
-  <apn carrier="Mosaic WAP T-Mobile"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      type="default,mms"
-      mmsc="http://mmsc.ctc.csky.us:6672/"
-      mmsproxy="209.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="Mosaic RPT"
-  />
-
-  <apn carrier="Mosaic WAP Other networks"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      type="default,mms"
-      mmsc="http://mmsc.ctc.csky.us:6672/"
-      mmsproxy="209.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="Mosaic RPO"
-  />
-
-  <apn carrier="Norvado"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      type="default,mms"
-      mmsc="http://mmsc.ctc.csky.us:6672/"
-      mmsproxy="209.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="Norvado Wireless"
-  />
-
-  <apn carrier="Norvado AT&amp;T"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      type="default,mms"
-      mmsc="http://mmsc.ctc.csky.us:6672/"
-      mmsproxy="209.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="Norvado Wireless RPA"
-  />
-
-  <apn carrier="Norvado T-Mobile"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      type="default,mms"
-      mmsc="http://mmsc.ctc.csky.us:6672/"
-      mmsproxy="209.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="Norvado Wireless RPT"
-  />
-
-  <apn carrier="Norvado Other networks"
-      mcc="311"
-      mnc="500"
-      apn="wap"
-      type="default,mms"
-      mmsc="http://mmsc.ctc.csky.us:6672/"
-      mmsproxy="209.4.229.46"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="Norvado Wireless RPO"
-  />
-
-  <apn carrier="Blaze"
-      mcc="311"
-      mnc="530"
-      apn="mms.mymobiletxt.com"
-      type="default,mms"
-      mmsc="http://mms2.mymobiletxt.net"
-      mvno_type="spn"
-      mvno_match_data="Blaze Wireless"
-  />
-
-  <apn carrier="Duet Internet"
-      mcc="311"
-      mnc="530"
-      apn="wap.mymobiletxt.com"
-      type="default,mms"
-      protocol="IP"
-      mmsc="http://172.16.16.103/mms/"
-      mmsproxy="172.16.16.102"
-      mmsport="8080"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="580"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="580"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="580"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="581"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="581"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="581"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="582"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="582"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="582"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="583"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="583"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="583"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="584"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="584"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="584"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="585"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="585"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="585"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="586"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="586"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="586"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="587"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="587"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="587"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="588"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="588"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="588"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="589"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-      mtu="1422"
-  />
-
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="589"
-      apn="usccinternet"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-      mtu="1422"
-  />
-
-  <!-- bearer 4, 5, 6, 7, 8, 12 -->
-  <apn carrier="U.S. Cellular"
-      mcc="311"
-      mnc="589"
-      mmsc="http://mmsc1.uscc.net/mmsc/MMS"
-      type="default,mms,dun,hipri,fota"
-      authtype="3"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="4|5|6|7|8|12"
-      mtu="1422"
-  />
-
-  <apn carrier="gsc"
-      mcc="311"
-      mnc="590"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="gsc"
-      mmsc="http://mmsc1.gscdata.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Gsc IMS"
-      mcc="311"
-      mnc="590"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="gsc"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Gsc IMS"
-      mcc="311"
-      mnc="590"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="gsc"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Gsc FOTA"
-      mcc="311"
-      mnc="590"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="gsc"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Gsc FOTA"
-      mcc="311"
-      mnc="590"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="gsc"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Gsc"
-      mcc="311"
-      mnc="590"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc1.gscdata.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="gsc"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Gsc"
-      mcc="311"
-      mnc="590"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc1.gscdata.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="gsc"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="cox"
-      mcc="311"
-      mnc="600"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="cox"
-      mmsc="http://mms.cox.net/cox/mms.php"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Cox IMS"
-      mcc="311"
-      mnc="600"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="cox"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Cox IMS"
-      mcc="311"
-      mnc="600"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="cox"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Cox FOTA"
-      mcc="311"
-      mnc="600"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="cox"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Cox FOTA"
-      mcc="311"
-      mnc="600"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="cox"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Cox"
-      mcc="311"
-      mnc="600"
-      apn="VZWINTERNET"
-      mmsc="http://mms.cox.net/cox/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="cox"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Cox"
-      mcc="311"
-      mnc="600"
-      apn="VZWINTERNET"
-      mmsc="http://mms.cox.net/cox/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="cox"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="srtcomm"
-      mcc="311"
-      mnc="610"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="srtcomm"
-      mmsc="http://mms.iot1.com/srt/mms.php"
-      mmsproxy="mms.iot1.com"
-      mmsport="9201"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Srtcomm IMS"
-      mcc="311"
-      mnc="610"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="srtcomm"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Srtcomm IMS"
-      mcc="311"
-      mnc="610"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="srtcomm"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Srtcomm FOTA"
-      mcc="311"
-      mnc="610"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="srtcomm"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Srtcomm FOTA"
-      mcc="311"
-      mnc="610"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="srtcomm"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Srtcomm"
-      mcc="311"
-      mnc="610"
-      apn="VZWINTERNET"
-      mmsc="http://mms.iot1.com/srt/mms.php"
-      mmsproxy="mms.iot1.com"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="srtcomm"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Srtcomm"
-      mcc="311"
-      mnc="610"
-      apn="VZWINTERNET"
-      mmsc="http://mms.iot1.com/srt/mms.php"
-      mmsproxy="mms.iot1.com"
-      mmsport="9201"
-      mvno_type="spn"
-      mvno_match_data="srtcomm"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="unitedwireless"
-      mcc="311"
-      mnc="650"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="unitedwireless"
-      mmsc="http://mms.unitedwireless.com/united/mms.php"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="United IMS"
-      mcc="311"
-      mnc="650"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="unitedwireless"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="United IMS"
-      mcc="311"
-      mnc="650"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="unitedwireless"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="United FOTA"
-      mcc="311"
-      mnc="650"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="unitedwireless"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="United FOTA"
-      mcc="311"
-      mnc="650"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="unitedwireless"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Unitedwireless"
-      mcc="311"
-      mnc="650"
-      apn="VZWINTERNET"
-      mmsc="http://mms.unitedwireless.com/united/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="unitedwireless"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Unitedwireless"
-      mcc="311"
-      mnc="650"
-      apn="VZWINTERNET"
-      mmsc="http://mms.unitedwireless.com/united/mms.php"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="unitedwireless"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="pinebelt"
-      mcc="311"
-      mnc="670"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="pinebelt"
-      mmsc="http://mmsc.pinebelt.csky.us:6672/"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Pinebelt IMS"
-      mcc="311"
-      mnc="670"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="pinebelt"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Pinebelt IMS"
-      mcc="311"
-      mnc="670"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="pinebelt"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Pinebelt FOTA"
-      mcc="311"
-      mnc="670"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="pinebelt"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Pinebelt FOTA"
-      mcc="311"
-      mnc="670"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="pinebelt"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-   />
-
-  <apn carrier="Pinebelt"
-      mcc="311"
-      mnc="670"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.pinebelt.csky.us:6672/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="pinebelt"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Pinebelt"
-      mcc="311"
-      mnc="670"
-      apn="VZWINTERNET"
-      mmsc="http://mmsc.pinebelt.csky.us:6672/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="pinebelt"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-   />
-  <apn carrier="TelAlaska Cellular"
-      mcc="311"
-      mnc="740"
-      apn="akcell.mobi"
-      type="default"
-      protocol="IP"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="MobileNation"
-      mcc="311"
-      mnc="910"
-      apn="mymn4g.net"
-      server="*"
-      mmsport="8081"
-      mmsproxy="mms.mymn3g.net"
-      mmsc="http://mms.mymn3g.net"
-      type="default,internet,admin,fota,dun,mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="charitonvalley"
-      mcc="311"
-      mnc="920"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="charitonvalley"
-      mmsc="http://mms.cvalley.net"
-      mmsproxy=""
-      mmsport="80"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Chariton IMS"
-      mcc="311"
-      mnc="920"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="charitonvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Chariton IMS"
-      mcc="311"
-      mnc="920"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="charitonvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Chariton FOTA"
-      mcc="311"
-      mnc="920"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="charitonvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Chariton FOTA"
-      mcc="311"
-      mnc="920"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="charitonvalley"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Chariton valley"
-      mcc="311"
-      mnc="920"
-      apn="VZWINTERNET"
-      mmsc="http://mms.cvalley.net"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="charitonvalley"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Chariton valley"
-      mcc="311"
-      mnc="920"
-      apn="VZWINTERNET"
-      mmsc="http://mms.cvalley.net"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="charitonvalley"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Syringa Wireless"
-      mcc="311"
-      mnc="930"
-      apn="internet.syringawireless.com"
-      server="*"
-      mmsport="80"
-      mmsproxy=""
-      mmsc="http://mms.rinawireless.com"
-      type="default,internet,admin,fota,dun,mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="custer"
-      mcc="312"
-      mnc="040"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="custer"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Custer IMS"
-      mcc="312"
-      mnc="040"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="custer"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Custer IMS"
-      mcc="312"
-      mnc="040"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="custer"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Custer FOTA"
-      mcc="312"
-      mnc="040"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="custer"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Custer FOTA"
-      mcc="312"
-      mnc="040"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="custer"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Custer"
-      mcc="312"
-      mnc="040"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="custer"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Custer"
-      mcc="312"
-      mnc="040"
-      apn="VZWINTERNET"
-      mmsc="http://mms.rinawireless.com"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="custer"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="chatmobility"
-      mcc="312"
-      mnc="160"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="chatmobility"
-      mmsc="http://mms.chatmobility.com/mms/"
-      mmsproxy=""
-      mmsport="80"
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Chatmobility IMS"
-      mcc="312"
-      mnc="160"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="chatmobility"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Chatmobility IMS"
-      mcc="312"
-      mnc="160"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="chatmobility"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="chatmobility FOTA"
-      mcc="312"
-      mnc="160"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="chatmobility"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="chatmobility FOTA"
-      mcc="312"
-      mnc="160"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="chatmobility"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="chatmobility"
-      mcc="312"
-      mnc="160"
-      apn="VZWINTERNET"
-      mmsc="http://mms.chatmobility.com/mms/"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="chatmobility"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="chatmobility"
-      mcc="312"
-      mnc="160"
-      apn="VZWINTERNET"
-      mmsc="http://mms.chatmobility.com/mms/"
-      mmsproxy=""
-      mmsport="80"
-      mvno_type="spn"
-      mvno_match_data="chatmobility"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="NexTech Ota"
-      mcc="312"
-      mnc="420"
-      apn="admin.lte.ntwls.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://mms.ntwls.net/nex-tech/mms.php"
-      type="admin,fota,ota"
-      bearer_bitmask="14"
-      protocol="IP"
-  />
-
-  <apn carrier="NexTech Ota"
-      mcc="312"
-      mnc="420"
-      apn="admin.lte.ntwls.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://mms.ntwls.net/nex-tech/mms.php"
-      type="admin,fota,ota"
-      bearer_bitmask="13"
-      protocol="IP"
-  />
-
-  <apn carrier="NexTech Wireless"
-      mcc="312"
-      mnc="420"
-      apn="internet.lte.ntwls.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://mms.ntwls.net/nex-tech/mms.php"
-      type="default,internet,supl,hipri,mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="NexTech Tether"
-      mcc="312"
-      mnc="420"
-      apn="modem.lte.ntwls.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://mms.ntwls.net/nex-tech/mms.php"
-      type="dun,pam"
-      bearer_bitmask="14"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="NexTech Tether"
-      mcc="312"
-      mnc="420"
-      apn="modem.lte.ntwls.com"
-      server="*"
-      mmsport=""
-      mmsproxy=""
-      mmsc="http://mms.ntwls.net/nex-tech/mms.php"
-      type="dun,pam"
-      bearer_bitmask="13"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Blue Wireless"
-      mcc="312"
-      mnc="570"
-      apn="Blue Hotspot"
-      server="*"
-      mmsport="8514"
-      mmsproxy=""
-      user="%M@dun.bluehandset.com"
-      password="wirelessblue"
-      mmsc="http://mms.blueunlimited.com"
-      type="default,dun,mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="openmobile"
-      mcc="330"
-      mnc="000"
-      apn="CdmaNai"
-      mvno_type="spn"
-      mvno_match_data="openmobile"
-      mmsc="http://mms.openmobilepr.com:1981/"
-      mmsproxy=""
-      mmsport=""
-      type="mms"
-      carrier_enabled="false"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="6"
-  />
-
-  <apn carrier="Openmobile IMS"
-      mcc="330"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="openmobile"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Openmobile IMS"
-      mcc="330"
-      mnc="000"
-      apn="IMS"
-      type="ims,ia"
-      mvno_type="spn"
-      mvno_match_data="openmobile"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Openmobile FOTA"
-      mcc="330"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="openmobile"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Openmobile FOTA"
-      mcc="330"
-      mnc="000"
-      apn="VZWADMIN"
-      type="fota"
-      mvno_type="spn"
-      mvno_match_data="openmobile"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Openmobile"
-      mcc="330"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.openmobilepr.com:1981/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="openmobile"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="13"
-  />
-
-  <apn carrier="Openmobile"
-      mcc="330"
-      mnc="000"
-      apn="VZWINTERNET"
-      mmsc="http://mms.openmobilepr.com:1981/"
-      mmsproxy=""
-      mmsport=""
-      mvno_type="spn"
-      mvno_match_data="openmobile"
-      type="default,mms,dun,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      bearer_bitmask="14"
-  />
-
-  <apn carrier="Puerto Rico:Claro:LTE"
-      mcc="330"
-      mnc="110"
-      apn="lte.claropr.com"
-      type="default"
-      authtype="1"
-  />
-
-  <apn carrier="Puerto Rico:Claro:Banda Ancha"
-      mcc="330"
-      mnc="110"
-      apn="lte.claropr.com"
-      type="dun"
-      authtype="1"
-  />
-
-  <apn carrier="MMS CLARO"
-      mcc="330"
-      mnc="110"
-      apn="mmslte.claropr.com"
-      mmsproxy="10.50.38.3"
-      mmsport="8799"
-      mmsc="http://mmsg.claropr.com:10021/mmsc"
-      authtype='1'
-      type="mms"
-  />
-
-  <apn carrier="TRACFONE"
-      mcc="330"
-      mnc="110"
-      apn="wap.tracfone"
-      type="default,supl,hipri,fota"
-      mvno_type="gid"
-      mvno_match_data="deff"
-  />
-
-  <apn carrier="TRACFONE MMS"
-      mcc="330"
-      mnc="110"
-      apn="wap.tracfone"
-      mmsproxy="10.50.38.3"
-      mmsport="8799"
-      mmsc="http://mmsg.claropr.com:10021/mmsc"
-      type="mms"
-      mvno_type="gid"
-      mvno_match_data="deff"
-  />
-
-    <apn carrier="TRACFONE"
-      mcc="330"
-      mnc="110"
-      apn="wap.tracfone"
-      type="default,supl,hipri,fota"
-      mvno_type="gid"
-      mvno_match_data="ddff"
-  />
-
-  <apn carrier="TRACFONE MMS"
-      mcc="330"
-      mnc="110"
-      apn="wap.tracfone"
-      mmsproxy="10.50.38.3"
-      mmsport="8799"
-      mmsc="http://mmsg.claropr.com:10021/mmsc"
-      type="mms"
-      mvno_type="gid"
-      mvno_match_data="ddff"
-  />
-
-  <apn carrier="Internet"
-      mcc="334"
-      mnc="020"
-      apn="internet.itelcel.com"
-      user="webgprs"
-      password="webgprs2002"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-
-  <apn carrier="Mensajes Multimedia"
-      mcc="334"
-      mnc="020"
-      apn="mms.itelcel.com"
-      user="mmsgprs"
-      password="mmsgprs2003"
-      mmsc="http://mms.itelcel.com/servlets/mms"
-      mmsproxy="148.233.151.240"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-
-  <apn carrier="Movistar INTERNET"
-      mcc="334"
-      mnc="03"
-      apn="internet.movistar.mx"
-      user="movistar"
-      password="movistar"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="334"
-      mnc="03"
-      apn="mms.movistar.mx"
-      user="movistar"
-      password="movistar"
-      mmsc="http://mms.movistar.mx"
-      mmsproxy="10.2.20.1"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="334"
-      mnc="030"
-      apn="internet.movistar.mx"
-      user="movistar"
-      password="movistar"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="334"
-      mnc="030"
-      apn="mms.movistar.mx"
-      user="movistar"
-      password="movistar"
-      mmsc="http://mms.movistar.mx"
-      mmsproxy="10.2.20.1"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Iusacell Internet"
-      mcc="334"
-      mnc="050"
-      apn="web.iusacellgsm.mx"
-      user="iusacellgsm"
-      password="iusacellgsm"
-      type="default,supl"
-  />
-
-  <apn carrier="Iusacell MMS"
-      mcc="334"
-      mnc="050"
-      apn="mms.iusacellgsm.mx"
-      user="mmsiusacellgsm"
-      password="mmsiusacellgsm"
-      mmsc="http://mms.iusacell3g.com/"
-      type="mms"
-  />
-
-  <apn carrier='MMS'
-      mcc='334'
-      mnc='090'
-      apn='mms.nexteldata.com.mx'
-      authtype='0'
-      mmsc='http://3gmms.nexteldata.com.mx'
-      mmsproxy='129.192.129.104'
-      mmsport='8080'
-      type='mms'
-  />
-
-  <apn carrier='Modem'
-      mcc='334'
-      mnc='090'
-      apn='modem.nexteldata.com.mx'
-      authtype='0'
-      type='dun'
-  />
-
-  <apn carrier='Navegación'
-      mcc='334'
-      mnc='090'
-      apn='wap.nexteldata.com.mx'
-      authtype='0'
-      type='default,supl'
-  />
-
-  <apn carrier="INTERNET Digicel"
-      mcc="338"
-      mnc="05"
-      apn="web"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Digicel"
-      mcc="338"
-      mnc="05"
-      apn="wap"
-      mmsproxy="172.16.7.12"
-      mmsport="8080"
-      mmsc="http://mms.digicelgroup.com"
-      type="mms"
-  />
-
-  <apn carrier="INTERNET Digicel"
-      mcc="338"
-      mnc="050"
-      apn="web"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Digicel"
-      mcc="338"
-      mnc="050"
-      apn="wap"
-      mmsproxy="172.16.7.12"
-      mmsport="8080"
-      mmsc="http://mms.digicelgroup.com"
-      type="mms"
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="338"
-      mnc="18"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="338"
-      mnc="18"
-      apn="multimedia"
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier="Lime Internet Prepaid"
-      mcc="338"
-      mnc="18"
-      apn="ppinternet"
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Prepaid MMS"
-      mcc="338"
-      mnc="18"
-      apn="ppmms"
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="338"
-      mnc="180"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="338"
-      mnc="180"
-      apn="multimedia"
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier="Lime Internet Prepaid"
-      mcc="338"
-      mnc="180"
-      apn="ppinternet"
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Prepaid MMS"
-      mcc="338"
-      mnc="180"
-      apn="ppmms"
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier="Claro Web"
-      mcc="338"
-      mnc="070"
-      apn="internet.ideasclaro.com.jm"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Claro MMS"
-      mcc="338"
-      mnc="070"
-      apn="mms.ideasclaro.com.jm"
-      user=""
-      password=""
-      mmsproxy="190.80.147.118"
-      mmsport="8080"
-      mmsc="http://mms.ideasclaro.com.jm/mms/wapenc"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="338"
-      mnc="180"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="338"
-      mnc="180"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Orange World Caraïbe"
-      mcc="340"
-      mnc="01"
-      apn="orangewap"
-      user="orange"
-      password="wap"
-      proxy="10.0.0.10"
-      port="8082"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange MMS Caraïbe"
-      mcc="340"
-      mnc="01"
-      apn="orangewap"
-      user="orange"
-      password="orange"
-      mmsc="http://193.251.160.246/servlets/mms"
-      mmsproxy="10.0.0.10"
-      mmsport="8082"
-      type="mms"
-  />
-
-  <apn carrier="Digicel Web"
-      mcc="340"
-      mnc="20"
-      apn="web.digicelfr.com"
-      mmsc="http://mmc.digiceltt.com/servlets/mms"
-      mmsproxy="172.20.6.12"
-      mmsport="8080"
-      type="default,mms,supl"
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="342"
-      mnc="60"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="342"
-      mnc="60"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='Barbado:Lime:Internet'
-      mcc='342'
-      mnc='600'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier="Barbados:Lime:Mms"
-      mcc="342"
-      mnc="600"
-      apn="multimedia"
-      authtype="1"
-      mmsc="http://mmsc"
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <apn carrier='Barbado:Lime:Modem'
-      mcc='342'
-      mnc='600'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="344"
-      mnc="92"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="344"
-      mnc="92"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='Antigua:Lime:Internet'
-      mcc='344'
-      mnc='920'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier='Antigua:Lime:Mms'
-      mcc='344'
-      mnc='920'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier='Antigua:Lime:Modem'
-      mcc='344'
-      mnc='920'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="346"
-      mnc="14"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="346"
-      mnc="14"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='Cayman Islands:Lime:Internet'
-      mcc='346'
-      mnc='140'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier='Cayman Islands:Lime:Modem'
-      mcc='346'
-      mnc='140'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier='Cayman Islands:Mms'
-      mcc='346'
-      mnc='140'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="348"
-      mnc="17"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="348"
-      mnc="17"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='Bvi:Digicel:Internet'
-      mcc='348'
-      mnc='77'
-      apn='wap.digicelbvi.com'
-      authtype='1'
-      type='default'
-  />
-
-  <apn carrier='Bvi:Digicel:Mms'
-      mcc='348'
-      mnc='77'
-      apn='wap.digicelbvi.com'
-      authtype='1'
-      mmsc='http://mmc.digiceljamaica.com/servlets/mms'
-      mmsproxy='172.16.7.12'
-      mmsport='9201'
-      type='mms'
-      user='wapbvi'
-      password='wapbvi'
-  />
-
-  <apn carrier='Bvi:Digicel:Modem'
-      mcc='348'
-      mnc='77'
-      apn='wap.digicelbvi.com'
-      port='8080'
-      authtype='1'
-      proxy='172.16.7.12'
-      mmsc='http://wapdigicel.com'
-      type='dun'
-      user='wapbvi'
-      password='wapbvi'
-  />
-
-  <apn carrier='Bvi:Lime:Internet'
-      mcc='348'
-      mnc='170'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier='Bvi:Lime:Mms'
-      mcc='348'
-      mnc='170'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier='Bvi:Lime:Modem'
-      mcc='348'
-      mnc='170'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="352"
-      mnc="11"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="352"
-      mnc="11"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='Grenada:Lime:Internet'
-      mcc='352'
-      mnc='110'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier='Grenada:Lime:Mms'
-      mcc='352'
-      mnc='110'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier='Grenada:Lime:Modem'
-      mcc='352'
-      mnc='110'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="354"
-      mnc="86"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="354"
-      mnc="86"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='Monserrat:Lime:Internet'
-      mcc='354'
-      mnc='860'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier='Monserrat:Lime:Mms'
-      mcc='354'
-      mnc='860'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier='Monserrat:Lime:Modem'
-      mcc='354'
-      mnc='860'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="356"
-      mnc="11"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="356"
-      mnc="11"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='St Kitts And Nevis:Lime:Internet'
-      mcc='356'
-      mnc='110'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier='St Kitts And Nevis:Lime:Mms'
-      mcc='356'
-      mnc='110'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier='St Kitts And Nevis:Lime:Modem'
-      mcc='356'
-      mnc='110'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="358"
-      mnc="11"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="358"
-      mnc="11"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="360"
-      mnc="11"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier='St Lucia:Lime:Internet'
-      mcc='358'
-      mnc='110'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier='St Lucia:Lime:Mms'
-      mcc='358'
-      mnc='110'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier='St Lucia:Lime:Modem'
-      mcc='358'
-      mnc='110'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="360"
-      mnc="11"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='St Vincent:Lime:Internet'
-      mcc='360'
-      mnc='110'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier='St Vincent:Lime:Mms'
-      mcc='360'
-      mnc='110'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier='St Vincent:Lime:Modem'
-      mcc='360'
-      mnc='110'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier='Curacao:Digicel:Internet'
-      mcc='362'
-      mnc='69'
-      apn='web.digicelcuracao.com'
-      authtype='1'
-      type='default'
-  />
-
-  <apn carrier='Curacao:Digicel:Mms'
-      mcc='362'
-      mnc='69'
-      apn='wap'
-      authtype='1'
-      mmsc='http://mms.digicelgroup.com'
-      mmsproxy='172.16.7.12'
-      mmsport='9201'
-      type='mms'
-  />
-
-  <apn carrier='Curacao:Digicel:Modem'
-      mcc='362'
-      mnc='69'
-      apn='wap'
-      port='8080'
-      authtype='1'
-      proxy='172.16.7.12'
-      mmsc='http://wapdigicel.com'
-      type='dun'
-  />
-
-  <apn carrier="INTERNET Aruba"
-      mcc="363"
-      mnc="02"
-      apn="web.digicelaruba.com"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Digicel"
-      mcc="363"
-      mnc="02"
-      apn="wap"
-      user=""
-      password=""
-      mmsproxy="172.16.7.12"
-      mmsport="8080"
-      mmsc="http://mms.digicelgroup.com"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="INTERNET Aruba"
-      mcc="363"
-      mnc="020"
-      apn="web.digicelaruba.com"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Digicel"
-      mcc="363"
-      mnc="020"
-      apn="wap"
-      user=""
-      password=""
-      mmsproxy="172.16.7.12"
-      mmsport="8080"
-      mmsc="http://mms.digicelgroup.com"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="365"
-      mnc="84"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="365"
-      mnc="84"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='Anguilla:Lime:Internet'
-      mcc='365'
-      mnc='840'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier='Anguilla:Lime:Mms'
-      mcc='365'
-      mnc='840'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier='Anguilla:Lime:Modem'
-      mcc='365'
-      mnc='840'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="366"
-      mnc="11"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="366"
-      mnc="11"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='Dominica:Lime:Internet'
-      mcc='366'
-      mnc='110'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='default'
-  />
-
-  <apn carrier='Dominica:Lime:Mms'
-      mcc='366'
-      mnc='110'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier='Dominica:Lime:Modem'
-      mcc='366'
-      mnc='110'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier="Internet"
-      mcc="368"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-  />
-
-
-  <apn carrier="Cubacel MMS"
-      mcc="368"
-      mnc="01"
-      apn="mms"
-      mmsproxy="200.13.145.52"
-      mmsport="8080"
-      mmsc="http://mms.cubacel.cu"
-      type="mms"
-  />
-
-  <apn carrier="Orange Internet (LTE)"
-      mcc="370"
-      mnc="01"
-      apn="orangeinternet"
-      type="ia,default,supl"
-  />
-
-  <apn carrier="Orange net (3G)"
-      mcc="370"
-      mnc="01"
-      apn="orangenet.com.do"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange MMS"
-      mcc="370"
-      mnc="01"
-      apn="orangeworld"
-      user="orange"
-      password="orange"
-      mmsproxy="172.16.126.70"
-      mmsport="8080"
-      mmsc="http://mms.orange.com.do/servlets/mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Internet Móvil Claro"
-      mcc="370"
-      mnc="02"
-      apn="internet.ideasclaro.com.do"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="370"
-      mnc="02"
-      apn="internet.ideasclaro.com.do"
-      mmsc="http://mms.ideasclaro.com.do/mms/wapenc"
-      type="mms"
-  />
-
-  <apn carrier="Internet Móvil Claro"
-      mcc="370"
-      mnc="020"
-      apn="internet.ideasclaro.com.do"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="370"
-      mnc="020"
-      apn="internet.ideasclaro.com.do"
-      mmsc="http://mms.ideasclaro.com.do/mms/wapenc"
-      type="mms"
-  />
-
-  <apn carrier="Viva Edge (GSM)"
-      mcc="370"
-      mnc="04"
-      apn="edge.viva.net.do"
-      proxy="192.168.16.10"
-      port="9401"
-      user="viva"
-      password="viva"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Viva MMS"
-      mcc="370"
-      mnc="04"
-      apn="mms.viva.net.do"
-      user="viva"
-      password="viva"
-      mmsproxy="192.168.16.10"
-      mmsport="9401"
-      mmsc="http://10.200.16.4/mms/wapenc"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier='Haiti:Digicel:Internet'
-      mcc='372'
-      mnc='02'
-      apn='wap.digicelha.com'
-      authtype='1'
-      type='default'
-  />
-
-  <apn carrier='Haiti:Digicel:Mms'
-      mcc='372'
-      mnc='02'
-      apn='wap.digicelha.com'
-      authtype='1'
-      mmsc='http://mmc.digicelhaiti.com/servlets/mms'
-      mmsproxy='172.20.200.12'
-      mmsport='9201'
-      type='mms'
-      user='wapha'
-      password='wap01ha'
-  />
-
-  <apn carrier='Haiti:Digicel:Modem'
-      mcc='372'
-      mnc='02'
-      apn='wap.digicelha.com'
-      port='8080'
-      authtype='1'
-      proxy='172.20.200.12'
-      mmsc='http://wapdigicel.com'
-      type='dun'
-      user='wapha'
-      password='wap01ha'
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="12"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="12"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="120"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="120"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="121"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="121"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="122"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="122"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="123"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="123"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="124"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="124"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="125"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="125"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="126"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="126"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="127"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="127"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="128"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="128"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bmobile internet"
-      mcc="374"
-      mnc="129"
-      apn="internet"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Bmobile mms"
-      mcc="374"
-      mnc="129"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="192.168.210.104"
-      mmsport="8080"
-      mmsc="http://192.168.210.104/mmrelay.app"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="INTERNET Trinidad"
-      mcc="374"
-      mnc="13"
-      apn="web.digiceltt.com"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Trinidad"
-      mcc="374"
-      mnc="13"
-      apn="wap.digiceltt.com"
-      user="wap"
-      password="wap"
-      mmsproxy="172.20.6.12"
-      mmsport="8080"
-      mmsc="http://mmc.digiceltt.com/servlets/mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="INTERNET Trinidad"
-      mcc="374"
-      mnc="130"
-      apn="web.digiceltt.com"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Trinidad"
-      mcc="374"
-      mnc="130"
-      apn="wap.digiceltt.com"
-      user="wap"
-      password="wap"
-      mmsproxy="172.20.6.12"
-      mmsport="8080"
-      mmsc="http://mmc.digiceltt.com/servlets/mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Lime Internet Postpaid"
-      mcc="376"
-      mnc="35"
-      apn="internet"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Lime Postpaid MMS"
-      mcc="376"
-      mnc="35"
-      apn="multimedia"
-      user=""
-      password=""
-      mmsproxy="10.20.5.34"
-      mmsport="8799"
-      mmsc="http://mmsc"
-      type="mms"
-  />
-
-  <apn carrier='Turks And Caicos:Lime:Internet'
-      mcc='376'
-      mnc='350'
-      apn='internet'
-      authtype='1'
-      type='default'
-  />
-
-  <apn carrier='Turks And Caicos:Lime:Mms'
-      mcc='376'
-      mnc='350'
-      apn='multimedia'
-      authtype='1'
-      mmsc='http://mmsc'
-      mmsproxy='10.20.5.34'
-      mmsport='8799'
-      type='mms'
-  />
-
-  <apn carrier='Turks And Caicos:Lime:Modem'
-      mcc='376'
-      mnc='350'
-      apn='internet'
-      authtype='1'
-      mmsc='http://www.time4lime.com/'
-      type='dun'
-  />
-
-  <apn carrier="Azercell"
-      mcc="400"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Bakcell"
-      mcc="400"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="FONEX"
-      mcc="400"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Nar Mobile"
-      mcc="400"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Beeline Internet"
-      mcc="401"
-      mnc="01"
-      apn="internet.beeline.kz"
-      user="@internet.beeline"
-      password="beeline"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Beeline MMS"
-      mcc="401"
-      mnc="01"
-      apn="mms.beeline.kz"
-      user="@mms.beeline"
-      password="beeline"
-      authtype="1"
-      mmsc="http://mms.beeline.kz/mms/wapenc"
-      mmsproxy="172.27.6.93"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="DOS Internet"
-      mcc="401"
-      mnc="01"
-      apn="internet.dos.kz"
-      type="default,supl"
-  />
-
-  <apn carrier="Kcell Internet"
-      mcc="401"
-      mnc="02"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Kcell MMS"
-      mcc="401"
-      mnc="02"
-      apn="mms"
-      mmsc="http://mms.kcell.kz/post"
-      mmsproxy="195.47.255.7"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="ALTEL INTERNET"
-      mcc="401"
-      mnc="07"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Tele2 Internet"
-      mcc="401"
-      mnc="77"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Tele2 MMS"
-      mcc="401"
-      mnc="77"
-      apn="mms"
-      mmsc="http://mms.tele2.kz/mms/wapenc"
-      mmsproxy="10.1.26.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="B-Mobile"
-      mcc="402"
-      mnc="11"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="TashiCell"
-      mcc="402"
-      mnc="77"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="01"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="01"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="01"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="02"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="02"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="02"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="03"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="03"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="03"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="04"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="04"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="04"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="05"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="05"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="05"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="07"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="07"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="07"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="404"
-      mnc="09"
-      apn="mms"
-      mmsc="http://10.239.221.47/mms/"
-      mmsproxy="10.239.221.7"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance Net"
-      mcc="404"
-      mnc="09"
-      apn="smartnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance WAP"
-      mcc="404"
-      mnc="09"
-      apn="smartwap"
-      proxy="10.239.221.7"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="10"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="10"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="10"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="11"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="11"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="11"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="12"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="12"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="12"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="13"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="13"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="13"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="14"
-      apn="mmsc"
-      mmsc="http://10.11.12.180"
-      mmsproxy="10.11.12.13"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="14"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="14"
-      apn="imis"
-      proxy="10.11.12.13"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="15"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="15"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="15"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="16"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="16"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="16"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Postpaid"
-      mcc="404"
-      mnc="17"
-      apn="aircelwebpost"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Postpaid"
-      mcc="404"
-      mnc="17"
-      apn="aircelwappost"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Prepaid"
-      mcc="404"
-      mnc="17"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Prepaid"
-      mcc="404"
-      mnc="17"
-      apn="aircelweb"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel Internet (40417)"
-      mcc="404"
-      mnc="17"
-      apn="aircelgprs"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="404"
-      mnc="17"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="404"
-      mnc="18"
-      apn="mms"
-      mmsc="http://10.239.221.47/mms/"
-      mmsproxy="10.239.221.7"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance Net"
-      mcc="404"
-      mnc="18"
-      apn="smartnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance WAP"
-      mcc="404"
-      mnc="18"
-      apn="smartwap"
-      proxy="10.239.221.7"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance Internet (40418)"
-      mcc="404"
-      mnc="18"
-      apn="rcomnet"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="19"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="19"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="19"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="20"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="20"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="20"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Loop Mobile MMS"
-      mcc="404"
-      mnc="21"
-      apn="mizone"
-      password="mmsc"
-      mmsc="http://mms.loopmobile.in:8080"
-      mmsproxy="10.0.0.10"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Loop Mobile"
-      mcc="404"
-      mnc="21"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="22"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="22"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="22"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="24"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="24"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="24"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Postpaid"
-      mcc="404"
-      mnc="25"
-      apn="aircelwebpost"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Postpaid"
-      mcc="404"
-      mnc="25"
-      apn="aircelwappost"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Prepaid"
-      mcc="404"
-      mnc="25"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Prepaid"
-      mcc="404"
-      mnc="25"
-      apn="aircelweb"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel Internet (40425)"
-      mcc="404"
-      mnc="25"
-      apn="aircelgprs"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="404"
-      mnc="25"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="27"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="27"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="27"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-
-  <apn carrier="Aircel-GPRS-Postpaid"
-      mcc="404"
-      mnc="28"
-      apn="aircelwebpost"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Postpaid"
-      mcc="404"
-      mnc="28"
-      apn="aircelwappost"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Prepaid"
-      mcc="404"
-      mnc="28"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Prepaid"
-      mcc="404"
-      mnc="28"
-      apn="aircelweb"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel Internet (40428)"
-      mcc="404"
-      mnc="28"
-      apn="aircelgprs"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="404"
-      mnc="28"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Postpaid"
-      mcc="404"
-      mnc="29"
-      apn="aircelwebpost"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Postpaid"
-      mcc="404"
-      mnc="29"
-      apn="myaircelpost"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Prepaid"
-      mcc="404"
-      mnc="29"
-      apn="myaircel"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Prepaid"
-      mcc="404"
-      mnc="29"
-      apn="aircelweb"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel Internet (40429)"
-      mcc="404"
-      mnc="29"
-      apn="aircelgprs"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel WAP (40429)"
-      mcc="404"
-      mnc="29"
-      apn="aircelwap"
-      type="default,supl"
-      proxy="172.17.83.69"
-      port="8080"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="404"
-      mnc="29"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="30"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="30"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="30"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="31"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="31"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="31"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Postpaid"
-      mcc="404"
-      mnc="33"
-      apn="aircelwebpost"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Postpaid"
-      mcc="404"
-      mnc="33"
-      apn="myaircelpost"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Prepaid"
-      mcc="404"
-      mnc="33"
-      apn="myaircel"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Prepaid"
-      mcc="404"
-      mnc="33"
-      apn="aircelweb"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel Internet (40433)"
-      mcc="404"
-      mnc="33"
-      apn="aircelgprs"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel WAP (40433)"
-      mcc="404"
-      mnc="33"
-      apn="aircelwap"
-      type="default,supl"
-      proxy="172.17.83.69"
-      port="8080"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="404"
-      mnc="33"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="34"
-      apn="bsnlnet"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="34"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="34"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Postpaid"
-      mcc="404"
-      mnc="35"
-      apn="aircelwebpost"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Postpaid"
-      mcc="404"
-      mnc="35"
-      apn="aircelwappost"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Prepaid"
-      mcc="404"
-      mnc="35"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Prepaid"
-      mcc="404"
-      mnc="35"
-      apn="aircelweb"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel Internet (40435)"
-      mcc="404"
-      mnc="35"
-      apn="aircelgprs"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="404"
-      mnc="35"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="404"
-      mnc="36"
-      apn="mms"
-      mmsc="http://10.239.221.47/mms/"
-      mmsproxy="10.239.221.7"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance Net"
-      mcc="404"
-      mnc="36"
-      apn="smartnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance WAP"
-      mcc="404"
-      mnc="36"
-      apn="smartwap"
-      proxy="10.239.221.7"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance Internet (40436)"
-      mcc="404"
-      mnc="36"
-      apn="rcomnet"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel-GPRS-Postpaid"
-      mcc="404"
-      mnc="37"
-      apn="aircelwebpost"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Postpaid"
-      mcc="404"
-      mnc="37"
-      apn="aircelwappost"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Prepaid"
-      mcc="404"
-      mnc="37"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Prepaid"
-      mcc="404"
-      mnc="37"
-      apn="aircelweb"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel Internet (40437)"
-      mcc="404"
-      mnc="37"
-      apn="aircelgprs"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="404"
-      mnc="37"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="38"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="38"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="38"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="40"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="40"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="40"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Postpaid"
-      mcc="404"
-      mnc="41"
-      apn="aircelgprs.po"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Prepaid"
-      mcc="404"
-      mnc="41"
-      apn="aircelgprs.pr"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Postpaid"
-      mcc="404"
-      mnc="41"
-      apn="aircelwap.po"
-      proxy="192.168.35.201"
-      port="8081"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Prepaid"
-      mcc="404"
-      mnc="41"
-      apn="aircelwap.pr"
-      proxy="192.168.35.201"
-      port="8081"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel Internet (40441)"
-      mcc="404"
-      mnc="41"
-      apn="aircelgprs"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel WAP (40441)"
-      mcc="404"
-      mnc="41"
-      apn="aircelwap"
-      type="default,supl"
-      proxy="172.17.83.69"
-      port="8080"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS-Postpaid"
-      mcc="404"
-      mnc="41"
-      apn="aircelmms.po"
-      mmsc="http://mmsc/mmrelay.app"
-      mmsproxy="192.168.35.196"
-      mmsport="8081"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS-Prepaid"
-      mcc="404"
-      mnc="41"
-      apn="aircelmms.pr"
-      mmsc="http://mmsc/mmrelay.app"
-      mmsproxy="192.168.35.196"
-      mmsport="8081"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel MMS (40441)"
-      mcc="404"
-      mnc="41"
-      apn="aircelmms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      mmsc="http://172.17.83.67/servlets/mms"
-      type="mms"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel-GPRS-Postpaid"
-      mcc="404"
-      mnc="42"
-      apn="aircelgprs.po"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Prepaid"
-      mcc="404"
-      mnc="42"
-      apn="aircelgprs.pr"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Postpaid"
-      mcc="404"
-      mnc="42"
-      apn="aircelwap.po"
-      proxy="192.168.35.201"
-      port="8081"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Prepaid"
-      mcc="404"
-      mnc="42"
-      apn="aircelwap.pr"
-      proxy="192.168.35.201"
-      port="8081"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel Internet (40442)"
-      mcc="404"
-      mnc="42"
-      apn="aircelgprs"
-      type="default,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Aircel-MMS-Postpaid"
-      mcc="404"
-      mnc="42"
-      apn="aircelmms.po"
-      mmsc="http://mmsc/mmrelay.app"
-      mmsproxy="192.168.35.196"
-      mmsport="8081"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS-Prepaid"
-      mcc="404"
-      mnc="42"
-      apn="aircelmms.pr"
-      mmsc="http://mmsc/mmrelay.app"
-      mmsproxy="192.168.35.196"
-      mmsport="8081"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="43"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="43"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="43"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="44"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="44"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="44"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="45"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="45"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="45"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="46"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="46"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="46"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="49"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="49"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="49"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="404"
-      mnc="50"
-      apn="mms"
-      mmsc="http://10.239.221.47/mms/"
-      mmsproxy="10.239.221.7"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance Net"
-      mcc="404"
-      mnc="50"
-      apn="smartnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance WAP"
-      mcc="404"
-      mnc="50"
-      apn="smartwap"
-      proxy="10.239.221.7"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="51"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="51"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="51"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="404"
-      mnc="52"
-      apn="mms"
-      mmsc="http://10.239.221.47/mms/"
-      mmsproxy="10.239.221.7"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance Net"
-      mcc="404"
-      mnc="52"
-      apn="smartnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance WAP"
-      mcc="404"
-      mnc="52"
-      apn="smartwap"
-      proxy="10.239.221.7"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="53"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="53"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="53"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="54"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="54"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="54"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="55"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="55"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="55"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="56"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="56"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="56"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="57"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="57"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="57"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="58"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="58"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="58"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="59"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="59"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="59"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="60"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="60"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="60"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="62"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="62"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="62"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="64"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="64"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="64"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="66"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="66"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="66"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="404"
-      mnc="67"
-      apn="mms"
-      mmsc="http://10.239.221.47/mms/"
-      mmsproxy="10.239.221.7"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance Net"
-      mcc="404"
-      mnc="67"
-      apn="smartnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance WAP"
-      mcc="404"
-      mnc="67"
-      apn="smartwap"
-      proxy="10.239.221.7"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="MTNL"
-      mcc="404"
-      mnc="68"
-      apn="mtnl.net"
-      authtype="0"
-      user="mtnl"
-      password="mtnl123"
-      mmsc="http://mtnlmms/"
-      mmsproxy="10.10.10.10"
-      mmsport="9401"
-      type="default,mms,supl,agps,fota,dun"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="MTNL"
-      mcc="404"
-      mnc="69"
-      apn="mtnl.net"
-      authtype="0"
-      user="mtnl"
-      password="mtnl123"
-      mmsc="http://mtnlmms/"
-      mmsproxy="10.10.10.10"
-      mmsport="9401"
-      type="default,mms,supl,agps,fota,dun"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="70"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="70"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="70"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="71"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="71"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="71"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="72"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="72"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="72"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="73"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="73"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="73"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="74"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="74"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="74"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="75"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="75"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="75"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="76"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="76"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="76"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="77"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="77"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="77"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="78"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="78"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="78"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="79"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="79"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="79"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="80"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="80"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="80"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlmms"
-      mcc="404"
-      mnc="81"
-      apn="bsnlmms"
-      mmsc="http://bsnlmmsc.in:8514"
-      mmsproxy="10.210.10.11"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnlnet"
-      mcc="404"
-      mnc="81"
-      apn="bsnlnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="bsnllive"
-      mcc="404"
-      mnc="81"
-      apn="bsnllive"
-      proxy="10.220.67.131"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="82"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="82"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="82"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="404"
-      mnc="83"
-      apn="mms"
-      mmsc="http://10.239.221.47/mms/"
-      mmsproxy="10.239.221.7"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance Net"
-      mcc="404"
-      mnc="83"
-      apn="smartnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance WAP"
-      mcc="404"
-      mnc="83"
-      apn="smartwap"
-      proxy="10.239.221.7"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="84"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="84"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="84"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="404"
-      mnc="85"
-      apn="mms"
-      mmsc="http://10.239.221.47/mms/"
-      mmsproxy="10.239.221.7"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance Net"
-      mcc="404"
-      mnc="85"
-      apn="smartnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance WAP"
-      mcc="404"
-      mnc="85"
-      apn="smartwap"
-      proxy="10.239.221.7"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="86"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="86"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="86"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="87"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="87"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="87"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="404"
-      mnc="88"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="404"
-      mnc="88"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="404"
-      mnc="88"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="404"
-      mnc="89"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="404"
-      mnc="89"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="404"
-      mnc="89"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="90"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="90"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="90"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Postpaid"
-      mcc="404"
-      mnc="91"
-      apn="aircelwebpost"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Postpaid"
-      mcc="404"
-      mnc="91"
-      apn="aircelwappost"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet-Prepaid"
-      mcc="404"
-      mnc="91"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS-Prepaid"
-      mcc="404"
-      mnc="91"
-      apn="aircelweb"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="404"
-      mnc="91"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="92"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="92"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="92"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="93"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="93"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="93"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="94"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="94"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="94"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="95"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="95"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="95"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="96"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="96"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="96"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="97"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="97"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="97"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="404"
-      mnc="98"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="404"
-      mnc="98"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="404"
-      mnc="98"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="01"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="01"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="01"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="03"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="03"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="03"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="04"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="04"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="04"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="05"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="05"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="05"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="06"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="06"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="06"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="07"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="07"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="07"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="08"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="08"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="08"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="09"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="09"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="09"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="10"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="10"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="10"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="11"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="11"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="11"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="12"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="12"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="12"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="13"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="13"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="13"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="14"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="14"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="14"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="15"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="15"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="15"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="17"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="17"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="17"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="18"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="18"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="18"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="19"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="19"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="19"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="20"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="20"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="20"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="21"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="21"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="21"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="22"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="22"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="22"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Reliance MMS"
-      mcc="405"
-      mnc="23"
-      apn="rcommms"
-      mmsc="http://mmsc.rcom.co.in/mms/"
-      mmsproxy="10.239.221.5"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Netconnect"
-      mcc="405"
-      mnc="23"
-      apn="rcomnet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="RelianceMbWorld"
-      mcc="405"
-      mnc="23"
-      apn="rcomwap"
-      proxy="10.239.221.5"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="025"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="025"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="025"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="026"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="026"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="026"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="027"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="027"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="027"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="028"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="028"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="028"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="029"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="029"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="029"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="030"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="030"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="030"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="031"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="031"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="031"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="032"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="032"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="032"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="033"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="033"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="033"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="034"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="034"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="034"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="035"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="035"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="035"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="036"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="036"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="036"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="037"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="037"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="037"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="038"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="038"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="038"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="039"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="039"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="039"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="040"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="040"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="040"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="041"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="041"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="041"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="042"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="042"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="042"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="043"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="043"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="043"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="044"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="044"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="044"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="045"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="045"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="045"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="046"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="046"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="046"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO INTERNET"
-      mcc="405"
-      mnc="047"
-      apn="TATA.DOCOMO.INTERNET"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO DIVE-IN"
-      mcc="405"
-      mnc="047"
-      apn="TATA.DOCOMO.DIVE.IN"
-      proxy="10.124.94.7"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="TATA DOCOMO MMS"
-      mcc="405"
-      mnc="047"
-      apn="TATA.DOCOMO.MMS"
-      mmsc="http://mmsc/"
-      mmsproxy="10.124.26.94"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="405"
-      mnc="51"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="405"
-      mnc="51"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="405"
-      mnc="51"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="405"
-      mnc="52"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="405"
-      mnc="52"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="405"
-      mnc="52"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="405"
-      mnc="53"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="405"
-      mnc="53"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="405"
-      mnc="53"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="405"
-      mnc="54"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="405"
-      mnc="54"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="405"
-      mnc="54"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="405"
-      mnc="55"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="405"
-      mnc="55"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="405"
-      mnc="55"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobile Office"
-      mcc="405"
-      mnc="56"
-      apn="airtelgprs.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="AIRTEL LIVE"
-      mcc="405"
-      mnc="56"
-      apn="airtelfun.com"
-      proxy="100.1.200.99"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="405"
-      mnc="56"
-      apn="airtelmms.com"
-      authtype="1"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsproxy="100.1.201.172"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="405"
-      mnc="66"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="405"
-      mnc="66"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="405"
-      mnc="66"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="405"
-      mnc="67"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="405"
-      mnc="67"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="405"
-      mnc="67"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="70"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="70"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="70"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="405"
-      mnc="750"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="405"
-      mnc="750"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="405"
-      mnc="750"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="405"
-      mnc="751"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="405"
-      mnc="751"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="405"
-      mnc="751"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="405"
-      mnc="752"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="405"
-      mnc="752"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="405"
-      mnc="752"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="405"
-      mnc="753"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="405"
-      mnc="753"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="405"
-      mnc="753"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="405"
-      mnc="754"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="405"
-      mnc="754"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="405"
-      mnc="754"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="405"
-      mnc="755"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="405"
-      mnc="755"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="405"
-      mnc="755"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafonemobileconnect"
-      mcc="405"
-      mnc="756"
-      apn="www"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone live"
-      mcc="405"
-      mnc="756"
-      apn="portalnmms"
-      proxy="10.10.1.100"
-      port="9401"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Vodafone_MMS"
-      mcc="405"
-      mnc="756"
-      apn="portalnmms"
-      mmsc="http://mms1.live.vodafone.in/mms/"
-      mmsproxy="10.10.1.100"
-      mmsport="9401"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="799"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="799"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="799"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="800"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="800"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="800"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="801"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="801"
-      apn="aircelwap"
-      proxy="192.168.35.201"
-      port="8081"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="801"
-      apn="aircelmms"
-      mmsc="http://mmsc/mmrelay.app"
-      mmsproxy="192.168.35.196"
-      mmsport="8081"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="802"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="802"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="802"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="803"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="803"
-      apn="aircelwap"
-      proxy="192.168.35.201"
-      port="8081"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="803"
-      apn="aircelmms"
-      mmsc="http://mmsc/mmrelay.app"
-      mmsproxy="192.168.35.196"
-      mmsport="8081"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="804"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="804"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="804"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="805"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="805"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="805"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="806"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="806"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="806"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="807"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="807"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="807"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="808"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="808"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="808"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="809"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="809"
-      apn="aircelwap"
-      proxy="192.168.35.201"
-      port="8081"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="809"
-      apn="aircelmms"
-      mmsc="http://mmsc/mmrelay.app"
-      mmsproxy="192.168.35.196"
-      mmsport="8081"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="810"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="810"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="810"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="811"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="811"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="811"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-GPRS"
-      mcc="405"
-      mnc="812"
-      apn="aircelgprs"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Pocket Internet"
-      mcc="405"
-      mnc="812"
-      apn="aircelwap"
-      proxy="172.17.83.69"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Aircel-MMS"
-      mcc="405"
-      mnc="812"
-      apn="aircelmms"
-      mmsc="http://10.50.1.166/servlets/mms"
-      mmsproxy="172.17.83.69"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="813"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="813"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="813"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="814"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="814"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="814"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="815"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="815"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="815"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="816"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="816"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="816"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="817"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="817"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="817"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="818"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="818"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="818"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="819"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="819"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="819"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="820"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="820"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="820"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="821"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="821"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="821"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="822"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="822"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="822"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="823"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="823"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="824"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="824"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="825"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="825"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="826"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="826"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="827"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="827"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="828"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="828"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="829"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="829"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="830"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="830"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="831"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="831"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="832"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="832"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="833"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="833"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="834"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="834"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="835"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="835"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="836"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="836"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="837"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="837"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="838"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="838"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="839"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="839"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="840"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="840"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="841"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="841"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="842"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="842"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="843"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="843"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="844"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="844"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="844"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="845"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="845"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="845"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="846"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="846"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="846"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="847"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="847"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="847"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="848"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="848"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="848"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="849"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="849"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="849"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="850"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="850"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="850"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="851"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="851"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="851"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="852"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="852"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="852"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Idea_Internet"
-      mcc="405"
-      mnc="853"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA GPRS"
-      mcc="405"
-      mnc="853"
-      apn="imis"
-      proxy="10.4.42.15"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="853"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="854"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="854"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="855"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="855"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="856"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="856"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="857"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="857"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="858"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="858"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="859"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="859"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="860"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="860"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="861"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="861"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="862"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="862"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="863"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="863"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="864"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="864"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="865"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="865"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="866"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="866"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="867"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="867"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="868"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="868"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="869"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="869"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="870"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="870"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="871"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="871"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="872"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="872"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="873"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="873"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Jio 4G"
-      mcc="405"
-      mnc="874"
-      apn="jionet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="IMS"
-      mcc="405"
-      mnc="874"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="875"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="875"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="875"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="876"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="876"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="876"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="877"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="877"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="877"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="878"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="878"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="878"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="879"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="879"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="879"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="880"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="880"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="880"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="STEL"
-      mcc="405"
-      mnc="881"
-      apn="gprs.stel.in"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="STEL"
-      mcc="405"
-      mnc="882"
-      apn="gprs.stel.in"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="STEL"
-      mcc="405"
-      mnc="883"
-      apn="gprs.stel.in"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="STEL"
-      mcc="405"
-      mnc="884"
-      apn="gprs.stel.in"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="STEL"
-      mcc="405"
-      mnc="885"
-      apn="gprs.stel.in"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="STEL"
-      mcc="405"
-      mnc="886"
-      apn="gprs.stel.in"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA"
-      mcc="405"
-      mnc="908"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="908"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA"
-      mcc="405"
-      mnc="909"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="909"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA"
-      mcc="405"
-      mnc="910"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="910"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA"
-      mcc="405"
-      mnc="911"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="IDEA MMS"
-      mcc="405"
-      mnc="911"
-      apn="mmsc"
-      mmsc="http://10.4.42.21:8002/"
-      mmsproxy="10.4.42.15"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="912"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="913"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="914"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="915"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="916"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="917"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="918"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="919"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="920"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="921"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="922"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="923"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="924"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="925"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="925"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="925"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="926"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="926"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="926"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="927"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="927"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="927"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="928"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="928"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="928"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Internet"
-      mcc="405"
-      mnc="929"
-      apn="uninor"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor Wap"
-      mcc="405"
-      mnc="929"
-      apn="uninor"
-      proxy="10.58.10.58"
-      port="8080"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Uninor MMS"
-      mcc="405"
-      mnc="929"
-      apn="uninor"
-      mmsc="http://10.58.2.120"
-      mmsproxy="10.58.10.59"
-      mmsport="8080"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="930"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Cheers"
-      mcc="405"
-      mnc="931"
-      apn="internet"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon MMS"
-      mcc="405"
-      mnc="932"
-      apn="vgprs.com"
-      mmsc="http://10.202.4.119:10021/mmsc/"
-      mmsproxy="10.202.5.145"
-      mmsport="8799"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Videocon"
-      mcc="405"
-      mnc="932"
-      apn="vinternet.com"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Mobilink WAP GPRS"
-      mcc="410"
-      mnc="01"
-      apn="connect.mobilinkworld.com"
-      user="Mobilink"
-      password="Mobilink"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobilink MMS"
-      mcc="410"
-      mnc="01"
-      apn="mms.mobilinkworld.com"
-      user="Mobilink"
-      password="Mobilink"
-      mmsc="http://mms/"
-      mmsproxy="172.25.20.12"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Ufone WAP"
-      mcc="410"
-      mnc="03"
-      apn="Ufone.internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Ufone MMS"
-      mcc="410"
-      mnc="03"
-      apn="Ufone.mms"
-      mmsc="http://www.ufonemms.com:80/"
-      mmsproxy="172.16.13.27"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="ZONG WAP"
-      mcc="410"
-      mnc="04"
-      apn="zonginternet"
-      type="default,supl"
-  />
-
-  <apn carrier="ZONG MMS"
-      mcc="410"
-      mnc="04"
-      apn="zongmms"
-      mmsc="http://10.81.6.11:8080"
-      mmsproxy="10.81.6.33"
-      mmsport="8000"
-      type="mms"
-  />
-
-  <apn carrier="Telenor WAP"
-      mcc="410"
-      mnc="06"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Telenor MMS"
-      mcc="410"
-      mnc="06"
-      apn="mms"
-      user="Telenor"
-      password="Telenor"
-      mmsc="http://mmstelenor"
-      mmsproxy="172.18.19.11"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Warid WAP"
-      mcc="410"
-      mnc="07"
-      apn="Wap.warid"
-      type="default,supl"
-  />
-
-  <apn carrier="Warid MMS"
-      mcc="410"
-      mnc="07"
-      apn="mms.warid"
-      mmsc="http://10.4.0.132/servlets/MMS"
-      mmsproxy="10.4.2.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier='Consumer Cellular'
-      mcc='410'
-      mnc='310'
-      apn='att.mvno'
-      type='default,mms,supl,hipri,fota'
-      protocol='IP'
-      roaming_protocol='IP'
-      mmsc='http://mms.fido.ca'
-      mmsproxy='mmsproxy.fido.ca'
-      mmsport='80'
-      mvno_type='gid'
-      mvno_match_data='2AC9'
-  />
-
-  <apn carrier="AWCC"
-      mcc="412"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Roshan"
-      mcc="412"
-      mnc="20"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN"
-      mcc="412"
-      mnc="40"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Etisalat"
-      mcc="412"
-      mnc="50"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobitel"
-      mcc="413"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Dialog"
-      mcc="413"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Etisalat"
-      mcc="413"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel"
-      mcc="413"
-      mnc="05"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Hutch"
-      mcc="413"
-      mnc="08"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MPT"
-      mcc="414"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Alfa Internet"
-      mcc="415"
-      mnc="01"
-      user="mic1"
-      password="mic1"
-      apn="internet.mic1.com.lb"
-      type="default,supl"
-  />
-
-  <apn carrier="Alfawap"
-      mcc="415"
-      mnc="01"
-      apn="wap.mic1.com.lb"
-      user="mic1"
-      password="mic1"
-      proxy="192.168.23.50"
-      port="80"
-      type="default,supl"
-  />
-
-  <apn carrier="Alfa MMS"
-      mcc="415"
-      mnc="01"
-      user="mic1"
-      password="mic1"
-      apn="mms.mic1.com.lb"
-      mmsc="http://mms.mic1.com.lb"
-      mmsproxy="192.168.23.51"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="touch"
-      mcc="415"
-      mnc="03"
-      apn="touch"
-      type="default,supl"
-  />
-
-  <apn carrier="touch_WAP"
-      mcc="415"
-      mnc="03"
-      apn="wap"
-      proxy="192.168.4.11"
-      port="80"
-      type="default,supl"
-  />
-
-  <apn carrier="touch_MMS"
-      mcc="415"
-      mnc="03"
-      user="touch"
-      apn="mms"
-      mmsc="http://mms:8088/mms/"
-      mmsproxy="192.168.4.103"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Zain JO Internet"
-      mcc="416"
-      mnc="01"
-      apn="zain"
-      user="zain"
-      password="zain"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Zain JO MMS"
-      mcc="416"
-      mnc="01"
-      apn="zain"
-      user="zain"
-      password="zain"
-      authtype="1"
-      mmsc="http://mms.jo.zain.com"
-      mmsproxy="192.168.55.10"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Umniah internet"
-      mcc="416"
-      mnc="03"
-      apn="net"
-      type="default,supl"
-  />
-
-  <apn carrier="Umniah WAP"
-      mcc="416"
-      mnc="03"
-      apn="wap"
-      proxy="10.1.1.10"
-      port="8080"
-      type="default,supl"
-  />
-
-
-  <apn carrier="Umniah MMS"
-      mcc="416"
-      mnc="03"
-      apn="mms"
-      mmsc="http://mms.umniah.com/"
-      mmsproxy="10.1.1.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-
-  <apn carrier="Orange MMS"
-      mcc="416"
-      mnc="770"
-      apn="mms.orange.jo"
-      user="mmc"
-      password="mmc"
-      authtype="1"
-      mmsc="http://172.16.1.96/servlets/mms"
-      mmsproxy="172.16.1.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange Internet"
-      mcc="416"
-      mnc="770"
-      apn="net.orange.jo"
-      user="net"
-      password="net"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange WAP"
-      mcc="416"
-      mnc="770"
-      apn="wap.orange.jo"
-      user="wap"
-      password="wap"
-      authtype="1"
-      proxy="172.16.1.2"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange MMS"
-      mcc="416"
-      mnc="77"
-      apn="mms.orange.jo"
-      user="mmc"
-      password="mmc"
-      authtype="1"
-      mmsc="http://172.16.1.96/servlets/mms"
-      mmsproxy="172.16.1.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange Internet"
-      mcc="416"
-      mnc="77"
-      apn="net.orange.jo"
-      user="net"
-      password="net"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange WAP"
-      mcc="416"
-      mnc="77"
-      apn="wap.orange.jo"
-      user="wap"
-      password="wap"
-      authtype="1"
-      proxy="172.16.1.2"
-      port="8080"
-      type="default,supl"
-  />
-
-
-  <apn carrier="Syriatel Net"
-      mcc="417"
-      mnc="01"
-      apn="net.syriatel.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Syriatel MMS"
-      mcc="417"
-      mnc="01"
-      apn="mms.syriatel.com"
-      mmsc="http://mymms.syriatel.com/"
-      mmsproxy="172.20.5.6"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="MTN WAP"
-      mcc="417"
-      mnc="02"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN MMS"
-      mcc="417"
-      mnc="02"
-      apn="mms"
-      mmsc="http://mms/"
-      mmsproxy="10.110.0.134"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <apn carrier="Asiacell GPRS"
-      mcc="418"
-      mnc="05"
-      apn="net.asiacell.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Asiacell MMS"
-      mcc="418"
-      mnc="05"
-      apn="wap.asiacell.com"
-      mmsc="http://192.168.107.10:19090/was"
-      mmsproxy="192.168.107.50"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="SanaTel"
-      mcc="418"
-      mnc="08"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="ZAIN-GPRS"
-      mcc="418"
-      mnc="20"
-      apn="internet"
-      user="atheer"
-      password="atheer"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Zain-MMS"
-      mcc="418"
-      mnc="20"
-      apn="MMS"
-      user="atheer"
-      password="atheer"
-      authtype="1"
-      mmsc="http://mms:8002/"
-      mmsproxy="172.29.11.12"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="ZAIN-GPRS"
-      mcc="418"
-      mnc="30"
-      apn="internet"
-      user="atheer"
-      password="atheer"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Zain-MMS"
-      mcc="418"
-      mnc="30"
-      apn="MMS"
-      user="atheer"
-      password="atheer"
-      authtype="1"
-      mmsc="http://mms:8002/"
-      mmsproxy="172.29.11.12"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Korek 9595"
-      mcc="418"
-      mnc="40"
-      apn="internet.korek.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Korek 9191"
-      mcc="418"
-      mnc="40"
-      apn="net.korek.com"
-      user="korek"
-      password="korek"
-      type="default,supl"
-  />
-
-  <apn carrier="Korek 9494"
-      mcc="418"
-      mnc="40"
-      apn="internet.korek.com"
-      type="default,supl"
-  />
-
-  <apn carrier="KOREK MMS"
-      mcc="418"
-      mnc="40"
-      apn="mms.korek.com"
-      user="korek"
-      password="korek"
-      authtype="1"
-      mmsc="http://mms.korektel.com/mms/wapenc"
-      mmsproxy="192.168.18.187"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Mobitel"
-      mcc="418"
-      mnc="45"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Itisaluna"
-      mcc="418"
-      mnc="62"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Omnnea"
-      mcc="418"
-      mnc="92"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MI"
-      mcc="419"
-      mnc="02"
-      apn="pps"
-      user="pps"
-      password="pps"
-      type="default,supl"
-  />
-
-  <apn carrier="Zain WAP"
-      mcc="419"
-      mnc="02"
-      apn="pps"
-      user="pps"
-      password="pps"
-      authtype="3"
-      proxy="10.43.4.5"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="419"
-      mnc="02"
-      apn="pps"
-      user="mms"
-      password="mms"
-      authtype="3"
-      mmsc="http://mms.zain"
-      mmsproxy="176.0.0.65"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="GPRS Ooredoo"
-      mcc="419"
-      mnc="03"
-      apn="action.ooredoo.com"
-      authtype="0"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Ooredoo"
-      mcc="419"
-      mnc="03"
-      apn="mms.ooredoo.com"
-      mmsc="http://action.ooredoo.com"
-      mmsproxy="194.126.53.64"
-      mmsport="8080"
-      authtype="0"
-      type="mms"
-  />
-
-  <apn carrier="VIVA - KW"
-      mcc="419"
-      mnc="04"
-      apn="viva"
-      authtype="0"
-      mmsc="http://172.16.128.80:38090/was"
-      mmsproxy="172.16.128.228"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="STC - GPRS"
-      mcc="420"
-      mnc="01"
-      apn="jawalnet.com.sa"
-      type="default,supl"
-  />
-
-  <apn carrier="STC MMS"
-      mcc="420"
-      mnc="01"
-      apn="mms.net.sa"
-      mmsc="http://mms.net.sa:8002/"
-      mmsproxy="10.1.1.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Mobily WEB"
-      mcc="420"
-      mnc="03"
-      apn="web1"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobily prepaid - GPRS"
-      mcc="420"
-      mnc="03"
-      apn="wap2"
-      proxy="10.3.2.133"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobily postpaid - GPRS"
-      mcc="420"
-      mnc="03"
-      apn="wap1"
-      proxy="10.3.2.133"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobily WEB 2"
-      mcc="420"
-      mnc="03"
-      apn="web2"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobily MMS Postpaid"
-      mcc="420"
-      mnc="03"
-      apn="mms1"
-      mmsc="http://10.3.3.133:9090/was"
-      mmsproxy="10.3.2.133"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Mobily MMS Prepaid"
-      mcc="420"
-      mnc="03"
-      apn="mms2"
-      mmsc="http://10.3.3.133:9090/was"
-      mmsproxy="10.3.2.133"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="zain-Internet Wap"
-      mcc="420"
-      mnc="04"
-      apn="zain"
-      authtype="0"
-      type="default,supl"
-  />
-
-  <apn carrier="zain-mms"
-      mcc="420"
-      mnc="04"
-      apn="zainmms"
-      mmsc="http://10.122.200.12:8002"
-      mmsproxy="10.122.200.10"
-      mmsport="8080"
-      type="mms"
-      protocol="IP"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="SabaFon"
-      mcc="421"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Sabafon MMS"
-      mcc="421"
-      mnc="01"
-      apn="mms"
-      type="mms"
-      user="wap"
-      password="wap"
-      authtype="0"
-      mmsproxy="192.168.30.174"
-      mmsc="http://mms.sabafon.com/"
-      mmsport="8080"
-  />
-
-  <apn carrier="MTN"
-      mcc="421"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN MMS YE"
-      mcc="421"
-      mnc="02"
-      apn="fast-mms"
-      type="mms"
-      user="mms"
-      authtype="0"
-      mmsproxy="192.168.97.1"
-      mmsc="http://192.168.97.1/mmsc"
-      mmsport="3130"
-  />
-
-  <apn carrier="Yemen Mobile"
-      mcc="421"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="HiTS-UNITEL"
-      mcc="421"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Oman Mobile MMS"
-      mcc="422"
-      mnc="02"
-      apn="mms"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mmsc.omanmobile.om:10021/mmsc"
-      mmsproxy="192.168.203.35"
-      mmsport="8080"
-      type="mms"
-  />
-
-
-  <apn carrier="Oman Mobile Internet"
-      mcc="422"
-      mnc="02"
-      apn="taif"
-      user="taif"
-      password="taif"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Ooredoo MMS"
-      mcc="422"
-      mnc="03"
-      apn="Ooredoo"
-      authtype="0"
-      mmsc="http://10.128.240.16/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier="Ooredoo Internet"
-      mcc="422"
-      mnc="03"
-      apn="Ooredoo"
-      type="default,supl"
-  />
-
-  <apn carrier="Etisalat Data Package"
-      mcc="424"
-      mnc="02"
-      apn="etisalat.ae"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Weyak Wap"
-      mcc="424"
-      mnc="02"
-      apn="etisalat"
-      proxy="10.12.0.32"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Etisalat MMS"
-      mcc="424"
-      mnc="02"
-      apn="etisalat"
-      mmsc="http://mms/servlets/mms"
-      mmsproxy="10.12.0.32"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="du Internet"
-      mcc="424"
-      mnc="03"
-      apn="du"
-      type="default,supl"
-  />
-
-  <apn carrier="du WAP"
-      mcc="424"
-      mnc="03"
-      apn="du"
-      proxy="10.19.18.4"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="du MMS"
-      mcc="424"
-      mnc="03"
-      apn="du"
-      mmsc="http://mms.du.ae:8002"
-      mmsproxy="10.19.18.4"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="3G Portal"
-      mcc="425"
-      mnc="01"
-      apn="uwap.orange.co.il"
-      mmsc="http://192.168.220.15/servlets/mms"
-      mmsproxy="192.118.11.55"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Cellcom Internet"
-      mcc="425"
-      mnc="02"
-      apn="sphone"
-      type="default,supl"
-  />
-
-  <apn carrier="Cellcom MMS"
-      mcc="425"
-      mnc="02"
-      apn="mms"
-      mmsc="http://mms.cellcom.co.il"
-      mmsproxy="vwapm2.ain.co.il"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Multimedia Pelephone"
-      mcc="425"
-      mnc="03"
-      apn="mms.pelephone.net.il"
-      user="pcl@3g"
-      password="pcl"
-      authtype="3"
-      mmsc="http://mmsu.pelephone.net.il"
-      mmsproxy="10.170.252.104"
-      mmsport="9093"
-      type="mms"
-  />
-
-  <apn carrier="Sphone Pelephone"
-      mcc="425"
-      mnc="03"
-      apn="sphone.pelephone.net.il"
-      user="pcl@3g"
-      password="pcl"
-      authtype="2"
-      type="default,supl"
-  />
-
-  <apn carrier="Jawwal WAP"
-      mcc="425"
-      mnc="05"
-      apn="wap"
-      proxy="213.244.118.129"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Jawwal MMS"
-      mcc="425"
-      mnc="05"
-      apn="mms"
-      mmsc="http://mms.jawwal.ps/servlets/mms"
-      mmsproxy="213.244.118.129"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="425"
-      mnc="06"
-      apn="internet"
-      proxy="10.100.129.111"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Wataniya_mms"
-      mcc="425"
-      mnc="06"
-      apn="mms"
-      mmsc="http://mms.wataniya.ps/servlets/mms"
-      mmsproxy="10.100.129.111"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="HOT mobile Internet"
-      mcc="425"
-      mnc="07"
-      apn="net.hotm"
-      type="default,supl"
-  />
-
-  <apn carrier="HOT mobile PC"
-      mcc="425"
-      mnc="07"
-      apn="pc.hotm"
-      type="dun"
-      authtype="0"
-  />
-
-  <apn carrier="HOT mobile MMS"
-      mcc="425"
-      mnc="07"
-      apn="mms.hotm"
-      mmsc="http://mms.hotmobile.co.il"
-      mmsproxy="80.246.131.99"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="GolanTelecom Internet"
-      mcc="425"
-      mnc="08"
-      apn="internet.golantelecom.net.il"
-      type="default,supl"
-  />
-
-  <apn carrier="GolanTelecom MMS"
-      mcc="425"
-      mnc="08"
-      apn="mms.golantelecom.net.il"
-      mmsc="http://mmsc.golantelecom.co.il"
-      mmsproxy="10.224.228.81"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="3G Portal"
-      mcc="425"
-      mnc="10"
-      apn="uwap.orange.co.il"
-      mmsc="http://192.168.220.15/servlets/mms"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="YouPhone"
-      mcc="425"
-      mnc="14"
-      apn="data.youphone.co.il"
-      mmsc="http://192.168.220.15/servlets/mms"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Home Cellular Internet"
-      mcc="425"
-      mnc="15"
-      apn="hcminternet"
-      type="default,supl"
-  />
-
-  <apn carrier="Home Cellular MMS"
-      mcc="425"
-      mnc="15"
-      apn="hcmMMS"
-      mmsc="http://82.166.164.229:9000/mmsc"
-      mmsproxy="82.166.164.229"
-      mmsport="8898"
-      type="mms"
-  />
-
-  <apn carrier="Rami Levi 3G"
-      mcc="425"
-      mnc="16"
-      apn="internet.rl"
-      type="default,supl"
-  />
-
-  <apn carrier="Rami Levi Multimedia"
-      mcc="425"
-      mnc="16"
-      apn="mms.pelephone.net.il"
-      mmsc="http://mmsu.pelephone.net.il"
-      mmsproxy="10.170.252.104"
-      mmsport="9093"
-      type="mms"
-  />
-
-  <apn carrier="GPRS"
-      mcc="426"
-      mnc="01"
-      apn="batelco.com"
-      authtype="0"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="426"
-      mnc="01"
-      apn="batelco.com"
-      authtype="0"
-      mmsc="http://192.168.36.10/servlets/mms"
-      mmsproxy="192.168.1.2"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Zain BH Internet"
-      mcc="426"
-      mnc="02"
-      apn="internet"
-      user="internet"
-      password="internet"
-      authtype="0"
-      type="default,supl"
-  />
-
-  <apn carrier="Zain BH WAP"
-      mcc="426"
-      mnc="02"
-      apn="wap"
-      user="wap"
-      password="wap"
-      authtype="0"
-      proxy="172.18.85.33"
-      port="80"
-      type="default,supl"
-  />
-
-
-  <apn carrier="Zain BH MMS"
-      mcc="426"
-      mnc="02"
-      apn="mms"
-      user="mms"
-      password="mms"
-      authtype="0"
-      mmsc="http://172.18.83.129:80/"
-      mmsproxy="172.18.85.34"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="VIVAGPRS"
-      mcc="426"
-      mnc="04"
-      apn="viva.bh"
-      type="default,supl"
-  />
-
-  <apn carrier="VIVAWAP"
-      mcc="426"
-      mnc="04"
-      apn="vivawap.bh"
-      proxy="172.18.142.36"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="VIVAMMS"
-      mcc="426"
-      mnc="04"
-      apn="vivawap.bh"
-      mmsc="http://mms.viva.com.bh:38090"
-      mmsproxy="172.18.142.36"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="427"
-      mnc="01"
-      apn="data"
-      type="default,supl"
-      authtype="1"
-  />
-
-  <apn carrier="MMS"
-      mcc="427"
-      mnc="01"
-      apn="data"
-      mmsproxy="10.23.8.3"
-      mmsport="8080"
-      mmsc="http://mmsr.ooredoomms.qa"
-      type="mms"
-  />
-
-  <apn carrier="Voda internet"
-      mcc="427"
-      mnc="02"
-      apn="web.vodafone.com.qa"
-      type="default,supl"
-  />
-
-  <apn carrier="VFQ MMS"
-      mcc="427"
-      mnc="02"
-      apn="vodafone.com.qa"
-      mmsc="http://mms.vodafone.com.qa/mmsc"
-      mmsproxy="10.101.97.102"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Unitel"
-      mcc="428"
-      mnc="88"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Skytel"
-      mcc="428"
-      mnc="91"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="G.Mobile"
-      mcc="428"
-      mnc="98"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MobiCom"
-      mcc="428"
-      mnc="99"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Namaste / NT Mobile"
-      mcc="429"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Ncell"
-      mcc="429"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Sky/C-Phone"
-      mcc="429"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="SmartCell"
-      mcc="429"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MCI-GPRS"
-      mcc="432"
-      mnc="11"
-      apn="mcinet"
-      type="default,supl"
-  />
-
-  <apn carrier="MCCI MMS"
-      mcc="432"
-      mnc="11"
-      apn="mcinet"
-      mmsc="http://192.168.193.134:38090/was"
-      mmsproxy="192.168.194.73"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="MCI-GPRS"
-      mcc="432"
-      mnc="14"
-      apn="mcinet"
-      type="default,supl"
-  />
-
-  <apn carrier="MCCI MMS"
-      mcc="432"
-      mnc="14"
-      apn="MCI-GPRS"
-      mmsport="38090"
-      mmsc="http://192.168.193.134"
-      type="mms"
-  />
-
-  <apn carrier="MCI-GPRS"
-      mcc="432"
-      mnc="19"
-      apn="mcinet"
-      type="default,supl"
-  />
-
-  <apn carrier="MCCI MMS"
-      mcc="432"
-      mnc="19"
-      apn="MCI-GPRS"
-      mmsport="38090"
-      mmsc="http://192.168.193.134"
-      type="mms"
-  />
-
-  <apn carrier="rightel"
-      mcc="432"
-      mnc="20"
-      apn="rightel"
-      type="default,supl"
-  />
-
-  <apn carrier="RighTel-MMS"
-      mcc="432"
-      mnc="20"
-      apn="RighTel-WAP"
-      mmsc="http://10.200.40.55:38090/was"
-      mmsproxy="10.200.39.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Irancell-Internet"
-      mcc="432"
-      mnc="35"
-      apn="mtnirancell"
-      type="default,supl"
-  />
-
-  <apn carrier="Irancell-MMS"
-      mcc="432"
-      mnc="35"
-      apn="mtnirancell"
-      mmsc="http://mms:8002"
-      mmsproxy="10.131.26.138"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="MCI-GPRS"
-      mcc="432"
-      mnc="70"
-      apn="mcinet"
-      type="default,supl"
-  />
-
-  <apn carrier="MCCI MMS"
-      mcc="432"
-      mnc="70"
-      apn="mcinet"
-      mmsc="http://192.168.193.134:38090/was"
-      mmsproxy="192.168.194.73"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="MCI-GPRS"
-      mcc="432"
-      mnc="93"
-      apn="mcinet"
-      type="default,supl"
-  />
-
-  <apn carrier="MCCI MMS"
-      mcc="432"
-      mnc="93"
-      apn="MCI-GPRS"
-      mmsport="38090"
-      mmsc="http://192.168.193.134"
-      type="mms"
-  />
-
-  <apn carrier="Beeline-UZB Internet"
-      mcc="434"
-      mnc="04"
-      apn="internet.beeline.uz"
-      user="beeline"
-      password="beeline"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Beeline-UZB MMS"
-      mcc="434"
-      mnc="04"
-      apn="mms.beeline.uz"
-      user="beeline"
-      password="beeline"
-      authtype="1"
-      mmsc="http://mms"
-      mmsproxy="172.30.30.166"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="UCELL Internet"
-      mcc="434"
-      mnc="05"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="UCELL MMS"
-      mcc="434"
-      mnc="05"
-      apn="mms"
-      mmsc="http://mmsc:8002/"
-      mmsproxy="10.64.164.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Perfectum Mobile"
-      mcc="434"
-      mnc="06"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MTS-UZB Internet"
-      mcc="434"
-      mnc="07"
-      apn="net.mts.uz"
-      user="mts"
-      password="mts"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MTS-UZB MMS"
-      mcc="434"
-      mnc="07"
-      apn="mms.mts.uz"
-      mmsc="http://mmsc/was"
-      mmsproxy="10.10.0.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Tcell"
-      mcc="436"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Tcell"
-      mcc="436"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Megafon"
-      mcc="436"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Babilon-M"
-      mcc="436"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Tacom"
-      mcc="436"
-      mnc="05"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Tcell"
-      mcc="436"
-      mnc="12"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Beeline"
-      mcc="437"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Fonex"
-      mcc="437"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MegaCom"
-      mcc="437"
-      mnc="05"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="O!"
-      mcc="437"
-      mnc="09"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MTS (BARASH Communication)"
-      mcc="438"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="TM-Cell"
-      mcc="438"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="DCM"
-      mcc="440"
-      mnc="10"
-      apn=""
-      type="ia"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="ims"
-      mcc="440"
-      mnc="10"
-      apn="ims"
-      type="ims"
-      protocol="IPV6"
-  />
-
-  <apn carrier="sp-mode"
-      mcc="440"
-      mnc="10"
-      apn="spmode.ne.jp"
-      user=""
-      server=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="Umobile"
-      mcc="440"
-      mnc="10"
-      apn="umobile.jp"
-      user="umobile@umobile.jp"
-      server=""
-      password="umobile"
-      authtype="3"
-      type="default,supl"
-  />
-
-  <apn carrier="Nifmo"
-      mcc="440"
-      mnc="10"
-      apn="mda.nifty.com"
-      user="mda@nifty"
-      server=""
-      password="nifty"
-      authtype="3"
-      type="default,supl"
-  />
-
-  <apn carrier="DMM mobile"
-      mcc="440"
-      mnc="10"
-      apn="dmm.com"
-      user="dmm@dmm.com"
-      server=""
-      password="dmm"
-      authtype="3"
-      type="default,supl"
-  />
-
-  <apn carrier="Rakuten mobile"
-      mcc="440"
-      mnc="10"
-      apn="vdm.jp"
-      user="rakuten@vdm"
-      server=""
-      password="vrkt"
-      authtype="3"
-      type="default,supl"
-  />
-
-  <apn carrier="Biglobe"
-      mcc="440"
-      mnc="10"
-      apn="biglobe.jp"
-      user="user"
-      server=""
-      password="0000"
-      authtype="3"
-      type="default,supl"
-  />
-
-  <apn carrier="mopera U"
-      mcc="440"
-      mnc="10"
-      apn="mopera.net"
-      user=""
-      server=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="b-mobile for Nexus"
-      mcc="440"
-      mnc="10"
-      apn="bmobile.ne.jp"
-      user="bmobile@spd"
-      server=""
-      password="bmobile"
-      authtype="3"
-      type="default,supl"
-  />
-
-  <apn carrier="IIJmio"
-      mcc="440"
-      mnc="10"
-      apn="iijmio.jp"
-      user="mio@iij"
-      server=""
-      password="iij"
-      authtype="3"
-      protocol="IPV4V6"
-      type="default,supl"
-  />
-
-  <apn carrier="OCN モバイル ONE (3G)"
-      mcc="440"
-      mnc="10"
-      apn="3g-d-2.ocn.ne.jp"
-      user="mobileid@ocn"
-      server=""
-      password="mobile"
-      authtype="2"
-      type="default,supl"
-  />
-
-  <apn carrier="OCN モバイル ONE (LTE)"
-      mcc="440"
-      mnc="10"
-      apn="lte-d.ocn.ne.jp"
-      user="mobileid@ocn"
-      server=""
-      password="mobile"
-      authtype="2"
-      type="default,supl"
-  />
-
-  <apn carrier="IMS"
-      mcc="440"
-      mnc="00"
-      apn="IMS"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-  />
-
-  <apn carrier="Application"
-      mcc="440"
-      mnc="00"
-      apn="plus.acs.jp"
-      user="ym"
-      password="ym"
-      mmsproxy="andmms.plusacs.ne.jp"
-      mmsport="8080"
-      mmsc="http://mms-s"
-      type="default,mms,supl,hipri"
-      authtype="2"
-  />
-
-  <apn carrier="IMS"
-      mcc="440"
-      mnc="20"
-      apn="IMS"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-  />
-
-  <apn carrier="Application"
-      mcc="440"
-      mnc="20"
-      apn="plus.acs.jp"
-      user="ym"
-      password="ym"
-      mmsproxy="andmms.plusacs.ne.jp"
-      mmsport="8080"
-      mmsc="http://mms-s"
-      type="default,mms,supl,hipri"
-      authtype="2"
-  />
-
-  <apn carrier="IMS"
-      mcc="441"
-      mnc="00"
-      apn="IMS"
-      type="ims"
-      protocol="IPV6"
-      roaming_protocol="IPV6"
-  />
-
-  <apn carrier="Application"
-      mcc="441"
-      mnc="00"
-      apn="plus.acs.jp"
-      user="ym"
-      password="ym"
-      mmsproxy="andmms.plusacs.ne.jp"
-      mmsport="8080"
-      mmsc="http://mms-s"
-      type="default,mms,supl,hipri"
-      authtype="2"
-  />
-
-  <apn carrier="LTE NET for DATA"
-      mcc="440"
-      mnc="50"
-      apn="au.au-net.ne.jp"
-      user="user@au.au-net.ne.jp"
-      password="au"
-      authtype="2"
-      mmsproxy=""
-      mmsport="80"
-      mmsc="http://mms.ezweb.ne.jp/MMS"
-      type="default,mms,supl,hipri"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="UQ mobile"
-      mcc="440"
-      mnc="50"
-      apn="uqmobile.jp"
-      user="uq@uqmobile.jp"
-      password="uq"
-      authtype="2"
-      mmsproxy=""
-      mmsport="80"
-      mmsc="http://mms.ezweb.ne.jp/MMS"
-      type="default,mms,supl,hipri"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="mineo"
-      mcc="440"
-      mnc="50"
-      apn="mineo.jp"
-      user="mineo@k-opti.com"
-      password="mineo"
-      authtype="2"
-      mmsproxy=""
-      mmsport="80"
-      mmsc="http://mms.ezweb.ne.jp/MMS"
-      type="default,mms,supl,hipri"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="IMS"
-      mcc="440"
-      mnc="51"
-      apn="IMS"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="LTE NET for DATA"
-      mcc="440"
-      mnc="51"
-      apn="au.au-net.ne.jp"
-      user="user@au.au-net.ne.jp"
-      password="au"
-      authtype="2"
-      mmsproxy=""
-      mmsport="80"
-      mmsc="http://mms.ezweb.ne.jp/MMS"
-      type="default,mms,supl,hipri"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="SKT IMS"
-      mcc="450"
-      mnc="05"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="SKT LTE INTERNET"
-      mcc="450"
-      mnc="05"
-      apn="lte.sktelecom.com"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://omms.nate.com:9082/oma_mms"
-      mmsproxy="smart.nate.com"
-      mmsport="9093"
-      server="*"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="SKT 3G INTERNET"
-      mcc="450"
-      mnc="05"
-      apn="web.sktelecom.com"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://omms.nate.com:9082/oma_mms"
-      mmsproxy="smart.nate.com"
-      mmsport="9093"
-      server="*"
-  />
-
-  <apn carrier="SKT IA"
-      mcc="450"
-      mnc="05"
-      apn=""
-      type="ia"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="SKT LTE Roaming"
-      mcc="450"
-      mnc="05"
-      apn="lte-roaming.sktelecom.com"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://omms.nate.com:9082/oma_mms"
-      mmsproxy="smart.nate.com"
-      mmsport="9093"
-      server="*"
-  />
-
-  <apn carrier="SKT 3G Roaming"
-      mcc="450"
-      mnc="05"
-      apn="roaming.sktelecom.com"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://omms.nate.com:9082/oma_mms"
-      mmsproxy="smart.nate.com"
-      mmsport="9093"
-      server="*"
-  />
-
-  <apn carrier="SKT LTE INTERNET"
-      mcc="450"
-      mnc="11"
-      apn="lte.sktelecom.com"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://omms.nate.com:9082/oma_mms"
-      mmsproxy="smart.nate.com"
-      mmsport="9093"
-      server="*"
-  />
-
-  <apn carrier="SKT LTE Roaming"
-      mcc="450"
-      mnc="11"
-      apn="lte-roaming.sktelecom.com"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://omms.nate.com:9082/oma_mms"
-      mmsproxy="smart.nate.com"
-      mmsport="9093"
-      server="*"
-  />
-
-  <apn carrier="SKT 3G Roaming"
-      mcc="450"
-      mnc="11"
-      apn="roaming.sktelecom.com"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://omms.nate.com:9082/oma_mms"
-      mmsproxy="smart.nate.com"
-      mmsport="9093"
-      server="*"
-  />
-
-  <apn carrier="LG uplus IMS"
-      mcc="450"
-      mnc="06"
-      apn="IMS"
-      type="ims"
-      mmsc="http://omammsc.uplus.co.kr:9084"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="LG uplus"
-      mcc="450"
-      mnc="06"
-      apn="internet.lguplus.co.kr"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://omammsc.uplus.co.kr:9084"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="LG uplus IA"
-      mcc="450"
-      mnc="06"
-      apn=""
-      type="ia"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="KT IMS"
-      mcc="450"
-      mnc="08"
-      apn="ims.ktfwing.com"
-      type="ims"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="KT"
-      mcc="450"
-      mnc="08"
-      apn="lte.ktfwing.com"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://mmsc.ktfwing.com:9082"
-      port="80"
-      server="*"
-  />
-
-  <apn carrier="KT IA"
-      mcc="450"
-      mnc="08"
-      apn=""
-      type="ia"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="KT IMS"
-      mcc="450"
-      mnc="02"
-      apn="ims.ktfwing.com"
-      type="ims"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="KT"
-      mcc="450"
-      mnc="02"
-      apn="lte.ktfwing.com"
-      type="default,mms,supl,fota,cbs"
-      mmsc="http://mmsc.ktfwing.com:9082"
-      port="80"
-      server="*"
-  />
-
-  <apn carrier="KT IA"
-      mcc="450"
-      mnc="02"
-      apn=""
-      type="ia"
-      protocol="IPV4V6"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Mobi-wap-gprs 2"
-      mcc="452"
-      mnc="01"
-      apn="m-wap"
-      user="mms"
-      password="mms"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobi-wap-gprs 1"
-      mcc="452"
-      mnc="01"
-      apn="m-wap"
-      user="mms"
-      password="mms"
-      authtype="1"
-      proxy="203.162.21.107"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobi-gprs-mms"
-      mcc="452"
-      mnc="01"
-      apn="m-i090"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://203.162.21.114/mmsc"
-      mmsproxy="203.162.21.114"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Vina-wap-gprs"
-      mcc="452"
-      mnc="02"
-      apn="m3-world"
-      user="mms"
-      password="mms"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Vina-gprs-mms"
-      mcc="452"
-      mnc="02"
-      apn="m3-mms"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mms.vinaphone.com.vn"
-      mmsproxy="10.1.10.46"
-      mmsport="8000"
-      type="mms"
-  />
-
-  <apn carrier="Viettel-wap-gprs 1"
-      mcc="452"
-      mnc="04"
-      apn="v-internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Viettel-wap-gprs 2"
-      mcc="452"
-      mnc="04"
-      apn="v-wap"
-      proxy="192.168.233.10"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Viettel-gprs-mms"
-      mcc="452"
-      mnc="04"
-      apn="v-mms"
-      mmsc="http://mms.viettelmobile.com.vn/mms/wapenc"
-      mmsproxy="192.168.233.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Vietnamobile_GPRS3"
-      mcc="452"
-      mnc="05"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Vietnamobile_GPRS1"
-      mcc="452"
-      mnc="05"
-      apn="wap"
-      proxy="10.10.128.44"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Vietnamobile_GPRS2"
-      mcc="452"
-      mnc="05"
-      apn="wap"
-      type="default,supl"
-  />
-
-  <apn carrier="Vietnamobile_MMS"
-      mcc="452"
-      mnc="05"
-      apn="mms"
-      mmsc="http://10.10.128.58/servlets/mms"
-      mmsproxy="10.10.128.44"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Gmobile-wap-gprs2"
-      mcc="452"
-      mnc="07"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Gmobile-wap-gprs"
-      mcc="452"
-      mnc="07"
-      apn="internet"
-      proxy="10.16.70.199"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Gmobile-gprs-mms"
-      mcc="452"
-      mnc="07"
-      apn="mms"
-      mmsc="http://mms"
-      mmsproxy="10.16.70.199"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Gmobile MMS"
-      mcc="452"
-      mnc="07"
-      apn="mms"
-      user="mms"
-      password="mms"
-      authtype="2"
-      mmsc="http://mms"
-      mmsproxy="10.16.70.199"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="e-internet"
-      mcc="452"
-      mnc="08"
-      apn="e-internet"
-      type="default,supl"
-  />
-
-  <apn carrier="e-wap"
-      mcc="452"
-      mnc="08"
-      apn="e-wap"
-      proxy="10.18.2.183"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="e-mms"
-      mcc="452"
-      mnc="08"
-      apn="e-mms"
-      mmsc="http://10.18.2.172:38090"
-      mmsproxy="10.18.2.183"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="1O1O"
-      mcc="454"
-      mnc="00"
-      apn="mobile"
-      mmsproxy="192.168.59.51"
-      mmsport="8080"
-      mmsc="http://192.168.58.171:8002"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="csl"
-      mcc="454"
-      mnc="00"
-      apn="mobile"
-      mmsproxy="192.168.59.51"
-      mmsport="8080"
-      mmsc="http://192.168.58.171:8002"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="SUN Mobile"
-      mcc="454"
-      mnc="00"
-      apn="SUNMobile"
-      mmsproxy="192.168.59.61"
-      mmsport="8080"
-      mmsc="http://192.168.58.171:8002"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="1O1O"
-      mcc="454"
-      mnc="02"
-      apn="mobile"
-      mmsproxy="192.168.59.51"
-      mmsport="8080"
-      mmsc="http://192.168.58.171:8002"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="csl"
-      mcc="454"
-      mnc="02"
-      apn="mobile"
-      mmsproxy="192.168.59.51"
-      mmsport="8080"
-      mmsc="http://192.168.58.171:8002"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="SUN Mobile"
-      mcc="454"
-      mnc="02"
-      apn="SUNMobile"
-      mmsproxy="192.168.59.61"
-      mmsport="8080"
-      mmsc="http://192.168.58.171:8002"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="3 LTE"
-      mcc="454"
-      mnc="03"
-      apn="mobile.lte.three.com.hk"
-      mmsc="http://mms.um.three.com.hk:10021/mmsc"
-      mmsproxy="mms.three.com.hk"
-      mmsport="8799"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="3"
-      mcc="454"
-      mnc="03"
-      apn="mobile.three.com.hk"
-      mmsc="http://mms.um.three.com.hk:10021/mmsc"
-      mmsproxy="mms.three.com.hk"
-      mmsport="8799"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="3(2G) MMS"
-      mcc="454"
-      mnc="04"
-      apn="mms-g.three.com.hk"
-      mmsc="http://10.30.15.51:10021/mmsc"
-      mmsproxy="10.30.15.53"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="3(2G) GPRS"
-      mcc="454"
-      mnc="04"
-      apn="web-g.three.com.hk"
-      proxy="10.30.3.151"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="SmarTone"
-      mcc="454"
-      mnc="06"
-      apn="SmarTone"
-      mmsc="http://mms.smartone.com/server"
-      mmsproxy="10.9.9.9"
-      mmsport="8080"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Truphone"
-      mcc="454"
-      mnc="08"
-      apn="truphone.com"
-      type="default,supl"
-  />
-
-  <apn carrier="csl"
-      mcc="454"
-      mnc="10"
-      apn="hkcsl"
-      mmsc="http://192.168.58.171:8002"
-      mmsproxy="192.168.59.51"
-      mmsport="8080"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="CMHK MMS"
-      mcc="454"
-      mnc="12"
-      apn="cmhk"
-      mmsc="http://mms.hk.chinamobile.com/mms"
-      type="mms"
-  />
-
-  <apn carrier="CMHK Data"
-      mcc="454"
-      mnc="12"
-      apn="cmhk"
-      type="default,supl"
-  />
-
-  <apn carrier="CMHK MMS"
-      mcc="454"
-      mnc="13"
-      apn="cmhk"
-      mmsc="http://mms.hk.chinamobile.com/mms"
-      type="mms"
-  />
-
-  <apn carrier="CMHK Data"
-      mcc="454"
-      mnc="13"
-      apn="cmhk"
-      type="default,supl"
-  />
-
-  <apn carrier="SmarTone"
-      mcc="454"
-      mnc="15"
-      apn="SmarTone"
-      mmsproxy="10.9.9.9"
-      mmsport="8080"
-      mmsc="http://mms.smartone.com/server"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="csl"
-      mcc="454"
-      mnc="16"
-      apn="pccw"
-      mmsc="http://mms.hkcsl.com:8080"
-      mmsproxy="10.140.14.10"
-      mmsport="8080"
-      authtype="3"
-      type="default,hipri,mms"
-  />
-
-  <apn carrier="SmarTone"
-      mcc="454"
-      mnc="17"
-      apn="SmarTone"
-      mmsproxy="10.9.9.9"
-      mmsport="8080"
-      mmsc="http://mms.smartone.com/server"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="1O1O"
-      mcc="454"
-      mnc="18"
-      apn="mobile"
-      mmsproxy="192.168.59.51"
-      mmsport="8080"
-      mmsc="http://192.168.58.171:8002"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="csl"
-      mcc="454"
-      mnc="18"
-      apn="mobile"
-      mmsproxy="192.168.59.51"
-      mmsport="8080"
-      mmsc="http://192.168.58.171:8002"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="SUN Mobile"
-      mcc="454"
-      mnc="18"
-      apn="SUNMobile"
-      mmsproxy="192.168.59.61"
-      mmsport="8080"
-      mmsc="http://192.168.58.171:8002"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="csl"
-      mcc="454"
-      mnc="19"
-      apn="pccw"
-      mmsc="http://mms.hkcsl.com:8080"
-      mmsproxy="10.140.14.10"
-      mmsport="8080"
-      authtype="3"
-      type="default,hipri,mms"
-  />
-
-  <apn carrier="SmarTone Macau"
-      mcc="455"
-      mnc="00"
-      apn="smartgprs"
-      mmsc="http://momms.smartone.com/dmog/mo"
-      mmsproxy="10.9.9.29"
-      mmsport="8080"
-      authtype="3"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="CTM Data"
-      mcc="455"
-      mnc="01"
-      apn="ctm-mobile"
-      type="default,supl"
-  />
-
-  <apn carrier="CTM MMS"
-      mcc="455"
-      mnc="01"
-      apn="ctmmms"
-      mmsc="http://mms.wap.ctm.net:8002"
-      mmsproxy="192.168.99.3"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="CTM (Prepaid)"
-      mcc="455"
-      mnc="01"
-      apn="ctmprepaid"
-      mmsc="http://mms.wap.ctm.net:8002"
-      mmsproxy="192.168.99.3"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="3 Macau LTE"
-      mcc="455"
-      mnc="03"
-      apn="3mobile.three.com.mo"
-      mmsc="http://mms.three.com.mo:10021/mmsc"
-      mmsproxy="mms.three.com.mo"
-      mmsport="8080"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="3 Macau"
-      mcc="455"
-      mnc="03"
-      apn="mobile.three.com.mo"
-      mmsc="http://mms.three.com.mo:10021/mmsc"
-      mmsproxy="mms.three.com.mo"
-      mmsport="8080"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="CTM Data"
-      mcc="455"
-      mnc="04"
-      apn="ctm-mobile"
-      type="default,supl"
-  />
-
-  <apn carrier="CTM MMS"
-      mcc="455"
-      mnc="04"
-      apn="ctmmms"
-      mmsc="http://mms.wap.ctm.net:8002"
-      mmsproxy="192.168.99.3"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="CTM (Prepaid)"
-      mcc="455"
-      mnc="04"
-      apn="ctmprepaid"
-      mmsc="http://mms.wap.ctm.net:8002"
-      mmsproxy="192.168.99.3"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="3 Macau"
-      mcc="455"
-      mnc="05"
-      apn="mobile.three.com.mo"
-      mmsc="http://mms.three.com.mo:10021/mmsc"
-      mmsproxy="mms.three.com.mo"
-      mmsport="8080"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Cellcard"
-      mcc="456"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Smart"
-      mcc="456"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="qb"
-      mcc="456"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Star-Cell"
-      mcc="456"
-      mnc="05"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Smart"
-      mcc="456"
-      mnc="06"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Metfone"
-      mcc="456"
-      mnc="08"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Beeline"
-      mcc="456"
-      mnc="09"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Excell"
-      mcc="456"
-      mnc="11"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Cellcard"
-      mcc="456"
-      mnc="18"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="LTC"
-      mcc="457"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="ETL"
-      mcc="457"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Unitel"
-      mcc="457"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Beeline"
-      mcc="457"
-      mnc="08"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="中国移动 (China Mobile) GPRS"
-      mcc="460"
-      mnc="00"
-      apn="cmnet"
-      type="default,supl"
-  />
-
-  <apn carrier="中国移动 (China Mobile) WAP"
-      mcc="460"
-      mnc="00"
-      apn="cmwap"
-      proxy="10.0.0.172"
-      port="80"
-      type="default,supl"
-  />
-
-  <apn carrier="中国移动彩信 (China Mobile)"
-      mcc="460"
-      mnc="00"
-      apn="cmwap"
-      proxy="10.0.0.172"
-      port="80"
-      mmsc="http://mmsc.monternet.com"
-      mmsproxy="10.0.0.172"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="沃3G连接互联网 (China Unicom)"
-      mcc="460"
-      mnc="01"
-      apn="3gnet"
-      type="default,supl"
-  />
-
-  <apn carrier="沃3G手机上网 (China Unicom)"
-      mcc="460"
-      mnc="01"
-      apn="3gwap"
-      proxy="10.0.0.172"
-      port="80"
-      type="default,supl"
-  />
-
-  <apn carrier="联通2GNET上网 (China Unicom)"
-      mcc="460"
-      mnc="01"
-      apn="uninet"
-      type="default,supl"
-  />
-
-  <apn carrier="联通彩信 (China Unicom)"
-      mcc="460"
-      mnc="01"
-      apn="3gwap"
-      mmsc="http://mmsc.myuni.com.cn"
-      mmsproxy="10.0.0.172"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="联通2g彩信 (China Unicom)"
-      mcc="460"
-      mnc="01"
-      apn="uniwap"
-      mmsc="http://mmsc.myuni.com.cn"
-      mmsproxy="10.0.0.172"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="中国移动 (China Mobile) GPRS"
-      mcc="460"
-      mnc="02"
-      apn="cmnet"
-      type="default,supl"
-  />
-
-  <apn carrier="中国移动 (China Mobile) WAP"
-      mcc="460"
-      mnc="02"
-      apn="cmwap"
-      proxy="10.0.0.172"
-      port="80"
-      type="default,supl"
-  />
-
-  <apn carrier="中国移动彩信 (China Mobile)"
-      mcc="460"
-      mnc="02"
-      apn="cmwap"
-      proxy="10.0.0.172"
-      port="80"
-      mmsc="http://mmsc.monternet.com"
-      mmsproxy="10.0.0.172"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="中国移动 (China Mobile) GPRS"
-      mcc="460"
-      mnc="07"
-      apn="cmnet"
-      type="default,supl"
-  />
-
-  <apn carrier="中国移动 (China Mobile) GPRS"
-      mcc="460"
-      mnc="08"
-      apn="cmnet"
-      type="default,supl"
-  />
-
-  <apn carrier="中国移动 (China Mobile) WAP"
-      mcc="460"
-      mnc="07"
-      apn="cmwap"
-      proxy="10.0.0.172"
-      port="80"
-      type="default,supl"
-  />
-
-  <apn carrier="中国移动彩信 (China Mobile)"
-      mcc="460"
-      mnc="07"
-      apn="cmwap"
-      proxy="10.0.0.172"
-      port="80"
-      mmsc="http://mmsc.monternet.com"
-      mmsproxy="10.0.0.172"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="中国移动 (China Mobile) WAP"
-      mcc="460"
-      mnc="08"
-      apn="cmwap"
-      proxy="10.0.0.172"
-      port="80"
-      type="default,supl"
-  />
-
-  <apn carrier="中国移动彩信 (China Mobile)"
-      mcc="460"
-      mnc="08"
-      apn="cmwap"
-      proxy="10.0.0.172"
-      port="80"
-      mmsc="http://mmsc.monternet.com"
-      mmsproxy="10.0.0.172"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="China Unicom 3G"
-      apn="3gnet"
-      mcc="460"
-      mnc="09"
-      port="80"
-      type="default, supl"/>
-
-  <apn carrier="China Unicom wap"
-      apn="3gwap"
-      mcc="460"
-      mnc="09"
-      proxy="10.0.0.172"
-      port="80"
-      mmsproxy="10.0.0.172"
-      mmsport="80"
-      mmsc="http://mmsc.myuni.com.cn"
-      type="default,mms"/>
-
-  <apn carrier="ctlte"
-      mcc="460"
-      mnc="11"
-      apn="ctlte"
-      user=""
-      password=""
-      authtype="0"
-      server="*"
-      proxy=""
-      port="80"
-      mmsc=""
-      mmsproxy=""
-      mmsport=""
-      type="default,hipri,supl,fota,cbs"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="CTWAP"
-      mcc="460"
-      mnc="11"
-      apn="ctwap"
-      user=""
-      password=""
-      authtype="0"
-      server="*"
-      proxy=""
-      port="80"
-      mmsc="http://mmsc.vnet.mobi"
-      mmsproxy="10.0.0.200"
-      mmsport="80"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="CTNET"
-      mcc="460"
-      mnc="03"
-      apn="ctnet"
-      user="ctnet@mycdma.cn"
-      password="vnet.mobi"
-      authtype="3"
-      server="*"
-      proxy=""
-      port="80"
-      mmsc=""
-      mmsproxy=""
-      mmsport=""
-      type="default,hipri,fota,cbs"
-      protocol="IP"
-  />
-
-  <apn carrier="CTWAP"
-      mcc="460"
-      mnc="03"
-      apn="ctwap"
-      user="ctwap@mycdma.cn"
-      password="vnet.mobi"
-      authtype="3"
-      server="*"
-      proxy=""
-      port="80"
-      mmsc="http://mmsc.vnet.mobi"
-      mmsproxy="10.0.0.200"
-      mmsport="80"
-      type="default,mms,hipri,supl,fota,cbs"
-      protocol="IP"
-  />
-
-  <apn carrier="CTNET"
-      mcc="204"
-      mnc="04"
-      apn="ctnet"
-      user=""
-      password=""
-      authtype="0"
-      server="*"
-      proxy=""
-      port=""
-      mmsc=""
-      mmsproxy=""
-      mmsport=""
-      type="default,hipri,supl,fota,cbs"
-      mvno_type="spn"
-      mvno_match_data="中国电信"
-      protocol="IP"
-  />
-
-  <apn carrier="遠傳電信(Far EasTone) (MMS)"
-      mcc="466"
-      mnc="01"
-      apn="fetnet01"
-      mmsc="http://mms"
-      mmsproxy="210.241.199.199"
-      mmsport="9201"
-      type="mms"
-  />
-
-  <apn carrier="遠傳電信(Far EasTone) (Internet)"
-      mcc="466"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="GT Internet"
-      mcc="466"
-      mnc="05"
-      apn="gtnet"
-      type="default,supl"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="和信電訊(KGT-Online) (Internet)"
-      mcc="466"
-      mnc="88"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="和信電訊(KGT-Online) (MMS)"
-      mcc="466"
-      mnc="88"
-      apn="kgtmms"
-      mmsc="http://mms.kgtmms.net.tw/mms/wapenc"
-      mmsproxy="172.28.33.5"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="T Star-internet"
-      mcc="466"
-      mnc="89"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="VIBO-vibo"
-      mcc="466"
-      mnc="89"
-      apn="vibo"
-      type="default,supl"
-  />
-
-  <apn carrier="VIBOONE"
-      mcc="466"
-      mnc="89"
-      apn="viboone"
-      type="default,supl"
-  />
-
-  <apn carrier="T Star-MMS"
-      mcc="466"
-      mnc="89"
-      apn="internet"
-      mmsc="http://mms.vibo.net.tw"
-      mmsproxy="172.24.128.36"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="中華電信(Chunghwa) (Internet)"
-      mcc="466"
-      mnc="92"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="中華電信(Chunghwa) (MMS)"
-      mcc="466"
-      mnc="92"
-      apn="emome"
-      mmsc="http://mms.emome.net:8002"
-      mmsproxy="10.1.1.1"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="台灣大哥大(TW Mobile) (Internet)"
-      mcc="466"
-      mnc="93"
-      apn="Internet"
-      type="default,supl"
-  />
-
-  <apn carrier="台灣大哥大(TW Mobile) (MMS)"
-      mcc="466"
-      mnc="93"
-      apn="MMS"
-      mmsc="http://mms.catch.net.tw"
-      mmsproxy="10.1.1.2"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="台灣大哥大(TW Mobile) (Internet)"
-      mcc="466"
-      mnc="97"
-      apn="Internet"
-      type="default,supl"
-  />
-
-  <apn carrier="台灣大哥大(TW Mobile) (MMS)"
-      mcc="466"
-      mnc="97"
-      apn="MMS"
-      mmsc="http://mms.catch.net.tw"
-      mmsproxy="10.1.1.2"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="台灣大哥大(TW Mobile) (Internet)"
-      mcc="466"
-      mnc="99"
-      apn="Internet"
-      type="default,supl"
-  />
-
-  <apn carrier="台灣大哥大(TW Mobile) (MMS)"
-      mcc="466"
-      mnc="99"
-      apn="mms"
-      mmsc="http://mms.catch.net.tw"
-      mmsproxy="10.1.1.2"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="GP-INTERNET"
-      mcc="470"
-      mnc="01"
-      apn="gpinternet"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-  />
-
-  <apn carrier="GP-MMS"
-      mcc="470"
-      mnc="01"
-      apn="gpmms"
-      authtype="0"
-      mmsc="http://mms.gpsurf.net/servlets/mms"
-      mmsproxy="10.128.1.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Dhiraagu"
-      mcc="472"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Wataniya"
-      mcc="472"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="DiGi Internet"
-      mcc="502"
-      mnc="10"
-      apn="diginet"
-      type="default,supl"
-  />
-
-  <apn carrier="DiGi MMS"
-      mcc="502"
-      mnc="10"
-      apn="digimms"
-      user="mms"
-      password="mms"
-      mmsc="http://mms.digi.com.my/servlets/mms"
-      mmsproxy="203.92.128.160"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Maxis Internet"
-      mcc="502"
-      mnc="12"
-      apn="max4g"
-      user="maxis"
-      password="wap"
-      mmsproxy="202.75.133.49"
-      mmsport="80"
-      mmsc="http://172.16.74.100:10021/mmsc"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Celcom Internet"
-      mcc="502"
-      mnc="13"
-      apn="celcom4g"
-      mmsproxy="10.128.1.242"
-      mmsport="8080"
-      mmsc="http://mms.celcom.net.my"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Maxis Internet"
-      mcc="502"
-      mnc="142"
-      apn="max4g"
-      user="maxis"
-      password="wap"
-      mmsproxy="202.75.133.49"
-      mmsport="80"
-      mmsc="http://172.16.74.100:10021/mmsc"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="DiGi Internet"
-      mcc="502"
-      mnc="143"
-      apn="diginet"
-      type="default,supl"
-  />
-
-  <apn carrier="DiGi MMS"
-      mcc="502"
-      mnc="143"
-      apn="digimms"
-      user="mms"
-      password="mms"
-      mmsc="http://mms.digi.com.my/servlets/mms"
-      mmsproxy="203.92.128.160"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Celcom Internet"
-      mcc="502"
-      mnc="145"
-      apn="celcom4g"
-      mmsproxy="10.128.1.242"
-      mmsport="8080"
-      mmsc="http://mms.celcom.net.my"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="DiGi Internet"
-      mcc="502"
-      mnc="146"
-      apn="diginet"
-      type="default,supl"
-  />
-
-  <apn carrier="DiGi MMS"
-      mcc="502"
-      mnc="146"
-      apn="digimms"
-      user="mms"
-      password="mms"
-      mmsc="http://mms.digi.com.my/servlets/mms"
-      mmsproxy="203.92.128.160"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Maxis Internet"
-      mcc="502"
-      mnc="147"
-      apn="max4g"
-      user="maxis"
-      password="wap"
-      mmsproxy="202.75.133.49"
-      mmsport="80"
-      mmsc="http://172.16.74.100:10021/mmsc"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Celcom Internet"
-      mcc="502"
-      mnc="148"
-      apn="celcom4g"
-      mmsproxy="10.128.1.242"
-      mmsport="8080"
-      mmsc="http://mms.celcom.net.my"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="DiGi MMS"
-      mcc="502"
-      mnc="16"
-      apn="digimms"
-      user="mms"
-      password="mms"
-      mmsc="http://mms.digi.com.my/servlets/mms"
-      mmsproxy="203.92.128.160"
-      mmsport="80"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="DiGi Internet"
-      mcc="502"
-      mnc="16"
-      apn="diginet"
-      type="default,supl"
-  />
-
-  <apn carrier="Maxis Internet"
-      mcc="502"
-      mnc="17"
-      apn="max4g"
-      user="maxis"
-      password="wap"
-      mmsproxy="202.75.133.49"
-      mmsport="80"
-      mmsc="http://172.16.74.100:10021/mmsc"
-      authtype="1"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="U Mobile Internet"
-      mcc="502"
-      mnc="18"
-      apn="my3g"
-      mmsproxy="10.30.5.11"
-      mmsport="8080"
-      mmsc="http://10.30.3.11/servlets/mms"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Celcom Internet"
-      mcc="502"
-      mnc="19"
-      apn="celcom4g"
-      mmsproxy="10.128.1.242"
-      mmsport="8080"
-      mmsc="http://mms.celcom.net.my"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Telstra IMS"
-      mcc="505"
-      mnc="01"
-      apn="ims"
-      type="ims"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-      user_visible="false"
-  />
-
-  <apn carrier="Telstra Internet"
-      mcc="505"
-      mnc="01"
-      apn="telstra.wap"
-      type="default,supl"
-  />
-
-  <apn carrier="Telstra MMS"
-      mcc="505"
-      mnc="01"
-      apn="telstra.mms"
-      type="mms"
-      mmsc="http://mmsc.telstra.com:8002/"
-      mmsproxy="10.1.1.180"
-      mmsport="80"
-  />
-
-  <apn carrier="Optus Yes Internet"
-      mcc="505"
-      mnc="02"
-      apn="yesinternet"
-      type="default,supl"
-  />
-
-  <apn carrier="Optus Business Mobile Broadband"
-      mcc="505"
-      mnc="02"
-      apn="yesbusiness"
-      type="default,supl"
-  />
-
-  <apn carrier="Optus MMS"
-      mcc="505"
-      mnc="02"
-      apn="mms"
-      mmsc="http://mmsc.optus.com.au:8002/"
-      mmsproxy="61.88.190.10"
-      mmsport="8070"
-      type="mms"
-  />
-
-  <apn carrier="Truphone"
-      mcc="505"
-      mnc="02"
-      apn="truphone.com"
-      type="default,supl"
-      mvno_match_data="50502100"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Virgin Internet"
-      mcc="505"
-      mnc="02"
-      apn="yesinternet"
-      type="default,supl"
-      mvno_match_data="505029"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Virgin MMS"
-      mcc="505"
-      mnc="02"
-      apn="mms"
-      mmsc="http://mmsc.optus.com.au:8002/"
-      mmsproxy="61.88.190.10"
-      mmsport="8070"
-      type="mms"
-      mvno_match_data="505029"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Vodafone live!"
-      mcc="505"
-      mnc="03"
-      apn="live.vodafone.com"
-      mmsc="http://pxt.vodafone.net.au/pxtsend"
-      mmsproxy="10.202.2.60"
-      mmsport="8080"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Planet 3"
-      mcc="505"
-      mnc="06"
-      apn="3services"
-      authtype="0"
-      mmsc="http://mmsc.three.net.au:10021/mmsc"
-      mmsproxy="10.176.57.25"
-      mmsport="8799"
-      protocol="IP"
-  />
-
-  <apn carrier="VF AU PXT"
-      mcc="505"
-      mnc="07"
-      apn="live.vodafone.com"
-      mmsc="http://pxt.vodafone.net.au/pxtsend"
-      mmsproxy="10.202.2.60"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="VF Internet"
-      mcc="505"
-      mnc="07"
-      apn="vfinternet.au"
-      type="default,supl"
-  />
-
-  <apn carrier="Telstra MMS"
-      mcc="505"
-      mnc="11"
-      apn="Telstra.mms"
-      mmsc="http://mmsc.telstra.com:8002"
-      mmsproxy="10.1.1.180"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Telstra Internet"
-      mcc="505"
-      mnc="11"
-      apn="Telstra.wap"
-      type="default,supl"
-  />
-
-  <apn carrier="3Internet"
-      mcc="505"
-      mnc="12"
-      apn="3netaccess"
-      type="default,supl"
-  />
-
-  <apn carrier="3"
-      mcc="505"
-      mnc="12"
-      apn="3services"
-      mmsc="http://mmsc.three.net.au:10021/mmsc"
-      mmsproxy="10.176.57.25"
-      mmsport="8799"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Telstra MMS"
-      mcc="505"
-      mnc="71"
-      apn="Telstra.mms"
-      mmsc="http://mmsc.telstra.com:8002"
-      mmsproxy="10.1.1.180"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Telstra Internet"
-      mcc="505"
-      mnc="71"
-      apn="Telstra.wap"
-      type="default,supl"
-  />
-
-  <apn carrier="Telstra MMS"
-      mcc="505"
-      mnc="72"
-      apn="Telstra.mms"
-      mmsc="http://mmsc.telstra.com:8002"
-      mmsproxy="10.1.1.180"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Telstra Internet"
-      mcc="505"
-      mnc="72"
-      apn="Telstra.wap"
-      type="default,supl"
-  />
-
-  <apn carrier="VF AU PXT"
-      mcc="505"
-      mnc="88"
-      apn="live.vodafone.com"
-      mmsc="http://pxt.vodafone.net.au/pxtsend"
-      mmsproxy="10.202.2.60"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="VF Internet"
-      mcc="505"
-      mnc="88"
-      apn="vfinternet.au"
-      type="default,supl"
-  />
-
-  <apn carrier="Optus Internet"
-      mcc="505"
-      mnc="90"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Optus Business Mobile Broadband"
-      mcc="505"
-      mnc="90"
-      apn="yesbusiness"
-      type="default,supl"
-  />
-
-  <apn carrier="Optus MMS"
-      mcc="505"
-      mnc="90"
-      apn="mms"
-      mmsc="http://mmsc.optus.com.au:8002/"
-      mmsproxy="61.88.190.10"
-      mmsport="8070"
-      type="mms"
-  />
-
-  <apn carrier="Vodafone Live!"
-      mcc="505"
-      mnc="99"
-      apn="live.vodafone.com"
-      mmsc="http://pxt.vodafone.net.au/pxtsend"
-      mmsproxy="10.202.2.60"
-      mmsport="8080"
-  />
-
-  <apn carrier="Indosat-SNS"
-      mcc="510"
-      mnc="01"
-      apn="indosatgprs"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Indosat GPRS"
-      mcc="510"
-      mnc="01"
-      apn="indosatgprs"
-      user="indosat"
-      password="indosat"
-      authtype="1"
-      proxy="10.19.19.19"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Indosat MMS"
-      mcc="510"
-      mnc="01"
-      apn="indosatmms"
-      user="indosat"
-      password="indosat"
-      authtype="1"
-      mmsc="http://mmsc.indosat.com"
-      mmsproxy="10.19.19.19"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="AXIS-SNS"
-      mcc="510"
-      mnc="08"
-      apn="AXIS"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="AXISwap"
-      mcc="510"
-      mnc="08"
-      apn="AXIS"
-      user="axis"
-      password="123456"
-      proxy="10.8.3.8"
-      port="8080"
-      type="default,supl"
-      authtype="1"
-  />
-
-  <apn carrier="AXISmms"
-      mcc="510"
-      mnc="08"
-      apn="AXISmms"
-      user="axis"
-      password="123456"
-      mmsc="http://mmsc.axis"
-      mmsproxy="10.8.3.8"
-      mmsport="8080"
-      type="mms"
-      authtype="1"
-  />
-
-  <apn carrier="internet"
-      mcc="510"
-      mnc="10"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="TSEL-WAP"
-      mcc="510"
-      mnc="10"
-      apn="telkomsel"
-      user="wap"
-      password="wap123"
-      authtype="1"
-      proxy="10.1.89.130"
-      port="8000"
-      type="default,supl"
-  />
-
-  <apn carrier="TSEL-MMS"
-      mcc="510"
-      mnc="10"
-      apn="mms"
-      user="wap"
-      password="wap123"
-      authtype="1"
-      mmsc="http://mms.telkomsel.com"
-      mmsproxy="10.1.89.150"
-      mmsport="8000"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="510"
-      mnc="11"
-      apn="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="XL-MMS"
-      mcc="510"
-      mnc="11"
-      apn="www.xlmms.net"
-      user="xlgprs"
-      password="proxl"
-      authtype="1"
-      mmsc="http://mmc.xl.net.id/servlets/mms"
-      mmsproxy="202.152.240.50"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Indosat-SNS"
-      mcc="510"
-      mnc="21"
-      apn="indosatgprs"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Indosat GPRS"
-      mcc="510"
-      mnc="21"
-      apn="indosatgprs"
-      user="indosat"
-      password="indosat"
-      authtype="1"
-      proxy="10.19.19.19"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Indosat MMS"
-      mcc="510"
-      mnc="21"
-      apn="indosatmms"
-      user="indosat"
-      password="indosat"
-      authtype="1"
-      mmsc="http://mmsc.indosat.com"
-      mmsproxy="10.19.19.19"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="3-SNS"
-      mcc="510"
-      mnc="89"
-      apn="3gprs"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="3GPRS"
-      mcc="510"
-      mnc="89"
-      apn="3gprs"
-      user="3gprs"
-      password="3gprs"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="3MMS"
-      mcc="510"
-      mnc="89"
-      apn="3mms"
-      user="3mms"
-      password="3mms"
-      authtype="1"
-      mmsc="http://mms.three.co.id"
-      mmsproxy="10.4.0.10"
-      mmsport="3128"
-      type="mms"
-  />
-
-  <apn carrier="Telin"
-      mcc="514"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Timor Telecom"
-      mcc="514"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Viettel Timor-Leste"
-      mcc="514"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="myGlobe Internet"
-      mcc="515"
-      mnc="02"
-      apn="internet.globe.com.ph"
-      type="default,supl"
-  />
-
-  <apn carrier="myGlobe INET"
-      mcc="515"
-      mnc="02"
-      apn="http.globe.com.ph"
-      type="default,supl"
-  />
-
-  <apn carrier="myGlobe Connect"
-      mcc="515"
-      mnc="02"
-      apn="www.globe.com.ph"
-      proxy="203.177.42.214"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="myGlobe MMS"
-      mcc="515"
-      mnc="02"
-      apn="mms.globe.com.ph"
-      mmsc="http://192.40.100.22:10021/mmsc"
-      mmsproxy="203.177.42.214"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="SMARTLTE"
-      mcc="515"
-      mnc="03"
-      apn="smartlte"
-      type="default,supl"
-  />
-
-  <apn carrier="SMART INTERNET"
-      mcc="515"
-      mnc="03"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Smart GPRS"
-      mcc="515"
-      mnc="03"
-      apn="Smart1"
-      proxy="10.102.61.46"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Smart MMS"
-      mcc="515"
-      mnc="03"
-      apn="mms"
-      mmsc="http://10.102.61.238:8002"
-      mmsproxy="10.102.61.46"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Sun Internet"
-      mcc="515"
-      mnc="05"
-      apn="minternet"
-      type="default,supl"
-  />
-
-  <apn carrier="SUN WAP GPRS"
-      mcc="515"
-      mnc="05"
-      apn="wap"
-      proxy="202.138.159.78"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Sun SBW"
-      mcc="515"
-      mnc="05"
-      apn="fbband"
-      type="default,supl"
-  />
-
-  <apn carrier="SUN MMS"
-      mcc="515"
-      mnc="05"
-      apn="mms"
-      mmsc="http://mmscenter.suncellular.com.ph"
-      mmsproxy="202.138.159.78"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Redinternet"
-      mcc="515"
-      mnc="18"
-      apn="redinternet"
-      type="default,supl"
-  />
-
-  <apn carrier="Redmms"
-      mcc="515"
-      mnc="18"
-      apn="real.globe.com.ph"
-      mmsc="http://10.102.61.193:8002/mmsc"
-      mmsproxy="10.138.3.35"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="CAT3G INTERNET"
-      mcc="520"
-      mnc="00"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="CAT3G MMS"
-      mcc="520"
-      mnc="00"
-      apn="catmms"
-      mmsc="http://mms.cat3g.com:8002/"
-      mmsproxy="10.4.7.39"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="TRUE-H INTERNET"
-      mcc="520"
-      mnc="00"
-      apn="internet"
-      user="true"
-      password="true"
-      authtype="1"
-      type="default,supl"
-      mvno_match_data="01"
-      mvno_type="gid"
-  />
-
-  <apn carrier="TRUE-H MMS"
-      mcc="520"
-      mnc="00"
-      apn="hmms"
-      user="true"
-      password="true"
-      authtype="1"
-      mmsc="http://mms.trueh.com:8002/"
-      mmsproxy="10.4.7.39"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="01"
-      mvno_type="gid"
-  />
-
-  <apn carrier="AIS Internet"
-      mcc="520"
-      mnc="01"
-      apn="internet"
-      authtype="0"
-      type="default,supl"
-  />
-
-  <apn carrier="AIS MMS"
-      mcc="520"
-      mnc="01"
-      apn="multimedia"
-      mmsc="http://mms.mobilelife.co.th"
-      mmsproxy="203.170.229.34"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="AIS Internet"
-      mcc="520"
-      mnc="03"
-      apn="internet"
-      authtype="0"
-      type="default,supl"
-  />
-
-  <apn carrier="AIS MMS"
-      mcc="520"
-      mnc="03"
-      apn="multimedia"
-      mmsc="http://mms.mobilelife.co.th"
-      mmsproxy="203.170.229.34"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="TRUE-H INTERNET"
-      mcc="520"
-      mnc="04"
-      apn="internet"
-      user="true"
-      password="true"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="TRUE-H MMS"
-      mcc="520"
-      mnc="04"
-      apn="hmms"
-      user="true"
-      password="true"
-      authtype="1"
-      mmsc="http://mms.trueh.com:8002/"
-      mmsproxy="10.4.7.39"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="dtac Internet"
-      mcc="520"
-      mnc="05"
-      apn="www.dtac.co.th"
-      type="default,supl"
-  />
-
-  <apn carrier="dtac MMS"
-      mcc="520"
-      mnc="05"
-      apn="mms"
-      mmsc="http://mms2.dtac.co.th:8002/"
-      mmsproxy="10.10.10.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="TOT 3G Internet"
-      mcc="520"
-      mnc="15"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="TOT 3G MMS"
-      mcc="520"
-      mnc="15"
-      apn="mms"
-      mmsc="http://mms.tot3g.net:8002"
-      mmsproxy="192.168.0.72"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="dtac MMS"
-      mcc="520"
-      mnc="18"
-      apn="mms"
-      mmsc="http://mms.dtac.co.th:8002/"
-      mmsproxy="203.155.200.133"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="dtac Internet"
-      mcc="520"
-      mnc="18"
-      apn="www.dtac.co.th"
-      type="default,supl"
-  />
-
-  <apn carrier="TRUE INTERNET"
-      mcc="520"
-      mnc="99"
-      apn="internet"
-      user="true"
-      password="true"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="TRUE MMS"
-      mcc="520"
-      mnc="99"
-      apn="hmms"
-      user="true"
-      password="true"
-      authtype="1"
-      mmsc="http://mms.truelife.com:8002/"
-      mmsproxy="10.4.7.39"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="SingTel (PostPaid)"
-      mcc="525"
-      mnc="01"
-      apn="e-ideas"
-      mmsproxy="165.21.42.84"
-      mmsport="8080"
-      mmsc="http://mms.singtel.com:10021/mmsc"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="SingTel (PrePaid)"
-      mcc="525"
-      mnc="01"
-      apn="hicard"
-      mmsproxy="165.21.42.84"
-      mmsport="8080"
-      mmsc="http://mms.singtel.com:10021/mmsc"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="SingTel (PostPaid)"
-      mcc="525"
-      mnc="02"
-      apn="e-ideas"
-      mmsproxy="165.21.42.84"
-      mmsport="8080"
-      mmsc="http://mms.singtel.com:10021/mmsc"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="SingTel (PrePaid)"
-      mcc="525"
-      mnc="02"
-      apn="hicard"
-      mmsproxy="165.21.42.84"
-      mmsport="8080"
-      mmsc="http://mms.singtel.com:10021/mmsc"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Sunsurf Mobile"
-      mcc="525"
-      mnc="03"
-      apn="sunsurf"
-      type="default,supl"
-  />
-
-  <apn carrier="M1 MMS(3G)"
-      mcc="525"
-      mnc="03"
-      apn="miworld"
-      user="65"
-      password="user123"
-      mmsc="http://mmsgw:8002"
-      mmsproxy="172.16.14.10"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Sunsurf Mobile"
-      mcc="525"
-      mnc="04"
-      apn="sunsurf"
-      type="default,supl"
-  />
-
-  <apn carrier="M1 MMS(3G)"
-      mcc="525"
-      mnc="04"
-      apn="miworld"
-      user="65"
-      password="user123"
-      authtype="1"
-      mmsc="http://mmsgw:8002"
-      mmsproxy="172.16.14.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="SH Data Postpaid"
-      mcc="525"
-      mnc="05"
-      apn="shwap"
-      type="default,supl"
-  />
-
-  <apn carrier="SH MMS Postpaid"
-      mcc="525"
-      mnc="05"
-      apn="shmms"
-      mmsc="http://mms.starhubgee.com.sg:8002/"
-      mmsproxy="10.12.1.80"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="GT Roaming"
-      mcc="525"
-      mnc="05"
-      apn="gtnet"
-      mvno_type="imsi"
-      mvno_match_data="525053095xxxxxx"
-      type="default,supl"
-      roaming_protocol="IPV4V6"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="B-Mobile"
-      mcc="528"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="DSTCom"
-      mcc="528"
-      mnc="11"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="VFNZ Gateway"
-      mcc="530"
-      mnc="01"
-      apn="live.vodafone.com"
-      mmsc="http://pxt.vodafone.net.nz/pxtsend"
-      mmsproxy="172.30.38.3"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="VFNZ Internet"
-      mcc="530"
-      mnc="01"
-      apn="vodafone"
-      type="default,supl"
-  />
-
-  <apn carrier="Data"
-      mcc="530"
-      mnc="05"
-      apn="Internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Content"
-      mcc="530"
-      mnc="05"
-      apn="Internet"
-      proxy="210.55.11.73"
-      port="80"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="530"
-      mnc="05"
-      apn="Internet"
-      mmsc="http://lsmmsc.xtra.co.nz"
-      mmsproxy="210.55.11.73"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Default"
-      mcc="530"
-      mnc="05"
-      apn="wapaccess.co.nz"
-      type="default,supl"
-      mvno_match_data="53005204"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Content"
-      mcc="530"
-      mnc="05"
-      apn="wapaccess.co.nz"
-      proxy="210.55.11.73"
-      port="80"
-      type="default,supl"
-      mvno_match_data="53005204"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Data"
-      mcc="530"
-      mnc="05"
-      apn="wapaccess.co.nz"
-      type="default,supl"
-      mvno_match_data="53005204"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="MMS"
-      mcc="530"
-      mnc="05"
-      apn="wapaccess.co.nz"
-      mmsc="http://mms.mmsaccess.co.nz"
-      mmsproxy="210.55.11.73"
-      mmsport="80"
-      type="mms"
-      mvno_match_data="53005204"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="2Degrees Internet"
-      mcc="530"
-      mnc="24"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="2Degrees MMS"
-      mcc="530"
-      mnc="24"
-      apn="mms"
-      mmsc="http://mms.2degreesmobile.net.nz:48090"
-      mmsproxy="118.148.1.118"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Digicel"
-      mcc="536"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="BeMobile"
-      mcc="537"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="PNG WAP"
-      mcc="537"
-      mnc="03"
-      apn="wap.digicelpng.com"
-      proxy="10.149.83.116"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="PNG WEB"
-      mcc="537"
-      mnc="03"
-      apn="internet.digicelpng.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Papua New Guinea:Digicel:Modem"
-      mcc="537"
-      mnc="03"
-      apn="wap.digicel.com.pg"
-      type="dun"
-      authtype="1"
-      mmsc="http://wapdigicel.com"
-      proxy="10.149.122.12"
-      port="8080"
-  />
-
-  <apn carrier="PNG MMS"
-      mcc="537"
-      mnc="03"
-      apn="wap.digicelpng.com"
-      mmsc="http://mms.digicelpng.com:8990"
-      mmsproxy="10.149.83.116"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="U-Call"
-      mcc="539"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Shoreline Communication"
-      mcc="539"
-      mnc="43"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Digicel"
-      mcc="539"
-      mnc="88"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Tonga:Digicel:Modem"
-      mcc="539"
-      mnc="88"
-      apn="wap"
-      type="dun"
-      authtype="1"
-      mmsc="http://wapdigicel.com"
-      proxy="172.16.7.12"
-      port="8080"
-  />
-
-  <apn carrier="Tonga:Digicel:Mms"
-      mcc="539"
-      mnc="88"
-      apn="wap"
-      type="mms"
-      authtype="1"
-      mmsproxy="172.16.7.12"
-      mmsc="http://mms.digicelgroup.com"
-      mmsport="9201"
-  />
-
-  <apn carrier="BREEZE"
-      mcc="540"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="BeMobile"
-      mcc="540"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="AIL"
-      mcc="541"
-      mnc="00"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="SMILE"
-      mcc="541"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Digicel"
-      mcc="541"
-      mnc="05"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Vanatu:Digicel:Modem"
-      mcc="541"
-      mnc="05"
-      apn="wap"
-      type="dun"
-      authtype="1"
-      mmsc="http://wapdigicel.com"
-      proxy="172.16.7.12"
-      port="8080"
-  />
-
-  <apn carrier="Vanatu:Digicel:Mms"
-      mcc="541"
-      mnc="05"
-      apn="wap"
-      type="mms"
-      authtype="1"
-      mmsproxy="172.16.7.12"
-      mmsc="http://mms.digicelgroup.com"
-      mmsport="9201"
-  />
-
-  <apn carrier="Vodafone"
-      mcc="542"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Digicel"
-      mcc="542"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Fiji:Digicel:Modem"
-      mcc="542"
-      mnc="02"
-      apn="wap"
-      type="dun"
-      authtype="1"
-      mmsc="http://wapdigicel.com"
-      proxy="172.16.7.12"
-      port="8080"
-  />
-
-  <apn carrier="Fiji:Digicel:Mms"
-      mcc="542"
-      mnc="02"
-      apn="wap"
-      type="mms"
-      authtype="1"
-      mmsproxy="172.16.7.12"
-      mmsc="http://mms.digicelgroup.com"
-      mmsport="9201"
-  />
-
-  <apn carrier="Bluesky"
-      mcc="544"
-      mnc="11"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Kiribati - TSKL"
-      mcc="545"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Kiribati - Frigate Net"
-      mcc="545"
-      mnc="09"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobilis"
-      mcc="546"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Vini"
-      mcc="547"
-      mnc="20"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Telecom Cook"
-      mcc="548"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Digicel"
-      mcc="549"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Bluesky"
-      mcc="549"
-      mnc="27"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="FSMTC"
-      mcc="550"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MINTA"
-      mcc="551"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="PNCC"
-      mcc="552"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Palau Mobile"
-      mcc="552"
-      mnc="80"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobinil Web"
-      mcc="602"
-      mnc="01"
-      apn="mobinilweb"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobinil WAP"
-      mcc="602"
-      mnc="01"
-      apn="mobinilwap"
-      proxy="62.241.155.45"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobinil MMS"
-      mcc="602"
-      mnc="01"
-      apn="mobinilmms"
-      mmsc="http://10.7.13.24:8002"
-      mmsproxy="62.241.155.45"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="vodafone internet"
-      mcc="602"
-      mnc="02"
-      apn="internet.vodafone.net"
-      user="internet"
-      password="internet"
-      authtype="3"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodafone WAP"
-      mcc="602"
-      mnc="02"
-      apn="wap.vodafone.com.eg"
-      user="wap"
-      password="wap"
-      authtype="3"
-      proxy="163.121.178.2"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodafone MMS"
-      mcc="602"
-      mnc="02"
-      apn="mms.vodafone.com.eg"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mms.vodafone.com.eg/servlets/mms"
-      mmsproxy="163.121.178.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Etisalat WAP"
-      mcc="602"
-      mnc="03"
-      apn="etisalat"
-      proxy="10.71.130.29"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Etisalat MMS"
-      mcc="602"
-      mnc="03"
-      apn="etisalat"
-      mmsc="http://10.71.131.7:38090"
-      mmsproxy="10.71.130.29"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="mobilis wap"
-      mcc="603"
-      mnc="01"
-      apn="wap"
-      proxy="172.25.49.2"
-      port="8080"
-      user="wap"
-      password="wap"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobilis internet"
-      mcc="603"
-      mnc="01"
-      apn="internet"
-      user="internet"
-      password="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobilis mms"
-      mcc="603"
-      mnc="01"
-      apn="mms"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://172.25.49.9/servlets/mms"
-      mmsproxy="172.25.49.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="djezzy.internet"
-      mcc="603"
-      mnc="02"
-      apn="djezzy.internet"
-      type="default,supl"
-  />
-
-  <apn carrier="djezzy.mms"
-      mcc="603"
-      mnc="02"
-      apn="djezzy.mms"
-      user="mms"
-      password="mms"
-      mmsc="http://172.24.97.152:6021/mmsc"
-      mmsproxy="172.24.97.158"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <apn carrier="nedjmawap"
-      mcc="603"
-      mnc="03"
-      apn="nedjmawap"
-      proxy="192.168.52.2"
-      port="3128"
-      user="wap"
-      password="wap"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Nedjma.dz"
-      mcc="603"
-      mnc="03"
-      apn="internet"
-      user="nedjma"
-      password="nedjma"
-      type="default,supl"
-  />
-
-  <apn carrier="nedjmamms"
-      mcc="603"
-      mnc="03"
-      apn="nedjmamms"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://10.10.111.1"
-      mmsproxy="192.168.52.3"
-      mmsport="3128"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="604"
-      mnc="00"
-      apn="internet1.meditel.ma"
-      user="MEDINET"
-      password="MEDINET"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Imedia"
-      mcc="604"
-      mnc="00"
-      apn="wap.meditel.ma"
-      proxy="10.8.8.8"
-      port="8080"
-      user="MEDIWAP"
-      password="MEDIWAP"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="GPRS MMS"
-      mcc="604"
-      mnc="00"
-      apn="mms.meditel.ma"
-      user="MEDIMMS"
-      password="MEDIMMS"
-      authtype="1"
-      mmsc="http://mms.meditel.ma:8088/mms"
-      mmsproxy="10.8.8.9"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="MobileZone"
-      mcc="604"
-      mnc="01"
-      apn="wap.iamgprs.ma"
-      proxy="212.217.54.133"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Internet Mobile"
-      mcc="604"
-      mnc="01"
-      apn="www.iamgprs1.ma"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS IAM"
-      mcc="604"
-      mnc="01"
-      apn="mmsiam"
-      mmsc="http://mms:8002/"
-      mmsproxy="10.16.35.50"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="WEB"
-      mcc="604"
-      mnc="02"
-      apn="www.wana.ma"
-      type="default,supl"
-  />
-
-  <apn carrier="WAP"
-      mcc="604"
-      mnc="02"
-      apn="www.wana.ma"
-      proxy="10.86.0.10"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="604"
-      mnc="02"
-      apn="mms.wana.ma"
-      mmsc="http://mms.wana.ma:38090"
-      mmsproxy="10.86.0.10"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="weborange"
-      mcc="605"
-      mnc="01"
-      apn="weborange"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Orange"
-      mcc="605"
-      mnc="01"
-      apn="mms.otun"
-      mmsc="http://mms.orange.tn"
-      mmsproxy="10.12.1.52"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="605"
-      mnc="02"
-      apn="internet.tn"
-      type="default,supl"
-  />
-
-  <apn carrier="Internet Portail"
-      mcc="605"
-      mnc="02"
-      apn="gprs.tn"
-      user="gprs"
-      password="gprs"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Tunisie Telecom MMS"
-      mcc="605"
-      mnc="02"
-      apn="mms.tn"
-      user="mms@tt1"
-      password="mms"
-      authtype="1"
-      mmsc="http://192.168.0.3:19090/was"
-      mmsproxy="192.168.0.2"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Tunisiana-Internet"
-      mcc="605"
-      mnc="03"
-      apn="internet.tunisiana.com"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Tunisiana"
-      mcc="605"
-      mnc="03"
-      apn="mms.tunisiana.com"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mmsc.tunisiana.com"
-      mmsproxy="10.3.2.100"
-      mmsport="80"
-      type="mms"
-  />
-
-  <apn carrier="Libyana"
-      mcc="606"
-      mnc="00"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Libyana MMS"
-      mcc="606"
-      mnc="00"
-      apn="mms"
-      type="mms"
-      authtype="0"
-      mmsproxy="192.168.8.148"
-      mmsc="http://62.240.62.180:80"
-      mmsport="8000"
-  />
-
-  <apn carrier="Madar"
-      mcc="606"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Al-Jeel Phone"
-      mcc="606"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Libya Phone"
-      mcc="606"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Hatef Libya"
-      mcc="606"
-      mnc="06"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Gamcel"
-      mcc="607"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Africel"
-      mcc="607"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Comium"
-      mcc="607"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="QCell"
-      mcc="607"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-    <apn carrier="Orange MMS SN"
-      mcc="608"
-      mnc="01"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://mmsalize/servlets/mms"
-      mmsproxy="172.16.30.9"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange Wap SN"
-      mcc="608"
-      mnc="01"
-      apn="wap"
-      user="wap"
-      password="wap"
-      proxy="172.16.30.9"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="Orange Web SN"
-      mcc="608"
-      mnc="01"
-      apn="internet"
-      user="internet"
-      password="internet"
-      type="default"
-  />
-
-  <apn carrier="Tigo Internet SN"
-      mcc="608"
-      mnc="02"
-      apn="web.sentel.com"
-      type="default,supl"
-  />
-
-  <apn carrier="Expresso Internet SN"
-      mcc="608"
-      mnc="03"
-      apn="expresso"
-      user="wap"
-      password="wap"
-      proxy="10.71.123.69"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="Mattel"
-      mcc="609"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Chinguitel"
-      mcc="609"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Mauritel"
-      mcc="609"
-      mnc="10"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange ML MMS"
-      mcc="610"
-      mnc="02"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsc="http://10.109.6.2/servlets/mms"
-      mmsproxy="10.109.4.35"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange Wap ML"
-      mcc="610"
-      mnc="02"
-      apn="wap"
-      user="wap"
-      password="wap"
-      proxy="10.109.4.35"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="Orange S.A."
-      mcc="611"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Sotelgui"
-      mcc="611"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Telecel Guinee"
-      mcc="611"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN"
-      mcc="611"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Cellcom"
-      mcc="611"
-      mnc="05"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Moov Internet CI"
-      mcc="612"
-      mnc="02"
-      apn="moov"
-      user="web"
-      password="web"
-      proxy="10.172.11.17"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="OWORLD CI"
-      mcc="612"
-      mnc="03"
-      apn="orangeciwap"
-      user="wap"
-      password="wap"
-      proxy="172.20.4.33"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="Omms CI"
-      mcc="612"
-      mnc="03"
-      apn="orangecimms"
-      user="mms"
-      password="mms"
-      mmsc="http://172.20.6.1/servlets/mms"
-      mmsproxy="172.20.4.33"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Koz Internet CI"
-      mcc="612"
-      mnc="04"
-      apn="gprs.koz.ci"
-      user="web"
-      password="web"
-      proxy="10.20.3.10"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="MTN Internet CI"
-      mcc="612"
-      mnc="05"
-      apn="web.mtn.ci"
-      user="vide"
-      password="vide"
-      type="default"
-  />
-
-  <apn carrier="Telmob"
-      mcc="613"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel"
-      mcc="613"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Telecel Faso"
-      mcc="613"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange MMS"
-      apn="orange.mms"
-      user="orange"
-      password="orange"
-      mmsc="http://10.10.10.35:38090/was"
-      mmsproxy="10.10.10.36"
-      mmsport="8080"
-      mcc="614"
-      mnc="04"
-      type="mms"
-  />
-
-  <apn carrier="Orange Internet"
-      apn="orange.ne"
-      mcc="614"
-      mnc="04"
-      type="default"
-  />
-
-  <apn carrier="Togo Cell"
-      mcc="615"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Moov"
-      mcc="615"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Libercom"
-      mcc="616"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Moov"
-      mcc="616"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN"
-      mcc="616"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="BBCOM"
-      mcc="616"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Glo"
-      mcc="616"
-      mnc="05"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange MMS"
-      apn="orangemms"
-      user="mmsc"
-      password="mmsc"
-      mmsc="http://10.2.1.20:8514"
-      mmsproxy="10.2.1.20"
-      mmsport="8080"
-      mcc="617"
-      mnc="01"
-      type="mms"
-  />
-
-  <apn carrier="Orange Internet"
-      apn="orange"
-      mcc="617"
-      mnc="01"
-      type="default"
-  />
-
-  <apn carrier="Lonestar Cell"
-      mcc="618"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Libercell"
-      mcc="618"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Comium"
-      mcc="618"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Cellcom"
-      mcc="618"
-      mnc="07"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="LIBTELCO"
-      mcc="618"
-      mnc="20"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel"
-      mcc="619"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Tigo"
-      mcc="619"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Africell"
-      mcc="619"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Comium"
-      mcc="619"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Africell"
-      mcc="619"
-      mnc="05"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Mobitel"
-      mcc="619"
-      mnc="25"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Glo"
-      mcc="620"
-      mnc="0"
-      apn="glowap"
-      authtype="0"
-      type="default,supl,agps,fota,dun"
-  />
-
-  <apn carrier="Glo mms"
-      mcc="620"
-      mnc="0"
-      apn="glo mms"
-      authtype="0"
-      mmsc="http://mms.gloworld.com/mms"
-      mmsproxy="10.161.85.4"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <apn carrier="MTN Internet GH"
-      apn="internet"
-      mcc="620"
-      mnc="01"
-      type="default"
-  />
-
-  <apn carrier="MTN MMS"
-      mcc="620"
-      mnc="01"
-      apn="mtn mms"
-      type="mms"
-      authtype="0"
-      mmsproxy="172.17.3.7"
-      mmsc="http://172.17.3.7"
-      mmsport="8080"
-  />
-
-  <apn carrier="Vodafone Internet GH"
-      apn="browse"
-      mcc="620"
-      mnc="02"
-      type="default"
-  />
-
-  <apn carrier="Vodafone_mms"
-      mcc="620"
-      mnc="02"
-      apn="mms"
-      type="mms"
-      authtype="0"
-      mmsproxy="172.24.97.1"
-      mmsc="http://mms.vodaphone.com.gh/mms"
-      mmsport="9201"
-  />
-
-  <apn carrier="Tigo Internet GH"
-      apn="web.tigo.com.gh"
-      mcc="620"
-      mnc="03"
-      type="default"
-  />
-
-  <apn carrier="Tigo mms"
-      mcc="620"
-      mnc="03"
-      apn="mms.tigo.com.gh"
-      type="mms"
-      authtype="0"
-      mmsproxy="10.4.1.7"
-      mmsc="http://mms/"
-      mmsport="8080"
-  />
-
-  <apn carrier="Airtel Internet GH"
-      apn="wap"
-      mcc="620"
-      mnc="06"
-      proxy="10.93.85.88"
-      port="9201"
-      type="default"
-  />
-
-  <apn carrier="Airtel mms"
-      mcc="620"
-      mnc="06"
-      apn="mms/airtel mms"
-      type="mms"
-      authtype="0"
-      mmsproxy="100.1.201.172"
-      mmsc="http://100.1.201.171:10021/mmsc"
-      mmsport="8799"
-  />
-
-  <apn carrier="Glo Internet GH"
-      apn="glowap"
-      mcc="620"
-      mnc="07"
-      user="glo"
-      password="glo"
-      authtype="1"
-      proxy="10.161.85.4"
-      port="8799"
-      type="default"
-  />
-
-  <apn carrier="Airtel Internet"
-      mcc="621"
-      mnc="20"
-      apn="internet.ng.zain.com"
-      user="internet"
-      password="internet"
-      authtype="1"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel MMS"
-      mcc="621"
-      mnc="20"
-      apn="mms.ng.zain.com"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://10.210.3.239:9800/mm1"
-      mmsproxy="172.18.254.5"
-      type="mms"
-  />
-
-  <apn carrier="Airtel WAP"
-      mcc="621"
-      mnc="20"
-      apn="wap.ng.zain.com"
-      user="wap"
-      password="wap"
-      authtype="1"
-      proxy="172.18.254.5"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN WAP"
-      mcc="621"
-      mnc="30"
-      apn="web.gprs.mtnnigeria.net"
-      user="web"
-      password="web"
-      authtype="1"
-      proxy="10.199.212.2"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN ACESS"
-      mcc="621"
-      mnc="30"
-      apn="web.gprs.mtnnigeria.net"
-      user="web"
-      password="web"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN MMS"
-      mcc="621"
-      mnc="30"
-      apn="web.gprs.mtnnigeria.net"
-      mmsc="http://10.199.212.8/servlets/mms"
-      mmsproxy="10.199.212.2"
-      type="mms"
-  />
-
-  <apn carrier="Glo Direct"
-      mcc="621"
-      mnc="50"
-      apn="glosecure"
-      user="gprs"
-      password="gprs"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Glo MMS"
-      mcc="621"
-      mnc="50"
-      apn="glomms"
-      user="mms"
-      password="mms"
-      authtype="1"
-      mmsc="http://mms.gloworld.com/mmsc"
-      mmsproxy="10.100.82.4"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="etisalat WAP"
-      mcc="621"
-      mnc="60"
-      apn="etisalat"
-      proxy="10.71.170.5"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="etisalat MMS"
-      mcc="621"
-      mnc="60"
-      apn="etisalat"
-      mmsc="http://10.71.170.30:38090/was"
-      type="mms"
-  />
-
-  <apn carrier="Airtel"
-      mcc="622"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Tawali"
-      mcc="622"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Tigo"
-      mcc="622"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Salam"
-      mcc="622"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="CTP"
-      mcc="623"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="TC"
-      mcc="623"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange"
-      mcc="623"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Nationlink"
-      mcc="623"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="CVMOVEL"
-      mcc="625"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="T+"
-      mcc="625"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="CSTmovel"
-      mcc="626"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange GQ"
-      mcc="627"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange GQ MMS"
-      mcc="627"
-      mnc="01"
-      apn="orangemms"
-      type="mms"
-      user="mms"
-      password="mms"
-      authtype="0"
-      mmsproxy="192.168.17.2"
-      mmsc="http://192.168.17.34/servlets/mms"
-      mmsport="8080"
-  />
-
-  <apn carrier="Hits GQ"
-      mcc="627"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Libertis"
-      mcc="628"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Moov"
-      mcc="628"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel"
-      mcc="628"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Azur"
-      mcc="628"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel"
-      mcc="629"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Libertis Telecom"
-      mcc="629"
-      mnc="10"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodacom Internet CD"
-      mcc="630"
-      mnc="01"
-      apn="vodanet"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="Vodacom MMS"
-      mcc="630"
-      mnc="01"
-      apn="vodalive"
-      type="mms"
-      authtype="0"
-      mmsproxy="172.24.97.1"
-      mmsc="http://172.24.97.1/mmsc"
-      mmsport="8080"
-  />
-
-  <apn carrier="Tigo Internet CD"
-      mcc="630"
-      mnc="89"
-      apn="tigo.web"
-      type="default"
-  />
-
-  <apn carrier="UNITEL"
-      mcc="631"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MOVICEL"
-      mcc="631"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Areeba"
-      mcc="632"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange"
-      mcc="632"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Guinetel"
-      mcc="632"
-      mnc="07"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Cable &amp; Wireless"
-      mcc="633"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Mediatech International"
-      mcc="633"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel"
-      mcc="633"
-      mnc="10"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Zain SD"
-      mcc="634"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN"
-      mcc="634"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Sudani One"
-      mcc="634"
-      mnc="07"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Privet Network"
-      mcc="634"
-      mnc="09"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN"
-      mcc="635"
-      mnc="10"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Rwandatel"
-      mcc="635"
-      mnc="12"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Tigo"
-      mcc="635"
-      mnc="13"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel"
-      mcc="635"
-      mnc="14"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="ETH-MTN"
-      mcc="636"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Telesom"
-      mcc="637"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Somafone"
-      mcc="637"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Nationlink"
-      mcc="637"
-      mnc="10"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Hormuud"
-      mcc="637"
-      mnc="25"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Golis"
-      mcc="637"
-      mnc="30"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Unittel"
-      mcc="637"
-      mnc="57"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Nationlink Telecom"
-      mcc="637"
-      mnc="60"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Somtel"
-      mcc="637"
-      mnc="71"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Telcom"
-      mcc="637"
-      mnc="82"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Evatis"
-      mcc="638"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="safaricom GPRS"
-      mcc="639"
-      mnc="02"
-      apn="safaricom"
-      user="saf"
-      password="data"
-      authtype="1"
-      proxy="172.22.2.38"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="safaricom mms"
-      mcc="639"
-      mnc="02"
-      apn="safaricom"
-      user="saf"
-      password="data"
-      authtype="1"
-      mmsproxy="172.22.2.38"
-      mmsport="8080"
-      mmsc="http://mms.gprs.safaricom.com"
-      type="mms"
-  />
-
-
-  <apn carrier="Airtel Internet"
-      mcc="639"
-      mnc="03"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel mms"
-      mcc="639"
-      mnc="03"
-      apn="mms"
-      mmsc="http://mms.ke.airtel.com:8002"
-      mmsproxy="172.30.9.8"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Airtel"
-      mcc="639"
-      mnc="03"
-      apn="ke.celtel.com"
-      type="default,supl"
-  />
-
-  <apn carrier="mms"
-      mcc="639"
-      mnc="03"
-      apn="ke.celtel.com"
-      mmsproxy="172.30.8.50"
-      mmsport="8080"
-      mmsc="http://mms.ke.celtel.com/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier="Yu Internet"
-      mcc="639"
-      mnc="05"
-      apn="Internet"
-      proxy="10.4.16.6"
-      port="8080"
-      mmsproxy="10.4.16.6"
-      mmsport="8080"
-      mmsc="http://10.4.16.22/servlets/mms"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Yu WAP"
-      mcc="639"
-      mnc="05"
-      apn="Yu internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Yu mms"
-      mcc="639"
-      mnc="05"
-      apn="Yu"
-      mmsproxy="10.4.16.6"
-      mmsport="8080"
-      mmsc="http://10.4.16.22/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier="Orange Internet"
-      mcc="639"
-      mnc="07"
-      apn="bew.orange.co.ke"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange MMS"
-      mcc="639"
-      mnc="07"
-      apn="mms.orange.co.ke"
-      mmsproxy="10.36.17.130"
-      mmsport="8080"
-      mmsc="http://10.36.16.5/servlets/mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Vodacom WAP"
-      mcc="640"
-      mnc="04"
-      apn="Wap"
-      proxy="10.154.0.8"
-      port="9401"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodacom MMS"
-      mcc="640"
-      mnc="04"
-      apn="mms"
-      mmsc="http://10.154.0.12/mms/"
-      type="mms"
-  />
-
-  <apn carrier="Airtel Internet UG"
-      apn="internet"
-      mcc="641"
-      mnc="01"
-      type="default"
-  />
-
-  <apn carrier="MTN Internet UG"
-      apn="yellopix.mtn.co.ug"
-      mcc="641"
-      mnc="10"
-      proxy="10.120.0.138"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="UTL Internet UG"
-      apn="utweb"
-      mcc="641"
-      mnc="11"
-      proxy="10.76.101.51"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="Orange Internet UG"
-      mcc="641"
-      mnc="14"
-      apn="orange.ug"
-      type="default"
-  />
-
-  <apn carrier="Orange MMS"
-      mcc="641"
-      mnc="14"
-      apn="orangemms"
-      mmsc="http://mms/"
-      type="mms"
-  />
-
-  <apn carrier="Warid Telecom Internet UG"
-      apn="web.waridtel.co.ug"
-      mcc="641"
-      mnc="22"
-      proxy="10.5.27.80"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="Spacetel"
-      mcc="642"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Tempo"
-      mcc="642"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Onatel"
-      mcc="642"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Smart Mobile"
-      mcc="642"
-      mnc="07"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="HiTs Telecom"
-      mcc="642"
-      mnc="08"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Leo"
-      mcc="642"
-      mnc="82"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="mCel"
-      mcc="643"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Movitel"
-      mcc="643"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Vodacom"
-      mcc="643"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel"
-      mcc="645"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN"
-      mcc="645"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="ZAMTEL"
-      mcc="645"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange MG Internet"
-      mcc="646"
-      mnc="02"
-      apn="orangenet"
-      type="default,supl,agps,fota,dun"
-      authtype="0"
-  />
-
-  <apn carrier="Orange World re"
-      mcc="647"
-      mnc="00"
-      apn="orangerun"
-      user="orange"
-      password="orange"
-      type="default,supl"
-  />
-
-  <apn carrier="Orange MMS Réunion"
-      mcc="647"
-      mnc="00"
-      apn="orangerun.acte"
-      user="orange"
-      password="orange"
-      mmsc="http://mms.orange.re"
-      mmsproxy="192.168.10.200"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="OnlyWap"
-      mcc="647"
-      mnc="02"
-      apn="onlywap"
-      user="only"
-      password="only"
-      authtype="1"
-      proxy="10.4.85.50"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="OnlyMMS"
-      mcc="647"
-      mnc="02"
-      apn="onlymms"
-      user="only"
-      password="only"
-      authtype="1"
-      mmsc="http://10.4.85.50:8514"
-      mmsproxy="10.4.85.50"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Full Internet SRR"
-      mcc="647"
-      mnc="10"
-      apn="sl2sfr"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="647"
-      mnc="10"
-      apn="mmssfr"
-      user="mms"
-      password="mms"
-      mmsc="http://mms"
-      mmsproxy="10.0.224.145"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="GPRS SRR"
-      mcc="647"
-      mnc="10"
-      apn="wapsfr"
-      user="wap"
-      password="wap"
-      proxy="10.0.224.161"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="APN sl2sfr"
-      mcc="647"
-      mnc="10"
-      apn="sl2sfr"
-      type="default,supl"
-      mvno_match_data="12"
-      mvno_type="gid"
-  />
-
-  <apn carrier="MMS smartphone"
-      mcc="647"
-      mnc="10"
-      mmsc="http://mms1"
-      mmsproxy="10.151.0.1"
-      mmsport="8080"
-      apn="sl2sfr"
-      type="mms"
-      mvno_match_data="12"
-      mvno_type="gid"
-  />
-
-  <apn carrier="APN websfr"
-      mcc="647"
-      mnc="10"
-      apn="websfr"
-      type="dun"
-      mvno_match_data="12"
-      mvno_type="gid"
-  />
-
-  <apn carrier="Telecel"
-      mcc="648"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Econet"
-      mcc="648"
-      mnc="04"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="MTC"
-      mcc="649"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="switch"
-      mcc="649"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Leo"
-      mcc="649"
-      mnc="03"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="TNM"
-      mcc="650"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Airtel"
-      mcc="650"
-      mnc="10"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="VCL Internet GPRS"
-      mcc="651"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="VCL MMS GPRS"
-      mcc="651"
-      mnc="01"
-      apn="mms"
-      mmsc="http://mmsc.vodacom4me.co.ls"
-      mmsproxy="10.113.63.11"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Swazi MTN"
-      mcc="653"
-      mnc="10"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="HURI - SNPT"
-      mcc="654"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="LTE.Vodacom"
-      mcc="655"
-      mnc="01"
-      apn="lte.vodacom.za"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS.Vodacom"
-      mcc="655"
-      mnc="01"
-      apn="lte.vodacom.za"
-      mmsc="http://mmsc.vodacom4me.co.za"
-      mmsproxy="196.6.128.13"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Smart.Vodacom"
-      mcc="655"
-      mnc="01"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS.Vodacom"
-      mcc="655"
-      mnc="01"
-      apn="mms.vodacom.net"
-      mmsc="http://mmsc.vodacom4me.co.za"
-      mmsproxy="196.6.128.13"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Telkom Mobile Internet"
-      mcc="655"
-      mnc="02"
-      apn="internet"
-      type="default,supl"
-  />
-
-  <apn carrier="Telkom Mobile MMS"
-      mcc="655"
-      mnc="02"
-      apn="mms"
-      mmsc="http://mms.8ta.com:38090/was"
-      mmsproxy="41.151.254.162"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Cell C GPRS"
-      mcc="655"
-      mnc="07"
-      apn="internet"
-      proxy="196.31.116.250"
-      port="8080"
-      type="default,supl"
-  />
-
-  <apn carrier="Cell C MMS"
-      mcc="655"
-      mnc="07"
-      apn="mms"
-      mmsc="http://mms.cmobile.co.za/"
-      mmsproxy="196.31.116.250"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="VIRGIN_INTERNET_1"
-      mcc="655"
-      mnc="07"
-      apn="vdata"
-      proxy="196.31.116.241"
-      port="8080"
-      type="default,supl"
-      mvno_match_data="6550710"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="VIRGIN_INTERNET_2"
-      mcc="655"
-      mnc="07"
-      apn="vdata"
-      proxy="196.31.116.241"
-      port="9201"
-      type="default,supl"
-      mvno_match_data="6550710"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Virgin_MMS_1"
-      mcc="655"
-      mnc="07"
-      apn="vmms"
-      mmsc="http://mms.virginmobile.co.za"
-      mmsproxy="196.31.116.242"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="6550710"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Virgin_MMS_2"
-      mcc="655"
-      mnc="07"
-      apn="vmms"
-      mmsc="http://mms.virginmobile.co.za"
-      mmsproxy="196.31.116.242"
-      mmsport="9201"
-      type="mms"
-      mvno_match_data="6550710"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="RBM Internet"
-      mcc="655"
-      mnc="07"
-      apn="mobile.redbullmobile.co.za"
-      proxy="196.31.116.250"
-      port="8080"
-      type="default,supl"
-      mvno_match_data="6550713"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="Redbull MMS"
-      mcc="655"
-      mnc="07"
-      apn="mms"
-      mmsc="http://mms.cmobile.co.za/"
-      mmsproxy="196.31.116.250"
-      mmsport="8080"
-      type="mms"
-      mvno_match_data="6550713"
-      mvno_type="imsi"
-  />
-
-  <apn carrier="MTN GPRS"
-      mcc="655"
-      mnc="10"
-      apn="myMTN"
-      user="mtnwap"
-      password="mtnwap"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MTN MMS"
-      mcc="655"
-      mnc="10"
-      apn="myMTN"
-      user="mtnmms"
-      password="mtnmms"
-      authtype="1"
-      mmsc="http://mms.mtn.co.za/mms/wapenc"
-      mmsproxy="196.11.240.241"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Eritel"
-      mcc="657"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="DigiCell"
-      mcc="702"
-      mnc="67"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Smart"
-      mcc="702"
-      mnc="99"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Internet CLARO"
-      mcc="704"
-      mnc="01"
-      apn="internet.ideasclaro"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS CLARO"
-      mcc="704"
-      mnc="01"
-      apn="mms.ideasclaro"
-      mmsproxy="216.230.133.66"
-      mmsport="8080"
-      mmsc="http://mms.ideasclaro.com:8002"
-      type="mms"
-  />
-
-  <apn carrier="Broadband TIGO"
-      mcc="704"
-      mnc="02"
-      apn="broadband.tigo.gt"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS TIGO"
-      mcc="704"
-      mnc="02"
-      apn="mms.tigo.gt"
-      mmsproxy="10.16.17.12"
-      mmsport="8888"
-      mmsc="http://mms"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="704"
-      mnc="03"
-      apn="internet.movistar.gt"
-      user="movistargt"
-      password="movistargt"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="704"
-      mnc="03"
-      apn="mms.movistar.gt"
-      user="movistargt"
-      password="movistargt"
-      mmsproxy="10.12.22.1"
-      mmsport="80"
-      mmsc="http://mms.movistar.gt"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="704"
-      mnc="030"
-      apn="internet.movistar.gt"
-      user="movistargt"
-      password="movistargt"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="704"
-      mnc="030"
-      apn="mms.movistar.gt"
-      user="movistargt"
-      password="movistargt"
-      mmsproxy="10.12.22.1"
-      mmsport="80"
-      mmsc="http://mms.movistar.gt"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Internet CLARO"
-      mcc="706"
-      mnc="01"
-      apn="internet.ideasclaro"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS CLARO"
-      mcc="706"
-      mnc="01"
-      apn="mms.ideasclaro"
-      mmsproxy="216.230.133.66"
-      mmsport="8080"
-      mmsc="http://mms.ideasclaro.com:8002"
-      type="mms"
-  />
-
-  <apn carrier="Digicel Internet"
-      mcc="706"
-      mnc="02"
-      apn="web.digicelsv.com"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="706"
-      mnc="02"
-      apn="wap.digicelsv.com"
-      mmsproxy="172.26.5.12"
-      mmsport="8080"
-      mmsc="http://mmc.digiceljamaica.com/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier="Internet Tigo"
-      mcc="706"
-      mnc="03"
-      apn="internet.tigo.sv"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Tigo"
-      mcc="706"
-      mnc="03"
-      apn="mms.tigo.sv"
-      mmsproxy="10.16.17.12"
-      mmsport="8888"
-      mmsc="http://mms"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="706"
-      mnc="04"
-      apn="internet.movistar.sv"
-      user="movistarsv"
-      password="movistarsv"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="706"
-      mnc="04"
-      apn="mms.movistar.sv"
-      user="movistarsv"
-      password="movistarsv"
-      mmsproxy="10.12.20.1"
-      mmsport="80"
-      mmsc="http://mms.movistar.sv"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="706"
-      mnc="040"
-      apn="internet.movistar.sv"
-      user="movistarsv"
-      password="movistarsv"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="706"
-      mnc="040"
-      apn="mms.movistar.sv"
-      user="movistarsv"
-      password="movistarsv"
-      mmsproxy="10.12.20.1"
-      mmsport="80"
-      mmsc="http://mms.movistar.sv"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Internet Claro"
-      mcc="708"
-      mnc="00"
-      apn="internet.ideasclaro"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Claro"
-      mcc="708"
-      mnc="00"
-      apn="mms.ideasclaro"
-      mmsproxy="10.6.32.2"
-      mmsport="8080"
-      mmsc="http://10.6.32.27/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier="Internet Claro"
-      mcc="708"
-      mnc="001"
-      apn="internet.ideasclaro"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Claro"
-      mcc="708"
-      mnc="001"
-      apn="mms.ideasclaro"
-      mmsproxy="10.6.32.2"
-      mmsport="8080"
-      mmsc="http://10.6.32.27/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier="INTERNET TIGO"
-      mcc="708"
-      mnc="02"
-      apn="internet.tigo.hn"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS TIGO"
-      mcc="708"
-      mnc="02"
-      apn="mms.tigo.hn"
-      mmsproxy="10.16.17.12"
-      mmsport="8888"
-      mmsc="http://mms"
-      type="mms"
-  />
-
-  <apn carrier='Honduras:Digicel:Internet'
-      mcc='708'
-      mnc='04'
-      apn='web.digicelhn.com'
-      authtype='1'
-      type='default'
-  />
-
-  <apn carrier='Honduras:Digicel:Mms'
-      mcc='708'
-      mnc='04'
-      apn='wap.digicelhn.com'
-      authtype='1'
-      mmsc='http://mms.digicelsv.com/servlets/mms'
-      mmsproxy='172.26.5.12'
-      mmsport='9201'
-      type='mms'
-  />
-
-  <apn carrier='Honduras:Digicel:Modem'
-      mcc='708'
-      mnc='04'
-      apn='wap.digicelhn.com'
-      port='8080'
-      authtype='1'
-      proxy='172.26.5.12'
-      mmsc='http://www.digicelive.com'
-      type='dun'
-  />
-
-  <apn carrier="INTERNET TIGO"
-      mcc="708"
-      mnc="020"
-      apn="internet.tigo.hn"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS TIGO"
-      mcc="708"
-      mnc="020"
-      apn="mms.tigo.hn"
-      mmsproxy="10.16.17.12"
-      mmsport="8888"
-      mmsc="http://mms"
-      type="mms"
-  />
-
-  <apn carrier='Honduras:Digicel:Internet:2'
-      mcc='708'
-      mnc='040'
-      apn='web.digicelhn.com'
-      authtype='1'
-      type='default'
-  />
-
-  <apn carrier='Honduras:Digicel:Mms:2'
-      mcc='708'
-      mnc='040'
-      apn='wap.digicelhn.com'
-      authtype='1'
-      mmsc='http://mms.digicelsv.com/servlets/mms'
-      mmsproxy='172.26.5.12'
-      mmsport='9201'
-      type='mms'
-  />
-
-  <apn carrier="Enitel WEB"
-      mcc="710"
-      mnc="21"
-      apn="internet.ideasalo.ni"
-      user="internet"
-      password="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-
-  <apn carrier="Enitel MMS"
-      mcc="710"
-      mnc="21"
-      apn="mms.indeasalo.ni"
-      user="mms"
-      password="mms"
-      mmsproxy="10.6.32.2"
-      mmsport="8080"
-      mmsc="http://10.6.32.27/servlets/mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="710"
-      mnc="30"
-      apn="internet.movistar.ni"
-      user="movistarni"
-      password="movistarni"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="710"
-      mnc="30"
-      apn="mms.movistar.ni"
-      user="movistarni"
-      password="movistarni"
-      mmsproxy="10.12.23.1"
-      mmsport="80"
-      mmsc="http://mms.movistar.ni"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="710"
-      mnc="300"
-      apn="internet.movistar.ni"
-      user="movistarni"
-      password="movistarni"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="710"
-      mnc="300"
-      apn="mms.movistar.ni"
-      user="movistarni"
-      password="movistarni"
-      mmsproxy="10.12.23.1"
-      mmsport="80"
-      mmsc="http://mms.movistar.ni"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Enitel WEB"
-      mcc="710"
-      mnc="73"
-      apn="internet.ideasalo.ni"
-      user="internet"
-      password="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-
-  <apn carrier="Enitel MMS"
-      mcc="710"
-      mnc="73"
-      apn="mms.indeasalo.ni"
-      user="mms"
-      password="mms"
-      mmsproxy="10.6.32.2"
-      mmsport="8080"
-      mmsc="http://10.6.32.27/servlets/mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Enitel WEB"
-      mcc="710"
-      mnc="730"
-      apn="internet.ideasalo.ni"
-      user="internet"
-      password="internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-
-  <apn carrier="Enitel MMS"
-      mcc="710"
-      mnc="730"
-      apn="mms.indeasalo.ni"
-      user="mms"
-      password="mms"
-      mmsproxy="10.6.32.2"
-      mmsport="8080"
-      mmsc="http://10.6.32.27/servlets/mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="KOLBI 3G"
-      mcc="712"
-      mnc="01"
-      apn="kolbi3g"
-      type="default,supl"
-  />
-
-  <apn carrier="Costar Rica:Kolbi:Modem"
-      mcc="712"
-      mnc="01"
-      apn="kolbi"
-      type="dun"
-      authtype="1"
-      mmsc="http://mimundokolbi.ice.cr"
-      mmsport="8080"
-  />
-
-  <apn carrier="Kolbi_Multimedia"
-      mcc="712"
-      mnc="01"
-      apn="kolbimundo"
-      mmsproxy="10.184.202.24"
-      mmsport="8080"
-      mmsc="http://mmsice"
-      type="mms"
-  />
-
-  <apn carrier="KOLBI 3G"
-      mcc="712"
-      mnc="02"
-      apn="kolbi3g"
-      type="default,supl"
-  />
-
-  <apn carrier="Kolbi_Multimedia"
-      mcc="712"
-      mnc="02"
-      apn="kolbimundo"
-      mmsproxy="10.184.202.24"
-      mmsport="8080"
-      mmsc="http://mmsice"
-      type="mms"
-  />
-
-  <apn carrier="Internet CLARO CR"
-      mcc="712"
-      mnc="03"
-      apn="internet.ideasclaro"
-      user=""
-      password=""
-      type="default,supl"
-  />
-
-  <apn carrier="MMS CLARO CR"
-      mcc="712"
-      mnc="03"
-      apn="mms.ideasclaro"
-      user=""
-      password=""
-      mmsproxy="216.230.133.66"
-      mmsport="8080"
-      mmsc="http://mms.ideasclaro.com:8002"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="712"
-      mnc="04"
-      apn="internet.movistar.cr"
-      user="movistarcr"
-      password="movistarcr"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="712"
-      mnc="04"
-      apn="mms.movistar.cr"
-      user="movistarcr"
-      password="movistarcr"
-      mmsproxy="10.221.79.83"
-      mmsport="80"
-      mmsc="http://mms.movistar.cr"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Internet Tuyo"
-      mcc="712"
-      mnc="019"
-      apn="tm7datos"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Tuyo"
-      mcc="712"
-      mnc="019"
-      apn="tm7mms"
-      mmsproxy="10.186.181.5"
-      mmsport="3128"
-      mmsc="http://mmsc.tuyomovil.com:1981"
-      type="mms"
-  />
-
-  <apn carrier="Internet Tuyo"
-      mcc="712"
-      mnc="190"
-      apn="tm7datos"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Tuyo"
-      mcc="712"
-      mnc="190"
-      apn="tm7mms"
-      mmsproxy="10.186.181.5"
-      mmsport="3128"
-      mmsc="http://mmsc.tuyomovil.com:1981"
-      type="mms"
-  />
-
-  <apn carrier="Internet Fulmovil"
-      mcc="712"
-      mnc="20"
-      apn="datos.fulmovil.cr"
-      type="default,supl"
-  />
-
-  <apn carrier="Internet"
-      mcc="714"
-      mnc="01"
-      apn="apn01.cwpanama.com.pa"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="714"
-      mnc="01"
-      apn="apn02.cwpanama.com.pa"
-      mmsproxy="172.25.3.5"
-      mmsport="8080"
-      mmsc="http://mms.zonamovil.com.pa"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="714"
-      mnc="02"
-      apn="internet.movistar.pa"
-      user="movistarpa"
-      password="movistarpa"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="714"
-      mnc="02"
-      apn="mms.movistar.pa"
-      user="movistarpamms"
-      password="movistarpa"
-      mmsproxy="10.12.21.1"
-      mmsport="80"
-      mmsc="http://mms.movistar.pa"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="714"
-      mnc="020"
-      apn="internet.movistar.pa"
-      user="movistarpa"
-      password="movistarpa"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="714"
-      mnc="020"
-      apn="mms.movistar.pa"
-      user="movistarpamms"
-      password="movistarpa"
-      mmsproxy="10.12.21.1"
-      mmsport="80"
-      mmsc="http://mms.movistar.pa"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="WEB Claro"
-      mcc="714"
-      mnc="03"
-      apn="web.claro.com.pa"
-      user="CLAROWEB"
-      password="CLAROWEB"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Claro"
-      mcc="714"
-      mnc="03"
-      apn="mms.claro.com.pa"
-      user="CLAROMMS"
-      password="CLAROMMS"
-      mmsproxy="10.240.3.129"
-      mmsport="8799"
-      mmsc="http://www.claro.com.pa/mms/"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Digicel Internet"
-      mcc="714"
-      mnc="04"
-      apn="web.digicelpanama.com"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="714"
-      mnc="04"
-      apn="wap.digicelpanama.com"
-      mmsproxy="172.27.99.99"
-      mmsport="8080"
-      mmsc="http://mmc.digicelpanama.com/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier='Panama:Digicel:Internet:2'
-      mcc='714'
-      mnc='040'
-      apn='web.digicelpanama.com'
-      authtype='1'
-      type='default'
-  />
-
-  <apn carrier='Panama:Digicel:Mms:2'
-      mcc='714'
-      mnc='040'
-      apn='wap.digicelpanama.com'
-      authtype='1'
-      mmsc='http://mmc.digicelpanama.com/servlets/mms'
-      mmsproxy='172.27.99.99'
-      mmsport='9201'
-      type='mms'
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="716"
-      mnc="06"
-      apn="movistar.pe"
-      user="movistar@datos"
-      password="movistar"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="716"
-      mnc="06"
-      apn="mms.movistar.pe"
-      user="movistar@mms"
-      password="movistar"
-      mmsproxy="200.4.196.118"
-      mmsport="8080"
-      mmsc="http://mmsc.telefonicamovistar.com.pe:8088/mms/"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="CLARO DATOS"
-      mcc="716"
-      mnc="10"
-      apn="claro.pe"
-      user="claro"
-      password="claro"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="CLARO MMS"
-      mcc="716"
-      mnc="10"
-      apn="mms.claro.pe"
-      user="claro"
-      password="claro"
-      mmsproxy="192.168.231.30"
-      mmsport="80"
-      mmsc="http://claro/servlets/mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Bitel - Internet"
-      mcc="716"
-      mnc="15"
-      apn="bitel"
-      authtype="1"
-      type="default,supl"
-      protocol="IP"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Bitel - MMS"
-      mcc="716"
-      mnc="15"
-      apn="bitel-mms"
-      mmsc="http://181.176.241.99:8080"
-      mmsproxy="10.121.144.3"
-      mmsport="8000"
-      authtype="1"
-      type="mms"
-      protocol="IP"
-      roaming_protocol="IP"
-  />
-
-  <apn carrier="Entel PE"
-      mcc="716"
-      mnc="17"
-      apn="entel.pe"
-      authtype="0"
-      type="default,dun"
-      protocol="IP"
-  />
-
-  <apn carrier="Entel MMS"
-      mcc="716"
-      mnc="17"
-      apn="mms.entel.pe"
-      mmsc="http://mms.entel.pe"
-      mmsproxy="10.0.215.74"
-      mmsport="8080"
-      authtype="0"
-      type="mms"
-      protocol="IP"
-  />
-
-  <apn carrier="Entel Location"
-      mcc="716"
-      mnc="17"
-      apn="location.entel.pe"
-      port="7275"
-      server="http://location.entel.pe"
-      authtype="0"
-      type="supl"
-      protocol="IP"
-  />
-
-  <apn carrier='Quam_WEB'
-      mcc='722'
-      mnc='01'
-      apn='internet.movil'
-      user='internet'
-      password='internet'
-      authtype='1'
-      type='default'
-      mvno_type='spn'
-      mvno_match_data='QUAM'
-  />
-
-  <apn carrier='Quam_MMS'
-      mcc='722'
-      mnc='01'
-      apn='mms.movil'
-      user='mms'
-      password='mms'
-      mmsc='http://mms.quam.com.ar'
-      mmsproxy='200.68.32.239'
-      mmsport='9090'
-      authtype='1'
-      type='mms'
-      mvno_type='spn'
-      mvno_match_data='QUAM'
-  />
-
-  <apn carrier='Quam_WEB'
-      mcc='722'
-      mnc='01'
-      apn='internet.movil'
-      user='internet'
-      password='internet'
-      authtype='1'
-      type='default'
-      mvno_type='spn'
-      mvno_match_data='CELULAR'
-  />
-
-  <apn carrier='Quam_MMS'
-      mcc='722'
-      mnc='01'
-      apn='mms.movil'
-      user='mms'
-      password='mms'
-      mmsc='http://mms.quam.com.ar'
-      mmsproxy='200.68.32.239'
-      mmsport='9090'
-      authtype='1'
-      type='mms'
-      mvno_type='spn'
-      mvno_match_data='CELULAR'
-  />
-
-  <apn carrier="Movistar WAP"
-      mcc="722"
-      mnc="07"
-      apn="wap.gprs.unifon.com.ar"
-      user="wap"
-      password="wap"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Argentina:Movistar:INTERNET"
-      mcc="722"
-      mnc="07"
-      apn="internet.gprs.unifon.com.ar"
-      type="dun"
-      user="internet"
-      password="internet"
-      authtype="1"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="722"
-      mnc="07"
-      apn="mms.gprs.unifon.com.ar"
-      user="mms"
-      password="mms"
-      mmsproxy="200.68.32.239"
-      mmsport="8080"
-      mmsc="http://mms.movistar.com.ar"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Claro AR"
-      mcc="722"
-      mnc="31"
-      apn="igprs.claro.com.ar"
-      mmsc="http://mms.claro.com.ar"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Claro AR"
-      mcc="722"
-      mnc="310"
-      apn="igprs.claro.com.ar"
-      mmsc="http://mms.claro.com.ar"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Personal Datos"
-      mcc="722"
-      mnc="34"
-      apn="datos.personal.com"
-      user="datos"
-      password="datos"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Personal MMS"
-      mcc="722"
-      mnc="34"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsproxy="172.25.7.31"
-      mmsport="8080"
-      mmsc="http://mms.personal.com"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Nuestro MMS"
-      mcc='722'
-      mnc='36'
-      apn='mms.nuestro.com.ar'
-      authtype='0'
-      mmsc='http://mms.nuestro.com.ar'
-      mmsproxy='172.16.0.20'
-      mmsport='8080'
-      type='mms'
-      user='mms'
-  />
-
-  <apn carrier="Nuestro Internet"
-      mcc='722'
-      mnc='36'
-      apn='gprs.nuestro.com.ar'
-      authtype='0'
-      type='default'
-      user='gprs'
-  />
-
-  <apn carrier='Argentina:Personal :Datos'
-      mcc='722'
-      mnc='340'
-      apn='datos.personal.com'
-      authtype='0'
-      type='default'
-      user='gprs'
-      password='adgj'
-  />
-
-  <apn carrier='Argentina:Personal :DUN'
-      mcc='722'
-      mnc='340'
-      apn='internet.personal.com'
-      authtype='0'
-      type='dun'
-      user='internet'
-      password='internet'
-  />
-
-  <apn carrier='Argentina:Personal :MMS'
-      mcc='722'
-      mnc='340'
-      apn='mms'
-      authtype='0'
-      mmsc='http://mms.personal.com'
-      mmsproxy='172.25.7.31'
-      mmsport='8080'
-      type='mms'
-      user='mms'
-      password='mms'
-  />
-
-  <apn carrier="Personal Datos"
-      mcc="722"
-      mnc="341"
-      apn="datos.personal.com"
-      user="datos"
-      password="datos"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Argentina:Personal: DUN"
-      mcc="722"
-      mnc="341"
-      apn="internet.personal.com"
-      type="dun"
-      user="internet"
-      password="internet"
-      authtype="0"
-  />
-
-  <apn carrier="Personal MMS"
-      mcc="722"
-      mnc="341"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsproxy="172.25.7.31"
-      mmsport="8080"
-      mmsc="http://mms.personal.com"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="TIM Connect"
-      mcc="724"
-      mnc="02"
-      apn="timbrasil.br"
-      user="tim"
-      password="tim"
-      mmsc="http://mms.tim.br"
-      mmsproxy="200.179.66.242"
-      mmsport="8080"
-      authtype="1"
-      protocol="IPV4V6"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="TIM Connect"
-      mcc="724"
-      mnc="03"
-      apn="timbrasil.br"
-      user="tim"
-      password="tim"
-      mmsc="http://mms.tim.br"
-      mmsproxy="200.179.66.242"
-      mmsport="8080"
-      authtype="1"
-      protocol="IPV4V6"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="TIM Connect"
-      mcc="724"
-      mnc="04"
-      apn="timbrasil.br"
-      user="tim"
-      password="tim"
-      mmsc="http://mms.tim.br"
-      mmsproxy="200.179.66.242"
-      mmsport="8080"
-      authtype="1"
-      protocol="IPV4V6"
-      type="default,supl,mms"
-  />
-
-  <apn carrier="Java Session"
-      mcc="724"
-      mnc="05"
-      apn="java.claro.com.br"
-      user="claro"
-      password="claro"
-      type="default,supl"
-  />
-
-  <apn carrier="Claro Foto"
-      mcc="724"
-      mnc="05"
-      apn="mms.claro.com.br"
-      user="claro"
-      password="claro"
-      mmsc="http://mms.claro.com.br"
-      mmsproxy="200.169.126.10"
-      mmsport="8799"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Vivo MMS"
-      mcc="724"
-      mnc="06"
-      apn="mms.vivo.com.br"
-      user="vivo"
-      password="vivo"
-      mmsc="http://termnat.vivomms.com.br:8088/mms"
-      mmsproxy="200.142.130.104"
-      mmsport="80"
-      authtype="1"
-      protocol="IPV4V6"
-      type="mms"
-  />
-
-  <apn carrier="Vivo Internet"
-      mcc="724"
-      mnc="06"
-      apn="zap.vivo.com.br"
-      user="vivo"
-      password="vivo"
-      authtype="1"
-      protocol="IPV4V6"
-      type="default,supl"
-  />
-
-  <apn carrier="SCTL MMS"
-      mcc="724"
-      mnc="07"
-      apn="mms.sercomtel.com.br"
-      user="sercomtel"
-      password="sercomtel"
-      mmsc="http://mms.claro.com.br"
-      mmsproxy="200.169.126.10"
-      mmsport="8799"
-      type="mms"
-  />
-
-  <apn carrier="SCTL GPRS"
-      mcc="724"
-      mnc="07"
-      apn="sercomtel.com.br"
-      user="sercomtel"
-      password="sercomtel"
-      type="default,supl"
-  />
-
-  <apn carrier="Vivo Internet"
-      mcc="724"
-      mnc="10"
-      apn="zap.vivo.com.br"
-      user="vivo"
-      password="vivo"
-      authtype="1"
-      protocol="IPV4V6"
-      type="default,supl"
-  />
-
-  <apn carrier="Vivo MMS"
-      mcc="724"
-      mnc="10"
-      apn="mms.vivo.com.br"
-      user="vivo"
-      password="vivo"
-      mmsc="http://termnat.vivomms.com.br:8088/mms"
-      mmsproxy="200.142.130.104"
-      mmsport="80"
-      authtype="1"
-      protocol="IPV4V6"
-      type="mms"
-  />
-
-  <apn carrier="Vivo MMS"
-      mcc="724"
-      mnc="11"
-      apn="mms.vivo.com.br"
-      user="vivo"
-      password="vivo"
-      mmsc="http://termnat.vivomms.com.br:8088/mms"
-      mmsproxy="200.142.130.104"
-      mmsport="80"
-      authtype="1"
-      protocol="IPV4V6"
-      type="mms"
-  />
-
-  <apn carrier="Vivo Internet"
-      mcc="724"
-      mnc="11"
-      apn="zap.vivo.com.br"
-      user="vivo"
-      password="vivo"
-      authtype="1"
-      protocol="IPV4V6"
-      type="default,supl"
-  />
-
-  <apn carrier='Sercomtel:Dados'
-      mcc='724'
-      mnc='15'
-      apn='sercomtel.com.br'
-      authtype='1'
-      type='default'
-      user='sercomtel'
-      password='sercomtel'
-  />
-
-  <apn carrier='Sercomtel:MMS'
-      mcc='724'
-      mnc='15'
-      apn='mms.sercomtel.com.br'
-      authtype='1'
-      mmsc='http://mms.claro.com.br'
-      mmsproxy='200.169.126.10'
-      mmsport='8799'
-      type='mms'
-      user='sercomtel'
-      password='sercomtel'
-  />
-
-  <apn carrier='Sercomtel:Modem'
-      mcc='724'
-      mnc='15'
-      apn='sercomtel.com.br'
-      authtype='1'
-      type='dun'
-      user='sercomtel'
-      password='sercomtel'
-  />
-
-  <apn carrier="Oi GPRS Internet"
-      mcc="724"
-      mnc="16"
-      apn="gprs.oi.com.br"
-      protocol="IPV4V6"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS GPRS"
-      mcc="724"
-      mnc="16"
-      apn="mmsgprs.oi.com.br"
-      user="oimms"
-      password="oioioi"
-      mmsc="http://200.222.42.204:8002"
-      mmsproxy="192.168.10.50"
-      mmsport="3128"
-      authtype="1"
-      protocol="IPV4V6"
-      type="mms"
-  />
-
-  <apn carrier="TelemigC GPRS"
-      mcc="724"
-      mnc="19"
-      apn="gprs.telemigcelular.com.br"
-      user="celular"
-      password="celular"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Telemig"
-      mcc="724"
-      mnc="19"
-      apn="mmsgprs.telemigcelular.com.br"
-      user="celular"
-      password="celular"
-      mmsc="http://mms.telemigcelular.com.br"
-      mmsproxy="200.192.230.142"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Vivo Internet"
-      mcc="724"
-      mnc="23"
-      apn="zap.vivo.com.br"
-      user="vivo"
-      password="vivo"
-      authtype="1"
-      protocol="IPV4V6"
-      type="default,supl"
-  />
-
-  <apn carrier="Vivo MMS"
-      mcc="724"
-      mnc="23"
-      apn="mms.vivo.com.br"
-      user="vivo"
-      password="vivo"
-      mmsc="http://termnat.vivomms.com.br:8088/mms"
-      mmsproxy="200.142.130.104"
-      mmsport="80"
-      authtype="1"
-      protocol="IPV4V6"
-      type="mms"
-  />
-
-  <apn carrier="OI:INTERNET:2"
-      mcc="724"
-      mnc="24"
-      apn="gprs.oi.com.br"
-      authtype="1"
-      type="default,dun"
-      user="oi"
-      password="oi"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="Oi:MMS:2"
-      mcc="724"
-      mnc="24"
-      apn="mmsgprs.oi.com.br"
-      authtype="1"
-      mmsc="http://200.222.42.204:8002"
-      mmsproxy="192.168.10.50"
-      mmsport="3128"
-      type="mms"
-      user="oimms"
-      password="oioioi"
-      protocol="IPV4V6"
-      roaming_protocol="IPV4V6"
-  />
-
-  <apn carrier="Oi GPRS Internet"
-      mcc="724"
-      mnc="31"
-      apn="gprs.oi.com.br"
-      protocol="IPV4V6"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS GPRS"
-      mcc="724"
-      mnc="31"
-      apn="mmsgprs.oi.com.br"
-      user="oimms"
-      password="oioioi"
-      mmsc="http://200.222.42.204:8002"
-      mmsproxy="192.168.10.50"
-      mmsport="3128"
-      authtype="1"
-      protocol="IPV4V6"
-      type="mms"
-  />
-
-  <apn carrier='CTBC:Dados:1'
-      mcc='724'
-      mnc='32'
-      apn='ctbc.br'
-      authtype='1'
-      type='default'
-      user='CTBC'
-      password='1212'
-  />
-
-  <apn carrier='CTBC:Modem:1'
-      mcc='724'
-      mnc='32'
-      apn='ctbc.br'
-      authtype='1'
-      type='dun'
-      user='CTBC'
-      password='1212'
-  />
-
-  <apn carrier='CTBC:MMS:1'
-      mcc='724'
-      mnc='32'
-      apn='mms.ctbc.br'
-      authtype='1'
-      mmsc='http://mms.ctbccelular.com.br/was'
-      mmsproxy='172.29.7.70'
-      mmsport='8080'
-      type='mms'
-      user='CTBC'
-      password='1212'
-  />
-
-  <apn carrier='CTBC:Dados:2'
-      mcc='724'
-      mnc='33'
-      apn='ctbc.br'
-      authtype='1'
-      type='default'
-      user='CTBC'
-      password='1212'
-  />
-
-  <apn carrier='CTBC:Modem:2'
-      mcc='724'
-      mnc='33'
-      apn='ctbc.br'
-      authtype='1'
-      type='dun'
-      user='CTBC'
-      password='1212'
-  />
-
-  <apn carrier='CTBC:MMS:2'
-      mcc='724'
-      mnc='33'
-      apn='mms.ctbc.br'
-      authtype='1'
-      mmsc='http://mms.ctbccelular.com.br/was'
-      mmsproxy='172.29.7.70'
-      mmsport='8080'
-      type='mms'
-      user='CTBC'
-      password='1212'
-  />
-
-  <apn carrier='CTBC:Dados:3'
-      mcc='724'
-      mnc='34'
-      apn='ctbc.br'
-      authtype='1'
-      type='default'
-      user='CTBC'
-      password='1212'
-  />
-
-  <apn carrier='CTBC:Modem:3'
-      mcc='724'
-      mnc='34'
-      apn='ctbc.br'
-      authtype='1'
-      type='dun'
-      user='CTBC'
-      password='1212'
-  />
-
-  <apn carrier='CTBC:MMS:3'
-      mcc='724'
-      mnc='34'
-      apn='mms.ctbc.br'
-      authtype='1'
-      mmsc='http://mms.ctbccelular.com.br/was'
-      mmsproxy='172.29.7.70'
-      mmsport='8080'
-      type='mms'
-      user='CTBC'
-      password='1212'
-  />
-
-  <apn carrier='Nextel MMS'
-      mcc='724'
-      mnc='39'
-      apn='mms.nextel3g.net.br'
-      authtype='0'
-      mmsc='http://3gmms.nextel3g.net.br'
-      mmsproxy='129.192.129.104'
-      mmsport='8080'
-      type='mms'
-  />
-
-  <apn carrier='Nextel WAP'
-      mcc='724'
-      mnc='39'
-      apn='wap.nextel3g.net.br'
-      authtype='0'
-      type='default'
-      protocol='IPV4V6'
-      roaming_protocol='IPV4V6'
-  />
-
-  <apn carrier='Porto Seguro Conecta'
-      mcc='724'
-      mnc='54'
-      authtype='0'
-      type='default,dun'
-      apn='portoconecta.br'
-  />
-
-  <apn carrier="Internet Movil"
-      mcc="730"
-      mnc="01"
-      apn="bam.entelpcs.cl"
-      user="entelpcs"
-      password="entelpcs"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="MMS Entel PCS"
-      mcc="730"
-      mnc="01"
-      apn="mms.entelpcs.cl"
-      user="entelpcs"
-      password="entelpcs"
-      mmsproxy="10.99.0.10"
-      mmsport="8080"
-      mmsc="http://mmsc.entelpcs.cl"
-      authtype="1"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="Internet Móvil"
-      mcc="730"
-      mnc="01"
-      apn="internet.movilfalabella.com"
-      type="default,supl"
-      mvno_match_data="Falabella"
-      mvno_type="spn"
-  />
-
-  <apn carrier="MMS"
-      mcc="730"
-      mnc="01"
-      apn="mms.movilfalabella.com"
-      mmsc="http://mmsc.movilfalabella.com"
-      type="mms"
-      mvno_match_data="Falabella"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Movistar APLICACIONES"
-      mcc="730"
-      mnc="02"
-      apn="wap.tmovil.cl"
-      user="wap"
-      password="wap"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="730"
-      mnc="02"
-      apn="mms.tmovil.cl"
-      user="mms"
-      password="mms"
-      mmsproxy="172.17.8.10"
-      mmsport="8080"
-      mmsc="http://mms.movistar.cl"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Banda Ancha Movil"
-      mcc="730"
-      mnc="03"
-      apn="bam.clarochile.cl"
-      user="clarochile"
-      password="clarochile"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Claro"
-      mcc="730"
-      mnc="03"
-      apn="mms.clarochile.cl"
-      user="clarochile"
-      password="clarochile"
-      mmsproxy="172.23.200.200"
-      mmsport="8080"
-      mmsc="http://mms.clarochile.cl"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Virgin Internet Movil"
-      mcc="730"
-      mnc="07"
-      apn="imovil.virginmobile.cl"
-      type="default,supl"
-  />
-
-  <apn carrier='Virgin MMS'
-      mcc="730"
-      mnc="07"
-      apn="mmsc.virginmobile.cl"
-      mmsc="http://mms.virginmobile.cl:1981/mms"
-      type="mms"
-  />
-
-  <apn carrier="Internet"
-      mcc="730"
-      mnc="08"
-      apn="movil.vtr.com"
-      user="vtrmovil"
-      password="vtrmovil"
-      authtype="2"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="730"
-      mnc="08"
-      apn="mms.vtr.com"
-      user="mms"
-      password=""
-      mmsc="http://192.168.94.162:19090/was"
-      mmsproxy="192.168.94.210"
-      mmsport="9028"
-      authtype="0"
-      type="mms"
-  />
-
-  <apn carrier='Internet Nextel'
-      mcc='730'
-      mnc='09'
-      apn='wap.nextelmovil.cl'
-      authtype='0'
-      type='default'
-  />
-
-  <apn carrier='MMS Nextel'
-      mcc='730'
-      mnc='09'
-      apn='mms.nextelmovil.cl'
-      authtype='0'
-      mmsc='http://3gmms.nextelmovil.cl'
-      mmsproxy='129.192.129.104'
-      mmsport='8080'
-      type='mms'
-  />
-
-  <apn carrier="Internet Movil"
-      mcc="730"
-      mnc="10"
-      apn="bam.entelpcs.cl"
-      user="entelpcs"
-      password="entelpcs"
-      authtype="1"
-      type="default,supl"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier="MMS Entel PCS"
-      mcc="730"
-      mnc="10"
-      apn="mms.entelpcs.cl"
-      user="entelpcs"
-      password="entelpcs"
-      mmsc="http://mmsc.entelpcs.cl"
-      mmsproxy="10.99.0.10"
-      mmsport="8080"
-      authtype="1"
-      type="mms"
-      protocol="IPV4V6"
-  />
-
-  <apn carrier='Movistar INTERNET'
-      mcc='732'
-      mnc='12'
-      apn='internet.movistar.com.co'
-      authtype='1'
-      type='default, dun'
-      user='movistar'
-      password='movistar'
-  />
-
-  <apn carrier='Movistar MMS'
-      mcc='732'
-      mnc='12'
-      apn='mms.movistar.com.co'
-      authtype='1'
-      mmsc='http://mms.movistar.com.co'
-      mmsproxy='192.168.222.7'
-      mmsport='9001'
-      type='mms'
-      user='movistar'
-      password='movistar'
-  />
-
-  <apn carrier="COMCEL"
-      mcc="732"
-      mnc="101"
-      apn="internet.comcel.com.co"
-      user="COMCELWEB"
-      password="COMCELWEB"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Comcel 3GSM"
-      mcc="732"
-      mnc="101"
-      apn="mms.comcel.com.co"
-      user="COMCELMMS"
-      password="COMCELMMS"
-      mmsproxy="198.228.90.225"
-      mmsport="8799"
-      mmsc="http://www.comcel.com.co/mms/"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="TIGO WEB"
-      mcc="732"
-      mnc="103"
-      apn="web.colombiamovil.com.co"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="TIGO Multimedia"
-      mcc="732"
-      mnc="103"
-      apn="mms.colombiamovil.com.co"
-      user="mms-cm1900"
-      password="mms-cm1900"
-      mmsproxy="190.102.206.48"
-      mmsport="8080"
-      mmsc="http://mms.ola.com.co"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Internet ETB"
-      mcc="732"
-      mnc="103"
-      apn="moviletb.net.co"
-      type="default,dun"
-      user="etb"
-      password="etb"
-      authtype="0"
-      mvno_match_data="ETB MOVI"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Internet ETB"
-      mcc="732"
-      mnc="103"
-      apn="moviletb.net.co"
-      type="default,dun"
-      user="etb"
-      password="etb"
-      authtype="0"
-      mvno_match_data="ETB MOVI"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Internet Éxito"
-      mcc="732"
-      mnc="103"
-      apn="movilexito.net.co"
-      type="default,dun"
-      authtype="1"
-      mvno_match_data="movil exito"
-      mvno_type="spn"
-  />
-
-  <apn carrier="UFFMOVIL"
-      mcc="732"
-      mnc="103"
-      apn="web.uffmovil.com"
-      type="default,dun"
-      authtype="1"
-      mvno_match_data="Uff!"
-      mvno_type="spn"
-  />
-
-  <apn carrier="UNE"
-      mcc="732"
-      mnc="103"
-      apn="www.une.net.co"
-      type="default,dun"
-      user="une"
-      password="une"
-      authtype="0"
-      mvno_match_data="UNE"
-      mvno_type="spn"
-  />
-
-  <apn carrier="TIGO WEB"
-      mcc="732"
-      mnc="111"
-      apn="web.colombiamovil.com.co"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="TIGO Multimedia"
-      mcc="732"
-      mnc="111"
-      apn="mms.colombiamovil.com.co"
-      user="mms-cm1900"
-      password="mms-cm1900"
-      mmsproxy="190.102.206.48"
-      mmsport="8080"
-      mmsc="http://mms.ola.com.co"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Internet ETB"
-      mcc="732"
-      mnc="111"
-      apn="moviletb.net.co"
-      type="default,dun"
-      user="etb"
-      password="etb"
-      authtype="0"
-      mvno_match_data="ETB MOVIL"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Internet Éxito"
-      mcc="732"
-      mnc="111"
-      apn="movilexito.net.co"
-      type="default,dun"
-      authtype="1"
-      mvno_match_data="movil exito"
-      mvno_type="spn"
-  />
-
-  <apn carrier="UFFMOVIL"
-      mcc="732"
-      mnc="111"
-      apn="web.uffmovil.com"
-      type="default,dun"
-      authtype="1"
-      mvno_match_data="Uff!"
-      mvno_type="spn"
-  />
-
-  <apn carrier="UNE"
-      mcc="732"
-      mnc="111"
-      apn="www.une.net.co"
-      type="default,dun"
-      user="une"
-      password="une"
-      authtype="0"
-      mvno_match_data="UNE"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="732"
-      mnc="123"
-      apn="internet.movistar.com.co"
-      user="movistar"
-      password="movistar"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="732"
-      mnc="123"
-      apn="mms.movistar.com.co"
-      user="movistar"
-      password="movistar"
-      mmsproxy="192.168.222.7"
-      mmsport="9001"
-      mmsc="http://mms.movistar.com.co"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Virgin Mobile"
-      mcc="732"
-      mnc="123"
-      apn="web.vmc.net.co"
-      type="default,supl,internet"
-      authtype="1"
-      mvno_match_data="Virgin Mobile"
-      mvno_type="spn"
-  />
-
-  <apn carrier="Avantel"
-      mcc="732"
-      mnc="130"
-      apn="lte.avantel.com.co"
-      authtype="0"
-      type="default"
-  />
-
-  <apn carrier="ETB 4G"
-      mcc="732"
-      mnc="187"
-      apn="internetmovil.etb.net.co"
-      authtype="0"
-      type="default"
-  />
-
-  <apn carrier="Digitel 412"
-      mcc="734"
-      mnc="01"
-      apn="internet.digitel.ve"
-      type="default,supl"
-  />
-
-  <apn carrier="Venezuela:Digitel:MODEM:1"
-      mcc="734"
-      mnc="01"
-      apn="gprsweb.digitel.ve"
-      type="dun"
-      authtype="1"
-  />
-
-  <apn carrier="MMS"
-      mcc="734"
-      mnc="01"
-      apn="expresate.digitel.ve"
-      mmsproxy="10.99.0.10"
-      mmsport="8080"
-      mmsc="http://mms.412.com.ve/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier="Digitel 412"
-      mcc="734"
-      mnc="02"
-      apn="internet.digitel.ve"
-      type="default,supl"
-  />
-
-  <apn carrier="Venezuela:Digitel:MODEM:2"
-      mcc="734"
-      mnc="02"
-      apn="gprsweb.digitel.ve"
-      type="dun"
-      authtype="1"
-  />
-
-  <apn carrier="MMS"
-      mcc="734"
-      mnc="02"
-      apn="expresate.digitel.ve"
-      mmsproxy="10.99.0.10"
-      mmsport="8080"
-      mmsc="http://mms.412.com.ve/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier="Digitel 412"
-      mcc="734"
-      mnc="03"
-      apn="internet.digitel.ve"
-      type="default,supl"
-  />
-
-  <apn carrier="Venezuela:Digitel:MODEM:3"
-      mcc="734"
-      mnc="03"
-      apn="gprsweb.digitel.ve"
-      type="dun"
-      authtype="1"
-  />
-
-  <apn carrier="MMS"
-      mcc="734"
-      mnc="03"
-      apn="expresate.digitel.ve"
-      mmsproxy="10.99.0.10"
-      mmsport="8080"
-      mmsc="http://mms.412.com.ve/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="734"
-      mnc="04"
-      apn="internet.movistar.ve"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="734"
-      mnc="04"
-      apn="mms.movistar.ve"
-      mmsproxy="200.35.64.73"
-      mmsport="9001"
-      mmsc="http://mms.movistar.com.ve:8088/mms"
-      type="mms"
-  />
-
-  <apn carrier="Movistar WAP"
-      mcc="734"
-      mnc="04"
-      apn="wap.movistar.ve"
-      mmsproxy="200.35.64.73"
-      mmsport="9001"
-      type="default,supl"
-  />
-
-  <apn carrier="MODEM"
-      mcc="734"
-      mnc="06"
-      apn="int.movilnet.com.ve"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS"
-      mcc="734"
-      mnc="06"
-      apn="mm.movilnet.com.ve"
-      mmsproxy="192.168.16.12"
-      mmsport="8080"
-      mmsc="http://mms2.movilnet.com.ve/servlets/mms"
-      type="mms"
-  />
-
-  <apn carrier="VIVA3G"
-      mcc="736"
-      mnc="01"
-      apn="internet.nuevatel.com"
-      user=""
-      password=""
-      proxy="192.168.101.4"
-      port="3128"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="VIVAMMS"
-      mcc="736"
-      mnc="01"
-      apn="mms.nuevatel.com"
-      user=""
-      password=""
-      mmsproxy="192.168.101.4"
-      mmsport="3128"
-      mmsc="http://mmsgw.nuevatel.com:1981"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="ENTEL WAP GPRS"
-      mcc="736"
-      mnc="02"
-      apn="wap.movil.com.bo"
-      user=""
-      password=""
-      proxy="172.27.7.10"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="ENTEL MMS GPRS"
-      mcc="736"
-      mnc="02"
-      apn="mms.movil.com.bo"
-      user=""
-      password=""
-      mmsproxy="172.27.7.10"
-      mmsport="8080"
-      mmsc="http://mms.movil.com.bo/servlets/mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="WAPTIGO"
-      mcc="736"
-      mnc="03"
-      apn="wap.tigo.bo"
-      user=""
-      password=""
-      proxy="172.25.100.8"
-      port="8080"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMSTIGO"
-      mcc="736"
-      mnc="03"
-      apn="mms.tigo.bo"
-      user=""
-      password=""
-      mmsproxy="172.25.100.8"
-      mmsport="8080"
-      mmsc="http://mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Digicel"
-      mcc="738"
-      mnc="01"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Guyana:Digicel:Modem"
-      mcc="738"
-      mnc="01"
-      apn="wap.digicelgy.com"
-      type="dun"
-      user="wap"
-      password="wap"
-      authtype="1"
-      mmsc="http://www.digicelive.com"
-      proxy="172.20.6.12"
-      port="8080"
-  />
-
-  <apn carrier="Guyana:Digicel:Mms"
-      mcc="738"
-      mnc="01"
-      apn="wap.digicelgy.com"
-      type="mms"
-      user="wap"
-      password="wap"
-      authtype="1"
-      mmsproxy="172.20.6.12"
-      mmsc="http://mmc.digicelgy.com/servlets/mms"
-      mmsport="9201"
-  />
-
-  <apn carrier="GT&amp;T Cellink Plus"
-      mcc="738"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="740"
-      mnc="00"
-      apn="internet.movistar.com.ec"
-      user="movistar"
-      password="movistar"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="740"
-      mnc="00"
-      apn="mms.movistar.com.ec"
-      user="movistar"
-      password="movistar"
-      mmsproxy="10.3.5.50"
-      mmsport="9001"
-      mmsc="http://mms.movistar.com.ec:8088/mms/"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Internet Claro"
-      mcc="740"
-      mnc="01"
-      apn="internet.claro.com.ec"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Claro"
-      mcc="740"
-      mnc="01"
-      apn="mms.claro.com.ec"
-      user="portamms"
-      password="portamms2003"
-      mmsproxy="216.250.208.94"
-      mmsport="8799"
-      mmsc="http://iesmms.porta.com.ec/"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Internet Claro"
-      mcc="740"
-      mnc="010"
-      apn="internet.claro.com.ec"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Claro"
-      mcc="740"
-      mnc="010"
-      apn="mms.claro.com.ec"
-      user="portamms"
-      password="portamms2003"
-      mmsproxy="216.250.208.94"
-      mmsport="8799"
-      mmsc="http://iesmms.porta.com.ec/"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="CNT 3G"
-      mcc="740"
-      mnc="02"
-      apn="internet3gsp.alegro.net.ec"
-      type="default,supl"
-  />
-
-  <apn carrier="CNT MMS"
-      mcc="740"
-      mnc="02"
-      apn="mms.alegro.net.ec"
-      mmsproxy="10.4.85.3"
-      mmsport="8080"
-      mmsc="http://mms.alegro.net.ec/mms/"
-      type="mms"
-  />
-
-  <apn carrier="VOX INTERNET"
-      mcc="744"
-      mnc="01"
-      apn="vox.internet"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Paraguay:Voxx:Modem"
-      mcc="744"
-      mnc="01"
-      apn="vox.wap"
-      type="dun"
-      authtype="1"
-      mmsproxy="172.24.97.29"
-      mmsc="http://www.vox.com.py/"
-      port="8080"
-  />
-
-  <apn carrier="VOX MMS"
-      mcc="744"
-      mnc="01"
-      apn="vox.mms"
-      user="vox"
-      password="vox"
-      mmsproxy="172.24.97.29"
-      mmsport="8080"
-      mmsc="http://mms.vox.com.py/mmsc"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Claro PY"
-      mcc="744"
-      mnc="02"
-      apn="igprs.claro.com.py"
-      user="ctigprs"
-      password="ctigprs999"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS GPRS PY"
-      mcc="744"
-      mnc="02"
-      apn="mms.ctimovil.com.py"
-      user="ctimms"
-      password="ctimms999"
-      mmsproxy="170.51.255.240"
-      mmsport="8080"
-      mmsc="http://mms.ctimovil.com.py"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="TIGO PY"
-      mcc="744"
-      mnc="04"
-      apn="internet.tigo.py"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS Tigo"
-      mcc="744"
-      mnc="04"
-      apn="mms.tigo.py"
-      user="tigo"
-      password="tigo"
-      mmsproxy="10.16.17.12"
-      mmsport="8888"
-      mmsc="http://mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Personal Datos Py"
-      mcc="744"
-      mnc="05"
-      apn="internet"
-      user="personal"
-      password="personal"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Personal MMS Py"
-      mcc="744"
-      mnc="05"
-      apn="mms"
-      user="mms"
-      password="mms"
-      mmsproxy="172.16.192.7"
-      mmsport="8080"
-      mmsc="http://mms"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Telesur"
-      mcc="746"
-      mnc="02"
-      apn="default"
-      type="default,supl"
-  />
-
-  <apn carrier='Suriname:Digicel:Internet'
-      mcc='746'
-      mnc='03'
-      apn='web.digicelsr.com'
-      authtype='1'
-      type='default'
-  />
-
-  <apn carrier='Suriname:Digicel:Mms'
-      mcc='746'
-      mnc='03'
-      apn='wap.digicelsr.com'
-      authtype='1'
-      mmsc='http://mmc.digicelsr.com/servlets/mms'
-      mmsproxy='172.20.6.12'
-      mmsport='9201'
-      type='mms'
-      user='wap'
-      password='wap'
-  />
-
-  <apn carrier='Suriname:Digicel:Modem'
-      mcc='746'
-      mnc='03'
-      apn='wap.digicelsr.com'
-      port='8080'
-      authtype='1'
-      proxy='172.20.6.12'
-      mmsc='http://wapdigicel.com'
-      type='dun'
-      user='wap'
-      password='wap'
-  />
-
-  <apn carrier="wapANCEL"
-      mcc="748"
-      mnc="01"
-      apn="wap"
-      proxy="200.40.246.2"
-      port="3128"
-      user=""
-      password=""
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="mmsANCEL"
-      mcc="748"
-      mnc="01"
-      apn="mms"
-      user=""
-      password=""
-      mmsproxy="200.40.246.2"
-      mmsport="3128"
-      mmsc="http://mmsc.mms.ancelutil.com.uy"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="gprsANCEL"
-      mcc="748"
-      mnc="01"
-      apn="gprs.ancel"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar INTERNET"
-      mcc="748"
-      mnc="07"
-      apn="webapn.movistar.com.uy"
-      user="movistar"
-      password="movistar"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="Movistar MMS"
-      mcc="748"
-      mnc="07"
-      apn="apnmms.movistar.com.uy"
-      user="mmsuy"
-      password="mmsuy"
-      mmsproxy="10.0.2.29"
-      mmsport="8080"
-      mmsc="http://mmsc.movistar.com.uy"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Claro UY"
-      mcc="748"
-      mnc="10"
-      apn="igprs.claro.com.uy"
-      user="ctigprs"
-      password="ctigprs999"
-      authtype="1"
-      type="default,supl"
-  />
-
-  <apn carrier="MMS GPRS UY"
-      mcc="748"
-      mnc="10"
-      apn="mms.ctimovil.com.uy"
-      user="ctimms"
-      password="ctimms999"
-      mmsproxy="170.51.255.240"
-      mmsport="8080"
-      mmsc="http://mms.ctimovil.com.uy"
-      authtype="1"
-      type="mms"
-  />
-
-  <apn carrier="Orange Armenia MMS"
-      mcc="283"
-      mnc="10"
-      apn="mms"
-      mmsc="http://mms/"
-      mmsproxy="192.168.220.251"
-      mmsport="3128"
-      type="mms"
-      authtype="1"
-  />
-
-  <apn carrier="Orange Armenia Internet"
-      mcc="283"
-      mnc="10"
-      apn="Internet"
-      type="default"
-      authtype="1"
-  />
-
-  <apn carrier="Orange BW MMS"
-      mcc="652"
-      mnc="02"
-      apn="mms.orange.co.bw"
-      mmsc="http://10.0.0.242/servlets/mms"
-      mmsproxy="10.0.0.226"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange WAP BW"
-      mcc="652"
-      mnc="02"
-      apn="internet.orange.co.bw"
-      proxy="10.0.0.226"
-      port="8080"
-      type="default"
-  />
-
-  <apn carrier="Orangeweb"
-      mcc="340"
-      mnc="01"
-      apn="orangeweb"
-      user="orange"
-      password="orange"
-      type="default"
-  />
-
-  <apn carrier="Orange CM"
-      mcc="624"
-      mnc="02"
-      apn="orangecmgprs"
-      user="orange"
-      password="orange"
-      proxy="192.168.122.101"
-      port="8080"
-      mmsc="http://mms.orange.cm"
-      mmsproxy="192.168.122.101"
-      mmsport="8080"
-      type="default,mms"
-  />
-
-  <apn carrier="Orange net KE"
-      mcc="639"
-      mnc="07"
-      apn="bew.orange.co.ke"
-      type="default"
-  />
-
-  <apn carrier="Orange RE"
-      mcc="647"
-      mnc="00"
-      apn="orangerun"
-      user="orange"
-      password="orange"
-      type="default"
-  />
-
-  <apn carrier="Orange MG MMS"
-      mcc="646"
-      mnc="02"
-      apn="orangemms"
-      user="mms"
-      password="orange"
-      mmsc="http://10.152.10.70.38090"
-      mmsproxy="10.150.0.115"
-      mmsport="8080"
-      type="mms"
-  />
-
-  <apn carrier="Orange World MG"
-      mcc="646"
-      mnc="02"
-      apn="orangeworld"
-      user="world"
-      password="orange"
-      proxy="10.150.0.115"
-      port="8080"
-      type="default"
-  />
-</apns>
diff --git a/audio_policy_configuration.xml b/audio_policy_configuration.xml
index 07daa6c..6ccfc17 100644
--- a/audio_policy_configuration.xml
+++ b/audio_policy_configuration.xml
@@ -73,6 +73,12 @@
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                            samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
                 </mixPort>
+                <mixPort name="incall_music_uplink" role="source"
+                        flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="8000,16000,48000"
+                             channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
                 <mixPort name="primary input" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
@@ -150,7 +156,7 @@
                 <route type="mix" sink="USB Headset Out"
                        sources="primary output,raw,deep_buffer,compressed_offload,hifi_playback,mmap_no_irq_out,voip_rx"/>
                 <route type="mix" sink="Telephony Tx"
-                       sources="voice_tx"/>
+                       sources="voice_tx,incall_music_uplink"/>
                 <route type="mix" sink="primary input"
                        sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/>
                 <route type="mix" sink="fast input"
@@ -191,6 +197,9 @@
         <!-- Remote Submix Audio HAL -->
         <xi:include href="r_submix_audio_policy_configuration.xml"/>
 
+        <!-- Hearing aid Audio HAL -->
+        <xi:include href="hearing_aid_audio_policy_configuration.xml"/>
+
     </modules>
 
     <!-- Volume section -->
diff --git a/default-permissions.xml b/default-permissions.xml
index 5c37315..7c653b5 100644
--- a/default-permissions.xml
+++ b/default-permissions.xml
@@ -49,6 +49,23 @@
         <!-- Contacts -->
         <permission name="android.permission.READ_CONTACTS" fixed="false"/>
         <permission name="android.permission.WRITE_CONTACTS" fixed="false"/>
+        <!-- Call logs -->
+        <permission name="android.permission.READ_CALL_LOG" fixed="false"/>
+        <permission name="android.permission.WRITE_CALL_LOG" fixed="false"/>
+        <!-- SMS -->
+        <permission name="android.permission.RECEIVE_SMS" fixed="false"/>
+        <permission name="android.permission.READ_PHONE_NUMBERS" fixed="false"/>
+    </exception>
+
+    <exception
+            package="com.google.android.apps.restore"
+            sha256-cert-digest="56:BE:13:2B:78:06:56:FE:24:44:CD:34:32:6E:B5:D7:AA:C9:1D:20:96:AB:F0:FE:67:3A:99:27:06:22:EC:87">
+        <!-- External storage -->
+        <permission name="android.permission.READ_EXTERNAL_STORAGE" fixed="false"/>
+        <permission name="android.permission.WRITE_EXTERNAL_STORAGE" fixed="false"/>
+        <!-- Contacts -->
+        <permission name="android.permission.READ_CONTACTS" fixed="false"/>
+        <permission name="android.permission.WRITE_CONTACTS" fixed="false"/>
     </exception>
 
     <exception
@@ -85,4 +102,28 @@
         <permission name="android.permission.WRITE_EXTERNAL_STORAGE" fixed="false"/>
     </exception>
 
+    <exception
+        package="com.google.android.apps.miphone.aiai"
+        sha256-cert-digest="8A:99:84:2F:79:25:51:71:7D:3A:19:E1:55:A6:D6:A6:E3:75:BD:1E:19:FB:CE:FF:43:8E:20:D2:F7:8D:8D:BE">
+        <!-- Calendar -->
+        <permission name="android.permission.READ_CALENDAR" fixed="false"/>
+        <!-- Contacts -->
+        <permission name="android.permission.READ_CONTACTS" fixed="false"/>
+        <!-- Location -->
+        <permission name="android.permission.ACCESS_COARSE_LOCATION" fixed="false"/>
+        <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/>
+        <!-- Phone -->
+        <permission name="android.permission.CALL_PHONE" fixed="false"/>
+        <permission name="android.permission.READ_CALL_LOG" fixed="false"/>
+        <!-- SMS -->
+        <permission name="android.permission.READ_SMS" fixed="false"/>
+    </exception>
+
+    <exception package="com.google.android.settings.intelligence">
+        <!-- Calendar -->
+        <permission name="android.permission.READ_CALENDAR" fixed="true"/>
+        <!-- Location -->
+        <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="true"/>
+    </exception>
+
 </exceptions>
diff --git a/device.mk b/device.mk
index 0018ca6..fe27cf6 100755
--- a/device.mk
+++ b/device.mk
@@ -14,16 +14,29 @@
 # limitations under the License.
 #
 
+ifneq (,$(filter 27, $(PRODUCT_EXTRA_VNDK_VERSIONS)))
+    _vndk_test := true
+endif
+
+ifeq (,$(_vndk_test))
+PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true
+endif
+PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE := true
+
 PRODUCT_PROPERTY_OVERRIDES += \
     keyguard.no_require_sim=true
 
+PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
+    ro.adb.secure=1
+
 PRODUCT_COPY_FILES += \
     device/google/wahoo/default-permissions.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default-permissions/default-permissions.xml \
-    frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml
+    frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml \
+    frameworks/native/data/etc/android.software.verified_boot.xml:system/etc/permissions/android.software.verified_boot.xml
 
 # Set the SVN for the targeted MR release
 PRODUCT_PROPERTY_OVERRIDES += \
-    ro.vendor.build.svn=16
+    ro.vendor.build.svn=17
 
 # Enforce privapp-permissions whitelist
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -53,13 +66,12 @@
 
 PRODUCT_CHARACTERISTICS := nosdcard
 PRODUCT_SHIPPING_API_LEVEL := 26
-PRODUCT_COMPATIBILITY_MATRIX_LEVEL_OVERRIDE := 27
 
 DEVICE_PACKAGE_OVERLAYS += $(LOCAL_PATH)/overlay
 
 PRODUCT_COPY_FILES += \
     $(LOCAL_KERNEL):kernel \
-    $(LOCAL_PATH)/init.recovery.hardware.rc:root/init.recovery.$(PRODUCT_HARDWARE).rc \
+    $(LOCAL_PATH)/init.recovery.hardware.rc:recovery/root/init.recovery.$(PRODUCT_HARDWARE).rc \
     $(LOCAL_PATH)/init.hardware.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_HARDWARE).rc \
     $(LOCAL_PATH)/init.hardware.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.wahoo.usb.rc \
     $(LOCAL_PATH)/ueventd.hardware.rc:$(TARGET_COPY_OUT_VENDOR)/ueventd.rc \
@@ -70,6 +82,7 @@
     $(LOCAL_PATH)/uinput-fpc.idc:system/usr/idc/uinput-fpc.idc \
     $(LOCAL_PATH)/init.qcom.devstart.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.qcom.devstart.sh \
     $(LOCAL_PATH)/init.qcom.ipastart.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.qcom.ipastart.sh \
+    $(LOCAL_PATH)/init.qcom.wlan.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.qcom.wlan.sh \
     $(LOCAL_PATH)/init.insmod.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.insmod.sh \
     $(LOCAL_PATH)/init.ramoops.sh:$(TARGET_COPY_OUT_SYSTEM)/bin/init.ramoops.sh \
     frameworks/native/services/vr/virtual_touchpad/idc/vr-virtual-touchpad-0.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/vr-virtual-touchpad-0.idc \
@@ -118,7 +131,8 @@
 PRODUCT_STATIC_BOOT_CONTROL_HAL := \
     bootctrl.msm8998 \
     libgptutils \
-    libz
+    libz \
+    libcutils
 
 PRODUCT_PACKAGES += \
     update_engine_sideload
@@ -133,9 +147,11 @@
     frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \
     frameworks/native/data/etc/android.hardware.camera.full.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.full.xml\
     frameworks/native/data/etc/android.hardware.camera.raw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.raw.xml\
+    frameworks/native/data/etc/android.hardware.camera.ar.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.ar.xml\
     frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \
     frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml \
     frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.accelerometer.xml \
+    frameworks/native/data/etc/android.hardware.sensor.assist.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.assist.xml \
     frameworks/native/data/etc/android.hardware.sensor.compass.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.compass.xml \
     frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \
     frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \
@@ -152,6 +168,7 @@
     frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \
     frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml \
     frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \
+    frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml \
     frameworks/native/data/etc/android.software.sip.voip.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.sip.voip.xml \
     frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \
     frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \
@@ -163,15 +180,19 @@
     frameworks/native/data/etc/android.hardware.vr.high_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vr.high_performance.xml \
     frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \
     frameworks/native/data/etc/android.hardware.vulkan.level-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
-    frameworks/native/data/etc/android.hardware.vulkan.version-1_0_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
+    frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
     frameworks/native/data/etc/android.hardware.telephony.carrierlock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.carrierlock.xml \
 
 # power HAL
 PRODUCT_PACKAGES += \
-    android.hardware.power@1.1-service.wahoo
+    android.hardware.power@1.2-service.wahoo-libperfmgr
 
 PRODUCT_COPY_FILES += \
-    $(LOCAL_PATH)/powerhint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.xml
+    $(LOCAL_PATH)/powerhint.json:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.json
+
+# health HAL
+PRODUCT_PACKAGES += \
+    android.hardware.health@2.0-service.wahoo
 
 # Audio fluence, ns, aec property, voice and media volume steps
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -187,9 +208,13 @@
 PRODUCT_PROPERTY_OVERRIDES += \
     ro.opengles.version=196610
 
-# b/68017541
+# b/73640835
 PRODUCT_PROPERTY_OVERRIDES += \
-    ro.qcom.adreno.qgl.ShaderStorageImageExtendedFormats=0
+    sdm.debug.rotator_downscale=1
+
+# Disable buffer age (b/74534157)
+PRODUCT_PROPERTY_OVERRIDES += \
+    debug.hwui.use_buffer_age=false
 
 # Enable camera EIS3.0
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -220,15 +245,27 @@
     persist.radio.sap_silent_pin=1 \
     persist.radio.sib16_support=1 \
     persist.radio.data_con_rprt=true \
-    persist.radio.always_send_plmn=true \
-    persist.rcs.supported=1 \
+    persist.radio.always_send_plmn=false\
+    persist.rcs.supported=1
+
+ifeq (,$(_vndk_test))
+PRODUCT_PROPERTY_OVERRIDES += \
+    vendor.rild.libpath=/vendor/lib64/libril-qc-qmi-1.so
+else
+PRODUCT_PROPERTY_OVERRIDES += \
     rild.libpath=/vendor/lib64/libril-qc-qmi-1.so
+endif
 
 # Disable snapshot timer
 PRODUCT_PROPERTY_OVERRIDES += \
     persist.radio.snapshot_enabled=0 \
     persist.radio.snapshot_timer=0
 
+# By default, enable zram; experiment can toggle the flag,
+# which takes effect on boot
+PRODUCT_PROPERTY_OVERRIDES += \
+    persist.sys.zram_enabled=1
+
 PRODUCT_PROPERTY_OVERRIDES += \
   ro.vendor.extension_library=libqti-perfd-client.so
 
@@ -278,10 +315,10 @@
 
 PRODUCT_PACKAGES += \
     hwcomposer.msm8998 \
-    android.hardware.graphics.composer@2.1-impl \
+    android.hardware.graphics.composer@2.1-impl:64 \
     android.hardware.graphics.composer@2.1-service \
     gralloc.msm8998 \
-    android.hardware.graphics.allocator@2.0-impl \
+    android.hardware.graphics.allocator@2.0-impl:64 \
     android.hardware.graphics.allocator@2.0-service \
     android.hardware.graphics.mapper@2.0-impl \
     libbt-vendor
@@ -293,7 +330,7 @@
 # Light HAL
 PRODUCT_PACKAGES += \
     lights.$(PRODUCT_HARDWARE) \
-    android.hardware.light@2.0-impl \
+    android.hardware.light@2.0-impl:64 \
     android.hardware.light@2.0-service
 
 # eSE applet HALs
@@ -308,26 +345,42 @@
 
 # Bluetooth HAL
 PRODUCT_PACKAGES += \
-    libbt-vendor \
-    android.hardware.bluetooth@1.0-impl    \
-    android.hardware.bluetooth@1.0-service
+    android.hardware.bluetooth@1.0-impl-qti:64 \
+    android.hardware.bluetooth@1.0-service-qti \
+    android.hardware.bluetooth@1.0-service-qti.rc
+
+# Bluetooth SoC
+PRODUCT_PROPERTY_OVERRIDES += \
+    vendor.qcom.bluetooth.soc=cherokee
+
+# Property for loading BDA from bdaddress module in kernel
+PRODUCT_PROPERTY_OVERRIDES += \
+    ro.vendor.bt.bdaddr_path=/sys/module/bdaddress/parameters/bdaddress
+
+# Bluetooth WiPower
+PRODUCT_PROPERTY_OVERRIDES += \
+    ro.vendor.bluetooth.emb_wp_mode=false \
+    ro.vendor.bluetooth.wipower=false
 
 # DRM HAL
 PRODUCT_PACKAGES += \
-  android.hardware.drm@1.0-impl \
-  android.hardware.drm@1.0-service \
-  android.hardware.drm@1.0-service.widevine
+    android.hardware.drm@1.0-impl:32 \
+    android.hardware.drm@1.0-service \
+    android.hardware.drm@1.1-service.widevine \
+    android.hardware.drm@1.1-service.clearkey \
+    move_widevine_data.sh
 
 # NFC packages
 PRODUCT_PACKAGES += \
-    nfc_nci.$(PRODUCT_HARDWARE) \
     NfcNci \
     Tag \
-    android.hardware.nfc@1.0-impl \
-    android.hardware.nfc@1.0-service
+    android.hardware.nfc@1.1-service \
+
+PRODUCT_PACKAGES += \
+    SecureElement
 
 PRODUCT_COPY_FILES += \
-    device/google/wahoo/nfc/libnfc-brcm.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-brcm.conf \
+    device/google/wahoo/nfc/libnfc-nci.conf:$(TARGET_COPY_OUT_SYSTEM)/etc/libnfc-nci.conf \
 
 PRODUCT_PACKAGES += \
     android.hardware.usb@1.1-service.wahoo
@@ -342,7 +395,7 @@
     libc2dcolorconvert
 
 PRODUCT_PACKAGES += \
-    android.hardware.camera.provider@2.4-impl \
+    android.hardware.camera.provider@2.4-impl:32 \
     android.hardware.camera.provider@2.4-service \
     camera.device@3.2-impl \
     camera.msm8998 \
@@ -352,7 +405,7 @@
 
 PRODUCT_PACKAGES += \
     sensors.$(PRODUCT_HARDWARE) \
-    android.hardware.sensors@1.0-impl \
+    android.hardware.sensors@1.0-impl:64 \
     android.hardware.sensors@1.0-service
 
 PRODUCT_COPY_FILES += \
@@ -368,17 +421,17 @@
 
 # Context hub HAL
 PRODUCT_PACKAGES += \
-    android.hardware.contexthub@1.0-impl.generic \
+    android.hardware.contexthub@1.0-impl.generic:64 \
     android.hardware.contexthub@1.0-service
 
 # Boot control HAL
 PRODUCT_PACKAGES += \
-    android.hardware.boot@1.0-impl \
+    android.hardware.boot@1.0-impl:64 \
     android.hardware.boot@1.0-service \
 
 # Vibrator HAL
 PRODUCT_PACKAGES += \
-    android.hardware.vibrator@1.1-service.wahoo
+    android.hardware.vibrator@1.2-service.wahoo
 
 # Thermal packages
 PRODUCT_PACKAGES += \
@@ -413,7 +466,6 @@
 # Wifi
 PRODUCT_PACKAGES += \
     android.hardware.wifi@1.0-service \
-    android.hardware.wifi.offload@1.0-service \
     wificond \
     wifilogd \
     libwpa_client
@@ -434,12 +486,13 @@
     audio.a2dp.default \
     audio.usb.default \
     audio.r_submix.default \
-    libaudio-resampler
+    libaudio-resampler \
+    audio.hearing_aid.default
 
 PRODUCT_PACKAGES += \
-    android.hardware.audio@2.0-impl \
-    android.hardware.audio.effect@2.0-impl \
-    android.hardware.soundtrigger@2.0-impl \
+    android.hardware.audio@4.0-impl:32 \
+    android.hardware.audio.effect@4.0-impl:32 \
+    android.hardware.soundtrigger@2.1-impl:32 \
     android.hardware.audio@2.0-service
 
 # stereo speakers: orientation changes swap L/R channels
@@ -477,6 +530,7 @@
     frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
     frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
     frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
+    frameworks/av/services/audiopolicy/config/hearing_aid_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/hearing_aid_audio_policy_configuration.xml \
 
 # audio hal tables
 PRODUCT_COPY_FILES += \
@@ -500,7 +554,7 @@
 
 # Fingerprint HIDL implementation
 PRODUCT_PACKAGES += \
-    android.hardware.biometrics.fingerprint@2.1-service.wahoo
+    android.hardware.biometrics.fingerprint@2.1-service.fpc
 
 PRODUCT_COPY_FILES += \
     frameworks/native/data/etc/android.hardware.fingerprint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.fingerprint.xml
@@ -517,6 +571,10 @@
 PRODUCT_COPY_FILES += \
     $(LOCAL_PATH)/seccomp_policy/mediacodec.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/mediacodec.policy
 
+# Keymaster configuration
+PRODUCT_COPY_FILES += \
+    frameworks/native/data/etc/android.software.device_id_attestation.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.device_id_attestation.xml
+
 ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
 # Subsystem ramdump
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -533,10 +591,6 @@
 PRODUCT_COPY_FILES += \
     device/google/wahoo/fstab.hardware:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.$(PRODUCT_HARDWARE)
 
-# Provide meaningful APN configuration
-PRODUCT_COPY_FILES += \
-    $(LOCAL_PATH)/apns-full-conf.xml:system/etc/apns-conf.xml
-
 # Use the default charger mode images
 PRODUCT_PACKAGES += \
     charger_res_images
@@ -559,9 +613,6 @@
 PRODUCT_PROPERTY_OVERRIDES += \
     ro.frp.pst=/dev/block/platform/soc/1da4000.ufshc/by-name/frp
 
-PRODUCT_PROPERTY_OVERRIDES += \
-    ro.vendor.vndk.version=27.1.0 \
-
 # Include vndk/vndk-sp/ll-ndk modules
 PRODUCT_PACKAGES += vndk_package
 
@@ -571,12 +622,9 @@
 PRODUCT_PROPERTY_OVERRIDES += \
     dalvik.vm.heapgrowthlimit=256m
 
-PRODUCT_PROPERTY_OVERRIDES += \
-    qcom.bluetooth.soc=cherokee
-
+# Privileged permissions whitelist
 PRODUCT_COPY_FILES += \
-    device/google/wahoo/tango_permissions.xml:system/etc/permissions/tango_permissions.xml \
-    device/google/wahoo/libtango_device2.jar:system/framework/libtango_device2.jar
+    device/google/wahoo/permissions/privapp-permissions-aosp_wahoo.xml:system/etc/permissions/privapp-permissions-aosp_wahoo.xml
 
 PRODUCT_PACKAGES += \
     ipacm
@@ -604,7 +652,7 @@
 
 # Enable CameraHAL perfd usage
 PRODUCT_PROPERTY_OVERRIDES += \
-    persist.camera.perfd.enable=true
+    persist.camera.perfd.enable=false
 
 # Enable Gcam FD Ensemble
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -617,3 +665,13 @@
 # audio effects config
 PRODUCT_PROPERTY_OVERRIDES += \
     fmas.hdph_sgain=0
+
+# NFC/camera interaction workaround - DO NOT COPY TO NEW DEVICES
+PRODUCT_PROPERTY_OVERRIDES += \
+    ro.camera.notify_nfc=1
+
+# default usb oem functions
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+  PRODUCT_PROPERTY_OVERRIDES += \
+      persist.vendor.usb.usbradio.config=diag
+endif
diff --git a/device_framework_matrix.xml b/device_framework_matrix.xml
new file mode 100644
index 0000000..917ae5c
--- /dev/null
+++ b/device_framework_matrix.xml
@@ -0,0 +1,66 @@
+<compatibility-matrix version="1.0" type="framework">
+    <hal format="hidl" optional="true">
+        <name>vendor.qti.atcmdfwd</name>
+        <version>1.0</version>
+        <interface>
+            <name>IAtCmdFwd</name>
+            <instance>AtCmdFwdService</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="true">
+        <name>vendor.qti.qcril.am</name>
+        <version>1.0</version>
+        <interface>
+            <name>IQcRilAudio</name>
+            <instance>slot1</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="true">
+        <name>com.qualcomm.qti.ims.radio</name>
+        <version>1.1</version>
+        <interface>
+            <name>IImsRadio</name>
+            <instance>imsradio0</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="true">
+        <name>com.qualcomm.qti.imsrtpservice</name>
+        <version>1.0</version>
+        <interface>
+            <name>IRTPService</name>
+            <instance>imsrtpservice</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="true">
+        <name>com.qualcomm.qti.qcril.qcrilhook</name>
+        <version>1.0</version>
+        <interface>
+            <name>IQtiOemHook</name>
+            <instance>oemhook0</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="true">
+        <name>com.qualcomm.qti.uceservice</name>
+        <version>1.0</version>
+        <interface>
+            <name>IUceService</name>
+            <instance>com.qualcomm.qti.uceservice</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="true">
+        <name>com.quicinc.cne.api</name>
+        <version>1.0</version>
+        <interface>
+            <name>IApiService</name>
+            <instance>cnd</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="true">
+        <name>com.quicinc.cne.server</name>
+        <version>1.0</version>
+        <interface>
+            <name>IServer</name>
+            <instance>cnd</instance>
+        </interface>
+    </hal>
+</compatibility-matrix>
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
index f50919c..f676ad8 100755
--- a/dumpstate/DumpstateDevice.cpp
+++ b/dumpstate/DumpstateDevice.cpp
@@ -21,10 +21,11 @@
 #include <android-base/properties.h>
 #include <android-base/unique_fd.h>
 #include <cutils/properties.h>
-#include <libgen.h>
 #include <log/log.h>
-#include <stdlib.h>
-#include <string>
+#include <string.h>
+
+#define _SVID_SOURCE
+#include <dirent.h>
 
 #include "DumpstateUtil.h"
 
@@ -35,6 +36,8 @@
 #define DIAG_MDLOG_PROPERTY "sys.modem.diag.mdlog"
 #define DIAG_MDLOG_STATUS_PROPERTY "sys.modem.diag.mdlog_on"
 
+#define DIAG_MDLOG_NUMBER_BUGREPORT "persist.sys.modem.diag.mdlog_br_num"
+
 using android::os::dumpstate::CommandOptions;
 using android::os::dumpstate::DumpFileToFd;
 using android::os::dumpstate::PropertiesHelper;
@@ -46,6 +49,54 @@
 namespace V1_0 {
 namespace implementation {
 
+#define DIAG_LOG_PREFIX "diag_log_"
+
+void DumpstateDevice::dumpDiagLogs(int fd, std::string srcDir, std::string destDir) {
+    struct dirent **dirent_list = NULL;
+    int num_entries = scandir(srcDir.c_str(),
+                              &dirent_list,
+                              0,
+                              (int (*)(const struct dirent **, const struct dirent **)) alphasort);
+    if (!dirent_list) {
+        return;
+    } else if (num_entries <= 0) {
+        return;
+    }
+
+    int maxFileNum = android::base::GetIntProperty(DIAG_MDLOG_NUMBER_BUGREPORT, 100);
+    int copiedFiles = 0;
+
+    for (int i = num_entries - 1; i >= 0; i--) {
+        ALOGD("Found %s\n", dirent_list[i]->d_name);
+
+        if (0 != strncmp(dirent_list[i]->d_name, DIAG_LOG_PREFIX, strlen(DIAG_LOG_PREFIX))) {
+            continue;
+        }
+
+        if ((copiedFiles >= maxFileNum) && (maxFileNum != -1)) {
+            ALOGD("Skipped %s\n", dirent_list[i]->d_name);
+            continue;
+        }
+
+        copiedFiles++;
+
+        CommandOptions options = CommandOptions::WithTimeout(120).Build();
+        std::string srcLogFile = srcDir + "/" + dirent_list[i]->d_name;
+        std::string destLogFile = destDir + "/" + dirent_list[i]->d_name;
+
+        std::string copyCmd= "/vendor/bin/cp " + srcLogFile + " " + destLogFile;
+
+        ALOGD("Copying %s to %s\n", srcLogFile.c_str(), destLogFile.c_str());
+        RunCommandToFd(fd, "CP DIAG LOGS", { "/vendor/bin/sh", "-c", copyCmd.c_str() }, options);
+    }
+
+    while (num_entries--) {
+        free(dirent_list[num_entries]);
+    }
+
+    free(dirent_list);
+}
+
 void DumpstateDevice::dumpModem(int fd, int fdModem)
 {
     std::string modemLogDir = android::base::GetProperty(MODEM_LOG_LOC_PROPERTY, "");
@@ -68,7 +119,8 @@
               "/data/vendor/radio/ril_log",
               "/data/vendor/radio/ril_log_old",
               "/data/vendor/netmgr/netmgr_log",
-              "/data/vendor/netmgr/netmgr_log_old"
+              "/data/vendor/netmgr/netmgr_log_old",
+              "/data/vendor/radio/power_anomaly_data.txt"
             };
 
         std::string modemLogMkDirCmd= "/vendor/bin/mkdir -p " + modemLogAllDir;
@@ -77,8 +129,6 @@
         if (smlogEnabled) {
             RunCommandToFd(fd, "SMLOG DUMP", { "smlog_dump", "-d", "-o", modemLogAllDir.c_str() }, options);
         } else if (diagLogEnabled) {
-            std::string copyCmd= "/vendor/bin/cp -rf " + diagLogDir + " " + modemLogAllDir;
-
             android::base::SetProperty(DIAG_MDLOG_PROPERTY, "false");
 
             ALOGD("Waiting for diag log to exit\n");
@@ -92,7 +142,7 @@
                 sleep(1);
             }
 
-            RunCommandToFd(fd, "CP DIAG LOGS", { "/vendor/bin/sh", "-c", copyCmd.c_str()}, options);
+            dumpDiagLogs(fd, diagLogDir, modemLogAllDir);
 
             android::base::SetProperty(DIAG_MDLOG_PROPERTY, "true");
         }
@@ -178,7 +228,7 @@
         int fdModem = handle->data[1];
         dumpModem(fd, fdModem);
     }
-
+    RunCommandToFd(fd, "VENDOR PROPERTIES", {"/vendor/bin/getprop"});
     DumpFileToFd(fd, "SoC serial number", "/sys/devices/soc0/serial_number");
     DumpFileToFd(fd, "CPU present", "/sys/devices/system/cpu/present");
     DumpFileToFd(fd, "CPU online", "/sys/devices/system/cpu/online");
@@ -195,14 +245,11 @@
     DumpFileToFd(fd, "SMD Log", "/d/ipc_logging/smd/log");
     RunCommandToFd(fd, "ION HEAPS", {"/vendor/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done"});
     DumpFileToFd(fd, "dmabuf info", "/d/dma_buf/bufinfo");
-    RunCommandToFd(fd, "Temperatures", {"/vendor/bin/sh", "-c", "for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done"});
     RunCommandToFd(fd, "Easel debug info", {"/vendor/bin/sh", "-c", "for f in `ls /sys/bus/i2c/devices/9-0008/@(*curr|temperature|vbat|total_power)`; do echo \"$f: `cat $f`\" ; done; file=/sys/devices/virtual/misc/mnh_sm/state; echo \"$file: `cat $file`\""});
-    DumpFileToFd(fd, "cpu0-3 time-in-state", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state");
-    RunCommandToFd(fd, "cpu0-3 cpuidle", {"/vendor/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"});
-    DumpFileToFd(fd, "cpu4-7 time-in-state", "/sys/devices/system/cpu/cpu4/cpufreq/stats/time_in_state");
-    RunCommandToFd(fd, "cpu4-7 cpuidle", {"/vendor/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu4/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"});
-    DumpFileToFd(fd, "cpu0-3 thermal limit", "/sys/devices/virtual/thermal/cooling_device0/cur_state");
-    DumpFileToFd(fd, "cpu4-7 thermal limit", "/sys/devices/virtual/thermal/cooling_device1/cur_state");
+    RunCommandToFd(fd, "Temperatures", {"/vendor/bin/sh", "-c", "for f in /sys/class/thermal/thermal* ; do type=`cat $f/type` ; temp=`cat $f/temp` ; echo \"$type: $temp\" ; done"});
+    RunCommandToFd(fd, "Cooling Device Current State", {"/vendor/bin/sh", "-c", "for f in /sys/class/thermal/cooling* ; do type=`cat $f/type` ; temp=`cat $f/cur_state` ; echo \"$type: $temp\" ; done"});
+    RunCommandToFd(fd, "CPU time-in-state", {"/vendor/bin/sh", "-c", "for cpu in /sys/devices/system/cpu/cpu*; do f=$cpu/cpufreq/stats/time_in_state; if [ ! -f $f ]; then continue; fi; echo $f:; cat $f; done"});
+    RunCommandToFd(fd, "CPU cpuidle", {"/vendor/bin/sh", "-c", "for cpu in /sys/devices/system/cpu/cpu*; do for d in $cpu/cpuidle/state*; do if [ ! -d $d ]; then continue; fi; echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done; done"});
     DumpFileToFd(fd, "MDP xlogs", "/data/vendor/display/mdp_xlog");
     DumpFileToFd(fd, "TCPM logs", "/d/tcpm/usbpd0");
     DumpFileToFd(fd, "PD Engine", "/d/pd_engine/usbpd0");
@@ -210,15 +257,14 @@
     DumpFileToFd(fd, "ipc-local-ports", "/d/msm_ipc_router/dump_local_ports");
     DumpTouch(fd);
     RunCommandToFd(fd, "USB Device Descriptors", {"/vendor/bin/sh", "-c", "cd /sys/bus/usb/devices/1-1 && cat product && cat bcdDevice; cat descriptors | od -t x1 -w16 -N96"});
+    // Timeout after 3s
+    RunCommandToFd(fd, "QSEE logs", {"/vendor/bin/sh", "-c", "/vendor/bin/timeout 3 cat /d/tzdbg/qsee_log"});
+    RunCommandToFd(fd, "Power supply properties", {"/vendor/bin/sh", "-c", "for f in /sys/class/power_supply/*/uevent ; do echo \"\n------ $f\" ; cat $f ; done"});
+    DumpFileToFd(fd, "Battery cycle count", "/sys/class/power_supply/bms/device/cycle_counts_bins");
+    RunCommandToFd(fd, "QCOM FG SRAM", {"/vendor/bin/sh", "-c", "echo 0 > /d/fg/sram/address ; echo 500 > /d/fg/sram/count ; cat /d/fg/sram/data"});
 
-    /* Check if qsee_logger tool exists */
-    if (!access("/vendor/bin/qsee_logger", X_OK)) {
-      RunCommandToFd(fd, "FP LOGS", {"qsee_logger", "-d"});
-    }
+    DumpFileToFd(fd, "WLAN FW Log Symbol Table", "/vendor/firmware/Data.msc");
 
-    DumpFileToFd(fd, "Battery type", "/sys/class/power_supply/bms/battery_type");
-
-    RunCommandToFd(fd, "Battery cycle count", {"/vendor/bin/sh", "-c", "for f in 1 2 3 4 5 6 7 8 ; do echo $f > /sys/class/power_supply/bms/cycle_count_id; count=`cat /sys/class/power_supply/bms/cycle_count`; echo \"$f: $count\"; done"});
     return Void();
 };
 
diff --git a/dumpstate/DumpstateDevice.h b/dumpstate/DumpstateDevice.h
index 650c0cd..0a1d023 100644
--- a/dumpstate/DumpstateDevice.h
+++ b/dumpstate/DumpstateDevice.h
@@ -19,6 +19,7 @@
 #include <android/hardware/dumpstate/1.0/IDumpstateDevice.h>
 #include <hidl/MQDescriptor.h>
 #include <hidl/Status.h>
+#include <string>
 
 namespace android {
 namespace hardware {
@@ -39,6 +40,7 @@
   // Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
   Return<void> dumpstateBoard(const hidl_handle& h) override;
 
+  void dumpDiagLogs(int fd, std::string srcDir, std::string destDir);
   void dumpModem(int fd, int fdModem);
 };
 
diff --git a/dumpstate/android.hardware.dumpstate@1.0-service.wahoo.rc b/dumpstate/android.hardware.dumpstate@1.0-service.wahoo.rc
index 924782f..4c024a0 100644
--- a/dumpstate/android.hardware.dumpstate@1.0-service.wahoo.rc
+++ b/dumpstate/android.hardware.dumpstate@1.0-service.wahoo.rc
@@ -1,4 +1,8 @@
-service dumpstate-1-0 /vendor/bin/hw/android.hardware.dumpstate@1.0-service.wahoo
+service vendor.dumpstate-1-0 /vendor/bin/hw/android.hardware.dumpstate@1.0-service.wahoo
     class hal
     user system
     group system
+    interface android.hardware.dumpstate@1.0::IDumpstateDevice default
+
+on boot
+    chmod 0444 /sys/kernel/debug/tzdbg/qsee_log
diff --git a/folio_daemon/Android.mk b/folio_daemon/Android.mk
index d62bd74..ed5b5da 100755
--- a/folio_daemon/Android.mk
+++ b/folio_daemon/Android.mk
@@ -1,4 +1,8 @@
 LOCAL_PATH := $(call my-dir)
+
+# Disabling when building with PDK (b/68767391)
+ifneq ($(TARGET_BUILD_PDK),true)
+
 include $(CLEAR_VARS)
 
 LOCAL_SHARED_LIBRARIES := \
@@ -13,9 +17,12 @@
 
 LOCAL_CFLAGS := $(common_flags) -DLOG_TAG=\"folio_daemon\" -DLOG_NDEBUG=0
 
-LOCAL_CLANG := true
+LOCAL_CFLAGS += -Wall -Werror
+
 LOCAL_MODULE := folio_daemon
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE_OWNER := google
 
 include $(BUILD_EXECUTABLE)
+
+endif
diff --git a/folio_daemon/main.cpp b/folio_daemon/main.cpp
index 992b4a5..1cda1ce 100644
--- a/folio_daemon/main.cpp
+++ b/folio_daemon/main.cpp
@@ -14,7 +14,9 @@
  * limitations under the License.
  */
 
+#include <errno.h>
 #include <fcntl.h>
+#include <string.h>
 #include <time.h>
 #include <unistd.h>
 #include <linux/input.h>
diff --git a/framework_manifest.xml b/framework_manifest.xml
new file mode 100644
index 0000000..c82d51c
--- /dev/null
+++ b/framework_manifest.xml
@@ -0,0 +1,12 @@
+<manifest version="1.0" type="framework">
+    <hal format="hidl">
+        <name>vendor.qti.atcmdfwd</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IAtCmdFwd</name>
+            <instance>AtCmdFwdService</instance>
+        </interface>
+    </hal>
+</manifest>
+
diff --git a/fstab.hardware b/fstab.hardware
index 7d1e9ac..d2fc516 100644
--- a/fstab.hardware
+++ b/fstab.hardware
@@ -2,7 +2,7 @@
 
 #<src>                                                     <mnt_point>        <type>      <mnt_flags and options>                               <fs_mgr_flags>
 /dev/block/platform/soc/1da4000.ufshc/by-name/system       /                  ext4        ro,barrier=1                                          wait,slotselect,avb
-/dev/block/platform/soc/1da4000.ufshc/by-name/userdata     /data              ext4        errors=panic,noatime,nosuid,nodev,barrier=1,noauto_da_alloc        latemount,wait,check,formattable,fileencryption=ice:aes-256-heh,eraseblk=16777216,logicalblk=4096,quota
+/dev/block/platform/soc/1da4000.ufshc/by-name/userdata     /data              ext4        errors=panic,noatime,nosuid,nodev,barrier=1,noauto_da_alloc        latemount,wait,check,formattable,fileencryption=ice:aes-256-heh,eraseblk=16777216,logicalblk=4096,quota,reservedsize=128M
 /dev/block/platform/soc/1da4000.ufshc/by-name/misc         /misc              emmc        defaults                                              defaults
 /dev/block/platform/soc/1da4000.ufshc/by-name/modem        /firmware          vfat        ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0   wait,slotselect
 /devices/soc/a800000.ssusb/a800000.dwc3*                   auto               vfat        defaults                                              voldmanaged=usb:auto
diff --git a/gps.conf b/gps.conf
index 4e8fffa..54482b1 100644
--- a/gps.conf
+++ b/gps.conf
@@ -26,7 +26,7 @@
 # DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info
 #               4 - Debug, 5 - Verbose
 # If DEBUG_LEVEL is commented, Android's logging levels will be used
-DEBUG_LEVEL = 2
+DEBUG_LEVEL = 3
 
 # Intermediate position report, 1=enable, 0=disable
 INTERMEDIATE_POS=0
diff --git a/health/Android.bp b/health/Android.bp
new file mode 100644
index 0000000..d78a7c0
--- /dev/null
+++ b/health/Android.bp
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+cc_binary {
+    name: "android.hardware.health@2.0-service.wahoo",
+    init_rc: ["android.hardware.health@2.0-service.wahoo.rc"],
+    proprietary: true,
+    relative_install_path: "hw",
+    srcs: [
+        "HealthService.cpp",
+        "CycleCountBackupRestore.cpp",
+        "LearnedCapacityBackupRestore.cpp",
+    ],
+
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+
+    static_libs: [
+        "android.hardware.health@2.0-impl",
+        "android.hardware.health@1.0-convert",
+        "libhealthservice",
+        "libbatterymonitor",
+    ],
+
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "android.hardware.health@2.0",
+    ],
+
+    header_libs: ["libhealthd_headers"],
+}
diff --git a/health/CycleCountBackupRestore.cpp b/health/CycleCountBackupRestore.cpp
new file mode 100644
index 0000000..b9f83df
--- /dev/null
+++ b/health/CycleCountBackupRestore.cpp
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "CycleCountBackupRestore.h"
+
+namespace device {
+namespace google {
+namespace wahoo {
+namespace health {
+
+static constexpr char kCycCntFile[] = "sys/class/power_supply/bms/device/cycle_counts_bins";
+static constexpr char kSysPersistFile[] = "/persist/battery/qcom_cycle_counts_bins";
+static constexpr int kBuffSize = 256;
+
+CycleCountBackupRestore::CycleCountBackupRestore() { }
+
+void CycleCountBackupRestore::Restore()
+{
+    ReadFromStorage();
+    ReadFromSRAM();
+    UpdateAndSave();
+}
+
+void CycleCountBackupRestore::Backup()
+{
+    ReadFromSRAM();
+    UpdateAndSave();
+}
+
+void CycleCountBackupRestore::ReadFromStorage()
+{
+    std::string buffer;
+
+    if (!android::base::ReadFileToString(std::string(kSysPersistFile), &buffer)) {
+        LOG(ERROR) << "Cannot read the storage file";
+        return;
+    }
+
+    if (sscanf(buffer.c_str(), "%d %d %d %d %d %d %d %d",
+               &sw_bins_[0], &sw_bins_[1], &sw_bins_[2], &sw_bins_[3],
+               &sw_bins_[4], &sw_bins_[5], &sw_bins_[6], &sw_bins_[7])
+        != kBucketCount)
+        LOG(ERROR) << "data format is wrong in the storage file: " << buffer;
+    else
+        LOG(INFO) << "Storage data: " << buffer;
+}
+
+void CycleCountBackupRestore::SaveToStorage()
+{
+    char strData[kBuffSize];
+
+    snprintf(strData, kBuffSize, "%d %d %d %d %d %d %d %d",
+             sw_bins_[0], sw_bins_[1], sw_bins_[2], sw_bins_[3],
+             sw_bins_[4], sw_bins_[5], sw_bins_[6], sw_bins_[7]);
+
+    LOG(INFO) << "Save to Storage: " << strData;
+
+    if (!android::base::WriteStringToFile(strData, std::string(kSysPersistFile)))
+        LOG(ERROR) << "Write file error: " << strerror(errno);
+}
+
+void CycleCountBackupRestore::ReadFromSRAM()
+{
+    std::string buffer;
+
+    if (!android::base::ReadFileToString(std::string(kCycCntFile), &buffer)) {
+        LOG(ERROR) << "Read cycle counter error: " << strerror(errno);
+        return;
+    }
+
+    buffer = android::base::Trim(buffer);
+
+    if (sscanf(buffer.c_str(), "%d %d %d %d %d %d %d %d",
+               &hw_bins_[0], &hw_bins_[1], &hw_bins_[2], &hw_bins_[3],
+               &hw_bins_[4], &hw_bins_[5], &hw_bins_[6], &hw_bins_[7])
+        != kBucketCount)
+        LOG(ERROR) << "Failed to parse SRAM bins: " << buffer;
+    else
+        LOG(INFO) << "SRAM data: " << buffer;
+}
+
+void CycleCountBackupRestore::SaveToSRAM()
+{
+    char strData[kBuffSize];
+
+    snprintf(strData, kBuffSize, "%d %d %d %d %d %d %d %d",
+             hw_bins_[0], hw_bins_[1], hw_bins_[2], hw_bins_[3],
+             hw_bins_[4], hw_bins_[5], hw_bins_[6], hw_bins_[7]);
+
+    LOG(INFO) << "Save to SRAM: "  << strData ;
+
+    if (!android::base::WriteStringToFile(strData, std::string(kCycCntFile)))
+        LOG(ERROR) << "Write data error: " << strerror(errno);
+}
+
+
+void CycleCountBackupRestore::UpdateAndSave()
+{
+    bool backup = false;
+    bool restore = false;
+    for (int i = 0; i < kBucketCount; i++) {
+        if (hw_bins_[i] < sw_bins_[i]) {
+            hw_bins_[i] = sw_bins_[i];
+            restore = true;
+        } else if (hw_bins_[i] > sw_bins_[i]) {
+            sw_bins_[i] = hw_bins_[i];
+            backup = true;
+        }
+    }
+    if (restore)
+        SaveToSRAM();
+    if (backup)
+        SaveToStorage();
+}
+
+} // namespace health
+} // namespace wahoo
+} // namespace google
+} // namespace device
diff --git a/health/CycleCountBackupRestore.h b/health/CycleCountBackupRestore.h
new file mode 100644
index 0000000..e113c32
--- /dev/null
+++ b/health/CycleCountBackupRestore.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef DEVICE_GOOGLE_WAHOO_HEALTH_CYCLECOUNTBACKUPRESTORE_H
+#define DEVICE_GOOGLE_WAHOO_HEALTH_CYCLECOUNTBACKUPRESTORE_H
+
+#include <string>
+#include <android-base/file.h>
+#include <android-base/strings.h>
+#include <android-base/logging.h>
+
+namespace device {
+namespace google {
+namespace wahoo {
+namespace health {
+
+static constexpr int kBucketCount = 8;
+
+class CycleCountBackupRestore {
+public:
+    CycleCountBackupRestore();
+    void Restore();
+    void Backup();
+
+private:
+    int sw_bins_[kBucketCount];
+    int hw_bins_[kBucketCount];
+
+    void ReadFromStorage();
+    void SaveToStorage();
+    void ReadFromSRAM();
+    void SaveToSRAM();
+    void UpdateAndSave();
+};
+
+} // namespace health
+} // namespace wahoo
+} // namespace google
+} // namespace device
+
+#endif // #ifndef DEVICE_GOOGLE_WAHOO_HEALTH_CYCLECOUNTBACKUPRESTORE_H
diff --git a/health/HealthService.cpp b/health/HealthService.cpp
new file mode 100644
index 0000000..677ca65
--- /dev/null
+++ b/health/HealthService.cpp
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define LOG_TAG "android.hardware.health@2.0-service.wahoo"
+#include <android-base/logging.h>
+
+#include <healthd/healthd.h>
+#include <health2/Health.h>
+#include <health2/service.h>
+#include <hidl/HidlTransportSupport.h>
+
+#include <android-base/file.h>
+#include <android-base/strings.h>
+
+#include <vector>
+#include <string>
+
+#include "CycleCountBackupRestore.h"
+#include "LearnedCapacityBackupRestore.h"
+
+using android::hardware::health::V2_0::StorageInfo;
+using android::hardware::health::V2_0::DiskStats;
+using ::device::google::wahoo::health::CycleCountBackupRestore;
+using ::device::google::wahoo::health::LearnedCapacityBackupRestore;
+
+static constexpr int kBackupTrigger = 20;
+static CycleCountBackupRestore ccBackupRestore;
+static LearnedCapacityBackupRestore lcBackupRestore;
+
+int cycle_count_backup(int battery_level)
+{
+    static int saved_soc = 0;
+    static int soc_inc = 0;
+    static bool is_first = true;
+
+    if (is_first) {
+        is_first = false;
+        saved_soc = battery_level;
+        return 0;
+    }
+
+    if (battery_level > saved_soc) {
+        soc_inc += battery_level - saved_soc;
+    }
+
+    saved_soc = battery_level;
+
+    if (soc_inc >= kBackupTrigger) {
+        ccBackupRestore.Backup();
+        soc_inc = 0;
+    }
+    return 0;
+}
+
+// See : hardware/interfaces/health/2.0/README
+
+void healthd_board_init(struct healthd_config*)
+{
+    ccBackupRestore.Restore();
+    lcBackupRestore.Restore();
+}
+
+int healthd_board_battery_update(struct android::BatteryProperties *props)
+{
+    cycle_count_backup(props->batteryLevel);
+    lcBackupRestore.Backup();
+    return 0;
+}
+
+const char kUFSHealthFile[] = "/sys/kernel/debug/ufshcd0/dump_health_desc";
+const char kUFSHealthVersionFile[] = "/sys/kernel/debug/ufshcd0/show_hba";
+const char kDiskStatsFile[] = "/sys/block/sda/stat";
+const char kUFSName[] = "UFS0";
+
+/*
+ * Implementation based on system/core/storaged/storaged_info.cc
+ */
+void get_storage_info(std::vector<StorageInfo>& vec_storage_info) {
+    StorageInfo storage_info = {};
+    std::string buffer, version;
+
+    storage_info.attr.isInternal = true;
+    storage_info.attr.isBootDevice = true;
+    storage_info.attr.name = std::string(kUFSName);
+
+    if (!android::base::ReadFileToString(std::string(kUFSHealthVersionFile), &version)) {
+        return;
+    }
+
+    std::vector<std::string> lines = android::base::Split(version, "\n");
+    if (lines.empty()) {
+        return;
+    }
+
+    char rev[8];
+    if (sscanf(lines[6].c_str(), "hba->ufs_version = 0x%7s\n", rev) < 1) {
+        return;
+    }
+
+    storage_info.version = "ufs " + std::string(rev);
+
+    if (!android::base::ReadFileToString(std::string(kUFSHealthFile), &buffer)) {
+        return;
+    }
+
+    lines = android::base::Split(buffer, "\n");
+    if (lines.empty()) {
+        return;
+    }
+
+    for (size_t i = 1; i < lines.size(); i++) {
+        char token[32];
+        uint16_t val;
+        int ret;
+        if ((ret = sscanf(lines[i].c_str(),
+                   "Health Descriptor[Byte offset 0x%*d]: %31s = 0x%hx",
+                   token, &val)) < 2) {
+            continue;
+        }
+
+        if (std::string(token) == "bPreEOLInfo") {
+            storage_info.eol = val;
+        } else if (std::string(token) == "bDeviceLifeTimeEstA") {
+            storage_info.lifetimeA = val;
+        } else if (std::string(token) == "bDeviceLifeTimeEstB") {
+            storage_info.lifetimeB = val;
+        }
+    }
+
+    vec_storage_info.resize(1);
+    vec_storage_info[0] = storage_info;
+    return;
+}
+
+/*
+ * Implementation based on parse_disk_stats() in system/core/storaged_diskstats.cpp
+ */
+void get_disk_stats(std::vector<DiskStats>& vec_stats) {
+    const size_t kDiskStatsSize = 11;
+    struct DiskStats stats = {};
+
+    stats.attr.isInternal = true;
+    stats.attr.isBootDevice = true;
+    stats.attr.name = std::string(kUFSName);
+
+
+    std::string buffer;
+    if (!android::base::ReadFileToString(std::string(kDiskStatsFile), &buffer)) {
+        LOG(ERROR) << kDiskStatsFile << ": ReadFileToString failed.";
+        return;
+    }
+
+    // Regular diskstats entries
+    std::stringstream ss(buffer);
+    for (uint i = 0; i < kDiskStatsSize; ++i) {
+        ss >> *(reinterpret_cast<uint64_t*>(&stats) + i);
+    }
+    vec_stats.resize(1);
+    vec_stats[0] = stats;
+
+    return;
+}
+
+int main(void) {
+    return health_service_main();
+}
diff --git a/health/LearnedCapacityBackupRestore.cpp b/health/LearnedCapacityBackupRestore.cpp
new file mode 100644
index 0000000..48fe461
--- /dev/null
+++ b/health/LearnedCapacityBackupRestore.cpp
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "LearnedCapacityBackupRestore.h"
+
+namespace device {
+namespace google {
+namespace wahoo {
+namespace health {
+
+static constexpr char kChgFullFile[] = "sys/class/power_supply/bms/charge_full";
+static constexpr char kSysCFPersistFile[] = "/persist/battery/qcom_charge_full";
+static constexpr int kBuffSize = 256;
+
+LearnedCapacityBackupRestore::LearnedCapacityBackupRestore() {}
+
+void LearnedCapacityBackupRestore::Restore() {
+    ReadFromStorage();
+    ReadFromSRAM();
+    UpdateAndSave();
+}
+
+void LearnedCapacityBackupRestore::Backup() {
+    ReadFromSRAM();
+    UpdateAndSave();
+}
+
+void LearnedCapacityBackupRestore::ReadFromStorage() {
+    std::string buffer;
+
+    if (!android::base::ReadFileToString(std::string(kSysCFPersistFile), &buffer)) {
+        LOG(ERROR) << "Cannot read the storage file";
+        return;
+    }
+
+    if (sscanf(buffer.c_str(), "%d", &sw_cap_) < 1)
+        LOG(ERROR) << "data format is wrong in the storage file: " << buffer;
+    else
+        LOG(INFO) << "Storage data: " << buffer;
+}
+
+void LearnedCapacityBackupRestore::SaveToStorage() {
+    char strData[kBuffSize];
+
+    snprintf(strData, kBuffSize, "%d", sw_cap_);
+
+    LOG(INFO) << "Save to Storage: " << strData;
+
+    if (!android::base::WriteStringToFile(strData, std::string(kSysCFPersistFile)))
+        LOG(ERROR) << "Write file error: " << strerror(errno);
+}
+
+void LearnedCapacityBackupRestore::ReadFromSRAM() {
+    std::string buffer;
+
+    if (!android::base::ReadFileToString(std::string(kChgFullFile), &buffer)) {
+        LOG(ERROR) << "Read cycle counter error: " << strerror(errno);
+        return;
+    }
+
+    buffer = android::base::Trim(buffer);
+
+    if (sscanf(buffer.c_str(), "%d", &hw_cap_) < 1)
+        LOG(ERROR) << "Failed to parse SRAM bins: " << buffer;
+    else
+        LOG(INFO) << "SRAM data: " << buffer;
+}
+
+void LearnedCapacityBackupRestore::SaveToSRAM() {
+    char strData[kBuffSize];
+
+    snprintf(strData, kBuffSize, "%d", hw_cap_);
+
+    LOG(INFO) << "Save to SRAM: " << strData;
+
+    if (!android::base::WriteStringToFile(strData, std::string(kChgFullFile)))
+        LOG(ERROR) << "Write data error: " << strerror(errno);
+}
+
+void LearnedCapacityBackupRestore::UpdateAndSave() {
+    bool backup = false;
+    bool restore = false;
+    if (hw_cap_) {
+        if ((hw_cap_ < sw_cap_) || (sw_cap_ == 0)) {
+            sw_cap_ = hw_cap_;
+            backup = true;
+        } else if (hw_cap_ > sw_cap_) {
+            hw_cap_ = sw_cap_;
+            restore = true;
+        }
+    }
+    if (restore)
+        SaveToSRAM();
+    if (backup)
+        SaveToStorage();
+}
+
+}  // namespace health
+}  // namespace wahoo
+}  // namespace google
+}  // namespace device
diff --git a/health/LearnedCapacityBackupRestore.h b/health/LearnedCapacityBackupRestore.h
new file mode 100644
index 0000000..13d38e2
--- /dev/null
+++ b/health/LearnedCapacityBackupRestore.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef DEVICE_GOOGLE_WAHOO_HEALTH_LEARNEDCAPACITYBACKUPRESTORE_H
+#define DEVICE_GOOGLE_WAHOO_HEALTH_LEARNEDCAPACITYBACKUPRESTORE_H
+
+#include <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/strings.h>
+#include <string>
+
+namespace device {
+namespace google {
+namespace wahoo {
+namespace health {
+
+class LearnedCapacityBackupRestore {
+  public:
+    LearnedCapacityBackupRestore();
+    void Restore();
+    void Backup();
+
+  private:
+    int sw_cap_;
+    int hw_cap_;
+
+    void ReadFromStorage();
+    void SaveToStorage();
+    void ReadFromSRAM();
+    void SaveToSRAM();
+    void UpdateAndSave();
+};
+
+}  // namespace health
+}  // namespace wahoo
+}  // namespace google
+}  // namespace device
+
+#endif  // #ifndef DEVICE_GOOGLE_WAHOO_HEALTH_LEARNEDCAPACITYBACKUPRESTORE_H
diff --git a/health/android.hardware.health@2.0-service.wahoo.rc b/health/android.hardware.health@2.0-service.wahoo.rc
new file mode 100644
index 0000000..2949265
--- /dev/null
+++ b/health/android.hardware.health@2.0-service.wahoo.rc
@@ -0,0 +1,5 @@
+service vendor.health-hal-2-0 /vendor/bin/hw/android.hardware.health@2.0-service.wahoo
+    class hal
+    user system
+    group system
+    file /dev/kmsg w
diff --git a/init.hardware.diag.rc.userdebug b/init.hardware.diag.rc.userdebug
index a283556..6977fc6 100644
--- a/init.hardware.diag.rc.userdebug
+++ b/init.hardware.diag.rc.userdebug
@@ -21,327 +21,20 @@
     # Modem logging collection
     mkdir /data/vendor/radio 0777 radio radio
     mkdir /data/vendor/radio/diag_logs 0777 system system
+    chmod 777 /data/vendor/radio/diag_logs/cfg
+    chmod 777 /data/vendor/radio/diag_logs/custom_cfg
     # WLAN logging collection
     mkdir /data/vendor/wifi 0777 system system
     mkdir /data/vendor/wifi/cnss_diag 0777 system system
 
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x900E
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=diag,adb && property:sys.usb.configfs=1
-    start adbd
-
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_adb"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x901D
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=diag,serial_cdev,rmnet_gsi,adb && property:sys.usb.configfs=1
-    start adbd
-    start port-bridge
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,serial_cdev,rmnet_gsi,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Default composition"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x9091
-    write /config/usb_gadget/g1/os_desc/use 1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/gsi.rmnet /config/usb_gadget/g1/configs/b.1/f3
-    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=diag,serial_cdev,rmnet_gsi && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Default comp without ADB"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x9092
-    write /config/usb_gadget/g1/os_desc/use 1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/gsi.rmnet /config/usb_gadget/g1/configs/b.1/f3
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-    start port-bridge
-
-on property:sys.usb.config=rndis,diag && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x902C
-    symlink /config/usb_gadget/g1/functions/gsi.rndis /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=rndis,diag,adb && property:sys.usb.configfs=1
-    start adbd
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,diag,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag_adb"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x902D
-    symlink /config/usb_gadget/g1/functions/gsi.rndis /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=rndis,serial_cdev,diag && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_dun_diag"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x90B5
-    symlink /config/usb_gadget/g1/functions/gsi.rndis /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f3
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-    start port-bridge
-
-on property:sys.usb.config=rndis,serial_cdev,diag,adb && property:sys.usb.configfs=1
-    start adbd
-    start port-bridge
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,serial_cdev,diag,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_dun_diag"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x90B6
-    symlink /config/usb_gadget/g1/functions/gsi.rndis /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f3
-    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=mtp,diag && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_diag"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x901B
-    symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=mtp,diag,adb && property:sys.usb.configfs=1
-    start adbd
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,diag,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_diag_adb"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x903A
-    symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=diag,qdss && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_qdss"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x904A
-    write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f2
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=diag,qdss,adb && property:sys.usb.configfs=1
-    start adbd
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,qdss,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_qdss_adb"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x9060
-    write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=diag,qdss,rmnet_gsi && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_qdss_rmnet"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x9083
-    write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/gsi.rmnet /config/usb_gadget/g1/configs/b.1/f3
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=diag,qdss,rmnet_gsi,adb && property:sys.usb.configfs=1
-    start adbd
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,qdss,rmnet_gsi,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_qdss_rmnet_adb"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x9084
-    write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/gsi.rmnet /config/usb_gadget/g1/configs/b.1/f3
-    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=rndis,diag,qdss && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag_qdss"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x9081
-    write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
-    symlink /config/usb_gadget/g1/functions/gsi.rndis /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f3
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=rndis,diag,qdss,adb && property:sys.usb.configfs=1
-    start adbd
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,diag,qdss,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag_qdss_adb"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x9082
-    write /config/usb_gadget/g1/functions/qdss.qdss/enable_debug_inface 1
-    symlink /config/usb_gadget/g1/functions/gsi.rndis /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f3
-    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-on property:sys.usb.config=diag,serial_cdev && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_dun"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x9004
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-    start port-bridge
-
-on property:sys.usb.config=diag,adb,serial_cdev && property:sys.usb.configfs=1
-    start adbd
-    start port-bridge
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,adb,serial_cdev && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_adb_dun"
-    rm /config/usb_gadget/g1/configs/b.1/f1
-    rm /config/usb_gadget/g1/configs/b.1/f2
-    rm /config/usb_gadget/g1/configs/b.1/f3
-    rm /config/usb_gadget/g1/configs/b.1/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
-    write /config/usb_gadget/g1/idVendor 0x05C6
-    write /config/usb_gadget/g1/idProduct 0x901f
-    symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
-    symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f3
-    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
-    setprop sys.usb.state ${sys.usb.config}
-
-service diag_mdlog_start /vendor/bin/diag_mdlog
+service vendor.diag_mdlog_start /vendor/bin/diag_mdlog
     class late_start
     user shell
     group system diag media_rw
     disabled
     oneshot
 
-service diag_mdlog_stop /vendor/bin/diag_mdlog -k
+service vendor.diag_mdlog_stop /vendor/bin/diag_mdlog -k
     class late_start
     user shell
     group system diag media_rw
@@ -352,49 +45,56 @@
     setprop sys.modem.diag.mdlog ${persist.sys.modem.diag.mdlog}
 
 on property:sys.modem.diag.mdlog=true
-    start diag_mdlog_start
+    start vendor.diag_mdlog_start
 
 on property:sys.modem.diag.mdlog=false
-    start diag_mdlog_stop
+    start vendor.diag_mdlog_stop
 
 on property:persist.sys.cnss.diag_qxdm=true
-    start cnss_diag
+    start vendor.cnss_diag
 
 on property:persist.sys.cnss.diag_qxdm=false
-    stop cnss_diag
+    stop vendor.cnss_diag
 
 on property:persist.sys.cnss.diag_txt=true
-    start cnss_diag_txt
+    start vendor.cnss_diag_txt
 
 on property:persist.sys.cnss.diag_txt=false
-    stop cnss_diag_txt
+    stop vendor.cnss_diag_txt
 
-service cnss_diag /vendor/bin/cnss_diag -q -u -w
-    class late_start
-    user system
-    group system
-    oneshot
-
-service cnss_diag_txt /vendor/bin/cnss_diag -s -f -m /data/vendor/wifi/cnss_diag/cnss_diag.conf
+service vendor.cnss_diag /vendor/bin/cnss_diag -q -u -w
     class late_start
     user system
     group system
     disabled
     oneshot
 
-on property:debug.htc.ramdump.crash=true
+service vendor.cnss_diag_txt /vendor/bin/cnss_diag -s -f -m /data/vendor/wifi/cnss_diag/cnss_diag.conf
+    class late_start
+    user system
+    group system
+    disabled
+    oneshot
+
+on property:vendor.debug.ramdump.force_crash=true
     write /proc/sysrq-trigger "c"
 
 on property:sys.logger.bluetooth=true
-   setprop persist.service.bdroid.snooplog true
-   setprop persist.service.bdroid.fwsnoop true
+   setprop persist.vendor.service.bdroid.snooplog true
+   setprop persist.vendor.service.bdroid.fwsnoop true
 
 on property:sys.logger.bluetooth=false
-   setprop persist.service.bdroid.snooplog false
-   setprop persist.service.bdroid.fwsnoop false
+   setprop persist.vendor.service.bdroid.snooplog false
+   setprop persist.vendor.service.bdroid.fwsnoop false
 
 on property:persist.bluetooth.btsnoopenable=true
-   setprop persist.service.bdroid.soclog true
+   setprop persist.vendor.service.bdroid.soclog true
 
 on property:persist.bluetooth.btsnoopenable=false
-   setprop persist.service.bdroid.soclog false
+   setprop persist.vendor.service.bdroid.soclog false
+
+on property:vendor.usb.config=*
+   start usbd
+
+on property:persist.vendor.usb.usbradio.config=*
+   start usbd
diff --git a/init.hardware.rc b/init.hardware.rc
index 8ab2ba2..5fcd03a 100644
--- a/init.hardware.rc
+++ b/init.hardware.rc
@@ -27,11 +27,10 @@
     # Enable UFS powersaving
     write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 1
     write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 1
-    write /sys/devices/soc/${ro.boot.bootdevice}/hibern8_on_idle_enable 1
     write /sys/class/typec/port0/port_type sink
     write /sys/module/lpm_levels/parameters/sleep_disabled N
 
-service charger /charger
+service vendor.charger /charger
     class charger
     seclabel u:r:charger:s0
 
@@ -39,13 +38,12 @@
     mount debugfs debugfs /sys/kernel/debug
     chmod 0755 /sys/kernel/debug
     # Loading kernel modules in background
-    start insmod_sh
+    start vendor.insmod_sh
 
 on init
     # Disable UFS powersaving
     write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 0
     write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 0
-    write /sys/devices/soc/${ro.boot.bootdevice}/hibern8_on_idle_enable 0
     write /sys/module/lpm_levels/parameters/sleep_disabled Y
 
     # QSEE rpmb listener need symlink for bootdevice
@@ -54,7 +52,7 @@
 
     # start qseecomd early as we mount system/ vendor/ early
     # vold needs keymaster that needs qseecomd
-    start qseecomd
+    start vendor.qseecomd
 
     # Support legacy paths
     symlink /sdcard /mnt/sdcard
@@ -162,6 +160,8 @@
     write /proc/sys/vm/page-cluster 0
 
 on fs
+    # Start HW service manager early
+    start hwservicemanager
     mount_all /vendor/etc/fstab.${ro.hardware} --early
 
     mkdir /persist/data 0700 system system
@@ -189,21 +189,26 @@
     chmod 0770 /persist/rfs/apq
     chmod 0770 /persist/rfs/apq/gnss
     chmod 0770 /persist/hlos_rfs
-    restorecon_recursive /persist
 
-    # Start HW service manager early
-    start hwservicemanager
+    # for android.hardware.health@2.0-service.marlin cycle count backup
+    mkdir /persist/battery 0700 system system
+
+    restorecon_recursive /persist
 
 on late-fs
     # Start devices by sysfs trigger
-    start devstart_sh
+    start vendor.devstart_sh
     # Start services for bootanim
     start surfaceflinger
     start bootanim
-    start hwcomposer-2-1
-    start configstore-hal-1-0
-    start gralloc-2-0
+    start vendor.hwcomposer-2-1
+    start vendor.configstore-hal
+    start vendor.gralloc-2-0
 
+    # Wait for hwservicemanager ready since fsck might be triggered in mount_all --late
+    # In such case, init won't responce the property_set from hwservicemanager and then
+    # cause services for bootanim not running.
+    wait_for_prop hwservicemanager.ready true
     # Mount RW partitions which need run fsck
     mount_all /vendor/etc/fstab.${ro.hardware} --late
 
@@ -211,7 +216,7 @@
     mkdir /persist/time 0770 system system
 
     # Start time daemon early so that the system time can be set early
-    start time_daemon
+    start vendor.time_daemon
 
 on post-fs
     # set RLIMIT_MEMLOCK to 64MB
@@ -226,7 +231,7 @@
 
 on property:sys.user.0.ce_available=true
     mkdir /data/misc_ce/0/ramoops
-    start ramoops_sh
+    start vendor.ramoops_sh
 
 on property:sys.ramoops.decrypted=true
     mount pstore pstore /sys/fs/pstore
@@ -240,7 +245,7 @@
 
 on property:sys.listeners.registered=true
     # load IPA FWs
-    start ipastart_sh
+    start vendor.ipastart_sh
 
 on post-fs-data
     # We can start netd here before in is launched in common init.rc on zygote-start
@@ -283,8 +288,10 @@
 
     # Create the directories used by the Wireless subsystem
     mkdir /data/misc/wifi 0770 wifi wifi
-    mkdir /data/misc/wifi/sockets 0770 wifi wifi
     mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
+    mkdir /data/vendor/wifi 0771 wifi wifi
+    mkdir /data/vendor/wifi/wpa 0770 wifi wifi
+    mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
     mkdir /data/misc/dhcp 0770 dhcp dhcp
     chown dhcp dhcp /data/misc/dhcp
 
@@ -320,11 +327,11 @@
     chown system system /data/dpm/nsrm
 
     # Create directory used by audio subsystem
-    mkdir /data/misc/audio 0770 audio audio
+    mkdir /data/vendor/audio 0770 audio audio
 
     # Create directory for audio delta files
-    mkdir /data/misc/audio/acdbdata 0770 media audio
-    mkdir /data/misc/audio/acdbdata/delta 0770 media audio
+    mkdir /data/vendor/audio/acdbdata 0770 media audio
+    mkdir /data/vendor/audio/acdbdata/delta 0770 media audio
 
     # Create directory used by the DASH client
     mkdir /data/misc/dash 0770 media audio
@@ -380,13 +387,18 @@
     mkdir /data/vendor/location/xtwifi 0770 gps gps
 
     # NFC local data and nfcee xml storage
-    mkdir /data/nfc 0770 nfc nfc
-    mkdir /data/nfc/param 0770 nfc nfc
     mkdir /data/vendor/nfc 0770 nfc nfc
 
     # b/62837579 elabel directory
     mkdir /data/misc/elabel 0700 system system
 
+    # Setup permission for powerHAL
+    chown system system /dev/stune/top-app/schedtune.boost
+    chown system system /dev/cpu_dma_latency
+    chown system system /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
+    chown system system /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
+    chown system system /sys/class/devfreq/soc:qcom,gpubw/min_freq
+    chown system system /sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/min_freq
 
 on early-boot
     # wait for devices
@@ -420,6 +432,16 @@
     chown system system /sys/class/leds/blue/rgb_start
     chown system system /sys/class/graphics/fb0/msm_fb_persist_mode
 
+    # dumpstate needs to read, vendor.health-hal needs to be able to RW
+    chown system system /sys/devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/cycle_counts_bins
+    # HardwareInfo needs to be able to read CC bins
+    chmod 644 /sys/devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/cycle_counts_bins
+
+    # dumpstate needs to read, vendor.health-hal needs to be able to RW
+    chown system system /sys/devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/power_supply/bms/charge_full
+    # HardwareInfo needs to be able to read charge_full
+    chmod 644 /sys/devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/power_supply/bms/charge_full
+
 on boot
     mkdir /dev/socket/qmux_radio 0770 radio radio
     chmod 2770 /dev/socket/qmux_radio
@@ -435,10 +457,6 @@
 
     setprop wifi.interface wlan0
 
-    # Define TCP buffer sizes for various networks
-    # ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
-    setprop net.tcp.buffersize.wifi    524288,2097152,4194304,262144,524288,1048576
-
     # Assign TCP buffer thresholds to be ceiling value of technology maximums
     # Increased technology maximums should be reflected here.
     write /proc/sys/net/core/rmem_max  8388608
@@ -465,10 +483,6 @@
     # Wifi firmware reload path
     chown wifi wifi /sys/module/wlan/parameters/fwpath
 
-    # Allow system to write to cycle_count_id to iterate and get stats
-    chown system system /sys/class/power_supply/bms/cycle_count_id
-    chmod 0666 /sys/class/power_supply/bms/cycle_count_id
-
     # default country code
     setprop ro.boot.wificountrycode 00
 
@@ -485,39 +499,39 @@
     # ftm4 VR mode
     chown system system /sys/devices/virtual/input/ftm4_touch/vrmode
 
-service init-elabel-sh /system/bin/init.elabel.sh
+service vendor.init-elabel-sh /system/bin/init.elabel.sh
     class late_start
     user system
     group system
     oneshot
 
-service init-radio-sh /vendor/bin/init.radio.sh
+service vendor.init-radio-sh /vendor/bin/init.radio.sh
     class late_start
     user radio
     group root radio
     oneshot
 
-service folio_daemon /system/bin/folio_daemon
+service vendor.folio_daemon /system/bin/folio_daemon
     class late_start
     user system
     group system
+    disabled
 
-service perfd /vendor/bin/perfd
-   class main
-   user root
-   group root readproc system
-   socket perfd seqpacket 0666 root system
-   disabled
+on property:init.svc.zygote=running
+    start vendor.folio_daemon
 
-service thermal-engine /vendor/bin/thermal-engine -c ${sys.qcom.thermalcfg:-/vendor/etc/thermal-engine.conf}
-   class main
+on property:init.svc.zygote=stopped
+    stop vendor.folio_daemon
+
+service vendor.thermal-engine /vendor/bin/thermal-engine -c ${sys.qcom.thermalcfg:-/vendor/etc/thermal-engine.conf}
+   class hal
    user root
-   group root system
+   group root system diag
    socket thermal-send-client stream 0666 system system
    socket thermal-recv-client stream 0660 system system
    socket thermal-recv-passive-client stream 0666 system system
 
-service msm_irqbalance /vendor/bin/msm_irqbalance -f /vendor/etc/msm_irqbalance.conf
+service vendor.msm_irqbalance /vendor/bin/msm_irqbalance -f /vendor/etc/msm_irqbalance.conf
     socket msm_irqbalance seqpacket 660 root system
     class core
     user root
@@ -525,54 +539,52 @@
     writepid /dev/cpuset/system-background/tasks
 
 on property:persist.sys.ssr.restart_level=*
-    start ssr_setup
+    start vendor.ssr_setup
 
-service ssr_setup /vendor/bin/ssr_setup
+service vendor.ssr_setup /vendor/bin/ssr_setup
     oneshot
     disabled
 
-service ssr_diag /vendor/bin/ssr_diag
+service vendor.ssr_diag /vendor/bin/ssr_diag
     class late_start
     user system
     group system
     disabled
 
-service per_mgr /vendor/bin/pm-service
+service vendor.per_mgr /vendor/bin/pm-service
     class core
     user system
     group system
     ioprio rt 4
     shutdown critical
 
-service per_proxy /vendor/bin/pm-proxy
+service vendor.per_proxy /vendor/bin/pm-proxy
     class core
     user system
     group system
     disabled
 
 on property:sys.post_boot.parsed=1
-    start perfd
+    # Setup permission for powerHAL
+    chown system system /sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_trigger_count
+    chown system system /sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/bw_hwmon/hist_memory
+    chown system system /sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_length
 
 on property:sys.boot_completed=1
     # Enable power setting and set sys.post_boot.parsed to 1
-    # to start perfd
-    start power_sh
+    start vendor.power_sh
 
     # Enable UFS powersaving
     write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 1
     write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 1
-    write /sys/devices/soc/${ro.boot.bootdevice}/hibern8_on_idle_enable 1
     write /sys/module/lpm_levels/parameters/sleep_disabled N
 
-    # Enable ZRAM on boot_complete
-    swapon_all /vendor/etc/fstab.${ro.hardware}
-
     # Setup final cpuset
     write /dev/cpuset/top-app/cpus 0-7
-    write /dev/cpuset/foreground/boost/cpus 0-3,6-7
     write /dev/cpuset/foreground/cpus 0-3,6-7
     write /dev/cpuset/background/cpus 0-1
     write /dev/cpuset/system-background/cpus 0-3
+    write /dev/cpuset/restricted/cpus 0-3
 
     # Update DVR cpusets to runtime values.
     write /dev/cpuset/kernel/cpus 2,3
@@ -585,7 +597,7 @@
 
     # UFS health
     chmod 755 /sys/kernel/debug/ufshcd0
-    chown 644 /sys/kernel/debug/ufshcd0/err_state
+    chmod 644 /sys/kernel/debug/ufshcd0/err_state
     chmod 644 /sys/kernel/debug/ufshcd0/power_mode
     chmod 644 /sys/kernel/debug/ufshcd0/host_regs
     chmod 644 /sys/kernel/debug/ufshcd0/show_hba
@@ -596,26 +608,43 @@
     chmod 644 /sys/kernel/debug/ufshcd0/stats/query_stats
     chmod 644 /sys/kernel/debug/ufshcd0/stats/err_stats
 
-on property:init.svc.per_mgr=running
-    start per_proxy
+    # QCOM FG SRAM dump for dumpstate
+    chown system system /d/fg/sram/data
+    chown system system /d/fg/sram/count
+    chown system system /d/fg/sram/address
+
+    # com.google.android.hardwareinfo needs to be able to read cycle counts
+    chmod 0666 /sys/class/power_supply/bms/cycle_count_id
+
+    trigger sys-boot-completed-set
+
+# We want one opportunity per boot to enable zram, so we
+# use a trigger we fire from the above stanza. If
+# persist.sys.zram_enabled becomes true after boot,
+# we don't want to run swapon_all at that time.
+on sys-boot-completed-set && property:persist.sys.zram_enabled=1
+    swapon_all /vendor/etc/fstab.${ro.hardware}
+
+on property:init.svc.vendor.per_mgr=running
+    start vendor.per_proxy
 
 on shutdown
-    stop per_proxy
+    stop vendor.per_proxy
     # Disable subsystem restart
     write /sys/module/subsystem_restart/parameters/disable_restart_work 0x9889deed
 
-service qseecomd /vendor/bin/qseecomd
+service vendor.qseecomd /vendor/bin/qseecomd
    class core
    user root
    group root
    shutdown critical
 
-service time_daemon /vendor/bin/time_daemon
+service vendor.time_daemon /vendor/bin/time_daemon
    class core
    user root
    group root
 
-service ss_ramdump /vendor/bin/subsystem_ramdump
+service vendor.ss_ramdump /vendor/bin/subsystem_ramdump
     class main
     user root
     group root system
@@ -625,12 +654,12 @@
     write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
     mkdir /data/vendor/ssrdump 771 root system
     mkdir /data/vendor/ramdump 771 root system
-    start ss_ramdump
+    start vendor.ss_ramdump
 
 on property:persist.sys.ssr.enable_ramdumps=0
     write /sys/module/subsystem_restart/parameters/enable_ramdumps 0
 
-service sensors /vendor/bin/sensors.qcom
+service vendor.sensors /vendor/bin/sensors.qcom
     class core
     user system
     group system
@@ -638,55 +667,53 @@
     # register QMI services
     capabilities NET_BIND_SERVICE
 
-service adsprpcd /vendor/bin/adsprpcd
+service vendor.adsprpcd /vendor/bin/adsprpcd
    class main
    user media
    group media
 
-service irsc_util /vendor/bin/irsc_util "/vendor/etc/sec_config"
+service vendor.irsc_util /vendor/bin/irsc_util "/vendor/etc/sec_config"
     class core
     user root
     oneshot
 
-service rmt_storage /vendor/bin/rmt_storage
+service vendor.rmt_storage /vendor/bin/rmt_storage
     class core
     user root
     ioprio rt 0
     shutdown critical
 
-service tftp_server /vendor/bin/tftp_server
+service vendor.tftp_server /vendor/bin/tftp_server
    class core
    user root
    group root system
 
 service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
-    -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
-    -I/vendor/etc/wifi/p2p_supplicant_overlay.conf -N \
-    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-    -I/vendor/etc/wifi/wpa_supplicant_overlay.conf \
-    -O/data/misc/wifi/sockets -puse_p2p_group_interface=1 -dd \
-    -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
+    -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1 -dd \
+    -g@android:wpa_wlan0
     #   we will start as root and wpa_supplicant will switch to user wifi
     #   after setting up the capabilities required for WEXT
     #   user wifi
     #   group wifi inet keystore
+    interface android.hardware.wifi.supplicant@1.0::ISupplicant default
+    interface android.hardware.wifi.supplicant@1.1::ISupplicant default
     class main
     socket wpa_wlan0 dgram 660 wifi wifi
     disabled
     oneshot
 
-service cnss-daemon /vendor/bin/cnss-daemon -n -l
+service vendor.cnss-daemon /vendor/bin/cnss-daemon -n -l
    class late_start
    user system
    group system inet wifi
 
-service imsqmidaemon /vendor/bin/imsqmidaemon
+service vendor.imsqmidaemon /vendor/bin/imsqmidaemon
    class main
    user system
    socket ims_qmid stream 0660 system radio
    group radio log diag
 
-service imsdatadaemon /vendor/bin/imsdatadaemon
+service vendor.imsdatadaemon /vendor/bin/imsdatadaemon
    class main
    user system
    socket ims_datad stream 0660 system radio
@@ -694,86 +721,92 @@
    disabled
 
 on property:vendor.ims.QMI_DAEMON_STATUS=1
-   start imsdatadaemon
+   start vendor.imsdatadaemon
 
-service ims_rtp_daemon /vendor/bin/ims_rtp_daemon
+service vendor.ims_rtp_daemon /vendor/bin/ims_rtp_daemon
    class main
    user system
    group radio diag inet log
    disabled
 
-service imsrcsservice /vendor/bin/imsrcsd
+service vendor.imsrcsservice /vendor/bin/imsrcsd
    class hal
    user system
    group radio diag inet log
    disabled
 
 on property:vendor.ims.DATA_DAEMON_STATUS=1
-   start ims_rtp_daemon
-   start imsrcsservice
+   start vendor.ims_rtp_daemon
+   start vendor.imsrcsservice
 
-service qmuxd /vendor/bin/qmuxd
+service vendor.qmuxd /vendor/bin/qmuxd
    class main
    user root
    group radio audio bluetooth gps nfc qcom_diag
 
-#TODO evaluate group system once b/62571088 is resolved
-service cnd /vendor/bin/cnd
+service vendor.cnd /vendor/bin/cnd
    class main
-   user system
+   user radio
    group inet system wifi radio wakelock
 
-service netmgrd /vendor/bin/netmgrd
+service vendor.netmgrd /vendor/bin/netmgrd
     class main
     user root
     group root wifi wakelock radio inet
 
-service port-bridge /vendor/bin/port-bridge
+service vendor.port-bridge /vendor/bin/port-bridge
     class main
     user radio
     group radio system inet
     oneshot
 
-service ipacm /vendor/bin/ipacm
+service vendor.ipacm /vendor/bin/ipacm
     class main
     user radio
     group radio inet
 
-service qti /vendor/bin/qti
+service vendor.qti /vendor/bin/qti
     class main
     user radio
     group radio net_raw diag usb net_admin
 
 on property:wc_transport.start_hci=true
-    start hci_filter
+    start vendor.hci_filter
 
 on property:wc_transport.start_hci=false
-    stop hci_filter
+    stop vendor.hci_filter
 
-service hci_filter /vendor/bin/wcnss_filter
+service vendor.hci_filter /vendor/bin/wcnss_filter
     class late_start
     user bluetooth
     group bluetooth diag system wakelock
     disabled
 
-service loc_launcher /vendor/bin/loc_launcher
+service vendor.loc_launcher /vendor/bin/loc_launcher
     class late_start
     group gps inet diag wifi
 
-service pd_mapper /vendor/bin/pd-mapper
+service vendor.pd_mapper /vendor/bin/pd-mapper
      class core
 
-service atfwd /vendor/bin/ATFWD-daemon
+service vendor.atfwd /vendor/bin/ATFWD-daemon
     class late_start
     user system
     group system radio
     disabled
 
 on property:persist.radio.atfwd.start=true
-    start atfwd
+    start vendor.atfwd
 
 on property:persist.radio.atfwd.start=false
-    stop atfwd
+    stop vendor.atfwd
+
+# b/68982314
+on property:sys.uidcpupower=*
+   write /proc/uid_cpupower/enable 1
+
+on property:sys.uidcpupower=0
+   write /proc/uid_cpupower/enable 0
 
 # bugreport is triggered by holding down volume down, volume up and power
 service bugreport /system/bin/dumpstate -d -p -B -z \
@@ -783,45 +816,81 @@
     oneshot
     keycodes 114 115 116
 
-service chre /vendor/bin/chre
+service vendor.chre /vendor/bin/chre
     class late_start
     user system
     group system
     socket chre seqpacket 0660 root system
     shutdown critical
 
-service power_sh /vendor/bin/init.power.sh
+service vendor.power_sh /vendor/bin/init.power.sh
     class main
     user root
     group root system
     disabled
     oneshot
 
-service devstart_sh /vendor/bin/init.qcom.devstart.sh
+service vendor.devstart_sh /vendor/bin/init.qcom.devstart.sh
     class main
     user root
     group root system
     disabled
     oneshot
 
-service ipastart_sh /vendor/bin/init.qcom.ipastart.sh
+service vendor.wlan_sh /vendor/bin/init.qcom.wlan.sh
+    class main
+    user root
+    group root
+    disabled
+    oneshot
+
+service vendor.ipastart_sh /vendor/bin/init.qcom.ipastart.sh
     class main
     user system
     group net_admin
     disabled
     oneshot
 
-service insmod_sh /vendor/bin/init.insmod.sh
+service vendor.insmod_sh /vendor/bin/init.insmod.sh
     class main
     user root
     group root system
     disabled
     oneshot
 
-service ramoops_sh /system/bin/init.ramoops.sh
+service vendor.ramoops_sh /system/bin/init.ramoops.sh
     class main
     user root
     group root system
     disabled
     oneshot
 
+# b/70518189 vDSO experiments
+on property:sys.vdso=*
+   write /sys/module/vdso/parameters/enable_32 1
+   write /sys/module/vdso/parameters/enable_64 1
+
+on property:sys.vdso=false
+   write /sys/module/vdso/parameters/enable_32 0
+   write /sys/module/vdso/parameters/enable_64 0
+
+on property:sys.vdso=64
+   write /sys/module/vdso/parameters/enable_32 0
+
+on property:sys.vdso=32
+   write /sys/module/vdso/parameters/enable_64 0
+
+on property:wlan.driver.status=ok
+   # Get the wlan driver/fw version
+   start vendor.wlan_sh
+
+# charger driver exposes now finer grain control, map demo mode to those properties
+# demo mode can only be exit wipping data which will also reset the persist properties
+on property:sys.retaildemo.enabled=1
+    setprop persist.vendor.charge.stop.level 35
+    setprop persist.vendor.charge.start.level 30
+
+# system will not set the sys.retaildemo.enabled to 0 but this is used to set back to default charging
+on property:sys.retaildemo.enabled=0
+    setprop persist.vendor.charge.stop.level 100
+    setprop persist.vendor.charge.start.level 0
diff --git a/init.hardware.usb.rc b/init.hardware.usb.rc
index 0ecc976..09ae4d5 100644
--- a/init.hardware.usb.rc
+++ b/init.hardware.usb.rc
@@ -14,10 +14,10 @@
 # limitations under the License.
 #
 
-on boot
+on early-boot
     mount configfs none /config
-    mkdir /config/usb_gadget/g1 0770 shell shell
-    mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
+    mkdir /config/usb_gadget/g1 0770
+    mkdir /config/usb_gadget/g1/strings/0x409 0770
     write /config/usb_gadget/g1/bcdUSB 0x0200
     write /config/usb_gadget/g1/idVendor 0x18d1
     write /config/usb_gadget/g1/bcdDevice 0x0440
@@ -30,99 +30,29 @@
     mkdir /config/usb_gadget/g1/functions/midi.gs5
     mkdir /config/usb_gadget/g1/functions/ffs.adb
     mkdir /config/usb_gadget/g1/functions/ffs.mtp
+    mkdir /config/usb_gadget/g1/functions/ffs.ptp
     mkdir /config/usb_gadget/g1/functions/diag.diag
     mkdir /config/usb_gadget/g1/functions/cser.dun.0
     mkdir /config/usb_gadget/g1/functions/cser.nmea.1
     mkdir /config/usb_gadget/g1/functions/gsi.rmnet
     mkdir /config/usb_gadget/g1/functions/gsi.rndis
     mkdir /config/usb_gadget/g1/functions/qdss.qdss
-    mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
-    mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
+    mkdir /config/usb_gadget/g1/configs/b.1 0770
+    mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770
     write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
     write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
     mkdir /dev/usb-ffs 0775 shell shell
     mkdir /dev/usb-ffs/adb 0770 shell shell
-    mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
+    mount functionfs adb /dev/usb-ffs/adb rmode=0770,fmode=0660,uid=2000,gid=2000
     mkdir /dev/usb-ffs/mtp 0770 mtp mtp
+    mkdir /dev/usb-ffs/ptp 0770 mtp mtp
     mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
-    setprop sys.usb.ffs.max_write 524288
-    setprop sys.usb.ffs.max_read 524288
+    mount functionfs ptp /dev/usb-ffs/ptp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
     setprop sys.usb.mtp.device_type 3
-    setprop sys.usb.configfs 1
     setprop sys.usb.controller "a800000.dwc3"
     write /sys/module/libcomposite/parameters/disable_l1_for_hs "y"
     symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
     write /config/usb_gadget/g1/functions/gsi.rndis/rndis_wceis 1
 
-on property:sys.usb.config=none && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/os_desc/use 0
-
-on property:sys.usb.ffs.mtp.ready=1 && property:sys.usb.config=mtp && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x4ee1
-    write /config/usb_gadget/g1/os_desc/use 1
-    symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.ffs.mtp.ready=1 && property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x4ee2
-    write /config/usb_gadget/g1/os_desc/use 1
-    symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
-
-on property:sys.usb.config=rndis && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x4ee3
-    symlink /config/usb_gadget/g1/functions/gsi.rndis /config/usb_gadget/g1/configs/b.1/f1
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x4ee4
-    symlink /config/usb_gadget/g1/functions/gsi.rndis /config/usb_gadget/g1/configs/b.1/f1
-
-on property:sys.usb.ffs.mtp.ready=1 && property:sys.usb.config=ptp && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x4ee5
-    write /config/usb_gadget/g1/os_desc/use 1
-    symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.ffs.mtp.ready=1 && property:sys.usb.config=ptp,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x4ee6
-    write /config/usb_gadget/g1/os_desc/use 1
-    symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
-
-on property:sys.usb.config=adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x4ee7
-
-on property:sys.usb.config=midi && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x4ee8
-
-on property:sys.usb.config=midi,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x4ee9
-
-on property:sys.usb.config=accessory && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x2d00
-
-on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x2d01
-
-on property:sys.usb.config=audio_source && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x2d02
-
-on property:sys.usb.config=audio_source,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x2d03
-
-on property:sys.usb.config=accessory,audio_source && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x2d04
-
-on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/idVendor 0x18d1
-    write /config/usb_gadget/g1/idProduct 0x2d05
+on boot
+    setprop sys.usb.configfs 2
diff --git a/init.power.sh b/init.power.sh
index 3dc650d..949eae7 100755
--- a/init.power.sh
+++ b/init.power.sh
@@ -18,7 +18,6 @@
 do
     write $cpubw/governor "bw_hwmon"
     write $cpubw/polling_interval 50
-    write $cpubw/min_freq 1525
     write $cpubw/bw_hwmon/mbps_zones "3143 5859 11863 13763"
     write $cpubw/bw_hwmon/sample_ms 4
     write $cpubw/bw_hwmon/io_percent 34
@@ -35,12 +34,12 @@
 write /sys/class/devfreq/soc:qcom,mincpubw/governor "cpufreq"
 
 # Enable memlat governor
-for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
-do
-    write $memlat/governor "mem_latency"
-    write $memlat/polling_interval 10
-    write $memlat/mem_latency/ratio_ceil 400
-done
+#for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
+#do
+#    write $memlat/governor "mem_latency"
+#    write $memlat/polling_interval 10
+#    write $memlat/mem_latency/ratio_ceil 400
+#done
 
 # Signal perfd that boot has completed
 setprop sys.post_boot.parsed 1
diff --git a/init.qcom.wlan.sh b/init.qcom.wlan.sh
new file mode 100644
index 0000000..7858701
--- /dev/null
+++ b/init.qcom.wlan.sh
@@ -0,0 +1,6 @@
+#! /vendor/bin/sh
+
+wlan_driver_version=`cat /sys/kernel/wifi/wlan/driver_version`
+setprop sys.wlan.driver.version "$wlan_driver_version"
+wlan_fw_version=`cat /sys/kernel/wifi/wlan/fw/0/version`
+setprop sys.wlan.firmware.version "$wlan_fw_version"
diff --git a/liblight/Android.mk b/liblight/Android.mk
index ba3cf14..2ffa693 100644
--- a/liblight/Android.mk
+++ b/liblight/Android.mk
@@ -24,7 +24,7 @@
 LOCAL_CFLAGS := $(common_flags) \
     -DLOG_TAG=\"qdlights\" \
     -DDEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS=$(DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS)
-LOCAL_CLANG  := true
+LOCAL_CFLAGS += -Wall -Werror
 LOCAL_MODULE := lights.$(TARGET_DEVICE)
 LOCAL_MODULE_TAGS := optional
 
diff --git a/liblight/lights.c b/liblight/lights.c
index ae22ddb..d571748 100644
--- a/liblight/lights.c
+++ b/liblight/lights.c
@@ -39,8 +39,6 @@
 #define LIGHTS_SUPPORT_BATTERY 0
 #define CG_COLOR_ID_PROPERTY "ro.boot.hardware.color"
 
-#define LP_MODE_BRIGHTNESS_PROPERTY "sys.display.low_persistence_mode_brightness"
-
 static pthread_once_t g_init = PTHREAD_ONCE_INIT;
 static pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER;
 static struct light_state_t g_notification;
@@ -196,12 +194,6 @@
             ALOGE("%s: Failed to write to %s: %s\n", __FUNCTION__, PERSISTENCE_FILE,
                     strerror(errno));
         }
-        if (lpEnabled != 0) {
-            // Try to get the brigntess though property, otherwise it will
-            // set the default brightness, which is defined in BoardConfig.mk.
-            brightness = property_get_int32(LP_MODE_BRIGHTNESS_PROPERTY,
-                    DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS);
-        }
     }
 
     g_last_backlight_mode = state->brightnessMode;
@@ -219,7 +211,6 @@
         struct light_state_t const* state)
 {
     int red, green, blue;
-    int blink;
     int onMS, offMS;
     unsigned int colorRGB;
 
diff --git a/libtango_device2.jar b/libtango_device2.jar
deleted file mode 100644
index 36d8608..0000000
--- a/libtango_device2.jar
+++ /dev/null
Binary files differ
diff --git a/lisa/board.json b/lisa/board.json
new file mode 100644
index 0000000..65d7777
--- /dev/null
+++ b/lisa/board.json
@@ -0,0 +1,41 @@
+{
+    "board" : {
+        "cores" : [
+            "a53", "a53", "a53", "a53",
+            "a72", "a72", "a72", "a72"
+        ],
+        "big_core" : "a72",
+        "modules" : ["bl", "cpufreq"]
+    },
+    "nrg_model" : {
+        "little" : {
+            "cpu" : {
+                "nrg_max" :   201,
+                "cap_max" :   438
+            },
+            "cluster" : {
+                "nrg_max" :    66
+            }
+        },
+        "big": {
+            "cpu" : {
+                "nrg_max" :  1138,
+                "cap_max" :  1024
+            },
+            "cluster" : {
+                "nrg_max" :   203
+            }
+        }
+    },
+
+    "update-config" : {
+        "kernel" : {
+            "build-script" : "update-script.sh kernel build",
+            "flash-script" : "update-script.sh kernel flash"
+        },
+        "all" : {
+            "build-script" : "update-script.sh all build",
+            "flash-script" : "update-script.sh all flash"
+        }
+    }
+}
diff --git a/lisa/update-script.sh b/lisa/update-script.sh
new file mode 100755
index 0000000..6255dae
--- /dev/null
+++ b/lisa/update-script.sh
@@ -0,0 +1,111 @@
+#!/bin/bash
+
+build_kernel() {
+    echo "==========Building kernel image=========="
+    cd $ANDROID_BUILD_TOP
+    source build/envsetup.sh
+    lunch walleye-userdebug
+    cd $LOCAL_KERNEL_HOME
+    . ./build.config
+    make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} ${DEFCONFIG}
+    make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} -j32
+    cp $LOCAL_KERNEL_HOME/arch/arm64/boot/Image.lz4-dtb arch/arm64/boot/dtbo.img `find . -name '*.ko'` $ANDROID_BUILD_TOP/device/google/wahoo-kernel
+}
+
+build_image() {
+    cd $ANDROID_BUILD_TOP
+    source build/envsetup.sh
+    lunch walleye-userdebug
+    if [ "$1" = "bootimage" ]; then
+        echo "==========Building bootimage=========="
+        make -j32 vendorimage-nodeps
+        make -j32 vbmetaimage-nodeps
+        make -j32 bootimage
+    else
+        echo "==========Building complete image=========="
+        make -j32
+    fi
+}
+
+wait_for_fastboot() {
+    # wait for device to enter fastboot, max wait is 200secs
+    local i=0
+    while [ $i -lt 100 ]
+    do
+        if [ -n "`fastboot devices`"  ]; then
+            break
+        else
+            sleep 2
+            i=$((i+1))
+        fi
+    done
+}
+
+flash_android() {
+    # reboot the device if it's online
+    if [ "`adb devices`" != "List of devices attached" ]; then
+        echo "==========Rebooting the device into fastboot=========="
+        adb reboot bootloader
+    fi
+
+    echo "==========Waiting for device to enter fastboot=========="
+    wait_for_fastboot
+
+    if [ -z "`fastboot devices`" ]; then
+        echo "==========Device failed to enter fastboot=========="
+        exit
+    fi
+
+    # flash the device
+    if [ "$1" = "bootimage" ]; then
+        echo "==========Flashing bootimage=========="
+        fastboot flash vbmeta
+        fastboot flash vendor
+        fastboot flash boot
+        fastboot reboot
+    else
+        echo "==========Flashing complete image=========="
+        fastboot flashall
+    fi
+
+    echo "==========Waiting for device to come online=========="
+    # wait for device to boot
+    adb wait-for-device
+}
+
+# check input parameters
+if [ "$1" != "kernel" ] && [ "$1" != "all" ]; then
+    echo "First parameter \"$1\" is invalid. Should be \"kernel\" or \"all\"."
+    exit
+fi
+
+if [ "$2" != "build" ] && [ "$2" != "flash" ]; then
+    echo "Second parameter \"$2\" is invalid. Should be \"build\" or \"flash\"."
+    exit
+fi
+
+if [ -z "$ANDROID_BUILD_TOP" ]; then
+    echo "ANDROID_BUILD_TOP environment variable is not set."
+    exit
+fi
+
+if [ -z "$LOCAL_KERNEL_HOME" ]; then
+    echo "LOCAL_KERNEL_HOME environment variable is not set."
+    exit
+fi
+
+if [ "$2" = "build" ]; then
+    build_kernel
+    if [ "$1" = "kernel" ]; then
+        build_image bootimage
+    else
+        build_image
+    fi
+else
+    if [ "$1" = "kernel" ]; then
+        flash_android bootimage
+    else
+        flash_android
+    fi
+fi
+
diff --git a/manifest.xml b/manifest.xml
index c553bb3..2409a72 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -1,8 +1,8 @@
-<manifest version="1.0" type="device">
+<manifest version="1.0" type="device" target-level="2">
     <hal format="hidl">
         <name>android.hardware.audio</name>
         <transport>hwbinder</transport>
-        <version>2.0</version>
+        <version>4.0</version>
         <interface>
             <name>IDevicesFactory</name>
             <instance>default</instance>
@@ -11,7 +11,7 @@
     <hal format="hidl">
         <name>android.hardware.audio.effect</name>
         <transport>hwbinder</transport>
-        <version>2.0</version>
+        <version>4.0</version>
         <interface>
             <name>IEffectsFactory</name>
             <instance>default</instance>
@@ -65,7 +65,7 @@
     <hal format="hidl">
         <name>android.hardware.configstore</name>
         <transport>hwbinder</transport>
-        <version>1.0</version>
+        <version>1.1</version>
         <interface>
             <name>ISurfaceFlingerConfigs</name>
             <instance>default</instance>
@@ -87,13 +87,15 @@
         <interface>
             <name>ICryptoFactory</name>
             <instance>default</instance>
-            <instance>widevine</instance>
         </interface>
         <interface>
             <name>IDrmFactory</name>
             <instance>default</instance>
-            <instance>widevine</instance>
         </interface>
+        <fqname>@1.1::ICryptoFactory/clearkey</fqname>
+        <fqname>@1.1::IDrmFactory/clearkey</fqname>
+        <fqname>@1.1::ICryptoFactory/widevine</fqname>
+        <fqname>@1.1::IDrmFactory/widevine</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.dumpstate</name>
@@ -150,6 +152,15 @@
         </interface>
     </hal>
     <hal format="hidl">
+        <name>android.hardware.health</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IHealth</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
         <name>android.hardware.keymaster</name>
         <transport>hwbinder</transport>
         <version>3.0</version>
@@ -192,7 +203,7 @@
     <hal format="hidl">
         <name>android.hardware.nfc</name>
         <transport>hwbinder</transport>
-        <version>1.0</version>
+        <version>1.1</version>
         <interface>
             <name>INfc</name>
             <instance>default</instance>
@@ -210,7 +221,7 @@
     <hal format="hidl">
         <name>android.hardware.power</name>
         <transport>hwbinder</transport>
-        <version>1.1</version>
+        <version>1.2</version>
         <interface>
             <name>IPower</name>
             <instance>default</instance>
@@ -259,7 +270,7 @@
     <hal format="hidl">
         <name>android.hardware.soundtrigger</name>
         <transport>hwbinder</transport>
-        <version>2.0</version>
+        <version>2.1</version>
         <interface>
             <name>ISoundTriggerHw</name>
             <instance>default</instance>
@@ -302,9 +313,18 @@
         </interface>
     </hal>
     <hal format="hidl">
+        <name>android.hardware.usb.gadget</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IUsbGadget</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
         <name>android.hardware.vibrator</name>
         <transport>hwbinder</transport>
-        <version>1.1</version>
+        <version>1.2</version>
         <interface>
             <name>IVibrator</name>
             <instance>default</instance>
@@ -331,34 +351,34 @@
     <hal format="hidl">
         <name>android.hardware.wifi</name>
         <transport>hwbinder</transport>
-        <version>1.1</version>
+        <version>1.2</version>
         <interface>
             <name>IWifi</name>
             <instance>default</instance>
         </interface>
     </hal>
     <hal format="hidl">
-        <name>android.hardware.wifi.supplicant</name>
+        <name>android.hardware.wifi.hostapd</name>
         <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
+            <name>IHostapd</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.wifi.supplicant</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
             <name>ISupplicant</name>
             <instance>default</instance>
         </interface>
     </hal>
     <hal format="hidl">
-        <name>android.hardware.wifi.offload</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IOffload</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
         <name>com.qualcomm.qti.ims.radio</name>
         <transport>hwbinder</transport>
-        <version>1.0</version>
+        <version>1.1</version>
         <interface>
             <name>IImsRadio</name>
             <instance>imsradio0</instance>
@@ -398,13 +418,11 @@
         <interface>
             <name>IQcRilAudio</name>
             <instance>slot1</instance>
-            <instance>slot2</instance>
         </interface>
     </hal>
     <hal format="hidl">
         <name>com.quicinc.cne.server</name>
         <transport>hwbinder</transport>
-        <impl level="generic"></impl>
         <version>1.0</version>
         <interface>
             <name>IServer</name>
@@ -414,20 +432,10 @@
     <hal format="hidl">
         <name>com.quicinc.cne.api</name>
         <transport>hwbinder</transport>
-        <impl level="generic"></impl>
         <version>1.0</version>
         <interface>
             <name>IApiService</name>
             <instance>cnd</instance>
         </interface>
     </hal>
-    <hal format="hidl">
-        <name>vendor.qti.atcmdfwd</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IAtCmdFwd</name>
-            <instance>AtCmdFwdService</instance>
-        </interface>
-    </hal>
 </manifest>
diff --git a/media_codecs_performance.xml b/media_codecs_performance.xml
index 7f1b254..d496f91 100644
--- a/media_codecs_performance.xml
+++ b/media_codecs_performance.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 The Android Open Source Project
+<!-- Copyright 2018 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,138 +14,148 @@
      limitations under the License.
 -->
 
-<!-- Generated file for wahoo using measurements between OPM1.170815.001 and OPM1.170912.002 -->
+<!-- Generated file for wahoo using measurements between PPR1.180405.004 and PPR1.180514.002 -->
 <MediaCodecs>
-    <!-- Measurements between OPD1.170804.003 and OPM1.170908.002 -->
     <Encoders>
         <MediaCodec name="OMX.qcom.video.encoder.h263" type="video/3gpp" update="true">
-            <Limit name="measured-frame-rate-176x144" range="390-390" /> <!-- N=228 v98%=1.2 -->
-            <Limit name="measured-frame-rate-352x288" range="416-424" /> <!-- N=228 v98%=1.2 -->
+            <!-- measured 98%:189-648 med:213/238 FLAKY(107 - 648 < mx=649.8) -->
+            <Limit name="measured-frame-rate-176x144" range="213-324" /> <!-- N=270 v98%=1.9 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-352x288" range="289-289" /> <!-- N=260 v98%=1.4 -->
         </MediaCodec>
         <MediaCodec name="OMX.qcom.video.encoder.avc" type="video/avc" update="true">
-            <Limit name="measured-frame-rate-320x240" range="427-431" /> <!-- N=228 v98%=1.2 -->
-            <Limit name="measured-frame-rate-720x480" range="168-168" /> <!-- N=228 v98%=1.2 -->
-            <Limit name="measured-frame-rate-1280x720" range="88-88" /> <!-- N=226 v98%=1.1 -->
-            <Limit name="measured-frame-rate-1920x1080" range="31-31" /> <!-- N=228 v98%=1.2 -->
+            <Limit name="measured-frame-rate-320x240" range="280-280" /> <!-- N=264 v98%=1.3 -->
+            <Limit name="measured-frame-rate-720x480" range="93-109" /> <!-- N=258 v98%=1.6 -->
+            <Limit name="measured-frame-rate-1280x720" range="87-87" /> <!-- N=266 v98%=1.3 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-1920x1080" range="33-33" /> <!-- N=258 v98%=1.4 -->
         </MediaCodec>
         <MediaCodec name="OMX.qcom.video.encoder.hevc" type="video/hevc" update="true">
-            <Limit name="measured-frame-rate-320x240" range="444-452" /> <!-- N=228 v98%=1.2 -->
-            <Limit name="measured-frame-rate-720x480" range="176-176" /> <!-- N=228 v98%=1.2 -->
-            <Limit name="measured-frame-rate-1280x720" range="124-125" /> <!-- N=228 v98%=1.1 -->
-            <Limit name="measured-frame-rate-1920x1080" range="52-52" /> <!-- N=228 v98%=1.2 -->
-            <Limit name="measured-frame-rate-3840x2160" range="21-21" /> <!-- N=228 v98%=1.3 -->
+            <Limit name="measured-frame-rate-320x240" range="329-329" /> <!-- N=262 v98%=1.3 -->
+            <!-- measured 98%:81-197 med:96/96 FLAKY(48 - 198 < mx=201.0) -->
+            <Limit name="measured-frame-rate-720x480" range="96-99" /> <!-- N=262 v98%=1.6 -->
+            <Limit name="measured-frame-rate-1280x720" range="125-125" /> <!-- N=262 v98%=1.1 -->
+            <Limit name="measured-frame-rate-1920x1080" range="49-49" /> <!-- N=250 v98%=1.2 -->
+            <Limit name="measured-frame-rate-3840x2160" range="17-20" /> <!-- N=262 v98%=1.3 (PPR1.180405.002-) -->
         </MediaCodec>
         <MediaCodec name="OMX.qcom.video.encoder.mpeg4" type="video/mp4v-es" update="true">
-            <Limit name="measured-frame-rate-176x144" range="384-384" /> <!-- N=228 v98%=1.2 -->
-            <Limit name="measured-frame-rate-352x288" range="387-399" /> <!-- N=228 v98%=1.2 -->
-            <!-- measured 98%:80-244 med:217/209 FLAKY(mn=73.3 < 80 - 418) -->
-            <Limit name="measured-frame-rate-640x480" range="146-209" /> <!-- TWEAKED N=228 v98%=1.7 -->
+            <!-- measured 98%:187-644 med:237/281 FLAKY(119 - 644 < mx=644.3) -->
+            <Limit name="measured-frame-rate-176x144" range="237-322" /> <!-- N=258 v98%=1.9 -->
+            <Limit name="measured-frame-rate-352x288" range="293-320" /> <!-- N=254 v98%=1.4 (PPR1.180405.002-) -->
+            <!-- measured 98%:78-257 med:225/225 FLAKY(mn=70.1 < 78 - 450) -->
+            <Limit name="measured-frame-rate-640x480" range="155-225" /> <!-- N=250 v98%=1.8 -->
         </MediaCodec>
         <MediaCodec name="OMX.qcom.video.encoder.vp8" type="video/x-vnd.on2.vp8" update="true">
-            <Limit name="measured-frame-rate-320x180" range="335-335" /> <!-- N=228 v98%=1.2 -->
-            <Limit name="measured-frame-rate-640x360" range="262-267" /> <!-- N=228 v98%=1.2 -->
-            <Limit name="measured-frame-rate-1280x720" range="82-82" /> <!-- N=228 v98%=1.1 -->
-            <Limit name="measured-frame-rate-1920x1080" range="32-32" /> <!-- N=228 v98%=1.3 -->
+            <!-- measured 93%:140-368 med:205/199 FLAKY(96 - 416 < mx=491.4) -->
+            <Limit name="measured-frame-rate-320x180" range="192-208" /> <!-- N=278 v93%=1.6 -->
+            <Limit name="measured-frame-rate-640x360" range="250-250" /> <!-- N=268 v98%=1.2 -->
+            <Limit name="measured-frame-rate-1280x720" range="87-87" /> <!-- N=254 v98%=1.1 -->
+            <Limit name="measured-frame-rate-1920x1080" range="34-34" /> <!-- N=254 v98%=1.3 (PPR1.180405.002-) -->
         </MediaCodec>
+        <!-- Measurements between PPR1.180405.002 and PPR1.180514.002 -->
         <MediaCodec name="OMX.google.h263.encoder" type="video/3gpp" update="true">
-            <!-- measured 98%:179-448 med:322/323 FLAKY(mn=143.6 < 161 - 646) -->
-            <Limit name="measured-frame-rate-176x144" range="287-323" /> <!-- TWEAKED N=228 v98%=1.6 -->
+            <!-- measured 98%:155-917 med:364/365 FLAKY(mn=132.7 < 150 - 956) variance:2.4 -->
+            <Limit name="measured-frame-rate-176x144" range="300-478" /> <!-- N=280 -->
         </MediaCodec>
         <MediaCodec name="OMX.google.h264.encoder" type="video/avc" update="true">
-            <!-- measured 97%:215-350 med:304/304 FLAKY(mn=83.7 < 152 - 608) -->
-            <Limit name="measured-frame-rate-320x240" range="167-304" /> <!-- TWEAKED N=224 v97%=1.3 -->
-            <!-- measured 98%:71-122 med:110/110 FLAKY(mn=46.8 < 55 - 220) -->
-            <Limit name="measured-frame-rate-720x480" range="93-110" /> <!-- TWEAKED N=228 v98%=1.3 -->
-            <!-- measured 98%:50-73 med:64/64 FLAKY(mn=24.1 < 32 - 128) -->
-            <Limit name="measured-frame-rate-1280x720" range="48-64" /> <!-- TWEAKED N=226 v98%=1.2 -->
-            <!-- measured 98%:21-37 med:29/29 FLAKY(mn=12.1 < 15 - 58) -->
-            <Limit name="measured-frame-rate-1920x1080" range="24-29" /> <!-- TWEAKED N=228 v98%=1.3 -->
+            <!-- measured 98%:79-351 med:278/277 FLAKY(mn=73.9 < 78 - 554) variance:2.1 -->
+            <Limit name="measured-frame-rate-320x240" range="155-277" /> <!-- N=244 -->
+            <!-- measured 98%:47-118 med:95/94 FLAKY(mn=45.2 < 46 - 188) -->
+            <Limit name="measured-frame-rate-720x480" range="90-94" /> <!-- TWEAKED N=258 v98%=1.6 (PPR1.180405.002-) -->
+            <!-- measured 98%:12-72 med:54/54 FLAKY(mn=12.1 < 13 - 108) variance:2.4 -->
+            <Limit name="measured-frame-rate-1280x720" range="25-54" /> <!-- N=274 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-1920x1080" range="24-27" /> <!-- N=256 v98%=1.4 -->
         </MediaCodec>
+        <!-- Measurements between PPR1.180405.002 and PPR1.180514.002 -->
         <MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es" update="true">
-            <Limit name="measured-frame-rate-176x144" range="341-341" /> <!-- N=228 v98%=1.4 -->
+            <!-- measured 98%:150-1017 med:412/406 FLAKY(mn=126.9 < 147 - 1062) variance:2.6 -->
+            <Limit name="measured-frame-rate-176x144" range="253-531" /> <!-- TWEAKED N=270 -->
         </MediaCodec>
         <MediaCodec name="OMX.google.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
-            <Limit name="measured-frame-rate-320x180" range="73-73" /> <!-- N=228 v98%=1.4 -->
-            <Limit name="measured-frame-rate-640x360" range="45-45" /> <!-- N=226 v98%=1.2 -->
-            <Limit name="measured-frame-rate-1280x720" range="36-36" /> <!-- N=228 v98%=1.1 -->
-            <Limit name="measured-frame-rate-1920x1080" range="23-23" /> <!-- N=228 v98%=1.1 -->
-        </MediaCodec>
-        <!-- Measurements between OPM1.170809.002 and OPM1.170908.002 -->
-        <MediaCodec name="OMX.google.vp9.encoder" type="video/x-vnd.on2.vp9" update="true">
-            <Limit name="measured-frame-rate-320x180" range="205-205" /> <!-- N=102 v98%=1.0 -->
-            <Limit name="measured-frame-rate-640x360" range="68-68" /> <!-- N=102 v98%=1.0 -->
-            <Limit name="measured-frame-rate-1280x720" range="17-17" /> <!-- N=102 v98%=1.1 -->
+            <!-- measured 98%:38-97 med:75/75 FLAKY(mn=23.9 < 38 - 150) -->
+            <Limit name="measured-frame-rate-320x180" range="57-75" /> <!-- TWEAKED N=252 v98%=1.6 -->
+            <Limit name="measured-frame-rate-640x360" range="43-43" /> <!-- N=258 v98%=1.4 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-1280x720" range="17-17" /> <!-- N=300 v98%=1.3 -->
+            <Limit name="measured-frame-rate-1920x1080" range="12-12" /> <!-- N=254 v98%=1.2 (PPR1.180405.002-) -->
         </MediaCodec>
     </Encoders>
     <Decoders>
         <MediaCodec name="OMX.qcom.video.decoder.h263" type="video/3gpp" update="true">
-            <Limit name="measured-frame-rate-176x144" range="505-507" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-352x288" range="470-472" /> <!-- N=162 v98%=1.3 -->
+            <!-- measured 90%:359-764 med:368/368 FLAKY(184 - 808 < mx=1036.3) -->
+            <Limit name="measured-frame-rate-176x144" range="368-404" /> <!-- N=242 v90%=1.5 -->
+            <Limit name="measured-frame-rate-352x288" range="362-608" /> <!-- N=236 v98%=1.7 -->
         </MediaCodec>
         <MediaCodec name="OMX.qcom.video.decoder.avc" type="video/avc" update="true">
-            <Limit name="measured-frame-rate-320x240" range="342-342" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-720x480" range="303-303" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-1280x720" range="247-247" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-1920x1080" range="148-148" /> <!-- N=162 v98%=1.2 -->
+            <Limit name="measured-frame-rate-320x240" range="243-243" /> <!-- N=192 v98%=1.4 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-720x480" range="228-249" /> <!-- N=242 v98%=1.5 -->
+            <Limit name="measured-frame-rate-1280x720" range="212-213" /> <!-- N=236 v98%=1.3 -->
+            <Limit name="measured-frame-rate-1920x1080" range="142-142" /> <!-- N=192 v98%=1.1 (PPR1.180405.002-) -->
         </MediaCodec>
         <MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" update="true">
-            <Limit name="measured-frame-rate-352x288" range="346-346" /> <!-- N=162 v98%=1.4 -->
-            <Limit name="measured-frame-rate-640x360" range="326-326" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-720x480" range="311-311" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-1280x720" range="267-267" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-1920x1080" range="258-258" /> <!-- N=162 v98%=1.0 -->
-            <Limit name="measured-frame-rate-3840x2160" range="71-71" /> <!-- N=162 v98%=1.0 -->
+            <!-- measured 98%:269-691 med:281/281 FLAKY(141 - 692 < mx=702.7) -->
+            <Limit name="measured-frame-rate-352x288" range="281-347" /> <!-- TWEAKED N=220 v98%=1.6 -->
+            <!-- measured 98%:251-506 med:262/262 FLAKY(131 - 524 < mx=526.0) -->
+            <Limit name="measured-frame-rate-640x360" range="262-264" /> <!-- TWEAKED N=192 v98%=1.4 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-720x480" range="251-251" /> <!-- N=192 v98%=1.4 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-1280x720" range="233-233" /> <!-- N=164 v98%=1.2 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-1920x1080" range="243-243" /> <!-- N=242 v98%=1.1 -->
+            <Limit name="measured-frame-rate-3840x2160" range="71-71" /> <!-- N=192 v98%=1.0 (PPR1.180405.002-) -->
         </MediaCodec>
         <MediaCodec name="OMX.qcom.video.decoder.mpeg4" type="video/mp4v-es" update="true">
-            <Limit name="measured-frame-rate-176x144" range="459-459" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-480x360" range="433-434" /> <!-- N=164 v98%=1.4 -->
+            <Limit name="measured-frame-rate-176x144" range="354-628" /> <!-- N=236 v98%=1.7 -->
+            <!-- measured 98%:331-944 med:338/338 FLAKY(169 - 944 < mx=952.4) -->
+            <Limit name="measured-frame-rate-480x360" range="338-472" /> <!-- N=242 v98%=1.7 -->
         </MediaCodec>
         <MediaCodec name="OMX.qcom.video.decoder.vp8" type="video/x-vnd.on2.vp8" update="true">
-            <Limit name="measured-frame-rate-320x180" range="418-419" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-640x360" range="414-414" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-1280x720" range="309-309" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-1920x1080" range="145-145" /> <!-- N=162 v98%=1.2 -->
+            <!-- measured 98%:319-910 med:328/327 FLAKY(164 - 910 < mx=910.7) -->
+            <Limit name="measured-frame-rate-320x180" range="327-456" /> <!-- TWEAKED N=219 v98%=1.7 -->
+            <!-- measured 98%:316-738 med:331/331 FLAKY(166 - 738 < mx=738.6) -->
+            <Limit name="measured-frame-rate-640x360" range="331-369" /> <!-- N=242 v98%=1.5 -->
+            <Limit name="measured-frame-rate-1280x720" range="286-286" /> <!-- N=236 v98%=1.1 -->
+            <Limit name="measured-frame-rate-1920x1080" range="143-143" /> <!-- N=192 v98%=1.0 (PPR1.180405.002-) -->
         </MediaCodec>
         <MediaCodec name="OMX.qcom.video.decoder.vp9" type="video/x-vnd.on2.vp9" update="true">
-            <Limit name="measured-frame-rate-320x180" range="342-342" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-640x360" range="335-335" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-1280x720" range="271-271" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-1920x1080" range="153-153" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-3840x2160" range="36-36" /> <!-- N=162 v98%=1.3 -->
+            <Limit name="measured-frame-rate-320x180" range="249-446" /> <!-- N=236 v98%=1.7 -->
+            <Limit name="measured-frame-rate-640x360" range="248-390" /> <!-- N=236 v98%=1.6 -->
+            <Limit name="measured-frame-rate-1280x720" range="256-256" /> <!-- N=242 v98%=1.1 -->
+            <Limit name="measured-frame-rate-1920x1080" range="151-151" /> <!-- N=164 v98%=1.0 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-3840x2160" range="36-36" /> <!-- N=236 v98%=1.0 -->
         </MediaCodec>
+        <!-- Measurements between PPR1.180405.002 and PPR1.180514.002 -->
         <MediaCodec name="OMX.google.h263.decoder" type="video/3gpp" update="true">
-            <Limit name="measured-frame-rate-176x144" range="150-150" /> <!-- N=162 v98%=1.3 -->
+            <!-- measured 98%:141-1306 med:155/156 FLAKY(78 - 682 < mx=1328.0) RG.VARIANCE:2.1 -->
+            <Limit name="measured-frame-rate-176x144" range="155-341" /> <!-- N=192 v98%=3.0 -->
         </MediaCodec>
         <MediaCodec name="OMX.google.h264.decoder" type="video/avc" update="true">
-            <!-- measured 98%:130-275 med:158/158 FLAKY(79 - 316 < mx=637.8) -->
-            <Limit name="measured-frame-rate-320x240" range="158-319" /> <!-- TWEAKED N=161 v98%=1.5 -->
-            <Limit name="measured-frame-rate-720x480" range="56-56" /> <!-- N=162 v98%=1.3 -->
-            <Limit name="measured-frame-rate-1280x720" range="28-28" /> <!-- N=162 v98%=1.5 -->
-            <Limit name="measured-frame-rate-1920x1080" range="15-15" /> <!-- N=162 v98%=1.5 -->
+            <!-- measured 98%:92-723 med:353/336 FLAKY(77 - 672 < mx=744.6) variance:2.8 -->
+            <Limit name="measured-frame-rate-320x240" range="170-373" /> <!-- TWEAKED N=218 -->
+            <!-- measured 98%:38-153 med:51/50 FLAKY(25 - 154 < mx=167.4) -->
+            <Limit name="measured-frame-rate-720x480" range="50-77" /> <!-- N=168 v98%=2.0 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-1280x720" range="28-38" /> <!-- N=242 v98%=1.7 -->
+            <Limit name="measured-frame-rate-1920x1080" range="15-15" /> <!-- N=164 v98%=1.4 (PPR1.180405.002-) -->
         </MediaCodec>
         <MediaCodec name="OMX.google.hevc.decoder" type="video/hevc" update="true">
-            <Limit name="measured-frame-rate-352x288" range="631-631" /> <!-- N=158 v98%=1.2 -->
-            <Limit name="measured-frame-rate-640x360" range="250-250" /> <!-- N=153 v98%=1.2 -->
-            <Limit name="measured-frame-rate-720x480" range="218-218" /> <!-- N=154 v98%=1.3 -->
-            <Limit name="measured-frame-rate-1280x720" range="102-103" /> <!-- N=159 v98%=1.3 -->
-            <!-- measured 98%:43-66 med:60/60 FLAKY(mn=0.0 < 30 - 120) -->
-            <Limit name="measured-frame-rate-1920x1080" range="60-60" /> <!-- N=160 v98%=1.2 -->
+            <Limit name="measured-frame-rate-352x288" range="625-626" /> <!-- N=177 v98%=1.1 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-640x360" range="289-289" /> <!-- N=188 v98%=1.3 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-720x480" range="227-227" /> <!-- N=221 v98%=1.3 -->
+            <Limit name="measured-frame-rate-1280x720" range="84-84" /> <!-- N=188 v98%=1.3 (PPR1.180405.002-) -->
+            <!-- measured 98%:40-59 med:46/46 FLAKY(mn=0.0 < 23 - 92) -->
+            <Limit name="measured-frame-rate-1920x1080" range="46-46" /> <!-- N=230 v98%=1.2 -->
         </MediaCodec>
+        <!-- Measurements between PPR1.180405.002 and PPR1.180514.002 -->
         <MediaCodec name="OMX.google.mpeg4.decoder" type="video/mp4v-es" update="true">
-            <Limit name="measured-frame-rate-176x144" range="177-177" /> <!-- N=162 v98%=1.4 -->
+            <!-- measured 98%:172-1548 med:187/187 FLAKY(94 - 822 < mx=1579.8) RG.VARIANCE:2.1 -->
+            <Limit name="measured-frame-rate-176x144" range="187-411" /> <!-- N=192 v98%=3.0 -->
         </MediaCodec>
         <MediaCodec name="OMX.google.vp8.decoder" type="video/x-vnd.on2.vp8" update="true">
-            <!-- measured 98%:432-1070 med:504/505 FLAKY(252 - 1070 < mx=1079.9) -->
-            <Limit name="measured-frame-rate-320x180" range="504-540" /> <!-- TWEAKED N=162 v98%=1.6 -->
-            <Limit name="measured-frame-rate-640x360" range="415-415" /> <!-- N=162 v98%=1.1 -->
-            <Limit name="measured-frame-rate-1280x720" range="95-95" /> <!-- N=162 v98%=1.1 -->
-            <Limit name="measured-frame-rate-1920x1080" range="37-37" /> <!-- N=162 v98%=1.1 -->
+            <Limit name="measured-frame-rate-320x180" range="579-754" /> <!-- N=164 v98%=1.8 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-640x360" range="402-402" /> <!-- N=236 v98%=1.0 -->
+            <Limit name="measured-frame-rate-1920x1080" range="36-36" /> <!-- N=220 v98%=1.0 -->
         </MediaCodec>
         <MediaCodec name="OMX.google.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
-            <Limit name="measured-frame-rate-320x180" range="468-470" /> <!-- N=162 v98%=1.4 -->
-            <Limit name="measured-frame-rate-640x360" range="377-379" /> <!-- N=162 v98%=1.1 -->
-            <Limit name="measured-frame-rate-1280x720" range="113-113" /> <!-- N=162 v98%=1.1 -->
-            <Limit name="measured-frame-rate-1920x1080" range="68-68" /> <!-- N=162 v98%=1.1 -->
+            <Limit name="measured-frame-rate-320x180" range="855-855" /> <!-- N=236 v98%=1.3 -->
+            <!-- measured 98%:219-421 med:334/333 FLAKY(mn=160.7 < 167 - 666) -->
+            <Limit name="measured-frame-rate-640x360" range="321-333" /> <!-- TWEAKED N=164 v98%=1.4 (PPR1.180405.002-) -->
+            <Limit name="measured-frame-rate-1280x720" range="121-121" /> <!-- N=219 v98%=1.1 -->
+            <Limit name="measured-frame-rate-1920x1080" range="67-67" /> <!-- N=236 v98%=1.1 -->
         </MediaCodec>
     </Decoders>
 </MediaCodecs>
diff --git a/nfc/libnfc-brcm.conf b/nfc/libnfc-brcm.conf
deleted file mode 100644
index 05cb160..0000000
--- a/nfc/libnfc-brcm.conf
+++ /dev/null
@@ -1,407 +0,0 @@
-###################### Start of libnfc-brcm.conf #######################
-
-###############################################################################
-# Application options
-APPL_TRACE_LEVEL=0x01
-PROTOCOL_TRACE_LEVEL=0x00000000
-
-###############################################################################
-# performance measurement
-# Change this setting to control how often USERIAL log the performance (throughput)
-# data on read/write/poll
-# defailt is to log performance dara for every 100 read or write
-#REPORT_PERFORMANCE_MEASURE=100
-
-###############################################################################
-# File used for NFA storage
-NFA_STORAGE="/data/nfc"
-
-###############################################################################
-# Snooze Mode Settings
-#
-#  By default snooze mode is enabled.  Set SNOOZE_MODE_CFG byte[0] to 0
-#  to disable.
-#
-#  If SNOOZE_MODE_CFG is not provided, the default settings are used:
-#  They are as follows:
-#       8             Sleep Mode (0=Disabled 1=UART 8=SPI/I2C)
-#       0             Idle Threshold Host
-#       0             Idle Threshold HC
-#       0             NFC Wake active mode (0=ActiveLow 1=ActiveHigh)
-#       1             Host Wake active mode (0=ActiveLow 1=ActiveHigh)
-#
-#SNOOZE_MODE_CFG={08:00:00:00:01}
-
-###############################################################################
-# Insert a delay in milliseconds after NFC_WAKE and before write to NFCC
-#NFC_WAKE_DELAY=20
-
-###############################################################################
-# Various Delay settings (in ms) used in USERIAL
-#  POWER_ON_DELAY
-#    Delay after turning on chip, before writing to transport (default 300)
-#  PRE_POWER_OFF_DELAY
-#    Delay after deasserting NFC-Wake before turn off chip (default 0)
-#  POST_POWER_OFF_DELAY
-#    Delay after turning off chip, before USERIAL_close returns (default 0)
-#
-#POWER_ON_DELAY=300
-#PRE_POWER_OFF_DELAY=0
-#POST_POWER_OFF_DELAY=0
-
-###############################################################################
-# Maximum time (ms) to wait for RESET NTF after setting REG_PU to high
-# The default is 1000.
-#NFCC_ENABLE_TIMEOUT=0
-
-###############################################################################
-# LPTD mode configuration
-#  byte[0] is the length of the remaining bytes in this value
-#     if set to 0, LPTD params will NOT be sent to NFCC (i.e. disabled).
-#  byte[1] is the param id it should be set to B9.
-#  byte[2] is the length of the LPTD parameters
-#  byte[3] indicates if LPTD is enabled
-#     if set to 0, LPTD will be disabled (parameters will still be sent).
-#  byte[4-n] are the LPTD parameters.
-#  By default, LPTD is enabled and default settings are used.
-#  See nfc_hal_dm_cfg.c for defaults
-#LPTD_CFG={23:B9:21:01:02:FF:FF:04:A0:0F:40:00:80:02:02:10:00:00:00:31:0C:30:00:00:00:00:00:00:00:00:00:00:00:00:00:00}
-
-###############################################################################
-# Startup Configuration (100 bytes maximum)
-#
-# For the 0xCA parameter, byte[9] (marked by 'AA') is for UICC0, and byte[10] (marked by BB) is
-#    for UICC1.  The values are defined as:
-#   0 : UICCx only supports ISO_DEP in low power mode.
-#   2 : UICCx only supports Mifare in low power mode.
-#   3 : UICCx supports both ISO_DEP and Mifare in low power mode.
-#
-#                                                                          AA BB
-#NFA_DM_START_UP_CFG={1F:CB:01:01:A5:01:01:CA:14:00:00:00:00:06:E8:03:00:00:00:00:00:00:00:00:00:00:00:00:00:80:01:01}
-
-###############################################################################
-# Startup Vendor Specific Configuration (100 bytes maximum);
-#  byte[0] TLV total len = 0x5
-#  byte[1] NCI_MTS_CMD|NCI_GID_PROP = 0x2f
-#  byte[2] NCI_MSG_FRAME_LOG = 0x9
-#  byte[3] 2
-#  byte[4] 0=turn off RF frame logging; 1=turn on
-#  byte[5] 0=turn off SWP frame logging; 1=turn on
-#  NFA_DM_START_UP_VSC_CFG={05:2F:09:02:01:01}
-
-###############################################################################
-# Antenna Configuration - This data is used when setting 0xC8 config item
-# at startup (before discovery is started).  If not used, no value is sent.
-#
-# The settings for this value are documented here:
-# http://wcgbu.broadcom.com/wpan/PM/Project%20Document%20Library/bcm20791B0/
-#   Design/Doc/PHY%20register%20settings/BCM20791-B2-1027-02_PHY_Recommended_Reg_Settings.xlsx
-# This document is maintained by Paul Forshaw.
-#
-# The values marked as ?? should be tweaked per antenna or customer/app:
-# {20:C8:1E:06:??:00:??:??:??:00:??:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:??:01:00:00:40:04}
-# array[0] = 0x20 is length of the payload from array[1] to the end
-# array[1] = 0xC8 is PREINIT_DSP_CFG
-#PREINIT_DSP_CFG={20:C8:1E:06:1F:00:0F:03:3C:00:04:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:48:01:00:00:40:04}
-
-###############################################################################
-# Configure crystal frequency when internal LPO can't detect the frequency.
-#XTAL_FREQUENCY=0
-###############################################################################
-# Configure the default Destination Gate used by HCI (the default is 4, which
-# is the ETSI loopback gate.
-NFA_HCI_DEFAULT_DEST_GATE=0xF0
-
-###############################################################################
-# Configure the single default SE to use.  The default is to use the first
-# SE that is detected by the stack.  This value might be used when the phone
-# supports multiple SE (e.g. 0xF3 and 0xF4) but you want to force it to use
-# one of them (e.g. 0xF4).
-#ACTIVE_SE=0xF3
-
-###############################################################################
-# Configure the default NfcA/IsoDep techology and protocol route. Can be
-# either a secure element (e.g. 0xF4) or the host (0x00)
-#DEFAULT_ISODEP_ROUTE=0x00
-
-###############################################################################
-# Configure the NFC Extras to open and use a static pipe.  If the value is
-# not set or set to 0, then the default is use a dynamic pipe based on a
-# destination gate (see NFA_HCI_DEFAULT_DEST_GATE).  Note there is a value
-# for each UICC (where F3="UICC0" and F4="UICC1")
-#NFA_HCI_STATIC_PIPE_ID_F3=0x70
-#NFA_HCI_STATIC_PIPE_ID_01=0x19
-NFA_HCI_STATIC_PIPE_ID_C0=0x19
-###############################################################################
-# When disconnecting from Oberthur secure element, perform a warm-reset of
-# the secure element to deselect the applet.
-# The default hex value of the command is 0x3.  If this variable is undefined,
-# then this feature is not used.
-#OBERTHUR_WARM_RESET_COMMAND=0x03
-
-###############################################################################
-# Force UICC to only listen to the following technology(s).
-# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
-# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | NFA_TECHNOLOGY_MASK_F
-UICC_LISTEN_TECH_MASK=0x07
-
-###############################################################################
-# Force HOST listen feature enable or disable.
-# 0: Disable
-# 1: Enable
-HOST_LISTEN_ENABLE=0x01
-
-###############################################################################
-# Enabling/Disabling Forward functionality
-# Disable           0x00
-# Enable            0x01
-NXP_FWD_FUNCTIONALITY_ENABLE=0x01
-
-###############################################################################
-# Allow UICC to be powered off if there is no traffic.
-# Timeout is in ms. If set to 0, then UICC will not be powered off.
-#UICC_IDLE_TIMEOUT=30000
-UICC_IDLE_TIMEOUT=0
-
-###############################################################################
-# AID for Empty Select command
-# If specified, this AID will be substituted when an Empty SELECT command is
-# detected.  The first byte is the length of the AID.  Maximum length is 16.
-AID_FOR_EMPTY_SELECT={08:A0:00:00:01:51:00:00:00}
-###############################################################################
-# Maximum Number of Credits to be allowed by the NFCC
-#   This value overrides what the NFCC specifices allowing the host to have
-#   the control to work-around transport limitations.  If this value does
-#   not exist or is set to 0, the NFCC will provide the number of credits.
-MAX_RF_DATA_CREDITS=1
-
-###############################################################################
-# This setting allows you to disable registering the T4t Virtual SE that causes
-# the NFCC to send PPSE requests to the DH.
-# The default setting is enabled (i.e. T4t Virtual SE is registered).
-#REGISTER_VIRTUAL_SE=1
-
-###############################################################################
-# When screen is turned off, specify the desired power state of the controller.
-# 0: power-off-sleep state; DEFAULT
-# 1: full-power state
-# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used)
-SCREEN_OFF_POWER_STATE=1
-
-###############################################################################
-# Firmware patch file
-#  If the value is not set then patch download is disabled.
-#FW_PATCH="/vendor/firmware/bcm2079x_firmware.ncd"
-
-###############################################################################
-# Firmware pre-patch file (sent before the above patch file)
-#  If the value is not set then pre-patch is not used.
-#FW_PRE_PATCH="/vendor/firmware/bcm2079x_pre_firmware.ncd"
-
-###############################################################################
-# Firmware patch format
-#   1 = HCD
-#   2 = NCD (default)
-#NFA_CONFIG_FORMAT=2
-
-###############################################################################
-# SPD Debug mode
-#  If set to 1, any failure of downloading a patch will trigger a hard-stop
-#SPD_DEBUG=0
-
-###############################################################################
-# SPD Max Retry Count
-#  The number of attempts to download a patch before giving up (defualt is 3).
-#  Note, this resets after a power-cycle.
-#SPD_MAX_RETRY_COUNT=3
-
-###############################################################################
-# transport driver
-#
-# TRANSPORT_DRIVER=<driver>
-#
-#  where <driver> can be, for example:
-#    "/dev/ttyS"        (UART)
-#    "/dev/bcmi2cnfc"   (I2C)
-#    "hwtun"            (HW Tunnel)
-#    "/dev/bcmspinfc"   (SPI)
-#    "/dev/btusb0"      (BT USB)
-#TRANSPORT_DRIVER="/dev/bcm2079x-i2c"
-
-###############################################################################
-# power control driver
-# Specify a kernel driver that support ioctl commands to control NFC_EN and
-# NFC_WAKE gpio signals.
-#
-# POWER_CONTRL_DRIVER=<driver>
-#  where <driver> can be, for example:
-#    "/dev/nfcpower"
-#    "/dev/bcmi2cnfc"   (I2C)
-#    "/dev/bcmspinfc"   (SPI)
-#    i2c and spi driver may be used to control NFC_EN and NFC_WAKE signal
-#POWER_CONTROL_DRIVER="/dev/bcm2079x-i2c"
-
-###############################################################################
-# I2C transport driver options
-# Mako does not support 10-bit I2C addresses
-# Revert to 7-bit address
-#BCMI2CNFC_ADDRESS=0x77
-
-###############################################################################
-# I2C transport driver try to read multiple packets in read() if data is available
-# remove the comment below to enable this feature
-#READ_MULTIPLE_PACKETS=1
-
-###############################################################################
-# SPI transport driver options
-#SPI_NEGOTIATION={0A:F0:00:01:00:00:00:FF:FF:00:00}
-
-###############################################################################
-# UART transport driver options
-#
-# PORT=1,2,3,...
-# BAUD=115200, 19200, 9600, 4800,
-# DATABITS=8, 7, 6, 5
-# PARITY="even" | "odd" | "none"
-# STOPBITS="0" | "1" | "1.5" | "2"
-
-#UART_PORT=2
-#UART_BAUD=115200
-#UART_DATABITS=8
-#UART_PARITY="none"
-#UART_STOPBITS="1"
-
-###############################################################################
-# Insert a delay in microseconds per byte after a write to NFCC.
-# after writing a block of data to the NFCC, delay this an amopunt of time before
-# writing next block of data.  the delay is calculated as below
-#   NFC_WRITE_DELAY * (number of byte written) / 1000 milliseconds
-# e.g. after 259 bytes is written, delay (259 * 20 / 1000) 5 ms before next write
-#NFC_WRITE_DELAY=20
-
-###############################################################################
-# Maximum Number of Credits to be allowed by the NFCC
-#   This value overrides what the NFCC specifices allowing the host to have
-#   the control to work-around transport limitations.  If this value does
-#   not exist or is set to 0, the NFCC will provide the number of credits.
-MAX_RF_DATA_CREDITS=1
-
-###############################################################################
-# Default poll duration (in ms)
-#  The defualt is 500ms if not set (see nfc_target.h)
-#NFA_DM_DISC_DURATION_POLL=333
-###############################################################################
-# Antenna Configuration - This data is used when setting 0xC8 config item
-# at startup (before discovery is started).  If not used, no value is sent.
-#
-# The settings for this value are documented here:
-# http://wcgbu.broadcom.com/wpan/PM/Project%20Document%20Library/bcm20791B0/
-#   Design/Doc/PHY%20register%20settings/BCM20791-B2-1027-02_PHY_Recommended_Reg_Settings.xlsx
-# This document is maintained by Paul Forshaw.
-#
-# The values marked as ?? should be tweaked per antenna or customer/app:
-# {20:C8:1E:06:??:00:??:??:??:00:??:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:??:01:00:00:40:04}
-# array[0] = 0x20 is length of the payload from array[1] to the end
-# array[1] = 0xC8 is PREINIT_DSP_CFG
-#PREINIT_DSP_CFG={20:C8:1E:06:1F:00:0F:03:3C:00:04:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:48:01:00:00:40:04}
-
-###############################################################################
-# Choose the presence-check algorithm for type-4 tag.  If not defined, the default value is 1.
-# 0  NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm
-# 1  NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block
-# 2  NFA_RW_PRES_CHK_RESET; Deactivate to Sleep, then re-activate
-# 3  NFA_RW_PRES_CHK_RB_CH0; Type-4 tag protocol's ReadBinary command on channel 0
-# 4  NFA_RW_PRES_CHK_RB_CH3; Type-4 tag protocol's ReadBinary command on channel 3
-# 5  NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check
-#    command is sent waiting for rsp and ntf.
-PRESENCE_CHECK_ALGORITHM=5
-
-###############################################################################
-# Force tag polling for the following technology(s).
-# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
-# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
-#            NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
-#            NFA_TECHNOLOGY_MASK_B_PRIME | NFA_TECHNOLOGY_MASK_KOVIO |
-#            NFA_TECHNOLOGY_MASK_ACTIVE
-#
-# Notable bits:
-# NFA_TECHNOLOGY_MASK_A             0x01    /* NFC Technology A             */
-# NFA_TECHNOLOGY_MASK_B             0x02    /* NFC Technology B             */
-# NFA_TECHNOLOGY_MASK_F             0x04    /* NFC Technology F             */
-# NFA_TECHNOLOGY_MASK_ISO15693      0x08    /* Proprietary Technology       */
-# NFA_TECHNOLOGY_MASK_KOVIO         0x20    /* Proprietary Technology       */
-# NFA_TECHNOLOGY_MASK_ACTIVE        0x40    /* NFC Technology Active        */
-POLLING_TECH_MASK=0x6F
-
-###############################################################################
-# Force P2P to only listen for the following technology(s).
-# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
-# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F |
-# NFA_TECHNOLOGY_MASK_ACTIVE
-#
-# Notable bits:
-# NFA_TECHNOLOGY_MASK_A             0x01    /* NFC Technology A             */
-# NFA_TECHNOLOGY_MASK_F             0x04    /* NFC Technology F             */
-# NFA_TECHNOLOGY_MASK_ACTIVE         0x40    /* NFC Technology Active        */
-P2P_LISTEN_TECH_MASK=0x45
-
-PRESERVE_STORAGE=0x01
-
-###############################################################################
-# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h.
-# The value is set to 3 by default as it assumes we will discover 0xF2,
-# 0xF3, and 0xF4. If a platform will exclude and SE, this value can be reduced
-# so that the stack will not wait any longer than necessary.
-
-# Maximum EE supported number
-# NXP PN547C2 0x02
-# NXP PN65T 0x03
-# NXP PN548C2 0x02
-# NXP PN66T 0x03
-NFA_MAX_EE_SUPPORTED=0x02
-
-###############################################################################
-# NCI Hal Module name
-NCI_HAL_MODULE="nfc_nci"
-
-##############################################################################
-# Deactivate notification wait time out in seconds used in ETSI Reader mode
-# 0 - Infinite wait
-#NFA_DM_DISC_NTF_TIMEOUT=0
-
-###############################################################################
-# AID_MATCHING constants
-# AID_MATCHING_EXACT_ONLY 0x00
-# AID_MATCHING_EXACT_OR_PREFIX 0x01
-# AID_MATCHING_PREFIX_ONLY 0x02
-# AID_MATCHING_EXACT_OR_SUBSET_OR_PREFIX 0x03
-AID_MATCHING_MODE=0x03
-
-###############################################################################
-# Default Secure Element route id
-DEFAULT_OFFHOST_ROUTE=0x02
-
-###############################################################################
-# Vendor Specific Proprietary Protocol & Discovery Configuration
-# Set to 0xFF if unsupported
-#  byte[0] NCI_PROTOCOL_18092_ACTIVE
-#  byte[1] NCI_PROTOCOL_B_PRIME
-#  byte[2] NCI_PROTOCOL_DUAL
-#  byte[3] NCI_PROTOCOL_15693
-#  byte[4] NCI_PROTOCOL_KOVIO
-#  byte[5] NCI_PROTOCOL_MIFARE
-#  byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO
-#  byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME
-#  byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME
-NFA_PROPRIETARY_CFG={05:FF:FF:06:81:80:70:FF:FF}
-
-###############################################################################
-# Bail out mode
-#  If set to 1, NFCC is using bail out mode for either Type A or Type B poll.
-NFA_POLL_BAIL_OUT_MODE=0x01
-###############################################################################
-# Enable/Disable Block Route feature.
-# Block Route will restrict routing to first matched rule
-# Block Route enable   0x01
-# Block Route disable  0x00
-NFA_BLOCK_ROUTE=0x00
diff --git a/nfc/libnfc-nci.conf b/nfc/libnfc-nci.conf
new file mode 100644
index 0000000..3db7084
--- /dev/null
+++ b/nfc/libnfc-nci.conf
@@ -0,0 +1,77 @@
+###############################################################################
+# Application options
+NFC_DEBUG_ENABLED=0
+
+###############################################################################
+# File used for NFA storage
+NFA_STORAGE="/data/nfc"
+
+###############################################################################
+# Force UICC to only listen to the following technology(s).
+# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
+# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | NFA_TECHNOLOGY_MASK_F
+UICC_LISTEN_TECH_MASK=0x07
+
+###############################################################################
+# AID for Empty Select command
+# If specified, this AID will be substituted when an Empty SELECT command is
+# detected.  The first byte is the length of the AID.  Maximum length is 16.
+AID_FOR_EMPTY_SELECT={08:A0:00:00:01:51:00:00:00}
+
+###############################################################################
+# When screen is turned off, specify the desired power state of the controller.
+# 0: power-off-sleep state; DEFAULT
+# 1: full-power state
+# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used)
+SCREEN_OFF_POWER_STATE=1
+
+###############################################################################
+# Force tag polling for the following technology(s).
+# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
+# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
+#            NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
+#            NFA_TECHNOLOGY_MASK_B_PRIME | NFA_TECHNOLOGY_MASK_KOVIO |
+#            NFA_TECHNOLOGY_MASK_ACTIVE
+#
+# Notable bits:
+# NFA_TECHNOLOGY_MASK_A             0x01    /* NFC Technology A             */
+# NFA_TECHNOLOGY_MASK_B             0x02    /* NFC Technology B             */
+# NFA_TECHNOLOGY_MASK_F             0x04    /* NFC Technology F             */
+# NFA_TECHNOLOGY_MASK_ISO15693      0x08    /* Proprietary Technology       */
+# NFA_TECHNOLOGY_MASK_KOVIO         0x20    /* Proprietary Technology       */
+# NFA_TECHNOLOGY_MASK_ACTIVE        0x40    /* NFC Technology Active        */
+POLLING_TECH_MASK=0x6F
+
+###############################################################################
+# Force P2P to only listen for the following technology(s).
+# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
+# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F |
+# NFA_TECHNOLOGY_MASK_ACTIVE
+#
+# Notable bits:
+# NFA_TECHNOLOGY_MASK_A             0x01    /* NFC Technology A             */
+# NFA_TECHNOLOGY_MASK_F             0x04    /* NFC Technology F             */
+# NFA_TECHNOLOGY_MASK_ACTIVE         0x40    /* NFC Technology Active        */
+P2P_LISTEN_TECH_MASK=0x45
+
+PRESERVE_STORAGE=0x01
+
+###############################################################################
+# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h.
+# The value is set to 3 by default as it assumes we will discover 0xF2,
+# 0xF3, and 0xF4. If a platform will exclude and SE, this value can be reduced
+# so that the stack will not wait any longer than necessary.
+# Maximum EE supported number
+# NXP PN547C2 0x02
+# NXP PN65T 0x03
+# NXP PN548C2 0x02
+# NXP PN66T 0x03
+NFA_MAX_EE_SUPPORTED=0x02
+
+###############################################################################
+# AID_MATCHING constants
+# AID_MATCHING_EXACT_ONLY 0x00
+# AID_MATCHING_EXACT_OR_PREFIX 0x01
+# AID_MATCHING_PREFIX_ONLY 0x02
+# AID_MATCHING_EXACT_OR_SUBSET_OR_PREFIX 0x03
+AID_MATCHING_MODE=0x03
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index fd3a0ad..5f42508 100755
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -66,6 +66,13 @@
     <!-- Enable Night display, which requires HWC 2.0. -->
     <bool name="config_nightDisplayAvailable">true</bool>
 
+    <!-- List supported color modes. -->
+    <integer-array name="config_availableColorModes">
+        <item>0</item> <!-- COLOR_MODE_NATURAL -->
+        <item>1</item> <!-- COLOR_MODE_BOOSTED -->
+        <item>2</item> <!-- COLOR_MODE_SATURATED -->
+    </integer-array>
+
     <!-- Boolean indicating whether the HWC setColorTransform function can be performed efficiently
          in hardware. -->
     <bool name="config_setColorTransformAccelerated">true</bool>
@@ -229,7 +236,7 @@
 
     <!-- If true, the doze component is not started until after the screen has been turned off
          and the screen off animation has been performed. -->
-    <bool name="config_dozeAfterScreenOff">true</bool>
+    <bool name="config_dozeAfterScreenOffByDefault">true</bool>
 
     <!-- Doze: should the TYPE_PICK_UP_GESTURE sensor be used as a pulse signal. -->
     <bool name="config_dozePulsePickup">true</bool>
@@ -243,9 +250,6 @@
     <!-- Whether the always on display mode is available. -->
     <bool name="config_dozeAlwaysOnDisplayAvailable">true</bool>
 
-    <!-- Whether the display blanks itself when transition from a doze to a non-doze state -->
-    <bool name="config_displayBlanksAfterDoze">true</bool>
-
     <!-- True if the display hardware only has brightness buckets rather than a full range of
          backlight values -->
     <bool name="config_displayBrightnessBucketsInDoze">true</bool>
@@ -298,18 +302,6 @@
          rmem_min,rmem_def,rmem_max,wmem_min,wmem_def,wmem_max -->
     <string name="config_wifi_tcp_buffers" translatable="false">524288,2097152,8388608,262144,524288,4194304</string>
 
-    <!-- Idle Receive current for wifi radio. 0 by default-->
-    <integer translatable="false" name="config_wifi_idle_receive_cur_ma">1</integer>
-
-    <!-- Rx current for wifi radio. 0 by default-->
-    <integer translatable="false" name="config_wifi_active_rx_cur_ma">100</integer>
-
-    <!-- Tx current for wifi radio. 0 by default-->
-    <integer translatable="false" name="config_wifi_tx_cur_ma">250</integer>
-
-    <!-- Operating volatage for wifi radio. 0 by default-->
-    <integer translatable="false" name="config_wifi_operating_voltage_mv">3800</integer>
-
     <!-- Config SoftAP 2G channel list -->
     <string  translatable="false" name="config_wifi_framework_sap_2G_channel_list">6</string>
 
@@ -325,13 +317,13 @@
     <!-- Default list of files pinned by the Pinner Service -->
     <string-array translatable="false" name="config_defaultPinnerServiceFiles">
         <item>"/system/framework/arm64/boot-framework.oat"</item>
-        <item>"/system/framework/arm64/boot-framework.vdex"</item>
+        <item>"/system/framework/boot-framework.vdex"</item>
         <item>"/system/framework/oat/arm64/services.odex"</item>
         <item>"/system/framework/oat/arm64/services.vdex"</item>
         <item>"/system/framework/arm64/boot.oat"</item>
-        <item>"/system/framework/arm64/boot.vdex"</item>
+        <item>"/system/framework/boot.vdex"</item>
         <item>"/system/framework/arm64/boot-core-libart.oat"</item>
-        <item>"/system/framework/arm64/boot-core-libart.vdex"</item>
+        <item>"/system/framework/boot-core-libart.vdex"</item>
     </string-array>
 
     <!-- Should the pinner service pin the Camera application? -->
@@ -347,5 +339,6 @@
     <bool name="config_supportAudioSourceUnprocessed">true</bool>
 
     <!-- Colon separated list of package names that should be granted DND access -->
-    <string name="config_defaultDndAccessPackages" translatable="false">com.google.android.GoogleCamera:com.google.intelligence.sense</string>
+    <string name="config_defaultDndAccessPackages" translatable="false">com.google.android.gms:com.google.android.GoogleCamera:com.google.intelligence.sense:com.google.android.settings.intelligence</string>
+
 </resources>
diff --git a/overlay/packages/services/Telephony/res/values/config.xml b/overlay/packages/services/Telephony/res/values/config.xml
index 4a10e11..297ef38 100644
--- a/overlay/packages/services/Telephony/res/values/config.xml
+++ b/overlay/packages/services/Telephony/res/values/config.xml
@@ -19,4 +19,11 @@
 <resources>
     <!-- Allow handover from telephony calls to another ConnectionService. -->
     <bool name="config_support_handover_from">true</bool>
+    <!-- Show enabled lte option for lte device -->
+    <bool name="config_enabled_lte" translatable="false">true</bool>
+    <!-- This device supports the AudioManager Telephony audio device and output onto this
+         device using {@link AudioDeviceInfo#TYPE_TELEPHONY}.
+         This is used to support carriers which generate a recording tone to the remote party
+         when a call recording app is in use. -->
+    <bool name="config_support_telephony_audio_device">true</bool>
 </resources>
diff --git a/p2p_supplicant_overlay.conf b/p2p_supplicant_overlay.conf
index b5e89e0..b8902bf 100644
--- a/p2p_supplicant_overlay.conf
+++ b/p2p_supplicant_overlay.conf
@@ -1,2 +1,3 @@
 disable_scan_offload=1
 p2p_no_group_iface=1
+p2p_go_vht=1
diff --git a/permissions/privapp-permissions-aosp_wahoo.xml b/permissions/privapp-permissions-aosp_wahoo.xml
new file mode 100644
index 0000000..1fe50a3
--- /dev/null
+++ b/permissions/privapp-permissions-aosp_wahoo.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<permissions>
+    <privapp-permissions package="com.qualcomm.qcrilmsgtunnel">
+        <permission name="android.permission.INTERACT_ACROSS_USERS"/>
+    </privapp-permissions>
+
+    <privapp-permissions package="com.quicinc.cne.CNEService">
+        <permission name="android.permission.INTERACT_ACROSS_USERS"/>
+        <permission name="android.permission.PACKET_KEEPALIVE_OFFLOAD"/>
+    </privapp-permissions>
+
+</permissions>
\ No newline at end of file
diff --git a/power-libperfmgr/Android.bp b/power-libperfmgr/Android.bp
new file mode 100644
index 0000000..8deca67
--- /dev/null
+++ b/power-libperfmgr/Android.bp
@@ -0,0 +1,37 @@
+//
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+cc_binary {
+    name: "android.hardware.power@1.2-service.wahoo-libperfmgr",
+    relative_install_path: "hw",
+    init_rc: ["android.hardware.power@1.2-service.wahoo-libperfmgr.rc"],
+    srcs: ["service.cpp", "Power.cpp", "InteractionHandler.cpp", "power-helper.c"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    shared_libs: [
+        "libbase",
+        "libhidlbase",
+        "libhidltransport",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "android.hardware.power@1.0",
+        "android.hardware.power@1.1",
+        "android.hardware.power@1.2",
+        "libperfmgr",
+    ],
+    proprietary: true,
+}
diff --git a/power/InteractionHandler.cpp b/power-libperfmgr/InteractionHandler.cpp
similarity index 87%
rename from power/InteractionHandler.cpp
rename to power-libperfmgr/InteractionHandler.cpp
index ac00514..b8ce3ef 100644
--- a/power/InteractionHandler.cpp
+++ b/power-libperfmgr/InteractionHandler.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
 
 //#define LOG_NDEBUG 0
 
-#define LOG_TAG "PowerInteractionHandler"
+#define LOG_TAG "android.hardware.power@1.2-service.wahoo-libperfmgr"
 #define ATRACE_TAG (ATRACE_TAG_POWER | ATRACE_TAG_HAL)
 
 #include <fcntl.h>
@@ -28,11 +28,6 @@
 #include <utils/Trace.h>
 
 #include "InteractionHandler.h"
-#include "power-common.h"
-#include "power-helper.h"
-#include "powerhintparser.h"
-#include "hint-data.h"
-#include "utils.h"
 
 #define FB_IDLE_PATH "/sys/class/graphics/fb0/idle_state"
 #define MAX_LENGTH 64
@@ -40,12 +35,13 @@
 #define MSINSEC 1000L
 #define USINMS 1000000L
 
-InteractionHandler::InteractionHandler()
+InteractionHandler::InteractionHandler(std::shared_ptr<HintManager> const & hint_manager)
     : mState(INTERACTION_STATE_UNINITIALIZED),
       mWaitMs(100),
       mMinDurationMs(1400),
       mMaxDurationMs(5650),
-      mDurationMs(0) {
+      mDurationMs(0),
+      mHintManager(hint_manager) {
 }
 
 InteractionHandler::~InteractionHandler() {
@@ -95,22 +91,18 @@
 }
 
 void InteractionHandler::PerfLock() {
-    int *resource_values;
-    int num_resources;
-
-    resource_values = getPowerhint(INTERACTION_HINT_ID, &num_resources);
-    if (resource_values != NULL) {
-        ALOGV("%s: acquiring perf lock", __func__);
-        perform_hint_action(INTERACTION_HINT_ID,
-                            resource_values, num_resources);
-
-        ATRACE_INT("interaction_lock", 1);
+    ALOGV("%s: acquiring perf lock", __func__);
+    if (!mHintManager->DoHint("INTERACTION")) {
+        ALOGE("%s: do hint INTERACTION failed", __func__);
     }
+    ATRACE_INT("interaction_lock", 1);
 }
 
 void InteractionHandler::PerfRel() {
     ALOGV("%s: releasing perf lock", __func__);
-    undo_hint_action(INTERACTION_HINT_ID);
+    if (!mHintManager->EndHint("INTERACTION")) {
+        ALOGE("%s: end hint INTERACTION failed", __func__);
+    }
     ATRACE_INT("interaction_lock", 0);
 }
 
@@ -123,12 +115,6 @@
 }
 
 void InteractionHandler::Acquire(int32_t duration) {
-    if (is_perf_hint_active(SUSTAINED_PERF_HINT_ID) ||
-        is_perf_hint_active(VR_MODE_HINT_ID)) {
-        ALOGV("%s: ignoring due to other active perf hints", __func__);
-        return;
-    }
-
     ATRACE_CALL();
 
     std::lock_guard<std::mutex> lk(mLock);
diff --git a/power/InteractionHandler.h b/power-libperfmgr/InteractionHandler.h
similarity index 86%
rename from power/InteractionHandler.h
rename to power-libperfmgr/InteractionHandler.h
index 8b5aebc..893c72f 100644
--- a/power/InteractionHandler.h
+++ b/power-libperfmgr/InteractionHandler.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,6 +21,10 @@
 #include <mutex>
 #include <thread>
 
+#include <perfmgr/HintManager.h>
+
+using ::android::perfmgr::HintManager;
+
 enum interaction_state {
     INTERACTION_STATE_UNINITIALIZED,
     INTERACTION_STATE_IDLE,
@@ -29,7 +33,7 @@
 };
 
 struct InteractionHandler {
-    InteractionHandler();
+    InteractionHandler(std::shared_ptr<HintManager> const & hint_manager);
     ~InteractionHandler();
     bool Init();
     void Exit();
@@ -61,7 +65,7 @@
     std::unique_ptr<std::thread> mThread;
     std::mutex mLock;
     std::condition_variable mCond;
+    std::shared_ptr<HintManager> mHintManager;
 };
 
 #endif //INTERACTIONHANDLER_H
-
diff --git a/power-libperfmgr/Power.cpp b/power-libperfmgr/Power.cpp
new file mode 100644
index 0000000..c0fadac
--- /dev/null
+++ b/power-libperfmgr/Power.cpp
@@ -0,0 +1,542 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define ATRACE_TAG (ATRACE_TAG_POWER | ATRACE_TAG_HAL)
+#define LOG_TAG "android.hardware.power@1.2-service.wahoo-libperfmgr"
+
+#include <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/properties.h>
+#include <android-base/strings.h>
+#include <android-base/stringprintf.h>
+
+#include <mutex>
+
+#include <utils/Log.h>
+#include <utils/Trace.h>
+
+#include "Power.h"
+#include "power-helper.h"
+
+/* RPM runs at 19.2Mhz. Divide by 19200 for msec */
+#define RPM_CLK 19200
+
+extern struct stat_pair rpm_stat_map[];
+
+namespace android {
+namespace hardware {
+namespace power {
+namespace V1_2 {
+namespace implementation {
+
+using ::android::hardware::power::V1_0::Feature;
+using ::android::hardware::power::V1_0::PowerStatePlatformSleepState;
+using ::android::hardware::power::V1_0::Status;
+using ::android::hardware::power::V1_1::PowerStateSubsystem;
+using ::android::hardware::power::V1_1::PowerStateSubsystemSleepState;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+
+Power::Power() :
+        mHintManager(HintManager::GetFromJSON("/vendor/etc/powerhint.json")),
+        mInteractionHandler(mHintManager),
+        mVRModeOn(false),
+        mSustainedPerfModeOn(false),
+        mEncoderModeOn(false) {
+    mInteractionHandler.Init();
+
+    std::string state = android::base::GetProperty(kPowerHalStateProp, "");
+    if (state == "VIDEO_ENCODE") {
+        ALOGI("Initialize with VIDEO_ENCODE on");
+        mHintManager->DoHint("VIDEO_ENCODE");
+        mEncoderModeOn = true;
+    } else if (state ==  "SUSTAINED_PERFORMANCE") {
+        ALOGI("Initialize with SUSTAINED_PERFORMANCE on");
+        mHintManager->DoHint("SUSTAINED_PERFORMANCE");
+        mSustainedPerfModeOn = true;
+    } else if (state == "VR_MODE") {
+        ALOGI("Initialize with VR_MODE on");
+        mHintManager->DoHint("VR_MODE");
+        mVRModeOn = true;
+    } else if (state == "VR_SUSTAINED_PERFORMANCE") {
+        ALOGI("Initialize with SUSTAINED_PERFORMANCE and VR_MODE on");
+        mHintManager->DoHint("VR_SUSTAINED_PERFORMANCE");
+        mSustainedPerfModeOn = true;
+        mVRModeOn = true;
+    } else {
+        ALOGI("Initialize PowerHAL");
+    }
+
+    state = android::base::GetProperty(kPowerHalAudioProp, "");
+    if (state == "LOW_LATENCY") {
+        ALOGI("Initialize with AUDIO_LOW_LATENCY on");
+        mHintManager->DoHint("AUDIO_LOW_LATENCY");
+    }
+}
+
+// Methods from ::android::hardware::power::V1_0::IPower follow.
+Return<void> Power::setInteractive(bool /* interactive */)  {
+    return Void();
+}
+
+Return<void> Power::powerHint(PowerHint_1_0 hint, int32_t data) {
+    if (!isSupportedGovernor()) {
+        return Void();
+    }
+
+    switch(hint) {
+        case PowerHint_1_0::INTERACTION:
+            if (mVRModeOn || mSustainedPerfModeOn) {
+                ALOGV("%s: ignoring due to other active perf hints", __func__);
+            } else {
+                mInteractionHandler.Acquire(data);
+            }
+            break;
+        case PowerHint_1_0::VIDEO_ENCODE:
+            if (mVRModeOn || mSustainedPerfModeOn) {
+                ALOGV("%s: ignoring due to other active perf hints", __func__);
+                break;
+            }
+            ATRACE_BEGIN("video_encode");
+            if (mVRModeOn || mSustainedPerfModeOn) {
+                ALOGV("%s: ignoring due to other active perf hints", __func__);
+            } else {
+                if (data) {
+                    // Hint until canceled
+                    ATRACE_INT("video_encode_lock", 1);
+                    mHintManager->DoHint("VIDEO_ENCODE");
+                    ALOGD("VIDEO_ENCODE ON");
+                    if (!android::base::SetProperty(kPowerHalStateProp, "VIDEO_ENCODE")) {
+                        ALOGE("%s: could not set powerHAL state property to VIDEO_ENCODE", __func__);
+                    }
+                    mEncoderModeOn = true;
+                } else {
+                    ATRACE_INT("video_encode_lock", 0);
+                    mHintManager->EndHint("VIDEO_ENCODE");
+                    ALOGD("VIDEO_ENCODE OFF");
+                    if (!android::base::SetProperty(kPowerHalStateProp, "")) {
+                        ALOGE("%s: could not clear powerHAL state property", __func__);
+                    }
+                    mEncoderModeOn = false;
+                }
+            }
+            ATRACE_END();
+            break;
+        case PowerHint_1_0::SUSTAINED_PERFORMANCE:
+            if (data && !mSustainedPerfModeOn) {
+                ALOGD("SUSTAINED_PERFORMANCE ON");
+                if (!mVRModeOn) { // Sustained mode only.
+                    mHintManager->DoHint("SUSTAINED_PERFORMANCE");
+                    if (!android::base::SetProperty(kPowerHalStateProp, "SUSTAINED_PERFORMANCE")) {
+                        ALOGE("%s: could not set powerHAL state property to SUSTAINED_PERFORMANCE", __func__);
+                    }
+                } else { // Sustained + VR mode.
+                    mHintManager->EndHint("VR_MODE");
+                    mHintManager->DoHint("VR_SUSTAINED_PERFORMANCE");
+                    if (!android::base::SetProperty(kPowerHalStateProp, "VR_SUSTAINED_PERFORMANCE")) {
+                        ALOGE("%s: could not set powerHAL state property to VR_SUSTAINED_PERFORMANCE", __func__);
+                    }
+                }
+                mSustainedPerfModeOn = true;
+            } else if (!data && mSustainedPerfModeOn) {
+                ALOGD("SUSTAINED_PERFORMANCE OFF");
+                mHintManager->EndHint("VR_SUSTAINED_PERFORMANCE");
+                mHintManager->EndHint("SUSTAINED_PERFORMANCE");
+                if (mVRModeOn) { // Switch back to VR Mode.
+                    mHintManager->DoHint("VR_MODE");
+                    if (!android::base::SetProperty(kPowerHalStateProp, "VR_MODE")) {
+                        ALOGE("%s: could not set powerHAL state property to VR_MODE", __func__);
+                    }
+                } else {
+                    if (!android::base::SetProperty(kPowerHalStateProp, "")) {
+                        ALOGE("%s: could not clear powerHAL state property", __func__);
+                    }
+                }
+                mSustainedPerfModeOn = false;
+            }
+            break;
+        case PowerHint_1_0::VR_MODE:
+            if (data && !mVRModeOn) {
+                ALOGD("VR_MODE ON");
+                if (!mSustainedPerfModeOn) { // VR mode only.
+                    mHintManager->DoHint("VR_MODE");
+                    if (!android::base::SetProperty(kPowerHalStateProp, "VR_MODE")) {
+                        ALOGE("%s: could not set powerHAL state property to VR_MODE", __func__);
+                    }
+                } else { // Sustained + VR mode.
+                    mHintManager->EndHint("SUSTAINED_PERFORMANCE");
+                    mHintManager->DoHint("VR_SUSTAINED_PERFORMANCE");
+                    if (!android::base::SetProperty(kPowerHalStateProp, "VR_SUSTAINED_PERFORMANCE")) {
+                        ALOGE("%s: could not set powerHAL state property to VR_SUSTAINED_PERFORMANCE", __func__);
+                    }
+                }
+                mVRModeOn = true;
+            } else if (!data && mVRModeOn) {
+                ALOGD("VR_MODE OFF");
+                mHintManager->EndHint("VR_SUSTAINED_PERFORMANCE");
+                mHintManager->EndHint("VR_MODE");
+                if (mSustainedPerfModeOn) { // Switch back to sustained Mode.
+                    mHintManager->DoHint("SUSTAINED_PERFORMANCE");
+                    if (!android::base::SetProperty(kPowerHalStateProp, "SUSTAINED_PERFORMANCE")) {
+                        ALOGE("%s: could not set powerHAL state property to SUSTAINED_PERFORMANCE", __func__);
+                    }
+                } else {
+                    if (!android::base::SetProperty(kPowerHalStateProp, "")) {
+                        ALOGE("%s: could not clear powerHAL state property", __func__);
+                    }
+                }
+                mVRModeOn = false;
+            }
+            break;
+        case PowerHint_1_0::LAUNCH:
+            ATRACE_BEGIN("launch");
+            if (mVRModeOn || mSustainedPerfModeOn) {
+                ALOGV("%s: ignoring due to other active perf hints", __func__);
+            } else {
+                if (data) {
+                    // Hint until canceled
+                    ATRACE_INT("launch_lock", 1);
+                    mHintManager->DoHint("LAUNCH");
+                    ALOGD("LAUNCH ON");
+                } else {
+                    ATRACE_INT("launch_lock", 0);
+                    mHintManager->EndHint("LAUNCH");
+                    ALOGD("LAUNCH OFF");
+                }
+            }
+            ATRACE_END();
+            break;
+        default:
+            break;
+
+    }
+    return Void();
+}
+
+Return<void> Power::setFeature(Feature /*feature*/, bool /*activate*/)  {
+    //Nothing to do
+    return Void();
+}
+
+Return<void> Power::getPlatformLowPowerStats(getPlatformLowPowerStats_cb _hidl_cb) {
+
+    hidl_vec<PowerStatePlatformSleepState> states;
+    uint64_t stats[MAX_PLATFORM_STATS * MAX_RPM_PARAMS] = {0};
+    uint64_t *values;
+    struct PowerStatePlatformSleepState *state;
+    int ret;
+
+    states.resize(PLATFORM_SLEEP_MODES_COUNT);
+
+    ret = extract_platform_stats(stats);
+    if (ret != 0) {
+        states.resize(0);
+        goto done;
+    }
+
+    /* Update statistics for XO_shutdown */
+    state = &states[RPM_MODE_XO];
+    state->name = "XO_shutdown";
+    values = stats + (RPM_MODE_XO * MAX_RPM_PARAMS);
+
+    state->residencyInMsecSinceBoot = values[1];
+    state->totalTransitions = values[0];
+    state->supportedOnlyInSuspend = false;
+    state->voters.resize(XO_VOTERS);
+    for(size_t i = 0; i < XO_VOTERS; i++) {
+        int voter = static_cast<int>(i + XO_VOTERS_START);
+        state->voters[i].name = rpm_stat_map[voter].label;
+        values = stats + (voter * MAX_RPM_PARAMS);
+        state->voters[i].totalTimeInMsecVotedForSinceBoot = values[0] / RPM_CLK;
+        state->voters[i].totalNumberOfTimesVotedSinceBoot = values[1];
+    }
+
+    /* Update statistics for VMIN state */
+    state = &states[RPM_MODE_VMIN];
+    state->name = "VMIN";
+    values = stats + (RPM_MODE_VMIN * MAX_RPM_PARAMS);
+
+    state->residencyInMsecSinceBoot = values[1];
+    state->totalTransitions = values[0];
+    state->supportedOnlyInSuspend = false;
+    state->voters.resize(VMIN_VOTERS);
+    //Note: No filling of state voters since VMIN_VOTERS = 0
+
+done:
+    _hidl_cb(states, Status::SUCCESS);
+    return Void();
+}
+
+static int get_wlan_low_power_stats(struct PowerStateSubsystem *subsystem) {
+    uint64_t stats[WLAN_POWER_PARAMS_COUNT] = {0};
+    struct PowerStateSubsystemSleepState *state;
+
+    subsystem->name = "wlan";
+
+    if (extract_wlan_stats(stats) != 0) {
+        subsystem->states.resize(0);
+        return -1;
+    }
+
+    subsystem->states.resize(WLAN_STATES_COUNT);
+
+    /* Update statistics for Active State */
+    state = &subsystem->states[WLAN_STATE_ACTIVE];
+    state->name = "Active";
+    state->residencyInMsecSinceBoot = stats[CUMULATIVE_TOTAL_ON_TIME_MS];
+    state->totalTransitions = stats[DEEP_SLEEP_ENTER_COUNTER];
+    state->lastEntryTimestampMs = 0; //FIXME need a new value from Qcom
+    state->supportedOnlyInSuspend = false;
+
+    /* Update statistics for Deep-Sleep state */
+    state = &subsystem->states[WLAN_STATE_DEEP_SLEEP];
+    state->name = "Deep-Sleep";
+    state->residencyInMsecSinceBoot = stats[CUMULATIVE_SLEEP_TIME_MS];
+    state->totalTransitions = stats[DEEP_SLEEP_ENTER_COUNTER];
+    state->lastEntryTimestampMs = stats[LAST_DEEP_SLEEP_ENTER_TSTAMP_MS];
+    state->supportedOnlyInSuspend = false;
+
+    return 0;
+}
+
+enum easel_state {
+    EASEL_OFF = 0,
+    EASEL_ON,
+    EASEL_SUSPENDED,
+    NUM_EASEL_STATES
+};
+
+// Get low power stats for easel subsystem
+static int get_easel_low_power_stats(struct PowerStateSubsystem *subsystem) {
+    // This implementation is a workaround to provide minimal visibility into
+    // Easel state behavior until canonical low power stats are supported.
+    // It takes an "external observer" snapshot of the current Easel state every
+    // time it is called, and synthesizes an artificial sleep state that will
+    // behave similarly to real stats if Easel gets "wedged" in the "on" state.
+    static std::mutex statsLock;
+    static uint64_t totalOnSnapshotCount = 0;
+    static uint64_t totalNotOnSnapshotCount = 0;
+    unsigned long currentState;
+    struct PowerStateSubsystemSleepState *state;
+
+    subsystem->name = "Easel";
+
+    if (get_easel_state(&currentState) != 0) {
+        subsystem->states.resize(0);
+        return -1;
+    }
+
+    if (currentState >= NUM_EASEL_STATES) {
+        ALOGE("%s: unrecognized Easel state(%lu)", __func__, currentState);
+        return -1;
+    }
+
+    subsystem->states.resize(1);
+
+    // Since we are storing stats locally but can have multiple parallel
+    // callers, locking is required to ensure stats are not corrupted.
+    std::lock_guard<std::mutex> lk(statsLock);
+
+    // Update statistics for synthetic sleep state.  We combine OFF and
+    // SUSPENDED to act as a composite "not on" state so the numbers will behave
+    // like a real sleep state.
+    if ((currentState == EASEL_OFF) || (currentState == EASEL_SUSPENDED)) {
+        totalNotOnSnapshotCount++;
+    } else {
+        totalOnSnapshotCount++;
+    }
+
+    // Update statistics for synthetic sleep state, where
+    // totalTransitions = cumulative count of Easel state0 (as seen by PowerHAL)
+    // residencyInMsecsSinceBoot = cumulative count of Easel state1 (as seen by
+    //   PowerHAL)
+    // lastEntryTimestampMs = cumulative count of Easel state2 (as seen by
+    //   PowerHAL)
+    state = &subsystem->states[0];
+    state->name = "SyntheticSleep";
+    state->totalTransitions = totalOnSnapshotCount;
+    state->residencyInMsecSinceBoot = totalNotOnSnapshotCount;
+    state->lastEntryTimestampMs = 0;  // No added value for the workaround
+    state->supportedOnlyInSuspend = false;
+
+    return 0;
+}
+
+// Methods from ::android::hardware::power::V1_1::IPower follow.
+Return<void> Power::getSubsystemLowPowerStats(getSubsystemLowPowerStats_cb _hidl_cb) {
+    hidl_vec<PowerStateSubsystem> subsystems;
+
+    subsystems.resize(SUBSYSTEM_COUNT);
+
+    // Get WLAN subsystem low power stats.
+    if (get_wlan_low_power_stats(&subsystems[SUBSYSTEM_WLAN]) != 0) {
+        ALOGE("%s: failed to process wlan stats", __func__);
+    }
+
+    // Get Easel subsystem low power stats.
+    if (get_easel_low_power_stats(&subsystems[SUBSYSTEM_EASEL]) != 0) {
+        ALOGE("%s: failed to process Easel stats", __func__);
+    }
+
+    _hidl_cb(subsystems, Status::SUCCESS);
+    return Void();
+}
+
+bool Power::isSupportedGovernor() {
+    std::string buf;
+    if (android::base::ReadFileToString("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", &buf)) {
+        buf = android::base::Trim(buf);
+    }
+    // Only support EAS 1.2, legacy EAS
+    if (buf == "schedutil" || buf == "sched") {
+        return true;
+    } else {
+        LOG(ERROR) << "Governor not supported by powerHAL, skipping";
+        return false;
+    }
+}
+
+Return<void> Power::powerHintAsync(PowerHint_1_0 hint, int32_t data) {
+    // just call the normal power hint in this oneway function
+    return powerHint(hint, data);
+}
+
+// Methods from ::android::hardware::power::V1_2::IPower follow.
+Return<void> Power::powerHintAsync_1_2(PowerHint_1_2 hint, int32_t data) {
+    if (!isSupportedGovernor()) {
+        return Void();
+    }
+
+    switch(hint) {
+        case PowerHint_1_2::AUDIO_LOW_LATENCY:
+            ATRACE_BEGIN("audio_low_latency");
+            if (data) {
+                // Hint until canceled
+                ATRACE_INT("audio_low_latency_lock", 1);
+                mHintManager->DoHint("AUDIO_LOW_LATENCY");
+                ALOGD("AUDIO LOW LATENCY ON");
+                if (!android::base::SetProperty(kPowerHalAudioProp, "LOW_LATENCY")) {
+                    ALOGE("%s: could not set powerHAL audio state property to LOW_LATENCY", __func__);
+                }
+            } else {
+                ATRACE_INT("audio_low_latency_lock", 0);
+                mHintManager->EndHint("AUDIO_LOW_LATENCY");
+                ALOGD("AUDIO LOW LATENCY OFF");
+                if (!android::base::SetProperty(kPowerHalAudioProp, "")) {
+                    ALOGE("%s: could not clear powerHAL audio state property", __func__);
+                }
+            }
+            ATRACE_END();
+            break;
+        case PowerHint_1_2::AUDIO_STREAMING:
+            ATRACE_BEGIN("audio_streaming");
+            if (data) {
+                // Hint until canceled
+                ATRACE_INT("audio_streaming_lock", 1);
+                mHintManager->DoHint("AUDIO_STREAMING");
+                ALOGD("AUDIO STREAMING ON");
+            } else {
+                ATRACE_INT("audio_streaming_lock", 0);
+                mHintManager->EndHint("AUDIO_STREAMING");
+                ALOGD("AUDIO STREAMING OFF");
+            }
+            ATRACE_END();
+            break;
+        case PowerHint_1_2::CAMERA_LAUNCH:
+            ATRACE_BEGIN("camera_launch");
+            if (data > 0) {
+                ATRACE_INT("camera_launch_lock", 1);
+                mHintManager->DoHint("CAMERA_LAUNCH", std::chrono::milliseconds(data));
+                ALOGD("CAMERA LAUNCH ON: %d MS, LAUNCH ON: 2500 MS", data);
+                // boosts 2.5s for launching
+                mHintManager->DoHint("LAUNCH", std::chrono::milliseconds(2500));
+            } else if (data == 0) {
+                ATRACE_INT("camera_launch_lock", 0);
+                mHintManager->EndHint("CAMERA_LAUNCH");
+                ALOGD("CAMERA LAUNCH OFF");
+            } else {
+                ALOGE("CAMERA LAUNCH INVALID DATA: %d", data);
+            }
+            ATRACE_END();
+            break;
+        case PowerHint_1_2::CAMERA_STREAMING:
+            ATRACE_BEGIN("camera_streaming");
+            if (data > 0) {
+                ATRACE_INT("camera_streaming_lock", 1);
+                mHintManager->DoHint("CAMERA_STREAMING", std::chrono::milliseconds(data));
+                ALOGD("CAMERA STREAMING ON: %d MS", data);
+            } else if (data == 0) {
+                ATRACE_INT("camera_streaming_lock", 0);
+                mHintManager->EndHint("CAMERA_STREAMING");
+                ALOGD("CAMERA STREAMING OFF");
+            } else {
+                ALOGE("CAMERA STREAMING INVALID DATA: %d", data);
+            }
+            ATRACE_END();
+            break;
+        case PowerHint_1_2::CAMERA_SHOT:
+            ATRACE_BEGIN("camera_shot");
+            if (data > 0) {
+                ATRACE_INT("camera_shot_lock", 1);
+                mHintManager->DoHint("CAMERA_SHOT", std::chrono::milliseconds(data));
+                ALOGD("CAMERA SHOT ON: %d MS", data);
+            } else if (data == 0) {
+                ATRACE_INT("camera_shot_lock", 0);
+                mHintManager->EndHint("CAMERA_SHOT");
+                ALOGD("CAMERA SHOT OFF");
+            } else {
+                ALOGE("CAMERA SHOT INVALID DATA: %d", data);
+            }
+            ATRACE_END();
+            break;
+        default:
+            return powerHint(static_cast<PowerHint_1_0>(hint), data);
+    }
+    return Void();
+}
+
+constexpr const char* boolToString(bool b) {
+    return b ? "true" : "false";
+}
+
+Return<void> Power::debug(const hidl_handle& handle, const hidl_vec<hidl_string>&) {
+    if (handle != nullptr && handle->numFds >= 1) {
+        int fd = handle->data[0];
+
+        std::string buf(android::base::StringPrintf("HintManager Running: %s\n"
+                                                    "VRMode: %s\n"
+                                                    "SustainedPerformanceMode: %s\n"
+                                                    "VideoEncodeMode: %s\n",
+                                                    boolToString(mHintManager->IsRunning()),
+                                                    boolToString(mVRModeOn),
+                                                    boolToString(mSustainedPerfModeOn),
+                                                    boolToString(mEncoderModeOn)));
+        // Dump nodes through libperfmgr
+        mHintManager->DumpToFd(fd);
+        if (!android::base::WriteStringToFd(buf, fd)) {
+            PLOG(ERROR) << "Failed to dump state to fd";
+        }
+        fsync(fd);
+    }
+    return Void();
+}
+
+}  // namespace implementation
+}  // namespace V1_2
+}  // namespace power
+}  // namespace hardware
+}  // namespace android
diff --git a/power-libperfmgr/Power.h b/power-libperfmgr/Power.h
new file mode 100644
index 0000000..a39323f
--- /dev/null
+++ b/power-libperfmgr/Power.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_HARDWARE_POWER_V1_2_POWER_H
+#define ANDROID_HARDWARE_POWER_V1_2_POWER_H
+
+#include <atomic>
+
+#include <android/hardware/power/1.2/IPower.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+#include <perfmgr/HintManager.h>
+
+#include "InteractionHandler.h"
+
+namespace android {
+namespace hardware {
+namespace power {
+namespace V1_2 {
+namespace implementation {
+
+using ::android::hardware::power::V1_0::Feature;
+using ::android::hardware::power::V1_2::IPower;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::InteractionHandler;
+using PowerHint_1_0 = ::android::hardware::power::V1_0::PowerHint;
+using PowerHint_1_2 = ::android::hardware::power::V1_2::PowerHint;
+using ::android::perfmgr::HintManager;
+
+constexpr char kPowerHalStateProp[] = "vendor.powerhal.state";
+constexpr char kPowerHalAudioProp[] = "vendor.powerhal.audio";
+
+struct Power : public IPower {
+    // Methods from ::android::hardware::power::V1_0::IPower follow.
+
+    Power();
+
+    Return<void> setInteractive(bool /* interactive */) override;
+    Return<void> powerHint(PowerHint_1_0 hint, int32_t data) override;
+    Return<void> setFeature(Feature feature, bool activate) override;
+    Return<void> getPlatformLowPowerStats(getPlatformLowPowerStats_cb _hidl_cb) override;
+
+    // Methods from ::android::hardware::power::V1_1::IPower follow.
+    Return<void> getSubsystemLowPowerStats(getSubsystemLowPowerStats_cb _hidl_cb) override;
+    Return<void> powerHintAsync(PowerHint_1_0 hint, int32_t data) override;
+
+    // Methods from ::android::hardware::power::V1_2::IPower follow.
+    Return<void> powerHintAsync_1_2(PowerHint_1_2 hint, int32_t data) override;
+
+    // Methods from ::android::hidl::base::V1_0::IBase follow.
+    Return<void> debug(const hidl_handle& fd, const hidl_vec<hidl_string>& args) override;
+
+ private:
+    static bool isSupportedGovernor();
+
+    std::shared_ptr<HintManager> mHintManager;
+    InteractionHandler mInteractionHandler;
+    std::atomic<bool> mVRModeOn;
+    std::atomic<bool> mSustainedPerfModeOn;
+    std::atomic<bool> mEncoderModeOn;
+};
+
+}  // namespace implementation
+}  // namespace V1_2
+}  // namespace power
+}  // namespace hardware
+}  // namespace android
+
+#endif  // ANDROID_HARDWARE_POWER_V1_2_POWER_H
diff --git a/power-libperfmgr/android.hardware.power@1.2-service.wahoo-libperfmgr.rc b/power-libperfmgr/android.hardware.power@1.2-service.wahoo-libperfmgr.rc
new file mode 100644
index 0000000..d77b8f0
--- /dev/null
+++ b/power-libperfmgr/android.hardware.power@1.2-service.wahoo-libperfmgr.rc
@@ -0,0 +1,21 @@
+service vendor.power-hal-1-2 /vendor/bin/hw/android.hardware.power@1.2-service.wahoo-libperfmgr
+    class hal
+    user system
+    group system
+
+# restart powerHAL when framework died
+on property:init.svc.zygote=restarting && property:vendor.powerhal.state=*
+   setprop vendor.powerhal.state ""
+   setprop vendor.powerhal.audio ""
+   restart vendor.power-hal-1-2
+
+# restart powerHAL when cameraHAL died
+on property:init.svc.vendor.camera-provider-2-4=restarting && property:vendor.powerhal.state=VIDEO_ENCODE
+   setprop vendor.powerhal.state ""
+   setprop vendor.powerhal.audio ""
+   restart vendor.power-hal-1-2
+
+# restart powerHAL when audioHAL died
+on property:init.svc.vendor.audio-hal-2-0=restarting && property:vendor.powerhal.audio=LOW_LATENCY
+   setprop vendor.powerhal.audio ""
+   restart vendor.power-hal-1-2
diff --git a/power-libperfmgr/power-helper.c b/power-libperfmgr/power-helper.c
new file mode 100644
index 0000000..059e358
--- /dev/null
+++ b/power-libperfmgr/power-helper.c
@@ -0,0 +1,221 @@
+/*
+ * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * *    * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define LOG_NIDEBUG 0
+#define LOG_TAG "android.hardware.power@1.2-service.wahoo-libperfmgr"
+
+#include <errno.h>
+#include <inttypes.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <dlfcn.h>
+#include <stdlib.h>
+
+#include <log/log.h>
+
+#include "power-helper.h"
+
+#ifndef RPM_SYSTEM_STAT
+#define RPM_SYSTEM_STAT "/d/system_stats"
+#endif
+
+#ifndef WLAN_POWER_STAT
+#define WLAN_POWER_STAT "/d/wlan0/power_stats"
+#endif
+
+#ifndef EASEL_STATE_FILE
+#define EASEL_STATE_FILE "/sys/devices/virtual/misc/mnh_sm/state"
+#endif
+
+#define ARRAY_SIZE(x) (sizeof((x))/sizeof((x)[0]))
+#define LINE_SIZE 128
+
+const char *rpm_stat_params[MAX_RPM_PARAMS] = {
+    "count",
+    "actual last sleep(msec)",
+};
+
+const char *master_stat_params[MAX_RPM_PARAMS] = {
+    "Accumulated XO duration",
+    "XO Count",
+};
+
+struct stat_pair rpm_stat_map[] = {
+    { RPM_MODE_XO,   "RPM Mode:vlow", rpm_stat_params, ARRAY_SIZE(rpm_stat_params) },
+    { RPM_MODE_VMIN, "RPM Mode:vmin", rpm_stat_params, ARRAY_SIZE(rpm_stat_params) },
+    { VOTER_APSS,    "APSS",    master_stat_params, ARRAY_SIZE(master_stat_params) },
+    { VOTER_MPSS,    "MPSS",    master_stat_params, ARRAY_SIZE(master_stat_params) },
+    { VOTER_ADSP,    "ADSP",    master_stat_params, ARRAY_SIZE(master_stat_params) },
+    { VOTER_SLPI,    "SLPI",    master_stat_params, ARRAY_SIZE(master_stat_params) },
+};
+
+
+const char *wlan_power_stat_params[] = {
+    "cumulative_sleep_time_ms",
+    "cumulative_total_on_time_ms",
+    "deep_sleep_enter_counter",
+    "last_deep_sleep_enter_tstamp_ms"
+};
+
+struct stat_pair wlan_stat_map[] = {
+    { WLAN_POWER_DEBUG_STATS, "POWER DEBUG STATS", wlan_power_stat_params, ARRAY_SIZE(wlan_power_stat_params) },
+};
+
+static int parse_stats(const char **params, size_t params_size,
+                       uint64_t *list, FILE *fp) {
+    ssize_t nread;
+    size_t len = LINE_SIZE;
+    char *line;
+    size_t params_read = 0;
+    size_t i;
+
+    line = malloc(len);
+    if (!line) {
+        ALOGE("%s: no memory to hold line", __func__);
+        return -ENOMEM;
+    }
+
+    while ((params_read < params_size) &&
+        (nread = getline(&line, &len, fp) > 0)) {
+        char *key = line + strspn(line, " \t");
+        char *value = strchr(key, ':');
+        if (!value || (value > (line + len)))
+            continue;
+        *value++ = '\0';
+
+        for (i = 0; i < params_size; i++) {
+            if (!strcmp(key, params[i])) {
+                list[i] = strtoull(value, NULL, 0);
+                params_read++;
+                break;
+            }
+        }
+    }
+    free(line);
+
+    return 0;
+}
+
+
+static int extract_stats(uint64_t *list, char *file,
+                         struct stat_pair *map, size_t map_size) {
+    FILE *fp;
+    ssize_t read;
+    size_t len = LINE_SIZE;
+    char *line;
+    size_t i, stats_read = 0;
+    int ret = 0;
+
+    fp = fopen(file, "re");
+    if (fp == NULL) {
+        ALOGE("%s: failed to open: %s Error = %s", __func__, file, strerror(errno));
+        return -errno;
+    }
+
+    line = malloc(len);
+    if (!line) {
+        ALOGE("%s: no memory to hold line", __func__);
+        fclose(fp);
+        return -ENOMEM;
+    }
+
+    while ((stats_read < map_size) && (read = getline(&line, &len, fp) != -1)) {
+        size_t begin = strspn(line, " \t");
+
+        for (i = 0; i < map_size; i++) {
+            if (!strncmp(line + begin, map[i].label, strlen(map[i].label))) {
+                stats_read++;
+                break;
+            }
+        }
+
+        if (i == map_size)
+            continue;
+
+        ret = parse_stats(map[i].parameters, map[i].num_parameters,
+                          &list[map[i].stat * MAX_RPM_PARAMS], fp);
+        if (ret < 0)
+            break;
+    }
+    free(line);
+    fclose(fp);
+
+    return ret;
+}
+
+int extract_platform_stats(uint64_t *list) {
+    return extract_stats(list, RPM_SYSTEM_STAT, rpm_stat_map, ARRAY_SIZE(rpm_stat_map));
+}
+
+int extract_wlan_stats(uint64_t *list) {
+    return extract_stats(list, WLAN_POWER_STAT, wlan_stat_map, ARRAY_SIZE(wlan_stat_map));
+}
+
+int get_easel_state(unsigned long *current_state) {
+    FILE *fp = NULL;
+    static const size_t EASEL_STATE_LINE_SIZE = 16;
+    char buffer[EASEL_STATE_LINE_SIZE];
+    char *parse_end = buffer;
+    unsigned long state;
+
+    if (current_state == NULL) {
+        ALOGD("%s: null current_state pointer from caller", __func__);
+        return -1;
+    }
+
+    fp = fopen(EASEL_STATE_FILE, "re");
+    if (fp == NULL) {
+        ALOGE("%s: failed to open: %s Error = %s", __func__, EASEL_STATE_FILE,
+                strerror(errno));
+        return -errno;
+    }
+
+    if (fgets(buffer, EASEL_STATE_LINE_SIZE, fp) == NULL) {
+        fclose(fp);
+        ALOGE("%s: failed to read: %s", __func__, EASEL_STATE_FILE);
+        return -1;
+    }
+
+    fclose(fp);
+
+    parse_end = buffer;
+    state = strtoul(buffer, &parse_end, 10);
+    if ((parse_end == buffer) || (state > 2)) {
+        ALOGE("%s: unrecognized format: %s '%s'", __func__, EASEL_STATE_FILE,
+                buffer);
+        return -1;
+    }
+
+    *current_state = state;
+
+    return 0;
+}
+
diff --git a/power/power-helper.h b/power-libperfmgr/power-helper.h
similarity index 91%
rename from power/power-helper.h
rename to power-libperfmgr/power-helper.h
index b2ef147..0e12396 100644
--- a/power/power-helper.h
+++ b/power-libperfmgr/power-helper.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -34,9 +34,6 @@
 extern "C" {
 #endif
 
-#include "hardware/power.h"
-
-
 enum stats_type {
     //Platform Stats
     RPM_MODE_XO = 0,
@@ -56,6 +53,7 @@
 
 enum subsystem_type {
     SUBSYSTEM_WLAN = 0,
+    SUBSYSTEM_EASEL,
 
     //Don't add any lines after this line
     SUBSYSTEM_COUNT
@@ -93,14 +91,9 @@
     size_t num_parameters;
 };
 
-
-void power_init(void);
-void power_hint(power_hint_t hint, void *data);
-void power_set_interactive(int on);
 int extract_platform_stats(uint64_t *list);
 int extract_wlan_stats(uint64_t *list);
-
-int is_perf_hint_active(int hint);
+int get_easel_state(unsigned long *current_state);
 
 #ifdef __cplusplus
 }
diff --git a/power/service.cpp b/power-libperfmgr/service.cpp
similarity index 69%
rename from power/service.cpp
rename to power-libperfmgr/service.cpp
index 5b3a47d..c128f95 100644
--- a/power/service.cpp
+++ b/power-libperfmgr/service.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "android.hardware.power@1.1-service.wahoo"
+#define LOG_TAG "android.hardware.power@1.2-service.wahoo-libperfmgr"
 
 #include <android/log.h>
 #include <hidl/HidlTransportSupport.h>
-#include <hardware/power.h>
+
 #include "Power.h"
 
 using android::sp;
@@ -30,38 +30,30 @@
 using android::hardware::joinRpcThreadpool;
 
 // Generated HIDL files
-using android::hardware::power::V1_1::IPower;
-using android::hardware::power::V1_1::implementation::Power;
+using android::hardware::power::V1_2::IPower;
+using android::hardware::power::V1_2::implementation::Power;
 
-int main() {
+int main(int /* argc */, char** /* argv */) {
+    ALOGI("Power HAL Service 1.2 for Wahoo is starting");
 
-    status_t status;
-    android::sp<IPower> service = nullptr;
-
-    ALOGI("Power HAL Service 1.1 for Wahoo is starting.");
-
-    service = new Power();
+    android::sp<IPower> service = new Power();
     if (service == nullptr) {
         ALOGE("Can not create an instance of Power HAL Iface, exiting.");
-
-        goto shutdown;
+        return 1;
     }
 
     configureRpcThreadpool(1, true /*callerWillJoin*/);
 
-    status = service->registerAsService();
+    status_t status = service->registerAsService();
     if (status != OK) {
-        ALOGE("Could not register service for Power HAL Iface (%d).", status);
-        goto shutdown;
+        ALOGE("Could not register service for Power HAL Iface (%d), exiting.", status);
+        return 1;
     }
 
     ALOGI("Power Service is ready");
     joinRpcThreadpool();
-    //Should not pass this line
 
-shutdown:
     // In normal operation, we don't expect the thread pool to exit
-
     ALOGE("Power Service is shutting down");
     return 1;
 }
diff --git a/power/Android.mk b/power/Android.mk
deleted file mode 100644
index f2e2918..0000000
--- a/power/Android.mk
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_PROPRIETARY_MODULE := true
-LOCAL_MODULE_OWNER := qcom
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := android.hardware.power@1.1-service.wahoo
-LOCAL_INIT_RC := android.hardware.power@1.1-service.wahoo.rc
-LOCAL_SRC_FILES := service.cpp \
-    Power.cpp \
-    InteractionHandler.cpp \
-    power-helper.c \
-    metadata-parser.c \
-    utils.c \
-    list.c \
-    hint-data.c \
-    powerhintparser.c
-
-LOCAL_C_INCLUDES := external/libxml2/include \
-                    external/icu/icu4c/source/common
-
-# Include target-specific files.
-LOCAL_SRC_FILES += power-8998.c
-
-
-# Enable interaction boost all the time
-LOCAL_CFLAGS += -DINTERACTION_BOOST -Werror
-
-LOCAL_SHARED_LIBRARIES := \
-    libbase \
-    liblog \
-    libcutils \
-    libdl \
-    libxml2 \
-    libhidlbase \
-    libhidltransport \
-    libhardware \
-    libutils \
-    android.hardware.power@1.1 \
-
-include $(BUILD_EXECUTABLE)
diff --git a/power/Power.cpp b/power/Power.cpp
deleted file mode 100644
index c74cb57..0000000
--- a/power/Power.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "android.hardware.power@1.1-service.wahoo"
-
-#include <android/log.h>
-#include <android-base/file.h>
-#include <android-base/properties.h>
-#include <android-base/strings.h>
-#include <utils/Log.h>
-#include "Power.h"
-#include "power-common.h"
-#include "power-helper.h"
-
-/* RPM runs at 19.2Mhz. Divide by 19200 for msec */
-#define RPM_CLK 19200
-
-extern struct stat_pair rpm_stat_map[];
-
-namespace android {
-namespace hardware {
-namespace power {
-namespace V1_1 {
-namespace implementation {
-
-using ::android::hardware::power::V1_0::Feature;
-using ::android::hardware::power::V1_0::PowerHint;
-using ::android::hardware::power::V1_0::PowerStatePlatformSleepState;
-using ::android::hardware::power::V1_0::Status;
-using ::android::hardware::power::V1_1::PowerStateSubsystem;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-
-Power::Power() {
-    power_init();
-    mInteractionHandler.Init();
-}
-
-// Methods from ::android::hardware::power::V1_0::IPower follow.
-Return<void> Power::setInteractive(bool interactive)  {
-    if (!isSupportedGovernor()) {
-        return Void();
-    }
-    power_set_interactive(interactive ? 1 : 0);
-    return Void();
-}
-
-Return<void> Power::powerHint(PowerHint hint, int32_t data) {
-    if (android::base::GetProperty("init.svc.perfd", "") != "running") {
-        ALOGW("perfd is not started");
-        return Void();
-    }
-
-    power_hint_t h = static_cast<power_hint_t>(hint);
-    if (!isSupportedGovernor()) {
-        return Void();
-    }
-    if (h == POWER_HINT_INTERACTION) {
-        mInteractionHandler.Acquire(data);
-        return Void();
-    }
-    power_hint(h, data ? &data : NULL);
-    return Void();
-}
-
-Return<void> Power::setFeature(Feature /*feature*/, bool /*activate*/)  {
-    //Nothing to do
-    return Void();
-}
-
-Return<void> Power::getPlatformLowPowerStats(getPlatformLowPowerStats_cb _hidl_cb) {
-
-    hidl_vec<PowerStatePlatformSleepState> states;
-    uint64_t stats[MAX_PLATFORM_STATS * MAX_RPM_PARAMS] = {0};
-    uint64_t *values;
-    struct PowerStatePlatformSleepState *state;
-    int ret;
-
-    states.resize(PLATFORM_SLEEP_MODES_COUNT);
-
-    ret = extract_platform_stats(stats);
-    if (ret != 0) {
-        states.resize(0);
-        goto done;
-    }
-
-    /* Update statistics for XO_shutdown */
-    state = &states[RPM_MODE_XO];
-    state->name = "XO_shutdown";
-    values = stats + (RPM_MODE_XO * MAX_RPM_PARAMS);
-
-    state->residencyInMsecSinceBoot = values[1];
-    state->totalTransitions = values[0];
-    state->supportedOnlyInSuspend = false;
-    state->voters.resize(XO_VOTERS);
-    for(size_t i = 0; i < XO_VOTERS; i++) {
-        int voter = static_cast<int>(i + XO_VOTERS_START);
-        state->voters[i].name = rpm_stat_map[voter].label;
-        values = stats + (voter * MAX_RPM_PARAMS);
-        state->voters[i].totalTimeInMsecVotedForSinceBoot = values[0] / RPM_CLK;
-        state->voters[i].totalNumberOfTimesVotedSinceBoot = values[1];
-    }
-
-    /* Update statistics for VMIN state */
-    state = &states[RPM_MODE_VMIN];
-    state->name = "VMIN";
-    values = stats + (RPM_MODE_VMIN * MAX_RPM_PARAMS);
-
-    state->residencyInMsecSinceBoot = values[1];
-    state->totalTransitions = values[0];
-    state->supportedOnlyInSuspend = false;
-    state->voters.resize(VMIN_VOTERS);
-    //Note: No filling of state voters since VMIN_VOTERS = 0
-
-done:
-    _hidl_cb(states, Status::SUCCESS);
-    return Void();
-}
-
-static int get_wlan_low_power_stats(struct PowerStateSubsystem &subsystem) {
-
-    uint64_t stats[WLAN_POWER_PARAMS_COUNT] = {0};
-    struct PowerStateSubsystemSleepState *state;
-    int ret;
-
-    ret = extract_wlan_stats(stats);
-    if (ret)
-        return ret;
-
-    subsystem.name = "wlan";
-    subsystem.states.resize(WLAN_STATES_COUNT);
-
-    /* Update statistics for Active State */
-    state = &subsystem.states[WLAN_STATE_ACTIVE];
-    state->name = "Active";
-    state->residencyInMsecSinceBoot = stats[CUMULATIVE_TOTAL_ON_TIME_MS];
-    state->totalTransitions = stats[DEEP_SLEEP_ENTER_COUNTER];
-    state->lastEntryTimestampMs = 0; //FIXME need a new value from Qcom
-    state->supportedOnlyInSuspend = false;
-
-    /* Update statistics for Deep-Sleep state */
-    state = &subsystem.states[WLAN_STATE_DEEP_SLEEP];
-    state->name = "Deep-Sleep";
-    state->residencyInMsecSinceBoot = stats[CUMULATIVE_SLEEP_TIME_MS];
-    state->totalTransitions = stats[DEEP_SLEEP_ENTER_COUNTER];
-    state->lastEntryTimestampMs = stats[LAST_DEEP_SLEEP_ENTER_TSTAMP_MS];
-    state->supportedOnlyInSuspend = false;
-
-    return 0;
-}
-
-// Methods from ::android::hardware::power::V1_1::IPower follow.
-Return<void> Power::getSubsystemLowPowerStats(getSubsystemLowPowerStats_cb _hidl_cb) {
-
-    hidl_vec<PowerStateSubsystem> subsystems;
-    int ret;
-
-    subsystems.resize(SUBSYSTEM_COUNT);
-
-    //We currently have only one Subsystem for WLAN
-    ret = get_wlan_low_power_stats(subsystems[SUBSYSTEM_WLAN]);
-    if (ret != 0)
-        goto done;
-
-    //Add query for other subsystems here
-
-done:
-    _hidl_cb(subsystems, Status::SUCCESS);
-    return Void();
-}
-
-bool Power::isSupportedGovernor() {
-    std::string buf;
-    if (android::base::ReadFileToString(SCALING_GOVERNOR_PATH, &buf)) {
-        buf = android::base::Trim(buf);
-    }
-    // Only support EAS 1.2, legacy EAS and HMP
-    if (buf == SCHEDUTIL_GOVERNOR || buf == SCHED_GOVERNOR || buf == INTERACTIVE_GOVERNOR) {
-        return true;
-    } else {
-        ALOGE("Governor not supported by powerHAL, skipping");
-        return false;
-    }
-}
-
-Return<void> Power::powerHintAsync(PowerHint hint, int32_t data) {
-    // just call the normal power hint in this oneway function
-    return powerHint(hint, data);
-}
-
-}  // namespace implementation
-}  // namespace V1_1
-}  // namespace power
-}  // namespace hardware
-}  // namespace android
diff --git a/power/Power.h b/power/Power.h
deleted file mode 100644
index 9d4f79f..0000000
--- a/power/Power.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_POWER_V1_1_POWER_H
-#define ANDROID_HARDWARE_POWER_V1_1_POWER_H
-
-#include <android/hardware/power/1.1/IPower.h>
-#include <hidl/MQDescriptor.h>
-#include <hidl/Status.h>
-#include <hardware/power.h>
-
-#include "InteractionHandler.h"
-
-namespace android {
-namespace hardware {
-namespace power {
-namespace V1_1 {
-namespace implementation {
-
-using ::android::hardware::power::V1_0::Feature;
-using ::android::hardware::power::V1_0::PowerHint;
-using ::android::hardware::power::V1_1::IPower;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::InteractionHandler;
-
-struct Power : public IPower {
-    // Methods from ::android::hardware::power::V1_0::IPower follow.
-
-    Power();
-
-    Return<void> setInteractive(bool interactive) override;
-    Return<void> powerHint(PowerHint hint, int32_t data) override;
-    Return<void> setFeature(Feature feature, bool activate) override;
-    Return<void> getPlatformLowPowerStats(getPlatformLowPowerStats_cb _hidl_cb) override;
-
-    // Methods from ::android::hardware::power::V1_1::IPower follow.
-    Return<void> getSubsystemLowPowerStats(getSubsystemLowPowerStats_cb _hidl_cb) override;
-    Return<void> powerHintAsync(PowerHint hint, int32_t data) override;
-
-    // Methods from ::android::hidl::base::V1_0::IBase follow.
-
- private:
-    InteractionHandler mInteractionHandler;
-    static bool isSupportedGovernor();
-};
-
-}  // namespace implementation
-}  // namespace V1_1
-}  // namespace power
-}  // namespace hardware
-}  // namespace android
-
-#endif  // ANDROID_HARDWARE_POWER_V1_1_POWER_H
diff --git a/power/android.hardware.power@1.1-service.wahoo.rc b/power/android.hardware.power@1.1-service.wahoo.rc
deleted file mode 100644
index 064cf35..0000000
--- a/power/android.hardware.power@1.1-service.wahoo.rc
+++ /dev/null
@@ -1,4 +0,0 @@
-service power-hal-1-1 /vendor/bin/hw/android.hardware.power@1.1-service.wahoo
-    class hal
-    user system
-    group system
diff --git a/power/hint-data.c b/power/hint-data.c
deleted file mode 100644
index f3403b7..0000000
--- a/power/hint-data.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <utils/Log.h>
-
-#include "hint-data.h"
-
-int hint_compare(struct hint_data *first_hint,
-        struct hint_data *other_hint) {
-    if (first_hint == other_hint) {
-        return 0;
-    } else if ((first_hint && other_hint) &&
-            (first_hint->hint_id == other_hint->hint_id)) {
-        return 0;
-    } else {
-        return 1;
-    }
-}
-
-void hint_dump(struct hint_data *hint)
-{
-    ALOGV("hint_id: %lu", hint->hint_id);
-}
diff --git a/power/hint-data.h b/power/hint-data.h
deleted file mode 100644
index 7be3b3b..0000000
--- a/power/hint-data.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* Default use-case hint IDs */
-#define DEFAULT_VIDEO_ENCODE_HINT_ID    (0x0A00)
-#define DEFAULT_VIDEO_DECODE_HINT_ID    (0x0B00)
-#define DISPLAY_STATE_HINT_ID           (0x0C00)
-#define DISPLAY_STATE_HINT_ID_2         (0x0D00)
-#define CAM_PREVIEW_HINT_ID             (0x0E00)
-#define SUSTAINED_PERF_HINT_ID          (0x0F00)
-#define VR_MODE_HINT_ID                 (0x1000)
-#define VR_MODE_SUSTAINED_PERF_HINT_ID  (0x1001)
-#define INTERACTION_HINT_ID             (0x1A00)
-#define BOOST_HINT_ID                   (0x1B00)
-
-struct hint_data {
-    unsigned long hint_id; /* This is our key. */
-    unsigned long perflock_handle;
-};
-
-int hint_compare(struct hint_data *first_hint,
-        struct hint_data *other_hint);
-void hint_dump(struct hint_data *hint);
diff --git a/power/list.c b/power/list.c
deleted file mode 100644
index 30a1694..0000000
--- a/power/list.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "list.h"
-#include <utils/Log.h>
-
-int init_list_head(struct list_node *head)
-{
-    if (head == NULL)
-        return -1;
-
-    memset(head, 0, sizeof(*head));
-
-    return 0;
-}
-
-struct list_node *add_list_node(struct list_node *head, void *data)
-{
-    /* Create a new list_node. And put 'data' into it. */
-    struct list_node *new_node;
-
-    if (head == NULL) {
-        return NULL;
-    }
-
-    if (!(new_node = malloc(sizeof(struct list_node)))) {
-        return NULL;
-    }
-
-    new_node->data = data;
-    new_node->next = head->next;
-    new_node->compare = head->compare;
-    new_node->dump = head->dump;
-    head->next = new_node;
-
-    return new_node;
-}
-
-int is_list_empty(struct list_node *head)
-{
-    return (head == NULL || head->next == NULL);
-}
-
-/*
- * Delink and de-allocate 'node'.
- */
-int remove_list_node(struct list_node *head, struct list_node *del_node)
-{
-    struct list_node *current_node;
-    struct list_node *saved_node;
-
-    if (head == NULL || head->next == NULL) {
-        return -1;
-    }
-
-    current_node = head->next;
-    saved_node = head;
-
-    while (current_node && current_node != del_node) {
-        saved_node = current_node;
-        current_node = current_node->next;
-    }
-
-    if (saved_node) {
-        if (current_node) {
-            saved_node->next = current_node->next;
-        } else {
-            /* Node not found. */
-            return -1;
-        }
-    }
-
-    if (del_node) {
-        free(del_node);
-    }
-
-    return 0;
-}
-
-void dump_list(struct list_node *head)
-{
-    struct list_node *current_node = head;
-
-    if (head == NULL)
-        return;
-
-    ALOGV("List:\n");
-
-    while ((current_node = current_node->next)) {
-        if (current_node->dump) {
-            current_node->dump(current_node->data);
-        }
-    }
-}
-
-struct list_node *find_node(struct list_node *head, void *comparison_data)
-{
-    struct list_node *current_node = head;
-
-    if (head == NULL)
-        return NULL;
-
-    while ((current_node = current_node->next)) {
-        if (current_node->compare) {
-            if (current_node->compare(current_node->data,
-                    comparison_data) == 0) {
-                /* Match found. Return current_node. */
-                return current_node;
-            }
-        }
-    }
-
-    /* No match found. */
-    return NULL;
-}
diff --git a/power/list.h b/power/list.h
deleted file mode 100644
index d68c3df..0000000
--- a/power/list.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-struct list_node {
-    struct list_node *next;
-    void *data;
-    int (*compare)(void *data1, void *data2);
-    void (*dump)(void *data);
-};
-
-int init_list_head(struct list_node *head);
-struct list_node * add_list_node(struct list_node *head, void *data);
-int remove_list_node(struct list_node *head, struct list_node *del_node);
-void dump_list(struct list_node *head);
-struct list_node *find_node(struct list_node *head, void *comparison_data);
diff --git a/power/metadata-defs.h b/power/metadata-defs.h
deleted file mode 100644
index e3ce944..0000000
--- a/power/metadata-defs.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#define ATTRIBUTE_VALUE_DELIM ('=')
-#define ATTRIBUTE_STRING_DELIM (";")
-
-#define METADATA_PARSING_ERR (-1)
-#define METADATA_PARSING_CONTINUE (0)
-#define METADATA_PARSING_DONE (1)
-
-#define MIN(x,y) (((x)>(y))?(y):(x))
-
-struct video_encode_metadata_t {
-    int hint_id;
-    int state;
-};
-
-struct video_decode_metadata_t {
-    int hint_id;
-    int state;
-};
-
-int parse_metadata(char *metadata, char **metadata_saveptr,
-    char *attribute, unsigned int attribute_size, char *value, unsigned int value_size);
-int parse_video_encode_metadata(char *metadata,
-    struct video_encode_metadata_t *video_encode_metadata);
-int parse_video_decode_metadata(char *metadata,
-    struct video_decode_metadata_t *video_decode_metadata);
diff --git a/power/metadata-parser.c b/power/metadata-parser.c
deleted file mode 100644
index ffe092b..0000000
--- a/power/metadata-parser.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "metadata-defs.h"
-
-int parse_metadata(char *metadata, char **metadata_saveptr,
-        char *attribute, unsigned int attribute_size, char *value, unsigned int value_size)
-{
-    char *attribute_string;
-    char *attribute_value_delim;
-    unsigned int bytes_to_copy;
-
-    attribute_string = strtok_r(metadata, ATTRIBUTE_STRING_DELIM,
-            metadata_saveptr);
-
-    if (attribute_string == NULL)
-        return METADATA_PARSING_DONE;
-
-    attribute[0] = value[0] = '\0';
-
-    if ((attribute_value_delim = strchr(attribute_string,
-                    ATTRIBUTE_VALUE_DELIM)) != NULL) {
-        unsigned int attribute_len = (unsigned int) (attribute_value_delim - attribute_string);
-        /* copy only attribute len + NUL character, or as much as can be fit */
-        bytes_to_copy = MIN(attribute_len + 1, attribute_size);
-
-        strlcpy(attribute, attribute_string, bytes_to_copy);
-        strlcpy(value, attribute_value_delim + 1, value_size);
-    }
-
-    return METADATA_PARSING_CONTINUE;
-}
-
-int parse_video_encode_metadata(char *metadata,
-    struct video_encode_metadata_t *video_encode_metadata)
-{
-    char attribute[1024], value[1024], *saveptr;
-    char *temp_metadata = metadata;
-    int parsing_status;
-
-    while ((parsing_status = parse_metadata(temp_metadata, &saveptr,
-            attribute, sizeof(attribute), value, sizeof(value))) == METADATA_PARSING_CONTINUE) {
-        if (strlen(attribute) == strlen("hint_id") &&
-            (strncmp(attribute, "hint_id", strlen("hint_id")) == 0)) {
-            if (strlen(value) > 0) {
-                video_encode_metadata->hint_id = atoi(value);
-            }
-        }
-
-        if (strlen(attribute) == strlen("state") &&
-            (strncmp(attribute, "state", strlen("state")) == 0)) {
-            if (strlen(value) > 0) {
-                video_encode_metadata->state = atoi(value);
-            }
-        }
-
-        temp_metadata = NULL;
-    }
-
-    if (parsing_status == METADATA_PARSING_ERR)
-        return -1;
-
-    return 0;
-}
-
-int parse_video_decode_metadata(char *metadata,
-    struct video_decode_metadata_t *video_decode_metadata)
-{
-    char attribute[1024], value[1024], *saveptr;
-    char *temp_metadata = metadata;
-    int parsing_status;
-
-    while ((parsing_status = parse_metadata(temp_metadata, &saveptr,
-            attribute, sizeof(attribute), value, sizeof(value))) == METADATA_PARSING_CONTINUE) {
-        if (strlen(attribute) == strlen("hint_id") &&
-            (strncmp(attribute, "hint_id", strlen("hint_id")) == 0)) {
-            if (strlen(value) > 0) {
-                video_decode_metadata->hint_id = atoi(value);
-            }
-        }
-
-        if (strlen(attribute) == strlen("state") &&
-            (strncmp(attribute, "state", strlen("state")) == 0)) {
-            if (strlen(value) > 0) {
-                video_decode_metadata->state = atoi(value);
-            }
-        }
-
-        temp_metadata = NULL;
-    }
-
-    if (parsing_status == METADATA_PARSING_ERR)
-        return -1;
-
-    return 0;
-}
diff --git a/power/performance.h b/power/performance.h
deleted file mode 100755
index 85a611d..0000000
--- a/power/performance.h
+++ /dev/null
@@ -1,264 +0,0 @@
-/* Copyright (c) 2012, 2014, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define FAILED                  -1
-#define SUCCESS                 0
-#define INDEFINITE_DURATION     0
-
-enum SCREEN_DISPLAY_TYPE {
-    DISPLAY_OFF = 0x00FF,
-};
-
-enum PWR_CLSP_TYPE {
-    ALL_CPUS_PWR_CLPS_DIS = 0x101,
-};
-
-/* For CPUx min freq, the leftmost byte
- * represents the CPU and the
- * rightmost byte represents the frequency
- * All intermediate frequencies on the
- * device are supported. The hex value
- * passed into PerfLock will be multiplied
- * by 10^5. This frequency or the next
- * highest frequency available will be set
- *
- * For example, if 1.4 Ghz is required on
- * CPU0, use 0x20E
- *
- * If the highest available frequency
- * on the device is required, use
- * CPUx_MIN_FREQ_TURBO_MAX
- * where x represents the CPU
- */
-enum CPU0_MIN_FREQ_LVL {
-    CPU0_MIN_FREQ_NONTURBO_MAX = 0x20A,
-    CPU0_MIN_FREQ_TURBO_MAX = 0x2FE,
-};
-
-enum CPU1_MIN_FREQ_LVL {
-    CPU1_MIN_FREQ_NONTURBO_MAX = 0x30A,
-    CPU1_MIN_FREQ_TURBO_MAX = 0x3FE,
-};
-
-enum CPU2_MIN_FREQ_LVL {
-    CPU2_MIN_FREQ_NONTURBO_MAX = 0x40A,
-    CPU2_MIN_FREQ_TURBO_MAX = 0x4FE,
-};
-
-enum CPU3_MIN_FREQ_LVL {
-    CPU3_MIN_FREQ_NONTURBO_MAX = 0x50A,
-    CPU3_MIN_FREQ_TURBO_MAX = 0x5FE,
-};
-
-enum CPU0_MAX_FREQ_LVL {
-    CPU0_MAX_FREQ_NONTURBO_MAX = 0x150A,
-};
-
-enum CPU1_MAX_FREQ_LVL {
-    CPU1_MAX_FREQ_NONTURBO_MAX = 0x160A,
-};
-
-enum CPU2_MAX_FREQ_LVL {
-    CPU2_MAX_FREQ_NONTURBO_MAX = 0x170A,
-};
-
-enum CPU3_MAX_FREQ_LVL {
-    CPU3_MAX_FREQ_NONTURBO_MAX = 0x180A,
-};
-
-enum MIN_CPUS_ONLINE_LVL {
-    CPUS_ONLINE_MIN_2 = 0x702,
-    CPUS_ONLINE_MIN_3 = 0x703,
-    CPUS_ONLINE_MIN_4 = 0x704,
-    CPUS_ONLINE_MPD_OVERRIDE = 0x777,
-    CPUS_ONLINE_MAX = 0x7FF,
-};
-
-enum MAX_CPUS_ONLINE_LVL {
-    CPUS_ONLINE_MAX_LIMIT_1 = 0x8FE,
-    CPUS_ONLINE_MAX_LIMIT_2 = 0x8FD,
-    CPUS_ONLINE_MAX_LIMIT_3 = 0x8FC,
-    CPUS_ONLINE_MAX_LIMIT_4 = 0x8FB,
-    CPUS_ONLINE_MAX_LIMIT_MAX = 0x8FB,
-};
-
-enum SAMPLING_RATE_LVL {
-    MS_500 = 0xBCD,
-    MS_50 = 0xBFA,
-    MS_20 = 0xBFD,
-};
-
-enum ONDEMAND_IO_BUSY_LVL {
-    IO_BUSY_OFF = 0xC00,
-    IO_BUSY_ON = 0xC01,
-};
-
-enum ONDEMAND_SAMPLING_DOWN_FACTOR_LVL {
-    SAMPLING_DOWN_FACTOR_1 = 0xD01,
-    SAMPLING_DOWN_FACTOR_4 = 0xD04,
-};
-
-enum INTERACTIVE_TIMER_RATE_LVL {
-    TR_MS_500 = 0xECD,
-    TR_MS_100 = 0xEF5,
-    TR_MS_50 = 0xEFA,
-    TR_MS_30 = 0xEFC,
-    TR_MS_20 = 0xEFD,
-};
-
-/* This timer rate applicable to cpu0
-    across 8939 series chipset */
-enum INTERACTIVE_TIMER_RATE_LVL_CPU0_8939 {
-    TR_MS_CPU0_500 = 0x30CD,
-    TR_MS_CPU0_100 = 0x30F5,
-    TR_MS_CPU0_50 = 0x30FA,
-    TR_MS_CPU0_30 = 0x30FC,
-    TR_MS_CPU0_20 = 0x30FD,
-};
-
-/* This timer rate applicable to cpu4
-    across 8939 series chipset */
-enum INTERACTIVE_TIMER_RATE_LVL_CPU4_8939 {
-    TR_MS_CPU4_500 = 0x3BCD,
-    TR_MS_CPU4_100 = 0x3BF5,
-    TR_MS_CPU4_50 = 0x3BFA,
-    TR_MS_CPU4_30 = 0x3BFC,
-    TR_MS_CPU4_20 = 0x3BFD,
-};
-
-/* This timer rate applicable to big.little arch */
-enum INTERACTIVE_TIMER_RATE_LVL_BIG_LITTLE {
-    BIG_LITTLE_TR_MS_100 = 0x64,
-    BIG_LITTLE_TR_MS_50 = 0x32,
-    BIG_LITTLE_TR_MS_40 = 0x28,
-    BIG_LITTLE_TR_MS_30 = 0x1E,
-    BIG_LITTLE_TR_MS_20 = 0x14,
-};
-
-/* INTERACTIVE opcodes */
-enum INTERACTIVE_OPCODES {
-    INT_OP_CLUSTER0_TIMER_RATE = 0x41424000,
-    INT_OP_CLUSTER1_TIMER_RATE = 0x41424100,
-    INT_OP_CLUSTER0_USE_SCHED_LOAD = 0x41430000,
-    INT_OP_CLUSTER1_USE_SCHED_LOAD = 0x41430100,
-    INT_OP_CLUSTER0_USE_MIGRATION_NOTIF = 0x41434000,
-    INT_OP_CLUSTER1_USE_MIGRATION_NOTIF = 0x41434100,
-    INT_OP_NOTIFY_ON_MIGRATE = 0x4241C000
-};
-
-enum INTERACTIVE_HISPEED_FREQ_LVL {
-    HS_FREQ_1026 = 0xF0A,
-};
-
-enum INTERACTIVE_HISPEED_LOAD_LVL {
-    HISPEED_LOAD_90 = 0x105A,
-};
-
-enum SYNC_FREQ_LVL {
-    SYNC_FREQ_300 = 0x1103,
-    SYNC_FREQ_600 = 0X1106,
-    SYNC_FREQ_384 = 0x1103,
-    SYNC_FREQ_NONTURBO_MAX = 0x110A,
-    SYNC_FREQ_TURBO = 0x110F,
-};
-
-enum OPTIMAL_FREQ_LVL {
-    OPTIMAL_FREQ_300 = 0x1203,
-    OPTIMAL_FREQ_600 = 0x1206,
-    OPTIMAL_FREQ_384 = 0x1203,
-    OPTIMAL_FREQ_NONTURBO_MAX = 0x120A,
-    OPTIMAL_FREQ_TURBO = 0x120F,
-};
-
-enum SCREEN_PWR_CLPS_LVL {
-    PWR_CLPS_DIS = 0x1300,
-    PWR_CLPS_ENA = 0x1301,
-};
-
-enum THREAD_MIGRATION_LVL {
-    THREAD_MIGRATION_SYNC_OFF = 0x1400,
-};
-
-enum SCHED_GUIDED_LVL {
-    INTERACTIVE_USE_SCHED_LOAD_OFF = 0x5201,
-    INTERACTIVE_USE_MIGRATION_NOTIF_OFF = 0x5301
-};
-
-enum INTERACTIVE_IO_BUSY_LVL {
-    INTERACTIVE_IO_BUSY_OFF = 0x1B00,
-    INTERACTIVE_IO_BUSY_ON = 0x1B01,
-};
-
-enum SCHED_BOOST_LVL {
-    SCHED_BOOST_ON = 0x1E01,
-};
-
-enum CPU4_MIN_FREQ_LVL {
-    CPU4_MIN_FREQ_NONTURBO_MAX = 0x1F0A,
-    CPU4_MIN_FREQ_TURBO_MAX = 0x1FFE,
-};
-
-enum CPU5_MIN_FREQ_LVL {
-    CPU5_MIN_FREQ_NONTURBO_MAX = 0x200A,
-    CPU5_MIN_FREQ_TURBO_MAX = 0x20FE,
-};
-
-enum CPU6_MIN_FREQ_LVL {
-    CPU6_MIN_FREQ_NONTURBO_MAX = 0x210A,
-    CPU6_MIN_FREQ_TURBO_MAX = 0x21FE,
-};
-
-enum CPU7_MIN_FREQ_LVL {
-    CPU7_MIN_FREQ_NONTURBO_MAX = 0x220A,
-    CPU7_MIN_FREQ_TURBO_MAX = 0x22FE,
-};
-
-enum CPU4_MAX_FREQ_LVL {
-    CPU4_MAX_FREQ_NONTURBO_MAX = 0x230A,
-};
-
-enum CPU5_MAX_FREQ_LVL {
-    CPU5_MAX_FREQ_NONTURBO_MAX = 0x240A,
-};
-
-enum CPU6_MAX_FREQ_LVL {
-    CPU6_MAX_FREQ_NONTURBO_MAX = 0x250A,
-};
-
-enum CPU7_MAX_FREQ_LVL {
-    CPU7_MAX_FREQ_NONTURBO_MAX = 0x260A,
-};
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/power/power-8998.c b/power/power-8998.c
deleted file mode 100644
index dbc6542..0000000
--- a/power/power-8998.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (c) 2016, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#define LOG_NIDEBUG 0
-
-#include <errno.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <dlfcn.h>
-#include <stdlib.h>
-
-#define ATRACE_TAG (ATRACE_TAG_POWER | ATRACE_TAG_HAL)
-#define LOG_TAG "QCOM PowerHAL"
-#include <utils/Log.h>
-#include <cutils/trace.h>
-#include <hardware/hardware.h>
-#include <hardware/power.h>
-
-#include "utils.h"
-#include "metadata-defs.h"
-#include "hint-data.h"
-#include "performance.h"
-#include "power-common.h"
-#include "powerhintparser.h"
-
-static int sustained_mode_handle = 0;
-static int vr_mode_handle = 0;
-static int launch_handle = 0;
-static int sustained_performance_mode = 0;
-static int vr_mode = 0;
-static int launch_mode = 0;
-#define CHECK_HANDLE(x) (((x)>0) && ((x)!=-1))
-
-int is_perf_hint_active(int hint)
-{
-    switch (hint) {
-        case SUSTAINED_PERF_HINT_ID:
-            return sustained_performance_mode != 0;
-        case VR_MODE_HINT_ID:
-            return vr_mode != 0;
-        case VR_MODE_SUSTAINED_PERF_HINT_ID:
-            return vr_mode != 0 && sustained_performance_mode != 0;
-    }
-    return 0;
-}
-
-static int process_sustained_perf_hint(void *data)
-{
-    int duration = 0;
-    int *resource_values = NULL;
-    int resources = 0;
-
-    if (data && sustained_performance_mode == 0) {
-        if (vr_mode == 0) { // Sustained mode only.
-            resource_values = getPowerhint(SUSTAINED_PERF_HINT_ID, &resources);
-            if (!resource_values) {
-                ALOGE("Can't get sustained perf hints from xml ");
-                return HINT_NONE;
-            }
-            sustained_mode_handle = interaction_with_handle(
-                sustained_mode_handle, duration, resources, resource_values);
-            if (!CHECK_HANDLE(sustained_mode_handle)) {
-                ALOGE("Failed interaction_with_handle for sustained_mode_handle");
-                return HINT_NONE;
-            }
-        } else if (vr_mode == 1) { // Sustained + VR mode.
-            release_request(vr_mode_handle);
-            resource_values = getPowerhint(VR_MODE_SUSTAINED_PERF_HINT_ID, &resources);
-            if (!resource_values) {
-                ALOGE("Can't get VR mode sustained perf hints from xml ");
-                return HINT_NONE;
-            }
-            sustained_mode_handle = interaction_with_handle(
-                sustained_mode_handle, duration, resources, resource_values);
-            if (!CHECK_HANDLE(sustained_mode_handle)) {
-                ALOGE("Failed interaction_with_handle for sustained_mode_handle");
-                return HINT_NONE;
-            }
-        }
-        sustained_performance_mode = 1;
-    } else if (sustained_performance_mode == 1) {
-        release_request(sustained_mode_handle);
-        if (vr_mode == 1) { // Switch back to VR Mode.
-            resource_values = getPowerhint(VR_MODE_HINT_ID, &resources);
-            if (!resource_values) {
-                ALOGE("Can't get VR mode perf hints from xml ");
-                return HINT_NONE;
-            }
-            vr_mode_handle = interaction_with_handle(
-                vr_mode_handle, duration, resources, resource_values);
-            if (!CHECK_HANDLE(vr_mode_handle)) {
-                ALOGE("Failed interaction_with_handle for vr_mode_handle");
-                return HINT_NONE;
-            }
-        }
-        sustained_performance_mode = 0;
-    }
-    return HINT_HANDLED;
-}
-
-static int process_vr_mode_hint(void *data)
-{
-    int duration = 0;
-    int *resource_values = NULL;
-    int resources = 0;
-
-    if (data && vr_mode == 0) {
-        if (sustained_performance_mode == 0) { // VR mode only.
-            resource_values = getPowerhint(VR_MODE_HINT_ID, &resources);
-            if (!resource_values) {
-                ALOGE("Can't get VR mode perf hints from xml ");
-                return HINT_NONE;
-            }
-            vr_mode_handle = interaction_with_handle(
-                vr_mode_handle, duration, resources, resource_values);
-            if (!CHECK_HANDLE(vr_mode_handle)) {
-                ALOGE("Failed interaction_with_handle for vr_mode_handle");
-                return HINT_NONE;
-            }
-        } else if (sustained_performance_mode == 1) { // Sustained + VR mode.
-            release_request(sustained_mode_handle);
-            resource_values = getPowerhint(VR_MODE_SUSTAINED_PERF_HINT_ID, &resources);
-            if (!resource_values) {
-                ALOGE("Can't get VR mode sustained perf hints from xml ");
-                return HINT_NONE;
-            }
-            vr_mode_handle = interaction_with_handle(
-                vr_mode_handle, duration, resources, resource_values);
-            if (!CHECK_HANDLE(vr_mode_handle)) {
-                ALOGE("Failed interaction_with_handle for vr_mode_handle");
-                return HINT_NONE;
-            }
-        }
-        vr_mode = 1;
-    } else if (vr_mode == 1) {
-        release_request(vr_mode_handle);
-        if (sustained_performance_mode == 1) { // Switch back to sustained Mode.
-            resource_values = getPowerhint(SUSTAINED_PERF_HINT_ID, &resources);
-            if (!resource_values) {
-                ALOGE("Can't get sustained perf hints from xml ");
-                return HINT_NONE;
-            }
-            sustained_mode_handle = interaction_with_handle(
-                sustained_mode_handle, duration, resources, resource_values);
-            if (!CHECK_HANDLE(sustained_mode_handle)) {
-                ALOGE("Failed interaction_with_handle for sustained_mode_handle");
-                return HINT_NONE;
-            }
-        }
-        vr_mode = 0;
-    }
-
-    return HINT_HANDLED;
-}
-
-static int process_boost(int boost_handle, int duration)
-{
-    int *resource_values;
-    int resources;
-
-    resource_values = getPowerhint(BOOST_HINT_ID, &resources);
-
-    if (resource_values != NULL) {
-        boost_handle = interaction_with_handle(
-            boost_handle, duration, resources, resource_values);
-        if (!CHECK_HANDLE(boost_handle)) {
-            ALOGE("Failed interaction_with_handle for boost_handle");
-        }
-    }
-
-    return boost_handle;
-}
-
-static int process_video_encode_hint(void *data)
-{
-    static int boost_handle = -1;
-
-    if (data) {
-        // TODO: remove the launch boost based on camera launch time
-        int duration = 2000; // boosts 2s for starting encoding
-        boost_handle = process_boost(boost_handle, duration);
-        ALOGD("LAUNCH ENCODER-ON: %d MS", duration);
-        int *resource_values = NULL;
-        int resources = 0;
-        resource_values = getPowerhint(DEFAULT_VIDEO_ENCODE_HINT_ID, &resources);
-        if (resource_values != NULL)
-            perform_hint_action(DEFAULT_VIDEO_ENCODE_HINT_ID, resource_values, resources);
-        ALOGD("Video Encode hint start");
-        return HINT_HANDLED;
-    } else {
-        undo_hint_action(DEFAULT_VIDEO_ENCODE_HINT_ID);
-        ALOGD("Video Encode hint stop");
-        return HINT_HANDLED;
-    }
-    return HINT_NONE;
-}
-
-static int process_activity_launch_hint(void *data)
-{
-    // boost will timeout in 1.25s
-    int duration = 1250;
-    ATRACE_BEGIN("launch");
-    if (sustained_performance_mode || vr_mode) {
-        ATRACE_END();
-        return HINT_HANDLED;
-    }
-
-    ALOGD("LAUNCH HINT: %s", data ? "ON" : "OFF");
-    // restart the launch hint if the framework has not yet released
-    // this shouldn't happen, but we've seen bugs where it could
-    if (data) {
-        launch_handle = process_boost(launch_handle, duration);
-        if (launch_handle > 0) {
-            launch_mode = 1;
-            ALOGD("Activity launch hint handled");
-            ATRACE_INT("launch_lock", 1);
-            ATRACE_END();
-            return HINT_HANDLED;
-        } else {
-            ATRACE_END();
-            return HINT_NONE;
-        }
-    } else if (data == NULL  && launch_mode == 1) {
-        // framework release hints aren't necessarily reliable
-        // always wait the full duration
-        // release_request(launch_handle);
-        ATRACE_INT("launch_lock", 0);
-        launch_mode = 0;
-        ATRACE_END();
-        return HINT_HANDLED;
-    }
-    ATRACE_END();
-    return HINT_NONE;
-}
-
-int power_hint_override(power_hint_t hint, void *data)
-{
-    int ret_val = HINT_NONE;
-    switch(hint) {
-        case POWER_HINT_VIDEO_ENCODE:
-            ret_val = process_video_encode_hint(data);
-            break;
-        case POWER_HINT_SUSTAINED_PERFORMANCE:
-            ret_val = process_sustained_perf_hint(data);
-            break;
-        case POWER_HINT_VR_MODE:
-            ret_val = process_vr_mode_hint(data);
-            break;
-        case POWER_HINT_LAUNCH:
-            ret_val = process_activity_launch_hint(data);
-            break;
-        default:
-            break;
-    }
-    return ret_val;
-}
-
-int set_interactive_override(int UNUSED(on))
-{
-    return HINT_HANDLED; /* Don't excecute this code path, not in use */
-}
diff --git a/power/power-common.h b/power/power-common.h
deleted file mode 100644
index aff3cd2..0000000
--- a/power/power-common.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2013, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#define NODE_MAX (64)
-
-#define SCALING_GOVERNOR_PATH "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
-#define DCVS_CPU0_SLACK_MAX_NODE "/sys/module/msm_dcvs/cores/cpu0/slack_time_max_us"
-#define DCVS_CPU0_SLACK_MIN_NODE "/sys/module/msm_dcvs/cores/cpu0/slack_time_min_us"
-#define MPDECISION_SLACK_MAX_NODE "/sys/module/msm_mpdecision/slack_time_max_us"
-#define MPDECISION_SLACK_MIN_NODE "/sys/module/msm_mpdecision/slack_time_min_us"
-#define SCALING_MIN_FREQ "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq"
-#define ONDEMAND_GOVERNOR "ondemand"
-#define INTERACTIVE_GOVERNOR "interactive"
-#define SCHEDUTIL_GOVERNOR "schedutil"
-#define SCHED_GOVERNOR "sched"
-
-#define MSMDCVS_GOVERNOR "msm-dcvs"
-#define SCHED_GOVERNOR "sched"
-
-#define HINT_HANDLED (0)
-#define HINT_NONE (-1)
-
-enum CPU_GOV_CHECK {
-    CPU0 = 0,
-    CPU1 = 1,
-    CPU2 = 2,
-    CPU3 = 3
-};
-
-#define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))
diff --git a/power/power-helper.c b/power/power-helper.c
deleted file mode 100644
index e449ac1..0000000
--- a/power/power-helper.c
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#define LOG_NIDEBUG 0
-
-#include <errno.h>
-#include <inttypes.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <dlfcn.h>
-#include <stdlib.h>
-
-#define LOG_TAG "QCOM PowerHAL"
-#include <utils/Log.h>
-#include <hardware/power.h>
-
-#include "utils.h"
-#include "metadata-defs.h"
-#include "hint-data.h"
-#include "performance.h"
-#include "power-common.h"
-#include "power-helper.h"
-
-#ifndef RPM_SYSTEM_STAT
-#define RPM_SYSTEM_STAT "/d/system_stats"
-#endif
-
-#ifndef WLAN_POWER_STAT
-#define WLAN_POWER_STAT "/d/wlan0/power_stats"
-#endif
-
-#define ARRAY_SIZE(x) (sizeof((x))/sizeof((x)[0]))
-#define LINE_SIZE 128
-
-const char *rpm_stat_params[MAX_RPM_PARAMS] = {
-    "count",
-    "actual last sleep(msec)",
-};
-
-const char *master_stat_params[MAX_RPM_PARAMS] = {
-    "Accumulated XO duration",
-    "XO Count",
-};
-
-struct stat_pair rpm_stat_map[] = {
-    { RPM_MODE_XO,   "RPM Mode:vlow", rpm_stat_params, ARRAY_SIZE(rpm_stat_params) },
-    { RPM_MODE_VMIN, "RPM Mode:vmin", rpm_stat_params, ARRAY_SIZE(rpm_stat_params) },
-    { VOTER_APSS,    "APSS",    master_stat_params, ARRAY_SIZE(master_stat_params) },
-    { VOTER_MPSS,    "MPSS",    master_stat_params, ARRAY_SIZE(master_stat_params) },
-    { VOTER_ADSP,    "ADSP",    master_stat_params, ARRAY_SIZE(master_stat_params) },
-    { VOTER_SLPI,    "SLPI",    master_stat_params, ARRAY_SIZE(master_stat_params) },
-};
-
-
-const char *wlan_power_stat_params[] = {
-    "cumulative_sleep_time_ms",
-    "cumulative_total_on_time_ms",
-    "deep_sleep_enter_counter",
-    "last_deep_sleep_enter_tstamp_ms"
-};
-
-struct stat_pair wlan_stat_map[] = {
-    { WLAN_POWER_DEBUG_STATS, "POWER DEBUG STATS", wlan_power_stat_params, ARRAY_SIZE(wlan_power_stat_params) },
-};
-
-static int saved_dcvs_cpu0_slack_max = -1;
-static int saved_dcvs_cpu0_slack_min = -1;
-static int saved_mpdecision_slack_max = -1;
-static int saved_mpdecision_slack_min = -1;
-static int saved_interactive_mode = -1;
-static int slack_node_rw_failed = 0;
-static int display_hint_sent;
-
-void power_init(void)
-{
-    ALOGI("QCOM power HAL initing.");
-}
-
-int __attribute__ ((weak)) power_hint_override(power_hint_t UNUSED(hint),
-                                               void *UNUSED(data))
-{
-    return HINT_NONE;
-}
-
-/* Declare function before use */
-void interaction(int duration, int num_args, int opt_list[]);
-
-void power_hint(power_hint_t hint, void *data)
-{
-    /* Check if this hint has been overridden. */
-    if (power_hint_override(hint, data) == HINT_HANDLED) {
-        /* The power_hint has been handled. We can skip the rest. */
-        return;
-    }
-
-    switch(hint) {
-        case POWER_HINT_VSYNC:
-        break;
-        case POWER_HINT_SUSTAINED_PERFORMANCE:
-            ALOGD("Sustained perf power hint not handled in power_hint_override");
-            break;
-        case POWER_HINT_VR_MODE:
-            ALOGD("VR mode power hint not handled in power_hint_override");
-            break;
-        case POWER_HINT_INTERACTION:
-        {
-            int resources[] = {0x702, 0x20F, 0x30F};
-            int duration = 3000;
-
-            interaction(duration, sizeof(resources)/sizeof(resources[0]), resources);
-        }
-            break;
-        default:
-        break;
-    }
-}
-
-int __attribute__ ((weak)) is_perf_hint_active(int UNUSED(hint))
-{
-    return 0;
-}
-
-int __attribute__ ((weak)) set_interactive_override(int UNUSED(on))
-{
-    return HINT_NONE;
-}
-
-void power_set_interactive(int on)
-{
-    char governor[80];
-    char tmp_str[NODE_MAX];
-    struct video_encode_metadata_t video_encode_metadata;
-    int rc = 0;
-
-    if (set_interactive_override(on) == HINT_HANDLED) {
-        return;
-    }
-
-    ALOGD("Got set_interactive hint");
-
-    if (get_scaling_governor(governor, sizeof(governor)) == -1) {
-        ALOGE("Can't obtain scaling governor.");
-
-        return;
-    }
-
-    if (!on) {
-        /* Display off. */
-        if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) &&
-                (strlen(governor) == strlen(ONDEMAND_GOVERNOR))) {
-            int resource_values[] = {DISPLAY_OFF, MS_500, THREAD_MIGRATION_SYNC_OFF};
-
-            if (!display_hint_sent) {
-                perform_hint_action(DISPLAY_STATE_HINT_ID,
-                        resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
-                display_hint_sent = 1;
-            }
-        } else if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
-                (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
-            int resource_values[] = {TR_MS_50, THREAD_MIGRATION_SYNC_OFF};
-
-            if (!display_hint_sent) {
-                perform_hint_action(DISPLAY_STATE_HINT_ID,
-                        resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
-                display_hint_sent = 1;
-            }
-        } else if ((strncmp(governor, MSMDCVS_GOVERNOR, strlen(MSMDCVS_GOVERNOR)) == 0) &&
-                (strlen(governor) == strlen(MSMDCVS_GOVERNOR))) {
-            if (saved_interactive_mode == 1){
-                /* Display turned off. */
-                if (sysfs_read(DCVS_CPU0_SLACK_MAX_NODE, tmp_str, NODE_MAX - 1)) {
-                    if (!slack_node_rw_failed) {
-                        ALOGE("Failed to read from %s", DCVS_CPU0_SLACK_MAX_NODE);
-                    }
-
-                    rc = 1;
-                } else {
-                    saved_dcvs_cpu0_slack_max = atoi(tmp_str);
-                }
-
-                if (sysfs_read(DCVS_CPU0_SLACK_MIN_NODE, tmp_str, NODE_MAX - 1)) {
-                    if (!slack_node_rw_failed) {
-                        ALOGE("Failed to read from %s", DCVS_CPU0_SLACK_MIN_NODE);
-                    }
-
-                    rc = 1;
-                } else {
-                    saved_dcvs_cpu0_slack_min = atoi(tmp_str);
-                }
-
-                if (sysfs_read(MPDECISION_SLACK_MAX_NODE, tmp_str, NODE_MAX - 1)) {
-                    if (!slack_node_rw_failed) {
-                        ALOGE("Failed to read from %s", MPDECISION_SLACK_MAX_NODE);
-                    }
-
-                    rc = 1;
-                } else {
-                    saved_mpdecision_slack_max = atoi(tmp_str);
-                }
-
-                if (sysfs_read(MPDECISION_SLACK_MIN_NODE, tmp_str, NODE_MAX - 1)) {
-                    if(!slack_node_rw_failed) {
-                        ALOGE("Failed to read from %s", MPDECISION_SLACK_MIN_NODE);
-                    }
-
-                    rc = 1;
-                } else {
-                    saved_mpdecision_slack_min = atoi(tmp_str);
-                }
-
-                /* Write new values. */
-                if (saved_dcvs_cpu0_slack_max != -1) {
-                    snprintf(tmp_str, NODE_MAX, "%d", 10 * saved_dcvs_cpu0_slack_max);
-
-                    if (sysfs_write(DCVS_CPU0_SLACK_MAX_NODE, tmp_str) != 0) {
-                        if (!slack_node_rw_failed) {
-                            ALOGE("Failed to write to %s", DCVS_CPU0_SLACK_MAX_NODE);
-                        }
-
-                        rc = 1;
-                    }
-                }
-
-                if (saved_dcvs_cpu0_slack_min != -1) {
-                    snprintf(tmp_str, NODE_MAX, "%d", 10 * saved_dcvs_cpu0_slack_min);
-
-                    if (sysfs_write(DCVS_CPU0_SLACK_MIN_NODE, tmp_str) != 0) {
-                        if(!slack_node_rw_failed) {
-                            ALOGE("Failed to write to %s", DCVS_CPU0_SLACK_MIN_NODE);
-                        }
-
-                        rc = 1;
-                    }
-                }
-
-                if (saved_mpdecision_slack_max != -1) {
-                    snprintf(tmp_str, NODE_MAX, "%d", 10 * saved_mpdecision_slack_max);
-
-                    if (sysfs_write(MPDECISION_SLACK_MAX_NODE, tmp_str) != 0) {
-                        if(!slack_node_rw_failed) {
-                            ALOGE("Failed to write to %s", MPDECISION_SLACK_MAX_NODE);
-                        }
-
-                        rc = 1;
-                    }
-                }
-
-                if (saved_mpdecision_slack_min != -1) {
-                    snprintf(tmp_str, NODE_MAX, "%d", 10 * saved_mpdecision_slack_min);
-
-                    if (sysfs_write(MPDECISION_SLACK_MIN_NODE, tmp_str) != 0) {
-                        if(!slack_node_rw_failed) {
-                            ALOGE("Failed to write to %s", MPDECISION_SLACK_MIN_NODE);
-                        }
-
-                        rc = 1;
-                    }
-                }
-            }
-
-            slack_node_rw_failed = rc;
-        }
-    } else {
-        /* Display on. */
-        if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) &&
-                (strlen(governor) == strlen(ONDEMAND_GOVERNOR))) {
-            undo_hint_action(DISPLAY_STATE_HINT_ID);
-            display_hint_sent = 0;
-        } else if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
-                (strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
-            undo_hint_action(DISPLAY_STATE_HINT_ID);
-            display_hint_sent = 0;
-        } else if ((strncmp(governor, MSMDCVS_GOVERNOR, strlen(MSMDCVS_GOVERNOR)) == 0) &&
-                (strlen(governor) == strlen(MSMDCVS_GOVERNOR))) {
-            if (saved_interactive_mode == -1 || saved_interactive_mode == 0) {
-                /* Display turned on. Restore if possible. */
-                if (saved_dcvs_cpu0_slack_max != -1) {
-                    snprintf(tmp_str, NODE_MAX, "%d", saved_dcvs_cpu0_slack_max);
-
-                    if (sysfs_write(DCVS_CPU0_SLACK_MAX_NODE, tmp_str) != 0) {
-                        if (!slack_node_rw_failed) {
-                            ALOGE("Failed to write to %s", DCVS_CPU0_SLACK_MAX_NODE);
-                        }
-
-                        rc = 1;
-                    }
-                }
-
-                if (saved_dcvs_cpu0_slack_min != -1) {
-                    snprintf(tmp_str, NODE_MAX, "%d", saved_dcvs_cpu0_slack_min);
-
-                    if (sysfs_write(DCVS_CPU0_SLACK_MIN_NODE, tmp_str) != 0) {
-                        if (!slack_node_rw_failed) {
-                            ALOGE("Failed to write to %s", DCVS_CPU0_SLACK_MIN_NODE);
-                        }
-
-                        rc = 1;
-                    }
-                }
-
-                if (saved_mpdecision_slack_max != -1) {
-                    snprintf(tmp_str, NODE_MAX, "%d", saved_mpdecision_slack_max);
-
-                    if (sysfs_write(MPDECISION_SLACK_MAX_NODE, tmp_str) != 0) {
-                        if (!slack_node_rw_failed) {
-                            ALOGE("Failed to write to %s", MPDECISION_SLACK_MAX_NODE);
-                        }
-
-                        rc = 1;
-                    }
-                }
-
-                if (saved_mpdecision_slack_min != -1) {
-                    snprintf(tmp_str, NODE_MAX, "%d", saved_mpdecision_slack_min);
-
-                    if (sysfs_write(MPDECISION_SLACK_MIN_NODE, tmp_str) != 0) {
-                        if (!slack_node_rw_failed) {
-                            ALOGE("Failed to write to %s", MPDECISION_SLACK_MIN_NODE);
-                        }
-
-                        rc = 1;
-                    }
-                }
-            }
-
-            slack_node_rw_failed = rc;
-        }
-    }
-
-    saved_interactive_mode = !!on;
-}
-
-
-static int parse_stats(const char **params, size_t params_size,
-                       uint64_t *list, FILE *fp) {
-    ssize_t nread;
-    size_t len = LINE_SIZE;
-    char *line;
-    size_t params_read = 0;
-    size_t i;
-
-    line = malloc(len);
-    if (!line) {
-        ALOGE("%s: no memory to hold line", __func__);
-        return -ENOMEM;
-    }
-
-    while ((params_read < params_size) &&
-        (nread = getline(&line, &len, fp) > 0)) {
-        char *key = line + strspn(line, " \t");
-        char *value = strchr(key, ':');
-        if (!value || (value > (line + len)))
-            continue;
-        *value++ = '\0';
-
-        for (i = 0; i < params_size; i++) {
-            if (!strcmp(key, params[i])) {
-                list[i] = strtoull(value, NULL, 0);
-                params_read++;
-                break;
-            }
-        }
-    }
-    free(line);
-
-    return 0;
-}
-
-
-static int extract_stats(uint64_t *list, char *file,
-                         struct stat_pair *map, size_t map_size) {
-    FILE *fp;
-    ssize_t read;
-    size_t len = LINE_SIZE;
-    char *line;
-    size_t i, stats_read = 0;
-    int ret = 0;
-
-    fp = fopen(file, "re");
-    if (fp == NULL) {
-        ALOGE("%s: failed to open: %s Error = %s", __func__, file, strerror(errno));
-        return -errno;
-    }
-
-    line = malloc(len);
-    if (!line) {
-        ALOGE("%s: no memory to hold line", __func__);
-        fclose(fp);
-        return -ENOMEM;
-    }
-
-    while ((stats_read < map_size) && (read = getline(&line, &len, fp) != -1)) {
-        size_t begin = strspn(line, " \t");
-
-        for (i = 0; i < map_size; i++) {
-            if (!strncmp(line + begin, map[i].label, strlen(map[i].label))) {
-                stats_read++;
-                break;
-            }
-        }
-
-        if (i == map_size)
-            continue;
-
-        ret = parse_stats(map[i].parameters, map[i].num_parameters,
-                          &list[map[i].stat * MAX_RPM_PARAMS], fp);
-        if (ret < 0)
-            break;
-    }
-    free(line);
-    fclose(fp);
-
-    return ret;
-}
-
-int extract_platform_stats(uint64_t *list) {
-    return extract_stats(list, RPM_SYSTEM_STAT, rpm_stat_map, ARRAY_SIZE(rpm_stat_map));
-}
-
-int extract_wlan_stats(uint64_t *list) {
-    return extract_stats(list, WLAN_POWER_STAT, wlan_stat_map, ARRAY_SIZE(wlan_stat_map));
-}
diff --git a/power/powerhintparser.c b/power/powerhintparser.c
deleted file mode 100644
index 31d9625..0000000
--- a/power/powerhintparser.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#define LOG_TAG "QCOM PowerHAL"
-
-#include <unistd.h>
-#include <log/log.h>
-#include <libxml/parser.h>
-#include "powerhintparser.h"
-
-int parsePowerhintXML() {
-
-    xmlDocPtr doc;
-    xmlNodePtr currNode;
-    const char *opcode_str, *value_str, *type_str;
-    int opcode = 0, value = 0, type = 0;
-    int numParams = 0;
-    static int hintCount;
-
-    if(access(POWERHINT_XML, F_OK) < 0) {
-        return -1;
-    }
-
-    doc = xmlReadFile(POWERHINT_XML, "UTF-8", XML_PARSE_RECOVER);
-    if(!doc) {
-        ALOGE("Document not parsed successfully");
-        return -1;
-    }
-
-    currNode = xmlDocGetRootElement(doc);
-    if(!currNode) {
-        ALOGE("Empty document");
-        xmlFreeDoc(doc);
-        xmlCleanupParser();
-        return -1;
-    }
-
-    // Confirm the root-element of the tree
-    if(xmlStrcmp(currNode->name, BAD_CAST "Powerhint")) {
-        ALOGE("document of the wrong type, root node != root");
-        xmlFreeDoc(doc);
-        xmlCleanupParser();
-        return -1;
-    }
-
-    currNode = currNode->xmlChildrenNode;
-
-    for(; currNode != NULL; currNode=currNode->next) {
-
-        if(currNode->type != XML_ELEMENT_NODE)
-            continue;
-
-        xmlNodePtr node = currNode;
-
-        if(hintCount == MAX_HINT) {
-            ALOGE("Number of hints exceeded the max count of %d\n",MAX_HINT);
-            break;
-        }
-
-        if(!xmlStrcmp(node->name, BAD_CAST "Hint")) {
-            if(xmlHasProp(node, BAD_CAST "type")) {
-               type_str = (const char*)xmlGetProp(node, BAD_CAST "type");
-               if (type_str == NULL)
-               {
-                   ALOGE("xmlGetProp failed on type");
-                   xmlFreeDoc(doc);
-                   xmlCleanupParser();
-                   return -1;
-               }
-               type = strtol(type_str, NULL, 16);
-            }
-
-            node = node->children;
-            while(node != NULL) {
-                if(!xmlStrcmp(node->name, BAD_CAST "Resource")) {
-
-                    if(xmlHasProp(node, BAD_CAST "opcode")) {
-                        opcode_str  = (const char*)xmlGetProp(node, BAD_CAST "opcode");
-                        if (opcode_str == NULL)
-                        {
-                            ALOGE("xmlGetProp failed on opcode");
-                            xmlFreeDoc(doc);
-                            xmlCleanupParser();
-                            return -1;
-                        }
-                        opcode = strtol(opcode_str, NULL, 16);
-                    }
-                    if(xmlHasProp(node, BAD_CAST "value")) {
-                        value_str = (const char*)xmlGetProp(node, BAD_CAST "value");
-                        if (value_str == NULL)
-                        {
-                            ALOGE("xmlGetProp failed on value");
-                            xmlFreeDoc(doc);
-                            xmlCleanupParser();
-                            return -1;
-                        }
-                        value = strtol(value_str, NULL, 16);
-                    }
-                    if(opcode > 0) {
-                        if(numParams < (MAX_PARAM-1)) {
-                            powerhint[hintCount].paramList[numParams++] = opcode;
-                            powerhint[hintCount].paramList[numParams++] = value;
-                        } else {
-                            ALOGE("Maximum parameters exceeded for Hint ID %x\n",type);
-                            opcode = value = 0;
-                            break;
-                        }
-                    }
-
-                    opcode = value = 0;
-                }
-                node = node->next;
-            }
-            powerhint[hintCount].type = type;
-            powerhint[hintCount].numParams = numParams;
-            numParams = 0;
-        }
-        hintCount++;
-    }
-
-    xmlFreeDoc(doc);
-    xmlCleanupParser();
-    return 0;
-}
-
-int* getPowerhint(int hint_id, int *params) {
-
-   int *result = NULL;
-
-   if(!hint_id)
-       return result;
-
-    ALOGV("Powerhal hint received=%x\n",hint_id);
-
-    if(!powerhint[0].numParams) {
-       parsePowerhintXML();
-    }
-
-    for(int i = 0; i < MAX_HINT; i++) {
-       if(hint_id == powerhint[i].type) {
-          *params = powerhint[i].numParams;
-          result = powerhint[i].paramList;
-          break;
-       }
-    }
-
-    return result;
-}
diff --git a/power/powerhintparser.h b/power/powerhintparser.h
deleted file mode 100644
index c1da1de..0000000
--- a/power/powerhintparser.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (c) 2016, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef __POWERHINTPARSER__
-#define __POWERHINTPARSER__
-
-#define POWERHINT_XML      "/vendor/etc/powerhint.xml"
-#define MAX_HINT 8
-#define MAX_PARAM 30
-
-typedef struct perflock_param_t {
-    int type;
-    int numParams;
-    int paramList[MAX_PARAM];//static limit on number of hints - 15
-}perflock_param_t;
-
-static perflock_param_t powerhint[MAX_HINT];
-
-int parsePowerhintXML();
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int *getPowerhint(int, int *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __POWERHINTPARSER__ */
diff --git a/power/utils.c b/power/utils.c
deleted file mode 100644
index 9661e5e..0000000
--- a/power/utils.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * Copyright (c) 2012-2013,2015-2016, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#define LOG_NIDEBUG 0
-
-#include <dlfcn.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "utils.h"
-#include "list.h"
-#include "hint-data.h"
-#include "power-common.h"
-
-#define LOG_TAG "QCOM PowerHAL"
-#include <utils/Log.h>
-
-static void *qcopt_handle;
-static int (*perf_lock_acq)(unsigned long handle, int duration,
-    int list[], int numArgs);
-static int (*perf_lock_rel)(unsigned long handle);
-static struct list_node active_hint_list_head;
-
-static void *get_qcopt_handle()
-{
-    char qcopt_lib_path[PATH_MAX] = {0};
-    void *handle = NULL;
-
-    dlerror();
-
-    if (property_get("ro.vendor.extension_library", qcopt_lib_path,
-                NULL)) {
-        handle = dlopen(qcopt_lib_path, RTLD_NOW);
-        if (!handle) {
-            ALOGE("Unable to open %s: %s\n", qcopt_lib_path,
-                    dlerror());
-        }
-    }
-
-    return handle;
-}
-
-static void __attribute__ ((constructor)) initialize(void)
-{
-    qcopt_handle = get_qcopt_handle();
-
-    if (!qcopt_handle) {
-        ALOGE("Failed to get qcopt handle.\n");
-    } else {
-        /*
-         * qc-opt handle obtained. Get the perflock acquire/release
-         * function pointers.
-         */
-        perf_lock_acq = dlsym(qcopt_handle, "perf_lock_acq");
-
-        if (!perf_lock_acq) {
-            ALOGE("Unable to get perf_lock_acq function handle.\n");
-        }
-
-        perf_lock_rel = dlsym(qcopt_handle, "perf_lock_rel");
-
-        if (!perf_lock_rel) {
-            ALOGE("Unable to get perf_lock_rel function handle.\n");
-        }
-    }
-}
-
-static void __attribute__ ((destructor)) cleanup(void)
-{
-    if (qcopt_handle) {
-        if (dlclose(qcopt_handle))
-            ALOGE("Error occurred while closing qc-opt library.");
-    }
-}
-
-int sysfs_read(char *path, char *s, int num_bytes)
-{
-    char buf[80];
-    int count;
-    int ret = 0;
-    int fd = open(path, O_RDONLY);
-
-    if (fd < 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGE("Error opening %s: %s\n", path, buf);
-
-        return -1;
-    }
-
-    if ((count = read(fd, s, num_bytes - 1)) < 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGE("Error writing to %s: %s\n", path, buf);
-
-        ret = -1;
-    } else {
-        s[count] = '\0';
-    }
-
-    close(fd);
-
-    return ret;
-}
-
-int sysfs_write(char *path, char *s)
-{
-    char buf[80];
-    int len;
-    int ret = 0;
-    int fd = open(path, O_WRONLY);
-
-    if (fd < 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGE("Error opening %s: %s\n", path, buf);
-        return -1 ;
-    }
-
-    len = write(fd, s, strlen(s));
-    if (len < 0) {
-        strerror_r(errno, buf, sizeof(buf));
-        ALOGE("Error writing to %s: %s\n", path, buf);
-
-        ret = -1;
-    }
-
-    close(fd);
-
-    return ret;
-}
-
-int get_scaling_governor(char governor[], int size)
-{
-    if (sysfs_read(SCALING_GOVERNOR_PATH, governor,
-                size) == -1) {
-        // Can't obtain the scaling governor. Return.
-        return -1;
-    } else {
-        // Strip newline at the end.
-        int len = strlen(governor);
-
-        len--;
-
-        while (len >= 0 && (governor[len] == '\n' || governor[len] == '\r'))
-            governor[len--] = '\0';
-    }
-
-    return 0;
-}
-
-int is_interactive_governor(char* governor) {
-   if (strncmp(governor, INTERACTIVE_GOVERNOR, (strlen(INTERACTIVE_GOVERNOR)+1)) == 0)
-      return 1;
-   return 0;
-}
-
-void interaction(int duration, int num_args, int opt_list[])
-{
-#ifdef INTERACTION_BOOST
-    static int lock_handle = 0;
-
-    if (duration < 0 || num_args < 1 || opt_list[0] == 0)
-        return;
-
-    if (qcopt_handle) {
-        if (perf_lock_acq) {
-            lock_handle = perf_lock_acq(lock_handle, duration, opt_list, num_args);
-            if (lock_handle == -1)
-                ALOGE("Failed to acquire lock.");
-        }
-    }
-#endif
-}
-
-int interaction_with_handle(int lock_handle, int duration, int num_args, int opt_list[])
-{
-#ifdef INTERACTION_BOOST
-    if (duration < 0 || num_args < 1 || opt_list[0] == 0)
-        return 0;
-
-    if (qcopt_handle) {
-        if (perf_lock_acq) {
-            lock_handle = perf_lock_acq(lock_handle, duration, opt_list, num_args);
-            if (lock_handle == -1)
-                ALOGE("Failed to acquire lock.");
-        }
-    }
-    return lock_handle;
-#else
-    return 0;
-#endif
-}
-
-void release_request(int lock_handle) {
-    if (qcopt_handle && perf_lock_rel)
-        perf_lock_rel(lock_handle);
-}
-
-void perform_hint_action(int hint_id, int resource_values[], int num_resources)
-{
-    if (qcopt_handle) {
-        struct hint_data temp_hint_data = {
-            .hint_id = hint_id
-        };
-        struct list_node *found_node = find_node(&active_hint_list_head,
-                                                 &temp_hint_data);
-        if (found_node) {
-            ALOGE("hint ID %d already active", hint_id);
-            return;
-        }
-        if (perf_lock_acq) {
-            /* Acquire an indefinite lock for the requested resources. */
-            int lock_handle = perf_lock_acq(0, 0, resource_values,
-                    num_resources);
-
-            if (lock_handle == -1) {
-                ALOGE("%s: Failed to acquire lock.", __func__);
-            } else {
-                /* Add this handle to our internal hint-list. */
-                struct hint_data *new_hint =
-                    (struct hint_data *)malloc(sizeof(struct hint_data));
-
-                if (new_hint) {
-                    if (!active_hint_list_head.compare) {
-                        active_hint_list_head.compare =
-                            (int (*)(void *, void *))hint_compare;
-                        active_hint_list_head.dump = (void (*)(void *))hint_dump;
-                    }
-
-                    new_hint->hint_id = hint_id;
-                    new_hint->perflock_handle = lock_handle;
-
-                    if (add_list_node(&active_hint_list_head, new_hint) == NULL) {
-                        free(new_hint);
-                        /* Can't keep track of this lock. Release it. */
-                        if (perf_lock_rel)
-                            perf_lock_rel(lock_handle);
-
-                        ALOGE("Failed to process hint.");
-                    }
-                } else {
-                    /* Can't keep track of this lock. Release it. */
-                    if (perf_lock_rel)
-                        perf_lock_rel(lock_handle);
-
-                    ALOGE("Failed to process hint.");
-                }
-            }
-        }
-    }
-}
-
-void undo_hint_action(int hint_id)
-{
-    if (qcopt_handle) {
-        if (perf_lock_rel) {
-            /* Get hint-data associated with this hint-id */
-            struct list_node *found_node;
-            struct hint_data temp_hint_data = {
-                .hint_id = hint_id
-            };
-
-            found_node = find_node(&active_hint_list_head,
-                    &temp_hint_data);
-
-            if (found_node) {
-                /* Release this lock. */
-                struct hint_data *found_hint_data =
-                    (struct hint_data *)(found_node->data);
-
-                if (found_hint_data) {
-                    if (perf_lock_rel(found_hint_data->perflock_handle) == -1)
-                        ALOGE("Perflock release failed: %d", hint_id);
-                }
-
-                if (found_node->data) {
-                    /* We can free the hint-data for this node. */
-                    free(found_node->data);
-                }
-
-                remove_list_node(&active_hint_list_head, found_node);
-                ALOGV("Undo of hint ID %d succeeded", hint_id);
-            } else {
-                ALOGE("Invalid hint ID: %d", hint_id);
-            }
-        }
-    }
-}
-
-/*
- * Used to release initial lock holding
- * two cores online when the display is on
- */
-void undo_initial_hint_action()
-{
-    if (qcopt_handle) {
-        if (perf_lock_rel) {
-            perf_lock_rel(1);
-        }
-    }
-}
diff --git a/power/utils.h b/power/utils.h
deleted file mode 100644
index fb7aa11..0000000
--- a/power/utils.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2012-2013,2015-2016, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * *    * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#ifndef UTILS_H
-#define UTILS_H
-#include <cutils/properties.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int sysfs_read(char *path, char *s, int num_bytes);
-int sysfs_write(char *path, char *s);
-int get_scaling_governor(char governor[], int size);
-int get_scaling_governor_check_cores(char governor[], int size, int core_num);
-int is_interactive_governor(char *);
-
-void vote_ondemand_io_busy_off();
-void unvote_ondemand_io_busy_off();
-void vote_ondemand_sdf_low();
-void unvote_ondemand_sdf_low();
-void perform_hint_action(int hint_id, int resource_values[],
-                         int num_resources);
-void undo_hint_action(int hint_id);
-void release_request(int lock_handle);
-int interaction_with_handle(int lock_handle,
-                            int duration,
-                            int num_args,
-                            int opt_list[]);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif //UTILS_H
\ No newline at end of file
diff --git a/powerhint.json b/powerhint.json
new file mode 100644
index 0000000..f078974
--- /dev/null
+++ b/powerhint.json
@@ -0,0 +1,453 @@
+{
+  "Nodes": [
+    {
+      "Name": "CPULittleClusterMaxFreq",
+      "Path": "/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq",
+      "Values": [
+        "1900800",
+        "1555200",
+        "1478400",
+        "1248000"
+      ],
+      "DefaultIndex": 0,
+      "ResetOnInit": true
+    },
+    {
+      "Name": "CPULittleClusterMinFreq",
+      "Path": "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq",
+      "Values": [
+        "1900800",
+        "1555200",
+        "1512000",
+        "1478400",
+        "1134000",
+        "0"
+      ],
+      "ResetOnInit": true
+    },
+    {
+      "Name": "CPUBigClusterMaxFreq",
+      "Path": "/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq",
+      "Values": [
+        "2457600",
+        "1958400",
+        "1574400",
+        "1344000",
+        "1267200"
+      ],
+      "DefaultIndex": 0,
+      "ResetOnInit": true
+    },
+    {
+      "Name": "CPUBigClusterMinFreq",
+      "Path": "/sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq",
+      "Values": [
+        "2457600",
+        "1574400",
+        "1420800",
+        "1344000",
+        "1132800",
+        "0"
+      ],
+      "ResetOnInit": true
+    },
+    {
+      "Name": "GPUMaxFreq",
+      "Path": "/sys/class/kgsl/kgsl-3d0/devfreq/max_freq",
+      "Values": [
+        "342000000",
+        "414000000",
+        "515000000",
+        "710000000"
+      ],
+      "ResetOnInit": true
+    },
+    {
+      "Name": "GPUMinFreq",
+      "Path": "/sys/class/kgsl/kgsl-3d0/devfreq/min_freq",
+      "Values": [
+        "515000000",
+        "414000000",
+        "257000000"
+      ],
+      "ResetOnInit": true
+    },
+    {
+      "Name": "GPUBusMinFreq",
+      "Path": "/sys/class/devfreq/soc:qcom,gpubw/min_freq",
+      "Values": [
+        "11863",
+        "7759",
+        "0"
+      ],
+      "ResetOnInit": true
+    },
+    {
+      "Name": "TASchedtuneBoost",
+      "Path": "/dev/stune/top-app/schedtune.boost",
+      "Values": [
+        "50",
+        "10"
+      ],
+      "ResetOnInit": true
+    },
+    {
+      "Name": "CPUBWHystTriggerCount",
+      "Path": "/sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_trigger_count",
+      "Values": [
+        "0",
+        "3"
+      ]
+    },
+    {
+      "Name": "CPUBWHistMemory",
+      "Path": "/sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/bw_hwmon/hist_memory",
+      "Values": [
+        "0",
+        "20"
+      ]
+    },
+    {
+      "Name": "CPUBWHystLength",
+      "Path": "/sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_length",
+      "Values": [
+        "0",
+        "10"
+      ]
+    },
+    {
+      "Name": "CPUBWMinFreq",
+      "Path": "/sys/devices/soc/soc:qcom,cpubw/devfreq/soc:qcom,cpubw/min_freq",
+      "Values": [
+        "13763",
+        "5195",
+        "1525",
+        "762"
+      ],
+      "ResetOnInit": true
+    },
+    {
+      "Name": "PMQoSCpuDmaLatency",
+      "Path": "/dev/cpu_dma_latency",
+      "Values": [
+        "44",
+        "100"
+      ],
+      "HoldFd": true
+    }
+  ],
+  "Actions": [
+    {
+      "PowerHint": "VIDEO_ENCODE",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 0,
+      "Value": "1958400"
+    },
+    {
+      "PowerHint": "SUSTAINED_PERFORMANCE",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 0,
+      "Value": "1267200"
+    },
+    {
+      "PowerHint": "SUSTAINED_PERFORMANCE",
+      "Node": "CPULittleClusterMaxFreq",
+      "Duration": 0,
+      "Value": "1248000"
+    },
+    {
+      "PowerHint": "SUSTAINED_PERFORMANCE",
+      "Node": "GPUMaxFreq",
+      "Duration": 0,
+      "Value": "342000000"
+    },
+    {
+      "PowerHint": "VR_MODE",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 0,
+      "Value": "1574400"
+    },
+    {
+      "PowerHint": "VR_MODE",
+      "Node": "CPUBigClusterMinFreq",
+      "Duration": 0,
+      "Value": "1574400"
+    },
+    {
+      "PowerHint": "VR_MODE",
+      "Node": "CPULittleClusterMaxFreq",
+      "Duration": 0,
+      "Value": "1555200"
+    },
+    {
+      "PowerHint": "VR_MODE",
+      "Node": "CPULittleClusterMinFreq",
+      "Duration": 0,
+      "Value": "1555200"
+    },
+    {
+      "PowerHint": "VR_MODE",
+      "Node": "GPUMaxFreq",
+      "Duration": 0,
+      "Value": "515000000"
+    },
+    {
+      "PowerHint": "VR_MODE",
+      "Node": "GPUMinFreq",
+      "Duration": 0,
+      "Value": "515000000"
+    },
+    {
+      "PowerHint": "VR_MODE",
+      "Node": "GPUBusMinFreq",
+      "Duration": 0,
+      "Value": "11863"
+    },
+    {
+      "PowerHint": "VR_SUSTAINED_PERFORMANCE",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 0,
+      "Value": "1344000"
+    },
+    {
+      "PowerHint": "VR_SUSTAINED_PERFORMANCE",
+      "Node": "CPUBigClusterMinFreq",
+      "Duration": 0,
+      "Value": "1344000"
+    },
+    {
+      "PowerHint": "VR_SUSTAINED_PERFORMANCE",
+      "Node": "CPULittleClusterMaxFreq",
+      "Duration": 0,
+      "Value": "1478400"
+    },
+    {
+      "PowerHint": "VR_SUSTAINED_PERFORMANCE",
+      "Node": "CPULittleClusterMinFreq",
+      "Duration": 0,
+      "Value": "1478400"
+    },
+    {
+      "PowerHint": "VR_SUSTAINED_PERFORMANCE",
+      "Node": "GPUMaxFreq",
+      "Duration": 0,
+      "Value": "414000000"
+    },
+    {
+      "PowerHint": "VR_SUSTAINED_PERFORMANCE",
+      "Node": "GPUMinFreq",
+      "Duration": 0,
+      "Value": "414000000"
+    },
+    {
+      "PowerHint": "VR_SUSTAINED_PERFORMANCE",
+      "Node": "GPUBusMinFreq",
+      "Duration": 0,
+      "Value": "7759"
+    },
+    {
+      "PowerHint": "INTERACTION",
+      "Node": "CPUBigClusterMinFreq",
+      "Duration": 0,
+      "Value": "1132800"
+    },
+    {
+      "PowerHint": "INTERACTION",
+      "Node": "CPULittleClusterMinFreq",
+      "Duration": 0,
+      "Value": "1134000"
+    },
+    {
+      "PowerHint": "INTERACTION",
+      "Node": "TASchedtuneBoost",
+      "Duration": 0,
+      "Value": "50"
+    },
+    {
+      "PowerHint": "INTERACTION",
+      "Node": "CPUBWHystTriggerCount",
+      "Duration": 0,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "INTERACTION",
+      "Node": "CPUBWHystLength",
+      "Duration": 0,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "INTERACTION",
+      "Node": "CPUBWHistMemory",
+      "Duration": 0,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "INTERACTION",
+      "Node": "CPUBWMinFreq",
+      "Duration": 0,
+      "Value": "5195"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 5000,
+      "Value": "2457600"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPUBigClusterMinFreq",
+      "Duration": 5000,
+      "Value": "2457600"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPULittleClusterMinFreq",
+      "Duration": 5000,
+      "Value": "1900800"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "PMQoSCpuDmaLatency",
+      "Duration": 5000,
+      "Value": "44"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPUBWHystTriggerCount",
+      "Duration": 5000,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPUBWHystLength",
+      "Duration": 5000,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPUBWHistMemory",
+      "Duration": 5000,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "LAUNCH",
+      "Node": "CPUBWMinFreq",
+      "Duration": 5000,
+      "Value": "13763"
+    },
+    {
+      "PowerHint": "CAMERA_LAUNCH",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 1000,
+      "Value": "2457600"
+    },
+    {
+      "PowerHint": "CAMERA_LAUNCH",
+      "Node": "CPUBigClusterMinFreq",
+      "Duration": 1000,
+      "Value": "2457600"
+    },
+    {
+      "PowerHint": "CAMERA_LAUNCH",
+      "Node": "CPULittleClusterMinFreq",
+      "Duration": 1000,
+      "Value": "1900800"
+    },
+    {
+      "PowerHint": "CAMERA_LAUNCH",
+      "Node": "PMQoSCpuDmaLatency",
+      "Duration": 1000,
+      "Value": "44"
+    },
+    {
+      "PowerHint": "CAMERA_STREAMING",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 1000,
+      "Value": "2457600"
+    },
+    {
+      "PowerHint": "CAMERA_STREAMING",
+      "Node": "CPUBigClusterMinFreq",
+      "Duration": 1000,
+      "Value": "2457600"
+    },
+    {
+      "PowerHint": "CAMERA_STREAMING",
+      "Node": "CPULittleClusterMinFreq",
+      "Duration": 1000,
+      "Value": "1900800"
+    },
+    {
+      "PowerHint": "CAMERA_STREAMING",
+      "Node": "PMQoSCpuDmaLatency",
+      "Duration": 1000,
+      "Value": "44"
+    },
+    {
+      "PowerHint": "CAMERA_SHOT",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 1000,
+      "Value": "2457600"
+    },
+    {
+      "PowerHint": "CAMERA_SHOT",
+      "Node": "CPUBigClusterMinFreq",
+      "Duration": 1000,
+      "Value": "2457600"
+    },
+    {
+      "PowerHint": "CAMERA_SHOT",
+      "Node": "CPULittleClusterMinFreq",
+      "Duration": 1000,
+      "Value": "1900800"
+    },
+    {
+      "PowerHint": "CAMERA_SHOT",
+      "Node": "PMQoSCpuDmaLatency",
+      "Duration": 1000,
+      "Value": "44"
+    },
+    {
+      "PowerHint": "CAMERA_SHOT",
+      "Node": "CPUBWHystTriggerCount",
+      "Duration": 1000,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "CAMERA_SHOT",
+      "Node": "CPUBWHystLength",
+      "Duration": 1000,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "CAMERA_SHOT",
+      "Node": "CPUBWHistMemory",
+      "Duration": 1000,
+      "Value": "0"
+    },
+    {
+      "PowerHint": "CAMERA_SHOT",
+      "Node": "CPUBWMinFreq",
+      "Duration": 1000,
+      "Value": "13763"
+    },
+    {
+      "PowerHint": "AUDIO_STREAMING",
+      "Node": "CPUBigClusterMinFreq",
+      "Duration": 2000,
+      "Value": "1420800"
+    },
+    {
+      "PowerHint": "AUDIO_STREAMING",
+      "Node": "PMQoSCpuDmaLatency",
+      "Duration": 2000,
+      "Value": "44"
+    },
+    {
+      "PowerHint": "AUDIO_LOW_LATENCY",
+      "Node": "PMQoSCpuDmaLatency",
+      "Duration": 0,
+      "Value": "44"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/powerhint.xml b/powerhint.xml
index 19373d4..01d6e42 100755
--- a/powerhint.xml
+++ b/powerhint.xml
@@ -39,7 +39,6 @@
         <Resource opcode="0x40800100" value="0x0"/>     <!-- L CPU - Cluster min freq uncapped -->
         <Resource opcode="0x40804000" value="0x4E0"/>   <!-- B CPU - Cluster max freq ~1.2 GHz -->
         <Resource opcode="0x40804100" value="0x4E0"/>   <!-- L CPU - Cluster max freq ~1.2 Ghz -->
-        <Resource opcode="0x4280C000" value="0xB4"/>    <!-- GPU - min freq 180 Mhz -->
         <Resource opcode="0x42810000" value="0x156"/>   <!-- GPU - max freq 342 Mhz -->
         <Resource opcode="0x42814000" value="0x0"/>     <!-- GPUBW freq uncapped -->
     </Hint>
@@ -69,12 +68,35 @@
         <Resource opcode="0x41800000" value="0x33"/>      <!-- CPUBW min freq 681 MHz -->
     </Hint>
     <Hint type="0x1B00"> <!--boost-->
-        <Resource opcode="0x40804000" value="0xFFF"/>     <!-- B CPU - Cluster max freq ~ max -->
-        <Resource opcode="0x40804100" value="0xFFF"/>     <!-- L CPU - Cluster max freq ~ max -->
         <Resource opcode="0x40800000" value="0xFFF"/>     <!-- B CPU - Cluster min freq ~ max -->
         <Resource opcode="0x40800100" value="0xFFF"/>     <!-- L CPU - Cluster min freq ~ max -->
         <Resource opcode="0x4180C000" value="0x0"/>       <!-- CPUBW disable hysteresis -->
         <Resource opcode="0x40400000" value="0x1"/>       <!-- POWER_COLLAPSE -->
         <Resource opcode="0x41800000" value="0x8C"/>      <!-- CPUBW min freq 1804 MHz -->
     </Hint>
+    <Hint type="0x0B0A"> <!--CAMERA LAUNCH-->
+        <Resource opcode="0x40800000" value="0xFFF"/>     <!-- B CPU - Cluster min freq ~ max -->
+        <Resource opcode="0x40800100" value="0xFFF"/>     <!-- L CPU - Cluster min freq ~ max -->
+        <Resource opcode="0x40400000" value="0x1"/>       <!-- POWER_COLLAPSE -->
+    </Hint>
+    <Hint type="0x0C0A"> <!--CAMERA STREAMING-->
+        <Resource opcode="0x40800000" value="0xFFF"/>     <!-- B CPU - Cluster min freq ~ max -->
+        <Resource opcode="0x40800100" value="0xFFF"/>     <!-- L CPU - Cluster min freq ~ max -->
+        <Resource opcode="0x40400000" value="0x1"/>       <!-- POWER_COLLAPSE -->
+    </Hint>
+    <Hint type="0x0D0A"> <!--CAMERA SHOT-->
+        <Resource opcode="0x40800000" value="0xFFF"/>     <!-- B CPU - Cluster min freq ~ max -->
+        <Resource opcode="0x40800100" value="0xFFF"/>     <!-- L CPU - Cluster min freq ~ max -->
+        <Resource opcode="0x40400000" value="0x1"/>       <!-- POWER_COLLAPSE -->
+        <Resource opcode="0x4180C000" value="0x0"/>       <!-- CPUBW disable hysteresis -->
+        <Resource opcode="0x41800000" value="0x8C"/>      <!-- CPUBW min freq 1804 MHz -->
+    </Hint>
+    <Hint type="0x0E0A"> <!--AUDIO STREAMING-->
+        <Resource opcode="0x40400000" value="0x1"/>       <!-- POWER_COLLAPSE -->
+        <Resource opcode="0x40800000" value="0x579"/>     <!-- B CPU - Cluster min freq ~1.4 Ghz -->
+    </Hint>
+    <Hint type="0x0F0A"> <!--AUDIO_LOW_LATENCY-->
+        <Resource opcode="0x40400000" value="0x1"/>       <!-- POWER_COLLAPSE -->
+    </Hint>
+
 </Powerhint>
diff --git a/sepolicy/OWNERS b/sepolicy/OWNERS
new file mode 100644
index 0000000..9d3f1b1
--- /dev/null
+++ b/sepolicy/OWNERS
@@ -0,0 +1,9 @@
+alanstokes@google.com
+bowgotsai@google.com
+dcashman@google.com
+jbires@google.com
+jeffv@google.com
+jgalenson@google.com
+sspatil@google.com
+tomcherry@google.com
+trong@google.com
diff --git a/sepolicy/private/certs/wfcactivation.x509.pem b/sepolicy/private/certs/wfcactivation.x509.pem
new file mode 100644
index 0000000..bead020
--- /dev/null
+++ b/sepolicy/private/certs/wfcactivation.x509.pem
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDyTCCArGgAwIBAgIJAODrqTpclyUkMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNV
+BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBW
+aWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEXMBUG
+A1UEAwwOd2ZjX2FjdGl2YXRpb24wHhcNMTgwMjIxMDA1NTM4WhcNNDUwNzA5MDA1
+NTM4WjB7MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UE
+BwwNTW91bnRhaW4gVmlldzEUMBIGA1UECgwLR29vZ2xlIEluYy4xEDAOBgNVBAsM
+B0FuZHJvaWQxFzAVBgNVBAMMDndmY19hY3RpdmF0aW9uMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAruKdMaQjRrlTwLHWAhUwLXoq+1glzoQ5ibqHDg4i
+GPPlwT7qPG8xWW6UmTiLNES6YSDpvCvptqrZccecviYfYIg7/JCF/xr2cFt9Gyyo
+L0muemdUMFjGQJxKCQMi8jlqPVgfcy7ZEfVvoDWUupD7hVVA6TFkWH1nv/5GzJVK
+h7D4vBaYE6qwM1+NJjrbk1O8SMMCES7MkJhpnfbRYr8d5uxSzDWqqeqvM6CFSvKw
+cxqbCcNl0MDgSCgtnxzZZjg5AFuPECV8lgJpxFEqgEIK1fsebK5G8o4buokMW+W4
+ZT2LZtMq/qsZXl59h22KQX2w5mcI6KyV8WZOcPPOm8uf8wIDAQABo1AwTjAdBgNV
+HQ4EFgQU9jpHDUfkIqBODCp9/c5TsraA9sowHwYDVR0jBBgwFoAU9jpHDUfkIqBO
+DCp9/c5TsraA9sowDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAZMf+
+KD3oFS0cv/C0qQx28wW5BKFb/PM6RxDwTRF7yyJj4+uZU0+O8NJEqBNDgHusFJR6
+2ZXXiWDqzNb0scZxD95FP1YxiLPAcbn2oCTkGPYcCsBmT1i25RsIKTb7fR3UJ/bY
+V55CQy1FjX5H1katVpezi1bs17stqrjL0aCk8s7wZPQ9KTy7SfMF9rUfg8ltrj8s
+MD5cq21GJuJMpI2kNUV7IT+4B3CeHzpm0iy8NmbavgNezZAx1za4QIySNcKfdsSs
+7PsNYPS0R9BeZK/4u4/yrQvRV0lXzQcIJPpwr0cfuhcgcHG8sbCLaw4Ph6go9kRL
+hvY7ZX9pdBLS8ukQ4w==
+-----END CERTIFICATE-----
diff --git a/sepolicy/private/keys.conf b/sepolicy/private/keys.conf
new file mode 100644
index 0000000..9b0aa03
--- /dev/null
+++ b/sepolicy/private/keys.conf
@@ -0,0 +1,2 @@
+[@WFCACTIVATION]
+ALL : device/google/wahoo/sepolicy/private/certs/wfcactivation.x509.pem
diff --git a/sepolicy/private/mac_permissions.xml b/sepolicy/private/mac_permissions.xml
new file mode 100644
index 0000000..636d579
--- /dev/null
+++ b/sepolicy/private/mac_permissions.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<policy>
+
+<!--
+
+    * A signature is a hex encoded X.509 certificate or a tag defined in
+      keys.conf and is required for each signer tag.
+    * A signer tag may contain a seinfo tag and multiple package stanzas.
+    * A default tag is allowed that can contain policy for all apps not signed with a
+      previously listed cert. It may not contain any inner package stanzas.
+    * Each signer/default/package tag is allowed to contain one seinfo tag. This tag
+      represents additional info that each app can use in setting a SELinux security
+      context on the eventual process.
+    * When a package is installed the following logic is used to determine what seinfo
+      value, if any, is assigned.
+      - All signatures used to sign the app are checked first.
+      - If a signer stanza has inner package stanzas, those stanza will be checked
+        to try and match the package name of the app. If the package name matches
+        then that seinfo tag is used. If no inner package matches then the outer
+        seinfo tag is assigned.
+      - The default tag is consulted last if needed.
+-->
+    <signer signature="@WFCACTIVATION" >
+      <seinfo value="wfcactivation" />
+    </signer>
+</policy>
diff --git a/sepolicy/private/platform_app.te b/sepolicy/private/platform_app.te
new file mode 100644
index 0000000..f8133ee
--- /dev/null
+++ b/sepolicy/private/platform_app.te
@@ -0,0 +1 @@
+allow platform_app qchook_service:service_manager find;
diff --git a/sepolicy/private/property_contexts b/sepolicy/private/property_contexts
index 0867da3..8453a6c 100644
--- a/sepolicy/private/property_contexts
+++ b/sepolicy/private/property_contexts
@@ -1 +1 @@
-sys.ramoops.                  u:object_r:ramoops_prop:s0
\ No newline at end of file
+sys.ramoops.                  u:object_r:ramoops_prop:s0
diff --git a/sepolicy/private/radio.te b/sepolicy/private/radio.te
index 9e50522..d187ca8 100644
--- a/sepolicy/private/radio.te
+++ b/sepolicy/private/radio.te
@@ -1 +1,2 @@
 allow radio uce_service:service_manager find;
+add_service(radio, qchook_service)
diff --git a/sepolicy/private/ramoops.te b/sepolicy/private/ramoops.te
index 57161d9..534fa65 100644
--- a/sepolicy/private/ramoops.te
+++ b/sepolicy/private/ramoops.te
@@ -1,5 +1,4 @@
 type ramoops, domain, coredomain;
-type ramoops_data_file, file_type, data_file_type;
 type ramoops_exec, exec_type, file_type;
 
 init_daemon_domain(ramoops);
@@ -12,6 +11,7 @@
 allow ramoops toolbox_exec:file rx_file_perms;
 
 # Set the sys.ramoops.decrypted property
+typeattribute ramoops system_writes_vendor_properties_violators;
 set_prop(ramoops, ramoops_prop);
 
 allow ramoops sysfs_pstore:file rw_file_perms;
diff --git a/sepolicy/private/seapp_contexts b/sepolicy/private/seapp_contexts
index fbb9ba4..9dde7c2 100644
--- a/sepolicy/private/seapp_contexts
+++ b/sepolicy/private/seapp_contexts
@@ -1,3 +1,6 @@
 #Add new domain for DataServices
 #TODO Remove user "system" when b/38043081 is resolved
 user=system seinfo=platform name=.dataservices domain=dataservice_app type=system_app_data_file
+
+# Domain for WfcActivation app
+user=_app seinfo=wfcactivation name=com.google.android.wfcactivation domain=wfc_activation_app levelFrom=all
diff --git a/sepolicy/private/service.te b/sepolicy/private/service.te
index d658123..e5abcaa 100644
--- a/sepolicy/private/service.te
+++ b/sepolicy/private/service.te
@@ -1,2 +1,3 @@
 type cne_service,                 service_manager_type;
 type uce_service,                 service_manager_type;
+type qchook_service,              service_manager_type;
diff --git a/sepolicy/private/service_contexts b/sepolicy/private/service_contexts
index 20fa4e6..bf26183 100644
--- a/sepolicy/private/service_contexts
+++ b/sepolicy/private/service_contexts
@@ -2,3 +2,4 @@
 cneservice                                           u:object_r:cne_service:s0
 uce                                                  u:object_r:uce_service:s0
 rcs                                                  u:object_r:radio_service:s0
+qchook                                               u:object_r:qchook_service:s0
diff --git a/sepolicy/private/wfc_activation_app.te b/sepolicy/private/wfc_activation_app.te
new file mode 100644
index 0000000..cd32efc
--- /dev/null
+++ b/sepolicy/private/wfc_activation_app.te
@@ -0,0 +1,9 @@
+type wfc_activation_app, domain, coredomain;
+
+app_domain(wfc_activation_app)
+net_domain(wfc_activation_app)
+
+# Services
+allow wfc_activation_app app_api_service:service_manager find;
+allow wfc_activation_app qchook_service:service_manager find;
+allow wfc_activation_app radio_service:service_manager find;
diff --git a/sepolicy/public/file.te b/sepolicy/public/file.te
index ad98df7..1224e34 100644
--- a/sepolicy/public/file.te
+++ b/sepolicy/public/file.te
@@ -1,2 +1,2 @@
-type elabel_data_file, file_type, data_file_type;
+type elabel_data_file, file_type, data_file_type, core_data_file_type;
 type sysfs_pstore, sysfs_type, fs_type;
diff --git a/sepolicy/public/ramoops.te b/sepolicy/public/ramoops.te
new file mode 100644
index 0000000..4ad9ac1
--- /dev/null
+++ b/sepolicy/public/ramoops.te
@@ -0,0 +1 @@
+type ramoops_data_file, file_type, data_file_type, core_data_file_type;
diff --git a/sepolicy/vendor/atfwd.te b/sepolicy/vendor/atfwd.te
index ad96a12..6dbd56b 100644
--- a/sepolicy/vendor/atfwd.te
+++ b/sepolicy/vendor/atfwd.te
@@ -13,4 +13,4 @@
 
 r_dir_file(atfwd, sysfs_type)
 
-set_prop(atfwd, radio_prop)
+set_prop(atfwd, vendor_radio_prop)
diff --git a/sepolicy/vendor/audioserver.te b/sepolicy/vendor/audioserver.te
index 02c801c..4dd8b7c 100644
--- a/sepolicy/vendor/audioserver.te
+++ b/sepolicy/vendor/audioserver.te
@@ -1,6 +1,4 @@
 binder_call(audioserver, bootanim)
 
-allow audioserver perfd_socket:sock_file write;
-
 allow audioserver sysfs_soc:file r_file_perms;
 allow audioserver sysfs_soc:dir search;
diff --git a/sepolicy/vendor/bluetooth.te b/sepolicy/vendor/bluetooth.te
index 5a8371d..a71c145 100644
--- a/sepolicy/vendor/bluetooth.te
+++ b/sepolicy/vendor/bluetooth.te
@@ -1,3 +1,5 @@
+typeattribute bluetooth system_writes_vendor_properties_violators;
+set_prop(bluetooth, vendor_bluetooth_prop)
 set_prop(bluetooth, wc_prop)
 
 # Allow access to net_admin ioctls
diff --git a/sepolicy/vendor/bootanim.te b/sepolicy/vendor/bootanim.te
index 838b4fa..ab76d05 100644
--- a/sepolicy/vendor/bootanim.te
+++ b/sepolicy/vendor/bootanim.te
@@ -5,3 +5,6 @@
 # in /data/system. This should be moved. In the meantime, suppress
 # this denial on wahoo since this functionality is not used.
 dontaudit bootanim system_data_file:dir read;
+
+# TODO(b/37205419): Remove upon resolution
+dontaudit bootanim kernel:system module_request;
diff --git a/sepolicy/vendor/bug_map b/sepolicy/vendor/bug_map
new file mode 100644
index 0000000..a008919
--- /dev/null
+++ b/sepolicy/vendor/bug_map
@@ -0,0 +1,31 @@
+bootanim vendor_default_prop file 79617173
+cnd vendor_shell_exec file 77922167
+drmserver app_data_file dir 77869200
+drmserver sdcardfs dir 77869200
+dumpstate sysfs file 77919159
+hal_audio_default default_prop file 77926553
+hal_audio_default priv_app fd 77926553
+hal_camera_default camera_vendor_data_file dir 77865891
+hal_camera_default debugfs dir 77865891
+hal_camera_default radio_prop file 77865891
+hal_imsrtp default_prop file 77725358
+hal_neuralnetworks_hvx default_prop file 77916944
+hal_power_default cgroup file 77919134
+init_power init_power capability 77915310
+installd media_rw_data_file file 77926261
+netutils_wrapper oemfs dir 77871509
+netutils_wrapper sysfs_timestamp_switch file 77871509
+netutils_wrapper tmpfs dir 77871509
+netutils_wrapper vendor_app_file dir 77871509
+netutils_wrapper vendor_framework_file dir 77871509
+nfc vendor_default_prop file 79617173
+per_proxy exported3_system_prop file 79541095
+priv_app vendor_default_prop file 79617173
+platform_app vendor_default_prop file 79617173
+radio vendor_default_prop file 77915129
+rfs_access unlabeled file 78019660
+rild system_prop file 77960261
+surfaceflinger vendor_default_prop file 79617173
+system_app vendor_default_prop file 79617173
+thermal-engine thermal-engine capability 78019417
+untrusted_app vendor_default_prop file 79617173
diff --git a/sepolicy/vendor/cameraserver.te b/sepolicy/vendor/cameraserver.te
index d29d473..594f22a 100644
--- a/sepolicy/vendor/cameraserver.te
+++ b/sepolicy/vendor/cameraserver.te
@@ -1,5 +1,6 @@
 allow cameraserver gpu_device:chr_file rw_file_perms;
 
+typeattribute cameraserver system_writes_vendor_properties_violators;
 set_prop(cameraserver, camera_prop)
 
 allow cameraserver sysfs_camera:file r_file_perms;
diff --git a/sepolicy/vendor/charger.te b/sepolicy/vendor/charger.te
new file mode 100644
index 0000000..e847281
--- /dev/null
+++ b/sepolicy/vendor/charger.te
@@ -0,0 +1,2 @@
+typeattribute charger system_writes_vendor_properties_violators;
+set_prop(charger, public_vendor_system_prop)
diff --git a/sepolicy/vendor/cnd.te b/sepolicy/vendor/cnd.te
index ca562c9..d7aa810 100644
--- a/sepolicy/vendor/cnd.te
+++ b/sepolicy/vendor/cnd.te
@@ -29,3 +29,8 @@
 get_prop(cnd, hwservicemanager_prop)
 binder_call(cnd, dataservice_app)
 binder_call(cnd, ims)
+
+userdebug_or_eng(`
+  allow cnd diag_device:chr_file rw_file_perms;
+')
+dontaudit cnd diag_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/con_monitor.te b/sepolicy/vendor/con_monitor.te
new file mode 100644
index 0000000..dd76051
--- /dev/null
+++ b/sepolicy/vendor/con_monitor.te
@@ -0,0 +1,13 @@
+# ConnectivityMonitor app
+type con_monitor_app, domain;
+
+app_domain(con_monitor_app)
+
+set_prop(con_monitor_app, radio_prop)
+allow con_monitor_app app_api_service:service_manager find;
+allow con_monitor_app radio_vendor_data_file:dir rw_dir_perms;
+allow con_monitor_app radio_vendor_data_file:file create_file_perms;
+allow con_monitor_app hal_power_hwservice:hwservice_manager find;
+allow con_monitor_app hal_power_default:binder call;
+allow con_monitor_app radio_service:service_manager find;
+allow con_monitor_app audioserver_service:service_manager find;
diff --git a/sepolicy/vendor/dnsmasq.te b/sepolicy/vendor/dnsmasq.te
new file mode 100644
index 0000000..35f58fb
--- /dev/null
+++ b/sepolicy/vendor/dnsmasq.te
@@ -0,0 +1 @@
+dontaudit dnsmasq kernel:system module_request;
diff --git a/sepolicy/vendor/domain.te b/sepolicy/vendor/domain.te
index fdbac32..0a0cc41 100644
--- a/sepolicy/vendor/domain.te
+++ b/sepolicy/vendor/domain.te
@@ -1,7 +1,3 @@
-userdebug_or_eng(`
-  allow domain diag_device:chr_file rw_file_perms;
-')
-
 # In order for /sys/kernel/debug/kgsl/proc/<pid>/mem
 # to be created for memory tracking, the domain of
 # the tracked process must have permission to search
@@ -9,3 +5,7 @@
 allow domain debugfs_kgsl:dir search;
 
 allow domain debugfs_ion:dir search;
+
+get_prop(domain, public_vendor_default_prop)
+get_prop(domain, public_vendor_system_prop)
+get_prop(domain, vendor_radio_prop)
diff --git a/sepolicy/vendor/dumpstate.te b/sepolicy/vendor/dumpstate.te
index e993200..6892e27 100644
--- a/sepolicy/vendor/dumpstate.te
+++ b/sepolicy/vendor/dumpstate.te
@@ -1,6 +1,4 @@
 userdebug_or_eng(`
-  allow dumpstate modem_dump_file:dir create_dir_perms;
-  allow dumpstate modem_dump_file:file create_file_perms;
   allow dumpstate proc_modules:file r_file_perms;
   allow dumpstate proc_stat:file r_file_perms;
   allow dumpstate persist_file:dir r_dir_perms;
@@ -12,5 +10,8 @@
   binder_call(dumpstate, per_mgr)
 ')
 
-allow hal_dumpstate sysfs_batteryinfo:dir search;
-allow hal_dumpstate sysfs_batteryinfo:file rw_file_perms;
+# For collecting bugreports.
+allow dumpstate sysfs_scsi_devices_0000:file r_file_perms;
+allow dumpstate sysfs_scsi_devices_other:file r_file_perms;
+allow dumpstate sysfs_devices_block:file r_file_perms;
+dontaudit dumpstate kernel:system module_request;
diff --git a/sepolicy/vendor/easel.te b/sepolicy/vendor/easel.te
new file mode 100644
index 0000000..72a88d4
--- /dev/null
+++ b/sepolicy/vendor/easel.te
@@ -0,0 +1,19 @@
+# easel service
+type easel, domain;
+type easel_exec, exec_type, vendor_file_type, file_type;
+
+init_daemon_domain(easel)
+
+add_service(easel, easel_service)
+
+vndbinder_use(easel)
+
+# access easel dev nodes
+allow easel easel_device:chr_file rw_file_perms;
+allow easel sysfs_easel:file rw_file_perms;
+allow easel sysfs_easel:dir r_dir_perms;
+
+# access easel thermal sysfs
+allow easel sysfs_thermal:dir r_dir_perms;
+allow easel sysfs_thermal:file r_file_perms;
+allow easel sysfs_thermal:lnk_file r_file_perms;
\ No newline at end of file
diff --git a/sepolicy/vendor/file.te b/sepolicy/vendor/file.te
index 2e41283..108b736 100644
--- a/sepolicy/vendor/file.te
+++ b/sepolicy/vendor/file.te
@@ -8,14 +8,18 @@
 type sysfs_mdss_mdp_caps, sysfs_type, fs_type;
 type sysfs_msm_subsys, sysfs_type, fs_type;
 type sysfs_msm_subsys_restart, sysfs_type, fs_type;
-type sysfs_net, sysfs_type, fs_type;
+type sysfs_msm_wlan, sysfs_type, fs_type;
 type sysfs_rmtfs, sysfs_type, fs_type;
 type sysfs_soc, sysfs_type, fs_type;
 type sysfs_scsi_devices_0000, sysfs_type, fs_type;
+type sysfs_scsi_devices_other, sysfs_type, fs_type;
+type sysfs_devices_block, sysfs_type, fs_type;
 type sysfs_timestamp_switch, sysfs_type, fs_type;
 type sysfs_touch, sysfs_type, fs_type;
 type sysfs_usb_c, sysfs_type, fs_type;
 type sysfs_usb_device, sysfs_type, fs_type;
+# b/70518189 vDSO experiments
+type sysfs_vdso, fs_type, sysfs_type;
 
 type debugfs_clk, debugfs_type, fs_type;
 type debugfs_ion, debugfs_type, fs_type;
@@ -28,9 +32,12 @@
 type debugfs_mdp, debugfs_type, fs_type;
 type debugfs_icnss, debugfs_type, fs_type;
 type debugfs_ufs, debugfs_type, fs_type;
+type debugfs_fg_sram, debugfs_type, fs_type;
+type debugfs_dma_bufinfo, debugfs_type, fs_type;
+type debugfs_tzdbg, debugfs_type, fs_type;
 
 # /proc
-type proc_wifi_dbg, fs_type;
+type proc_wifi_dbg, fs_type, proc_type;
 
 type qmuxd_socket, file_type;
 type netmgrd_socket, file_type;
@@ -56,6 +63,7 @@
 type persist_rfs_file, file_type;
 type persist_sensors_file, file_type;
 type persist_time_file, file_type;
+type persist_battery_file, file_type;
 
 type netmgr_data_file, file_type, data_file_type;
 type ipa_vendor_data_file, file_type, data_file_type;
@@ -69,10 +77,8 @@
 type modem_dump_file, file_type, data_file_type;
 type ese_vendor_data_file, file_type, data_file_type;
 type sensors_vendor_data_file, file_type, data_file_type;
-
-type vendor_firmware_file, vendor_file_type, file_type;
-
-type ramdump_data_file, file_type, data_file_type, mlstrustedobject;
+type audio_vendor_data_file, file_type, data_file_type;
+type mediadrm_vendor_data_file, file_type, data_file_type;
 
 #data sysfs files
 type sysfs_data, fs_type, sysfs_type;
@@ -90,6 +96,6 @@
 typeattribute sysfs_batteryinfo mlstrustedobject;
 
 # msm_irqbalance
-type proc_irq, fs_type;
-type sysfs_irq, fs_type;
+type proc_irq, fs_type, proc_type;
+type sysfs_irq, sysfs_type, fs_type;
 type irqbalance_socket, file_type;
diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts
index 1541981..1649712 100644
--- a/sepolicy/vendor/file_contexts
+++ b/sepolicy/vendor/file_contexts
@@ -116,11 +116,13 @@
 # Block device for ZRAM
 /dev/block/zram0                                u:object_r:swap_block_device:s0
 
+# file in /system
+/system/bin/move_widevine_data\.sh              u:object_r:move-widevine-data-sh_exec:s0
+
 # files in /vendor
-/vendor/firmware(/.*)?          u:object_r:vendor_firmware_file:s0
 /vendor/bin/hw/android\.hardware\.dumpstate@1\.0-service.wahoo      u:object_r:hal_dumpstate_impl_exec:s0
 /vendor/bin/hw/android\.hardware\.vr@1\.0-service.wahoo      u:object_r:hal_vr_default_exec:s0
-/vendor/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service.wahoo u:object_r:hal_fingerprint_default_exec:s0
+/vendor/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service\.fpc u:object_r:hal_fingerprint_default_exec:s0
 /vendor/bin/msm_irqbalance      u:object_r:irqbalance_exec:s0
 /vendor/bin/perfd               u:object_r:perfd_exec:s0
 /vendor/bin/thermal-engine      u:object_r:thermal-engine_exec:s0
@@ -156,6 +158,7 @@
 /vendor/bin/qmuxd               u:object_r:qmuxd_exec:s0
 /vendor/bin/cnd                 u:object_r:cnd_exec:s0
 /vendor/bin/ATFWD-daemon        u:object_r:atfwd_exec:s0
+/vendor/bin/easelmanagerd       u:object_r:easel_exec:s0
 # Remove after b/38447389
 /vendor/bin/esed                u:object_r:esed_exec:s0
 # Rename to android.hardware.[XXX] after b/38447431
@@ -166,21 +169,26 @@
 /vendor/bin/hw/android\.hardware\.oemlock@1\.0-service               u:object_r:hal_oemlock_default_exec:s0
 /vendor/bin/oemlock_provision   u:object_r:hal_bootctl_default_exec:s0
 /vendor/bin/oemlock-bridge      u:object_r:hal_bootctl_default_exec:s0
-/vendor/bin/hw/android\.hardware\.usb@1\.1-service.wahoo             u:object_r:hal_usb_default_exec:s0
-/vendor/bin/hw/android\.hardware\.power@1\.1-service.wahoo           u:object_r:hal_power_default_exec:s0
+/vendor/bin/hw/android\.hardware\.usb@1\.1-service.wahoo             u:object_r:hal_usb_impl_exec:s0
+/vendor/bin/hw/android\.hardware\.power@1\.2-service.wahoo           u:object_r:hal_power_default_exec:s0
+/vendor/bin/hw/android\.hardware\.power@1\.2-service.wahoo-libperfmgr u:object_r:hal_power_default_exec:s0
 /vendor/bin/hw/android\.hardware\.thermal@1\.0-service.wahoo         u:object_r:hal_thermal_default_exec:s0
 /vendor/bin/chre                u:object_r:chre_exec:s0
 /vendor/bin/time_daemon         u:object_r:time_daemon_exec:s0
 /vendor/bin/imsrcsd             u:object_r:hal_rcsservice_exec:s0
 /vendor/bin/init\.qcom\.devstart\.sh                                 u:object_r:init-qcom-devstart-sh_exec:s0
 /vendor/bin/init\.qcom\.ipastart\.sh                                 u:object_r:init-qcom-ipastart-sh_exec:s0
+/vendor/bin/init\.qcom\.wlan\.sh                                     u:object_r:init-qcom-wlan-sh_exec:s0
 /vendor/bin/init\.insmod\.sh                                         u:object_r:init-insmod-sh_exec:s0
 /vendor/etc/init\.insmod\.cfg                                        u:object_r:init-insmod-sh_exec:s0
 /vendor/bin/init\.power\.sh     u:object_r:init_power_exec:s0
 /vendor/bin/init\.radio\.sh     u:object_r:init_radio_exec:s0
 
-/vendor/bin/hw/android\.hardware\.drm@1\.0-service.widevine          u:object_r:hal_drm_widevine_exec:s0
-/vendor/bin/hw/android\.hardware\.vibrator@1\.1-service.wahoo        u:object_r:hal_vibrator_default_exec:s0
+/vendor/bin/hw/android\.hardware\.bluetooth@1\.0-service-qti          u:object_r:hal_bluetooth_default_exec:s0
+/vendor/bin/hw/android\.hardware\.drm@1\.1-service\.widevine          u:object_r:hal_drm_widevine_exec:s0
+/vendor/bin/hw/android\.hardware\.drm@1\.1-service\.clearkey          u:object_r:hal_drm_clearkey_exec:s0
+/vendor/bin/hw/android\.hardware\.vibrator@1\.2-service\.wahoo        u:object_r:hal_vibrator_default_exec:s0
+/vendor/bin/hw/android\.hardware\.health@2\.0-service\.wahoo          u:object_r:hal_health_default_exec:s0
 /vendor/bin/hw/android\.hardware\.keymaster@3\.0-service-qti         u:object_r:hal_keymaster_qti_exec:s0
 /vendor/bin/hw/android\.hardware\.gatekeeper@1\.0-service-qti        u:object_r:hal_gatekeeper_qti_exec:s0
 /vendor/bin/hw/android\.hardware\.gnss@1\.0-service-qti              u:object_r:hal_gnss_qti_exec:s0
@@ -197,9 +205,9 @@
 /vendor/lib(64)?/libgsl\.so                u:object_r:same_process_hal_file:s0
 
 /vendor/lib(64)?/hw/vulkan\.msm8998\.so    u:object_r:same_process_hal_file:s0
-/vendor/lib(64)?/libEGL_adreno\.so         u:object_r:same_process_hal_file:s0
-/vendor/lib(64)?/libGLESv1_CM_adreno\.so   u:object_r:same_process_hal_file:s0
-/vendor/lib(64)?/libGLESv2_adreno\.so      u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/egl/libEGL_adreno\.so         u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/egl/libGLESv1_CM_adreno\.so   u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/egl/libGLESv2_adreno\.so      u:object_r:same_process_hal_file:s0
 
 /vendor/lib(64)?/libdrmutils\.so           u:object_r:same_process_hal_file:s0
 /vendor/lib(64)?/libdrm\.so                u:object_r:same_process_hal_file:s0
@@ -212,7 +220,7 @@
 # To test: run cts -m CtsRenderscriptTestCases
 /vendor/lib(64)?/libRSDriver_adreno\.so     u:object_r:same_process_hal_file:s0
 /vendor/lib(64)?/libCB\.so                  u:object_r:same_process_hal_file:s0
-/vendor/lib(64)?/libllvm-qgl\.so            u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/libllvm-glnext\.so            u:object_r:same_process_hal_file:s0
 /vendor/lib(64)?/libbccQTI\.so              u:object_r:same_process_hal_file:s0
 /vendor/lib(64)?/libllvm-qcom\.so           u:object_r:same_process_hal_file:s0
 /vendor/lib(64)?/librs_adreno\.so           u:object_r:same_process_hal_file:s0
@@ -223,9 +231,6 @@
 # needed by radio
 /vendor/lib(64)?/libimsmedia_jni\.so        u:object_r:same_process_hal_file:s0
 
-# libGLESv2_adreno depends on this
-/vendor/lib(64)?/libllvm-glnext\.so         u:object_r:same_process_hal_file:s0
-
 # Hexagon DSP host runtime and DSP-side executable needed for Halide operation
 /vendor/lib(64)?/libadsprpc\.so             u:object_r:same_process_hal_file:s0
 /vendor/lib/dsp/fastrpc_shell_0             u:object_r:hexagon_halide_file:s0
@@ -241,19 +246,20 @@
 # data files
 /data/vendor/netmgr(/.*)?              u:object_r:netmgr_data_file:s0
 /data/vendor/location(/.*)?            u:object_r:location_data_file:s0
-/data/ramdump(/.*)?                    u:object_r:ramdump_data_file:s0
 /data/nfc(/.*)?                        u:object_r:nfc_data_file:s0
 /data/vendor/camera(/.*)?              u:object_r:camera_vendor_data_file:s0
 /data/vendor/display(/.*)?             u:object_r:display_vendor_data_file:s0
 /data/vendor/nfc(/.*)?                 u:object_r:nfc_vendor_data_file:s0
 /data/vendor/radio(/.*)?               u:object_r:radio_vendor_data_file:s0
-/data/vendor/wifi(/.*)?                u:object_r:cnss_vendor_data_file:s0
+/data/vendor/wifi/cnss_diag(/.*)?      u:object_r:cnss_vendor_data_file:s0
 /data/vendor/ramdump(/.*)?             u:object_r:ramdump_vendor_data_file:s0
 /data/vendor/ssrdump(/.*)?             u:object_r:ramdump_vendor_data_file:s0
 /data/vendor/modem_dump(/.*)?          u:object_r:modem_dump_file:s0
 /data/vendor/ese(/.*)?                 u:object_r:ese_vendor_data_file:s0
 /data/vendor/ipa(/.*)?                 u:object_r:ipa_vendor_data_file:s0
 /data/vendor/sensors(/.*)?             u:object_r:sensors_vendor_data_file:s0
+/data/vendor/audio(/.*)?               u:object_r:audio_vendor_data_file:s0
+/data/vendor/mediadrm(/.*)?            u:object_r:mediadrm_vendor_data_file:s0
 
 # input files
 /vendor/usr/idc(/.*)?                  u:object_r:idc_file:s0
@@ -277,6 +283,7 @@
 /persist/rfs(/.*)?        u:object_r:persist_rfs_file:s0
 /persist/sensors(/.*)?    u:object_r:persist_sensors_file:s0
 /persist/time(/.*)?       u:object_r:persist_time_file:s0
+/persist/battery(/.*)?    u:object_r:persist_battery_file:s0
 
-/metadata                 u:object_r:rootfs:s0
-/metadata/.*              u:object_r:vold_data_file:s0
+# b/70518189 vDSO experiments
+/sys/module/vdso/parameters  u:object_r:sysfs_vdso:s0
diff --git a/sepolicy/vendor/gatekeeperd.te b/sepolicy/vendor/gatekeeperd.te
index 647ede2..e4bef11 100644
--- a/sepolicy/vendor/gatekeeperd.te
+++ b/sepolicy/vendor/gatekeeperd.te
@@ -1 +1,2 @@
+typeattribute gatekeeperd system_writes_vendor_properties_violators;
 set_prop(gatekeeperd, keymaster_prop)
diff --git a/sepolicy/vendor/genfs_contexts b/sepolicy/vendor/genfs_contexts
index 58e4014..bf0e65b 100644
--- a/sepolicy/vendor/genfs_contexts
+++ b/sepolicy/vendor/genfs_contexts
@@ -12,6 +12,11 @@
 genfscon sysfs /android_touch                         u:object_r:sysfs_touch:s0
 
 genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:0 u:object_r:sysfs_scsi_devices_0000:s0
+genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:1 u:object_r:sysfs_scsi_devices_other:s0
+genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:2 u:object_r:sysfs_scsi_devices_other:s0
+genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:3 u:object_r:sysfs_scsi_devices_other:s0
+genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:4 u:object_r:sysfs_scsi_devices_other:s0
+genfscon sysfs /devices/soc/1da4000.ufshc/host0/target0:0:0/0:0:0:5 u:object_r:sysfs_scsi_devices_other:s0
 
 genfscon sysfs /class/rfkill/rfkill0/state            u:object_r:sysfs_bluetooth_writable:s0
 
@@ -20,6 +25,8 @@
 genfscon sysfs /devices/soc/soc:bt_wcn3990                              u:object_r:sysfs_bluetooth_writable:s0
 genfscon sysfs /devices/soc/a1800000.qcom,rmtfs_rtel_sharedmem          u:object_r:sysfs_rmtfs:s0
 genfscon sysfs /devices/soc/c17a000.i2c                                 u:object_r:sysfs_msm_subsys:s0
+genfscon sysfs /devices/soc/c179000.i2c                                 u:object_r:sysfs_msm_subsys:s0
+genfscon sysfs /devices/soc/c1b5000.i2c                                 u:object_r:sysfs_msm_subsys:s0
 genfscon sysfs /devices/soc/soc:qcom,gpubw                              u:object_r:sysfs_msm_subsys:s0
 genfscon sysfs /devices/soc/800f000.qcom,spmi                           u:object_r:sysfs_msm_subsys:s0
 genfscon sysfs /devices/soc/4080000.qcom,mss                            u:object_r:sysfs_msm_subsys:s0
@@ -32,32 +39,35 @@
 genfscon sysfs /devices/soc/c1b5000.i2c/i2c-7/7-0030/leds               u:object_r:sysfs_leds:s0
 genfscon sysfs /devices/soc/c900000.qcom,mdss_mdp/c900000.qcom,mdss_mdp:qcom,mdss_fb_primary/leds u:object_r:sysfs_leds:s0
 genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-03/800f000.qcom,spmi:qcom,pmi8998@3:qcom,leds@d000/leds u:object_r:sysfs_leds:s0
+genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-00/800f000.qcom,spmi:qcom,pm8998@0:qcom,pm8998_rtc/rtc u:object_r:sysfs_rtc:s0
 genfscon sysfs /devices/soc/5000000.qcom,kgsl-3d0                       u:object_r:sysfs_msm_subsys:s0
 genfscon sysfs /devices/soc/soc:qcom,kgsl-hyp                           u:object_r:sysfs_msm_subsys:s0
 genfscon sysfs /devices/soc/soc:qcom,ipa_fws@1e08000                    u:object_r:sysfs_msm_subsys:s0
 genfscon sysfs /devices/soc/cce0000.qcom,venus                          u:object_r:sysfs_msm_subsys:s0
 genfscon sysfs /devices/soc/0.qcom,rmtfs_sharedmem                      u:object_r:sysfs_rmtfs:s0
 genfscon sysfs /devices/soc/soc:fp_fpc1020                              u:object_r:sysfs_fingerprint:s0
+genfscon sysfs /devices/virtual/net                                     u:object_r:sysfs_net:s0
 genfscon sysfs /devices/virtual/thermal                                 u:object_r:sysfs_thermal:s0
 genfscon sysfs /devices/virtual/wahoo_laser                             u:object_r:sysfs_laser:s0
 genfscon sysfs /module/msm_thermal                                      u:object_r:sysfs_thermal:s0
 genfscon sysfs /module/printk/parameters/console_suspend                u:object_r:sysfs_console_suspend:s0
+genfscon sysfs /devices/soc/18800000.qcom,icnss/net                     u:object_r:sysfs_net:s0
 genfscon sysfs /module/tcp_cubic/parameters                             u:object_r:sysfs_net:s0
 genfscon sysfs /module/diagchar/parameters/timestamp_switch             u:object_r:sysfs_timestamp_switch:s0
 genfscon sysfs /devices/virtual/graphics/fb0                            u:object_r:sysfs_graphics:s0
 genfscon sysfs /devices/virtual/graphics/fb1                            u:object_r:sysfs_graphics:s0
-genfscon sysfs /devices/virtual/net                                     u:object_r:sysfs_net:s0
 genfscon sysfs /devices/virtual/misc/mnh_sm                             u:object_r:sysfs_easel:s0
 genfscon sysfs /devices/soc/8c0000.qcom,msm-cam                         u:object_r:sysfs_camera:s0
 genfscon sysfs /devices/soc0                                            u:object_r:sysfs_soc:s0
 genfscon sysfs /devices/soc/caa0000.qcom,jpeg                           u:object_r:sysfs_camera:s0
 genfscon sysfs /devices/soc/caa4000.qcom,fd                             u:object_r:sysfs_camera:s0
-genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/power_supply/bms                        u:object_r:sysfs_batteryinfo:s0
-genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qcom,qpnp-smb2/power_supply/battery/capacity    u:object_r:sysfs_batteryinfo:s0
+genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg                                         u:object_r:sysfs_batteryinfo:s0
+genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qcom,qpnp-smb2/power_supply                     u:object_r:sysfs_batteryinfo:s0
 genfscon sysfs /bus/msm_subsys                                          u:object_r:sysfs_msm_subsys:s0
 genfscon sysfs /module/subsystem_restart                                u:object_r:sysfs_msm_subsys_restart:s0
 genfscon sysfs /kernel/boot_adsp/boot                                   u:object_r:sysfs_msm_subsys:s0
 genfscon sysfs /kernel/boot_slpi/boot                                   u:object_r:sysfs_msm_subsys:s0
+genfscon sysfs /kernel/wifi/wlan                                        u:object_r:sysfs_msm_wlan:s0
 genfscon sysfs /devices/soc/c1b7000.i2c/i2c-9/9-0008                    u:object_r:sysfs_easel:s0
 genfscon sysfs /class/typec                                             u:object_r:sysfs_usb_c:s0
 genfscon sysfs /class/typec/usbc0                                       u:object_r:sysfs_usb_c:s0
@@ -67,6 +77,7 @@
 genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qcom,usb-pdphy@1700/usbpd0/typec     u:object_r:sysfs_usb_c:s0
 genfscon sysfs /module/diagchar                                         u:object_r:sysfs_diag:s0
 genfscon sysfs /kernel/irq_helper/irq_blacklist_on                      u:object_r:sysfs_irq:s0
+genfscon sysfs /devices/virtual/block/                                  u:object_r:sysfs_devices_block:s0
 
 genfscon debugfs /kgsl/proc                           u:object_r:debugfs_kgsl:s0
 genfscon debugfs /clk/debug_suspend                   u:object_r:debugfs_clk:s0
@@ -85,3 +96,6 @@
 genfscon debugfs /rmt_storage                         u:object_r:debugfs_rmt_storage:s0
 genfscon debugfs /icnss                               u:object_r:debugfs_icnss:s0
 genfscon debugfs /ufshcd0                             u:object_r:debugfs_ufs:s0
+genfscon debugfs /fg/sram                             u:object_r:debugfs_fg_sram:s0
+genfscon debugfs /dma_buf/bufinfo                     u:object_r:debugfs_dma_bufinfo:s0
+genfscon debugfs /tzdbg	                              u:object_r:debugfs_tzdbg:s0
diff --git a/sepolicy/vendor/google_camera_app.te b/sepolicy/vendor/google_camera_app.te
index 6192882..30031ef 100644
--- a/sepolicy/vendor/google_camera_app.te
+++ b/sepolicy/vendor/google_camera_app.te
@@ -36,4 +36,5 @@
 
 # Allow GoogleCamera access to necessary vendor libraries to execute
 # Halide code
+typeattribute google_camera_app system_executes_vendor_violators;
 allow google_camera_app hexagon_halide_file:file { execute read open getattr };
diff --git a/sepolicy/vendor/hal_audio_default.te b/sepolicy/vendor/hal_audio_default.te
index 0b93692..47f4f7e 100644
--- a/sepolicy/vendor/hal_audio_default.te
+++ b/sepolicy/vendor/hal_audio_default.te
@@ -1,10 +1,12 @@
 r_dir_file(hal_audio_default, sysfs_soc)
 
-allow hal_audio_default audio_data_file:dir w_dir_perms;
-allow hal_audio_default audio_data_file:file create_file_perms;
+allow hal_audio_default audio_vendor_data_file:dir rw_dir_perms;
+allow hal_audio_default audio_vendor_data_file:file create_file_perms;
 
-allow hal_audio_default perfd:unix_stream_socket connectto;
-allow hal_audio_default perfd_socket:sock_file write;
+dontaudit hal_audio_default perfd:unix_stream_socket connectto;
+dontaudit hal_audio_default perfd_socket:sock_file write;
+
+hal_client_domain(hal_audio_default, hal_power)
 
 userdebug_or_eng(`
   allow hal_audio diag_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/hal_bluetooth_default.te b/sepolicy/vendor/hal_bluetooth_default.te
index d345ee7..6725dea 100644
--- a/sepolicy/vendor/hal_bluetooth_default.te
+++ b/sepolicy/vendor/hal_bluetooth_default.te
@@ -6,4 +6,17 @@
 allow hal_bluetooth fwk_scheduler_hwservice:hwservice_manager find;
 allow hal_bluetooth system_server:binder call;
 
+set_prop(hal_bluetooth_default, vendor_bluetooth_prop)
 set_prop(hal_bluetooth_default, wc_prop)
+
+userdebug_or_eng(`
+  allow hal_bluetooth_default diag_device:chr_file rw_file_perms;
+  allow hal_bluetooth_default ramdump_vendor_data_file:dir w_dir_perms;
+  allow hal_bluetooth_default ramdump_vendor_data_file:file { create w_file_perms };
+  allow hal_bluetooth_default sysfs_timestamp_switch:file r_file_perms;
+  r_dir_file(hal_bluetooth_default, debugfs_ipc)
+  r_dir_file(hal_bluetooth_default, sysfs_diag)
+  set_prop(hal_bluetooth_default, vendor_ssr_prop)
+')
+
+dontaudit hal_bluetooth_default diag_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/hal_bootctl.te b/sepolicy/vendor/hal_bootctl.te
index bdb9e12..2c9e49e 100644
--- a/sepolicy/vendor/hal_bootctl.te
+++ b/sepolicy/vendor/hal_bootctl.te
@@ -11,7 +11,7 @@
 allow hal_bootctl boot_block_device:blk_file rw_file_perms;
 allow hal_bootctl modem_block_device:blk_file getattr;
 allow hal_bootctl system_block_device:blk_file getattr;
-allow hal_bootctl misc_block_device:blk_file rw_file_perms;
+allow hal_bootctl_server misc_block_device:blk_file rw_file_perms;
 
 # Access /dev/sgN devices (generic SCSI) to write the
 # A/B slot selection for the XBL partition. Allow also to issue a
@@ -22,7 +22,7 @@
 
 # Read the sysfs to lookup what /dev/sgN device
 # corresponds to the XBL partitions.
-allow hal_bootctl sysfs:dir r_dir_perms;
+allow hal_bootctl sysfs_type:dir r_dir_perms;
 
 # Write to the XBL devices.
 allow hal_bootctl xbl_block_device:blk_file rw_file_perms;
diff --git a/sepolicy/vendor/hal_camera.te b/sepolicy/vendor/hal_camera.te
index 6e55c97..ad9a030 100644
--- a/sepolicy/vendor/hal_camera.te
+++ b/sepolicy/vendor/hal_camera.te
@@ -1,15 +1,10 @@
 # communicate with perfd
-allow hal_camera perfd:unix_stream_socket connectto;
-allow hal_camera perfd_socket:sock_file write;
-allow hal_camera perfd_socket:sock_file w_file_perms;
+dontaudit hal_camera perfd:unix_stream_socket connectto;
+dontaudit hal_camera perfd_socket:sock_file write;
+dontaudit hal_camera perfd_socket:sock_file w_file_perms;
 
 allow hal_camera self:capability sys_nice;
 
-# communicate with camera
-#allow hal_camera camera:unix_dgram_socket sendto;
-#allow hal_camera camera_data_file:sock_file write;
-#allow hal_camera camera_device:chr_file rw_file_perms;
-
 allow hal_camera gpu_device:chr_file rw_file_perms;
 
 # access to /dev/input/event{5,10}
@@ -50,3 +45,8 @@
 
 # access hexagon
 allow hal_camera qdsp_device:chr_file r_file_perms;
+
+# lens calibration file
+allow hal_camera persist_file:dir search;
+allow hal_camera persist_sensors_file:dir search;
+allow hal_camera persist_sensors_file:file { getattr open read };
diff --git a/sepolicy/vendor/hal_drm_clearkey.te b/sepolicy/vendor/hal_drm_clearkey.te
new file mode 100644
index 0000000..976b9fa
--- /dev/null
+++ b/sepolicy/vendor/hal_drm_clearkey.te
@@ -0,0 +1,11 @@
+# policy for /vendor/bin/hw/android.hardware.drm@1.1-service.clearkey
+type hal_drm_clearkey, domain;
+type hal_drm_clearkey_exec, exec_type, vendor_file_type, file_type;
+
+init_daemon_domain(hal_drm_clearkey)
+
+hal_server_domain(hal_drm_clearkey, hal_drm)
+
+vndbinder_use(hal_drm_clearkey);
+
+allow hal_drm_clearkey { appdomain -isolated_app }:fd use;
diff --git a/sepolicy/vendor/hal_drm_widevine.te b/sepolicy/vendor/hal_drm_widevine.te
index faf47b3..f272502 100644
--- a/sepolicy/vendor/hal_drm_widevine.te
+++ b/sepolicy/vendor/hal_drm_widevine.te
@@ -1,4 +1,4 @@
-# policy for /vendor/bin/hw/android.hardware.drm@1.0-service.widevine
+# policy for /vendor/bin/hw/android.hardware.drm@1.1-service.widevine
 type hal_drm_widevine, domain;
 type hal_drm_widevine_exec, exec_type, vendor_file_type, file_type;
 
@@ -8,10 +8,15 @@
 
 vndbinder_use(hal_drm_widevine);
 
-allow hal_drm mediacodec:fd use;
-allow hal_drm { appdomain -isolated_app }:fd use;
+allow hal_drm_widevine mediacodec:fd use;
+allow hal_drm_widevine { appdomain -isolated_app }:fd use;
 
 # The Qualcomm DRM-HAL implementation uses a vendor-binder service provided
 # by the HWC HAL.
 allow hal_drm_widevine qdisplay_service:service_manager { find };
 binder_call(hal_drm_widevine, hal_graphics_composer)
+
+allow hal_drm_widevine hal_allocator_server:fd use;
+
+allow hal_drm_widevine mediadrm_vendor_data_file:dir create_dir_perms;
+allow hal_drm_widevine mediadrm_vendor_data_file:file create_file_perms;
diff --git a/sepolicy/vendor/hal_dumpstate_impl.te b/sepolicy/vendor/hal_dumpstate_impl.te
index 32b875d..39a8995 100644
--- a/sepolicy/vendor/hal_dumpstate_impl.te
+++ b/sepolicy/vendor/hal_dumpstate_impl.te
@@ -13,14 +13,14 @@
   domain_auto_trans(hal_dumpstate_impl, smlog_dump_exec, smlog_dump)
   allow hal_dumpstate_impl modem_dump_file:dir create_dir_perms;
   allow hal_dumpstate_impl modem_dump_file:file create_file_perms;
-  allow hal_dumpstate_impl radio_data_file:dir r_dir_perms;
   allow hal_dumpstate_impl radio_vendor_data_file:dir r_dir_perms;
   allow hal_dumpstate_impl netmgr_data_file:dir r_dir_perms;
-  allow hal_dumpstate_impl radio_data_file:file r_file_perms;
   allow hal_dumpstate_impl radio_vendor_data_file:file r_file_perms;
   allow hal_dumpstate_impl netmgr_data_file:file r_file_perms;
   allow hal_dumpstate_impl debugfs_ipc:dir r_dir_perms;
   allow hal_dumpstate_impl debugfs_ipc:file r_file_perms;
+  allow hal_dumpstate_impl debugfs_tzdbg:dir search;
+  allow hal_dumpstate_impl debugfs_tzdbg:file r_file_perms;
   allow hal_dumpstate_impl sysfs_usb_device:dir r_dir_perms;
   allow hal_dumpstate_impl sysfs_usb_device:file r_file_perms;
   allow hal_dumpstate_impl sysfs_msm_subsys:file write;
@@ -28,6 +28,8 @@
   set_prop(hal_dumpstate_impl, modem_diag_prop)
 ')
 
+get_prop(hal_dumpstate_impl, vendor_radio_prop)
+
 allow hal_dumpstate_impl uio_device:chr_file rw_file_perms;
 r_dir_file(hal_dumpstate_impl, sysfs_uio)
 r_dir_file(hal_dumpstate_impl, sysfs_rmtfs)
@@ -52,7 +54,7 @@
 allow hal_dumpstate_impl  sysfs:dir r_dir_perms;
 # rpm stat
 # usb logs
-userdebug_or_eng(`allow hal_dumpstate_impl debugfs_usb:file r_file_perms;')
+allow hal_dumpstate_impl debugfs_usb:file r_file_perms;
 
 #Access display debug data
 allow hal_dumpstate_impl display_vendor_data_file:dir r_dir_perms;
@@ -65,3 +67,16 @@
 # Access to UFS info
 allow hal_dumpstate_impl sysfs_scsi_devices_0000:dir r_dir_perms;
 allow hal_dumpstate_impl sysfs_scsi_devices_0000:file r_file_perms;
+
+# For collecting bugreports.
+allow hal_dumpstate_impl shell_data_file:file getattr;
+userdebug_or_eng(`allow hal_dumpstate_impl debugfs_dma_bufinfo:file r_file_perms;')
+dontaudit hal_dumpstate_impl debugfs_dma_bufinfo:file r_file_perms;
+
+# Query and dump power supply nodes
+allow hal_dumpstate_impl sysfs_batteryinfo:dir search;
+allow hal_dumpstate_impl sysfs_batteryinfo:file r_file_perms;
+
+# Dump QCOM FG content
+allow hal_dumpstate_impl debugfs_fg_sram:dir search;
+allow hal_dumpstate_impl debugfs_fg_sram:file rw_file_perms;
diff --git a/sepolicy/vendor/hal_fingerprint.te b/sepolicy/vendor/hal_fingerprint.te
deleted file mode 100644
index 3f2e772..0000000
--- a/sepolicy/vendor/hal_fingerprint.te
+++ /dev/null
@@ -1,7 +0,0 @@
-allow hal_fingerprint sysfs_fingerprint:dir r_dir_perms;
-allow hal_fingerprint sysfs_fingerprint:file rw_file_perms;
-allow hal_fingerprint sysfs_msm_subsys:dir search;
-allow hal_fingerprint sysfs_msm_subsys:file r_file_perms;
-allow hal_fingerprint tee_device:file rw_file_perms;
-allow hal_fingerprint tee_device:chr_file rw_file_perms;
-allow hal_fingerprint uhid_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/hal_fingerprint_default.te b/sepolicy/vendor/hal_fingerprint_default.te
new file mode 100644
index 0000000..ed63845
--- /dev/null
+++ b/sepolicy/vendor/hal_fingerprint_default.te
@@ -0,0 +1,14 @@
+allow hal_fingerprint_default sysfs_fingerprint:dir r_dir_perms;
+allow hal_fingerprint_default sysfs_fingerprint:file rw_file_perms;
+allow hal_fingerprint_default sysfs_msm_subsys:dir search;
+allow hal_fingerprint_default sysfs_msm_subsys:file r_file_perms;
+allow hal_fingerprint_default tee_device:file rw_file_perms;
+allow hal_fingerprint_default tee_device:chr_file rw_file_perms;
+allow hal_fingerprint_default uhid_device:chr_file rw_file_perms;
+
+# TODO(b/36644492): Remove data_between_core_and_vendor_violators once
+# hal_fingerprint no longer directly accesses fingerprintd_data_file.
+typeattribute hal_fingerprint_default data_between_core_and_vendor_violators;
+# access to /data/system/users/[0-9]+/fpdata
+allow hal_fingerprint_default fingerprintd_data_file:file create_file_perms;
+allow hal_fingerprint_default fingerprintd_data_file:dir rw_dir_perms;
diff --git a/sepolicy/vendor/hal_gnss_qti.te b/sepolicy/vendor/hal_gnss_qti.te
index 74620f8..2729a96 100644
--- a/sepolicy/vendor/hal_gnss_qti.te
+++ b/sepolicy/vendor/hal_gnss_qti.te
@@ -30,6 +30,14 @@
 allow hal_gnss_qti self:netlink_generic_socket { bind create read };
 allow hal_gnss_qti self:netlink_route_socket { bind create nlmsg_read read write };
 
+userdebug_or_eng(`
+  allow hal_gnss_qti diag_device:chr_file rw_file_perms;
+  r_dir_file(hal_gnss_qti, sysfs_diag)
+  allow hal_gnss_qti sysfs_timestamp_switch:file r_file_perms;
+')
+dontaudit hal_gnss_qti diag_device:chr_file rw_file_perms;
+dontaudit hal_gnss_qti sysfs_diag:dir search;
+
 # Most HALs are not allowed to use network sockets. Qcom library
 # libqdi is used across multiple processes which are clients of
 # netmgrd including the GNSS HAL. libqdi first attempts to get the network
diff --git a/sepolicy/vendor/hal_graphics_allocator_default.te b/sepolicy/vendor/hal_graphics_allocator_default.te
new file mode 100644
index 0000000..102fe8b
--- /dev/null
+++ b/sepolicy/vendor/hal_graphics_allocator_default.te
@@ -0,0 +1 @@
+dontaudit hal_graphics_allocator_default kernel:system module_request;
diff --git a/sepolicy/vendor/hal_graphics_composer_default.te b/sepolicy/vendor/hal_graphics_composer_default.te
index 7bea2e1..42aa393 100644
--- a/sepolicy/vendor/hal_graphics_composer_default.te
+++ b/sepolicy/vendor/hal_graphics_composer_default.te
@@ -31,4 +31,8 @@
 userdebug_or_eng(`
         allow hal_graphics_composer_default debugfs_mdp:dir r_dir_perms;
         allow hal_graphics_composer_default debugfs_mdp:file r_file_perms;
+        allow hal_graphics_composer_default diag_device:chr_file rw_file_perms;
 ')
+dontaudit hal_graphics_composer_default diag_device:chr_file rw_file_perms;
+
+dontaudit hal_graphics_composer_default kernel:system module_request;
diff --git a/sepolicy/vendor/hal_health_default.te b/sepolicy/vendor/hal_health_default.te
new file mode 100644
index 0000000..bb3a65a
--- /dev/null
+++ b/sepolicy/vendor/hal_health_default.te
@@ -0,0 +1,11 @@
+r_dir_file(hal_health_default, sysfs_msm_subsys)
+
+allow hal_health_default debugfs_ufs:dir search;
+allow hal_health_default sysfs_scsi_devices_0000:dir search;
+allow hal_health_default debugfs_ufs:file { getattr open read };
+allow hal_health_default sysfs_scsi_devices_0000:file { getattr open read };
+
+allow hal_health_default persist_battery_file:file create_file_perms;
+allow hal_health_default persist_battery_file:dir rw_dir_perms;
+allow hal_health_default persist_file:dir search;
+allow hal_health_default sysfs_batteryinfo:file rw_file_perms;
diff --git a/sepolicy/vendor/hal_imsrtp.te b/sepolicy/vendor/hal_imsrtp.te
index a395019..e55ec4d 100644
--- a/sepolicy/vendor/hal_imsrtp.te
+++ b/sepolicy/vendor/hal_imsrtp.te
@@ -30,3 +30,8 @@
 allow hal_imsrtp ion_device:chr_file r_file_perms;
 get_prop(hal_imsrtp, ims_prop)
 binder_call(hal_imsrtp, radio)
+
+userdebug_or_eng(`
+  allow hal_imsrtp diag_device:chr_file rw_file_perms;
+')
+dontaudit hal_imsrtp diag_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/hal_neuralnetworks_hvx.te b/sepolicy/vendor/hal_neuralnetworks_hvx.te
index d528e9b..dcd6b80 100644
--- a/sepolicy/vendor/hal_neuralnetworks_hvx.te
+++ b/sepolicy/vendor/hal_neuralnetworks_hvx.te
@@ -4,5 +4,10 @@
 type hal_neuralnetworks_hvx_exec, exec_type, vendor_file_type, file_type;
 init_daemon_domain(hal_neuralnetworks_hvx)
 
+# Allow HVX NN HAL to communicate with hexagon
 allow hal_neuralnetworks_hvx ion_device:chr_file { read open ioctl };
 allow hal_neuralnetworks_hvx qdsp_device:chr_file { read open ioctl };
+
+# Allow HVX NN HAL to mmap a user-provided fd.
+allow hal_neuralnetworks_hvx app_data_file:file { read write getattr };
+allow hal_neuralnetworks_hvx shell_data_file:file { read write getattr };
diff --git a/sepolicy/vendor/hal_nfc_default.te b/sepolicy/vendor/hal_nfc_default.te
index 3044f1d..21614c4 100644
--- a/sepolicy/vendor/hal_nfc_default.te
+++ b/sepolicy/vendor/hal_nfc_default.te
@@ -1,3 +1,7 @@
 # Data file accesses.
 allow hal_nfc_default nfc_vendor_data_file:dir create_dir_perms;
 allow hal_nfc_default nfc_vendor_data_file:file create_file_perms;
+
+dontaudit hal_nfc_default nxpese_hwservice:hwservice_manager find;
+dontaudit hal_nfc_default nxpnfc_hwservice:hwservice_manager add;
+dontaudit hal_nfc_default persist_nfc_prop:file read;
diff --git a/sepolicy/vendor/hal_power_default.te b/sepolicy/vendor/hal_power_default.te
index b588634..dce10ed 100644
--- a/sepolicy/vendor/hal_power_default.te
+++ b/sepolicy/vendor/hal_power_default.te
@@ -1,6 +1,3 @@
-allow hal_power_default perfd:unix_stream_socket connectto;
-allow hal_power_default perfd_socket:sock_file write;
-
 allow hal_power_default sysfs_graphics:dir search;
 allow hal_power_default sysfs_graphics:file r_file_perms;
 
@@ -8,3 +5,18 @@
 
 allow hal_power_default debugfs_wlan:dir r_dir_perms;
 allow hal_power_default debugfs_wlan:file r_file_perms;
+
+allow hal_power_default sysfs_easel:dir search;
+allow hal_power_default sysfs_easel:file r_file_perms;
+
+
+# To do powerhint on nodes defined in powerhint.json
+allow hal_power_default sysfs_msm_subsys:dir search;
+allow hal_power_default sysfs_msm_subsys:file rw_file_perms;
+allow hal_power_default sysfs_devices_system_cpu:file rw_file_perms;
+allow hal_power_default latency_device:chr_file rw_file_perms;
+allow hal_power_default cgroup:dir search;
+allow hal_power_default cgroup:file rw_file_perms;
+
+# To get/set powerhal state property
+set_prop(hal_power_default, power_prop)
diff --git a/sepolicy/vendor/hal_rcsservice.te b/sepolicy/vendor/hal_rcsservice.te
index 7de16c8..cd16cfa 100644
--- a/sepolicy/vendor/hal_rcsservice.te
+++ b/sepolicy/vendor/hal_rcsservice.te
@@ -27,3 +27,8 @@
 
 # imsrcsd needs read/write access to devpts
 allow hal_rcsservice devpts:chr_file rw_file_perms;
+
+userdebug_or_eng(`
+  allow hal_rcsservice diag_device:chr_file rw_file_perms;
+')
+dontaudit hal_rcsservice diag_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/hal_sensors_default.te b/sepolicy/vendor/hal_sensors_default.te
index fa473a8..3882a02 100644
--- a/sepolicy/vendor/hal_sensors_default.te
+++ b/sepolicy/vendor/hal_sensors_default.te
@@ -12,4 +12,10 @@
 userdebug_or_eng(`
   r_dir_file(hal_sensors_default, sysfs_diag)
   allow hal_sensors_default sysfs_timestamp_switch:file r_file_perms;
+  allow hal_sensors_default diag_device:chr_file rw_file_perms;
 ')
+dontaudit hal_sensors_default diag_device:chr_file rw_file_perms;
+
+# Allow communication with CHRE daemon via socket
+allow hal_sensors_default chre:unix_stream_socket connectto;
+allow hal_sensors_default chre_socket:sock_file write;
diff --git a/sepolicy/vendor/hal_usb_default.te b/sepolicy/vendor/hal_usb_default.te
deleted file mode 100644
index e085b3a..0000000
--- a/sepolicy/vendor/hal_usb_default.te
+++ /dev/null
@@ -1,7 +0,0 @@
-allow hal_usb_default sysfs_msm_subsys:dir search;
-allow hal_usb_default sysfs_msm_subsys:file r_file_perms;
-allow hal_usb_default sysfs_usb_c:dir r_dir_perms;
-allow hal_usb_default sysfs_usb_c:lnk_file read;
-allow hal_usb_default sysfs_usb_c:file rw_file_perms;
-allow hal_usb_default sysfs_usb_device:dir r_dir_perms;
-allow hal_usb_default sysfs_usb_device:file rw_file_perms;
diff --git a/sepolicy/vendor/hal_usb_impl.te b/sepolicy/vendor/hal_usb_impl.te
new file mode 100644
index 0000000..98587dc
--- /dev/null
+++ b/sepolicy/vendor/hal_usb_impl.te
@@ -0,0 +1,16 @@
+type hal_usb_impl, domain;
+hal_server_domain(hal_usb_impl, hal_usb)
+hal_server_domain(hal_usb_impl, hal_usb_gadget)
+
+type hal_usb_impl_exec, exec_type, vendor_file_type, file_type;
+init_daemon_domain(hal_usb_impl)
+
+allow hal_usb_impl sysfs_msm_subsys:dir search;
+allow hal_usb_impl sysfs_msm_subsys:file r_file_perms;
+r_dir_file(hal_usb_impl, sysfs_usb_c)
+allow hal_usb_impl sysfs_usb_c:file w_file_perms;
+allow hal_usb_impl sysfs_usb_device:dir r_dir_perms;
+allow hal_usb_impl sysfs_usb_device:file rw_file_perms;
+allow hal_usb_impl configfs:file create_file_perms;
+
+set_prop(hal_usb_impl, vendor_usb_config_prop)
diff --git a/sepolicy/vendor/hal_wifi_default.te b/sepolicy/vendor/hal_wifi_default.te
index ca0e8c5..a015558 100644
--- a/sepolicy/vendor/hal_wifi_default.te
+++ b/sepolicy/vendor/hal_wifi_default.te
@@ -11,6 +11,9 @@
 # Allow wifi hal to read debug info from the driver.
 r_dir_file(hal_wifi_default, proc_wifi_dbg)
 
+dontaudit hal_wifi_default kernel:system module_request;
+dontaudit hal_wifi_default self:capability sys_module;
+
 userdebug_or_eng(`
 # debugfs entries are only needed in user-debug or eng builds
 
diff --git a/sepolicy/vendor/hal_wifi_supplicant_default.te b/sepolicy/vendor/hal_wifi_supplicant_default.te
new file mode 100644
index 0000000..cab782a
--- /dev/null
+++ b/sepolicy/vendor/hal_wifi_supplicant_default.te
@@ -0,0 +1,6 @@
+# TODO(b/36657258): Remove data_between_core_and_vendor_violators once
+# hal_wifi_supplicant no longer directly accesses wifi_data_file .
+typeattribute hal_wifi_supplicant_default data_between_core_and_vendor_violators;
+
+allow hal_wifi_supplicant_default wifi_data_file:dir create_dir_perms;
+allow hal_wifi_supplicant_default wifi_data_file:file create_file_perms;
diff --git a/sepolicy/vendor/hardware_info_app.te b/sepolicy/vendor/hardware_info_app.te
index 70cb801..27ce440 100644
--- a/sepolicy/vendor/hardware_info_app.te
+++ b/sepolicy/vendor/hardware_info_app.te
@@ -14,8 +14,7 @@
 
 # SysFS
 allow hardware_info_app sysfs_batteryinfo:dir search;
-allow hardware_info_app sysfs_batteryinfo:file { getattr open read write };
-allow hardware_info_app sysfs_batteryinfo:file write;
+allow hardware_info_app sysfs_batteryinfo:file { getattr open read };
 allow hardware_info_app sysfs_camera:dir search;
 allow hardware_info_app sysfs_camera:file { getattr open read };
 allow hardware_info_app sysfs_msm_subsys:dir search;
@@ -24,3 +23,6 @@
 allow hardware_info_app sysfs_soc:dir search;
 allow hardware_info_app sysfs_soc:file { getattr open read };
 
+# DebugFS
+allow hardware_info_app debugfs_ufs:dir search;
+allow hardware_info_app debugfs_ufs:file r_file_perms;
diff --git a/sepolicy/vendor/healthd.te b/sepolicy/vendor/healthd.te
new file mode 100644
index 0000000..6b22ced
--- /dev/null
+++ b/sepolicy/vendor/healthd.te
@@ -0,0 +1,2 @@
+typeattribute healthd system_writes_vendor_properties_violators;
+set_prop(healthd, public_vendor_system_prop)
diff --git a/sepolicy/vendor/hwservice.te b/sepolicy/vendor/hwservice.te
index 4e13ddb..18fbc44 100644
--- a/sepolicy/vendor/hwservice.te
+++ b/sepolicy/vendor/hwservice.te
@@ -3,3 +3,5 @@
 type vnd_atcmdfwd_hwservice, hwservice_manager_type;
 type hal_imsrtp_hwservice, hwservice_manager_type;
 type hal_ipacm_hwservice, hwservice_manager_type;
+type nxpnfc_hwservice, hwservice_manager_type;
+type nxpese_hwservice, hwservice_manager_type;
diff --git a/sepolicy/vendor/hwservice_contexts b/sepolicy/vendor/hwservice_contexts
index 89f7510..1fc0561 100644
--- a/sepolicy/vendor/hwservice_contexts
+++ b/sepolicy/vendor/hwservice_contexts
@@ -4,7 +4,7 @@
 vendor.qti.atcmdfwd::IAtCmdFwd                                  u:object_r:vnd_atcmdfwd_hwservice:s0
 vendor.qti.qcril.am::IQcRilAudio                                u:object_r:vnd_qcrilhook_hwservice:s0
 com.qualcomm.qti.imsrtpservice::IRTPService                     u:object_r:hal_imsrtp_hwservice:s0
-android.hardware.tetheroffload.config::IOffloadConfig           u:object_r:hal_tetheroffload_hwservice:s0
-android.hardware.tetheroffload.control::IOffloadControl         u:object_r:hal_tetheroffload_hwservice:s0
 com.quicinc.cne.api::IApiService                                u:object_r:hal_cne_hwservice:s0
 com.quicinc.cne.server::IServer                                 u:object_r:hal_cne_hwservice:s0
+vendor.nxp.nxpnfc::INxpNfc                                      u:object_r:nxpnfc_hwservice:s0
+vendor.nxp.nxpese::INxpEse                                      u:object_r:nxpese_hwservice:s0
diff --git a/sepolicy/vendor/ims.te b/sepolicy/vendor/ims.te
index a229417..4a11d74 100644
--- a/sepolicy/vendor/ims.te
+++ b/sepolicy/vendor/ims.te
@@ -33,3 +33,8 @@
 hwbinder_use(ims)
 allow ims hal_cne_hwservice:hwservice_manager find;
 binder_call(ims, cnd)
+
+userdebug_or_eng(`
+  allow ims diag_device:chr_file rw_file_perms;
+')
+dontaudit ims diag_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/init-devstart-sh.te b/sepolicy/vendor/init-devstart-sh.te
index 9b76263..47de30f 100644
--- a/sepolicy/vendor/init-devstart-sh.te
+++ b/sepolicy/vendor/init-devstart-sh.te
@@ -10,7 +10,7 @@
 allow init-qcom-devstart-sh vendor_file:file rx_file_perms;
 
 # Set the sys.qcom.devup property
-set_prop(init-qcom-devstart-sh, system_prop)
+set_prop(init-qcom-devstart-sh, public_vendor_system_prop)
 
 # Set boot_adsp and boot_slpi to 1
 allow init-qcom-devstart-sh sysfs_msm_subsys:file w_file_perms;
diff --git a/sepolicy/vendor/init-insmod-sh.te b/sepolicy/vendor/init-insmod-sh.te
index 024984a..184dd03 100644
--- a/sepolicy/vendor/init-insmod-sh.te
+++ b/sepolicy/vendor/init-insmod-sh.te
@@ -7,7 +7,7 @@
 allow init-insmod-sh vendor_toolbox_exec:file rx_file_perms;
 
 # Set the sys.touch.modules.ready property
-set_prop(init-insmod-sh, system_prop)
+set_prop(init-insmod-sh, public_vendor_system_prop)
 
 # Allow insmod
 allow init-insmod-sh self:capability sys_module;
diff --git a/sepolicy/vendor/init-wlan-sh.te b/sepolicy/vendor/init-wlan-sh.te
new file mode 100644
index 0000000..36179ef
--- /dev/null
+++ b/sepolicy/vendor/init-wlan-sh.te
@@ -0,0 +1,14 @@
+type init-qcom-wlan-sh, domain;
+type init-qcom-wlan-sh_exec, exec_type, vendor_file_type, file_type;
+
+init_daemon_domain(init-qcom-wlan-sh)
+
+allow init-qcom-wlan-sh vendor_shell_exec:file rx_file_perms;
+allow init-qcom-wlan-sh vendor_toolbox_exec:file rx_file_perms;
+
+# Set the sys.wlan.driver.version and sys.wlan.firmware.version property
+set_prop(init-qcom-wlan-sh, vendor_wifi_version)
+
+# /sys/kernel/wifi/wlan/driver_version and /sys/kernel/wifi/wlan/fw/0/version
+allow init-qcom-wlan-sh sysfs_msm_wlan:dir r_dir_perms;
+allow init-qcom-wlan-sh sysfs_msm_wlan:file r_file_perms;
diff --git a/sepolicy/vendor/init.te b/sepolicy/vendor/init.te
index fe41cf4..0ecbfe5 100644
--- a/sepolicy/vendor/init.te
+++ b/sepolicy/vendor/init.te
@@ -15,3 +15,6 @@
 allow init persist_block_device:lnk_file relabelto;
 
 dontaudit init kernel:system module_request;
+
+# b/70518189 vDSO experiments
+allow init sysfs_vdso:file w_file_perms;
diff --git a/sepolicy/vendor/kernel.te b/sepolicy/vendor/kernel.te
index d2bf9c0..758eb69 100644
--- a/sepolicy/vendor/kernel.te
+++ b/sepolicy/vendor/kernel.te
@@ -3,12 +3,11 @@
   allow kernel self:socket create;
 ')
 
-allow kernel vendor_firmware_file:dir search;
-allow kernel vendor_firmware_file:file r_file_perms;
-allow kernel vendor_firmware_file:lnk_file read;
-
 dontaudit kernel kernel:system module_request;
 
+# Read FDs from /vendor/firmware
+allow kernel vendor_file:file r_file_perms;
+
 allow kernel debugfs_ipc:dir search;
 allow kernel persist_file:dir search;
 
diff --git a/sepolicy/vendor/logger_app.te b/sepolicy/vendor/logger_app.te
index 46874da..c5262ba 100644
--- a/sepolicy/vendor/logger_app.te
+++ b/sepolicy/vendor/logger_app.te
@@ -19,4 +19,6 @@
   set_prop(logger_app, cnss_diag_prop)
   set_prop(logger_app, modem_diag_prop)
   set_prop(logger_app, bluetooth_log_prop)
+
+  get_prop(logger_app, vendor_usb_config_prop)
 ')
diff --git a/sepolicy/vendor/mediacodec.te b/sepolicy/vendor/mediacodec.te
index eb6476f..1bbadd8 100644
--- a/sepolicy/vendor/mediacodec.te
+++ b/sepolicy/vendor/mediacodec.te
@@ -1,5 +1,7 @@
-allow mediacodec perfd:unix_stream_socket connectto;
-allow mediacodec perfd_socket:sock_file write;
+# VIDEO_DECODE_PLAYBACK_HINT is for interactive governor in HMP kernels
+# Do not grant the access
+dontaudit mediacodec perfd:unix_stream_socket connectto;
+dontaudit mediacodec perfd_socket:sock_file write;
 
 allow mediacodec sysfs_soc:file r_file_perms;
 allow mediacodec sysfs_soc:dir search;
diff --git a/sepolicy/vendor/move-widevine-data-sh.te b/sepolicy/vendor/move-widevine-data-sh.te
new file mode 100644
index 0000000..e2541e5
--- /dev/null
+++ b/sepolicy/vendor/move-widevine-data-sh.te
@@ -0,0 +1,18 @@
+type move-widevine-data-sh, domain, coredomain;
+type move-widevine-data-sh_exec, exec_type, file_type;
+init_daemon_domain(move-widevine-data-sh);
+
+typeattribute move-widevine-data-sh data_between_core_and_vendor_violators;
+
+allow move-widevine-data-sh shell_exec:file rx_file_perms;
+allow move-widevine-data-sh toolbox_exec:file rx_file_perms;
+
+allow move-widevine-data-sh file_contexts_file:file { read getattr open };
+
+allow move-widevine-data-sh media_data_file:file { getattr setattr relabelfrom };
+allow move-widevine-data-sh media_data_file:dir  { reparent rename rmdir setattr rw_dir_perms relabelfrom };
+
+allow move-widevine-data-sh mediadrm_vendor_data_file:dir { create_dir_perms relabelto };
+
+# for writing files_moved so we only execute the move once
+allow move-widevine-data-sh mediadrm_vendor_data_file:file { create open write getattr relabelto };
diff --git a/sepolicy/vendor/netd.te b/sepolicy/vendor/netd.te
index b26f975..01c5cc3 100644
--- a/sepolicy/vendor/netd.te
+++ b/sepolicy/vendor/netd.te
@@ -1,4 +1,2 @@
-allow netd sysfs_net:file w_file_perms;
-
 dontaudit netd kernel:system module_request;
 dontaudit netd self:capability sys_module;
diff --git a/sepolicy/vendor/netmgrd.te b/sepolicy/vendor/netmgrd.te
index adbc4b6..c245452 100644
--- a/sepolicy/vendor/netmgrd.te
+++ b/sepolicy/vendor/netmgrd.te
@@ -4,7 +4,7 @@
 net_domain(netmgrd)
 init_daemon_domain(netmgrd)
 
-set_prop(netmgrd, net_radio_prop)
+set_prop(netmgrd, vendor_net_radio_prop)
 set_prop(netmgrd, net_rmnet_prop)
 
 # communicate with netd
@@ -35,12 +35,15 @@
 
 #Allow netutils usage
 domain_auto_trans(netmgrd, netutils_wrapper_exec, netutils_wrapper)
+allow netmgrd netutils_wrapper:process sigkill;
 
 #Allow diag logging
 allow netmgrd sysfs_timestamp_switch:file { read open };
 userdebug_or_eng(`
   r_dir_file(netmgrd, sysfs_diag)
+  allow netmgrd diag_device:chr_file rw_file_perms;
 ')
+dontaudit netmgrd diag_device:chr_file rw_file_perms;
 
 #Ignore if device loading for private IOCTL failed
 dontaudit netmgrd kernel:system { module_request };
diff --git a/sepolicy/vendor/netutils_wrapper.te b/sepolicy/vendor/netutils_wrapper.te
index ec34fd3..f1bec3b 100644
--- a/sepolicy/vendor/netutils_wrapper.te
+++ b/sepolicy/vendor/netutils_wrapper.te
@@ -2,6 +2,13 @@
 allow netutils_wrapper netmgrd:fd use;
 allow netutils_wrapper netmgrd:fifo_file { getattr read write append };
 
+dontaudit netutils_wrapper netmgrd:socket { read write };
+dontaudit netutils_wrapper netmgrd:unix_stream_socket { read write };
 dontaudit netutils_wrapper netmgrd:netlink_socket { getattr read write append };
 dontaudit netutils_wrapper kernel:system module_request;
 dontaudit netutils_wrapper self:capability sys_module;
+
+userdebug_or_eng(`
+  allow netutils_wrapper diag_device:chr_file rw_file_perms;
+')
+dontaudit netutils_wrapper diag_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/perfd.te b/sepolicy/vendor/perfd.te
index fa99d15..950e1d6 100644
--- a/sepolicy/vendor/perfd.te
+++ b/sepolicy/vendor/perfd.te
@@ -2,31 +2,3 @@
 type perfd_exec, exec_type, vendor_file_type, file_type;
 
 init_daemon_domain(perfd)
-
-r_dir_file(perfd, sysfs_msm_subsys)
-
-# perfd uses kill(pid, 0) to determine if a process exists.
-# Determining if a process exists does not require the kill capability
-# since a permission denied indicates the process exists.
-dontaudit perfd self:capability kill;
-
-allow perfd mediacodec:process signull;
-allow perfd hal_power_default:process signull;
-
-allow perfd cgroup:file r_file_perms;
-allow perfd post_boot_prop:file r_file_perms;
-
-allow perfd proc:file rw_file_perms;
-allow perfd sysfs_clkscale:file r_file_perms;
-allow perfd sysfs_graphics:dir search;
-allow perfd sysfs_graphics:file r_file_perms;
-allow perfd sysfs_soc:dir search;
-allow perfd sysfs_soc:file r_file_perms;
-allow perfd sysfs_graphics:dir search;
-allow perfd sysfs_graphics:file r_file_perms;
-allow perfd sysfs_msm_subsys:file w_file_perms;
-allow perfd sysfs_devices_system_cpu:file w_file_perms;
-
-allow perfd perfd_socket:sock_file write;
-
-allow perfd latency_device:chr_file w_file_perms;
diff --git a/sepolicy/vendor/property.te b/sepolicy/vendor/property.te
index 9f38fab..7651a23 100644
--- a/sepolicy/vendor/property.te
+++ b/sepolicy/vendor/property.te
@@ -3,15 +3,24 @@
 type ims_prop, property_type;
 type keymaster_prop, property_type;
 type net_rmnet_prop, property_type;
-type ramdump_prop, property_type;
+type vendor_ramdump_prop, property_type;
 type post_boot_prop, property_type;
-type ssr_prop, property_type;
+type public_vendor_default_prop, property_type;
+type public_vendor_system_prop, property_type;
+type vendor_ssr_prop, property_type;
 type cnss_diag_prop, property_type;
 type tee_listener_prop, property_type;
 type wc_prop, property_type;
 type thermal_prop, property_type;
 type modem_diag_prop, property_type;
-type tel_mon_prop, property_type;
 type sys_time_prop, property_type;
 type atfwd_start_prop, property_type;
 type bluetooth_log_prop, property_type;
+type power_prop, property_type;
+type vendor_bluetooth_prop, property_type;
+type vendor_net_radio_prop, property_type;
+type vendor_radio_prop, property_type;
+type vendor_wifi_version, property_type;
+type vendor_usb_config_prop, property_type;
+type vendor_charge_prop, property_type;
+type persist_nfc_prop, property_type;
diff --git a/sepolicy/vendor/property_contexts b/sepolicy/vendor/property_contexts
index 9094079..112fcfa 100644
--- a/sepolicy/vendor/property_contexts
+++ b/sepolicy/vendor/property_contexts
@@ -6,22 +6,204 @@
 vendor.ims.                u:object_r:ims_prop:s0
 sys.keymaster.loaded       u:object_r:keymaster_prop:s0
 net.r_rmnet_data0          u:object_r:net_rmnet_prop:s0
-persist.net.doxlat         u:object_r:net_radio_prop:s0
+persist.net.doxlat         u:object_r:vendor_net_radio_prop:s0
 sys.post_boot.             u:object_r:post_boot_prop:s0
-radio.                     u:object_r:radio_prop:s0
-rcs.publish.status         u:object_r:radio_prop:s0
-debug.htc.hrdump           u:object_r:ramdump_prop:s0
-debug.htc.ramdump          u:object_r:ramdump_prop:s0
-persist.sys.crash_rcu      u:object_r:ramdump_prop:s0
-debug.ssrdump              u:object_r:ssr_prop:s0
+radio.                     u:object_r:vendor_radio_prop:s0
+rcs.publish.status         u:object_r:vendor_radio_prop:s0
+vendor.debug.ramdump.      u:object_r:vendor_ramdump_prop:s0
+persist.vendor.sys.crash_rcu  u:object_r:vendor_ramdump_prop:s0
+vendor.debug.ssrdump       u:object_r:vendor_ssr_prop:s0
 persist.sys.cnss.          u:object_r:cnss_diag_prop:s0
 sys.listeners.registered   u:object_r:tee_listener_prop:s0
 wc_transport.              u:object_r:wc_prop:s0
 sys.qcom.thermalcfg        u:object_r:thermal_prop:s0
-ctl.thermal-engine         u:object_r:thermal_prop:s0
+ctl.vendor.thermal-engine  u:object_r:thermal_prop:s0
 persist.sys.modem.diag.    u:object_r:modem_diag_prop:s0
 sys.modem.diag.            u:object_r:modem_diag_prop:s0
-persist.radio.enable_tel_mon  u:object_r:tel_mon_prop:s0
 sys.time.set               u:object_r:sys_time_prop:s0
 persist.radio.atfwd.start  u:object_r:atfwd_start_prop:s0
 sys.logger.bluetooth       u:object_r:bluetooth_log_prop:s0
+vendor.powerhal.state      u:object_r:power_prop:s0
+vendor.powerhal.audio      u:object_r:power_prop:s0
+sys.wlan.driver.version    u:object_r:vendor_wifi_version:s0
+sys.wlan.firmware.version  u:object_r:vendor_wifi_version:s0
+persist.vendor.usb.config  u:object_r:vendor_usb_config_prop:s0
+vendor.usb.config          u:object_r:vendor_usb_config_prop:s0
+persist.vendor.charge.     u:object_r:vendor_charge_prop:s0
+
+# public_vendor_default_prop
+# They are public_vendor_default_props for vendor-specific extension.
+# Usually they are for vndk-sp libs and vendor apks.
+fastrpc.perf.              u:object_r:public_vendor_default_prop:s0
+persist.cne.cqetimer       u:object_r:public_vendor_default_prop:s0
+persist.cne.feature        u:object_r:public_vendor_default_prop:s0
+persist.cne.logging.qxdm   u:object_r:public_vendor_default_prop:s0
+persist.gcam.              u:object_r:public_vendor_default_prop:s0
+persist.vendor.cnd.iwlan   u:object_r:public_vendor_default_prop:s0
+persist.vendor.cnd.wqe     u:object_r:public_vendor_default_prop:s0
+ro.graphics.memory         u:object_r:public_vendor_default_prop:s0
+ro.boot.ddrsize            u:object_r:public_vendor_default_prop:s0
+ro.boot.hardware.ddr       u:object_r:public_vendor_default_prop:s0
+ro.boot.hardware.ufs       u:object_r:public_vendor_default_prop:s0
+ro.qcom.adreno.            u:object_r:public_vendor_default_prop:s0
+ro.vendor.graphics.memory  u:object_r:public_vendor_default_prop:s0
+vendor.debug.egl.changepixelformat  u:object_r:public_vendor_default_prop:s0
+vendor.debug.prerotation.disable  u:object_r:public_vendor_default_prop:s0
+vendor.debug.rs.           u:object_r:public_vendor_default_prop:s0
+
+# public_vendor_system_prop
+# They are public_vendor_system_props for vendor-specific extension.
+sys.all.modules.ready      u:object_r:public_vendor_system_prop:s0
+sys.qcom.devup             u:object_r:public_vendor_system_prop:s0
+sys.slpi.firmware.version  u:object_r:public_vendor_system_prop:s0
+
+# vendor_default_prop
+# default_prop isn't accessible from vendor components.
+# So vendor_default_prop should be marked.
+audio_hal.in_period_size   u:object_r:vendor_default_prop:s0
+audio_hal.period_multiplier  u:object_r:vendor_default_prop:s0
+audio_hal.period_size      u:object_r:vendor_default_prop:s0
+audio.adm.                 u:object_r:vendor_default_prop:s0
+audio.snd_card.open.retries  u:object_r:vendor_default_prop:s0
+audio.usb.enable.debug     u:object_r:vendor_default_prop:s0
+audio.volume.headset.gain.depcal  u:object_r:vendor_default_prop:s0
+audio.volume.listener.dump  u:object_r:vendor_default_prop:s0
+boost_override             u:object_r:vendor_default_prop:s0
+cameradaemon.SaveMemAtBoot  u:object_r:vendor_default_prop:s0
+camera.cpp.                u:object_r:vendor_default_prop:s0
+camera.eis.fov_correction  u:object_r:vendor_default_prop:s0
+camera.hdrplus.donotpoweroneasel  u:object_r:vendor_default_prop:s0
+com.qti.                   u:object_r:vendor_default_prop:s0
+cpp.set.clock              u:object_r:vendor_default_prop:s0
+disable.cpp.power.collapse  u:object_r:vendor_default_prop:s0
+downmix_override_mode      u:object_r:vendor_default_prop:s0
+fmas.                      u:object_r:vendor_default_prop:s0
+gpu.stats.debug.level      u:object_r:vendor_default_prop:s0
+hw.hdmi.resolution         u:object_r:vendor_default_prop:s0
+fpc_kpi                    u:object_r:vendor_default_prop:s0
+media.aac_51_output_enabled  u:object_r:vendor_default_prop:s0
+mmp.enable.3g2             u:object_r:vendor_default_prop:s0
+mm.enable.qcom_parser      u:object_r:vendor_default_prop:s0
+mm.enable.smoothstreaming  u:object_r:vendor_default_prop:s0
+perflocks.predefined_clust_map  u:object_r:vendor_default_prop:s0
+perflocks.predefined_freq_map  u:object_r:vendor_default_prop:s0
+persist.audio.calfile0     u:object_r:vendor_default_prop:s0
+persist.audio.dualmic.config  u:object_r:vendor_default_prop:s0
+persist.audio.fluence.     u:object_r:vendor_default_prop:s0
+persist.cam.pp.feat.mask   u:object_r:vendor_default_prop:s0
+persist.cne.override.memlimit  u:object_r:vendor_default_prop:s0
+persist.data_netmgrd_mtu   u:object_r:vendor_default_prop:s0
+persist.data_netmgrd_nint  u:object_r:vendor_default_prop:s0
+persist.data.df.           u:object_r:vendor_default_prop:s0
+persist.data.dont_use_epc  u:object_r:vendor_default_prop:s0
+persist.data.dont_use_npflag  u:object_r:vendor_default_prop:s0
+persist.data.dpm.enable    u:object_r:vendor_default_prop:s0
+persist.data.dropssdp      u:object_r:vendor_default_prop:s0
+persist.data.ibfc.enable   u:object_r:vendor_default_prop:s0
+persist.data.iwlan.enable  u:object_r:vendor_default_prop:s0
+persist.data.iwlan.ims.enable  u:object_r:vendor_default_prop:s0
+persist.data.iwlan.rekey   u:object_r:vendor_default_prop:s0
+persist.data.llf.enable    u:object_r:vendor_default_prop:s0
+persist.data.mode          u:object_r:vendor_default_prop:s0
+persist.data.netmgrd.qos.enable  u:object_r:vendor_default_prop:s0
+persist.data.netmgrd.qos.hybrid  u:object_r:vendor_default_prop:s0
+persist.data.netmgr.log_to_file  u:object_r:vendor_default_prop:s0
+persist.data.netmgr.wl.timeout  u:object_r:vendor_default_prop:s0
+persist.data.port_bridge.log  u:object_r:vendor_default_prop:s0
+persist.data.profile_update  u:object_r:vendor_default_prop:s0
+persist.data.qmi.adb_logmask  u:object_r:vendor_default_prop:s0
+persist.data.rmnet.en      u:object_r:vendor_default_prop:s0
+persist.data.target.msm8998  u:object_r:vendor_default_prop:s0
+persist.data.tcpackprio.enable  u:object_r:vendor_default_prop:s0
+persist.data.wda.enable    u:object_r:vendor_default_prop:s0
+persist.debug.sensors.elmyra.rate  u:object_r:vendor_default_prop:s0
+persist.debug.sensors.hal  u:object_r:vendor_default_prop:s0
+persist.debug.sf.showfps   u:object_r:vendor_default_prop:s0
+persist.delta_time.enable  u:object_r:vendor_default_prop:s0
+persist.enable.max.pending.buf  u:object_r:vendor_default_prop:s0
+persist.env.spec           u:object_r:vendor_default_prop:s0
+persist.fci                u:object_r:vendor_default_prop:s0
+persist.fuse_sdcard        u:object_r:vendor_default_prop:s0
+persist.hwc.blit.comp      u:object_r:vendor_default_prop:s0
+persist.metadata_dynfps.disable  u:object_r:vendor_default_prop:s0
+persist.msmirqbalance.debug  u:object_r:vendor_default_prop:s0
+persist.net.logmask        u:object_r:vendor_default_prop:s0
+persist.partial.skip       u:object_r:vendor_default_prop:s0
+persist.pd_locater_debug   u:object_r:vendor_default_prop:s0
+persist.qcril              u:object_r:vendor_default_prop:s0
+persist.rild.nitz_         u:object_r:vendor_default_prop:s0
+persist.rmnet.data.enable  u:object_r:vendor_default_prop:s0
+persist.sensors.elmyra.sensitivity  u:object_r:vendor_default_prop:s0
+persist.sensors.hal_timeout  u:object_r:vendor_default_prop:s0
+persist.sys.ssr.enable_ramdumps  u:object_r:vendor_default_prop:s0
+persist.sys.ssr.restart_level  u:object_r:vendor_default_prop:s0
+persist.timed.enable       u:object_r:vendor_default_prop:s0
+persist.tnr.process.plates  u:object_r:vendor_default_prop:s0
+qcom.bluetooth.soc         u:object_r:vendor_default_prop:s0
+qcril.support.encrypted_calls  u:object_r:vendor_default_prop:s0
+qdcm.                      u:object_r:vendor_default_prop:s0
+rild.libargs               u:object_r:vendor_default_prop:s0
+rild.libpath               u:object_r:vendor_default_prop:s0
+ro.alarm_boot              u:object_r:vendor_default_prop:s0
+ro.boot.factoryota         u:object_r:vendor_default_prop:s0
+ro.boot.mid                u:object_r:vendor_default_prop:s0
+ro.boot.temp_protect_ignore  u:object_r:vendor_default_prop:s0
+ro.camera.wrapper.hal3TrebleMinorVersion  u:object_r:vendor_default_prop:s0
+ro.fota.oem                u:object_r:vendor_default_prop:s0
+ro.lean                    u:object_r:vendor_default_prop:s0
+ro.min_freq_0              u:object_r:vendor_default_prop:s0
+ro.min_freq_4              u:object_r:vendor_default_prop:s0
+ro.oem_unlock.pst          u:object_r:vendor_default_prop:s0
+ro.qcom.                   u:object_r:vendor_default_prop:s0
+ro.qc.sdk.audio.fluencetype  u:object_r:vendor_default_prop:s0
+ro.qfusion_use_report_period  u:object_r:vendor_default_prop:s0
+ro.qti.                    u:object_r:vendor_default_prop:s0
+ro.qualcomm.               u:object_r:vendor_default_prop:s0
+ro.radio.log_loc           u:object_r:vendor_default_prop:s0
+ro.radio.log_prefix        u:object_r:vendor_default_prop:s0
+ro.rfkilldisabled          u:object_r:vendor_default_prop:s0
+ro.vendor.build.svn        u:object_r:vendor_default_prop:s0
+ro.vendor.extension_library  u:object_r:vendor_default_prop:s0
+ro.vibrator.hal.click.duration  u:object_r:vendor_default_prop:s0
+ro.vibrator.hal.tick.duration  u:object_r:vendor_default_prop:s0
+ro.vibrator.hal.heavyclick.duration  u:object_r:vendor_default_prop:s0
+sdm.                       u:object_r:vendor_default_prop:s0
+sys.disable_ext_animation  u:object_r:vendor_default_prop:s0
+sys.display.low_persistence_mode_brightness  u:object_r:vendor_default_prop:s0
+sys.hwc_disable_hdr        u:object_r:vendor_default_prop:s0
+sys.qca1530                u:object_r:vendor_default_prop:s0
+vendor.audio.adm.buffering.ms  u:object_r:vendor_default_prop:s0
+vendor.vidc.enc.dcvs.extra-buff-count  u:object_r:vendor_default_prop:s0
+ubwc.no.compression        u:object_r:vendor_default_prop:s0
+
+# vendor_radio_prop
+persist.radio.always_send_plmn  u:object_r:vendor_radio_prop:s0
+persist.radio.apm_sim_not_pwdn  u:object_r:vendor_radio_prop:s0
+persist.radio.custom_ecc   u:object_r:vendor_radio_prop:s0
+persist.radio.data_con_rprt  u:object_r:vendor_radio_prop:s0
+persist.radio.data_ltd_sys_ind  u:object_r:vendor_radio_prop:s0
+persist.radio.is_wps_enabled  u:object_r:vendor_radio_prop:s0
+persist.radio.RATE_ADAPT_ENABLE  u:object_r:vendor_radio_prop:s0
+persist.radio.ROTATION_ENABLE  u:object_r:vendor_radio_prop:s0
+persist.radio.sap_silent_pin  u:object_r:vendor_radio_prop:s0
+persist.radio.sib16_support  u:object_r:vendor_radio_prop:s0
+persist.radio.smlog_switch  u:object_r:vendor_radio_prop:s0
+persist.radio.snapshot_enabled  u:object_r:vendor_radio_prop:s0
+persist.radio.snapshot_timer  u:object_r:vendor_radio_prop:s0
+persist.radio.videopause.mode  u:object_r:vendor_radio_prop:s0
+persist.radio.VT_ENABLE    u:object_r:vendor_radio_prop:s0
+persist.radio.VT_HYBRID_ENABLE  u:object_r:vendor_radio_prop:s0
+
+# vendor_bluetooth_prop
+persist.vendor.bluetooth.a4wp           u:object_r:vendor_bluetooth_prop:s0
+persist.vendor.bluetooth.csoc.cnt       u:object_r:vendor_bluetooth_prop:s0
+persist.vendor.service.bdroid.fwsnoop   u:object_r:vendor_bluetooth_prop:s0
+persist.vendor.service.bdroid.sibs      u:object_r:vendor_bluetooth_prop:s0
+persist.vendor.service.bdroid.snooplog  u:object_r:vendor_bluetooth_prop:s0
+persist.vendor.service.bdroid.soclog    u:object_r:vendor_bluetooth_prop:s0
+persist.vendor.service.bdroid.ssrlvl    u:object_r:vendor_bluetooth_prop:s0
+ro.vendor.bluetooth.emb_wp_mode         u:object_r:vendor_bluetooth_prop:s0
+ro.vendor.bluetooth.wipower             u:object_r:vendor_bluetooth_prop:s0
+
+# persist_nfc_prop
+persist.nfc. u:object_r:persist_nfc_prop:s0
diff --git a/sepolicy/vendor/qti.te b/sepolicy/vendor/qti.te
index a5d1aa8..175db91 100644
--- a/sepolicy/vendor/qti.te
+++ b/sepolicy/vendor/qti.te
@@ -14,3 +14,11 @@
 allowxperm qti self:socket ioctl msm_sock_ipc_ioctls;
 
 r_dir_file(qti, sysfs_msm_subsys)
+
+userdebug_or_eng(`
+  allow qti diag_device:chr_file rw_file_perms;
+  r_dir_file(qti, sysfs_diag)
+  allow qti sysfs_timestamp_switch:file r_file_perms;
+')
+dontaudit qti diag_device:chr_file rw_file_perms;
+dontaudit qti sysfs_diag:dir search;
diff --git a/sepolicy/vendor/radio.te b/sepolicy/vendor/radio.te
index bd704c2..30a7838 100644
--- a/sepolicy/vendor/radio.te
+++ b/sepolicy/vendor/radio.te
@@ -1,5 +1,5 @@
 get_prop(radio, ims_prop)
-userdebug_or_eng(`set_prop(radio, tel_mon_prop)')
+typeattribute radio system_writes_vendor_properties_violators;
 
 allow radio qmuxd_socket:dir search;
 allow radio qmuxd_socket:sock_file write;
@@ -24,3 +24,16 @@
 allow radio avtimer_device:chr_file r_file_perms;
 
 binder_call(radio, hal_imsrtp)
+
+userdebug_or_eng(`
+  allow radio diag_device:chr_file rw_file_perms;
+  r_dir_file(radio, sysfs_diag)
+  allow radio sysfs_timestamp_switch:file r_file_perms;
+')
+dontaudit radio diag_device:chr_file rw_file_perms;
+dontaudit radio sysfs_diag:dir search;
+
+# read /proc/cmdline
+allow radio proc_cmdline:file r_file_perms;
+
+get_prop(radio, vendor_radio_prop)
diff --git a/sepolicy/vendor/ramdump.te b/sepolicy/vendor/ramdump.te
index caa0158..7514dea 100644
--- a/sepolicy/vendor/ramdump.te
+++ b/sepolicy/vendor/ramdump.te
@@ -4,13 +4,16 @@
   type ramdump, domain;
   init_daemon_domain(ramdump)
 
-  set_prop(ramdump, ramdump_prop)
+  set_prop(ramdump, vendor_ramdump_prop)
 
   allow ramdump self:capability sys_rawio;
 
   allow ramdump ramdump_vendor_data_file:dir create_dir_perms;
   allow ramdump ramdump_vendor_data_file:file create_file_perms;
-  allow ramdump proc:file r_file_perms;
+  allow ramdump {
+    proc
+    proc_cmdline
+  }:file r_file_perms;
 
   allow ramdump block_device:dir search;
   allow ramdump misc_block_device:blk_file rw_file_perms;
diff --git a/sepolicy/vendor/ramdump_app.te b/sepolicy/vendor/ramdump_app.te
index e9c4f05..ed9bf33 100644
--- a/sepolicy/vendor/ramdump_app.te
+++ b/sepolicy/vendor/ramdump_app.te
@@ -9,6 +9,6 @@
   allow ramdump_app ramdump_vendor_data_file:file create_file_perms;
   allow ramdump_app ramdump_vendor_data_file:dir create_dir_perms;
 
-  set_prop(ramdump_app, ramdump_prop);
-  get_prop(system_app, ssr_prop)
+  set_prop(ramdump_app, vendor_ramdump_prop);
+  get_prop(system_app, vendor_ssr_prop)
 ')
diff --git a/sepolicy/vendor/rild.te b/sepolicy/vendor/rild.te
index 15d084c..609bf2f 100644
--- a/sepolicy/vendor/rild.te
+++ b/sepolicy/vendor/rild.te
@@ -8,7 +8,7 @@
 allow rild netmgrd_socket:dir search;
 unix_socket_connect(rild, netmgrd, netmgrd)
 
-allow rild vendor_file:file { execute_no_trans lock };
+allow rild vendor_file:file { execute_no_trans lock ioctl };
 
 allow rild per_mgr_service:service_manager find;
 
@@ -21,7 +21,14 @@
 
 userdebug_or_eng(`
   domain_auto_trans(rild, smlog_dump_exec, smlog_dump)
+  allow rild diag_device:chr_file rw_file_perms;
 ')
+dontaudit rild diag_device:chr_file rw_file_perms;
 
 allow rild radio_vendor_data_file:dir rw_dir_perms;
 allow rild radio_vendor_data_file:file create_file_perms;
+
+get_prop(rild, vendor_radio_prop)
+
+# Allow vendor native process to read the proc file of xt_qtaguid
+allow rild proc_qtaguid_stat:file r_file_perms;
diff --git a/sepolicy/vendor/seapp_contexts b/sepolicy/vendor/seapp_contexts
index 2e3fcbd..6d17cf7 100644
--- a/sepolicy/vendor/seapp_contexts
+++ b/sepolicy/vendor/seapp_contexts
@@ -1,5 +1,5 @@
 user=system seinfo=platform name=com.google.SSRestartDetector domain=ssr_detector_app type=system_app_data_file
-user=_app seinfo=platform name=com.android.nexuslogger domain=logger_app type=app_data_file levelFrom=all
+user=_app seinfo=platform name=com.android.pixellogger domain=logger_app type=app_data_file levelFrom=all
 user=_app seinfo=platform name=com.android.ramdump domain=ramdump_app type=app_data_file levelFrom=all
 user=_app seinfo=platform name=com.google.mds domain=mds_app type=app_data_file levelFrom=all
 
@@ -24,3 +24,6 @@
 
 # Domain for easelservice app
 user=_app seinfo=easel name=com.google.android.imaging.easel.service domain=easelservice_app type=app_data_file levelFrom=user
+
+#Domain for connectivity monitor
+user=radio seinfo=platform name=com.google.android.connectivitymonitor domain=con_monitor_app type=app_data_file levelFrom=all
diff --git a/sepolicy/vendor/sensors.te b/sepolicy/vendor/sensors.te
index fb4cf3a..a313993 100644
--- a/sepolicy/vendor/sensors.te
+++ b/sepolicy/vendor/sensors.te
@@ -29,4 +29,6 @@
 userdebug_or_eng(`
   r_dir_file(sensors, sysfs_diag)
   allow sensors sysfs_timestamp_switch:file r_file_perms;
+  allow sensors diag_device:chr_file rw_file_perms;
 ')
+dontaudit sensors diag_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/smlog_dump.te b/sepolicy/vendor/smlog_dump.te
index bc8d94b..243a1de 100644
--- a/sepolicy/vendor/smlog_dump.te
+++ b/sepolicy/vendor/smlog_dump.te
@@ -24,4 +24,7 @@
   allow smlog_dump dumpstate:fd use;
   allow smlog_dump hal_dumpstate_impl:fd use;
   allow smlog_dump uio_device:chr_file rw_file_perms;
+
+  # For collecting bugreports.
+  allow smlog_dump shell_data_file:file write;
 ')
diff --git a/sepolicy/vendor/ssr_detector.te b/sepolicy/vendor/ssr_detector.te
index 27882d5..a5ffd3b 100644
--- a/sepolicy/vendor/ssr_detector.te
+++ b/sepolicy/vendor/ssr_detector.te
@@ -6,7 +6,8 @@
 userdebug_or_eng(`
   allow ssr_detector_app ramdump_vendor_data_file:dir r_dir_perms;
   allow ssr_detector_app ramdump_vendor_data_file:file r_file_perms;
-  get_prop(ssr_detector_app, ssr_prop)
+  get_prop(ssr_detector_app, vendor_ssr_prop)
+  get_prop(ssr_detector_app, vendor_wifi_version)
 ')
 
 allow ssr_detector_app app_api_service:service_manager find;
diff --git a/sepolicy/vendor/subsystem_ramdump.te b/sepolicy/vendor/subsystem_ramdump.te
index 60a0a6d..fada78e 100644
--- a/sepolicy/vendor/subsystem_ramdump.te
+++ b/sepolicy/vendor/subsystem_ramdump.te
@@ -13,5 +13,5 @@
   allow subsystem_ramdump ramdump_vendor_data_file:dir rw_dir_perms;
   allow subsystem_ramdump ramdump_vendor_data_file:file create_file_perms;
 
-  set_prop(subsystem_ramdump, ssr_prop);
+  set_prop(subsystem_ramdump, vendor_ssr_prop);
 ')
diff --git a/sepolicy/vendor/surfaceflinger.te b/sepolicy/vendor/surfaceflinger.te
index fee5e12..636d98b 100644
--- a/sepolicy/vendor/surfaceflinger.te
+++ b/sepolicy/vendor/surfaceflinger.te
@@ -1,3 +1,7 @@
 dontaudit surfaceflinger firmware_file:dir search;
+dontaudit surfaceflinger vendor_file:file read;
 dontaudit surfaceflinger kernel:system module_request;
 allow surfaceflinger debugfs_ion:dir search;
+
+typeattribute surfaceflinger system_writes_vendor_properties_violators;
+set_prop(surfaceflinger, public_vendor_system_prop)
diff --git a/sepolicy/vendor/system_app.te b/sepolicy/vendor/system_app.te
index 1cc6fb1..61cc533 100644
--- a/sepolicy/vendor/system_app.te
+++ b/sepolicy/vendor/system_app.te
@@ -1,10 +1,10 @@
-# Needed by Settings app's TelephonyMonitorPreferenceController, available only on a subset of
-# userdebug and eng devices
-userdebug_or_eng(`set_prop(system_app, tel_mon_prop)')
-
 # Needed by Settings app's CameraHalHdrplusPreferenceController
+typeattribute system_app system_writes_vendor_properties_violators;
 set_prop(system_app, camera_prop)
 
 # read regulatory info
 allow system_app elabel_data_file:dir r_dir_perms;
 allow system_app elabel_data_file:file r_file_perms;
+
+set_prop(system_app, vendor_bluetooth_prop)
+set_prop(system_app, public_vendor_system_prop)
diff --git a/sepolicy/vendor/system_server.te b/sepolicy/vendor/system_server.te
index 719d2a1..bcba87c 100644
--- a/sepolicy/vendor/system_server.te
+++ b/sepolicy/vendor/system_server.te
@@ -6,10 +6,12 @@
 allow system_server persist_file:dir search;
 allow system_server persist_sensors_file:dir search;
 allow system_server persist_sensors_file:file r_file_perms;
-allow system_server location_data_file:dir create_dir_perms;
-allow system_server location_data_file:file create_file_perms;
 allow system_server wlan_device:chr_file rw_file_perms;
 
+# TODO(b/73123675): BatterySaver needs access to cpufreq. Remove this access
+# once cpufreq functionality is hidden behind a HAL.
+allow system_server sysfs_devices_system_cpu:file w_file_perms;
+
 # input files
 r_dir_file(system_server, idc_file)
 r_dir_file(system_server, keylayout_file)
@@ -20,3 +22,8 @@
 dontaudit system_server untrusted_app:file write;
 dontaudit system_server hal_audio_default:file write;
 dontaudit system_server appdomain:file write;
+
+typeattribute system_server system_writes_vendor_properties_violators;
+set_prop(system_server, public_vendor_system_prop)
+
+dontaudit system_server self:capability sys_module;
diff --git a/sepolicy/vendor/tango_core.te b/sepolicy/vendor/tango_core.te
index e72e3bc..0fd0e25 100644
--- a/sepolicy/vendor/tango_core.te
+++ b/sepolicy/vendor/tango_core.te
@@ -15,5 +15,6 @@
 allow tango_core persist_sensors_file:file { getattr open read };
 
 # Allow access to necessary vendor libraries to execute Hexagon code
+typeattribute tango_core system_executes_vendor_violators;
 allow tango_core hexagon_halide_file:file { execute read open getattr };
 allow tango_core qdsp_device:chr_file { ioctl open read };
diff --git a/sepolicy/vendor/tee.te b/sepolicy/vendor/tee.te
index 0ddf90f..98ae143 100644
--- a/sepolicy/vendor/tee.te
+++ b/sepolicy/vendor/tee.te
@@ -16,8 +16,10 @@
 allow tee persist_data_file:dir create_dir_perms;
 allow tee persist_data_file:file create_file_perms;
 
+# TODO(b/36644492): Remove data_between_core_and_vendor_violators once
+# tee no longer directly accesses /data owned by the frameworks.
+typeattribute tee data_between_core_and_vendor_violators;
 allow tee system_data_file:dir r_dir_perms;
-
 allow tee fingerprintd_data_file:dir rw_dir_perms;
 allow tee fingerprintd_data_file:file create_file_perms;
 
diff --git a/sepolicy/vendor/thermal-engine.te b/sepolicy/vendor/thermal-engine.te
index 8009959..bc1ab54 100644
--- a/sepolicy/vendor/thermal-engine.te
+++ b/sepolicy/vendor/thermal-engine.te
@@ -24,6 +24,9 @@
 
 allow thermal-engine thermal_device:chr_file rw_file_perms;
 
+r_dir_file(thermal-engine, sysfs_batteryinfo)
+allow thermal-engine sysfs_batteryinfo:file w_file_perms;
+
 r_dir_file(thermal-engine, sysfs_leds)
 r_dir_file(thermal-engine, sysfs_msm_subsys)
 r_dir_file(thermal-engine, sysfs_uio)
@@ -33,3 +36,8 @@
 
 # reboot/shutdown for thermal limits exceeded
 set_prop(thermal-engine, powerctl_prop)
+
+userdebug_or_eng(`
+  allow thermal-engine diag_device:chr_file rw_file_perms;
+')
+dontaudit thermal-engine diag_device:chr_file rw_file_perms;
diff --git a/sepolicy/vendor/time_daemon.te b/sepolicy/vendor/time_daemon.te
index 82a62e2..74a253e 100644
--- a/sepolicy/vendor/time_daemon.te
+++ b/sepolicy/vendor/time_daemon.te
@@ -23,3 +23,11 @@
 
 allow time_daemon self:socket create_socket_perms;
 allowxperm time_daemon self:socket ioctl msm_sock_ipc_ioctls;
+
+userdebug_or_eng(`
+  allow time_daemon diag_device:chr_file rw_file_perms;
+')
+dontaudit time_daemon diag_device:chr_file rw_file_perms;
+
+# b/68864350
+dontaudit time_daemon unlabeled:dir search;
diff --git a/sepolicy/vendor/update_verifier.te b/sepolicy/vendor/update_verifier.te
deleted file mode 100644
index cdc304f..0000000
--- a/sepolicy/vendor/update_verifier.te
+++ /dev/null
@@ -1,4 +0,0 @@
-# update_verifier reads /sys/block/dm-X/dm/name to find the device-mapper
-# entries for system and vendor partitions.
-allow update_verifier sysfs:file r_file_perms;
-allow update_verifier sysfs:dir r_dir_perms;
diff --git a/sepolicy/vendor/vendor_init.te b/sepolicy/vendor/vendor_init.te
new file mode 100644
index 0000000..ef333db
--- /dev/null
+++ b/sepolicy/vendor/vendor_init.te
@@ -0,0 +1,32 @@
+typeattribute vendor_init data_between_core_and_vendor_violators;
+
+allow vendor_init {
+  dhcp_data_file
+  elabel_data_file
+  media_rw_data_file
+  ramoops_data_file
+  system_data_file
+  tombstone_data_file
+  wifi_data_file
+}:dir { create search getattr open read setattr ioctl write add_name remove_name rmdir relabelfrom };
+
+allow vendor_init debugfs_clk:file w_file_perms;
+allow vendor_init proc_uid_cpupower:file write;
+dontaudit vendor_init kernel:system module_request;
+
+# Allow vendor_init to write to /proc/sysrq-trigger on userdebug and eng builds
+userdebug_or_eng(`
+  allow vendor_init proc_sysrq:file w_file_perms;
+')
+
+set_prop(vendor_init, vendor_bluetooth_prop)
+set_prop(vendor_init, camera_prop)
+set_prop(vendor_init, modem_diag_prop)
+set_prop(vendor_init, power_prop)
+set_prop(vendor_init, public_vendor_default_prop)
+set_prop(vendor_init, vendor_radio_prop)
+set_prop(vendor_init, thermal_prop)
+set_prop(vendor_init, vendor_charge_prop)
+
+dontaudit vendor_init unlabeled:dir getattr;
+dontaudit vendor_init unlabeled:file getattr;
diff --git a/sepolicy/vendor/vndservice.te b/sepolicy/vendor/vndservice.te
index 44c45ca..487a600 100644
--- a/sepolicy/vendor/vndservice.te
+++ b/sepolicy/vendor/vndservice.te
@@ -1,2 +1,3 @@
 type qdisplay_service,             vndservice_manager_type;
 type per_mgr_service,              vndservice_manager_type;
+type easel_service,                vndservice_manager_type;
\ No newline at end of file
diff --git a/sepolicy/vendor/vndservice_contexts b/sepolicy/vendor/vndservice_contexts
index 1db4aa0..4db2ed8 100644
--- a/sepolicy/vendor/vndservice_contexts
+++ b/sepolicy/vendor/vndservice_contexts
@@ -1,2 +1,3 @@
 display.qservice                        u:object_r:qdisplay_service:s0
 vendor.qcom.PeripheralManager           u:object_r:per_mgr_service:s0
+easelmanager                            u:object_r:easel_service:s0
diff --git a/sepolicy/vendor/vold.te b/sepolicy/vendor/vold.te
index 80edf33..43647df 100644
--- a/sepolicy/vendor/vold.te
+++ b/sepolicy/vendor/vold.te
@@ -1,6 +1,8 @@
 get_prop(vold, tee_listener_prop)
 
 allow vold sysfs_scsi_devices_0000:file write;
+allow vold sysfs_scsi_devices_other:file write;
+allow vold sysfs_devices_block:file write;
 
 allow vold persist_file:dir r_dir_perms;
 
diff --git a/sepolicy/vendor/wcnss_filter.te b/sepolicy/vendor/wcnss_filter.te
index 910fb0e..c1ebac9 100644
--- a/sepolicy/vendor/wcnss_filter.te
+++ b/sepolicy/vendor/wcnss_filter.te
@@ -4,7 +4,7 @@
 init_daemon_domain(wcnss_filter)
 
 set_prop(wcnss_filter, wc_prop)
-set_prop(wcnss_filter, bluetooth_prop)
+set_prop(wcnss_filter, vendor_bluetooth_prop)
 
 allow wcnss_filter hci_attach_dev:chr_file rw_file_perms;
 
@@ -15,7 +15,7 @@
   allow wcnss_filter sysfs_timestamp_switch:file r_file_perms;
   r_dir_file(wcnss_filter, debugfs_ipc)
   r_dir_file(wcnss_filter, sysfs_diag)
-  set_prop(wcnss_filter, ssr_prop)
+  set_prop(wcnss_filter, vendor_ssr_prop)
 ')
 
 #allow wakelock
diff --git a/sepolicy/vendor/wcnss_service.te b/sepolicy/vendor/wcnss_service.te
index aebd86f..a6f143c 100644
--- a/sepolicy/vendor/wcnss_service.te
+++ b/sepolicy/vendor/wcnss_service.te
@@ -31,10 +31,14 @@
   r_dir_file(wcnss_service, proc_wifi_dbg)
   r_dir_file(wcnss_service, sysfs_diag)
   allow wcnss_service sysfs_timestamp_switch:file r_file_perms;
+  allow wcnss_service diag_device:chr_file rw_file_perms;
 ')
+dontaudit wcnss_service diag_device:chr_file rw_file_perms;
 
 allow wcnss_service sysfs_soc:dir search;
 allow wcnss_service sysfs_soc:file r_file_perms;
 
 # request_firmware causes a denial for /firmware. It can be safely ignored
 dontaudit wcnss_service firmware_file:dir search;
+
+r_dir_file(wcnss_service, sysfs_net)
diff --git a/sepolicy/verizon/obdm_app.te b/sepolicy/verizon/obdm_app.te
index c8abf8b..f24baad 100644
--- a/sepolicy/verizon/obdm_app.te
+++ b/sepolicy/verizon/obdm_app.te
@@ -3,7 +3,7 @@
 app_domain(obdm_app)
 net_domain(obdm_app)
 
-r_dir_file(obdm_app, proc)
+allow obdm_app proc_stat:file r_file_perms;
 
 # talk to /dev/diag
 allow obdm_app diag_device:chr_file rw_file_perms;
diff --git a/sound_trigger_platform_info.xml b/sound_trigger_platform_info.xml
index 30944a8..0ce2d6a 100644
--- a/sound_trigger_platform_info.xml
+++ b/sound_trigger_platform_info.xml
@@ -62,6 +62,7 @@
         <param client_capture_read_delay="2000" />
     </sound_model_config>
 
+    <!-- music -->
     <sound_model_config>
         <param vendor_uuid="9f6ad62a-1f0b-11e7-87c5-40a8f03d3f15" />
         <param execution_type="WDSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
@@ -70,6 +71,7 @@
             <param uid="0x2" />
             <param load_sound_model_ids="0x18000001, 0x1, 0x18000102" />
             <param start_engine_ids="0x18000001, 0x1, 0x18000103" />
+            <param custom_config_ids="0x18000001, 0x1, 0x18000106" />
             <param detection_event_ids="0x18000001, 0x1, 0x00012C29" />
             <param read_cmd_ids="0x00020013, 0x2, 0x00020015" />
             <param read_rsp_ids="0x00020013, 0x2, 0x00020016" />
diff --git a/system.prop b/system.prop
index 98af208..20d7034 100644
--- a/system.prop
+++ b/system.prop
@@ -69,13 +69,3 @@
 #ro.use_data_netmgrd=true
 persist.data.netmgrd.qos.enable=true
 persist.data.mode=concurrent
-
-#system prop for A4WP profile support
-ro.bluetooth.a4wp=false
-
-#system prop for wipower support
-ro.bluetooth.emb_wp_mode=false
-ro.bluetooth.wipower=false
-
-# Property for loading BDA from bdaddress module in kernel
-ro.bt.bdaddr_path=/sys/module/bdaddress/parameters/bdaddress
diff --git a/tango_permissions.xml b/tango_permissions.xml
deleted file mode 100644
index e7b4fcc..0000000
--- a/tango_permissions.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<permissions>
-    <library name="com.google.libletango_device"
-    file="/system/framework/libtango_device2.jar" />
-</permissions>
diff --git a/thermal/Android.bp b/thermal/Android.bp
index fcd227e..43c003e 100644
--- a/thermal/Android.bp
+++ b/thermal/Android.bp
@@ -1,10 +1,11 @@
-cc_library_shared {
+cc_library {
     name: "android.hardware.thermal@1.1-wahoo",
     defaults: ["hidl_defaults"],
     owner: "qcom",
     vendor: true,
     relative_install_path: "hw",
     srcs: [
+	"sensors.cpp",
         "Thermal.cpp",
         "thermal-helper.cpp",
     ],
diff --git a/thermal/Thermal.cpp b/thermal/Thermal.cpp
index a9bd371..b47a54d 100644
--- a/thermal/Thermal.cpp
+++ b/thermal/Thermal.cpp
@@ -17,6 +17,7 @@
 #include <cerrno>
 #include <vector>
 
+#include <android-base/file.h>
 #include <android-base/logging.h>
 
 #include "Thermal.h"
@@ -59,13 +60,13 @@
         status.code = ThermalStatusCode::FAILURE;
         status.debugMessage = "Unsupported hardware";
         _hidl_cb(status, temperatures);
+        LOG(ERROR) << "ThermalHAL not initialized properly.";
         return Void();
     }
 
-    ssize_t ret = fillTemperatures(&temperatures);
-    if (ret < 0) {
+    if (fillTemperatures(&temperatures) != kTemperatureNum) {
         status.code = ThermalStatusCode::FAILURE;
-        status.debugMessage = strerror(-ret);
+        status.debugMessage = "Error reading thermal sensors.";
     }
     _hidl_cb(status, temperatures);
 
@@ -92,6 +93,7 @@
         status.code = ThermalStatusCode::FAILURE;
         status.debugMessage = "Unsupported hardware";
         _hidl_cb(status, cpuUsages);
+        LOG(ERROR) << "ThermalHAL not initialized properly.";
         return Void();
     }
 
@@ -122,6 +124,7 @@
         status.code = ThermalStatusCode::FAILURE;
         status.debugMessage = "Unsupported hardware";
         _hidl_cb(status, coolingDevices);
+        LOG(ERROR) << "ThermalHAL not initialized properly.";
         return Void();
     }
 
@@ -176,6 +179,58 @@
     }
 }
 
+Return<void> Thermal::debug(const hidl_handle& handle, const hidl_vec<hidl_string>&) {
+    if (handle != nullptr && handle->numFds >= 1) {
+        int fd = handle->data[0];
+        std::ostringstream dump_buf;
+
+        if (!enabled) {
+            dump_buf << "ThermalHAL not initialized properly." << std::endl;
+        } else {
+            hidl_vec<Temperature> temperatures;
+            hidl_vec<CpuUsage> cpu_usages;
+            cpu_usages.resize(kCpuNum);
+            temperatures.resize(kTemperatureNum);
+
+            dump_buf << "getTemperatures:" << std::endl;
+            if (fillTemperatures(&temperatures) != kTemperatureNum) {
+                dump_buf << "Failed to read thermal sensors." << std::endl;
+            } else {
+                for (const auto& t : temperatures) {
+                    dump_buf << "Name: " << t.name
+                             << " Type: " << android::hardware::thermal::V1_0::toString(t.type)
+                             << " CurrentValue: " << t.currentValue
+                             << " ThrottlingThreshold: " << t.throttlingThreshold
+                             << " ShutdownThreshold: " << t.shutdownThreshold
+                             << " VrThrottlingThreshold: " << t.vrThrottlingThreshold
+                             << std::endl;
+                }
+            }
+
+            dump_buf << "getCpuUsages:" << std::endl;
+            ssize_t ret = fillCpuUsages(&cpu_usages);
+            if (ret < 0) {
+                dump_buf << "Failed to get CPU usages." << std::endl;
+            } else {
+                for (const auto& usage : cpu_usages) {
+                    dump_buf << "Name: " << usage.name
+                             << " Active: " << usage.active
+                             << " Total: " << usage.total
+                             << " IsOnline: " << usage.isOnline
+                             << std::endl;
+                }
+            }
+
+        }
+        std::string buf = dump_buf.str();
+        if (!android::base::WriteStringToFd(buf, fd)) {
+            PLOG(ERROR) << "Failed to dump state to fd";
+        }
+        fsync(fd);
+    }
+    return Void();
+}
+
 }  // namespace implementation
 }  // namespace V1_1
 }  // namespace thermal
diff --git a/thermal/Thermal.h b/thermal/Thermal.h
index a62b9e3..270f066 100644
--- a/thermal/Thermal.h
+++ b/thermal/Thermal.h
@@ -54,7 +54,8 @@
     // Methods from ::android::hardware::thermal::V1_1::IThermal follow.
     Return<void> registerThermalCallback(
         const sp<IThermalCallback>& callback) override;
-
+    // Methods from ::android::hidl::base::V1_0::IBase follow.
+    Return<void> debug(const hidl_handle& fd, const hidl_vec<hidl_string>& args) override;
   private:
     bool enabled;
 };
diff --git a/thermal/sensors.cpp b/thermal/sensors.cpp
new file mode 100644
index 0000000..7df880b
--- /dev/null
+++ b/thermal/sensors.cpp
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <algorithm>
+
+#include <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/strings.h>
+#include <android-base/stringprintf.h>
+#include "sensors.h"
+
+namespace android {
+namespace hardware {
+namespace thermal {
+namespace V1_1 {
+namespace implementation {
+
+std::string Sensors::getSensorPath(const std::string& sensor_name) {
+    if (sensor_name_to_data_map_.find(sensor_name) !=
+            sensor_name_to_data_map_.end()) {
+        return std::get<0>(sensor_name_to_data_map_.at(sensor_name));
+    }
+    return "";
+}
+
+bool Sensors::addSensor(
+        const std::string& sensor_name, const std::string& path,
+        const float throttling_threshold, const float shutdown_threshold,
+        const float vr_threshold, const TemperatureType& type) {
+    return sensor_name_to_data_map_.emplace(
+        sensor_name, std::make_tuple(
+            path, throttling_threshold, shutdown_threshold,
+            vr_threshold, type)).second;
+}
+
+bool Sensors::readSensorFile(
+        const std::string& sensor_name, std::string* data,
+        std::string* file_path) const {
+    std::string sensor_reading;
+    if (sensor_name_to_data_map_.find(sensor_name) ==
+            sensor_name_to_data_map_.end()) {
+        *data = "";
+        *file_path = "";
+        return false;
+    }
+
+    android::base::ReadFileToString(
+        std::get<0>(sensor_name_to_data_map_.at(sensor_name)), &sensor_reading);
+    // Strip the newline.
+    *data = ::android::base::Trim(sensor_reading);
+    *file_path = std::get<0>(sensor_name_to_data_map_.at(sensor_name));
+    return true;
+}
+
+bool Sensors::readTemperature(
+        const std::string& sensor_name, const float mult,
+        Temperature* out) const {
+    if (sensor_name_to_data_map_.find(sensor_name) ==
+            sensor_name_to_data_map_.end()) {
+        return false;
+    }
+
+    std::string sensor_reading;
+    std::string path;
+    readSensorFile(sensor_name, &sensor_reading, &path);
+
+    auto sensor = sensor_name_to_data_map_.at(sensor_name);
+    out->name = sensor_name;
+    out->currentValue = std::stoi(sensor_reading) * mult;
+    out->throttlingThreshold = std::get<1>(sensor);
+    out->shutdownThreshold = std::get<2>(sensor);
+    out->vrThrottlingThreshold = std::get<3>(sensor);
+    out->type = std::get<4>(sensor);
+
+    LOG(DEBUG) << android::base::StringPrintf(
+        "readTemperature: %s, %d, %s, %g, %g, %g, %g",
+        path.c_str(), out->type, out->name.c_str(), out->currentValue,
+        out->throttlingThreshold, out->shutdownThreshold,
+        out->vrThrottlingThreshold);
+    return true;
+}
+
+}  // namespace implementation
+}  // namespace V1_1
+}  // namespace thermal
+}  // namespace hardware
+}  // namespace android
diff --git a/thermal/sensors.h b/thermal/sensors.h
new file mode 100644
index 0000000..4924ac2
--- /dev/null
+++ b/thermal/sensors.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __SENSORS_H__
+#define __SENSORS_H__
+
+#include <string>
+#include <tuple>
+#include <unordered_map>
+
+#include <android/hardware/thermal/1.1/IThermal.h>
+
+namespace android {
+namespace hardware {
+namespace thermal {
+namespace V1_1 {
+namespace implementation {
+
+using ::android::hardware::thermal::V1_0::Temperature;
+using ::android::hardware::thermal::V1_0::TemperatureType;
+
+class Sensors {
+    public:
+     Sensors() = default;
+     ~Sensors() = default;
+     Sensors(const Sensors&) = delete;
+     void operator=(const Sensors&) = delete;
+
+     std::string getSensorPath(const std::string& sensor_name);
+     // Returns true if add was successful, false otherwise.
+     bool addSensor(
+         const std::string& sensor_name, const std::string& path,
+         const float throttling_threshold, const float shutdown_threshold,
+         const float vr_threshold, const TemperatureType& type);
+     // If sensor is not found in the sensor names to path map, this will set
+     // data and file path to empty and return false.  If the sensor is found,
+     // this function will fill in data and file_path accordingly then return
+     // true.
+     bool readSensorFile(
+         const std::string& sensor_name, std::string* data,
+         std::string* file_path) const;
+     bool readTemperature(
+         const std::string& sensor_name, const float mult,
+         Temperature* out) const;
+     size_t getNumSensors() const { return sensor_name_to_data_map_.size(); }
+
+    private:
+     // A map containing sensor names along with its thermal zone number, its
+     // thresholds, and its type. The tuple is formatted as such:
+     // <path, throttling threshold, shutdown threshold, vr threshold, type>
+     std::unordered_map<std::string, std::tuple<
+         std::string, float, float, float, TemperatureType>>
+         sensor_name_to_data_map_;
+};
+
+}  // namespace implementation
+}  // namespace V1_1
+}  // namespace thermal
+}  // namespace hardware
+}  // namespace android
+
+#endif  // __SENSORS_H__
+
diff --git a/thermal/thermal-helper.cpp b/thermal/thermal-helper.cpp
index 878c82f..6e9cf17 100644
--- a/thermal/thermal-helper.cpp
+++ b/thermal/thermal-helper.cpp
@@ -20,11 +20,17 @@
 #include <cmath>
 #include <cstdlib>
 #include <cstring>
+#include <tuple>
+#include <unordered_map>
+#include <vector>
 
+#include <android-base/file.h>
 #include <android-base/logging.h>
 #include <android-base/properties.h>
+#include <android-base/strings.h>
 #include <android-base/stringprintf.h>
 
+#include "sensors.h"
 #include "thermal-helper.h"
 
 namespace android {
@@ -33,14 +39,102 @@
 namespace V1_1 {
 namespace implementation {
 
+constexpr const char kThermalSensorsRoot[] = "/sys/class/thermal";
+constexpr char kThermalZoneDirSuffix[] = "thermal_zone";
+constexpr char kSensorTypeFileSuffix[] = "type";
+constexpr char kTemperatureFileSuffix[] = "temp";
+// This is a golden set of thermal sensor names, their types, and their
+// multiplier. Used when we read in sensor values. The tuple value stored is
+// formatted as such:
+// <temperature type, multiplier value for reading temp>
+const std::unordered_map<std::string, std::tuple<TemperatureType, float>>
+kValidThermalSensorsMap = {
+    {"tsens_tz_sensor1", {TemperatureType::CPU, 0.1}},   // CPU0
+    {"tsens_tz_sensor2", {TemperatureType::CPU, 0.1}},   // CPU1
+    {"tsens_tz_sensor4", {TemperatureType::CPU, 0.1}},   // CPU2
+    {"tsens_tz_sensor3", {TemperatureType::CPU, 0.1}},   // CPU3
+    {"tsens_tz_sensor7", {TemperatureType::CPU, 0.1}},   // CPU4
+    {"tsens_tz_sensor8", {TemperatureType::CPU, 0.1}},   // CPU5
+    {"tsens_tz_sensor9", {TemperatureType::CPU, 0.1}},   // CPU6
+    {"tsens_tz_sensor10", {TemperatureType::CPU, 0.1}},  // CPU7
+    // GPU thermal sensor.
+    {"tsens_tz_sensor13", {TemperatureType::GPU, 0.1}},
+    // Battery thermal sensor.
+    {"battery", {TemperatureType::BATTERY, 0.001}},
+    // Skin thermal sensors. We use back_therm for walleye. For taimen we use
+    // bd_therm and bd_therm2.
+    {"back_therm", {TemperatureType::SKIN, 1.}},
+    {"bd_therm", {TemperatureType::SKIN, 1.}},
+    {"bd_therm2", {TemperatureType::SKIN, 1.}},
+    // USBC thermal sensor.
+    {"usb_port_temp", {TemperatureType::UNKNOWN, 0.1}},
+};
+
+namespace {
+
 using ::android::hardware::thermal::V1_0::TemperatureType;
 
-static unsigned int gSkinSensorNum;
 static std::string gSkinSensorType;
-static unsigned int gTsensOffset;
 static unsigned int gSkinThrottlingThreshold;
 static unsigned int gSkinShutdownThreshold;
 static unsigned int gVrThrottledBelowMin;
+Sensors gSensors;
+
+// A map containing hardcoded thresholds per sensor type.  Its not const
+// because initThermal() will modify the skin sensor thresholds depending on the
+// hardware type. The tuple is formatted as follows:
+// <throttling threshold, shutdown threshold, vr threshold>
+std::unordered_map<TemperatureType, std::tuple<float, float, float>>
+gSensorTypeToThresholdsMap = {
+    {TemperatureType::CPU, {kCpuThrottlingThreshold, kCpuShutdownThreshold,
+                             kCpuThrottlingThreshold}},
+    {TemperatureType::GPU, {NAN, NAN, NAN}},
+    {TemperatureType::BATTERY, {NAN, kBatteryShutdownThreshold, NAN}},
+    {TemperatureType::SKIN, {NAN, NAN, NAN}},
+    {TemperatureType::UNKNOWN, {NAN, NAN, NAN}}
+};
+
+bool initializeSensors() {
+    auto thermal_zone_dir = std::unique_ptr<DIR, int (*)(DIR*)>(
+        opendir(kThermalSensorsRoot), closedir);
+    struct dirent* dp;
+    size_t num_thermal_zones = 0;
+    while ((dp = readdir(thermal_zone_dir.get())) != nullptr) {
+        std::string dir_name(dp->d_name);
+        if (dir_name.find(kThermalZoneDirSuffix) != std::string::npos) {
+            ++num_thermal_zones;
+        }
+    }
+
+    for (size_t sensor_zone_num = 0; sensor_zone_num < num_thermal_zones;
+            ++sensor_zone_num) {
+        std::string path = android::base::StringPrintf("%s/%s%zu",
+                                                       kThermalSensorsRoot,
+                                                       kThermalZoneDirSuffix,
+                                                       sensor_zone_num);
+        std::string sensor_name;
+        if (android::base::ReadFileToString(
+                path + "/" + kSensorTypeFileSuffix, &sensor_name)) {
+            sensor_name = android::base::Trim(sensor_name);
+            if (kValidThermalSensorsMap.find(sensor_name) !=
+                kValidThermalSensorsMap.end()) {
+                  TemperatureType type = std::get<0>(
+                      kValidThermalSensorsMap.at(sensor_name));
+                  auto thresholds = gSensorTypeToThresholdsMap.at(type);
+                  if (!gSensors.addSensor(
+                          sensor_name, path + "/" + kTemperatureFileSuffix,
+                          std::get<0>(thresholds), std::get<1>(thresholds),
+                          std::get<2>(thresholds), type)) {
+                        LOG(ERROR) << "Could not add " << sensor_name
+                                   << "to sensors map";
+                  }
+            }
+        }
+    }
+    return (gSensors.getNumSensors() == kTemperatureNum);
+}
+
+}  // namespace
 
 /**
  * Initialization constants based on platform
@@ -51,9 +145,6 @@
     std::string hardware = android::base::GetProperty("ro.hardware", "");
     if (hardware == "walleye") {
         LOG(ERROR) << "Initialization on Walleye";
-        gSkinSensorNum = kWalleyeSkinSensorNum;
-        gSkinSensorType = kWalleyeSkinSensorType;
-        gTsensOffset = kWalleyeTsensOffset;
         gSkinThrottlingThreshold = kWalleyeSkinThrottlingThreshold;
         gSkinShutdownThreshold = kWalleyeSkinShutdownThreshold;
         gVrThrottledBelowMin = kWalleyeVrThrottledBelowMin;
@@ -61,17 +152,11 @@
         std::string rev = android::base::GetProperty("ro.revision", "");
         if (rev == "rev_a" || rev == "rev_b") {
             LOG(ERROR) << "Initialization on Taimen pre revision C";
-            gSkinSensorNum = kTaimenRabSkinSensorNum;
-            gSkinSensorType = kTaimenRabSkinSensorType;
-            gTsensOffset = kTaimenRabTsensOffset;
             gSkinThrottlingThreshold = kTaimenRabSkinThrottlingThreshold;
             gSkinShutdownThreshold = kTaimenRabSkinShutdownThreshold;
             gVrThrottledBelowMin = kTaimenRabVrThrottledBelowMin;
         } else {
             LOG(ERROR) << "Initialization on Taimen revision C and later";
-            gSkinSensorNum = kTaimenRcSkinSensorNum;
-            gSkinSensorType = kTaimenRcSkinSensorType;
-            gTsensOffset = kTaimenRcTsensOffset;
             gSkinThrottlingThreshold = kTaimenRcSkinThrottlingThreshold;
             gSkinShutdownThreshold = kTaimenRcSkinShutdownThreshold;
             gVrThrottledBelowMin = kTaimenRcVrThrottledBelowMin;
@@ -80,127 +165,25 @@
         LOG(ERROR) << "Unsupported hardware: " << hardware;
         return false;
     }
-    return true;
+    gSensorTypeToThresholdsMap[TemperatureType::SKIN] =
+        std::make_tuple(gSkinThrottlingThreshold, gSkinShutdownThreshold,
+                        gVrThrottledBelowMin);
+    return initializeSensors();
 }
 
-/**
- * Reads device temperature.
- *
- * @param sensor_num Number of sensor file with temperature.
- * @param type Device temperature type.
- * @param name Device temperature name.
- * @param mult Multiplier used to translate temperature to Celsius.
- * @param throttling_threshold Throttling threshold for the temperature.
- * @param shutdown_threshold Shutdown threshold for the temperature.
- * @param out Pointer to temperature_t structure that will be filled with current
- *     values.
- *
- * @return 0 on success or negative value -errno on error.
- */
-static ssize_t readTemperature(int sensor_num, TemperatureType type, const char *name, float mult,
-                                float throttling_threshold, float shutdown_threshold,
-                                float vr_throttling_threshold, Temperature *out) {
-    FILE *file;
-    char file_name[PATH_MAX];
-    float temp;
-
-    sprintf(file_name, kTemperatureFileFormat, sensor_num);
-    file = fopen(file_name, "r");
-    if (file == NULL) {
-        PLOG(ERROR) << "readTemperature: failed to open file (" << file_name << ")";
-        return -errno;
-    }
-    if (1 != fscanf(file, "%f", &temp)) {
-        fclose(file);
-        PLOG(ERROR) << "readTemperature: failed to read a float";
-        return errno ? -errno : -EIO;
-    }
-
-    fclose(file);
-
-    (*out).type = type;
-    (*out).name = name;
-    (*out).currentValue = temp * mult;
-    (*out).throttlingThreshold = throttling_threshold;
-    (*out).shutdownThreshold = shutdown_threshold;
-    (*out).vrThrottlingThreshold = vr_throttling_threshold;
-
-    LOG(DEBUG) << android::base::StringPrintf(
-        "readTemperature: %d, %d, %s, %g, %g, %g, %g",
-        sensor_num, type, name, temp * mult, throttling_threshold,
-        shutdown_threshold, vr_throttling_threshold);
-
-    return 0;
-}
-
-static ssize_t getCpuTemperatures(hidl_vec<Temperature> *temperatures) {
-    size_t cpu;
-
-    for (cpu = 0; cpu < kCpuNum; cpu++) {
-        if (cpu >= temperatures->size()) {
-            break;
-        }
-        // temperature in decidegrees Celsius.
-        ssize_t result = readTemperature(kCpuTsensOffset[cpu] + gTsensOffset, TemperatureType::CPU, kCpuLabel[cpu],
-                                          0.1, kCpuThrottlingThreshold, kCpuShutdownThreshold, kCpuThrottlingThreshold,
-                                          &(*temperatures)[cpu]);
-        if (result != 0) {
-            return result;
+ssize_t fillTemperatures(hidl_vec<Temperature>* temperatures) {
+    temperatures->resize(gSensors.getNumSensors());
+    ssize_t current_index = 0;
+    for (const auto& name_type_mult_pair : kValidThermalSensorsMap) {
+        Temperature temp;
+        if (gSensors.readTemperature(name_type_mult_pair.first,
+                                     std::get<1>(name_type_mult_pair.second),
+                                     &temp)) {
+            (*temperatures)[current_index] = temp;
+            ++current_index;
         }
     }
-    return cpu;
-}
-
-ssize_t fillTemperatures(hidl_vec<Temperature> *temperatures) {
-    ssize_t result = 0;
-    size_t current_index = 0;
-
-    if (temperatures == NULL || temperatures->size() < kTemperatureNum) {
-        LOG(ERROR) << "fillTemperatures: incorrect buffer";
-        return -EINVAL;
-    }
-
-    result = getCpuTemperatures(temperatures);
-    if (result < 0) {
-        return result;
-    }
-    current_index += result;
-
-    // GPU temperature.
-    if (current_index < temperatures->size()) {
-        // temperature in decidegrees Celsius.
-        result = readTemperature(gTsensOffset + kGpuTsensOffset, TemperatureType::GPU, kGpuLabel, 0.1,
-                                  NAN, NAN, NAN, &(*temperatures)[current_index]);
-        if (result < 0) {
-            return result;
-        }
-        current_index++;
-    }
-
-    // Battery temperature.
-    if (current_index < temperatures->size()) {
-        // battery: temperature in millidegrees Celsius.
-        result = readTemperature(kBatterySensorNum, TemperatureType::BATTERY, kBatteryLabel,
-                                  0.001, NAN, kBatteryShutdownThreshold, NAN,
-                                  &(*temperatures)[current_index]);
-        if (result < 0) {
-            return result;
-        }
-        current_index++;
-    }
-
-    // Skin temperature.
-    if (current_index < temperatures->size()) {
-        // temperature in Celsius.
-        result = readTemperature(gSkinSensorNum, TemperatureType::SKIN, kSkinLabel, 1.,
-                                  gSkinThrottlingThreshold, gSkinShutdownThreshold, gVrThrottledBelowMin,
-                                  &(*temperatures)[current_index]);
-        if (result < 0) {
-            return result;
-        }
-        current_index++;
-    }
-    return kTemperatureNum;
+    return current_index;
 }
 
 ssize_t fillCpuUsages(hidl_vec<CpuUsage> *cpuUsages) {
diff --git a/thermal/thermal-helper.h b/thermal/thermal-helper.h
index 311a67d..ef0b61f 100644
--- a/thermal/thermal-helper.h
+++ b/thermal/thermal-helper.h
@@ -40,46 +40,32 @@
 
 using ::android::hardware::thermal::V1_0::CpuUsage;
 using ::android::hardware::thermal::V1_0::Temperature;
+using ::android::hardware::thermal::V1_0::TemperatureType;
 
 constexpr const char *kCpuUsageFile = "/proc/stat";
 constexpr const char *kTemperatureFileFormat = "/sys/class/thermal/thermal_zone%d/temp";
 constexpr const char *kCpuOnlineFileFormat = "/sys/devices/system/cpu/cpu%d/online";
 
 // thermal-engine.conf
-constexpr unsigned int kWalleyeSkinSensorNum = 9;
-constexpr auto         kWalleyeSkinSensorType = "back_therm";
-constexpr unsigned int kWalleyeTsensOffset = 11;
 constexpr unsigned int kWalleyeSkinThrottlingThreshold = 40;
 constexpr unsigned int kWalleyeSkinShutdownThreshold = 56;
 constexpr unsigned int kWalleyeVrThrottledBelowMin = 52;
 
-constexpr unsigned int kTaimenRabSkinSensorNum = 8;
-constexpr auto         kTaimenRabSkinSensorType = "bd_therm";
-constexpr unsigned int kTaimenRabTsensOffset = 9;
 constexpr unsigned int kTaimenRabSkinThrottlingThreshold = 49;
 constexpr unsigned int kTaimenRabSkinShutdownThreshold = 66;
 constexpr unsigned int kTaimenRabVrThrottledBelowMin = 62;
 
-constexpr unsigned int kTaimenRcSkinSensorNum = 8;
-constexpr auto         kTaimenRcSkinSensorType = "bd_therm2";
-constexpr unsigned int kTaimenRcTsensOffset = 9;
 constexpr unsigned int kTaimenRcSkinThrottlingThreshold = 38;
 constexpr unsigned int kTaimenRcSkinShutdownThreshold = 54;
 constexpr unsigned int kTaimenRcVrThrottledBelowMin = 50;
 
-
-constexpr unsigned int kBatterySensorNum = 0;
-constexpr unsigned int kGpuTsensOffset = 11;
 constexpr unsigned int kCpuNum = 8;
 
-constexpr const char *kGpuLabel = "GPU";
-constexpr const char *kBatteryLabel = "battery";
-constexpr const char *kSkinLabel = "skin";
-constexpr const char *kCpuLabel[kCpuNum] = {"CPU0", "CPU1", "CPU2", "CPU3", "CPU4", "CPU5", "CPU6", "CPU7"};
-constexpr int kCpuTsensOffset[kCpuNum] = {1, 2, 4, 3, 5, 6, 7, 8};
+constexpr const char *kCpuLabel[kCpuNum] = {
+  "CPU0", "CPU1", "CPU2", "CPU3", "CPU4", "CPU5", "CPU6", "CPU7"};
 
-// Sum of kCpuNum + 3 for GPU, BATTERY, and SKIN.
-constexpr unsigned int kTemperatureNum = 3 + kCpuNum;
+// Sum of kCpuNum + 4 for GPU, BATTERY, SKIN, and USB-C.
+constexpr unsigned int kTemperatureNum = 4 + kCpuNum;
 
 // qcom, therm-reset-temp
 constexpr unsigned int kCpuShutdownThreshold = 115;
diff --git a/ueventd.hardware.rc b/ueventd.hardware.rc
index b640860..1a7fb35 100644
--- a/ueventd.hardware.rc
+++ b/ueventd.hardware.rc
@@ -104,11 +104,8 @@
 /sys/devices/soc/soc:fp_fpc*        wakeup_enable     0200  system system
 
 # Easel
-/dev/easelcomm-client     0660   cameraserver camera
-/dev/mnh_sm               0664   cameraserver camera
-
-# TODO (b/37941164): Temporary for easel
-/sys/devices/soc/c1b7000.i2c/i2c-9/9-0008* asr_dual_phase 0660 cameraserver camera
+/dev/easelcomm-client     0666   cameraserver camera
+/dev/mnh_sm               0666   cameraserver camera
 
 # Storage: for factory reset protection feature
 /dev/block/platform/soc/1da4000.ufshc/by-name/frp       0660   system     system
diff --git a/usb/Android.bp b/usb/Android.bp
index 4370d6c7..258c436 100644
--- a/usb/Android.bp
+++ b/usb/Android.bp
@@ -16,7 +16,7 @@
     name: "android.hardware.usb@1.1-service.wahoo",
     relative_install_path: "hw",
     init_rc: ["android.hardware.usb@1.1-service.wahoo.rc"],
-    srcs: ["service.cpp", "Usb.cpp"],
+    srcs: ["service.cpp", "Usb.cpp", "UsbGadget.cpp"],
     shared_libs: [
         "libbase",
         "libhidlbase",
@@ -26,6 +26,7 @@
         "libhardware",
         "android.hardware.usb@1.0",
         "android.hardware.usb@1.1",
+        "android.hardware.usb.gadget@1.0",
         "libcutils",
     ],
     proprietary: true,
diff --git a/usb/Usb.cpp b/usb/Usb.cpp
index 7b08450..0644b81 100644
--- a/usb/Usb.cpp
+++ b/usb/Usb.cpp
@@ -238,7 +238,7 @@
 
 
 Return<void> Usb::switchRole(const hidl_string &portName,
-                             const PortRole &newRole) {
+                             const V1_0::PortRole &newRole) {
   std::string filename =
       appendRoleNodeHelper(std::string(portName.c_str()), newRole.type);
   std::string written;
@@ -380,8 +380,6 @@
 
   dp = opendir("/sys/class/typec");
   if (dp != NULL) {
-    int32_t ports = 0;
-    int32_t current = 0;
     struct dirent *ep;
 
     while ((ep = readdir(dp))) {
diff --git a/usb/Usb.h b/usb/Usb.h
index 78be2f9..09bfdf9 100644
--- a/usb/Usb.h
+++ b/usb/Usb.h
@@ -42,7 +42,7 @@
 struct Usb : public IUsb {
     Usb();
 
-    Return<void> switchRole(const hidl_string& portName, const PortRole& role) override;
+    Return<void> switchRole(const hidl_string& portName, const V1_0::PortRole& role) override;
     Return<void> setCallback(const sp<V1_0::IUsbCallback>& callback) override;
     Return<void> queryPortStatus() override;
 
diff --git a/usb/UsbGadget.cpp b/usb/UsbGadget.cpp
new file mode 100644
index 0000000..603afbb
--- /dev/null
+++ b/usb/UsbGadget.cpp
@@ -0,0 +1,623 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "android.hardware.usb.gadget@1.0-service.wahoo"
+
+#include "UsbGadget.h"
+#include <dirent.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <sys/inotify.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+constexpr int BUFFER_SIZE = 512;
+constexpr int MAX_FILE_PATH_LENGTH = 256;
+constexpr int EPOLL_EVENTS = 10;
+constexpr bool DEBUG = false;
+constexpr int DISCONNECT_WAIT_US = 10000;
+
+#define BUILD_TYPE "ro.build.type"
+#define GADGET_PATH "/config/usb_gadget/g1/"
+#define PULLUP_PATH GADGET_PATH "UDC"
+#define GADGET_NAME "a800000.dwc3"
+#define PERSISTENT_BOOT_MODE "ro.bootmode"
+#define VENDOR_ID_PATH GADGET_PATH "idVendor"
+#define PRODUCT_ID_PATH GADGET_PATH "idProduct"
+#define DEVICE_CLASS_PATH GADGET_PATH "bDeviceClass"
+#define DEVICE_SUB_CLASS_PATH GADGET_PATH "bDeviceSubClass"
+#define DEVICE_PROTOCOL_PATH GADGET_PATH "bDeviceProtocol"
+#define DESC_USE_PATH GADGET_PATH "os_desc/use"
+#define OS_DESC_PATH GADGET_PATH "os_desc/b.1"
+#define CONFIG_PATH GADGET_PATH "configs/b.1/"
+#define FUNCTIONS_PATH GADGET_PATH "functions/"
+#define FUNCTION_NAME "function"
+#define FUNCTION_PATH CONFIG_PATH FUNCTION_NAME
+#define RNDIS_PATH FUNCTIONS_PATH "gsi.rndis"
+
+#define PERSISTENT_VENDOR_CONFIG "persist.vendor.usb.usbradio.config"
+#define VENDOR_CONFIG "vendor.usb.config"
+
+namespace android {
+namespace hardware {
+namespace usb {
+namespace gadget {
+namespace V1_0 {
+namespace implementation {
+
+volatile bool gadgetPullup;
+
+// Used for debug.
+static void displayInotifyEvent(struct inotify_event *i) {
+  ALOGE("    wd =%2d; ", i->wd);
+  if (i->cookie > 0) ALOGE("cookie =%4d; ", i->cookie);
+
+  ALOGE("mask = ");
+  if (i->mask & IN_ACCESS) ALOGE("IN_ACCESS ");
+  if (i->mask & IN_ATTRIB) ALOGE("IN_ATTRIB ");
+  if (i->mask & IN_CLOSE_NOWRITE) ALOGE("IN_CLOSE_NOWRITE ");
+  if (i->mask & IN_CLOSE_WRITE) ALOGE("IN_CLOSE_WRITE ");
+  if (i->mask & IN_CREATE) ALOGE("IN_CREATE ");
+  if (i->mask & IN_DELETE) ALOGE("IN_DELETE ");
+  if (i->mask & IN_DELETE_SELF) ALOGE("IN_DELETE_SELF ");
+  if (i->mask & IN_IGNORED) ALOGE("IN_IGNORED ");
+  if (i->mask & IN_ISDIR) ALOGE("IN_ISDIR ");
+  if (i->mask & IN_MODIFY) ALOGE("IN_MODIFY ");
+  if (i->mask & IN_MOVE_SELF) ALOGE("IN_MOVE_SELF ");
+  if (i->mask & IN_MOVED_FROM) ALOGE("IN_MOVED_FROM ");
+  if (i->mask & IN_MOVED_TO) ALOGE("IN_MOVED_TO ");
+  if (i->mask & IN_OPEN) ALOGE("IN_OPEN ");
+  if (i->mask & IN_Q_OVERFLOW) ALOGE("IN_Q_OVERFLOW ");
+  if (i->mask & IN_UNMOUNT) ALOGE("IN_UNMOUNT ");
+  ALOGE("\n");
+
+  if (i->len > 0) ALOGE("        name = %s\n", i->name);
+}
+
+static void *monitorFfs(void *param) {
+  UsbGadget *usbGadget = (UsbGadget *)param;
+  char buf[BUFFER_SIZE];
+  bool writeUdc = true, stopMonitor = false;
+  struct epoll_event events[EPOLL_EVENTS];
+
+  bool descriptorWritten = true;
+  for (int i = 0; i < static_cast<int>(usbGadget->mEndpointList.size()); i++) {
+    if (access(usbGadget->mEndpointList.at(i).c_str(), R_OK)) {
+      descriptorWritten = false;
+      break;
+    }
+  }
+
+  // notify here if the endpoints are already present.
+  if (descriptorWritten && !!WriteStringToFile(GADGET_NAME, PULLUP_PATH)) {
+    lock_guard<mutex> lock(usbGadget->mLock);
+    usbGadget->mCurrentUsbFunctionsApplied = true;
+    gadgetPullup = true;
+    usbGadget->mCv.notify_all();
+  }
+
+  while (!stopMonitor) {
+    int nrEvents = epoll_wait(usbGadget->mEpollFd, events, EPOLL_EVENTS, -1);
+    if (nrEvents <= 0) {
+      ALOGE("epoll wait did not return descriptor number");
+      continue;
+    }
+
+    for (int i = 0; i < nrEvents; i++) {
+      ALOGI("event=%u on fd=%d\n", events[i].events, events[i].data.fd);
+
+      if (events[i].data.fd == usbGadget->mInotifyFd) {
+        // Process all of the events in buffer returned by read().
+        int numRead = read(usbGadget->mInotifyFd, buf, BUFFER_SIZE);
+        for (char *p = buf; p < buf + numRead;) {
+          struct inotify_event *event = (struct inotify_event *)p;
+          if (DEBUG) displayInotifyEvent(event);
+
+          p += sizeof(struct inotify_event) + event->len;
+
+          bool descriptorPresent = true;
+          for (int j = 0; j < static_cast<int>(usbGadget->mEndpointList.size());
+               j++) {
+            if (access(usbGadget->mEndpointList.at(j).c_str(), R_OK)) {
+              if (DEBUG)
+                ALOGI("%s absent", usbGadget->mEndpointList.at(j).c_str());
+              descriptorPresent = false;
+              break;
+            }
+          }
+
+          if (!descriptorPresent && !writeUdc) {
+            if (DEBUG) ALOGI("endpoints not up");
+            writeUdc = true;
+          } else if (descriptorPresent && writeUdc &&
+                     !!WriteStringToFile(GADGET_NAME, PULLUP_PATH)) {
+            lock_guard<mutex> lock(usbGadget->mLock);
+            usbGadget->mCurrentUsbFunctionsApplied = true;
+            ALOGI("GADGET pulled up");
+            writeUdc = false;
+            gadgetPullup = true;
+            // notify the main thread to signal userspace.
+            usbGadget->mCv.notify_all();
+          }
+        }
+      } else {
+        uint64_t flag;
+        read(usbGadget->mEventFd, &flag, sizeof(flag));
+        if (flag == 100) {
+          stopMonitor = true;
+          break;
+        }
+      }
+    }
+  }
+  return NULL;
+}
+
+UsbGadget::UsbGadget()
+    : mMonitorCreated(false), mCurrentUsbFunctionsApplied(false) {
+  if (access(OS_DESC_PATH, R_OK) != 0) ALOGE("configfs setup not done yet");
+}
+
+static int unlinkFunctions(const char *path) {
+  DIR *config = opendir(path);
+  struct dirent *function;
+  char filepath[MAX_FILE_PATH_LENGTH];
+  int ret = 0;
+
+  if (config == NULL) return -1;
+
+  // d_type does not seems to be supported in /config
+  // so filtering by name.
+  while (((function = readdir(config)) != NULL)) {
+    if ((strstr(function->d_name, FUNCTION_NAME) == NULL)) continue;
+    // build the path for each file in the folder.
+    sprintf(filepath, "%s/%s", path, function->d_name);
+    ret = remove(filepath);
+    if (ret) {
+      ALOGE("Unable  remove file %s errno:%d", filepath, errno);
+      break;
+    }
+  }
+
+  closedir(config);
+  return ret;
+}
+
+static int addEpollFd(const unique_fd &epfd, const unique_fd &fd) {
+  struct epoll_event event;
+  int ret;
+
+  event.data.fd = fd;
+  event.events = EPOLLIN;
+
+  ret = epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &event);
+  if (ret) ALOGE("epoll_ctl error %d", errno);
+
+  return ret;
+}
+
+Return<void> UsbGadget::getCurrentUsbFunctions(
+    const sp<V1_0::IUsbGadgetCallback> &callback) {
+  Return<void> ret = callback->getCurrentUsbFunctionsCb(
+      mCurrentUsbFunctions, mCurrentUsbFunctionsApplied
+                                ? Status::FUNCTIONS_APPLIED
+                                : Status::FUNCTIONS_NOT_APPLIED);
+  if (!ret.isOk())
+    ALOGE("Call to getCurrentUsbFunctionsCb failed %s",
+          ret.description().c_str());
+
+  return Void();
+}
+
+V1_0::Status UsbGadget::tearDownGadget() {
+  ALOGI("setCurrentUsbFunctions None");
+
+  if (!WriteStringToFile("none", PULLUP_PATH))
+    ALOGI("Gadget cannot be pulled down");
+
+  if (!WriteStringToFile("0", DEVICE_CLASS_PATH)) return Status::ERROR;
+
+  if (!WriteStringToFile("0", DEVICE_SUB_CLASS_PATH)) return Status::ERROR;
+
+  if (!WriteStringToFile("0", DEVICE_PROTOCOL_PATH)) return Status::ERROR;
+
+  if (!WriteStringToFile("0", DESC_USE_PATH)) return Status::ERROR;
+
+  if (unlinkFunctions(CONFIG_PATH)) return Status::ERROR;
+
+  if (mMonitorCreated) {
+    uint64_t flag = 100;
+    // Stop the monitor thread by writing into signal fd.
+    write(mEventFd, &flag, sizeof(flag));
+    mMonitor->join();
+    mMonitorCreated = false;
+    ALOGI("mMonitor destroyed");
+  } else {
+    ALOGI("mMonitor not running");
+  }
+
+  mInotifyFd.reset(-1);
+  mEventFd.reset(-1);
+  mEpollFd.reset(-1);
+  mEndpointList.clear();
+  return Status::SUCCESS;
+}
+
+static int linkFunction(const char *function, int index) {
+  char functionPath[MAX_FILE_PATH_LENGTH];
+  char link[MAX_FILE_PATH_LENGTH];
+
+  sprintf(functionPath, "%s%s", FUNCTIONS_PATH, function);
+  sprintf(link, "%s%d", FUNCTION_PATH, index);
+  if (symlink(functionPath, link)) {
+    ALOGE("Cannot create symlink %s -> %s errno:%d", link, functionPath, errno);
+    return -1;
+  }
+  return 0;
+}
+
+static V1_0::Status setVidPid(const char *vid, const char *pid) {
+  if (!WriteStringToFile(vid, VENDOR_ID_PATH)) return Status::ERROR;
+
+  if (!WriteStringToFile(pid, PRODUCT_ID_PATH)) return Status::ERROR;
+
+  return Status::SUCCESS;
+}
+
+static std::string getVendorFunctions() {
+  if (GetProperty(BUILD_TYPE, "") == "user") return "user";
+
+  std::string bootMode = GetProperty(PERSISTENT_BOOT_MODE, "");
+  std::string persistVendorFunctions =
+      GetProperty(PERSISTENT_VENDOR_CONFIG, "");
+  std::string vendorFunctions = GetProperty(VENDOR_CONFIG, "");
+  std::string ret = "";
+
+  if (vendorFunctions != "") {
+    ret = vendorFunctions;
+  } else if (bootMode == "usbradio") {
+    if (persistVendorFunctions != "")
+      ret = persistVendorFunctions;
+    else
+      ret = "diag";
+    // vendor.usb.config will reflect the current configured functions
+    SetProperty(VENDOR_CONFIG, ret);
+  }
+
+  return ret;
+}
+
+static V1_0::Status validateAndSetVidPid(uint64_t functions) {
+  V1_0::Status ret = Status::SUCCESS;
+  std::string vendorFunctions = getVendorFunctions();
+
+  switch (functions) {
+    case static_cast<uint64_t>(GadgetFunction::MTP):
+      if (vendorFunctions == "diag") {
+        ret = setVidPid("0x05C6", "0x901B");
+      } else {
+        if (!(vendorFunctions == "user" || vendorFunctions == ""))
+          ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+        ret = setVidPid("0x18d1", "0x4ee1");
+      }
+      break;
+    case GadgetFunction::ADB | GadgetFunction::MTP:
+      if (vendorFunctions == "diag") {
+        ret = setVidPid("0x05C6", "0x903A");
+      } else {
+        if (!(vendorFunctions == "user" || vendorFunctions == ""))
+          ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+        ret = setVidPid("0x18d1", "0x4ee2");
+      }
+      break;
+    case static_cast<uint64_t>(GadgetFunction::RNDIS):
+      if (vendorFunctions == "diag") {
+        ret = setVidPid("0x05C6", "0x902C");
+      } else if (vendorFunctions == "serial_cdev,diag") {
+        ret = setVidPid("0x05C6", "0x90B5");
+      } else {
+        if (!(vendorFunctions == "user" || vendorFunctions == ""))
+          ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+        ret = setVidPid("0x18d1", "0x4ee3");
+      }
+      break;
+    case GadgetFunction::ADB | GadgetFunction::RNDIS:
+      if (vendorFunctions == "diag") {
+        ret = setVidPid("0x05C6", "0x902D");
+      } else if (vendorFunctions == "serial_cdev,diag") {
+        ret = setVidPid("0x05C6", "0x90B6");
+      } else {
+        if (!(vendorFunctions == "user" || vendorFunctions == ""))
+          ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+        ret = setVidPid("0x18d1", "0x4ee4");
+      }
+      break;
+    case static_cast<uint64_t>(GadgetFunction::PTP):
+      if (!(vendorFunctions == "user" || vendorFunctions == ""))
+        ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+      ret = setVidPid("0x18d1", "0x4ee5");
+      break;
+    case GadgetFunction::ADB | GadgetFunction::PTP:
+      if (!(vendorFunctions == "user" || vendorFunctions == ""))
+        ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+      ret = setVidPid("0x18d1", "0x4ee6");
+      break;
+    case static_cast<uint64_t>(GadgetFunction::ADB):
+      if (vendorFunctions == "diag") {
+        ret = setVidPid("0x05C6", "0x901D");
+      } else if (vendorFunctions == "diag,serial_cdev,rmnet_gsi") {
+        ret = setVidPid("0x05C6", "0x9091");
+      } else if (vendorFunctions == "diag,serial_cdev") {
+        ret = setVidPid("0x05C6", "0x901F");
+      } else {
+        if (!(vendorFunctions == "user" || vendorFunctions == ""))
+          ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+        ret = setVidPid("0x18d1", "0x4ee7");
+      }
+      break;
+    case static_cast<uint64_t>(GadgetFunction::MIDI):
+      if (!(vendorFunctions == "user" || vendorFunctions == ""))
+        ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+      ret = setVidPid("0x18d1", "0x4ee8");
+      break;
+    case GadgetFunction::ADB | GadgetFunction::MIDI:
+      if (!(vendorFunctions == "user" || vendorFunctions == ""))
+        ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+      ret = setVidPid("0x18d1", "0x4ee9");
+      break;
+    case static_cast<uint64_t>(GadgetFunction::ACCESSORY):
+      if (!(vendorFunctions == "user" || vendorFunctions == ""))
+        ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+      ret = setVidPid("0x18d1", "0x2d00");
+      break;
+    case GadgetFunction::ADB | GadgetFunction::ACCESSORY:
+      if (!(vendorFunctions == "user" || vendorFunctions == ""))
+        ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+      ret = setVidPid("0x18d1", "0x2d01");
+      break;
+    case static_cast<uint64_t>(GadgetFunction::AUDIO_SOURCE):
+      if (!(vendorFunctions == "user" || vendorFunctions == ""))
+        ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+      ret = setVidPid("0x18d1", "0x2d02");
+      break;
+    case GadgetFunction::ADB | GadgetFunction::AUDIO_SOURCE:
+      if (!(vendorFunctions == "user" || vendorFunctions == ""))
+        ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+      ret = setVidPid("0x18d1", "0x2d03");
+      break;
+    case GadgetFunction::ACCESSORY | GadgetFunction::AUDIO_SOURCE:
+      if (!(vendorFunctions == "user" || vendorFunctions == ""))
+        ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+      ret = setVidPid("0x18d1", "0x2d04");
+      break;
+    case GadgetFunction::ADB | GadgetFunction::ACCESSORY |
+         GadgetFunction::AUDIO_SOURCE:
+      if (!(vendorFunctions == "user" || vendorFunctions == ""))
+        ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
+      ret = setVidPid("0x18d1", "0x2d05");
+      break;
+    default:
+      ALOGE("Combination not supported");
+      ret = Status::CONFIGURATION_NOT_SUPPORTED;
+  }
+  return ret;
+}
+
+V1_0::Status UsbGadget::setupFunctions(
+    uint64_t functions, const sp<V1_0::IUsbGadgetCallback> &callback,
+    uint64_t timeout) {
+  std::unique_lock<std::mutex> lk(mLock);
+
+  unique_fd inotifyFd(inotify_init());
+  if (inotifyFd < 0) {
+    ALOGE("inotify init failed");
+    return Status::ERROR;
+  }
+
+  bool ffsEnabled = false;
+  int i = 0;
+  std::string bootMode = GetProperty(PERSISTENT_BOOT_MODE, "");
+
+  if (((functions & GadgetFunction::MTP) != 0)) {
+    ffsEnabled = true;
+    ALOGI("setCurrentUsbFunctions mtp");
+    if (!WriteStringToFile("1", DESC_USE_PATH)) return Status::ERROR;
+
+    if (inotify_add_watch(inotifyFd, "/dev/usb-ffs/mtp/", IN_ALL_EVENTS) == -1)
+      return Status::ERROR;
+
+    if (linkFunction("ffs.mtp", i++)) return Status::ERROR;
+
+    // Add endpoints to be monitored.
+    mEndpointList.push_back("/dev/usb-ffs/mtp/ep1");
+    mEndpointList.push_back("/dev/usb-ffs/mtp/ep2");
+    mEndpointList.push_back("/dev/usb-ffs/mtp/ep3");
+  } else if (((functions & GadgetFunction::PTP) != 0)) {
+    ffsEnabled = true;
+    ALOGI("setCurrentUsbFunctions ptp");
+    if (!WriteStringToFile("1", DESC_USE_PATH)) return Status::ERROR;
+
+    if (inotify_add_watch(inotifyFd, "/dev/usb-ffs/ptp/", IN_ALL_EVENTS) == -1)
+      return Status::ERROR;
+
+
+    if (linkFunction("ffs.ptp", i++)) return Status::ERROR;
+
+    // Add endpoints to be monitored.
+    mEndpointList.push_back("/dev/usb-ffs/ptp/ep1");
+    mEndpointList.push_back("/dev/usb-ffs/ptp/ep2");
+    mEndpointList.push_back("/dev/usb-ffs/ptp/ep3");
+  }
+
+  if ((functions & GadgetFunction::MIDI) != 0) {
+    ALOGI("setCurrentUsbFunctions MIDI");
+    if (linkFunction("midi.gs5", i++)) return Status::ERROR;
+  }
+
+  if ((functions & GadgetFunction::ACCESSORY) != 0) {
+    ALOGI("setCurrentUsbFunctions Accessory");
+    if (linkFunction("accessory.gs2", i++)) return Status::ERROR;
+  }
+
+  if ((functions & GadgetFunction::AUDIO_SOURCE) != 0) {
+    ALOGI("setCurrentUsbFunctions Audio Source");
+    if (linkFunction("audio_source.gs3", i++)) return Status::ERROR;
+  }
+
+  if ((functions & GadgetFunction::RNDIS) != 0) {
+    ALOGI("setCurrentUsbFunctions rndis");
+    if (linkFunction("gsi.rndis", i++)) return Status::ERROR;
+  }
+
+  std::string vendorFunctions = getVendorFunctions();
+  if (vendorFunctions != "") {
+    ALOGI("enable usbradio debug functions");
+    char *function = strtok(const_cast<char *>(vendorFunctions.c_str()), ",");
+    while (function != NULL) {
+      if (string(function) == "diag" && linkFunction("diag.diag", i++))
+        return Status::ERROR;
+      if (string(function) == "serial_cdev" && linkFunction("cser.dun.0", i++))
+        return Status::ERROR;
+      if (string(function) == "rmnet_gsi" && linkFunction("gsi.rmnet", i++))
+        return Status::ERROR;
+      function = strtok(NULL, ",");
+    }
+  }
+
+  if ((functions & GadgetFunction::ADB) != 0) {
+    ffsEnabled = true;
+    ALOGI("setCurrentUsbFunctions Adb");
+    if (inotify_add_watch(inotifyFd, "/dev/usb-ffs/adb/", IN_ALL_EVENTS) == -1)
+      return Status::ERROR;
+
+    if (linkFunction("ffs.adb", i++)) return Status::ERROR;
+    mEndpointList.push_back("/dev/usb-ffs/adb/ep1");
+    mEndpointList.push_back("/dev/usb-ffs/adb/ep2");
+    ALOGI("Service started");
+  }
+
+  // Pull up the gadget right away when there are no ffs functions.
+  if (!ffsEnabled) {
+    if (!WriteStringToFile(GADGET_NAME, PULLUP_PATH)) return Status::ERROR;
+    mCurrentUsbFunctionsApplied = true;
+    if (callback)
+      callback->setCurrentUsbFunctionsCb(functions, Status::SUCCESS);
+    return Status::SUCCESS;
+  }
+
+  unique_fd eventFd(eventfd(0, 0));
+  if (eventFd == -1) {
+    ALOGE("mEventFd failed to create %d", errno);
+    return Status::ERROR;
+  }
+
+  unique_fd epollFd(epoll_create(2));
+  if (epollFd == -1) {
+    ALOGE("mEpollFd failed to create %d", errno);
+    return Status::ERROR;
+  }
+
+  if (addEpollFd(epollFd, inotifyFd) == -1) return Status::ERROR;
+
+  if (addEpollFd(epollFd, eventFd) == -1) return Status::ERROR;
+
+  mEpollFd = move(epollFd);
+  mInotifyFd = move(inotifyFd);
+  mEventFd = move(eventFd);
+  gadgetPullup = false;
+
+  // Monitors the ffs paths to pull up the gadget when descriptors are written.
+  // Also takes of the pulling up the gadget again if the userspace process
+  // dies and restarts.
+  mMonitor = unique_ptr<thread>(new thread(monitorFfs, this));
+  mMonitorCreated = true;
+  if (DEBUG) ALOGI("Mainthread in Cv");
+
+  if (callback) {
+    if (mCv.wait_for(lk, timeout * 1ms, [] { return gadgetPullup; })) {
+      ALOGI("monitorFfs signalled true");
+    } else {
+      ALOGI("monitorFfs signalled error");
+      // continue monitoring as the descriptors might be written at a later
+      // point.
+    }
+    Return<void> ret = callback->setCurrentUsbFunctionsCb(
+        functions, gadgetPullup ? Status::SUCCESS : Status::ERROR);
+    if (!ret.isOk())
+      ALOGE("setCurrentUsbFunctionsCb error %s", ret.description().c_str());
+  }
+
+  return Status::SUCCESS;
+}
+
+Return<void> UsbGadget::setCurrentUsbFunctions(
+    uint64_t functions, const sp<V1_0::IUsbGadgetCallback> &callback,
+    uint64_t timeout) {
+  std::unique_lock<std::mutex> lk(mLockSetCurrentFunction);
+
+  mCurrentUsbFunctions = functions;
+  mCurrentUsbFunctionsApplied = false;
+
+  // Unlink the gadget and stop the monitor if running.
+  V1_0::Status status = tearDownGadget();
+  if (status != Status::SUCCESS) {
+    goto error;
+  }
+
+  // Leave the gadget pulled down to give time for the host to sense disconnect.
+  usleep(DISCONNECT_WAIT_US);
+
+  if (functions == static_cast<uint64_t>(GadgetFunction::NONE)) {
+    if (callback == NULL) return Void();
+    Return<void> ret =
+        callback->setCurrentUsbFunctionsCb(functions, Status::SUCCESS);
+    if (!ret.isOk())
+      ALOGE("Error while calling setCurrentUsbFunctionsCb %s",
+            ret.description().c_str());
+    return Void();
+  }
+
+  status = validateAndSetVidPid(functions);
+
+  if (status != Status::SUCCESS) {
+    goto error;
+  }
+
+  status = setupFunctions(functions, callback, timeout);
+  if (status != Status::SUCCESS) {
+    goto error;
+  }
+
+  ALOGI("Usb Gadget setcurrent functions called successfully");
+  return Void();
+
+error:
+  ALOGI("Usb Gadget setcurrent functions failed");
+  if (callback == NULL) return Void();
+  Return<void> ret = callback->setCurrentUsbFunctionsCb(functions, status);
+  if (!ret.isOk())
+    ALOGE("Error while calling setCurrentUsbFunctionsCb %s",
+          ret.description().c_str());
+  return Void();
+}
+}  // namespace implementation
+}  // namespace V1_0
+}  // namespace gadget
+}  // namespace usb
+}  // namespace hardware
+}  // namespace android
diff --git a/usb/UsbGadget.h b/usb/UsbGadget.h
new file mode 100644
index 0000000..9a2c4dd
--- /dev/null
+++ b/usb/UsbGadget.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_HARDWARE_USB_GADGET_V1_0_USBGADGET_H
+#define ANDROID_HARDWARE_USB_GADGET_V1_0_USBGADGET_H
+
+#include <android-base/file.h>
+#include <android-base/properties.h>
+#include <android-base/unique_fd.h>
+#include <android/hardware/usb/gadget/1.0/IUsbGadget.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+#include <string>
+#include <sys/epoll.h>
+#include <sys/eventfd.h>
+#include <thread>
+#include <utils/Log.h>
+#include <chrono>
+#include <condition_variable>
+#include <mutex>
+
+namespace android {
+namespace hardware {
+namespace usb {
+namespace gadget {
+namespace V1_0 {
+namespace implementation {
+
+using ::android::sp;
+using ::android::base::GetProperty;
+using ::android::base::SetProperty;
+using ::android::base::unique_fd;
+using ::android::base::WriteStringToFile;
+using ::android::hardware::hidl_array;
+using ::android::hardware::hidl_memory;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::std::lock_guard;
+using ::std::move;
+using ::std::mutex;
+using ::std::string;
+using ::std::thread;
+using ::std::unique_ptr;
+using ::std::vector;
+using namespace std::chrono_literals;
+
+struct UsbGadget : public IUsbGadget {
+  UsbGadget();
+  unique_fd mInotifyFd;
+  unique_fd mEventFd;
+  unique_fd mEpollFd;
+
+  unique_ptr<thread> mMonitor;
+  volatile bool mMonitorCreated;
+  vector<string> mEndpointList;
+  // protects the CV.
+  std::mutex mLock;
+  std::condition_variable mCv;
+
+  // Makes sure that only one request is processed at a time.
+  std::mutex mLockSetCurrentFunction;
+  uint64_t mCurrentUsbFunctions;
+  bool mCurrentUsbFunctionsApplied;
+
+  Return<void> setCurrentUsbFunctions(uint64_t functions,
+                                      const sp<IUsbGadgetCallback>& callback,
+                                      uint64_t timeout) override;
+
+  Return<void> getCurrentUsbFunctions(
+      const sp<IUsbGadgetCallback>& callback) override;
+
+  private:
+  Status tearDownGadget();
+  Status setupFunctions(uint64_t functions,
+                        const sp<IUsbGadgetCallback>& callback,
+                        uint64_t timeout);
+};
+
+}  // namespace implementation
+}  // namespace V1_0
+}  // namespace gadget
+}  // namespace usb
+}  // namespace hardware
+}  // namespace android
+
+#endif  // ANDROID_HARDWARE_USB_V1_2_USBGADGET_H
diff --git a/usb/android.hardware.usb@1.1-service.wahoo.rc b/usb/android.hardware.usb@1.1-service.wahoo.rc
index 1451519..3e2736c 100644
--- a/usb/android.hardware.usb@1.1-service.wahoo.rc
+++ b/usb/android.hardware.usb@1.1-service.wahoo.rc
@@ -1,7 +1,7 @@
-service usb-hal-1-1 /vendor/bin/hw/android.hardware.usb@1.1-service.wahoo
+service vendor.usb-hal-1-1 /vendor/bin/hw/android.hardware.usb@1.1-service.wahoo
     class hal
     user root
-    group root system
+    group root system shell mtp
 
 on boot
     chown root system /sys/class/typec/port0/power_role
diff --git a/usb/service.cpp b/usb/service.cpp
index 5fffc4c..e540608 100644
--- a/usb/service.cpp
+++ b/usb/service.cpp
@@ -18,6 +18,7 @@
 
 #include <hidl/HidlTransportSupport.h>
 #include "Usb.h"
+#include "UsbGadget.h"
 
 using android::sp;
 
@@ -27,26 +28,35 @@
 
 // Generated HIDL files
 using android::hardware::usb::V1_1::IUsb;
+using android::hardware::usb::gadget::V1_0::IUsbGadget;
 using android::hardware::usb::V1_1::implementation::Usb;
+using android::hardware::usb::gadget::V1_0::implementation::UsbGadget;
 
-using android::status_t;
 using android::OK;
+using android::status_t;
 
 int main() {
-    android::sp<IUsb> service = new Usb();
+  android::sp<IUsb> service = new Usb();
+  android::sp<IUsbGadget> service2 = new UsbGadget();
 
-    configureRpcThreadpool(1, true /*callerWillJoin*/);
-    status_t status = service->registerAsService();
+  configureRpcThreadpool(2, true /*callerWillJoin*/);
+  status_t status = service->registerAsService();
 
-    if (status != OK) {
-        ALOGE("Cannot register USB HAL service");
-        return 1;
-    }
-
-    ALOGI("USB HAL Ready.");
-    joinRpcThreadpool();
-    // Under noraml cases, execution will not reach this line.
-    ALOGI("USB HAL failed to join thread pool.");
+  if (status != OK) {
+    ALOGE("Cannot register USB HAL service");
     return 1;
+  }
 
+  status = service2->registerAsService();
+
+  if (status != OK) {
+    ALOGE("Cannot register USB Gadget HAL service");
+    return 1;
+  }
+
+  ALOGI("USB HAL Ready.");
+  joinRpcThreadpool();
+  // Under noraml cases, execution will not reach this line.
+  ALOGI("USB HAL failed to join thread pool.");
+  return 1;
 }
diff --git a/vibrator/Android.bp b/vibrator/Android.bp
index c751005..c02ae54 100644
--- a/vibrator/Android.bp
+++ b/vibrator/Android.bp
@@ -13,10 +13,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 cc_binary {
-    name: "android.hardware.vibrator@1.1-service.wahoo",
+    name: "android.hardware.vibrator@1.2-service.wahoo",
     relative_install_path: "hw",
-    init_rc: ["android.hardware.vibrator@1.1-service.wahoo.rc"],
+    init_rc: ["android.hardware.vibrator@1.2-service.wahoo.rc"],
     srcs: ["service.cpp", "Vibrator.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
     shared_libs: [
         "libhidlbase",
         "libcutils",
@@ -27,6 +31,7 @@
         "libhardware",
         "android.hardware.vibrator@1.0",
         "android.hardware.vibrator@1.1",
+        "android.hardware.vibrator@1.2",
     ],
     proprietary: true,
 }
diff --git a/vibrator/Vibrator.cpp b/vibrator/Vibrator.cpp
index db64bb1..9657684 100644
--- a/vibrator/Vibrator.cpp
+++ b/vibrator/Vibrator.cpp
@@ -33,7 +33,7 @@
 namespace android {
 namespace hardware {
 namespace vibrator {
-namespace V1_1 {
+namespace V1_2 {
 namespace implementation {
 
 static constexpr int8_t MAX_RTP_INPUT = 127;
@@ -42,18 +42,22 @@
 static constexpr char RTP_MODE[] = "rtp";
 static constexpr char WAVEFORM_MODE[] = "waveform";
 
-// Use effect #1 in the waveform library
+// Use effect #1 in the waveform library for CLICK effect
 static constexpr char WAVEFORM_CLICK_EFFECT_SEQ[] = "1 0";
 static constexpr int32_t WAVEFORM_CLICK_EFFECT_MS = 6;
 
-// Use effect #2 in the waveform library
+// Use effect #2 in the waveform library for TICK effect
 static constexpr char WAVEFORM_TICK_EFFECT_SEQ[] = "2 0";
 static constexpr int32_t WAVEFORM_TICK_EFFECT_MS = 2;
 
-// Use effect #3 in the waveform library
+// Use effect #3 in the waveform library for DOUBLE_CLICK effect
 static constexpr char WAVEFORM_DOUBLE_CLICK_EFFECT_SEQ[] = "3 0";
 static constexpr uint32_t WAVEFORM_DOUBLE_CLICK_EFFECT_MS = 135;
 
+// Use effect #4 in the waveform library for HEAVY_CLICK effect
+static constexpr char WAVEFORM_HEAVY_CLICK_EFFECT_SEQ[] = "4 0";
+static constexpr uint32_t WAVEFORM_HEAVY_CLICK_EFFECT_MS = 8;
+
 // Timeout threshold for selecting open or closed loop mode
 static constexpr int8_t LOOP_MODE_THRESHOLD_MS = 20;
 
@@ -76,6 +80,8 @@
 
     mClickDuration = property_get_int32("ro.vibrator.hal.click.duration", WAVEFORM_CLICK_EFFECT_MS);
     mTickDuration = property_get_int32("ro.vibrator.hal.tick.duration", WAVEFORM_TICK_EFFECT_MS);
+    mHeavyClickDuration = property_get_int32(
+        "ro.vibrator.hal.heavyclick.duration", WAVEFORM_HEAVY_CLICK_EFFECT_MS);
 
     // This enables effect #1 from the waveform library to be triggered by SLPI
     // while the AP is in suspend mode
@@ -116,7 +122,7 @@
    return Status::OK;
 }
 
-// Methods from ::android::hardware::vibrator::V1_1::IVibrator follow.
+// Methods from ::android::hardware::vibrator::V1_2::IVibrator follow.
 Return<Status> Vibrator::on(uint32_t timeoutMs) {
     return on(timeoutMs, false /* forceOpenLoop */, false /* isWaveform */);
 }
@@ -158,7 +164,7 @@
 
     switch (strength) {
     case EffectStrength::LIGHT:
-        scale = 1; // 50%
+        scale = 2; // 50%
         break;
     case EffectStrength::MEDIUM:
     case EffectStrength::STRONG:
@@ -169,52 +175,53 @@
     return scale;
 }
 
-Return<void> Vibrator::perform(Effect effect, EffectStrength strength, perform_cb _hidl_cb) {
+Return<void> Vibrator::perform(V1_0::Effect effect, EffectStrength strength, perform_cb _hidl_cb) {
+    return performEffect(static_cast<Effect>(effect), strength, _hidl_cb);
+}
+
+Return<void> Vibrator::perform_1_1(V1_1::Effect_1_1 effect, EffectStrength strength,
+        perform_cb _hidl_cb) {
+    return performEffect(static_cast<Effect>(effect), strength, _hidl_cb);
+}
+
+Return<void> Vibrator::perform_1_2(Effect effect, EffectStrength strength, perform_cb _hidl_cb) {
+    return performEffect(static_cast<Effect>(effect), strength, _hidl_cb);
+}
+
+Return<void> Vibrator::performEffect(Effect effect, EffectStrength strength, perform_cb _hidl_cb) {
     Status status = Status::OK;
     uint32_t timeMS;
 
-    if (effect == Effect::CLICK) {
+    switch (effect) {
+    case Effect::CLICK:
         mSequencer << WAVEFORM_CLICK_EFFECT_SEQ << std::endl;
         timeMS = mClickDuration;
-    } else if (effect == Effect::DOUBLE_CLICK) {
+        break;
+    case Effect::DOUBLE_CLICK:
         mSequencer << WAVEFORM_DOUBLE_CLICK_EFFECT_SEQ << std::endl;
         timeMS = WAVEFORM_DOUBLE_CLICK_EFFECT_MS;
-    } else {
-        _hidl_cb(Status::UNSUPPORTED_OPERATION, 0);
-        return Void();
-    }
-
-    mScale << convertEffectStrength(strength) << std::endl;
-    on(timeMS, true /* forceOpenLoop */, true /* isWaveform */);
-
-    _hidl_cb(status, timeMS);
-    return Void();
-}
-
-Return<void> Vibrator::perform_1_1(Effect_1_1 effect, EffectStrength strength,
-        perform_cb _hidl_cb) {
-    Status status = Status::OK;
-    uint32_t timeMS;
-
-    if (effect == Effect_1_1::TICK) {
+        break;
+    case Effect::TICK:
         mSequencer << WAVEFORM_TICK_EFFECT_SEQ << std::endl;
         timeMS = mTickDuration;
-    } else if (effect < Effect_1_1::TICK) {
-        return perform(static_cast<Effect>(effect), strength, _hidl_cb);
-    } else {
+        break;
+    case Effect::HEAVY_CLICK:
+        mSequencer << WAVEFORM_HEAVY_CLICK_EFFECT_SEQ << std::endl;
+        timeMS = mHeavyClickDuration;
+        break;
+    default:
         _hidl_cb(Status::UNSUPPORTED_OPERATION, 0);
         return Void();
     }
-
     mScale << convertEffectStrength(strength) << std::endl;
     on(timeMS, true /* forceOpenLoop */, true /* isWaveform */);
-
     _hidl_cb(status, timeMS);
     return Void();
 }
 
+
 } // namespace implementation
-}  // namespace V1_1
+}  // namespace V1_2
 }  // namespace vibrator
 }  // namespace hardware
 }  // namespace android
diff --git a/vibrator/Vibrator.h b/vibrator/Vibrator.h
index 82d4da2..f9daf7c 100644
--- a/vibrator/Vibrator.h
+++ b/vibrator/Vibrator.h
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#ifndef ANDROID_HARDWARE_VIBRATOR_V1_1_VIBRATOR_H
-#define ANDROID_HARDWARE_VIBRATOR_V1_1_VIBRATOR_H
+#ifndef ANDROID_HARDWARE_VIBRATOR_V1_2_VIBRATOR_H
+#define ANDROID_HARDWARE_VIBRATOR_V1_2_VIBRATOR_H
 
-#include <android/hardware/vibrator/1.1/IVibrator.h>
+#include <android/hardware/vibrator/1.2/IVibrator.h>
 #include <hidl/Status.h>
 
 #include <fstream>
@@ -24,7 +24,7 @@
 namespace android {
 namespace hardware {
 namespace vibrator {
-namespace V1_1 {
+namespace V1_2 {
 namespace implementation {
 
 class Vibrator : public IVibrator {
@@ -42,12 +42,15 @@
     Return<Status> setAmplitude(uint8_t amplitude) override;
 
     using EffectStrength = ::android::hardware::vibrator::V1_0::EffectStrength;
-    using Effect = ::android::hardware::vibrator::V1_0::Effect;
-    Return<void> perform(Effect effect, EffectStrength strength, perform_cb _hidl_cb) override;
-    Return<void> perform_1_1(Effect_1_1 effect, EffectStrength strength, perform_cb _hidl_cb) override;
+    Return<void> perform(V1_0::Effect effect, EffectStrength strength, perform_cb _hidl_cb)
+            override;
+    Return<void> perform_1_1(V1_1::Effect_1_1 effect, EffectStrength strength, perform_cb _hidl_cb)
+            override;
+    Return<void> perform_1_2(Effect effect, EffectStrength strength, perform_cb _hidl_cb) override;
 
 private:
     Return<Status> on(uint32_t timeoutMs, bool forceOpenLoop, bool isWaveform);
+    Return<void> performEffect(Effect effect, EffectStrength strength, perform_cb _hidl_cb);
     std::ofstream mActivate;
     std::ofstream mDuration;
     std::ofstream mState;
@@ -59,11 +62,12 @@
     std::ofstream mLpTriggerEffect;
     int32_t mClickDuration;
     int32_t mTickDuration;
+    int32_t mHeavyClickDuration;
 };
 }  // namespace implementation
-}  // namespace V1_1
+}  // namespace V1_2
 }  // namespace vibrator
 }  // namespace hardware
 }  // namespace android
 
-#endif  // ANDROID_HARDWARE_VIBRATOR_V1_1_VIBRATOR_H
+#endif  // ANDROID_HARDWARE_VIBRATOR_V1_2_VIBRATOR_H
diff --git a/vibrator/android.hardware.vibrator@1.1-service.wahoo.rc b/vibrator/android.hardware.vibrator@1.1-service.wahoo.rc
deleted file mode 100644
index f9db6b0..0000000
--- a/vibrator/android.hardware.vibrator@1.1-service.wahoo.rc
+++ /dev/null
@@ -1,4 +0,0 @@
-service vibrator-1-1 /vendor/bin/hw/android.hardware.vibrator@1.1-service.wahoo
-    class hal
-    user system
-    group system
diff --git a/vibrator/android.hardware.vibrator@1.2-service.wahoo.rc b/vibrator/android.hardware.vibrator@1.2-service.wahoo.rc
new file mode 100644
index 0000000..b539786
--- /dev/null
+++ b/vibrator/android.hardware.vibrator@1.2-service.wahoo.rc
@@ -0,0 +1,4 @@
+service vendor.vibrator-1-2 /vendor/bin/hw/android.hardware.vibrator@1.2-service.wahoo
+    class hal
+    user system
+    group system
diff --git a/vibrator/service.cpp b/vibrator/service.cpp
index c3af647..ea05151 100644
--- a/vibrator/service.cpp
+++ b/vibrator/service.cpp
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#define LOG_TAG "android.hardware.vibrator@1.1-service.wahoo"
+#define LOG_TAG "android.hardware.vibrator@1.2-service.wahoo"
 
-#include <android/hardware/vibrator/1.1/IVibrator.h>
+#include <android/hardware/vibrator/1.2/IVibrator.h>
 #include <hidl/HidlSupport.h>
 #include <hidl/HidlTransportSupport.h>
 #include <utils/Errors.h>
@@ -25,8 +25,8 @@
 
 using android::hardware::configureRpcThreadpool;
 using android::hardware::joinRpcThreadpool;
-using android::hardware::vibrator::V1_1::IVibrator;
-using android::hardware::vibrator::V1_1::implementation::Vibrator;
+using android::hardware::vibrator::V1_2::IVibrator;
+using android::hardware::vibrator::V1_2::implementation::Vibrator;
 using namespace android;
 
 // Refer to Documentation/ABI/testing/sysfs-class-led-driver-drv2624
@@ -193,9 +193,7 @@
             std::move(state), std::move(rtpinput), std::move(mode),
             std::move(sequencer), std::move(scale), std::move(ctrlloop), std::move(lptrigger));
 
-    vibrator->registerAsService();
-
-    return OK;
+    return vibrator->registerAsService();
 }
 
 int main() {
diff --git a/vr/VrDevice.cpp b/vr/VrDevice.cpp
index c9966ab..e5cd94d 100644
--- a/vr/VrDevice.cpp
+++ b/vr/VrDevice.cpp
@@ -16,8 +16,11 @@
 
 #define LOG_TAG "VrDevice"
 
+#include <android-base/file.h>
 #include <android-base/logging.h>
 #include <android-base/properties.h>
+#include <android-base/stringprintf.h>
+
 #include "VrDevice.h"
 
 namespace android {
@@ -26,7 +29,16 @@
 namespace V1_0 {
 namespace implementation {
 
-VrDevice::VrDevice() {}
+constexpr char kTouchVRModeSysfs[] = "/sys/devices/virtual/input/ftm4_touch/vrmode";
+
+VrDevice::VrDevice() : mVRmode(false) {
+    std::string hardware = android::base::GetProperty("ro.hardware", "");
+    if (hardware == "taimen") {
+        mFtm4Touch = true;
+    } else {
+        mFtm4Touch = false;
+    }
+}
 
 Return<void> VrDevice::init() {
     // NOOP
@@ -34,29 +46,41 @@
 }
 
 Return<void> VrDevice::setVrMode(bool enabled) {
+    mVRmode = enabled;
     if (enabled) {
-        if (!android::base::SetProperty("sys.qcom.thermalcfg", "/vendor/etc/thermal-engine-vr.conf")) {
+        if (!android::base::SetProperty("sys.qcom.thermalcfg",
+                                        "/vendor/etc/thermal-engine-vr.conf")) {
             LOG(ERROR) << "Couldn't set thermal_engine enable property";
             return Void();
         }
     } else {
-        if (!android::base::SetProperty("sys.qcom.thermalcfg", "/vendor/etc/thermal-engine.conf")) {
+        if (!android::base::SetProperty("sys.qcom.thermalcfg",
+                                        "/vendor/etc/thermal-engine.conf")) {
             LOG(ERROR) << "Couldn't set thermal_engine disable property";
             return Void();
         }
     }
-    if (!android::base::SetProperty("ctl.restart", "thermal-engine")) {
+    if (!android::base::SetProperty("ctl.restart", "vendor.thermal-engine")) {
         LOG(ERROR) << "Couldn't set thermal_engine restart property";
     }
-    if (!access("/sys/devices/virtual/input/ftm4_touch/vrmode", W_OK)) {
-        FILE *f = fopen("/sys/devices/virtual/input/ftm4_touch/vrmode", "w");
-        if (f) {
-            fprintf(f, "%d", (enabled ? 1 : 0));
-            fclose(f);
+
+    if (mFtm4Touch &&
+        !android::base::WriteStringToFile((enabled ? "1" : "0"), kTouchVRModeSysfs)) {
+        PLOG(ERROR) <<  "Failed to write to vrmode sysfs node with :" << enabled;
+    }
+
+    return Void();
+}
+
+Return<void> VrDevice::debug(const hidl_handle& handle, const hidl_vec<hidl_string>&) {
+    if (handle != nullptr && handle->numFds >= 1) {
+        int fd = handle->data[0];
+        std::string buf(android::base::StringPrintf("VRMode: %s\n",
+                                                    (mVRmode ? "true" : "false")));
+        if (!android::base::WriteStringToFd(buf, fd)) {
+            PLOG(ERROR) << "Failed to dump state to fd";
         }
-        else {
-            LOG(ERROR) << "Couldn't open vrmode sysfs node";
-        }
+        fsync(fd);
     }
     return Void();
 }
diff --git a/vr/VrDevice.h b/vr/VrDevice.h
index cd75450..7bc3e14 100644
--- a/vr/VrDevice.h
+++ b/vr/VrDevice.h
@@ -32,6 +32,11 @@
 
     Return<void> init()  override;
     Return<void> setVrMode(bool enabled)  override;
+    Return<void> debug(const hidl_handle& handle, const hidl_vec<hidl_string>&)  override;
+  private:
+    // Taimen display touch sensitivity for VR Mode (b/37515573)
+    bool mFtm4Touch;
+    bool mVRmode;
 };
 
 }  // namespace implementation
diff --git a/vr/android.hardware.vr@1.0-service.wahoo.rc b/vr/android.hardware.vr@1.0-service.wahoo.rc
index 7a66e90..10f3ac9 100644
--- a/vr/android.hardware.vr@1.0-service.wahoo.rc
+++ b/vr/android.hardware.vr@1.0-service.wahoo.rc
@@ -1,4 +1,10 @@
-service vr-wahoo-1-0 /vendor/bin/hw/android.hardware.vr@1.0-service.wahoo
+service vendor.vr-wahoo-1-0 /vendor/bin/hw/android.hardware.vr@1.0-service.wahoo
     class hal
     user system
     group system
+
+# reset touch and thermal-engine when framework died and thermal-engine is in VR mode
+on property:init.svc.zygote=restarting && property:sys.qcom.thermalcfg=/vendor/etc/thermal-engine-vr.conf
+   write /sys/devices/virtual/input/ftm4_touch/vrmode 0
+   setprop sys.qcom.thermalcfg "/vendor/etc/thermal-engine.conf"
+   restart vendor.thermal-engine
diff --git a/wifi_offload/android.hardware.wifi.offload@1.0-service.rc b/wifi_offload/android.hardware.wifi.offload@1.0-service.rc
index 84e0391..58b4560 100644
--- a/wifi_offload/android.hardware.wifi.offload@1.0-service.rc
+++ b/wifi_offload/android.hardware.wifi.offload@1.0-service.rc
@@ -1,4 +1,4 @@
-service offload-hal-1-0 /vendor/bin/hw/android.hardware.wifi.offload@1.0-service
+service vendor.offload-hal-1-0 /vendor/bin/hw/android.hardware.wifi.offload@1.0-service
     class hal
     user wifi
     group wifi system
diff --git a/wifi_offload/chre_interface.cpp b/wifi_offload/chre_interface.cpp
index 448a578..35c1d7d 100644
--- a/wifi_offload/chre_interface.cpp
+++ b/wifi_offload/chre_interface.cpp
@@ -21,6 +21,7 @@
 
 #include "chre_host/host_protocol_host.h"
 
+using android::chre::getStringFromByteVector;
 using android::chre::HostProtocolHost;
 using flatbuffers::FlatBufferBuilder;
 
@@ -60,36 +61,29 @@
     mParent->reportConnectionEvent(ChreInterfaceCallbacks::DISCONNECTED);
 }
 
-void SocketCallbacks::handleNanoappMessage(uint64_t appId, uint32_t messageType,
-                                           uint16_t hostEndpoint, const void* messageData,
-                                           size_t messageDataLen) {
-    LOG(VERBOSE) << "handleNanoappMessage from appId: " << appId;
-    LOG(VERBOSE) << "HostEndPoint: " << hostEndpoint;
-    if (appId == chre_constants::kWifiOffloadNanoAppId) {
-        mParent->handleMessage(messageType, messageData, messageDataLen);
+void SocketCallbacks::handleNanoappMessage(const fbs::NanoappMessageT& message) {
+    LOG(VERBOSE) << "handleNanoappMessage from appId: " << message.app_id;
+    LOG(VERBOSE) << "HostEndPoint: " << message.host_endpoint;
+    if (message.app_id == chre_constants::kWifiOffloadNanoAppId) {
+        mParent->handleMessage(message.message_type, message.message.data(), message.message.size());
     }
 }
 
-void SocketCallbacks::handleHubInfoResponse(const char* name, const char* vendor,
-                                            const char* toolchain, uint32_t legacyPlatformVersion,
-                                            uint32_t legacyToolchainVersion, float peakMips,
-                                            float stoppedPower, float sleepPower, float peakPower,
-                                            uint32_t maxMessageLen, uint64_t platformId,
-                                            uint32_t version) {
+void SocketCallbacks::handleHubInfoResponse(const fbs::HubInfoResponseT& response) {
     LOG(VERBOSE) << "Hub Info response";
-    LOG(VERBOSE) << "Hub Info name: " << name;
-    LOG(VERBOSE) << "Version : " << version;
-    LOG(VERBOSE) << "Legacy Platform Version: " << legacyPlatformVersion;
-    LOG(VERBOSE) << "Legacy Toolchain Version: " << legacyToolchainVersion;
-    LOG(VERBOSE) << "Peak Mips: " << peakMips;
-    LOG(VERBOSE) << "Stopped Power: " << stoppedPower;
-    LOG(VERBOSE) << "Sleep Power: " << sleepPower;
-    LOG(VERBOSE) << "Peak Power: " << peakPower;
-    LOG(VERBOSE) << "Platform ID: " << platformId;
-    LOG(VERBOSE) << "Vendor : " << vendor;
-    LOG(VERBOSE) << "Toolchain : " << toolchain;
-    LOG(VERBOSE) << "maxMessageLen : " << maxMessageLen;
-    if (maxMessageLen < chre_constants::kMaxMessageLen) {
+    LOG(VERBOSE) << "Hub Info name: " << getStringFromByteVector(response.name);
+    LOG(VERBOSE) << "Version : " << response.chre_platform_version;
+    LOG(VERBOSE) << "Legacy Platform Version: " << response.platform_version;
+    LOG(VERBOSE) << "Legacy Toolchain Version: " << response.toolchain_version;
+    LOG(VERBOSE) << "Peak Mips: " << response.peak_mips;
+    LOG(VERBOSE) << "Stopped Power: " << response.stopped_power;
+    LOG(VERBOSE) << "Sleep Power: " << response.sleep_power;
+    LOG(VERBOSE) << "Peak Power: " << response.peak_power;
+    LOG(VERBOSE) << "Platform ID: " << response.platform_id;
+    LOG(VERBOSE) << "Vendor : " << getStringFromByteVector(response.vendor);
+    LOG(VERBOSE) << "Toolchain : " << getStringFromByteVector(response.toolchain);
+    LOG(VERBOSE) << "maxMessageLen : " << response.max_msg_len;
+    if (response.max_msg_len < chre_constants::kMaxMessageLen) {
         LOG(WARNING) << "Incorrect max message length";
     }
 }
diff --git a/wifi_offload/chre_interface.h b/wifi_offload/chre_interface.h
index 92cfa5b..b4afef2 100644
--- a/wifi_offload/chre_interface.h
+++ b/wifi_offload/chre_interface.h
@@ -39,13 +39,8 @@
     void onConnected() override;
     void onConnectionAborted() override;
     void onDisconnected() override;
-    void handleNanoappMessage(uint64_t appId, uint32_t messageType, uint16_t hostEndpoint,
-                              const void* messageData, size_t messageDataLen) override;
-    void handleHubInfoResponse(const char* name, const char* vendor, const char* toolchain,
-                               uint32_t legacyPlatformVersion, uint32_t legacyToolchainVersion,
-                               float peakMips, float stoppedPower, float sleepPower,
-                               float peakPower, uint32_t maxMessageLen, uint64_t platformId,
-                               uint32_t version) override;
+    void handleNanoappMessage(const ::chre::fbs::NanoappMessageT& message) override;
+    void handleHubInfoResponse(const ::chre::fbs::HubInfoResponseT& response) override;
     void handleNanoappListResponse(const ::chre::fbs::NanoappListResponseT& response) override;
     void handleLoadNanoappResponse(const ::chre::fbs::LoadNanoappResponseT& response) override;
     void handleUnloadNanoappResponse(const ::chre::fbs::UnloadNanoappResponseT& response) override;
diff --git a/wpa_supplicant_overlay.conf b/wpa_supplicant_overlay.conf
index e1f530d..bb1906c 100644
--- a/wpa_supplicant_overlay.conf
+++ b/wpa_supplicant_overlay.conf
@@ -1,3 +1,4 @@
 disable_scan_offload=1
 p2p_disabled=1
 tdls_external_control=1
+bss_max_count=512