Merge "Merge Android 12"
diff --git a/Android.bp b/Android.bp
index f3c9ebc..0649958 100644
--- a/Android.bp
+++ b/Android.bp
@@ -42,6 +42,7 @@
         "libprotobuf-java-lite",
         "app-compat-annotations",
         "unsupportedappusage",
+        "org.apache.http.legacy",
     ],
 
     static_libs: [
@@ -54,6 +55,7 @@
         "guava",
         "PlatformProperties",
         "modules-utils-os",
+        "nist-sip",
     ],
 
     srcs: [
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index b3b7f8b..6b4a19c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -38,6 +38,7 @@
     <protected-broadcast android:name="android.intent.action.ACTION_MDN_STATE_CHANGED" />
     <protected-broadcast android:name="android.telephony.action.SERVICE_PROVIDERS_UPDATED" />
     <protected-broadcast android:name="android.provider.Telephony.SIM_FULL" />
+    <protected-broadcast android:name="com.android.internal.telephony.carrier_key_download_alarm" />
     <protected-broadcast android:name="com.android.internal.telephony.data-restart-trysetup" />
     <protected-broadcast android:name="com.android.internal.telephony.data-stall" />
     <protected-broadcast android:name="com.android.internal.telephony.provisioning_apn_alarm" />
@@ -83,6 +84,7 @@
     <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_VVM_PACKAGE_INSTALLED" />
     <protected-broadcast android:name= "com.android.cellbroadcastreceiver.GET_LATEST_CB_AREA_INFO" />
     <protected-broadcast android:name= "com.android.internal.telephony.ACTION_CARRIER_CERTIFICATE_DOWNLOAD" />
+    <protected-broadcast android:name= "com.android.internal.telephony.action.COUNTRY_OVERRIDE" />
     <protected-broadcast android:name= "com.android.internal.telephony.OPEN_DEFAULT_SMS_APP" />
     <protected-broadcast android:name= "com.android.internal.telephony.ACTION_TEST_OVERRIDE_CARRIER_ID" />
     <protected-broadcast android:name= "android.telephony.action.SIM_CARD_STATE_CHANGED" />
@@ -100,6 +102,9 @@
     <protected-broadcast android:name= "android.telephony.action.CARRIER_SIGNAL_REDIRECTED" />
     <protected-broadcast android:name= "android.telephony.action.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED" />
 
+    <protected-broadcast android:name= "com.android.phone.settings.CARRIER_PROVISIONING" />
+    <protected-broadcast android:name= "com.android.phone.settings.TRIGGER_CARRIER_PROVISIONING" />
+
     <!-- For Vendor Debugging in Telephony -->
     <protected-broadcast android:name="android.telephony.action.ANOMALY_REPORTED" />
 
@@ -129,8 +134,8 @@
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
     <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
     <uses-permission android:name="android.permission.VIBRATE" />
-    <uses-permission android:name="android.permission.BLUETOOTH" />
-    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
+    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
     <uses-permission android:name="android.permission.REORDER_TASKS" />
     <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
     <uses-permission android:name="android.permission.WAKE_LOCK" />
@@ -227,7 +232,6 @@
          from the background.  -->
     <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
     <uses-permission android:name="android.permission.NETWORK_STATS_PROVIDER" />
-    <uses-permission android:name="android.permission.HANDLE_CAR_MODE_CHANGES"/>
     <uses-permission android:name="android.permission.MANAGE_SUBSCRIPTION_PLANS"/>
     <uses-permission android:name="android.permission.OBSERVE_ROLE_HOLDERS"/>
     <uses-permission android:name="android.permission.BIND_GBA_SERVICE"/>
@@ -235,6 +239,9 @@
     <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
     <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>
 
+    <!-- Needed to listen to changes in projection state. -->
+    <uses-permission android:name="android.permission.READ_PROJECTION_STATE"/>
+
     <application android:name="PhoneApp"
             android:persistent="true"
             android:label="@string/phoneAppLabel"
diff --git a/proguard.flags b/proguard.flags
index c707f76..8eafd30 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -7,4 +7,9 @@
 -keepclassmembers class * {
 @**.NeededForTesting *;
 }
+# TODO: remove this after call composer gets more integrated.
+# for the time being, this is here so that the tests don't fail when encountering dead code.
+-keep class com.android.phone.callcomposer.** {
+ *;
+}
 -verbose
\ No newline at end of file
diff --git a/res/drawable/cupcake.png b/res/drawable/cupcake.png
new file mode 100644
index 0000000..dcc74e5
--- /dev/null
+++ b/res/drawable/cupcake.png
Binary files differ
diff --git a/res/layout/radio_info.xml b/res/layout/radio_info.xml
index 72627a3..68c67a3 100644
--- a/res/layout/radio_info.xml
+++ b/res/layout/radio_info.xml
@@ -153,6 +153,12 @@
             <TextView android:id="@+id/nr_frequency" style="@style/info_value" />
         </LinearLayout>
 
+        <!-- NR Frequency -->
+        <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+            <TextView android:id="@+id/network_slicing_config_label" android:text="@string/radio_info_network_slicing_config" style="@style/info_label" />
+            <TextView android:id="@+id/network_slicing_config" style="@style/info_value" />
+        </LinearLayout>
+
         <!-- Physical Channel Config -->
         <LinearLayout style="@style/RadioInfo_entry_layout">
             <TextView android:text="@string/radio_info_phy_chan_config" style="@style/info_label" />
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 76b13c6..eefaebd 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Skakel selnetwerk aan, skakel vliegtuigmodus af of skakel batterybespaardermodus af om \'n oproep te maak."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Skakel vliegtuigmodus af om \'n oproep te maak."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Skakel vliegtuigmodus af of koppel aan \'n draadlose netwerk om \'n oproep te maak."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Foon is te warm"</b>\n\n"Kan nie hierdie oproep voltooi nie. Probeer weer wanneer jou foon afkoel.\n\nJy kan nog noodoproepe maak."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Verlaat noodterugbelmodus om \'n nienoodoproep te maak."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Nie geregistreer op netwerk nie."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobiele netwerk nie beskikbaar nie."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR is beskikbaar:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-status:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-frekwensie:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Stel radiobandmodus"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Laai tans bandlys …"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Stel"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index a808559..d1833a6 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"የተንቀሳቃሽ ስልክ አውታረ መረብ ያብሩ፣ ጥሪ ለማድረግ የአውሮፕላን ሁነታን ወይም የባትሪ ኃይል ቆጣቢ ሁነታን ያጥፉ።"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ጥሪ ለማድረግ የአውሮፕላን ሁነታን ያጥፉ።"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ጥሪ ለማድረግ የአውሮፕላን ሁኔታን ያጥፉ ወይም ወደ ሽቦ አልባ አውታረ መረብ ያገናኙ።"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ስልኩ በጣም ሞቋል"</b>\n\n" ይህንን ጥሪ ማጠናቀቅ አልተቻለም። ስልክዎ ሲቀዘቅዝ እንደገና ይሞክሩ።\n\nየአደጋ ጊዜ ጥሪዎችን አሁንም ማድረግ ይችላሉ።"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"አስቸኳይ ያልሆነ ጥሪ ለማድረግ ከአስቸኳይ መልሰህ ደውል ሁነታ ይውጡ።"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"በአውታረ መረቡ ላይ አልተመዘገበም።"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"የተንቀሳቃሽ አደራጅ የለም።"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ይገኛል፦"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR ሁኔታ፦"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ድግግሞሽ፦"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"የሬዲዮ ባንድ ሁነታን ያቀናጁ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"የባንድ ዝርዝርን በመጫን ላይ…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"አዋቅር"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 21a540f..ac4cbdf 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"شغَّل شبكة الجوال، ثم أوقف تفعيل وضع الطيران أو أوقف تفعيل وضع توفير شحن البطارية لإجراء مكالمة."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"عليك إيقاف وضع الطيران لإجراء مكالمة."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"عليك إيقاف وضع الطيران أو الاتصال بشبكة لاسلكية لإجراء مكالمة."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"الهاتف ساخن جدًا"</b>\n\n"يتعذّر إتمام هذه المكالمة. يمكن المحاولة مرة أخرى عندما تنخفض درجة حرارة الهاتف.\n\nسيظلّ بإمكانك إجراء مكالمات الطوارئ."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ينبغي الخروج من وضع معاودة الاتصال بالطوارئ لإجراء مكالمة غير طارئة."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"غير مسجل على الشبكة."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"شبكة الجوال غير متاحة."</string>
@@ -927,6 +926,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"‏NR متوفر:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"‏حالة NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"‏تردد NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"تحديد وضع النطاق اللاسلكي"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"جارٍ تحميل قائمة النطاقات…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ضبط"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 2033d5e..ad6dbc3 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"কল কৰিবৰ কাৰণে ম’বাইল নেটৱৰ্ক অন কৰক, এয়াৰপ্লেইন ম\'ড অফ কৰক বা বেটাৰি সঞ্চয়কাৰী ম\'ড অফ কৰক।"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"কল কৰিবৰ কাৰণে এয়াৰপ্লেইন ম\'ড অফ কৰক।"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"কল কৰিবৰ কাৰণে এয়াৰপ্লেইন ম\'ড অফ কৰক বা কোনো বেতাঁৰ নেটৱৰ্কৰ সৈতে সংযোগ কৰক।"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ফ’নটো বেছি গৰম হৈছে"</b>\n\n"এই কলটো সম্পূৰ্ণ কৰিব নোৱাৰি। আপোনাৰ ফ’নটো ঠাণ্ডা হোৱাৰ পাছত পুনৰ চেষ্টা কৰক।\n\nআপুনি তথাপি জৰুৰীকালীন কল কৰিব পাৰিব।"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"সাধাৰণ কল কৰিবৰ কাৰণে জৰুৰীকালীন কলবেক ম\'ডৰ পৰা বাহিৰ হওক।"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"নেটৱৰ্কত পঞ্জীকৃত নহয়।"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"ম’বাইল নেটৱৰ্ক উপলব্ধ নহয়।"</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR উপলব্ধ:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR স্থিতি:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ফ্ৰিকুৱেন্সী:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"নেটৱৰ্ক বিভাজনৰ কনফিগাৰেশ্বন:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ৰেডিঅ’ৰ বেণ্ড ম’ড ছেট কৰক"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"বেণ্ড সূচীখন ল’ড কৰি থকা হৈছে…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ছেট কৰক"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 5ec4dc5..c1ea981 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Zəng etmək üçün mobil şəbəkəni aktiv edin, uçuş rejimini deaktiv edin və ya enerji qənaətini deaktiv edin."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Zəng etmək üçün təyyarə rejimini deaktiv edin."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Zəng etmək üçün təyyarə rejimini deaktiv edin və ya Wi-Fi şəbəkəsinə qoşulun."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefonunuz çox qızıb"</b>\n\n"Bu zəngi tamamlamaq mümkün deyil. Telefonunuz soyuduqda yenidən cəhd edin.\n\nHələ də təcili zənglər edə bilərsiniz."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Qeyri-fövqəladə zəng etmək üçün fövqəladə zəng rejimindən çıxın."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Şəbəkədə qeydə alınmayıb."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobil şəbəkə əlçatımlı deyil."</string>
@@ -592,7 +591,7 @@
     <string name="importToFDNfromContacts" msgid="5068664870738407341">"Kontaktlardan import edin"</string>
     <string name="singleContactImportedMsg" msgid="3619804066300998934">"Idxal olunmuş kontakt"</string>
     <string name="failedToImportSingleContactMsg" msgid="228095510489830266">"Kontakt idxalı uğursuz oldu"</string>
-    <string name="hac_mode_title" msgid="4127986689621125468">"Eşitmə cihazları"</string>
+    <string name="hac_mode_title" msgid="4127986689621125468">"Eşitmə yardımı"</string>
     <string name="hac_mode_summary" msgid="7774989500136009881">"Eşitmə yardımı uyğunluğunu aktivləşdirin"</string>
     <string name="rtt_mode_title" msgid="3075948111362818043">"Real zaman mətn (RTT) zəngi"</string>
     <string name="rtt_mode_summary" msgid="8631541375609989562">"Səsli zəng daxilində mesajlaşmaya icazə verin"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR Əlçatandır:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR Statusu:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR Tezliyi:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Radio Diapazon Rejimini Quraşdırın"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Diapazon Siyahısı Yüklənir…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ayarlayın"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index bf39f18..52c569c 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Uključite mobilnu mrežu i isključite režim rada u avionu ili režim uštede baterije da biste uputili poziv."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Isključite režim rada u avionu da biste uputili poziv."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Isključite režim rada u avionu ili se povežite na bežičnu mrežu da biste uputili poziv."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefon je previše vruć"</b>\n\n"Poziv ne može da se završi. Probajte ponovo kada se telefon ohladi.\n\nI dalje možete da upućujete hitne pozive."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Izađite iz režima hitnog povratnog poziva da biste uputili poziv koji nije hitan."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Nije registrovano na mreži."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilna mreža nije dostupna."</string>
@@ -918,6 +917,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR dostupno:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR stanje:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR učestalost:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Podesite režim radijskog opsega"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Učitava se lista opsega…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Podesi"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 6674bee..bdd80f5 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Каб пазваніць, уключыце мабільную сетку, выключыце рэжым палёту або рэжым эканоміі зараду."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Адключыце рэжым палёту, каб зрабіць выклік."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Адключыце рэжым палёту або падлучыцеся да бесправадной сеткі, каб зрабіць выклік."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Тэлефон перагрэўся"</b>\n\n"Не ўдалося зрабіць выклік. Паўтарыце спробу, калі тэлефон астыне.\n\nВы ўсё роўна можаце рабіць экстранныя выклікі."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Каб зрабіць звычайны выклік, выйдзіце з рэжыму экстранных зваротных выклікаў."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Не зарэгістраваны ў сетцы."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Мабільная сетка недаступная."</string>
@@ -921,6 +920,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Даступнасць NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Стан NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Частата NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Задаць рэжым радыёдыяпазону"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Загружаецца спіс дыяпазонаў…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Задаць"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 216c789..6be0bcd 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Включете мобилната мрежа, изключете самолетния режим или режима за запазване на батерията, за да се обадите."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Изключете самолетния режим, за да осъществите обаждане."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Изключете самолетния режим или се свържете с безжична мрежа, за да осъществите обаждане."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Телефонът е твърде горещ"</b>\n\n"Обаждането не може да се извърши. Опитайте отново, когато телефонът се охлади.\n\nМожете да извършвате спешни обаждания."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Излезте от режима на обратно обаждане при спешност, за да можете да извършвате обаждания, които не са спешни."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Няма регистрация в мрежата."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Няма мобилна мрежа."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Налично NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Състояние на NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Честота за NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Задаване на режима за радиодиапазона"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Списъкът с диапазони се зарежда…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Задаване"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 81a2b33..29dcb56 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"কল করতে মোবাইল নেটওয়ার্ক চালু করুন, বিমান মোড বা ব্যাটারি সেভার বন্ধ করুন৷"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"কল করতে বিমান মোড বন্ধ করুন৷"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"বিমান মোড বন্ধ করুন বা কল করতে কোনো ওয়্যারলেস নেটওয়ার্কে সংযোগ করুন৷"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ফোনটি খুব গরম হয়ে গেছে"</b>\n\n"এই কলটি সম্পূর্ণ করা যাচ্ছে না। ফোনটি ঠাণ্ডা হয়ে গেলে আবার চেষ্টা করুন।\n\nআপনি এখনও জরুরি কল করতে পারেন।"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"একটি সাধারণ কল করতে জরুরি কলব্যাক মোডের বাইরে আসুন৷"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"নেটওয়ার্কে নিবন্ধিত নয়৷"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"মোবাইল নেটওয়ার্ক উপলব্ধ নয়৷"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR উপলভ্য:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR স্ট্যাটাস:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ফ্রিকোয়েন্সি:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"রেডিও ব্যান্ড মোড সেট করুন"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ব্যান্ড তালিকা লোড হচ্ছে..."</string>
     <string name="band_mode_set" msgid="6657819412803771421">"সেট করুন"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 5c1e681..ed5c95b 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Uključite mobilnu mrežu, isključite Način rada u avionu ili isključite Uštedu baterije da pozovete."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Isključite način rada u avionu da pozovete."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Isključite način rada u avionu ili se povežite na bežičnu mrežu da pozovete."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefon se pregrijao"</b>\n\n"Nije moguće završiti ovaj poziv. Pokušajte ponovo kada se telefon ohladi.\n\nI dalje možete upućivati hitne pozive."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Izađite iz načina rada za hitni povratni poziv da uputite poziv koji nije hitan."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Nije registrirano na mreži."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilna mreža nije dostupna."</string>
@@ -918,6 +917,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR dostupno:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR stanje:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR učestalost:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Konfiguracija rezanja mreže:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Postavite način radijskog opsega"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Učitavanje liste opsega…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Postavi"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 5350ab0..acbe3d8 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Per fer una trucada, activa la xarxa mòbil o desactiva el mode d\'avió o el mode d\'estalvi de bateria."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Per fer una trucada, desactiva el mode d\'avió."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Per fer una trucada, desactiva el mode d\'avió o connecta amb una xarxa sense fil."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"El telèfon està massa calent"</b>\n\n"No es pot completar aquesta trucada. Torna-ho a provar quan el telèfon es refredi.\n\nPots fer trucades d\'emergència igualment."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Surt del mode de devolució de trucada d\'emergència per fer un altre tipus de trucada."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"No registrat a la xarxa."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"La xarxa mòbil no està disponible."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponible:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Estat d\'NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Freqüència d\'NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Configura el mode de banda de senyal mòbil"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"S\'està carregant la llista de bandes…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Defineix"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 926681b..ed768a7 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Pokud chcete volat, zapněte mobilní síť a vypněte režim letadla nebo spořič baterie."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Chcete-li provést hovor, vypněte režim Letadlo."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Chcete-li se připojit k bezdrátové síti a provést hovor, vypněte režim Letadlo."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefon je příliš zahřátý"</b>\n\n"Hovor nelze provést. Zkuste to znovu, až telefon vychladne.\n\nTísňové volání máte pořád k dispozici."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Chcete-li uskutečnit běžný hovor, opusťte režim tísňového volání."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Přihlášení k síti nebylo úspěšné."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilní síť je nedostupná."</string>
@@ -921,6 +920,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR k dispozici:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Stav NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekvence NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Nastavit režim pásma bezdrátového modulu"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Načítání seznamu pásem…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Nastavit"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 9d623a4..51659c3 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Slå Mobilnetværk til, Flytilstand fra eller Batterisparefunktion fra for at foretage et opkald."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Slå flytilstand fra for at foretage et opkald."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Slå flytilstand fra, eller opret forbindelse til et trådløst netværk for at foretage et opkald."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefonen er for varm"</b>\n\n"Opkaldet kan ikke foretages. Prøv igen, når din telefon er kølet af.\n\nDu kan stadig foretage nødopkald."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Afslut nødtilbagekaldstilstand for at foretage et almindeligt opkald."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Ikke registreret på netværk."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilnetværket er ikke tilgængeligt."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Tilgængelig for NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Status for NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekvens for NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Konfigurer radiobåndstilstand"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Indlæser båndliste…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Angiv"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 3f568a5..275147d 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Zum Anrufen Mobilfunknetz aktivieren, Flugmodus oder Energiesparmodus deaktivieren."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Deaktiviere zum Telefonieren den Flugmodus."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Deaktiviere zum Telefonieren den Flugmodus oder stelle eine WLAN-Verbindung her."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Smartphone ist überhitzt."</b>\n\n"Anruf nicht möglich. Versuche es noch einmal, wenn das Smartphone abgekühlt ist.\n\nDu kannst weiterhin Notrufe absetzen."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Beende den Notfallrückrufmodus, um einen Anruf zu tätigen, bei dem es sich nicht um einen Notfall handelt."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Nicht in Netzwerk registriert."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilfunknetz ist nicht verfügbar."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR verfügbar:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-Status:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-Frequenz:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Frequenzbereichmodus festlegen"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Frequenzliste wird geladen…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Festlegen"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 277148c..2d8fd45 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Ενεργοποιήστε το δίκτυο κινητής τηλεφωνίας, απενεργοποιήστε τη λειτουργία πτήσης ή τη λειτουργία εξοικονόμησης μπαταρίας, για να πραγματοποιήσετε μια κλήση."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Απενεργοποιήστε τη λειτουργία κλήσης για να πραγματοποιήσετε μια κλήση."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Απενεργοποιήστε τη λειτουργία πτήσης ή συνδεθείτε σε ένα ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Το τηλέφωνο έχει υπερθερμανθεί"</b>\n\n"Δεν είναι δυνατή η ολοκλήρωση αυτής της κλήσης. Δοκιμάστε ξανά όταν η θερμοκρασία της συσκευής επανέλθει σε φυσιολογικά επίπεδα.\n\nΩστόσο, μπορείτε ακόμα να πραγματοποιείτε κλήσεις έκτακτης ανάγκης."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Πραγματοποιήστε έξοδο από τη λειτουργία επιστροφής κλήσης έκτακτης ανάγκης για να πραγματοποιήσετε μια κλήση μη έκτακτης ανάγκης."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Δεν έχετε εγγραφεί στο δίκτυο."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR διαθέσιμο:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Κατάσταση NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Συχνότητα NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Ρύθμιση λειτουργίας ζώνης συχνοτήτων πομπού"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Φόρτωση λίστας ζωνών…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ορισμός"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index f2aa49b..191ffcf 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Turn on mobile network, turn off airplane mode or turn off battery saver mode to make a call."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Turn off aeroplane mode to make a call."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Turn off aeroplane mode or connect to a wireless network to make a call."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Phone too hot"</b>\n\n"Can\'t complete this call. Try again when your phone cools down.\n\nYou can still make emergency calls."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Exit emergency callback mode to make a non-emergency call."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Not registered on network."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobile network not available."</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR available:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR status:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR frequency:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Network slicing config:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Set radio band mode"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Loading band list…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Set"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index c299527..6e43520 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Turn on mobile network, turn off airplane mode or turn off battery saver mode to make a call."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Turn off Airplane mode to make a call."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Turn off Airplane mode or connect to a wireless network to make a call."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Phone too hot"</b>\n\n"Can\'t complete this call. Try again when your phone cools down.\n\nYou can still make emergency calls."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Exit emergency callback mode to make a non-emergency call."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Not registered on network."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobile network not available."</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR available:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR status:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR frequency:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Network slicing config:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Set radio band mode"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Loading band list…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Set"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index f2aa49b..191ffcf 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Turn on mobile network, turn off airplane mode or turn off battery saver mode to make a call."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Turn off aeroplane mode to make a call."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Turn off aeroplane mode or connect to a wireless network to make a call."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Phone too hot"</b>\n\n"Can\'t complete this call. Try again when your phone cools down.\n\nYou can still make emergency calls."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Exit emergency callback mode to make a non-emergency call."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Not registered on network."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobile network not available."</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR available:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR status:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR frequency:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Network slicing config:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Set radio band mode"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Loading band list…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Set"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index f2aa49b..191ffcf 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Turn on mobile network, turn off airplane mode or turn off battery saver mode to make a call."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Turn off aeroplane mode to make a call."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Turn off aeroplane mode or connect to a wireless network to make a call."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Phone too hot"</b>\n\n"Can\'t complete this call. Try again when your phone cools down.\n\nYou can still make emergency calls."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Exit emergency callback mode to make a non-emergency call."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Not registered on network."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobile network not available."</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR available:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR status:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR frequency:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Network slicing config:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Set radio band mode"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Loading band list…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Set"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index ef450c3..aa19d15 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‏‏‎‎‏‏‏‎‏‎‎‎‎‏‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎Turn on mobile network, turn off airplane mode or turn off battery saver mode to make a call.‎‏‎‎‏‎"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‎‎‎‎‎‎‏‏‎‏‎‏‏‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‏‎‎‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎Turn off airplane mode to make a call.‎‏‎‎‏‎"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‎‎‎‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‏‏‎‎‏‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‎Turn off airplane mode or connect to a wireless network to make a call.‎‏‎‎‏‎"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‏‎‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‏‎‏‎‏‎‎‏‎‏‎‎‎‏‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‎‎‏‏‎"<b>"‎‏‎‎‏‏‏‎Phone too hot‎‏‎‎‏‏‎"</b>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Can\'t complete this call. Try again when your phone cools down.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎You can still make emergency calls.‎‏‎‎‏‎"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‎‎‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎Exit emergency callback mode to make a non-emergency call.‎‏‎‎‏‎"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‎‎‏‏‎‏‏‏‎‏‏‎‏‎Not registered on network.‎‏‎‎‏‎"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎‏‎‏‏‏‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‏‏‏‎Mobile network not available.‎‏‎‎‏‎"</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‎‏‏‎‎‏‎‎‎‏‎‎‎‎‎‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎‏‎NR Available:‎‏‎‎‏‎"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‏‎‎‏‎‎‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‎‎‎NR State:‎‏‎‎‏‎"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‎‏‎‎‎‏‏‎‎‎‎‎‎‎NR Frequency:‎‏‎‎‏‎"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‎‏‏‏‎‎‎‏‎‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‎‏‏‎‎‎‎‎‎‏‎‎‏‏‏‏‏‎‎‏‎‎‎‏‎‏‏‎Network slicing config:‎‏‎‎‏‎"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‎‎‎‎‎‏‏‏‏‎‏‎‏‎‏‎‏‏‎‏‎‎‏‎‎‏‎‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‎Set Radio Band Mode‎‏‎‎‏‎"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‎‏‏‏‎‏‏‎‎‎‎‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‎‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎Loading Band List…‎‏‎‎‏‎"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‏‎‏‎‏‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‏‏‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‏‎Set‎‏‎‎‏‎"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 23e2e43..3fd44d6 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Activa la red móvil y desactiva el modo de avión o el modo de ahorro de batería para realizar una llamada."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Desactivar modo de avión para hacer una llamada"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Desactivar el modo de avión o conectarse a una red inalámbrica para hacer una llamada"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Se sobrecalentó el teléfono"</b>\n\n"No se puede completar esta llamada. Vuelve a intentar cuando se enfríe el teléfono.\n\nDe todos modos, puedes hacer llamadas de emergencia."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Para realizar una llamada que no sea de emergencia, sal del modo de devolución de llamada de emergencia."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"No registrado en la red."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"La red móvil no está disponible."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponible:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Estado de NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frecuencia de NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Establecer modo de banda de radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Cargando lista de bandas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Establecer"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index a106ba2..4d1f877 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -92,7 +92,7 @@
     <string name="additional_cdma_call_settings" msgid="2178016561980611304">"Ajustes adicionales de llamadas CDMA"</string>
     <string name="sum_cdma_call_settings" msgid="3185825305136993636">"Ajustes adicionales de llamadas solo CDMA"</string>
     <string name="labelNwService" msgid="6015891883487125120">"Ajustes del servicio de red"</string>
-    <string name="labelCallerId" msgid="2090540744550903172">"Identificación de llamada"</string>
+    <string name="labelCallerId" msgid="2090540744550903172">"ID de llamada"</string>
     <string name="sum_loading_settings" msgid="434063780286688775">"Cargando ajustes…"</string>
     <string name="sum_hide_caller_id" msgid="131100328602371933">"Número oculto en llamadas salientes"</string>
     <string name="sum_show_caller_id" msgid="3571854755324664591">"Número mostrado en llamadas salientes"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Activa la red móvil o desactiva el modo avión o el modo de ahorro de batería para hacer una llamada."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Desactiva el modo avión parra hacer llamadas."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Desactiva el modo avión o conéctate a una red inalámbrica para hacer llamadas."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"El teléfono está demasiado caliente"</b>\n\n"No se ha podido completar esta llamada. Vuelve a intentarlo cuando el teléfono se enfríe.\n\nNo obstante, puedes hacer llamadas de emergencia."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Sal del modo de devolución de llamada de emergencia para hacer otro tipo de llamada."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"No se ha podido conectar a la red"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"La red móvil no está disponible."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponible:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Estado de NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frecuencia de NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Establecer modo de banda de señal móvil"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Cargando lista de bandas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Seleccionar"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 076160a..26366e9 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Helistamiseks lülitage mobiilsidevõrk sisse, lennu- või akusäästjarežiim välja."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Helistamiseks lülitage lennurežiim välja."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Helistamiseks lülitage lennurežiim välja või looge ühendus traadita võrguga."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefon on liiga kuum"</b>\n\n"Kõnet ei saa teha. Proovige uuesti, kui telefon on jahtunud.\n\nSaate endiselt teha hädaabikõnesid."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Muude kui hädaabikõne tegemiseks väljuge hädaabikõnede režiimist."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Ei ole võrku registreeritud."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobiilsidevõrk pole saadaval."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR saadaval:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-i olek:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-i sagedus:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Raadio ribarežiimi määramine"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Ribaloendi laadimine …"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Määra"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 4d5b23d..81af2b4 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -49,7 +49,7 @@
     <string name="add_vm_number_str" msgid="7368168964435881637">"Gehitu zenbakia"</string>
     <string name="voice_number_setting_primary_user_only" msgid="3394706575741912843">"Erabiltzaile nagusiak bakarrik alda ditzake erantzungailuaren ezarpenak."</string>
     <string name="puk_unlocked" msgid="4627340655215746511">"SIM txartela desblokeatu da. Telefonoa desblokeatzen…"</string>
-    <string name="label_ndp" msgid="7617392683877410341">"SIMaren sarea desblokeatzeko PINa"</string>
+    <string name="label_ndp" msgid="7617392683877410341">"SIM sarea desblokeatzeko PIN kodea"</string>
     <string name="label_phoneid" msgid="8775611434123577808">"Operadore hau dauka finkatuta SIM txartelak:"</string>
     <string name="sim_ndp_unlock_text" msgid="7737338355451978338">"Desblokeatu"</string>
     <string name="sim_ndp_dismiss_text" msgid="89667342248929777">"Baztertu"</string>
@@ -162,15 +162,15 @@
     <string name="no_change" msgid="3737264882821031892">"Ez da aldaketarik egin."</string>
     <string name="sum_voicemail_choose_provider" msgid="6750824719081403773">"Aukeratu erantzungailu-zerbitzua"</string>
     <string name="voicemail_default" msgid="6427575113775462077">"Operadorea"</string>
-    <string name="vm_change_pin_old_pin" msgid="7154951790929009241">"PIN zaharra"</string>
-    <string name="vm_change_pin_new_pin" msgid="2656200418481288069">"PIN berria"</string>
+    <string name="vm_change_pin_old_pin" msgid="7154951790929009241">"PIN kode zaharra"</string>
+    <string name="vm_change_pin_new_pin" msgid="2656200418481288069">"PIN kode berria"</string>
     <string name="vm_change_pin_progress_message" msgid="626015184502739044">"Itxaron, mesedez."</string>
-    <string name="vm_change_pin_error_too_short" msgid="1789139338449945483">"Laburregia da PIN berria."</string>
-    <string name="vm_change_pin_error_too_long" msgid="3634907034310018954">"Luzeegia da PIN berria."</string>
-    <string name="vm_change_pin_error_too_weak" msgid="8581892952627885719">"Ez da batere segurua PIN berria. Pasahitza segurua izan dadin, ez du izan behar zenbaki-segidarik edo errepikatutako zenbakirik."</string>
-    <string name="vm_change_pin_error_mismatch" msgid="5364847280026257331">"PIN zaharra ez dator bat."</string>
-    <string name="vm_change_pin_error_invalid" msgid="5230002671175580674">"Balio ez duten karaktereak ditu PIN berriak."</string>
-    <string name="vm_change_pin_error_system_error" msgid="9116483527909681791">"Ezin da aldatu PINa"</string>
+    <string name="vm_change_pin_error_too_short" msgid="1789139338449945483">"Laburregia da PIN kode berria."</string>
+    <string name="vm_change_pin_error_too_long" msgid="3634907034310018954">"Luzeegia da PIN kode berria."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="8581892952627885719">"Ez da batere segurua PIN kode berria. Pasahitza segurua izan dadin, ez du izan behar zenbaki-segidarik edo errepikatutako zenbakirik."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="5364847280026257331">"PIN kode zaharra ez dator bat."</string>
+    <string name="vm_change_pin_error_invalid" msgid="5230002671175580674">"Balio ez duten karaktereak ditu PIN kode berriak."</string>
+    <string name="vm_change_pin_error_system_error" msgid="9116483527909681791">"Ezin da aldatu PIN kodea"</string>
     <string name="vvm_unsupported_message_format" msgid="4206402558577739713">"Ez dira onartzen mota honetako mezuak. Entzuteko, deitu <xliff:g id="NUMBER">%s</xliff:g> zenbakira."</string>
     <string name="network_settings_title" msgid="7560807107123171541">"Sare mugikorra"</string>
     <string name="label_available" msgid="1316084116670821258">"Sare erabilgarriak"</string>
@@ -449,7 +449,7 @@
     <string name="enable_fdn_ok" msgid="5080925177369329827">"Desgaitu markatze finkoko zenbakia"</string>
     <string name="disable_fdn_ok" msgid="3745475926874838676">"Gaitu markatze finkoko zenbakiak"</string>
     <string name="sum_fdn" msgid="6152246141642323582">"Kudeatu Markatze finkoko zenbakiak"</string>
-    <string name="sum_fdn_change_pin" msgid="3510994280557335727">"Aldatu markatze finkoko zenbakien PINa"</string>
+    <string name="sum_fdn_change_pin" msgid="3510994280557335727">"Aldatu markatze finkoko zenbakien PIN kodea"</string>
     <string name="sum_fdn_manage_list" msgid="3311397063233992907">"Kudeatu telefono-zenbakien zerrenda"</string>
     <string name="voice_privacy" msgid="7346935172372181951">"Ahots-pribatutasuna"</string>
     <string name="voice_privacy_summary" msgid="3556460926168473346">"Gaitu pribatutasun modu hobetua"</string>
@@ -475,7 +475,7 @@
     <string name="delete_fdn_contact" msgid="7027405651994507077">"Ezabatu markatze finkoko zenbakia"</string>
     <string name="deleting_fdn_contact" msgid="6872320570844460428">"Markatze finkoko zenbakia ezabatzen…"</string>
     <string name="fdn_contact_deleted" msgid="1680714996763848838">"Markatze finkoko zenbakia ezabatu da."</string>
-    <string name="pin2_invalid" msgid="2313954262684494442">"Ez da eguneratu markatze finkoko zenbakia, PIN okerra idatzi duzulako."</string>
+    <string name="pin2_invalid" msgid="2313954262684494442">"Ez da eguneratu markatze finkoko zenbakia, PIN kode okerra idatzi duzulako."</string>
     <string name="fdn_invalid_number" msgid="9067189814657840439">"Ez da eguneratu markatze finkoko zenbakia, zenbakiak <xliff:g id="FDN_NUMBER_LIMIT_LENGTH">%d</xliff:g> digitu baino gehiago dituelako."</string>
     <string name="pin2_or_fdn_invalid" msgid="7542639487955868181">"Ez da eguneratu markatze finkoko zenbakia. PIN2 kodea ez da zuzena edo telefono-zenbakia baztertu da."</string>
     <string name="fdn_failed" msgid="216592346853420250">"Markatze finkoko zenbakiaren eragiketak huts egin du."</string>
@@ -483,23 +483,23 @@
     <string name="simContacts_empty" msgid="1135632055473689521">"Ez duzu kontakturik SIM txartelean."</string>
     <string name="simContacts_title" msgid="2714029230160136647">"Aukeratu inportatu beharreko kontaktuak"</string>
     <string name="simContacts_airplaneMode" msgid="4654884030631503808">"SIM txarteleko kontaktuak inportatzeko, desaktibatu hegaldi modua."</string>
-    <string name="enable_pin" msgid="967674051730845376">"Gaitu/Desgaitu SIMaren PINa"</string>
-    <string name="change_pin" msgid="3657869530942905790">"Aldatu SIMaren PINa"</string>
-    <string name="enter_pin_text" msgid="3182311451978663356">"SIMaren PINa:"</string>
+    <string name="enable_pin" msgid="967674051730845376">"Gaitu/Desgaitu SIM txartelaren PIN kodea"</string>
+    <string name="change_pin" msgid="3657869530942905790">"Aldatu SIM txartelaren PIN kodea"</string>
+    <string name="enter_pin_text" msgid="3182311451978663356">"SIM txartelaren PIN kodea:"</string>
     <string name="oldPinLabel" msgid="8618515202411987721">"PIN zaharra"</string>
     <string name="newPinLabel" msgid="3585899083055354732">"PIN berria"</string>
-    <string name="confirmPinLabel" msgid="7783531218662473778">"Berretsi PIN berria"</string>
-    <string name="badPin" msgid="4549286285015892321">"Idatzi duzun PIN zaharra ez da zuzena. Saiatu berriro."</string>
+    <string name="confirmPinLabel" msgid="7783531218662473778">"Berretsi PIN kode berria"</string>
+    <string name="badPin" msgid="4549286285015892321">"Idatzi duzun PIN kode zaharra ez da zuzena. Saiatu berriro."</string>
     <string name="mismatchPin" msgid="1467254768290323845">"Idatzi dituzun PIN kodeak ez datoz bat. Saiatu berriro."</string>
-    <string name="invalidPin" msgid="7363723429414001979">"Idatzi 4 eta 8 zenbaki arteko PIN bat."</string>
-    <string name="disable_sim_pin" msgid="3112303905548613752">"Garbitu SIMaren PINa"</string>
-    <string name="enable_sim_pin" msgid="445461050748318980">"Ezarri SIMaren PINa"</string>
-    <string name="enable_in_progress" msgid="4135305985717272592">"PINa ezartzen…"</string>
-    <string name="enable_pin_ok" msgid="2877428038280804256">"Ezarri da PINa"</string>
-    <string name="disable_pin_ok" msgid="888505244389647754">"Garbitu da PINa"</string>
-    <string name="pin_failed" msgid="4527347792881939652">"PINa ez da zuzena"</string>
-    <string name="pin_changed" msgid="7291153750090452808">"Eguneratu da PINa"</string>
-    <string name="puk_requested" msgid="2061337960609806851">"Pasahitza ez da zuzena. PINa blokeatu egin da. PUKa behar da."</string>
+    <string name="invalidPin" msgid="7363723429414001979">"Idatzi 4 eta 8 zenbaki arteko PIN kodea."</string>
+    <string name="disable_sim_pin" msgid="3112303905548613752">"Garbitu SIM txartelaren PIN kodea"</string>
+    <string name="enable_sim_pin" msgid="445461050748318980">"Ezarri SIM txartelaren PIN kodea"</string>
+    <string name="enable_in_progress" msgid="4135305985717272592">"PIN kodea ezartzen…"</string>
+    <string name="enable_pin_ok" msgid="2877428038280804256">"PIN kodea ezarri da"</string>
+    <string name="disable_pin_ok" msgid="888505244389647754">"PIN kodea garbitu da"</string>
+    <string name="pin_failed" msgid="4527347792881939652">"PIN kodea ez da zuzena"</string>
+    <string name="pin_changed" msgid="7291153750090452808">"PIN kodea eguneratu da"</string>
+    <string name="puk_requested" msgid="2061337960609806851">"Pasahitza ez da zuzena. PIN kodea blokeatu egin da. PUK kodea behar da."</string>
     <string name="enter_pin2_text" msgid="7266379426804295979">"PIN2 kodea"</string>
     <string name="oldPin2Label" msgid="4648543187859997203">"PIN2 kode zaharra"</string>
     <string name="newPin2Label" msgid="1840905981784453939">"PIN2 berria"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Deitzeko, aktibatu sare mugikorra, desaktibatu hegaldi modua edo desaktibatu bateria-aurrezlea."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Deia egiteko, desaktibatu hegaldi modua."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Deia egiteko, desaktibatu hegaldi modua edo konektatu haririk gabeko sare batera."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefonoa beroegi dago"</b>\n\n"Ezin da egin deia. Saiatu berriro telefonoa hozten denean.\n\nHala ere, larrialdi-deiak egin ditzakezu."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Larrialdikoak ez diren deiak egiteko, irten larrialdi-zerbitzuen deiak jasotzeko modutik."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Ez dago sarean erregistratuta."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Sare mugikorra ez dago erabilgarri."</string>
@@ -669,8 +668,8 @@
     <string name="description_dialpad_button" msgid="7395114120463883623">"erakutsi markagailua"</string>
     <string name="pane_title_emergency_dialpad" msgid="3627372514638694401">"Larrialdietarako markagailua"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="6610414098912832120">"Ikusizko erantzungailua"</string>
-    <string name="voicemail_set_pin_dialog_title" msgid="7005128605986960003">"Ezarri PINa"</string>
-    <string name="voicemail_change_pin_dialog_title" msgid="4633077715231764435">"Aldatu PINa"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="7005128605986960003">"Ezarri PIN kodea"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="4633077715231764435">"Aldatu PIN kodea"</string>
     <string name="preference_category_ringtone" msgid="8787281191375434976">"Tonua eta dardara"</string>
     <string name="pstn_connection_service_label" msgid="9200102709997537069">"SIM txartel integratuak"</string>
     <string name="enable_video_calling_title" msgid="7246600931634161830">"Aktibatu bideo-deiak"</string>
@@ -693,18 +692,18 @@
     <string name="callFailed_low_battery" msgid="4056828320214416182">"Bideo-deia amaitu egin da bateria gutxi gelditzen delako."</string>
     <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"Ez daude erabilgarri wifi bidezko larrialdi-deiak kokapen honetan."</string>
     <string name="callFailed_wfc_service_not_available_in_this_location" msgid="3624536608369524988">"Ez daude erabilgarri wifi bidezko deiak kokapen honetan."</string>
-    <string name="change_pin_title" msgid="3564254326626797321">"Aldatu erantzungailuaren PINa"</string>
+    <string name="change_pin_title" msgid="3564254326626797321">"Aldatu erantzungailuaren PIN kodea"</string>
     <string name="change_pin_continue_label" msgid="5177011752453506371">"Egin aurrera"</string>
     <string name="change_pin_cancel_label" msgid="2301711566758827936">"Utzi"</string>
     <string name="change_pin_ok_label" msgid="6861082678817785330">"Ados"</string>
-    <string name="change_pin_enter_old_pin_header" msgid="853151335217594829">"Berretsi PIN zaharra"</string>
-    <string name="change_pin_enter_old_pin_hint" msgid="8801292976275169367">"Aurrera egiteko, idatzi erantzungailuaren PINa."</string>
-    <string name="change_pin_enter_new_pin_header" msgid="4739465616733486118">"Ezarri PIN berri bat"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="853151335217594829">"Berretsi PIN kode zaharra"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8801292976275169367">"Idatzi erantzungailuaren PIN kodea jarraitzeko."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="4739465616733486118">"Ezarri PIN kode berria"</string>
     <string name="change_pin_enter_new_pin_hint" msgid="2326038476516364210">"<xliff:g id="MIN">%1$d</xliff:g> eta <xliff:g id="MAX">%2$d</xliff:g> digituren artean izan behar ditu PIN kodeak."</string>
-    <string name="change_pin_confirm_pin_header" msgid="2606303906320705726">"Berretsi PINa"</string>
+    <string name="change_pin_confirm_pin_header" msgid="2606303906320705726">"Berretsi PIN kodea"</string>
     <string name="change_pin_confirm_pins_dont_match" msgid="305164501222587215">"PINak ez datoz bat"</string>
-    <string name="change_pin_succeeded" msgid="2504705600693014403">"Eguneratu da erantzungailuaren PINa"</string>
-    <string name="change_pin_system_error" msgid="7772788809875146873">"Ezin da ezarri PINa"</string>
+    <string name="change_pin_succeeded" msgid="2504705600693014403">"Eguneratu da erantzungailuaren PIN kodea"</string>
+    <string name="change_pin_system_error" msgid="7772788809875146873">"Ezin da ezarri PIN kodea"</string>
     <string name="mobile_data_status_roaming_turned_off_subtext" msgid="6840673347416227054">"Desaktibatuta daude ibiltaritzako datuak"</string>
     <string name="mobile_data_status_roaming_turned_on_subtext" msgid="5615757897768777865">"Aktibatuta daude ibiltaritzako datuak"</string>
     <string name="mobile_data_status_roaming_without_plan_subtext" msgid="6536671968072284677">"Ibiltaritza moduan zaude une honetan. Datu-plan bat behar duzu."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR erabilgarri:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR estatua:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR maiztasuna:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Ezarri irrati-bandaren modua"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Banden zerrenda kargatzen…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ezarri"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index eb9086e..7cb550c 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"برای برقراری تماس، شبکه تلفن همراه را روشن کنید، حالت هواپیما یا «بهینه‌سازی باتری» را غیرفعال کنید."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"برای برقراری تماس، حالت پرواز را خاموش کنید."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"برای برقرای تماس، حالت پرواز را خاموش کنید یا به شبکه بی‌سیم وصل شوید."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"تلفن خیلی داغ است"</b>\n\n"نمی‌توان این تماس را به‌پایان رساند. وقتی تلفن خنک شد، دوباره امتحان کنید.\n\nهمچنان می‌توانید تماس‌های اضطراری برقرار کنید."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"برای برقراری تماس غیراضطراری از حالت پاسخ تماس اضطراری خارج شوید."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"در شبکه ثبت نشده است."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"شبکهٔ تلفن همراه موجود نیست."</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"‏NR دردسترس است:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"‏وضعیت NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"‏فرکانس NR:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"پیکربندی برش شبکه:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"تنظیم حالت باند رادیو"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"درحال بار کردن فهرست باند…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"تنظیم"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 34d40a8..6506746 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Ota mobiiliverkko käyttöön tai poista lentokonetila ja virransäästötila käytöstä, jos haluat soittaa puhelun."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Poista lentokonetila käytöstä, jos haluat soittaa puhelun."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Poista lentokonetila käytöstä tai yhdistä langattomaan verkkoon, jos haluat soittaa puhelun."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Liian kuuma puhelin"</b>\n\n"Puhelua ei voida soittaa. Yritä uudelleen, kun puhelin on jäähtynyt.\n\nVoit silti soittaa hätäpuheluita."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Poistu hätäpuhelujen takaisinsoittotilasta soittaaksesi muun kuin hätäpuhelun."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Ei rekisteröity verkkoon."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobiiliverkko ei käytettävissä."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR saatavilla:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR:n tila:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR:n taajuus:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Radion taajuustilan valinta"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Ladataan taajuusluetteloa…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Aseta"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index d918672..76d9bb6 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Activez le réseau cellulaire ou désactivez le mode Avion ou le mode Économiseur de pile pour faire un appel."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Désactivez le mode Avion pour faire un appel."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Désactivez le mode Avion ou connectez-vous à un réseau Wi-Fi pour faire un appel."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Le téléphone est trop chaud"</b>\n\n"Impossible de passer cet appel. Réessayez plus tard quand le téléphone aura refroidi.\n\nVous pouvez toujours effectuer des appels d\'urgence."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Quittez le mode de rappel d\'urgence pour effectuer un appel non urgent."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Non enregistré sur le réseau"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Réseau pour mobile non disponible"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponible :"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"État NR :"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Fréquence NR :"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Définir le mode de bande radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Chargement de la liste de bandes en cours…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Définir"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 957e361..e92aac6 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Pour passer un appel, activez le réseau mobile, et désactivez les modes Avion et Économiseur de batterie."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Désactivez le mode Avion pour passer un appel."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Désactivez le mode Avion ou connectez-vous à un réseau sans fil pour passer un appel."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Téléphone trop chaud"</b>\n\n"Impossible de passer cet appel. Réessayez lorsque votre téléphone aura refroidi.\n\nVous pouvez toujours passer des appels d\'urgence."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Veuillez quitter le mode de rappel d\'urgence pour passer un appel standard."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Non enregistré sur le réseau."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Réseau mobile non disponible"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Accès NR disponible :"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"État NR :"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Fréquence NR :"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Définir le mode de bande radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Chargement de la liste de bandes…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Définir"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 6fdca2d..145ce03 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Para facer unha chamada, activa a rede de telefonía móbil, desactiva o modo avión ou desactiva o modo Aforro de batería."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Desactiva o modo avión para facer unha chamada."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Desactiva o modo avión ou conéctate a unha rede sen fíos para facer unha chamada."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"A temperatura do teléfono é moi alta"</b>\n\n"Non se pode completar esta chamada. Téntao de novo cando arrefríe o teléfono.\n\nAínda así, podes facer chamadas de emerxencia."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Sae do modo de devolución de chamada de emerxencia para facer unha chamada que non sexa de emerxencia."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Sen rexistro na rede"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"A rede móbil non está dispoñible."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR dispoñible:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Estado de NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frecuencia de NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Definir modo de banda de radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Cargando lista de bandas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Definir"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 38000a3..9ae6f2f 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -420,7 +420,7 @@
     <string name="cdma_system_select_dialogtitle" msgid="5524639510676501802">"સિસ્ટમ પસંદગી"</string>
   <string-array name="cdma_system_select_choices">
     <item msgid="462340042928284921">"ફક્ત હોમ"</item>
-    <item msgid="6058010046783562674">"ઑટોમૅટિક"</item>
+    <item msgid="6058010046783562674">"સ્વચલિત"</item>
   </string-array>
     <string name="cdma_subscription_title" msgid="3449527179325589434">"CDMA સબ્સ્ક્રિપ્શન"</string>
     <string name="cdma_subscription_summary" msgid="5681152534466169001">"RUIM/SIM અને NV વચ્ચે બદલો"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"કૉલ કરવા માટે મોબાઇલ નેટવર્ક ચાલુ કરો, એરપ્લેન મોડ બંધ કરો અથવા બૅટરી બચતકર્તા મોડ બંધ કરો."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"કૉલ કરવા માટે એરપ્લેન મોડ બંધ કરો."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"કૉલ કરવા માટે એરપ્લેન મોડ બંધ કરો અથવા વાયરલેસ નેટવર્કથી કનેક્ટ કરો."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ફોન ખૂબ ગરમ છે"</b>\n\n"આ કૉલ પૂર્ણ કરી શકતા નથી. તમારો ફોન ઠંડો પડે ત્યાર પછી ફરીથી પ્રયાસ કરો.\n\nતમે હજી પણ ઇમર્જન્સી કૉલ કરી શકો છો."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"બિન-કટોકટીનો કૉલ કરવા માટે કટોકટી કૉલબૅક મોડમાંથી બહાર નીકળો."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"નેટવર્ક પર નોંધણી કરાયેલ નથી."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"મોબાઇલ નેટવર્ક ઉપલબ્ધ નથી."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ઉપલબ્ધ:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR સ્ટેટસ:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR આવર્તન:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"રેડિયો બૅન્ડ મોડ સેટ કરો"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"બૅન્ડની સૂચિ લોડ કરી રહ્યું છે…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"સેટ કરો"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index b65016e..0346a6d 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -186,9 +186,9 @@
     <string name="manual_mode_disallowed_summary" msgid="3970048592179890197">"%1$s से कनेक्ट किए जाने पर उपलब्ध नहीं है"</string>
     <string name="network_select_title" msgid="4117305053881611988">"नेटवर्क"</string>
     <string name="register_automatically" msgid="3907580547590554834">"स्वचालित पंजीकरण..."</string>
-    <string name="preferred_network_mode_title" msgid="5253395265169539830">"पसंदीदा नेटवर्क टाइप"</string>
+    <string name="preferred_network_mode_title" msgid="5253395265169539830">"पसंदीदा नेटवर्क प्रकार"</string>
     <string name="preferred_network_mode_summary" msgid="3787989000044330064">"नेटवर्क संचालन मोड बदलें"</string>
-    <string name="preferred_network_mode_dialogtitle" msgid="2781447433514459696">"पसंदीदा नेटवर्क टाइप"</string>
+    <string name="preferred_network_mode_dialogtitle" msgid="2781447433514459696">"पसंदीदा नेटवर्क प्रकार"</string>
     <string name="forbidden_network" msgid="5081729819561333023">"(मना है)"</string>
     <string name="choose_network_title" msgid="5335832663422653082">"नेटवर्क चुनें"</string>
     <string name="network_disconnected" msgid="8844141106841160825">"डिसकनेक्ट है"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"कॉल करने के लिए मोबाइल नेटवर्क चालू करें, हवाई जहाज़ मोड या बैटरी सेवर मोड बंद करें."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"कॉल करने के लिए हवाई जहाज़ मोड बंद करें."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"कॉल करने के लिए हवाई जहाज़ मोड बंद करें या किसी वायरलेस नेटवर्क से कनेक्‍ट करें."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"आपका फ़ोन बहुत गर्म हो गया है"</b>\n\n"यह कॉल नहीं लगाया जा सकता. फ़ोन का तापमान कम होने के बाद, फिर से कोशिश करें.\n\nहालांकि, आप अब भी आपातकालीन कॉल कर सकते हैं."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"गैर-आपातकालीन कॉल करने के लिए आपातकालीन कॉलबैक मोड से बाहर निकलें."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"नेटवर्क पर पंजीकृत नहीं."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"मोबाइल नेटवर्क उपलब्ध नहीं."</string>
@@ -678,7 +677,7 @@
     <string name="enable_video_calling_dialog_settings" msgid="8697890611305307110">"नेटवर्क सेटिंग"</string>
     <string name="enable_video_calling_dialog_close" msgid="4298929725917045270">"बंद करें"</string>
     <string name="sim_label_emergency_calls" msgid="9078241989421522310">"आपातकालीन कॉल"</string>
-    <string name="sim_description_emergency_calls" msgid="5146872803938897296">"सिर्फ़ आपातकालीन कॉल"</string>
+    <string name="sim_description_emergency_calls" msgid="5146872803938897296">"केवल आपातकालीन कॉल"</string>
     <string name="sim_description_default" msgid="7474671114363724971">"सिम कार्ड, स्‍लॉट: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="7883415189273700298">"सुलभता"</string>
     <string name="status_hint_label_incoming_wifi_call" msgid="2606052595898044071">"इससे वाई-फ़ाई कॉल"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR उपलब्ध है:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR की स्थिति:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR की फ़्रीक्वेंसी:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"\'रेडियो बैंड\' मोड सेट करें"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"बैंड सूची लोड की जा रही है…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"सेट करें"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index b9a8d0b..10d0bff 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Uključite mobilnu mrežu, isključite način rada u zrakoplovu ili štednju baterije da biste uputili poziv."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Isključite način rada u zrakoplovu da biste uputili poziv."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Isključite način rada u zrakoplovu ili se povežite s bežičnom mrežom da biste uputili poziv."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefon je prevruć"</b>\n\n"Poziv se ne može dovršiti. Pokušajte ponovno kad se telefon ohladi.\n\nI dalje možete upućivati hitne pozive."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Isključite način hitnih poziva da biste uputili poziv koji nije hitan."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Nije registrirano na mreži."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilna mreža nije dostupna."</string>
@@ -918,6 +917,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Dostupno za NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Stanje NR-a:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekvencija NR-a:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Postavi način radijske frekvencije"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Učitavanje popisa frekvencija…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Postavi"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 80d1865..92d1d08 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"A hívás indításához kapcsolja be a hálózatot, és kapcsolja ki a repülős vagy akkumulátorkímélő üzemmódot."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Repülős üzemmód kikapcsolása hívás indításához."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Hívás indításához kapcsolja ki a repülős üzemmódot, illetve csatlakozzon egy vezeték nélküli hálózathoz."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Túlmelegedett a telefon"</b>\n\n"Ezt a hívást nem lehet végrehajtani. Próbálkozzon újra, ha már lehűlt a telefon.\n\nSegélyhívást így is indíthat."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Lépjen ki a Segélykérő visszahívása módból nem vészjellegű hívás kezdeményezéséhez."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Nincs regisztrálva a hálózaton."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"A mobilhálózat nem érhető el."</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR rendelkezésre áll:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-állapot:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-frekvencia:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Network slicing config:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Rádióhullámsáv mód beállítása"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Sávlista betöltése…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Beállítás"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 7ccb20d..6d5e980 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Զանգ կատարելու համար միացեք բջջային ցանցին, անջատեք մարտկոցի տնտեսումը կամ ավիառեժիմը:"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Զանգ կատարելու համար անջատեք Ավիառեժիմը:"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Զանգ կատարելու համար անջատեք Ավիառեժիմը կամ միացեք անլար ցանցին:"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Հեռախոսը գերտաքացել է"</b>\n\n"Չհաջողվեց կատարել զանգը։ Նորից փորձեք, երբ հեռախոսը հովանա։\n\nԴուք նախկինի պես կկարողանաք շտապ կանչեր կատարել։"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Սովորական զանգ կատարելու համար դուրս եկեք շտապ կանչի ռեժիմից։"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Ցանցում գրանցված չէ:"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Բջջային ցանցն անհասանելի է:"</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR-ը հասանելի է՝"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-ի կարգավիճակը՝"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-ի հաճախականությունը՝"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Ցանցի հատվածավորման կազմաձև՝"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Կարգավորել հաճախությունների շերտի ռեժիմը"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Շերտերի ցուցակը բեռնվում է…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Կարգավորել"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 17e8fd7..c1a13ce 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Aktifkan jaringan seluler, lalu nonaktifkan mode pesawat atau penghemat baterai untuk melakukan panggilan."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Nonaktifkan mode pesawat untuk melakukan panggilan"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Nonaktifkan mode pesawat atau sambungkan ke jaringan nirkabel untuk melakukan panggilan"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Ponsel terlalu panas"</b>\n\n"Tidak dapat menyelesaikan panggilan ini. Coba lagi saat ponsel mendingin.\n\nAnda masih dapat melakukan panggilan darurat."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Keluar dari mode telepon balik darurat untuk melakukan panggilan non-darurat."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Tidak terdaftar pada jaringan."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Jaringan seluler tidak tersedia."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR Tersedia:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Status NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekuensi NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Setel Mode Band Radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Memuat Daftar Band…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Setel"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index b44afa2..68dd17e 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Kveiktu á farsímakerfie eða slökktu á flugstillingu eða rafhlöðusparnaði til að hringja."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Slökktu á flugstillingu til að hringja."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Slökktu á flugstillingu eða tengstu þráðlausu neti til að hringja."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Síminn er of heitur"</b>\n\n"Ekki er hægt að ljúka þessu símtali. Reyndu aftur þegar síminn hefur kólnað.\n\nÞú getur ennþá hringt neyðarsímtöl."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Hætta í stillingu fyrir svarhringingu neyðarsímtala til að hringja símtal sem ekki er neyðarsímtal."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Ekki skráð á símkerfi."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Farsímakerfi ekki tiltækt."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR tiltækt:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR staða:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR tíðni:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Velja útvarpstíðni"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Hleður lista yfir tíðnisvið…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Stilla"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index d38c50f..a4b3fe1 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Attiva la rete mobile e disattiva la modalità aereo o il risparmio energetico per effettuare una chiamata."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Disattiva la modalità aereo per effettuare una chiamata."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Disattiva la modalità aereo o connettiti a una rete wireless per effettuare una chiamata."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefono surriscaldato"</b>\n\n"Impossibile completare la chiamata. Riprova quando il telefono si sarà raffreddato.\n\nPuoi comunque effettuare chiamate di emergenza."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Per effettuare chiamate non di emergenza, esci dalla modalità di richiamata di emergenza."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Non registrato sulla rete."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Rete cellulare non disponibile."</string>
@@ -668,7 +667,7 @@
     <string name="description_dial_button" msgid="8614631902795087259">"componi"</string>
     <string name="description_dialpad_button" msgid="7395114120463883623">"mostra tastierino"</string>
     <string name="pane_title_emergency_dialpad" msgid="3627372514638694401">"Tastierino di emergenza"</string>
-    <string name="voicemail_visual_voicemail_switch_title" msgid="6610414098912832120">"Lettura della segreteria"</string>
+    <string name="voicemail_visual_voicemail_switch_title" msgid="6610414098912832120">"Leggi la segreteria"</string>
     <string name="voicemail_set_pin_dialog_title" msgid="7005128605986960003">"Imposta PIN"</string>
     <string name="voicemail_change_pin_dialog_title" msgid="4633077715231764435">"Cambia PIN"</string>
     <string name="preference_category_ringtone" msgid="8787281191375434976">"Suoneria e vibrazione"</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponibile:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Stato NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frequenza NR:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Configurazione network slicing:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Imposta modalità banda radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Caricamento elenco bande…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Imposta"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 5fbf20d..b5b2f75 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -31,29 +31,29 @@
     <string name="ussdRunning" msgid="1163586813106772717">"‏קוד USSD פועל…"</string>
     <string name="mmiCancelled" msgid="5339191899200678272">"‏קוד MMI מבוטל"</string>
     <string name="cancel" msgid="8984206397635155197">"ביטול"</string>
-    <string name="enter_input" msgid="6193628663039958990">"‏הודעת USSD חייבת להיות באורך של <xliff:g id="MIN_LEN">%1$d</xliff:g> עד <xliff:g id="MAX_LEN">%2$d</xliff:g> תווים. יש לנסות שוב."</string>
+    <string name="enter_input" msgid="6193628663039958990">"‏הודעת USSD חייבת להיות באורך של <xliff:g id="MIN_LEN">%1$d</xliff:g> עד <xliff:g id="MAX_LEN">%2$d</xliff:g> תווים. נסה שוב."</string>
     <string name="manageConferenceLabel" msgid="8415044818156353233">"ניהול שיחת ועידה"</string>
     <string name="ok" msgid="7818974223666140165">"אישור"</string>
     <string name="audio_mode_speaker" msgid="243689733219312360">"רמקול"</string>
     <string name="audio_mode_earpiece" msgid="2823700267171134282">"אוזניה"</string>
-    <string name="audio_mode_wired_headset" msgid="5028010823105817443">"אוזניות חוטיות"</string>
+    <string name="audio_mode_wired_headset" msgid="5028010823105817443">"אוזניות קוויות"</string>
     <string name="audio_mode_bluetooth" msgid="25732183428018809">"Bluetooth"</string>
     <string name="wait_prompt_str" msgid="5136209532150094910">"לשלוח את הצלילים הבאים?\n"</string>
-    <string name="pause_prompt_str" msgid="2308897950360272213">"שליחת צלילים מתבצעת\n"</string>
+    <string name="pause_prompt_str" msgid="2308897950360272213">"שולח צלילים\n"</string>
     <string name="send_button" msgid="5070379600779031932">"שליחה"</string>
     <string name="pause_prompt_yes" msgid="8184132073048369575">"כן"</string>
     <string name="pause_prompt_no" msgid="2145264674774138579">"לא"</string>
     <string name="wild_prompt_str" msgid="5858910969703305375">"החלפת התו הכללי ב"</string>
     <string name="no_vm_number" msgid="6623853880546176930">"חסר מספר של דואר קולי"</string>
     <string name="no_vm_number_msg" msgid="5165161462411372504">"‏בכרטיס ה-SIM לא מאוחסן מספר של דואר קולי."</string>
-    <string name="add_vm_number_str" msgid="7368168964435881637">"הוספת מספר"</string>
+    <string name="add_vm_number_str" msgid="7368168964435881637">"הוסף מספר"</string>
     <string name="voice_number_setting_primary_user_only" msgid="3394706575741912843">"רק המשתמש הראשי יכול לשנות את ההגדרות של הדואר הקולי."</string>
-    <string name="puk_unlocked" msgid="4627340655215746511">"‏בוטלה החסימה של כרטיס SIM. ביטול חסימת הטלפון מתבצעת..."</string>
-    <string name="label_ndp" msgid="7617392683877410341">"‏קוד אימות לביטול נעילה של רשת SIM"</string>
+    <string name="puk_unlocked" msgid="4627340655215746511">"‏בוטלה החסימה של כרטיס SIM. מבטל את חסימת הטלפון..."</string>
+    <string name="label_ndp" msgid="7617392683877410341">"‏PIN לביטול נעילה של רשת SIM"</string>
     <string name="label_phoneid" msgid="8775611434123577808">"‏כרטיס ה-SIM נעול על ידי הספק הסלולרי"</string>
-    <string name="sim_ndp_unlock_text" msgid="7737338355451978338">"ביטול נעילה"</string>
-    <string name="sim_ndp_dismiss_text" msgid="89667342248929777">"סגירה"</string>
-    <string name="requesting_unlock" msgid="930512210309437741">"בקשה לביטול נעילת הרשת מתבצעת..."</string>
+    <string name="sim_ndp_unlock_text" msgid="7737338355451978338">"בטל נעילה"</string>
+    <string name="sim_ndp_dismiss_text" msgid="89667342248929777">"סגור"</string>
+    <string name="requesting_unlock" msgid="930512210309437741">"מבקש ביטול נעילת רשת..."</string>
     <string name="unlock_failed" msgid="7103543844840661366">"הבקשה לביטול נעילת הרשת נכשלה."</string>
     <string name="unlock_success" msgid="32681089371067565">"ביטול נעילת הרשת התבצע בהצלחה."</string>
     <string name="mobile_network_settings_not_available" msgid="8678168497517090039">"הגדרות של רשת סלולרית אינן זמינות עבור המשתמש הזה"</string>
@@ -64,17 +64,17 @@
     <string name="apn_settings" msgid="1978652203074756623">"שמות של נקודות גישה"</string>
     <string name="settings_label" msgid="9101778088412567956">"הגדרות רשת"</string>
     <string name="phone_accounts" msgid="1216879437523774604">"חשבונות להתקשרות"</string>
-    <string name="phone_accounts_make_calls_with" msgid="16747814788918145">"ביצוע שיחות באמצעות"</string>
-    <string name="phone_accounts_make_sip_calls_with" msgid="4691221006731847255">"‏ביצוע שיחות SIP באמצעות"</string>
-    <string name="phone_accounts_ask_every_time" msgid="6192347582666047168">"יש לשאול לפני ביצוע"</string>
+    <string name="phone_accounts_make_calls_with" msgid="16747814788918145">"בצע שיחות באמצעות"</string>
+    <string name="phone_accounts_make_sip_calls_with" msgid="4691221006731847255">"‏בצע שיחות SIP באמצעות"</string>
+    <string name="phone_accounts_ask_every_time" msgid="6192347582666047168">"שאל לפני ביצוע"</string>
     <string name="phone_accounts_default_account_label" msgid="5107598881335931101">"אין רשתות זמינות"</string>
     <string name="phone_accounts_settings_header" msgid="6296501692964706536">"הגדרות"</string>
-    <string name="phone_accounts_choose_accounts" msgid="4748805293314824974">"בחירת חשבונות"</string>
+    <string name="phone_accounts_choose_accounts" msgid="4748805293314824974">"בחר חשבונות"</string>
     <string name="phone_accounts_selection_header" msgid="2945830843104108440">"חשבונות טלפון"</string>
-    <string name="phone_accounts_add_sip_account" msgid="1437634802033309305">"‏הוספת חשבון SIP"</string>
-    <string name="phone_accounts_configure_account_settings" msgid="6622119715253196586">"קביעת הגדרות החשבון"</string>
+    <string name="phone_accounts_add_sip_account" msgid="1437634802033309305">"‏הוסף חשבון SIP"</string>
+    <string name="phone_accounts_configure_account_settings" msgid="6622119715253196586">"קבע את הגדרות החשבון"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="1609600743500618823">"כל החשבונות לביצוע שיחות"</string>
-    <string name="phone_accounts_all_calling_accounts_summary" msgid="2214134955430107240">"בחירת החשבונות שיכולים להתקשר"</string>
+    <string name="phone_accounts_all_calling_accounts_summary" msgid="2214134955430107240">"בחר אילו חשבונות יכולים להתקשר"</string>
     <string name="wifi_calling" msgid="3650509202851355742">"‏שיחות ב-Wi-Fi"</string>
     <string name="connection_service_default_label" msgid="7332739049855715584">"שירות חיבור מובנה"</string>
     <string name="voicemail" msgid="7697769412804195032">"דואר קולי"</string>
@@ -93,7 +93,7 @@
     <string name="sum_cdma_call_settings" msgid="3185825305136993636">"‏הגדרות שיחה נוספות של CDMA בלבד"</string>
     <string name="labelNwService" msgid="6015891883487125120">"הגדרות שירות רשת"</string>
     <string name="labelCallerId" msgid="2090540744550903172">"שיחה מזוהה"</string>
-    <string name="sum_loading_settings" msgid="434063780286688775">"טעינת ההגדרות מתבצעת..."</string>
+    <string name="sum_loading_settings" msgid="434063780286688775">"טוען הגדרות..."</string>
     <string name="sum_hide_caller_id" msgid="131100328602371933">"המספר מוסתר בשיחות יוצאות"</string>
     <string name="sum_show_caller_id" msgid="3571854755324664591">"מספר המוצג בשיחות יוצאות"</string>
     <string name="sum_default_caller_id" msgid="1767070797135682959">"שימוש בהגדרות ברירת המחדל של המפעיל כדי להציג את המספר שלי בשיחות יוצאות"</string>
@@ -103,25 +103,25 @@
     <string name="call_forwarding_settings" msgid="8937130467468257671">"הגדרות של העברת שיחות"</string>
     <string name="call_forwarding_settings_with_label" msgid="2345432813399564272">"הגדרות של העברת שיחות (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="3578719437928476078">"העברת שיחות"</string>
-    <string name="labelCFU" msgid="8870170873036279706">"העברה תמיד"</string>
-    <string name="messageCFU" msgid="1361806450979589744">"יש להשתמש תמיד במספר זה"</string>
-    <string name="sum_cfu_enabled_indicator" msgid="9030139213402432776">"כל השיחות מועברות"</string>
-    <string name="sum_cfu_enabled" msgid="5806923046528144526">"כל השיחות מועברות אל <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="labelCFU" msgid="8870170873036279706">"העבר תמיד"</string>
+    <string name="messageCFU" msgid="1361806450979589744">"השתמש תמיד במספר זה"</string>
+    <string name="sum_cfu_enabled_indicator" msgid="9030139213402432776">"מעביר את כל השיחות"</string>
+    <string name="sum_cfu_enabled" msgid="5806923046528144526">"מעביר את כל השיחות אל <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfu_enabled_no_number" msgid="7287752761743377930">"המספר לא זמין"</string>
     <string name="sum_cfu_disabled" msgid="5010617134210809853">"כבוי"</string>
     <string name="labelCFB" msgid="615265213360512768">"כאשר לא פנוי"</string>
     <string name="messageCFB" msgid="1958017270393563388">"מספר כאשר לא פנוי"</string>
-    <string name="sum_cfb_enabled" msgid="332037613072049492">"העברה אל <xliff:g id="PHONENUMBER">{0}</xliff:g> מתבצעת"</string>
+    <string name="sum_cfb_enabled" msgid="332037613072049492">"מעביר אל <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfb_disabled" msgid="3589913334164866035">"כבוי"</string>
     <string name="disable_cfb_forbidden" msgid="4831494744351633961">"הספק שלך אינו תומך בהשבתה של העברת שיחות כאשר הטלפון תפוס."</string>
     <string name="labelCFNRy" msgid="3403533792248457946">"כאשר אין מענה"</string>
     <string name="messageCFNRy" msgid="7644434155765359009">"מספר לחיוג כשאין מענה"</string>
-    <string name="sum_cfnry_enabled" msgid="3000500837493854799">"העברה אל <xliff:g id="PHONENUMBER">{0}</xliff:g> מתבצעת"</string>
+    <string name="sum_cfnry_enabled" msgid="3000500837493854799">"מעביר אל <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfnry_disabled" msgid="1990563512406017880">"כבוי"</string>
     <string name="disable_cfnry_forbidden" msgid="3174731413216550689">"הספק אינו תומך בהשבתה של העברת שיחות כאשר אין מענה בטלפון."</string>
     <string name="labelCFNRc" msgid="4163399350778066013">"כאשר לא נגיש"</string>
     <string name="messageCFNRc" msgid="6980340731313007250">"המספר לחיוג כשלא ניתן להשיג"</string>
-    <string name="sum_cfnrc_enabled" msgid="1799069234006073477">"העברה אל <xliff:g id="PHONENUMBER">{0}</xliff:g> מתבצעת"</string>
+    <string name="sum_cfnrc_enabled" msgid="1799069234006073477">"מעביר אל <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfnrc_disabled" msgid="739289696796917683">"כבוי"</string>
     <string name="disable_cfnrc_forbidden" msgid="775348748084726890">"הספק שלך לא תומך בהשבתה של העברת שיחות כאשר הטלפון כבוי."</string>
     <string name="registration_cf_forbidden" msgid="4386482610771190420">"הספק הסלולרי שלך לא תומך בהעברת שיחות."</string>
@@ -135,9 +135,9 @@
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"רק מנהל המערכת יכול לשנות הגדרות שיחה."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"הגדרות (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"שגיאה בהגדרות שיחה"</string>
-    <string name="reading_settings" msgid="1605904432450871183">"קריאת ההגדרות מתבצעת…"</string>
-    <string name="updating_settings" msgid="3650396734816028808">"עדכון ההגדרות מתבצע..."</string>
-    <string name="reverting_settings" msgid="7378668837291012205">"אחזור ההגדרות הקודמות מתבצע…"</string>
+    <string name="reading_settings" msgid="1605904432450871183">"קורא הגדרות…"</string>
+    <string name="updating_settings" msgid="3650396734816028808">"מעדכן הגדרות..."</string>
+    <string name="reverting_settings" msgid="7378668837291012205">"מאחזר הגדרות הקודמות…"</string>
     <string name="response_error" msgid="3904481964024543330">"תגובה לא צפויה מהרשת."</string>
     <string name="exception_error" msgid="330994460090467">"‏שגיאת רשת או שגיאה של כרטיס SIM."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="5147693491690618704">"‏בקשת SS שונתה לשיחה רגילה"</string>
@@ -145,41 +145,41 @@
     <string name="stk_cc_ss_to_ss_error" msgid="8297155544652134278">"‏היה שינוי לבקשת SS חדשה"</string>
     <string name="stk_cc_ss_to_dial_video_error" msgid="4255261231466032505">"‏בקשת SS שונתה לשיחת וידאו"</string>
     <string name="fdn_check_failure" msgid="1833769746374185247">"הגדרת מספרי החיוג הקבועים של אפליקציית הטלפון שלך מופעלת. כתוצאה מכך, חלק מהתכונות הקשורות לשיחות לא פועלות."</string>
-    <string name="radio_off_error" msgid="8321564164914232181">"יש להפעיל את הרדיו לפני ההצגה של הגדרות אלה."</string>
+    <string name="radio_off_error" msgid="8321564164914232181">"הפעל את הרדיו לפני ההצגה של הגדרות אלה."</string>
     <string name="close_dialog" msgid="1074977476136119408">"אישור"</string>
     <string name="enable" msgid="2636552299455477603">"הפעלה"</string>
-    <string name="disable" msgid="1122698860799462116">"כיבוי"</string>
-    <string name="change_num" msgid="6982164494063109334">"עדכון"</string>
+    <string name="disable" msgid="1122698860799462116">"כבה"</string>
+    <string name="change_num" msgid="6982164494063109334">"עדכן"</string>
   <string-array name="clir_display_values">
     <item msgid="8477364191403806960">"רשת ברירת מחדל"</item>
-    <item msgid="6813323051965618926">"הסתרת מספר"</item>
-    <item msgid="9150034130629852635">"הצגת מספר"</item>
+    <item msgid="6813323051965618926">"הסתר מספר"</item>
+    <item msgid="9150034130629852635">"הצג מספר"</item>
   </string-array>
     <string name="vm_changed" msgid="4739599044379692505">"המספר של הדואר הקולי השתנה."</string>
-    <string name="vm_change_failed" msgid="7877733929455763566">"לא ניתן לשנות את מספר הגישה לדואר הקולי.\nאם הבעיה נמשכת, יש לפנות לספק."</string>
-    <string name="fw_change_failed" msgid="9179241823460192148">"לא ניתן לשנות את מספר ההעברה.\nאם הבעיה נמשכת, יש לפנות לספק."</string>
+    <string name="vm_change_failed" msgid="7877733929455763566">"לא ניתן לשנות את מספר הגישה לדואר הקולי.\nאם הבעיה נמשכת, פנה לספק."</string>
+    <string name="fw_change_failed" msgid="9179241823460192148">"לא ניתן לשנות את מספר ההעברה.\nאם הבעיה נמשכת, פנה לספק."</string>
     <string name="fw_get_in_vm_failed" msgid="2432678237218183844">"לא ניתן לאחזר ולשמור את הגדרות מספר ההעברה הנוכחי.\nלעבור בכל זאת לספק החדש?"</string>
     <string name="no_change" msgid="3737264882821031892">"לא בוצעו שינויים."</string>
-    <string name="sum_voicemail_choose_provider" msgid="6750824719081403773">"בחירת שירות דואר קולי"</string>
+    <string name="sum_voicemail_choose_provider" msgid="6750824719081403773">"בחר שירות של דואר קולי"</string>
     <string name="voicemail_default" msgid="6427575113775462077">"הספק שלך"</string>
     <string name="vm_change_pin_old_pin" msgid="7154951790929009241">"קוד גישה ישן"</string>
     <string name="vm_change_pin_new_pin" msgid="2656200418481288069">"קוד גישה חדש"</string>
-    <string name="vm_change_pin_progress_message" msgid="626015184502739044">"יש להמתין."</string>
+    <string name="vm_change_pin_progress_message" msgid="626015184502739044">"אנא המתן."</string>
     <string name="vm_change_pin_error_too_short" msgid="1789139338449945483">"קוד הגישה החדש קצר מדי."</string>
     <string name="vm_change_pin_error_too_long" msgid="3634907034310018954">"קוד הגישה החדש ארוך מדי."</string>
     <string name="vm_change_pin_error_too_weak" msgid="8581892952627885719">"קוד הגישה החדש חלש מדי. בסיסמה חזקה אסור שיהיו ספרות ברצף מספרי או ספרות שחוזרות על עצמן."</string>
     <string name="vm_change_pin_error_mismatch" msgid="5364847280026257331">"קוד הגישה הישן אינו תואם."</string>
     <string name="vm_change_pin_error_invalid" msgid="5230002671175580674">"קוד הגישה החדש מכיל תווים לא חוקיים."</string>
     <string name="vm_change_pin_error_system_error" msgid="9116483527909681791">"לא ניתן לשנות את קוד הגישה"</string>
-    <string name="vvm_unsupported_message_format" msgid="4206402558577739713">"סוג ההודעה לא נתמך. יש להתקשר למספר <xliff:g id="NUMBER">%s</xliff:g> כדי להאזין לה."</string>
+    <string name="vvm_unsupported_message_format" msgid="4206402558577739713">"סוג ההודעה לא נתמך. התקשר למספר <xliff:g id="NUMBER">%s</xliff:g> כדי להאזין לה."</string>
     <string name="network_settings_title" msgid="7560807107123171541">"רשת סלולרית"</string>
     <string name="label_available" msgid="1316084116670821258">"רשתות זמינות"</string>
-    <string name="load_networks_progress" msgid="4051433047717401683">"החיפוש מתבצע..."</string>
+    <string name="load_networks_progress" msgid="4051433047717401683">"מחפש..."</string>
     <string name="empty_networks_list" msgid="9216418268008582342">"לא נמצאו רשתות."</string>
     <string name="network_query_error" msgid="3862515805115145124">"לא נמצאו רשתות. אפשר לנסות שוב."</string>
-    <string name="register_on_network" msgid="4194770527833960423">"ההרשמה ב-<xliff:g id="NETWORK">%s</xliff:g> מתבצעת…"</string>
+    <string name="register_on_network" msgid="4194770527833960423">"נרשם ב-<xliff:g id="NETWORK">%s</xliff:g>…"</string>
     <string name="not_allowed" msgid="8541221928746104798">"‏כרטיס ה-SIM לא מאפשר חיבור לרשת זו."</string>
-    <string name="connect_later" msgid="1950138106010005425">"לא ניתן להתחבר לרשת זו כעת. יש לנסות שוב מאוחר יותר."</string>
+    <string name="connect_later" msgid="1950138106010005425">"לא ניתן להתחבר לרשת זו כעת. נסה שוב מאוחר יותר."</string>
     <string name="registration_done" msgid="5337407023566953292">"רשום ברשת."</string>
     <string name="already_auto" msgid="8607068290733079336">"הבחירה האוטומטית כבר מופעלת."</string>
     <string name="select_automatically" msgid="779750291257872651">"בחירה אוטומטית של הרשת"</string>
@@ -187,7 +187,7 @@
     <string name="network_select_title" msgid="4117305053881611988">"רשת"</string>
     <string name="register_automatically" msgid="3907580547590554834">"רישום אוטומטי..."</string>
     <string name="preferred_network_mode_title" msgid="5253395265169539830">"סוג רשת מועדף"</string>
-    <string name="preferred_network_mode_summary" msgid="3787989000044330064">"שינוי מצב ההפעלה של הרשת"</string>
+    <string name="preferred_network_mode_summary" msgid="3787989000044330064">"שנה את מצב ההפעלה של הרשת"</string>
     <string name="preferred_network_mode_dialogtitle" msgid="2781447433514459696">"סוג רשת מועדף"</string>
     <string name="forbidden_network" msgid="5081729819561333023">"(אסור)"</string>
     <string name="choose_network_title" msgid="5335832663422653082">"בחירת רשת"</string>
@@ -239,25 +239,25 @@
     <string name="preferred_network_mode_cdma_evdo_summary" msgid="3629440709757307077">"‏מצב רשת מועדפת: CDMA / EvDo"</string>
     <string name="preferred_network_mode_cdma_only_summary" msgid="211164451887102568">"‏מצב רשת מועדפת: CDMA בלבד"</string>
     <string name="preferred_network_mode_evdo_only_summary" msgid="939116631952132878">"‏מצב רשת מועדפת: EvDo בלבד"</string>
-    <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="7891131456022601976">"‏מצב רשת מועדפת: CDMA/EvDo/GSM/WCDMA"</string>
-    <string name="preferred_network_mode_lte_summary" msgid="8050539466545797149">"‏מצב רשת מועדפת: LTE"</string>
-    <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="2217794334331254936">"‏מצב רשת מועדפת: GSM/WCDMA/LTE"</string>
-    <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="5559198623419981805">"‏מצב רשת מועדפת: CDMA+LTE/EVDO"</string>
+    <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="7891131456022601976">"‏מצב רשת מועדף: CDMA/EvDo/GSM/WCDMA"</string>
+    <string name="preferred_network_mode_lte_summary" msgid="8050539466545797149">"‏מצב רשת מועדף: LTE"</string>
+    <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="2217794334331254936">"‏מצב רשת מועדף: GSM/WCDMA/LTE"</string>
+    <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="5559198623419981805">"‏מצב רשת מועדף: CDMA+LTE/EVDO"</string>
     <string name="preferred_network_mode_lte_cdma_evdo_gsm_wcdma_summary" msgid="6707224437925495615">"‏מצב רשת מועדפת: LTE‏/CDMA‏/EvDo‏/GSM‏/WCDMA"</string>
     <string name="preferred_network_mode_global_summary" msgid="3847086258439582411">"מצב רשת מועדף: גלובלי"</string>
-    <string name="preferred_network_mode_lte_wcdma_summary" msgid="7001804022020813865">"‏מצב רשת מועדפת: LTE / WCDMA"</string>
-    <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="6484203890156282179">"‏מצב רשת מועדפת: LTE / GSM / UMTS"</string>
+    <string name="preferred_network_mode_lte_wcdma_summary" msgid="7001804022020813865">"‏מצב רשת מועדף: LTE / WCDMA"</string>
+    <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="6484203890156282179">"‏מצב רשת מועדף: LTE / GSM / UMTS"</string>
     <string name="preferred_network_mode_lte_cdma_summary" msgid="8187929456614068518">"‏מצב רשת מועדפת: LTE / CDMA"</string>
-    <string name="preferred_network_mode_tdscdma_summary" msgid="3602127224234207206">"‏מצב רשת מועדפת: TDSCDMA"</string>
-    <string name="preferred_network_mode_tdscdma_wcdma_summary" msgid="7076968749402201123">"‏מצב רשת מועדפת: TDSCDMA / WCDMA"</string>
-    <string name="preferred_network_mode_lte_tdscdma_summary" msgid="3001058390866953624">"‏מצב רשת מועדפת: LTE / TDSCDMA"</string>
-    <string name="preferred_network_mode_tdscdma_gsm_summary" msgid="1716983444872465309">"‏מצב רשת מועדפת: TDSCDMA / GSM"</string>
-    <string name="preferred_network_mode_lte_tdscdma_gsm_summary" msgid="1349057007230669585">"‏מצב רשת מועדפת: LTE/GSM/TDSCDMA"</string>
-    <string name="preferred_network_mode_tdscdma_gsm_wcdma_summary" msgid="2092262901885164194">"‏מצב רשת מועדפת: TDSCDMA/GSM/WCDMA"</string>
-    <string name="preferred_network_mode_lte_tdscdma_wcdma_summary" msgid="56422129430744466">"‏מצב רשת מועדפת: LTE/TDSCDMA/WCDMA"</string>
-    <string name="preferred_network_mode_lte_tdscdma_gsm_wcdma_summary" msgid="2993923113350341106">"‏מצב רשת מועדפת: LTE/TDSCDMA/GSM/WCDMA"</string>
-    <string name="preferred_network_mode_tdscdma_cdma_evdo_gsm_wcdma_summary" msgid="2779089629254220257">"‏מצב רשת מועדפת: TDSCDMA/CDMA/EvDo/GSM/WCDMA"</string>
-    <string name="preferred_network_mode_lte_tdscdma_cdma_evdo_gsm_wcdma_summary" msgid="9065672185435798587">"‏מצב רשת מועדפת: LTE/TDSCDMA/CDMA/EvDo/GSM/WCDMA"</string>
+    <string name="preferred_network_mode_tdscdma_summary" msgid="3602127224234207206">"‏מצב רשת מועדף: TDSCDMA"</string>
+    <string name="preferred_network_mode_tdscdma_wcdma_summary" msgid="7076968749402201123">"‏מצב רשת מועדף: TDSCDMA / WCDMA"</string>
+    <string name="preferred_network_mode_lte_tdscdma_summary" msgid="3001058390866953624">"‏מצב רשת מועדף: LTE / TDSCDMA"</string>
+    <string name="preferred_network_mode_tdscdma_gsm_summary" msgid="1716983444872465309">"‏מצב רשת מועדף: TDSCDMA / GSM"</string>
+    <string name="preferred_network_mode_lte_tdscdma_gsm_summary" msgid="1349057007230669585">"‏מצב רשת מועדף: LTE/GSM/TDSCDMA"</string>
+    <string name="preferred_network_mode_tdscdma_gsm_wcdma_summary" msgid="2092262901885164194">"‏מצב רשת מועדף: TDSCDMA/GSM/WCDMA"</string>
+    <string name="preferred_network_mode_lte_tdscdma_wcdma_summary" msgid="56422129430744466">"‏מצב רשת מועדף: LTE/TDSCDMA/WCDMA"</string>
+    <string name="preferred_network_mode_lte_tdscdma_gsm_wcdma_summary" msgid="2993923113350341106">"‏מצב רשת מועדף: LTE/TDSCDMA/GSM/WCDMA"</string>
+    <string name="preferred_network_mode_tdscdma_cdma_evdo_gsm_wcdma_summary" msgid="2779089629254220257">"‏מצב רשת מועדף: TDSCDMA/CDMA/EvDo/GSM/WCDMA"</string>
+    <string name="preferred_network_mode_lte_tdscdma_cdma_evdo_gsm_wcdma_summary" msgid="9065672185435798587">"‏מצב רשת מועדף: LTE/TDSCDMA/CDMA/EvDo/GSM/WCDMA"</string>
     <string name="preferred_network_mode_nr_only_summary" msgid="1467452233297987391">"‏מצב רשת מועדפת: NR בלבד"</string>
     <string name="preferred_network_mode_nr_lte_summary" msgid="5890170406507535976">"‏מצב רשת מועדפת: NR ‏/ LTE"</string>
     <string name="preferred_network_mode_nr_lte_cdma_evdo_summary" msgid="5507940227264296616">"‏מצב רשת מועדפת: NR‏/LTE‏/CDMA‏/EvDo"</string>
@@ -273,17 +273,17 @@
     <string name="network_operator_category" msgid="4992217193732304680">"רשת"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="4213420368777080540">"‏מצב 4G LTE משופר"</string>
     <!-- no translation found for enhanced_4g_lte_mode_title_variant:0 (7240155150166394308) -->
-    <string name="enhanced_4g_lte_mode_summary" msgid="7725708511804143638">"‏שימוש בשירותי LTE כדי לשפר את הקול ודרכי תקשורת אחרות (מומלץ)"</string>
+    <string name="enhanced_4g_lte_mode_summary" msgid="7725708511804143638">"‏השתמש בשירותי LTE כדי לשפר את הקול ודרכי תקשורת אחרות (מומלץ)"</string>
     <string name="enhanced_4g_lte_mode_summary_o2" msgid="2521108446409016542">"‏שימוש בשירותי 4G כדי לשפר את הקול ודרכי תקשורת אחרות (מומלץ)"</string>
     <!-- no translation found for enhanced_4g_lte_mode_sumary_variant:0 (2943982616649705147) -->
     <!-- no translation found for enhanced_4g_lte_mode_sumary_variant:1 (5262249464504131443) -->
     <!-- no translation found for enhanced_4g_lte_mode_sumary_variant:2 (6356974241850241718) -->
     <string name="data_enabled" msgid="22525832097434368">"נתונים מופעלים"</string>
-    <string name="data_enable_summary" msgid="696860063456536557">"התרת שימוש בחבילת הגלישה"</string>
+    <string name="data_enable_summary" msgid="696860063456536557">"התר שימוש בנתונים"</string>
     <string name="dialog_alert_title" msgid="5260471806940268478">"זהירות"</string>
     <string name="roaming" msgid="1576180772877858949">"נדידה"</string>
-    <string name="roaming_enable" msgid="6853685214521494819">"יש להתחבר לשירותי נתונים בעת נדידה"</string>
-    <string name="roaming_disable" msgid="8856224638624592681">"יש להתחבר לשירותי נתונים בעת נדידה"</string>
+    <string name="roaming_enable" msgid="6853685214521494819">"התחבר לשירותי נתונים בעת נדידה"</string>
+    <string name="roaming_disable" msgid="8856224638624592681">"התחבר לשירותי נתונים בעת נדידה"</string>
     <string name="roaming_reenable_message" msgid="1951802463885727915">"הנדידה מושבתת. אפשר להקיש כדי להפעיל אותה."</string>
     <string name="roaming_enabled_message" msgid="9022249120750897">"ייתכנו חיובי נדידה. יש להקיש כדי לשנות."</string>
     <string name="roaming_notification_title" msgid="3590348480688047320">"המכשיר התנתק מחבילת הגלישה"</string>
@@ -355,7 +355,7 @@
     <string name="international_enable" msgid="8943466745792690340">"חדשות פנים מופעלות"</string>
     <string name="international_disable" msgid="4803498658100318265">"חדשות בינלאומיות מושבתות"</string>
     <string name="list_language_title" msgid="1850167908665485738">"שפה"</string>
-    <string name="list_language_summary" msgid="7921756070782277559">"בחירת שפת החדשות"</string>
+    <string name="list_language_summary" msgid="7921756070782277559">"בחר את שפת החדשות"</string>
   <string-array name="list_language_entries">
     <item msgid="2347238508726934281">"אנגלית"</item>
     <item msgid="5172468397620875174">"צרפתית"</item>
@@ -416,7 +416,7 @@
     <string name="network_4G" msgid="6800527815504223913">"‏4G (מומלץ)"</string>
     <string name="network_global" msgid="3289646154407617631">"גלובלי"</string>
     <string name="cdma_system_select_title" msgid="614165233552656431">"בחירת מערכת"</string>
-    <string name="cdma_system_select_summary" msgid="3840420390242060407">"‏שינוי מצב נדידת CDMA"</string>
+    <string name="cdma_system_select_summary" msgid="3840420390242060407">"‏שנה את מצב נדידת CDMA"</string>
     <string name="cdma_system_select_dialogtitle" msgid="5524639510676501802">"בחירת מערכת"</string>
   <string-array name="cdma_system_select_choices">
     <item msgid="462340042928284921">"בית בלבד"</item>
@@ -433,8 +433,8 @@
     <item msgid="2953825013895327785">"0"</item>
     <item msgid="7970797749269738435">"1"</item>
   </string-array>
-    <string name="cdma_activate_device" msgid="5914720276140097632">"הפעלת המכשיר"</string>
-    <string name="cdma_lte_data_service" msgid="359786441782404562">"הגדרת שירות נתונים"</string>
+    <string name="cdma_activate_device" msgid="5914720276140097632">"הפעל מכשיר"</string>
+    <string name="cdma_lte_data_service" msgid="359786441782404562">"הגדר שירות נתונים"</string>
     <string name="carrier_settings_title" msgid="6292869148169850220">"הגדרות ספק"</string>
     <string name="fdn" msgid="2545904344666098749">"מספרי חיוג קבועים"</string>
     <string name="fdn_with_label" msgid="6412087553365709494">"מספרי חיוג קבועים (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -445,7 +445,7 @@
     <string name="fdn_disabled" msgid="6696468878037736600">"מספרי חיוג קבועים מושבתים"</string>
     <string name="enable_fdn" msgid="4830555730418033723">"הפעלת מספרי חיוג קבועים"</string>
     <string name="disable_fdn" msgid="3918794950264647541">"השבתת מספרי חיוג קבועים"</string>
-    <string name="change_pin2" msgid="3110844547237754871">"שינוי קוד אימות 2"</string>
+    <string name="change_pin2" msgid="3110844547237754871">"‏שינוי PIN2"</string>
     <string name="enable_fdn_ok" msgid="5080925177369329827">"השבת מספרי חיוג קבועים"</string>
     <string name="disable_fdn_ok" msgid="3745475926874838676">"הפעלה של מספרי חיוג קבועים"</string>
     <string name="sum_fdn" msgid="6152246141642323582">"ניהול מספרי חיוג קבועים"</string>
@@ -454,97 +454,96 @@
     <string name="voice_privacy" msgid="7346935172372181951">"פרטיות קול"</string>
     <string name="voice_privacy_summary" msgid="3556460926168473346">"הפעלת מצב פרטיות משופרת"</string>
     <string name="tty_mode_option_title" msgid="3843817710032641703">"‏מצב TTY"</string>
-    <string name="tty_mode_option_summary" msgid="4770510287236494371">"‏הגדרת מצב TTY"</string>
+    <string name="tty_mode_option_summary" msgid="4770510287236494371">"‏הגדר מצב TTY"</string>
     <string name="auto_retry_mode_title" msgid="2985801935424422340">"ניסיון חוזר אוטומטי"</string>
     <string name="auto_retry_mode_summary" msgid="2863919925349511402">"הפעלת מצב \'ניסיון חוזר\'."</string>
     <string name="tty_mode_not_allowed_video_call" msgid="6551976083652752815">"‏שינוי מצב TTY אינו מותר במהלך שיחת וידאו"</string>
-    <string name="menu_add" msgid="5616487894975773141">"הוספת איש קשר"</string>
-    <string name="menu_edit" msgid="3593856941552460706">"עריכת איש קשר"</string>
-    <string name="menu_delete" msgid="6326861853830546488">"מחיקת איש קשר"</string>
+    <string name="menu_add" msgid="5616487894975773141">"הוסף איש קשר"</string>
+    <string name="menu_edit" msgid="3593856941552460706">"ערוך איש קשר"</string>
+    <string name="menu_delete" msgid="6326861853830546488">"מחק איש קשר"</string>
     <string name="menu_dial" msgid="4178537318419450012">"חיוג לאיש הקשר"</string>
-    <string name="get_pin2" msgid="4221654606863196332">"יש להקליד קוד אימות 2"</string>
+    <string name="get_pin2" msgid="4221654606863196332">"‏הקלד PIN2"</string>
     <string name="name" msgid="1347432469852527784">"שם"</string>
     <string name="number" msgid="1564053487748491000">"מספר"</string>
-    <string name="save" msgid="983805790346099749">"שמירה"</string>
-    <string name="add_fdn_contact" msgid="1169713422306640887">"הוספת מספר חיוג קבוע"</string>
-    <string name="adding_fdn_contact" msgid="3112531600824361259">"הוספת מספר חיוג קבוע מתבצעת..."</string>
+    <string name="save" msgid="983805790346099749">"שמור"</string>
+    <string name="add_fdn_contact" msgid="1169713422306640887">"הוסף מספר חיוג קבוע"</string>
+    <string name="adding_fdn_contact" msgid="3112531600824361259">"מוסיף מספר חיוג קבוע..."</string>
     <string name="fdn_contact_added" msgid="2840016151693394596">"מספר חיוג קבוע נוסף."</string>
-    <string name="edit_fdn_contact" msgid="6030829994819587408">"עריכת מספר חיוג קבוע"</string>
-    <string name="updating_fdn_contact" msgid="6989341376868227150">"עדכון מספר החיוג הקבוע מתבצע..."</string>
+    <string name="edit_fdn_contact" msgid="6030829994819587408">"ערוך מספר חיוג קבוע"</string>
+    <string name="updating_fdn_contact" msgid="6989341376868227150">"מעדכן מספר חיוג קבוע..."</string>
     <string name="fdn_contact_updated" msgid="6876330243323118937">"מספר חיוג קבוע עודכן."</string>
-    <string name="delete_fdn_contact" msgid="7027405651994507077">"מחיקת מספר חיוג קבוע"</string>
-    <string name="deleting_fdn_contact" msgid="6872320570844460428">"מחיקת מספר חיוג קבוע מתבצעת..."</string>
+    <string name="delete_fdn_contact" msgid="7027405651994507077">"מחק מספר חיוג קבוע"</string>
+    <string name="deleting_fdn_contact" msgid="6872320570844460428">"מוחק מספר חיוג קבוע..."</string>
     <string name="fdn_contact_deleted" msgid="1680714996763848838">"מספר חיוג קבוע נמחק."</string>
     <string name="pin2_invalid" msgid="2313954262684494442">"רשימת מספרי חיוג קבועים לא עודכנה מכיוון שקוד הגישה שגוי."</string>
     <string name="fdn_invalid_number" msgid="9067189814657840439">"‏מספר ה-FDN לא עודכן כי הוא מכיל יותר מ-<xliff:g id="FDN_NUMBER_LIMIT_LENGTH">%d</xliff:g> ספרות."</string>
     <string name="pin2_or_fdn_invalid" msgid="7542639487955868181">"רשימת מספרי החיוג הקבועים לא עודכנה. קוד הגישה היה שגוי או שמספר הטלפון נדחה."</string>
     <string name="fdn_failed" msgid="216592346853420250">"‏פעולת FDN נכשלה."</string>
-    <string name="simContacts_emptyLoading" msgid="4989040293858675483">"‏קריאה מכרטיס SIM מתבצעת…"</string>
+    <string name="simContacts_emptyLoading" msgid="4989040293858675483">"‏קורא מכרטיס SIM…"</string>
     <string name="simContacts_empty" msgid="1135632055473689521">"‏אין אנשי קשר בכרטיס ה-SIM."</string>
-    <string name="simContacts_title" msgid="2714029230160136647">"בחירת אנשי קשר לייבוא"</string>
-    <string name="simContacts_airplaneMode" msgid="4654884030631503808">"‏יש לבטל את מצב טיסה כדי לייבא אנשי קשר מכרטיס ה-SIM."</string>
-    <string name="enable_pin" msgid="967674051730845376">"‏הפעלה/השבתה של קוד האימות של SIM"</string>
-    <string name="change_pin" msgid="3657869530942905790">"‏שינוי קוד אימות של SIM"</string>
-    <string name="enter_pin_text" msgid="3182311451978663356">"‏קוד אימות של SIM:"</string>
-    <string name="oldPinLabel" msgid="8618515202411987721">"קוד אימות ישן"</string>
-    <string name="newPinLabel" msgid="3585899083055354732">"קוד אימות חדש"</string>
-    <string name="confirmPinLabel" msgid="7783531218662473778">"אישור קוד אימות חדש"</string>
-    <string name="badPin" msgid="4549286285015892321">"קוד האימות הישן שהקלדת שגוי. יש לנסות שוב."</string>
-    <string name="mismatchPin" msgid="1467254768290323845">"קודי האימות שהקלדת לא תואמים. יש לנסות שוב."</string>
-    <string name="invalidPin" msgid="7363723429414001979">"יש להקליד קוד אימות שאורכו 4 עד 8 ספרות."</string>
+    <string name="simContacts_title" msgid="2714029230160136647">"בחר אנשי קשר לייבוא"</string>
+    <string name="simContacts_airplaneMode" msgid="4654884030631503808">"‏בטל את מצב טיסה כדי לייבא אנשי קשר מכרטיס ה-SIM."</string>
+    <string name="enable_pin" msgid="967674051730845376">"‏הפעלה/השבתה של ה-PIN של SIM"</string>
+    <string name="change_pin" msgid="3657869530942905790">"‏שנה PIN של SIM"</string>
+    <string name="enter_pin_text" msgid="3182311451978663356">"‏PIN של SIM:"</string>
+    <string name="oldPinLabel" msgid="8618515202411987721">"‏PIN ישן"</string>
+    <string name="newPinLabel" msgid="3585899083055354732">"‏PIN חדש"</string>
+    <string name="confirmPinLabel" msgid="7783531218662473778">"‏אשר PIN חדש"</string>
+    <string name="badPin" msgid="4549286285015892321">"‏ה-PIN הישן שהקלדת שגוי. נסה שוב."</string>
+    <string name="mismatchPin" msgid="1467254768290323845">"‏קודי ה-PIN שהקלדת אינם תואמים. נסה שוב."</string>
+    <string name="invalidPin" msgid="7363723429414001979">"‏הקלד PIN שאורכו 4 עד 8 ספרות."</string>
     <string name="disable_sim_pin" msgid="3112303905548613752">"‏ניקוי PIN עבור SIM"</string>
-    <string name="enable_sim_pin" msgid="445461050748318980">"‏הגדרת קוד אימות של SIM"</string>
-    <string name="enable_in_progress" msgid="4135305985717272592">"הגדרת קוד האימות מתבצעת…"</string>
-    <string name="enable_pin_ok" msgid="2877428038280804256">"קוד אימות הוגדר"</string>
-    <string name="disable_pin_ok" msgid="888505244389647754">"קוד האימות נמחק"</string>
-    <string name="pin_failed" msgid="4527347792881939652">"קוד אימות 2 שגוי"</string>
-    <string name="pin_changed" msgid="7291153750090452808">"קוד אימות עודכן"</string>
-    <string name="puk_requested" msgid="2061337960609806851">"‏סיסמה שגויה. קוד האימות נעול כעת. יש להזין PUK."</string>
-    <string name="enter_pin2_text" msgid="7266379426804295979">"קוד אימות 2"</string>
-    <string name="oldPin2Label" msgid="4648543187859997203">"קוד אימות 2 ישן"</string>
-    <string name="newPin2Label" msgid="1840905981784453939">"קוד אימות 2 חדש"</string>
-    <string name="confirmPin2Label" msgid="4336025914667593762">"אישור קוד אימות 2 חדש"</string>
-    <string name="badPuk2" msgid="6438182906645832235">"‏PUK2 שגוי. יש לנסות שוב."</string>
-    <string name="badPin2" msgid="2760917538643074635">"קוד אימות 2 הישן שגוי. יש לנסות שוב."</string>
-    <string name="mismatchPin2" msgid="4952718725266700631">"קודי אימות 2 לא תואמים. יש לנסות שוב."</string>
-    <string name="invalidPin2" msgid="6467957903056379343">"יש להזין קוד אימות 2 שאורכו בין 4 ל-8 ספרות."</string>
-    <string name="invalidPuk2" msgid="713729511903849544">"‏יש להזין PUK2 שאורכו 8 ספרות."</string>
-    <string name="pin2_changed" msgid="5710551850481287821">"קוד אימות 2 עודכן"</string>
-    <string name="label_puk2_code" msgid="2852217004288085562">"‏הזנת קוד PUK2"</string>
-    <string name="fdn_enable_puk2_requested" msgid="5793652792131588041">"‏סיסמה שגויה. קוד אימות 2 חסום כעת. כדי לנסות שוב, יש לשנות את PIN 2."</string>
-    <string name="puk2_requested" msgid="6992374450720307514">"‏סיסמה שגויה. ה-SIM נעול כעת. יש להזין PUK2."</string>
+    <string name="enable_sim_pin" msgid="445461050748318980">"‏הגדרת PIN עבור SIM"</string>
+    <string name="enable_in_progress" msgid="4135305985717272592">"‏מגדיר PIN…"</string>
+    <string name="enable_pin_ok" msgid="2877428038280804256">"‏PIN הוגדר"</string>
+    <string name="disable_pin_ok" msgid="888505244389647754">"‏ה-PIN נוקה"</string>
+    <string name="pin_failed" msgid="4527347792881939652">"‏PIN2 שגוי"</string>
+    <string name="pin_changed" msgid="7291153750090452808">"‏PIN עודכן"</string>
+    <string name="puk_requested" msgid="2061337960609806851">"‏סיסמה שגויה. PIN נעול כעת. יש להזין PUK."</string>
+    <string name="enter_pin2_text" msgid="7266379426804295979">"PIN2"</string>
+    <string name="oldPin2Label" msgid="4648543187859997203">"‏PIN2 ישן"</string>
+    <string name="newPin2Label" msgid="1840905981784453939">"‏PIN2 חדש"</string>
+    <string name="confirmPin2Label" msgid="4336025914667593762">"‏אשר PIN2 חדש"</string>
+    <string name="badPuk2" msgid="6438182906645832235">"‏PUK2 שגוי. נסה שוב."</string>
+    <string name="badPin2" msgid="2760917538643074635">"‏PIN2 הישן שגוי. נסה שוב."</string>
+    <string name="mismatchPin2" msgid="4952718725266700631">"‏קודי PIN2 לא תואמים. נסה שוב."</string>
+    <string name="invalidPin2" msgid="6467957903056379343">"‏הזן PIN2 שאורכו בין 4 ל-8 ספרות."</string>
+    <string name="invalidPuk2" msgid="713729511903849544">"‏הזן PUK2 שאורכו 8 ספרות."</string>
+    <string name="pin2_changed" msgid="5710551850481287821">"‏PIN2 עודכן"</string>
+    <string name="label_puk2_code" msgid="2852217004288085562">"‏הזן קוד PUK2"</string>
+    <string name="fdn_enable_puk2_requested" msgid="5793652792131588041">"‏סיסמה שגויה. PIN2 חסום כעת. כדי לנסות שוב, יש לשנות את PIN 2."</string>
+    <string name="puk2_requested" msgid="6992374450720307514">"‏סיסמה שגויה. ה-SIM נעול כעת. הזן PUK2."</string>
     <string name="puk2_blocked" msgid="3131139031779319911">"‏PUK2 נחסם לצמיתות."</string>
     <string name="pin2_attempts" msgid="5625178102026453023">\n"נותרו לך עוד <xliff:g id="NUMBER">%d</xliff:g> ניסיונות."</string>
     <string name="puk2_locked" msgid="6497760825455461057">"‏נעילת PUK2. כדי לבטל את הנעילה, צריך לפנות לספק השירות."</string>
-    <string name="pin2_unblocked" msgid="4481107908727789303">"קוד אימות 2 אינו חסום עוד"</string>
+    <string name="pin2_unblocked" msgid="4481107908727789303">"‏PIN2 אינו חסום עוד"</string>
     <string name="pin2_error_exception" msgid="8116103864600823641">"‏שגיאת רשת או כרטיס SIM"</string>
     <string name="doneButton" msgid="7371209609238460207">"סיום"</string>
     <string name="voicemail_settings_number_label" msgid="1265118640154688162">"המספר של הדואר הקולי"</string>
-    <string name="card_title_dialing" msgid="8742182654254431781">"החיוג מתבצע"</string>
-    <string name="card_title_redialing" msgid="18130232613559964">"חיוג חוזר מתבצע"</string>
+    <string name="card_title_dialing" msgid="8742182654254431781">"מחייג"</string>
+    <string name="card_title_redialing" msgid="18130232613559964">"מחייג שוב"</string>
     <string name="card_title_conf_call" msgid="901197309274457427">"שיחת ועידה"</string>
     <string name="card_title_incoming_call" msgid="881424648458792430">"שיחה נכנסת"</string>
     <string name="card_title_call_ended" msgid="650223980095026340">"השיחה הסתיימה"</string>
     <string name="card_title_on_hold" msgid="9028319436626975207">"בהמתנה"</string>
-    <string name="card_title_hanging_up" msgid="814874106866647871">"הניתוק מתבצע"</string>
+    <string name="card_title_hanging_up" msgid="814874106866647871">"מנתק"</string>
     <string name="card_title_in_call" msgid="8231896539567594265">"בשיחה"</string>
     <string name="notification_voicemail_title" msgid="3932876181831601351">"דואר קולי חדש"</string>
     <string name="notification_voicemail_title_count" msgid="2806950319222327082">"דואר קולי חדש (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="5720947141702312537">"‏חיוג ל-‎<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>‎"</string>
+    <string name="notification_voicemail_text_format" msgid="5720947141702312537">"‏חייג ‎<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>‎"</string>
     <string name="notification_voicemail_no_vm_number" msgid="3423686009815186750">"המספר של הדואר הקולי אינו ידוע"</string>
     <string name="notification_network_selection_title" msgid="255595526707809121">"אין שירות"</string>
     <string name="notification_network_selection_text" msgid="553288408722427659">"הרשת שנבחרה (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) לא זמינה"</string>
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"עליך להפעיל את הרשת הסלולרית, להשבית את מצב הטיסה או להשבית את מצב החיסכון בסוללה כדי להתקשר."</string>
-    <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"יש לבטל את מצב טיסה כדי לבצע שיחה."</string>
-    <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"יש לבטל את מצב טיסה או להתחבר לרשת אלחוטית כדי לבצע שיחה."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"הטמפרטורה של הטלפון גבוהה מדי"</b>\n\n"אי אפשר להשלים את השיחה. אפשר לנסות שוב כשהטלפון יתקרר.\n\nבינתיים אפשר להתקשר רק למספרי חירום"</string>
+    <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"בטל את מצב טיסה כדי לבצע שיחה."</string>
+    <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"בטל את מצב טיסה או התחבר לרשת אלחוטית כדי לבצע שיחה."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"עליך לצאת ממצב חירום של התקשרות חזרה כדי לבצע שיחות שאינן שיחות חירום."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"לא רשום ברשת."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"הרשת הסלולרית אינה זמינה."</string>
     <string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"הרשת הסלולרית לא זמינה. עליך להתחבר לרשת אלחוטית כדי להתקשר."</string>
-    <string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"כדי להתקשר, יש להזין מספר טלפון חוקי."</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"כדי להתקשר, הזן מספר טלפון חוקי."</string>
     <string name="incall_error_call_failed" msgid="393508653582682539">"השיחה נכשלה."</string>
-    <string name="incall_error_cannot_add_call" msgid="5425764862628655443">"לא ניתן להוסיף את השיחה כרגע. אפשר לנסות לשלוח הודעה."</string>
+    <string name="incall_error_cannot_add_call" msgid="5425764862628655443">"לא ניתן להוסיף את השיחה כרגע. ניתן לנסות לשלוח הודעה."</string>
     <string name="incall_error_supp_service_unknown" msgid="8751177117194592623">"שירות לא נתמך"</string>
     <string name="incall_error_supp_service_switch" msgid="5272822448189448479">"לא ניתן לעבור בין שיחות."</string>
     <string name="incall_error_supp_service_resume" msgid="1276861499306817035">"לא ניתן להמשיך את השיחה."</string>
@@ -554,8 +553,8 @@
     <string name="incall_error_supp_service_reject" msgid="3044363092441655912">"לא ניתן לדחות שיחה."</string>
     <string name="incall_error_supp_service_hangup" msgid="836524952243836735">"לא ניתן לשחרר שיחות."</string>
     <string name="incall_error_supp_service_hold" msgid="8535056414643540997">"לא ניתן להחזיק שיחות."</string>
-    <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"יש להתחבר לרשת אלחוטית כדי לבצע שיחה."</string>
-    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"‏יש להפעיל את \'שיחות Wi-Fi\' כדי להתקשר."</string>
+    <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"התחבר לרשת אלחוטית כדי לבצע שיחה."</string>
+    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"‏הפעל את \'שיחות Wi-Fi\' כדי להתקשר."</string>
     <string name="emergency_information_hint" msgid="9208897544917793012">"מידע למקרה חירום"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"בעלים"</string>
     <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"אפשר להקיש שוב כדי להציג את הפרטים"</string>
@@ -563,19 +562,19 @@
     <string name="single_emergency_number_title" msgid="8413371079579067196">"מספר חירום"</string>
     <string name="numerous_emergency_numbers_title" msgid="8972398932506755510">"מספרי חירום"</string>
     <string name="emergency_call_shortcut_hint" msgid="1290485125107779500">"אפשר להקיש שוב כדי להתקשר אל <xliff:g id="EMERGENCY_NUMBER">%s</xliff:g>"</string>
-    <string name="emergency_enable_radio_dialog_message" msgid="1695305158151408629">"הפעלת הרדיו מתבצעת…"</string>
-    <string name="emergency_enable_radio_dialog_retry" msgid="4329131876852608587">"אין שירות. ניסיון חוזר מתבצע..."</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="1695305158151408629">"מפעיל את הרדיו…"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="4329131876852608587">"אין שירות. מנסה שוב..."</string>
     <string name="radio_off_during_emergency_call" msgid="8011154134040481609">"אי אפשר לעבור למצב טיסה בזמן שיחת חירום."</string>
     <string name="dial_emergency_error" msgid="825822413209026039">"לא ניתן להתקשר. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> אינו מספר חירום."</string>
-    <string name="dial_emergency_empty_error" msgid="2785803395047793634">"לא ניתן להתקשר. יש לחייג למספר חירום."</string>
+    <string name="dial_emergency_empty_error" msgid="2785803395047793634">"לא ניתן להתקשר. חייג למספר חירום."</string>
     <string name="dial_emergency_calling_not_available" msgid="6485846193794727823">"אי אפשר לבצע שיחות חירום"</string>
     <string name="pin_puk_system_user_only" msgid="1045147220686867922">"‏רק הבעלים של המכשיר יכול להזין קודי אימות/PUK."</string>
     <string name="police_type_description" msgid="2819533883972081757">"משטרה"</string>
     <string name="ambulance_type_description" msgid="6798237503553180461">"אמבולנס"</string>
     <string name="fire_type_description" msgid="6565200468934914930">"אש"</string>
     <string name="description_concat_format" msgid="2014471565101724088">"‏%1$s,‏ %2$s"</string>
-    <string name="dialerKeyboardHintText" msgid="1115266533703764049">"שימוש במקלדת כדי לחייג"</string>
-    <string name="onscreenHoldText" msgid="4025348842151665191">"השהיה"</string>
+    <string name="dialerKeyboardHintText" msgid="1115266533703764049">"השתמש במקלדת כדי לחייג"</string>
+    <string name="onscreenHoldText" msgid="4025348842151665191">"השהה"</string>
     <string name="onscreenEndCallText" msgid="6138725377654842757">"סיום"</string>
     <string name="onscreenShowDialpadText" msgid="658465753816164079">"לוח חיוג"</string>
     <string name="onscreenMuteText" msgid="5470306116733843621">"השתקה"</string>
@@ -586,10 +585,10 @@
     <string name="onscreenManageConferenceText" msgid="4700574060601755137">"ניהול שיחת ועידה"</string>
     <string name="onscreenAudioText" msgid="7224226735052019986">"אודיו"</string>
     <string name="onscreenVideoCallText" msgid="1743992456126258698">"שיחת וידאו"</string>
-    <string name="importSimEntry" msgid="3892354284082689894">"ייבוא"</string>
-    <string name="importAllSimEntries" msgid="2628391505643564007">"ייבוא הכול"</string>
-    <string name="importingSimContacts" msgid="4995457122107888932">"‏ייבוא אנשי קשר מ-SIM מתבצע"</string>
-    <string name="importToFDNfromContacts" msgid="5068664870738407341">"ייבוא מאנשי קשר"</string>
+    <string name="importSimEntry" msgid="3892354284082689894">"ייבא"</string>
+    <string name="importAllSimEntries" msgid="2628391505643564007">"ייבא הכל"</string>
+    <string name="importingSimContacts" msgid="4995457122107888932">"‏מייבא אנשי קשר מ-SIM"</string>
+    <string name="importToFDNfromContacts" msgid="5068664870738407341">"ייבא מאנשי קשר"</string>
     <string name="singleContactImportedMsg" msgid="3619804066300998934">"איש הקשר יובא"</string>
     <string name="failedToImportSingleContactMsg" msgid="228095510489830266">"ייבוא איש הקשר נכשל"</string>
     <string name="hac_mode_title" msgid="4127986689621125468">"מכשירי שמיעה"</string>
@@ -605,16 +604,16 @@
     <item msgid="2131559553795606483">"TTY VCO"</item>
   </string-array>
     <string name="dtmf_tones_title" msgid="7874845461117175236">"‏צלילי DTMF"</string>
-    <string name="dtmf_tones_summary" msgid="2294822239899471201">"‏הגדרת האורך של צלילי DTMF"</string>
+    <string name="dtmf_tones_summary" msgid="2294822239899471201">"‏הגדר את האורך של צלילי DTMF"</string>
   <string-array name="dtmf_tone_entries">
     <item msgid="2271798469250155310">"רגיל"</item>
     <item msgid="6044210222666533564">"ארוך"</item>
   </string-array>
     <string name="network_info_message" msgid="7599413947016532355">"הודעת רשת"</string>
     <string name="network_error_message" msgid="4271579424089326618">"הודעת שגיאה"</string>
-    <string name="ota_title_activate" msgid="4049645324841263423">"הפעלת הטלפון"</string>
-    <string name="ota_touch_activate" msgid="838764494319694754">"יש לבצע שיחה מיוחדת כדי להפעיל את השירות לטלפון. \n\nלאחר הלחיצה על \'הפעלה\', יש להקשיב להוראות להפעלת הטלפון."</string>
-    <string name="ota_hfa_activation_title" msgid="3300556778212729671">"ההפעלה מתבצעת..."</string>
+    <string name="ota_title_activate" msgid="4049645324841263423">"הפעל את הטלפון"</string>
+    <string name="ota_touch_activate" msgid="838764494319694754">"יש לבצע שיחה מיוחדת כדי להפעיל את השירות לטלפון. \n\nלאחר הלחיצה על \'הפעל\', הקשב להוראות להפעלת הטלפון."</string>
+    <string name="ota_hfa_activation_title" msgid="3300556778212729671">"מפעיל..."</string>
     <string name="ota_hfa_activation_dialog_message" msgid="7921718445773342996">"הטלפון מפעיל את שירותי הנתונים שלך לנייד.\n\nהתהליך עשוי לארוך עד 5 דקות."</string>
     <string name="ota_skip_activation_dialog_title" msgid="7666611236789203797">"לדלג על ההפעלה?"</string>
     <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"‏אם מדלגים על ההפעלה, אי אפשר להתקשר או להתחבר לרשתות נתונים לנייד (אך אפשר להתחבר לרשתות Wi-Fi). עד להפעלת הטלפון תופיע הודעה שמבקשת לבצע את ההפעלה בכל פעם שמדליקים את הטלפון."</string>
@@ -622,26 +621,26 @@
     <string name="ota_activate" msgid="7939695753665438357">"הפעלה"</string>
     <string name="ota_title_activate_success" msgid="1272135024761004889">"הטלפון מופעל."</string>
     <string name="ota_title_problem_with_activation" msgid="7019745985413368726">"בעיה בהפעלה"</string>
-    <string name="ota_listen" msgid="2772252405488894280">"יש לבצע את ההוראות הנאמרות עד ששומעים שההפעלה הושלמה."</string>
+    <string name="ota_listen" msgid="2772252405488894280">"בצע את ההוראות הנאמרות עד שתשמע שההפעלה הושלמה."</string>
     <string name="ota_speaker" msgid="1086766980329820528">"רמקול"</string>
-    <string name="ota_progress" msgid="8837259285255700132">"התכנות של הטלפון שלך מתבצע…"</string>
+    <string name="ota_progress" msgid="8837259285255700132">"מתכנת את הטלפון שלך…"</string>
     <string name="ota_failure" msgid="5674217489921481576">"לא ניתן היה לתכנת את הטלפון שלך"</string>
-    <string name="ota_successful" msgid="1106825981548107774">"הטלפון שלך מופעל כעת. ייתכן שיהיה צורך להמתין עד 15 דקות להפעלת השירות."</string>
+    <string name="ota_successful" msgid="1106825981548107774">"הטלפון שלך מופעל כעת. ייתכן שתמתין עד 15 דקות להפעלת השירות."</string>
     <string name="ota_unsuccessful" msgid="8531037653803955754">"הטלפון שלך לא הופעל. \nייתכן שעליך למצוא מקום שהקליטה בו טובה יותר (ליד חלון או בחוץ). \n\nנסה שוב או התקשר לשירות לקוחות לקבלת אפשרויות נוספות."</string>
     <string name="ota_spc_failure" msgid="904092035241370080">"‏כשלים מרובים של SPC"</string>
     <string name="ota_call_end" msgid="8657746378290737034">"הקודם"</string>
-    <string name="ota_try_again" msgid="6914781945599998550">"יש לנסות שוב"</string>
+    <string name="ota_try_again" msgid="6914781945599998550">"נסו שוב"</string>
     <string name="ota_next" msgid="2041016619313475914">"הבא"</string>
     <string name="ecm_exit_dialog" msgid="4200691880721429078">"EcmExitDialog"</string>
-    <string name="phone_entered_ecm_text" msgid="8431238297843035842">"מתבצע מעבר למצב חירום של התקשרות חזרה"</string>
+    <string name="phone_entered_ecm_text" msgid="8431238297843035842">"נכנס למצב חירום של התקשרות חזרה"</string>
     <string name="phone_in_ecm_notification_title" msgid="6825016389926367946">"מצב חירום של התקשרות חזרה"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="653972232922670335">"חיבור נתונים מושבת"</string>
     <string name="phone_in_ecm_notification_complete_time" msgid="7341624337163082759">"אין חיבור לרשת נתונים עד <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="5425906903766466743">
-      <item quantity="two">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחבילת גלישה. האם ברצונך לצאת כעת?</item>
-      <item quantity="many">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחבילת גלישה. האם ברצונך לצאת כעת?</item>
-      <item quantity="other">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחבילת גלישה. האם ברצונך לצאת כעת?</item>
-      <item quantity="one">הטלפון יהיה במצב חירום של התקשרות חזרה למשך דקה <xliff:g id="COUNT_0">%s</xliff:g>. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחבילת גלישה. האם ברצונך לצאת כעת?</item>
+      <item quantity="two">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחיבור נתונים. האם ברצונך לצאת כעת?</item>
+      <item quantity="many">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחיבור נתונים. האם ברצונך לצאת כעת?</item>
+      <item quantity="other">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחיבור נתונים. האם ברצונך לצאת כעת?</item>
+      <item quantity="one">הטלפון יהיה במצב חירום של התקשרות חזרה למשך דקה <xliff:g id="COUNT_0">%s</xliff:g>. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחיבור נתונים. האם ברצונך לצאת כעת?</item>
     </plurals>
     <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="1152682528741457004">
       <item quantity="two">הפעולה הנבחרת אינה זמינה במצב חירום של התקשרות חזרה. הטלפון יהיה במצב זה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. האם ברצונך לצאת כעת?</item>
@@ -653,7 +652,7 @@
     <string name="progress_dialog_exiting_ecm" msgid="9159080081676927217">"יציאה ממצב התקשרות חזרה בחירום"</string>
     <string name="alert_dialog_yes" msgid="3532525979632841417">"כן"</string>
     <string name="alert_dialog_no" msgid="1075632654085988420">"לא"</string>
-    <string name="alert_dialog_dismiss" msgid="1336356286354517054">"סגירה"</string>
+    <string name="alert_dialog_dismiss" msgid="1336356286354517054">"סגור"</string>
     <string name="phone_in_ecm_call_notification_text_without_data_restriction_hint" msgid="3747860785153531225">"הטלפון במצב \'התקשרות בחזרה בחירום\'"</string>
     <string name="phone_in_ecm_notification_complete_time_without_data_restriction_hint" msgid="3690292264812050858">"עד <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm_without_data_restriction_hint" formatted="false" msgid="6477733043040328640">
@@ -668,10 +667,10 @@
     <string name="other_settings" msgid="8895088007393598447">"הגדרות שיחה אחרות"</string>
     <string name="calling_via_template" msgid="1791323450703751750">"שיחה באמצעות <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="7885089213135154834">"תמונה של איש קשר"</string>
-    <string name="goPrivate" msgid="4645108311382209551">"מעבר לשיחה פרטית"</string>
-    <string name="selectContact" msgid="1527612842599767382">"בחירת איש קשר"</string>
+    <string name="goPrivate" msgid="4645108311382209551">"עבור לשיחה פרטית"</string>
+    <string name="selectContact" msgid="1527612842599767382">"בחר איש קשר"</string>
     <string name="not_voice_capable" msgid="2819996734252084253">"חיוג קולי אינו נתמך"</string>
-    <string name="description_dial_button" msgid="8614631902795087259">"חויג"</string>
+    <string name="description_dial_button" msgid="8614631902795087259">"חייג"</string>
     <string name="description_dialpad_button" msgid="7395114120463883623">"הצגת לוח החיוג"</string>
     <string name="pane_title_emergency_dialpad" msgid="3627372514638694401">"לוח חיוג לחירום"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="6610414098912832120">"דואר קולי ויזואלי"</string>
@@ -679,10 +678,10 @@
     <string name="voicemail_change_pin_dialog_title" msgid="4633077715231764435">"שינוי קוד הגישה"</string>
     <string name="preference_category_ringtone" msgid="8787281191375434976">"רינגטון ורטט"</string>
     <string name="pstn_connection_service_label" msgid="9200102709997537069">"‏כרטיסי SIM מובנים"</string>
-    <string name="enable_video_calling_title" msgid="7246600931634161830">"הפעלת שיחות וידאו"</string>
+    <string name="enable_video_calling_title" msgid="7246600931634161830">"הפעל שיחות וידאו"</string>
     <string name="enable_video_calling_dialog_msg" msgid="7141478720386203540">"‏כדי להפעיל שיחת וידאו, עליך להפעיל את \'מצב 4G LTE משופר\' ב\'הגדרות רשת\'."</string>
     <string name="enable_video_calling_dialog_settings" msgid="8697890611305307110">"הגדרות רשת"</string>
-    <string name="enable_video_calling_dialog_close" msgid="4298929725917045270">"סגירה"</string>
+    <string name="enable_video_calling_dialog_close" msgid="4298929725917045270">"סגור"</string>
     <string name="sim_label_emergency_calls" msgid="9078241989421522310">"שיחות חירום"</string>
     <string name="sim_description_emergency_calls" msgid="5146872803938897296">"שיחות חירום בלבד"</string>
     <string name="sim_description_default" msgid="7474671114363724971">"‏כרטיס SIM, חריץ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
@@ -693,7 +692,7 @@
     <string name="message_decode_error" msgid="1061856591500290887">"אירעה שגיאה בעת פענוח ההודעה."</string>
     <string name="callFailed_cdma_activation" msgid="5392057031552253550">"‏כרטיס SIM הפעיל את השירות שלך ועדכן את יכולות הנדידה של הטלפון."</string>
     <string name="callFailed_cdma_call_limit" msgid="1074219746093031412">"יש יותר מדי שיחות פעילות. כדי להתחיל שיחה חדשה עליך לסיים או למזג חלק מהשיחות הפעילות."</string>
-    <string name="callFailed_imei_not_accepted" msgid="7257903653685147251">"‏לא ניתן להתחבר. יש להכניס כרטיס SIM תקין."</string>
+    <string name="callFailed_imei_not_accepted" msgid="7257903653685147251">"‏לא ניתן להתחבר. הכנס כרטיס SIM תקין."</string>
     <string name="callFailed_wifi_lost" msgid="1788036730589163141">"‏השיחה הסתיימה כי החיבור לרשת ה-Wi-Fi נותק."</string>
     <string name="dialFailed_low_battery" msgid="6857904237423407056">"אי אפשר לבצע את שיחת הווידאו מכיוון שהסוללה חלשה."</string>
     <string name="callFailed_low_battery" msgid="4056828320214416182">"שיחת הווידאו הסתיימה מכיוון שהסוללה חלשה."</string>
@@ -703,12 +702,12 @@
     <string name="change_pin_continue_label" msgid="5177011752453506371">"המשך"</string>
     <string name="change_pin_cancel_label" msgid="2301711566758827936">"ביטול"</string>
     <string name="change_pin_ok_label" msgid="6861082678817785330">"אישור"</string>
-    <string name="change_pin_enter_old_pin_header" msgid="853151335217594829">"אישור קוד הגישה הישן"</string>
-    <string name="change_pin_enter_old_pin_hint" msgid="8801292976275169367">"יש להזין את קוד הגישה לדואר הקולי כדי להמשיך."</string>
-    <string name="change_pin_enter_new_pin_header" msgid="4739465616733486118">"הגדרת קוד גישה חדש"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="853151335217594829">"אשר את קוד הגישה הישן"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8801292976275169367">"הזן את קוד הגישה לדואר הקולי כדי להמשיך."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="4739465616733486118">"הגדר קוד גישה חדש"</string>
     <string name="change_pin_enter_new_pin_hint" msgid="2326038476516364210">"האורך של קוד הגישה חייב להיות <xliff:g id="MAX">%2$d</xliff:g>-<xliff:g id="MIN">%1$d</xliff:g> ספרות."</string>
-    <string name="change_pin_confirm_pin_header" msgid="2606303906320705726">"אישור קוד הגישה"</string>
-    <string name="change_pin_confirm_pins_dont_match" msgid="305164501222587215">"קודי הגישה לא תואמים"</string>
+    <string name="change_pin_confirm_pin_header" msgid="2606303906320705726">"אשר את קוד הגישה"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="305164501222587215">"קודי הגישה אינם תואמים"</string>
     <string name="change_pin_succeeded" msgid="2504705600693014403">"קוד הגישה לדואר הקולי עודכן"</string>
     <string name="change_pin_system_error" msgid="7772788809875146873">"לא ניתן להגדיר את קוד הגישה"</string>
     <string name="mobile_data_status_roaming_turned_off_subtext" msgid="6840673347416227054">"חבילת הגלישה בנדידה הושבתה"</string>
@@ -907,7 +906,7 @@
     <string name="radio_info_data_network_type_label" msgid="8886597029237501929">"סוג רשת נתונים:"</string>
     <string name="phone_index_label" msgid="6222406512768964268">"בחירת אינדקס טלפון"</string>
     <string name="radio_info_set_perferred_label" msgid="7408131389363136210">"הגדרת סוג רשת מועדף:"</string>
-    <string name="radio_info_ping_hostname_v4" msgid="6951237885381284790">"‏נדנוד לשם המארח (www.google.com) מסוג IPv4:"</string>
+    <string name="radio_info_ping_hostname_v4" msgid="6951237885381284790">"‏נדנד לשם המארח (www.google.com) מסוג IPv4:"</string>
     <string name="radio_info_ping_hostname_v6" msgid="2748637889486554603">"‏נדנוד לשם המארח (www.google.com) מסוג IPv6:"</string>
     <string name="radio_info_http_client_test" msgid="1329583721088428238">"‏בדיקת לקוח HTTP:"</string>
     <string name="ping_test_label" msgid="448617502935719694">"הפעלת בדיקת פינג"</string>
@@ -921,11 +920,12 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"‏תומך ב-5G NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"‏מצב 5G NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"‏תדירות 5G NR:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"הגדרת החלוקה לפרוסות ברשת:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"הגדרת מצב תדרים של רדיו"</string>
-    <string name="band_mode_loading" msgid="795923726636735967">"הטעינה של רשימת התדרים מתבצעת…"</string>
+    <string name="band_mode_loading" msgid="795923726636735967">"טוען רשימת תדרים…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"הגדרה"</string>
     <string name="band_mode_failed" msgid="1707488541847192924">"נכשל"</string>
-    <string name="band_mode_succeeded" msgid="2230018000534761063">"המעבר הצליח"</string>
+    <string name="band_mode_succeeded" msgid="2230018000534761063">"עבר בהצלחה"</string>
     <string name="phone_info_label" product="tablet" msgid="7477478709388477397">"פרטי טאבלט"</string>
     <string name="phone_info_label" product="default" msgid="1784175881556791433">"פרטי טלפון"</string>
     <string name="carrier_provisioning" msgid="2668065041869578376">"פרטי ניהול תצורה של ספק סלולרי"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 6d65ce7..c304b74 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -75,7 +75,7 @@
     <string name="phone_accounts_configure_account_settings" msgid="6622119715253196586">"アカウントを設定"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="1609600743500618823">"すべての通話アカウント"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="2214134955430107240">"通話できるアカウントを選択"</string>
-    <string name="wifi_calling" msgid="3650509202851355742">"Wi-Fi 通話"</string>
+    <string name="wifi_calling" msgid="3650509202851355742">"Wi-Fi通話"</string>
     <string name="connection_service_default_label" msgid="7332739049855715584">"組み込みの接続サービス"</string>
     <string name="voicemail" msgid="7697769412804195032">"ボイスメール"</string>
     <string name="voicemail_settings_with_label" msgid="4228431668214894138">"ボイスメール(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -490,7 +490,7 @@
     <string name="newPinLabel" msgid="3585899083055354732">"新しいPIN"</string>
     <string name="confirmPinLabel" msgid="7783531218662473778">"新しいPINを確認"</string>
     <string name="badPin" msgid="4549286285015892321">"入力した古いPINは正しくありません。入力し直してください。"</string>
-    <string name="mismatchPin" msgid="1467254768290323845">"入力した PIN が一致しません。入力し直してください。"</string>
+    <string name="mismatchPin" msgid="1467254768290323845">"入力したPINは一致しません。入力し直してください。"</string>
     <string name="invalidPin" msgid="7363723429414001979">"4~8桁の数字のPINを入力してください。"</string>
     <string name="disable_sim_pin" msgid="3112303905548613752">"SIM PINの消去"</string>
     <string name="enable_sim_pin" msgid="445461050748318980">"SIM PINの設定"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"通話を発信するには、モバイル ネットワークを ON にし、機内モードまたはバッテリー セーバー モードを OFF にしてください。"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"電話をかけるには機内モードをオフにしてください。"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"電話をかけるには、機内モードをオフにするか無線ネットワークに接続してください。"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"スマートフォンが熱くなりすぎています"</b>\n\n"この通話を完了できません。スマートフォンの熱が冷めてから、もう一度お試しください。\n\n緊急通報は通常どおり発信できます。"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"緊急通報以外の通話を発信するには、緊急通報待機モードを終了してください。"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"ご加入の通信サービスがありません"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"モバイルネットワークが利用できません。"</string>
@@ -682,7 +681,7 @@
     <string name="sim_description_default" msgid="7474671114363724971">"SIMカード、スロット: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="7883415189273700298">"ユーザー補助機能"</string>
     <string name="status_hint_label_incoming_wifi_call" msgid="2606052595898044071">"Wi-Fi 通話の着信"</string>
-    <string name="status_hint_label_wifi_call" msgid="942993035689809853">"Wi-Fi 通話"</string>
+    <string name="status_hint_label_wifi_call" msgid="942993035689809853">"Wi-Fi通話"</string>
     <string name="emergency_action_launch_hint" msgid="2762016865340891314">"開くにはもう一度タップしてください"</string>
     <string name="message_decode_error" msgid="1061856591500290887">"メッセージのデコード中にエラーが発生しました。"</string>
     <string name="callFailed_cdma_activation" msgid="5392057031552253550">"SIMカードでサービスが有効になり、スマートフォンのローミング機能が更新されています。"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR 利用可能:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR ステータス:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR 周波数:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"無線バンドモードの設定"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"バンドリストを読み込み中…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"設定"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index dfd6c9a..2b6a1f6 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"დასარეკად ჩართეთ მობილური ქსელი, გამორთეთ თვითმფრინავის რეჟიმი ან ბატარეის დაზოგვის რეჟიმი."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ზარის განსახორციელებლად, გამორთეთ თვითმფრინავის რეჟიმი."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ზარის განსახორციელებლად, გამორთეთ თვითმფრინავის რეჟიმი ან დაუკავშირდით უსადენო ქსელს."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ტელეფონი ძალიან ცხელია"</b>\n\n"ამ ზარის დასრულება შეუძლებელია. სცადეთ ხელახლა, როდესაც ტელეფონი გაგრილდება.\n\nგადაუდებელი ზარების განხორციელება მაინც შეგიძლიათ."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"გამოდით გადაუდებელი გადმორეკვის რეჟიმიდან არაგადაუდებელი ზარის განსახორციელებლად."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"ქსელში რეგისტრირებული არ არის."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"მობილური ქსელი მიუწვდომელია."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ხელმისაწვდომია:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-ის მდგომარეობა:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-ის სიხშირე:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"რადიოდიაპაზონის რეჟიმის დაყენება"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"მიმდინარეობს დიაპაზონთა სიის ჩატვირთვა…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"დაყენება"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index c5542b1..d488dcd 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Қоңырау шалу мүмкін болуы үшін мобильдік байланысты қосып, ұшақ режимін немесе батарея үнемдеу режимін өшіріңіз."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Қоңырау шалу үшін ұшақ режимін өшіріңіз."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Қоңырау шалу үшін ұшақ режимін өшіріңіз не сымсыз желіге қосылыңыз."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Телефон қызып кетті"</b>\n\n"Қоңырауды аяқтау мүмкін емес. Телефон суығаннан кейін, әрекетті қайталап көріңіз.\n\nҚұтқару қызметіне қоңырау шалу бұрынғыша мүмкін болады."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Төтенше емес қоңырау шалу үшін төтенше қоңырауды кері шалу режимінен шығыңыз."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Желіде тіркелмеген."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Ұялы желі қол жетімсіз."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR қолжетімді:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR күйі:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR жиілігі:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Радиожолақ режимін орнату"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Жолақтар тізімі жүктелуде…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Орнату"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index fb246f9..c280faa 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"បើក​បណ្ដាញ​ទូរសព្ទ​ចល័ត បិទ​មុខងារ​ពេល​ជិះ​យន្តហោះ ឬ​បិទ​មុខងារ​កម្មវិធី​សន្សំថ្ម ដើម្បី​ហៅ​ទូរសព្ទ។"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"បិទរបៀបយន្តហោះដើម្បីធ្វើការហៅ។"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"បិទរបៀបយន្តហោះ ឬភ្ជាប់ទៅបណ្តាញឥតខ្សែដើម្បីធ្វើការហៅ។"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ទូរសព្ទ​ក្ដៅ​ពេក"</b>\n\n"មិន​អាច​ធ្វើការហៅ​ទូរសព្ទ​នេះ​បាន​ទេ។ សូម​ព្យាយាម​ម្ដង​ទៀត នៅ​ពេល​ទូរសព្ទ​របស់​អ្នក​ចុះ​ត្រជាក់។\n\nអ្នក​នៅ​តែ​អាច​ធ្វើ​ការហៅ​ទៅ​លេខ​សង្គ្រោះ​បន្ទាន់​បាន។"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ចាកចេញពីរបៀបហៅទៅវិញពេលមានអាសន្នដើម្បីធ្វើការហៅធម្មតា។"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"មិន​បាន​ចុះ​ឈ្មោះ​នៅ​លើ​បណ្ដាញ។"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"បណ្ដាញ​​ឧបករណ៍​​ចល័ត​មិន​អាច​ប្រើ​បាន​។"</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"មាន NR៖"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"ស្ថានភាព NR៖"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"កម្រិត​ញឹកញាប់​នៃ NR៖"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"ការកំណត់រចនាសម្ព័ន្ធ​ការបែងចែកបណ្ដាញ៖"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"កំណត់​មុខងារ​កម្រិត​បញ្ជូន​វិទ្យុ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"កំពុងដំណើរការបញ្ជីក្រុម…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"កំណត់"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 44cca2b..ced50c5 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -61,7 +61,7 @@
     <string name="labelGsmMore_with_label" msgid="3206015314393246224">"GSM ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="7937441382611224632">"CDMA ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="labelCdmaMore_with_label" msgid="7759692829160238152">"CDMA ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="apn_settings" msgid="1978652203074756623">"ಆ್ಯಕ್ಸೆಸ್ ಪಾಯಿಂಟ್ ಹೆಸರುಗಳು"</string>
+    <string name="apn_settings" msgid="1978652203074756623">"ಪ್ರವೇಶಿಸುವಿಕೆ ಕೇಂದ್ರದ ಹೆಸರುಗಳು"</string>
     <string name="settings_label" msgid="9101778088412567956">"ನೆಟ್‌ವರ್ಕ್‌ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="phone_accounts" msgid="1216879437523774604">"ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು"</string>
     <string name="phone_accounts_make_calls_with" msgid="16747814788918145">"ಇದರೊಂದಿಗೆ ಕರೆಗಳನ್ನು ಮಾಡಿ"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"ಕರೆ ಮಾಡಲು ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್ ಆನ್ ಮಾಡಿ, ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಅಥವಾ ಬ್ಯಾಟರಿ ಉಳಿತಾಯ ಮೋಡ್ ಅನ್ನು ಆಫ್ ಮಾಡಿ."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ಕರೆ ಮಾಡಲು ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ ಅಥವಾ ಕರೆ ಮಾಡಲು ವೈರ್‌ಲೆಸ್ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ಫೋನ್ ತುಂಬಾ ಬಿಸಿಯಾಗಿದೆ"</b>\n\n"ಈ ಕರೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಫೋನ್ ತಣ್ಣಗಾದ ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.\n\nನೀವು ಈಗಲೂ ತುರ್ತು ಕರೆಗಳನ್ನು ಮಾಡಬಹುದು."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ತುರ್ತು ರಹಿತ ಕರೆಯನ್ನು ಮಾಡಲು ತುರ್ತು ಮರು ಕರೆಮಾಡುವಿಕೆ ಮೋಡ್ ಅನ್ನು ನಿರ್ಗಮಿಸಿ."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಇನ್ನೂ ನೋಂದಣಿಯಾಗಿಲ್ಲ."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"ಮೊಬೈಲ್‌ ನೆಟ್‌ವರ್ಕ್‌ ಲಭ್ಯವಿಲ್ಲ."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ಲಭ್ಯವಿದೆ:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR ಸ್ಥಿತಿ:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ಫ್ರೀಕ್ವೆನ್ಸಿ:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"ರೇಡಿಯೋ ಬ್ಯಾಂಡ್ ಮೋಡ್ ಹೊಂದಿಸಿ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ಬ್ಯಾಂಡ್ ಪಟ್ಟಿಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ಹೊಂದಿಸಿ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 52ad67b..541dc23 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"전화를 걸려면 모바일 네트워크를 사용 설정하고 비행기 모드 또는 절전 모드를 사용 중지하세요."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"전화를 걸려면 비행기 모드를 사용 중지하세요."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"전화를 걸려면 비행기 모드를 사용 중지하거나 무선 네트워크에 연결하세요."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"휴대전화의 온도가 너무 높습니다."</b>\n\n"현재 전화를 걸 수 없습니다. 휴대전화의 온도가 내려가면 다시 시도해 보세요.\n\n긴급 전화 기능은 계속해서 사용할 수 있습니다."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"일반 전화를 걸려면 긴급 콜백 모드를 해제하세요."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"네트워크에서 등록되지 않았습니다."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"모바일 네트워크를 사용할 수 없습니다."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR 사용 가능:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR 상태:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR 빈도:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"무선 주파수 대역 모드 설정"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"대역 목록 로드 중…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"설정"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index c4ea6fa..5d533a6 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Мобилдик тармакты күйгүзүңүз, чалуу үчүн \"Учакта\" режимин же \"Батареяны үнөмдөө\" режимин өчүрүңүз."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Чалуу үчүн учак режимин өчүрүңүз."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Чалуу үчүн учак режимин өчүрүңүз же зымсыз тармакка туташыңыз."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Телефон ысып кетти"</b>\n\n"Бул чалуу аяктабай жатат. Телефон муздагандан кийин кайра аракет кылыңыз.\n\nШашылыш чалууларды аткара берсеңиз болот."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Кадимки шартта чалуу үчүн шашылыш кайра чалуу режиминен чыгыңыз."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Тармакта катталган эмес."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Мобилдик тармак жок."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR жеткиликтүү:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR абалы:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR жыштыгы:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Радио жыштыгынын режимин коюу"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Жыштык режиминин тизмеси жүктөлүүдө…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Жөндөө"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index a7b1640..d09086d 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"ເປີດໃຊ້ເຄືອຂ່າຍມືຖື, ປິດໂໝດຢູ່ໃນຍົນ ຫຼື ປິດໂໝດຕົວປະຢັດແບັດເຕີຣີເພື່ອໂທ."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ປິດໂໝດເຄື່ອງບິນເພື່ອເຮັດການໂທ."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ປິດໂໝດເຄື່ອງບິນ ຫຼືເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍໄຮ້ສາຍເພື່ອເຮັດການໂທ."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ໂທລະສັບຮ້ອນເກີນໄປ"</b>\n\n"ບໍ່ສາມາດເຮັດການໂທນີ້ໄດ້. ກະລຸນາລອງອີກຄັ້ງເມື່ອໂທລະສັບຂອງທ່ານເຢັນລົງ.\n\nທ່ານຍັງສາມາດໂທສຸກເສີນໄດ້."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ອອກ​ຈາກໂໝດ​ໂທ​ກັບ​ສຸກ​ເສີນ ເພື່ອ​ເຮັດ​ການ​ໂທ​ປົກກະຕິ."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"ບໍ່ໄດ້ລົງທະບຽນໃນເຄືອຂ່າຍ."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"ເຄືອຂ່າຍມືຖືບໍ່ສາມາດໃຊ້ໄດ້."</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"ມີ NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"ສະຖານະ NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"ຄວາມຖີ່ NR:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"ການກຳນົດການແບ່ງສ່ວນເຄືອຂ່າຍ:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ຕັ້ງໂໝດແຖບຄວາມຖີ່ວິທະຍຸ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ກຳລັງດາວໂຫລດລາຍຊື່ແຖບຄວາມຖີ່..."</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ກຳນົດ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 44e358f..c0b663b 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Įjunkite mobiliojo ryšio tinklą, išjunkite lėktuvo arba akumuliatoriaus tausojimo priemonės režimą, kad galėtumėte skambinti."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Išjunkite lėktuvo režimą, kad galėtumėte skambinti."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Išjunkite lėktuvo režimą arba prisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefonas per karštas"</b>\n\n"Negalima užbaigti šio skambučio. Bandykite dar kartą, kai telefonas atvės.\n\nJūs vis dar galite skambinti pagalbos numeriais."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Jei norite skambinti ne pagalbos numeriu, išjunkite atgalinio skambinimo pagalbos numeriu režimą."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Neregistruota tinkle."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilusis tinklas negalimas."</string>
@@ -921,6 +920,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR (pasiekiama):"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR būsena:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR dažnis:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Nustatyti radijo dažnių režimą"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Įkeliamas dažnių sąrašas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Nustatyti"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 5fe13bb..2d710a7 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Lai veiktu zvanu, ieslēdziet mobilo tīklu, izslēdziet lidojuma režīmu vai izslēdziet akumulatora enerģijas taupīšanas režīmu."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Lai veiktu zvanu, izslēdziet lidojuma režīmu."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Lai veiktu zvanu, izslēdziet lidojuma režīmu vai izveidojiet savienojumu ar bezvadu tīklu."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Tālrunis ir pārkarsis"</b>\n\n"Nevar veikt šo zvanu. Kad tālrunis būs atdzisis, mēģiniet vēlreiz.\n\nJoprojām varat veikt ārkārtas izsaukumus."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Lai veiktu parastu zvanu, izejiet no ārkārtas atzvana režīma."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Tīklā nav reģistrēts."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilais tīkls nav pieejams."</string>
@@ -918,6 +917,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR pieejamība:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR statuss:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR biežums:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Radio frekvenču joslu režīma iestatīšana"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Notiek joslu saraksta ielāde…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Iestatīt"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index b8f98df..7f72fa5 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Вклучете мобилна мрежа, исклучете го авионскиот режим или пак, штедачот на батеријата за да воспоставите повик."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Исклучете го авионскиот режим за да повикате."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Исклучете го авионскиот режим или поврзете се на безжична мрежа за да повикате."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Телефонот е премногу загреан"</b>\n\n"Повиков не може да се заврши. Обидете се повторно кога ќе се подизлади телефонот.\n\nСѐ уште може да воспоставувате итни повици."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Излезете од режимот на итен повратен повик за да направите обичен повик."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Не е регистриран на мрежа."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Не е достапна мобилна мрежа."</string>
@@ -615,9 +614,9 @@
     <string name="ota_title_activate" msgid="4049645324841263423">"Активирај го телефонот"</string>
     <string name="ota_touch_activate" msgid="838764494319694754">"Треба да се направи посебен повик за да ја активирате вашата телефонска услуга. \n\nПо притискање на „Активирај“, слушнете ги упатствата дадени за да го активирате вашиот телефон."</string>
     <string name="ota_hfa_activation_title" msgid="3300556778212729671">"Се активира..."</string>
-    <string name="ota_hfa_activation_dialog_message" msgid="7921718445773342996">"Телефонот ја активира услугата за мобилен интернет.\n\nОва може да потрае до 5 минути."</string>
+    <string name="ota_hfa_activation_dialog_message" msgid="7921718445773342996">"Телефонот ја активира услугата за мобилни податоци.\n\nОва може да потрае до 5 минути."</string>
     <string name="ota_skip_activation_dialog_title" msgid="7666611236789203797">"Прескокни активација?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Ако ја прескокнете активацијата, не може да воспоставувате повици или да се поврзувате на мрежи за мобилен интернет (иако може да се поврзувате со Wi-Fi мрежи). Додека не го активирате вашиот телефон, ќе ви стигнува порака да го активирате секој пат кога ќе го вклучите."</string>
+    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Ако ја прескокнете активацијата, не може да воспоставувате повици или да се поврзувате на мрежи за мобилни податоци (иако може да се поврзувате со Wi-Fi мрежи). Додека не го активирате вашиот телефон, ќе ви стигнува порака да го активирате секој пат кога ќе го вклучите."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="5908029466817825633">"Прескокни"</string>
     <string name="ota_activate" msgid="7939695753665438357">"Активирај"</string>
     <string name="ota_title_activate_success" msgid="1272135024761004889">"Телефонот е активиран."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Достапно за NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Состојба на NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Фреквенција на NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Поставете режим на појас на радио"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Се вчитува список на појаси…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Постави"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 8572393..4703be3 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"ഒരു കോൾ വിളിക്കാൻ മൊബൈൽ നെറ്റ്‌വർക്ക് ഓണാക്കുകയോ ഫ്ലൈറ്റ് മോഡ് അല്ലെങ്കിൽ ബാറ്ററി ലാഭിക്കൽ മോഡ് ഓഫാക്കുകയോ ചെയ്യുക."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ഒരു കോൾ വിളിക്കാൻ വിമാന മോഡ് ഓഫാക്കുക."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ഒരു കോൾ വിളിക്കാൻ വിമാന മോഡ് ഓഫാക്കുക അല്ലെങ്കിൽ വയർലെസ്സ് നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ഫോൺ വളരെയധികം ചൂടായിരിക്കുന്നു"</b>\n\n"ഈ കോൾ പൂർത്തിയാക്കാനാകില്ല. ഫോൺ തണുക്കുമ്പോൾ വീണ്ടും ശ്രമിക്കുക.\n\nഎമർജൻസി കോളുകൾ നിങ്ങൾക്ക് ഇപ്പോഴും ചെയ്യാവുന്നതാണ്."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"അടിയന്തിരമല്ലാത്ത കോൾ ചെയ്യാൻ അടിയന്തിര കോൾബാക്ക് മോഡിൽ നിന്ന് പുറത്തുകടക്കുക."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"നെറ്റ്‌വർക്കിൽ രജിസ്റ്റർ ചെയ്‌തിട്ടില്ല."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"മൊബൈൽ നെറ്റ്‌വർക്ക് ലഭ്യമല്ല."</string>
@@ -878,8 +877,8 @@
     <string name="radioInfo_cid" msgid="1423185536264406705">"CID"</string>
     <string name="radio_info_subid" msgid="6839966868621703203">"നിലവിലെ ഉപ‌ഐഡി:"</string>
     <string name="radio_info_dds" msgid="1122593144425697126">"ഡിഫോൾട്ട് ഡാറ്റാ സിമ്മിന്റെ ഉപഐഡി:"</string>
-    <string name="radio_info_dl_kbps" msgid="2382922659525318726">"DL ബാൻഡ്‌വിഡ്‌ത് (kbps):"</string>
-    <string name="radio_info_ul_kbps" msgid="2102225400904799036">"UL ബാൻഡ്‌വിഡ്‌ത് (kbps):"</string>
+    <string name="radio_info_dl_kbps" msgid="2382922659525318726">"DL ബാൻഡ്‌വിത്ത് (kbps):"</string>
+    <string name="radio_info_ul_kbps" msgid="2102225400904799036">"UL ബാൻഡ്‍വിത്ത് (kbps):"</string>
     <string name="radio_info_phy_chan_config" msgid="1277949603275436081">"LTE ഫിസിക്കൽ ചാനൽ കോൺഫിഗറേഷൻ:"</string>
     <string name="radio_info_cell_info_refresh_rate" msgid="670511448975997340">"സെൽ വിവരങ്ങൾ പുതുക്കിയെടുക്കൽ നിരക്ക്:"</string>
     <string name="radio_info_cellinfo_label" msgid="8199062974670377659">"എല്ലാ സെൽ അളവ് വിവരങ്ങളും:"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ലഭ്യം:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR നില:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ഫ്രീക്വൻസി:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"റേഡിയോ ബാൻഡ് മോഡ് സജ്ജീകരിക്കുക"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ബാൻഡ് ലിസ്‌റ്റ് ലോഡ് ചെയ്യുന്നു…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"സജ്ജീകരിക്കുക"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 48ac8c0..783c821 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -49,7 +49,7 @@
     <string name="add_vm_number_str" msgid="7368168964435881637">"Дугаар нэмэх"</string>
     <string name="voice_number_setting_primary_user_only" msgid="3394706575741912843">"Дуут шуудангийн тохиргоог зөвхөн Үндсэн хэрэглэгч өөрчлөх боломжтой."</string>
     <string name="puk_unlocked" msgid="4627340655215746511">"Таны SIM карт тайлагдлаа. Таны утас тайлагдаж байна…"</string>
-    <string name="label_ndp" msgid="7617392683877410341">"SIM сүлжээ тайлах ПИН"</string>
+    <string name="label_ndp" msgid="7617392683877410341">"SIM сүлжээ тайлах PIN"</string>
     <string name="label_phoneid" msgid="8775611434123577808">"Операторын SIM түгжигдсэн"</string>
     <string name="sim_ndp_unlock_text" msgid="7737338355451978338">"Тайлах"</string>
     <string name="sim_ndp_dismiss_text" msgid="89667342248929777">"Алгасах"</string>
@@ -162,15 +162,15 @@
     <string name="no_change" msgid="3737264882821031892">"Ямар ч өөрчлөлт хийгдсэнгүй."</string>
     <string name="sum_voicemail_choose_provider" msgid="6750824719081403773">"Дуут шуудангийн үйлчилгээг сонгох"</string>
     <string name="voicemail_default" msgid="6427575113775462077">"Таны оператор компани"</string>
-    <string name="vm_change_pin_old_pin" msgid="7154951790929009241">"Хуучин ПИН"</string>
-    <string name="vm_change_pin_new_pin" msgid="2656200418481288069">"Шинэ ПИН"</string>
+    <string name="vm_change_pin_old_pin" msgid="7154951790929009241">"Хуучин PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="2656200418481288069">"Шинэ PIN"</string>
     <string name="vm_change_pin_progress_message" msgid="626015184502739044">"Түр хүлээнэ үү."</string>
-    <string name="vm_change_pin_error_too_short" msgid="1789139338449945483">"Шинэ ПИН хэт богино байна."</string>
-    <string name="vm_change_pin_error_too_long" msgid="3634907034310018954">"Шинэ ПИН хэт урт байна."</string>
-    <string name="vm_change_pin_error_too_weak" msgid="8581892952627885719">"Шинэ ПИН хэт амархан байна. Сайн нууц үгэнд үргэлжилсэн дараалал буюу давтагдсан цифр ордоггүй."</string>
-    <string name="vm_change_pin_error_mismatch" msgid="5364847280026257331">"Хуучин ПИН таарахгүй байна."</string>
-    <string name="vm_change_pin_error_invalid" msgid="5230002671175580674">"Шинэ ПИН-д буруу тэмдэгт агуулагдаж байна."</string>
-    <string name="vm_change_pin_error_system_error" msgid="9116483527909681791">"ПИН-г өөрчлөх боломжгүй"</string>
+    <string name="vm_change_pin_error_too_short" msgid="1789139338449945483">"Шинэ PIN хэт богино байна."</string>
+    <string name="vm_change_pin_error_too_long" msgid="3634907034310018954">"Шинэ PIN хэт урт байна."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="8581892952627885719">"Шинэ PIN хэт амархан байна. Сайн нууц үгэнд үргэлжилсэн дараалал буюу давтагдсан цифр ордоггүй."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="5364847280026257331">"Хуучин PIN таарахгүй байна."</string>
+    <string name="vm_change_pin_error_invalid" msgid="5230002671175580674">"Шинэ PIN-д буруу тэмдэгт агуулагдаж байна."</string>
+    <string name="vm_change_pin_error_system_error" msgid="9116483527909681791">"PIN-г өөрчлөх боломжгүй"</string>
     <string name="vvm_unsupported_message_format" msgid="4206402558577739713">"Дэмжигдээгүй мессежийн төрөл, сонсохын тулд <xliff:g id="NUMBER">%s</xliff:g> руу залгана уу."</string>
     <string name="network_settings_title" msgid="7560807107123171541">"Мобайл сүлжээ"</string>
     <string name="label_available" msgid="1316084116670821258">"Боломжтой сүлжээнүүд"</string>
@@ -449,7 +449,7 @@
     <string name="enable_fdn_ok" msgid="5080925177369329827">"FDN идэвхгүйжүүлэх"</string>
     <string name="disable_fdn_ok" msgid="3745475926874838676">"FDN-г идэвхжүүлэх"</string>
     <string name="sum_fdn" msgid="6152246141642323582">"Тогтсон залгах дугааруудыг удирдах"</string>
-    <string name="sum_fdn_change_pin" msgid="3510994280557335727">"FDN хандалтын ПИН-г өөрчлөх"</string>
+    <string name="sum_fdn_change_pin" msgid="3510994280557335727">"FDN хандалтын PIN-г өөрчлөх"</string>
     <string name="sum_fdn_manage_list" msgid="3311397063233992907">"Утасны дугаарын жагсаалтыг удирдах"</string>
     <string name="voice_privacy" msgid="7346935172372181951">"Дууны нууцлал"</string>
     <string name="voice_privacy_summary" msgid="3556460926168473346">"Сайжруулсан нууцлалын төлвийг идэвхжүүлэх"</string>
@@ -475,7 +475,7 @@
     <string name="delete_fdn_contact" msgid="7027405651994507077">"Тогтвортой залгах дугаарыг устгах"</string>
     <string name="deleting_fdn_contact" msgid="6872320570844460428">"Тогтвортой залгах дугаарыг устгаж байна…"</string>
     <string name="fdn_contact_deleted" msgid="1680714996763848838">"Тогтвортой залгах дугаарыг устгав."</string>
-    <string name="pin2_invalid" msgid="2313954262684494442">"Та буруу ПИН оруулсан учир FDN шинэчлэгдсэнгүй."</string>
+    <string name="pin2_invalid" msgid="2313954262684494442">"Та буруу PIN оруулсан учир FDN шинэчлэгдсэнгүй."</string>
     <string name="fdn_invalid_number" msgid="9067189814657840439">"Дугаар <xliff:g id="FDN_NUMBER_LIMIT_LENGTH">%d</xliff:g> цифрээс хэтэрсэн тул FDN-г шинэчлээгүй."</string>
     <string name="pin2_or_fdn_invalid" msgid="7542639487955868181">"FDN шинэчлэгдсэнгүй. PIN2 буруу байсан, эсхүл утасны дугаар зөвшөөрөгдсөнгүй."</string>
     <string name="fdn_failed" msgid="216592346853420250">"ФДН ажиллуулах амжилтгүй."</string>
@@ -483,23 +483,23 @@
     <string name="simContacts_empty" msgid="1135632055473689521">"Таны SIM картанд харилцагчид байхгүй байна."</string>
     <string name="simContacts_title" msgid="2714029230160136647">"Оруулах харилцагчдыг сонгоно уу"</string>
     <string name="simContacts_airplaneMode" msgid="4654884030631503808">"SIM картнаас дугаар импортлохын тулд онгоцны горимыг унтраа"</string>
-    <string name="enable_pin" msgid="967674051730845376">"SIM ПИН Идэвхжүүлэх/идэвхгүйжүүлэх"</string>
-    <string name="change_pin" msgid="3657869530942905790">"SIM ПИН өөрчлөх"</string>
-    <string name="enter_pin_text" msgid="3182311451978663356">"SIM ПИН:"</string>
-    <string name="oldPinLabel" msgid="8618515202411987721">"Хуучин ПИН"</string>
-    <string name="newPinLabel" msgid="3585899083055354732">"Шинэ ПИН"</string>
-    <string name="confirmPinLabel" msgid="7783531218662473778">"Шинэ ПИН-г баталгаажуулах"</string>
-    <string name="badPin" msgid="4549286285015892321">"Таны оруулсан хуучин ПИН буруу байна. Дахин оролдоно уу."</string>
-    <string name="mismatchPin" msgid="1467254768290323845">"Таны оруулсан ПИН таарахгүй байна. Дахин оролдоно уу."</string>
-    <string name="invalidPin" msgid="7363723429414001979">"4-с 8 цифртэй ПИН оруулна уу"</string>
-    <string name="disable_sim_pin" msgid="3112303905548613752">"SIM-ний ПИН-г цэвэрлэх"</string>
+    <string name="enable_pin" msgid="967674051730845376">"SIM PIN Идэвхжүүлэх/идэвхгүйжүүлэх"</string>
+    <string name="change_pin" msgid="3657869530942905790">"SIM PIN өөрчлөх"</string>
+    <string name="enter_pin_text" msgid="3182311451978663356">"SIM PIN:"</string>
+    <string name="oldPinLabel" msgid="8618515202411987721">"Хуучин PIN"</string>
+    <string name="newPinLabel" msgid="3585899083055354732">"Шинэ PIN"</string>
+    <string name="confirmPinLabel" msgid="7783531218662473778">"Шинэ PIN-г баталгаажуулах"</string>
+    <string name="badPin" msgid="4549286285015892321">"Таны оруулсан хуучин PIN буруу байна. Дахин оролдоно уу."</string>
+    <string name="mismatchPin" msgid="1467254768290323845">"Таны оруулсан PIN таарахгүй байна. Дахин оролдоно уу."</string>
+    <string name="invalidPin" msgid="7363723429414001979">"4-с 8 цифртэй PIN оруулна уу"</string>
+    <string name="disable_sim_pin" msgid="3112303905548613752">"SIM-ний PIN-г цэвэрлэх"</string>
     <string name="enable_sim_pin" msgid="445461050748318980">"SIM-ний ПИН-г тохируулах"</string>
     <string name="enable_in_progress" msgid="4135305985717272592">"ПИН-г тохируулж байна..."</string>
-    <string name="enable_pin_ok" msgid="2877428038280804256">"ПИН-г тохирууллаа"</string>
-    <string name="disable_pin_ok" msgid="888505244389647754">"ПИН цэвэрлэгдсэн"</string>
-    <string name="pin_failed" msgid="4527347792881939652">"ПИН буруу байна"</string>
-    <string name="pin_changed" msgid="7291153750090452808">"ПИН шинэчлэгдсэн"</string>
-    <string name="puk_requested" msgid="2061337960609806851">"Нууц үг буруу байна. ПИН код одоо түгжигдсэн. PUK кодыг авах хүсэлт тавигдсан."</string>
+    <string name="enable_pin_ok" msgid="2877428038280804256">"PIN-г тохирууллаа"</string>
+    <string name="disable_pin_ok" msgid="888505244389647754">"PIN цэвэрлэгдсэн"</string>
+    <string name="pin_failed" msgid="4527347792881939652">"PIN буруу байна"</string>
+    <string name="pin_changed" msgid="7291153750090452808">"PIN шинэчлэгдсэн"</string>
+    <string name="puk_requested" msgid="2061337960609806851">"Нууц үг буруу байна. PIN код одоо түгжигдсэн. PUK кодыг авах хүсэлт тавигдсан."</string>
     <string name="enter_pin2_text" msgid="7266379426804295979">"PIN2"</string>
     <string name="oldPin2Label" msgid="4648543187859997203">"Хуучин PIN2"</string>
     <string name="newPin2Label" msgid="1840905981784453939">"Шинэ PIN2"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Дуудлага хийхийн тулд мобайл сүлжээг асаах, нислэгийн горим буюу батерей хэмнэх горимыг идэвхгүй болгоно уу."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Дуудлага хийхийн тулд онгоцны горимыг унтраа."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Дуудлага хийхийн тулд онгоцны горимыг унтраа эсвэл утасгүй интернетэд холбогдоно уу."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Утас хэт халуун байна"</b>\n\n"Энэ дуудлагыг гүйцээх боломжгүй. Та утсаа хөрсөн үед дахин оролдоно уу.\n\nТа яаралтай дуудлага хийх боломжтой хэвээр байна."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Яаралтай түргэн тусламжийн бус дуудлага хийхийн тулд яаралтай түргэн тусламжийн callback горимоос гарна уу."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Сүлжээнд бүртгэгдээгүй."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Мобайль сүлжээ байхгүй."</string>
@@ -669,8 +668,8 @@
     <string name="description_dialpad_button" msgid="7395114120463883623">"дугаар цуглуулах самбарыг харуулах"</string>
     <string name="pane_title_emergency_dialpad" msgid="3627372514638694401">"Яаралтай тусламжийн дугаар цуглуулах самбар"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="6610414098912832120">"Визуал дуут шуудан"</string>
-    <string name="voicemail_set_pin_dialog_title" msgid="7005128605986960003">"ПИН тохируулах"</string>
-    <string name="voicemail_change_pin_dialog_title" msgid="4633077715231764435">"ПИН өөрчлөх"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="7005128605986960003">"PIN тохируулах"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="4633077715231764435">"PIN өөрчлөх"</string>
     <string name="preference_category_ringtone" msgid="8787281191375434976">"Хонхны ая &amp; Чичиргээ"</string>
     <string name="pstn_connection_service_label" msgid="9200102709997537069">"Суурилагдсан SIM карт"</string>
     <string name="enable_video_calling_title" msgid="7246600931634161830">"Видео дуудлагыг идэвхжүүлэх"</string>
@@ -693,18 +692,18 @@
     <string name="callFailed_low_battery" msgid="4056828320214416182">"Цэнэг бага байгаа тул видео дуудлагыг дуусгасан."</string>
     <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"Энэ байрлалд Wi-Fi дуудлагаар яаралтай дуудлага хийх боломжгүй."</string>
     <string name="callFailed_wfc_service_not_available_in_this_location" msgid="3624536608369524988">"Энэ байрлалд Wi-Fi дуудлага хийх боломжгүй байна."</string>
-    <string name="change_pin_title" msgid="3564254326626797321">"Дуут шуудангийн ПИН-г өөрчлөх"</string>
+    <string name="change_pin_title" msgid="3564254326626797321">"Дуут шуудангийн PIN-г өөрчлөх"</string>
     <string name="change_pin_continue_label" msgid="5177011752453506371">"Үргэлжлүүлэх"</string>
     <string name="change_pin_cancel_label" msgid="2301711566758827936">"Цуцлах"</string>
     <string name="change_pin_ok_label" msgid="6861082678817785330">"OK"</string>
-    <string name="change_pin_enter_old_pin_header" msgid="853151335217594829">"Хуучин ПИН-ээ баталгаажуулна уу"</string>
-    <string name="change_pin_enter_old_pin_hint" msgid="8801292976275169367">"Үргэлжлүүлэхийн тулд дуут шуудангийн ПИН оруулна уу."</string>
-    <string name="change_pin_enter_new_pin_header" msgid="4739465616733486118">"Шинэ ПИН тохируулах"</string>
-    <string name="change_pin_enter_new_pin_hint" msgid="2326038476516364210">"ПИН <xliff:g id="MIN">%1$d</xliff:g> - <xliff:g id="MAX">%2$d</xliff:g> цифртэй байх ёстой."</string>
-    <string name="change_pin_confirm_pin_header" msgid="2606303906320705726">"ПИН кодоо баталгаажуулна уу"</string>
-    <string name="change_pin_confirm_pins_dont_match" msgid="305164501222587215">"ПИН код таарахгүй байна"</string>
-    <string name="change_pin_succeeded" msgid="2504705600693014403">"Дуут шуудангийн ПИН шинэчлэгдсэн"</string>
-    <string name="change_pin_system_error" msgid="7772788809875146873">"ПИН тохируулах боломжгүй"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="853151335217594829">"Хуучин PIN-ээ баталгаажуулна уу"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8801292976275169367">"Үргэлжлүүлэхийн тулд дуут шуудангийн PIN оруулна уу."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="4739465616733486118">"Шинэ PIN тохируулах"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2326038476516364210">"PIN <xliff:g id="MIN">%1$d</xliff:g> - <xliff:g id="MAX">%2$d</xliff:g> цифртэй байх ёстой."</string>
+    <string name="change_pin_confirm_pin_header" msgid="2606303906320705726">"PIN кодоо баталгаажуулна уу"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="305164501222587215">"PIN код таарахгүй байна"</string>
+    <string name="change_pin_succeeded" msgid="2504705600693014403">"Дуут шуудангийн PIN шинэчлэгдсэн"</string>
+    <string name="change_pin_system_error" msgid="7772788809875146873">"PIN тохируулах боломжгүй"</string>
     <string name="mobile_data_status_roaming_turned_off_subtext" msgid="6840673347416227054">"Дата роумингийг идэвхгүй болгосон"</string>
     <string name="mobile_data_status_roaming_turned_on_subtext" msgid="5615757897768777865">"Дата роумингийг асаасан"</string>
     <string name="mobile_data_status_roaming_without_plan_subtext" msgid="6536671968072284677">"Одоо роумингтэй байна, дата багц шаардлагатай"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR боломжтой:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR төлөв:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR давтамж:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Радио мессежийн горимыг тохируулах"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Мессежийн жагсаалтыг ачаалж байна…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Тохируулах"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 78ea7eb..1c32881 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -523,7 +523,7 @@
     <string name="card_title_dialing" msgid="8742182654254431781">"डायल करत आहे"</string>
     <string name="card_title_redialing" msgid="18130232613559964">"रीडायल करत आहे"</string>
     <string name="card_title_conf_call" msgid="901197309274457427">"कॉंफरन्स कॉल"</string>
-    <string name="card_title_incoming_call" msgid="881424648458792430">"इनकमिंग कॉल"</string>
+    <string name="card_title_incoming_call" msgid="881424648458792430">"येणारे कॉल"</string>
     <string name="card_title_call_ended" msgid="650223980095026340">"कॉल संपला"</string>
     <string name="card_title_on_hold" msgid="9028319436626975207">"होल्ड वर"</string>
     <string name="card_title_hanging_up" msgid="814874106866647871">"हँग अप करणेे"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"कॉल करण्‍यासाठी मोबाइल नेटवर्क सुरू करा, विमान मोड बंद करा किंवा बॅटरी बचकर्ता मोड बंद करा."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"कॉल करण्‍यासाठी विमान मोड बंद करा."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"कॉल करण्‍यासाठी विमान मोड बंद करा किंवा वायरलेस नेटवर्कशी कनेक्‍ट करा."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"फोन खूप गरम झाला आहे"</b>\n\n"हा कॉल पूर्ण करू शकत नाही. तुमचा फोन थंड झाल्यावर पुन्हा प्रयत्न करा.\n\nतुम्ही अजूनही आणीबाणी कॉल करू शकता."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"आणीबाणी नसलेला कॉल करण्‍यासाठी आणीबाणी कॉलबॅक मोडमधून बाहेर पडा."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"नेटवर्कवर नोंदणीकृत नाही."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"मोबाइल नेटवर्क उपलब्ध नाही."</string>
@@ -785,8 +784,8 @@
     <string name="call_barring_baoicr_enabled" msgid="1615324165512798478">"जाणारे इंटरनॅशनल रोमिंग ब्लॉक करणे बंद करायचे का?"</string>
     <string name="call_barring_baoicr_disabled" msgid="172010175248142831">"जाणारे इंटरनॅशनल रोमिंग ब्लॉक करायचे का?"</string>
     <string name="call_barring_baic" msgid="7941393541678658566">"सर्व येणारे"</string>
-    <string name="call_barring_baic_enabled" msgid="4357332358020337470">"सर्व इनकमिंग कॉल ब्लॉक करणे बंद करायचे का?"</string>
-    <string name="call_barring_baic_disabled" msgid="2355945245938240958">"सर्व इनकमिंग कॉल ब्लॉक करायचे का?"</string>
+    <string name="call_barring_baic_enabled" msgid="4357332358020337470">"सर्व येणारे कॉल ब्लॉक करणे बंद करायचे का?"</string>
+    <string name="call_barring_baic_disabled" msgid="2355945245938240958">"सर्व येणारे कॉल ब्लॉक करायचे का?"</string>
     <string name="call_barring_baicr" msgid="8712249337313034226">"येणारे इंटरनॅशनल रोमिंग"</string>
     <string name="call_barring_baicr_enabled" msgid="64774270234828175">"सर्व येणारे इंटरनॅशनल रोमिंग ब्लॉक करणे बंद करायचे का?"</string>
     <string name="call_barring_baicr_disabled" msgid="3488129262744027262">"येणारे इंटरनॅशनल रोमिंग ब्लॉक करायचे का?"</string>
@@ -811,7 +810,7 @@
     <string name="supp_service_notification_call_waiting" msgid="4577403881609445324">"कॉल प्रतीक्षेत आहे."</string>
     <string name="supp_service_clir_suppression_rejected" msgid="6105737020194776121">"क्रमांक ब्‍लॉक करणे रद्द केले."</string>
     <string name="supp_service_closed_user_group_call" msgid="2811636666505250689">"बंद वापरकर्ता गट कॉल."</string>
-    <string name="supp_service_incoming_calls_barred" msgid="2034627421274447674">"इनकमिंग कॉल अवरोधित केले."</string>
+    <string name="supp_service_incoming_calls_barred" msgid="2034627421274447674">"येणारे कॉल अवरोधित केले."</string>
     <string name="supp_service_outgoing_calls_barred" msgid="5205725332394087112">"जाणारे कॉल अवरोधित केले."</string>
     <string name="supp_service_call_forwarding_active" msgid="7910162960395132464">"कॉल फॉरवर्ड होत आहे."</string>
     <string name="supp_service_additional_call_forwarded" msgid="8772753260008398632">"अतिरिक्‍त कॉल फॉरवर्ड केला."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR उपलब्ध:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR स्थिती:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR वारंवारता:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"रेडिओ बँड मोड सेट करा"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"बँड सूची लोड करत आहे…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"सेट करा"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 4ddb2e6..c58d6f6 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Hidupkan rangkaian mudah alih, matikan mod pesawat atau matikan mod penjimat bateri untuk membuat panggilan."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Matikan mod pesawat untuk membuat panggilan."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Matikan mod pesawat atau sambungkan ke rangkaian wayarles untuk membuat panggilan."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefon terlalu panas"</b>\n\n"Tidak dapat melengkapkan panggilan ini. Cuba lagi apabila telefon anda menyejuk.\n\nAnda masih boleh membuat panggilan kecemasan."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Keluar daripada mod panggil balik kecemasan untuk membuat panggilan bukan kecemasan."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Tidak didaftarkan pada rangkaian."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Rangkaian mudah alih tidak tersedia."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR Tersedia:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Keadaan NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekuensi NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Tetapkan Mod Jalur Radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Memuatkan Senarai Jalur…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Tetapkan"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index f34f564..16dc582 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -49,7 +49,7 @@
     <string name="add_vm_number_str" msgid="7368168964435881637">"နံပါတ်ထပ်ထည့်ရန်"</string>
     <string name="voice_number_setting_primary_user_only" msgid="3394706575741912843">"အသံမေးလ်ဆက်တင်များကို အဓိကအသုံးပြုသူသာ ပြင်ဆင်နိုင်ပါသည်။"</string>
     <string name="puk_unlocked" msgid="4627340655215746511">"သင့် ဆင်းမ်ကဒ်အား ပိတ်ဆို့မှုကို ဖယ်ရှားပြီးပါပြီ။ သင့်ဖုန်းဟာ သော့ဖွင့်နေပါသည်…"</string>
-    <string name="label_ndp" msgid="7617392683877410341">"ဆင်းမ်ကတ် ကွန်ရက် သော့ဖွင့်သော ပင်နံပါတ်"</string>
+    <string name="label_ndp" msgid="7617392683877410341">"ဆင်းမ်ကဒ် ကွန်ရက် သော့ဖွင့်သော ပင်နံပါတ်"</string>
     <string name="label_phoneid" msgid="8775611434123577808">"အော်ပရေတာအတွက် ဆင်းမ်ကတ်ကို လော့ခ်ချထားသည်"</string>
     <string name="sim_ndp_unlock_text" msgid="7737338355451978338">"ဖွင့်ရန်"</string>
     <string name="sim_ndp_dismiss_text" msgid="89667342248929777">"ပယ်ရန်"</string>
@@ -186,9 +186,9 @@
     <string name="manual_mode_disallowed_summary" msgid="3970048592179890197">"%1$s သို့ ချိတ်ဆက်ထားချိန်တွင် မရရှိနိုင်ပါ"</string>
     <string name="network_select_title" msgid="4117305053881611988">"ကွန်ရက်"</string>
     <string name="register_automatically" msgid="3907580547590554834">"အလိုအလျောက် မှတ်ပုံတင်ခြင်း…"</string>
-    <string name="preferred_network_mode_title" msgid="5253395265169539830">"ဦးစားပေး ကွန်ရက်အမျိုးအစား"</string>
+    <string name="preferred_network_mode_title" msgid="5253395265169539830">"ပိုနှစ်သက်သော ကွန်ရက်အမျိုးအစား"</string>
     <string name="preferred_network_mode_summary" msgid="3787989000044330064">"ကွန်ရက် လုပ်ဆောင်မှုစနစ်အား ပြောင်းပါ"</string>
-    <string name="preferred_network_mode_dialogtitle" msgid="2781447433514459696">"ဦးစားပေး ကွန်ရက်အမျိုးအစား"</string>
+    <string name="preferred_network_mode_dialogtitle" msgid="2781447433514459696">"ပိုနှစ်သက်သော ကွန်ရက်အမျိုးအစား"</string>
     <string name="forbidden_network" msgid="5081729819561333023">"(တားမြစ်ထားသည်)"</string>
     <string name="choose_network_title" msgid="5335832663422653082">"ကွန်ရက် ရွေးရန်"</string>
     <string name="network_disconnected" msgid="8844141106841160825">"ချိတ်ဆက်မှုပြတ်နေပါသည်"</string>
@@ -301,7 +301,7 @@
     <string name="data_usage_template" msgid="6287906680674061783">"<xliff:g id="ID_2">%2$s</xliff:g> အထိ မိုဘိုင်းဒေတာ <xliff:g id="ID_1">%1$s</xliff:g> ကို အသုံးပြုထားပါသည်"</string>
     <string name="advanced_options_title" msgid="9208195294513520934">"အဆင့်မြင့်"</string>
     <string name="carrier_settings_euicc" msgid="1190237227261337749">"ဝန်ဆောင်မှုပေးသူ"</string>
-    <string name="keywords_carrier_settings_euicc" msgid="8540160967922063745">"ဖုန်းကုမ္ပဏီ၊ esim၊ ဆင်းမ်ကတ်၊ euicc၊ ဖုန်းလိုင်းများ ပြောင်းရန်၊ ဖုန်းလိုင်း ထည့်ရန်"</string>
+    <string name="keywords_carrier_settings_euicc" msgid="8540160967922063745">"ဖုန်းကုမ္ပဏီ၊ esim၊ ဆင်းမ်ကဒ်၊ euicc၊ ဖုန်းလိုင်းများ ပြောင်းရန်၊ ဖုန်းလိုင်း ထည့်ရန်"</string>
     <string name="carrier_settings_euicc_summary" msgid="2027941166597330117">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
     <string name="mobile_data_settings_title" msgid="7228249980933944101">"မိုဘိုင်းဒေတာ"</string>
     <string name="mobile_data_settings_summary" msgid="5012570152029118471">"မိုဘိုင်းကွန်ရက်သုံးပြီး ဒေတာကို ဝင်သုံးခွင့်ပေးပါ"</string>
@@ -484,8 +484,8 @@
     <string name="simContacts_title" msgid="2714029230160136647">"ထည့်ယူရန် လိပ်စာများ ရွေးပါ"</string>
     <string name="simContacts_airplaneMode" msgid="4654884030631503808">"SIM ကဒ်မှ အဆက်အသွယ်များ သွင်းယူရန် လေယာဉ်ပျံမုဒ် ပိတ်ထားပါ။"</string>
     <string name="enable_pin" msgid="967674051730845376">"ဆင်းမ် ပင်နံပါတ်ကို ပယ်ဖျက်၊ပြုလုပ်ရန်"</string>
-    <string name="change_pin" msgid="3657869530942905790">"ဆင်းမ်ကတ် ပင်နံပါတ်ပြောင်းရန်"</string>
-    <string name="enter_pin_text" msgid="3182311451978663356">"ဆင်းမ်ကတ် ပင်နံပါတ်:"</string>
+    <string name="change_pin" msgid="3657869530942905790">"ဆင်းမ်ကဒ် ပင်နံပါတ်ပြောင်းရန်"</string>
+    <string name="enter_pin_text" msgid="3182311451978663356">"ဆင်းမ်ကဒ် ပင်နံပါတ်:"</string>
     <string name="oldPinLabel" msgid="8618515202411987721">"ပင်နံပါတ် အဟောင်း"</string>
     <string name="newPinLabel" msgid="3585899083055354732">"ပင်နံပါတ် အသစ်"</string>
     <string name="confirmPinLabel" msgid="7783531218662473778">"ပင်နံပါတ်အသစ်အား သေချာကြောင်း လက်ခံပါ"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"ဖုန်းခေါ်ရန် မိုဘိုင်းကွန်ရက်ဖွင့်ပြီး လေယာဉ်ပျံမုဒ် (သို့) ဘက်ထရီချွေတာရေးမုဒ်ကို ပိတ်ပါ။"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ဖုန်းခေါ်ရန် လေယာဉ်ပျံမုဒ် ပိတ်ထားပါ။"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ဖုန်းခေါ်ရန် လေယာဉ်ပျံမုဒ် ပိတ်ပါ သို့မဟုတ် ကြိုးမဲ့ကွန်ယက်သို့ ချိတ်ဆက်ပါ။"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ဖုန်းအလွန်ပူနေသည်"</b>\n\n"ဤဖုန်းကို ခေါ်ဆို၍မရပါ။ ဖုန်းအေးသွားသောအခါ ထပ်စမ်းကြည့်ပါ။\n\nအရေးပေါ်ဖုန်းခေါ်ခြင်းများ ပြုလုပ်နိုင်သေးသည်။"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"အရေးပေါ် မဟုတ်သည့် ခေါ်ဆိုမှုကို ပြုလုပ်ရန် အရေးပေါ် ဖုန်းခေါ်မှုမှ ထွက်ပါ။"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"ကွန်ယက်ပေါ်မှာ မှတ်ပုံတင်မှု မပြုလုပ်ထားပါ"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"မိုဘိုင်းကွန်ယက်များ မရှိပါ"</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR အသုံးပြုနိုင်သည် -"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR အခြေအနေ -"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ကြိမ်နှုန်း -"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"ကွန်ရက်ခွဲခြားမှု စီစဉ်သတ်မှတ်ချက်-"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ရေဒီယိုလိုင်းမုဒ်အဖြစ် သတ်မှတ်ပါ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ရေဒီယိုလိုင်းစာရင်းကို ဖွင့်နေသည်…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"သတ်မှတ်ရန်"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index a16f582..efce396 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Slå på mobilnettverket, slå av flymodus eller slå av batterisparingsmodus for å ringe ut."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Slå av flymodus for å ringe."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Slå av flymodus eller koble til et trådløst nettverk for å ringe."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefonen er for varm"</b>\n\n"Kan ikke fullføre dette anropet. Prøv igjen når telefonen har kjølt seg ned.\n\nDu kan fortsatt foreta nødanrop."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Avslutt modusen for nødanrop for å gjøre et vanlig anrop."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Ikke registrert på nettverket."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilnettverket er ikke tilgjengelig."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR tilgjengelig:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-tilstand:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-frekvens:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Angi båndmodus for radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Laster inn båndlisten …"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Angi"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index e6d6abc..7e0dac8 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -282,8 +282,8 @@
     <string name="data_enable_summary" msgid="696860063456536557">"डेटा उपयोगलाई अनुमति दिनुहोस्"</string>
     <string name="dialog_alert_title" msgid="5260471806940268478">"ध्यानाकर्षण"</string>
     <string name="roaming" msgid="1576180772877858949">"रोमिङ"</string>
-    <string name="roaming_enable" msgid="6853685214521494819">"रोमिङको समयमा डेटा सेवामा कनेक्ट गर्नुहोस्"</string>
-    <string name="roaming_disable" msgid="8856224638624592681">"रोमिङको समयमा डेटा सेवा कनेक्ट गर्नुहोस्"</string>
+    <string name="roaming_enable" msgid="6853685214521494819">"रोमिङको समयमा डेटा सेवामा जडान गर्नुहोस्"</string>
+    <string name="roaming_disable" msgid="8856224638624592681">"रोमिङको समयमा डेटा सेवा जडान गर्नुहोस्"</string>
     <string name="roaming_reenable_message" msgid="1951802463885727915">"डेटा रोमिङ सक्रिय गरियो। सक्रिय गर्न ट्याप गर्नुहोस्।"</string>
     <string name="roaming_enabled_message" msgid="9022249120750897">"रोमिङ शुल्क लाग्न सक्छ। परिमार्जन गर्न ट्याप गर्नुहोस्"</string>
     <string name="roaming_notification_title" msgid="3590348480688047320">"मोबाइल डेटाको जडान टुट्यो"</string>
@@ -536,12 +536,11 @@
     <string name="notification_network_selection_text" msgid="553288408722427659">"चयन गरिएको नेटवर्क <xliff:g id="OPERATOR_NAME">%s</xliff:g> उपलब्ध छैन"</string>
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"मोबाइल नेटवर्क सक्रिय पार्नुहोस्, कल गर्न हवाइजहाज मोड वा ब्याट्री सेवर मोड निष्क्रिय पार्नुहोस्।"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"एक कल गर्न हवाइजहाज मोड बन्द गर्नुहोस्।"</string>
-    <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"एक कल गर्न हवाइजहाज मोड बन्द गर्नुहोस् वा एक ताररहितको सञ्जालमा कनेक्ट गर्नुहोस्।"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"फोन ज्यादै तातेको छ"</b>\n\n"यो कल जारी राख्न सकिँदैन। फोन सेलाएपछि फेरि प्रयास गर्नुहोस्।\n\nतपाईं अझै पनि आपत्‌कालीन कलहरू गर्न सक्नुहुन्छ।"</string>
+    <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"एक कल गर्न हवाइजहाज मोड बन्द गर्नुहोस् वा एक ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"गैर-आपत्‌कालीन कल गर्न आपत्‌कालीन कलब्याक मोडबाट निस्कनुहोस्।"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"नेटवर्कमा दर्ता भएको छैन।"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"मोबाइल नेटवर्क उपलब्ध छैन।"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"मोबाइल नेटवर्क उपलब्ध छैन। कल गर्न तारविनाको नेटवर्कमा कनेक्ट गर्नुहोस्।"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"मोबाइल नेटवर्क उपलब्ध छैन। कल गर्न तारविनाको नेटवर्कमा जडान गर्नुहोस्।"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"एक कल गर्नको लागि, एक वैध नम्बर प्रविष्टि गर्नुहोस्।"</string>
     <string name="incall_error_call_failed" msgid="393508653582682539">"कल विफल भयो।"</string>
     <string name="incall_error_cannot_add_call" msgid="5425764862628655443">"यतिबेला कल गर्न सकिएन। तपाईंले कुनै सन्देश पठाएर सम्पर्क गर्ने प्रयास गर्न सक्नुहुन्छ।"</string>
@@ -554,7 +553,7 @@
     <string name="incall_error_supp_service_reject" msgid="3044363092441655912">"कल अस्वीकार गर्न सक्दैन।"</string>
     <string name="incall_error_supp_service_hangup" msgid="836524952243836735">"कल (हरू) जारी गर्न सकिँदैन ।"</string>
     <string name="incall_error_supp_service_hold" msgid="8535056414643540997">"कल सञ्चालन गर्न सकिँदैन।"</string>
-    <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"एक कल गर्न एक ताररहितको सञ्जालमा कनेक्ट गर्नुहोस्।"</string>
+    <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"एक कल गर्न एक ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
     <string name="incall_error_promote_wfc" msgid="9164896813931363415">"कल गर्नका लागि Wi-Fi कलिङ सक्षम गर्नुहोस्।"</string>
     <string name="emergency_information_hint" msgid="9208897544917793012">"आपत्‌कालीन जानकारी"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"मालिक"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR उपलब्ध छ:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR को स्थिती:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR फ्रिक्वेन्सी:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"रेडियोको ब्यान्डसम्बन्धी मोडलाई सेट गर्नुहोस्"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ब्यान्डको सूची लोड गर्दै…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"सेट गर्नुहोस्"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 409cd32..c590abd 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Schakel het mobiele netwerk in, schakel de vliegtuigmodus uit of schakel Batterijbesparing uit om te bellen."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Schakel de vliegtuigmodus uit om te bellen."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Schakel de vliegtuigmodus uit of maak verbinding met een draadloos netwerk om te bellen."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefoon te heet"</b>\n\n"Kan dit gesprek niet tot stand brengen. Probeer het opnieuw als je telefoon is afgekoeld.\n\nJe kunt nog steeds noodoproepen plaatsen."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Sluit de modus voor noodoproepen af om een niet-noodoproep te plaatsen."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Niet geregistreerd op netwerk."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobiel netwerk niet beschikbaar."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR beschikbaar:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-status:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-frequentie:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Modus voor radioband instellen"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Bandlijst laden…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Instellen"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index c1966cf..f3b5023 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"କଲ୍ କରିବା ପାଇଁ ମୋବାଇଲ୍ ନେଟ୍‌ୱର୍କକୁ ଚାଲୁ କରନ୍ତୁ, ଏୟାରପ୍ଲେନ୍ ମୋଡ୍‌କୁ ବନ୍ଦ କରନ୍ତୁ କିମ୍ବା ବ୍ୟାଟେରୀ ସେଭର୍‌କୁ ବନ୍ଦ କରନ୍ତୁ।"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ଗୋଟିଏ କଲ୍ କରିବା ପାଇଁ ଏୟାରପ୍ଲେନ୍ ମୋଡ୍‌କୁ ବନ୍ଦ କରନ୍ତୁ।"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ଗୋଟିଏ କଲ୍ କରିବା ପାଇଁ ଏୟାରପ୍ଲେନ୍ ମୋଡ୍‌କୁ ବନ୍ଦ କରନ୍ତୁ କିମ୍ବା ଏକ ତାରବିହୀନ ନେଟ୍‌ୱର୍କ ସହ କନେକ୍ଟ କରନ୍ତୁ।"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ଫୋନଟି ବହୁତ ଗରମ ହୋଇଯାଇଛି"</b>\n\n"ଏହି କଲକୁ ସମ୍ପୂର୍ଣ୍ଣ କରାଯାଇପାରିବ ନାହିଁ। ଆପଣଙ୍କ ଫୋନ୍ ଥଣ୍ଡା ହେବା ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ। \n\nଆପଣ ଏବେ ବି ଜରୁରୀକାଳୀନ କଲ୍ କରିପାରିବେ।"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ଗୋଟିଏ ସାଧାରଣ କଲ୍ କରିବା ପାଇଁ ଜରୁରିକାଳୀନ କଲବ୍ୟାକ୍ ମୋଡ୍‌ରୁ ବାହାରି ଆସନ୍ତୁ।"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"ନେଟ୍‌ୱର୍କରେ ପଞ୍ଜୀକୃତ କରାଯାଇନାହିଁ।"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"ମୋବାଇଲ୍ ନେଟ୍‌ୱର୍କ ଉପଲବ୍ଧ ନାହିଁ।"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ଉପଲବ୍ଧ:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR ସ୍ଥିତି:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ଫ୍ରିକ୍ୱେନ୍ସୀ:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"ରେଡିଓ ବ୍ୟାଣ୍ଡ ମୋଡ୍ ସେଟ୍ କରନ୍ତୁ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ବ୍ୟାଣ୍ଡ ତାଲିକା ଲୋଡ୍ କରାଯାଉଛି…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ସେଟ୍ କରନ୍ତୁ"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 1ee792c..1305a0c 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"ਕਾਲ ਕਰਨ ਲਈ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਚਾਲੂ ਕਰੋ, ਜਹਾਜ਼ ਮੋਡ ਬੰਦ ਕਰੋ ਜਾਂ ਬੈਟਰੀ ਸੇਵਰ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ ਜਾਂ ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਇੱਕ ਵਾਇਰਲੈਸ ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ਫ਼ੋਨ ਬਹੁਤ ਗਰਮ ਹੋ ਗਿਆ ਹੈ"</b>\n\n"ਇਸ ਕਾਲ ਨੂੰ ਪੂਰਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਫ਼ੋਨ ਦੇ ਠੰਡਾ ਹੋਣ ਜਾਣ \'ਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।\n\nਤੁਸੀਂ ਹਾਲੇ ਵੀ ਸੰਕਟਕਾਲੀਨ ਕਾਲਾਂ ਕਰ ਸਕਦੇ ਹੋ।"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ਇੱਕ ਗ਼ੈਰ-ਅਪਾਤਕਾਲ ਕਾਲ ਕਰਨ ਲਈ ਅਪਾਤਕਾਲ ਕਾਲਬੈਕ ਮੋਡ ਤੋਂ ਬਾਹਰ ਆਓ।"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"ਨੈਟਵਰਕ ਤੇ ਰਜਿਸਟਰ ਨਹੀਂ ਕੀਤਾ।"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"ਮੋਬਾਈਲ ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ।"</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ਉਪਲਬਧ:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR ਸਥਿਤੀ:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ਵਾਰਵਾਰਤਾ:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"ਨੈੱਟਵਰਕ ਸਲਾਈਸਿੰਗ ਸੰਰੂਪਣ:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ਰੇਡੀਓ ਬੈਂਡ ਮੋਡ ਸੈੱਟ ਕਰੋ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"ਬੈਂਡ ਸੂਚੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ਸੈੱਟ ਕਰੋ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index ceb9082..03358d9 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Aby zadzwonić, włącz sieć komórkową, wyłącz tryb samolotowy lub wyłącz tryb oszczędzania baterii."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Wyłącz tryb samolotowy, by zadzwonić."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Wyłącz tryb samolotowy lub połącz się z siecią bezprzewodową, by zadzwonić."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefon jest zbyt gorący"</b>\n\n"Nie można nawiązać tego połączenia. Spróbuj ponownie, gdy telefon się ochłodzi.\n\nNadal możesz wykonywać połączenia alarmowe."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Aby zadzwonić normalnie, wyjdź z trybu alarmowego połączenia zwrotnego."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Nie zarejestrowano w sieci"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Sieć komórkowa jest niedostępna."</string>
@@ -921,6 +920,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Dostępne NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Stan NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Częstotliwość NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Ustawianie trybu pasma radiowego"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Ładuję listę pasm…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ustaw"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index db0799d..3e92292 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Ative a rede móvel, desative o modo de avião ou desative o modo de poupança de bateria para fazer uma chamada."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Desative o modo de avião para fazer uma chamada."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Desative o modo de avião ou ligue-se a uma rede sem fios para fazer uma chamada."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"O telemóvel está demasiado quente"</b>\n\n"Não é possível concluir esta chamada. Tente novamente depois de o telemóvel arrefecer.\n\nAinda pode efetuar chamadas de emergência."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Sair do modo de chamada de retorno de emergência para efetuar uma chamada que não é de emergência."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Sem registo na rede."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Rede móvel não disponível."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponível:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Estado NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frequência NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Definir modo de banda de rádio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"A carregar lista de bandas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Definir"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index c2421cf..40eaf23 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Ative a rede móvel e desative o modo avião ou o modo de economia de bateria para ligar."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Desative o modo avião para fazer uma chamada."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Desative o modo avião ou conecte-se a uma rede sem fio para fazer uma chamada."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"O smartphone está muito quente"</b>\n\n"Não é possível completar esta chamada. Tente de novo quando seu smartphone esfriar.\n\nVocê ainda pode fazer chamadas de emergência."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Saia do modo de retorno de chamada de emergência para fazer uma chamada que não seja de emergência."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Não registrado na rede."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Rede móvel não disponível."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR disponível:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Estado do NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frequência do NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Definir modo de banda de rádio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Carregando a lista de bandas…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Definir"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 326cc52..4fc807d 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Activați rețeaua mobilă, dezactivați modul avion sau modul de economisire a bateriei pentru a iniția un apel."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Pentru a apela, dezactivați modul Avion."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Pentru a apela, dezactivați modul Avion sau conectați-vă la o rețea wireless."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefonul este prea fierbinte"</b>\n\n"Nu se poate iniția apelul. Încercați din nou după ce telefonul se răcește.\n\nPuteți, totuși, să inițiați apeluri de urgență."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Ieșiți din modul de apelare inversă de urgență pentru a efectua un apel care nu este de urgență."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Neînregistrat în rețea."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Rețeaua mobilă nu este disponibilă."</string>
@@ -918,6 +917,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Disponibilă NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Stare NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frecvență NR:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Configurația secționării rețelei:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Setați Modul bandă radio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Se încarcă lista de benzi…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Setați"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 4a6ee96..cdbbf6a 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -303,7 +303,7 @@
     <string name="carrier_settings_euicc" msgid="1190237227261337749">"Оператор"</string>
     <string name="keywords_carrier_settings_euicc" msgid="8540160967922063745">"оператор, esim, sim, euicc, сменить оператора, добавить оператора"</string>
     <string name="carrier_settings_euicc_summary" msgid="2027941166597330117">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
-    <string name="mobile_data_settings_title" msgid="7228249980933944101">"Мобильный интернет"</string>
+    <string name="mobile_data_settings_title" msgid="7228249980933944101">"Мобильный Интернет"</string>
     <string name="mobile_data_settings_summary" msgid="5012570152029118471">"Доступ к Интернету по мобильной сети"</string>
     <string name="data_usage_disable_mobile" msgid="5669109209055988308">"Отключить мобильный Интернет?"</string>
     <string name="sim_selection_required_pref" msgid="6985901872978341314">"Выберите SIM-карту"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Чтобы позвонить, подключитесь к мобильной сети или отключите режим полета либо режим энергосбережения."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Чтобы позвонить, отключите режим полета."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Чтобы позвонить, отключите режим полета и подключитесь к Wi-Fi."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Телефон перегрелся."</b>\n\n"Не удалось совершить звонок. Повторите попытку, когда телефон остынет.\n\nЭто не касается экстренных вызовов."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Чтобы сделать обычный звонок, выйдите из режима экстренных обратных вызовов."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Нет регистрации в сети."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Мобильная сеть недоступна."</string>
@@ -921,6 +920,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR доступно:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Состояние NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Частота NR:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Настройки фрагментирования сети:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Настроить режим сети"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Загрузка списка частот…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Сохранить"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 7efc245..0af60b6 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"ජංගම ජාලය ක්‍රියාත්මක කරන්න, ඇමතුමක් ගැනීමට ගුවන් යානා ප්‍රකාරය හෝ බැටරි සුරැකුම් ප්‍රකාරය ක්‍රියාවිරහිත කරන්න."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ඇමතුමක් ගැනීමට ගුවන් යානා මාදිලිය අක්‍රිය කරන්න."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ඇමතුමක් ලබා ගැනීමට ගුවන් යානා මෝඩය අක්‍රිය කරන්න හෝ රැහැන් රහිත ජාලයකට සම්බන්ධ වෙන්න."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"දුරකථනය ඉතා උණුසුම් ය"</b>\n\n"මෙම ඇමතුම සම්පූර්ණ කළ නොහැක. ඔබේ දුරකථනය සිසිල් වන විට නැවත උත්සාහ කරන්න.\n\nඔබට තවමත් හදිසි ඇමතුම් ලබා ගත හැක."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"හදිසි-නොවන ඇමතුමක් සිදු කිරීමට හදිසි අවස්ථා පසු ඇමතුම් ප්‍රකාරයෙන් ඉවත් වන්න."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"ජාලය මත ලියාපදිංචි වී නැත."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"ජංගම ජාලය නොමැත."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ලබා ගත හැකි:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR තත්ත්වය:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR සංඛ්‍යාතය:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"රේඩියෝ කලාප ප්‍රකාරය සකසන්න"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"කලාප ලැයිස්තුව පූරණය කරමින්…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"සකසන්න"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 7f9bc94..6a8a304 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Ak chcete volať, zapnite mobilnú sieť a vypnite režim v lietadle alebo režim šetriča batérie."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Ak chcete volať, vypnite režim v lietadle"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Ak chcete volať, vypnite režim v lietadle alebo sa pripojte k bezdrôtovej sieti"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefón sa príliš zahrial"</b>\n\n"Tento hovor sa nedá uskutočniť. Skúste to znova, keď telefón vychladne.\n\nTiesňové volania môžete uskutočňovať aj naďalej."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Ak chcete volať štandardným spôsobom, ukončite režim tiesňového spätného volania."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Prihlásenie do siete nebolo úspešné."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilná sieť nie je k dispozícii."</string>
@@ -921,6 +920,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Dostupné NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Stav NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekvencia NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Nastaviť režim rádiového pásma"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Načítava sa zoznam pásiem…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Nastaviť"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 5feb01d..8f0a397 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Vklopite mobilno omrežje, izklopite način za letalo ali način za varčevanje z energijo akumulatorja, če želite opraviti klic."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Izklopite način za letalo, če želite opraviti klic."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Izklopite način za letalo ali se povežite v omrežje Wi-Fi, če želite opraviti klic."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefon je prevroč"</b>\n\n"Tega klica ni mogoče dokončati. Poskusite znova, ko se telefon ohladi.\n\nŠe vedno lahko opravljate klice v sili."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Če ne gre za klic v sili, zaprite način za povratni klici v sili."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Ni registrirano v omrežju."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Omrežje prenosnega telefona ni na voljo."</string>
@@ -921,6 +920,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Razpoložljivo za NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Stanje NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekvenca NR:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Konfiguracija razkosanja omrežja:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Nastavljanje načina radijskega območja"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Nalaganje seznama frekvenčnih pasov …"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Nastavi"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 8ea15ab..483bf92 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Aktivizo rrjetin celular, çaktivizo modalitetin e aeroplanit ose modalitetin e kursyesit të baterisë për të bërë një telefonatë."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Çaktivizo modalitetin e aeroplanit për të bërë telefonata."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Çaktivizo modalitetin e aeroplanit ose lidhu me ndonjë rrjet interneti valor për të bërë telefonata."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefoni është shumë i nxehtë"</b>\n\n"Kjo telefonatë nuk mund të kryhet. Provo përsëri kur të ftohet telefoni.\n\nMund të bësh përsëri telefonata të urgjencës."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Dil nga modaliteti i kthimit të telefonatës së urgjencës për të bërë një telefonatë jo urgjente."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"I paregjistruar në rrjet."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Rrjeti celular nuk mundësohet."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Ofrohet NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Gjendja e NR-së:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frekuenca e NR-së:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Cakto modalitetin e brezit të radios"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Po ngarkon listën e brezave…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Cakto"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 43633a7..905f491 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Укључите мобилну мрежу и искључите режим рада у авиону или режим уштеде батерије да бисте упутили позив."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Искључите режим рада у авиону да бисте упутили позив."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Искључите режим рада у авиону или се повежите на бежичну мрежу да бисте упутили позив."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Телефон је превише врућ"</b>\n\n"Позив не може да се заврши. Пробајте поново када се телефон охлади.\n\nИ даље можете да упућујете хитне позиве."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Изађите из режима хитног повратног позива да бисте упутили позив који није хитан."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Није регистровано на мрежи."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Мобилна мрежа није доступна."</string>
@@ -918,6 +917,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR доступно:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR стање:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR учесталост:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Подесите режим радијског опсега"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Учитава се листа опсега…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Подеси"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 4c0570d..0d4af3f 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -75,7 +75,7 @@
     <string name="phone_accounts_configure_account_settings" msgid="6622119715253196586">"Konfigurera kontoinställningar"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="1609600743500618823">"Alla konton för samtal"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="2214134955430107240">"Välj vilka konton som kan ringa samtal"</string>
-    <string name="wifi_calling" msgid="3650509202851355742">"wifi-samtal"</string>
+    <string name="wifi_calling" msgid="3650509202851355742">"Wi-Fi-samtal"</string>
     <string name="connection_service_default_label" msgid="7332739049855715584">"Inbyggd anslutningstjänst"</string>
     <string name="voicemail" msgid="7697769412804195032">"Röstbrevlåda"</string>
     <string name="voicemail_settings_with_label" msgid="4228431668214894138">"Röstbrevlåda (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -309,7 +309,7 @@
     <string name="sim_selection_required_pref" msgid="6985901872978341314">"Du måste välja något"</string>
     <string name="sim_change_data_title" msgid="9142726786345906606">"Vill du ändra data-SIM?"</string>
     <string name="sim_change_data_message" msgid="3567358694255933280">"Vill du använda <xliff:g id="NEW_SIM">%1$s</xliff:g> i stället för <xliff:g id="OLD_SIM">%2$s</xliff:g> för mobildata?"</string>
-    <string name="wifi_calling_settings_title" msgid="5800018845662016507">"wifi-samtal"</string>
+    <string name="wifi_calling_settings_title" msgid="5800018845662016507">"Wi-Fi-samtal"</string>
     <string name="video_calling_settings_title" msgid="342829454913266078">"Videosamtal via operatören"</string>
     <string name="gsm_umts_options" msgid="4968446771519376808">"Alternativ för GSM/UMTS"</string>
     <string name="cdma_options" msgid="3669592472226145665">"CDMA-alternativ"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Aktivera mobilt nätverk, stäng av flygplansläget eller batterisparläget för att ringa ett samtal."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Inaktivera flygplansläget om du vill ringa."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Inaktivera flygplansläget eller anslut till ett trådlöst nätverk om du vill ringa."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefonen för varm"</b>\n\n"Det går inte att genomföra samtalet. Försök igen när telefonen svalnar.\n\nDet går fortfarande att ringa nödsamtal."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Avsluta läget för återuppringning vid nödsamtal om du vill ringa ett vanligt samtal."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Inte registrerat på nätverk."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Inget mobilt nätverk är tillgängligt."</string>
@@ -555,7 +554,7 @@
     <string name="incall_error_supp_service_hangup" msgid="836524952243836735">"Det gick inte att släppa samtal."</string>
     <string name="incall_error_supp_service_hold" msgid="8535056414643540997">"Det går inte att hålla kvar samtal."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="5860742792811400109">"Anslut till ett trådlöst nätverk om du vill ringa."</string>
-    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"Aktivera wifi-samtal för att ringa."</string>
+    <string name="incall_error_promote_wfc" msgid="9164896813931363415">"Aktivera Wi-Fi-samtal för att ringa."</string>
     <string name="emergency_information_hint" msgid="9208897544917793012">"Nödinformation"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"Ägare"</string>
     <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"Tryck igen för att visa information"</string>
@@ -617,7 +616,7 @@
     <string name="ota_hfa_activation_title" msgid="3300556778212729671">"Aktiveras ..."</string>
     <string name="ota_hfa_activation_dialog_message" msgid="7921718445773342996">"Din mobila datatjänst aktiveras av mobilen.\n\nDetta kan ta upp till fem minuter."</string>
     <string name="ota_skip_activation_dialog_title" msgid="7666611236789203797">"Vill du hoppa över aktiveringen?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Om du hoppar över aktiveringen kan du inte ringa samtal eller ansluta till mobila datanätverk (men du kan ansluta till wifi-nätverk). Du kommer att påminnas om att aktivera telefonen varje gång du sätter på den, tills du har aktiverat den."</string>
+    <string name="ota_skip_activation_dialog_message" msgid="6691722887019708713">"Om du hoppar över aktiveringen kan du inte ringa samtal eller ansluta till mobila datanätverk (men du kan ansluta till Wi-Fi-nätverk). Du kommer att påminnas om att aktivera telefonen varje gång du sätter på den, tills du har aktiverat den."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="5908029466817825633">"Hoppa över"</string>
     <string name="ota_activate" msgid="7939695753665438357">"Aktivera"</string>
     <string name="ota_title_activate_success" msgid="1272135024761004889">"Telefonen är aktiverad."</string>
@@ -681,18 +680,18 @@
     <string name="sim_description_emergency_calls" msgid="5146872803938897296">"Endast nödsamtal"</string>
     <string name="sim_description_default" msgid="7474671114363724971">"SIM-kortsplats: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="7883415189273700298">"Tillgänglighet"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="2606052595898044071">"wifi-samtal från"</string>
-    <string name="status_hint_label_wifi_call" msgid="942993035689809853">"wifi-samtal"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="2606052595898044071">"Wi-Fi-samtal från"</string>
+    <string name="status_hint_label_wifi_call" msgid="942993035689809853">"Wi-Fi-samtal"</string>
     <string name="emergency_action_launch_hint" msgid="2762016865340891314">"Tryck igen för att öppna"</string>
     <string name="message_decode_error" msgid="1061856591500290887">"Ett fel inträffade när meddelandet avkodades."</string>
     <string name="callFailed_cdma_activation" msgid="5392057031552253550">"Ett SIM-kort har använts för att aktivera tjänsten och uppdatera roamingfunktionerna i mobilen."</string>
     <string name="callFailed_cdma_call_limit" msgid="1074219746093031412">"Det finns för många aktiva samtal. Avsluta eller slå samman pågående samtal innan du ringer ett nytt."</string>
     <string name="callFailed_imei_not_accepted" msgid="7257903653685147251">"Det går inte att ansluta. Sätt i ett giltigt SIM-kort."</string>
-    <string name="callFailed_wifi_lost" msgid="1788036730589163141">"wifi-anslutningen bruten. Samtal avslutat."</string>
+    <string name="callFailed_wifi_lost" msgid="1788036730589163141">"Wi-Fi-anslutningen bruten. Samtal avslutat."</string>
     <string name="dialFailed_low_battery" msgid="6857904237423407056">"Det går inte att ringa videosamtal på grund av svagt batteri."</string>
     <string name="callFailed_low_battery" msgid="4056828320214416182">"Videosamtalet slutade på grund av svagt batteri."</string>
-    <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"Nödsamtal via wifi är inte tillgängligt på den här platsen."</string>
-    <string name="callFailed_wfc_service_not_available_in_this_location" msgid="3624536608369524988">"wifi-samtal är inte tillgängligt på den här platsen."</string>
+    <string name="callFailed_emergency_call_over_wfc_not_available" msgid="5944309590693432042">"Nödsamtal via Wi-Fi är inte tillgängligt på den här platsen."</string>
+    <string name="callFailed_wfc_service_not_available_in_this_location" msgid="3624536608369524988">"Wi-Fi-samtal är inte tillgängligt på den här platsen."</string>
     <string name="change_pin_title" msgid="3564254326626797321">"Ändra röstbrevlådans pinkod"</string>
     <string name="change_pin_continue_label" msgid="5177011752453506371">"Fortsätt"</string>
     <string name="change_pin_cancel_label" msgid="2301711566758827936">"Avbryt"</string>
@@ -837,7 +836,7 @@
     <string name="radio_info_data_connection_disable" msgid="6404751291511368706">"Inaktivera dataanslutning"</string>
     <string name="volte_provisioned_switch_string" msgid="4812874990480336178">"VoLTE-administrerad"</string>
     <string name="vt_provisioned_switch_string" msgid="8295542122512195979">"Videosamtal tillhandahålls"</string>
-    <string name="wfc_provisioned_switch_string" msgid="3835004640321078988">"wifi-samtal tillhandahålls"</string>
+    <string name="wfc_provisioned_switch_string" msgid="3835004640321078988">"Wi-Fi-samtal tillhandahålls"</string>
     <string name="eab_provisioned_switch_string" msgid="4449676720736033035">"EAB/Presence tillhandahålls"</string>
     <string name="cbrs_data_switch_string" msgid="6060356430838077653">"Data via CBRS"</string>
     <string name="dsds_switch_string" msgid="7564769822086764796">"Aktivera DSDS"</string>
@@ -855,7 +854,7 @@
     <string name="radio_info_ims_reg_status_not_registered" msgid="8045821447288876085">"Inte registrerad"</string>
     <string name="radio_info_ims_feature_status_available" msgid="6493200914756969292">"Tillgänglig"</string>
     <string name="radio_info_ims_feature_status_unavailable" msgid="8930391136839759778">"Inte tillgängligt"</string>
-    <string name="radio_info_ims_reg_status" msgid="25582845222446390">"IMS-registrering: <xliff:g id="STATUS">%1$s</xliff:g>\nRöst via LTE: <xliff:g id="AVAILABILITY_0">%2$s</xliff:g>\nRöst via wifi: <xliff:g id="AVAILABILITY_1">%3$s</xliff:g>\nVideosamtal: <xliff:g id="AVAILABILITY_2">%4$s</xliff:g>\nUT-gränssnitt: <xliff:g id="AVAILABILITY_3">%5$s</xliff:g>"</string>
+    <string name="radio_info_ims_reg_status" msgid="25582845222446390">"IMS-registrering: <xliff:g id="STATUS">%1$s</xliff:g>\nRöst via LTE: <xliff:g id="AVAILABILITY_0">%2$s</xliff:g>\nRöst via Wi-Fi: <xliff:g id="AVAILABILITY_1">%3$s</xliff:g>\nVideosamtal: <xliff:g id="AVAILABILITY_2">%4$s</xliff:g>\nUT-gränssnitt: <xliff:g id="AVAILABILITY_3">%5$s</xliff:g>"</string>
     <string name="radioInfo_service_in" msgid="45753418231446400">"I tjänst"</string>
     <string name="radioInfo_service_out" msgid="287972405416142312">"Ur funktion"</string>
     <string name="radioInfo_service_emergency" msgid="4763879891415016848">"Endast nödsamtal"</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR tillgänglig:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR-status:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR-frekvens:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Nätverkets uppdelningskonfiguration:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Konfigurera radiobandsläget"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Läser in bandlista …"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ange"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 83727d0..8241f0b 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -297,7 +297,7 @@
     <string name="sip_accounts_removed_notification_title" msgid="3528076957535736095">"Akaunti za SIP ambazo zimefungwa zimepatikana na zikaondolewa"</string>
     <string name="sip_accounts_removed_notification_message" msgid="1916856744869791592">"Huduma ya kupiga simu kupitia SIP haipatikani tena kwenye mfumo wa Android.\nAkaunti zako za SIP zilizopo <xliff:g id="REMOVED_SIP_ACCOUNTS">%s</xliff:g> zimeondolewa.\nTafadhali thibitisha mipangilio ya akaunti yako chaguomsingi ya kupiga simu."</string>
     <string name="sip_accounts_removed_notification_action" msgid="3772778402370555562">"Nenda kwenye mipangilio"</string>
-    <string name="data_usage_title" msgid="8438592133893837464">"Programu inavyotumia data"</string>
+    <string name="data_usage_title" msgid="8438592133893837464">"Matumizi ya data ya programu"</string>
     <string name="data_usage_template" msgid="6287906680674061783">"<xliff:g id="ID_1">%1$s</xliff:g> za data ya mtandao wa simu zimetumika kuanzia <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="advanced_options_title" msgid="9208195294513520934">"Mipangilio ya Kina"</string>
     <string name="carrier_settings_euicc" msgid="1190237227261337749">"Mtoa huduma"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Washa mtandao wa simu, zima hali ya ndegeni au uzime hali ya kiokoa betri ili upige simu."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Zima hali ya ndegeni ili upige simu."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Zima hali ya ndegeni au uunganishe kwenye mtandao pasiwaya ili upige simu."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Simu ina kiwango cha joto cha juu sana"</b>\n\n"Imeshindwa kupiga simu hii. Jaribu tena wakati kiwango cha joto cha simu yako kitapungua.\n\nBado unaweza kupiga simu za dharura."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Ondoka kwenye hali ya kupiga simu za dharura ili upige simu zisizokuwa za dharura."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Haijasajiliwa kwa mitandao"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mtandao wa simu haupatikani."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR Inapatikana:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Hali ya NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Masafa ya NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Weka Hali ya Bendi ya Redio"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Inapakia Orodha ya Bendi…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Weka"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 0432ff7..5a28420 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -339,7 +339,7 @@
     <string name="maintenance_enable" msgid="2646784483222342290">"பராமரிப்பு இயக்கப்பட்டது"</string>
     <string name="maintenance_disable" msgid="2121032601497725602">"பராமரிப்பு முடக்கப்பட்டது"</string>
     <string name="general_news_settings" msgid="2670499575962080411">"பொது செய்திகள்"</string>
-    <string name="bf_news_settings" msgid="8571709425370794221">"பிசினஸ் மற்றும் நிதிசார்ந்த செய்திகள்"</string>
+    <string name="bf_news_settings" msgid="8571709425370794221">"வணிகம் மற்றும் நிதிசார்ந்த செய்திகள்"</string>
     <string name="sports_news_settings" msgid="2684364556989168438">"விளையாட்டுச் செய்திகள்"</string>
     <string name="entertainment_news_settings" msgid="4228527702346305543">"பொழுதுபோக்குச் செய்திகள்"</string>
     <string name="enable_disable_local" msgid="7654175079979415572">"உள்ளூர்"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"அழைக்க, மொபைல் நெட்வொர்க்கை இயக்கவும், விமானப் பயன்முறை அல்லது பேட்டரி சேமிப்பான் பயன்முறையை முடக்கவும்."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"அழைக்க, விமானப் பயன்முறையை முடக்கவும்."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"அழைக்க, விமானப் பயன்முறையை முடக்கவும் அல்லது வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"மொபைல் மிகச் சூடாக உள்ளது"</b>\n\n"இந்த அழைப்பைத் தொடர முடியவில்லை. மொபைலின் சூடு முழுமையாகத் தணிந்ததும் மீண்டும் அழைக்கவும்.\n\nஇருப்பினும் அவசர அழைப்புகளைச் செய்யலாம்."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"வழக்கமான அழைப்பிற்கு, அவசரகாலத் திரும்ப அழைக்கும் பயன்முறையிலிருந்து வெளியேறவும்."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"நெட்வொர்க்கில் பதிவுசெய்யப்படவில்லை."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"மொபைல் நெட்வொர்க் கிடைக்கவில்லை."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR உள்ளது:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR நிலை:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR அலைவரிசை:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"ரேடியோ பேண்டு பயன்முறையை அமை"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"பேண்டு பட்டியலை ஏற்றுகிறது…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"அமை"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 0718c51..0b0220f 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -144,7 +144,7 @@
     <string name="stk_cc_ss_to_ussd_error" msgid="8330749347425752192">"SS అభ్యర్థన USSD అభ్యర్థనకు మార్చబడింది"</string>
     <string name="stk_cc_ss_to_ss_error" msgid="8297155544652134278">"కొత్త SS అభ్యర్థనకు మార్చబడింది"</string>
     <string name="stk_cc_ss_to_dial_video_error" msgid="4255261231466032505">"SS అభ్యర్థన వీడియో కాల్‌కి మార్చబడింది"</string>
-    <string name="fdn_check_failure" msgid="1833769746374185247">"మీ ఫోన్ యాప్‌ యొక్క ఫిక్స్‌డ్ డయలింగ్ నంబర్‌ల సెట్టింగ్ ప్రారంభించబడింది. తత్ఫలితంగా, కాల్ సంబంధిత లక్షణాల్లో కొన్ని పని చేయడం లేదు."</string>
+    <string name="fdn_check_failure" msgid="1833769746374185247">"మీ ఫోన్ అనువర్తనం యొక్క ఫిక్స్‌డ్ డయలింగ్ నంబర్‌ల సెట్టింగ్ ప్రారంభించబడింది. తత్ఫలితంగా, కాల్ సంబంధిత లక్షణాల్లో కొన్ని పని చేయడం లేదు."</string>
     <string name="radio_off_error" msgid="8321564164914232181">"ఈ సెట్టింగ్‌లను వీక్షించడానికి ముందు రేడియోను ప్రారంభించండి."</string>
     <string name="close_dialog" msgid="1074977476136119408">"సరే"</string>
     <string name="enable" msgid="2636552299455477603">"ఆన్ చేయి"</string>
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"కాల్ చేయడానికి మొబైల్ నెట్‌వర్క్‌ను ఆన్ చేయండి, అలాగే ఎయిర్‌ప్లైన్ మోడ్ లేదా బ్యాటరీ సేవర్ మోడ్ ఆన్‌లో ఉంటే ఆఫ్ చేయండి."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"కాల్ చేయడానికి ఎయిర్‌ప్లైన్ మోడ్‌ను ఆఫ్ చేయండి."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"కాల్ చేయడానికి ఎయిర్‌ప్లైన్ మోడ్‌ను ఆఫ్ చేయండి లేదా వైర్‌లెస్ నెట్‌వర్క్‌కు కనెక్ట్ చేయండి."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"ఫోన్ చాలా వేడిగా ఉంది"</b>\n\n"ఈ కాల్‌ను పూర్తి చేయడం సాధ్యపడదు. మీ ఫోన్ చల్లబడినప్పుడు మళ్లీ ట్రై చేయండి.\n\nమీరు ఇప్పటికీ ఎమర్జెన్సీ కాల్స్ చేయవచ్చు."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"సాధారణ కాల్ చేయడానికి అత్యవసర కాల్‌బ్యాక్ మోడ్ నుండి నిష్క్రమించండి."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"నెట్‌వర్క్‌లో నమోదు కాలేదు."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"మొబైల్ నెట్‌వర్క్ అందుబాటులో లేదు."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR అందుబాటులో ఉంది:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR స్టేటస్:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR ఫ్రీక్వెన్సీ:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"రేడియో బ్యాండ్ మోడ్‌ను సెట్ చేయండి"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"బ్యాండ్ జాబితాను లోడ్ చేస్తోంది…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"సెట్ చేయి"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 0e697da..68a48c1 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"เปิดเครือข่ายมือถือ ปิดโหมดบนเครื่องบิน หรือปิดโหมดประหยัดแบตเตอรี่เพื่อโทรออก"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"ปิดโหมดบนเครื่องบินเพื่อโทรออก"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"ปิดโหมดบนเครื่องบินหรือเชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"โทรศัพท์ร้อนเกินไป"</b>\n\n"ไม่สามารถโทรได้ โปรดลองอีกครั้งเมื่อโทรศัพท์เย็นลงแล้ว\n\nคุณยังสามารถโทรหมายเลขฉุกเฉินได้อยู่"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"โปรดออกจากโหมดการโทรกลับกรณีฉุกเฉินเพื่อโทรไปยังหมายเลขที่ไม่ใช่หมายเลขฉุกเฉิน"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"ยังไม่ได้ลงทะเบียนบนเครือข่าย"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"เครือข่ายมือถือใช้งานไม่ได้"</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"มี NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"สถานะ NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"ความถี่ NR:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"กำหนดค่าการแบ่งส่วนเครือข่าย:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"ตั้งค่าโหมดย่านความถี่วิทยุ"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"กำลังโหลดรายการย่านความถี่…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"ตั้งค่า"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 495807b..a54cd9a 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"I-on ang mobile network, i-off ang airplane mode o i-off ang battery saver mode upang tumawag."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"I-off ang airplane mode upang makatawag."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"I-off ang airplane mode o kumonekta sa isang wireless network upang makatawag."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Masyadong mainit ang telepono"</b>\n\n"Hindi makumpleto ang tawag na ito. Subukan ulit kapag lumamig ang iyong telepono.\n\nMakakagawa ka pa rin ng mga emergency na tawag."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Lumabas sa emergency callback mode upang makapagsagawa ng hindi pang-emergency na pagtawag."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Hindi nakarehistro sa network."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Hindi available ang mobile network."</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Available ang NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Status ng NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Frequency ng NR:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Configuration ng pag-slice ng network:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Itakda ang Band Mode ng Radyo"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Nilo-load ang Listahan ng Band…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Itakda"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 74bb70b..01cdf49 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Telefon etmek için mobil ağı açın, uçak modunu veya pil tasarrufu modunu kapatın."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Telefon etmek için uçak modunu kapatın."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Telefon etmek için uçak modunu kapatın veya kablosuz ağa bağlanın."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefon çok ısındı"</b>\n\n"Bu arama tamamlanamıyor. Telefonunuz soğuyana kadar bekleyip tekrar deneyin.\n\nBu süre zarfında acil durum aramaları yapabilirsiniz."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Acil durum çağrısı dışında bir çağrı yapmak için acil durumda geri aranma modundan çıkın."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Ağda kayıtlı değil."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobil ağ kullanılamıyor."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR Kullanılabilir:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR Durumu:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR Frekansı:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Radyo Bant Modunu Ayarla"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Bant Listesi Yükleniyor…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Ayarla"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 92aa4d3..c2b0ee6 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Щоб зателефонувати, увімкніть мобільну мережу, вимкніть режим польоту або режим економії заряду."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Щоб зателефонувати, вимкніть режим польоту."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Щоб зателефонувати, вимкніть режим польоту або під’єднайтеся до бездротової мережі."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Телефон занадто нагрівся"</b>\n\n"Не вдалося завершити виклик. Зачекайте, доки телефон охолоне, і повторіть спробу.\n\nЕкстрені виклики доступні."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Щоб зателефонувати на звичайний номер, вимкніть режим екстрених викликів."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Не зареєстровано в мережі."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Мобільна мережа недоступна."</string>
@@ -921,6 +920,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR доступно:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Статус NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Частота NR:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"Конфігурація сегментування мережі:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"Установити режим радіодіапазону"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Завантаження списку діапазонів частот…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Установити"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 7a5e676..46b33bd 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"کال کرنے کیل‏ئے موبائل نیٹ ورک آن کریں، ہوائی جہاز موڈ یا بیٹری سیور موڈ آف کریں۔"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"کال کرنے کیلئے ہوائی جہاز وضع آف کریں۔"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"کال کرنے کیلئے ہوائی جہاز وضع آف کریں یا کسی وائرلیس نیٹ ورک سے منسلک ہوں۔"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"فون بہت گرم ہے"</b>\n\n"اس کال کو مکمل نہیں کیا جا سکتا۔ جب آپ کا فون ٹھنڈا ہو جائے تو دوبارہ کوشش کریں۔\n\nآپ اب بھی ہنگامی کالز کر سکتے ہیں۔"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"غیر ہنگامی کال کرنے کیلئے ہنگامی کال بیک موڈ سے اخراج کریں۔"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"نیٹ ورک پر رجسٹرڈ نہیں ہے۔"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"موبائل نیٹ ورک دستیاب نہیں ہے۔"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"‏NR دستیاب ہے:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"‏NR ریاست:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"‏NR فریکوئنسی:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"ریڈیو بینڈ موڈ سیٹ کریں"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"بینڈ کی فہرست لوڈ ہو رہی ہے…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"سیٹ کریں"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index c86c5ee..cfd69b0 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Telefon qilish uchun mobil tarmoqni yoqing, parvoz yoki quvvat tejash rejimini oʻchiring."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Qo‘ng‘iroq qilish uchun parvoz rejimini o‘chiring"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Qo‘ng‘iroq qilish uchun parvoz rejimini o‘chiring yoki simsiz tarmoqqa ulaning."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Telefon qizib ketdi"</b>\n\n"Chaqiruvni amalga oshirish imkonsiz. Telefoningiz soviganida qayta urining.\n\nFavqulodda chaqiruvlarni har qanday holatda ham amalga oshira olasiz."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Odatiy qo‘ng‘iroq qilish uchun favqulodda qayta qo‘ng‘iroq rejimidan chiqing."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Tarmoqda ro‘yxatdan o‘tmagan."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Uyali tarmoq mavjud emas."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR ochiq:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR holati:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR chastotasi:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Tarmoq rejimini sozlash"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Chastotalar ro‘yxati yuklanmoqda…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Saqlash"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index a6d8d20..28f7a37 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Bật mạng di động, tắt chế độ trên máy bay hoặc tắt chế độ trình tiết kiệm pin để thực hiện cuộc gọi."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Tắt chế độ trên máy bay để thực hiện cuộc gọi."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Tắt chế độ trên máy bay hoặc kết nối với mạng không dây để thực hiện cuộc gọi."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Điện thoại quá nóng"</b>\n\n"Không thể hoàn tất cuộc gọi này. Hãy thử lại khi điện thoại nguội bớt.\n\nBạn vẫn có thể thực hiện cuộc gọi khẩn cấp."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Thoát khỏi chế độ gọi lại khẩn cấp để thực hiện cuộc gọi không khẩn cấp."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Chưa được đăng ký trên mạng."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Mạng di động không khả dụng."</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"Hỗ trợ NR:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Trạng thái NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Tần số NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Đặt chế độ dải tần số"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Đang tải danh sách băng tần…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Đặt"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 6bcb0a5..e568da3 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"需开启移动网络,并关闭飞行模式或省电模式才能拨打电话。"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"需关闭飞行模式才能拨打电话。"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"需关闭飞行模式或连接至无线网络才能拨打电话。"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"手机过热"</b>\n\n"无法完成此通话。请先让手机降温,然后再重试。\n\n您仍然可以拨打紧急呼救电话。"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"要拨打非紧急电话,请先退出紧急回拨模式。"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"尚未注册网络。"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"无法连接到移动网络"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"5G 可用:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"5G 状态:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"5G 频率:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"设置无线装置频道模式"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"正在加载频道列表…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"设置"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 85cedaa..4d04727 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"開啟流動網絡、關閉飛行模式或關閉省電模式,以撥打電話。"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"關閉飛行模式以撥打電話。"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"關閉飛行模式或連接無線網絡,以撥打電話。"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"電話過熱"</b>\n\n"無法完成此通話。請在電話冷卻後再試一次。\n\n您仍可進行緊急電話。"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"離開緊急回撥模式即可撥打非緊急電話。"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"未在網絡上完成註冊。"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"無法使用流動網絡。"</string>
@@ -915,6 +914,7 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR 可用:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR 狀態:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR 頻率:"</string>
+    <string name="radio_info_network_slicing_config" msgid="7675131833885031563">"網絡切片設定:"</string>
     <string name="band_mode_title" msgid="7988822920724576842">"設定無線電頻段模式"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"正在載入頻段清單…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"設定"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 64a54cd..23393be 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"如要撥打電話,請開啟行動網路,並關閉飛航模式或省電模式。"</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"關閉飛航模式即可撥打電話。"</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"關閉飛航模式或連上無線網路即可撥打電話。"</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"手機過熱"</b>\n\n"無法撥打這通電話。請等到手機降溫後再試一次。\n\n在這段期間內仍可撥打緊急電話。"</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"結束緊急回撥模式,以便撥打非緊急電話。"</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"尚未註冊網路。"</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"無法使用 Google 行動服務網路。"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"NR 可供使用:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"NR 狀態:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"NR 頻率:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"設定無線電頻帶模式"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"正在載入頻帶清單…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"設定"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index bcc1562..4ad89d0 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -537,7 +537,6 @@
     <string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"Vula inethiwekhi yeselula, vala imodi yendiza noma vala imodi yokulondoloza ibhethri ukuze wenze ikholi."</string>
     <string name="incall_error_power_off" product="default" msgid="8131672264311208673">"Vala imodi yendiza ukuze wenze ikholi."</string>
     <string name="incall_error_power_off_wfc" msgid="9125661184694727052">"Vala imodi yendiza noma xhumeka kunethiwekhi engenantambo ukuze wenze ikholi."</string>
-    <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"Ifoni ishisa kakhulu"</b>\n\n"Ayikwazi ukwenza le kholi. Zama futhi lapho ifoni iphola.\n\nUsengakwazi ukwenza amakholi aphuthumayo."</string>
     <string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Phuma kwimodi yokushayela emuva yesiko esiphuthumayo ukuze wenze ikholi yemodi engaphuthumi."</string>
     <string name="incall_error_emergency_only" msgid="8786127461027964653">"Ayibhalisiwe kwinethiwekhi."</string>
     <string name="incall_error_out_of_service" msgid="1927265196942672791">"Inethiwekhi yefoni ayitholakali"</string>
@@ -915,6 +914,8 @@
     <string name="radio_info_nr_available" msgid="1321318331361249997">"I-NR Iyatholakala:"</string>
     <string name="radio_info_nr_state" msgid="1337571996788535356">"Isimo se-NR:"</string>
     <string name="radio_info_nr_frequency" msgid="1201156032796584128">"Imvamisa ye-NR:"</string>
+    <!-- no translation found for radio_info_network_slicing_config (7675131833885031563) -->
+    <skip />
     <string name="band_mode_title" msgid="7988822920724576842">"Isetha imodi yebhendi yerediyo"</string>
     <string name="band_mode_loading" msgid="795923726636735967">"Ilayisha uhlu lwebhendi…"</string>
     <string name="band_mode_set" msgid="6657819412803771421">"Setha"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0f75e23..6fda189 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2161,6 +2161,8 @@
     <string name="radio_info_nr_state">NR State:</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_nr_frequency">NR Frequency:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="radio_info_network_slicing_config" translatable="false">Network slicing config:</string>
 
     <!-- Band Mode Selection -->
     <!-- Band mode screen.  Title of activity. -->
diff --git a/sip/res/values-gu/strings.xml b/sip/res/values-gu/strings.xml
index 70232ad..9eb810b 100644
--- a/sip/res/values-gu/strings.xml
+++ b/sip/res/values-gu/strings.xml
@@ -74,7 +74,7 @@
     <string name="no_internet_available" msgid="161720645084325479">"SIP કૉલ કરવા માટે, પ્રથમ તમારું ઇન્ટરનેટ કનેક્શન તપાસો."</string>
     <string name="no_wifi_available" msgid="1179092018692306312">"SIP કૉલ્સ માટે તમારે Wi-Fi નેટવર્કથી કનેક્ટ હોવું જરૂરી છે (વાયરલેસ અને નેટવર્ક સેટિંગ્સનો ઉપયોગ કરો)."</string>
     <string name="no_voip" msgid="3366395789297981738">"SIP કૉલિંગ સમર્થિત નથી"</string>
-    <string name="sip_system_decide" msgid="197230378376326430">"ઑટોમૅટિક"</string>
+    <string name="sip_system_decide" msgid="197230378376326430">"સ્વચલિત"</string>
     <string name="sip_always_send_keepalive" msgid="4986533673960084769">"હંમેશાં મોકલો"</string>
     <string name="sip_connection_service_label" msgid="8796284274240316006">"બિલ્ટ-ઇન SIP કૉલિંગ"</string>
 </resources>
diff --git a/sip/res/values-iw/strings.xml b/sip/res/values-iw/strings.xml
index 34b1b20..6e84560 100644
--- a/sip/res/values-iw/strings.xml
+++ b/sip/res/values-iw/strings.xml
@@ -24,29 +24,29 @@
     <string name="sip_call_options_title" msgid="5027066677561068192">"‏שימוש בשיחות SIP"</string>
     <string name="sip_call_options_wifi_only_title" msgid="6663105297927456484">"‏שימוש בשיחות SIP ‏(Wi-Fi בלבד)‏"</string>
     <string name="sip_call_options_entry_1" msgid="4722647332760934261">"לכל השיחות כאשר רשת הנתונים זמינה"</string>
-    <string name="sip_call_options_entry_2" msgid="7338504256051655013">"‏מעבר לשיחות SIP בלבד"</string>
+    <string name="sip_call_options_entry_2" msgid="7338504256051655013">"‏עבור שיחות SIP בלבד"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="922329055414010991">"לכל השיחות"</string>
     <string name="add_sip_account" msgid="5754758646745144384">"חשבון חדש"</string>
     <string name="remove_sip_account" msgid="8272617403399636513">"הסרת חשבון"</string>
     <string name="sip_account_list" msgid="2596262496233721769">"‏חשבונות SIP"</string>
-    <string name="saving_account" msgid="3390358043846687266">"שמירת החשבון מתבצעת..."</string>
-    <string name="removing_account" msgid="1544132880414780408">"הסרת החשבון מתבצעת..."</string>
-    <string name="sip_menu_save" msgid="4377112554203123060">"שמירה"</string>
-    <string name="sip_menu_discard" msgid="1883166691772895243">"מחיקה"</string>
-    <string name="alert_dialog_close" msgid="1734746505531110706">"סגירת הפרופיל"</string>
+    <string name="saving_account" msgid="3390358043846687266">"שומר את החשבון..."</string>
+    <string name="removing_account" msgid="1544132880414780408">"מסיר את החשבון..."</string>
+    <string name="sip_menu_save" msgid="4377112554203123060">"שמור"</string>
+    <string name="sip_menu_discard" msgid="1883166691772895243">"מחק"</string>
+    <string name="alert_dialog_close" msgid="1734746505531110706">"סגור את הפרופיל"</string>
     <string name="alert_dialog_ok" msgid="7806760618798687406">"אישור"</string>
-    <string name="close_profile" msgid="3756064641769751774">"סגירה"</string>
-    <string name="registration_status_checking_status" msgid="884179594507591180">"בדיקת המצב מתבצעת..."</string>
-    <string name="registration_status_registering" msgid="7986331597809521791">"הרישום מתבצע..."</string>
-    <string name="registration_status_still_trying" msgid="7178623685868766282">"הניסיון מתבצע..."</string>
+    <string name="close_profile" msgid="3756064641769751774">"סגור"</string>
+    <string name="registration_status_checking_status" msgid="884179594507591180">"בודק מצב..."</string>
+    <string name="registration_status_registering" msgid="7986331597809521791">"מבצע רישום..."</string>
+    <string name="registration_status_still_trying" msgid="7178623685868766282">"עדיין מנסה..."</string>
     <string name="registration_status_not_receiving" msgid="3873074208531938401">"לא מקבל שיחות."</string>
     <string name="registration_status_no_data" msgid="2987064560116584121">"רישום החשבון הופסק כיוון שאין חיבור לאינטרנט."</string>
     <string name="registration_status_no_wifi_data" msgid="685470618241482948">"‏רישום החשבון הופסק כיוון שאין חיבור Wi-Fi."</string>
     <string name="registration_status_not_running" msgid="6236403137652262659">"רישום החשבון נכשל."</string>
-    <string name="registration_status_done" msgid="6787397199273357721">"קבלת שיחות."</string>
+    <string name="registration_status_done" msgid="6787397199273357721">"מקבל שיחות."</string>
     <string name="registration_status_failed_try_later" msgid="7855389184910312091">"רישום החשבון נכשל: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); ניסיון חוזר יבוצע מאוחר יותר"</string>
     <string name="registration_status_invalid_credentials" msgid="8896714049938660777">"רישום החשבון נכשל: שם המשתמש או הסיסמה שגויים."</string>
-    <string name="registration_status_server_unreachable" msgid="3832339558868965604">"רישום החשבון נכשל: יש לבדוק את שם השרת."</string>
+    <string name="registration_status_server_unreachable" msgid="3832339558868965604">"רישום החשבון נכשל: בדוק את שם השרת."</string>
     <string name="third_party_account_summary" msgid="5918779106950859167">"האפליקציה <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> משתמשת כרגע בחשבון הזה."</string>
     <string name="sip_edit_title" msgid="7438891546610820307">"‏פרטי חשבון SIP"</string>
     <string name="sip_edit_new_title" msgid="8394790068979636381">"‏פרטי חשבון SIP"</string>
@@ -57,7 +57,7 @@
     <string name="proxy_address_title" msgid="4120361943254795287">"‏כתובת שרת Proxy יוצא"</string>
     <string name="port_title" msgid="1703586046264385110">"מספר יציאה"</string>
     <string name="transport_title" msgid="1661659138226029178">"סוג העברה"</string>
-    <string name="send_keepalive_title" msgid="5319788151608946049">"שליחת אות חיבור"</string>
+    <string name="send_keepalive_title" msgid="5319788151608946049">"שלח אות חיבור"</string>
     <string name="advanced_settings" msgid="2704644977548662872">"הגדרות אופציונליות"</string>
     <string name="auth_username_title" msgid="9002505242616662698">"שם משתמש לאימות"</string>
     <string name="auth_username_summary" msgid="6346313945275377230">"שם משתמש המשמש לאימות"</string>
@@ -67,14 +67,14 @@
     <string name="display_name_summary" msgid="6749135030093260358">"‏&lt;זהה לשם משתמש&gt;"</string>
     <string name="optional_summary" msgid="620379377865437488">"‏&lt;אופציונלי&gt;"</string>
     <string name="advanced_settings_show" msgid="2318728080037568529">"איפה כל ההגדרות?"</string>
-    <string name="advanced_settings_hide" msgid="6200816937370652083">"▽ יש לגעת כדי להסתיר את הכול"</string>
-    <string name="all_empty_alert" msgid="6085603517610199098">"‏יש להזין את פרטי חשבון ה-SIP החדש."</string>
+    <string name="advanced_settings_hide" msgid="6200816937370652083">"▽ גע כדי להסתיר את הכול"</string>
+    <string name="all_empty_alert" msgid="6085603517610199098">"‏הזן את פרטי חשבון ה-SIP החדש."</string>
     <string name="empty_alert" msgid="3693655518612836718">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> הוא שדה חובה ולא ניתן להשאיר אותו ריק."</string>
     <string name="not_a_valid_port" msgid="3664668836663491376">"מספר היציאה צריך להיות בין 1000 ל-65534."</string>
-    <string name="no_internet_available" msgid="161720645084325479">"‏כדי לבצע שיחת SIP, ראשית יש לבדוק את חיבור האינטרנט שלך."</string>
-    <string name="no_wifi_available" msgid="1179092018692306312">"‏יש צורך בחיבור לרשת Wi-Fi כדי לבצע שיחות SIP (יש להשתמש ב\'הגדרות רשת ותקשורת אלחוטית\')."</string>
+    <string name="no_internet_available" msgid="161720645084325479">"‏כדי לבצע שיחת SIP, ראשית בדוק את חיבור האינטרנט שלך."</string>
+    <string name="no_wifi_available" msgid="1179092018692306312">"‏עליך להיות מחובר לרשת Wi-Fi כדי לבצע שיחות SIP (השתמש ב\'הגדרות רשת ותקשורת אלחוטית\')."</string>
     <string name="no_voip" msgid="3366395789297981738">"‏שיחות SIP לא נתמכות"</string>
     <string name="sip_system_decide" msgid="197230378376326430">"אוטומטי"</string>
-    <string name="sip_always_send_keepalive" msgid="4986533673960084769">"שליחה תמיד"</string>
+    <string name="sip_always_send_keepalive" msgid="4986533673960084769">"שלח תמיד"</string>
     <string name="sip_connection_service_label" msgid="8796284274240316006">"‏שיחות SIP מובנות"</string>
 </resources>
diff --git a/sip/res/values-kn/strings.xml b/sip/res/values-kn/strings.xml
index 99fe93e..cf7cd59 100644
--- a/sip/res/values-kn/strings.xml
+++ b/sip/res/values-kn/strings.xml
@@ -19,7 +19,7 @@
     <string name="sip_settings" msgid="7452587325305604702">"ಎಸ್‌ಐಪಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="sip_accounts" msgid="7297896885665783239">"ಎಸ್‌ಐಪಿ ಖಾತೆಗಳು"</string>
     <string name="sip_accounts_title" msgid="3061686404598143943">"ಖಾತೆಗಳು"</string>
-    <string name="sip_receive_calls" msgid="3403644006618369349">"ಒಳಬರುವ ಕರೆಗಳನ್ನು ಸ್ವೀಕರಿಸಿ"</string>
+    <string name="sip_receive_calls" msgid="3403644006618369349">"ಒಳಬರುವ ಕರೆಗಳನ್ನು ಸ್ವೀಕರಿಸು"</string>
     <string name="sip_receive_calls_summary" msgid="5306603671778761443">"ಹೆಚ್ಚು ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸುತ್ತದೆ"</string>
     <string name="sip_call_options_title" msgid="5027066677561068192">"ಎಸ್‌ಐಪಿ ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಿ"</string>
     <string name="sip_call_options_wifi_only_title" msgid="6663105297927456484">"ಎಸ್‌ಐಪಿ ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಿ (ವೈ-ಫೈ ಮಾತ್ರ)"</string>
diff --git a/sip/res/values-mr/strings.xml b/sip/res/values-mr/strings.xml
index 6eb7245..60d9c88 100644
--- a/sip/res/values-mr/strings.xml
+++ b/sip/res/values-mr/strings.xml
@@ -19,7 +19,7 @@
     <string name="sip_settings" msgid="7452587325305604702">"SIP सेटिंग्ज"</string>
     <string name="sip_accounts" msgid="7297896885665783239">"SIP खाती"</string>
     <string name="sip_accounts_title" msgid="3061686404598143943">"खाती"</string>
-    <string name="sip_receive_calls" msgid="3403644006618369349">"इनकमिंग कॉल घ्या"</string>
+    <string name="sip_receive_calls" msgid="3403644006618369349">"येणारे कॉल घ्या"</string>
     <string name="sip_receive_calls_summary" msgid="5306603671778761443">"अधिक बॅटरी वापरते"</string>
     <string name="sip_call_options_title" msgid="5027066677561068192">"SIP कॉलिंग वापरा"</string>
     <string name="sip_call_options_wifi_only_title" msgid="6663105297927456484">"SIP कॉलिंग वापरा (वाय-फाय केवळ)"</string>
diff --git a/sip/res/values-sv/strings.xml b/sip/res/values-sv/strings.xml
index a59eb21..2976425 100644
--- a/sip/res/values-sv/strings.xml
+++ b/sip/res/values-sv/strings.xml
@@ -41,7 +41,7 @@
     <string name="registration_status_still_trying" msgid="7178623685868766282">"Försöker fortfarande ..."</string>
     <string name="registration_status_not_receiving" msgid="3873074208531938401">"Tar inte emot samtal."</string>
     <string name="registration_status_no_data" msgid="2987064560116584121">"Kontoregistreringen avbröts eftersom det inte finns någon internetanslutning."</string>
-    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"Kontoregistreringen avbröts eftersom det inte finns någon wifi-anslutning."</string>
+    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"Kontoregistreringen avbröts eftersom det inte finns någon Wi-Fi-anslutning."</string>
     <string name="registration_status_not_running" msgid="6236403137652262659">"Det gick inte att registrera kontot."</string>
     <string name="registration_status_done" msgid="6787397199273357721">"Tar emot samtal."</string>
     <string name="registration_status_failed_try_later" msgid="7855389184910312091">"Det gick inte att registrera kontot: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); försöker igen senare"</string>
@@ -72,7 +72,7 @@
     <string name="empty_alert" msgid="3693655518612836718">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> är ett obligatoriskt fält som måste fyllas i."</string>
     <string name="not_a_valid_port" msgid="3664668836663491376">"Portnumret ska vara mellan 1000 och 65534."</string>
     <string name="no_internet_available" msgid="161720645084325479">"Om du vill ringa ett SIP-samtal kontrollerar du först att du är ansluten till internet."</string>
-    <string name="no_wifi_available" msgid="1179092018692306312">"Du måste vara ansluten till wifi för att kunna ringa SIP-samtal (du ändrar detta i inställningarna för Trådlöst och nätverk)."</string>
+    <string name="no_wifi_available" msgid="1179092018692306312">"Du måste vara ansluten till Wi-Fi för att kunna ringa SIP-samtal (du ändrar detta i inställningarna för Trådlöst och nätverk)."</string>
     <string name="no_voip" msgid="3366395789297981738">"SIP-samtal stöds inte"</string>
     <string name="sip_system_decide" msgid="197230378376326430">"Automatiskt"</string>
     <string name="sip_always_send_keepalive" msgid="4986533673960084769">"Skicka alltid"</string>
diff --git a/sip/res/values-te/strings.xml b/sip/res/values-te/strings.xml
index b15b514..9abb6f5 100644
--- a/sip/res/values-te/strings.xml
+++ b/sip/res/values-te/strings.xml
@@ -47,7 +47,7 @@
     <string name="registration_status_failed_try_later" msgid="7855389184910312091">"ఖాతా నమోదు విఫలమైంది: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); తర్వాత ప్రయత్నిస్తుంది"</string>
     <string name="registration_status_invalid_credentials" msgid="8896714049938660777">"ఖాతా నమోదు విఫలమైంది: చెల్లని వినియోగదారు పేరు లేదా పాస్‌వర్డ్."</string>
     <string name="registration_status_server_unreachable" msgid="3832339558868965604">"ఖాతా నమోదు విఫలమైంది: సర్వర్ పేరు తనిఖీ చేయండి."</string>
-    <string name="third_party_account_summary" msgid="5918779106950859167">"ఈ ఖాతా ప్రస్తుతం <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> యాప్‌ ద్వారా ఉపయోగంలో ఉంది."</string>
+    <string name="third_party_account_summary" msgid="5918779106950859167">"ఈ ఖాతా ప్రస్తుతం <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> అనువర్తనం ద్వారా ఉపయోగంలో ఉంది."</string>
     <string name="sip_edit_title" msgid="7438891546610820307">"SIP ఖాతా వివరాలు"</string>
     <string name="sip_edit_new_title" msgid="8394790068979636381">"SIP ఖాతా వివరాలు"</string>
     <string name="domain_address_title" msgid="8238078615181248579">"సర్వర్"</string>
diff --git a/sip/src/com/android/services/telephony/sip/SipUtil.java b/sip/src/com/android/services/telephony/sip/SipUtil.java
index 5c7409f..a5793d0 100644
--- a/sip/src/com/android/services/telephony/sip/SipUtil.java
+++ b/sip/src/com/android/services/telephony/sip/SipUtil.java
@@ -63,7 +63,9 @@
         Intent intent = new Intent(context, SipIncomingCallReceiver.class);
         intent.setAction(SipManager.ACTION_SIP_INCOMING_CALL);
         intent.putExtra(EXTRA_PHONE_ACCOUNT, SipUtil.createAccountHandle(context, sipProfileName));
-        return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+        return PendingIntent.getBroadcast(context, 0, intent,
+                // Mutable because information associated with the call is passed back here.
+                PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
     }
 
     public static boolean isPhoneIdle(Context context) {
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index ae6f072..ec6ea2b 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -295,7 +295,7 @@
     private final class CallFeaturesTelephonyCallback extends TelephonyCallback implements
             TelephonyCallback.CallStateListener {
         @Override
-        public void onCallStateChanged(int state, String incomingNumber) {
+        public void onCallStateChanged(int state) {
             if (DBG) log("PhoneStateListener onCallStateChanged: state is " + state);
             boolean isCallStateIdle = state == TelephonyManager.CALL_STATE_IDLE;
             if (mEnableVideoCalling != null) {
@@ -305,7 +305,7 @@
                 mButtonWifiCalling.setEnabled(isCallStateIdle);
             }
         }
-    };
+    }
 
     private final ProvisioningManager.Callback mProvisioningCallback =
             new ProvisioningManager.Callback() {
@@ -398,7 +398,8 @@
             cdmaOptions.setIntent(mSubscriptionInfoHelper.getIntent(CdmaCallOptions.class));
             gsmOptions.setIntent(mSubscriptionInfoHelper.getIntent(GsmUmtsCallOptions.class));
         } else {
-            prefSet.removePreference(cdmaOptions);
+            // Remove GSM options and repopulate the preferences in this Activity if phone type is
+            // GSM.
             prefSet.removePreference(gsmOptions);
 
             int phoneType = mPhone.getPhoneType();
@@ -406,12 +407,16 @@
                 prefSet.removePreference(fdnButton);
             } else {
                 if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
+                    // For now, just keep CdmaCallOptions as one entity. Eventually CDMA should
+                    // follow the same pattern as GSM below, where VP and Call forwarding are
+                    // populated here and Call waiting is populated in another "Additional Settings"
+                    // submenu for CDMA.
                     prefSet.removePreference(fdnButton);
-                    addPreferencesFromResource(R.xml.cdma_call_privacy);
-                    CdmaVoicePrivacySwitchPreference buttonVoicePrivacy =
-                            (CdmaVoicePrivacySwitchPreference) findPreference(BUTTON_VP_KEY);
-                    buttonVoicePrivacy.setPhone(mPhone);
+                    cdmaOptions.setSummary(null);
+                    cdmaOptions.setTitle(R.string.additional_gsm_call_settings);
+                    cdmaOptions.setIntent(mSubscriptionInfoHelper.getIntent(CdmaCallOptions.class));
                 } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
+                    prefSet.removePreference(cdmaOptions);
                     if (mPhone.getIccCard() == null || !mPhone.getIccCard().getIccFdnAvailable()) {
                         prefSet.removePreference(fdnButton);
                     }
diff --git a/src/com/android/phone/CallNotifier.java b/src/com/android/phone/CallNotifier.java
index c9d5eb0..7f61f78 100644
--- a/src/com/android/phone/CallNotifier.java
+++ b/src/com/android/phone/CallNotifier.java
@@ -720,7 +720,7 @@
             mCFIStatus.put(this.mSubId, visible);
             updatePhoneStateListeners(false, UPDATE_TYPE_CFI, this.mSubId);
         }
-    };
+    }
 
     private void log(String msg) {
         Log.d(LOG_TAG, msg);
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index b0a4653..d3792f1 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -466,7 +466,15 @@
                                             resultData.getParcelable(KEY_CONFIG_BUNDLE);
                                     saveConfigToXml(getCarrierPackageForPhoneId(phoneId), "",
                                             phoneId, carrierId, config);
-                                    mConfigFromCarrierApp[phoneId] = config;
+                                    if (config != null) {
+                                        mConfigFromCarrierApp[phoneId] = config;
+                                    } else {
+                                        logdWithLocalLog("Config from carrier app is null "
+                                                + "for phoneId " + phoneId);
+                                        // Put a stub bundle in place so that the rest of the logic
+                                        // continues smoothly.
+                                        mConfigFromCarrierApp[phoneId] = new PersistableBundle();
+                                    }
                                     sendMessage(
                                             obtainMessage(
                                                     EVENT_FETCH_CARRIER_DONE, phoneId, -1));
@@ -873,9 +881,15 @@
     /** Returns the package name of a priveleged carrier app, or null if there is none. */
     @Nullable
     private String getCarrierPackageForPhoneId(int phoneId) {
-        List<String> carrierPackageNames = TelephonyManager.from(mContext)
+        List<String> carrierPackageNames;
+        final long token = Binder.clearCallingIdentity();
+        try {
+            carrierPackageNames = TelephonyManager.from(mContext)
                 .getCarrierPackageNamesForIntentAndPhone(
-                        new Intent(CarrierService.CARRIER_SERVICE_INTERFACE), phoneId);
+                    new Intent(CarrierService.CARRIER_SERVICE_INTERFACE), phoneId);
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
         if (carrierPackageNames != null && carrierPackageNames.size() > 0) {
             return carrierPackageNames.get(0);
         } else {
diff --git a/src/com/android/phone/CdmaCallOptions.java b/src/com/android/phone/CdmaCallOptions.java
index 2e310aa..6145870 100644
--- a/src/com/android/phone/CdmaCallOptions.java
+++ b/src/com/android/phone/CdmaCallOptions.java
@@ -21,18 +21,36 @@
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
 import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionManager;
+import android.telephony.ims.ImsException;
+import android.telephony.ims.ImsManager;
+import android.telephony.ims.ImsMmTelManager;
+import android.telephony.ims.feature.MmTelFeature;
+import android.util.Log;
 import android.view.MenuItem;
 
 import com.android.internal.telephony.PhoneConstants;
 
 public class CdmaCallOptions extends TimeConsumingPreferenceActivity {
     private static final String LOG_TAG = "CdmaCallOptions";
-    private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
     private static final String BUTTON_VP_KEY = "button_voice_privacy_key";
     private static final String CALL_FORWARDING_KEY = "call_forwarding_key";
     private static final String CALL_WAITING_KEY = "call_waiting_key";
-    private CdmaVoicePrivacySwitchPreference mButtonVoicePrivacy;
+
+    private class UtCallback extends ImsMmTelManager.CapabilityCallback {
+        @Override
+        public void onCapabilitiesStatusChanged(MmTelFeature.MmTelCapabilities capabilities) {
+            boolean isUtAvailable = capabilities.isCapable(
+                    MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT);
+            updatePreferencesEnabled(isUtAvailable);
+        }
+    }
+
+    private Preference mCallForwardingPref;
+    private CdmaCallWaitingPreference mCallWaitingPref;
+    private UtCallback mUtCallback;
+    private ImsMmTelManager mMmTelManager;
 
     @Override
     protected void onCreate(Bundle icicle) {
@@ -44,27 +62,112 @@
         subInfoHelper.setActionBarTitle(
                 getActionBar(), getResources(), R.string.labelCdmaMore_with_label);
 
-        mButtonVoicePrivacy = (CdmaVoicePrivacySwitchPreference) findPreference(BUTTON_VP_KEY);
-        mButtonVoicePrivacy.setPhone(subInfoHelper.getPhone());
+        CdmaVoicePrivacySwitchPreference buttonVoicePrivacy =
+                (CdmaVoicePrivacySwitchPreference) findPreference(BUTTON_VP_KEY);
+        buttonVoicePrivacy.setPhone(subInfoHelper.getPhone());
         PersistableBundle carrierConfig;
+        int subId;
         if (subInfoHelper.hasSubId()) {
-            carrierConfig = PhoneGlobals.getInstance().getCarrierConfigForSubId(
-                    subInfoHelper.getSubId());
+            subId = subInfoHelper.getSubId();
         } else {
-            carrierConfig = PhoneGlobals.getInstance().getCarrierConfig();
+            subId = SubscriptionManager.getDefaultSubscriptionId();
         }
+        carrierConfig = PhoneGlobals.getInstance().getCarrierConfigForSubId(subId);
         if (subInfoHelper.getPhone().getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA
                 || carrierConfig.getBoolean(CarrierConfigManager.KEY_VOICE_PRIVACY_DISABLE_UI_BOOL)) {
-            // disable the entire screen
-            mButtonVoicePrivacy.setEnabled(false);
+            buttonVoicePrivacy.setEnabled(false);
         }
 
-        Preference callForwardingPref = getPreferenceScreen().findPreference(CALL_FORWARDING_KEY);
-        callForwardingPref.setIntent(subInfoHelper.getIntent(CdmaCallForwardOptions.class));
+        mCallForwardingPref = getPreferenceScreen().findPreference(CALL_FORWARDING_KEY);
+        if (carrierConfig != null && carrierConfig.getBoolean(
+                CarrierConfigManager.KEY_CALL_FORWARDING_VISIBILITY_BOOL)) {
+            mCallForwardingPref.setIntent(
+                    subInfoHelper.getIntent(CdmaCallForwardOptions.class));
+        } else {
+            getPreferenceScreen().removePreference(mCallForwardingPref);
+            mCallForwardingPref = null;
+        }
 
-        CdmaCallWaitingPreference callWaitingPref = (CdmaCallWaitingPreference)getPreferenceScreen()
-                                                     .findPreference(CALL_WAITING_KEY);
-        callWaitingPref.init(this, subInfoHelper.getPhone());
+        mCallWaitingPref = (CdmaCallWaitingPreference) getPreferenceScreen()
+                .findPreference(CALL_WAITING_KEY);
+        if (carrierConfig == null || !carrierConfig.getBoolean(
+                CarrierConfigManager.KEY_ADDITIONAL_SETTINGS_CALL_WAITING_VISIBILITY_BOOL)) {
+            getPreferenceScreen().removePreference(mCallWaitingPref);
+            mCallWaitingPref = null;
+        }
+        // Do not go further if the preferences are removed.
+        if (mCallForwardingPref == null && mCallWaitingPref == null) return;
+
+        boolean isSsOverCdmaEnabled = carrierConfig != null && carrierConfig.getBoolean(
+                CarrierConfigManager.KEY_SUPPORT_SS_OVER_CDMA_BOOL);
+        boolean isSsOverUtEnabled = carrierConfig != null && carrierConfig.getBoolean(
+                CarrierConfigManager.KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL);
+
+        if (isSsOverCdmaEnabled && mCallWaitingPref != null) {
+            // If SS over CDMA is enabled, then the preference will always be enabled,
+            // independent of SS over UT status. Initialize it now.
+            mCallWaitingPref.init(this, subInfoHelper.getPhone());
+            return;
+        }
+        // Since SS over UT availability can change, first disable the preferences that rely on it
+        // and only enable it if UT is available.
+        updatePreferencesEnabled(false);
+        if (isSsOverUtEnabled) {
+            // Register a callback to listen to SS over UT state. This will enable the preferences
+            // once the callback notifies settings that UT is enabled.
+            registerMmTelCapsCallback(subId);
+        } else {
+            Log.w(LOG_TAG, "SS over UT and CDMA disabled, but preferences are visible.");
+        }
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        unregisterMmTelCapsCallback();
+    }
+
+    private void unregisterMmTelCapsCallback() {
+        if (mMmTelManager == null || mUtCallback == null) return;
+        mMmTelManager.unregisterMmTelCapabilityCallback(mUtCallback);
+        mUtCallback = null;
+        Log.d(LOG_TAG, "unregisterMmTelCapsCallback: UT availability callback unregistered");
+    }
+
+    private void registerMmTelCapsCallback(int subId) {
+        if (!SubscriptionManager.isValidSubscriptionId(subId)) return;
+        ImsManager imsManager = getSystemService(ImsManager.class);
+        try {
+            if (imsManager != null) {
+                mUtCallback = new UtCallback();
+                mMmTelManager = imsManager.getImsMmTelManager(subId);
+                // Callback will call back with the state as soon as it is available.
+                mMmTelManager.registerMmTelCapabilityCallback(getMainExecutor(), mUtCallback);
+                Log.d(LOG_TAG, "registerMmTelCapsCallback: UT availability callback "
+                        + "registered");
+            } else {
+                Log.w(LOG_TAG, "registerMmTelCapsCallback: couldn't get ImsManager, assuming "
+                        + "UT is not available: ");
+                updatePreferencesEnabled(false);
+            }
+        } catch (IllegalArgumentException | ImsException e) {
+            Log.w(LOG_TAG, "registerMmTelCapsCallback: couldn't register callback, assuming "
+                    + "UT is not available: " + e);
+            updatePreferencesEnabled(false);
+        }
+    }
+
+    private void updatePreferencesEnabled(boolean isEnabled) {
+        Log.d(LOG_TAG, "updatePreferencesEnabled: " + isEnabled);
+        if (mCallForwardingPref != null) mCallForwardingPref.setEnabled(isEnabled);
+
+        if (mCallWaitingPref == null || mCallWaitingPref.isEnabled() == isEnabled) return;
+        mCallWaitingPref.setActionAvailable(isEnabled);
+        if (isEnabled) {
+            SubscriptionInfoHelper subInfoHelper = new SubscriptionInfoHelper(this, getIntent());
+            // kick off the normal process to populate the Call Waiting status.
+            mCallWaitingPref.init(this, subInfoHelper.getPhone());
+        }
     }
 
     @Override
diff --git a/src/com/android/phone/CdmaCallWaitingPreference.java b/src/com/android/phone/CdmaCallWaitingPreference.java
index 4cda7ba..3713b19 100644
--- a/src/com/android/phone/CdmaCallWaitingPreference.java
+++ b/src/com/android/phone/CdmaCallWaitingPreference.java
@@ -16,32 +16,29 @@
 
 package com.android.phone;
 
-import com.android.internal.telephony.CommandException;
-import com.android.internal.telephony.CommandsInterface;
-import com.android.internal.telephony.Phone;
-
 import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.content.res.TypedArray;
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.Message;
 import android.preference.Preference;
-import android.preference.PreferenceActivity;
 import android.util.AttributeSet;
 import android.util.Log;
 
+import com.android.internal.telephony.CommandException;
+import com.android.internal.telephony.CommandsInterface;
+import com.android.internal.telephony.Phone;
+
 public class CdmaCallWaitingPreference extends Preference {
     private static final String LOG_TAG = "CdmaCallWaitingPreference";
     private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
-    private int mButtonClicked;
     private Context mContext;
     private Phone mPhone;
-    private SubscriptionInfoHelper mSubscriptionInfoHelper;
     private TimeConsumingPreferenceListener mTcpListener;
     private MyHandler mHandler = new MyHandler();
+    private boolean mIsActionAvailable = true;
 
     public CdmaCallWaitingPreference(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
@@ -67,6 +64,16 @@
         }
     }
 
+    /**
+     * Enables this preference if Call waiting is available in the platform. If not, this will
+     * override all attempts to enable the preference from the associated
+     * TimeConsumingPreferenceActivity.
+     */
+    public void setActionAvailable(boolean isAvailable) {
+        mIsActionAvailable = isAvailable;
+        super.setEnabled(mIsActionAvailable);
+    }
+
     @Override
     public void onClick() {
         super.onClick();
@@ -95,6 +102,14 @@
         builder.create().show();
     }
 
+    @Override
+    public void setEnabled(boolean enabled) {
+        // If this action is currently disabled due to configuration changes, do not allow anything
+        // to enable it.
+        if (!mIsActionAvailable) return;
+        super.setEnabled(enabled);
+    }
+
     private class MyHandler extends Handler {
         static final int MESSAGE_GET_CALL_WAITING = 0;
         static final int MESSAGE_SET_CALL_WAITING = 1;
diff --git a/src/com/android/phone/IccPanel.java b/src/com/android/phone/IccPanel.java
index 73dd8bc..4018e40 100644
--- a/src/com/android/phone/IccPanel.java
+++ b/src/com/android/phone/IccPanel.java
@@ -74,13 +74,13 @@
     @Override
     protected void onStart() {
         super.onStart();
-        mStatusBarManager.setDisabledForSimNetworkLock(true);
+        mStatusBarManager.setExpansionDisabledForSimNetworkLock(true);
     }
 
     @Override
     public void onStop() {
         super.onStop();
-        mStatusBarManager.setDisabledForSimNetworkLock(false);
+        mStatusBarManager.setExpansionDisabledForSimNetworkLock(false);
     }
 
     public boolean onKeyDown(int keyCode, KeyEvent event) {
diff --git a/src/com/android/phone/ImsRcsController.java b/src/com/android/phone/ImsRcsController.java
index 2e4ee94..7d594d1 100644
--- a/src/com/android/phone/ImsRcsController.java
+++ b/src/com/android/phone/ImsRcsController.java
@@ -49,7 +49,6 @@
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.TelephonyPermissions;
 import com.android.internal.telephony.ims.ImsResolver;
-import com.android.internal.telephony.imsphone.ImsPhone;
 import com.android.services.telephony.rcs.RcsFeatureController;
 import com.android.services.telephony.rcs.SipTransportController;
 import com.android.services.telephony.rcs.TelephonyRcsService;
@@ -214,6 +213,8 @@
         final long token = Binder.clearCallingIdentity();
         try {
             getRcsFeatureController(subId).unregisterRcsAvailabilityCallback(subId, callback);
+        } catch (ServiceSpecificException e) {
+            Log.e(TAG, "unregisterRcsAvailabilityCallback: error=" + e.errorCode);
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -338,12 +339,16 @@
     public RcsContactUceCapability addUceRegistrationOverrideShell(int subId,
             Set<String> featureTags) throws ImsException {
         // Permission check happening in PhoneInterfaceManager.
-        UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
-                UceControllerManager.class);
-        if (uceCtrlManager == null) {
-            return null;
+        try {
+            UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
+                    UceControllerManager.class);
+            if (uceCtrlManager == null) {
+                return null;
+            }
+            return uceCtrlManager.addUceRegistrationOverride(featureTags);
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.getMessage(), e.errorCode);
         }
-        return uceCtrlManager.addUceRegistrationOverride(featureTags);
     }
 
     /**
@@ -353,12 +358,16 @@
     public RcsContactUceCapability removeUceRegistrationOverrideShell(int subId,
             Set<String> featureTags) throws ImsException {
         // Permission check happening in PhoneInterfaceManager.
-        UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
-                UceControllerManager.class);
-        if (uceCtrlManager == null) {
-            return null;
+        try {
+            UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
+                    UceControllerManager.class);
+            if (uceCtrlManager == null) {
+                return null;
+            }
+            return uceCtrlManager.removeUceRegistrationOverride(featureTags);
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.getMessage(), e.errorCode);
         }
-        return uceCtrlManager.removeUceRegistrationOverride(featureTags);
     }
 
     /**
@@ -367,13 +376,17 @@
     // Used for SHELL command only right now.
     public RcsContactUceCapability clearUceRegistrationOverrideShell(int subId)
             throws ImsException {
-        // Permission check happening in PhoneInterfaceManager.
-        UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
-                UceControllerManager.class);
-        if (uceCtrlManager == null) {
-            return null;
+        try {
+            // Permission check happening in PhoneInterfaceManager.
+            UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
+                    UceControllerManager.class);
+            if (uceCtrlManager == null) {
+                return null;
+            }
+            return uceCtrlManager.clearUceRegistrationOverride();
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.getMessage(), e.errorCode);
         }
-        return uceCtrlManager.clearUceRegistrationOverride();
     }
 
     /**
@@ -382,13 +395,17 @@
     // Used for SHELL command only right now.
     public RcsContactUceCapability getLatestRcsContactUceCapabilityShell(int subId)
             throws ImsException {
-        // Permission check happening in PhoneInterfaceManager.
-        UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
-                UceControllerManager.class);
-        if (uceCtrlManager == null) {
-            return null;
+        try {
+            // Permission check happening in PhoneInterfaceManager.
+            UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
+                    UceControllerManager.class);
+            if (uceCtrlManager == null) {
+                return null;
+            }
+            return uceCtrlManager.getLatestRcsContactUceCapability();
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.getMessage(), e.errorCode);
         }
-        return uceCtrlManager.getLatestRcsContactUceCapability();
     }
 
     /**
@@ -397,14 +414,18 @@
      */
     // Used for SHELL command only right now.
     public String getLastUcePidfXmlShell(int subId) throws ImsException {
-        // Permission check happening in PhoneInterfaceManager.
-        UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
-                UceControllerManager.class);
-        if (uceCtrlManager == null) {
-            return null;
+        try {
+            // Permission check happening in PhoneInterfaceManager.
+            UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
+                    UceControllerManager.class);
+            if (uceCtrlManager == null) {
+                return null;
+            }
+            String pidfXml = uceCtrlManager.getLastPidfXml();
+            return pidfXml == null ? "none" : pidfXml;
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.getMessage(), e.errorCode);
         }
-        String pidfXml = uceCtrlManager.getLastPidfXml();
-        return pidfXml == null ? "none" : pidfXml;
     }
 
     /**
@@ -413,12 +434,16 @@
      */
     // Used for SHELL command only right now.
     public boolean removeUceRequestDisallowedStatus(int subId) throws ImsException {
-        UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
-                UceControllerManager.class);
-        if (uceCtrlManager == null) {
-            return false;
+        try {
+            UceControllerManager uceCtrlManager = getRcsFeatureController(subId, true).getFeature(
+                    UceControllerManager.class);
+            if (uceCtrlManager == null) {
+                return false;
+            }
+            return uceCtrlManager.removeUceRequestDisallowedStatus();
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.getMessage(), e.errorCode);
         }
-        return uceCtrlManager.removeUceRequestDisallowedStatus();
     }
 
     /**
@@ -426,12 +451,16 @@
      */
     // Used for SHELL command only right now.
     public boolean setCapabilitiesRequestTimeout(int subId, long timeoutAfter) throws ImsException {
-        UceControllerManager uceCtrlManager = getRcsFeatureController(subId).getFeature(
-                UceControllerManager.class);
-        if (uceCtrlManager == null) {
-            return false;
+        try {
+            UceControllerManager uceCtrlManager = getRcsFeatureController(subId, true).getFeature(
+                    UceControllerManager.class);
+            if (uceCtrlManager == null) {
+                return false;
+            }
+            return uceCtrlManager.setCapabilitiesRequestTimeout(timeoutAfter);
+        } catch (ServiceSpecificException e) {
+            throw new ImsException(e.getMessage(), e.errorCode);
         }
-        return uceCtrlManager.setCapabilitiesRequestTimeout(timeoutAfter);
     }
 
     @Override
@@ -465,6 +494,8 @@
                         "This subscription does not support UCE.");
             }
             uceCtrlManager.unregisterPublishStateCallback(c);
+        } catch (ServiceSpecificException e) {
+            Log.e(TAG, "unregisterUcePublishStateCallback: error=" + e.errorCode);
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -570,8 +601,11 @@
 
     @Override
     public void destroySipDelegate(int subId, ISipDelegate connection, int reason) {
-        enforceImsSingleRegistrationPermission("destroySipDelegate");
-
+        // Do not check permissions here - the caller needs to have a connection already from the
+        // create method to call this method.
+        if (connection == null) {
+            return;
+        }
         final long identity = Binder.clearCallingIdentity();
         try {
             SipTransportController transport = getRcsFeatureController(subId).getFeature(
@@ -580,6 +614,8 @@
                 return;
             }
             transport.destroySipDelegate(subId, connection, reason);
+        } catch (ServiceSpecificException e) {
+            Log.e(TAG, "destroySipDelegate: error=" + e.errorCode);
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
@@ -598,6 +634,8 @@
                 return;
             }
             transport.triggerFullNetworkRegistration(subId, connection, sipCode, sipReason);
+        } catch (ServiceSpecificException e) {
+            Log.e(TAG, "triggerNetworkRegistration: error=" + e.errorCode);
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
@@ -688,31 +726,6 @@
     }
 
     /**
-     * Retrieve ImsPhone instance.
-     *
-     * @param subId the subscription ID
-     * @return The ImsPhone instance
-     * @throws ServiceSpecificException if getting ImsPhone instance failed.
-     */
-    private ImsPhone getImsPhone(int subId) {
-        if (!ImsManager.isImsSupportedOnDevice(mApp)) {
-            throw new ServiceSpecificException(ImsException.CODE_ERROR_UNSUPPORTED_OPERATION,
-                    "IMS is not available on device.");
-        }
-        Phone phone = PhoneGlobals.getPhone(subId);
-        if (phone == null) {
-            throw new ServiceSpecificException(ImsException.CODE_ERROR_INVALID_SUBSCRIPTION,
-                    "Invalid subscription Id: " + subId);
-        }
-        ImsPhone imsPhone = (ImsPhone) phone.getImsPhone();
-        if (imsPhone == null) {
-            throw new ServiceSpecificException(ImsException.CODE_ERROR_SERVICE_UNAVAILABLE,
-                    "Cannot find ImsPhone instance: " + subId);
-        }
-        return imsPhone;
-    }
-
-    /**
      * Retrieve RcsFeatureManager instance.
      *
      * @param subId the subscription ID
@@ -720,6 +733,18 @@
      * @throws ServiceSpecificException if getting RcsFeatureManager instance failed.
      */
     private RcsFeatureController getRcsFeatureController(int subId) {
+        return getRcsFeatureController(subId, false /* skipVerifyingConfig */);
+    }
+
+    /**
+     * Retrieve RcsFeatureManager instance.
+     *
+     * @param subId the subscription ID
+     * @param skipVerifyingConfig If the RCS configuration can be skip.
+     * @return The RcsFeatureManager instance
+     * @throws ServiceSpecificException if getting RcsFeatureManager instance failed.
+     */
+    private RcsFeatureController getRcsFeatureController(int subId, boolean skipVerifyingConfig) {
         if (!ImsManager.isImsSupportedOnDevice(mApp)) {
             throw new ServiceSpecificException(ImsException.CODE_ERROR_UNSUPPORTED_OPERATION,
                     "IMS is not available on device.");
@@ -734,6 +759,9 @@
                     "Invalid subscription Id: " + subId);
         }
         int slotId = phone.getPhoneId();
+        if (!skipVerifyingConfig) {
+            verifyImsRcsConfiguredOrThrow(slotId);
+        }
         RcsFeatureController c = mRcsService.getFeatureController(slotId);
         if (c == null) {
             throw new ServiceSpecificException(ImsException.CODE_ERROR_UNSUPPORTED_OPERATION,
@@ -742,6 +770,20 @@
         return c;
     }
 
+    /**
+     * Throw an ImsException if the IMS resolver does not have an ImsService configured for RCS
+     * for the given slot ID or no ImsResolver instance has been created.
+     * @param slotId The slot ID that the IMS service is created for.
+     * @throws ServiceSpecificException If there is no ImsService configured for this slot.
+     */
+    private void verifyImsRcsConfiguredOrThrow(int slotId) {
+        if (mImsResolver == null
+                || !mImsResolver.isImsServiceConfiguredForFeature(slotId, ImsFeature.FEATURE_RCS)) {
+            throw new ServiceSpecificException(ImsException.CODE_ERROR_UNSUPPORTED_OPERATION,
+                    "This subscription does not support RCS");
+        }
+    }
+
     private boolean isImsSingleRegistrationSupportedOnDevice() {
         return mSingleRegistrationOverride != null ? mSingleRegistrationOverride
                 : mApp.getPackageManager().hasSystemFeature(
diff --git a/src/com/android/phone/LocalConnectionImpl.java b/src/com/android/phone/LocalConnectionImpl.java
new file mode 100644
index 0000000..c2630ef
--- /dev/null
+++ b/src/com/android/phone/LocalConnectionImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+package com.android.phone;
+
+import android.content.Context;
+import android.telephony.TelephonyLocalConnection;
+
+import com.android.phone.callcomposer.CallComposerPictureManager;
+
+import java.util.UUID;
+
+public class LocalConnectionImpl implements TelephonyLocalConnection.ConnectionImpl {
+    private Context mContext;
+
+    public LocalConnectionImpl(Context context) {
+        mContext = context;
+    }
+
+    @Override
+    public String getCallComposerServerUrlForHandle(int subscriptionId, UUID uuid) {
+        return CallComposerPictureManager.getInstance(mContext, subscriptionId)
+                .getServerUrlForImageId(uuid);
+    }
+}
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index c4686db..1a1c321 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -49,6 +49,7 @@
 import android.telephony.ServiceState;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyLocalConnection;
 import android.telephony.TelephonyManager;
 import android.telephony.data.ApnSetting;
 import android.util.LocalLog;
@@ -56,6 +57,7 @@
 import android.widget.Toast;
 
 import com.android.ims.ImsFeatureBinderRepository;
+import com.android.internal.os.BinderCallsStats;
 import com.android.internal.telephony.CallManager;
 import com.android.internal.telephony.IccCardConstants;
 import com.android.internal.telephony.MmiCode;
@@ -208,6 +210,7 @@
             new CarrierVvmPackageInstalledReceiver();
 
     private final SettingsObserver mSettingsObserver;
+    private BinderCallsStats.SettingsObserver mBinderCallsSettingsObserver;
 
     private static class EventSimStateChangedBag {
         final int mPhoneId;
@@ -372,6 +375,9 @@
 
         ContentResolver resolver = getContentResolver();
 
+        // Initialize the shim from frameworks/opt/telephony into packages/services/Telephony.
+        TelephonyLocalConnection.setInstance(new LocalConnectionImpl(this));
+
         // Cache the "voice capable" flag.
         // This flag currently comes from a resource (which is
         // overrideable on a per-product basis):
@@ -523,6 +529,13 @@
                     SettingsConstants.HAC_KEY + "=" + (hac == SettingsConstants.HAC_ENABLED
                             ? SettingsConstants.HAC_VAL_ON : SettingsConstants.HAC_VAL_OFF));
         }
+
+        // Start tracking Binder latency for the phone process.
+        mBinderCallsSettingsObserver = new BinderCallsStats.SettingsObserver(
+            getApplicationContext(),
+            new BinderCallsStats(
+                    new BinderCallsStats.Injector(),
+                    com.android.internal.os.BinderLatencyProto.Dims.TELEPHONY));
     }
 
     /**
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 44858d2..eeccf0f 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -29,6 +29,8 @@
 import android.annotation.Nullable;
 import android.app.AppOpsManager;
 import android.app.PendingIntent;
+import android.app.compat.CompatChanges;
+import android.app.role.RoleManager;
 import android.content.ComponentName;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -106,7 +108,7 @@
 import android.telephony.UssdResponse;
 import android.telephony.VisualVoicemailSmsFilterSettings;
 import android.telephony.data.ApnSetting;
-import android.telephony.data.SlicingConfig;
+import android.telephony.data.NetworkSlicingConfig;
 import android.telephony.emergency.EmergencyNumber;
 import android.telephony.gba.GbaAuthRequest;
 import android.telephony.gba.UaSecurityProtocolIdentifier;
@@ -139,7 +141,7 @@
 import com.android.internal.telephony.CallForwardInfo;
 import com.android.internal.telephony.CallManager;
 import com.android.internal.telephony.CallStateException;
-import com.android.internal.telephony.CarrierInfoManager;
+import com.android.internal.telephony.CallTracker;
 import com.android.internal.telephony.CarrierResolver;
 import com.android.internal.telephony.CellNetworkScanResult;
 import com.android.internal.telephony.CommandException;
@@ -194,6 +196,9 @@
 import com.android.internal.telephony.util.VoicemailNotificationSettingsUtil;
 import com.android.internal.util.FunctionalUtils;
 import com.android.internal.util.HexDump;
+import com.android.phone.callcomposer.CallComposerPictureManager;
+import com.android.phone.callcomposer.CallComposerPictureTransfer;
+import com.android.phone.callcomposer.ImageData;
 import com.android.phone.settings.PickSmsSubscriptionActivity;
 import com.android.phone.vvm.PhoneAccountHandleConverter;
 import com.android.phone.vvm.RemoteVvmTaskManager;
@@ -203,7 +208,10 @@
 import com.android.services.telephony.TelephonyConnectionService;
 import com.android.telephony.Rlog;
 
+import java.io.ByteArrayOutputStream;
 import java.io.FileDescriptor;
+import java.io.IOException;
+import java.io.InputStream;
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -333,6 +341,7 @@
     private static final int CMD_PREPARE_UNATTENDED_REBOOT = 109;
     private static final int CMD_GET_SLICING_CONFIG = 110;
     private static final int EVENT_GET_SLICING_CONFIG_DONE = 111;
+    private static final int CMD_ERASE_DATA_SHARED_PREFERENCES = 112;
 
     // Parameters of select command.
     private static final int SELECT_COMMAND = 0xA4;
@@ -349,6 +358,7 @@
     private ImsResolver mImsResolver;
     private UserManager mUserManager;
     private AppOpsManager mAppOps;
+    private PackageManager mPm;
     private MainThreadHandler mMainThreadHandler;
     private SubscriptionController mSubscriptionController;
     private SharedPreferences mTelephonySharedPreferences;
@@ -1702,6 +1712,12 @@
                     handleNullReturnEvent(msg, "eraseModemConfig");
                     break;
 
+                case CMD_ERASE_DATA_SHARED_PREFERENCES:
+                    request = (MainThreadRequest) msg.obj;
+                    request.result = defaultPhone.eraseDataInSharedPreferences();
+                    notifyRequester(request);
+                    break;
+
                 case CMD_CHANGE_ICC_LOCK_PASSWORD:
                     request = (MainThreadRequest) msg.obj;
                     onCompleted = obtainMessage(EVENT_CHANGE_ICC_LOCK_PASSWORD_DONE, request);
@@ -1927,24 +1943,24 @@
                     request = (MainThreadRequest) ar.userObj;
                     ResultReceiver result = (ResultReceiver) request.argument;
 
-                    SlicingConfig slicingConfig = null;
+                    NetworkSlicingConfig slicingConfig = null;
                     Bundle bundle = new Bundle();
                     int resultCode = 0;
                     if (ar.exception != null) {
                         Log.e(LOG_TAG, "Exception retrieving slicing configuration="
                                 + ar.exception);
-                        resultCode = TelephonyManager.SlicingException.ERROR_MODEM_ERROR;
+                        resultCode = TelephonyManager.NetworkSlicingException.ERROR_MODEM_ERROR;
                     } else if (ar.result == null) {
                         Log.w(LOG_TAG, "Timeout Waiting for slicing configuration!");
-                        resultCode = TelephonyManager.SlicingException.ERROR_TIMEOUT;
+                        resultCode = TelephonyManager.NetworkSlicingException.ERROR_TIMEOUT;
                     } else {
                         // use the result as returned
-                        resultCode = TelephonyManager.SlicingException.SUCCESS;
-                        slicingConfig = (SlicingConfig) ar.result;
+                        resultCode = TelephonyManager.NetworkSlicingException.SUCCESS;
+                        slicingConfig = (NetworkSlicingConfig) ar.result;
                     }
 
                     if (slicingConfig == null) {
-                        slicingConfig = new SlicingConfig();
+                        slicingConfig = new NetworkSlicingConfig();
                     }
                     bundle.putParcelable(TelephonyManager.KEY_SLICING_CONFIG_HANDLE, slicingConfig);
                     result.send(resultCode, bundle);
@@ -1955,8 +1971,7 @@
                 case CMD_PREPARE_UNATTENDED_REBOOT:
                     request = (MainThreadRequest) msg.obj;
                     request.result =
-                            UiccController.getInstance().getPinStorage()
-                                .prepareUnattendedReboot(request.workSource);
+                            UiccController.getInstance().getPinStorage().prepareUnattendedReboot();
                     notifyRequester(request);
                     break;
 
@@ -2078,7 +2093,7 @@
                 // Wait for at least timeoutInMs before returning null request result
                 long now = SystemClock.elapsedRealtime();
                 long deadline = now + timeoutInMs;
-                while (request == null && now < deadline) {
+                while (request.result == null && now < deadline) {
                     try {
                         request.wait(deadline - now);
                     } catch (InterruptedException e) {
@@ -2156,6 +2171,7 @@
         mImsResolver = ImsResolver.getInstance();
         mUserManager = (UserManager) app.getSystemService(Context.USER_SERVICE);
         mAppOps = (AppOpsManager)app.getSystemService(Context.APP_OPS_SERVICE);
+        mPm = app.getSystemService(PackageManager.class);
         mMainThreadHandler = new MainThreadHandler();
         mSubscriptionController = SubscriptionController.getInstance();
         mTelephonySharedPreferences =
@@ -2206,18 +2222,14 @@
         return PhoneFactory.getPhone(mSubscriptionController.getPhoneId(subId));
     }
 
-    private void sendEraseModemConfig(Phone phone) {
-        if (phone != null) {
-            TelephonyPermissions.enforceCallingOrSelfModifyPermissionOrCarrierPrivilege(
-                  mApp, phone.getSubId(), "eraseModemConfig");
-            final long identity = Binder.clearCallingIdentity();
-            try {
-                Boolean success = (Boolean) sendRequest(CMD_ERASE_MODEM_CONFIG, null);
-                if (DBG) log("eraseModemConfig:" + ' ' + (success ? "ok" : "fail"));
-            } finally {
-                Binder.restoreCallingIdentity(identity);
-            }
-        }
+    private void sendEraseModemConfig(@NonNull Phone phone) {
+        Boolean success = (Boolean) sendRequest(CMD_ERASE_MODEM_CONFIG, null);
+        if (DBG) log("eraseModemConfig:" + ' ' + (success ? "ok" : "fail"));
+    }
+
+    private void sendEraseDataInSharedPreferences(@NonNull Phone phone) {
+        Boolean success = (Boolean) sendRequest(CMD_ERASE_DATA_SHARED_PREFERENCES, null);
+        if (DBG) log("eraseDataInSharedPreferences:" + ' ' + (success ? "ok" : "fail"));
     }
 
     private boolean isImsAvailableOnDevice() {
@@ -2763,14 +2775,46 @@
         }
     }
 
+    /**
+     * @deprecated  This method is deprecated and is only being kept due to an UnsupportedAppUsage
+     * tag on getCallState Binder call.
+     */
+    @Deprecated
+    @Override
     public int getCallState() {
-        return getCallStateForSlot(getSlotForDefaultSubscription());
-    }
-
-    public int getCallStateForSlot(int slotIndex) {
+        if (CompatChanges.isChangeEnabled(
+                TelecomManager.ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION,
+                Binder.getCallingUid())) {
+            // Do not allow this API to be called on API version 31+, it should only be
+            // called on old apps using this Binder call directly.
+            throw new SecurityException("This method can only be used for applications "
+                    + "targeting API version 30 or less.");
+        }
         final long identity = Binder.clearCallingIdentity();
         try {
-            Phone phone = PhoneFactory.getPhone(slotIndex);
+            Phone phone = getPhone(getDefaultSubscription());
+            return phone == null ? TelephonyManager.CALL_STATE_IDLE :
+                    PhoneConstantConversions.convertCallState(phone.getState());
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    @Override
+    public int getCallStateForSubscription(int subId, String callingPackage, String featureId) {
+        if (CompatChanges.isChangeEnabled(
+                TelecomManager.ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION,
+                Binder.getCallingUid())) {
+            // Check READ_PHONE_STATE for API version 31+
+            if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(mApp, subId, callingPackage,
+                    featureId, "getCallStateForSubscription")) {
+                throw new SecurityException("getCallState requires READ_PHONE_STATE for apps "
+                        + "targeting API level 31+.");
+            }
+        }
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            Phone phone = getPhone(subId);
             return phone == null ? TelephonyManager.CALL_STATE_IDLE :
                     PhoneConstantConversions.convertCallState(phone.getState());
         } finally {
@@ -3066,6 +3110,7 @@
             return null;
         }
         int subId = phone.getSubId();
+        enforceCallingPackage(callingPackage, Binder.getCallingUid(), "getImeiForSlot");
         if (!TelephonyPermissions.checkCallingOrSelfReadDeviceIdentifiers(mApp, subId,
                 callingPackage, callingFeatureId, "getImeiForSlot")) {
             return null;
@@ -3222,6 +3267,26 @@
     //
 
     /**
+     * Make sure the caller is the calling package itself
+     *
+     * @throws SecurityException if the caller is not the calling package
+     */
+    private void enforceCallingPackage(String callingPackage, int callingUid, String message) {
+        int packageUid = -1;
+        PackageManager pm = mApp.getBaseContext().createContextAsUser(
+                UserHandle.getUserHandleForUid(callingUid), 0).getPackageManager();
+        try {
+            packageUid = pm.getPackageUid(callingPackage, 0);
+        } catch (PackageManager.NameNotFoundException e) {
+            // packageUid is -1
+        }
+        if (packageUid != callingUid) {
+            throw new SecurityException(message + ": Package " + callingPackage
+                    + " does not belong to " + callingUid);
+        }
+    }
+
+    /**
      * Make sure the caller has the MODIFY_PHONE_STATE permission.
      *
      * @throws SecurityException if the caller does not have the required permission
@@ -3796,9 +3861,9 @@
         }
         final long token = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            ImsManager.getInstance(mApp, getSlotIndexOrException(subId))
-                    .addRegistrationCallbackForSubscription(c, subId);
+            int slotId = getSlotIndexOrException(subId);
+            verifyImsMmTelConfiguredOrThrow(slotId);
+            ImsManager.getInstance(mApp, slotId).addRegistrationCallbackForSubscription(c, subId);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -3820,7 +3885,6 @@
         }
         final long token = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone.
             ImsManager.getInstance(mApp, getSlotIndexOrException(subId))
                     .removeRegistrationCallbackForSubscription(c, subId);
         } catch (ImsException e) {
@@ -3916,11 +3980,11 @@
             throw new ServiceSpecificException(ImsException.CODE_ERROR_UNSUPPORTED_OPERATION,
                     "IMS not available on device.");
         }
-        // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
         final long token = Binder.clearCallingIdentity();
         try {
-            ImsManager.getInstance(mApp, getSlotIndexOrException(subId))
-                    .addCapabilitiesCallbackForSubscription(c, subId);
+            int slotId = getSlotIndexOrException(subId);
+            verifyImsMmTelConfiguredOrThrow(slotId);
+            ImsManager.getInstance(mApp, slotId).addCapabilitiesCallbackForSubscription(c, subId);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -3943,7 +4007,6 @@
 
         final long token = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone.
             ImsManager.getInstance(mApp, getSlotIndexOrException(subId))
                         .removeCapabilitiesCallbackForSubscription(c, subId);
         } catch (ImsException e) {
@@ -3959,11 +4022,11 @@
     @Override
     public boolean isCapable(int subId, int capability, int regTech) {
         enforceReadPrivilegedPermission("isCapable");
-        // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
         final long token = Binder.clearCallingIdentity();
         try {
-            return ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).queryMmTelCapability(capability, regTech);
+            int slotId = getSlotIndexOrException(subId);
+            verifyImsMmTelConfiguredOrThrow(slotId);
+            return ImsManager.getInstance(mApp, slotId).queryMmTelCapability(capability, regTech);
         } catch (com.android.ims.ImsException e) {
             Log.w(LOG_TAG, "IMS isCapable - service unavailable: " + e.getMessage());
             return false;
@@ -4015,6 +4078,7 @@
                         + subId + "'");
                 throw new ServiceSpecificException(ImsException.CODE_ERROR_INVALID_SUBSCRIPTION);
             }
+            verifyImsMmTelConfiguredOrThrow(slotId);
             ImsManager.getInstance(mApp, slotId).isSupported(capability,
                     transportType, aBoolean -> {
                         try {
@@ -4024,6 +4088,8 @@
                                     + "running. Ignore");
                         }
                     });
+        } catch (ImsException e) {
+            throw new ServiceSpecificException(e.getCode());
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -4038,11 +4104,11 @@
         TelephonyPermissions.enforceCallingOrSelfReadPrecisePhoneStatePermissionOrCarrierPrivilege(
                 mApp, subId, "isAdvancedCallingSettingEnabled");
 
-        // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
         final long token = Binder.clearCallingIdentity();
         try {
-            return ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).isEnhanced4gLteModeSettingEnabledByUser();
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify.
+            return ImsManager.getInstance(mApp, slotId).isEnhanced4gLteModeSettingEnabledByUser();
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4056,9 +4122,10 @@
                 "setAdvancedCallingSettingEnabled");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).setEnhanced4gLteModeSetting(isEnabled);
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify. The
+            // new setting will be picked up when the ImsService comes up next if it isn't up.
+            ImsManager.getInstance(mApp, slotId).setEnhanced4gLteModeSetting(isEnabled);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4076,8 +4143,9 @@
                 mApp, subId, "isVtSettingEnabled");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            return ImsManager.getInstance(mApp, getSlotIndexOrException(subId)).isVtEnabledByUser();
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify.
+            return ImsManager.getInstance(mApp, slotId).isVtEnabledByUser();
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4091,8 +4159,10 @@
                 "setVtSettingEnabled");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            ImsManager.getInstance(mApp, getSlotIndexOrException(subId)).setVtSetting(isEnabled);
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify. The
+            // new setting will be picked up when the ImsService comes up next if it isn't up.
+            ImsManager.getInstance(mApp, slotId).setVtSetting(isEnabled);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4110,9 +4180,9 @@
                 mApp, subId, "isVoWiFiSettingEnabled");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            return ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).isWfcEnabledByUser();
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify.
+            return ImsManager.getInstance(mApp, slotId).isWfcEnabledByUser();
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4126,8 +4196,55 @@
                 "setVoWiFiSettingEnabled");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            ImsManager.getInstance(mApp, getSlotIndexOrException(subId)).setWfcSetting(isEnabled);
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify. The
+            // new setting will be picked up when the ImsService comes up next if it isn't up.
+            ImsManager.getInstance(mApp, slotId).setWfcSetting(isEnabled);
+        } catch (ImsException e) {
+            throw new ServiceSpecificException(e.getCode());
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    /**
+     * @return true if the user's setting for Voice over Cross SIM is enabled and false if it is not
+     * Requires carrier privileges or READ_PRECISE_PHONE_STATE permission.
+     * @param subId The subscription to use to check the configuration.
+     */
+    @Override
+    public boolean isCrossSimCallingEnabledByUser(int subId) {
+        TelephonyPermissions.enforceCallingOrSelfReadPrecisePhoneStatePermissionOrCarrierPrivilege(
+                mApp, subId, "isCrossSimCallingEnabledByUser");
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify.
+            return ImsManager.getInstance(mApp, slotId).isCrossSimCallingEnabledByUser();
+        } catch (ImsException e) {
+            throw new ServiceSpecificException(e.getCode());
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    /**
+     * Sets the user's setting for whether or not Voice over Cross SIM is enabled.
+     * Requires MODIFY_PHONE_STATE permission.
+     * @param subId The subscription to use to check the configuration.
+     * @param isEnabled true if the user's setting for Voice over Cross SIM is enabled,
+     *                 false otherwise
+     */
+    @Override
+    public void setCrossSimCallingEnabled(int subId, boolean isEnabled) {
+        TelephonyPermissions.enforceCallingOrSelfModifyPermissionOrCarrierPrivilege(mApp, subId,
+                "setCrossSimCallingEnabled");
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify. The
+            // new setting will be picked up when the ImsService comes up next if it isn't up.
+            ImsManager.getInstance(mApp, slotId).setCrossSimCallingEnabled(isEnabled);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4140,14 +4257,15 @@
      * @param subId The subscription to use to check the configuration.
      */
     @Override
+
     public boolean isVoWiFiRoamingSettingEnabled(int subId) {
         TelephonyPermissions.enforceCallingOrSelfReadPrecisePhoneStatePermissionOrCarrierPrivilege(
                 mApp, subId, "isVoWiFiRoamingSettingEnabled");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            return ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).isWfcRoamingEnabledByUser();
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify.
+            return ImsManager.getInstance(mApp, slotId).isWfcRoamingEnabledByUser();
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4161,9 +4279,10 @@
                 "setVoWiFiRoamingSettingEnabled");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).setWfcRoamingSetting(isEnabled);
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify. The
+            // new setting will be picked up when the ImsService comes up next if it isn't up.
+            ImsManager.getInstance(mApp, slotId).setWfcRoamingSetting(isEnabled);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4177,9 +4296,9 @@
                 "setVoWiFiNonPersistent");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).setWfcNonPersistent(isCapable, mode);
+            int slotId = getSlotIndexOrException(subId);
+            // This setting will be ignored if the ImsService isn't up.
+            ImsManager.getInstance(mApp, slotId).setWfcNonPersistent(isCapable, mode);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4197,9 +4316,9 @@
                 mApp, subId, "getVoWiFiModeSetting");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            return ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).getWfcMode(false /*isRoaming*/);
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify.
+            return ImsManager.getInstance(mApp, slotId).getWfcMode(false /*isRoaming*/);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4213,9 +4332,10 @@
                 "setVoWiFiModeSetting");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).setWfcMode(mode, false /*isRoaming*/);
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify. The
+            // new setting will be picked up when the ImsService comes up next if it isn't up.
+            ImsManager.getInstance(mApp, slotId).setWfcMode(mode, false /*isRoaming*/);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4228,9 +4348,9 @@
         enforceReadPrivilegedPermission("getVoWiFiRoamingModeSetting");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            return ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).getWfcMode(true /*isRoaming*/);
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify.
+            return ImsManager.getInstance(mApp, slotId).getWfcMode(true /*isRoaming*/);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4244,9 +4364,10 @@
                 "setVoWiFiRoamingModeSetting");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).setWfcMode(mode, true /*isRoaming*/);
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify. The
+            // new setting will be picked up when the ImsService comes up next if it isn't up.
+            ImsManager.getInstance(mApp, slotId).setWfcMode(mode, true /*isRoaming*/);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4260,8 +4381,10 @@
                 "setRttCapabilityEnabled");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            ImsManager.getInstance(mApp, getSlotIndexOrException(subId)).setRttEnabled(isEnabled);
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify. The
+            // new setting will be picked up when the ImsService comes up next if it isn't up.
+            ImsManager.getInstance(mApp, slotId).setRttEnabled(isEnabled);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4279,9 +4402,9 @@
                 mApp, subId, "isTtyOverVolteEnabled");
         final long identity = Binder.clearCallingIdentity();
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            return ImsManager.getInstance(mApp,
-                    getSlotIndexOrException(subId)).isTtyOnVoLteCapable();
+            int slotId = getSlotIndexOrException(subId);
+            // This setting doesn't require an active ImsService connection, so do not verify.
+            return ImsManager.getInstance(mApp, slotId).isTtyOnVoLteCapable();
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
         } finally {
@@ -4298,8 +4421,9 @@
                 throw new ServiceSpecificException(ImsException.CODE_ERROR_UNSUPPORTED_OPERATION,
                         "IMS not available on device.");
             }
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
-            ImsManager.getInstance(mApp, getSlotIndexOrException(subId))
+            int slotId = getSlotIndexOrException(subId);
+            verifyImsMmTelConfiguredOrThrow(slotId);
+            ImsManager.getInstance(mApp, slotId)
                     .addProvisioningCallbackForSubscription(callback, subId);
         } catch (ImsException e) {
             throw new ServiceSpecificException(e.getCode());
@@ -4316,7 +4440,6 @@
             throw new IllegalArgumentException("Invalid Subscription ID: " + subId);
         }
         try {
-            // TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
             ImsManager.getInstance(mApp, getSlotIndexOrException(subId))
                     .removeProvisioningCallbackForSubscription(callback, subId);
         } catch (ImsException e) {
@@ -4417,8 +4540,10 @@
     @Override
     public void setImsProvisioningStatusForCapability(int subId, int capability, int tech,
             boolean isProvisioned) {
-        if (tech < ImsRegistrationImplBase.REGISTRATION_TECH_LTE
-                || tech > ImsRegistrationImplBase.REGISTRATION_TECH_NR) {
+        if (tech != ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN
+                && tech != ImsRegistrationImplBase.REGISTRATION_TECH_LTE
+                && tech != ImsRegistrationImplBase.REGISTRATION_TECH_NR
+                && tech != ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM) {
             throw new IllegalArgumentException("Registration technology '" + tech + "' is invalid");
         }
         checkModifyPhoneStatePermission(subId, "setImsProvisioningStatusForCapability");
@@ -4428,8 +4553,8 @@
             if (!isImsProvisioningRequired(subId, capability, true)) {
                 return;
             }
-            if (tech != ImsRegistrationImplBase.REGISTRATION_TECH_LTE
-                    && tech != ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN) {
+            if (tech == ImsRegistrationImplBase.REGISTRATION_TECH_NR
+                    || tech == ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM) {
                 loge("setImsProvisioningStatusForCapability: called for technology that does "
                         + "not support provisioning - " + tech);
                 return;
@@ -4482,8 +4607,10 @@
 
     @Override
     public boolean getImsProvisioningStatusForCapability(int subId, int capability, int tech) {
-        if (tech < ImsRegistrationImplBase.REGISTRATION_TECH_LTE
-                || tech > ImsRegistrationImplBase.REGISTRATION_TECH_NR) {
+        if (tech != ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN
+                && tech != ImsRegistrationImplBase.REGISTRATION_TECH_LTE
+                && tech != ImsRegistrationImplBase.REGISTRATION_TECH_NR
+                && tech != ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM) {
             throw new IllegalArgumentException("Registration technology '" + tech + "' is invalid");
         }
         enforceReadPrivilegedPermission("getProvisioningStatusForCapability");
@@ -4494,8 +4621,8 @@
                 return true;
             }
 
-            if (tech != ImsRegistrationImplBase.REGISTRATION_TECH_LTE
-                    && tech != ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN) {
+            if (tech == ImsRegistrationImplBase.REGISTRATION_TECH_NR
+                    || tech == ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM) {
                 loge("getImsProvisioningStatusForCapability: called for technology that does "
                         + "not support provisioning - " + tech);
                 return true;
@@ -4759,6 +4886,20 @@
         }
     }
 
+    /**
+     * Throw an ImsException if the IMS resolver does not have an ImsService configured for MMTEL
+     * for the given slot ID or no ImsResolver instance has been created.
+     * @param slotId The slot ID that the IMS service is created for.
+     * @throws ImsException If there is no ImsService configured for this slot.
+     */
+    private void verifyImsMmTelConfiguredOrThrow(int slotId) throws ImsException {
+        if (mImsResolver == null || !mImsResolver.isImsServiceConfiguredForFeature(slotId,
+                ImsFeature.FEATURE_MMTEL)) {
+            throw new ImsException("This subscription does not support MMTEL over IMS",
+                    ImsException.CODE_ERROR_UNSUPPORTED_OPERATION);
+        }
+    }
+
     private int getSlotIndexOrException(int subId) throws ImsException {
         int slotId = SubscriptionManager.getSlotIndex(subId);
         if (!SubscriptionManager.isValidSlotIndex(slotId)) {
@@ -5719,6 +5860,7 @@
                         + subId + "'");
                 throw new ServiceSpecificException(ImsException.CODE_ERROR_INVALID_SUBSCRIPTION);
             }
+            verifyImsMmTelConfiguredOrThrow(slotId);
             ImsManager.getInstance(mApp, slotId).getImsServiceState(anInteger -> {
                 try {
                     callback.accept(anInteger == null ? ImsFeature.STATE_UNAVAILABLE : anInteger);
@@ -5727,6 +5869,8 @@
                             + "Ignore");
                 }
             });
+        } catch (ImsException e) {
+            throw new ServiceSpecificException(e.getCode());
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -5823,12 +5967,12 @@
         final long identity = Binder.clearCallingIdentity();
         try {
             if (!isActiveSubscription(subId)) {
-                return "";
+                throw new IllegalArgumentException("Invalid Subscription Id: " + subId);
             }
 
             final Phone phone = getPhone(subId);
             if (phone == null) {
-                return "";
+                throw new IllegalArgumentException("Invalid Subscription Id: " + subId);
             }
             OperatorInfo networkSelection = phone.getSavedNetworkSelection();
             return TextUtils.isEmpty(networkSelection.getOperatorNumeric())
@@ -6092,6 +6236,8 @@
                                 .setCallingUid(Binder.getCallingUid())
                                 .setMethod("requestNetworkScan")
                                 .setMinSdkVersionForFine(Build.VERSION_CODES.Q)
+                                .setMinSdkVersionForCoarse(Build.VERSION_CODES.Q)
+                                .setMinSdkVersionForEnforcement(Build.VERSION_CODES.Q)
                                 .build());
         if (locationResult != LocationAccessPolicy.LocationPermissionResult.ALLOWED) {
             SecurityException e = checkNetworkRequestForSanitizedLocationAccess(
@@ -6605,6 +6751,7 @@
 
     @Override
     public int checkCarrierPrivilegesForPackage(int subId, String pkgName) {
+        enforceReadPrivilegedPermission("checkCarrierPrivilegesForPackage");
         if (TextUtils.isEmpty(pkgName)) {
             return TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
         }
@@ -6622,6 +6769,7 @@
 
     @Override
     public int checkCarrierPrivilegesForPackageAnyPhone(String pkgName) {
+        // TODO(b/186774706): Remove @RequiresPermission from TelephonyManager API
         if (TextUtils.isEmpty(pkgName))
             return TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
         int result = TelephonyManager.CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED;
@@ -6645,6 +6793,7 @@
 
     @Override
     public List<String> getCarrierPackageNamesForIntentAndPhone(Intent intent, int phoneId) {
+        enforceReadPrivilegedPermission("getCarrierPackageNamesForIntentAndPhone");
         if (!SubscriptionManager.isValidPhoneId(phoneId)) {
             loge("phoneId " + phoneId + " is not valid.");
             return null;
@@ -6659,6 +6808,7 @@
 
     @Override
     public List<String> getPackagesWithCarrierPrivileges(int phoneId) {
+        enforceReadPrivilegedPermission("getPackagesWithCarrierPrivileges");
         PackageManager pm = mApp.getPackageManager();
         List<String> privilegedPackages = new ArrayList<>();
         List<PackageInfo> packages = null;
@@ -7084,6 +7234,98 @@
     }
 
     @Override
+    public void uploadCallComposerPicture(int subscriptionId, String callingPackage,
+            String contentType, ParcelFileDescriptor fd, ResultReceiver callback) {
+        try {
+            if (!Objects.equals(mApp.getPackageManager().getPackageUid(callingPackage, 0),
+                    Binder.getCallingUid())) {
+                throw new SecurityException("Invalid package:" + callingPackage);
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            throw new SecurityException("Invalid package:" + callingPackage);
+        }
+        RoleManager rm = mApp.getSystemService(RoleManager.class);
+        List<String> dialerRoleHolders = rm.getRoleHolders(RoleManager.ROLE_DIALER);
+        if (!dialerRoleHolders.contains(callingPackage)) {
+            throw new SecurityException("App must be the dialer role holder to"
+                    + " upload a call composer pic");
+        }
+
+        Executors.newSingleThreadExecutor().execute(() -> {
+            ByteArrayOutputStream output = new ByteArrayOutputStream(
+                    (int) TelephonyManager.getMaximumCallComposerPictureSize());
+            InputStream input = new ParcelFileDescriptor.AutoCloseInputStream(fd);
+            boolean readUntilEnd = false;
+            int totalBytesRead = 0;
+            byte[] buffer = new byte[16 * 1024];
+            while (true) {
+                int numRead;
+                try {
+                    numRead = input.read(buffer);
+                } catch (IOException e) {
+                    try {
+                        fd.checkError();
+                        callback.send(TelephonyManager.CallComposerException.ERROR_INPUT_CLOSED,
+                                null);
+                    } catch (IOException e1) {
+                        // This means that the other side closed explicitly with an error. If this
+                        // happens, log and ignore.
+                        loge("Remote end of call composer picture pipe closed: " + e1);
+                    }
+                    break;
+                }
+                if (numRead == -1) {
+                    readUntilEnd = true;
+                    break;
+                }
+                totalBytesRead += numRead;
+                if (totalBytesRead > TelephonyManager.getMaximumCallComposerPictureSize()) {
+                    loge("Too many bytes read for call composer picture: " + totalBytesRead);
+                    try {
+                        input.close();
+                    } catch (IOException e) {
+                        // ignore
+                    }
+                    break;
+                }
+                output.write(buffer, 0, numRead);
+            }
+            // Generally, the remote end will close the file descriptors. The only case where we
+            // close is above, where the picture size is too big.
+
+            try {
+                fd.checkError();
+            } catch (IOException e) {
+                loge("Remote end for call composer closed with an error: " + e);
+                return;
+            }
+
+            if (!readUntilEnd) {
+                loge("Did not finish reading entire image; aborting");
+                return;
+            }
+
+            ImageData imageData = new ImageData(output.toByteArray(), contentType, null);
+            CallComposerPictureManager.getInstance(mApp, subscriptionId).handleUploadToServer(
+                    new CallComposerPictureTransfer.Factory() {},
+                    imageData,
+                    (result) -> {
+                        if (result.first != null) {
+                            ParcelUuid parcelUuid = new ParcelUuid(result.first);
+                            Bundle outputResult = new Bundle();
+                            outputResult.putParcelable(
+                                    TelephonyManager.KEY_CALL_COMPOSER_PICTURE_HANDLE, parcelUuid);
+                            callback.send(TelephonyManager.CallComposerException.SUCCESS,
+                                    outputResult);
+                        } else {
+                            callback.send(result.second, null);
+                        }
+                    }
+            );
+        });
+    }
+
+    @Override
     public void enableVideoCalling(boolean enable) {
         final Phone defaultPhone = getDefaultPhone();
         enforceModifyPermission();
@@ -7294,8 +7536,11 @@
 
     @Override
     public @Nullable PhoneAccountHandle getPhoneAccountHandleForSubscriptionId(int subscriptionId) {
-        enforceReadPrivilegedPermission("getPhoneAccountHandleForSubscriptionId, "
-                + "subscriptionId: " + subscriptionId);
+        TelephonyPermissions
+                .enforceCallingOrSelfReadPrivilegedPhoneStatePermissionOrCarrierPrivilege(
+                mApp,
+                subscriptionId,
+                "getPhoneAccountHandleForSubscriptionId, " + "subscriptionId: " + subscriptionId);
         final long identity = Binder.clearCallingIdentity();
         try {
             Phone phone = getPhone(subscriptionId);
@@ -7366,7 +7611,11 @@
         if (mUserManager.hasUserRestriction(UserManager.DISALLOW_NETWORK_RESET)) {
             return;
         }
-
+        Phone defaultPhone = getDefaultPhone();
+        if (defaultPhone != null) {
+            TelephonyPermissions.enforceCallingOrSelfModifyPermissionOrCarrierPrivilege(
+                    mApp, getDefaultPhone().getSubId(), "factoryReset");
+        }
         final long identity = Binder.clearCallingIdentity();
 
         try {
@@ -7378,7 +7627,7 @@
                 Phone phone = getPhone(subId);
                 cleanUpAllowedNetworkTypes(phone, subId);
                 setDataRoamingEnabled(subId, getDefaultDataRoamingEnabled(subId));
-                CarrierInfoManager.deleteAllCarrierKeysForImsiEncryption(mApp);
+                getPhone(subId).resetCarrierKeysForImsiEncryption();
             }
             // There has been issues when Sms raw table somehow stores orphan
             // fragments. They lead to garbled message when new fragments come
@@ -7391,12 +7640,17 @@
                 ImsManager.getInstance(mApp, slotId).factoryReset();
             }
 
+            if (defaultPhone == null) {
+                return;
+            }
             // Erase modem config if erase modem on network setting is enabled.
             String configValue = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_TELEPHONY,
                     RESET_NETWORK_ERASE_MODEM_CONFIG_ENABLED);
             if (configValue != null && Boolean.parseBoolean(configValue)) {
-              sendEraseModemConfig(getDefaultPhone());
+                sendEraseModemConfig(defaultPhone);
             }
+
+            sendEraseDataInSharedPreferences(defaultPhone);
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
@@ -7570,7 +7824,15 @@
         boolean hasCoarsePermission =
                 coarseLocationResult == LocationAccessPolicy.LocationPermissionResult.ALLOWED;
 
+        final Phone phone = getPhone(subId);
+        if (phone == null) {
+            return null;
+        }
+
         final long identity = Binder.clearCallingIdentity();
+
+        boolean isCallingPackageDataService = phone.getDataServicePackages()
+                .contains(callingPackage);
         try {
             // isActiveSubId requires READ_PHONE_STATE, which we already check for above
             if (!mSubscriptionController.isActiveSubId(subId, callingPackage, callingFeatureId)) {
@@ -7579,16 +7841,11 @@
                 return null;
             }
 
-            final Phone phone = getPhone(subId);
-            if (phone == null) {
-                return null;
-            }
-
             ServiceState ss = phone.getServiceState();
 
             // Scrub out the location info in ServiceState depending on what level of access
             // the caller has.
-            if (hasFinePermission) return ss;
+            if (hasFinePermission || isCallingPackageDataService) return ss;
             if (hasCoarsePermission) return ss.createLocationInfoSanitizedCopy(false);
             return ss.createLocationInfoSanitizedCopy(true);
         } finally {
@@ -9254,7 +9511,7 @@
     }
 
     @Override
-    public void setMobileDataPolicyEnabledStatus(int subscriptionId, int policy,
+    public void setMobileDataPolicyEnabled(int subscriptionId, int policy,
             boolean enabled) {
         enforceModifyPermission();
 
@@ -9484,14 +9741,13 @@
 
     @Override
     public boolean isRadioInterfaceCapabilitySupported(
-            @NonNull @TelephonyManager.RadioInterfaceCapability String capability) {
+            final @NonNull @TelephonyManager.RadioInterfaceCapability String capability) {
         Set<String> radioInterfaceCapabilities =
                 mRadioInterfaceCapabilities.getCapabilities();
         if (radioInterfaceCapabilities == null) {
             throw new RuntimeException("radio interface capabilities are not available");
-        } else {
-            return radioInterfaceCapabilities.contains(capability);
         }
+        return radioInterfaceCapabilities.contains(capability);
     }
 
     @Override
@@ -9675,8 +9931,8 @@
             switch (thermalMitigationAction) {
                 case ThermalMitigationRequest.THERMAL_MITIGATION_ACTION_DATA_THROTTLING:
                     thermalMitigationResult =
-                            handleDataThrottlingRequest(subId,
-                                    thermalMitigationRequest.getDataThrottlingRequest());
+                        handleDataThrottlingRequest(subId,
+                                thermalMitigationRequest.getDataThrottlingRequest());
                     break;
                 case ThermalMitigationRequest.THERMAL_MITIGATION_ACTION_VOICE_ONLY:
                     if (thermalMitigationRequest.getDataThrottlingRequest() != null) {
@@ -9707,7 +9963,7 @@
                         Phone phone = getPhone(subId);
                         if (phone == null) {
                             thermalMitigationResult =
-                                    TelephonyManager.THERMAL_MITIGATION_RESULT_MODEM_NOT_AVAILABLE;
+                                TelephonyManager.THERMAL_MITIGATION_RESULT_MODEM_NOT_AVAILABLE;
                             break;
                         }
 
@@ -9720,7 +9976,7 @@
                             break;
                         } else if (isAnyPhoneInEmergencyState()) {
                             thermalMitigationResult =
-                                    TelephonyManager.THERMAL_MITIGATION_RESULT_INVALID_STATE;
+                                TelephonyManager.THERMAL_MITIGATION_RESULT_INVALID_STATE;
                             break;
                         }
                     } else {
@@ -9737,7 +9993,7 @@
                         break;
                     }
                     thermalMitigationResult =
-                            TelephonyManager.THERMAL_MITIGATION_RESULT_SUCCESS;
+                        TelephonyManager.THERMAL_MITIGATION_RESULT_SUCCESS;
                     break;
                 default:
                     throw new IllegalArgumentException("the requested thermalMitigationAction does "
@@ -9898,8 +10154,8 @@
         try {
             if (!RcsProvisioningMonitor.getInstance()
                     .registerRcsProvisioningCallback(subId, callback)) {
-                throw new ServiceSpecificException(ImsException.CODE_ERROR_UNSUPPORTED_OPERATION,
-                        "Service not available for the subscription.");
+                throw new ServiceSpecificException(ImsException.CODE_ERROR_INVALID_SUBSCRIPTION,
+                        "Active subscription not found.");
             }
         } finally {
             Binder.restoreCallingIdentity(identity);
@@ -9980,11 +10236,15 @@
             IImsConfig configBinder = getImsConfig(getSlotIndex(subId), ImsFeature.FEATURE_RCS);
             if (configBinder == null) {
                 Rlog.e(LOG_TAG, "null result for setRcsClientConfiguration");
+                throw new ServiceSpecificException(ImsException.CODE_ERROR_INVALID_SUBSCRIPTION,
+                        "could not find the requested subscription");
             } else {
                 configBinder.setRcsClientConfiguration(rcc);
             }
         } catch (RemoteException e) {
             Rlog.e(LOG_TAG, "fail to setRcsClientConfiguration " + e.getMessage());
+            throw new ServiceSpecificException(ImsException.CODE_ERROR_SERVICE_UNAVAILABLE,
+                    "service is temporarily unavailable.");
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
@@ -10035,7 +10295,7 @@
     @Override
     public void sendDeviceToDeviceMessage(int message, int value) {
         TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(),
-                "setCarrierSingleRegistrationEnabledOverride");
+                "sendDeviceToDeviceMessage");
         enforceModifyPermission();
 
         final long identity = Binder.clearCallingIdentity();
@@ -10052,6 +10312,55 @@
         }
     }
 
+    /**
+     * Sets the specified device to device transport active.
+     * @param transport The transport to set active.
+     */
+    @Override
+    public void setActiveDeviceToDeviceTransport(@NonNull String transport) {
+        TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(),
+                "setActiveDeviceToDeviceTransport");
+        enforceModifyPermission();
+
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            TelephonyConnectionService service =
+                    TelecomAccountRegistry.getInstance(null).getTelephonyConnectionService();
+            if (service == null) {
+                Rlog.e(LOG_TAG, "setActiveDeviceToDeviceTransport: not in a call.");
+                return;
+            }
+            service.setActiveDeviceToDeviceTransport(transport);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    @Override
+    public void setDeviceToDeviceForceEnabled(boolean isForceEnabled) {
+        TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(),
+                "setDeviceToDeviceForceEnabled");
+
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            Arrays.stream(PhoneFactory.getPhones()).forEach(
+                    p -> {
+                        Phone thePhone = p.getImsPhone();
+                        if (thePhone != null && thePhone instanceof ImsPhone) {
+                            ImsPhone imsPhone = (ImsPhone) thePhone;
+                            CallTracker tracker = imsPhone.getCallTracker();
+                            if (tracker != null && tracker instanceof ImsPhoneCallTracker) {
+                                ImsPhoneCallTracker imsPhoneCallTracker =
+                                        (ImsPhoneCallTracker) tracker;
+                                imsPhoneCallTracker.setDeviceToDeviceForceEnabled(isForceEnabled);
+                            }
+                        }
+                    }
+            );
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
 
     /**
      * Gets the config of RCS VoLTE single registration enabled for the device.
@@ -10141,6 +10450,21 @@
     }
 
     /**
+     * Get the EAB capability from the EAB database.
+     */
+    @Override
+    public String getCapabilityFromEab(String contact) {
+        TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(), "getCapabilityFromEab");
+        enforceModifyPermission();
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            return EabUtil.getCapabilityFromEab(getDefaultPhone().getContext(), contact);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    /**
      * Remove the EAB contacts from the EAB database.
      */
     @Override
@@ -10397,24 +10721,6 @@
     }
 
     /**
-     * Prepare TelephonyManager for an unattended reboot. The reboot is
-     * required to be done shortly after the API is invoked.
-     */
-    @Override
-    @TelephonyManager.PrepareUnattendedRebootResult
-    public int prepareForUnattendedReboot() {
-        WorkSource workSource = getWorkSource(Binder.getCallingUid());
-        enforceRebootPermission();
-
-        final long identity = Binder.clearCallingIdentity();
-        try {
-            return (int) sendRequest(CMD_PREPARE_UNATTENDED_REBOOT, null, workSource);
-        } finally {
-            Binder.restoreCallingIdentity(identity);
-        }
-    }
-
-    /**
      * Gets the current phone capability.
      *
      * Requires carrier privileges or READ_PRECISE_PHONE_STATE permission.
@@ -10434,6 +10740,23 @@
     }
 
     /**
+     * Prepare TelephonyManager for an unattended reboot. The reboot is
+     * required to be done shortly after the API is invoked.
+     */
+    @Override
+    @TelephonyManager.PrepareUnattendedRebootResult
+    public int prepareForUnattendedReboot() {
+        enforceRebootPermission();
+
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            return (int) sendRequest(CMD_PREPARE_UNATTENDED_REBOOT, null);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    /**
      * Request to get the current slicing configuration including URSP rules and
      * NSSAIs (configured, allowed and rejected).
      *
diff --git a/src/com/android/phone/RcsProvisioningMonitor.java b/src/com/android/phone/RcsProvisioningMonitor.java
index 8f4cd86..23c4c5a 100644
--- a/src/com/android/phone/RcsProvisioningMonitor.java
+++ b/src/com/android/phone/RcsProvisioningMonitor.java
@@ -129,7 +129,6 @@
         public void onRoleHoldersChanged(String role, UserHandle user) {
             if (RoleManager.ROLE_SMS.equals(role)) {
                 logv("default messaging application changed.");
-                String packageName = getDmaPackageName();
                 mHandler.sendEmptyMessage(EVENT_DMA_CHANGED);
             }
         }
@@ -676,6 +675,8 @@
             logv("new default messaging application " + mDmaPackageName);
 
             mRcsProvisioningInfos.forEach((k, v) -> {
+                notifyDmaForSub(k, v.getSingleRegistrationCapability());
+
                 byte[] cachedConfig = v.getConfig();
                 //clear old callbacks
                 v.clear();
@@ -803,7 +804,7 @@
         intent.setPackage(mDmaPackageName);
         intent.putExtra(ProvisioningManager.EXTRA_SUBSCRIPTION_ID, subId);
         intent.putExtra(ProvisioningManager.EXTRA_STATUS, capability);
-        logv("notify " + intent);
+        logv("notify " + intent + ", sub:" + subId + ", capability:" + capability);
         // Only send permission to the default sms app if it has the correct permissions
         // except test mode enabled
         if (!mTestModeEnabled) {
diff --git a/src/com/android/phone/TelephonyShellCommand.java b/src/com/android/phone/TelephonyShellCommand.java
index 2af0823..dbeb7ce 100644
--- a/src/com/android/phone/TelephonyShellCommand.java
+++ b/src/com/android/phone/TelephonyShellCommand.java
@@ -21,16 +21,21 @@
 import static com.android.internal.telephony.d2d.Communicator.MESSAGE_DEVICE_BATTERY_STATE;
 import static com.android.internal.telephony.d2d.Communicator.MESSAGE_DEVICE_NETWORK_COVERAGE;
 
+import android.Manifest;
 import android.content.Context;
+import android.net.Uri;
 import android.os.Binder;
 import android.os.PersistableBundle;
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.ServiceSpecificException;
 import android.provider.BlockedNumberContract;
+import android.telephony.BarringInfo;
 import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.TelephonyRegistryManager;
 import android.telephony.emergency.EmergencyNumber;
 import android.telephony.ims.ImsException;
 import android.telephony.ims.RcsContactUceCapability;
@@ -39,6 +44,7 @@
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.Log;
+import android.util.SparseArray;
 
 import com.android.ims.rcs.uce.util.FeatureTags;
 import com.android.internal.telephony.ITelephony;
@@ -48,6 +54,7 @@
 import com.android.internal.telephony.emergency.EmergencyNumberTracker;
 import com.android.internal.telephony.util.TelephonyUtils;
 import com.android.modules.utils.BasicShellCommandHandler;
+import com.android.phone.callcomposer.CallComposerPictureManager;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
@@ -58,6 +65,8 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.UUID;
+import java.util.concurrent.CompletableFuture;
 
 /**
  * Takes actions based on the adb commands given by "adb shell cmd phone ...". Be careful, no
@@ -72,6 +81,7 @@
     private static final boolean VDBG = true;
     private static final int DEFAULT_PHONE_ID = 0;
 
+    private static final String CALL_COMPOSER_SUBCOMMAND = "callcomposer";
     private static final String IMS_SUBCOMMAND = "ims";
     private static final String NUMBER_VERIFICATION_SUBCOMMAND = "numverify";
     private static final String EMERGENCY_CALLBACK_MODE = "emergency-callback-mode";
@@ -81,14 +91,17 @@
     private static final String UNATTENDED_REBOOT = "unattended-reboot";
     private static final String CARRIER_CONFIG_SUBCOMMAND = "cc";
     private static final String DATA_TEST_MODE = "data";
-    private static final String DATA_ENABLE = "enable";
-    private static final String DATA_DISABLE = "disable";
+    private static final String ENABLE = "enable";
+    private static final String DISABLE = "disable";
+    private static final String QUERY = "query";
+
+    private static final String CALL_COMPOSER_TEST_MODE = "test-mode";
+    private static final String CALL_COMPOSER_SIMULATE_CALL = "simulate-outgoing-call";
+    private static final String CALL_COMPOSER_USER_SETTING = "user-setting";
 
     private static final String IMS_SET_IMS_SERVICE = "set-ims-service";
     private static final String IMS_GET_IMS_SERVICE = "get-ims-service";
     private static final String IMS_CLEAR_SERVICE_OVERRIDE = "clear-ims-service-override";
-    private static final String IMS_ENABLE = "enable";
-    private static final String IMS_DISABLE = "disable";
     // Used to disable or enable processing of conference event package data from the network.
     // This is handy for testing scenarios where CEP data does not exist on a network which does
     // support CEP data.
@@ -119,9 +132,15 @@
 
     private static final String D2D_SUBCOMMAND = "d2d";
     private static final String D2D_SEND = "send";
+    private static final String D2D_TRANSPORT = "transport";
+    private static final String D2D_SET_DEVICE_SUPPORT = "set-device-support";
+
+    private static final String BARRING_SUBCOMMAND = "barring";
+    private static final String BARRING_SEND_INFO = "send";
 
     private static final String RCS_UCE_COMMAND = "uce";
     private static final String UCE_GET_EAB_CONTACT = "get-eab-contact";
+    private static final String UCE_GET_EAB_CAPABILITY = "get-eab-capability";
     private static final String UCE_REMOVE_EAB_CONTACT = "remove-eab-contact";
     private static final String UCE_GET_DEVICE_ENABLED = "get-device-enabled";
     private static final String UCE_SET_DEVICE_ENABLED = "set-device-enabled";
@@ -135,15 +154,23 @@
     // Check if a package has carrier privileges on any SIM, regardless of subId/phoneId.
     private static final String HAS_CARRIER_PRIVILEGES_COMMAND = "has-carrier-privileges";
 
+    private static final String DISABLE_PHYSICAL_SUBSCRIPTION = "disable-physical-subscription";
+    private static final String ENABLE_PHYSICAL_SUBSCRIPTION = "enable-physical-subscription";
+
     private static final String THERMAL_MITIGATION_COMMAND = "thermal-mitigation";
     private static final String ALLOW_THERMAL_MITIGATION_PACKAGE_SUBCOMMAND = "allow-package";
     private static final String DISALLOW_THERMAL_MITIGATION_PACKAGE_SUBCOMMAND = "disallow-package";
 
+    private static final String GET_ALLOWED_NETWORK_TYPES_FOR_USER =
+            "get-allowed-network-types-for-users";
+    private static final String SET_ALLOWED_NETWORK_TYPES_FOR_USER =
+            "set-allowed-network-types-for-users";
     // Take advantage of existing methods that already contain permissions checks when possible.
     private final ITelephony mInterface;
 
     private SubscriptionManager mSubscriptionManager;
     private CarrierConfigManager mCarrierConfigManager;
+    private TelephonyRegistryManager mTelephonyRegistryManager;
     private Context mContext;
 
     private enum CcType {
@@ -237,6 +264,8 @@
                 (CarrierConfigManager) context.getSystemService(Context.CARRIER_CONFIG_SERVICE);
         mSubscriptionManager = (SubscriptionManager)
                 context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+        mTelephonyRegistryManager = (TelephonyRegistryManager)
+                context.getSystemService(Context.TELEPHONY_REGISTRY_SERVICE);
         mContext = context;
     }
 
@@ -269,16 +298,27 @@
                 return handleGbaCommand();
             case D2D_SUBCOMMAND:
                 return handleD2dCommand();
+            case BARRING_SUBCOMMAND:
+                return handleBarringCommand();
             case SINGLE_REGISTATION_CONFIG:
                 return handleSingleRegistrationConfigCommand();
             case RESTART_MODEM:
                 return handleRestartModemCommand();
+            case CALL_COMPOSER_SUBCOMMAND:
+                return handleCallComposerCommand();
             case UNATTENDED_REBOOT:
                 return handleUnattendedReboot();
             case HAS_CARRIER_PRIVILEGES_COMMAND:
                 return handleHasCarrierPrivilegesCommand();
             case THERMAL_MITIGATION_COMMAND:
                 return handleThermalMitigationCommand();
+            case DISABLE_PHYSICAL_SUBSCRIPTION:
+                return handleEnablePhysicalSubscription(false);
+            case ENABLE_PHYSICAL_SUBSCRIPTION:
+                return handleEnablePhysicalSubscription(true);
+            case GET_ALLOWED_NETWORK_TYPES_FOR_USER:
+            case SET_ALLOWED_NETWORK_TYPES_FOR_USER:
+                return handleAllowedNetworkTypesCommand(cmd);
             default: {
                 return handleDefaultCommands(cmd);
             }
@@ -313,6 +353,10 @@
         pw.println("    Prepare for unattended reboot.");
         pw.println("  has-carrier-privileges [package]");
         pw.println("    Query carrier privilege status for a package. Prints true or false.");
+        pw.println("  get-allowed-network-types-for-users");
+        pw.println("    Get the Allowed Network Types.");
+        pw.println("  set-allowed-network-types-for-users");
+        pw.println("    Set the Allowed Network Types.");
         onHelpIms();
         onHelpUce();
         onHelpEmergencyNumber();
@@ -322,6 +366,8 @@
         onHelpGba();
         onHelpSrc();
         onHelpD2D();
+        onHelpDisableOrEnablePhysicalSubscription();
+        onHelpAllowedNetworkTypes();
     }
 
     private void onHelpD2D() {
@@ -338,6 +384,25 @@
                         MESSAGE_DEVICE_BATTERY_STATE));
         pw.println("    Type: " + MESSAGE_DEVICE_NETWORK_COVERAGE + " - "
                 + Communicator.messageToString(MESSAGE_DEVICE_NETWORK_COVERAGE));
+        pw.println("  d2d transport TYPE");
+        pw.println("    Forces the specified D2D transport TYPE to be active.  Use the");
+        pw.println("    short class name of the transport; i.e. DtmfTransport or RtpTransport.");
+        pw.println("  d2d set-device-support true/default");
+        pw.println("    true - forces device support to be enabled for D2D.");
+        pw.println("    default - clear any previously set force-enable of D2D, reverting to ");
+        pw.println("    the current device's configuration.");
+    }
+
+    private void onHelpBarring() {
+        PrintWriter pw = getOutPrintWriter();
+        pw.println("Barring Commands:");
+        pw.println("  barring send -s SLOT_ID -b BARRING_TYPE -c IS_CONDITIONALLY_BARRED"
+                + " -t CONDITIONAL_BARRING_TIME_SECS");
+        pw.println("    Notifies of a barring info change for the specified slot id.");
+        pw.println("    BARRING_TYPE: 0 for BARRING_TYPE_NONE");
+        pw.println("    BARRING_TYPE: 1 for BARRING_TYPE_UNCONDITIONAL");
+        pw.println("    BARRING_TYPE: 2 for BARRING_TYPE_CONDITIONAL");
+        pw.println("    BARRING_TYPE: -1 for BARRING_TYPE_UNKNOWN");
     }
 
     private void onHelpIms() {
@@ -439,6 +504,15 @@
                 + "mitigation.");
     }
 
+    private void onHelpDisableOrEnablePhysicalSubscription() {
+        PrintWriter pw = getOutPrintWriter();
+        pw.println("Disable or enable a physical subscription");
+        pw.println("  disable-physical-subscription SUB_ID");
+        pw.println("    Disable the physical subscription with the provided subId, if allowed.");
+        pw.println("  enable-physical-subscription SUB_ID");
+        pw.println("    Enable the physical subscription with the provided subId, if allowed.");
+    }
+
     private void onHelpDataTestMode() {
         PrintWriter pw = getOutPrintWriter();
         pw.println("Mobile Data Test Mode Commands:");
@@ -558,6 +632,30 @@
         pw.println("          is specified, it will choose the default voice SIM slot.");
     }
 
+    private void onHelpAllowedNetworkTypes() {
+        PrintWriter pw = getOutPrintWriter();
+        pw.println("Allowed Network Types Commands:");
+        pw.println("  get-allowed-network-types-for-users [-s SLOT_ID]");
+        pw.println("    Print allowed network types value.");
+        pw.println("    Options are:");
+        pw.println("      -s: The SIM slot ID to read allowed network types value for. If no");
+        pw.println("          option is specified, it will choose the default voice SIM slot.");
+        pw.println("  set-allowed-network-types-for-users [-s SLOT_ID] [NETWORK_TYPES_BITMASK]");
+        pw.println("    Sets allowed network types to NETWORK_TYPES_BITMASK.");
+        pw.println("    Options are:");
+        pw.println("      -s: The SIM slot ID to set allowed network types value for. If no");
+        pw.println("          option is specified, it will choose the default voice SIM slot.");
+        pw.println("    NETWORK_TYPES_BITMASK specifies the new network types value and this type");
+        pw.println("      is bitmask in binary format. Reference the NetworkTypeBitMask");
+        pw.println("      at TelephonyManager.java");
+        pw.println("      For example:");
+        pw.println("        NR only                    : 10000000000000000000");
+        pw.println("        NR|LTE                     : 11000001000000000000");
+        pw.println("        NR|LTE|CDMA|EVDO|GSM|WCDMA : 11001111101111111111");
+        pw.println("        LTE|CDMA|EVDO|GSM|WCDMA    : 01001111101111111111");
+        pw.println("        LTE only                   : 01000001000000000000");
+    }
+
     private int handleImsCommand() {
         String arg = getNextArg();
         if (arg == null) {
@@ -575,10 +673,10 @@
             case IMS_CLEAR_SERVICE_OVERRIDE: {
                 return handleImsClearCarrierServiceCommand();
             }
-            case IMS_ENABLE: {
+            case ENABLE: {
                 return handleEnableIms();
             }
-            case IMS_DISABLE: {
+            case DISABLE: {
                 return handleDisableIms();
             }
             case IMS_CEP: {
@@ -597,7 +695,7 @@
             return 0;
         }
         switch (arg) {
-            case DATA_ENABLE: {
+            case ENABLE: {
                 try {
                     mInterface.enableDataConnectivity();
                 } catch (RemoteException ex) {
@@ -607,7 +705,7 @@
                 }
                 break;
             }
-            case DATA_DISABLE: {
+            case DISABLE: {
                 try {
                     mInterface.disableDataConnectivity();
                 } catch (RemoteException ex) {
@@ -749,6 +847,41 @@
         return -1;
     }
 
+    private boolean subIsEsim(int subId) {
+        SubscriptionInfo info = mSubscriptionManager.getActiveSubscriptionInfo(subId);
+        if (info != null) {
+            return info.isEmbedded();
+        }
+        return false;
+    }
+
+    private int handleEnablePhysicalSubscription(boolean enable) {
+        PrintWriter errPw = getErrPrintWriter();
+        int subId = 0;
+        try {
+            subId = Integer.parseInt(getNextArgRequired());
+        } catch (NumberFormatException e) {
+            errPw.println((enable ? "enable" : "disable")
+                    + "-physical-subscription requires an integer as a subId.");
+            return -1;
+        }
+        // Verify that the user is allowed to run the command. Only allowed in rooted device in a
+        // non user build.
+        if (Binder.getCallingUid() != Process.ROOT_UID || TelephonyUtils.IS_USER) {
+            errPw.println("cc: Permission denied.");
+            return -1;
+        }
+        // Verify that the subId represents a physical sub
+        if (subIsEsim(subId)) {
+            errPw.println("SubId " + subId + " is not for a physical subscription");
+            return -1;
+        }
+        Log.d(LOG_TAG, (enable ? "Enabling" : "Disabling")
+                + " physical subscription with subId=" + subId);
+        mSubscriptionManager.setUiccApplicationsEnabled(subId, enable);
+        return 0;
+    }
+
     private int handleThermalMitigationCommand() {
         String arg = getNextArg();
         String packageName = getNextArg();
@@ -790,6 +923,12 @@
             case D2D_SEND: {
                 return handleD2dSendCommand();
             }
+            case D2D_TRANSPORT: {
+                return handleD2dTransportCommand();
+            }
+            case D2D_SET_DEVICE_SUPPORT: {
+                return handleD2dDeviceSupportedCommand();
+            }
         }
 
         return -1;
@@ -797,11 +936,9 @@
 
     private int handleD2dSendCommand() {
         PrintWriter errPw = getErrPrintWriter();
-        String opt;
         int messageType = -1;
         int messageValue = -1;
 
-
         String arg = getNextArg();
         if (arg == null) {
             onHelpD2D();
@@ -837,6 +974,132 @@
         return 0;
     }
 
+    private int handleD2dTransportCommand() {
+        PrintWriter errPw = getErrPrintWriter();
+
+        String arg = getNextArg();
+        if (arg == null) {
+            onHelpD2D();
+            return 0;
+        }
+
+        try {
+            mInterface.setActiveDeviceToDeviceTransport(arg);
+        } catch (RemoteException e) {
+            Log.w(LOG_TAG, "d2d transport error: " + e.getMessage());
+            errPw.println("Exception: " + e.getMessage());
+            return -1;
+        }
+        return 0;
+    }
+    private int handleBarringCommand() {
+        String arg = getNextArg();
+        if (arg == null) {
+            onHelpBarring();
+            return 0;
+        }
+
+        switch (arg) {
+            case BARRING_SEND_INFO: {
+                return handleBarringSendCommand();
+            }
+        }
+        return -1;
+    }
+
+    private int handleBarringSendCommand() {
+        PrintWriter errPw = getErrPrintWriter();
+        int slotId = getDefaultSlot();
+        int subId = SubscriptionManager.getSubId(slotId)[0];
+        @BarringInfo.BarringServiceInfo.BarringType int barringType =
+                BarringInfo.BarringServiceInfo.BARRING_TYPE_UNCONDITIONAL;
+        boolean isConditionallyBarred = false;
+        int conditionalBarringTimeSeconds = 0;
+
+        String opt;
+        while ((opt = getNextOption()) != null) {
+            switch (opt) {
+                case "-s": {
+                    try {
+                        slotId = Integer.parseInt(getNextArgRequired());
+                        subId = SubscriptionManager.getSubId(slotId)[0];
+                    } catch (NumberFormatException e) {
+                        errPw.println("barring send requires an integer as a SLOT_ID.");
+                        return -1;
+                    }
+                    break;
+                }
+                case "-b": {
+                    try {
+                        barringType = Integer.parseInt(getNextArgRequired());
+                        if (barringType < -1 || barringType > 2) {
+                            throw new NumberFormatException();
+                        }
+
+                    } catch (NumberFormatException e) {
+                        errPw.println("barring send requires an integer in range [-1,2] as "
+                                + "a BARRING_TYPE.");
+                        return -1;
+                    }
+                    break;
+                }
+                case "-c": {
+                    try {
+                        isConditionallyBarred = Boolean.parseBoolean(getNextArgRequired());
+                    } catch (Exception e) {
+                        errPw.println("barring send requires a boolean after -c indicating"
+                                + " conditional barring");
+                        return -1;
+                    }
+                    break;
+                }
+                case "-t": {
+                    try {
+                        conditionalBarringTimeSeconds = Integer.parseInt(getNextArgRequired());
+                    } catch (NumberFormatException e) {
+                        errPw.println("barring send requires an integer for time of barring"
+                                + " in seconds after -t for conditional barring");
+                        return -1;
+                    }
+                    break;
+                }
+            }
+        }
+        SparseArray<BarringInfo.BarringServiceInfo> barringServiceInfos = new SparseArray<>();
+        BarringInfo.BarringServiceInfo bsi = new BarringInfo.BarringServiceInfo(
+                barringType, isConditionallyBarred, 0, conditionalBarringTimeSeconds);
+        barringServiceInfos.append(0, bsi);
+        BarringInfo barringInfo = new BarringInfo(null, barringServiceInfos);
+        try {
+            mTelephonyRegistryManager.notifyBarringInfoChanged(slotId, subId, barringInfo);
+        } catch (Exception e) {
+            Log.w(LOG_TAG, "barring send error: " + e.getMessage());
+            errPw.println("Exception: " + e.getMessage());
+            return -1;
+        }
+        return 0;
+    }
+
+    private int handleD2dDeviceSupportedCommand() {
+        PrintWriter errPw = getErrPrintWriter();
+
+        String arg = getNextArg();
+        if (arg == null) {
+            onHelpD2D();
+            return 0;
+        }
+
+        boolean isEnabled = "true".equals(arg.toLowerCase());
+        try {
+            mInterface.setDeviceToDeviceForceEnabled(isEnabled);
+        } catch (RemoteException e) {
+            Log.w(LOG_TAG, "Error forcing D2D enabled: " + e.getMessage());
+            errPw.println("Exception: " + e.getMessage());
+            return -1;
+        }
+        return 0;
+    }
+
     // ims set-ims-service
     private int handleImsSetServiceCommand() {
         PrintWriter errPw = getErrPrintWriter();
@@ -1825,6 +2088,8 @@
                 return handleRemovingEabContactCommand();
             case UCE_GET_EAB_CONTACT:
                 return handleGettingEabContactCommand();
+            case UCE_GET_EAB_CAPABILITY:
+                return handleGettingEabCapabilityCommand();
             case UCE_GET_DEVICE_ENABLED:
                 return handleUceGetDeviceEnabledCommand();
             case UCE_SET_DEVICE_ENABLED:
@@ -1874,7 +2139,6 @@
         String result = "";
         try {
             result = mInterface.getContactFromEab(phoneNumber);
-
         } catch (RemoteException e) {
             Log.w(LOG_TAG, "uce get-eab-contact, error " + e.getMessage());
             getErrPrintWriter().println("Exception: " + e.getMessage());
@@ -1888,6 +2152,27 @@
         return 0;
     }
 
+    private int handleGettingEabCapabilityCommand() {
+        String phoneNumber = getNextArgRequired();
+        if (TextUtils.isEmpty(phoneNumber)) {
+            return -1;
+        }
+        String result = "";
+        try {
+            result = mInterface.getCapabilityFromEab(phoneNumber);
+        } catch (RemoteException e) {
+            Log.w(LOG_TAG, "uce get-eab-capability, error " + e.getMessage());
+            getErrPrintWriter().println("Exception: " + e.getMessage());
+            return -1;
+        }
+
+        if (VDBG) {
+            Log.v(LOG_TAG, "uce get-eab-capability, result: " + result);
+        }
+        getOutPrintWriter().println(result);
+        return 0;
+    }
+
     private int handleUceGetDeviceEnabledCommand() {
         boolean result = false;
         try {
@@ -2225,10 +2510,95 @@
         return 0;
     }
 
+
+    private void onHelpCallComposer() {
+        PrintWriter pw = getOutPrintWriter();
+        pw.println("Call composer commands");
+        pw.println("  callcomposer test-mode enable|disable|query");
+        pw.println("    Enables or disables test mode for call composer. In test mode, picture");
+        pw.println("    upload/download from carrier servers is disabled, and operations are");
+        pw.println("    performed using emulated local files instead.");
+        pw.println("  callcomposer simulate-outgoing-call [subId] [UUID]");
+        pw.println("    Simulates an outgoing call being placed with the picture ID as");
+        pw.println("    the provided UUID. This triggers storage to the call log.");
+        pw.println("  callcomposer user-setting [subId] enable|disable|query");
+        pw.println("    Enables or disables the user setting for call composer, as set by");
+        pw.println("    TelephonyManager#setCallComposerStatus.");
+    }
+
+    private int handleCallComposerCommand() {
+        String arg = getNextArg();
+        if (arg == null) {
+            onHelpCallComposer();
+            return 0;
+        }
+
+        mContext.enforceCallingPermission(Manifest.permission.MODIFY_PHONE_STATE,
+                "MODIFY_PHONE_STATE required for call composer shell cmds");
+        switch (arg) {
+            case CALL_COMPOSER_TEST_MODE: {
+                String enabledStr = getNextArg();
+                if (ENABLE.equals(enabledStr)) {
+                    CallComposerPictureManager.sTestMode = true;
+                } else if (DISABLE.equals(enabledStr)) {
+                    CallComposerPictureManager.sTestMode = false;
+                } else if (QUERY.equals(enabledStr)) {
+                    getOutPrintWriter().println(CallComposerPictureManager.sTestMode);
+                } else {
+                    onHelpCallComposer();
+                    return 1;
+                }
+                break;
+            }
+            case CALL_COMPOSER_SIMULATE_CALL: {
+                int subscriptionId = Integer.valueOf(getNextArg());
+                String uuidString = getNextArg();
+                UUID uuid = UUID.fromString(uuidString);
+                CompletableFuture<Uri> storageUriFuture = new CompletableFuture<>();
+                Binder.withCleanCallingIdentity(() -> {
+                    CallComposerPictureManager.getInstance(mContext, subscriptionId)
+                            .storeUploadedPictureToCallLog(uuid, storageUriFuture::complete);
+                });
+                try {
+                    Uri uri = storageUriFuture.get();
+                    getOutPrintWriter().println(String.valueOf(uri));
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+                break;
+            }
+            case CALL_COMPOSER_USER_SETTING: {
+                try {
+                    int subscriptionId = Integer.valueOf(getNextArg());
+                    String enabledStr = getNextArg();
+                    if (ENABLE.equals(enabledStr)) {
+                        mInterface.setCallComposerStatus(subscriptionId,
+                                TelephonyManager.CALL_COMPOSER_STATUS_ON);
+                    } else if (DISABLE.equals(enabledStr)) {
+                        mInterface.setCallComposerStatus(subscriptionId,
+                                TelephonyManager.CALL_COMPOSER_STATUS_OFF);
+                    } else if (QUERY.equals(enabledStr)) {
+                        getOutPrintWriter().println(mInterface.getCallComposerStatus(subscriptionId)
+                                == TelephonyManager.CALL_COMPOSER_STATUS_ON);
+                    } else {
+                        onHelpCallComposer();
+                        return 1;
+                    }
+                } catch (RemoteException e) {
+                    e.printStackTrace(getOutPrintWriter());
+                    return 1;
+                }
+                break;
+            }
+        }
+        return 0;
+    }
+
     private int handleHasCarrierPrivilegesCommand() {
         String packageName = getNextArgRequired();
 
         boolean hasCarrierPrivileges;
+        final long token = Binder.clearCallingIdentity();
         try {
             hasCarrierPrivileges =
                     mInterface.checkCarrierPrivilegesForPackageAnyPhone(packageName)
@@ -2237,9 +2607,122 @@
             Log.w(LOG_TAG, HAS_CARRIER_PRIVILEGES_COMMAND + " exception", e);
             getErrPrintWriter().println("Exception: " + e.getMessage());
             return -1;
+        } finally {
+            Binder.restoreCallingIdentity(token);
         }
 
         getOutPrintWriter().println(hasCarrierPrivileges);
         return 0;
     }
+
+    private int handleAllowedNetworkTypesCommand(String command) {
+        if (!checkShellUid()) {
+            return -1;
+        }
+
+        PrintWriter errPw = getErrPrintWriter();
+        String tag = command + ": ";
+        String opt;
+        int subId = -1;
+        Log.v(LOG_TAG, command + " start");
+
+        while ((opt = getNextOption()) != null) {
+            if (opt.equals("-s")) {
+                try {
+                    subId = slotStringToSubId(tag, getNextArgRequired());
+                    if (!SubscriptionManager.isValidSubscriptionId(subId)) {
+                        errPw.println(tag + "No valid subscription found.");
+                        return -1;
+                    }
+                } catch (IllegalArgumentException e) {
+                    // Missing slot id
+                    errPw.println(tag + "SLOT_ID expected after -s.");
+                    return -1;
+                }
+            } else {
+                errPw.println(tag + "Unknown option " + opt);
+                return -1;
+            }
+        }
+
+        if (GET_ALLOWED_NETWORK_TYPES_FOR_USER.equals(command)) {
+            return handleGetAllowedNetworkTypesCommand(subId);
+        }
+        if (SET_ALLOWED_NETWORK_TYPES_FOR_USER.equals(command)) {
+            return handleSetAllowedNetworkTypesCommand(subId);
+        }
+        return -1;
+    }
+
+    private int handleGetAllowedNetworkTypesCommand(int subId) {
+        PrintWriter errPw = getErrPrintWriter();
+
+        long result = -1;
+        try {
+            if (mInterface != null) {
+                result = mInterface.getAllowedNetworkTypesForReason(subId,
+                        TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER);
+            } else {
+                throw new IllegalStateException("telephony service is null.");
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "getAllowedNetworkTypesForReason RemoteException" + e);
+            errPw.println(GET_ALLOWED_NETWORK_TYPES_FOR_USER + "RemoteException " + e);
+            return -1;
+        }
+
+        getOutPrintWriter().println(TelephonyManager.convertNetworkTypeBitmaskToString(result));
+        return 0;
+    }
+
+    private int handleSetAllowedNetworkTypesCommand(int subId) {
+        PrintWriter errPw = getErrPrintWriter();
+
+        String bitmaskString = getNextArg();
+        if (TextUtils.isEmpty(bitmaskString)) {
+            errPw.println(SET_ALLOWED_NETWORK_TYPES_FOR_USER + " No NETWORK_TYPES_BITMASK");
+            return -1;
+        }
+        long allowedNetworkTypes = convertNetworkTypeBitmaskFromStringToLong(bitmaskString);
+        if (allowedNetworkTypes < 0) {
+            errPw.println(SET_ALLOWED_NETWORK_TYPES_FOR_USER + " No valid NETWORK_TYPES_BITMASK");
+            return -1;
+        }
+        boolean result = false;
+        try {
+            if (mInterface != null) {
+                result = mInterface.setAllowedNetworkTypesForReason(subId,
+                        TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER, allowedNetworkTypes);
+            } else {
+                throw new IllegalStateException("telephony service is null.");
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "setAllowedNetworkTypesForReason RemoteException" + e);
+            errPw.println(SET_ALLOWED_NETWORK_TYPES_FOR_USER + " RemoteException " + e);
+            return -1;
+        }
+
+        String resultMessage = SET_ALLOWED_NETWORK_TYPES_FOR_USER + " failed";
+        if (result) {
+            resultMessage = SET_ALLOWED_NETWORK_TYPES_FOR_USER + " completed";
+        }
+        getOutPrintWriter().println(resultMessage);
+        return 0;
+    }
+
+    private long convertNetworkTypeBitmaskFromStringToLong(String bitmaskString) {
+        if (TextUtils.isEmpty(bitmaskString)) {
+            return -1;
+        }
+        if (VDBG) {
+            Log.v(LOG_TAG, "AllowedNetworkTypes:" + bitmaskString
+                            + ", length: " + bitmaskString.length());
+        }
+        try {
+            return Long.parseLong(bitmaskString, 2);
+        } catch (NumberFormatException e) {
+            Log.e(LOG_TAG, "AllowedNetworkTypes: " + e);
+            return -1;
+        }
+    }
 }
diff --git a/src/com/android/phone/callcomposer/CallComposerPictureManager.java b/src/com/android/phone/callcomposer/CallComposerPictureManager.java
new file mode 100644
index 0000000..efb149e
--- /dev/null
+++ b/src/com/android/phone/callcomposer/CallComposerPictureManager.java
@@ -0,0 +1,382 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package com.android.phone.callcomposer;
+
+import android.content.Context;
+import android.location.Location;
+import android.net.Uri;
+import android.os.OutcomeReceiver;
+import android.os.PersistableBundle;
+import android.os.UserHandle;
+import android.provider.CallLog;
+import android.telephony.CarrierConfigManager;
+import android.telephony.TelephonyManager;
+import android.telephony.gba.UaSecurityProtocolIdentifier;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.Pair;
+import android.util.SparseArray;
+
+import androidx.annotation.NonNull;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.phone.R;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.UUID;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Consumer;
+
+public class CallComposerPictureManager {
+    private static final String TAG = CallComposerPictureManager.class.getSimpleName();
+    private static final SparseArray<CallComposerPictureManager> sInstances = new SparseArray<>();
+    private static final String THREE_GPP_BOOTSTRAPPING = "3GPP-bootstrapping";
+
+    public static CallComposerPictureManager getInstance(Context context, int subscriptionId) {
+        synchronized (sInstances) {
+            if (sExecutorService == null) {
+                sExecutorService = Executors.newSingleThreadScheduledExecutor();
+            }
+            if (!sInstances.contains(subscriptionId)) {
+                sInstances.put(subscriptionId,
+                        new CallComposerPictureManager(context, subscriptionId));
+            }
+            return sInstances.get(subscriptionId);
+        }
+    }
+
+    @VisibleForTesting
+    public static void clearInstances() {
+        synchronized (sInstances) {
+            sInstances.clear();
+            if (sExecutorService != null) {
+                sExecutorService.shutdown();
+                sExecutorService = null;
+            }
+        }
+    }
+
+    // disabled provisionally until the auth stack is fully operational
+    @VisibleForTesting
+    public static boolean sTestMode = false;
+    public static final String FAKE_SERVER_URL = "https://example.com/FAKE.png";
+    public static final String FAKE_SUBJECT = "This is a test call subject";
+    public static final Location FAKE_LOCATION = new Location("");
+    static {
+        // Meteor Crater, AZ
+        FAKE_LOCATION.setLatitude(35.027526);
+        FAKE_LOCATION.setLongitude(-111.021696);
+    }
+
+    public interface CallLogProxy {
+        default void storeCallComposerPictureAsUser(Context context,
+                UserHandle user,
+                InputStream input,
+                Executor executor,
+                OutcomeReceiver<Uri, CallLog.CallComposerLoggingException> callback) {
+            CallLog.storeCallComposerPicture(context.createContextAsUser(user, 0),
+                    input, executor, callback);
+        }
+    }
+
+    private static ScheduledExecutorService sExecutorService = null;
+
+    private final HashMap<UUID, String> mCachedServerUrls = new HashMap<>();
+    private final HashMap<UUID, ImageData> mCachedImages = new HashMap<>();
+    private GbaCredentials mCachedCredentials = null;
+    private final int mSubscriptionId;
+    private final TelephonyManager mTelephonyManager;
+    private final Context mContext;
+    private CallLogProxy mCallLogProxy = new CallLogProxy() {};
+
+    private CallComposerPictureManager(Context context, int subscriptionId) {
+        mContext = context;
+        mSubscriptionId = subscriptionId;
+        mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
+                .createForSubscriptionId(mSubscriptionId);
+    }
+
+    public void handleUploadToServer(CallComposerPictureTransfer.Factory transferFactory,
+            ImageData imageData, Consumer<Pair<UUID, Integer>> callback) {
+        if (sTestMode) {
+            UUID id = UUID.randomUUID();
+            mCachedImages.put(id, imageData);
+            mCachedServerUrls.put(id, FAKE_SERVER_URL);
+            callback.accept(Pair.create(id, TelephonyManager.CallComposerException.SUCCESS));
+            return;
+        }
+
+        PersistableBundle carrierConfig = mTelephonyManager.getCarrierConfig();
+        String uploadUrl = carrierConfig.getString(
+                CarrierConfigManager.KEY_CALL_COMPOSER_PICTURE_SERVER_URL_STRING);
+        if (TextUtils.isEmpty(uploadUrl)) {
+            Log.e(TAG, "Call composer upload URL not configured in carrier config");
+            callback.accept(Pair.create(null,
+                    TelephonyManager.CallComposerException.ERROR_UNKNOWN));
+        }
+        UUID id = UUID.randomUUID();
+        imageData.setId(id.toString());
+
+        CallComposerPictureTransfer transfer = transferFactory.create(mContext,
+                mSubscriptionId, uploadUrl, sExecutorService);
+
+        AtomicBoolean hasRetried = new AtomicBoolean(false);
+        transfer.setCallback(new CallComposerPictureTransfer.PictureCallback() {
+            @Override
+            public void onError(int error) {
+                callback.accept(Pair.create(null, error));
+            }
+
+            @Override
+            public void onRetryNeeded(boolean credentialRefresh, long backoffMillis) {
+                if (hasRetried.getAndSet(true)) {
+                    Log.e(TAG, "Giving up on image upload after one retry.");
+                    callback.accept(Pair.create(null,
+                            TelephonyManager.CallComposerException.ERROR_NETWORK_UNAVAILABLE));
+                    return;
+                }
+                GbaCredentialsSupplier supplier =
+                        (realm, executor) ->
+                                getGbaCredentials(credentialRefresh, carrierConfig, executor);
+
+                sExecutorService.schedule(() -> transfer.uploadPicture(imageData, supplier),
+                        backoffMillis, TimeUnit.MILLISECONDS);
+            }
+
+            @Override
+            public void onUploadSuccessful(String serverUrl) {
+                mCachedServerUrls.put(id, serverUrl);
+                mCachedImages.put(id, imageData);
+                Log.i(TAG, "Successfully received url: " + serverUrl + " associated with "
+                        + id.toString());
+                callback.accept(Pair.create(id, TelephonyManager.CallComposerException.SUCCESS));
+            }
+        });
+
+        transfer.uploadPicture(imageData,
+                (realm, executor) -> getGbaCredentials(false, carrierConfig, executor));
+    }
+
+    public void handleDownloadFromServer(CallComposerPictureTransfer.Factory transferFactory,
+            String remoteUrl, Consumer<Pair<Uri, Integer>> callback) {
+        if (sTestMode) {
+            ImageData imageData = new ImageData(getPlaceholderPictureAsBytes(), "image/png", null);
+            UUID id = UUID.randomUUID();
+            mCachedImages.put(id, imageData);
+            storeUploadedPictureToCallLog(id, uri -> callback.accept(Pair.create(uri, -1)));
+            return;
+        }
+
+        PersistableBundle carrierConfig = mTelephonyManager.getCarrierConfig();
+        CallComposerPictureTransfer transfer = transferFactory.create(mContext,
+                mSubscriptionId, remoteUrl, sExecutorService);
+
+        AtomicBoolean hasRetried = new AtomicBoolean(false);
+        transfer.setCallback(new CallComposerPictureTransfer.PictureCallback() {
+            @Override
+            public void onError(int error) {
+                callback.accept(Pair.create(null, error));
+            }
+
+            @Override
+            public void onRetryNeeded(boolean credentialRefresh, long backoffMillis) {
+                if (hasRetried.getAndSet(true)) {
+                    Log.e(TAG, "Giving up on image download after one retry.");
+                    callback.accept(Pair.create(null,
+                            TelephonyManager.CallComposerException.ERROR_NETWORK_UNAVAILABLE));
+                    return;
+                }
+                GbaCredentialsSupplier supplier =
+                        (realm, executor) ->
+                                getGbaCredentials(credentialRefresh, carrierConfig, executor);
+
+                sExecutorService.schedule(() -> transfer.downloadPicture(supplier),
+                        backoffMillis, TimeUnit.MILLISECONDS);
+            }
+
+            @Override
+            public void onDownloadSuccessful(ImageData data) {
+                ByteArrayInputStream imageDataInput =
+                        new ByteArrayInputStream(data.getImageBytes());
+                mCallLogProxy.storeCallComposerPictureAsUser(
+                        mContext, UserHandle.CURRENT, imageDataInput,
+                        sExecutorService,
+                        new OutcomeReceiver<Uri, CallLog.CallComposerLoggingException>() {
+                            @Override
+                            public void onResult(@NonNull Uri result) {
+                                callback.accept(Pair.create(
+                                        result, TelephonyManager.CallComposerException.SUCCESS));
+                            }
+
+                            @Override
+                            public void onError(CallLog.CallComposerLoggingException e) {
+                                // Just report an error to the client for now.
+                                callback.accept(Pair.create(null,
+                                        TelephonyManager.CallComposerException.ERROR_UNKNOWN));
+                            }
+                        });
+            }
+        });
+
+        transfer.downloadPicture(((realm, executor) ->
+                getGbaCredentials(false, carrierConfig, executor)));
+    }
+
+    public void storeUploadedPictureToCallLog(UUID id, Consumer<Uri> callback) {
+        ImageData data = mCachedImages.get(id);
+        if (data == null) {
+            Log.e(TAG, "No picture associated with uuid " + id);
+            callback.accept(null);
+            return;
+        }
+        ByteArrayInputStream imageDataInput =
+                new ByteArrayInputStream(data.getImageBytes());
+        mCallLogProxy.storeCallComposerPictureAsUser(mContext, UserHandle.CURRENT, imageDataInput,
+                sExecutorService,
+                new OutcomeReceiver<Uri, CallLog.CallComposerLoggingException>() {
+                    @Override
+                    public void onResult(@NonNull Uri result) {
+                        callback.accept(result);
+                        clearCachedData();
+                    }
+
+                    @Override
+                    public void onError(CallLog.CallComposerLoggingException e) {
+                        // Just report an error to the client for now.
+                        Log.e(TAG, "Error logging uploaded image: " + e.getErrorCode());
+                        callback.accept(null);
+                        clearCachedData();
+                    }
+                });
+    }
+
+    public String getServerUrlForImageId(UUID id) {
+        return mCachedServerUrls.get(id);
+    }
+
+    public void clearCachedData() {
+        mCachedServerUrls.clear();
+        mCachedImages.clear();
+    }
+
+    private byte[] getPlaceholderPictureAsBytes() {
+        InputStream resourceInput = mContext.getResources().openRawResource(R.drawable.cupcake);
+        try {
+            return readBytes(resourceInput);
+        } catch (Exception e) {
+            return new byte[] {};
+        }
+    }
+
+    private static byte[] readBytes(InputStream inputStream) throws Exception {
+        byte[] buffer = new byte[1024];
+        ByteArrayOutputStream output = new ByteArrayOutputStream();
+        int numRead;
+        do {
+            numRead = inputStream.read(buffer);
+            if (numRead > 0) output.write(buffer, 0, numRead);
+        } while (numRead > 0);
+        return output.toByteArray();
+    }
+
+    private CompletableFuture<GbaCredentials> getGbaCredentials(
+            boolean forceRefresh, PersistableBundle config, Executor executor) {
+        synchronized (this) {
+            if (!forceRefresh && mCachedCredentials != null) {
+                return CompletableFuture.completedFuture(mCachedCredentials);
+            }
+
+            if (forceRefresh) {
+                mCachedCredentials = null;
+            }
+        }
+
+        UaSecurityProtocolIdentifier securityProtocolIdentifier =
+                new UaSecurityProtocolIdentifier.Builder()
+                        .setOrg(config.getInt(
+                                CarrierConfigManager.KEY_GBA_UA_SECURITY_ORGANIZATION_INT))
+                        .setProtocol(config.getInt(
+                                CarrierConfigManager.KEY_GBA_UA_SECURITY_PROTOCOL_INT))
+                        .setTlsCipherSuite(config.getInt(
+                                CarrierConfigManager.KEY_GBA_UA_TLS_CIPHER_SUITE_INT))
+                        .build();
+        CompletableFuture<GbaCredentials> resultFuture = new CompletableFuture<>();
+
+        mTelephonyManager.bootstrapAuthenticationRequest(TelephonyManager.APPTYPE_ISIM,
+                getNafUri(config), securityProtocolIdentifier, forceRefresh, executor,
+                new TelephonyManager.BootstrapAuthenticationCallback() {
+                    @Override
+                    public void onKeysAvailable(byte[] gbaKey, String transactionId) {
+                        GbaCredentials creds = new GbaCredentials(transactionId, gbaKey);
+                        synchronized (CallComposerPictureManager.this) {
+                            mCachedCredentials = creds;
+                        }
+                        resultFuture.complete(creds);
+                    }
+
+                    @Override
+                    public void onAuthenticationFailure(int reason) {
+                        Log.e(TAG, "GBA auth failed: reason=" + reason);
+                        resultFuture.complete(null);
+                    }
+                });
+
+        return resultFuture;
+    }
+
+    private static Uri getNafUri(PersistableBundle carrierConfig) {
+        String uploadUriString = carrierConfig.getString(
+                CarrierConfigManager.KEY_CALL_COMPOSER_PICTURE_SERVER_URL_STRING);
+        Uri uploadUri = Uri.parse(uploadUriString);
+        String nafPrefix;
+        switch (carrierConfig.getInt(CarrierConfigManager.KEY_GBA_MODE_INT)) {
+            case CarrierConfigManager.GBA_U:
+                nafPrefix = THREE_GPP_BOOTSTRAPPING + "-uicc";
+                break;
+            case CarrierConfigManager.GBA_DIGEST:
+                nafPrefix = THREE_GPP_BOOTSTRAPPING + "-digest";
+                break;
+            case CarrierConfigManager.GBA_ME:
+            default:
+                nafPrefix = THREE_GPP_BOOTSTRAPPING;
+        }
+        String newAuthority = nafPrefix + "@" + uploadUri.getAuthority();
+        Uri nafUri = new Uri.Builder().scheme(uploadUri.getScheme())
+                .encodedAuthority(newAuthority)
+                .build();
+        Log.i(TAG, "using NAF uri " + nafUri + " for GBA");
+        return nafUri;
+    }
+
+    @VisibleForTesting
+    static ScheduledExecutorService getExecutor() {
+        return sExecutorService;
+    }
+
+    @VisibleForTesting
+    void setCallLogProxy(CallLogProxy proxy) {
+        mCallLogProxy = proxy;
+    }
+}
diff --git a/src/com/android/phone/callcomposer/CallComposerPictureTransfer.java b/src/com/android/phone/callcomposer/CallComposerPictureTransfer.java
new file mode 100644
index 0000000..e4458cd
--- /dev/null
+++ b/src/com/android/phone/callcomposer/CallComposerPictureTransfer.java
@@ -0,0 +1,538 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package com.android.phone.callcomposer;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkRequest;
+import android.os.Build;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.http.multipart.MultipartEntity;
+import com.android.internal.http.multipart.Part;
+
+import com.google.common.net.MediaType;
+
+import gov.nist.javax.sip.header.WWWAuthenticate;
+
+import org.xml.sax.InputSource;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Iterator;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+public class CallComposerPictureTransfer {
+    private static final String TAG = CallComposerPictureTransfer.class.getSimpleName();
+    private static final int HTTP_TIMEOUT_MILLIS = 20000;
+    private static final int DEFAULT_BACKOFF_MILLIS = 1000;
+    private static final String THREE_GPP_GBA = "3gpp-gba";
+
+    private static final int ERROR_UNKNOWN = 0;
+    private static final int ERROR_HTTP_TIMEOUT = 1;
+    private static final int ERROR_NO_AUTH_REQUIRED = 2;
+    private static final int ERROR_FORBIDDEN = 3;
+
+    public interface Factory {
+        default CallComposerPictureTransfer create(Context context, int subscriptionId, String url,
+                ExecutorService executorService) {
+            return new CallComposerPictureTransfer(context, subscriptionId, url, executorService);
+        }
+    }
+
+    public interface PictureCallback {
+        default void onError(@TelephonyManager.CallComposerException.CallComposerError int error) {}
+        default void onRetryNeeded(boolean credentialRefresh, long backoffMillis) {}
+        default void onUploadSuccessful(String serverUrl) {}
+        default void onDownloadSuccessful(ImageData data) {}
+    }
+
+    private static class NetworkAccessException extends RuntimeException {
+        final int errorCode;
+
+        NetworkAccessException(int errorCode) {
+            this.errorCode = errorCode;
+        }
+    }
+
+    private final Context mContext;
+    private final int mSubscriptionId;
+    private final String mUrl;
+    private final ExecutorService mExecutorService;
+
+    private PictureCallback mCallback;
+
+    private CallComposerPictureTransfer(Context context, int subscriptionId, String url,
+            ExecutorService executorService) {
+        mContext = context;
+        mSubscriptionId = subscriptionId;
+        mExecutorService = executorService;
+        mUrl = url;
+    }
+
+    @VisibleForTesting
+    public void setCallback(PictureCallback callback) {
+        mCallback = callback;
+    }
+
+    public void uploadPicture(ImageData image,
+            GbaCredentialsSupplier credentialsSupplier) {
+        CompletableFuture<Network> networkFuture = getNetworkForCallComposer();
+        CompletableFuture<WWWAuthenticate> authorizationHeaderFuture = networkFuture
+                .thenApplyAsync((network) -> prepareInitialPost(network, mUrl), mExecutorService)
+                .thenComposeAsync(this::obtainAuthenticateHeader, mExecutorService)
+                .thenApplyAsync(DigestAuthUtils::parseAuthenticateHeader);
+        CompletableFuture<GbaCredentials> credsFuture = authorizationHeaderFuture
+                .thenComposeAsync((header) ->
+                        credentialsSupplier.getCredentials(header.getRealm(), mExecutorService),
+                        mExecutorService);
+
+        CompletableFuture<String> authorizationFuture =
+                authorizationHeaderFuture.thenCombineAsync(credsFuture,
+                        (authHeader, credentials) ->
+                                DigestAuthUtils.generateAuthorizationHeader(
+                                        authHeader, credentials, "POST", mUrl),
+                        mExecutorService)
+                        .whenCompleteAsync(
+                                (authorization, error) -> handleExceptionalCompletion(error),
+                                mExecutorService);
+
+        CompletableFuture<String> networkUrlFuture =
+                networkFuture.thenCombineAsync(authorizationFuture,
+                        (network, auth) -> sendActualImageUpload(network, auth, image),
+                        mExecutorService);
+        networkUrlFuture.thenAcceptAsync((result) -> {
+            if (result != null) mCallback.onUploadSuccessful(result);
+        }, mExecutorService).exceptionally((ex) -> {
+            logException("Exception uploading image" , ex);
+            return null;
+        });
+    }
+
+    public void downloadPicture(GbaCredentialsSupplier credentialsSupplier) {
+        CompletableFuture<Network> networkFuture = getNetworkForCallComposer();
+        CompletableFuture<HttpURLConnection> getConnectionFuture =
+                networkFuture.thenApplyAsync((network) ->
+                        prepareImageDownloadRequest(network, mUrl), mExecutorService);
+
+        CompletableFuture<ImageData> immediatelyDownloadableImage = getConnectionFuture
+                .thenComposeAsync((conn) -> {
+                    try {
+                        if (conn.getResponseCode() != 200) {
+                            return CompletableFuture.completedFuture(null);
+                        }
+                    } catch (IOException e) {
+                        logException("IOException obtaining return code: ", e);
+                        throw new NetworkAccessException(ERROR_HTTP_TIMEOUT);
+                    }
+                    return CompletableFuture.completedFuture(downloadImageFromConnection(conn));
+                }, mExecutorService);
+
+        CompletableFuture<ImageData> authRequiredImage = getConnectionFuture
+                .thenComposeAsync((conn) -> {
+                    try {
+                        if (conn.getResponseCode() == 200) {
+                            // handled by above case
+                            return CompletableFuture.completedFuture(null);
+                        }
+                    } catch (IOException e) {
+                        logException("IOException obtaining return code: ", e);
+                        throw new NetworkAccessException(ERROR_HTTP_TIMEOUT);
+                    }
+                    CompletableFuture<WWWAuthenticate> authenticateHeaderFuture =
+                            obtainAuthenticateHeader(conn)
+                                    .thenApply(DigestAuthUtils::parseAuthenticateHeader);
+                    CompletableFuture<GbaCredentials> credsFuture = authenticateHeaderFuture
+                            .thenComposeAsync((header) ->
+                                    credentialsSupplier.getCredentials(header.getRealm(),
+                                            mExecutorService), mExecutorService);
+
+                    CompletableFuture<String> authorizationFuture = authenticateHeaderFuture
+                            .thenCombineAsync(credsFuture, (authHeader, credentials) ->
+                                    DigestAuthUtils.generateAuthorizationHeader(
+                                            authHeader, credentials, "GET", mUrl),
+                                    mExecutorService)
+                            .whenCompleteAsync((authorization, error) ->
+                                    handleExceptionalCompletion(error), mExecutorService);
+
+                    return networkFuture.thenCombineAsync(authorizationFuture,
+                            this::downloadImageWithAuth, mExecutorService);
+                }, mExecutorService);
+
+        CompletableFuture.allOf(immediatelyDownloadableImage, authRequiredImage).thenRun(() -> {
+            ImageData fromImmediate = immediatelyDownloadableImage.getNow(null);
+            ImageData fromAuth = authRequiredImage.getNow(null);
+            // If both of these are null, that means an error happened somewhere in the chain.
+            // in that case, the error has already been transmitted to the callback, so ignore it.
+            if (fromAuth == null && fromImmediate == null) {
+                Log.w(TAG, "No result from download -- error happened sometime earlier");
+            }
+            if (fromAuth != null) mCallback.onDownloadSuccessful(fromAuth);
+            mCallback.onDownloadSuccessful(fromImmediate);
+        }).exceptionally((ex) -> {
+            logException("Exception downloading image" , ex);
+            return null;
+        });
+    }
+
+    private CompletableFuture<Network> getNetworkForCallComposer() {
+        ConnectivityManager connectivityManager =
+                mContext.getSystemService(ConnectivityManager.class);
+        NetworkRequest pictureNetworkRequest = new NetworkRequest.Builder()
+                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+                .build();
+        CompletableFuture<Network> resultFuture = new CompletableFuture<>();
+        connectivityManager.requestNetwork(pictureNetworkRequest,
+                new ConnectivityManager.NetworkCallback() {
+                    @Override
+                    public void onAvailable(@NonNull Network network) {
+                        resultFuture.complete(network);
+                    }
+                });
+        return resultFuture;
+    }
+
+    private HttpURLConnection prepareInitialPost(Network network, String uploadUrl) {
+        try {
+            HttpURLConnection connection =
+                    (HttpURLConnection) network.openConnection(new URL(uploadUrl));
+            connection.setRequestMethod("POST");
+            connection.setInstanceFollowRedirects(false);
+            connection.setConnectTimeout(HTTP_TIMEOUT_MILLIS);
+            connection.setReadTimeout(HTTP_TIMEOUT_MILLIS);
+            connection.setRequestProperty("User-Agent", getUserAgent());
+            return connection;
+        } catch (MalformedURLException e) {
+            Log.e(TAG, "Malformed URL: " + uploadUrl);
+            throw new RuntimeException(e);
+        } catch (IOException e) {
+            logException("IOException opening network: ", e);
+            throw new RuntimeException(e);
+        }
+    }
+
+    private HttpURLConnection prepareImageDownloadRequest(Network network, String imageUrl) {
+        try {
+            HttpURLConnection connection =
+                    (HttpURLConnection) network.openConnection(new URL(imageUrl));
+            connection.setRequestMethod("GET");
+            connection.setConnectTimeout(HTTP_TIMEOUT_MILLIS);
+            connection.setReadTimeout(HTTP_TIMEOUT_MILLIS);
+            connection.setRequestProperty("User-Agent", getUserAgent());
+            return connection;
+        } catch (MalformedURLException e) {
+            Log.e(TAG, "Malformed URL: " + imageUrl);
+            throw new RuntimeException(e);
+        } catch (IOException e) {
+            logException("IOException opening network: ", e);
+            throw new RuntimeException(e);
+        }
+    }
+
+    // Attempts to connect via the supplied connection, expecting a HTTP 401 in response. Throws
+    // an IOException if the connection times out.
+    // After the response is received, returns the WWW-Authenticate header in the following form:
+    // "WWW-Authenticate:<method> <params>"
+    private CompletableFuture<String> obtainAuthenticateHeader(
+            HttpURLConnection connection) {
+        return CompletableFuture.supplyAsync(() -> {
+            int responseCode;
+            try {
+                responseCode = connection.getResponseCode();
+            } catch (IOException e) {
+                logException("IOException obtaining auth header: ", e);
+                throw new NetworkAccessException(ERROR_HTTP_TIMEOUT);
+            }
+            if (responseCode == 204) {
+                throw new NetworkAccessException(ERROR_NO_AUTH_REQUIRED);
+            } else if (responseCode == 403) {
+                throw new NetworkAccessException(ERROR_FORBIDDEN);
+            } else if (responseCode != 401) {
+                Log.w(TAG, "Received unexpected response in auth request, code= "
+                        + responseCode);
+                throw new NetworkAccessException(ERROR_UNKNOWN);
+            }
+
+            return connection.getHeaderField(DigestAuthUtils.WWW_AUTHENTICATE);
+        }, mExecutorService);
+    }
+
+    private ImageData downloadImageWithAuth(Network network, String authorization) {
+        HttpURLConnection connection = prepareImageDownloadRequest(network, mUrl);
+        connection.addRequestProperty("Authorization", authorization);
+        return downloadImageFromConnection(connection);
+    }
+
+    private ImageData downloadImageFromConnection(HttpURLConnection conn) {
+        try {
+            if (conn.getResponseCode() != 200) {
+                Log.w(TAG, "Got response code " + conn.getResponseCode() + " when trying"
+                        + " to download image");
+                if (conn.getResponseCode() == 401) {
+                    Log.i(TAG, "Got 401 even with auth -- key refresh needed?");
+                    mCallback.onRetryNeeded(true, 0);
+                }
+                return null;
+            }
+        } catch (IOException e) {
+            logException("IOException obtaining return code: ", e);
+            throw new NetworkAccessException(ERROR_HTTP_TIMEOUT);
+        }
+
+        String contentType = conn.getContentType();
+        ByteArrayOutputStream imageDataOut = new ByteArrayOutputStream();
+        byte[] buffer = new byte[4096];
+        int numRead;
+        try {
+            InputStream is = conn.getInputStream();
+            while (true) {
+                numRead = is.read(buffer);
+                if (numRead < 0) break;
+                imageDataOut.write(buffer, 0, numRead);
+            }
+        } catch (IOException e) {
+            logException("IOException reading from image body: ", e);
+            return null;
+        }
+
+        return new ImageData(imageDataOut.toByteArray(), contentType, null);
+    }
+
+    private void handleExceptionalCompletion(Throwable error) {
+        if (error != null) {
+            if (error.getCause() instanceof NetworkAccessException) {
+                int code = ((NetworkAccessException) error.getCause()).errorCode;
+                if (code == ERROR_UNKNOWN || code == ERROR_HTTP_TIMEOUT) {
+                    scheduleRetry();
+                } else {
+                    int failureCode;
+                    if (code == ERROR_FORBIDDEN) {
+                        failureCode = TelephonyManager.CallComposerException
+                                .ERROR_AUTHENTICATION_FAILED;
+                    } else {
+                        failureCode = TelephonyManager.CallComposerException
+                                .ERROR_UNKNOWN;
+                    }
+                    deliverFailure(failureCode);
+                }
+            } else {
+                deliverFailure(TelephonyManager.CallComposerException.ERROR_UNKNOWN);
+            }
+        }
+    }
+
+    private void scheduleRetry() {
+        mCallback.onRetryNeeded(false, DEFAULT_BACKOFF_MILLIS);
+    }
+
+    private void deliverFailure(int code) {
+        mCallback.onError(code);
+    }
+
+    private static Part makeUploadPart(String name, String contentType, String filename,
+            byte[] data) {
+        return new Part() {
+            @Override
+            public String getName() {
+                return name;
+            }
+
+            @Override
+            public String getContentType() {
+                return contentType;
+            }
+
+            @Override
+            public String getCharSet() {
+                return null;
+            }
+
+            @Override
+            public String getTransferEncoding() {
+                return null;
+            }
+
+            @Override
+            public void sendDispositionHeader(OutputStream out) throws IOException {
+                super.sendDispositionHeader(out);
+                if (filename != null) {
+                    String fileNameSuffix = "; filename=\"" + filename + "\"";
+                    out.write(fileNameSuffix.getBytes());
+                }
+            }
+
+            @Override
+            protected void sendData(OutputStream out) throws IOException {
+                out.write(data);
+            }
+
+            @Override
+            protected long lengthOfData() throws IOException {
+                return data.length;
+            }
+        };
+    }
+
+    private String sendActualImageUpload(Network network, String authHeader, ImageData image) {
+        Part transactionIdPart = makeUploadPart("tid", "text/plain",
+                null, image.getId().getBytes());
+        Part imageDataPart = makeUploadPart("File", image.getMimeType(),
+                image.getId(), image.getImageBytes());
+
+        MultipartEntity multipartEntity =
+                new MultipartEntity(new Part[] {transactionIdPart, imageDataPart});
+
+        HttpURLConnection connection = prepareInitialPost(network, mUrl);
+        connection.setDoOutput(true);
+        connection.addRequestProperty("Authorization", authHeader);
+        connection.addRequestProperty("Content-Length",
+                String.valueOf(multipartEntity.getContentLength()));
+        connection.addRequestProperty("Content-Type", multipartEntity.getContentType().getValue());
+        connection.addRequestProperty("Accept-Encoding", "*");
+
+        try (OutputStream requestBodyOut = connection.getOutputStream()) {
+            multipartEntity.writeTo(requestBodyOut);
+        } catch (IOException e) {
+            logException("IOException making request to upload image: ", e);
+            throw new RuntimeException(e);
+        }
+
+        try {
+            int response = connection.getResponseCode();
+            Log.i(TAG, "Received response code: " + response
+                    + ", message=" + connection.getResponseMessage());
+            if (response == 401 || response == 403) {
+                deliverFailure(TelephonyManager.CallComposerException.ERROR_AUTHENTICATION_FAILED);
+                return null;
+            }
+            if (response == 503) {
+                // TODO: implement parsing of retry-after and schedule a retry with that time
+                scheduleRetry();
+                return null;
+            }
+            if (response != 200) {
+                scheduleRetry();
+                return null;
+            }
+            String responseBody = readResponseBody(connection);
+            String parsedUrl = parseImageUploadResponseXmlForUrl(responseBody);
+            Log.i(TAG, "Parsed URL as upload result: " + parsedUrl);
+            return parsedUrl;
+        } catch (IOException e) {
+            logException("IOException getting response to image upload: ", e);
+            deliverFailure(TelephonyManager.CallComposerException.ERROR_UNKNOWN);
+            return null;
+        }
+    }
+
+    private static String parseImageUploadResponseXmlForUrl(String xmlData) {
+        NamespaceContext ns = new NamespaceContext() {
+            public String getNamespaceURI(String prefix) {
+                return "urn:gsma:params:xml:ns:rcs:rcs:fthttp";
+            }
+
+            public String getPrefix(String uri) {
+                throw new UnsupportedOperationException();
+            }
+
+            public Iterator getPrefixes(String uri) {
+                throw new UnsupportedOperationException();
+            }
+        };
+
+        XPath xPath = XPathFactory.newInstance().newXPath();
+        xPath.setNamespaceContext(ns);
+        StringReader reader = new StringReader(xmlData);
+        try {
+            return (String) xPath.evaluate("/a:file/a:file-info[@type='file']/a:data/@url",
+                    new InputSource(reader), XPathConstants.STRING);
+        } catch (XPathExpressionException e) {
+            logException("Error parsing response XML:", e);
+            return null;
+        }
+    }
+
+    private static String readResponseBody(HttpURLConnection connection) {
+        Charset charset = MediaType.parse(connection.getContentType())
+                .charset().or(Charset.defaultCharset());
+        StringBuilder sb = new StringBuilder();
+        try (InputStream inputStream = connection.getInputStream()) {
+            String outLine;
+            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, charset));
+            while ((outLine = reader.readLine()) != null) {
+                sb.append(outLine);
+            }
+        } catch (IOException e) {
+            logException("IOException reading request body: ", e);
+            return null;
+        }
+        return sb.toString();
+    }
+
+    private String getUserAgent() {
+        String carrierName = mContext.getSystemService(TelephonyManager.class)
+                .createForSubscriptionId(mSubscriptionId)
+                .getSimOperatorName();
+        String buildId = Build.ID;
+        String buildDate = DateTimeFormatter.ofPattern("yyyy-MM-dd")
+                .withZone(ZoneId.systemDefault())
+                .format(Instant.ofEpochMilli(Build.TIME));
+        String buildVersion = Build.VERSION.RELEASE_OR_CODENAME;
+        String deviceName = Build.DEVICE;
+        return String.format("%s %s %s %s %s %s %s",
+                carrierName, buildId, buildDate, "Android", buildVersion,
+                deviceName, THREE_GPP_GBA);
+
+    }
+
+    private static void logException(String message, Throwable e) {
+        StringWriter log = new StringWriter();
+        log.append(message);
+        log.append(":\n");
+        log.append(e.getMessage());
+        PrintWriter pw = new PrintWriter(log);
+        e.printStackTrace(pw);
+        Log.e(TAG, log.toString());
+    }
+}
diff --git a/src/com/android/phone/callcomposer/DigestAuthUtils.java b/src/com/android/phone/callcomposer/DigestAuthUtils.java
new file mode 100644
index 0000000..2f081f7
--- /dev/null
+++ b/src/com/android/phone/callcomposer/DigestAuthUtils.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+package com.android.phone.callcomposer;
+
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.google.common.io.BaseEncoding;
+
+import gov.nist.javax.sip.address.GenericURI;
+import gov.nist.javax.sip.header.Authorization;
+import gov.nist.javax.sip.header.WWWAuthenticate;
+import gov.nist.javax.sip.parser.WWWAuthenticateParser;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.text.ParseException;
+
+public class DigestAuthUtils {
+    private static final String TAG = DigestAuthUtils.class.getSimpleName();
+
+    public static final String WWW_AUTHENTICATE = "www-authenticate";
+    private static final String MD5_ALGORITHM = "md5";
+    private static final int CNONCE_LENGTH_BYTES = 16;
+    private static final String AUTH_QOP = "auth";
+
+    public static WWWAuthenticate parseAuthenticateHeader(String header) {
+        String reconstitutedHeader = WWW_AUTHENTICATE + ": " + header;
+        WWWAuthenticate parsedHeader;
+        try {
+            return (WWWAuthenticate) (new WWWAuthenticateParser(reconstitutedHeader).parse());
+        } catch (ParseException e) {
+            Log.e(TAG, "Error parsing received auth header: " + e);
+            return null;
+        }
+    }
+
+    // Generates the Authorization header for use in future requests to the call composer server.
+    public static String generateAuthorizationHeader(WWWAuthenticate parsedHeader,
+            GbaCredentials credentials, String method, String uri) {
+        if (!TextUtils.isEmpty(parsedHeader.getAlgorithm())
+                && !MD5_ALGORITHM.equals(parsedHeader.getAlgorithm().toLowerCase())) {
+            Log.e(TAG, "This client only supports MD5 auth");
+            return "";
+        }
+        if (!TextUtils.isEmpty(parsedHeader.getQop())
+                && !AUTH_QOP.equals(parsedHeader.getQop().toLowerCase())) {
+            Log.e(TAG, "This client only supports the auth qop");
+            return "";
+        }
+
+        String clientNonce = makeClientNonce();
+
+        String response = computeResponse(parsedHeader.getNonce(), clientNonce, AUTH_QOP,
+                credentials.getTransactionId(), parsedHeader.getRealm(), credentials.getKey(),
+                method, uri);
+
+        Authorization replyHeader = new Authorization();
+        try {
+            replyHeader.setScheme(parsedHeader.getScheme());
+            replyHeader.setUsername(credentials.getTransactionId());
+            replyHeader.setURI(new WorkaroundURI(uri));
+            replyHeader.setRealm(parsedHeader.getRealm());
+            replyHeader.setQop(AUTH_QOP);
+            replyHeader.setNonce(parsedHeader.getNonce());
+            replyHeader.setCNonce(clientNonce);
+            replyHeader.setNonceCount(1);
+            replyHeader.setResponse(response);
+            replyHeader.setOpaque(parsedHeader.getOpaque());
+            replyHeader.setAlgorithm(parsedHeader.getAlgorithm());
+
+        } catch (ParseException e) {
+            Log.e(TAG, "Error parsing while constructing reply header: " + e);
+            return null;
+        }
+
+        return replyHeader.encodeBody();
+    }
+
+    public static String computeResponse(String serverNonce, String clientNonce, String qop,
+            String username, String realm, byte[] password, String method, String uri) {
+        String a1Hash = generateA1Hash(username, realm, password);
+        String a2Hash = generateA2Hash(method, uri);
+
+        // this is the nonce-count; since we don't reuse, it's always 1
+        String nonceCount = "00000001";
+        MessageDigest md5Digest = getMd5Digest();
+
+        String hashInput = String.join(":",
+                a1Hash,
+                serverNonce,
+                nonceCount,
+                clientNonce,
+                qop,
+                a2Hash);
+        md5Digest.update(hashInput.getBytes());
+        return base16(md5Digest.digest());
+    }
+
+    private static String makeClientNonce() {
+        SecureRandom rand = new SecureRandom();
+        byte[] clientNonceBytes = new byte[CNONCE_LENGTH_BYTES];
+        rand.nextBytes(clientNonceBytes);
+        return base16(clientNonceBytes);
+    }
+
+    private static String generateA1Hash(
+            String bootstrapTransactionId, String realm, byte[] gbaKey) {
+        MessageDigest md5Digest = getMd5Digest();
+
+        String gbaKeyBase64 = BaseEncoding.base64().encode(gbaKey);
+        String hashInput = String.join(":", bootstrapTransactionId, realm, gbaKeyBase64);
+        md5Digest.update(hashInput.getBytes());
+
+        return base16(md5Digest.digest());
+    }
+
+    private static String generateA2Hash(String method, String requestUri) {
+        MessageDigest md5Digest = getMd5Digest();
+        md5Digest.update(String.join(":", method, requestUri).getBytes());
+        return base16(md5Digest.digest());
+    }
+
+    private static String base16(byte[] input) {
+        return BaseEncoding.base16().encode(input).toLowerCase();
+    }
+
+    private static MessageDigest getMd5Digest() {
+        try {
+            return MessageDigest.getInstance("MD5");
+        } catch (NoSuchAlgorithmException e) {
+            throw new RuntimeException("Couldn't find MD5 algorithm: " + e);
+        }
+    }
+
+    private static class WorkaroundURI extends GenericURI {
+        public WorkaroundURI(String uriString) {
+            this.uriString = uriString;
+            this.scheme = "";
+        }
+    }
+}
diff --git a/src/com/android/phone/callcomposer/GbaCredentials.java b/src/com/android/phone/callcomposer/GbaCredentials.java
new file mode 100644
index 0000000..25a0cd5
--- /dev/null
+++ b/src/com/android/phone/callcomposer/GbaCredentials.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package com.android.phone.callcomposer;
+
+public class GbaCredentials {
+    private final String mTransactionId;
+    private final byte[] mKey;
+
+    public GbaCredentials(String transactionId, byte[] key) {
+        mTransactionId = transactionId;
+        mKey = key;
+    }
+
+    public String getTransactionId() {
+        return mTransactionId;
+    }
+
+    public byte[] getKey() {
+        return mKey;
+    }
+}
diff --git a/src/com/android/phone/callcomposer/GbaCredentialsSupplier.java b/src/com/android/phone/callcomposer/GbaCredentialsSupplier.java
new file mode 100644
index 0000000..9e5bb6a
--- /dev/null
+++ b/src/com/android/phone/callcomposer/GbaCredentialsSupplier.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+package com.android.phone.callcomposer;
+
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
+
+public interface GbaCredentialsSupplier {
+    CompletableFuture<GbaCredentials> getCredentials(String realm, Executor executor);
+}
diff --git a/src/com/android/phone/callcomposer/ImageData.java b/src/com/android/phone/callcomposer/ImageData.java
new file mode 100644
index 0000000..fc93485
--- /dev/null
+++ b/src/com/android/phone/callcomposer/ImageData.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package com.android.phone.callcomposer;
+
+public class ImageData {
+    private final byte[] mImageBytes;
+    private final String mMimeType;
+
+    private String mId;
+
+    public ImageData(byte[] imageBytes, String mimeType, String id) {
+        mImageBytes = imageBytes;
+        mMimeType = mimeType;
+        mId = id;
+    }
+
+    public byte[] getImageBytes() {
+        return mImageBytes;
+    }
+
+    public String getMimeType() {
+        return mMimeType;
+    }
+
+    public String getId() {
+        return mId;
+    }
+
+    public void setId(String id) {
+        mId = id;
+    }
+}
diff --git a/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java b/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java
index 57caede..f24e7d6 100644
--- a/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java
+++ b/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java
@@ -26,7 +26,7 @@
 import android.content.pm.ResolveInfo;
 import android.os.Bundle;
 import android.os.UserHandle;
-import android.permission.PermissionManager;
+import android.permission.LegacyPermissionManager;
 import android.service.euicc.EuiccService;
 import android.telephony.euicc.EuiccManager;
 import android.util.Log;
@@ -55,14 +55,15 @@
             PackageManager.MATCH_SYSTEM_ONLY | PackageManager.MATCH_DEBUG_TRIAGED_MISSING
                     | PackageManager.GET_RESOLVED_FILTER;
 
-    private PermissionManager mPermissionManager;
+    private LegacyPermissionManager mPermissionManager;
     private boolean mGrantPermissionDone = false;
     private ThreadPoolExecutor mExecutor;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        mPermissionManager = (PermissionManager) getSystemService(Context.PERMISSION_SERVICE);
+        mPermissionManager = (LegacyPermissionManager) getSystemService(
+                Context.LEGACY_PERMISSION_SERVICE);
         mExecutor = new ThreadPoolExecutor(
                 1 /* corePoolSize */,
                 1 /* maxPoolSize */,
diff --git a/src/com/android/phone/settings/AccessibilitySettingsFragment.java b/src/com/android/phone/settings/AccessibilitySettingsFragment.java
index 8355fa6..475d878 100644
--- a/src/com/android/phone/settings/AccessibilitySettingsFragment.java
+++ b/src/com/android/phone/settings/AccessibilitySettingsFragment.java
@@ -64,7 +64,7 @@
     private final class AccessibilityTelephonyCallback extends TelephonyCallback implements
             TelephonyCallback.CallStateListener {
         @Override
-        public void onCallStateChanged(int state, String incomingNumber) {
+        public void onCallStateChanged(int state) {
             if (DBG) Log.d(LOG_TAG, "PhoneStateListener.onCallStateChanged: state=" + state);
             Preference pref = getPreferenceScreen().findPreference(BUTTON_TTY_KEY);
             if (pref != null) {
@@ -78,7 +78,7 @@
                         || (telephonyManager.getCallState() == TelephonyManager.CALL_STATE_IDLE));
             }
         }
-    };
+    }
 
     private Context mContext;
     private AudioManager mAudioManager;
diff --git a/src/com/android/phone/settings/RadioInfo.java b/src/com/android/phone/settings/RadioInfo.java
index 302fc47..b1ab413 100644
--- a/src/com/android/phone/settings/RadioInfo.java
+++ b/src/com/android/phone/settings/RadioInfo.java
@@ -17,6 +17,7 @@
 package com.android.phone.settings;
 
 import static android.net.ConnectivityManager.NetworkCallback;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
 
 import android.content.ComponentName;
 import android.content.Context;
@@ -56,9 +57,9 @@
 import android.telephony.CellSignalStrengthLte;
 import android.telephony.CellSignalStrengthWcdma;
 import android.telephony.DataSpecificRegistrationInfo;
+import android.telephony.data.NetworkSlicingConfig;
 import android.telephony.NetworkRegistrationInfo;
 import android.telephony.PhysicalChannelConfig;
-import android.telephony.PreciseCallState;
 import android.telephony.RadioAccessFamily;
 import android.telephony.ServiceState;
 import android.telephony.SignalStrength;
@@ -96,8 +97,12 @@
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
 import java.util.concurrent.LinkedBlockingDeque;
 import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeoutException;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -211,6 +216,11 @@
     private static final int MENU_ITEM_GET_IMS_STATUS      = 4;
     private static final int MENU_ITEM_TOGGLE_DATA         = 5;
 
+    private static final String CARRIER_PROVISIONING_ACTION =
+            "com.android.phone.settings.CARRIER_PROVISIONING";
+    private static final String TRIGGER_CARRIER_PROVISIONING_ACTION =
+            "com.android.phone.settings.TRIGGER_CARRIER_PROVISIONING";
+
     private TextView mDeviceId; //DeviceId is the IMEI in GSM and the MEID in CDMA
     private TextView mLine1Number;
     private TextView mSubscriptionId;
@@ -241,6 +251,7 @@
     private TextView mNrAvailable;
     private TextView mNrState;
     private TextView mNrFrequency;
+    private TextView mNetworkSlicingConfig;
     private EditText mSmsc;
     private Switch mRadioPowerOnSwitch;
     private Button mCellInfoRefreshRateButton;
@@ -295,6 +306,8 @@
         }
     };
 
+    private static final int DEFAULT_TIMEOUT_MS = 1000;
+
     // not final because we need to recreate this object to register on a new subId (b/117555407)
     private TelephonyCallback mTelephonyCallback = new RadioInfoTelephonyCallback();
     private class RadioInfoTelephonyCallback extends TelephonyCallback implements
@@ -305,8 +318,7 @@
             TelephonyCallback.CallForwardingIndicatorListener,
             TelephonyCallback.CellInfoListener,
             TelephonyCallback.SignalStrengthsListener,
-            TelephonyCallback.ServiceStateListener, 
-            TelephonyCallback.PreciseCallStateListener {
+            TelephonyCallback.ServiceStateListener {
 
         @Override
         public void onDataConnectionStateChanged(int state, int networkType) {
@@ -320,17 +332,12 @@
         }
 
         @Override
-        public void onCallStateChanged(int state, String incomingNumber) {
+        public void onCallStateChanged(int state) {
             updateNetworkType();
             updatePhoneState(state);
         }
 
         @Override
-        public void onPreciseCallStateChanged(PreciseCallState preciseState) {
-            updateNetworkType();
-        }
-
-        @Override
         public void onMessageWaitingIndicatorChanged(boolean mwi) {
             mMwiValue = mwi;
             updateMessageWaiting();
@@ -496,6 +503,7 @@
         mNrState = (TextView) findViewById(R.id.nr_state);
         mNrFrequency = (TextView) findViewById(R.id.nr_frequency);
         mPhyChanConfig = (TextView) findViewById(R.id.phy_chan_config);
+        mNetworkSlicingConfig = (TextView) findViewById(R.id.network_slicing_config);
 
         // hide 5G stats on devices that don't support 5G
         if ((mTelephonyManager.getSupportedRadioAccessFamily()
@@ -510,6 +518,8 @@
             mNrState.setVisibility(View.GONE);
             ((TextView) findViewById(R.id.nr_frequency_label)).setVisibility(View.GONE);
             mNrFrequency.setVisibility(View.GONE);
+            ((TextView) findViewById(R.id.network_slicing_config_label)).setVisibility(View.GONE);
+            mNetworkSlicingConfig.setVisibility(View.GONE);
         }
 
         mPreferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType);
@@ -578,11 +588,20 @@
         mDnsCheckToggleButton = (Button) findViewById(R.id.dns_check_toggle);
         mDnsCheckToggleButton.setOnClickListener(mDnsCheckButtonHandler);
         mCarrierProvisioningButton = (Button) findViewById(R.id.carrier_provisioning);
-        mCarrierProvisioningButton.setOnClickListener(mCarrierProvisioningButtonHandler);
+        if (!TextUtils.isEmpty(getCarrierProvisioningAppString())) {
+            mCarrierProvisioningButton.setOnClickListener(mCarrierProvisioningButtonHandler);
+        } else {
+            mCarrierProvisioningButton.setEnabled(false);
+        }
+
         mTriggerCarrierProvisioningButton = (Button) findViewById(
                 R.id.trigger_carrier_provisioning);
-        mTriggerCarrierProvisioningButton.setOnClickListener(
-                mTriggerCarrierProvisioningButtonHandler);
+        if (!TextUtils.isEmpty(getCarrierProvisioningAppString())) {
+            mTriggerCarrierProvisioningButton.setOnClickListener(
+                    mTriggerCarrierProvisioningButtonHandler);
+        } else {
+            mTriggerCarrierProvisioningButton.setEnabled(false);
+        }
 
         mOemInfoButton = (Button) findViewById(R.id.oem_info);
         mOemInfoButton.setOnClickListener(mOemInfoButtonHandler);
@@ -647,6 +666,8 @@
         mCellInfoRefreshRateSpinner.setOnItemSelectedListener(mCellInfoRefreshRateHandler);
         //set selection after registering listener to force update
         mCellInfoRefreshRateSpinner.setSelection(mCellInfoRefreshRateIndex);
+        // Request cell information update from RIL.
+        mTelephonyManager.setCellInfoListRate(CELL_INFO_REFRESH_RATES[mCellInfoRefreshRateIndex]);
 
         //set selection before registering to prevent update
         mPreferredNetworkType.setSelection(mPreferredNetworkTypeResult, true);
@@ -1116,6 +1137,19 @@
             mNrState.setText(NetworkRegistrationInfo.nrStateToString(ss.getNrState()));
             mNrFrequency.setText(ServiceState.frequencyRangeToString(ss.getNrFrequencyRange()));
         }
+
+        Executor simpleExecutor = (r) -> r.run();
+        CompletableFuture<NetworkSlicingConfig> resultFuture = new CompletableFuture<>();
+        mTelephonyManager.getNetworkSlicingConfiguration(simpleExecutor, resultFuture::complete);
+        try {
+            NetworkSlicingConfig networkSlicingConfig =
+                resultFuture.get(DEFAULT_TIMEOUT_MS, MILLISECONDS);
+            mNetworkSlicingConfig.setText(networkSlicingConfig.toString());
+        } catch (ExecutionException | InterruptedException | TimeoutException e) {
+            Log.e(TAG, "Unable to get slicing config: " + e.toString());
+            mNetworkSlicingConfig.setText("Unable to get slicing config.");
+        }
+
     }
 
     private void updateProperties() {
@@ -1615,21 +1649,23 @@
         }
     };
 
-    OnClickListener mCarrierProvisioningButtonHandler = new OnClickListener() {
-        public void onClick(View v) {
-            final Intent intent = new Intent("com.android.settings.CARRIER_PROVISIONING");
-            final ComponentName serviceComponent = ComponentName.unflattenFromString(
-                    "com.android.omadm.service/.DMIntentReceiver");
+    OnClickListener mCarrierProvisioningButtonHandler = v -> {
+        String carrierProvisioningApp = getCarrierProvisioningAppString();
+        if (!TextUtils.isEmpty(carrierProvisioningApp)) {
+            final Intent intent = new Intent(CARRIER_PROVISIONING_ACTION);
+            final ComponentName serviceComponent =
+                    ComponentName.unflattenFromString(carrierProvisioningApp);
             intent.setComponent(serviceComponent);
             sendBroadcast(intent);
         }
     };
 
-    OnClickListener mTriggerCarrierProvisioningButtonHandler = new OnClickListener() {
-        public void onClick(View v) {
-            final Intent intent = new Intent("com.android.settings.TRIGGER_CARRIER_PROVISIONING");
-            final ComponentName serviceComponent = ComponentName.unflattenFromString(
-                    "com.android.omadm.service/.DMIntentReceiver");
+    OnClickListener mTriggerCarrierProvisioningButtonHandler = v -> {
+        String carrierProvisioningApp = getCarrierProvisioningAppString();
+        if (!TextUtils.isEmpty(carrierProvisioningApp)) {
+            final Intent intent = new Intent(TRIGGER_CARRIER_PROVISIONING_ACTION);
+            final ComponentName serviceComponent =
+                    ComponentName.unflattenFromString(carrierProvisioningApp);
             intent.setComponent(serviceComponent);
             sendBroadcast(intent);
         }
@@ -1694,6 +1730,19 @@
         }
     };
 
+    private String getCarrierProvisioningAppString() {
+        if (mPhone != null) {
+            CarrierConfigManager configManager =
+                    mPhone.getContext().getSystemService(CarrierConfigManager.class);
+            PersistableBundle b = configManager.getConfigForSubId(mPhone.getSubId());
+            if (b != null) {
+                return b.getString(
+                        CarrierConfigManager.KEY_CARRIER_PROVISIONING_APP_STRING, "");
+            }
+        }
+        return "";
+    }
+
     boolean isCbrsSupported() {
         return getResources().getBoolean(
               com.android.internal.R.bool.config_cbrs_supported);
diff --git a/src/com/android/services/telephony/CdmaConferenceController.java b/src/com/android/services/telephony/CdmaConferenceController.java
index 8523a5f..a076ec8 100644
--- a/src/com/android/services/telephony/CdmaConferenceController.java
+++ b/src/com/android/services/telephony/CdmaConferenceController.java
@@ -20,11 +20,14 @@
 import android.telecom.Connection;
 import android.telecom.DisconnectCause;
 import android.telecom.PhoneAccountHandle;
+import android.util.ArraySet;
 
 import com.android.phone.PhoneUtils;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 
 /**
  * Manages CDMA conference calls. CDMA conference calls are much more limited than GSM conference
@@ -83,6 +86,9 @@
 
     private final Handler mHandler = new Handler();
 
+    private final Set<CdmaConnection> mPendingAddConnections = Collections.synchronizedSet(
+            new ArraySet<>());
+
     public CdmaConferenceController(TelephonyConnectionService connectionService) {
         mConnectionService = connectionService;
     }
@@ -91,7 +97,7 @@
     private CdmaConference mConference;
 
     void add(final CdmaConnection connection) {
-        if (mCdmaConnections.contains(connection)) {
+        if (mCdmaConnections.contains(connection) || !mPendingAddConnections.add(connection)) {
             // Adding a duplicate realistically shouldn't happen.
             Log.w(this, "add - connection already tracked; connection=%s", connection);
             return;
@@ -140,6 +146,7 @@
 
     private void addInternal(CdmaConnection connection) {
         mCdmaConnections.add(connection);
+        mPendingAddConnections.remove(connection);
         connection.addTelephonyConnectionListener(mTelephonyConnectionListener);
         recalculateConference();
     }
diff --git a/src/com/android/services/telephony/DisconnectCauseUtil.java b/src/com/android/services/telephony/DisconnectCauseUtil.java
index e17577f..9c89e9e 100644
--- a/src/com/android/services/telephony/DisconnectCauseUtil.java
+++ b/src/com/android/services/telephony/DisconnectCauseUtil.java
@@ -23,6 +23,7 @@
 import android.telecom.DisconnectCause;
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
+import android.telephony.ims.ImsReasonInfo;
 
 import com.android.internal.telephony.CallFailCause;
 import com.android.internal.telephony.Phone;
@@ -64,13 +65,13 @@
     * message and tone.
     *
     * @param telephonyDisconnectCause The code for the reason for the disconnect.
-    * @param telephonyPerciseDisconnectCause The code for the percise reason for the disconnect.
+    * @param telephonyPreciseDisconnectCause The code for the precise reason for the disconnect.
     * @param reason Description of the reason for the disconnect, not intended for the user to see..
     */
     public static DisconnectCause toTelecomDisconnectCause(
-            int telephonyDisconnectCause, int telephonyPerciseDisconnectCause, String reason) {
-        return toTelecomDisconnectCause(telephonyDisconnectCause, telephonyPerciseDisconnectCause,
-                reason, SubscriptionManager.getDefaultVoicePhoneId());
+            int telephonyDisconnectCause, int telephonyPreciseDisconnectCause, String reason) {
+        return toTelecomDisconnectCause(telephonyDisconnectCause, telephonyPreciseDisconnectCause,
+                reason, SubscriptionManager.getDefaultVoicePhoneId(), null);
     }
 
     /**
@@ -84,30 +85,33 @@
     public static DisconnectCause toTelecomDisconnectCause(int telephonyDisconnectCause,
             String reason, int phoneId) {
         return toTelecomDisconnectCause(telephonyDisconnectCause, CallFailCause.NOT_VALID,
-                reason, phoneId);
+                reason, phoneId, null);
     }
 
    /**
     * Converts from a disconnect code in {@link android.telephony.DisconnectCause} into a more
     * generic {@link android.telecom.DisconnectCause}.object, possibly populated with a localized
     * message and tone for Slot.
-    *
     * @param telephonyDisconnectCause The code for the reason for the disconnect.
-    * @param telephonyPerciseDisconnectCause The code for the percise reason for the disconnect.
-    * @param reason Description of the reason for the disconnect, not intended for the user to see..
+    * @param telephonyPreciseDisconnectCause The code for the precise reason for the disconnect.
+    * @param reason Description of the reason for the disconnect, not intended for the user to see.
     * @param phoneId To support localized message based on phoneId
+    * @param imsReasonInfo
     */
     public static DisconnectCause toTelecomDisconnectCause(
-            int telephonyDisconnectCause, int telephonyPerciseDisconnectCause, String reason,
-            int phoneId) {
+            int telephonyDisconnectCause, int telephonyPreciseDisconnectCause, String reason,
+            int phoneId, ImsReasonInfo imsReasonInfo) {
         Context context = PhoneGlobals.getInstance();
         return new DisconnectCause(
                 toTelecomDisconnectCauseCode(telephonyDisconnectCause),
                 toTelecomDisconnectCauseLabel(context, telephonyDisconnectCause,
-                        telephonyPerciseDisconnectCause),
+                        telephonyPreciseDisconnectCause),
                 toTelecomDisconnectCauseDescription(context, telephonyDisconnectCause, phoneId),
                 toTelecomDisconnectReason(context,telephonyDisconnectCause, reason, phoneId),
-                toTelecomDisconnectCauseTone(telephonyDisconnectCause, phoneId));
+                toTelecomDisconnectCauseTone(telephonyDisconnectCause, phoneId),
+                telephonyDisconnectCause,
+                telephonyPreciseDisconnectCause,
+                imsReasonInfo);
     }
 
     /**
@@ -233,10 +237,10 @@
      * Returns a label for to the disconnect cause to be shown to the user.
      */
     private static CharSequence toTelecomDisconnectCauseLabel(
-            Context context, int telephonyDisconnectCause, int telephonyPerciseDisconnectCause) {
+            Context context, int telephonyDisconnectCause, int telephonyPreciseDisconnectCause) {
         CharSequence label;
-        if (telephonyPerciseDisconnectCause != CallFailCause.NOT_VALID) {
-            label = getLabelFromPreciseDisconnectCause(context, telephonyPerciseDisconnectCause,
+        if (telephonyPreciseDisconnectCause != CallFailCause.NOT_VALID) {
+            label = getLabelFromPreciseDisconnectCause(context, telephonyPreciseDisconnectCause,
                     telephonyDisconnectCause);
         } else {
             label = getLabelFromDisconnectCause(context, telephonyDisconnectCause);
diff --git a/src/com/android/services/telephony/ImsConference.java b/src/com/android/services/telephony/ImsConference.java
index c9f762b..0be927a 100644
--- a/src/com/android/services/telephony/ImsConference.java
+++ b/src/com/android/services/telephony/ImsConference.java
@@ -1074,7 +1074,12 @@
 
             // If the conference is empty and we're supposed to do a local disconnect, do so now.
             if (mCarrierConfig.shouldLocalDisconnectEmptyConference()
-                    && oldParticipantCount > 0 && newParticipantCount == 0) {
+                    // If we dropped from > 0 participants to zero
+                    // OR if the conference had a single participant and is emulating a standalone
+                    // call.
+                    && (oldParticipantCount > 0 || !isMultiparty())
+                    // AND the CEP says there is nobody left any more.
+                    && newParticipantCount == 0) {
                 Log.i(this, "handleConferenceParticipantsUpdate: empty conference; "
                         + "local disconnect.");
                 onDisconnect();
diff --git a/src/com/android/services/telephony/PstnIncomingCallNotifier.java b/src/com/android/services/telephony/PstnIncomingCallNotifier.java
index ee4baae..4191367 100644
--- a/src/com/android/services/telephony/PstnIncomingCallNotifier.java
+++ b/src/com/android/services/telephony/PstnIncomingCallNotifier.java
@@ -41,6 +41,7 @@
 import com.android.internal.telephony.imsphone.ImsPhoneConnection;
 import com.android.phone.NumberVerificationManager;
 import com.android.phone.PhoneUtils;
+import com.android.phone.callcomposer.CallComposerPictureManager;
 import com.android.telephony.Rlog;
 
 import java.util.List;
@@ -297,6 +298,17 @@
             if (imsCall != null) {
                 ImsCallProfile imsCallProfile = imsCall.getCallProfile();
                 if (imsCallProfile != null) {
+                    if (CallComposerPictureManager.sTestMode) {
+                        imsCallProfile.setCallExtra(ImsCallProfile.EXTRA_PICTURE_URL,
+                                CallComposerPictureManager.FAKE_SERVER_URL);
+                        imsCallProfile.setCallExtraInt(ImsCallProfile.EXTRA_PRIORITY,
+                                TelecomManager.PRIORITY_URGENT);
+                        imsCallProfile.setCallExtra(ImsCallProfile.EXTRA_CALL_SUBJECT,
+                                CallComposerPictureManager.FAKE_SUBJECT);
+                        imsCallProfile.setCallExtraParcelable(ImsCallProfile.EXTRA_LOCATION,
+                                CallComposerPictureManager.FAKE_LOCATION);
+                    }
+
                     extras.putInt(TelecomManager.EXTRA_PRIORITY,
                             imsCallProfile.getCallExtraInt(ImsCallProfile.EXTRA_PRIORITY));
                     extras.putString(TelecomManager.EXTRA_CALL_SUBJECT,
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index 9226cae..1d749f4 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -588,11 +588,15 @@
         private boolean isCarrierVideoPresenceSupported() {
             PersistableBundle b =
                     PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
-            boolean carrierConfigEnabled = b != null
-                    && (b.getBoolean(CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL)
-                    || b.getBoolean(
-                    CarrierConfigManager.Ims.KEY_ENABLE_PRESENCE_CAPABILITY_EXCHANGE_BOOL));
-            return carrierConfigEnabled && isUserContactDiscoverySettingEnabled();
+            if (b == null) return false;
+
+            // If using the new RcsUceAdapter API, this should be true if
+            // KEY_ENABLE_PRESENCE_CAPABILITY_EXCHANGE_BOOL is set. If using the old
+            // KEY_USE_RCS_PRESENCE_BOOL key, we have to also check the user setting.
+            return b.getBoolean(
+                    CarrierConfigManager.Ims.KEY_ENABLE_PRESENCE_CAPABILITY_EXCHANGE_BOOL)
+                    || (b.getBoolean(CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL)
+                    && isUserContactDiscoverySettingEnabled());
         }
 
         /**
@@ -1007,6 +1011,9 @@
             return mMmTelManager.isAvailable(ImsRegistrationImplBase.REGISTRATION_TECH_LTE,
                     MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE)
                     || mMmTelManager.isAvailable(ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN,
+                    MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE)
+                    || mMmTelManager.isAvailable(
+                            ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM,
                     MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE);
         }
     }
@@ -1111,7 +1118,7 @@
                 }
             }
         }
-    };
+    }
 
     private static TelecomAccountRegistry sInstance;
     private final Context mContext;
@@ -1203,7 +1210,7 @@
      * @param handle The {@link PhoneAccountHandle}.
      * @return {@code True} if merging calls is supported.
      */
-    boolean isMergeCallSupported(PhoneAccountHandle handle) {
+    public boolean isMergeCallSupported(PhoneAccountHandle handle) {
         synchronized (mAccountsLock) {
             for (AccountEntry entry : mAccounts) {
                 if (entry.getPhoneAccountHandle().equals(handle)) {
@@ -1221,7 +1228,7 @@
      * @param handle The {@link PhoneAccountHandle}.
      * @return {@code True} if video conferencing is supported.
      */
-    boolean isVideoConferencingSupported(PhoneAccountHandle handle) {
+    public boolean isVideoConferencingSupported(PhoneAccountHandle handle) {
         synchronized (mAccountsLock) {
             for (AccountEntry entry : mAccounts) {
                 if (entry.getPhoneAccountHandle().equals(handle)) {
@@ -1239,7 +1246,7 @@
      * @param handle The {@link PhoneAccountHandle}.
      * @return {@code True} if merging of wifi calls is allowed when VoWIFI is disabled.
      */
-    boolean isMergeOfWifiCallsAllowedWhenVoWifiOff(final PhoneAccountHandle handle) {
+    public boolean isMergeOfWifiCallsAllowedWhenVoWifiOff(final PhoneAccountHandle handle) {
         synchronized (mAccountsLock) {
             Optional<AccountEntry> result = mAccounts.stream().filter(
                     entry -> entry.getPhoneAccountHandle().equals(handle)).findFirst();
@@ -1259,7 +1266,7 @@
      * @param handle The {@link PhoneAccountHandle}.
      * @return {@code True} if merging IMS calls is supported.
      */
-    boolean isMergeImsCallSupported(PhoneAccountHandle handle) {
+    public boolean isMergeImsCallSupported(PhoneAccountHandle handle) {
         synchronized (mAccountsLock) {
             for (AccountEntry entry : mAccounts) {
                 if (entry.getPhoneAccountHandle().equals(handle)) {
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 1110de0..18a40cf 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -28,8 +28,11 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
+import android.os.Messenger;
 import android.os.PersistableBundle;
 import android.telecom.CallAudioState;
+import android.telecom.CallDiagnostics;
+import android.telecom.CallScreeningService;
 import android.telecom.Conference;
 import android.telecom.Connection;
 import android.telecom.ConnectionService;
@@ -46,10 +49,12 @@
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.telephony.ims.ImsCallProfile;
+import android.telephony.ims.ImsReasonInfo;
 import android.telephony.ims.ImsStreamMediaProfile;
 import android.telephony.ims.RtpHeaderExtension;
 import android.telephony.ims.RtpHeaderExtensionType;
 import android.text.TextUtils;
+import android.util.ArraySet;
 import android.util.Pair;
 
 import com.android.ims.ImsCall;
@@ -67,9 +72,11 @@
 import com.android.internal.telephony.d2d.Communicator;
 import com.android.internal.telephony.d2d.DtmfAdapter;
 import com.android.internal.telephony.d2d.DtmfTransport;
+import com.android.internal.telephony.d2d.MessageTypeAndValueHelper;
 import com.android.internal.telephony.d2d.RtpAdapter;
 import com.android.internal.telephony.d2d.RtpTransport;
 import com.android.internal.telephony.d2d.Timeouts;
+import com.android.internal.telephony.d2d.TransportProtocol;
 import com.android.internal.telephony.gsm.SuppServiceNotification;
 import com.android.internal.telephony.imsphone.ImsPhone;
 import com.android.internal.telephony.imsphone.ImsPhoneCall;
@@ -79,6 +86,8 @@
 import com.android.phone.PhoneGlobals;
 import com.android.phone.PhoneUtils;
 import com.android.phone.R;
+import com.android.phone.callcomposer.CallComposerPictureManager;
+import com.android.phone.callcomposer.CallComposerPictureTransfer;
 import com.android.telephony.Rlog;
 
 import java.util.ArrayList;
@@ -91,6 +100,7 @@
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executors;
+import java.util.stream.Collectors;
 
 /**
  * Base class for CDMA and GSM connections.
@@ -129,6 +139,8 @@
     private static final int MSG_ON_CONNECTION_EVENT = 19;
     private static final int MSG_REDIAL_CONNECTION_CHANGED = 20;
     private static final int MSG_REJECT = 21;
+    private static final int MSG_DTMF_DONE = 22;
+    private static final int MSG_MEDIA_ATTRIBUTES_CHANGED = 23;
 
     private static final String JAPAN_COUNTRY_CODE_WITH_PLUS_SIGN = "+81";
     private static final String JAPAN_ISO_COUNTRY_CODE = "JP";
@@ -145,39 +157,15 @@
                     updateState();
                     break;
                 case MSG_HANDOVER_STATE_CHANGED:
+                    // fall through
                 case MSG_REDIAL_CONNECTION_CHANGED:
                     String what = (msg.what == MSG_HANDOVER_STATE_CHANGED)
                             ? "MSG_HANDOVER_STATE_CHANGED" : "MSG_REDIAL_CONNECTION_CHANGED";
-                    Log.v(TelephonyConnection.this, what);
+                    Log.i(TelephonyConnection.this, "Connection changed due to: %s", what);
                     AsyncResult ar = (AsyncResult) msg.obj;
                     com.android.internal.telephony.Connection connection =
                          (com.android.internal.telephony.Connection) ar.result;
-                    if (connection == null) {
-                        setDisconnected(DisconnectCauseUtil
-                                .toTelecomDisconnectCause(DisconnectCause.OUT_OF_NETWORK,
-                                        "handover failure, no connection"));
-                        close();
-                        break;
-                    }
-                    if (mOriginalConnection != null) {
-                        if (connection != null &&
-                            ((connection.getAddress() != null &&
-                            mOriginalConnection.getAddress() != null &&
-                            mOriginalConnection.getAddress().equals(connection.getAddress())) ||
-                            connection.getState() == mOriginalConnection.getStateBeforeHandover())) {
-                            Log.d(TelephonyConnection.this, "Setting original connection after"
-                                    + " handover or redial, current original connection="
-                                    + mOriginalConnection.toString()
-                                    + ", new original connection="
-                                    + connection.toString());
-                            setOriginalConnection(connection);
-                            mWasImsConnection = false;
-                        }
-                    } else {
-                        Log.w(TelephonyConnection.this,
-                                what + ": mOriginalConnection==null --"
-                                        + " invalid state (not cleaned up)");
-                    }
+                    onOriginalConnectionRedialed(connection);
                     break;
                 case MSG_RINGBACK_TONE:
                     Log.v(TelephonyConnection.this, "MSG_RINGBACK_TONE");
@@ -244,6 +232,10 @@
                     setAudioQuality(audioQuality);
                     break;
 
+                case MSG_MEDIA_ATTRIBUTES_CHANGED:
+                    refreshCodec();
+                    break;
+
                 case MSG_SET_CONFERENCE_PARTICIPANTS:
                     List<ConferenceParticipant> participants = (List<ConferenceParticipant>) msg.obj;
                     updateConferenceParticipants(participants);
@@ -299,6 +291,9 @@
                     int rejectReason = (int) msg.obj;
                     reject(rejectReason);
                     break;
+                case MSG_DTMF_DONE:
+                    Log.i(this, "MSG_DTMF_DONE");
+                    break;
 
                 case MSG_SET_CALL_RADIO_TECH:
                     int vrat = (int) msg.obj;
@@ -337,6 +332,56 @@
         }
     };
 
+    private final Messenger mHandlerMessenger = new Messenger(mHandler);
+
+    /**
+     * The underlying telephony Connection has been redialed on a different domain (CS or IMS).
+     * Track the new telephony Connection and set back up appropriate callbacks.
+     * @param connection The new telephony Connection associated with this TelephonyConnection.
+     */
+    @VisibleForTesting
+    public void onOriginalConnectionRedialed(
+            com.android.internal.telephony.Connection connection) {
+        if (connection == null) {
+            setDisconnected(DisconnectCauseUtil
+                    .toTelecomDisconnectCause(DisconnectCause.OUT_OF_NETWORK,
+                            "handover failure, no connection"));
+            close();
+            return;
+        }
+        if (mOriginalConnection != null) {
+            if ((connection.getAddress() != null
+                    && mOriginalConnection.getAddress() != null
+                    && mOriginalConnection.getAddress().equals(connection.getAddress()))
+                    || connection.getState() == mOriginalConnection.getStateBeforeHandover()) {
+                Log.i(TelephonyConnection.this, "Setting original connection after"
+                        + " handover or redial, current original connection="
+                        + mOriginalConnection.toString()
+                        + ", new original connection="
+                        + connection.toString());
+                setOriginalConnection(connection);
+                mWasImsConnection = false;
+                if (mHangupDisconnectCause != DisconnectCause.NOT_VALID) {
+                    // A hangup request was initiated during the handover process, so
+                    // go ahead and initiate the hangup on the new connection.
+                    try {
+                        Log.i(TelephonyConnection.this, "user has tried to hangup "
+                                + "during handover, retrying hangup.");
+                        connection.hangup();
+                    } catch (CallStateException e) {
+                        // Call state exception may be thrown if the connection was
+                        // already disconnected, so just log this case.
+                        Log.w(TelephonyConnection.this, "hangup during "
+                                + "handover or redial resulted in an exception:" + e);
+                    }
+                }
+            }
+        } else {
+            Log.w(TelephonyConnection.this, " mOriginalConnection==null --"
+                    + " invalid state (not cleaned up)");
+        }
+    }
+
     /**
      * Handles {@link SuppServiceNotification}s pertinent to Telephony.
      * @param ssn the notification.
@@ -506,7 +551,7 @@
 
         @Override
         public void onStateChanged(android.telecom.Connection c, int state) {
-            mCommunicator.onStateChanged(c, state);
+            mCommunicator.onStateChanged(c.getTelecomCallId(), state);
         }
     }
 
@@ -581,6 +626,12 @@
         public void onAudioQualityChanged(int audioQuality) {
             mHandler.obtainMessage(MSG_SET_AUDIO_QUALITY, audioQuality).sendToTarget();
         }
+
+        @Override
+        public void onMediaAttributesChanged() {
+            mHandler.obtainMessage(MSG_MEDIA_ATTRIBUTES_CHANGED).sendToTarget();
+        }
+
         /**
          * Handles a change in the state of conference participant(s), as reported by the
          * {@link com.android.internal.telephony.Connection}.
@@ -717,6 +768,8 @@
         @Override
         public void onOriginalConnectionReplaced(
                 com.android.internal.telephony.Connection newConnection) {
+            Log.i(TelephonyConnection.this, "onOriginalConnectionReplaced; newConn=%s",
+                    newConnection);
             setOriginalConnection(newConnection);
         }
 
@@ -738,10 +791,20 @@
                     extensionData.size());
             mRtpTransport.onRtpHeaderExtensionsReceived(extensionData);
         }
+
+        @Override
+        public void onReceivedDtmfDigit(char digit) {
+            if (mDtmfTransport == null) {
+                return;
+            }
+            Log.i(this, "onReceivedDtmfDigit: digit=%c", digit);
+            mDtmfTransport.onDtmfReceived(digit);
+        }
     };
 
     private TelephonyConnectionService mTelephonyConnectionService;
     protected com.android.internal.telephony.Connection mOriginalConnection;
+    private Phone mPhoneForEvents;
     private Call.State mConnectionState = Call.State.IDLE;
     private Bundle mOriginalConnectionExtras = new Bundle();
     private boolean mIsStateOverridden = false;
@@ -870,9 +933,18 @@
         }
     }
 
+    @VisibleForTesting
+    protected TelephonyConnection() {
+        // Do nothing
+    }
+
     @Override
     public void onCallEvent(String event, Bundle extras) {
         switch (event) {
+            case Connection.EVENT_DEVICE_TO_DEVICE_MESSAGE:
+                // A Device to device message is being sent by a CallDiagnosticService.
+                handleOutgoingDeviceToDeviceMessage(extras);
+                break;
             default:
                 break;
         }
@@ -1127,6 +1199,64 @@
     }
 
     @Override
+    public void onCallFilteringCompleted(CallFilteringCompletionInfo callFilteringCompletionInfo) {
+        // Check what the call screening service has to say, if it's a system dialer.
+        boolean isAllowedToDisplayPicture;
+        String callScreeningPackage =
+                callFilteringCompletionInfo.getCallScreeningComponent() == null
+                        ? null
+                        : callFilteringCompletionInfo.getCallScreeningComponent().getPackageName();
+        boolean isResponseFromSystemDialer =
+                Objects.equals(getPhone().getContext()
+                        .getSystemService(TelecomManager.class).getSystemDialerPackage(),
+                        callScreeningPackage);
+        CallScreeningService.CallResponse callScreeningResponse =
+                callFilteringCompletionInfo.getCallResponse();
+
+        if (isResponseFromSystemDialer && callScreeningResponse != null
+                && callScreeningResponse.getCallComposerAttachmentsToShow() >= 0) {
+            isAllowedToDisplayPicture = (callScreeningResponse.getCallComposerAttachmentsToShow()
+                    & CallScreeningService.CallResponse.CALL_COMPOSER_ATTACHMENT_PICTURE) != 0;
+        } else {
+            isAllowedToDisplayPicture = callFilteringCompletionInfo.isInContacts();
+        }
+
+        if (isImsConnection()) {
+            ImsPhone imsPhone = (getPhone() instanceof ImsPhone) ? (ImsPhone) getPhone() : null;
+            if (imsPhone != null
+                    && imsPhone.getCallComposerStatus() == TelephonyManager.CALL_COMPOSER_STATUS_ON
+                    && !callFilteringCompletionInfo.isBlocked() && isAllowedToDisplayPicture) {
+                ImsPhoneConnection originalConnection = (ImsPhoneConnection) mOriginalConnection;
+                ImsCallProfile profile = originalConnection.getImsCall().getCallProfile();
+                String serverUrl = CallComposerPictureManager.sTestMode
+                        ? CallComposerPictureManager.FAKE_SERVER_URL
+                        : profile.getCallExtra(ImsCallProfile.EXTRA_PICTURE_URL);
+                if (profile != null
+                        && !TextUtils.isEmpty(serverUrl)) {
+                    CallComposerPictureManager manager = CallComposerPictureManager
+                            .getInstance(getPhone().getContext(), getPhone().getSubId());
+                    manager.handleDownloadFromServer(new CallComposerPictureTransfer.Factory() {},
+                            serverUrl,
+                            (result) -> {
+                                if (result.first != null) {
+                                    Bundle newExtras = new Bundle();
+                                    newExtras.putParcelable(TelecomManager.EXTRA_PICTURE_URI,
+                                            result.first);
+                                    putTelephonyExtras(newExtras);
+                                } else {
+                                    Log.i(this, "Call composer picture download:"
+                                            + " error=" + result.second);
+                                    Bundle newExtras = new Bundle();
+                                    newExtras.putBoolean(TelecomManager.EXTRA_HAS_PICTURE, false);
+                                    putTelephonyExtras(newExtras);
+                                }
+                            });
+                }
+            }
+        }
+    }
+
+    @Override
     public void handleRttUpgradeResponse(RttTextStream textStream) {
         if (!isImsConnection()) {
             Log.w(this, "handleRttUpgradeResponse - not in IMS, so RTT cannot be enabled.");
@@ -1140,6 +1270,8 @@
         Log.v(this, "performAnswer");
         if (isValidRingingCall() && getPhone() != null) {
             try {
+                mTelephonyConnectionService.maybeDisconnectCallsOnOtherSubs(
+                        getPhoneAccountHandle());
                 getPhone().acceptCall(videoState);
             } catch (CallStateException e) {
                 Log.e(this, e, "Failed to accept call.");
@@ -1332,7 +1464,7 @@
 
         newProperties = changeBitmask(newProperties, PROPERTY_HIGH_DEF_AUDIO,
                 hasHighDefAudioProperty());
-        newProperties = changeBitmask(newProperties, PROPERTY_WIFI, isWifi());
+        newProperties = changeBitmask(newProperties, PROPERTY_WIFI, isWifi() && !isCrossSimCall());
         newProperties = changeBitmask(newProperties, PROPERTY_IS_EXTERNAL_CALL,
                 isExternalConnection());
         newProperties = changeBitmask(newProperties, PROPERTY_HAS_CDMA_VOICE_PRIVACY,
@@ -1344,6 +1476,8 @@
                 isNetworkIdentifiedEmergencyCall());
         newProperties = changeBitmask(newProperties, PROPERTY_IS_ADHOC_CONFERENCE,
                 isAdhocConferenceCall());
+        newProperties = changeBitmask(newProperties, PROPERTY_CROSS_SIM,
+                isCrossSimCall());
 
         if (getConnectionProperties() != newProperties) {
             setTelephonyConnectionProperties(newProperties);
@@ -1403,8 +1537,29 @@
         // Subclass can override this to do cleanup.
     }
 
+    public void registerForCallEvents(Phone phone) {
+        if (mPhoneForEvents == phone) {
+            Log.i(this, "registerForCallEvents - same phone requested for"
+                    + "registration, ignoring.");
+            return;
+        }
+        Log.i(this, "registerForCallEvents; phone=%s", phone);
+        // Only one Phone should be registered for events at a time.
+        unregisterForCallEvents();
+        phone.registerForPreciseCallStateChanged(mHandler, MSG_PRECISE_CALL_STATE_CHANGED, null);
+        phone.registerForHandoverStateChanged(mHandler, MSG_HANDOVER_STATE_CHANGED, null);
+        phone.registerForRedialConnectionChanged(mHandler, MSG_REDIAL_CONNECTION_CHANGED, null);
+        phone.registerForRingbackTone(mHandler, MSG_RINGBACK_TONE, null);
+        phone.registerForSuppServiceNotification(mHandler, MSG_SUPP_SERVICE_NOTIFY, null);
+        phone.registerForOnHoldTone(mHandler, MSG_ON_HOLD_TONE, null);
+        phone.registerForInCallVoicePrivacyOn(mHandler, MSG_CDMA_VOICE_PRIVACY_ON, null);
+        phone.registerForInCallVoicePrivacyOff(mHandler, MSG_CDMA_VOICE_PRIVACY_OFF, null);
+        mPhoneForEvents = phone;
+    }
+
     void setOriginalConnection(com.android.internal.telephony.Connection originalConnection) {
-        Log.v(this, "new TelephonyConnection, originalConnection: " + originalConnection);
+        Log.i(this, "setOriginalConnection: TelephonyConnection, originalConnection: "
+                + originalConnection);
         if (mOriginalConnection != null && originalConnection != null
                && !originalConnection.isIncoming()
                && originalConnection.getOrigDialString() == null
@@ -1419,17 +1574,8 @@
         mOriginalConnectionExtras.clear();
         mOriginalConnection = originalConnection;
         mOriginalConnection.setTelecomCallId(getTelecomCallId());
-        getPhone().registerForPreciseCallStateChanged(
-                mHandler, MSG_PRECISE_CALL_STATE_CHANGED, null);
-        getPhone().registerForHandoverStateChanged(
-                mHandler, MSG_HANDOVER_STATE_CHANGED, null);
-        getPhone().registerForRedialConnectionChanged(
-                mHandler, MSG_REDIAL_CONNECTION_CHANGED, null);
-        getPhone().registerForRingbackTone(mHandler, MSG_RINGBACK_TONE, null);
-        getPhone().registerForSuppServiceNotification(mHandler, MSG_SUPP_SERVICE_NOTIFY, null);
-        getPhone().registerForOnHoldTone(mHandler, MSG_ON_HOLD_TONE, null);
-        getPhone().registerForInCallVoicePrivacyOn(mHandler, MSG_CDMA_VOICE_PRIVACY_ON, null);
-        getPhone().registerForInCallVoicePrivacyOff(mHandler, MSG_CDMA_VOICE_PRIVACY_OFF, null);
+        registerForCallEvents(getPhone());
+
         mOriginalConnection.addPostDialListener(mPostDialListener);
         mOriginalConnection.addListener(mOriginalConnectionListener);
 
@@ -1469,6 +1615,12 @@
         mIsMultiParty = mOriginalConnection.isMultiparty();
 
         Bundle extrasToPut = new Bundle();
+        // Also stash the number verification status in a hidden extra key in the connection.
+        // We do this because a RemoteConnection DOES NOT include a getNumberVerificationStatus
+        // method and we need to be able to pass the number verification status up to Telecom
+        // despite the missing pathway in the RemoteConnectionService API surface.
+        extrasToPut.putInt(Connection.EXTRA_CALLER_NUMBER_VERIFICATION_STATUS,
+                mOriginalConnection.getNumberVerificationStatus());
         List<String> extrasToRemove = new ArrayList<>();
         if (mOriginalConnection.isActiveCallDisconnectedOnAnswer()) {
             extrasToPut.putBoolean(Connection.EXTRA_ANSWERING_DROPS_FG_CALL, true);
@@ -1587,7 +1739,7 @@
                 Connection.AUDIO_CODEC_NONE);
         if (newCodecType != oldCodecType) {
             newExtras.putInt(Connection.EXTRA_AUDIO_CODEC, newCodecType);
-            Log.i(this, "put audio codec:" + newCodecType);
+            Log.i(this, "refreshCodec: codec changed; old=%d, new=%d", oldCodecType, newCodecType);
             changed = true;
         }
         if (isImsConnection()) {
@@ -1595,7 +1747,8 @@
             float oldBitrate = newExtras.getFloat(Connection.EXTRA_AUDIO_CODEC_BITRATE_KBPS, 0.0f);
             if (Math.abs(newBitrate - oldBitrate) > THRESHOLD) {
                 newExtras.putFloat(Connection.EXTRA_AUDIO_CODEC_BITRATE_KBPS, newBitrate);
-                Log.i(this, "put audio bitrate:" + newBitrate);
+                Log.i(this, "refreshCodec: bitrate changed; old=%f, new=%f", oldBitrate,
+                        newBitrate);
                 changed = true;
             }
 
@@ -1604,7 +1757,8 @@
                     0.0f);
             if (Math.abs(newBandwidth - oldBandwidth) > THRESHOLD) {
                 newExtras.putFloat(Connection.EXTRA_AUDIO_CODEC_BANDWIDTH_KHZ, newBandwidth);
-                Log.i(this, "put audio bandwidth:" + newBandwidth);
+                Log.i(this, "refreshCodec: bandwidth changed; old=%f, new=%f", oldBandwidth,
+                        newBandwidth);
                 changed = true;
             }
         } else {
@@ -1615,7 +1769,7 @@
         }
 
         if (changed) {
-            Log.i(this, "Audio attribute, Codec:"
+            Log.i(this, "refreshCodec: Codec:"
                     + newExtras.getInt(Connection.EXTRA_AUDIO_CODEC, Connection.AUDIO_CODEC_NONE)
                     + ", Bitrate:"
                     + newExtras.getFloat(Connection.EXTRA_AUDIO_CODEC_BITRATE_KBPS, 0.0f)
@@ -1833,8 +1987,12 @@
           *     - not indicated, then the add participant capability is same as before.
           */
         if (isCapable && (mOriginalConnection != null) && !mIsMultiParty) {
-            isCapable = mOriginalConnectionExtras.getBoolean(
+            // In case OEMs are still using deprecated value, read it and use it as default value.
+            boolean isCapableFromDeprecatedExtra = mOriginalConnectionExtras.getBoolean(
                     ImsCallProfile.EXTRA_CONFERENCE_AVAIL, isCapable);
+            isCapable = mOriginalConnectionExtras.getBoolean(
+                    ImsCallProfile.EXTRA_EXTENDING_TO_CONFERENCE_SUPPORTED,
+                    isCapableFromDeprecatedExtra);
         }
         return isCapable;
     }
@@ -1948,28 +2106,43 @@
     }
 
     /**
+     * Sets whether to treat this call as an emergency call or not.
+     * @param shouldTreatAsEmergencyCall
+     */
+    @VisibleForTesting
+    public void setShouldTreatAsEmergencyCall(boolean shouldTreatAsEmergencyCall) {
+        mTreatAsEmergencyCall = shouldTreatAsEmergencyCall;
+    }
+
+    /**
      * Un-sets the underlying radio connection.
      */
     void clearOriginalConnection() {
         if (mOriginalConnection != null) {
-            if (getPhone() != null) {
-                getPhone().unregisterForPreciseCallStateChanged(mHandler);
-                getPhone().unregisterForRingbackTone(mHandler);
-                getPhone().unregisterForHandoverStateChanged(mHandler);
-                getPhone().unregisterForRedialConnectionChanged(mHandler);
-                getPhone().unregisterForDisconnect(mHandler);
-                getPhone().unregisterForSuppServiceNotification(mHandler);
-                getPhone().unregisterForOnHoldTone(mHandler);
-                getPhone().unregisterForInCallVoicePrivacyOn(mHandler);
-                getPhone().unregisterForInCallVoicePrivacyOff(mHandler);
-            }
+            Log.i(this, "clearOriginalConnection; clearing=%s", mOriginalConnection);
+            unregisterForCallEvents();
             mOriginalConnection.removePostDialListener(mPostDialListener);
             mOriginalConnection.removeListener(mOriginalConnectionListener);
             mOriginalConnection = null;
         }
     }
 
-    protected void hangup(int telephonyDisconnectCode) {
+    public void unregisterForCallEvents() {
+        if (mPhoneForEvents == null) return;
+        mPhoneForEvents.unregisterForPreciseCallStateChanged(mHandler);
+        mPhoneForEvents.unregisterForRingbackTone(mHandler);
+        mPhoneForEvents.unregisterForHandoverStateChanged(mHandler);
+        mPhoneForEvents.unregisterForRedialConnectionChanged(mHandler);
+        mPhoneForEvents.unregisterForDisconnect(mHandler);
+        mPhoneForEvents.unregisterForSuppServiceNotification(mHandler);
+        mPhoneForEvents.unregisterForOnHoldTone(mHandler);
+        mPhoneForEvents.unregisterForInCallVoicePrivacyOn(mHandler);
+        mPhoneForEvents.unregisterForInCallVoicePrivacyOff(mHandler);
+        mPhoneForEvents = null;
+    }
+
+    @VisibleForTesting
+    public void hangup(int telephonyDisconnectCode) {
         if (mOriginalConnection != null) {
             mHangupDisconnectCause = telephonyDisconnectCode;
             try {
@@ -2166,7 +2339,9 @@
                     // If extras contain Conference support information,
                     // then ensure capabilities are updated.
                     if (mOriginalConnectionExtras.containsKey(
-                            ImsCallProfile.EXTRA_CONFERENCE_AVAIL)) {
+                            ImsCallProfile.EXTRA_EXTENDING_TO_CONFERENCE_SUPPORTED)
+                            || mOriginalConnectionExtras.containsKey(
+                                ImsCallProfile.EXTRA_CONFERENCE_AVAIL)) {
                         updateConnectionCapabilities();
                     }
                 } else {
@@ -2277,12 +2452,18 @@
                                     + " -> " + mHangupDisconnectCause);
                             disconnectCause = mHangupDisconnectCause;
                         }
+                        ImsReasonInfo imsReasonInfo = null;
+                        if (isImsConnection()) {
+                            ImsPhoneConnection imsPhoneConnection =
+                                    (ImsPhoneConnection) mOriginalConnection;
+                            imsReasonInfo = imsPhoneConnection.getImsReasonInfo();
+                        }
                         setTelephonyConnectionDisconnected(
                                 DisconnectCauseUtil.toTelecomDisconnectCause(
                                         disconnectCause,
                                         preciseDisconnectCause,
                                         mOriginalConnection.getVendorDisconnectCause(),
-                                        getPhone().getPhoneId()));
+                                        getPhone().getPhoneId(), imsReasonInfo));
                         close();
                     }
                     break;
@@ -2291,7 +2472,7 @@
             }
 
             if (mCommunicator != null) {
-                mCommunicator.onStateChanged(this, getState());
+                mCommunicator.onStateChanged(getTelecomCallId(), getState());
             }
         }
     }
@@ -2430,6 +2611,16 @@
     }
 
     /**
+     * Determines if the current connection is cross sim calling
+     */
+    private boolean isCrossSimCall() {
+        return mOriginalConnection != null
+                && mOriginalConnection.getPhoneType() == PhoneConstants.PHONE_TYPE_IMS
+                && mOriginalConnection instanceof ImsPhoneConnection
+                && ((ImsPhoneConnection) mOriginalConnection).isCrossSimCall();
+    }
+
+    /**
      * Determines if the current connection is pullable.
      *
      * A connection is deemed to be pullable if the original connection capabilities state that it
@@ -2671,8 +2862,10 @@
      */
     protected boolean isImsConnection() {
         com.android.internal.telephony.Connection originalConnection = getOriginalConnection();
-        return originalConnection != null &&
-                originalConnection.getPhoneType() == PhoneConstants.PHONE_TYPE_IMS;
+
+        return originalConnection != null
+                && originalConnection.getPhoneType() == PhoneConstants.PHONE_TYPE_IMS
+                && originalConnection instanceof ImsPhoneConnection;
     }
 
     /**
@@ -2737,7 +2930,7 @@
     }
 
     private void updateStatusHints() {
-        if (isWifi() && getPhone() != null) {
+        if (isWifi() && !isCrossSimCall() && getPhone() != null) {
             int labelId = isValidRingingCall()
                     ? R.string.status_hint_label_incoming_wifi_call
                     : R.string.status_hint_label_wifi_call;
@@ -2850,8 +3043,8 @@
         PhoneAccountHandle phoneAccountHandle = isIms ? PhoneUtils
                 .makePstnPhoneAccountHandle(phone.getDefaultPhone())
                 : PhoneUtils.makePstnPhoneAccountHandle(phone);
-        TelecomAccountRegistry telecomAccountRegistry = TelecomAccountRegistry
-                .getInstance(getPhone().getContext());
+        TelecomAccountRegistry telecomAccountRegistry = getTelecomAccountRegistry(
+                getPhone().getContext());
         boolean isConferencingSupported = telecomAccountRegistry
                 .isMergeCallSupported(phoneAccountHandle);
         boolean isImsConferencingSupported = telecomAccountRegistry
@@ -2860,6 +3053,19 @@
                 .isVideoConferencingSupported(phoneAccountHandle);
         boolean isMergeOfWifiCallsAllowedWhenVoWifiOff = telecomAccountRegistry
                 .isMergeOfWifiCallsAllowedWhenVoWifiOff(phoneAccountHandle);
+        ImsCall imsCall = isImsConnection()
+                ? ((ImsPhoneConnection) getOriginalConnection()).getImsCall()
+                : null;
+        CarrierConfigManager configManager = (CarrierConfigManager) phone.getContext()
+                .getSystemService(Context.CARRIER_CONFIG_SERVICE);
+        boolean downGradedVideoCall = false;
+        if (configManager != null) {
+            PersistableBundle config = configManager.getConfigForSubId(phone.getSubId());
+            if (config != null) {
+                downGradedVideoCall = config.getBoolean(
+                        CarrierConfigManager.KEY_TREAT_DOWNGRADED_VIDEO_CALLS_AS_VIDEO_CALLS_BOOL);
+            }
+        }
 
         Log.v(this, "refreshConferenceSupported : isConfSupp=%b, isImsConfSupp=%b, " +
                 "isVidConfSupp=%b, isMergeOfWifiAllowed=%b, " +
@@ -2880,6 +3086,12 @@
         } else if (isVideoCall && !mIsCarrierVideoConferencingSupported) {
             isConferenceSupported = false;
             Log.d(this, "refreshConferenceSupported = false; video conf not supported.");
+        } else if ((imsCall != null) && (imsCall.wasVideoCall() && downGradedVideoCall)
+                && !mIsCarrierVideoConferencingSupported) {
+            isConferenceSupported = false;
+            Log.d(this,
+                    "refreshConferenceSupported = false;"
+                            + " video conf not supported for downgraded audio call.");
         } else if (!isMergeOfWifiCallsAllowedWhenVoWifiOff && isWifi() && !isVoWifiEnabled) {
             isConferenceSupported = false;
             Log.d(this,
@@ -3047,7 +3259,7 @@
     }
 
     /**
-     * Set this {@link TelephonyConnection} to a held state.
+     * Set this {@link TelephonyConnection} to a disconnected state.
      * <p>
      * Note: This should be used instead of
      * {@link #setDisconnected(android.telecom.DisconnectCause)} to ensure listeners are notified.
@@ -3197,55 +3409,87 @@
     private void maybeConfigureDeviceToDeviceCommunication() {
         if (!getPhone().getContext().getResources().getBoolean(
                 R.bool.config_use_device_to_device_communication)) {
-            Log.d(this, "maybeConfigureDeviceToDeviceCommunication: not using D2D.");
+            Log.i(this, "maybeConfigureDeviceToDeviceCommunication: not using D2D.");
+            notifyD2DAvailabilityChanged(false);
             return;
         }
         if (!isImsConnection()) {
-            Log.d(this, "maybeConfigureDeviceToDeviceCommunication: not an IMS connection.");
+            Log.i(this, "maybeConfigureDeviceToDeviceCommunication: not an IMS connection.");
+            if (mCommunicator != null) {
+                mCommunicator = null;
+            }
+            notifyD2DAvailabilityChanged(false);
             return;
         }
-        // Implement abstracted out RTP functionality the RTP transport depends on.
-        RtpAdapter rtpAdapter = new RtpAdapter() {
-            @Override
-            public Set<RtpHeaderExtensionType> getAcceptedRtpHeaderExtensions() {
-                if (!isImsConnection()) {
-                    return Collections.EMPTY_SET;
+        if (mTreatAsEmergencyCall || mIsNetworkIdentifiedEmergencyCall) {
+            Log.i(this, "maybeConfigureDeviceToDeviceCommunication: emergency call; no D2D");
+            notifyD2DAvailabilityChanged(false);
+            return;
+        }
+
+        ArrayList<TransportProtocol> supportedTransports = new ArrayList<>(2);
+
+        if (supportsD2DUsingRtp()) {
+            Log.i(this, "maybeConfigureDeviceToDeviceCommunication: carrier supports RTP.");
+            // Implement abstracted out RTP functionality the RTP transport depends on.
+            RtpAdapter rtpAdapter = new RtpAdapter() {
+                @Override
+                public Set<RtpHeaderExtensionType> getAcceptedRtpHeaderExtensions() {
+                    ImsPhoneConnection originalConnection =
+                            (ImsPhoneConnection) mOriginalConnection;
+                    return originalConnection.getAcceptedRtpHeaderExtensions();
                 }
+
+                @Override
+                public void sendRtpHeaderExtensions(
+                        @NonNull Set<RtpHeaderExtension> rtpHeaderExtensions) {
+                    Log.i(TelephonyConnection.this, "sendRtpHeaderExtensions: sending: %s",
+                            rtpHeaderExtensions.stream()
+                                    .map(r -> r.toString())
+                                    .collect(Collectors.joining(",")));
+                    ImsPhoneConnection originalConnection =
+                            (ImsPhoneConnection) mOriginalConnection;
+                    originalConnection.sendRtpHeaderExtensions(rtpHeaderExtensions);
+                }
+            };
+            mRtpTransport = new RtpTransport(rtpAdapter, null /* TODO: not needed yet */, mHandler,
+                    supportsSdpNegotiationOfRtpHeaderExtensions());
+            supportedTransports.add(mRtpTransport);
+        }
+        if (supportsD2DUsingDtmf()) {
+            Log.i(this, "maybeConfigureDeviceToDeviceCommunication: carrier supports DTMF.");
+            DtmfAdapter dtmfAdapter = digit -> {
+                Log.i(TelephonyConnection.this, "sendDtmf: send digit %c", digit);
                 ImsPhoneConnection originalConnection =
                         (ImsPhoneConnection) mOriginalConnection;
-                return originalConnection.getAcceptedRtpHeaderExtensions();
-            }
+                Message dtmfComplete = mHandler.obtainMessage(MSG_DTMF_DONE);
+                dtmfComplete.replyTo = mHandlerMessenger;
+                originalConnection.getImsCall().sendDtmf(digit, dtmfComplete);
+            };
+            ContentResolver cr = getPhone().getContext().getContentResolver();
+            mDtmfTransport = new DtmfTransport(dtmfAdapter, new Timeouts.Adapter(cr),
+                    Executors.newSingleThreadScheduledExecutor());
+            supportedTransports.add(mDtmfTransport);
+        }
+        if (supportedTransports.size() > 0) {
+            mCommunicator = new Communicator(supportedTransports, this);
+            mD2DCallStateAdapter = new D2DCallStateAdapter(mCommunicator);
+            addTelephonyConnectionListener(mD2DCallStateAdapter);
+        } else {
+            Log.i(this, "maybeConfigureDeviceToDeviceCommunication: no transports; disabled.");
+            notifyD2DAvailabilityChanged(false);
+        }
+    }
 
-            @Override
-            public void sendRtpHeaderExtensions(
-                    @NonNull Set<RtpHeaderExtension> rtpHeaderExtensions) {
-                if (!isImsConnection()) {
-                    Log.w(TelephonyConnection.this, "sendRtpHeaderExtensions: not an ims conn.");
-                }
-                Log.d(TelephonyConnection.this, "sendRtpHeaderExtensions: sending %d messages",
-                        rtpHeaderExtensions.size());
-                ImsPhoneConnection originalConnection =
-                        (ImsPhoneConnection) mOriginalConnection;
-                originalConnection.sendRtpHeaderExtensions(rtpHeaderExtensions);
-            }
-        };
-        mRtpTransport = new RtpTransport(rtpAdapter, null /* TODO: not needed yet */, mHandler);
-
-        DtmfAdapter dtmfAdapter = digit -> {
-            if (!isImsConnection()) {
-                Log.w(TelephonyConnection.this, "sendDtmf: not an ims conn.");
-            }
-            Log.d(TelephonyConnection.this, "sendDtmf: send digit %c", digit);
-            ImsPhoneConnection originalConnection =
-                    (ImsPhoneConnection) mOriginalConnection;
-            originalConnection.getImsCall().sendDtmf(digit, null /* result msg not needed */);
-        };
-        ContentResolver cr = getPhone().getContext().getContentResolver();
-        mDtmfTransport = new DtmfTransport(dtmfAdapter, new Timeouts.Adapter(cr),
-                Executors.newSingleThreadScheduledExecutor());
-        mCommunicator = new Communicator(List.of(mRtpTransport, mDtmfTransport), this);
-        mD2DCallStateAdapter = new D2DCallStateAdapter(mCommunicator);
-        addTelephonyConnectionListener(mD2DCallStateAdapter);
+    /**
+     * Notifies upper layers of the availability of D2D communication.
+     * @param isAvailable {@code true} if D2D is available, {@code false} otherwise.
+     */
+    private void notifyD2DAvailabilityChanged(boolean isAvailable) {
+        Bundle extras = new Bundle();
+        extras.putBoolean(Connection.EXTRA_IS_DEVICE_TO_DEVICE_COMMUNICATION_AVAILABLE,
+                isAvailable);
+        putTelephonyExtras(extras);
     }
 
     /**
@@ -3266,14 +3510,57 @@
         // Send connection events up to Telecom so that we can relay the messages to a valid
         // CallDiagnosticService which is bound.
         for (Communicator.Message msg : messages) {
+            Integer dcMsgType = MessageTypeAndValueHelper.MSG_TYPE_TO_DC_MSG_TYPE.getValue(
+                    msg.getType());
+            if (dcMsgType == null) {
+                // Invalid msg type, skip.
+                continue;
+            }
+
+            Integer dcMsgValue;
+            switch (msg.getType()) {
+                case CallDiagnostics.MESSAGE_CALL_AUDIO_CODEC:
+                    dcMsgValue = MessageTypeAndValueHelper.CODEC_TO_DC_CODEC.getValue(
+                            msg.getValue());
+                    break;
+                case CallDiagnostics.MESSAGE_CALL_NETWORK_TYPE:
+                    dcMsgValue = MessageTypeAndValueHelper.RAT_TYPE_TO_DC_NETWORK_TYPE.getValue(
+                            msg.getValue());
+                    break;
+                case CallDiagnostics.MESSAGE_DEVICE_BATTERY_STATE:
+                    dcMsgValue = MessageTypeAndValueHelper.BATTERY_STATE_TO_DC_BATTERY_STATE
+                            .getValue(msg.getValue());
+                    break;
+                case CallDiagnostics.MESSAGE_DEVICE_NETWORK_COVERAGE:
+                    dcMsgValue = MessageTypeAndValueHelper.COVERAGE_TO_DC_COVERAGE
+                            .getValue(msg.getValue());
+                    break;
+                default:
+                    Log.w(this, "onMessagesReceived: msg=%d - invalid msg", msg.getValue());
+                    continue;
+            }
+            if (dcMsgValue == null) {
+                Log.w(this, "onMessagesReceived: msg=%d/%d - invalid msg value", msg.getType(),
+                        msg.getValue());
+                continue;
+            }
             Bundle extras = new Bundle();
-            extras.putInt(Connection.EXTRA_DEVICE_TO_DEVICE_MESSAGE_TYPE, msg.getType());
-            extras.putInt(Connection.EXTRA_DEVICE_TO_DEVICE_MESSAGE_VALUE, msg.getValue());
+            extras.putInt(Connection.EXTRA_DEVICE_TO_DEVICE_MESSAGE_TYPE, dcMsgType);
+            extras.putInt(Connection.EXTRA_DEVICE_TO_DEVICE_MESSAGE_VALUE, dcMsgValue);
             sendConnectionEvent(Connection.EVENT_DEVICE_TO_DEVICE_MESSAGE, extras);
         }
     }
 
     /**
+     * Handles report from {@link Communicator} when the availability of D2D changes.
+     * @param isAvailable {@code true} if D2D is available, {@code false} if unavailable.
+     */
+    @Override
+    public void onD2DAvailabilitychanged(boolean isAvailable) {
+        notifyD2DAvailabilityChanged(isAvailable);
+    }
+
+    /**
      * Called by a {@link ConnectionService} to notify Telecom that a {@link Conference#onMerge()}
      * operation has started.
      */
@@ -3445,4 +3732,86 @@
         return PhoneNumberUtils.stripSeparators(
                 PhoneNumberUtils.formatNumber(number, JAPAN_ISO_COUNTRY_CODE));
     }
+
+    public TelecomAccountRegistry getTelecomAccountRegistry(Context context) {
+        return TelecomAccountRegistry.getInstance(context);
+    }
+
+    /**
+     * @return {@code true} if the carrier supports D2D using RTP header extensions, {@code false}
+     * otherwise.
+     */
+    private boolean supportsD2DUsingRtp() {
+        PersistableBundle b = getCarrierConfig();
+        return b != null && b.getBoolean(
+                CarrierConfigManager.KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_RTP_BOOL);
+    }
+
+    /**
+     * @return {@code true} if the carrier supports D2D using DTMF digits, {@code false} otherwise.
+     */
+    private boolean supportsD2DUsingDtmf() {
+        PersistableBundle b = getCarrierConfig();
+        return b != null && b.getBoolean(
+                CarrierConfigManager.KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_DTMF_BOOL);
+    }
+
+    /**
+     * @return {@code true} if the carrier supports using SDP negotiation for the RTP header
+     * extensions used in D2D comms, {@code false} otherwise.
+     */
+    private boolean supportsSdpNegotiationOfRtpHeaderExtensions() {
+        PersistableBundle b = getCarrierConfig();
+        return b != null && b.getBoolean(
+                CarrierConfigManager
+                        .KEY_SUPPORTS_SDP_NEGOTIATION_OF_D2D_RTP_HEADER_EXTENSIONS_BOOL);
+    }
+
+    /**
+     * Handles a device to device message which a {@link CallDiagnostics} wishes to send.
+     * @param extras the call event extras bundle.
+     */
+    private void handleOutgoingDeviceToDeviceMessage(Bundle extras) {
+        int messageType = extras.getInt(Connection.EXTRA_DEVICE_TO_DEVICE_MESSAGE_TYPE);
+        int messageValue = extras.getInt(Connection.EXTRA_DEVICE_TO_DEVICE_MESSAGE_VALUE);
+
+        Integer internalMessageValue;
+        switch (messageType) {
+            case CallDiagnostics.MESSAGE_CALL_AUDIO_CODEC:
+                internalMessageValue = MessageTypeAndValueHelper.CODEC_TO_DC_CODEC.getKey(
+                        messageValue);
+                break;
+            case CallDiagnostics.MESSAGE_CALL_NETWORK_TYPE:
+                internalMessageValue = MessageTypeAndValueHelper.RAT_TYPE_TO_DC_NETWORK_TYPE.getKey(
+                        messageValue);
+                break;
+            case CallDiagnostics.MESSAGE_DEVICE_BATTERY_STATE:
+                internalMessageValue = MessageTypeAndValueHelper.BATTERY_STATE_TO_DC_BATTERY_STATE
+                        .getKey(messageValue);
+                break;
+            case CallDiagnostics.MESSAGE_DEVICE_NETWORK_COVERAGE:
+                internalMessageValue = MessageTypeAndValueHelper.COVERAGE_TO_DC_COVERAGE
+                        .getKey(messageValue);
+                break;
+            default:
+                Log.w(this, "handleOutgoingDeviceToDeviceMessage: msg=%d - invalid msg",
+                        messageType);
+                return;
+        }
+        Integer internalMessageType = MessageTypeAndValueHelper.MSG_TYPE_TO_DC_MSG_TYPE.getKey(
+                messageType);
+        if (internalMessageValue == null) {
+            Log.w(this, "handleOutgoingDeviceToDeviceMessage: msg=%d/%d - invalid value",
+                    messageType, messageValue);
+            return;
+        }
+
+        if (mCommunicator != null) {
+            Log.w(this, "handleOutgoingDeviceToDeviceMessage: msg=%d/%d - sending",
+                    internalMessageType, internalMessageValue);
+            Set<Communicator.Message> set = new ArraySet<>();
+            set.add(new Communicator.Message(internalMessageType, internalMessageValue));
+            mCommunicator.sendMessages(set);
+        }
+    }
 }
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index d2b0c50..7a0d8c2 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -28,9 +28,7 @@
 import android.content.IntentFilter;
 import android.net.Uri;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Looper;
+import android.os.ParcelUuid;
 import android.telecom.Conference;
 import android.telecom.Connection;
 import android.telecom.ConnectionRequest;
@@ -70,6 +68,7 @@
 import com.android.phone.MMIDialogActivity;
 import com.android.phone.PhoneUtils;
 import com.android.phone.R;
+import com.android.phone.callcomposer.CallComposerPictureManager;
 import com.android.phone.settings.SuppServicesUiUtil;
 
 import java.lang.ref.WeakReference;
@@ -82,9 +81,10 @@
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Queue;
 import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
+import java.util.function.Consumer;
 import java.util.regex.Pattern;
 
 import javax.annotation.Nullable;
@@ -93,7 +93,7 @@
  * Service for making GSM and CDMA connections.
  */
 public class TelephonyConnectionService extends ConnectionService {
-
+    private static final String LOG_TAG = TelephonyConnectionService.class.getSimpleName();
     // Timeout before we continue with the emergency call without waiting for DDS switch response
     // from the modem.
     private static final int DEFAULT_DATA_SWITCH_TIMEOUT_MS = 1000;
@@ -173,8 +173,6 @@
     // destroyed.
     @VisibleForTesting
     public Pair<WeakReference<TelephonyConnection>, Queue<Phone>> mEmergencyRetryCache;
-    private Handler mDdsSwitchHandler;
-    private HandlerThread mHandlerThread;
     private DeviceState mDeviceState = new DeviceState();
 
     /**
@@ -361,27 +359,6 @@
     };
 
     /**
-     * Factory for Handler creation in order to remove flakiness during t esting.
-     */
-    @VisibleForTesting
-    public interface HandlerFactory {
-        HandlerThread createHandlerThread(String name);
-        Handler createHandler(Looper looper);
-    }
-
-    private HandlerFactory mHandlerFactory = new HandlerFactory() {
-        @Override
-        public HandlerThread createHandlerThread(String name) {
-            return new HandlerThread(name);
-        }
-
-        @Override
-        public Handler createHandler(Looper looper) {
-            return new Handler(looper);
-        }
-    };
-
-    /**
      * DisconnectCause depends on PhoneGlobals in order to get a system context. Mock out
      * dependency for testing.
      */
@@ -472,14 +449,6 @@
     }
 
     /**
-     * Override Handler creation factory for testing.
-     */
-    @VisibleForTesting
-    public void setHandlerFactory(HandlerFactory handlerFactory) {
-        mHandlerFactory = handlerFactory;
-    }
-
-    /**
      * Override DisconnectCause creation for testing.
      */
     @VisibleForTesting
@@ -530,16 +499,11 @@
         IntentFilter intentFilter = new IntentFilter(
                 TelecomManager.ACTION_TTY_PREFERRED_MODE_CHANGED);
         registerReceiver(mTtyBroadcastReceiver, intentFilter);
-        mHandlerThread = mHandlerFactory.createHandlerThread("DdsSwitchHandlerThread");
-        mHandlerThread.start();
-        Looper looper = mHandlerThread.getLooper();
-        mDdsSwitchHandler = mHandlerFactory.createHandler(looper);
     }
 
     @Override
     public boolean onUnbind(Intent intent) {
         unregisterReceiver(mTtyBroadcastReceiver);
-        mHandlerThread.quitSafely();
         return super.onUnbind(intent);
     }
 
@@ -873,14 +837,9 @@
             } else {
                 final Connection resultConnection = getTelephonyConnection(request, numberToDial,
                         true, handle, phone);
-                mDdsSwitchHandler.post(new Runnable() {
-                    @Override
-                    public void run() {
-                        boolean result = delayDialForDdsSwitch(phone);
-                        Log.i(this,
-                                "onCreateOutgoingConn - delayDialForDdsSwitch result = " + result);
+                delayDialForDdsSwitch(phone, (result) -> {
+                    Log.i(this, "onCreateOutgoingConn - delayDialForDdsSwitch result = " + result);
                         placeOutgoingConnection(request, resultConnection, phone);
-                    }
                 });
                 return resultConnection;
             }
@@ -962,18 +921,14 @@
                 adjustAndPlaceOutgoingConnection(phone, originalConnection, request, numberToDial,
                         handle, originalPhoneType, false);
             } else {
-                mDdsSwitchHandler.post(new Runnable() {
-                    @Override
-                    public void run() {
-                        boolean result = delayDialForDdsSwitch(phone);
-                        Log.i(this, "handleOnComplete - delayDialForDdsSwitch result = " + result);
-                        adjustAndPlaceOutgoingConnection(phone, originalConnection, request,
-                                numberToDial, handle, originalPhoneType, true);
-                        mIsEmergencyCallPending = false;
-                    }
+                delayDialForDdsSwitch(phone, result -> {
+                    Log.i(this, "handleOnComplete - delayDialForDdsSwitch "
+                            + "result = " + result);
+                    adjustAndPlaceOutgoingConnection(phone, originalConnection, request,
+                            numberToDial, handle, originalPhoneType, true);
+                    mIsEmergencyCallPending = false;
                 });
             }
-
         } else {
             Log.w(this, "onCreateOutgoingConnection, failed to turn on radio");
             closeOrDestroyConnection(originalConnection,
@@ -1256,10 +1211,15 @@
                 createConnectionFor(phone, originalConnection, false /* isOutgoing */,
                         request.getAccountHandle(), request.getTelecomCallId(),
                         request.isAdhocConferenceCall());
+
         handleIncomingRtt(request, originalConnection);
         if (connection == null) {
             return Connection.createCanceledConnection();
         } else {
+            // Add extra to call if answering this incoming call would cause an in progress call on
+            // another subscription to be disconnected.
+            maybeIndicateAnsweringWillDisconnect(connection, request.getAccountHandle());
+
             connection.setTtyEnabled(mDeviceState.isTtyModeEnabled(getApplicationContext()));
             return connection;
         }
@@ -1710,7 +1670,23 @@
             return;
         }
 
-        com.android.internal.telephony.Connection originalConnection = null;
+        if (extras != null && extras.containsKey(TelecomManager.EXTRA_OUTGOING_PICTURE)) {
+            ParcelUuid uuid = extras.getParcelable(TelecomManager.EXTRA_OUTGOING_PICTURE);
+            CallComposerPictureManager.getInstance(phone.getContext(), phone.getSubId())
+                    .storeUploadedPictureToCallLog(uuid.getUuid(), (uri) -> {
+                        if (uri != null) {
+                            try {
+                                Bundle b = new Bundle();
+                                b.putParcelable(TelecomManager.EXTRA_PICTURE_URI, uri);
+                                connection.putTelephonyExtras(b);
+                            } catch (Exception e) {
+                                Log.e(this, e, "Couldn't set picture extra on outgoing call");
+                            }
+                        }
+                    });
+        }
+
+        final com.android.internal.telephony.Connection originalConnection;
         try {
             if (phone != null) {
                 EmergencyNumber emergencyNumber =
@@ -1756,10 +1732,16 @@
                         .setVideoState(videoState)
                         .setIntentExtras(extras)
                         .setRttTextStream(connection.getRttTextStream())
-                        .build());
+                        .build(),
+                        // We need to wait until the phone has been chosen in GsmCdmaPhone to
+                        // register for the associated TelephonyConnection call event listeners.
+                        connection::registerForCallEvents);
+            } else {
+                originalConnection = null;
             }
         } catch (CallStateException e) {
             Log.e(this, e, "placeOutgoingConnection, phone.dial exception: " + e);
+            connection.unregisterForCallEvents();
             handleCallStateException(e, connection, phone);
             return;
         }
@@ -1787,7 +1769,17 @@
                             "Connection is null", phone.getPhoneId()));
             connection.close();
         } else {
-            connection.setOriginalConnection(originalConnection);
+            if (!getMainThreadHandler().getLooper().isCurrentThread()) {
+                Log.w(this, "placeOriginalConnection - Unexpected, this call "
+                        + "should always be on the main thread.");
+                getMainThreadHandler().post(() -> {
+                    if (connection.getOriginalConnection() == null) {
+                        connection.setOriginalConnection(originalConnection);
+                    }
+                });
+            } else {
+                connection.setOriginalConnection(originalConnection);
+            }
         }
     }
 
@@ -1945,18 +1937,32 @@
     /**
      * If needed, block until the the default data is is switched for outgoing emergency call, or
      * timeout expires.
+     * @param phone The Phone to switch the DDS on.
+     * @param completeConsumer The consumer to call once the default data subscription has been
+     *                         switched, provides {@code true} result if the switch happened
+     *                         successfully or {@code false} if the operation timed out/failed.
      */
-    private boolean delayDialForDdsSwitch(Phone phone) {
+    private void delayDialForDdsSwitch(Phone phone, Consumer<Boolean> completeConsumer) {
         if (phone == null) {
-            return true;
+            // Do not block indefinitely.
+            completeConsumer.accept(false);
         }
         try {
-            return possiblyOverrideDefaultDataForEmergencyCall(phone).get(
-                    DEFAULT_DATA_SWITCH_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+            // Waiting for PhoneSwitcher to complete the operation.
+            CompletableFuture<Boolean> future = possiblyOverrideDefaultDataForEmergencyCall(phone);
+            // In the case that there is an issue or bug in PhoneSwitcher logic, do not wait
+            // indefinitely for the future to complete. Instead, set a timeout that will complete
+            // the future as to not block the outgoing call indefinitely.
+            CompletableFuture<Boolean> timeout = new CompletableFuture<>();
+            phone.getContext().getMainThreadHandler().postDelayed(
+                    () -> timeout.complete(false), DEFAULT_DATA_SWITCH_TIMEOUT_MS);
+            // Also ensure that the Consumer is completed on the main thread.
+            future.acceptEitherAsync(timeout, completeConsumer,
+                    phone.getContext().getMainExecutor());
         } catch (Exception e) {
             Log.w(this, "delayDialForDdsSwitch - exception= "
                     + e.getMessage());
-            return false;
+
         }
     }
 
@@ -2506,18 +2512,42 @@
        getAllConnections().stream()
                .filter(f -> f instanceof TelephonyConnection)
                .forEach(t -> {
-                        TelephonyConnection tc = (TelephonyConnection) t;
-                        Communicator c = tc.getCommunicator();
-                        if (c == null) {
-                            Log.w(this, "sendTestDeviceToDeviceMessage: D2D not enabled");
-                            return;
-                        }
+                   TelephonyConnection tc = (TelephonyConnection) t;
+                   if (!tc.isImsConnection()) {
+                       Log.w(this, "sendTestDeviceToDeviceMessage: not an IMS connection");
+                       return;
+                   }
+                   Communicator c = tc.getCommunicator();
+                   if (c == null) {
+                       Log.w(this, "sendTestDeviceToDeviceMessage: D2D not enabled");
+                       return;
+                   }
 
-                        c.sendMessages(new HashSet<Communicator.Message>() {{
-                            add(new Communicator.Message(message, value));
-                        }});
+                   c.sendMessages(new HashSet<Communicator.Message>() {{
+                       add(new Communicator.Message(message, value));
+                   }});
 
-       });
+               });
+    }
+
+    /**
+     * Overrides the current D2D transport, forcing the specified one to be active.  Used for test.
+     * @param transport The class simple name of the transport to make active.
+     */
+    public void setActiveDeviceToDeviceTransport(@NonNull String transport) {
+        getAllConnections().stream()
+                .filter(f -> f instanceof TelephonyConnection)
+                .forEach(t -> {
+                    TelephonyConnection tc = (TelephonyConnection) t;
+                    Communicator c = tc.getCommunicator();
+                    if (c == null) {
+                        Log.w(this, "setActiveDeviceToDeviceTransport: D2D not enabled");
+                        return;
+                    }
+                    Log.i(this, "setActiveDeviceToDeviceTransport: callId=%s, set to: %s",
+                            tc.getTelecomCallId(), transport);
+                    c.setTransportActive(transport);
+                });
     }
 
     private PhoneAccountHandle adjustAccountHandle(Phone phone,
@@ -2535,4 +2565,82 @@
         }
         return origAccountHandle;
     }
+
+    /**
+     * For the passed in incoming {@link TelephonyConnection}, add
+     * {@link Connection#EXTRA_ANSWERING_DROPS_FG_CALL} if there are ongoing calls on another
+     * subscription (ie phone account handle) than the one passed in.
+     * @param connection The connection.
+     * @param phoneAccountHandle The {@link PhoneAccountHandle} the incoming call originated on;
+     *                           this is passed in because
+     *                           {@link Connection#getPhoneAccountHandle()} is not set until after
+     *                           {@link ConnectionService#onCreateIncomingConnection(
+     *                           PhoneAccountHandle, ConnectionRequest)} returns.
+     */
+    public void maybeIndicateAnsweringWillDisconnect(@NonNull TelephonyConnection connection,
+            @NonNull PhoneAccountHandle phoneAccountHandle) {
+        if (isCallPresentOnOtherSub(phoneAccountHandle)) {
+            Log.i(this, "maybeIndicateAnsweringWillDisconnect; answering call %s will cause a call "
+                    + "on another subscription to drop.", connection.getTelecomCallId());
+            Bundle extras = new Bundle();
+            extras.putBoolean(Connection.EXTRA_ANSWERING_DROPS_FG_CALL, true);
+            connection.putExtras(extras);
+        }
+    }
+
+    /**
+     * Checks to see if there are calls present on a sub other than the one passed in.
+     * @param incomingHandle The new incoming connection {@link PhoneAccountHandle}
+     */
+    private boolean isCallPresentOnOtherSub(@NonNull PhoneAccountHandle incomingHandle) {
+        return getAllConnections().stream()
+                .filter(c ->
+                        // Exclude multiendpoint calls as they're not on this device.
+                        (c.getConnectionProperties() & Connection.PROPERTY_IS_EXTERNAL_CALL) == 0
+                        // Include any calls not on same sub as current connection.
+                        && !Objects.equals(c.getPhoneAccountHandle(), incomingHandle))
+                .count() > 0;
+    }
+
+    /**
+     * Where there are ongoing calls on another subscription other than the one specified,
+     * disconnect these calls.  This is used where there is an incoming call on one sub, but there
+     * are ongoing calls on another sub which need to be disconnected.
+     * @param incomingHandle The incoming {@link PhoneAccountHandle}.
+     */
+    public void maybeDisconnectCallsOnOtherSubs(@NonNull PhoneAccountHandle incomingHandle) {
+        Log.i(this, "maybeDisconnectCallsOnOtherSubs: check for calls not on %s", incomingHandle);
+        maybeDisconnectCallsOnOtherSubs(getAllConnections(), incomingHandle);
+    }
+
+    /**
+     * Used by {@link #maybeDisconnectCallsOnOtherSubs(PhoneAccountHandle)} to perform call
+     * disconnection.  This method exists as a convenience so that it is possible to unit test
+     * the core functionality.
+     * @param connections the calls to check.
+     * @param incomingHandle the incoming handle.
+     */
+    @VisibleForTesting
+    public static void maybeDisconnectCallsOnOtherSubs(@NonNull Collection<Connection> connections,
+            @NonNull PhoneAccountHandle incomingHandle) {
+        connections.stream()
+                .filter(c ->
+                        // Exclude multiendpoint calls as they're not on this device.
+                        (c.getConnectionProperties() & Connection.PROPERTY_IS_EXTERNAL_CALL) == 0
+                                // Include any calls not on same sub as current connection.
+                                && !Objects.equals(c.getPhoneAccountHandle(), incomingHandle))
+                .forEach(c -> {
+                    if (c instanceof TelephonyConnection) {
+                        TelephonyConnection tc = (TelephonyConnection) c;
+                        if (!tc.shouldTreatAsEmergencyCall()) {
+                            Log.i(LOG_TAG, "maybeDisconnectCallsOnOtherSubs: disconnect %s due to "
+                                    + "incoming call on other sub.", tc.getTelecomCallId());
+                            // Note: intentionally calling hangup instead of onDisconnect.
+                            // onDisconnect posts the disconnection to a handle which means that the
+                            // disconnection will take place AFTER we answer the incoming call.
+                            tc.hangup(android.telephony.DisconnectCause.LOCAL);
+                        }
+                    }
+                });
+    }
 }
diff --git a/src/com/android/services/telephony/rcs/MessageTransportWrapper.java b/src/com/android/services/telephony/rcs/MessageTransportWrapper.java
index 0d4265a..45f7d95 100644
--- a/src/com/android/services/telephony/rcs/MessageTransportWrapper.java
+++ b/src/com/android/services/telephony/rcs/MessageTransportWrapper.java
@@ -482,7 +482,7 @@
     }
 
     private void logi(String log) {
-        Log.w(SipTransportController.LOG_TAG, TAG + "[" + mSubId + "] " + log);
+        Log.i(SipTransportController.LOG_TAG, TAG + "[" + mSubId + "] " + log);
         mLocalLog.log("[I] " + log);
     }
 
diff --git a/src/com/android/services/telephony/rcs/SipDelegateController.java b/src/com/android/services/telephony/rcs/SipDelegateController.java
index 30edca1..8cc70a4 100644
--- a/src/com/android/services/telephony/rcs/SipDelegateController.java
+++ b/src/com/android/services/telephony/rcs/SipDelegateController.java
@@ -414,7 +414,7 @@
     }
 
     private void logi(String log) {
-        Log.w(SipTransportController.LOG_TAG, LOG_TAG + "[" + mSubId + "] " + log);
+        Log.i(SipTransportController.LOG_TAG, LOG_TAG + "[" + mSubId + "] " + log);
         mLocalLog.log("[I] " + log);
     }
 
diff --git a/src/com/android/services/telephony/rcs/SipSessionTracker.java b/src/com/android/services/telephony/rcs/SipSessionTracker.java
index 77bf3f3..5ab482f 100644
--- a/src/com/android/services/telephony/rcs/SipSessionTracker.java
+++ b/src/com/android/services/telephony/rcs/SipSessionTracker.java
@@ -357,7 +357,7 @@
     }
 
     private void logi(String log) {
-        Log.w(SipTransportController.LOG_TAG, TAG + ": " + log);
+        Log.i(SipTransportController.LOG_TAG, TAG + ": " + log);
         mLocalLog.log("[I] " + log);
     }
 
diff --git a/src/com/android/services/telephony/rcs/SipTransportController.java b/src/com/android/services/telephony/rcs/SipTransportController.java
index f37c360..709e142 100644
--- a/src/com/android/services/telephony/rcs/SipTransportController.java
+++ b/src/com/android/services/telephony/rcs/SipTransportController.java
@@ -803,7 +803,12 @@
         }
         boolean roleChanged = updateRoleCache();
         if (roleChanged) {
-            triggerDeregistrationEvent();
+            if (!TextUtils.isEmpty(mCachedSmsRolePackageName)) {
+                // the role change event will go A -> "" and then "" -> B. In order to not send two
+                // events to the modem, only trigger the deregistration event when we move to a
+                // non-empty package name.
+                triggerDeregistrationEvent();
+            }
             // new denied tags will be picked up when reevaluate completes.
             scheduleThrottledReevaluate();
         }
@@ -1072,7 +1077,7 @@
     }
 
     private void logi(String log) {
-        Log.w(LOG_TAG, "[" + mSlotId  + "->" + mSubId + "] " + log);
+        Log.i(LOG_TAG, "[" + mSlotId  + "->" + mSubId + "] " + log);
         mLocalLog.log("[I] " + log);
     }
 
diff --git a/src/com/android/services/telephony/rcs/UceControllerManager.java b/src/com/android/services/telephony/rcs/UceControllerManager.java
index 5d0cab9..995d685 100644
--- a/src/com/android/services/telephony/rcs/UceControllerManager.java
+++ b/src/com/android/services/telephony/rcs/UceControllerManager.java
@@ -26,12 +26,12 @@
 import android.telephony.ims.RcsUceAdapter.PublishState;
 import android.telephony.ims.aidl.IRcsUceControllerCallback;
 import android.telephony.ims.aidl.IRcsUcePublishStateCallback;
+import android.util.IndentingPrintWriter;
 import android.util.Log;
 
 import com.android.ims.RcsFeatureManager;
 import com.android.ims.rcs.uce.UceController;
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.IndentingPrintWriter;
 
 import java.io.PrintWriter;
 import java.util.List;
diff --git a/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsCallingActivity.java b/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsCallingActivity.java
index 0ff6cc1..477bbc0 100644
--- a/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsCallingActivity.java
+++ b/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsCallingActivity.java
@@ -188,6 +188,9 @@
         sb.append("}, \nIWLAN: ");
         sb.append("{");
         sb.append(caps.get(ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN));
+        sb.append("}, \nCROSS-SIM: ");
+        sb.append("{");
+        sb.append(caps.get(ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM));
         sb.append("}");
         mCapEnabledText.setText(sb.toString());
     }
diff --git a/testapps/SmsManagerTestApp/res/layout/activity_main.xml b/testapps/SmsManagerTestApp/res/layout/activity_main.xml
index d889936..ddaf3a6 100644
--- a/testapps/SmsManagerTestApp/res/layout/activity_main.xml
+++ b/testapps/SmsManagerTestApp/res/layout/activity_main.xml
@@ -82,4 +82,4 @@
             android:paddingRight="4dp"
             android:text="@string/check_single_reg_permission"/>
     </LinearLayout>
-</LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/testapps/SmsManagerTestApp/res/values/donottranslate_strings.xml b/testapps/SmsManagerTestApp/res/values/donottranslate_strings.xml
index 7383a4a..ca07c54 100644
--- a/testapps/SmsManagerTestApp/res/values/donottranslate_strings.xml
+++ b/testapps/SmsManagerTestApp/res/values/donottranslate_strings.xml
@@ -22,4 +22,4 @@
     <string name="enable_persistent_service">Enable Persistent Service</string>
     <string name="disable_persistent_service">Disable Persistent Service</string>
     <string name="check_single_reg_permission">Check RCS Single Reg Perm</string>
-</resources>
+</resources>
\ No newline at end of file
diff --git a/testapps/TestRcsApp/TestApp/AndroidManifest.xml b/testapps/TestRcsApp/TestApp/AndroidManifest.xml
index 7538df7..35a0822 100644
--- a/testapps/TestRcsApp/TestApp/AndroidManifest.xml
+++ b/testapps/TestRcsApp/TestApp/AndroidManifest.xml
@@ -19,8 +19,8 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.google.android.sample.rcsclient"
-    android:versionCode="13"
-    android:versionName="1.0.12">
+    android:versionCode="14"
+    android:versionName="1.0.13">
 
     <uses-sdk
         android:minSdkVersion="30"
diff --git a/testapps/TestRcsApp/TestApp/res/values-as/strings.xml b/testapps/TestRcsApp/TestApp/res/values-as/strings.xml
new file mode 100644
index 0000000..2fac78c
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-as/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"প্ৰ’ভিজনিং পৰীক্ষা"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"অধিকাৰ প্ৰদান কৰাৰ পৰীক্ষা"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE পৰীক্ষা"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA পৰীক্ষা"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"ফলাফল:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"কলবেকৰ ফলাফল:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"সন্ধানৰ সামৰ্থ্যত নম্বৰটো দিয়ক আৰু বহুকেইটা থাকিলে \',\'ৰ দ্বাৰা পৃথক কৰক।"</string>
+    <string name="number" msgid="9096578126043995890">"সংখ্যা:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"চাট আৰম্ভ কৰক"</string>
+    <string name="to" msgid="1156781884609653284">"প্ৰতি:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"চাট বার্তা"</string>
+    <string name="send" msgid="8797467615003240434">"পঠিয়াওক"</string>
+    <string name="ok" msgid="2206671077510386729">"ঠিক আছে"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"ছেশ্বন আৰম্ভ কৰাত সফল হৈছে"</string>
+    <string name="session_failed" msgid="4524986240102190509">"ছেশ্বন আৰম্ভ কৰাত বিফল হৈছে"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"ছেশ্বন সাজু নহয়"</string>
+    <string name="organization" msgid="913518283470119113">"সংস্থা:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICCৰ ধৰণ:"</string>
+    <string name="protocol" msgid="8626139294022821930">"প্ৰট’কল:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS চাইফাৰ ছুইট:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"ষ্টেণ্ডএল’ন পেজাৰ"</string>
+    <string name="standalone_large" msgid="336170805696694543">"ষ্টেণ্ডএল’ন ডাঙৰ"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"ষ্টেণ্ডএল’ন স্থগিত ৰখা হৈছে"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"ষ্টেণ্ডএল’ন ডাঙৰ পেজাৰ"</string>
+    <string name="chat" msgid="5500583808773151982">"চাট"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"ফাইল স্থানান্তৰণ"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"জিঅ’লোকেশ্বনৰ এছএমএছ"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"চাটব’ট ছেশ্বন"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"ষ্টেণ্ডএল’ন চাটব’ট"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"চাটব’টৰ সংস্কৰণ"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"প্ৰ’ভিজনিং সম্পন্ন হৈছে"</string>
+    <string name="registration_done" msgid="492878616836655421">"পঞ্জীয়ন সম্পন্ন হৈছে"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"একো নাই"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"স্থানীয়"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"অজ্ঞাত"</item>
+    <item msgid="1715684709703792003">"ছিম"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-be/strings.xml b/testapps/TestRcsApp/TestApp/res/values-be/strings.xml
new file mode 100644
index 0000000..5196cf4
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-be/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Тэст ініцыялізацыі"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Дэлегаванне тэста"</string>
+    <string name="uce_test" msgid="6466919844953883038">"Тэст UCE"</string>
+    <string name="gba_test" msgid="8786745991279224003">"Тэст GBA"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"Вынік:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Вынік зваротнага выкліку"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Увядзіце нумар для запыту магчымасці. Калі нумароў некалькі, раздзяліце іх коскамі."</string>
+    <string name="number" msgid="9096578126043995890">"Нумар:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Пачаць чат"</string>
+    <string name="to" msgid="1156781884609653284">"Каму:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Паведамленне чата"</string>
+    <string name="send" msgid="8797467615003240434">"Адправіць"</string>
+    <string name="ok" msgid="2206671077510386729">"ОК"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Ініцыялізацыя сеанса выканана"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Збой ініцыялізацыі сеанса"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Сеанс не гатовы"</string>
+    <string name="organization" msgid="913518283470119113">"Арганізацыя:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"Тып UICC:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Пратакол:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"Набор шыфраў TLS:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Аўтаномны пэйджар"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Аўтаномны вялікі"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Аўтаномны адкладзены"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Аўтаномны вялікі пэйджар"</string>
+    <string name="chat" msgid="5500583808773151982">"Чат"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"Перадача файлаў"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"SMS геалакацыі"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Сеанс чат-бота"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Аўтаномны чат-бот"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Версія чат-бота"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Ініцыялізацыя выканана"</string>
+    <string name="registration_done" msgid="492878616836655421">"Рэгістрацыя выканана"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"НЯМА"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"МЯСЦОВАЯ СЕТКА"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"НЕВЯДОМА"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-bs/strings.xml b/testapps/TestRcsApp/TestApp/res/values-bs/strings.xml
new file mode 100644
index 0000000..8787d26
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-bs/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Test za dodjeljivanje"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Test ovlaštenika"</string>
+    <string name="uce_test" msgid="6466919844953883038">"Test UCE"</string>
+    <string name="gba_test" msgid="8786745991279224003">"Test GBA"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"Rezultat:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Rezultat povratnog poziva:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Unesite broj da pošaljte upit o kapacitetu te upite razdvojite \",\" ako ih ima više."</string>
+    <string name="number" msgid="9096578126043995890">"Broj:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Započni chat"</string>
+    <string name="to" msgid="1156781884609653284">"Za:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Poruka chata"</string>
+    <string name="send" msgid="8797467615003240434">"Pošalji"</string>
+    <string name="ok" msgid="2206671077510386729">"Uredu"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Pokretanje sesije je uspjelo"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Pokretanje sesije nije uspjelo"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Sesija nije spremna"</string>
+    <string name="organization" msgid="913518283470119113">"Organizacija:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"Vrsta UICC:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Protokol:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"Paket TLS Cipher:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Samostalni pejdžer"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Samostalno veliko"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Samostalno odgođeno"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Samostalni veliki pejdžer"</string>
+    <string name="chat" msgid="5500583808773151982">"Chat"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"Prijenos fajlova"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"SMS za geolokaciju"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Sesija bota za chat"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Samostalni bot za chat"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Vezija bota za chat"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Dodjeljivanje je završeno"</string>
+    <string name="registration_done" msgid="492878616836655421">"Registracija je završena"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"NEMA"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"LOKALNO"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"CERTIFIKAT_PRETPLATNIKA"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"NEPOZNATO"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-en-rAU/strings.xml b/testapps/TestRcsApp/TestApp/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..bec17d3
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-en-rAU/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"Rcs client"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Provisioning test"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Delegate test"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE test"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA test"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DB client"</string>
+    <string name="result" msgid="435222369457564619">"Result:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Callback result:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initialiseSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Enter the number to query capability and separate by \',\' if multiple ones."</string>
+    <string name="number" msgid="9096578126043995890">"Number:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Start chat"</string>
+    <string name="to" msgid="1156781884609653284">"To:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Chat message"</string>
+    <string name="send" msgid="8797467615003240434">"Send"</string>
+    <string name="ok" msgid="2206671077510386729">"OK"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Session init succeeded"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Session init failed"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Session not ready"</string>
+    <string name="organization" msgid="913518283470119113">"Organisation:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC type:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Protocol:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS cipher suite:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Standalone pager"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Standalone large"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Standalone deferred"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Standalone large pager"</string>
+    <string name="chat" msgid="5500583808773151982">"Chat"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"File transfer"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"Geolocation SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Chatbot session"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Chatbot standalone"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Chatbot version"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Provisioning done"</string>
+    <string name="registration_done" msgid="492878616836655421">"Registration done"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"NONE"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"LOCAL"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"UNKNOWN"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-en-rCA/strings.xml b/testapps/TestRcsApp/TestApp/res/values-en-rCA/strings.xml
new file mode 100644
index 0000000..bec17d3
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-en-rCA/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"Rcs client"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Provisioning test"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Delegate test"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE test"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA test"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DB client"</string>
+    <string name="result" msgid="435222369457564619">"Result:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Callback result:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initialiseSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Enter the number to query capability and separate by \',\' if multiple ones."</string>
+    <string name="number" msgid="9096578126043995890">"Number:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Start chat"</string>
+    <string name="to" msgid="1156781884609653284">"To:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Chat message"</string>
+    <string name="send" msgid="8797467615003240434">"Send"</string>
+    <string name="ok" msgid="2206671077510386729">"OK"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Session init succeeded"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Session init failed"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Session not ready"</string>
+    <string name="organization" msgid="913518283470119113">"Organisation:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC type:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Protocol:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS cipher suite:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Standalone pager"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Standalone large"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Standalone deferred"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Standalone large pager"</string>
+    <string name="chat" msgid="5500583808773151982">"Chat"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"File transfer"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"Geolocation SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Chatbot session"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Chatbot standalone"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Chatbot version"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Provisioning done"</string>
+    <string name="registration_done" msgid="492878616836655421">"Registration done"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"NONE"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"LOCAL"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"UNKNOWN"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-en-rGB/strings.xml b/testapps/TestRcsApp/TestApp/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..bec17d3
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-en-rGB/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"Rcs client"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Provisioning test"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Delegate test"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE test"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA test"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DB client"</string>
+    <string name="result" msgid="435222369457564619">"Result:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Callback result:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initialiseSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Enter the number to query capability and separate by \',\' if multiple ones."</string>
+    <string name="number" msgid="9096578126043995890">"Number:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Start chat"</string>
+    <string name="to" msgid="1156781884609653284">"To:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Chat message"</string>
+    <string name="send" msgid="8797467615003240434">"Send"</string>
+    <string name="ok" msgid="2206671077510386729">"OK"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Session init succeeded"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Session init failed"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Session not ready"</string>
+    <string name="organization" msgid="913518283470119113">"Organisation:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC type:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Protocol:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS cipher suite:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Standalone pager"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Standalone large"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Standalone deferred"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Standalone large pager"</string>
+    <string name="chat" msgid="5500583808773151982">"Chat"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"File transfer"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"Geolocation SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Chatbot session"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Chatbot standalone"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Chatbot version"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Provisioning done"</string>
+    <string name="registration_done" msgid="492878616836655421">"Registration done"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"NONE"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"LOCAL"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"UNKNOWN"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-en-rIN/strings.xml b/testapps/TestRcsApp/TestApp/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..bec17d3
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-en-rIN/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"Rcs client"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Provisioning test"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Delegate test"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE test"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA test"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DB client"</string>
+    <string name="result" msgid="435222369457564619">"Result:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Callback result:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initialiseSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Enter the number to query capability and separate by \',\' if multiple ones."</string>
+    <string name="number" msgid="9096578126043995890">"Number:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Start chat"</string>
+    <string name="to" msgid="1156781884609653284">"To:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Chat message"</string>
+    <string name="send" msgid="8797467615003240434">"Send"</string>
+    <string name="ok" msgid="2206671077510386729">"OK"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Session init succeeded"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Session init failed"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Session not ready"</string>
+    <string name="organization" msgid="913518283470119113">"Organisation:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC type:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Protocol:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS cipher suite:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Standalone pager"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Standalone large"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Standalone deferred"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Standalone large pager"</string>
+    <string name="chat" msgid="5500583808773151982">"Chat"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"File transfer"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"Geolocation SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Chatbot session"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Chatbot standalone"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Chatbot version"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Provisioning done"</string>
+    <string name="registration_done" msgid="492878616836655421">"Registration done"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"NONE"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"LOCAL"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"UNKNOWN"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-en-rXC/strings.xml b/testapps/TestRcsApp/TestApp/res/values-en-rXC/strings.xml
new file mode 100644
index 0000000..ef9b6cb
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-en-rXC/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‎‏‎‏‎‎‏‎‏‎‏‎‏‏‏‎‎‎‏‎‏‎‎‏‏‎‎‎‏‎‎‎‎‏‎‎‎‏‏‎‎‎‏‏‎‏‎‎‏‏‏‏‎RcsClient‎‏‎‎‏‎"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‎‏‏‏‎‎‏‎‏‏‏‏‏‎‎‎‎‎‎‏‎‏‎‏‎‏‏‏‎‎‎‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎Provisioning Test‎‏‎‎‏‎"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‎‎‎‏‏‎‎‎‏‏‎‏‎‏‏‏‎‎‏‎‏‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‏‏‎‏‏‏‎‏‏‏‎‏‏‎Delegate Test‎‏‎‎‏‎"</string>
+    <string name="uce_test" msgid="6466919844953883038">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‏‏‎‏‎‏‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‏‏‏‎‎UCE Test‎‏‎‎‏‎"</string>
+    <string name="gba_test" msgid="8786745991279224003">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‏‏‎‎‏‎‏‎‏‏‏‎‏‏‎‎‏‏‎‎‎‏‎‏‏‏‎‎‏‎‎‏‎‎‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎GBA Test‎‏‎‎‏‎"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‎‏‎‎‎‏‎‏‏‎‏‏‏‎‏‏‎‎‎‎‏‏‎‏‎‎‎‏‏‎‏‎‎‎‏‎‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‎‎TestMessageClient‎‏‎‎‏‎"</string>
+    <string name="db_client" msgid="5131401341721936367">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‎‎‏‏‎‎‏‎‏‎‏‎‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‎‏‎‎‎‎‎‎‏‏‏‏‎‏‏‏‏‎DBClient‎‏‎‎‏‎"</string>
+    <string name="result" msgid="435222369457564619">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‎‏‏‏‏‎‎‎‎‎‏‎‏‎‎‎‏‏‏‎‎‎‎‏‏‏‎‎‎‎‎‏‏‎‏‎‎‏‏‏‎‏‎‎‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎Result:‎‏‎‎‏‎"</string>
+    <string name="callback_result" msgid="7162990408241244749">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‏‎‏‏‏‎‏‎‎‏‏‎‎‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‏‎Callback Result:‎‏‎‎‏‎"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‎‏‏‏‏‎‏‎‏‎‏‎‏‏‎‏‏‎‏‏‏‎‎‏‎‏‏‏‏‏‎‎‏‎‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎initializeSipDelegate‎‏‎‎‏‎"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‏‎‎‎‏‎‏‏‎‎‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎destroySipDelegate‎‏‎‎‏‎"</string>
+    <string name="uce_description" msgid="1117661457446955869">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‎‏‎‏‏‏‎‏‏‎‎‏‎‏‏‎‎‏‎‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎Enter the number to query capability and separate by \',\' if multiple ones.‎‏‎‎‏‎"</string>
+    <string name="number" msgid="9096578126043995890">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‏‏‎‎‎‏‎‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‎‏‎‎‏‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‏‏‏‎‎‏‎‎Number:‎‏‎‎‏‎"</string>
+    <string name="request_capability" msgid="7644752985651089411">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‎‎‏‎‏‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‎‎‎‏‏‎requestCapability‎‏‎‎‏‎"</string>
+    <string name="request_availability" msgid="6387685341316953239">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‏‎‏‏‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‎‏‎‏‎‏‏‎‏‎‎‏‎‎‏‎‏‏‏‎requestNetworkAvailability‎‏‎‎‏‎"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‎‎‎‏‎‏‎‏‎‎‎‏‎‏‏‎‏‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‎‎‎‏‎bootstrapAuthenticationRequest‎‏‎‎‏‎"</string>
+    <string name="start_chat" msgid="96121236227112396">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‎‎‏‏‎‏‎‏‎‏‎‏‎‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‎‎‎Start Chat‎‏‎‎‏‎"</string>
+    <string name="to" msgid="1156781884609653284">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‎‎‎‎‎‏‏‎‏‏‎‏‏‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‏‎‎‎To:‎‏‎‎‏‎"</string>
+    <string name="chat_message" msgid="3945528453939746046">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‎‎‎‏‎‏‎‏‎‏‎‏‎‎‏‏‏‎‎‏‎‏‏‏‏‏‎‎‎‏‎‎‎‏‏‎‎‏‎‏‎‏‎‎‏‏‏‏‏‏‏‎‎Chat Message‎‏‎‎‏‎"</string>
+    <string name="send" msgid="8797467615003240434">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‏‏‏‏‎‏‎‏‎‎‏‏‎‏‎‎‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‏‎‎‏‎‎Send‎‏‎‎‏‎"</string>
+    <string name="ok" msgid="2206671077510386729">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‎‏‏‏‎‏‎‎‏‏‏‏‎‎‏‎‎‎‏‎‏‎‎‏‎‏‎‎‎‎‏‎‏‎‎‏‎OK‎‏‎‎‏‎"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‎‏‏‎‏‏‎‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‏‎‏‏‎‎‏‎‏‏‎‏‏‎‎‏‏‏‏‏‎‎‎Session init succeeded‎‏‎‎‏‎"</string>
+    <string name="session_failed" msgid="4524986240102190509">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‏‏‎‎‏‏‏‎‏‏‎‏‎‎‏‎‎‏‎‎‏‏‎‏‏‎‏‎‏‏‎‏‎Session init failed‎‏‎‎‏‎"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‎‏‎‎‏‏‏‎‎‏‎‏‎‎‎‏‎‏‎‏‏‏‏‏‏‎‎‎Session not ready‎‏‎‎‏‎"</string>
+    <string name="organization" msgid="913518283470119113">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‏‎‏‏‏‏‎‎‎‎‎‎‎‏‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‎‎‎‎‏‏‎‎‏‎‎‏‎Organization:‎‏‎‎‏‎"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎‏‏‏‎‏‏‎‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‎‏‏‏‎‎‎UICC Type:‎‏‎‎‏‎"</string>
+    <string name="protocol" msgid="8626139294022821930">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‎‏‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‎‏‎‏‎‎Protocol:‎‏‎‎‏‎"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‎‎‎‎‏‎‎‎‏‎‏‏‏‏‎‏‎‎‏‎‎‏‏‏‎‎‎‎‎‏‎‎‎‏‎‏‎‎‎‏‎‎TLS Cipher Suite:‎‏‎‎‏‎"</string>
+    <string name="naf" msgid="7620247915001854662">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎‏‏‎‏‎‏‏‎‏‏‎‏‎‎‎‎‏‏‎‎‎‏‎‏‏‏‎‏‎‏‏‎‎‎‏‏‎‎NAF URI:‎‏‎‎‏‎"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‎‏‏‏‎‎‏‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎‎‏‏‏‏‎‎‎‎‎‏‎‏‎‏‏‎‎‏‏‏‏‏‎Standalone Pager‎‏‎‎‏‎"</string>
+    <string name="standalone_large" msgid="336170805696694543">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‎‏‏‏‎‎‏‎‏‎‏‎‏‎‎‏‎‏‎‎‎‏‏‎‎‏‎‎‎‏‎‎‎‏‎‎‎‏‎‏‏‎‏‎‎‎‏‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎Standalone Large‎‏‎‎‏‎"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‏‎‎‏‏‎‏‏‎‎‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‎Standalone Deferred‎‏‎‎‏‎"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‏‏‎‎‎‏‏‎‏‎‏‏‏‎‎‏‎‎‏‏‏‏‎‎‎‎‎‎‎‏‎‎‏‎‏‏‎Standalone Large Pager‎‏‎‎‏‎"</string>
+    <string name="chat" msgid="5500583808773151982">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‎‏‎‏‏‎‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‏‏‏‎‏‏‏‎‎Chat‎‏‎‎‏‎"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‎‎‏‎‎‏‎‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‏‏‎‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎File Transfer‎‏‎‎‏‎"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‏‎‎‎‎‏‏‏‎‏‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‎‎‏‎‎‎‏‏‎‎‏‏‏‎‏‎‎‎‎‏‎‎‏‎‏‏‏‎Geolocation SMS‎‏‎‎‏‎"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‎‎‎‏‎‏‏‎‏‏‏‏‎‎‏‏‎‎‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‏‎‎‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‎Chatbot Session‎‏‎‎‏‎"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‏‏‎‏‎‎‎‎‎‎‎‎‎‎‎‎‎‏‏‏‏‎‎‎‏‏‎‏‎‏‏‎‎‏‏‎‏‏‎‏‏‏‎‎‎‏‏‎‎‏‎Chatbot Standalone‎‏‎‎‏‎"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‎‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‏‏‎‎‏‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‎‎‎‎Chatbot Version‎‏‎‎‏‎"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‎‏‎‎‎‎‏‏‎‏‎‎‎‏‏‎‎‏‎‏‏‏‏‏‎‎‎‏‎‎‎‎‎Provisioning Done‎‏‎‎‏‎"</string>
+    <string name="registration_done" msgid="492878616836655421">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‏‏‏‎‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‏‏‎‏‎Registration Done‎‏‎‎‏‎"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‏‏‎‎‎‎‏‎‎‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‎‎‎‎‏‏‏‎‎‎NONE‎‏‎‎‏‎"</item>
+    <item msgid="7841117287115880098">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‎‎‏‎‎‏‏‏‏‏‎‏‎‏‎‎‎‎‎‏‏‏‎‏‏‎‎‏‎‏‏‎‏‏‏‎‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‎3GPP‎‏‎‎‏‎"</item>
+    <item msgid="5871357530951196401">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‎‎‎‏‏‏‏‎‏‏‏‏‎‎‎‏‎3GPP2‎‏‎‎‏‎"</item>
+    <item msgid="4979706772323445701">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‏‎‏‎‎‎‏‏‎‏‏‎‏‏‏‏‎‎‎‏‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‎‏‎‏‏‏‏‎‎‎‏‎‏‎OMA‎‏‎‎‏‎"</item>
+    <item msgid="1202873556413702218">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‎‎‎‏‎‏‏‏‎‏‏‏‎‎‏‎‎‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‎‎‏‎‏‎‎GSMA‎‏‎‎‏‎"</item>
+    <item msgid="2237392451840970059">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‏‏‎‎‏‏‎‏‎‎‎‎‏‎‎‏‎‏‎‎‏‎‏‎‏‎‏‏‎‎‎‏‏‏‏‏‎‎‎‎‏‏‎‏‎‏‎‎‏‎‏‏‎LOCAL‎‏‎‎‏‎"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‏‏‎‏‎‎‏‏‎‎‎‎‏‏‎‎‎‎‏‎‎‎‎‏‏‎‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‎‎‏‏‎SUBSCRIBER_CERTIFICATE‎‏‎‎‏‎"</item>
+    <item msgid="6305648228108532104">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‎‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‏‏‎‎‎‏‎‎‎‎MBMS‎‏‎‎‏‎"</item>
+    <item msgid="4369286857827087787">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‎‏‎‏‏‎‏‎‎‏‏‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‏‎‏‎‏‏‎HTTP_DIGEST_AUTH‎‏‎‎‏‎"</item>
+    <item msgid="1047245839171009229">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‎‏‏‏‎‏‎‎‎‏‎‎‎‏‎‎‏‎‎‎‎‏‎‎‎‏‎‏‎‏‏‎‎‏‏‎‎‎‏‎‎‏‎‏‏‎‎‏‏‏‎‏‎‏‏‎‎‏‏‎‏‎3GPP_HTTP_BASED_MBMS‎‏‎‎‏‎"</item>
+    <item msgid="1728229445161381738">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‎‎‏‏‎‏‏‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‎GENERIC_PUSH_LAYER‎‏‎‎‏‎"</item>
+    <item msgid="8586727908453122385">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‏‎‎‎‏‎‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‏‏‎‎‏‎‎‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‏‎‎‎‏‎IMS_MEDIA_PLANE‎‏‎‎‏‎"</item>
+    <item msgid="5721752897501838331">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‎‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‎‎‏‎‏‏‏‎‏‏‏‏‏‏‏‎‏‏‎GENERATION_TMPI‎‏‎‎‏‎"</item>
+    <item msgid="1622910302975417378">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‏‏‎‎‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‏‎‎3GPP_HTTP_BASED_MBMS‎‏‎‎‏‎"</item>
+    <item msgid="7519270727796373646">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‏‎‏‎‏‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‏‏‎‎TLS_DEFAULT‎‏‎‎‏‎"</item>
+    <item msgid="7444251498958422990">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‎‏‏‎‎‎‎‎‎‎‏‏‎‎‎‎‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‎‎‏‏‏‎‎TLS_BROWSER‎‏‎‎‏‎"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‎‎‎‎‎‏‏‎‏‎‎‎‏‏‎‎‏‏‎‎‏‎‎‎‏‏‎‏‎‏‎‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎‎UNKNOWN‎‏‎‎‏‎"</item>
+    <item msgid="1715684709703792003">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‏‏‏‎‏‎‎‎‏‎‎‎‏‏‏‎‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‎‎‏‏‎SIM‎‏‎‎‏‎"</item>
+    <item msgid="4592543026990143036">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‎‏‏‏‎‏‎‏‏‎‎‎‏‏‏‏‎‎‎USIM‎‏‎‎‏‎"</item>
+    <item msgid="8763183137100323328">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‏‏‎‏‎‎‎‏‎‏‎‎‏‎‏‎‎‎‏‎‎‏‎‎‎‏‎‎‏‎‎‎‏‏‏‎‏‏‎‏‏‎‏‎‎‎‎‎‎‎‎‎‎RSIM‎‏‎‎‏‎"</item>
+    <item msgid="3778400020205644807">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‎‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‎‏‏‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‎‎‏‏‏‎CSIM‎‏‎‎‏‎"</item>
+    <item msgid="3774607711141191499">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‎‎‎‏‎‎‎‎‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‏‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‏‎ISIM‎‏‎‎‏‎"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-gu/strings.xml b/testapps/TestRcsApp/TestApp/res/values-gu/strings.xml
new file mode 100644
index 0000000..4842877
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-gu/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"જોગવાઈનું પરીક્ષણ"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"અધિકાર સોંપવાનું પરીક્ષણ"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE પરીક્ષણ"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA પરીક્ષણ"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"પરિણામ:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"કૉલબૅકનું પરિણામ:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"ક્વેરીની ક્ષમતામાં નંબર દાખલ કરો અને એક કરતાં વધુ હોય તો વડે \',\' જુદાં પાડો."</string>
+    <string name="number" msgid="9096578126043995890">"નંબર:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"ચૅટ શરૂ કરો"</string>
+    <string name="to" msgid="1156781884609653284">"પ્રતિ:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"ચૅટ સંદેશ"</string>
+    <string name="send" msgid="8797467615003240434">"મોકલો"</string>
+    <string name="ok" msgid="2206671077510386729">"ઓકે"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"સત્ર શરૂ કરવાનું સફળ થયું"</string>
+    <string name="session_failed" msgid="4524986240102190509">"સત્ર શરૂ કરવાનું નિષ્ફળ રહ્યું"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"સત્ર તૈયાર નથી"</string>
+    <string name="organization" msgid="913518283470119113">"સંસ્થા:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICCનો પ્રકાર:"</string>
+    <string name="protocol" msgid="8626139294022821930">"પ્રોટોકૉલ:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS સાઇફર સ્યૂટ:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"સ્ટેન્ડઅલોન પેજર"</string>
+    <string name="standalone_large" msgid="336170805696694543">"સ્ટેન્ડઅલોન મોટું"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"સ્ટેન્ડઅલોન સ્થગિત થયું"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"સ્ટેન્ડઅલોન મોટું પેજર"</string>
+    <string name="chat" msgid="5500583808773151982">"ચૅટ"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"ફાઇલ ટ્રાન્સફર"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"ભૌગોલિક સ્થાન SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"ચૅટબૉટ સત્ર"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"ચૅટબૉટ સ્ટેન્ડઅલોન"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"ચૅટબૉટ વર્ઝન"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"જોગવાઈ કરી"</string>
+    <string name="registration_done" msgid="492878616836655421">"રજિસ્ટ્રેશન થઈ ગયું"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"કોઈ નહીં"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"સ્થાનિક"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"અજાણ"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-ko/strings.xml b/testapps/TestRcsApp/TestApp/res/values-ko/strings.xml
new file mode 100644
index 0000000..38f1bd5
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-ko/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"프로비저닝 테스트"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"테스트 위임"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE 테스트"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA 테스트"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"결과:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"콜백 결과:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"기능을 쿼리할 숫자를 입력하고, 여러 개일 경우 \',\' 기호로 구분하세요."</string>
+    <string name="number" msgid="9096578126043995890">"번호:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"채팅 시작"</string>
+    <string name="to" msgid="1156781884609653284">"대상:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"채팅 메시지"</string>
+    <string name="send" msgid="8797467615003240434">"보내기"</string>
+    <string name="ok" msgid="2206671077510386729">"확인"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"세션 초기화 성공"</string>
+    <string name="session_failed" msgid="4524986240102190509">"세션 초기화 실패"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"세션이 준비되지 않음"</string>
+    <string name="organization" msgid="913518283470119113">"조직:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC 유형:"</string>
+    <string name="protocol" msgid="8626139294022821930">"프로토콜:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS 암호화 스위트:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"독립형 페이저"</string>
+    <string name="standalone_large" msgid="336170805696694543">"독립형 대형"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"독립형 지연됨"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"독립형 대형 페이저"</string>
+    <string name="chat" msgid="5500583808773151982">"채팅"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"파일 전송"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"위치정보 SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"챗봇 세션"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"독립형 챗봇"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"챗봇 버전"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"프로비저닝 완료"</string>
+    <string name="registration_done" msgid="492878616836655421">"등록 완료"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"없음"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"로컬"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"알 수 없음"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-lo/strings.xml b/testapps/TestRcsApp/TestApp/res/values-lo/strings.xml
new file mode 100644
index 0000000..6050bad
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-lo/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Provisioning Test"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"ທົດສອບຕົວແທນ"</string>
+    <string name="uce_test" msgid="6466919844953883038">"ທົດສອບ UCE"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA Test"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"ຜົນໄດ້ຮັບ:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"ຜົນການໂທກັບ:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"ປ້ອນໝາຍເລກໃສ່ຄຳຊອກຫາ ແລະ ຂັ້ນດ້ວຍ \',\' ຖ້າມີຫຼາຍກວ່າໜຶ່ງ."</string>
+    <string name="number" msgid="9096578126043995890">"ໝາຍເລກ:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"ເລີ່ມການສົນທະນາ"</string>
+    <string name="to" msgid="1156781884609653284">"ຫາ:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"ຂໍ້ຄວາມສົນທະນາ"</string>
+    <string name="send" msgid="8797467615003240434">"ສົ່ງ"</string>
+    <string name="ok" msgid="2206671077510386729">"ຕົກລົງ"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"ເລີ່ມເຊດຊັນສຳເລັດ"</string>
+    <string name="session_failed" msgid="4524986240102190509">"ເລີ່ມເຊດຊັນຜິດພາດ"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"ເຊດຊັນບໍ່ທັນພ້ອມ"</string>
+    <string name="organization" msgid="913518283470119113">"ອົງການ:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"ປະເພດ UICC:"</string>
+    <string name="protocol" msgid="8626139294022821930">"ໂປຣໂຕຄໍ:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"ຊຸດ TLS Cipher:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Standalone Pager"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Standalone Large"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Standalone Deferred"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Standalone Large Pager"</string>
+    <string name="chat" msgid="5500583808773151982">"ສົນທະນາ"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"ການໂອນໄຟລ໌"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"ທີ່ຕັ້ງພູມສາດ SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"ເຊດຊັນ Chatbot"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Chatbot ແບບດ່ຽວ"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"ເວີຊັນ Chatbot"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Provisioning Done"</string>
+    <string name="registration_done" msgid="492878616836655421">"Registration Done"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"ບໍ່ມີ"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"ພາຍໃນ"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"ບໍ່ຮູ້ຈັກ"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-ml/strings.xml b/testapps/TestRcsApp/TestApp/res/values-ml/strings.xml
new file mode 100644
index 0000000..00d9a4e
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-ml/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"പ്രൊവിഷനിംഗ് ടെസ്‌റ്റ്"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"ഡെലിഗേറ്റ് ടെസ്‌റ്റ്"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE ടെസ്‌റ്റ്"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA ടെസ്‌റ്റ്"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"ഫലം:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"തിരികെ വിളിക്കൽ ഫലം:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"ചോദ്യത്തിന്റെ കാര്യക്ഷമത എന്നതിലേക്ക് നമ്പർ നൽകുക, ഒന്നിലധികം ഉണ്ടെങ്കിൽ അവയെ \',\' ഉപയോഗിച്ച് വേർതിരിക്കുക."</string>
+    <string name="number" msgid="9096578126043995890">"നമ്പർ:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"ചാറ്റ് ആരംഭിക്കുക"</string>
+    <string name="to" msgid="1156781884609653284">"സ്വീകർത്താവ്:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Chat സന്ദേശം"</string>
+    <string name="send" msgid="8797467615003240434">"അയയ്ക്കുക"</string>
+    <string name="ok" msgid="2206671077510386729">"ശരി"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"സെഷൻ ആരംഭിച്ചു"</string>
+    <string name="session_failed" msgid="4524986240102190509">"സെഷൻ ആരംഭിക്കാനായില്ല"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"സെഷൻ തയ്യാറല്ല"</string>
+    <string name="organization" msgid="913518283470119113">"ഓർഗനൈസേഷൻ:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC തരം:"</string>
+    <string name="protocol" msgid="8626139294022821930">"പ്രോട്ടോക്കോൾ:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS Cipher Suite:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"സ്‌റ്റാൻഡ്എലോൺ പേജർ"</string>
+    <string name="standalone_large" msgid="336170805696694543">"സ്‌റ്റാൻഡ്എലോൺ ലാർജ്"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"സ്‌റ്റാൻഡ്എലോൺ ഡെഫേഡ്"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"സ്‌റ്റാൻഡ്എലോൺ ലാർജ് പേജർ"</string>
+    <string name="chat" msgid="5500583808773151982">"Chat"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"ഫയൽ കൈമാറൽ"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"ജിയോലൊക്കേഷൻ SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"ചാറ്റ്ബോട്ട് സെഷൻ"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"ചാറ്റ്ബോട്ട് സ്‌റ്റാൻഡ്എലോൺ"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"ചാറ്റ്ബോട്ട് പതിപ്പ്"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"പ്രൊവിഷനിംഗ് പൂർത്തിയായി"</string>
+    <string name="registration_done" msgid="492878616836655421">"രജിസ്‌ട്രേഷൻ പൂർത്തിയായി"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"ഒന്നുമില്ല"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"LOCAL"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"UNKNOWN"</item>
+    <item msgid="1715684709703792003">"സിം"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-ms/strings.xml b/testapps/TestRcsApp/TestApp/res/values-ms/strings.xml
new file mode 100644
index 0000000..758b2bd
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-ms/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Ujian Peruntukan"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Tugaskan Ujian"</string>
+    <string name="uce_test" msgid="6466919844953883038">"Ujian UCE"</string>
+    <string name="gba_test" msgid="8786745991279224003">"Ujian GBA"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"Hasil:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Hasil Panggil Balik:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Masukkan nombor untuk bertanya keupayaan dan pisahkan dengan \',\' jika terdapat berbilang nombor."</string>
+    <string name="number" msgid="9096578126043995890">"Nombor:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Mulakan Sembang"</string>
+    <string name="to" msgid="1156781884609653284">"Kepada:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Mesej Sembang"</string>
+    <string name="send" msgid="8797467615003240434">"Hantar"</string>
+    <string name="ok" msgid="2206671077510386729">"OK"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Pemulaan sesi berjaya"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Pemulaan sesi gagal"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Sesi belum sedia"</string>
+    <string name="organization" msgid="913518283470119113">"Organisasi:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"Jenis UICC:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Protokol:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"Set Sifer TLS:"</string>
+    <string name="naf" msgid="7620247915001854662">"URI NAF:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Alat Kelui Kendiri"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Apl Kendiri Besar"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Apl Kendiri Ditunda"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Alat Kelui Kendiri Besar"</string>
+    <string name="chat" msgid="5500583808773151982">"Sembang"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"Pemindahan Fail"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"SMS Geolokasi"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Sesi Chatbot"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Apl Kendiri Chatbot"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Versi Chatbot"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Peruntukan Selesai"</string>
+    <string name="registration_done" msgid="492878616836655421">"Pendaftaran Selesai"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"TIADA"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"SETEMPAT"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"TIDAK DIKETAHUI"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-ne/strings.xml b/testapps/TestRcsApp/TestApp/res/values-ne/strings.xml
new file mode 100644
index 0000000..51cf376
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-ne/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"प्रबन्ध मिलाउने परीक्षण"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"परीक्षण गर्ने जिम्मा दिनुहोस्"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE परीक्षण"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA परीक्षण"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"परिणाम:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"कलब्याकसम्बन्धी परिणाम:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"क्वेरी क्यापाबिलिटीको नम्बर हाल्नुहोस्। एकभन्दा बढी नम्बर छन् भने \',\' ले छुट्याउनुहोस्।"</string>
+    <string name="number" msgid="9096578126043995890">"नम्बर:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"च्याट गर्नुहोस्"</string>
+    <string name="to" msgid="1156781884609653284">"प्रापक:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"च्याट म्यासेज"</string>
+    <string name="send" msgid="8797467615003240434">"पठाउनुहोस्"</string>
+    <string name="ok" msgid="2206671077510386729">"ठिक छ"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"सत्र सफलतापूर्वक सुरु गरियो"</string>
+    <string name="session_failed" msgid="4524986240102190509">"सत्र सुरु गर्न सकिएन"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"सत्र तयार छैन"</string>
+    <string name="organization" msgid="913518283470119113">"सङ्गठन:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC को प्रकार:"</string>
+    <string name="protocol" msgid="8626139294022821930">"प्रोटोकोल:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS Cipher Suite:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"स्ट्यान्डअलोन पेजर"</string>
+    <string name="standalone_large" msgid="336170805696694543">"स्ट्यान्डअलोन ठुलो"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"स्ट्यान्डअलोन विलम्बित गरिएको"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"स्ट्यान्डअलोन ठुलो पेजर"</string>
+    <string name="chat" msgid="5500583808773151982">"Chat"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"फाइल स्थानान्तरण"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"भूस्थानसम्बन्धी SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"च्याटबटसँगको सत्र"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"च्याटबट स्ट्यान्डअलोन"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"च्याटबटको संस्करण"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"प्रबन्ध मिलाउने कार्य पूरा भयो"</string>
+    <string name="registration_done" msgid="492878616836655421">"दर्ता गर्ने कार्य पूरा भयो"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"कुनै पनि होइन"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"स्थानीय"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"अज्ञात"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-or/strings.xml b/testapps/TestRcsApp/TestApp/res/values-or/strings.xml
new file mode 100644
index 0000000..5c9491b
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-or/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"ପ୍ରୋଭିଜନିଂ ଟେଷ୍ଟ"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"ଟେଷ୍ଟ ଡେଲିଗେଟ୍ କରନ୍ତୁ"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE ଟେଷ୍ଟ"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA ଟେଷ୍ଟ"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"ଫଳାଫଳ:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"କଲବ୍ୟାକ୍ ଫଳାଫଳ:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"ସାମର୍ଥ୍ୟ ପାଇଁ କ୍ୱେରୀ କରିବାକୁ ନମ୍ବର ଲେଖନ୍ତୁ ଏବଂ ଯଦି ଏକାଧିକ ନମ୍ବର ଅଛି ତେବେ \',\' ଦ୍ୱାରା ଅଲଗା କରନ୍ତୁ।"</string>
+    <string name="number" msgid="9096578126043995890">"ନମ୍ବର:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"ଚାଟ୍ ଆରମ୍ଭ କରନ୍ତୁ"</string>
+    <string name="to" msgid="1156781884609653284">"ପ୍ରାପ୍ତେଷୁ:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"ଚାଟ୍ ମେସେଜ୍"</string>
+    <string name="send" msgid="8797467615003240434">"ପଠାନ୍ତୁ"</string>
+    <string name="ok" msgid="2206671077510386729">"ଠିକ୍ ଅଛି"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"ସେସନ୍ ଆରମ୍ଭ ସଫଳ ହୋଇଛି"</string>
+    <string name="session_failed" msgid="4524986240102190509">"ସେସନ୍ ଆରମ୍ଭ ବିଫଳ ହୋଇଛି"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"ସେସନ୍ ପ୍ରସ୍ତୁତ ନୁହେଁ"</string>
+    <string name="organization" msgid="913518283470119113">"ସଂସ୍ଥା:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC ପ୍ରକାର:"</string>
+    <string name="protocol" msgid="8626139294022821930">"ପ୍ରୋଟୋକଲ୍:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS ସାଇଫର୍ ସୁଟ୍:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"ଷ୍ଟାଣ୍ଡଏଲୋନ୍ ପେଜର୍"</string>
+    <string name="standalone_large" msgid="336170805696694543">"ଷ୍ଟାଣ୍ଡଏଲୋନ୍ ବଡ଼"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"ଷ୍ଟାଣ୍ଡଏଲୋନ୍ ସ୍ଥଗିତ ହୋଇଛି"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"ଷ୍ଟାଣ୍ଡଏଲୋନ୍ ବଡ଼ ପେଜର୍"</string>
+    <string name="chat" msgid="5500583808773151982">"ଚାଟ୍"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"ଫାଇଲ୍ ଟ୍ରାନ୍ସଫର୍"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"ଜିଓଲୋକେସନ୍ SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"ଚାଟବଟ୍ ସେସନ୍"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"ଚାଟବଟ୍ ଷ୍ଟାଣ୍ଡଏଲୋନ୍"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"ଚାଟବଟ୍ ସଂସ୍କରଣ"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"ପ୍ରୋଭିଜନିଂ ହୋଇଗଲା"</string>
+    <string name="registration_done" msgid="492878616836655421">"ପଞ୍ଜିକରଣ ହୋଇଗଲା"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"କିଛି ନାହିଁ"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"ସ୍ଥାନୀୟ"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"ଅଜଣା"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-ro/strings.xml b/testapps/TestRcsApp/TestApp/res/values-ro/strings.xml
new file mode 100644
index 0000000..593cf46
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-ro/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Test de configurare a accesului pentru utilizatori"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Test delegat"</string>
+    <string name="uce_test" msgid="6466919844953883038">"Test UCE"</string>
+    <string name="gba_test" msgid="8786745991279224003">"Test GBA"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"Rezultat:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Rezultatul apelării inverse:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Introduceți numărul pentru capacitatea de interogare și separați prin „,” dacă aveți mai multe."</string>
+    <string name="number" msgid="9096578126043995890">"Număr:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Începeți conversația"</string>
+    <string name="to" msgid="1156781884609653284">"Către:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Mesaj prin chat"</string>
+    <string name="send" msgid="8797467615003240434">"Trimiteți"</string>
+    <string name="ok" msgid="2206671077510386729">"OK"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"S-a inițializat sesiunea"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Sesiunea nu a fost inițializată"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Sesiunea nu este gata"</string>
+    <string name="organization" msgid="913518283470119113">"Organizație:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"Tip UICC:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Protocol:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"Suita cifrului TLS:"</string>
+    <string name="naf" msgid="7620247915001854662">"URI NAF:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Pager autonom"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Autonom mare"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Autonom amânat"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Pager autonom mare"</string>
+    <string name="chat" msgid="5500583808773151982">"Chat"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"Transfer de fișier"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"SMS pentru localizare geografică"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Sesiune chatbot"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Chatbot autonom"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Versiune chatbot"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"S-a configurat accesul pentru utilizatori"</string>
+    <string name="registration_done" msgid="492878616836655421">"S-a înregistrat"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"NICIUNA"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"LOCAL"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"NECUNOSCUTĂ"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-ru/strings.xml b/testapps/TestRcsApp/TestApp/res/values-ru/strings.xml
new file mode 100644
index 0000000..1276015
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-ru/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Тест инициализации"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Делегирование теста"</string>
+    <string name="uce_test" msgid="6466919844953883038">"Тест UCE"</string>
+    <string name="gba_test" msgid="8786745991279224003">"Тест GBA"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"Результат:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Результат обратного вызова:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Введите номер для запроса возможности. Разделяйте номера запятыми, если их несколько."</string>
+    <string name="number" msgid="9096578126043995890">"Номер:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Начать чат"</string>
+    <string name="to" msgid="1156781884609653284">"Кому:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Сообщение чата"</string>
+    <string name="send" msgid="8797467615003240434">"Отправить"</string>
+    <string name="ok" msgid="2206671077510386729">"ОК"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Инициализация сеанса выполнена"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Сбой инициализации сеанса"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Сеанс не готов\\"</string>
+    <string name="organization" msgid="913518283470119113">"Организация:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"Тип UICC:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Протокол:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"Шифронабор TLS:"</string>
+    <string name="naf" msgid="7620247915001854662">"URI NAF:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Автономный пейджер"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Автономный большой"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Автономный отложенный"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Автономный большой пейджер"</string>
+    <string name="chat" msgid="5500583808773151982">"Чат"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"Передача файла"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"SMS геолокации"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Сеанс чат-бота"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Автономный чат-бот"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Версия чат-бота"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Инициализация выполнена"</string>
+    <string name="registration_done" msgid="492878616836655421">"Регистрация выполнена"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"НЕТ"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"МЕСТНАЯ СЕТЬ"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"НЕИЗВЕСТНО"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-sl/strings.xml b/testapps/TestRcsApp/TestApp/res/values-sl/strings.xml
new file mode 100644
index 0000000..ca62620
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-sl/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Preizkus priprave za uporabo"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Preizkus dodelitve"</string>
+    <string name="uce_test" msgid="6466919844953883038">"Preizkus UCE"</string>
+    <string name="gba_test" msgid="8786745991279224003">"Preizkus GBA"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"Rezultat:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Rezultat povratnega klica:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Vnesite številko, da pošljete poizvedbo za zmogljivost. Če jih je več, jih ločite z vejicami."</string>
+    <string name="number" msgid="9096578126043995890">"Številka:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Zaženi Chat"</string>
+    <string name="to" msgid="1156781884609653284">"Za:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Sporočilo v storitvi Chat"</string>
+    <string name="send" msgid="8797467615003240434">"Pošlji"</string>
+    <string name="ok" msgid="2206671077510386729">"V redu"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Inicializacija seje je uspela"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Inicializacija seje ni uspela"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Seja ni pripravljena"</string>
+    <string name="organization" msgid="913518283470119113">"Organizacija:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"Vrsta UICC:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Protokol:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"Zbirka šifriranja TLS:"</string>
+    <string name="naf" msgid="7620247915001854662">"URI NAF:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Samostojni pozivnik"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Samostojno veliko"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Samostojno odloženo"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Samostojni veliki pozivnik"</string>
+    <string name="chat" msgid="5500583808773151982">"Chat"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"Prenos datotek"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"Geolokacijski SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Seja bota za klepet"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Samostojni bot za klepet"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Različica bota za klepet"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Priprava za uporabo je končana"</string>
+    <string name="registration_done" msgid="492878616836655421">"Registracija je končana"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"NONE"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"LOCAL"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"UNKNOWN"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-te/strings.xml b/testapps/TestRcsApp/TestApp/res/values-te/strings.xml
new file mode 100644
index 0000000..7a0643d
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-te/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"నిర్వహణ టెస్ట్"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"డెలిగేట్ టెస్ట్"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE టెస్ట్"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA టెస్ట్"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"ఫలితం:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"కాల్‌బ్యాక్ ఫలితం:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"క్వెరీ సామర్థ్యం కోసం నంబర్‌ను ఎంటర్ చేసి, అవి ఒకటి కంటే ఎక్కువ ఉంటే \',\'తో వేరు చేయండి."</string>
+    <string name="number" msgid="9096578126043995890">"నంబర్:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"చాట్‌ను ప్రారంభించండి"</string>
+    <string name="to" msgid="1156781884609653284">"వీరికి:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"చాట్ మెసేజ్"</string>
+    <string name="send" msgid="8797467615003240434">"పంపు"</string>
+    <string name="ok" msgid="2206671077510386729">"సరే"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"సెషన్ ప్రారంభం విజయవంతమైంది"</string>
+    <string name="session_failed" msgid="4524986240102190509">"సెషన్ ప్రారంభం విఫలమైంది"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"సెషన్ సిద్ధంగా ఉంది"</string>
+    <string name="organization" msgid="913518283470119113">"సంస్థ:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC రకం:"</string>
+    <string name="protocol" msgid="8626139294022821930">"ప్రోటోకాల్:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS Cipher Suite:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"స్టాండ్ఎలోన్ పేజర్"</string>
+    <string name="standalone_large" msgid="336170805696694543">"స్టాండ్ఎలోన్ లార్జ్"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"స్టాండ్ఎలోన్ వాయిదా వేయబడింది"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"స్టాండ్ఎలోన్ లార్జ్ పేజర్"</string>
+    <string name="chat" msgid="5500583808773151982">"చాట్"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"ఫైల్ బదిలీ"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"భౌగోళిక స్థాన SMS"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"చాట్‌బాట్ సెషన్"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"చాట్‌బాట్ స్టాండ్ఎలోన్"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"చాట్‌బాట్ వెర్షన్"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"నిర్వహణ పూర్తయింది"</string>
+    <string name="registration_done" msgid="492878616836655421">"రిజిస్ట్రేషన్ పూర్తయింది"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"ఏదీ కాదు"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"LOCAL"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"తెలియదు"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-tl/strings.xml b/testapps/TestRcsApp/TestApp/res/values-tl/strings.xml
new file mode 100644
index 0000000..e2dc0cb
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-tl/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Pagsusuri ng Provisioning"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Pagsusuri ng Pinaglaanan"</string>
+    <string name="uce_test" msgid="6466919844953883038">"Pagsusuri ng UCE"</string>
+    <string name="gba_test" msgid="8786745991279224003">"Pagsusuri ng GBA"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"Resulta:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Resulta ng Callback:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Ilagay ang numero para i-query ang kakayahan at paghiwa-hiwalayin gamit ang \',\' kung marami ito."</string>
+    <string name="number" msgid="9096578126043995890">"Numero:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Simulan ang Chat"</string>
+    <string name="to" msgid="1156781884609653284">"Para sa:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Mensahe sa Chat"</string>
+    <string name="send" msgid="8797467615003240434">"Ipadala"</string>
+    <string name="ok" msgid="2206671077510386729">"OK"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Matagumpay na nasimulan ang session"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Hindi nasimulan ang session"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Hindi pa handa ang session"</string>
+    <string name="organization" msgid="913518283470119113">"Organisasyon:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"Uri ng UICC:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Protocol:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS Cipher Suite:"</string>
+    <string name="naf" msgid="7620247915001854662">"URI ng NAF:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Standalone Pager"</string>
+    <string name="standalone_large" msgid="336170805696694543">"Standalone Large"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"Standalone Deferred"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Standalone Large Pager"</string>
+    <string name="chat" msgid="5500583808773151982">"Chat"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"Paglilipat ng File"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"SMS ng Geolocation"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Chatbot Session"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"Chatbot Standalone"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Bersyon ng Chatbot"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Tapos na ang Provisioning"</string>
+    <string name="registration_done" msgid="492878616836655421">"Tapos na ang Pagpaparehistro"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"WALA"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"LOKAL"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"HINDI ALAM"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-zh-rHK/strings.xml b/testapps/TestRcsApp/TestApp/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..ec7f74a
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-zh-rHK/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"佈建測試"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"委派測試"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE 測試"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA 測試"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"結果:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"回撥電話結果:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"輸入要查詢功能的號碼;如果有多組號碼,請以半形逗號 (,) 分隔。"</string>
+    <string name="number" msgid="9096578126043995890">"號碼:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"發起即時通訊"</string>
+    <string name="to" msgid="1156781884609653284">"收件者:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"即時通訊訊息"</string>
+    <string name="send" msgid="8797467615003240434">"傳送"</string>
+    <string name="ok" msgid="2206671077510386729">"確定"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"工作階段初始化失敗成功"</string>
+    <string name="session_failed" msgid="4524986240102190509">"工作階段初始化失敗"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"工作階段尚未就緒"</string>
+    <string name="organization" msgid="913518283470119113">"機構:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC 類型:"</string>
+    <string name="protocol" msgid="8626139294022821930">"通訊協定:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS 加密套裝組合:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"一般版 UI:呼叫器"</string>
+    <string name="standalone_large" msgid="336170805696694543">"一般版 UI:大型"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"一般版 UI:已延後"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"一般版 UI:大型呼叫器"</string>
+    <string name="chat" msgid="5500583808773151982">"即時通訊"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"檔案傳輸"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"地理位置簡訊"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"聊天機器人工作階段"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"聊天機器人一般版 UI"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"聊天機器人版本"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"已完成佈建"</string>
+    <string name="registration_done" msgid="492878616836655421">"已完成註冊"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"無"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"本地"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"不明"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-zh-rTW/strings.xml b/testapps/TestRcsApp/TestApp/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..ec7f74a
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-zh-rTW/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"佈建測試"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"委派測試"</string>
+    <string name="uce_test" msgid="6466919844953883038">"UCE 測試"</string>
+    <string name="gba_test" msgid="8786745991279224003">"GBA 測試"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"DBClient"</string>
+    <string name="result" msgid="435222369457564619">"結果:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"回撥電話結果:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"輸入要查詢功能的號碼;如果有多組號碼,請以半形逗號 (,) 分隔。"</string>
+    <string name="number" msgid="9096578126043995890">"號碼:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"發起即時通訊"</string>
+    <string name="to" msgid="1156781884609653284">"收件者:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"即時通訊訊息"</string>
+    <string name="send" msgid="8797467615003240434">"傳送"</string>
+    <string name="ok" msgid="2206671077510386729">"確定"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"工作階段初始化失敗成功"</string>
+    <string name="session_failed" msgid="4524986240102190509">"工作階段初始化失敗"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"工作階段尚未就緒"</string>
+    <string name="organization" msgid="913518283470119113">"機構:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"UICC 類型:"</string>
+    <string name="protocol" msgid="8626139294022821930">"通訊協定:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"TLS 加密套裝組合:"</string>
+    <string name="naf" msgid="7620247915001854662">"NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"一般版 UI:呼叫器"</string>
+    <string name="standalone_large" msgid="336170805696694543">"一般版 UI:大型"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"一般版 UI:已延後"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"一般版 UI:大型呼叫器"</string>
+    <string name="chat" msgid="5500583808773151982">"即時通訊"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"檔案傳輸"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"地理位置簡訊"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"聊天機器人工作階段"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"聊天機器人一般版 UI"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"聊天機器人版本"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"已完成佈建"</string>
+    <string name="registration_done" msgid="492878616836655421">"已完成註冊"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"無"</item>
+    <item msgid="7841117287115880098">"3GPP"</item>
+    <item msgid="5871357530951196401">"3GPP2"</item>
+    <item msgid="4979706772323445701">"OMA"</item>
+    <item msgid="1202873556413702218">"GSMA"</item>
+    <item msgid="2237392451840970059">"本地"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"不明"</item>
+    <item msgid="1715684709703792003">"SIM"</item>
+    <item msgid="4592543026990143036">"USIM"</item>
+    <item msgid="8763183137100323328">"RSIM"</item>
+    <item msgid="3778400020205644807">"CSIM"</item>
+    <item msgid="3774607711141191499">"ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/TestApp/res/values-zu/strings.xml b/testapps/TestRcsApp/TestApp/res/values-zu/strings.xml
new file mode 100644
index 0000000..d05fa16
--- /dev/null
+++ b/testapps/TestRcsApp/TestApp/res/values-zu/strings.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="1411081210960307023">"I-RcsClient"</string>
+    <string name="provisioning_test" msgid="1035549386706009246">"Isivivinyo Sokunikezwa"</string>
+    <string name="delegate_test" msgid="8212368545489779643">"Susa Isivivinyo"</string>
+    <string name="uce_test" msgid="6466919844953883038">"Isivivinyo se-UCE"</string>
+    <string name="gba_test" msgid="8786745991279224003">"Isivivinyo se-GBA"</string>
+    <string name="test_msg_client" msgid="5345166277460949996">"TestMessageClient"</string>
+    <string name="db_client" msgid="5131401341721936367">"I-DBClient"</string>
+    <string name="result" msgid="435222369457564619">"Umphumela:"</string>
+    <string name="callback_result" msgid="7162990408241244749">"Imiphumela yokuphinda ushaye:"</string>
+    <string name="initialize_delegate" msgid="1772072838514674246">"initializeSipDelegate"</string>
+    <string name="destroy_delegate" msgid="1678202834033613371">"destroySipDelegate"</string>
+    <string name="uce_description" msgid="1117661457446955869">"Faka inombolo ukubuza amandla futhi uhlukanise ngokuthi \',\' uma kukuningi."</string>
+    <string name="number" msgid="9096578126043995890">"Inombolo:"</string>
+    <string name="request_capability" msgid="7644752985651089411">"requestCapability"</string>
+    <string name="request_availability" msgid="6387685341316953239">"requestNetworkAvailability"</string>
+    <string name="gba_bootstrap" msgid="549563024448934689">"bootstrapAuthenticationRequest"</string>
+    <string name="start_chat" msgid="96121236227112396">"Qalisa Ingxoxo"</string>
+    <string name="to" msgid="1156781884609653284">"Ku:"</string>
+    <string name="chat_message" msgid="3945528453939746046">"Umlayezo Wengxoxo"</string>
+    <string name="send" msgid="8797467615003240434">"Thumela"</string>
+    <string name="ok" msgid="2206671077510386729">"KULUNGILE"</string>
+    <string name="session_succeeded" msgid="4692992136758212220">"Ukuqaliswa kweseshini kuphumelele"</string>
+    <string name="session_failed" msgid="4524986240102190509">"Ukuqaliswa kweseshini kwehlulekile"</string>
+    <string name="session_not_ready" msgid="4612635394279901948">"Iseshini ayilungile"</string>
+    <string name="organization" msgid="913518283470119113">"Inhlangano:"</string>
+    <string name="uicc_type" msgid="5584433205228698588">"Uhlobo lwe-UICC:"</string>
+    <string name="protocol" msgid="8626139294022821930">"Iphrothokholi:"</string>
+    <string name="tls_cs" msgid="5410567052979996834">"I-TLS Cipher Suite:"</string>
+    <string name="naf" msgid="7620247915001854662">"I-NAF URI:"</string>
+    <string name="standalone_pager" msgid="1351341861641131423">"Ipheja ye-Standalone"</string>
+    <string name="standalone_large" msgid="336170805696694543">"I-Standalone Enkulu"</string>
+    <string name="standalone_deferred" msgid="4906576900729108844">"I-Standalone Iyekiswe ukubhekiswa"</string>
+    <string name="standalone_pager_large" msgid="5662294171123433547">"Ipheja ye-Standalone Enkulu"</string>
+    <string name="chat" msgid="5500583808773151982">"Ingxoxo"</string>
+    <string name="file_transfer" msgid="5522080545470609737">"Ukudluliselwa kwefayela"</string>
+    <string name="geolocation_sms" msgid="4463328438708195479">"I-SMS ye-Geolocation"</string>
+    <string name="chatbot_session" msgid="5639314220589146717">"Iseshini ye-Chatbot"</string>
+    <string name="chatbot_standalone" msgid="8159185526765238041">"I-Chatbot Standalone"</string>
+    <string name="chatbot_version" msgid="2431939061806512544">"Inguqulo ye-Chatbot"</string>
+    <string name="provisioning_done" msgid="204618840179891984">"Ukunikezwa kwenziwe"</string>
+    <string name="registration_done" msgid="492878616836655421">"Ukubhalisa Kwenziwe"</string>
+  <string-array name="organization">
+    <item msgid="9074061482474975772">"LUTHO"</item>
+    <item msgid="7841117287115880098">"I-3GPP"</item>
+    <item msgid="5871357530951196401">"I-3GPP2"</item>
+    <item msgid="4979706772323445701">"I-OMA"</item>
+    <item msgid="1202873556413702218">"I-GSMA"</item>
+    <item msgid="2237392451840970059">"OKWENDAWO"</item>
+  </string-array>
+  <string-array name="protocol">
+    <item msgid="7955884038486794595">"SUBSCRIBER_CERTIFICATE"</item>
+    <item msgid="6305648228108532104">"I-MBMS"</item>
+    <item msgid="4369286857827087787">"HTTP_DIGEST_AUTH"</item>
+    <item msgid="1047245839171009229">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="1728229445161381738">"GENERIC_PUSH_LAYER"</item>
+    <item msgid="8586727908453122385">"IMS_MEDIA_PLANE"</item>
+    <item msgid="5721752897501838331">"GENERATION_TMPI"</item>
+    <item msgid="1622910302975417378">"3GPP_HTTP_BASED_MBMS"</item>
+    <item msgid="7519270727796373646">"TLS_DEFAULT"</item>
+    <item msgid="7444251498958422990">"TLS_BROWSER"</item>
+  </string-array>
+  <string-array name="uicc_type">
+    <item msgid="5878327014492655902">"AKWAZIWA"</item>
+    <item msgid="1715684709703792003">"I-SIM"</item>
+    <item msgid="4592543026990143036">"I-USIM"</item>
+    <item msgid="8763183137100323328">"I-RSIM"</item>
+    <item msgid="3778400020205644807">"I-CSIM"</item>
+    <item msgid="3774607711141191499">"I-ISIM"</item>
+  </string-array>
+</resources>
diff --git a/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpSession.java b/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpSession.java
index 1c461fe..7436da4 100644
--- a/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpSession.java
+++ b/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpSession.java
@@ -27,6 +27,8 @@
 import android.net.QosSession;
 import android.net.QosSessionAttributes;
 import android.net.QosSocketInfo;
+import android.os.Handler;
+import android.os.Message;
 import android.util.Log;
 import android.widget.Toast;
 
@@ -53,6 +55,7 @@
 public class MsrpSession {
     private static final String DEDICATED_BEARER_SUCCESS = "Dedicated bearer succeeded";
     private static final String DEDICATED_BEARER_ERROR = "Dedicated bearer error";
+    private static final int TOAST_MSG = 1;
     private final Network network;
     private final Socket socket;
     private final InputStream input;
@@ -64,6 +67,7 @@
     private final ConnectivityManager connectivityManager;
     private final String LOG_TAG = MsrpSession.class.getSimpleName();
     private final Context context;
+    private Handler handler;
 
     /** Creates a new MSRP session on the given listener and the provided streams. */
     MsrpSession(ConnectivityManager connectivityManager, Context context, Network network,
@@ -76,31 +80,36 @@
         this.output = socket.getOutputStream();
         this.listener = listener;
 
+
+        handler = new Handler(context.getMainLooper()) {
+            @Override
+            public void handleMessage(Message msg) {
+                Toast.makeText(context, msg.obj.toString(), Toast.LENGTH_SHORT).show();
+            }
+        };
+
         listenForBearer();
     }
 
     private final QosCallback qosCallback = new QosCallback() {
         @Override
         public void onError(@NonNull QosCallbackException exception) {
-            Toast.makeText(context, DEDICATED_BEARER_ERROR, Toast.LENGTH_SHORT).show();
             Log.e(LOG_TAG, "onError: " + exception.toString());
-            super.onError(exception);
+            handler.sendMessage(handler.obtainMessage(TOAST_MSG, DEDICATED_BEARER_ERROR));
         }
 
         @Override
         public void onQosSessionAvailable(@NonNull QosSession session,
                 @NonNull QosSessionAttributes sessionAttributes) {
-            Toast.makeText(context, DEDICATED_BEARER_SUCCESS, Toast.LENGTH_SHORT).show();
             Log.d(LOG_TAG, "onQosSessionAvailable: " + session.toString() + ", "
                     + sessionAttributes.toString());
-            super.onQosSessionAvailable(session, sessionAttributes);
+            handler.sendMessage(handler.obtainMessage(TOAST_MSG, DEDICATED_BEARER_SUCCESS));
         }
 
         @Override
         public void onQosSessionLost(@NonNull QosSession session) {
-            Toast.makeText(context, DEDICATED_BEARER_ERROR, Toast.LENGTH_SHORT).show();
             Log.e(LOG_TAG, "onQosSessionLost: " + session.toString());
-            super.onQosSessionLost(session);
+            handler.sendMessage(handler.obtainMessage(TOAST_MSG, DEDICATED_BEARER_ERROR));
         }
     };
 
diff --git a/tests/src/com/android/TestContext.java b/tests/src/com/android/TestContext.java
index fc5ee4c..5456469 100644
--- a/tests/src/com/android/TestContext.java
+++ b/tests/src/com/android/TestContext.java
@@ -27,6 +27,7 @@
 import android.content.pm.PackageManager;
 import android.os.Binder;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.PersistableBundle;
 import android.telecom.TelecomManager;
 import android.telephony.CarrierConfigManager;
@@ -160,6 +161,11 @@
         return null;
     }
 
+    @Override
+    public Handler getMainThreadHandler() {
+        return new Handler(Looper.getMainLooper());
+    }
+
     /**
      * @return CarrierConfig PersistableBundle for the subscription specified.
      */
diff --git a/tests/src/com/android/phone/RcsProvisioningMonitorTest.java b/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
index 85e190e..4fba922 100644
--- a/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
+++ b/tests/src/com/android/phone/RcsProvisioningMonitorTest.java
@@ -579,6 +579,18 @@
 
     @Test
     @SmallTest
+    public void testSendBroadcastWhenDmaChanged() throws Exception {
+        createMonitor(3);
+        verify(mPhone, times(3)).sendBroadcast(any(), any());
+
+        updateDefaultMessageApplication(DEFAULT_MESSAGING_APP2);
+        processAllMessages();
+
+        verify(mPhone, times(6)).sendBroadcast(any(), any());
+    }
+
+    @Test
+    @SmallTest
     public void testRcsConnectedAndDisconnected() throws Exception {
         createMonitor(1);
         mRcsProvisioningMonitor.registerRcsProvisioningCallback(
diff --git a/tests/src/com/android/phone/callcomposer/CallComposerAuthTest.java b/tests/src/com/android/phone/callcomposer/CallComposerAuthTest.java
new file mode 100644
index 0000000..b503790
--- /dev/null
+++ b/tests/src/com/android/phone/callcomposer/CallComposerAuthTest.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+package com.android.phone.callcomposer;
+
+import static org.junit.Assert.assertEquals;
+
+import com.android.phone.callcomposer.DigestAuthUtils;
+
+import org.junit.Test;
+
+public class CallComposerAuthTest {
+    @Test
+    public void testResponseGeneration() {
+        String username = "test1";
+        String realm = "test@test.com";
+        byte[] password = "12345678".getBytes();
+        String sNonce = "aaaabbbbcccc";
+        String cNonce = "ccccbbbbaaaa";
+        String ncValue = "00000001";
+        String method = "POST";
+        String uri = "/test/test1?a=b";
+        String qop = "auth";
+
+        String response = DigestAuthUtils.computeResponse(sNonce, cNonce, qop, username,
+                realm, password, method, uri);
+        // precomputed response value from a known-good implementation
+        assertEquals("744d63d6fb11aa132dc906ec95306960", response);
+    }
+}
diff --git a/tests/src/com/android/phone/callcomposer/PictureManagerTest.java b/tests/src/com/android/phone/callcomposer/PictureManagerTest.java
new file mode 100644
index 0000000..f1ce3b8
--- /dev/null
+++ b/tests/src/com/android/phone/callcomposer/PictureManagerTest.java
@@ -0,0 +1,324 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+package com.android.phone.callcomposer;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.net.Uri;
+import android.os.OutcomeReceiver;
+import android.os.PersistableBundle;
+import android.os.UserHandle;
+import android.provider.CallLog;
+import android.telephony.CarrierConfigManager;
+import android.telephony.TelephonyManager;
+import android.telephony.gba.TlsParams;
+import android.telephony.gba.UaSecurityProtocolIdentifier;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.io.InputStream;
+import java.util.UUID;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+public class PictureManagerTest {
+    private static final String FAKE_URL_BASE = "https://www.example.com";
+    private static final String FAKE_URL = "https://www.example.com/AAAAA";
+    private static final long TIMEOUT_MILLIS = 1000;
+    private static final Uri FAKE_CALLLOG_URI = Uri.parse("content://asdf");
+
+    @Mock CallComposerPictureManager.CallLogProxy mockCallLogProxy;
+    @Mock CallComposerPictureTransfer mockPictureTransfer;
+    @Mock Context context;
+    @Mock TelephonyManager telephonyManager;
+
+    private boolean originalTestMode = false;
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        originalTestMode = CallComposerPictureManager.sTestMode;
+        // Even though this is a test, we want test mode off so we can actually exercise the logic
+        // in the class.
+        CallComposerPictureManager.sTestMode = false;
+        when(context.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(telephonyManager);
+        when(context.getSystemServiceName(TelephonyManager.class))
+                .thenReturn(Context.TELEPHONY_SERVICE);
+        when(telephonyManager.createForSubscriptionId(anyInt())).thenReturn(telephonyManager);
+        PersistableBundle b = new PersistableBundle();
+        b.putString(CarrierConfigManager.KEY_CALL_COMPOSER_PICTURE_SERVER_URL_STRING,
+                FAKE_URL_BASE);
+        b.putInt(CarrierConfigManager.KEY_GBA_MODE_INT,
+                CarrierConfigManager.GBA_ME);
+        b.putInt(CarrierConfigManager.KEY_GBA_UA_SECURITY_ORGANIZATION_INT,
+                UaSecurityProtocolIdentifier.ORG_3GPP);
+        b.putInt(CarrierConfigManager.KEY_GBA_UA_SECURITY_PROTOCOL_INT,
+                UaSecurityProtocolIdentifier.UA_SECURITY_PROTOCOL_3GPP_TLS_DEFAULT);
+        b.putInt(CarrierConfigManager.KEY_GBA_UA_TLS_CIPHER_SUITE_INT,
+                TlsParams.TLS_RSA_WITH_AES_128_CBC_SHA);
+        when(telephonyManager.getCarrierConfig()).thenReturn(b);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        CallComposerPictureManager.sTestMode = originalTestMode;
+        CallComposerPictureManager.clearInstances();
+    }
+
+    @Test
+    public void testPictureUpload() throws Exception {
+        CallComposerPictureManager manager = CallComposerPictureManager.getInstance(context, 0);
+        manager.setCallLogProxy(mockCallLogProxy);
+        ImageData imageData = new ImageData(new byte[] {1,2,3,4},
+                "image/png", null);
+
+        CompletableFuture<UUID> uploadedUuidFuture = new CompletableFuture<>();
+        manager.handleUploadToServer(new CallComposerPictureTransfer.Factory() {
+            @Override
+            public CallComposerPictureTransfer create(Context context, int subscriptionId,
+                    String url, ExecutorService executorService) {
+                return mockPictureTransfer;
+            }
+        }, imageData, (pair) -> uploadedUuidFuture.complete(pair.first));
+
+        // Get the callback for later manipulation
+        ArgumentCaptor<CallComposerPictureTransfer.PictureCallback> callbackCaptor =
+                ArgumentCaptor.forClass(CallComposerPictureTransfer.PictureCallback.class);
+        verify(mockPictureTransfer).setCallback(callbackCaptor.capture());
+
+        // Make sure the upload method is called
+        ArgumentCaptor<GbaCredentialsSupplier> credSupplierCaptor =
+                ArgumentCaptor.forClass(GbaCredentialsSupplier.class);
+        ArgumentCaptor<ImageData> imageDataCaptor =
+                ArgumentCaptor.forClass(ImageData.class);
+        verify(mockPictureTransfer).uploadPicture(imageDataCaptor.capture(),
+                credSupplierCaptor.capture());
+
+        // Make sure the id field on the image data got filled in
+        ImageData sentData = imageDataCaptor.getValue();
+        assertArrayEquals(imageData.getImageBytes(), sentData.getImageBytes());
+        assertNotNull(sentData.getId());
+        String imageId = sentData.getId();
+
+        testGbaCredLookup(credSupplierCaptor.getValue(), false);
+
+        // Trigger upload success, make sure that the internal state is consistent after the upload.
+        callbackCaptor.getValue().onUploadSuccessful(FAKE_URL);
+        UUID id = uploadedUuidFuture.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        assertEquals(imageId, id.toString());
+        assertEquals(FAKE_URL, manager.getServerUrlForImageId(id));
+
+        // Test the call log upload
+        CompletableFuture<Uri> callLogUriFuture = new CompletableFuture<>();
+        manager.storeUploadedPictureToCallLog(id, callLogUriFuture::complete);
+
+        ArgumentCaptor<OutcomeReceiver<Uri, CallLog.CallComposerLoggingException>>
+                callLogCallbackCaptor = ArgumentCaptor.forClass(OutcomeReceiver.class);
+
+        verify(mockCallLogProxy).storeCallComposerPictureAsUser(nullable(Context.class),
+                nullable(UserHandle.class), nullable(InputStream.class), nullable(Executor.class),
+                callLogCallbackCaptor.capture());
+        callLogCallbackCaptor.getValue().onResult(FAKE_CALLLOG_URI);
+        Uri receivedUri = callLogUriFuture.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        assertEquals(FAKE_CALLLOG_URI, receivedUri);
+    }
+
+    @Test
+    public void testPictureUploadWithAuthRefresh() throws Exception {
+        CallComposerPictureManager manager = CallComposerPictureManager.getInstance(context, 0);
+        manager.setCallLogProxy(mockCallLogProxy);
+        ImageData imageData = new ImageData(new byte[] {1,2,3,4},
+                "image/png", null);
+
+        CompletableFuture<UUID> uploadedUuidFuture = new CompletableFuture<>();
+        manager.handleUploadToServer(new CallComposerPictureTransfer.Factory() {
+            @Override
+            public CallComposerPictureTransfer create(Context context, int subscriptionId,
+                    String url, ExecutorService executorService) {
+                return mockPictureTransfer;
+            }
+        }, imageData, (pair) -> uploadedUuidFuture.complete(pair.first));
+
+        // Get the callback for later manipulation
+        ArgumentCaptor<CallComposerPictureTransfer.PictureCallback> callbackCaptor =
+                ArgumentCaptor.forClass(CallComposerPictureTransfer.PictureCallback.class);
+        verify(mockPictureTransfer).setCallback(callbackCaptor.capture());
+
+        // Make sure the upload method is called
+        verify(mockPictureTransfer).uploadPicture(nullable(ImageData.class),
+                nullable(GbaCredentialsSupplier.class));
+
+        // Simulate a auth-needed retry request
+        callbackCaptor.getValue().onRetryNeeded(true, 0);
+        waitForExecutorAction(CallComposerPictureManager.getExecutor(), TIMEOUT_MILLIS);
+
+        // Make sure upload gets called again immediately, and make sure that the new GBA creds
+        // are requested with a force-refresh.
+        ArgumentCaptor<GbaCredentialsSupplier> credSupplierCaptor =
+                ArgumentCaptor.forClass(GbaCredentialsSupplier.class);
+        verify(mockPictureTransfer, times(2)).uploadPicture(nullable(ImageData.class),
+                credSupplierCaptor.capture());
+
+        testGbaCredLookup(credSupplierCaptor.getValue(), true);
+    }
+
+    @Test
+    public void testPictureDownload() throws Exception {
+        ImageData imageData = new ImageData(new byte[] {1,2,3,4},
+                "image/png", null);
+        CallComposerPictureManager manager = CallComposerPictureManager.getInstance(context, 0);
+        manager.setCallLogProxy(mockCallLogProxy);
+
+        CompletableFuture<Uri> callLogUriFuture = new CompletableFuture<>();
+        manager.handleDownloadFromServer(new CallComposerPictureTransfer.Factory() {
+            @Override
+            public CallComposerPictureTransfer create(Context context, int subscriptionId,
+                    String url, ExecutorService executorService) {
+                return mockPictureTransfer;
+            }
+        }, FAKE_URL, (p) -> callLogUriFuture.complete(p.first));
+
+        // Get the callback for later manipulation
+        ArgumentCaptor<CallComposerPictureTransfer.PictureCallback> callbackCaptor =
+                ArgumentCaptor.forClass(CallComposerPictureTransfer.PictureCallback.class);
+        verify(mockPictureTransfer).setCallback(callbackCaptor.capture());
+
+        // Make sure the download method is called
+        ArgumentCaptor<GbaCredentialsSupplier> credSupplierCaptor =
+                ArgumentCaptor.forClass(GbaCredentialsSupplier.class);
+        verify(mockPictureTransfer).downloadPicture(credSupplierCaptor.capture());
+
+        testGbaCredLookup(credSupplierCaptor.getValue(), false);
+
+        // Trigger download success, make sure that the call log is called into next.
+        callbackCaptor.getValue().onDownloadSuccessful(imageData);
+        ArgumentCaptor<OutcomeReceiver<Uri, CallLog.CallComposerLoggingException>>
+                callLogCallbackCaptor = ArgumentCaptor.forClass(OutcomeReceiver.class);
+        verify(mockCallLogProxy).storeCallComposerPictureAsUser(nullable(Context.class),
+                nullable(UserHandle.class), nullable(InputStream.class), nullable(Executor.class),
+                callLogCallbackCaptor.capture());
+
+        callLogCallbackCaptor.getValue().onResult(FAKE_CALLLOG_URI);
+        Uri receivedUri = callLogUriFuture.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        assertEquals(FAKE_CALLLOG_URI, receivedUri);
+    }
+
+    @Test
+    public void testPictureDownloadWithAuthRefresh() throws Exception {
+        CallComposerPictureManager manager = CallComposerPictureManager.getInstance(context, 0);
+        manager.setCallLogProxy(mockCallLogProxy);
+
+        CompletableFuture<Uri> callLogUriFuture = new CompletableFuture<>();
+        manager.handleDownloadFromServer(new CallComposerPictureTransfer.Factory() {
+            @Override
+            public CallComposerPictureTransfer create(Context context, int subscriptionId,
+                    String url, ExecutorService executorService) {
+                return mockPictureTransfer;
+            }
+        }, FAKE_URL, (p) -> callLogUriFuture.complete(p.first));
+
+        // Get the callback for later manipulation
+        ArgumentCaptor<CallComposerPictureTransfer.PictureCallback> callbackCaptor =
+                ArgumentCaptor.forClass(CallComposerPictureTransfer.PictureCallback.class);
+        verify(mockPictureTransfer).setCallback(callbackCaptor.capture());
+
+        // Make sure the download method is called
+        verify(mockPictureTransfer).downloadPicture(nullable(GbaCredentialsSupplier.class));
+
+        // Simulate a auth-needed retry request
+        callbackCaptor.getValue().onRetryNeeded(true, 0);
+        waitForExecutorAction(CallComposerPictureManager.getExecutor(), TIMEOUT_MILLIS);
+
+        // Make sure download gets called again immediately, and make sure that the new GBA creds
+        // are requested with a force-refresh.
+        ArgumentCaptor<GbaCredentialsSupplier> credSupplierCaptor =
+                ArgumentCaptor.forClass(GbaCredentialsSupplier.class);
+        verify(mockPictureTransfer, times(2)).downloadPicture(credSupplierCaptor.capture());
+
+        testGbaCredLookup(credSupplierCaptor.getValue(), true);
+    }
+
+
+    public void testGbaCredLookup(GbaCredentialsSupplier supplier, boolean forceExpected)
+            throws Exception {
+        String fakeNafId = "https://3GPP-bootstrapping@www.example.com";
+        byte[] fakeKey = new byte[] {1, 2, 3, 4, 5};
+        String fakeTxId = "89sdfjggf";
+
+        ArgumentCaptor<TelephonyManager.BootstrapAuthenticationCallback> authCallbackCaptor =
+                ArgumentCaptor.forClass(TelephonyManager.BootstrapAuthenticationCallback.class);
+
+        CompletableFuture<GbaCredentials> credsFuture =
+                supplier.getCredentials(fakeNafId, CallComposerPictureManager.getExecutor());
+        verify(telephonyManager).bootstrapAuthenticationRequest(anyInt(),
+                eq(Uri.parse(fakeNafId)),
+                nullable(UaSecurityProtocolIdentifier.class), eq(forceExpected),
+                nullable(Executor.class),
+                authCallbackCaptor.capture());
+        authCallbackCaptor.getValue().onKeysAvailable(fakeKey, fakeTxId);
+        GbaCredentials creds = credsFuture.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        assertEquals(fakeTxId, creds.getTransactionId());
+        assertArrayEquals(fakeKey, creds.getKey());
+
+
+        // Do it again and see if we make another request, then make sure that matches up with what
+        // we expected.
+        CompletableFuture<GbaCredentials> credsFuture1 =
+                supplier.getCredentials(fakeNafId, CallComposerPictureManager.getExecutor());
+        verify(telephonyManager, times(forceExpected ? 2 : 1))
+                .bootstrapAuthenticationRequest(anyInt(), eq(Uri.parse(fakeNafId)),
+                        nullable(UaSecurityProtocolIdentifier.class),
+                        eq(forceExpected),
+                        nullable(Executor.class),
+                        authCallbackCaptor.capture());
+        authCallbackCaptor.getValue().onKeysAvailable(fakeKey, fakeTxId);
+        GbaCredentials creds1 = credsFuture1.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        assertEquals(fakeTxId, creds1.getTransactionId());
+        assertArrayEquals(fakeKey, creds1.getKey());
+    }
+
+    private static boolean waitForExecutorAction(
+            ExecutorService executorService, long timeoutMillis) {
+        CompletableFuture<Void> f = new CompletableFuture<>();
+        executorService.execute(() -> f.complete(null));
+        try {
+            f.get(timeoutMillis, TimeUnit.MILLISECONDS);
+        } catch (TimeoutException e) {
+            return false;
+        } catch (InterruptedException | ExecutionException e) {
+            throw new RuntimeException(e);
+        }
+        return true;
+    }
+}
diff --git a/tests/src/com/android/services/telephony/ImsConferenceControllerTest.java b/tests/src/com/android/services/telephony/ImsConferenceControllerTest.java
index edfc34f..33c8b8a 100644
--- a/tests/src/com/android/services/telephony/ImsConferenceControllerTest.java
+++ b/tests/src/com/android/services/telephony/ImsConferenceControllerTest.java
@@ -27,8 +27,6 @@
 import android.os.Looper;
 import android.test.suitebuilder.annotation.SmallTest;
 
-import com.android.internal.telephony.PhoneConstants;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
@@ -112,12 +110,10 @@
     @Test
     @SmallTest
     public void testMergeMultiPartyCalls() {
-        when(mTestTelephonyConnectionA.mMockRadioConnection.getPhoneType())
-                .thenReturn(PhoneConstants.PHONE_TYPE_IMS);
-        when(mTestTelephonyConnectionB.mMockRadioConnection.getPhoneType())
-                .thenReturn(PhoneConstants.PHONE_TYPE_IMS);
-        when(mTestTelephonyConnectionA.mMockRadioConnection.isMultiparty()).thenReturn(true);
-        when(mTestTelephonyConnectionB.mMockRadioConnection.isMultiparty()).thenReturn(true);
+        mTestTelephonyConnectionA.setIsImsConnection(true);
+        mTestTelephonyConnectionB.setIsImsConnection(true);
+        when(mTestTelephonyConnectionA.mImsPhoneConnection.isMultiparty()).thenReturn(true);
+        when(mTestTelephonyConnectionB.mImsPhoneConnection.isMultiparty()).thenReturn(true);
 
         mControllerTest.add(mTestTelephonyConnectionB);
         mControllerTest.add(mTestTelephonyConnectionA);
diff --git a/tests/src/com/android/services/telephony/ImsConferenceTest.java b/tests/src/com/android/services/telephony/ImsConferenceTest.java
index 7e6488d..3bc5ee8 100644
--- a/tests/src/com/android/services/telephony/ImsConferenceTest.java
+++ b/tests/src/com/android/services/telephony/ImsConferenceTest.java
@@ -577,6 +577,51 @@
     }
 
     /**
+     * Similar to {@link #testLocalDisconnectOnEmptyConference()}, except tests the case where the
+     * conference first drops to a single participant, triggering single party conference emulation.
+     * Ensure that we will still recognize this and disconnect the conference.
+     * @throws Exception
+     */
+    @Test
+    @SmallTest
+    public void testLocalDisconnectOnEmptySinglePartyConference() throws Exception {
+        when(mMockTelecomAccountRegistry.isUsingSimCallManager(any(PhoneAccountHandle.class)))
+                .thenReturn(false);
+
+        ImsConference imsConference = new ImsConference(mMockTelecomAccountRegistry,
+                mMockTelephonyConnectionServiceProxy, mConferenceHost,
+                null /* phoneAccountHandle */, () -> false /* featureFlagProxy */,
+                new ImsConference.CarrierConfiguration.Builder()
+                        .setShouldLocalDisconnectEmptyConference(true)
+                        .build());
+
+        ConferenceParticipant participant1 = new ConferenceParticipant(
+                Uri.parse("tel:6505551212"),
+                "A",
+                Uri.parse("sip:6505551212@testims.com"),
+                Connection.STATE_ACTIVE,
+                Call.Details.DIRECTION_INCOMING);
+        ConferenceParticipant participant2 = new ConferenceParticipant(
+                Uri.parse("tel:6505551213"),
+                "A",
+                Uri.parse("sip:6505551213@testims.com"),
+                Connection.STATE_ACTIVE,
+                Call.Details.DIRECTION_INCOMING);
+        imsConference.handleConferenceParticipantsUpdate(mConferenceHost,
+                Arrays.asList(participant1, participant2));
+        assertEquals(2, imsConference.getNumberOfParticipants());
+
+        // Drop to 1 participant which enters single party mode.
+        imsConference.handleConferenceParticipantsUpdate(mConferenceHost,
+                Arrays.asList(participant1));
+
+        // Drop to 0 participants; should have a hangup request.
+        imsConference.handleConferenceParticipantsUpdate(mConferenceHost, Collections.emptyList());
+        assertEquals(0, imsConference.getNumberOfParticipants());
+        verify(mConferenceHost.mMockCall).hangup();
+    }
+
+    /**
      * Verifies that an ImsConference can handle SIP and TEL URIs for both the P-Associated-Uri and
      * conference event package identities.
      */
diff --git a/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java b/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
index b761959..4ce94ca 100644
--- a/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
+++ b/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
@@ -26,10 +26,10 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
@@ -42,8 +42,6 @@
 import android.os.AsyncResult;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Message;
 import android.telecom.ConnectionRequest;
 import android.telecom.DisconnectCause;
 import android.telecom.PhoneAccountHandle;
@@ -58,6 +56,8 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.TelephonyTestBase;
+import com.android.internal.telecom.IConnectionService;
+import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Connection;
 import com.android.internal.telephony.Phone;
@@ -84,6 +84,23 @@
 
 @RunWith(AndroidJUnit4.class)
 public class TelephonyConnectionServiceTest extends TelephonyTestBase {
+    /**
+     * Unlike {@link TestTelephonyConnection}, a bare minimal {@link TelephonyConnection} impl
+     * that does not try to configure anything.
+     */
+    public static class SimpleTelephonyConnection extends TelephonyConnection {
+        public boolean wasDisconnected = false;
+
+        @Override
+        public TelephonyConnection cloneConnection() {
+            return null;
+        }
+
+        @Override
+        public void hangup(int telephonyDisconnectCode) {
+            wasDisconnected = true;
+        }
+    }
 
     private static final long TIMEOUT_MS = 100;
     private static final int SLOT_0_PHONE_ID = 0;
@@ -107,13 +124,18 @@
     @Mock TelephonyConnectionService.PhoneSwitcherProxy mPhoneSwitcherProxy;
     @Mock TelephonyConnectionService.PhoneNumberUtilsProxy mPhoneNumberUtilsProxy;
     @Mock TelephonyConnectionService.PhoneUtilsProxy mPhoneUtilsProxy;
-    @Mock TelephonyConnectionService.HandlerFactory mHandlerFactory;
     @Mock TelephonyConnectionService.DisconnectCauseFactory mDisconnectCauseFactory;
     @Mock Handler mMockHandler;
     @Mock EmergencyNumberTracker mEmergencyNumberTracker;
     @Mock PhoneSwitcher mPhoneSwitcher;
     @Mock RadioOnHelper mRadioOnHelper;
     @Mock ServiceStateTracker mSST;
+    @Mock Call mCall;
+    @Mock Call mCall2;
+    @Mock com.android.internal.telephony.Connection mInternalConnection;
+    @Mock com.android.internal.telephony.Connection mInternalConnection2;
+    private Phone mPhone0;
+    private Phone mPhone1;
 
     private static class TestTelephonyConnectionService extends TelephonyConnectionService {
 
@@ -132,6 +154,7 @@
     }
 
     private TelephonyConnectionService mTestConnectionService;
+    private IConnectionService.Stub mBinderStub;
 
     @Before
     public void setUp() throws Exception {
@@ -147,11 +170,6 @@
                 .thenAnswer(invocation -> invocation.getArgument(1));
         mTestConnectionService.setPhoneNumberUtilsProxy(mPhoneNumberUtilsProxy);
         mTestConnectionService.setPhoneUtilsProxy(mPhoneUtilsProxy);
-        HandlerThread mockHandlerThread = mock(HandlerThread.class);
-        doReturn(mockHandlerThread).when(mHandlerFactory).createHandlerThread(anyString());
-        doReturn(null).when(mockHandlerThread).getLooper();
-        doReturn(mMockHandler).when(mHandlerFactory).createHandler(any());
-        mTestConnectionService.setHandlerFactory(mHandlerFactory);
         mTestConnectionService.setDeviceState(mDeviceState);
         mTestConnectionService.setRadioOnHelper(mRadioOnHelper);
         doReturn(new DisconnectCause(DisconnectCause.UNKNOWN)).when(mDisconnectCauseFactory)
@@ -161,6 +179,7 @@
         mTestConnectionService.setDisconnectCauseFactory(mDisconnectCauseFactory);
         mTestConnectionService.onCreate();
         mTestConnectionService.setTelephonyManagerProxy(mTelephonyManagerProxy);
+        mBinderStub = (IConnectionService.Stub) mTestConnectionService.onBind(null);
     }
 
     @After
@@ -648,7 +667,7 @@
         // was redialed on the same slot
         assertEquals(0, c.getNotifyPhoneAccountChangedCount());
         try {
-            verify(slot0Phone).dial(anyString(), any());
+            verify(slot0Phone).dial(anyString(), any(), any());
         } catch (CallStateException e) {
             // This shouldn't happen
             fail();
@@ -679,7 +698,7 @@
         // was never redialed
         assertEquals(0, c.getNotifyPhoneAccountChangedCount());
         try {
-            verify(slot0Phone, never()).dial(anyString(), any());
+            verify(slot0Phone, never()).dial(anyString(), any(), any());
         } catch (CallStateException e) {
             // This shouldn't happen
             fail();
@@ -722,7 +741,7 @@
         // redialed on another slot
         assertEquals(1, c.getNotifyPhoneAccountChangedCount());
         try {
-            verify(slot1Phone).dial(anyString(), any());
+            verify(slot1Phone).dial(anyString(), any(), any());
         } catch (CallStateException e) {
             // This shouldn't happen
             fail();
@@ -763,7 +782,7 @@
         // redialed on another slot
         assertEquals(1, c.getNotifyPhoneAccountChangedCount());
         try {
-            verify(slot1Phone).dial(anyString(), any());
+            verify(slot1Phone).dial(anyString(), any(), any());
         } catch (CallStateException e) {
             // This shouldn't happen
             fail();
@@ -817,8 +836,8 @@
         // redialed on another slot
         assertEquals(2, c.getNotifyPhoneAccountChangedCount());
         try {
-            verify(slot0Phone).dial(anyString(), any());
-            verify(slot1Phone).dial(anyString(), any());
+            verify(slot0Phone).dial(anyString(), any(), any());
+            verify(slot1Phone).dial(anyString(), any(), any());
         } catch (CallStateException e) {
             // This shouldn't happen
             fail();
@@ -870,8 +889,8 @@
         // redialed on another slot
         assertEquals(1, c.getNotifyPhoneAccountChangedCount());
         try {
-            verify(slot1Phone).dial(anyString(), any());
-            verify(slot0Phone, never()).dial(anyString(), any());
+            verify(slot1Phone).dial(anyString(), any(), any());
+            verify(slot0Phone, never()).dial(anyString(), any(), any());
         } catch (CallStateException e) {
             // This shouldn't happen
             fail();
@@ -931,22 +950,20 @@
     @Test
     @SmallTest
     public void testCreateOutgoingEmergencyConnection_delayDial_carrierconfig_dds() {
-        Phone testPhone = setupConnectionServiceForDelayDial();
-        Runnable delayDialRunnable = verifyRunnablePosted();
-
         // Setup test to not support SUPL on the non-DDS subscription
         doReturn(true).when(mDeviceState).isSuplDdsSwitchRequiredForEmergencyCall(any());
         getTestContext().getCarrierConfig(0 /*subId*/).putStringArray(
                 CarrierConfigManager.Gps.KEY_ES_SUPL_DATA_PLANE_ONLY_ROAMING_PLMN_STRING_ARRAY,
                 null);
-        testPhone.getServiceState().setRoaming(false);
         getTestContext().getCarrierConfig(0 /*subId*/).putInt(
                 CarrierConfigManager.Gps.KEY_ES_SUPL_CONTROL_PLANE_SUPPORT_INT,
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_DP_ONLY);
         getTestContext().getCarrierConfig(0 /*subId*/).putString(
                 CarrierConfigManager.Gps.KEY_ES_EXTENSION_SEC_STRING, "150");
-        delayDialRunnable.run();
 
+        Phone testPhone = setupConnectionServiceForDelayDial(
+                false /* isRoaming */, false /* setOperatorName */, null /* operator long name*/,
+                        null /* operator short name */, null /* operator numeric name */);
         verify(mPhoneSwitcher).overrideDefaultDataForEmergency(eq(0) /*phoneId*/ ,
                 eq(150) /*extensionTime*/, any());
     }
@@ -997,12 +1014,10 @@
         assertTrue(callback.getValue().isOkToCall(testPhone, ServiceState.STATE_OUT_OF_SERVICE));
 
         callback.getValue().onComplete(null, true);
-        Runnable delayDialRunnable = verifyRunnablePosted();
 
         try {
             doAnswer(invocation -> null).when(mContext).startActivity(any());
-            delayDialRunnable.run();
-            verify(testPhone).dial(anyString(), any());
+            verify(testPhone).dial(anyString(), any(), any());
         } catch (CallStateException e) {
             // This shouldn't happen
             fail();
@@ -1016,22 +1031,20 @@
     @Test
     @SmallTest
     public void testCreateOutgoingEmergencyConnection_delayDial_nocarrierconfig() {
-        Phone testPhone = setupConnectionServiceForDelayDial();
-        Runnable delayDialRunnable = verifyRunnablePosted();
-
         // Setup test to not support SUPL on the non-DDS subscription
         doReturn(true).when(mDeviceState).isSuplDdsSwitchRequiredForEmergencyCall(any());
         getTestContext().getCarrierConfig(0 /*subId*/).putStringArray(
                 CarrierConfigManager.Gps.KEY_ES_SUPL_DATA_PLANE_ONLY_ROAMING_PLMN_STRING_ARRAY,
                 null);
-        testPhone.getServiceState().setRoaming(false);
         getTestContext().getCarrierConfig(0 /*subId*/).putInt(
                 CarrierConfigManager.Gps.KEY_ES_SUPL_CONTROL_PLANE_SUPPORT_INT,
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_CP_FALLBACK);
         getTestContext().getCarrierConfig(0 /*subId*/).putString(
                 CarrierConfigManager.Gps.KEY_ES_EXTENSION_SEC_STRING, "0");
-        delayDialRunnable.run();
 
+        Phone testPhone = setupConnectionServiceForDelayDial(
+                false /* isRoaming */, false /* setOperatorName */, null /* operator long name*/,
+                        null /* operator short name */, null /* operator numeric name */);
         verify(mPhoneSwitcher, never()).overrideDefaultDataForEmergency(anyInt(), anyInt(), any());
     }
 
@@ -1042,22 +1055,20 @@
     @Test
     @SmallTest
     public void testCreateOutgoingEmergencyConnection_delayDial_supportsuplondds() {
-        Phone testPhone = setupConnectionServiceForDelayDial();
-        Runnable delayDialRunnable = verifyRunnablePosted();
-
         // If the non-DDS supports SUPL, dont switch data
         doReturn(false).when(mDeviceState).isSuplDdsSwitchRequiredForEmergencyCall(any());
         getTestContext().getCarrierConfig(0 /*subId*/).putStringArray(
                 CarrierConfigManager.Gps.KEY_ES_SUPL_DATA_PLANE_ONLY_ROAMING_PLMN_STRING_ARRAY,
                 null);
-        testPhone.getServiceState().setRoaming(false);
         getTestContext().getCarrierConfig(0 /*subId*/).putInt(
                 CarrierConfigManager.Gps.KEY_ES_SUPL_CONTROL_PLANE_SUPPORT_INT,
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_DP_ONLY);
         getTestContext().getCarrierConfig(0 /*subId*/).putString(
                 CarrierConfigManager.Gps.KEY_ES_EXTENSION_SEC_STRING, "0");
-        delayDialRunnable.run();
 
+        Phone testPhone = setupConnectionServiceForDelayDial(
+                false /* isRoaming */, false /* setOperatorName */, null /* operator long name*/,
+                         null /* operator short name */, null /* operator numeric name */);
         verify(mPhoneSwitcher, never()).overrideDefaultDataForEmergency(anyInt(), anyInt(), any());
     }
 
@@ -1068,22 +1079,20 @@
     @Test
     @SmallTest
     public void testCreateOutgoingEmergencyConnection_delayDial_roaming_nocarrierconfig() {
-        Phone testPhone = setupConnectionServiceForDelayDial();
-        Runnable delayDialRunnable = verifyRunnablePosted();
-
         // Setup test to not support SUPL on the non-DDS subscription
         doReturn(true).when(mDeviceState).isSuplDdsSwitchRequiredForEmergencyCall(any());
         getTestContext().getCarrierConfig(0 /*subId*/).putStringArray(
                 CarrierConfigManager.Gps.KEY_ES_SUPL_DATA_PLANE_ONLY_ROAMING_PLMN_STRING_ARRAY,
                 null);
-        testPhone.getServiceState().setRoaming(true);
         getTestContext().getCarrierConfig(0 /*subId*/).putInt(
                 CarrierConfigManager.Gps.KEY_ES_SUPL_CONTROL_PLANE_SUPPORT_INT,
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_DP_ONLY);
         getTestContext().getCarrierConfig(0 /*subId*/).putString(
                 CarrierConfigManager.Gps.KEY_ES_EXTENSION_SEC_STRING, "0");
-        delayDialRunnable.run();
 
+        Phone testPhone = setupConnectionServiceForDelayDial(
+                true /* isRoaming */, false /* setOperatorName */, null /* operator long name*/,
+                         null /* operator short name */, null /* operator numeric name */);
         verify(mPhoneSwitcher, never()).overrideDefaultDataForEmergency(anyInt(), anyInt(), any());
     }
 
@@ -1095,16 +1104,10 @@
     @Test
     @SmallTest
     public void testCreateOutgoingEmergencyConnection_delayDial_roamingcarrierconfig() {
-        Phone testPhone = setupConnectionServiceForDelayDial();
-        Runnable delayDialRunnable = verifyRunnablePosted();
-
+        doReturn(true).when(mDeviceState).isSuplDdsSwitchRequiredForEmergencyCall(any());
         // Setup voice roaming scenario
         String testRoamingOperator = "001001";
-        // In some roaming conditions, we are not technically "roaming"
-        testPhone.getServiceState().setRoaming(false);
-        testPhone.getServiceState().setOperatorName("TestTel", "TestTel", testRoamingOperator);
         // Setup test to not support SUPL on the non-DDS subscription
-        doReturn(true).when(mDeviceState).isSuplDdsSwitchRequiredForEmergencyCall(any());
         String[] roamingPlmns = new String[1];
         roamingPlmns[0] = testRoamingOperator;
         getTestContext().getCarrierConfig(0 /*subId*/).putStringArray(
@@ -1115,8 +1118,11 @@
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_CP_FALLBACK);
         getTestContext().getCarrierConfig(0 /*subId*/).putString(
                 CarrierConfigManager.Gps.KEY_ES_EXTENSION_SEC_STRING, "0");
-        delayDialRunnable.run();
 
+        Phone testPhone = setupConnectionServiceForDelayDial(
+                false /* isRoaming */, true /* setOperatorName */,
+                        "TestTel" /* operator long name*/, "TestTel" /* operator short name */,
+                                testRoamingOperator /* operator numeric name */);
         verify(mPhoneSwitcher).overrideDefaultDataForEmergency(eq(0) /*phoneId*/ ,
                 eq(0) /*extensionTime*/, any());
     }
@@ -1129,15 +1135,10 @@
     @Test
     @SmallTest
     public void testCreateOutgoingEmergencyConnection_delayDial__roaming_roamingcarrierconfig() {
-        Phone testPhone = setupConnectionServiceForDelayDial();
-        Runnable delayDialRunnable = verifyRunnablePosted();
-
-        // Setup voice roaming scenario
-        String testRoamingOperator = "001001";
-        testPhone.getServiceState().setRoaming(true);
-        testPhone.getServiceState().setOperatorName("TestTel", "TestTel", testRoamingOperator);
         // Setup test to not support SUPL on the non-DDS subscription
         doReturn(true).when(mDeviceState).isSuplDdsSwitchRequiredForEmergencyCall(any());
+        // Setup voice roaming scenario
+        String testRoamingOperator = "001001";
         String[] roamingPlmns = new String[1];
         roamingPlmns[0] = testRoamingOperator;
         getTestContext().getCarrierConfig(0 /*subId*/).putStringArray(
@@ -1148,17 +1149,225 @@
                 CarrierConfigManager.Gps.SUPL_EMERGENCY_MODE_TYPE_CP_FALLBACK);
         getTestContext().getCarrierConfig(0 /*subId*/).putString(
                 CarrierConfigManager.Gps.KEY_ES_EXTENSION_SEC_STRING, "0");
-        delayDialRunnable.run();
 
+        Phone testPhone = setupConnectionServiceForDelayDial(
+                false /* isRoaming */, true /* setOperatorName */,
+                        "TestTel" /* operator long name*/, "TestTel" /* operator short name */,
+                                testRoamingOperator /* operator numeric name */);
         verify(mPhoneSwitcher).overrideDefaultDataForEmergency(eq(0) /*phoneId*/ ,
                 eq(0) /*extensionTime*/, any());
     }
 
     /**
+     * Verifies for an incoming call on the same SIM that we don't set
+     * {@link android.telecom.Connection#EXTRA_ANSWERING_DROPS_FG_CALL} on the incoming call extras.
+     * @throws Exception
+     */
+    @Test
+    @SmallTest
+    public void testIncomingDoesntRequestDisconnect() throws Exception {
+        setupForCallTest();
+
+        mBinderStub.createConnection(PHONE_ACCOUNT_HANDLE_1, "TC@1",
+                new ConnectionRequest(PHONE_ACCOUNT_HANDLE_1, Uri.parse("tel:16505551212"),
+                        new Bundle()),
+                true, false, null);
+        waitForHandlerAction(mTestConnectionService.getHandler(), TIMEOUT_MS);
+        assertEquals(1, mTestConnectionService.getAllConnections().size());
+
+        // Make sure the extras do not indicate that it answering will disconnect another call.
+        android.telecom.Connection connection = (android.telecom.Connection)
+                mTestConnectionService.getAllConnections().toArray()[0];
+        assertFalse(connection.getExtras() != null && connection.getExtras().containsKey(
+                android.telecom.Connection.EXTRA_ANSWERING_DROPS_FG_CALL));
+    }
+
+    /**
+     * Verifies where there is another call on the same sub, we don't set
+     * {@link android.telecom.Connection#EXTRA_ANSWERING_DROPS_FG_CALL} on the incoming call extras.
+     * @throws Exception
+     */
+    @Test
+    @SmallTest
+    public void testSecondCallSameSubWontDisconnect() throws Exception {
+        // Previous test gets us into a good enough state
+        testIncomingDoesntRequestDisconnect();
+
+        when(mCall.getState()).thenReturn(Call.State.ACTIVE);
+        when(mCall2.getState()).thenReturn(Call.State.WAITING);
+        when(mCall2.getLatestConnection()).thenReturn(mInternalConnection2);
+        when(mPhone0.getRingingCall()).thenReturn(mCall2);
+
+        mBinderStub.createConnection(PHONE_ACCOUNT_HANDLE_1, "TC@2",
+                new ConnectionRequest(PHONE_ACCOUNT_HANDLE_1, Uri.parse("tel:16505551213"),
+                        new Bundle()),
+                true, false, null);
+        waitForHandlerAction(mTestConnectionService.getHandler(), TIMEOUT_MS);
+        assertEquals(2, mTestConnectionService.getAllConnections().size());
+
+        // None of the connections should have the extra set.
+        assertEquals(0, mTestConnectionService.getAllConnections().stream()
+                .filter(c -> c.getExtras() != null && c.getExtras().containsKey(
+                        android.telecom.Connection.EXTRA_ANSWERING_DROPS_FG_CALL))
+                .count());
+    }
+
+    /**
+     * Verifies where there is another call on the same sub, we don't set
+     * {@link android.telecom.Connection#EXTRA_ANSWERING_DROPS_FG_CALL} on the incoming call extras.
+     * @throws Exception
+     */
+    @Test
+    @SmallTest
+    public void testSecondCallDifferentSubWillDisconnect() throws Exception {
+        // Previous test gets us into a good enough state
+        testIncomingDoesntRequestDisconnect();
+
+        when(mCall.getState()).thenReturn(Call.State.ACTIVE);
+        when(mCall2.getState()).thenReturn(Call.State.WAITING);
+        when(mCall2.getLatestConnection()).thenReturn(mInternalConnection2);
+        // At this point the call is ringing on the second phone.
+        when(mPhone0.getRingingCall()).thenReturn(null);
+        when(mPhone1.getRingingCall()).thenReturn(mCall2);
+
+        mBinderStub.createConnection(PHONE_ACCOUNT_HANDLE_2, "TC@2",
+                new ConnectionRequest(PHONE_ACCOUNT_HANDLE_2, Uri.parse("tel:16505551213"),
+                        new Bundle()),
+                true, false, null);
+        waitForHandlerAction(mTestConnectionService.getHandler(), TIMEOUT_MS);
+        assertEquals(2, mTestConnectionService.getAllConnections().size());
+
+        // The incoming connection should have the extra set.
+        assertEquals(1, mTestConnectionService.getAllConnections().stream()
+                .filter(c -> c.getExtras() != null && c.getExtras().containsKey(
+                        android.telecom.Connection.EXTRA_ANSWERING_DROPS_FG_CALL))
+                .count());
+    }
+
+    private static final PhoneAccountHandle SUB1_HANDLE = new PhoneAccountHandle(
+            new ComponentName("test", "class"), "1");
+    private static final PhoneAccountHandle SUB2_HANDLE = new PhoneAccountHandle(
+            new ComponentName("test", "class"), "2");
+
+    @Test
+    @SmallTest
+    public void testDontDisconnectSameSub() {
+        ArrayList<android.telecom.Connection> tcs = new ArrayList<>();
+        SimpleTelephonyConnection tc1 = createTestConnection(SUB1_HANDLE, 0, false);
+        tcs.add(tc1);
+        TelephonyConnectionService.maybeDisconnectCallsOnOtherSubs(tcs, SUB1_HANDLE);
+        // Would've preferred to use mockito, but can't mock out TelephonyConnection/Connection
+        // easily.
+        assertFalse(tc1.wasDisconnected);
+    }
+
+    @Test
+    @SmallTest
+    public void testDontDisconnectEmergency() {
+        ArrayList<android.telecom.Connection> tcs = new ArrayList<>();
+        SimpleTelephonyConnection tc1 = createTestConnection(SUB1_HANDLE, 0, true);
+        tcs.add(tc1);
+        TelephonyConnectionService.maybeDisconnectCallsOnOtherSubs(tcs, SUB2_HANDLE);
+        // Other call is an emergency call, so don't disconnect it.
+        assertFalse(tc1.wasDisconnected);
+    }
+
+    @Test
+    @SmallTest
+    public void testDontDisconnectExternal() {
+        ArrayList<android.telecom.Connection> tcs = new ArrayList<>();
+        SimpleTelephonyConnection tc1 = createTestConnection(SUB1_HANDLE,
+                android.telecom.Connection.PROPERTY_IS_EXTERNAL_CALL, false);
+        tcs.add(tc1);
+        TelephonyConnectionService.maybeDisconnectCallsOnOtherSubs(tcs, SUB2_HANDLE);
+        // Other call is an external call, so don't disconnect it.
+        assertFalse(tc1.wasDisconnected);
+    }
+
+    @Test
+    @SmallTest
+    public void testDisconnectDifferentSub() {
+        ArrayList<android.telecom.Connection> tcs = new ArrayList<>();
+        SimpleTelephonyConnection tc1 = createTestConnection(SUB1_HANDLE, 0, false);
+        tcs.add(tc1);
+        TelephonyConnectionService.maybeDisconnectCallsOnOtherSubs(tcs, SUB2_HANDLE);
+        assertTrue(tc1.wasDisconnected);
+    }
+
+    @Test
+    @SmallTest
+    public void testDisconnectDifferentSubTwoCalls() {
+        ArrayList<android.telecom.Connection> tcs = new ArrayList<>();
+        SimpleTelephonyConnection tc1 = createTestConnection(SUB1_HANDLE, 0, false);
+        SimpleTelephonyConnection tc2 = createTestConnection(SUB1_HANDLE, 0, false);
+
+        tcs.add(tc1);
+        tcs.add(tc2);
+        TelephonyConnectionService.maybeDisconnectCallsOnOtherSubs(tcs, SUB2_HANDLE);
+        assertTrue(tc1.wasDisconnected);
+        assertTrue(tc2.wasDisconnected);
+    }
+
+    private SimpleTelephonyConnection createTestConnection(PhoneAccountHandle handle,
+            int properties, boolean isEmergency) {
+        SimpleTelephonyConnection connection = new SimpleTelephonyConnection();
+        connection.setShouldTreatAsEmergencyCall(isEmergency);
+        connection.setConnectionProperties(properties);
+        connection.setPhoneAccountHandle(handle);
+        return connection;
+    }
+
+    /**
+     * Setup the mess of mocks for {@link #testSecondCallSameSubWontDisconnect()} and
+     * {@link #testIncomingDoesntRequestDisconnect()}.
+     */
+    private void setupForCallTest() {
+        // Setup a bunch of stuff.  Blech.
+        mTestConnectionService.setReadyForTest();
+        mPhone0 = makeTestPhone(0 /*phoneId*/, ServiceState.STATE_IN_SERVICE,
+                false /*isEmergencyOnly*/);
+        when(mCall.getState()).thenReturn(Call.State.INCOMING);
+        when(mCall.getPhone()).thenReturn(mPhone0);
+        when(mPhone0.getRingingCall()).thenReturn(mCall);
+        mPhone1 = makeTestPhone(1 /*phoneId*/, ServiceState.STATE_IN_SERVICE,
+                false /*isEmergencyOnly*/);
+        when(mCall2.getPhone()).thenReturn(mPhone1);
+        List<Phone> phones = new ArrayList<>(2);
+        doReturn(true).when(mPhone0).isRadioOn();
+        doReturn(true).when(mPhone1).isRadioOn();
+        doReturn(GSM_PHONE).when(mPhone0).getPhoneType();
+        doReturn(GSM_PHONE).when(mPhone1).getPhoneType();
+        phones.add(mPhone0);
+        phones.add(mPhone1);
+        setPhones(phones);
+        when(mPhoneUtilsProxy.getSubIdForPhoneAccountHandle(eq(PHONE_ACCOUNT_HANDLE_1)))
+                .thenReturn(0);
+        when(mSubscriptionManagerProxy.getPhoneId(0)).thenReturn(0);
+        when(mPhoneFactoryProxy.getPhone(eq(0))).thenReturn(mPhone0);
+        when(mPhoneUtilsProxy.getSubIdForPhoneAccountHandle(eq(PHONE_ACCOUNT_HANDLE_2)))
+                .thenReturn(1);
+        when(mSubscriptionManagerProxy.getPhoneId(1)).thenReturn(1);
+        when(mPhoneFactoryProxy.getPhone(eq(1))).thenReturn(mPhone1);
+        setupDeviceConfig(mPhone0, mPhone1, 1);
+
+        when(mInternalConnection.getCall()).thenReturn(mCall);
+        when(mInternalConnection.getState()).thenReturn(Call.State.ACTIVE);
+        when(mInternalConnection2.getCall()).thenReturn(mCall2);
+        when(mInternalConnection2.getState()).thenReturn(Call.State.WAITING);
+    }
+
+    /**
      * Set up a mock MSIM device with TEST_ADDRESS set as an emergency number.
+     * @param isRoaming whether it is roaming
+     * @param setOperatorName whether operator name needs to set
+     * @param operatorNameLongName the operator long name if needs to set
+     * @param operatorNameShortName the operator short name if needs to set
+     * @param operatorNameNumeric the operator numeric name if needs to set
      * @return the Phone associated with slot 0.
      */
-    private Phone setupConnectionServiceForDelayDial() {
+    private Phone setupConnectionServiceForDelayDial(boolean isRoaming, boolean setOperatorName,
+            String operatorNameLongName, String operatorNameShortName,
+                    String operatorNameNumeric) {
         ConnectionRequest connectionRequest = new ConnectionRequest.Builder()
                 .setAccountHandle(PHONE_ACCOUNT_HANDLE_1)
                 .setAddress(TEST_ADDRESS)
@@ -1183,15 +1392,17 @@
         emergencyNumbers.put(0 /*subId*/, numbers);
         doReturn(emergencyNumbers).when(mTelephonyManagerProxy).getCurrentEmergencyNumberList();
         doReturn(2).when(mTelephonyManagerProxy).getPhoneCount();
-
+        testPhone0.getServiceState().setRoaming(isRoaming);
+        if (setOperatorName) {
+            testPhone0.getServiceState().setOperatorName(operatorNameLongName,
+                    operatorNameShortName, operatorNameNumeric);
+        }
         mConnection = mTestConnectionService.onCreateOutgoingConnection(
                 PHONE_ACCOUNT_HANDLE_1, connectionRequest);
         assertNotNull("test connection was not set up correctly.", mConnection);
-
         return testPhone0;
     }
 
-
     /**
      * Set up a mock MSIM device with TEST_ADDRESS set as an emergency number in airplane mode.
      * @return the Phone associated with slot 0.
@@ -1231,15 +1442,6 @@
         return testPhone0;
     }
 
-    private Runnable verifyRunnablePosted() {
-        ArgumentCaptor<Message> runnableCaptor = ArgumentCaptor.forClass(Message.class);
-        verify(mMockHandler).sendMessageDelayed(runnableCaptor.capture(), anyLong());
-        assertNotNull("Invalid Message created", runnableCaptor.getValue());
-        Runnable runnable = runnableCaptor.getValue().getCallback();
-        assertNotNull("sendMessageDelayed never occurred.", runnableCaptor);
-        return runnable;
-    }
-
     private EmergencyNumber setupEmergencyNumber(Uri address) {
         return new EmergencyNumber(address.getSchemeSpecificPart(), "", "",
         EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED,
@@ -1248,11 +1450,11 @@
         EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY);
     }
 
-    private void setupHandleToPhoneMap(PhoneAccountHandle handle,  Phone phone) {
+    private void setupHandleToPhoneMap(PhoneAccountHandle handle, Phone phone) {
         // use subId 0
-        when(mPhoneUtilsProxy.getSubIdForPhoneAccountHandle(handle)).thenReturn(0);
-        when(mSubscriptionManagerProxy.getPhoneId(0)).thenReturn(0);
-        when(mPhoneFactoryProxy.getPhone(0)).thenReturn(phone);
+        when(mPhoneUtilsProxy.getSubIdForPhoneAccountHandle(eq(handle))).thenReturn(0);
+        when(mSubscriptionManagerProxy.getPhoneId(eq(0))).thenReturn(0);
+        when(mPhoneFactoryProxy.getPhone(eq(0))).thenReturn(phone);
     }
 
     private AsyncResult getSuppServiceNotification(int notificationType, int code) {
@@ -1273,6 +1475,8 @@
         when(phone.getDefaultPhone()).thenReturn(phone);
         when(phone.getEmergencyNumberTracker()).thenReturn(mEmergencyNumberTracker);
         when(phone.getServiceStateTracker()).thenReturn(mSST);
+        doNothing().when(phone).registerForPreciseCallStateChanged(any(Handler.class), anyInt(),
+                any(Object.class));
         when(mEmergencyNumberTracker.getEmergencyNumber(anyString())).thenReturn(null);
         return phone;
     }
@@ -1308,7 +1512,7 @@
 
     private void setPhonesDialConnection(Phone phone, Connection c) {
         try {
-            when(phone.dial(anyString(), any())).thenReturn(c);
+            when(phone.dial(anyString(), any(), any())).thenReturn(c);
         } catch (CallStateException e) {
             // this shouldn't happen
             fail();
diff --git a/tests/src/com/android/services/telephony/TelephonyConnectionTest.java b/tests/src/com/android/services/telephony/TelephonyConnectionTest.java
index 7d15680..388fd29 100644
--- a/tests/src/com/android/services/telephony/TelephonyConnectionTest.java
+++ b/tests/src/com/android/services/telephony/TelephonyConnectionTest.java
@@ -1,25 +1,215 @@
 package com.android.services.telephony;
 
 import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+import static junit.framework.TestCase.assertFalse;
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import android.os.Bundle;
 import android.telecom.Connection;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import android.telephony.CarrierConfigManager;
+import android.telephony.DisconnectCause;
 
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.internal.telephony.Call;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.d2d.DtmfTransport;
+import com.android.internal.telephony.d2d.RtpTransport;
+import com.android.internal.telephony.imsphone.ImsPhoneConnection;
+import com.android.phone.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
 @RunWith(AndroidJUnit4.class)
 public class TelephonyConnectionTest {
+    @Mock
+    private ImsPhoneConnection mImsPhoneConnection;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        when(mImsPhoneConnection.getState()).thenReturn(Call.State.ACTIVE);
+        when(mImsPhoneConnection.getPhoneType()).thenReturn(PhoneConstants.PHONE_TYPE_IMS);
+    }
+
+    /**
+     * Ensures an Ims connection uses the D2D communicator when it is enabled.
+     */
+    @Test
+    public void testSetupCommunicator() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        c.setIsImsConnection(true);
+        // Enable D2D comms.
+        when(c.mMockResources.getBoolean(eq(
+                R.bool.config_use_device_to_device_communication))).thenReturn(true);
+        c.getCarrierConfigBundle().putBoolean(
+                CarrierConfigManager.KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_DTMF_BOOL,
+                true);
+
+        c.setOriginalConnection(mImsPhoneConnection);
+        assertNotNull(c.getCommunicator());
+    }
+
+    /**
+     * Ensures an Ims connection does not use the D2D communicator when it is disabled.
+     */
+    @Test
+    public void testDoNotSetupCommunicatorWhenDisabled() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        c.setIsImsConnection(true);
+        // Disable D2D comms.
+        when(c.mMockResources.getBoolean(eq(
+                R.bool.config_use_device_to_device_communication))).thenReturn(false);
+
+        c.setOriginalConnection(mImsPhoneConnection);
+        assertNull(c.getCommunicator());
+    }
+
+    /**
+     * Ensures an Ims connection does not use the D2D communicator for a non-IMS call.
+     */
+    @Test
+    public void testDoNotSetupCommunicatorForNonIms() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        c.setIsImsConnection(false);
+        // Disable D2D comms.
+        when(c.mMockResources.getBoolean(eq(
+                R.bool.config_use_device_to_device_communication))).thenReturn(true);
+
+        c.setOriginalConnection(mImsPhoneConnection);
+        assertNull(c.getCommunicator());
+    }
+
+    /**
+     * Ensures an Ims connection does not use the D2D communicator when it is disabled.
+     */
+    @Test
+    public void testDoNotSetupCommunicatorNoTransports() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        c.setIsImsConnection(true);
+        // Enable D2D comms.
+        when(c.mMockResources.getBoolean(eq(
+                R.bool.config_use_device_to_device_communication))).thenReturn(true);
+        // But carrier disables transports.  Womp.
+        c.getCarrierConfigBundle().putBoolean(
+                CarrierConfigManager.KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_DTMF_BOOL,
+                false);
+        c.getCarrierConfigBundle().putBoolean(
+                CarrierConfigManager.KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_RTP_BOOL,
+                false);
+        c.setOriginalConnection(mImsPhoneConnection);
+        assertNull(c.getCommunicator());
+    }
+
+    @Test
+    public void testSetupRtpOnly() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        c.setIsImsConnection(true);
+        // Enable D2D comms.
+        when(c.mMockResources.getBoolean(eq(
+                R.bool.config_use_device_to_device_communication))).thenReturn(true);
+        // But carrier disables transports.  Womp.
+        c.getCarrierConfigBundle().putBoolean(
+                CarrierConfigManager.KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_DTMF_BOOL,
+                false);
+        c.getCarrierConfigBundle().putBoolean(
+                CarrierConfigManager.KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_RTP_BOOL,
+                true);
+        c.setOriginalConnection(mImsPhoneConnection);
+        assertNotNull(c.getCommunicator());
+        assertEquals(1, c.getCommunicator().getTransportProtocols().size());
+        assertTrue(c.getCommunicator().getTransportProtocols()
+                .stream().anyMatch(p -> p instanceof RtpTransport));
+    }
+
+    @Test
+    public void testHangupAfterRedial() throws Exception {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        c.hangup(DisconnectCause.LOCAL);
+        verify(c.mMockRadioConnection).hangup();
+
+        // hangup failed because redial was in progress... The new original connection has been sent
+        // to the TelephonyConnection
+        com.android.internal.telephony.Connection newMockRadioConnection =
+                mock(com.android.internal.telephony.Connection.class);
+        doReturn("5551212").when(c.mMockRadioConnection).getAddress();
+        doReturn("5551212").when(newMockRadioConnection).getAddress();
+        doReturn(Call.State.DIALING).when(newMockRadioConnection).getState();
+        c.onOriginalConnectionRedialed(newMockRadioConnection);
+        verify(newMockRadioConnection).hangup();
+    }
+
+    @Test
+    public void testSetupDtmfOnly() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        c.setIsImsConnection(true);
+        // Enable D2D comms.
+        when(c.mMockResources.getBoolean(eq(
+                R.bool.config_use_device_to_device_communication))).thenReturn(true);
+        // But carrier disables transports.  Womp.
+        c.getCarrierConfigBundle().putBoolean(
+                CarrierConfigManager.KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_DTMF_BOOL,
+                true);
+        c.getCarrierConfigBundle().putBoolean(
+                CarrierConfigManager.KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_RTP_BOOL,
+                false);
+        c.setOriginalConnection(mImsPhoneConnection);
+        assertNotNull(c.getCommunicator());
+        assertEquals(1, c.getCommunicator().getTransportProtocols().size());
+        assertTrue(c.getCommunicator().getTransportProtocols()
+                .stream().anyMatch(p -> p instanceof DtmfTransport));
+    }
 
     @Test
     public void testCodecInIms() {
         TestTelephonyConnection c = new TestTelephonyConnection();
+        c.setIsImsConnection(true);
         c.updateState();
         Bundle extras = c.getExtras();
         int codec = extras.getInt(Connection.EXTRA_AUDIO_CODEC, Connection.AUDIO_CODEC_NONE);
         assertEquals(codec, Connection.AUDIO_CODEC_AMR);
     }
 
+    @Test
+    public void testConferenceNotSupportedForDownGradedVideoCall() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        c.setIsImsConnection(true);
+        c.setIsVideoCall(false);
+        c.setWasVideoCall(true);
+        c.setDownGradeVideoCall(true);
+        c.refreshConferenceSupported();
+        assertFalse(c.isConferenceSupported());
+        c.setDownGradeVideoCall(false);
+        c.refreshConferenceSupported();
+        assertTrue(c.isConferenceSupported());
+    }
+
+    /**
+     * Tests to ensure that the presence of an ImsExternalConnection does not cause a crash in
+     * TelephonyConnection due to an illegal cast.
+     */
+    @Test
+    public void testImsExternalConnectionOnRefreshConference() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        c.setIsImsConnection(true);
+        c.setIsImsExternalConnection(true);
+        try {
+            c.refreshConferenceSupported();
+        } catch (ClassCastException e) {
+            fail("refreshConferenceSupported threw ClassCastException");
+        }
+    }
 }
diff --git a/tests/src/com/android/services/telephony/TestTelephonyConnection.java b/tests/src/com/android/services/telephony/TestTelephonyConnection.java
index 67e0329..817e9a7 100644
--- a/tests/src/com/android/services/telephony/TestTelephonyConnection.java
+++ b/tests/src/com/android/services/telephony/TestTelephonyConnection.java
@@ -16,29 +16,42 @@
 
 package com.android.services.telephony;
 
-import android.content.Context;
-import android.content.res.Resources;
-import android.os.Bundle;
-import android.os.PersistableBundle;
-import android.telecom.PhoneAccountHandle;
+import android.content.AttributionSource;
+import android.content.ContentResolver;
+import android.os.Process;
+import android.os.UserHandle;
 import android.telephony.TelephonyManager;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.notNull;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.PersistableBundle;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.VideoProfile;
+import android.telephony.CarrierConfigManager;
+
+import com.android.ims.ImsCall;
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Connection;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.emergency.EmergencyNumberTracker;
+import com.android.internal.telephony.imsphone.ImsExternalConnection;
+import com.android.internal.telephony.imsphone.ImsPhoneConnection;
 
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -59,6 +72,9 @@
     Context mMockContext;
 
     @Mock
+    ContentResolver mMockContentResolver;
+
+    @Mock
     Resources mMockResources;
 
     @Mock
@@ -67,14 +83,40 @@
     @Mock
     EmergencyNumberTracker mEmergencyNumberTracker;
 
+    @Mock
+    ImsPhoneConnection mImsPhoneConnection;
+
+    @Mock
+    ImsExternalConnection mImsExternalConnection;
+
+    @Mock
+    ImsCall mImsCall;
+
+    @Mock
+    TelecomAccountRegistry mTelecomAccountRegistry;
+
+    @Mock
+    CarrierConfigManager mCarrierConfigManager;
+
+    private boolean mIsImsConnection;
+    private boolean mIsImsExternalConnection;
+    private boolean mIsConferenceSupported = true;
     private Phone mMockPhone;
     private int mNotifyPhoneAccountChangedCount = 0;
     private List<String> mLastConnectionEvents = new ArrayList<>();
     private List<Bundle> mLastConnectionEventExtras = new ArrayList<>();
+    private Object mLock = new Object();
+    private PersistableBundle mCarrierConfig = new PersistableBundle();
 
     @Override
     public com.android.internal.telephony.Connection getOriginalConnection() {
-        return mMockRadioConnection;
+        if (mIsImsExternalConnection) {
+            return mImsExternalConnection;
+        } else if (mIsImsConnection) {
+            return mImsPhoneConnection;
+        } else {
+            return mMockRadioConnection;
+        }
     }
 
     @Override
@@ -86,6 +128,11 @@
         super(null, null, android.telecom.Call.Details.DIRECTION_INCOMING);
         MockitoAnnotations.initMocks(this);
 
+        AttributionSource attributionSource = new AttributionSource.Builder(
+                Process.myUid()).build();
+
+        mIsImsConnection = false;
+        mIsImsExternalConnection = false;
         mMockPhone = mock(Phone.class);
         mMockContext = mock(Context.class);
         mMockTelephonyManager = mock(TelephonyManager.class);
@@ -95,8 +142,11 @@
         when(mOriginalConnection.getState()).thenReturn(Call.State.ACTIVE);
         when(mMockRadioConnection.getAudioCodec()).thenReturn(
                 android.telecom.Connection.AUDIO_CODEC_AMR);
+        when(mImsPhoneConnection.getAudioCodec()).thenReturn(
+                android.telecom.Connection.AUDIO_CODEC_AMR);
         when(mMockRadioConnection.getCall()).thenReturn(mMockCall);
         when(mMockRadioConnection.getPhoneType()).thenReturn(PhoneConstants.PHONE_TYPE_IMS);
+        when(mImsPhoneConnection.getPhoneType()).thenReturn(PhoneConstants.PHONE_TYPE_IMS);
         doNothing().when(mMockRadioConnection).addListener(any(Connection.Listener.class));
         doNothing().when(mMockRadioConnection).addPostDialListener(
                 any(Connection.PostDialListener.class));
@@ -106,13 +156,28 @@
         when(mMockPhone.getContext()).thenReturn(mMockContext);
         when(mMockPhone.getCurrentSubscriberUris()).thenReturn(null);
         when(mMockContext.getResources()).thenReturn(mMockResources);
+        when(mMockContext.getContentResolver()).thenReturn(mMockContentResolver);
         when(mMockContext.getSystemService(Context.TELEPHONY_SERVICE))
                 .thenReturn(mMockTelephonyManager);
+        when(mMockContext.getAttributionSource()).thenReturn(attributionSource);
+        when(mMockContentResolver.getUserId()).thenReturn(UserHandle.USER_CURRENT);
+        when(mMockContentResolver.getAttributionSource()).thenReturn(attributionSource);
         when(mMockResources.getBoolean(anyInt())).thenReturn(false);
         when(mMockPhone.getDefaultPhone()).thenReturn(mMockPhone);
         when(mMockPhone.getPhoneType()).thenReturn(PhoneConstants.PHONE_TYPE_IMS);
         when(mMockCall.getState()).thenReturn(Call.State.ACTIVE);
         when(mMockCall.getPhone()).thenReturn(mMockPhone);
+        when(mMockPhone.getDefaultPhone()).thenReturn(mMockPhone);
+        when(mImsPhoneConnection.getImsCall()).thenReturn(mImsCall);
+        when(mTelecomAccountRegistry.isMergeCallSupported(notNull(PhoneAccountHandle.class)))
+                .thenReturn(mIsConferenceSupported);
+        when(mTelecomAccountRegistry.isMergeImsCallSupported(notNull(PhoneAccountHandle.class)))
+                .thenReturn(mIsImsConnection);
+        when(mTelecomAccountRegistry
+                .isVideoConferencingSupported(notNull(PhoneAccountHandle.class))).thenReturn(false);
+        when(mTelecomAccountRegistry
+                .isMergeOfWifiCallsAllowedWhenVoWifiOff(notNull(PhoneAccountHandle.class)))
+                .thenReturn(false);
         try {
             doNothing().when(mMockCall).hangup();
         } catch (CallStateException e) {
@@ -120,11 +185,6 @@
         }
     }
 
-    @Override
-    public boolean isConferenceSupported() {
-        return true;
-    }
-
     public void setMockPhone(Phone newPhone) {
         mMockPhone = newPhone;
     }
@@ -158,7 +218,14 @@
     public PersistableBundle getCarrierConfig() {
         // Depends on PhoneGlobals for context in TelephonyConnection, do not implement during
         // testing.
-        return new PersistableBundle();
+        return mCarrierConfig;
+    }
+
+    @Override
+    public void refreshConferenceSupported() {
+        if (mIsImsConnection) {
+            super.refreshConferenceSupported();
+        }
     }
 
     @Override
@@ -172,8 +239,30 @@
     }
 
     @Override
-    void refreshConferenceSupported() {
-        // Requires ImsManager dependencies, do not implement during testing.
+    public void setConferenceSupported(boolean conferenceSupported) {
+        mIsConferenceSupported = conferenceSupported;
+    }
+
+    @Override
+    public boolean isConferenceSupported() {
+        return mIsConferenceSupported;
+    }
+
+    @Override
+    public TelecomAccountRegistry getTelecomAccountRegistry(Context context) {
+        return mTelecomAccountRegistry;
+    }
+
+    public void setIsVideoCall(boolean isVideoCall) {
+        if (isVideoCall) {
+            setVideoState(VideoProfile.STATE_TX_ENABLED);
+        } else {
+            setVideoState(VideoProfile.STATE_AUDIO_ONLY);
+        }
+    }
+
+    public void setWasVideoCall(boolean wasVideoCall) {
+        when(mImsCall.wasVideoCall()).thenReturn(wasVideoCall);
     }
 
     @Override
@@ -193,4 +282,27 @@
     public List<Bundle> getLastConnectionEventExtras() {
         return mLastConnectionEventExtras;
     }
+
+    public void setIsImsConnection(boolean isImsConnection) {
+        mIsImsConnection = isImsConnection;
+        when(mTelecomAccountRegistry.isMergeImsCallSupported(notNull(PhoneAccountHandle.class)))
+                .thenReturn(isImsConnection && mIsConferenceSupported);
+    }
+
+    public void setIsImsExternalConnection(boolean isExternalConnection) {
+        mIsImsExternalConnection = isExternalConnection;
+    }
+
+    public void setDownGradeVideoCall(boolean downgrade) {
+        PersistableBundle bundle = new PersistableBundle();
+        bundle.putBoolean(CarrierConfigManager.KEY_TREAT_DOWNGRADED_VIDEO_CALLS_AS_VIDEO_CALLS_BOOL,
+                downgrade);
+        when(mMockContext.getSystemService(Context.CARRIER_CONFIG_SERVICE))
+                .thenReturn(mCarrierConfigManager);
+        when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(bundle);
+    }
+
+    public PersistableBundle getCarrierConfigBundle() {
+        return mCarrierConfig;
+    }
 }